{"version":3,"sources":["./node_modules/@angular/animations/fesm2015/animations.js","./node_modules/@angular/animations/fesm2015/browser.js","./node_modules/@angular/common/fesm2015/common.js","./node_modules/@angular/common/fesm2015/http.js","./node_modules/@angular/core/fesm2015/core.js","./node_modules/@angular/fire/auth/es2015/auth.js","./node_modules/@angular/fire/auth/es2015/auth.module.js","./node_modules/@angular/fire/auth/es2015/index.js","./node_modules/@angular/fire/auth/es2015/public_api.js","./node_modules/@angular/fire/es2015/angularfire2.js","./node_modules/@angular/fire/es2015/firebase.app.module.js","./node_modules/@angular/fire/es2015/index.js","./node_modules/@angular/fire/es2015/public_api.js","./node_modules/@angular/fire/firestore/es2015/collection-group/collection-group.js","./node_modules/@angular/fire/firestore/es2015/collection/changes.js","./node_modules/@angular/fire/firestore/es2015/collection/collection.js","./node_modules/@angular/fire/firestore/es2015/document/document.js","./node_modules/@angular/fire/firestore/es2015/firestore.js","./node_modules/@angular/fire/firestore/es2015/firestore.module.js","./node_modules/@angular/fire/firestore/es2015/index.js","./node_modules/@angular/fire/firestore/es2015/observable/fromRef.js","./node_modules/@angular/fire/firestore/es2015/public_api.js","./node_modules/@angular/forms/fesm2015/forms.js","./node_modules/@angular/platform-browser/fesm2015/animations.js","./node_modules/@angular/platform-browser/fesm2015/platform-browser.js","./node_modules/@angular/router/fesm2015/router.js","./node_modules/@angular/router/router.d.ts.ɵangular_packages_router_router_l.html","./node_modules/@auth0/angular-jwt/fesm2015/auth0-angular-jwt.js","./node_modules/@firebase/app/dist/index.cjs.js","./node_modules/@firebase/auth/dist/auth.esm.js","./node_modules/@firebase/component/dist/index.cjs.js","./node_modules/@firebase/firestore/dist/index.cjs.js","./node_modules/@firebase/logger/dist/index.esm.js","./node_modules/@firebase/util/dist/index.cjs.js","./node_modules/@firebase/webchannel-wrapper/dist/index.esm.js","./node_modules/@ng-bootstrap/ng-bootstrap/fesm2015/ng-bootstrap.js","./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.NgbAccordion.html","./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.NgbAlert.html","./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.NgbCarousel.html","./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.ɵd.html","./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.ɵe.html","./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.ɵf.html","./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.NgbDatepicker.html","./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.NgbDatepickerMonth.html","./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.NgbNavOutlet.html","./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.NgbPagination.html","./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.ɵm.html","./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.NgbProgressbar.html","./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.NgbRating.html","./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.NgbTabset.html","./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.NgbTimepicker.html","./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.NgbToast.html","./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.ɵr.html","./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.ɵs.html","./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.NgbHighlight.html","./node_modules/@ng-bootstrap/ng-bootstrap/ng-bootstrap.d.ts.ɵv.html","./node_modules/@ng-idle/core/fesm2015/ng-idle-core.js","./node_modules/@ng-idle/keepalive/fesm2015/ng-idle-keepalive.js","./node_modules/@syncfusion/ej2-base/dist/es6/ej2-base.es2015.js","./node_modules/@syncfusion/ej2-buttons/dist/es6/ej2-buttons.es2015.js","./node_modules/@syncfusion/ej2-calendars/dist/es6/ej2-calendars.es2015.js","./node_modules/@syncfusion/ej2-compression/dist/es6/ej2-compression.es2015.js","./node_modules/@syncfusion/ej2-data/dist/es6/ej2-data.es2015.js","./node_modules/@syncfusion/ej2-dropdowns/dist/es6/ej2-dropdowns.es2015.js","./node_modules/@syncfusion/ej2-excel-export/dist/es6/ej2-excel-export.es2015.js","./node_modules/@syncfusion/ej2-file-utils/dist/es6/ej2-file-utils.es2015.js","./node_modules/@syncfusion/ej2-grids/dist/es6/ej2-grids.es2015.js","./node_modules/@syncfusion/ej2-inputs/dist/es6/ej2-inputs.es2015.js","./node_modules/@syncfusion/ej2-lists/dist/es6/ej2-lists.es2015.js","./node_modules/@syncfusion/ej2-navigations/dist/es6/ej2-navigations.es2015.js","./node_modules/@syncfusion/ej2-pdf-export/dist/es6/ej2-pdf-export.es2015.js","./node_modules/@syncfusion/ej2-popups/dist/es6/ej2-popups.es2015.js","./node_modules/@syncfusion/ej2-splitbuttons/dist/es6/ej2-splitbuttons.es2015.js","./node_modules/alertifyjs/build/alertify.js","./node_modules/angular2-moment/add.pipe.js","./node_modules/angular2-moment/calendar.pipe.js","./node_modules/angular2-moment/date-format.pipe.js","./node_modules/angular2-moment/difference.pipe.js","./node_modules/angular2-moment/duration.pipe.js","./node_modules/angular2-moment/from-unix.pipe.js","./node_modules/angular2-moment/from-utc.pipe.js","./node_modules/angular2-moment/local.pipe.js","./node_modules/angular2-moment/locale.pipe.js","./node_modules/angular2-moment/moment.module.js","./node_modules/angular2-moment/parse.pipe.js","./node_modules/angular2-moment/subtract.pipe.js","./node_modules/angular2-moment/time-ago.pipe.js","./node_modules/angular2-moment/utc.pipe.js","./node_modules/firebase/app/dist/index.cjs.js","./node_modules/firebase/auth/dist/index.esm.js","./node_modules/firebase/firestore/dist/index.esm.js","./node_modules/metismenujs/dist/metismenujs.js","./node_modules/moment/locale/af.js","./node_modules/moment/locale/ar-dz.js","./node_modules/moment/locale/ar-kw.js","./node_modules/moment/locale/ar-ly.js","./node_modules/moment/locale/ar-ma.js","./node_modules/moment/locale/ar-sa.js","./node_modules/moment/locale/ar-tn.js","./node_modules/moment/locale/ar.js","./node_modules/moment/locale/az.js","./node_modules/moment/locale/be.js","./node_modules/moment/locale/bg.js","./node_modules/moment/locale/bm.js","./node_modules/moment/locale/bn-bd.js","./node_modules/moment/locale/bn.js","./node_modules/moment/locale/bo.js","./node_modules/moment/locale/br.js","./node_modules/moment/locale/bs.js","./node_modules/moment/locale/ca.js","./node_modules/moment/locale/cs.js","./node_modules/moment/locale/cv.js","./node_modules/moment/locale/cy.js","./node_modules/moment/locale/da.js","./node_modules/moment/locale/de-at.js","./node_modules/moment/locale/de-ch.js","./node_modules/moment/locale/de.js","./node_modules/moment/locale/dv.js","./node_modules/moment/locale/el.js","./node_modules/moment/locale/en-au.js","./node_modules/moment/locale/en-ca.js","./node_modules/moment/locale/en-gb.js","./node_modules/moment/locale/en-ie.js","./node_modules/moment/locale/en-il.js","./node_modules/moment/locale/en-in.js","./node_modules/moment/locale/en-nz.js","./node_modules/moment/locale/en-sg.js","./node_modules/moment/locale/eo.js","./node_modules/moment/locale/es-do.js","./node_modules/moment/locale/es-mx.js","./node_modules/moment/locale/es-us.js","./node_modules/moment/locale/es.js","./node_modules/moment/locale/et.js","./node_modules/moment/locale/eu.js","./node_modules/moment/locale/fa.js","./node_modules/moment/locale/fi.js","./node_modules/moment/locale/fil.js","./node_modules/moment/locale/fo.js","./node_modules/moment/locale/fr-ca.js","./node_modules/moment/locale/fr-ch.js","./node_modules/moment/locale/fr.js","./node_modules/moment/locale/fy.js","./node_modules/moment/locale/ga.js","./node_modules/moment/locale/gd.js","./node_modules/moment/locale/gl.js","./node_modules/moment/locale/gom-deva.js","./node_modules/moment/locale/gom-latn.js","./node_modules/moment/locale/gu.js","./node_modules/moment/locale/he.js","./node_modules/moment/locale/hi.js","./node_modules/moment/locale/hr.js","./node_modules/moment/locale/hu.js","./node_modules/moment/locale/hy-am.js","./node_modules/moment/locale/id.js","./node_modules/moment/locale/is.js","./node_modules/moment/locale/it-ch.js","./node_modules/moment/locale/it.js","./node_modules/moment/locale/ja.js","./node_modules/moment/locale/jv.js","./node_modules/moment/locale/ka.js","./node_modules/moment/locale/kk.js","./node_modules/moment/locale/km.js","./node_modules/moment/locale/kn.js","./node_modules/moment/locale/ko.js","./node_modules/moment/locale/ku.js","./node_modules/moment/locale/ky.js","./node_modules/moment/locale/lb.js","./node_modules/moment/locale/lo.js","./node_modules/moment/locale/lt.js","./node_modules/moment/locale/lv.js","./node_modules/moment/locale/me.js","./node_modules/moment/locale/mi.js","./node_modules/moment/locale/mk.js","./node_modules/moment/locale/ml.js","./node_modules/moment/locale/mn.js","./node_modules/moment/locale/mr.js","./node_modules/moment/locale/ms-my.js","./node_modules/moment/locale/ms.js","./node_modules/moment/locale/mt.js","./node_modules/moment/locale/my.js","./node_modules/moment/locale/nb.js","./node_modules/moment/locale/ne.js","./node_modules/moment/locale/nl-be.js","./node_modules/moment/locale/nl.js","./node_modules/moment/locale/nn.js","./node_modules/moment/locale/oc-lnc.js","./node_modules/moment/locale/pa-in.js","./node_modules/moment/locale/pl.js","./node_modules/moment/locale/pt-br.js","./node_modules/moment/locale/pt.js","./node_modules/moment/locale/ro.js","./node_modules/moment/locale/ru.js","./node_modules/moment/locale/sd.js","./node_modules/moment/locale/se.js","./node_modules/moment/locale/si.js","./node_modules/moment/locale/sk.js","./node_modules/moment/locale/sl.js","./node_modules/moment/locale/sq.js","./node_modules/moment/locale/sr-cyrl.js","./node_modules/moment/locale/sr.js","./node_modules/moment/locale/ss.js","./node_modules/moment/locale/sv.js","./node_modules/moment/locale/sw.js","./node_modules/moment/locale/ta.js","./node_modules/moment/locale/te.js","./node_modules/moment/locale/tet.js","./node_modules/moment/locale/tg.js","./node_modules/moment/locale/th.js","./node_modules/moment/locale/tk.js","./node_modules/moment/locale/tl-ph.js","./node_modules/moment/locale/tlh.js","./node_modules/moment/locale/tr.js","./node_modules/moment/locale/tzl.js","./node_modules/moment/locale/tzm-latn.js","./node_modules/moment/locale/tzm.js","./node_modules/moment/locale/ug-cn.js","./node_modules/moment/locale/uk.js","./node_modules/moment/locale/ur.js","./node_modules/moment/locale/uz-latn.js","./node_modules/moment/locale/uz.js","./node_modules/moment/locale/vi.js","./node_modules/moment/locale/x-pseudo.js","./node_modules/moment/locale/yo.js","./node_modules/moment/locale/zh-cn.js","./node_modules/moment/locale/zh-hk.js","./node_modules/moment/locale/zh-mo.js","./node_modules/moment/locale/zh-tw.js","./node_modules/moment/moment.js","./node_modules/ng-click-outside/lib_commonjs/click-outside.directive.js","./node_modules/ng-click-outside/lib_commonjs/click-outside.module.js","./node_modules/ngx-perfect-scrollbar/fesm2015/ngx-perfect-scrollbar.js","./node_modules/ngx-perfect-scrollbar/ngx-perfect-scrollbar.d.ts.PerfectScrollbarComponent.html","./node_modules/ngx-spinner/fesm2015/ngx-spinner.js","./node_modules/ngx-spinner/ngx-spinner.d.ts.NgxSpinnerComponent.html","./node_modules/perfect-scrollbar/dist/perfect-scrollbar.esm.js","./node_modules/querystring/decode.js","./node_modules/querystring/encode.js","./node_modules/querystring/index.js","./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","./node_modules/rxjs/_esm2015/index.js","./node_modules/rxjs/_esm2015/internal/AsyncSubject.js","./node_modules/rxjs/_esm2015/internal/BehaviorSubject.js","./node_modules/rxjs/_esm2015/internal/InnerSubscriber.js","./node_modules/rxjs/_esm2015/internal/Notification.js","./node_modules/rxjs/_esm2015/internal/Observable.js","./node_modules/rxjs/_esm2015/internal/Observer.js","./node_modules/rxjs/_esm2015/internal/OuterSubscriber.js","./node_modules/rxjs/_esm2015/internal/ReplaySubject.js","./node_modules/rxjs/_esm2015/internal/Scheduler.js","./node_modules/rxjs/_esm2015/internal/Subject.js","./node_modules/rxjs/_esm2015/internal/SubjectSubscription.js","./node_modules/rxjs/_esm2015/internal/Subscriber.js","./node_modules/rxjs/_esm2015/internal/Subscription.js","./node_modules/rxjs/_esm2015/internal/config.js","./node_modules/rxjs/_esm2015/internal/observable/ConnectableObservable.js","./node_modules/rxjs/_esm2015/internal/observable/SubscribeOnObservable.js","./node_modules/rxjs/_esm2015/internal/observable/bindCallback.js","./node_modules/rxjs/_esm2015/internal/observable/bindNodeCallback.js","./node_modules/rxjs/_esm2015/internal/observable/combineLatest.js","./node_modules/rxjs/_esm2015/internal/observable/concat.js","./node_modules/rxjs/_esm2015/internal/observable/defer.js","./node_modules/rxjs/_esm2015/internal/observable/empty.js","./node_modules/rxjs/_esm2015/internal/observable/forkJoin.js","./node_modules/rxjs/_esm2015/internal/observable/from.js","./node_modules/rxjs/_esm2015/internal/observable/fromArray.js","./node_modules/rxjs/_esm2015/internal/observable/fromEvent.js","./node_modules/rxjs/_esm2015/internal/observable/fromEventPattern.js","./node_modules/rxjs/_esm2015/internal/observable/generate.js","./node_modules/rxjs/_esm2015/internal/observable/iif.js","./node_modules/rxjs/_esm2015/internal/observable/interval.js","./node_modules/rxjs/_esm2015/internal/observable/merge.js","./node_modules/rxjs/_esm2015/internal/observable/never.js","./node_modules/rxjs/_esm2015/internal/observable/of.js","./node_modules/rxjs/_esm2015/internal/observable/onErrorResumeNext.js","./node_modules/rxjs/_esm2015/internal/observable/pairs.js","./node_modules/rxjs/_esm2015/internal/observable/partition.js","./node_modules/rxjs/_esm2015/internal/observable/race.js","./node_modules/rxjs/_esm2015/internal/observable/range.js","./node_modules/rxjs/_esm2015/internal/observable/throwError.js","./node_modules/rxjs/_esm2015/internal/observable/timer.js","./node_modules/rxjs/_esm2015/internal/observable/using.js","./node_modules/rxjs/_esm2015/internal/observable/zip.js","./node_modules/rxjs/_esm2015/internal/operators/audit.js","./node_modules/rxjs/_esm2015/internal/operators/auditTime.js","./node_modules/rxjs/_esm2015/internal/operators/buffer.js","./node_modules/rxjs/_esm2015/internal/operators/bufferCount.js","./node_modules/rxjs/_esm2015/internal/operators/bufferTime.js","./node_modules/rxjs/_esm2015/internal/operators/bufferToggle.js","./node_modules/rxjs/_esm2015/internal/operators/bufferWhen.js","./node_modules/rxjs/_esm2015/internal/operators/catchError.js","./node_modules/rxjs/_esm2015/internal/operators/combineAll.js","./node_modules/rxjs/_esm2015/internal/operators/combineLatest.js","./node_modules/rxjs/_esm2015/internal/operators/concat.js","./node_modules/rxjs/_esm2015/internal/operators/concatAll.js","./node_modules/rxjs/_esm2015/internal/operators/concatMap.js","./node_modules/rxjs/_esm2015/internal/operators/concatMapTo.js","./node_modules/rxjs/_esm2015/internal/operators/count.js","./node_modules/rxjs/_esm2015/internal/operators/debounce.js","./node_modules/rxjs/_esm2015/internal/operators/debounceTime.js","./node_modules/rxjs/_esm2015/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/_esm2015/internal/operators/delay.js","./node_modules/rxjs/_esm2015/internal/operators/delayWhen.js","./node_modules/rxjs/_esm2015/internal/operators/dematerialize.js","./node_modules/rxjs/_esm2015/internal/operators/distinct.js","./node_modules/rxjs/_esm2015/internal/operators/distinctUntilChanged.js","./node_modules/rxjs/_esm2015/internal/operators/distinctUntilKeyChanged.js","./node_modules/rxjs/_esm2015/internal/operators/elementAt.js","./node_modules/rxjs/_esm2015/internal/operators/endWith.js","./node_modules/rxjs/_esm2015/internal/operators/every.js","./node_modules/rxjs/_esm2015/internal/operators/exhaust.js","./node_modules/rxjs/_esm2015/internal/operators/exhaustMap.js","./node_modules/rxjs/_esm2015/internal/operators/expand.js","./node_modules/rxjs/_esm2015/internal/operators/filter.js","./node_modules/rxjs/_esm2015/internal/operators/finalize.js","./node_modules/rxjs/_esm2015/internal/operators/find.js","./node_modules/rxjs/_esm2015/internal/operators/findIndex.js","./node_modules/rxjs/_esm2015/internal/operators/first.js","./node_modules/rxjs/_esm2015/internal/operators/groupBy.js","./node_modules/rxjs/_esm2015/internal/operators/ignoreElements.js","./node_modules/rxjs/_esm2015/internal/operators/isEmpty.js","./node_modules/rxjs/_esm2015/internal/operators/last.js","./node_modules/rxjs/_esm2015/internal/operators/map.js","./node_modules/rxjs/_esm2015/internal/operators/mapTo.js","./node_modules/rxjs/_esm2015/internal/operators/materialize.js","./node_modules/rxjs/_esm2015/internal/operators/max.js","./node_modules/rxjs/_esm2015/internal/operators/merge.js","./node_modules/rxjs/_esm2015/internal/operators/mergeAll.js","./node_modules/rxjs/_esm2015/internal/operators/mergeMap.js","./node_modules/rxjs/_esm2015/internal/operators/mergeMapTo.js","./node_modules/rxjs/_esm2015/internal/operators/mergeScan.js","./node_modules/rxjs/_esm2015/internal/operators/min.js","./node_modules/rxjs/_esm2015/internal/operators/multicast.js","./node_modules/rxjs/_esm2015/internal/operators/observeOn.js","./node_modules/rxjs/_esm2015/internal/operators/onErrorResumeNext.js","./node_modules/rxjs/_esm2015/internal/operators/pairwise.js","./node_modules/rxjs/_esm2015/internal/operators/partition.js","./node_modules/rxjs/_esm2015/internal/operators/pluck.js","./node_modules/rxjs/_esm2015/internal/operators/publish.js","./node_modules/rxjs/_esm2015/internal/operators/publishBehavior.js","./node_modules/rxjs/_esm2015/internal/operators/publishLast.js","./node_modules/rxjs/_esm2015/internal/operators/publishReplay.js","./node_modules/rxjs/_esm2015/internal/operators/race.js","./node_modules/rxjs/_esm2015/internal/operators/reduce.js","./node_modules/rxjs/_esm2015/internal/operators/refCount.js","./node_modules/rxjs/_esm2015/internal/operators/repeat.js","./node_modules/rxjs/_esm2015/internal/operators/repeatWhen.js","./node_modules/rxjs/_esm2015/internal/operators/retry.js","./node_modules/rxjs/_esm2015/internal/operators/retryWhen.js","./node_modules/rxjs/_esm2015/internal/operators/sample.js","./node_modules/rxjs/_esm2015/internal/operators/sampleTime.js","./node_modules/rxjs/_esm2015/internal/operators/scan.js","./node_modules/rxjs/_esm2015/internal/operators/sequenceEqual.js","./node_modules/rxjs/_esm2015/internal/operators/share.js","./node_modules/rxjs/_esm2015/internal/operators/shareReplay.js","./node_modules/rxjs/_esm2015/internal/operators/single.js","./node_modules/rxjs/_esm2015/internal/operators/skip.js","./node_modules/rxjs/_esm2015/internal/operators/skipLast.js","./node_modules/rxjs/_esm2015/internal/operators/skipUntil.js","./node_modules/rxjs/_esm2015/internal/operators/skipWhile.js","./node_modules/rxjs/_esm2015/internal/operators/startWith.js","./node_modules/rxjs/_esm2015/internal/operators/subscribeOn.js","./node_modules/rxjs/_esm2015/internal/operators/switchAll.js","./node_modules/rxjs/_esm2015/internal/operators/switchMap.js","./node_modules/rxjs/_esm2015/internal/operators/switchMapTo.js","./node_modules/rxjs/_esm2015/internal/operators/take.js","./node_modules/rxjs/_esm2015/internal/operators/takeLast.js","./node_modules/rxjs/_esm2015/internal/operators/takeUntil.js","./node_modules/rxjs/_esm2015/internal/operators/takeWhile.js","./node_modules/rxjs/_esm2015/internal/operators/tap.js","./node_modules/rxjs/_esm2015/internal/operators/throttle.js","./node_modules/rxjs/_esm2015/internal/operators/throttleTime.js","./node_modules/rxjs/_esm2015/internal/operators/throwIfEmpty.js","./node_modules/rxjs/_esm2015/internal/operators/timeInterval.js","./node_modules/rxjs/_esm2015/internal/operators/timeout.js","./node_modules/rxjs/_esm2015/internal/operators/timeoutWith.js","./node_modules/rxjs/_esm2015/internal/operators/timestamp.js","./node_modules/rxjs/_esm2015/internal/operators/toArray.js","./node_modules/rxjs/_esm2015/internal/operators/window.js","./node_modules/rxjs/_esm2015/internal/operators/windowCount.js","./node_modules/rxjs/_esm2015/internal/operators/windowTime.js","./node_modules/rxjs/_esm2015/internal/operators/windowToggle.js","./node_modules/rxjs/_esm2015/internal/operators/windowWhen.js","./node_modules/rxjs/_esm2015/internal/operators/withLatestFrom.js","./node_modules/rxjs/_esm2015/internal/operators/zip.js","./node_modules/rxjs/_esm2015/internal/operators/zipAll.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleArray.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleIterable.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleObservable.js","./node_modules/rxjs/_esm2015/internal/scheduled/schedulePromise.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduled.js","./node_modules/rxjs/_esm2015/internal/scheduler/Action.js","./node_modules/rxjs/_esm2015/internal/scheduler/AnimationFrameAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/AnimationFrameScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsapAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsapScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/QueueAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/QueueScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/VirtualTimeScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/animationFrame.js","./node_modules/rxjs/_esm2015/internal/scheduler/asap.js","./node_modules/rxjs/_esm2015/internal/scheduler/async.js","./node_modules/rxjs/_esm2015/internal/scheduler/queue.js","./node_modules/rxjs/_esm2015/internal/symbol/iterator.js","./node_modules/rxjs/_esm2015/internal/symbol/observable.js","./node_modules/rxjs/_esm2015/internal/symbol/rxSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/ArgumentOutOfRangeError.js","./node_modules/rxjs/_esm2015/internal/util/EmptyError.js","./node_modules/rxjs/_esm2015/internal/util/Immediate.js","./node_modules/rxjs/_esm2015/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/_esm2015/internal/util/TimeoutError.js","./node_modules/rxjs/_esm2015/internal/util/UnsubscriptionError.js","./node_modules/rxjs/_esm2015/internal/util/canReportError.js","./node_modules/rxjs/_esm2015/internal/util/hostReportError.js","./node_modules/rxjs/_esm2015/internal/util/identity.js","./node_modules/rxjs/_esm2015/internal/util/isArray.js","./node_modules/rxjs/_esm2015/internal/util/isArrayLike.js","./node_modules/rxjs/_esm2015/internal/util/isDate.js","./node_modules/rxjs/_esm2015/internal/util/isFunction.js","./node_modules/rxjs/_esm2015/internal/util/isInteropObservable.js","./node_modules/rxjs/_esm2015/internal/util/isIterable.js","./node_modules/rxjs/_esm2015/internal/util/isNumeric.js","./node_modules/rxjs/_esm2015/internal/util/isObject.js","./node_modules/rxjs/_esm2015/internal/util/isObservable.js","./node_modules/rxjs/_esm2015/internal/util/isPromise.js","./node_modules/rxjs/_esm2015/internal/util/isScheduler.js","./node_modules/rxjs/_esm2015/internal/util/noop.js","./node_modules/rxjs/_esm2015/internal/util/not.js","./node_modules/rxjs/_esm2015/internal/util/pipe.js","./node_modules/rxjs/_esm2015/internal/util/subscribeTo.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToArray.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToIterable.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToObservable.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToPromise.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToResult.js","./node_modules/rxjs/_esm2015/internal/util/toSubscriber.js","./node_modules/rxjs/_esm2015/operators/index.js","./node_modules/sweetalert2/dist/sweetalert2.all.js","./node_modules/tslib/tslib.es6.js","./node_modules/url/node_modules/punycode/punycode.js","./node_modules/url/url.js","./node_modules/url/util.js","(webpack)/buildin/module.js"],"names":[],"mappings":"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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9E,YAAY;IACZ,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,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X,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,KAAK;CACf,CAAC;AACF,SAAS,uBAAuB,CAAC,YAAY;IACzC,OAAO,QAAQ,CAAC,YAAY,IAAI,EAAE,EAAE,kBAAkB,CAAC,CAAC;AAC5D,CAAC;AAED;;GAEG;AACH,IAAI,WAAW,CAAC;AAChB,CAAC,UAAU,WAAW;IAClB,oBAAoB;IACpB,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC9J,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1I,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,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QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,QAAQ;QACl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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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AC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAC9B,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAC9B,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAC9B,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAC9B,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAC9B,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAC9B,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAC9B,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAC9B,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAC9B,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAC9B,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAC9B,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAC9B,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,CAAC,QAAQ,EAAE,QAAQ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C,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,wCAAwC;QACxC,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAA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CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACpH,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE;YAC5F,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE;YAC5F,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE;YAC5F,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE;YAC3F,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAC1F,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE;YAC3F,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG;YAC7F,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAC1F,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YAC9F,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG;YACjF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAChF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YAC/E,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YACjF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACjF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAChF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG;YACnF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG;YACpF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG;YACpF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACjF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YACnF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACjF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACjF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACjF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACjF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACjF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG;YACnF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YAChF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YACjF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YACjF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YACjF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YAChF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YAChF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YAChF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YAChF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAChF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAChF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG;YACtF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YACnF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YAChF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YACjF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YACjF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YACjF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG;YACjF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YAChF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YAChF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YAChF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YAChF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YAChF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YAChF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YAChF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YAChF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YACjF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YAChF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YAChF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAChF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAChF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAChF,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACnF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACxF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACxF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACxF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACxF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACxF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACxF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACxF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;YACzF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACzF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACxF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;YAC1F,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;YACxF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;YACxF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;YACxF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;YACxF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;YACxF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACvF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACzF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACtF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACtF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACvF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;YACzF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;YACxF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACzF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;YAC1F,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;YACzF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;YAC1F,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;YACzF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;YACzF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;YACxF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;YACzF,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK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AG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QACpE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC/E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QAC3E,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QAC1E,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC/E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG;KACX,CAAC;IACF;;;OAGG;IACH,6BAA6B,CAAC,cAAc,GAAG;QAC3C,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QACpE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QAC3E,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QAC1E,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC/E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG;KACX,CAAC;IACF;;;OAGG;IACH,6BAA6B,CAAC,UAAU,GAAG;QACvC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;KACjF,CAAC;IACF;;;OAGG;IACH,6BAA6B,CAAC,eAAe,GAAG;QAC5C,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QACpE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QAC1E,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QACzE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG;KACX,CAAC;IACF;;;OAGG;IACH,6BAA6B,CAAC,mBAAmB,GAAG;QAChD,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QACrE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC/E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QAC3E,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QAC1E,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC/E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG;KACX,CAAC;IACF;;;OAGG;IACH,6BAA6B,CAAC,qBAAqB,GAAG;QAClD,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QACpE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QACzE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QACxE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG;KACX,CAAC;IACF;;;OAGG;IACH,6BAA6B,CAAC,0BAA0B,GAAG;QACvD,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QACpE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QAC1E,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QAC1E,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QAC9E,GAAG,EAAE,GAAG;KACX,CAAC;IACF;;;OAGG;IACH,6BAA6B,CAAC,WAAW,GAAG;QACxC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QACpE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QACpE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QACpE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QACpE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QACpE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QACpE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QACpE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QACrE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI;QACtE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QACpE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QACpE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QACrE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;QACpE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,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GAAG,YAAY,CAAC;QAC1B,0EAAqB;KACxB,EAAE,cAAc,CAAC,CAAC;;;AAEnB;;GAEG;AAEH;;GAEG;AAEuK;AACvH;;;;;;;;;;;;;;AChmDnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,gCAAgC;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,KAAK;AACtB,mBAAmB,OAAO;AAC1B;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,KAAK;AACtB,mBAAmB,OAAO;AAC1B;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,uBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,aAAa;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA;AACA,6DAA6D,wCAAwC;AACrG;;AAEA;AACA;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA;AACA,gEAAgE,wCAAwC;AACxG;;AAEA;AACA;AACA;AACA,gBAAgB,MAAM;AACtB,gBAAgB;;AAEhB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA,+BAA+B,sBAAsB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA,iBAAiB,IAAI;AACrB;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,qHAAqH;AAC/I;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC,uBAAuB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B,wCAAwC;AACpE;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0GAA0G;AAC1G;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;;AAEA;AACA;AACA,8BAA8B,qBAAqB;AACnD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,OAAO;AAC1B;AACA,oBAAoB,U;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,OAAO;AAC1B,mBAAmB,SAAS;AAC5B,mBAAmB,cAAc;AACjC,mBAAmB,OAAO;AAC1B,mBAAmB,OAAO;AAC1B;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,gDAAgD;AAC/F,yBAAyB;AACzB,+CAA+C,iDAAiD;AAChG;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,0CAA0C;;AAErF,qBAAqB;AACrB,2CAA2C,2CAA2C;AACtF;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,QAAQ;AAC3B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,QAAQ;AAC3B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,QAAQ;AAC3B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,QAAQ;AAC3B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,SAAS;AAC5B;AACA,oBAAoB;AACpB;AACA;AACA;AACA,iCAAiC,0CAA0C;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,MAAM;AACxB,kBAAkB,OAAO;AACzB;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,oBAAoB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;;AAGA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,KAAK;AACxB;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;;AAEA;AACA;AACA,oDAAoD,QAAQ;AAC5D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB,mBAAmB,KAAK;AACxB;AACA,oBAAoB;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB,mBAAmB,KAAK;AACxB;AACA,oBAAoB;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB,mBAAmB,OAAO;AAC1B;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,QAAQ;AAC3B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB,mBAAmB,KAAK;AACxB,mBAAmB,QAAQ;AAC3B;AACA,oBAAoB;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB,mBAAmB,OAAO;AAC1B;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,QAAQ;AAC3B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB;AACA,oBAAoB;AACpB;AACA;AACA,2BAA2B,wBAAwB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B,uBAAuB,OAAO;AAC9B;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC,uBAAuB,iBAAiB;AACxC;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,uBAAuB,cAAc;AACrC,uBAAuB,OAAO;AAC9B;AACA,wBAAwB;AACxB;AACA;AACA;AACA,mFAAmF,2BAA2B,EAAE;AAChH;AACA;AACA;AACA,qBAAqB;AACrB,8FAA8F;AAC9F,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,oCAAoC,sBAAsB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,wBAAwB;AACxB;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,wBAAwB;AACxB;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C,+BAA+B;AAC7E;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,WAAW;AAC9B,mBAAmB,OAAO;AAC1B,mBAAmB,SAAS;AAC5B;AACA,mBAAmB;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD,2BAA2B,OAAO;AAClC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA,wCAAwC,EAAE;AAC1C;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA,2BAA2B,QAAQ;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,2BAA2B,OAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,gBAAgB,EAAE;AAC1F;AACA;AACA,iBAAiB;AACjB;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B,uBAAuB,QAAQ;AAC/B;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,uBAAuB,OAAO,sEAAsE,KAAK;AACzG,uBAAuB,SAAS;AAChC;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,kBAAkB,OAAO;AACzB;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,OAAO;AACzB,qBAAqB,SAAS;AAC9B,uBAAuB,QAAQ;AAC/B,kBAAkB,OAAO;AACzB;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B,uBAAuB,SAAS;AAChC,uBAAuB,QAAQ;AAC/B,uBAAuB,OAAO;AAC9B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA,wBAAwB;AACxB;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B,uBAAuB,cAAc;AACrC,uBAAuB,QAAQ;AAC/B;AACA,wBAAwB;AACxB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,uDAAuD,KAAK;AAC5D;AACA;AACA,wBAAwB,oBAAoB;AAC5C,wBAAwB,OAAO;AAC/B,wBAAwB,OAAO;AAC/B,wBAAwB,SAAS;AACjC;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B,wBAAwB,OAAO;AAC/B,wBAAwB,SAAS;AACjC;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B,wBAAwB,OAAO;AAC/B,wBAAwB,SAAS;AACjC;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B,wBAAwB,OAAO;AAC/B,wBAAwB,SAAS;AACjC;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B,wBAAwB,OAAO;AAC/B,wBAAwB,SAAS;AACjC;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gHAAgH,mCAAmC;AACnJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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e;IACnE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS;SAC5C,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,UAAU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;SAChE,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC,CAAC;AAEa,+EAAgB,EAAC;AACiB;;;;;;;;;;;;;;;AC5zCjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;AC/Da;;AAEb,iCAAiC,mBAAO,CAAC,sDAAU;AACnD,qCAAqC,mBAAO,CAAC,sDAAU;;;;;;;;;;;;;ACHvD;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B,eAAe,EAAE;AACjB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA,mBAAmB,EAAE;AACrB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,EAAE;AACrB,mBAAmB,EAAE;AACrB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,EAAE;AACrB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,EAAE;AACrB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B,mBAAmB,EAAE;AACrB,qBAAqB;AACrB;AACA;AACA,iCAAiC,YAAY;AAC7C,mDAAmD,gBAAgB;AACnE;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,gCAAgC,6BAA6B,EAAE,aAAa;AAC5G,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kBAAkB;AACjC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kBAAkB;AACjC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,qDAAqD,mCAAmC,EAAE;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gBAAgB;AAC/B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA,6CAA6C,gBAAgB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,oBAAoB;AAC/B,WAAW,UAAU;AACrB,aAAa;AACb;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,WAAW,oBAAoB;AAC/B,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,6CAA6C,yBAAyB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,kCAAkC,iEAAiE;AACnG;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,8CAA8C;AAC9C,CAAC;AACD;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,2CAA2C;AAC7E;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,eAAe,uBAAuB;AACtC;AACA,eAAe,yBAAyB;AACxC;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uBAAuB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAEc,oEAAK,EAAC;;;;;;;;;;;;;AC/5BrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAoD;AACQ;AACN;AACU;AACF;AACI;AACJ;AACA;AACA;AACM;AACd;AACM;AACA;AACI;AACZ;AACM;AACQ;AACI;AAClB;AACQ;AACQ;AACV;AACwB;AACM;AAC5B;AACJ;AACJ;AACI;AACM;AACR;AACA;AACI;AACR;AACU;AACR;AACI;AACc;AACd;AACN;AACF;AACI;AACY;AAChB;AACI;AACM;AACA;AACW;AACP;AACF;AACZ;AACY;AACA;AACgB;AAClB;AACE;AACR;AACI;AACgB;AACR;AACI;AAClB;AACI;AACA;AACQ;AACV;AACQ;AACF;AACJ;AACQ;AACZ;AACkB;AAChB;AACY;AACV;AACJ;AACQ;AACE;AACA;AACA;AACI;AACJ;AACA;AACI;AACd;AACQ;AACE;AACA;AACZ;AACU;AACQ;AACA;AACA;AACV;AACQ;AACJ;AACJ;AACF;AACU;AACF;AACI;AACJ;AACQ;AACtB;AACM;AACrB;;;;;;;;;;;;;;ACxGjC;AACA;AACA;AACA;AACA;AACA,EAAE,KAA4D;AAC9D,EAAE,SACyD;AAC3D,CAAC,oBAAoB;;AAErB;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,sBAAsB;AAC3C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,6EAA6E;AAC7E;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,4BAA4B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB;;AAElB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC;AAChC,KAAK;AACL,kCAAkC;AAClC,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,sCAAsC;AACtC,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB,aAAa;AAClC;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC;;AAEzC;AACA;AACA,KAAK;;;AAGL,iDAAiD;;AAEjD,mDAAmD;;AAEnD;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,gEAAgE;;AAEhE;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sEAAsE;;AAEtE,wFAAwF;AACxF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,4CAA4C;;AAE5C,qDAAqD;;AAErD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;;AAEhE,uDAAuD;;AAEvD;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA,KAAK;AACL;;AAEA;AACA,mBAAmB,6BAA6B;AAChD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA,8EAA8E;;AAE9E;AACA;AACA,6BAA6B;AAC7B,KAAK;AACL;AACA,6BAA6B;AAC7B,KAAK;AACL;AACA;;AAEA,kCAAkC;;AAElC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA;AACA,sDAAsD;;AAEtD;AACA;AACA;AACA;;AAEA;AACA,6DAA6D;;AAE7D;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;;AAEjB;AACA,wCAAwC;;AAExC,6CAA6C;;AAE7C;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,kBAAkB;AACrC;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;;AAEA,mBAAmB,6BAA6B;AAChD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB;;AAEpB;AACA,+CAA+C;;AAE/C;AACA,6DAA6D;;AAE7D;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,eAAe;AACf;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA,6BAA6B;;AAE7B,+CAA+C;;AAE/C,0CAA0C;;AAE1C,iCAAiC;;AAEjC,kCAAkC;;AAElC,kCAAkC;;AAElC;AACA;;AAEA;AACA,2BAA2B;;AAE3B,sDAAsD;;AAEtD,0DAA0D;;AAE1D;AACA;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA,6DAA6D;AAC7D;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;;;AAGL;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,uEAAuE,aAAa;AACpF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC,YAAY,iBAAiB,oBAAoB,0DAA0D;AAC3G,YAAY,gBAAgB,oBAAoB,yDAAyD;AACzG;AACA;AACA,oCAAoC,wCAAwC;AAC5E,YAAY,iBAAiB;AAC7B,YAAY,gBAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iGAAiG;AACjG;AACA,OAAO;;AAEP;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,yBAAyB;;AAEhC;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;;;AAGL,yCAAyC;AACzC;;AAEA;AACA,mCAAmC;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,mBAAmB;AACxC;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;AACA,6DAA6D,KAAK;AAClE,KAAK;AACL;AACA;AACA,wDAAwD,MAAM,QAAQ,KAAK;AAC3E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;;;AAGA;AACA,sCAAsC;;AAEtC;AACA;AACA,KAAK;AACL;AACA;AACA;;;AAGA;AACA,wCAAwC;;AAExC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa,MAAM;AACnB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C;;AAE3C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,gBAAgB;;AAEhB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,oBAAoB;AACpB;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,IAAI;;AAEJ;AACA,mDAAmD;;AAEnD,mBAAmB,8BAA8B;AACjD,gCAAgC;;AAEhC;AACA,kBAAkB;AAClB,OAAO;AACP;AACA;;AAEA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA,4CAA4C;AAC5C,KAAK;AACL,gCAAgC;AAChC,KAAK;AACL,qBAAqB;AACrB,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mBAAmB,8BAA8B;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,yCAAyC;;AAEzC;AACA,2BAA2B;AAC3B,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,qCAAqC;;AAErC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,iDAAiD;AACjD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6CAA6C;;AAE7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B;;AAE/B;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B;;AAE/B,+BAA+B;;AAE/B,4BAA4B;;AAE5B;AACA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,uCAAuC;;AAEvC;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kCAAkC;;AAElC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL,mCAAmC;;AAEnC;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA,aAAa;AACb,KAAK;;;AAGL;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,2BAA2B;;AAE3B;AACA,qCAAqC;;AAErC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AAEF;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,MAAM;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,MAAM;AAClB,YAAY,SAAS;AACrB;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,SAAS;AACrB;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA,KAAK;AACL,4BAA4B;AAC5B;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,MAAM;AAClB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,OAAO;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,mCAAmC;AAClE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,aAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB;;AAExB,yCAAyC,qBAAqB;;AAE9D;AACA;AACA;AACA;AACA;AACA,kCAAkC,oBAAoB;;AAEtD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,0BAA0B,iBAAiB;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,cAAc,iBAAiB;AAC/B;;AAEA;AACA;AACA;;AAEA;AACA;AACA,8BAA8B,oBAAoB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE,IAEU;AACZ;AACA,EAAE,mCAAmB;AACrB;AACA,GAAG;AAAA,oGAAC;AACJ,EAAE,MAAM,EAUN;;AAEF,CAAC;;;;;;;;;;;;;;ACjhBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb,eAAe,mBAAO,CAAC,sEAAU;AACjC,WAAW,mBAAO,CAAC,0CAAQ;;AAE3B;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gBAAgB,KAAK;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,2CAA2C,KAAK;AAChD,0CAA0C,KAAK;AAC/C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,kBAAkB,mBAAO,CAAC,wDAAa;;AAEvC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB,4BAA4B;AAC/C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,yBAAyB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA,0CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,0CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,mBAAmB;AACrC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B,QAAQ;AACtC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,MAAM;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC3tBa;;AAEb;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA","file":"vendor-es2015.js","sourcesContent":["/**\n * @license Angular v9.0.7\n * (c) 2010-2020 Google LLC. https://angular.io/\n * License: MIT\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/src/animation_builder.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * An injectable service that produces an animation sequence programmatically within an\n * Angular component or directive.\n * Provided by the `BrowserAnimationsModule` or `NoopAnimationsModule`.\n *\n * \\@usageNotes\n *\n * To use this service, add it to your component or directive as a dependency.\n * The service is instantiated along with your component.\n *\n * Apps do not typically need to create their own animation players, but if you\n * do need to, follow these steps:\n *\n * 1. Use the `build()` method to create a programmatic animation using the\n * `animate()` function. The method returns an `AnimationFactory` instance.\n *\n * 2. Use the factory object to create an `AnimationPlayer` and attach it to a DOM element.\n *\n * 3. Use the player object to control the animation programmatically.\n *\n * For example:\n *\n * ```ts\n * // import the service from BrowserAnimationsModule\n * import {AnimationBuilder} from '\\@angular/animations';\n * // require the service as a dependency\n * class MyCmp {\n * constructor(private _builder: AnimationBuilder) {}\n *\n * makeAnimation(element: any) {\n * // first define a reusable animation\n * const myAnimation = this._builder.build([\n * style({ width: 0 }),\n * animate(1000, style({ width: '100px' }))\n * ]);\n *\n * // use the returned factory object to create a player\n * const player = myAnimation.create(element);\n *\n * player.play();\n * }\n * }\n * ```\n *\n * \\@publicApi\n * @abstract\n */\nclass AnimationBuilder {\n}\nif (false) {\n /**\n * Builds a factory for producing a defined animation.\n * @see `animate()`\n * @abstract\n * @param {?} animation A reusable animation definition.\n * @return {?} A factory object that can create a player for the defined animation.\n */\n AnimationBuilder.prototype.build = function (animation) { };\n}\n/**\n * A factory object returned from the `AnimationBuilder`.`build()` method.\n *\n * \\@publicApi\n * @abstract\n */\nclass AnimationFactory {\n}\nif (false) {\n /**\n * Creates an `AnimationPlayer` instance for the reusable animation defined by\n * the `AnimationBuilder`.`build()` method that created this factory.\n * Attaches the new player a DOM element.\n * @abstract\n * @param {?} element The DOM element to which to attach the animation.\n * @param {?=} options A set of options that can include a time delay and\n * additional developer-defined parameters.\n * @return {?}\n */\n AnimationFactory.prototype.create = function (element, options) { };\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/src/animation_metadata.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Represents a set of CSS styles for use in an animation style.\n * @record\n */\nfunction ɵStyleData() { }\n/** @enum {number} */\nconst AnimationMetadataType = {\n /**\n * Associates a named animation state with a set of CSS styles.\n * See `state()`\n */\n State: 0,\n /**\n * Data for a transition from one animation state to another.\n * See `transition()`\n */\n Transition: 1,\n /**\n * Contains a set of animation steps.\n * See `sequence()`\n */\n Sequence: 2,\n /**\n * Contains a set of animation steps.\n * See `{@link animations/group group()}`\n */\n Group: 3,\n /**\n * Contains an animation step.\n * See `animate()`\n */\n Animate: 4,\n /**\n * Contains a set of animation steps.\n * See `keyframes()`\n */\n Keyframes: 5,\n /**\n * Contains a set of CSS property-value pairs into a named style.\n * See `style()`\n */\n Style: 6,\n /**\n * Associates an animation with an entry trigger that can be attached to an element.\n * See `trigger()`\n */\n Trigger: 7,\n /**\n * Contains a re-usable animation.\n * See `animation()`\n */\n Reference: 8,\n /**\n * Contains data to use in executing child animations returned by a query.\n * See `animateChild()`\n */\n AnimateChild: 9,\n /**\n * Contains animation parameters for a re-usable animation.\n * See `useAnimation()`\n */\n AnimateRef: 10,\n /**\n * Contains child-animation query data.\n * See `query()`\n */\n Query: 11,\n /**\n * Contains data for staggering an animation sequence.\n * See `stagger()`\n */\n Stagger: 12,\n};\n/**\n * Specifies automatic styling.\n *\n * \\@publicApi\n * @type {?}\n */\nconst AUTO_STYLE = '*';\n/**\n * Base for animation data structures.\n *\n * \\@publicApi\n * @record\n */\nfunction AnimationMetadata() { }\nif (false) {\n /** @type {?} */\n AnimationMetadata.prototype.type;\n}\n/**\n * Contains an animation trigger. Instantiated and returned by the\n * `trigger()` function.\n *\n * \\@publicApi\n * @record\n */\nfunction AnimationTriggerMetadata() { }\nif (false) {\n /**\n * The trigger name, used to associate it with an element. Unique within the component.\n * @type {?}\n */\n AnimationTriggerMetadata.prototype.name;\n /**\n * An animation definition object, containing an array of state and transition declarations.\n * @type {?}\n */\n AnimationTriggerMetadata.prototype.definitions;\n /**\n * An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation. Default delay is 0.\n * @type {?}\n */\n AnimationTriggerMetadata.prototype.options;\n}\n/**\n * Encapsulates an animation state by associating a state name with a set of CSS styles.\n * Instantiated and returned by the `state()` function.\n *\n * \\@publicApi\n * @record\n */\nfunction AnimationStateMetadata() { }\nif (false) {\n /**\n * The state name, unique within the component.\n * @type {?}\n */\n AnimationStateMetadata.prototype.name;\n /**\n * The CSS styles associated with this state.\n * @type {?}\n */\n AnimationStateMetadata.prototype.styles;\n /**\n * An options object containing\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n * @type {?|undefined}\n */\n AnimationStateMetadata.prototype.options;\n}\n/**\n * Encapsulates an animation transition. Instantiated and returned by the\n * `transition()` function.\n *\n * \\@publicApi\n * @record\n */\nfunction AnimationTransitionMetadata() { }\nif (false) {\n /**\n * An expression that describes a state change.\n * @type {?}\n */\n AnimationTransitionMetadata.prototype.expr;\n /**\n * One or more animation objects to which this transition applies.\n * @type {?}\n */\n AnimationTransitionMetadata.prototype.animation;\n /**\n * An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation. Default delay is 0.\n * @type {?}\n */\n AnimationTransitionMetadata.prototype.options;\n}\n/**\n * Encapsulates a reusable animation, which is a collection of individual animation steps.\n * Instantiated and returned by the `animation()` function, and\n * passed to the `useAnimation()` function.\n *\n * \\@publicApi\n * @record\n */\nfunction AnimationReferenceMetadata() { }\nif (false) {\n /**\n * One or more animation step objects.\n * @type {?}\n */\n AnimationReferenceMetadata.prototype.animation;\n /**\n * An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation. Default delay is 0.\n * @type {?}\n */\n AnimationReferenceMetadata.prototype.options;\n}\n/**\n * Encapsulates an animation query. Instantiated and returned by\n * the `query()` function.\n *\n * \\@publicApi\n * @record\n */\nfunction AnimationQueryMetadata() { }\nif (false) {\n /**\n * The CSS selector for this query.\n * @type {?}\n */\n AnimationQueryMetadata.prototype.selector;\n /**\n * One or more animation step objects.\n * @type {?}\n */\n AnimationQueryMetadata.prototype.animation;\n /**\n * A query options object.\n * @type {?}\n */\n AnimationQueryMetadata.prototype.options;\n}\n/**\n * Encapsulates a keyframes sequence. Instantiated and returned by\n * the `keyframes()` function.\n *\n * \\@publicApi\n * @record\n */\nfunction AnimationKeyframesSequenceMetadata() { }\nif (false) {\n /**\n * An array of animation styles.\n * @type {?}\n */\n AnimationKeyframesSequenceMetadata.prototype.steps;\n}\n/**\n * Encapsulates an animation style. Instantiated and returned by\n * the `style()` function.\n *\n * \\@publicApi\n * @record\n */\nfunction AnimationStyleMetadata() { }\nif (false) {\n /**\n * A set of CSS style properties.\n * @type {?}\n */\n AnimationStyleMetadata.prototype.styles;\n /**\n * A percentage of the total animate time at which the style is to be applied.\n * @type {?}\n */\n AnimationStyleMetadata.prototype.offset;\n}\n/**\n * Encapsulates an animation step. Instantiated and returned by\n * the `animate()` function.\n *\n * \\@publicApi\n * @record\n */\nfunction AnimationAnimateMetadata() { }\nif (false) {\n /**\n * The timing data for the step.\n * @type {?}\n */\n AnimationAnimateMetadata.prototype.timings;\n /**\n * A set of styles used in the step.\n * @type {?}\n */\n AnimationAnimateMetadata.prototype.styles;\n}\n/**\n * Encapsulates a child animation, that can be run explicitly when the parent is run.\n * Instantiated and returned by the `animateChild` function.\n *\n * \\@publicApi\n * @record\n */\nfunction AnimationAnimateChildMetadata() { }\nif (false) {\n /**\n * An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation. Default delay is 0.\n * @type {?}\n */\n AnimationAnimateChildMetadata.prototype.options;\n}\n/**\n * Encapsulates a reusable animation.\n * Instantiated and returned by the `useAnimation()` function.\n *\n * \\@publicApi\n * @record\n */\nfunction AnimationAnimateRefMetadata() { }\nif (false) {\n /**\n * An animation reference object.\n * @type {?}\n */\n AnimationAnimateRefMetadata.prototype.animation;\n /**\n * An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation. Default delay is 0.\n * @type {?}\n */\n AnimationAnimateRefMetadata.prototype.options;\n}\n/**\n * Encapsulates an animation sequence.\n * Instantiated and returned by the `sequence()` function.\n *\n * \\@publicApi\n * @record\n */\nfunction AnimationSequenceMetadata() { }\nif (false) {\n /**\n * An array of animation step objects.\n * @type {?}\n */\n AnimationSequenceMetadata.prototype.steps;\n /**\n * An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation. Default delay is 0.\n * @type {?}\n */\n AnimationSequenceMetadata.prototype.options;\n}\n/**\n * Encapsulates an animation group.\n * Instantiated and returned by the `{\\@link animations/group group()}` function.\n *\n * \\@publicApi\n * @record\n */\nfunction AnimationGroupMetadata() { }\nif (false) {\n /**\n * One or more animation or style steps that form this group.\n * @type {?}\n */\n AnimationGroupMetadata.prototype.steps;\n /**\n * An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation. Default delay is 0.\n * @type {?}\n */\n AnimationGroupMetadata.prototype.options;\n}\n/**\n * Encapsulates parameters for staggering the start times of a set of animation steps.\n * Instantiated and returned by the `stagger()` function.\n *\n * \\@publicApi\n *\n * @record\n */\nfunction AnimationStaggerMetadata() { }\nif (false) {\n /**\n * The timing data for the steps.\n * @type {?}\n */\n AnimationStaggerMetadata.prototype.timings;\n /**\n * One or more animation steps.\n * @type {?}\n */\n AnimationStaggerMetadata.prototype.animation;\n}\n/**\n * Creates a named animation trigger, containing a list of `state()`\n * and `transition()` entries to be evaluated when the expression\n * bound to the trigger changes.\n *\n * \\@usageNotes\n * Define an animation trigger in the `animations` section of `\\@Component` metadata.\n * In the template, reference the trigger by name and bind it to a trigger expression that\n * evaluates to a defined animation state, using the following format:\n *\n * `[\\@triggerName]=\"expression\"`\n *\n * Animation trigger bindings convert all values to strings, and then match the\n * previous and current values against any linked transitions.\n * Booleans can be specified as `1` or `true` and `0` or `false`.\n *\n * ### Usage Example\n *\n * The following example creates an animation trigger reference based on the provided\n * name value.\n * The provided animation value is expected to be an array consisting of state and\n * transition declarations.\n *\n * ```typescript\n * \\@Component({\n * selector: \"my-component\",\n * templateUrl: \"my-component-tpl.html\",\n * animations: [\n * trigger(\"myAnimationTrigger\", [\n * state(...),\n * state(...),\n * transition(...),\n * transition(...)\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"something\";\n * }\n * ```\n *\n * The template associated with this component makes use of the defined trigger\n * by binding to an element within its template code.\n *\n * ```html\n * \n *
...
\n * ```\n *\n * ### Using an inline function\n * The `transition` animation method also supports reading an inline function which can decide\n * if its associated animation should be run.\n *\n * ```typescript\n * // this method is run each time the `myAnimationTrigger` trigger value changes.\n * function myInlineMatcherFn(fromState: string, toState: string, element: any, params: {[key:\n * string]: any}): boolean {\n * // notice that `element` and `params` are also available here\n * return toState == 'yes-please-animate';\n * }\n * /\n * selector: 'my-component',\n * templateUrl: 'my-component-tpl.html',\n * animations: [\n * trigger('myAnimationTrigger', [\n * transition(myInlineMatcherFn, [\n * // the animation sequence code\n * ]),\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"yes-please-animate\";\n * }\n * ```\n *\n * ### Disabling Animations\n * When true, the special animation control binding `\\@.disabled` binding prevents\n * all animations from rendering.\n * Place the `\\@.disabled` binding on an element to disable\n * animations on the element itself, as well as any inner animation triggers\n * within the element.\n *\n * The following example shows how to use this feature:\n *\n * ```typescript /\n * selector: 'my-component',\n * template: `\n *
\n *
\n *
\n * `,\n * animations: [\n * trigger(\"childAnimation\", [\n * // ...\n * ])\n * ]\n * })\n * class MyComponent {\n * isDisabled = true;\n * exp = '...';\n * }\n * ```\n *\n * When `\\@.disabled` is true, it prevents the `\\@childAnimation` trigger from animating,\n * along with any inner animations.\n *\n * ### Disable animations application-wide\n * When an area of the template is set to have animations disabled,\n * **all** inner components have their animations disabled as well.\n * This means that you can disable all animations for an app\n * by placing a host binding set on `\\@.disabled` on the topmost Angular component.\n *\n * ```typescript\n * import {Component, HostBinding} from '\\@angular/core';\n * /\n * selector: 'app-component',\n * templateUrl: 'app.component.html',\n * })\n * class AppComponent {\n * \\@HostBinding('@.disabled')\n * public animationsDisabled = true;\n * }\n * ```\n *\n * ### Overriding disablement of inner animations\n * Despite inner animations being disabled, a parent animation can `query()`\n * for inner elements located in disabled areas of the template and still animate\n * them if needed. This is also the case for when a sub animation is\n * queried by a parent and then later animated using `animateChild()`.\n *\n * ### Detecting when an animation is disabled\n * If a region of the DOM (or the entire application) has its animations disabled, the animation\n * trigger callbacks still fire, but for zero seconds. When the callback fires, it provides\n * an instance of an `AnimationEvent`. If animations are disabled,\n * the `.disabled` flag on the event is true.\n *\n * \\@publicApi\n * @param {?} name An identifying string.\n * @param {?} definitions An animation definition object, containing an array of `state()`\n * and `transition()` declarations.\n *\n * @return {?} An object that encapsulates the trigger data.\n *\n */\nfunction trigger(name, definitions) {\n return { type: 7 /* Trigger */, name, definitions, options: {} };\n}\n/**\n * Defines an animation step that combines styling information with timing information.\n *\n * \\@usageNotes\n * Call within an animation `sequence()`, `{\\@link animations/group group()}`, or\n * `transition()` call to specify an animation step\n * that applies given style data to the parent animation for a given amount of time.\n *\n * ### Syntax Examples\n * **Timing examples**\n *\n * The following examples show various `timings` specifications.\n * - `animate(500)` : Duration is 500 milliseconds.\n * - `animate(\"1s\")` : Duration is 1000 milliseconds.\n * - `animate(\"100ms 0.5s\")` : Duration is 100 milliseconds, delay is 500 milliseconds.\n * - `animate(\"5s ease-in\")` : Duration is 5000 milliseconds, easing in.\n * - `animate(\"5s 10ms cubic-bezier(.17,.67,.88,.1)\")` : Duration is 5000 milliseconds, delay is 10\n * milliseconds, easing according to a bezier curve.\n *\n * **Style examples**\n *\n * The following example calls `style()` to set a single CSS style.\n * ```typescript\n * animate(500, style({ background: \"red\" }))\n * ```\n * The following example calls `keyframes()` to set a CSS style\n * to different values for successive keyframes.\n * ```typescript\n * animate(500, keyframes(\n * [\n * style({ background: \"blue\" })),\n * style({ background: \"red\" }))\n * ])\n * ```\n *\n * \\@publicApi\n * @param {?} timings Sets `AnimateTimings` for the parent animation.\n * A string in the format \"duration [delay] [easing]\".\n * - Duration and delay are expressed as a number and optional time unit,\n * such as \"1s\" or \"10ms\" for one second and 10 milliseconds, respectively.\n * The default unit is milliseconds.\n * - The easing value controls how the animation accelerates and decelerates\n * during its runtime. Value is one of `ease`, `ease-in`, `ease-out`,\n * `ease-in-out`, or a `cubic-bezier()` function call.\n * If not supplied, no easing is applied.\n *\n * For example, the string \"1s 100ms ease-out\" specifies a duration of\n * 1000 milliseconds, and delay of 100 ms, and the \"ease-out\" easing style,\n * which decelerates near the end of the duration.\n * @param {?=} styles Sets AnimationStyles for the parent animation.\n * A function call to either `style()` or `keyframes()`\n * that returns a collection of CSS style entries to be applied to the parent animation.\n * When null, uses the styles from the destination state.\n * This is useful when describing an animation step that will complete an animation;\n * see \"Animating to the final state\" in `transitions()`.\n * @return {?} An object that encapsulates the animation step.\n *\n */\nfunction animate(timings, styles = null) {\n return { type: 4 /* Animate */, styles, timings };\n}\n/**\n * \\@description Defines a list of animation steps to be run in parallel.\n *\n * \\@usageNotes\n * Grouped animations are useful when a series of styles must be\n * animated at different starting times and closed off at different ending times.\n *\n * When called within a `sequence()` or a\n * `transition()` call, does not continue to the next\n * instruction until all of the inner animation steps have completed.\n *\n * \\@publicApi\n * @param {?} steps An array of animation step objects.\n * - When steps are defined by `style()` or `animate()`\n * function calls, each call within the group is executed instantly.\n * - To specify offset styles to be applied at a later time, define steps with\n * `keyframes()`, or use `animate()` calls with a delay value.\n * For example:\n *\n * ```typescript\n * group([\n * animate(\"1s\", style({ background: \"black\" })),\n * animate(\"2s\", style({ color: \"white\" }))\n * ])\n * ```\n *\n * @param {?=} options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return {?} An object that encapsulates the group data.\n *\n */\nfunction group(steps, options = null) {\n return { type: 3 /* Group */, steps, options };\n}\n/**\n * Defines a list of animation steps to be run sequentially, one by one.\n *\n * \\@usageNotes\n * When you pass an array of steps to a\n * `transition()` call, the steps run sequentially by default.\n * Compare this to the `{\\@link animations/group group()}` call, which runs animation steps in parallel.\n *\n * When a sequence is used within a `{\\@link animations/group group()}` or a `transition()` call,\n * execution continues to the next instruction only after each of the inner animation\n * steps have completed.\n *\n * \\@publicApi\n *\n * @param {?} steps An array of animation step objects.\n * - Steps defined by `style()` calls apply the styling data immediately.\n * - Steps defined by `animate()` calls apply the styling data over time\n * as specified by the timing data.\n *\n * ```typescript\n * sequence([\n * style({ opacity: 0 }),\n * animate(\"1s\", style({ opacity: 1 }))\n * ])\n * ```\n *\n * @param {?=} options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return {?} An object that encapsulates the sequence data.\n *\n */\nfunction sequence(steps, options = null) {\n return { type: 2 /* Sequence */, steps, options };\n}\n/**\n * Declares a key/value object containing CSS properties/styles that\n * can then be used for an animation `state`, within an animation `sequence`,\n * or as styling data for calls to `animate()` and `keyframes()`.\n *\n * \\@usageNotes\n * The following examples create animation styles that collect a set of\n * CSS property values:\n *\n * ```typescript\n * // string values for CSS properties\n * style({ background: \"red\", color: \"blue\" })\n *\n * // numerical pixel values\n * style({ width: 100, height: 0 })\n * ```\n *\n * The following example uses auto-styling to allow a component to animate from\n * a height of 0 up to the height of the parent element:\n *\n * ```\n * style({ height: 0 }),\n * animate(\"1s\", style({ height: \"*\" }))\n * ```\n *\n * \\@publicApi\n *\n * @param {?} tokens A set of CSS styles or HTML styles associated with an animation state.\n * The value can be any of the following:\n * - A key-value style pair associating a CSS property with a value.\n * - An array of key-value style pairs.\n * - An asterisk (*), to use auto-styling, where styles are derived from the element\n * being animated and applied to the animation when it starts.\n *\n * Auto-styling can be used to define a state that depends on layout or other\n * environmental factors.\n *\n * @return {?} An object that encapsulates the style data.\n *\n */\nfunction style(tokens) {\n return { type: 6 /* Style */, styles: tokens, offset: null };\n}\n/**\n * Declares an animation state within a trigger attached to an element.\n *\n * \\@usageNotes\n * Use the `trigger()` function to register states to an animation trigger.\n * Use the `transition()` function to animate between states.\n * When a state is active within a component, its associated styles persist on the element,\n * even when the animation ends.\n *\n * \\@publicApi\n *\n * @param {?} name One or more names for the defined state in a comma-separated string.\n * The following reserved state names can be supplied to define a style for specific use\n * cases:\n *\n * - `void` You can associate styles with this name to be used when\n * the element is detached from the application. For example, when an `ngIf` evaluates\n * to false, the state of the associated element is void.\n * - `*` (asterisk) Indicates the default state. You can associate styles with this name\n * to be used as the fallback when the state that is being animated is not declared\n * within the trigger.\n *\n * @param {?} styles A set of CSS styles associated with this state, created using the\n * `style()` function.\n * This set of styles persists on the element once the state has been reached.\n * @param {?=} options Parameters that can be passed to the state when it is invoked.\n * 0 or more key-value pairs.\n * @return {?} An object that encapsulates the new state data.\n *\n */\nfunction state(name, styles, options) {\n return { type: 0 /* State */, name, styles, options };\n}\n/**\n * Defines a set of animation styles, associating each style with an optional `offset` value.\n *\n * \\@usageNotes\n * Use with the `animate()` call. Instead of applying animations\n * from the current state\n * to the destination state, keyframes describe how each style entry is applied and at what point\n * within the animation arc.\n * Compare [CSS Keyframe Animations](https://www.w3schools.com/css/css3_animations.asp).\n *\n * ### Usage\n *\n * In the following example, the offset values describe\n * when each `backgroundColor` value is applied. The color is red at the start, and changes to\n * blue when 20% of the total time has elapsed.\n *\n * ```typescript\n * // the provided offset values\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\", offset: 0 }),\n * style({ backgroundColor: \"blue\", offset: 0.2 }),\n * style({ backgroundColor: \"orange\", offset: 0.3 }),\n * style({ backgroundColor: \"black\", offset: 1 })\n * ]))\n * ```\n *\n * If there are no `offset` values specified in the style entries, the offsets\n * are calculated automatically.\n *\n * ```typescript\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\" }) // offset = 0\n * style({ backgroundColor: \"blue\" }) // offset = 0.33\n * style({ backgroundColor: \"orange\" }) // offset = 0.66\n * style({ backgroundColor: \"black\" }) // offset = 1\n * ]))\n * ```\n * \\@publicApi\n * @param {?} steps A set of animation styles with optional offset data.\n * The optional `offset` value for a style specifies a percentage of the total animation\n * time at which that style is applied.\n * @return {?} An object that encapsulates the keyframes data.\n *\n */\nfunction keyframes(steps) {\n return { type: 5 /* Keyframes */, steps };\n}\n/**\n * Declares an animation transition as a sequence of animation steps to run when a given\n * condition is satisfied. The condition is a Boolean expression or function that compares\n * the previous and current animation states, and returns true if this transition should occur.\n * When the state criteria of a defined transition are met, the associated animation is\n * triggered.\n *\n * \\@usageNotes\n * The template associated with a component binds an animation trigger to an element.\n *\n * ```HTML\n * \n *
...
\n * ```\n *\n * All transitions are defined within an animation trigger,\n * along with named states that the transitions change to and from.\n *\n * ```typescript\n * trigger(\"myAnimationTrigger\", [\n * // define states\n * state(\"on\", style({ background: \"green\" })),\n * state(\"off\", style({ background: \"grey\" })),\n * ...]\n * ```\n *\n * Note that when you call the `sequence()` function within a `{\\@link animations/group group()}`\n * or a `transition()` call, execution does not continue to the next instruction\n * until each of the inner animation steps have completed.\n *\n * ### Syntax examples\n *\n * The following examples define transitions between the two defined states (and default states),\n * using various options:\n *\n * ```typescript\n * // Transition occurs when the state value\n * // bound to \"myAnimationTrigger\" changes from \"on\" to \"off\"\n * transition(\"on => off\", animate(500))\n * // Run the same animation for both directions\n * transition(\"on <=> off\", animate(500))\n * // Define multiple state-change pairs separated by commas\n * transition(\"on => off, off => void\", animate(500))\n * ```\n *\n * ### Special values for state-change expressions\n *\n * - Catch-all state change for when an element is inserted into the page and the\n * destination state is unknown:\n *\n * ```typescript\n * transition(\"void => *\", [\n * style({ opacity: 0 }),\n * animate(500)\n * ])\n * ```\n *\n * - Capture a state change between any states:\n *\n * `transition(\"* => *\", animate(\"1s 0s\"))`\n *\n * - Entry and exit transitions:\n *\n * ```typescript\n * transition(\":enter\", [\n * style({ opacity: 0 }),\n * animate(500, style({ opacity: 1 }))\n * ]),\n * transition(\":leave\", [\n * animate(500, style({ opacity: 0 }))\n * ])\n * ```\n *\n * - Use `:increment` and `:decrement` to initiate transitions:\n *\n * ```typescript\n * transition(\":increment\", group([\n * query(':enter', [\n * style({ left: '100%' }),\n * animate('0.5s ease-out', style('*'))\n * ]),\n * query(':leave', [\n * animate('0.5s ease-out', style({ left: '-100%' }))\n * ])\n * ]))\n *\n * transition(\":decrement\", group([\n * query(':enter', [\n * style({ left: '100%' }),\n * animate('0.5s ease-out', style('*'))\n * ]),\n * query(':leave', [\n * animate('0.5s ease-out', style({ left: '-100%' }))\n * ])\n * ]))\n * ```\n *\n * ### State-change functions\n *\n * Here is an example of a `fromState` specified as a state-change function that invokes an\n * animation when true:\n *\n * ```typescript\n * transition((fromState, toState) =>\n * {\n * return fromState == \"off\" && toState == \"on\";\n * },\n * animate(\"1s 0s\"))\n * ```\n *\n * ### Animating to the final state\n *\n * If the final step in a transition is a call to `animate()` that uses a timing value\n * with no style data, that step is automatically considered the final animation arc,\n * for the element to reach the final state. Angular automatically adds or removes\n * CSS styles to ensure that the element is in the correct final state.\n *\n * The following example defines a transition that starts by hiding the element,\n * then makes sure that it animates properly to whatever state is currently active for trigger:\n *\n * ```typescript\n * transition(\"void => *\", [\n * style({ opacity: 0 }),\n * animate(500)\n * ])\n * ```\n * ### Boolean value matching\n * If a trigger binding value is a Boolean, it can be matched using a transition expression\n * that compares true and false or 1 and 0. For example:\n *\n * ```\n * // in the template\n *
...
\n * // in the component metadata\n * trigger('openClose', [\n * state('true', style({ height: '*' })),\n * state('false', style({ height: '0px' })),\n * transition('false <=> true', animate(500))\n * ])\n * ```\n *\n * \\@publicApi\n *\n * @param {?} stateChangeExpr A Boolean expression or function that compares the previous and current\n * animation states, and returns true if this transition should occur. Note that \"true\" and \"false\"\n * match 1 and 0, respectively. An expression is evaluated each time a state change occurs in the\n * animation trigger element.\n * The animation steps run when the expression evaluates to true.\n *\n * - A state-change string takes the form \"state1 => state2\", where each side is a defined animation\n * state, or an asterix (*) to refer to a dynamic start or end state.\n * - The expression string can contain multiple comma-separated statements;\n * for example \"state1 => state2, state3 => state4\".\n * - Special values `:enter` and `:leave` initiate a transition on the entry and exit states,\n * equivalent to \"void => *\" and \"* => void\".\n * - Special values `:increment` and `:decrement` initiate a transition when a numeric value has\n * increased or decreased in value.\n * - A function is executed each time a state change occurs in the animation trigger element.\n * The animation steps run when the function returns true.\n *\n * @param {?} steps One or more animation objects, as returned by the `animate()` or\n * `sequence()` function, that form a transformation from one state to another.\n * A sequence is used by default when you pass an array.\n * @param {?=} options An options object that can contain a delay value for the start of the animation,\n * and additional developer-defined parameters. Provided values for additional parameters are used\n * as defaults, and override values can be passed to the caller on invocation.\n * @return {?} An object that encapsulates the transition data.\n *\n */\nfunction transition(stateChangeExpr, steps, options = null) {\n return { type: 1 /* Transition */, expr: stateChangeExpr, animation: steps, options };\n}\n/**\n * Produces a reusable animation that can be invoked in another animation or sequence,\n * by calling the `useAnimation()` function.\n *\n * \\@usageNotes\n * The following example defines a reusable animation, providing some default parameter\n * values.\n *\n * ```typescript\n * var fadeAnimation = animation([\n * style({ opacity: '{{ start }}' }),\n * animate('{{ time }}',\n * style({ opacity: '{{ end }}'}))\n * ],\n * { params: { time: '1000ms', start: 0, end: 1 }});\n * ```\n *\n * The following invokes the defined animation with a call to `useAnimation()`,\n * passing in override parameter values.\n *\n * ```js\n * useAnimation(fadeAnimation, {\n * params: {\n * time: '2s',\n * start: 1,\n * end: 0\n * }\n * })\n * ```\n *\n * If any of the passed-in parameter values are missing from this call,\n * the default values are used. If one or more parameter values are missing before a step is\n * animated, `useAnimation()` throws an error.\n *\n * \\@publicApi\n * @param {?} steps One or more animation objects, as returned by the `animate()`\n * or `sequence()` function, that form a transformation from one state to another.\n * A sequence is used by default when you pass an array.\n * @param {?=} options An options object that can contain a delay value for the start of the\n * animation, and additional developer-defined parameters.\n * Provided values for additional parameters are used as defaults,\n * and override values can be passed to the caller on invocation.\n * @return {?} An object that encapsulates the animation data.\n *\n */\nfunction animation(steps, options = null) {\n return { type: 8 /* Reference */, animation: steps, options };\n}\n/**\n * Executes a queried inner animation element within an animation sequence.\n *\n * \\@usageNotes\n * Each time an animation is triggered in Angular, the parent animation\n * has priority and any child animations are blocked. In order\n * for a child animation to run, the parent animation must query each of the elements\n * containing child animations, and run them using this function.\n *\n * Note that this feature is designed to be used with `query()` and it will only work\n * with animations that are assigned using the Angular animation library. CSS keyframes\n * and transitions are not handled by this API.\n *\n * \\@publicApi\n * @param {?=} options An options object that can contain a delay value for the start of the\n * animation, and additional override values for developer-defined parameters.\n * @return {?} An object that encapsulates the child animation data.\n *\n */\nfunction animateChild(options = null) {\n return { type: 9 /* AnimateChild */, options };\n}\n/**\n * Starts a reusable animation that is created using the `animation()` function.\n *\n * \\@publicApi\n * @param {?} animation The reusable animation to start.\n * @param {?=} options An options object that can contain a delay value for the start of\n * the animation, and additional override values for developer-defined parameters.\n * @return {?} An object that contains the animation parameters.\n *\n */\nfunction useAnimation(animation, options = null) {\n return { type: 10 /* AnimateRef */, animation, options };\n}\n/**\n * Finds one or more inner elements within the current element that is\n * being animated within a sequence. Use with `animate()`.\n *\n * \\@usageNotes\n * Tokens can be merged into a combined query selector string. For example:\n *\n * ```typescript\n * query(':self, .record:enter, .record:leave, \\@subTrigger', [...])\n * ```\n *\n * The `query()` function collects multiple elements and works internally by using\n * `element.querySelectorAll`. Use the `limit` field of an options object to limit\n * the total number of items to be collected. For example:\n *\n * ```js\n * query('div', [\n * animate(...),\n * animate(...)\n * ], { limit: 1 })\n * ```\n *\n * By default, throws an error when zero items are found. Set the\n * `optional` flag to ignore this error. For example:\n *\n * ```js\n * query('.some-element-that-may-not-be-there', [\n * animate(...),\n * animate(...)\n * ], { optional: true })\n * ```\n *\n * ### Usage Example\n *\n * The following example queries for inner elements and animates them\n * individually using `animate()`.\n *\n * ```typescript\n * \\@Component({\n * selector: 'inner',\n * template: `\n *
\n *

Title

\n *
\n * Blah blah blah\n *
\n *
\n * `,\n * animations: [\n * trigger('queryAnimation', [\n * transition('* => goAnimate', [\n * // hide the inner elements\n * query('h1', style({ opacity: 0 })),\n * query('.content', style({ opacity: 0 })),\n *\n * // animate the inner elements in, one by one\n * query('h1', animate(1000, style({ opacity: 1 }))),\n * query('.content', animate(1000, style({ opacity: 1 }))),\n * ])\n * ])\n * ]\n * })\n * class Cmp {\n * exp = '';\n *\n * goAnimate() {\n * this.exp = 'goAnimate';\n * }\n * }\n * ```\n *\n * \\@publicApi\n * @param {?} selector The element to query, or a set of elements that contain Angular-specific\n * characteristics, specified with one or more of the following tokens.\n * - `query(\":enter\")` or `query(\":leave\")` : Query for newly inserted/removed elements.\n * - `query(\":animating\")` : Query all currently animating elements.\n * - `query(\"\\@triggerName\")` : Query elements that contain an animation trigger.\n * - `query(\"\\@*\")` : Query all elements that contain an animation triggers.\n * - `query(\":self\")` : Include the current element into the animation sequence.\n *\n * @param {?} animation One or more animation steps to apply to the queried element or elements.\n * An array is treated as an animation sequence.\n * @param {?=} options An options object. Use the 'limit' field to limit the total number of\n * items to collect.\n * @return {?} An object that encapsulates the query data.\n *\n */\nfunction query(selector, animation, options = null) {\n return { type: 11 /* Query */, selector, animation, options };\n}\n/**\n * Use within an animation `query()` call to issue a timing gap after\n * each queried item is animated.\n *\n * \\@usageNotes\n * In the following example, a container element wraps a list of items stamped out\n * by an `ngFor`. The container element contains an animation trigger that will later be set\n * to query for each of the inner items.\n *\n * Each time items are added, the opacity fade-in animation runs,\n * and each removed item is faded out.\n * When either of these animations occur, the stagger effect is\n * applied after each item's animation is started.\n *\n * ```html\n * \n * \n *
\n *
\n *
\n * {{ item }}\n *
\n *
\n * ```\n *\n * Here is the component code:\n *\n * ```typescript\n * import {trigger, transition, style, animate, query, stagger} from '\\@angular/animations';\n * \\@Component({\n * templateUrl: 'list.component.html',\n * animations: [\n * trigger('listAnimation', [\n * ...\n * ])\n * ]\n * })\n * class ListComponent {\n * items = [];\n *\n * showItems() {\n * this.items = [0,1,2,3,4];\n * }\n *\n * hideItems() {\n * this.items = [];\n * }\n *\n * toggle() {\n * this.items.length ? this.hideItems() : this.showItems();\n * }\n * }\n * ```\n *\n * Here is the animation trigger code:\n *\n * ```typescript\n * trigger('listAnimation', [\n * transition('* => *', [ // each time the binding value changes\n * query(':leave', [\n * stagger(100, [\n * animate('0.5s', style({ opacity: 0 }))\n * ])\n * ]),\n * query(':enter', [\n * style({ opacity: 0 }),\n * stagger(100, [\n * animate('0.5s', style({ opacity: 1 }))\n * ])\n * ])\n * ])\n * ])\n * ```\n *\n * \\@publicApi\n * @param {?} timings A delay value.\n * @param {?} animation One ore more animation steps.\n * @return {?} An object that encapsulates the stagger data.\n *\n */\nfunction stagger(timings, animation) {\n return { type: 12 /* Stagger */, timings, animation };\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/src/util.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n * @param {?} cb\n * @return {?}\n */\nfunction scheduleMicroTask(cb) {\n Promise.resolve(null).then(cb);\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/src/players/animation_player.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Provides programmatic control of a reusable animation sequence,\n * built using the `build()` method of `AnimationBuilder`. The `build()` method\n * returns a factory, whose `create()` method instantiates and initializes this interface.\n *\n * @see `AnimationBuilder`\n * @see `AnimationFactory`\n * @see `animate()`\n *\n * \\@publicApi\n * @record\n */\nfunction AnimationPlayer() { }\nif (false) {\n /**\n * The parent of this player, if any.\n * @type {?}\n */\n AnimationPlayer.prototype.parentPlayer;\n /**\n * The total run time of the animation, in milliseconds.\n * @type {?}\n */\n AnimationPlayer.prototype.totalTime;\n /**\n * Provides a callback to invoke before the animation is destroyed.\n * @type {?|undefined}\n */\n AnimationPlayer.prototype.beforeDestroy;\n /**\n * \\@internal\n * Internal\n * @type {?|undefined}\n */\n AnimationPlayer.prototype.triggerCallback;\n /**\n * \\@internal\n * Internal\n * @type {?|undefined}\n */\n AnimationPlayer.prototype.disabled;\n /**\n * Provides a callback to invoke when the animation finishes.\n * @see `finish()`\n * @param {?} fn The callback function.\n * @return {?}\n */\n AnimationPlayer.prototype.onDone = function (fn) { };\n /**\n * Provides a callback to invoke when the animation starts.\n * @see `run()`\n * @param {?} fn The callback function.\n * @return {?}\n */\n AnimationPlayer.prototype.onStart = function (fn) { };\n /**\n * Provides a callback to invoke after the animation is destroyed.\n * @see `destroy()` / `beforeDestroy()`\n * @param {?} fn The callback function.\n * @return {?}\n */\n AnimationPlayer.prototype.onDestroy = function (fn) { };\n /**\n * Initializes the animation.\n * @return {?}\n */\n AnimationPlayer.prototype.init = function () { };\n /**\n * Reports whether the animation has started.\n * @return {?} True if the animation has started, false otherwise.\n */\n AnimationPlayer.prototype.hasStarted = function () { };\n /**\n * Runs the animation, invoking the `onStart()` callback.\n * @return {?}\n */\n AnimationPlayer.prototype.play = function () { };\n /**\n * Pauses the animation.\n * @return {?}\n */\n AnimationPlayer.prototype.pause = function () { };\n /**\n * Restarts the paused animation.\n * @return {?}\n */\n AnimationPlayer.prototype.restart = function () { };\n /**\n * Ends the animation, invoking the `onDone()` callback.\n * @return {?}\n */\n AnimationPlayer.prototype.finish = function () { };\n /**\n * Destroys the animation, after invoking the `beforeDestroy()` callback.\n * Calls the `onDestroy()` callback when destruction is completed.\n * @return {?}\n */\n AnimationPlayer.prototype.destroy = function () { };\n /**\n * Resets the animation to its initial state.\n * @return {?}\n */\n AnimationPlayer.prototype.reset = function () { };\n /**\n * Sets the position of the animation.\n * @param {?} position A 0-based offset into the duration, in milliseconds.\n * @return {?}\n */\n AnimationPlayer.prototype.setPosition = function (position) { };\n /**\n * Reports the current position of the animation.\n * @return {?} A 0-based offset into the duration, in milliseconds.\n */\n AnimationPlayer.prototype.getPosition = function () { };\n}\n/**\n * An empty programmatic controller for reusable animations.\n * Used internally when animations are disabled, to avoid\n * checking for the null case when an animation player is expected.\n *\n * @see `animate()`\n * @see `AnimationPlayer`\n * @see `GroupPlayer`\n *\n * \\@publicApi\n */\nclass NoopAnimationPlayer {\n /**\n * @param {?=} duration\n * @param {?=} delay\n */\n constructor(duration = 0, delay = 0) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._started = false;\n this._destroyed = false;\n this._finished = false;\n this.parentPlayer = null;\n this.totalTime = duration + delay;\n }\n /**\n * @private\n * @return {?}\n */\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach((/**\n * @param {?} fn\n * @return {?}\n */\n fn => fn()));\n this._onDoneFns = [];\n }\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n onStart(fn) { this._onStartFns.push(fn); }\n /**\n * @param {?} fn\n * @return {?}\n */\n onDone(fn) { this._onDoneFns.push(fn); }\n /**\n * @param {?} fn\n * @return {?}\n */\n onDestroy(fn) { this._onDestroyFns.push(fn); }\n /**\n * @return {?}\n */\n hasStarted() { return this._started; }\n /**\n * @return {?}\n */\n init() { }\n /**\n * @return {?}\n */\n play() {\n if (!this.hasStarted()) {\n this._onStart();\n this.triggerMicrotask();\n }\n this._started = true;\n }\n /**\n * \\@internal\n * @return {?}\n */\n triggerMicrotask() { scheduleMicroTask((/**\n * @return {?}\n */\n () => this._onFinish())); }\n /**\n * @private\n * @return {?}\n */\n _onStart() {\n this._onStartFns.forEach((/**\n * @param {?} fn\n * @return {?}\n */\n fn => fn()));\n this._onStartFns = [];\n }\n /**\n * @return {?}\n */\n pause() { }\n /**\n * @return {?}\n */\n restart() { }\n /**\n * @return {?}\n */\n finish() { this._onFinish(); }\n /**\n * @return {?}\n */\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n if (!this.hasStarted()) {\n this._onStart();\n }\n this.finish();\n this._onDestroyFns.forEach((/**\n * @param {?} fn\n * @return {?}\n */\n fn => fn()));\n this._onDestroyFns = [];\n }\n }\n /**\n * @return {?}\n */\n reset() { }\n /**\n * @param {?} position\n * @return {?}\n */\n setPosition(position) { }\n /**\n * @return {?}\n */\n getPosition() { return 0; }\n /**\n * \\@internal\n * @param {?} phaseName\n * @return {?}\n */\n triggerCallback(phaseName) {\n /** @type {?} */\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach((/**\n * @param {?} fn\n * @return {?}\n */\n fn => fn()));\n methods.length = 0;\n }\n}\nif (false) {\n /**\n * @type {?}\n * @private\n */\n NoopAnimationPlayer.prototype._onDoneFns;\n /**\n * @type {?}\n * @private\n */\n NoopAnimationPlayer.prototype._onStartFns;\n /**\n * @type {?}\n * @private\n */\n NoopAnimationPlayer.prototype._onDestroyFns;\n /**\n * @type {?}\n * @private\n */\n NoopAnimationPlayer.prototype._started;\n /**\n * @type {?}\n * @private\n */\n NoopAnimationPlayer.prototype._destroyed;\n /**\n * @type {?}\n * @private\n */\n NoopAnimationPlayer.prototype._finished;\n /** @type {?} */\n NoopAnimationPlayer.prototype.parentPlayer;\n /** @type {?} */\n NoopAnimationPlayer.prototype.totalTime;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/src/players/animation_group_player.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A programmatic controller for a group of reusable animations.\n * Used internally to control animations.\n *\n * @see `AnimationPlayer`\n * @see `{\\@link animations/group group()}`\n *\n */\nclass AnimationGroupPlayer {\n /**\n * @param {?} _players\n */\n constructor(_players) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n this._onDestroyFns = [];\n this.parentPlayer = null;\n this.totalTime = 0;\n this.players = _players;\n /** @type {?} */\n let doneCount = 0;\n /** @type {?} */\n let destroyCount = 0;\n /** @type {?} */\n let startCount = 0;\n /** @type {?} */\n const total = this.players.length;\n if (total == 0) {\n scheduleMicroTask((/**\n * @return {?}\n */\n () => this._onFinish()));\n }\n else {\n this.players.forEach((/**\n * @param {?} player\n * @return {?}\n */\n player => {\n player.onDone((/**\n * @return {?}\n */\n () => {\n if (++doneCount == total) {\n this._onFinish();\n }\n }));\n player.onDestroy((/**\n * @return {?}\n */\n () => {\n if (++destroyCount == total) {\n this._onDestroy();\n }\n }));\n player.onStart((/**\n * @return {?}\n */\n () => {\n if (++startCount == total) {\n this._onStart();\n }\n }));\n }));\n }\n this.totalTime = this.players.reduce((/**\n * @param {?} time\n * @param {?} player\n * @return {?}\n */\n (time, player) => Math.max(time, player.totalTime)), 0);\n }\n /**\n * @private\n * @return {?}\n */\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach((/**\n * @param {?} fn\n * @return {?}\n */\n fn => fn()));\n this._onDoneFns = [];\n }\n }\n /**\n * @return {?}\n */\n init() { this.players.forEach((/**\n * @param {?} player\n * @return {?}\n */\n player => player.init())); }\n /**\n * @param {?} fn\n * @return {?}\n */\n onStart(fn) { this._onStartFns.push(fn); }\n /**\n * @private\n * @return {?}\n */\n _onStart() {\n if (!this.hasStarted()) {\n this._started = true;\n this._onStartFns.forEach((/**\n * @param {?} fn\n * @return {?}\n */\n fn => fn()));\n this._onStartFns = [];\n }\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n onDone(fn) { this._onDoneFns.push(fn); }\n /**\n * @param {?} fn\n * @return {?}\n */\n onDestroy(fn) { this._onDestroyFns.push(fn); }\n /**\n * @return {?}\n */\n hasStarted() { return this._started; }\n /**\n * @return {?}\n */\n play() {\n if (!this.parentPlayer) {\n this.init();\n }\n this._onStart();\n this.players.forEach((/**\n * @param {?} player\n * @return {?}\n */\n player => player.play()));\n }\n /**\n * @return {?}\n */\n pause() { this.players.forEach((/**\n * @param {?} player\n * @return {?}\n */\n player => player.pause())); }\n /**\n * @return {?}\n */\n restart() { this.players.forEach((/**\n * @param {?} player\n * @return {?}\n */\n player => player.restart())); }\n /**\n * @return {?}\n */\n finish() {\n this._onFinish();\n this.players.forEach((/**\n * @param {?} player\n * @return {?}\n */\n player => player.finish()));\n }\n /**\n * @return {?}\n */\n destroy() { this._onDestroy(); }\n /**\n * @private\n * @return {?}\n */\n _onDestroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._onFinish();\n this.players.forEach((/**\n * @param {?} player\n * @return {?}\n */\n player => player.destroy()));\n this._onDestroyFns.forEach((/**\n * @param {?} fn\n * @return {?}\n */\n fn => fn()));\n this._onDestroyFns = [];\n }\n }\n /**\n * @return {?}\n */\n reset() {\n this.players.forEach((/**\n * @param {?} player\n * @return {?}\n */\n player => player.reset()));\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n }\n /**\n * @param {?} p\n * @return {?}\n */\n setPosition(p) {\n /** @type {?} */\n const timeAtPosition = p * this.totalTime;\n this.players.forEach((/**\n * @param {?} player\n * @return {?}\n */\n player => {\n /** @type {?} */\n const position = player.totalTime ? Math.min(1, timeAtPosition / player.totalTime) : 1;\n player.setPosition(position);\n }));\n }\n /**\n * @return {?}\n */\n getPosition() {\n /** @type {?} */\n let min = 0;\n this.players.forEach((/**\n * @param {?} player\n * @return {?}\n */\n player => {\n /** @type {?} */\n const p = player.getPosition();\n min = Math.min(p, min);\n }));\n return min;\n }\n /**\n * @return {?}\n */\n beforeDestroy() {\n this.players.forEach((/**\n * @param {?} player\n * @return {?}\n */\n player => {\n if (player.beforeDestroy) {\n player.beforeDestroy();\n }\n }));\n }\n /**\n * \\@internal\n * @param {?} phaseName\n * @return {?}\n */\n triggerCallback(phaseName) {\n /** @type {?} */\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach((/**\n * @param {?} fn\n * @return {?}\n */\n fn => fn()));\n methods.length = 0;\n }\n}\nif (false) {\n /**\n * @type {?}\n * @private\n */\n AnimationGroupPlayer.prototype._onDoneFns;\n /**\n * @type {?}\n * @private\n */\n AnimationGroupPlayer.prototype._onStartFns;\n /**\n * @type {?}\n * @private\n */\n AnimationGroupPlayer.prototype._finished;\n /**\n * @type {?}\n * @private\n */\n AnimationGroupPlayer.prototype._started;\n /**\n * @type {?}\n * @private\n */\n AnimationGroupPlayer.prototype._destroyed;\n /**\n * @type {?}\n * @private\n */\n AnimationGroupPlayer.prototype._onDestroyFns;\n /** @type {?} */\n AnimationGroupPlayer.prototype.parentPlayer;\n /** @type {?} */\n AnimationGroupPlayer.prototype.totalTime;\n /** @type {?} */\n AnimationGroupPlayer.prototype.players;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/src/private_export.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst ɵPRE_STYLE = '!';\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/src/animations.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/public_api.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/index.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AUTO_STYLE, AnimationBuilder, AnimationFactory, NoopAnimationPlayer, animate, animateChild, animation, group, keyframes, query, sequence, stagger, state, style, transition, trigger, useAnimation, AnimationGroupPlayer as ɵAnimationGroupPlayer, ɵPRE_STYLE };\n//# sourceMappingURL=animations.js.map\n","/**\n * @license Angular v9.0.7\n * (c) 2010-2020 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { ɵAnimationGroupPlayer, NoopAnimationPlayer, AUTO_STYLE, ɵPRE_STYLE, sequence, style } from '@angular/animations';\nimport { Injectable } from '@angular/core';\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/browser/src/render/shared.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @return {?}\n */\nfunction isBrowser() {\n return (typeof window !== 'undefined' && typeof window.document !== 'undefined');\n}\n/**\n * @return {?}\n */\nfunction isNode() {\n // Checking only for `process` isn't enough to identify whether or not we're in a Node\n // environment, because Webpack by default will polyfill the `process`. While we can discern\n // that Webpack polyfilled it by looking at `process.browser`, it's very Webpack-specific and\n // might not be future-proof. Instead we look at the stringified version of `process` which\n // is `[object process]` in Node and `[object Object]` when polyfilled.\n return typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n}\n/**\n * @param {?} players\n * @return {?}\n */\nfunction optimizeGroupPlayer(players) {\n switch (players.length) {\n case 0:\n return new NoopAnimationPlayer();\n case 1:\n return players[0];\n default:\n return new ɵAnimationGroupPlayer(players);\n }\n}\n/**\n * @param {?} driver\n * @param {?} normalizer\n * @param {?} element\n * @param {?} keyframes\n * @param {?=} preStyles\n * @param {?=} postStyles\n * @return {?}\n */\nfunction normalizeKeyframes(driver, normalizer, element, keyframes, preStyles = {}, postStyles = {}) {\n /** @type {?} */\n const errors = [];\n /** @type {?} */\n const normalizedKeyframes = [];\n /** @type {?} */\n let previousOffset = -1;\n /** @type {?} */\n let previousKeyframe = null;\n keyframes.forEach((/**\n * @param {?} kf\n * @return {?}\n */\n kf => {\n /** @type {?} */\n const offset = (/** @type {?} */ (kf['offset']));\n /** @type {?} */\n const isSameOffset = offset == previousOffset;\n /** @type {?} */\n const normalizedKeyframe = (isSameOffset && previousKeyframe) || {};\n Object.keys(kf).forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => {\n /** @type {?} */\n let normalizedProp = prop;\n /** @type {?} */\n let normalizedValue = kf[prop];\n if (prop !== 'offset') {\n normalizedProp = normalizer.normalizePropertyName(normalizedProp, errors);\n switch (normalizedValue) {\n case ɵPRE_STYLE:\n normalizedValue = preStyles[prop];\n break;\n case AUTO_STYLE:\n normalizedValue = postStyles[prop];\n break;\n default:\n normalizedValue =\n normalizer.normalizeStyleValue(prop, normalizedProp, normalizedValue, errors);\n break;\n }\n }\n normalizedKeyframe[normalizedProp] = normalizedValue;\n }));\n if (!isSameOffset) {\n normalizedKeyframes.push(normalizedKeyframe);\n }\n previousKeyframe = normalizedKeyframe;\n previousOffset = offset;\n }));\n if (errors.length) {\n /** @type {?} */\n const LINE_START = '\\n - ';\n throw new Error(`Unable to animate due to the following errors:${LINE_START}${errors.join(LINE_START)}`);\n }\n return normalizedKeyframes;\n}\n/**\n * @param {?} player\n * @param {?} eventName\n * @param {?} event\n * @param {?} callback\n * @return {?}\n */\nfunction listenOnPlayer(player, eventName, event, callback) {\n switch (eventName) {\n case 'start':\n player.onStart((/**\n * @return {?}\n */\n () => callback(event && copyAnimationEvent(event, 'start', player))));\n break;\n case 'done':\n player.onDone((/**\n * @return {?}\n */\n () => callback(event && copyAnimationEvent(event, 'done', player))));\n break;\n case 'destroy':\n player.onDestroy((/**\n * @return {?}\n */\n () => callback(event && copyAnimationEvent(event, 'destroy', player))));\n break;\n }\n}\n/**\n * @param {?} e\n * @param {?} phaseName\n * @param {?} player\n * @return {?}\n */\nfunction copyAnimationEvent(e, phaseName, player) {\n /** @type {?} */\n const totalTime = player.totalTime;\n /** @type {?} */\n const disabled = ((/** @type {?} */ (player))).disabled ? true : false;\n /** @type {?} */\n const event = makeAnimationEvent(e.element, e.triggerName, e.fromState, e.toState, phaseName || e.phaseName, totalTime == undefined ? e.totalTime : totalTime, disabled);\n /** @type {?} */\n const data = ((/** @type {?} */ (e)))['_data'];\n if (data != null) {\n ((/** @type {?} */ (event)))['_data'] = data;\n }\n return event;\n}\n/**\n * @param {?} element\n * @param {?} triggerName\n * @param {?} fromState\n * @param {?} toState\n * @param {?=} phaseName\n * @param {?=} totalTime\n * @param {?=} disabled\n * @return {?}\n */\nfunction makeAnimationEvent(element, triggerName, fromState, toState, phaseName = '', totalTime = 0, disabled) {\n return { element, triggerName, fromState, toState, phaseName, totalTime, disabled: !!disabled };\n}\n/**\n * @param {?} map\n * @param {?} key\n * @param {?} defaultValue\n * @return {?}\n */\nfunction getOrSetAsInMap(map, key, defaultValue) {\n /** @type {?} */\n let value;\n if (map instanceof Map) {\n value = map.get(key);\n if (!value) {\n map.set(key, value = defaultValue);\n }\n }\n else {\n value = map[key];\n if (!value) {\n value = map[key] = defaultValue;\n }\n }\n return value;\n}\n/**\n * @param {?} command\n * @return {?}\n */\nfunction parseTimelineCommand(command) {\n /** @type {?} */\n const separatorPos = command.indexOf(':');\n /** @type {?} */\n const id = command.substring(1, separatorPos);\n /** @type {?} */\n const action = command.substr(separatorPos + 1);\n return [id, action];\n}\n/** @type {?} */\nlet _contains = (/**\n * @param {?} elm1\n * @param {?} elm2\n * @return {?}\n */\n(elm1, elm2) => false);\nconst ɵ0 = _contains;\n/** @type {?} */\nlet _matches = (/**\n * @param {?} element\n * @param {?} selector\n * @return {?}\n */\n(element, selector) => false);\nconst ɵ1 = _matches;\n/** @type {?} */\nlet _query = (/**\n * @param {?} element\n * @param {?} selector\n * @param {?} multi\n * @return {?}\n */\n(element, selector, multi) => {\n return [];\n});\nconst ɵ2 = _query;\n// Define utility methods for browsers and platform-server(domino) where Element\n// and utility methods exist.\n/** @type {?} */\nconst _isNode = isNode();\nif (_isNode || typeof Element !== 'undefined') {\n // this is well supported in all browsers\n _contains = (/**\n * @param {?} elm1\n * @param {?} elm2\n * @return {?}\n */\n (elm1, elm2) => { return (/** @type {?} */ (elm1.contains(elm2))); });\n _matches = ((/**\n * @return {?}\n */\n () => {\n if (_isNode || Element.prototype.matches) {\n return (/**\n * @param {?} element\n * @param {?} selector\n * @return {?}\n */\n (element, selector) => element.matches(selector));\n }\n else {\n /** @type {?} */\n const proto = (/** @type {?} */ (Element.prototype));\n /** @type {?} */\n const fn = proto.matchesSelector || proto.mozMatchesSelector || proto.msMatchesSelector ||\n proto.oMatchesSelector || proto.webkitMatchesSelector;\n if (fn) {\n return (/**\n * @param {?} element\n * @param {?} selector\n * @return {?}\n */\n (element, selector) => fn.apply(element, [selector]));\n }\n else {\n return _matches;\n }\n }\n }))();\n _query = (/**\n * @param {?} element\n * @param {?} selector\n * @param {?} multi\n * @return {?}\n */\n (element, selector, multi) => {\n /** @type {?} */\n let results = [];\n if (multi) {\n results.push(...element.querySelectorAll(selector));\n }\n else {\n /** @type {?} */\n const elm = element.querySelector(selector);\n if (elm) {\n results.push(elm);\n }\n }\n return results;\n });\n}\n/**\n * @param {?} prop\n * @return {?}\n */\nfunction containsVendorPrefix(prop) {\n // Webkit is the only real popular vendor prefix nowadays\n // cc: http://shouldiprefix.com/\n return prop.substring(1, 6) == 'ebkit'; // webkit or Webkit\n}\n/** @type {?} */\nlet _CACHED_BODY = null;\n/** @type {?} */\nlet _IS_WEBKIT = false;\n/**\n * @param {?} prop\n * @return {?}\n */\nfunction validateStyleProperty(prop) {\n if (!_CACHED_BODY) {\n _CACHED_BODY = getBodyNode() || {};\n _IS_WEBKIT = (/** @type {?} */ (_CACHED_BODY)).style ? ('WebkitAppearance' in (/** @type {?} */ (_CACHED_BODY)).style) : false;\n }\n /** @type {?} */\n let result = true;\n if ((/** @type {?} */ (_CACHED_BODY)).style && !containsVendorPrefix(prop)) {\n result = prop in (/** @type {?} */ (_CACHED_BODY)).style;\n if (!result && _IS_WEBKIT) {\n /** @type {?} */\n const camelProp = 'Webkit' + prop.charAt(0).toUpperCase() + prop.substr(1);\n result = camelProp in (/** @type {?} */ (_CACHED_BODY)).style;\n }\n }\n return result;\n}\n/**\n * @return {?}\n */\nfunction getBodyNode() {\n if (typeof document != 'undefined') {\n return document.body;\n }\n return null;\n}\n/** @type {?} */\nconst matchesElement = _matches;\n/** @type {?} */\nconst containsElement = _contains;\n/** @type {?} */\nconst invokeQuery = _query;\n/**\n * @param {?} object\n * @return {?}\n */\nfunction hypenatePropsObject(object) {\n /** @type {?} */\n const newObj = {};\n Object.keys(object).forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => {\n /** @type {?} */\n const newProp = prop.replace(/([a-z])([A-Z])/g, '$1-$2');\n newObj[newProp] = object[prop];\n }));\n return newObj;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/browser/src/render/animation_driver.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * \\@publicApi\n */\nclass NoopAnimationDriver {\n /**\n * @param {?} prop\n * @return {?}\n */\n validateStyleProperty(prop) { return validateStyleProperty(prop); }\n /**\n * @param {?} element\n * @param {?} selector\n * @return {?}\n */\n matchesElement(element, selector) {\n return matchesElement(element, selector);\n }\n /**\n * @param {?} elm1\n * @param {?} elm2\n * @return {?}\n */\n containsElement(elm1, elm2) { return containsElement(elm1, elm2); }\n /**\n * @param {?} element\n * @param {?} selector\n * @param {?} multi\n * @return {?}\n */\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n /**\n * @param {?} element\n * @param {?} prop\n * @param {?=} defaultValue\n * @return {?}\n */\n computeStyle(element, prop, defaultValue) {\n return defaultValue || '';\n }\n /**\n * @param {?} element\n * @param {?} keyframes\n * @param {?} duration\n * @param {?} delay\n * @param {?} easing\n * @param {?=} previousPlayers\n * @param {?=} scrubberAccessRequested\n * @return {?}\n */\n animate(element, keyframes, duration, delay, easing, previousPlayers = [], scrubberAccessRequested) {\n return new NoopAnimationPlayer(duration, delay);\n }\n}\nNoopAnimationDriver.decorators = [\n { type: Injectable }\n];\n/**\n * \\@publicApi\n * @abstract\n */\nclass AnimationDriver {\n}\nAnimationDriver.NOOP = new NoopAnimationDriver();\nif (false) {\n /** @type {?} */\n AnimationDriver.NOOP;\n /**\n * @abstract\n * @param {?} prop\n * @return {?}\n */\n AnimationDriver.prototype.validateStyleProperty = function (prop) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} selector\n * @return {?}\n */\n AnimationDriver.prototype.matchesElement = function (element, selector) { };\n /**\n * @abstract\n * @param {?} elm1\n * @param {?} elm2\n * @return {?}\n */\n AnimationDriver.prototype.containsElement = function (elm1, elm2) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} selector\n * @param {?} multi\n * @return {?}\n */\n AnimationDriver.prototype.query = function (element, selector, multi) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} prop\n * @param {?=} defaultValue\n * @return {?}\n */\n AnimationDriver.prototype.computeStyle = function (element, prop, defaultValue) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} keyframes\n * @param {?} duration\n * @param {?} delay\n * @param {?=} easing\n * @param {?=} previousPlayers\n * @param {?=} scrubberAccessRequested\n * @return {?}\n */\n AnimationDriver.prototype.animate = function (element, keyframes, duration, delay, easing, previousPlayers, scrubberAccessRequested) { };\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/browser/src/util.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst ONE_SECOND = 1000;\n/** @type {?} */\nconst SUBSTITUTION_EXPR_START = '{{';\n/** @type {?} */\nconst SUBSTITUTION_EXPR_END = '}}';\n/** @type {?} */\nconst ENTER_CLASSNAME = 'ng-enter';\n/** @type {?} */\nconst LEAVE_CLASSNAME = 'ng-leave';\n/** @type {?} */\nconst ENTER_SELECTOR = '.ng-enter';\n/** @type {?} */\nconst LEAVE_SELECTOR = '.ng-leave';\n/** @type {?} */\nconst NG_TRIGGER_CLASSNAME = 'ng-trigger';\n/** @type {?} */\nconst NG_TRIGGER_SELECTOR = '.ng-trigger';\n/** @type {?} */\nconst NG_ANIMATING_CLASSNAME = 'ng-animating';\n/** @type {?} */\nconst NG_ANIMATING_SELECTOR = '.ng-animating';\n/**\n * @param {?} value\n * @return {?}\n */\nfunction resolveTimingValue(value) {\n if (typeof value == 'number')\n return value;\n /** @type {?} */\n const matches = value.match(/^(-?[\\.\\d]+)(m?s)/);\n if (!matches || matches.length < 2)\n return 0;\n return _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n}\n/**\n * @param {?} value\n * @param {?} unit\n * @return {?}\n */\nfunction _convertTimeValueToMS(value, unit) {\n switch (unit) {\n case 's':\n return value * ONE_SECOND;\n default: // ms or something else\n return value;\n }\n}\n/**\n * @param {?} timings\n * @param {?} errors\n * @param {?=} allowNegativeValues\n * @return {?}\n */\nfunction resolveTiming(timings, errors, allowNegativeValues) {\n return timings.hasOwnProperty('duration') ?\n (/** @type {?} */ (timings)) :\n parseTimeExpression((/** @type {?} */ (timings)), errors, allowNegativeValues);\n}\n/**\n * @param {?} exp\n * @param {?} errors\n * @param {?=} allowNegativeValues\n * @return {?}\n */\nfunction parseTimeExpression(exp, errors, allowNegativeValues) {\n /** @type {?} */\n const regex = /^(-?[\\.\\d]+)(m?s)(?:\\s+(-?[\\.\\d]+)(m?s))?(?:\\s+([-a-z]+(?:\\(.+?\\))?))?$/i;\n /** @type {?} */\n let duration;\n /** @type {?} */\n let delay = 0;\n /** @type {?} */\n let easing = '';\n if (typeof exp === 'string') {\n /** @type {?} */\n const matches = exp.match(regex);\n if (matches === null) {\n errors.push(`The provided timing value \"${exp}\" is invalid.`);\n return { duration: 0, delay: 0, easing: '' };\n }\n duration = _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n /** @type {?} */\n const delayMatch = matches[3];\n if (delayMatch != null) {\n delay = _convertTimeValueToMS(parseFloat(delayMatch), matches[4]);\n }\n /** @type {?} */\n const easingVal = matches[5];\n if (easingVal) {\n easing = easingVal;\n }\n }\n else {\n duration = exp;\n }\n if (!allowNegativeValues) {\n /** @type {?} */\n let containsErrors = false;\n /** @type {?} */\n let startIndex = errors.length;\n if (duration < 0) {\n errors.push(`Duration values below 0 are not allowed for this animation step.`);\n containsErrors = true;\n }\n if (delay < 0) {\n errors.push(`Delay values below 0 are not allowed for this animation step.`);\n containsErrors = true;\n }\n if (containsErrors) {\n errors.splice(startIndex, 0, `The provided timing value \"${exp}\" is invalid.`);\n }\n }\n return { duration, delay, easing };\n}\n/**\n * @param {?} obj\n * @param {?=} destination\n * @return {?}\n */\nfunction copyObj(obj, destination = {}) {\n Object.keys(obj).forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => { destination[prop] = obj[prop]; }));\n return destination;\n}\n/**\n * @param {?} styles\n * @return {?}\n */\nfunction normalizeStyles(styles) {\n /** @type {?} */\n const normalizedStyles = {};\n if (Array.isArray(styles)) {\n styles.forEach((/**\n * @param {?} data\n * @return {?}\n */\n data => copyStyles(data, false, normalizedStyles)));\n }\n else {\n copyStyles(styles, false, normalizedStyles);\n }\n return normalizedStyles;\n}\n/**\n * @param {?} styles\n * @param {?} readPrototype\n * @param {?=} destination\n * @return {?}\n */\nfunction copyStyles(styles, readPrototype, destination = {}) {\n if (readPrototype) {\n // we make use of a for-in loop so that the\n // prototypically inherited properties are\n // revealed from the backFill map\n for (let prop in styles) {\n destination[prop] = styles[prop];\n }\n }\n else {\n copyObj(styles, destination);\n }\n return destination;\n}\n/**\n * @param {?} element\n * @param {?} key\n * @param {?} value\n * @return {?}\n */\nfunction getStyleAttributeString(element, key, value) {\n // Return the key-value pair string to be added to the style attribute for the\n // given CSS style key.\n if (value) {\n return key + ':' + value + ';';\n }\n else {\n return '';\n }\n}\n/**\n * @param {?} element\n * @return {?}\n */\nfunction writeStyleAttribute(element) {\n // Read the style property of the element and manually reflect it to the\n // style attribute. This is needed because Domino on platform-server doesn't\n // understand the full set of allowed CSS properties and doesn't reflect some\n // of them automatically.\n /** @type {?} */\n let styleAttrValue = '';\n for (let i = 0; i < element.style.length; i++) {\n /** @type {?} */\n const key = element.style.item(i);\n styleAttrValue += getStyleAttributeString(element, key, element.style.getPropertyValue(key));\n }\n for (const key in element.style) {\n // Skip internal Domino properties that don't need to be reflected.\n if (!element.style.hasOwnProperty(key) || key.startsWith('_')) {\n continue;\n }\n /** @type {?} */\n const dashKey = camelCaseToDashCase(key);\n styleAttrValue += getStyleAttributeString(element, dashKey, element.style[key]);\n }\n element.setAttribute('style', styleAttrValue);\n}\n/**\n * @param {?} element\n * @param {?} styles\n * @param {?=} formerStyles\n * @return {?}\n */\nfunction setStyles(element, styles, formerStyles) {\n if (element['style']) {\n Object.keys(styles).forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => {\n /** @type {?} */\n const camelProp = dashCaseToCamelCase(prop);\n if (formerStyles && !formerStyles.hasOwnProperty(prop)) {\n formerStyles[prop] = element.style[camelProp];\n }\n element.style[camelProp] = styles[prop];\n }));\n // On the server set the 'style' attribute since it's not automatically reflected.\n if (isNode()) {\n writeStyleAttribute(element);\n }\n }\n}\n/**\n * @param {?} element\n * @param {?} styles\n * @return {?}\n */\nfunction eraseStyles(element, styles) {\n if (element['style']) {\n Object.keys(styles).forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => {\n /** @type {?} */\n const camelProp = dashCaseToCamelCase(prop);\n element.style[camelProp] = '';\n }));\n // On the server set the 'style' attribute since it's not automatically reflected.\n if (isNode()) {\n writeStyleAttribute(element);\n }\n }\n}\n/**\n * @param {?} steps\n * @return {?}\n */\nfunction normalizeAnimationEntry(steps) {\n if (Array.isArray(steps)) {\n if (steps.length == 1)\n return steps[0];\n return sequence(steps);\n }\n return (/** @type {?} */ (steps));\n}\n/**\n * @param {?} value\n * @param {?} options\n * @param {?} errors\n * @return {?}\n */\nfunction validateStyleParams(value, options, errors) {\n /** @type {?} */\n const params = options.params || {};\n /** @type {?} */\n const matches = extractStyleParams(value);\n if (matches.length) {\n matches.forEach((/**\n * @param {?} varName\n * @return {?}\n */\n varName => {\n if (!params.hasOwnProperty(varName)) {\n errors.push(`Unable to resolve the local animation param ${varName} in the given list of values`);\n }\n }));\n }\n}\n/** @type {?} */\nconst PARAM_REGEX = new RegExp(`${SUBSTITUTION_EXPR_START}\\\\s*(.+?)\\\\s*${SUBSTITUTION_EXPR_END}`, 'g');\n/**\n * @param {?} value\n * @return {?}\n */\nfunction extractStyleParams(value) {\n /** @type {?} */\n let params = [];\n if (typeof value === 'string') {\n /** @type {?} */\n let match;\n while (match = PARAM_REGEX.exec(value)) {\n params.push((/** @type {?} */ (match[1])));\n }\n PARAM_REGEX.lastIndex = 0;\n }\n return params;\n}\n/**\n * @param {?} value\n * @param {?} params\n * @param {?} errors\n * @return {?}\n */\nfunction interpolateParams(value, params, errors) {\n /** @type {?} */\n const original = value.toString();\n /** @type {?} */\n const str = original.replace(PARAM_REGEX, (/**\n * @param {?} _\n * @param {?} varName\n * @return {?}\n */\n (_, varName) => {\n /** @type {?} */\n let localVal = params[varName];\n // this means that the value was never overridden by the data passed in by the user\n if (!params.hasOwnProperty(varName)) {\n errors.push(`Please provide a value for the animation param ${varName}`);\n localVal = '';\n }\n return localVal.toString();\n }));\n // we do this to assert that numeric values stay as they are\n return str == original ? value : str;\n}\n/**\n * @param {?} iterator\n * @return {?}\n */\nfunction iteratorToArray(iterator) {\n /** @type {?} */\n const arr = [];\n /** @type {?} */\n let item = iterator.next();\n while (!item.done) {\n arr.push(item.value);\n item = iterator.next();\n }\n return arr;\n}\n/**\n * @param {?} source\n * @param {?} destination\n * @return {?}\n */\nfunction mergeAnimationOptions(source, destination) {\n if (source.params) {\n /** @type {?} */\n const p0 = source.params;\n if (!destination.params) {\n destination.params = {};\n }\n /** @type {?} */\n const p1 = destination.params;\n Object.keys(p0).forEach((/**\n * @param {?} param\n * @return {?}\n */\n param => {\n if (!p1.hasOwnProperty(param)) {\n p1[param] = p0[param];\n }\n }));\n }\n return destination;\n}\n/** @type {?} */\nconst DASH_CASE_REGEXP = /-+([a-z0-9])/g;\n/**\n * @param {?} input\n * @return {?}\n */\nfunction dashCaseToCamelCase(input) {\n return input.replace(DASH_CASE_REGEXP, (/**\n * @param {...?} m\n * @return {?}\n */\n (...m) => m[1].toUpperCase()));\n}\n/**\n * @param {?} input\n * @return {?}\n */\nfunction camelCaseToDashCase(input) {\n return input.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n/**\n * @param {?} duration\n * @param {?} delay\n * @return {?}\n */\nfunction allowPreviousPlayerStylesMerge(duration, delay) {\n return duration === 0 || delay === 0;\n}\n/**\n * @param {?} element\n * @param {?} keyframes\n * @param {?} previousStyles\n * @return {?}\n */\nfunction balancePreviousStylesIntoKeyframes(element, keyframes, previousStyles) {\n /** @type {?} */\n const previousStyleProps = Object.keys(previousStyles);\n if (previousStyleProps.length && keyframes.length) {\n /** @type {?} */\n let startingKeyframe = keyframes[0];\n /** @type {?} */\n let missingStyleProps = [];\n previousStyleProps.forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => {\n if (!startingKeyframe.hasOwnProperty(prop)) {\n missingStyleProps.push(prop);\n }\n startingKeyframe[prop] = previousStyles[prop];\n }));\n if (missingStyleProps.length) {\n // tslint:disable-next-line\n for (var i = 1; i < keyframes.length; i++) {\n /** @type {?} */\n let kf = keyframes[i];\n missingStyleProps.forEach((/**\n * @param {?} prop\n * @return {?}\n */\n function (prop) { kf[prop] = computeStyle(element, prop); }));\n }\n }\n }\n return keyframes;\n}\n/**\n * @param {?} visitor\n * @param {?} node\n * @param {?} context\n * @return {?}\n */\nfunction visitDslNode(visitor, node, context) {\n switch (node.type) {\n case 7 /* Trigger */:\n return visitor.visitTrigger(node, context);\n case 0 /* State */:\n return visitor.visitState(node, context);\n case 1 /* Transition */:\n return visitor.visitTransition(node, context);\n case 2 /* Sequence */:\n return visitor.visitSequence(node, context);\n case 3 /* Group */:\n return visitor.visitGroup(node, context);\n case 4 /* Animate */:\n return visitor.visitAnimate(node, context);\n case 5 /* Keyframes */:\n return visitor.visitKeyframes(node, context);\n case 6 /* Style */:\n return visitor.visitStyle(node, context);\n case 8 /* Reference */:\n return visitor.visitReference(node, context);\n case 9 /* AnimateChild */:\n return visitor.visitAnimateChild(node, context);\n case 10 /* AnimateRef */:\n return visitor.visitAnimateRef(node, context);\n case 11 /* Query */:\n return visitor.visitQuery(node, context);\n case 12 /* Stagger */:\n return visitor.visitStagger(node, context);\n default:\n throw new Error(`Unable to resolve animation metadata node #${node.type}`);\n }\n}\n/**\n * @param {?} element\n * @param {?} prop\n * @return {?}\n */\nfunction computeStyle(element, prop) {\n return ((/** @type {?} */ (window.getComputedStyle(element))))[prop];\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/browser/src/dsl/animation_transition_expr.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n * @type {?}\n */\nconst ANY_STATE = '*';\n/**\n * @param {?} transitionValue\n * @param {?} errors\n * @return {?}\n */\nfunction parseTransitionExpr(transitionValue, errors) {\n /** @type {?} */\n const expressions = [];\n if (typeof transitionValue == 'string') {\n transitionValue.split(/\\s*,\\s*/).forEach((/**\n * @param {?} str\n * @return {?}\n */\n str => parseInnerTransitionStr(str, expressions, errors)));\n }\n else {\n expressions.push((/** @type {?} */ (transitionValue)));\n }\n return expressions;\n}\n/**\n * @param {?} eventStr\n * @param {?} expressions\n * @param {?} errors\n * @return {?}\n */\nfunction parseInnerTransitionStr(eventStr, expressions, errors) {\n if (eventStr[0] == ':') {\n /** @type {?} */\n const result = parseAnimationAlias(eventStr, errors);\n if (typeof result == 'function') {\n expressions.push(result);\n return;\n }\n eventStr = result;\n }\n /** @type {?} */\n const match = eventStr.match(/^(\\*|[-\\w]+)\\s*()\\s*(\\*|[-\\w]+)$/);\n if (match == null || match.length < 4) {\n errors.push(`The provided transition expression \"${eventStr}\" is not supported`);\n return expressions;\n }\n /** @type {?} */\n const fromState = match[1];\n /** @type {?} */\n const separator = match[2];\n /** @type {?} */\n const toState = match[3];\n expressions.push(makeLambdaFromStates(fromState, toState));\n /** @type {?} */\n const isFullAnyStateExpr = fromState == ANY_STATE && toState == ANY_STATE;\n if (separator[0] == '<' && !isFullAnyStateExpr) {\n expressions.push(makeLambdaFromStates(toState, fromState));\n }\n}\n/**\n * @param {?} alias\n * @param {?} errors\n * @return {?}\n */\nfunction parseAnimationAlias(alias, errors) {\n switch (alias) {\n case ':enter':\n return 'void => *';\n case ':leave':\n return '* => void';\n case ':increment':\n return (/**\n * @param {?} fromState\n * @param {?} toState\n * @return {?}\n */\n (fromState, toState) => parseFloat(toState) > parseFloat(fromState));\n case ':decrement':\n return (/**\n * @param {?} fromState\n * @param {?} toState\n * @return {?}\n */\n (fromState, toState) => parseFloat(toState) < parseFloat(fromState));\n default:\n errors.push(`The transition alias value \"${alias}\" is not supported`);\n return '* => *';\n }\n}\n// DO NOT REFACTOR ... keep the follow set instantiations\n// with the values intact (closure compiler for some reason\n// removes follow-up lines that add the values outside of\n// the constructor...\n/** @type {?} */\nconst TRUE_BOOLEAN_VALUES = new Set(['true', '1']);\n/** @type {?} */\nconst FALSE_BOOLEAN_VALUES = new Set(['false', '0']);\n/**\n * @param {?} lhs\n * @param {?} rhs\n * @return {?}\n */\nfunction makeLambdaFromStates(lhs, rhs) {\n /** @type {?} */\n const LHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(lhs) || FALSE_BOOLEAN_VALUES.has(lhs);\n /** @type {?} */\n const RHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(rhs) || FALSE_BOOLEAN_VALUES.has(rhs);\n return (/**\n * @param {?} fromState\n * @param {?} toState\n * @return {?}\n */\n (fromState, toState) => {\n /** @type {?} */\n let lhsMatch = lhs == ANY_STATE || lhs == fromState;\n /** @type {?} */\n let rhsMatch = rhs == ANY_STATE || rhs == toState;\n if (!lhsMatch && LHS_MATCH_BOOLEAN && typeof fromState === 'boolean') {\n lhsMatch = fromState ? TRUE_BOOLEAN_VALUES.has(lhs) : FALSE_BOOLEAN_VALUES.has(lhs);\n }\n if (!rhsMatch && RHS_MATCH_BOOLEAN && typeof toState === 'boolean') {\n rhsMatch = toState ? TRUE_BOOLEAN_VALUES.has(rhs) : FALSE_BOOLEAN_VALUES.has(rhs);\n }\n return lhsMatch && rhsMatch;\n });\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/browser/src/dsl/animation_ast_builder.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst SELF_TOKEN = ':self';\n/** @type {?} */\nconst SELF_TOKEN_REGEX = new RegExp(`\\s*${SELF_TOKEN}\\s*,?`, 'g');\n/*\n * [Validation]\n * The visitor code below will traverse the animation AST generated by the animation verb functions\n * (the output is a tree of objects) and attempt to perform a series of validations on the data. The\n * following corner-cases will be validated:\n *\n * 1. Overlap of animations\n * Given that a CSS property cannot be animated in more than one place at the same time, it's\n * important that this behavior is detected and validated. The way in which this occurs is that\n * each time a style property is examined, a string-map containing the property will be updated with\n * the start and end times for when the property is used within an animation step.\n *\n * If there are two or more parallel animations that are currently running (these are invoked by the\n * group()) on the same element then the validator will throw an error. Since the start/end timing\n * values are collected for each property then if the current animation step is animating the same\n * property and its timing values fall anywhere into the window of time that the property is\n * currently being animated within then this is what causes an error.\n *\n * 2. Timing values\n * The validator will validate to see if a timing value of `duration delay easing` or\n * `durationNumber` is valid or not.\n *\n * (note that upon validation the code below will replace the timing data with an object containing\n * {duration,delay,easing}.\n *\n * 3. Offset Validation\n * Each of the style() calls are allowed to have an offset value when placed inside of keyframes().\n * Offsets within keyframes() are considered valid when:\n *\n * - No offsets are used at all\n * - Each style() entry contains an offset value\n * - Each offset is between 0 and 1\n * - Each offset is greater to or equal than the previous one\n *\n * Otherwise an error will be thrown.\n */\n/**\n * @param {?} driver\n * @param {?} metadata\n * @param {?} errors\n * @return {?}\n */\nfunction buildAnimationAst(driver, metadata, errors) {\n return new AnimationAstBuilderVisitor(driver).build(metadata, errors);\n}\n/** @type {?} */\nconst ROOT_SELECTOR = '';\nclass AnimationAstBuilderVisitor {\n /**\n * @param {?} _driver\n */\n constructor(_driver) {\n this._driver = _driver;\n }\n /**\n * @param {?} metadata\n * @param {?} errors\n * @return {?}\n */\n build(metadata, errors) {\n /** @type {?} */\n const context = new AnimationAstBuilderContext(errors);\n this._resetContextStyleTimingState(context);\n return (/** @type {?} */ (visitDslNode(this, normalizeAnimationEntry(metadata), context)));\n }\n /**\n * @private\n * @param {?} context\n * @return {?}\n */\n _resetContextStyleTimingState(context) {\n context.currentQuerySelector = ROOT_SELECTOR;\n context.collectedStyles = {};\n context.collectedStyles[ROOT_SELECTOR] = {};\n context.currentTime = 0;\n }\n /**\n * @param {?} metadata\n * @param {?} context\n * @return {?}\n */\n visitTrigger(metadata, context) {\n /** @type {?} */\n let queryCount = context.queryCount = 0;\n /** @type {?} */\n let depCount = context.depCount = 0;\n /** @type {?} */\n const states = [];\n /** @type {?} */\n const transitions = [];\n if (metadata.name.charAt(0) == '@') {\n context.errors.push('animation triggers cannot be prefixed with an `@` sign (e.g. trigger(\\'@foo\\', [...]))');\n }\n metadata.definitions.forEach((/**\n * @param {?} def\n * @return {?}\n */\n def => {\n this._resetContextStyleTimingState(context);\n if (def.type == 0 /* State */) {\n /** @type {?} */\n const stateDef = (/** @type {?} */ (def));\n /** @type {?} */\n const name = stateDef.name;\n name.toString().split(/\\s*,\\s*/).forEach((/**\n * @param {?} n\n * @return {?}\n */\n n => {\n stateDef.name = n;\n states.push(this.visitState(stateDef, context));\n }));\n stateDef.name = name;\n }\n else if (def.type == 1 /* Transition */) {\n /** @type {?} */\n const transition = this.visitTransition((/** @type {?} */ (def)), context);\n queryCount += transition.queryCount;\n depCount += transition.depCount;\n transitions.push(transition);\n }\n else {\n context.errors.push('only state() and transition() definitions can sit inside of a trigger()');\n }\n }));\n return {\n type: 7 /* Trigger */,\n name: metadata.name, states, transitions, queryCount, depCount,\n options: null\n };\n }\n /**\n * @param {?} metadata\n * @param {?} context\n * @return {?}\n */\n visitState(metadata, context) {\n /** @type {?} */\n const styleAst = this.visitStyle(metadata.styles, context);\n /** @type {?} */\n const astParams = (metadata.options && metadata.options.params) || null;\n if (styleAst.containsDynamicStyles) {\n /** @type {?} */\n const missingSubs = new Set();\n /** @type {?} */\n const params = astParams || {};\n styleAst.styles.forEach((/**\n * @param {?} value\n * @return {?}\n */\n value => {\n if (isObject(value)) {\n /** @type {?} */\n const stylesObj = (/** @type {?} */ (value));\n Object.keys(stylesObj).forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => {\n extractStyleParams(stylesObj[prop]).forEach((/**\n * @param {?} sub\n * @return {?}\n */\n sub => {\n if (!params.hasOwnProperty(sub)) {\n missingSubs.add(sub);\n }\n }));\n }));\n }\n }));\n if (missingSubs.size) {\n /** @type {?} */\n const missingSubsArr = iteratorToArray(missingSubs.values());\n context.errors.push(`state(\"${metadata.name}\", ...) must define default values for all the following style substitutions: ${missingSubsArr.join(', ')}`);\n }\n }\n return {\n type: 0 /* State */,\n name: metadata.name,\n style: styleAst,\n options: astParams ? { params: astParams } : null\n };\n }\n /**\n * @param {?} metadata\n * @param {?} context\n * @return {?}\n */\n visitTransition(metadata, context) {\n context.queryCount = 0;\n context.depCount = 0;\n /** @type {?} */\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n /** @type {?} */\n const matchers = parseTransitionExpr(metadata.expr, context.errors);\n return {\n type: 1 /* Transition */,\n matchers,\n animation,\n queryCount: context.queryCount,\n depCount: context.depCount,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n /**\n * @param {?} metadata\n * @param {?} context\n * @return {?}\n */\n visitSequence(metadata, context) {\n return {\n type: 2 /* Sequence */,\n steps: metadata.steps.map((/**\n * @param {?} s\n * @return {?}\n */\n s => visitDslNode(this, s, context))),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n /**\n * @param {?} metadata\n * @param {?} context\n * @return {?}\n */\n visitGroup(metadata, context) {\n /** @type {?} */\n const currentTime = context.currentTime;\n /** @type {?} */\n let furthestTime = 0;\n /** @type {?} */\n const steps = metadata.steps.map((/**\n * @param {?} step\n * @return {?}\n */\n step => {\n context.currentTime = currentTime;\n /** @type {?} */\n const innerAst = visitDslNode(this, step, context);\n furthestTime = Math.max(furthestTime, context.currentTime);\n return innerAst;\n }));\n context.currentTime = furthestTime;\n return {\n type: 3 /* Group */,\n steps,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n /**\n * @param {?} metadata\n * @param {?} context\n * @return {?}\n */\n visitAnimate(metadata, context) {\n /** @type {?} */\n const timingAst = constructTimingAst(metadata.timings, context.errors);\n context.currentAnimateTimings = timingAst;\n /** @type {?} */\n let styleAst;\n /** @type {?} */\n let styleMetadata = metadata.styles ? metadata.styles : style({});\n if (styleMetadata.type == 5 /* Keyframes */) {\n styleAst = this.visitKeyframes((/** @type {?} */ (styleMetadata)), context);\n }\n else {\n /** @type {?} */\n let styleMetadata = (/** @type {?} */ (metadata.styles));\n /** @type {?} */\n let isEmpty = false;\n if (!styleMetadata) {\n isEmpty = true;\n /** @type {?} */\n const newStyleData = {};\n if (timingAst.easing) {\n newStyleData['easing'] = timingAst.easing;\n }\n styleMetadata = style(newStyleData);\n }\n context.currentTime += timingAst.duration + timingAst.delay;\n /** @type {?} */\n const _styleAst = this.visitStyle(styleMetadata, context);\n _styleAst.isEmptyStep = isEmpty;\n styleAst = _styleAst;\n }\n context.currentAnimateTimings = null;\n return {\n type: 4 /* Animate */,\n timings: timingAst,\n style: styleAst,\n options: null\n };\n }\n /**\n * @param {?} metadata\n * @param {?} context\n * @return {?}\n */\n visitStyle(metadata, context) {\n /** @type {?} */\n const ast = this._makeStyleAst(metadata, context);\n this._validateStyleAst(ast, context);\n return ast;\n }\n /**\n * @private\n * @param {?} metadata\n * @param {?} context\n * @return {?}\n */\n _makeStyleAst(metadata, context) {\n /** @type {?} */\n const styles = [];\n if (Array.isArray(metadata.styles)) {\n ((/** @type {?} */ (metadata.styles))).forEach((/**\n * @param {?} styleTuple\n * @return {?}\n */\n styleTuple => {\n if (typeof styleTuple == 'string') {\n if (styleTuple == AUTO_STYLE) {\n styles.push(styleTuple);\n }\n else {\n context.errors.push(`The provided style string value ${styleTuple} is not allowed.`);\n }\n }\n else {\n styles.push(styleTuple);\n }\n }));\n }\n else {\n styles.push(metadata.styles);\n }\n /** @type {?} */\n let containsDynamicStyles = false;\n /** @type {?} */\n let collectedEasing = null;\n styles.forEach((/**\n * @param {?} styleData\n * @return {?}\n */\n styleData => {\n if (isObject(styleData)) {\n /** @type {?} */\n const styleMap = (/** @type {?} */ (styleData));\n /** @type {?} */\n const easing = styleMap['easing'];\n if (easing) {\n collectedEasing = (/** @type {?} */ (easing));\n delete styleMap['easing'];\n }\n if (!containsDynamicStyles) {\n for (let prop in styleMap) {\n /** @type {?} */\n const value = styleMap[prop];\n if (value.toString().indexOf(SUBSTITUTION_EXPR_START) >= 0) {\n containsDynamicStyles = true;\n break;\n }\n }\n }\n }\n }));\n return {\n type: 6 /* Style */,\n styles,\n easing: collectedEasing,\n offset: metadata.offset, containsDynamicStyles,\n options: null\n };\n }\n /**\n * @private\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n _validateStyleAst(ast, context) {\n /** @type {?} */\n const timings = context.currentAnimateTimings;\n /** @type {?} */\n let endTime = context.currentTime;\n /** @type {?} */\n let startTime = context.currentTime;\n if (timings && startTime > 0) {\n startTime -= timings.duration + timings.delay;\n }\n ast.styles.forEach((/**\n * @param {?} tuple\n * @return {?}\n */\n tuple => {\n if (typeof tuple == 'string')\n return;\n Object.keys(tuple).forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => {\n if (!this._driver.validateStyleProperty(prop)) {\n context.errors.push(`The provided animation property \"${prop}\" is not a supported CSS property for animations`);\n return;\n }\n /** @type {?} */\n const collectedStyles = context.collectedStyles[(/** @type {?} */ (context.currentQuerySelector))];\n /** @type {?} */\n const collectedEntry = collectedStyles[prop];\n /** @type {?} */\n let updateCollectedStyle = true;\n if (collectedEntry) {\n if (startTime != endTime && startTime >= collectedEntry.startTime &&\n endTime <= collectedEntry.endTime) {\n context.errors.push(`The CSS property \"${prop}\" that exists between the times of \"${collectedEntry.startTime}ms\" and \"${collectedEntry.endTime}ms\" is also being animated in a parallel animation between the times of \"${startTime}ms\" and \"${endTime}ms\"`);\n updateCollectedStyle = false;\n }\n // we always choose the smaller start time value since we\n // want to have a record of the entire animation window where\n // the style property is being animated in between\n startTime = collectedEntry.startTime;\n }\n if (updateCollectedStyle) {\n collectedStyles[prop] = { startTime, endTime };\n }\n if (context.options) {\n validateStyleParams(tuple[prop], context.options, context.errors);\n }\n }));\n }));\n }\n /**\n * @param {?} metadata\n * @param {?} context\n * @return {?}\n */\n visitKeyframes(metadata, context) {\n /** @type {?} */\n const ast = { type: 5 /* Keyframes */, styles: [], options: null };\n if (!context.currentAnimateTimings) {\n context.errors.push(`keyframes() must be placed inside of a call to animate()`);\n return ast;\n }\n /** @type {?} */\n const MAX_KEYFRAME_OFFSET = 1;\n /** @type {?} */\n let totalKeyframesWithOffsets = 0;\n /** @type {?} */\n const offsets = [];\n /** @type {?} */\n let offsetsOutOfOrder = false;\n /** @type {?} */\n let keyframesOutOfRange = false;\n /** @type {?} */\n let previousOffset = 0;\n /** @type {?} */\n const keyframes = metadata.steps.map((/**\n * @param {?} styles\n * @return {?}\n */\n styles => {\n /** @type {?} */\n const style = this._makeStyleAst(styles, context);\n /** @type {?} */\n let offsetVal = style.offset != null ? style.offset : consumeOffset(style.styles);\n /** @type {?} */\n let offset = 0;\n if (offsetVal != null) {\n totalKeyframesWithOffsets++;\n offset = style.offset = offsetVal;\n }\n keyframesOutOfRange = keyframesOutOfRange || offset < 0 || offset > 1;\n offsetsOutOfOrder = offsetsOutOfOrder || offset < previousOffset;\n previousOffset = offset;\n offsets.push(offset);\n return style;\n }));\n if (keyframesOutOfRange) {\n context.errors.push(`Please ensure that all keyframe offsets are between 0 and 1`);\n }\n if (offsetsOutOfOrder) {\n context.errors.push(`Please ensure that all keyframe offsets are in order`);\n }\n /** @type {?} */\n const length = metadata.steps.length;\n /** @type {?} */\n let generatedOffset = 0;\n if (totalKeyframesWithOffsets > 0 && totalKeyframesWithOffsets < length) {\n context.errors.push(`Not all style() steps within the declared keyframes() contain offsets`);\n }\n else if (totalKeyframesWithOffsets == 0) {\n generatedOffset = MAX_KEYFRAME_OFFSET / (length - 1);\n }\n /** @type {?} */\n const limit = length - 1;\n /** @type {?} */\n const currentTime = context.currentTime;\n /** @type {?} */\n const currentAnimateTimings = (/** @type {?} */ (context.currentAnimateTimings));\n /** @type {?} */\n const animateDuration = currentAnimateTimings.duration;\n keyframes.forEach((/**\n * @param {?} kf\n * @param {?} i\n * @return {?}\n */\n (kf, i) => {\n /** @type {?} */\n const offset = generatedOffset > 0 ? (i == limit ? 1 : (generatedOffset * i)) : offsets[i];\n /** @type {?} */\n const durationUpToThisFrame = offset * animateDuration;\n context.currentTime = currentTime + currentAnimateTimings.delay + durationUpToThisFrame;\n currentAnimateTimings.duration = durationUpToThisFrame;\n this._validateStyleAst(kf, context);\n kf.offset = offset;\n ast.styles.push(kf);\n }));\n return ast;\n }\n /**\n * @param {?} metadata\n * @param {?} context\n * @return {?}\n */\n visitReference(metadata, context) {\n return {\n type: 8 /* Reference */,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n /**\n * @param {?} metadata\n * @param {?} context\n * @return {?}\n */\n visitAnimateChild(metadata, context) {\n context.depCount++;\n return {\n type: 9 /* AnimateChild */,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n /**\n * @param {?} metadata\n * @param {?} context\n * @return {?}\n */\n visitAnimateRef(metadata, context) {\n return {\n type: 10 /* AnimateRef */,\n animation: this.visitReference(metadata.animation, context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n /**\n * @param {?} metadata\n * @param {?} context\n * @return {?}\n */\n visitQuery(metadata, context) {\n /** @type {?} */\n const parentSelector = (/** @type {?} */ (context.currentQuerySelector));\n /** @type {?} */\n const options = (/** @type {?} */ ((metadata.options || {})));\n context.queryCount++;\n context.currentQuery = metadata;\n const [selector, includeSelf] = normalizeSelector(metadata.selector);\n context.currentQuerySelector =\n parentSelector.length ? (parentSelector + ' ' + selector) : selector;\n getOrSetAsInMap(context.collectedStyles, context.currentQuerySelector, {});\n /** @type {?} */\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n context.currentQuery = null;\n context.currentQuerySelector = parentSelector;\n return {\n type: 11 /* Query */,\n selector,\n limit: options.limit || 0,\n optional: !!options.optional, includeSelf, animation,\n originalSelector: metadata.selector,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n /**\n * @param {?} metadata\n * @param {?} context\n * @return {?}\n */\n visitStagger(metadata, context) {\n if (!context.currentQuery) {\n context.errors.push(`stagger() can only be used inside of query()`);\n }\n /** @type {?} */\n const timings = metadata.timings === 'full' ?\n { duration: 0, delay: 0, easing: 'full' } :\n resolveTiming(metadata.timings, context.errors, true);\n return {\n type: 12 /* Stagger */,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context), timings,\n options: null\n };\n }\n}\nif (false) {\n /**\n * @type {?}\n * @private\n */\n AnimationAstBuilderVisitor.prototype._driver;\n}\n/**\n * @param {?} selector\n * @return {?}\n */\nfunction normalizeSelector(selector) {\n /** @type {?} */\n const hasAmpersand = selector.split(/\\s*,\\s*/).find((/**\n * @param {?} token\n * @return {?}\n */\n token => token == SELF_TOKEN)) ? true : false;\n if (hasAmpersand) {\n selector = selector.replace(SELF_TOKEN_REGEX, '');\n }\n // the :enter and :leave selectors are filled in at runtime during timeline building\n selector = selector.replace(/@\\*/g, NG_TRIGGER_SELECTOR)\n .replace(/@\\w+/g, (/**\n * @param {?} match\n * @return {?}\n */\n match => NG_TRIGGER_SELECTOR + '-' + match.substr(1)))\n .replace(/:animating/g, NG_ANIMATING_SELECTOR);\n return [selector, hasAmpersand];\n}\n/**\n * @param {?} obj\n * @return {?}\n */\nfunction normalizeParams(obj) {\n return obj ? copyObj(obj) : null;\n}\nclass AnimationAstBuilderContext {\n /**\n * @param {?} errors\n */\n constructor(errors) {\n this.errors = errors;\n this.queryCount = 0;\n this.depCount = 0;\n this.currentTransition = null;\n this.currentQuery = null;\n this.currentQuerySelector = null;\n this.currentAnimateTimings = null;\n this.currentTime = 0;\n this.collectedStyles = {};\n this.options = null;\n }\n}\nif (false) {\n /** @type {?} */\n AnimationAstBuilderContext.prototype.queryCount;\n /** @type {?} */\n AnimationAstBuilderContext.prototype.depCount;\n /** @type {?} */\n AnimationAstBuilderContext.prototype.currentTransition;\n /** @type {?} */\n AnimationAstBuilderContext.prototype.currentQuery;\n /** @type {?} */\n AnimationAstBuilderContext.prototype.currentQuerySelector;\n /** @type {?} */\n AnimationAstBuilderContext.prototype.currentAnimateTimings;\n /** @type {?} */\n AnimationAstBuilderContext.prototype.currentTime;\n /** @type {?} */\n AnimationAstBuilderContext.prototype.collectedStyles;\n /** @type {?} */\n AnimationAstBuilderContext.prototype.options;\n /** @type {?} */\n AnimationAstBuilderContext.prototype.errors;\n}\n/**\n * @param {?} styles\n * @return {?}\n */\nfunction consumeOffset(styles) {\n if (typeof styles == 'string')\n return null;\n /** @type {?} */\n let offset = null;\n if (Array.isArray(styles)) {\n styles.forEach((/**\n * @param {?} styleTuple\n * @return {?}\n */\n styleTuple => {\n if (isObject(styleTuple) && styleTuple.hasOwnProperty('offset')) {\n /** @type {?} */\n const obj = (/** @type {?} */ (styleTuple));\n offset = parseFloat((/** @type {?} */ (obj['offset'])));\n delete obj['offset'];\n }\n }));\n }\n else if (isObject(styles) && styles.hasOwnProperty('offset')) {\n /** @type {?} */\n const obj = styles;\n offset = parseFloat((/** @type {?} */ (obj['offset'])));\n delete obj['offset'];\n }\n return offset;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isObject(value) {\n return !Array.isArray(value) && typeof value == 'object';\n}\n/**\n * @param {?} value\n * @param {?} errors\n * @return {?}\n */\nfunction constructTimingAst(value, errors) {\n /** @type {?} */\n let timings = null;\n if (value.hasOwnProperty('duration')) {\n timings = (/** @type {?} */ (value));\n }\n else if (typeof value == 'number') {\n /** @type {?} */\n const duration = resolveTiming(value, errors).duration;\n return makeTimingAst(duration, 0, '');\n }\n /** @type {?} */\n const strValue = (/** @type {?} */ (value));\n /** @type {?} */\n const isDynamic = strValue.split(/\\s+/).some((/**\n * @param {?} v\n * @return {?}\n */\n v => v.charAt(0) == '{' && v.charAt(1) == '{'));\n if (isDynamic) {\n /** @type {?} */\n const ast = (/** @type {?} */ (makeTimingAst(0, 0, '')));\n ast.dynamic = true;\n ast.strValue = strValue;\n return (/** @type {?} */ (ast));\n }\n timings = timings || resolveTiming(strValue, errors);\n return makeTimingAst(timings.duration, timings.delay, timings.easing);\n}\n/**\n * @param {?} options\n * @return {?}\n */\nfunction normalizeAnimationOptions(options) {\n if (options) {\n options = copyObj(options);\n if (options['params']) {\n options['params'] = (/** @type {?} */ (normalizeParams(options['params'])));\n }\n }\n else {\n options = {};\n }\n return options;\n}\n/**\n * @param {?} duration\n * @param {?} delay\n * @param {?} easing\n * @return {?}\n */\nfunction makeTimingAst(duration, delay, easing) {\n return { duration, delay, easing };\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/browser/src/dsl/animation_timeline_instruction.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @record\n */\nfunction AnimationTimelineInstruction() { }\nif (false) {\n /** @type {?} */\n AnimationTimelineInstruction.prototype.element;\n /** @type {?} */\n AnimationTimelineInstruction.prototype.keyframes;\n /** @type {?} */\n AnimationTimelineInstruction.prototype.preStyleProps;\n /** @type {?} */\n AnimationTimelineInstruction.prototype.postStyleProps;\n /** @type {?} */\n AnimationTimelineInstruction.prototype.duration;\n /** @type {?} */\n AnimationTimelineInstruction.prototype.delay;\n /** @type {?} */\n AnimationTimelineInstruction.prototype.totalTime;\n /** @type {?} */\n AnimationTimelineInstruction.prototype.easing;\n /** @type {?|undefined} */\n AnimationTimelineInstruction.prototype.stretchStartingKeyframe;\n /** @type {?} */\n AnimationTimelineInstruction.prototype.subTimeline;\n}\n/**\n * @param {?} element\n * @param {?} keyframes\n * @param {?} preStyleProps\n * @param {?} postStyleProps\n * @param {?} duration\n * @param {?} delay\n * @param {?=} easing\n * @param {?=} subTimeline\n * @return {?}\n */\nfunction createTimelineInstruction(element, keyframes, preStyleProps, postStyleProps, duration, delay, easing = null, subTimeline = false) {\n return {\n type: 1 /* TimelineAnimation */,\n element,\n keyframes,\n preStyleProps,\n postStyleProps,\n duration,\n delay,\n totalTime: duration + delay, easing, subTimeline\n };\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/browser/src/dsl/element_instruction_map.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass ElementInstructionMap {\n constructor() {\n this._map = new Map();\n }\n /**\n * @param {?} element\n * @return {?}\n */\n consume(element) {\n /** @type {?} */\n let instructions = this._map.get(element);\n if (instructions) {\n this._map.delete(element);\n }\n else {\n instructions = [];\n }\n return instructions;\n }\n /**\n * @param {?} element\n * @param {?} instructions\n * @return {?}\n */\n append(element, instructions) {\n /** @type {?} */\n let existingInstructions = this._map.get(element);\n if (!existingInstructions) {\n this._map.set(element, existingInstructions = []);\n }\n existingInstructions.push(...instructions);\n }\n /**\n * @param {?} element\n * @return {?}\n */\n has(element) { return this._map.has(element); }\n /**\n * @return {?}\n */\n clear() { this._map.clear(); }\n}\nif (false) {\n /**\n * @type {?}\n * @private\n */\n ElementInstructionMap.prototype._map;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/browser/src/dsl/animation_timeline_builder.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst ONE_FRAME_IN_MILLISECONDS = 1;\n/** @type {?} */\nconst ENTER_TOKEN = ':enter';\n/** @type {?} */\nconst ENTER_TOKEN_REGEX = new RegExp(ENTER_TOKEN, 'g');\n/** @type {?} */\nconst LEAVE_TOKEN = ':leave';\n/** @type {?} */\nconst LEAVE_TOKEN_REGEX = new RegExp(LEAVE_TOKEN, 'g');\n/*\n * The code within this file aims to generate web-animations-compatible keyframes from Angular's\n * animation DSL code.\n *\n * The code below will be converted from:\n *\n * ```\n * sequence([\n * style({ opacity: 0 }),\n * animate(1000, style({ opacity: 0 }))\n * ])\n * ```\n *\n * To:\n * ```\n * keyframes = [{ opacity: 0, offset: 0 }, { opacity: 1, offset: 1 }]\n * duration = 1000\n * delay = 0\n * easing = ''\n * ```\n *\n * For this operation to cover the combination of animation verbs (style, animate, group, etc...) a\n * combination of prototypical inheritance, AST traversal and merge-sort-like algorithms are used.\n *\n * [AST Traversal]\n * Each of the animation verbs, when executed, will return an string-map object representing what\n * type of action it is (style, animate, group, etc...) and the data associated with it. This means\n * that when functional composition mix of these functions is evaluated (like in the example above)\n * then it will end up producing a tree of objects representing the animation itself.\n *\n * When this animation object tree is processed by the visitor code below it will visit each of the\n * verb statements within the visitor. And during each visit it will build the context of the\n * animation keyframes by interacting with the `TimelineBuilder`.\n *\n * [TimelineBuilder]\n * This class is responsible for tracking the styles and building a series of keyframe objects for a\n * timeline between a start and end time. The builder starts off with an initial timeline and each\n * time the AST comes across a `group()`, `keyframes()` or a combination of the two wihtin a\n * `sequence()` then it will generate a sub timeline for each step as well as a new one after\n * they are complete.\n *\n * As the AST is traversed, the timing state on each of the timelines will be incremented. If a sub\n * timeline was created (based on one of the cases above) then the parent timeline will attempt to\n * merge the styles used within the sub timelines into itself (only with group() this will happen).\n * This happens with a merge operation (much like how the merge works in mergesort) and it will only\n * copy the most recently used styles from the sub timelines into the parent timeline. This ensures\n * that if the styles are used later on in another phase of the animation then they will be the most\n * up-to-date values.\n *\n * [How Missing Styles Are Updated]\n * Each timeline has a `backFill` property which is responsible for filling in new styles into\n * already processed keyframes if a new style shows up later within the animation sequence.\n *\n * ```\n * sequence([\n * style({ width: 0 }),\n * animate(1000, style({ width: 100 })),\n * animate(1000, style({ width: 200 })),\n * animate(1000, style({ width: 300 }))\n * animate(1000, style({ width: 400, height: 400 })) // notice how `height` doesn't exist anywhere\n * else\n * ])\n * ```\n *\n * What is happening here is that the `height` value is added later in the sequence, but is missing\n * from all previous animation steps. Therefore when a keyframe is created it would also be missing\n * from all previous keyframes up until where it is first used. For the timeline keyframe generation\n * to properly fill in the style it will place the previous value (the value from the parent\n * timeline) or a default value of `*` into the backFill object. Given that each of the keyframe\n * styles are objects that prototypically inhert from the backFill object, this means that if a\n * value is added into the backFill then it will automatically propagate any missing values to all\n * keyframes. Therefore the missing `height` value will be properly filled into the already\n * processed keyframes.\n *\n * When a sub-timeline is created it will have its own backFill property. This is done so that\n * styles present within the sub-timeline do not accidentally seep into the previous/future timeline\n * keyframes\n *\n * (For prototypically-inherited contents to be detected a `for(i in obj)` loop must be used.)\n *\n * [Validation]\n * The code in this file is not responsible for validation. That functionality happens with within\n * the `AnimationValidatorVisitor` code.\n */\n/**\n * @param {?} driver\n * @param {?} rootElement\n * @param {?} ast\n * @param {?} enterClassName\n * @param {?} leaveClassName\n * @param {?=} startingStyles\n * @param {?=} finalStyles\n * @param {?=} options\n * @param {?=} subInstructions\n * @param {?=} errors\n * @return {?}\n */\nfunction buildAnimationTimelines(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles = {}, finalStyles = {}, options, subInstructions, errors = []) {\n return new AnimationTimelineBuilderVisitor().buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors);\n}\nclass AnimationTimelineBuilderVisitor {\n /**\n * @param {?} driver\n * @param {?} rootElement\n * @param {?} ast\n * @param {?} enterClassName\n * @param {?} leaveClassName\n * @param {?} startingStyles\n * @param {?} finalStyles\n * @param {?} options\n * @param {?=} subInstructions\n * @param {?=} errors\n * @return {?}\n */\n buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors = []) {\n subInstructions = subInstructions || new ElementInstructionMap();\n /** @type {?} */\n const context = new AnimationTimelineContext(driver, rootElement, subInstructions, enterClassName, leaveClassName, errors, []);\n context.options = options;\n context.currentTimeline.setStyles([startingStyles], null, context.errors, options);\n visitDslNode(this, ast, context);\n // this checks to see if an actual animation happened\n /** @type {?} */\n const timelines = context.timelines.filter((/**\n * @param {?} timeline\n * @return {?}\n */\n timeline => timeline.containsAnimation()));\n if (timelines.length && Object.keys(finalStyles).length) {\n /** @type {?} */\n const tl = timelines[timelines.length - 1];\n if (!tl.allowOnlyTimelineStyles()) {\n tl.setStyles([finalStyles], null, context.errors, options);\n }\n }\n return timelines.length ? timelines.map((/**\n * @param {?} timeline\n * @return {?}\n */\n timeline => timeline.buildKeyframes())) :\n [createTimelineInstruction(rootElement, [], [], [], 0, 0, '', false)];\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitTrigger(ast, context) {\n // these values are not visited in this AST\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitState(ast, context) {\n // these values are not visited in this AST\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitTransition(ast, context) {\n // these values are not visited in this AST\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitAnimateChild(ast, context) {\n /** @type {?} */\n const elementInstructions = context.subInstructions.consume(context.element);\n if (elementInstructions) {\n /** @type {?} */\n const innerContext = context.createSubContext(ast.options);\n /** @type {?} */\n const startTime = context.currentTimeline.currentTime;\n /** @type {?} */\n const endTime = this._visitSubInstructions(elementInstructions, innerContext, (/** @type {?} */ (innerContext.options)));\n if (startTime != endTime) {\n // we do this on the upper context because we created a sub context for\n // the sub child animations\n context.transformIntoNewTimeline(endTime);\n }\n }\n context.previousNode = ast;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitAnimateRef(ast, context) {\n /** @type {?} */\n const innerContext = context.createSubContext(ast.options);\n innerContext.transformIntoNewTimeline();\n this.visitReference(ast.animation, innerContext);\n context.transformIntoNewTimeline(innerContext.currentTimeline.currentTime);\n context.previousNode = ast;\n }\n /**\n * @private\n * @param {?} instructions\n * @param {?} context\n * @param {?} options\n * @return {?}\n */\n _visitSubInstructions(instructions, context, options) {\n /** @type {?} */\n const startTime = context.currentTimeline.currentTime;\n /** @type {?} */\n let furthestTime = startTime;\n // this is a special-case for when a user wants to skip a sub\n // animation from being fired entirely.\n /** @type {?} */\n const duration = options.duration != null ? resolveTimingValue(options.duration) : null;\n /** @type {?} */\n const delay = options.delay != null ? resolveTimingValue(options.delay) : null;\n if (duration !== 0) {\n instructions.forEach((/**\n * @param {?} instruction\n * @return {?}\n */\n instruction => {\n /** @type {?} */\n const instructionTimings = context.appendInstructionToTimeline(instruction, duration, delay);\n furthestTime =\n Math.max(furthestTime, instructionTimings.duration + instructionTimings.delay);\n }));\n }\n return furthestTime;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitReference(ast, context) {\n context.updateOptions(ast.options, true);\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitSequence(ast, context) {\n /** @type {?} */\n const subContextCount = context.subContextCount;\n /** @type {?} */\n let ctx = context;\n /** @type {?} */\n const options = ast.options;\n if (options && (options.params || options.delay)) {\n ctx = context.createSubContext(options);\n ctx.transformIntoNewTimeline();\n if (options.delay != null) {\n if (ctx.previousNode.type == 6 /* Style */) {\n ctx.currentTimeline.snapshotCurrentStyles();\n ctx.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n /** @type {?} */\n const delay = resolveTimingValue(options.delay);\n ctx.delayNextStep(delay);\n }\n }\n if (ast.steps.length) {\n ast.steps.forEach((/**\n * @param {?} s\n * @return {?}\n */\n s => visitDslNode(this, s, ctx)));\n // this is here just incase the inner steps only contain or end with a style() call\n ctx.currentTimeline.applyStylesToKeyframe();\n // this means that some animation function within the sequence\n // ended up creating a sub timeline (which means the current\n // timeline cannot overlap with the contents of the sequence)\n if (ctx.subContextCount > subContextCount) {\n ctx.transformIntoNewTimeline();\n }\n }\n context.previousNode = ast;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitGroup(ast, context) {\n /** @type {?} */\n const innerTimelines = [];\n /** @type {?} */\n let furthestTime = context.currentTimeline.currentTime;\n /** @type {?} */\n const delay = ast.options && ast.options.delay ? resolveTimingValue(ast.options.delay) : 0;\n ast.steps.forEach((/**\n * @param {?} s\n * @return {?}\n */\n s => {\n /** @type {?} */\n const innerContext = context.createSubContext(ast.options);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n visitDslNode(this, s, innerContext);\n furthestTime = Math.max(furthestTime, innerContext.currentTimeline.currentTime);\n innerTimelines.push(innerContext.currentTimeline);\n }));\n // this operation is run after the AST loop because otherwise\n // if the parent timeline's collected styles were updated then\n // it would pass in invalid data into the new-to-be forked items\n innerTimelines.forEach((/**\n * @param {?} timeline\n * @return {?}\n */\n timeline => context.currentTimeline.mergeTimelineCollectedStyles(timeline)));\n context.transformIntoNewTimeline(furthestTime);\n context.previousNode = ast;\n }\n /**\n * @private\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n _visitTiming(ast, context) {\n if (((/** @type {?} */ (ast))).dynamic) {\n /** @type {?} */\n const strValue = ((/** @type {?} */ (ast))).strValue;\n /** @type {?} */\n const timingValue = context.params ? interpolateParams(strValue, context.params, context.errors) : strValue;\n return resolveTiming(timingValue, context.errors);\n }\n else {\n return { duration: ast.duration, delay: ast.delay, easing: ast.easing };\n }\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitAnimate(ast, context) {\n /** @type {?} */\n const timings = context.currentAnimateTimings = this._visitTiming(ast.timings, context);\n /** @type {?} */\n const timeline = context.currentTimeline;\n if (timings.delay) {\n context.incrementTime(timings.delay);\n timeline.snapshotCurrentStyles();\n }\n /** @type {?} */\n const style = ast.style;\n if (style.type == 5 /* Keyframes */) {\n this.visitKeyframes(style, context);\n }\n else {\n context.incrementTime(timings.duration);\n this.visitStyle((/** @type {?} */ (style)), context);\n timeline.applyStylesToKeyframe();\n }\n context.currentAnimateTimings = null;\n context.previousNode = ast;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitStyle(ast, context) {\n /** @type {?} */\n const timeline = context.currentTimeline;\n /** @type {?} */\n const timings = (/** @type {?} */ (context.currentAnimateTimings));\n // this is a special case for when a style() call\n // directly follows an animate() call (but not inside of an animate() call)\n if (!timings && timeline.getCurrentStyleProperties().length) {\n timeline.forwardFrame();\n }\n /** @type {?} */\n const easing = (timings && timings.easing) || ast.easing;\n if (ast.isEmptyStep) {\n timeline.applyEmptyStep(easing);\n }\n else {\n timeline.setStyles(ast.styles, easing, context.errors, context.options);\n }\n context.previousNode = ast;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitKeyframes(ast, context) {\n /** @type {?} */\n const currentAnimateTimings = (/** @type {?} */ (context.currentAnimateTimings));\n /** @type {?} */\n const startTime = ((/** @type {?} */ (context.currentTimeline))).duration;\n /** @type {?} */\n const duration = currentAnimateTimings.duration;\n /** @type {?} */\n const innerContext = context.createSubContext();\n /** @type {?} */\n const innerTimeline = innerContext.currentTimeline;\n innerTimeline.easing = currentAnimateTimings.easing;\n ast.styles.forEach((/**\n * @param {?} step\n * @return {?}\n */\n step => {\n /** @type {?} */\n const offset = step.offset || 0;\n innerTimeline.forwardTime(offset * duration);\n innerTimeline.setStyles(step.styles, step.easing, context.errors, context.options);\n innerTimeline.applyStylesToKeyframe();\n }));\n // this will ensure that the parent timeline gets all the styles from\n // the child even if the new timeline below is not used\n context.currentTimeline.mergeTimelineCollectedStyles(innerTimeline);\n // we do this because the window between this timeline and the sub timeline\n // should ensure that the styles within are exactly the same as they were before\n context.transformIntoNewTimeline(startTime + duration);\n context.previousNode = ast;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitQuery(ast, context) {\n // in the event that the first step before this is a style step we need\n // to ensure the styles are applied before the children are animated\n /** @type {?} */\n const startTime = context.currentTimeline.currentTime;\n /** @type {?} */\n const options = (/** @type {?} */ ((ast.options || {})));\n /** @type {?} */\n const delay = options.delay ? resolveTimingValue(options.delay) : 0;\n if (delay && (context.previousNode.type === 6 /* Style */ ||\n (startTime == 0 && context.currentTimeline.getCurrentStyleProperties().length))) {\n context.currentTimeline.snapshotCurrentStyles();\n context.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n /** @type {?} */\n let furthestTime = startTime;\n /** @type {?} */\n const elms = context.invokeQuery(ast.selector, ast.originalSelector, ast.limit, ast.includeSelf, options.optional ? true : false, context.errors);\n context.currentQueryTotal = elms.length;\n /** @type {?} */\n let sameElementTimeline = null;\n elms.forEach((/**\n * @param {?} element\n * @param {?} i\n * @return {?}\n */\n (element, i) => {\n context.currentQueryIndex = i;\n /** @type {?} */\n const innerContext = context.createSubContext(ast.options, element);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n if (element === context.element) {\n sameElementTimeline = innerContext.currentTimeline;\n }\n visitDslNode(this, ast.animation, innerContext);\n // this is here just incase the inner steps only contain or end\n // with a style() call (which is here to signal that this is a preparatory\n // call to style an element before it is animated again)\n innerContext.currentTimeline.applyStylesToKeyframe();\n /** @type {?} */\n const endTime = innerContext.currentTimeline.currentTime;\n furthestTime = Math.max(furthestTime, endTime);\n }));\n context.currentQueryIndex = 0;\n context.currentQueryTotal = 0;\n context.transformIntoNewTimeline(furthestTime);\n if (sameElementTimeline) {\n context.currentTimeline.mergeTimelineCollectedStyles(sameElementTimeline);\n context.currentTimeline.snapshotCurrentStyles();\n }\n context.previousNode = ast;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n visitStagger(ast, context) {\n /** @type {?} */\n const parentContext = (/** @type {?} */ (context.parentContext));\n /** @type {?} */\n const tl = context.currentTimeline;\n /** @type {?} */\n const timings = ast.timings;\n /** @type {?} */\n const duration = Math.abs(timings.duration);\n /** @type {?} */\n const maxTime = duration * (context.currentQueryTotal - 1);\n /** @type {?} */\n let delay = duration * context.currentQueryIndex;\n /** @type {?} */\n let staggerTransformer = timings.duration < 0 ? 'reverse' : timings.easing;\n switch (staggerTransformer) {\n case 'reverse':\n delay = maxTime - delay;\n break;\n case 'full':\n delay = parentContext.currentStaggerTime;\n break;\n }\n /** @type {?} */\n const timeline = context.currentTimeline;\n if (delay) {\n timeline.delayNextStep(delay);\n }\n /** @type {?} */\n const startingTime = timeline.currentTime;\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n // time = duration + delay\n // the reason why this computation is so complex is because\n // the inner timeline may either have a delay value or a stretched\n // keyframe depending on if a subtimeline is not used or is used.\n parentContext.currentStaggerTime =\n (tl.currentTime - startingTime) + (tl.startTime - parentContext.currentTimeline.startTime);\n }\n}\n/** @type {?} */\nconst DEFAULT_NOOP_PREVIOUS_NODE = (/** @type {?} */ ({}));\nclass AnimationTimelineContext {\n /**\n * @param {?} _driver\n * @param {?} element\n * @param {?} subInstructions\n * @param {?} _enterClassName\n * @param {?} _leaveClassName\n * @param {?} errors\n * @param {?} timelines\n * @param {?=} initialTimeline\n */\n constructor(_driver, element, subInstructions, _enterClassName, _leaveClassName, errors, timelines, initialTimeline) {\n this._driver = _driver;\n this.element = element;\n this.subInstructions = subInstructions;\n this._enterClassName = _enterClassName;\n this._leaveClassName = _leaveClassName;\n this.errors = errors;\n this.timelines = timelines;\n this.parentContext = null;\n this.currentAnimateTimings = null;\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.subContextCount = 0;\n this.options = {};\n this.currentQueryIndex = 0;\n this.currentQueryTotal = 0;\n this.currentStaggerTime = 0;\n this.currentTimeline = initialTimeline || new TimelineBuilder(this._driver, element, 0);\n timelines.push(this.currentTimeline);\n }\n /**\n * @return {?}\n */\n get params() { return this.options.params; }\n /**\n * @param {?} options\n * @param {?=} skipIfExists\n * @return {?}\n */\n updateOptions(options, skipIfExists) {\n if (!options)\n return;\n /** @type {?} */\n const newOptions = (/** @type {?} */ (options));\n /** @type {?} */\n let optionsToUpdate = this.options;\n // NOTE: this will get patched up when other animation methods support duration overrides\n if (newOptions.duration != null) {\n ((/** @type {?} */ (optionsToUpdate))).duration = resolveTimingValue(newOptions.duration);\n }\n if (newOptions.delay != null) {\n optionsToUpdate.delay = resolveTimingValue(newOptions.delay);\n }\n /** @type {?} */\n const newParams = newOptions.params;\n if (newParams) {\n /** @type {?} */\n let paramsToUpdate = (/** @type {?} */ (optionsToUpdate.params));\n if (!paramsToUpdate) {\n paramsToUpdate = this.options.params = {};\n }\n Object.keys(newParams).forEach((/**\n * @param {?} name\n * @return {?}\n */\n name => {\n if (!skipIfExists || !paramsToUpdate.hasOwnProperty(name)) {\n paramsToUpdate[name] = interpolateParams(newParams[name], paramsToUpdate, this.errors);\n }\n }));\n }\n }\n /**\n * @private\n * @return {?}\n */\n _copyOptions() {\n /** @type {?} */\n const options = {};\n if (this.options) {\n /** @type {?} */\n const oldParams = this.options.params;\n if (oldParams) {\n /** @type {?} */\n const params = options['params'] = {};\n Object.keys(oldParams).forEach((/**\n * @param {?} name\n * @return {?}\n */\n name => { params[name] = oldParams[name]; }));\n }\n }\n return options;\n }\n /**\n * @param {?=} options\n * @param {?=} element\n * @param {?=} newTime\n * @return {?}\n */\n createSubContext(options = null, element, newTime) {\n /** @type {?} */\n const target = element || this.element;\n /** @type {?} */\n const context = new AnimationTimelineContext(this._driver, target, this.subInstructions, this._enterClassName, this._leaveClassName, this.errors, this.timelines, this.currentTimeline.fork(target, newTime || 0));\n context.previousNode = this.previousNode;\n context.currentAnimateTimings = this.currentAnimateTimings;\n context.options = this._copyOptions();\n context.updateOptions(options);\n context.currentQueryIndex = this.currentQueryIndex;\n context.currentQueryTotal = this.currentQueryTotal;\n context.parentContext = this;\n this.subContextCount++;\n return context;\n }\n /**\n * @param {?=} newTime\n * @return {?}\n */\n transformIntoNewTimeline(newTime) {\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.currentTimeline = this.currentTimeline.fork(this.element, newTime);\n this.timelines.push(this.currentTimeline);\n return this.currentTimeline;\n }\n /**\n * @param {?} instruction\n * @param {?} duration\n * @param {?} delay\n * @return {?}\n */\n appendInstructionToTimeline(instruction, duration, delay) {\n /** @type {?} */\n const updatedTimings = {\n duration: duration != null ? duration : instruction.duration,\n delay: this.currentTimeline.currentTime + (delay != null ? delay : 0) + instruction.delay,\n easing: ''\n };\n /** @type {?} */\n const builder = new SubTimelineBuilder(this._driver, instruction.element, instruction.keyframes, instruction.preStyleProps, instruction.postStyleProps, updatedTimings, instruction.stretchStartingKeyframe);\n this.timelines.push(builder);\n return updatedTimings;\n }\n /**\n * @param {?} time\n * @return {?}\n */\n incrementTime(time) {\n this.currentTimeline.forwardTime(this.currentTimeline.duration + time);\n }\n /**\n * @param {?} delay\n * @return {?}\n */\n delayNextStep(delay) {\n // negative delays are not yet supported\n if (delay > 0) {\n this.currentTimeline.delayNextStep(delay);\n }\n }\n /**\n * @param {?} selector\n * @param {?} originalSelector\n * @param {?} limit\n * @param {?} includeSelf\n * @param {?} optional\n * @param {?} errors\n * @return {?}\n */\n invokeQuery(selector, originalSelector, limit, includeSelf, optional, errors) {\n /** @type {?} */\n let results = [];\n if (includeSelf) {\n results.push(this.element);\n }\n if (selector.length > 0) { // if :self is only used then the selector is empty\n selector = selector.replace(ENTER_TOKEN_REGEX, '.' + this._enterClassName);\n selector = selector.replace(LEAVE_TOKEN_REGEX, '.' + this._leaveClassName);\n /** @type {?} */\n const multi = limit != 1;\n /** @type {?} */\n let elements = this._driver.query(this.element, selector, multi);\n if (limit !== 0) {\n elements = limit < 0 ? elements.slice(elements.length + limit, elements.length) :\n elements.slice(0, limit);\n }\n results.push(...elements);\n }\n if (!optional && results.length == 0) {\n errors.push(`\\`query(\"${originalSelector}\")\\` returned zero elements. (Use \\`query(\"${originalSelector}\", { optional: true })\\` if you wish to allow this.)`);\n }\n return results;\n }\n}\nif (false) {\n /** @type {?} */\n AnimationTimelineContext.prototype.parentContext;\n /** @type {?} */\n AnimationTimelineContext.prototype.currentTimeline;\n /** @type {?} */\n AnimationTimelineContext.prototype.currentAnimateTimings;\n /** @type {?} */\n AnimationTimelineContext.prototype.previousNode;\n /** @type {?} */\n AnimationTimelineContext.prototype.subContextCount;\n /** @type {?} */\n AnimationTimelineContext.prototype.options;\n /** @type {?} */\n AnimationTimelineContext.prototype.currentQueryIndex;\n /** @type {?} */\n AnimationTimelineContext.prototype.currentQueryTotal;\n /** @type {?} */\n AnimationTimelineContext.prototype.currentStaggerTime;\n /**\n * @type {?}\n * @private\n */\n AnimationTimelineContext.prototype._driver;\n /** @type {?} */\n AnimationTimelineContext.prototype.element;\n /** @type {?} */\n AnimationTimelineContext.prototype.subInstructions;\n /**\n * @type {?}\n * @private\n */\n AnimationTimelineContext.prototype._enterClassName;\n /**\n * @type {?}\n * @private\n */\n AnimationTimelineContext.prototype._leaveClassName;\n /** @type {?} */\n AnimationTimelineContext.prototype.errors;\n /** @type {?} */\n AnimationTimelineContext.prototype.timelines;\n}\nclass TimelineBuilder {\n /**\n * @param {?} _driver\n * @param {?} element\n * @param {?} startTime\n * @param {?=} _elementTimelineStylesLookup\n */\n constructor(_driver, element, startTime, _elementTimelineStylesLookup) {\n this._driver = _driver;\n this.element = element;\n this.startTime = startTime;\n this._elementTimelineStylesLookup = _elementTimelineStylesLookup;\n this.duration = 0;\n this._previousKeyframe = {};\n this._currentKeyframe = {};\n this._keyframes = new Map();\n this._styleSummary = {};\n this._pendingStyles = {};\n this._backFill = {};\n this._currentEmptyStepKeyframe = null;\n if (!this._elementTimelineStylesLookup) {\n this._elementTimelineStylesLookup = new Map();\n }\n this._localTimelineStyles = Object.create(this._backFill, {});\n this._globalTimelineStyles = (/** @type {?} */ (this._elementTimelineStylesLookup.get(element)));\n if (!this._globalTimelineStyles) {\n this._globalTimelineStyles = this._localTimelineStyles;\n this._elementTimelineStylesLookup.set(element, this._localTimelineStyles);\n }\n this._loadKeyframe();\n }\n /**\n * @return {?}\n */\n containsAnimation() {\n switch (this._keyframes.size) {\n case 0:\n return false;\n case 1:\n return this.getCurrentStyleProperties().length > 0;\n default:\n return true;\n }\n }\n /**\n * @return {?}\n */\n getCurrentStyleProperties() { return Object.keys(this._currentKeyframe); }\n /**\n * @return {?}\n */\n get currentTime() { return this.startTime + this.duration; }\n /**\n * @param {?} delay\n * @return {?}\n */\n delayNextStep(delay) {\n // in the event that a style() step is placed right before a stagger()\n // and that style() step is the very first style() value in the animation\n // then we need to make a copy of the keyframe [0, copy, 1] so that the delay\n // properly applies the style() values to work with the stagger...\n /** @type {?} */\n const hasPreStyleStep = this._keyframes.size == 1 && Object.keys(this._pendingStyles).length;\n if (this.duration || hasPreStyleStep) {\n this.forwardTime(this.currentTime + delay);\n if (hasPreStyleStep) {\n this.snapshotCurrentStyles();\n }\n }\n else {\n this.startTime += delay;\n }\n }\n /**\n * @param {?} element\n * @param {?=} currentTime\n * @return {?}\n */\n fork(element, currentTime) {\n this.applyStylesToKeyframe();\n return new TimelineBuilder(this._driver, element, currentTime || this.currentTime, this._elementTimelineStylesLookup);\n }\n /**\n * @private\n * @return {?}\n */\n _loadKeyframe() {\n if (this._currentKeyframe) {\n this._previousKeyframe = this._currentKeyframe;\n }\n this._currentKeyframe = (/** @type {?} */ (this._keyframes.get(this.duration)));\n if (!this._currentKeyframe) {\n this._currentKeyframe = Object.create(this._backFill, {});\n this._keyframes.set(this.duration, this._currentKeyframe);\n }\n }\n /**\n * @return {?}\n */\n forwardFrame() {\n this.duration += ONE_FRAME_IN_MILLISECONDS;\n this._loadKeyframe();\n }\n /**\n * @param {?} time\n * @return {?}\n */\n forwardTime(time) {\n this.applyStylesToKeyframe();\n this.duration = time;\n this._loadKeyframe();\n }\n /**\n * @private\n * @param {?} prop\n * @param {?} value\n * @return {?}\n */\n _updateStyle(prop, value) {\n this._localTimelineStyles[prop] = value;\n this._globalTimelineStyles[prop] = value;\n this._styleSummary[prop] = { time: this.currentTime, value };\n }\n /**\n * @return {?}\n */\n allowOnlyTimelineStyles() { return this._currentEmptyStepKeyframe !== this._currentKeyframe; }\n /**\n * @param {?} easing\n * @return {?}\n */\n applyEmptyStep(easing) {\n if (easing) {\n this._previousKeyframe['easing'] = easing;\n }\n // special case for animate(duration):\n // all missing styles are filled with a `*` value then\n // if any destination styles are filled in later on the same\n // keyframe then they will override the overridden styles\n // We use `_globalTimelineStyles` here because there may be\n // styles in previous keyframes that are not present in this timeline\n Object.keys(this._globalTimelineStyles).forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => {\n this._backFill[prop] = this._globalTimelineStyles[prop] || AUTO_STYLE;\n this._currentKeyframe[prop] = AUTO_STYLE;\n }));\n this._currentEmptyStepKeyframe = this._currentKeyframe;\n }\n /**\n * @param {?} input\n * @param {?} easing\n * @param {?} errors\n * @param {?=} options\n * @return {?}\n */\n setStyles(input, easing, errors, options) {\n if (easing) {\n this._previousKeyframe['easing'] = easing;\n }\n /** @type {?} */\n const params = (options && options.params) || {};\n /** @type {?} */\n const styles = flattenStyles(input, this._globalTimelineStyles);\n Object.keys(styles).forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => {\n /** @type {?} */\n const val = interpolateParams(styles[prop], params, errors);\n this._pendingStyles[prop] = val;\n if (!this._localTimelineStyles.hasOwnProperty(prop)) {\n this._backFill[prop] = this._globalTimelineStyles.hasOwnProperty(prop) ?\n this._globalTimelineStyles[prop] :\n AUTO_STYLE;\n }\n this._updateStyle(prop, val);\n }));\n }\n /**\n * @return {?}\n */\n applyStylesToKeyframe() {\n /** @type {?} */\n const styles = this._pendingStyles;\n /** @type {?} */\n const props = Object.keys(styles);\n if (props.length == 0)\n return;\n this._pendingStyles = {};\n props.forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => {\n /** @type {?} */\n const val = styles[prop];\n this._currentKeyframe[prop] = val;\n }));\n Object.keys(this._localTimelineStyles).forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => {\n if (!this._currentKeyframe.hasOwnProperty(prop)) {\n this._currentKeyframe[prop] = this._localTimelineStyles[prop];\n }\n }));\n }\n /**\n * @return {?}\n */\n snapshotCurrentStyles() {\n Object.keys(this._localTimelineStyles).forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => {\n /** @type {?} */\n const val = this._localTimelineStyles[prop];\n this._pendingStyles[prop] = val;\n this._updateStyle(prop, val);\n }));\n }\n /**\n * @return {?}\n */\n getFinalKeyframe() { return this._keyframes.get(this.duration); }\n /**\n * @return {?}\n */\n get properties() {\n /** @type {?} */\n const properties = [];\n for (let prop in this._currentKeyframe) {\n properties.push(prop);\n }\n return properties;\n }\n /**\n * @param {?} timeline\n * @return {?}\n */\n mergeTimelineCollectedStyles(timeline) {\n Object.keys(timeline._styleSummary).forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => {\n /** @type {?} */\n const details0 = this._styleSummary[prop];\n /** @type {?} */\n const details1 = timeline._styleSummary[prop];\n if (!details0 || details1.time > details0.time) {\n this._updateStyle(prop, details1.value);\n }\n }));\n }\n /**\n * @return {?}\n */\n buildKeyframes() {\n this.applyStylesToKeyframe();\n /** @type {?} */\n const preStyleProps = new Set();\n /** @type {?} */\n const postStyleProps = new Set();\n /** @type {?} */\n const isEmpty = this._keyframes.size === 1 && this.duration === 0;\n /** @type {?} */\n let finalKeyframes = [];\n this._keyframes.forEach((/**\n * @param {?} keyframe\n * @param {?} time\n * @return {?}\n */\n (keyframe, time) => {\n /** @type {?} */\n const finalKeyframe = copyStyles(keyframe, true);\n Object.keys(finalKeyframe).forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => {\n /** @type {?} */\n const value = finalKeyframe[prop];\n if (value == ɵPRE_STYLE) {\n preStyleProps.add(prop);\n }\n else if (value == AUTO_STYLE) {\n postStyleProps.add(prop);\n }\n }));\n if (!isEmpty) {\n finalKeyframe['offset'] = time / this.duration;\n }\n finalKeyframes.push(finalKeyframe);\n }));\n /** @type {?} */\n const preProps = preStyleProps.size ? iteratorToArray(preStyleProps.values()) : [];\n /** @type {?} */\n const postProps = postStyleProps.size ? iteratorToArray(postStyleProps.values()) : [];\n // special case for a 0-second animation (which is designed just to place styles onscreen)\n if (isEmpty) {\n /** @type {?} */\n const kf0 = finalKeyframes[0];\n /** @type {?} */\n const kf1 = copyObj(kf0);\n kf0['offset'] = 0;\n kf1['offset'] = 1;\n finalKeyframes = [kf0, kf1];\n }\n return createTimelineInstruction(this.element, finalKeyframes, preProps, postProps, this.duration, this.startTime, this.easing, false);\n }\n}\nif (false) {\n /** @type {?} */\n TimelineBuilder.prototype.duration;\n /** @type {?} */\n TimelineBuilder.prototype.easing;\n /**\n * @type {?}\n * @private\n */\n TimelineBuilder.prototype._previousKeyframe;\n /**\n * @type {?}\n * @private\n */\n TimelineBuilder.prototype._currentKeyframe;\n /**\n * @type {?}\n * @private\n */\n TimelineBuilder.prototype._keyframes;\n /**\n * @type {?}\n * @private\n */\n TimelineBuilder.prototype._styleSummary;\n /**\n * @type {?}\n * @private\n */\n TimelineBuilder.prototype._localTimelineStyles;\n /**\n * @type {?}\n * @private\n */\n TimelineBuilder.prototype._globalTimelineStyles;\n /**\n * @type {?}\n * @private\n */\n TimelineBuilder.prototype._pendingStyles;\n /**\n * @type {?}\n * @private\n */\n TimelineBuilder.prototype._backFill;\n /**\n * @type {?}\n * @private\n */\n TimelineBuilder.prototype._currentEmptyStepKeyframe;\n /**\n * @type {?}\n * @private\n */\n TimelineBuilder.prototype._driver;\n /** @type {?} */\n TimelineBuilder.prototype.element;\n /** @type {?} */\n TimelineBuilder.prototype.startTime;\n /**\n * @type {?}\n * @private\n */\n TimelineBuilder.prototype._elementTimelineStylesLookup;\n}\nclass SubTimelineBuilder extends TimelineBuilder {\n /**\n * @param {?} driver\n * @param {?} element\n * @param {?} keyframes\n * @param {?} preStyleProps\n * @param {?} postStyleProps\n * @param {?} timings\n * @param {?=} _stretchStartingKeyframe\n */\n constructor(driver, element, keyframes, preStyleProps, postStyleProps, timings, _stretchStartingKeyframe = false) {\n super(driver, element, timings.delay);\n this.element = element;\n this.keyframes = keyframes;\n this.preStyleProps = preStyleProps;\n this.postStyleProps = postStyleProps;\n this._stretchStartingKeyframe = _stretchStartingKeyframe;\n this.timings = { duration: timings.duration, delay: timings.delay, easing: timings.easing };\n }\n /**\n * @return {?}\n */\n containsAnimation() { return this.keyframes.length > 1; }\n /**\n * @return {?}\n */\n buildKeyframes() {\n /** @type {?} */\n let keyframes = this.keyframes;\n let { delay, duration, easing } = this.timings;\n if (this._stretchStartingKeyframe && delay) {\n /** @type {?} */\n const newKeyframes = [];\n /** @type {?} */\n const totalTime = duration + delay;\n /** @type {?} */\n const startingGap = delay / totalTime;\n // the original starting keyframe now starts once the delay is done\n /** @type {?} */\n const newFirstKeyframe = copyStyles(keyframes[0], false);\n newFirstKeyframe['offset'] = 0;\n newKeyframes.push(newFirstKeyframe);\n /** @type {?} */\n const oldFirstKeyframe = copyStyles(keyframes[0], false);\n oldFirstKeyframe['offset'] = roundOffset(startingGap);\n newKeyframes.push(oldFirstKeyframe);\n /*\n When the keyframe is stretched then it means that the delay before the animation\n starts is gone. Instead the first keyframe is placed at the start of the animation\n and it is then copied to where it starts when the original delay is over. This basically\n means nothing animates during that delay, but the styles are still renderered. For this\n to work the original offset values that exist in the original keyframes must be \"warped\"\n so that they can take the new keyframe + delay into account.\n \n delay=1000, duration=1000, keyframes = 0 .5 1\n \n turns into\n \n delay=0, duration=2000, keyframes = 0 .33 .66 1\n */\n // offsets between 1 ... n -1 are all warped by the keyframe stretch\n /** @type {?} */\n const limit = keyframes.length - 1;\n for (let i = 1; i <= limit; i++) {\n /** @type {?} */\n let kf = copyStyles(keyframes[i], false);\n /** @type {?} */\n const oldOffset = (/** @type {?} */ (kf['offset']));\n /** @type {?} */\n const timeAtKeyframe = delay + oldOffset * duration;\n kf['offset'] = roundOffset(timeAtKeyframe / totalTime);\n newKeyframes.push(kf);\n }\n // the new starting keyframe should be added at the start\n duration = totalTime;\n delay = 0;\n easing = '';\n keyframes = newKeyframes;\n }\n return createTimelineInstruction(this.element, keyframes, this.preStyleProps, this.postStyleProps, duration, delay, easing, true);\n }\n}\nif (false) {\n /** @type {?} */\n SubTimelineBuilder.prototype.timings;\n /** @type {?} */\n SubTimelineBuilder.prototype.element;\n /** @type {?} */\n SubTimelineBuilder.prototype.keyframes;\n /** @type {?} */\n SubTimelineBuilder.prototype.preStyleProps;\n /** @type {?} */\n SubTimelineBuilder.prototype.postStyleProps;\n /**\n * @type {?}\n * @private\n */\n SubTimelineBuilder.prototype._stretchStartingKeyframe;\n}\n/**\n * @param {?} offset\n * @param {?=} decimalPoints\n * @return {?}\n */\nfunction roundOffset(offset, decimalPoints = 3) {\n /** @type {?} */\n const mult = Math.pow(10, decimalPoints - 1);\n return Math.round(offset * mult) / mult;\n}\n/**\n * @param {?} input\n * @param {?} allStyles\n * @return {?}\n */\nfunction flattenStyles(input, allStyles) {\n /** @type {?} */\n const styles = {};\n /** @type {?} */\n let allProperties;\n input.forEach((/**\n * @param {?} token\n * @return {?}\n */\n token => {\n if (token === '*') {\n allProperties = allProperties || Object.keys(allStyles);\n allProperties.forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => { styles[prop] = AUTO_STYLE; }));\n }\n else {\n copyStyles((/** @type {?} */ (token)), false, styles);\n }\n }));\n return styles;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/browser/src/dsl/animation.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass Animation {\n /**\n * @param {?} _driver\n * @param {?} input\n */\n constructor(_driver, input) {\n this._driver = _driver;\n /** @type {?} */\n const errors = [];\n /** @type {?} */\n const ast = buildAnimationAst(_driver, input, errors);\n if (errors.length) {\n /** @type {?} */\n const errorMessage = `animation validation failed:\\n${errors.join(\"\\n\")}`;\n throw new Error(errorMessage);\n }\n this._animationAst = ast;\n }\n /**\n * @param {?} element\n * @param {?} startingStyles\n * @param {?} destinationStyles\n * @param {?} options\n * @param {?=} subInstructions\n * @return {?}\n */\n buildTimelines(element, startingStyles, destinationStyles, options, subInstructions) {\n /** @type {?} */\n const start = Array.isArray(startingStyles) ? normalizeStyles(startingStyles) :\n (/** @type {?} */ (startingStyles));\n /** @type {?} */\n const dest = Array.isArray(destinationStyles) ? normalizeStyles(destinationStyles) :\n (/** @type {?} */ (destinationStyles));\n /** @type {?} */\n const errors = [];\n subInstructions = subInstructions || new ElementInstructionMap();\n /** @type {?} */\n const result = buildAnimationTimelines(this._driver, element, this._animationAst, ENTER_CLASSNAME, LEAVE_CLASSNAME, start, dest, options, subInstructions, errors);\n if (errors.length) {\n /** @type {?} */\n const errorMessage = `animation building failed:\\n${errors.join(\"\\n\")}`;\n throw new Error(errorMessage);\n }\n return result;\n }\n}\nif (false) {\n /**\n * @type {?}\n * @private\n */\n Animation.prototype._animationAst;\n /**\n * @type {?}\n * @private\n */\n Animation.prototype._driver;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/browser/src/dsl/style_normalization/animation_style_normalizer.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * \\@publicApi\n * @abstract\n */\nclass AnimationStyleNormalizer {\n}\nif (false) {\n /**\n * @abstract\n * @param {?} propertyName\n * @param {?} errors\n * @return {?}\n */\n AnimationStyleNormalizer.prototype.normalizePropertyName = function (propertyName, errors) { };\n /**\n * @abstract\n * @param {?} userProvidedProperty\n * @param {?} normalizedProperty\n * @param {?} value\n * @param {?} errors\n * @return {?}\n */\n AnimationStyleNormalizer.prototype.normalizeStyleValue = function (userProvidedProperty, normalizedProperty, value, errors) { };\n}\n/**\n * \\@publicApi\n */\nclass NoopAnimationStyleNormalizer {\n /**\n * @param {?} propertyName\n * @param {?} errors\n * @return {?}\n */\n normalizePropertyName(propertyName, errors) { return propertyName; }\n /**\n * @param {?} userProvidedProperty\n * @param {?} normalizedProperty\n * @param {?} value\n * @param {?} errors\n * @return {?}\n */\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n return (/** @type {?} */ (value));\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/browser/src/dsl/style_normalization/web_animations_style_normalizer.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass WebAnimationsStyleNormalizer extends AnimationStyleNormalizer {\n /**\n * @param {?} propertyName\n * @param {?} errors\n * @return {?}\n */\n normalizePropertyName(propertyName, errors) {\n return dashCaseToCamelCase(propertyName);\n }\n /**\n * @param {?} userProvidedProperty\n * @param {?} normalizedProperty\n * @param {?} value\n * @param {?} errors\n * @return {?}\n */\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n /** @type {?} */\n let unit = '';\n /** @type {?} */\n const strVal = value.toString().trim();\n if (DIMENSIONAL_PROP_MAP[normalizedProperty] && value !== 0 && value !== '0') {\n if (typeof value === 'number') {\n unit = 'px';\n }\n else {\n /** @type {?} */\n const valAndSuffixMatch = value.match(/^[+-]?[\\d\\.]+([a-z]*)$/);\n if (valAndSuffixMatch && valAndSuffixMatch[1].length == 0) {\n errors.push(`Please provide a CSS unit value for ${userProvidedProperty}:${value}`);\n }\n }\n }\n return strVal + unit;\n }\n}\nconst ɵ0$1 = /**\n * @return {?}\n */\n() => makeBooleanMap('width,height,minWidth,minHeight,maxWidth,maxHeight,left,top,bottom,right,fontSize,outlineWidth,outlineOffset,paddingTop,paddingLeft,paddingBottom,paddingRight,marginTop,marginLeft,marginBottom,marginRight,borderRadius,borderWidth,borderTopWidth,borderLeftWidth,borderRightWidth,borderBottomWidth,textIndent,perspective'\n .split(','));\n/** @type {?} */\nconst DIMENSIONAL_PROP_MAP = ((ɵ0$1))();\n/**\n * @param {?} keys\n * @return {?}\n */\nfunction makeBooleanMap(keys) {\n /** @type {?} */\n const map = {};\n keys.forEach((/**\n * @param {?} key\n * @return {?}\n */\n key => map[key] = true));\n return map;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/browser/src/dsl/animation_transition_instruction.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @record\n */\nfunction AnimationTransitionInstruction() { }\nif (false) {\n /** @type {?} */\n AnimationTransitionInstruction.prototype.element;\n /** @type {?} */\n AnimationTransitionInstruction.prototype.triggerName;\n /** @type {?} */\n AnimationTransitionInstruction.prototype.isRemovalTransition;\n /** @type {?} */\n AnimationTransitionInstruction.prototype.fromState;\n /** @type {?} */\n AnimationTransitionInstruction.prototype.fromStyles;\n /** @type {?} */\n AnimationTransitionInstruction.prototype.toState;\n /** @type {?} */\n AnimationTransitionInstruction.prototype.toStyles;\n /** @type {?} */\n AnimationTransitionInstruction.prototype.timelines;\n /** @type {?} */\n AnimationTransitionInstruction.prototype.queriedElements;\n /** @type {?} */\n AnimationTransitionInstruction.prototype.preStyleProps;\n /** @type {?} */\n AnimationTransitionInstruction.prototype.postStyleProps;\n /** @type {?} */\n AnimationTransitionInstruction.prototype.totalTime;\n /** @type {?|undefined} */\n AnimationTransitionInstruction.prototype.errors;\n}\n/**\n * @param {?} element\n * @param {?} triggerName\n * @param {?} fromState\n * @param {?} toState\n * @param {?} isRemovalTransition\n * @param {?} fromStyles\n * @param {?} toStyles\n * @param {?} timelines\n * @param {?} queriedElements\n * @param {?} preStyleProps\n * @param {?} postStyleProps\n * @param {?} totalTime\n * @param {?=} errors\n * @return {?}\n */\nfunction createTransitionInstruction(element, triggerName, fromState, toState, isRemovalTransition, fromStyles, toStyles, timelines, queriedElements, preStyleProps, postStyleProps, totalTime, errors) {\n return {\n type: 0 /* TransitionAnimation */,\n element,\n triggerName,\n isRemovalTransition,\n fromState,\n fromStyles,\n toState,\n toStyles,\n timelines,\n queriedElements,\n preStyleProps,\n postStyleProps,\n totalTime,\n errors\n };\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/browser/src/dsl/animation_transition_factory.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst EMPTY_OBJECT = {};\nclass AnimationTransitionFactory {\n /**\n * @param {?} _triggerName\n * @param {?} ast\n * @param {?} _stateStyles\n */\n constructor(_triggerName, ast, _stateStyles) {\n this._triggerName = _triggerName;\n this.ast = ast;\n this._stateStyles = _stateStyles;\n }\n /**\n * @param {?} currentState\n * @param {?} nextState\n * @param {?} element\n * @param {?} params\n * @return {?}\n */\n match(currentState, nextState, element, params) {\n return oneOrMoreTransitionsMatch(this.ast.matchers, currentState, nextState, element, params);\n }\n /**\n * @param {?} stateName\n * @param {?} params\n * @param {?} errors\n * @return {?}\n */\n buildStyles(stateName, params, errors) {\n /** @type {?} */\n const backupStateStyler = this._stateStyles['*'];\n /** @type {?} */\n const stateStyler = this._stateStyles[stateName];\n /** @type {?} */\n const backupStyles = backupStateStyler ? backupStateStyler.buildStyles(params, errors) : {};\n return stateStyler ? stateStyler.buildStyles(params, errors) : backupStyles;\n }\n /**\n * @param {?} driver\n * @param {?} element\n * @param {?} currentState\n * @param {?} nextState\n * @param {?} enterClassName\n * @param {?} leaveClassName\n * @param {?=} currentOptions\n * @param {?=} nextOptions\n * @param {?=} subInstructions\n * @param {?=} skipAstBuild\n * @return {?}\n */\n build(driver, element, currentState, nextState, enterClassName, leaveClassName, currentOptions, nextOptions, subInstructions, skipAstBuild) {\n /** @type {?} */\n const errors = [];\n /** @type {?} */\n const transitionAnimationParams = this.ast.options && this.ast.options.params || EMPTY_OBJECT;\n /** @type {?} */\n const currentAnimationParams = currentOptions && currentOptions.params || EMPTY_OBJECT;\n /** @type {?} */\n const currentStateStyles = this.buildStyles(currentState, currentAnimationParams, errors);\n /** @type {?} */\n const nextAnimationParams = nextOptions && nextOptions.params || EMPTY_OBJECT;\n /** @type {?} */\n const nextStateStyles = this.buildStyles(nextState, nextAnimationParams, errors);\n /** @type {?} */\n const queriedElements = new Set();\n /** @type {?} */\n const preStyleMap = new Map();\n /** @type {?} */\n const postStyleMap = new Map();\n /** @type {?} */\n const isRemoval = nextState === 'void';\n /** @type {?} */\n const animationOptions = { params: Object.assign(Object.assign({}, transitionAnimationParams), nextAnimationParams) };\n /** @type {?} */\n const timelines = skipAstBuild ? [] : buildAnimationTimelines(driver, element, this.ast.animation, enterClassName, leaveClassName, currentStateStyles, nextStateStyles, animationOptions, subInstructions, errors);\n /** @type {?} */\n let totalTime = 0;\n timelines.forEach((/**\n * @param {?} tl\n * @return {?}\n */\n tl => { totalTime = Math.max(tl.duration + tl.delay, totalTime); }));\n if (errors.length) {\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, [], [], preStyleMap, postStyleMap, totalTime, errors);\n }\n timelines.forEach((/**\n * @param {?} tl\n * @return {?}\n */\n tl => {\n /** @type {?} */\n const elm = tl.element;\n /** @type {?} */\n const preProps = getOrSetAsInMap(preStyleMap, elm, {});\n tl.preStyleProps.forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => preProps[prop] = true));\n /** @type {?} */\n const postProps = getOrSetAsInMap(postStyleMap, elm, {});\n tl.postStyleProps.forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => postProps[prop] = true));\n if (elm !== element) {\n queriedElements.add(elm);\n }\n }));\n /** @type {?} */\n const queriedElementsList = iteratorToArray(queriedElements.values());\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, timelines, queriedElementsList, preStyleMap, postStyleMap, totalTime);\n }\n}\nif (false) {\n /**\n * @type {?}\n * @private\n */\n AnimationTransitionFactory.prototype._triggerName;\n /** @type {?} */\n AnimationTransitionFactory.prototype.ast;\n /**\n * @type {?}\n * @private\n */\n AnimationTransitionFactory.prototype._stateStyles;\n}\n/**\n * @param {?} matchFns\n * @param {?} currentState\n * @param {?} nextState\n * @param {?} element\n * @param {?} params\n * @return {?}\n */\nfunction oneOrMoreTransitionsMatch(matchFns, currentState, nextState, element, params) {\n return matchFns.some((/**\n * @param {?} fn\n * @return {?}\n */\n fn => fn(currentState, nextState, element, params)));\n}\nclass AnimationStateStyles {\n /**\n * @param {?} styles\n * @param {?} defaultParams\n */\n constructor(styles, defaultParams) {\n this.styles = styles;\n this.defaultParams = defaultParams;\n }\n /**\n * @param {?} params\n * @param {?} errors\n * @return {?}\n */\n buildStyles(params, errors) {\n /** @type {?} */\n const finalStyles = {};\n /** @type {?} */\n const combinedParams = copyObj(this.defaultParams);\n Object.keys(params).forEach((/**\n * @param {?} key\n * @return {?}\n */\n key => {\n /** @type {?} */\n const value = params[key];\n if (value != null) {\n combinedParams[key] = value;\n }\n }));\n this.styles.styles.forEach((/**\n * @param {?} value\n * @return {?}\n */\n value => {\n if (typeof value !== 'string') {\n /** @type {?} */\n const styleObj = (/** @type {?} */ (value));\n Object.keys(styleObj).forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => {\n /** @type {?} */\n let val = styleObj[prop];\n if (val.length > 1) {\n val = interpolateParams(val, combinedParams, errors);\n }\n finalStyles[prop] = val;\n }));\n }\n }));\n return finalStyles;\n }\n}\nif (false) {\n /**\n * @type {?}\n * @private\n */\n AnimationStateStyles.prototype.styles;\n /**\n * @type {?}\n * @private\n */\n AnimationStateStyles.prototype.defaultParams;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/browser/src/dsl/animation_trigger.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * \\@publicApi\n * @param {?} name\n * @param {?} ast\n * @return {?}\n */\nfunction buildTrigger(name, ast) {\n return new AnimationTrigger(name, ast);\n}\n/**\n * \\@publicApi\n */\nclass AnimationTrigger {\n /**\n * @param {?} name\n * @param {?} ast\n */\n constructor(name, ast) {\n this.name = name;\n this.ast = ast;\n this.transitionFactories = [];\n this.states = {};\n ast.states.forEach((/**\n * @param {?} ast\n * @return {?}\n */\n ast => {\n /** @type {?} */\n const defaultParams = (ast.options && ast.options.params) || {};\n this.states[ast.name] = new AnimationStateStyles(ast.style, defaultParams);\n }));\n balanceProperties(this.states, 'true', '1');\n balanceProperties(this.states, 'false', '0');\n ast.transitions.forEach((/**\n * @param {?} ast\n * @return {?}\n */\n ast => {\n this.transitionFactories.push(new AnimationTransitionFactory(name, ast, this.states));\n }));\n this.fallbackTransition = createFallbackTransition(name, this.states);\n }\n /**\n * @return {?}\n */\n get containsQueries() { return this.ast.queryCount > 0; }\n /**\n * @param {?} currentState\n * @param {?} nextState\n * @param {?} element\n * @param {?} params\n * @return {?}\n */\n matchTransition(currentState, nextState, element, params) {\n /** @type {?} */\n const entry = this.transitionFactories.find((/**\n * @param {?} f\n * @return {?}\n */\n f => f.match(currentState, nextState, element, params)));\n return entry || null;\n }\n /**\n * @param {?} currentState\n * @param {?} params\n * @param {?} errors\n * @return {?}\n */\n matchStyles(currentState, params, errors) {\n return this.fallbackTransition.buildStyles(currentState, params, errors);\n }\n}\nif (false) {\n /** @type {?} */\n AnimationTrigger.prototype.transitionFactories;\n /** @type {?} */\n AnimationTrigger.prototype.fallbackTransition;\n /** @type {?} */\n AnimationTrigger.prototype.states;\n /** @type {?} */\n AnimationTrigger.prototype.name;\n /** @type {?} */\n AnimationTrigger.prototype.ast;\n}\n/**\n * @param {?} triggerName\n * @param {?} states\n * @return {?}\n */\nfunction createFallbackTransition(triggerName, states) {\n /** @type {?} */\n const matchers = [(/**\n * @param {?} fromState\n * @param {?} toState\n * @return {?}\n */\n (fromState, toState) => true)];\n /** @type {?} */\n const animation = { type: 2 /* Sequence */, steps: [], options: null };\n /** @type {?} */\n const transition = {\n type: 1 /* Transition */,\n animation,\n matchers,\n options: null,\n queryCount: 0,\n depCount: 0\n };\n return new AnimationTransitionFactory(triggerName, transition, states);\n}\n/**\n * @param {?} obj\n * @param {?} key1\n * @param {?} key2\n * @return {?}\n */\nfunction balanceProperties(obj, key1, key2) {\n if (obj.hasOwnProperty(key1)) {\n if (!obj.hasOwnProperty(key2)) {\n obj[key2] = obj[key1];\n }\n }\n else if (obj.hasOwnProperty(key2)) {\n obj[key1] = obj[key2];\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/browser/src/render/timeline_animation_engine.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst EMPTY_INSTRUCTION_MAP = new ElementInstructionMap();\nclass TimelineAnimationEngine {\n /**\n * @param {?} bodyNode\n * @param {?} _driver\n * @param {?} _normalizer\n */\n constructor(bodyNode, _driver, _normalizer) {\n this.bodyNode = bodyNode;\n this._driver = _driver;\n this._normalizer = _normalizer;\n this._animations = {};\n this._playersById = {};\n this.players = [];\n }\n /**\n * @param {?} id\n * @param {?} metadata\n * @return {?}\n */\n register(id, metadata) {\n /** @type {?} */\n const errors = [];\n /** @type {?} */\n const ast = buildAnimationAst(this._driver, metadata, errors);\n if (errors.length) {\n throw new Error(`Unable to build the animation due to the following errors: ${errors.join(\"\\n\")}`);\n }\n else {\n this._animations[id] = ast;\n }\n }\n /**\n * @private\n * @param {?} i\n * @param {?} preStyles\n * @param {?=} postStyles\n * @return {?}\n */\n _buildPlayer(i, preStyles, postStyles) {\n /** @type {?} */\n const element = i.element;\n /** @type {?} */\n const keyframes = normalizeKeyframes(this._driver, this._normalizer, element, i.keyframes, preStyles, postStyles);\n return this._driver.animate(element, keyframes, i.duration, i.delay, i.easing, [], true);\n }\n /**\n * @param {?} id\n * @param {?} element\n * @param {?=} options\n * @return {?}\n */\n create(id, element, options = {}) {\n /** @type {?} */\n const errors = [];\n /** @type {?} */\n const ast = this._animations[id];\n /** @type {?} */\n let instructions;\n /** @type {?} */\n const autoStylesMap = new Map();\n if (ast) {\n instructions = buildAnimationTimelines(this._driver, element, ast, ENTER_CLASSNAME, LEAVE_CLASSNAME, {}, {}, options, EMPTY_INSTRUCTION_MAP, errors);\n instructions.forEach((/**\n * @param {?} inst\n * @return {?}\n */\n inst => {\n /** @type {?} */\n const styles = getOrSetAsInMap(autoStylesMap, inst.element, {});\n inst.postStyleProps.forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => styles[prop] = null));\n }));\n }\n else {\n errors.push('The requested animation doesn\\'t exist or has already been destroyed');\n instructions = [];\n }\n if (errors.length) {\n throw new Error(`Unable to create the animation due to the following errors: ${errors.join(\"\\n\")}`);\n }\n autoStylesMap.forEach((/**\n * @param {?} styles\n * @param {?} element\n * @return {?}\n */\n (styles, element) => {\n Object.keys(styles).forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => { styles[prop] = this._driver.computeStyle(element, prop, AUTO_STYLE); }));\n }));\n /** @type {?} */\n const players = instructions.map((/**\n * @param {?} i\n * @return {?}\n */\n i => {\n /** @type {?} */\n const styles = autoStylesMap.get(i.element);\n return this._buildPlayer(i, {}, styles);\n }));\n /** @type {?} */\n const player = optimizeGroupPlayer(players);\n this._playersById[id] = player;\n player.onDestroy((/**\n * @return {?}\n */\n () => this.destroy(id)));\n this.players.push(player);\n return player;\n }\n /**\n * @param {?} id\n * @return {?}\n */\n destroy(id) {\n /** @type {?} */\n const player = this._getPlayer(id);\n player.destroy();\n delete this._playersById[id];\n /** @type {?} */\n const index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n }\n /**\n * @private\n * @param {?} id\n * @return {?}\n */\n _getPlayer(id) {\n /** @type {?} */\n const player = this._playersById[id];\n if (!player) {\n throw new Error(`Unable to find the timeline player referenced by ${id}`);\n }\n return player;\n }\n /**\n * @param {?} id\n * @param {?} element\n * @param {?} eventName\n * @param {?} callback\n * @return {?}\n */\n listen(id, element, eventName, callback) {\n // triggerName, fromState, toState are all ignored for timeline animations\n /** @type {?} */\n const baseEvent = makeAnimationEvent(element, '', '', '');\n listenOnPlayer(this._getPlayer(id), eventName, baseEvent, callback);\n return (/**\n * @return {?}\n */\n () => { });\n }\n /**\n * @param {?} id\n * @param {?} element\n * @param {?} command\n * @param {?} args\n * @return {?}\n */\n command(id, element, command, args) {\n if (command == 'register') {\n this.register(id, (/** @type {?} */ (args[0])));\n return;\n }\n if (command == 'create') {\n /** @type {?} */\n const options = (/** @type {?} */ ((args[0] || {})));\n this.create(id, element, options);\n return;\n }\n /** @type {?} */\n const player = this._getPlayer(id);\n switch (command) {\n case 'play':\n player.play();\n break;\n case 'pause':\n player.pause();\n break;\n case 'reset':\n player.reset();\n break;\n case 'restart':\n player.restart();\n break;\n case 'finish':\n player.finish();\n break;\n case 'init':\n player.init();\n break;\n case 'setPosition':\n player.setPosition(parseFloat((/** @type {?} */ (args[0]))));\n break;\n case 'destroy':\n this.destroy(id);\n break;\n }\n }\n}\nif (false) {\n /**\n * @type {?}\n * @private\n */\n TimelineAnimationEngine.prototype._animations;\n /**\n * @type {?}\n * @private\n */\n TimelineAnimationEngine.prototype._playersById;\n /** @type {?} */\n TimelineAnimationEngine.prototype.players;\n /** @type {?} */\n TimelineAnimationEngine.prototype.bodyNode;\n /**\n * @type {?}\n * @private\n */\n TimelineAnimationEngine.prototype._driver;\n /**\n * @type {?}\n * @private\n */\n TimelineAnimationEngine.prototype._normalizer;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/browser/src/render/transition_animation_engine.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst QUEUED_CLASSNAME = 'ng-animate-queued';\n/** @type {?} */\nconst QUEUED_SELECTOR = '.ng-animate-queued';\n/** @type {?} */\nconst DISABLED_CLASSNAME = 'ng-animate-disabled';\n/** @type {?} */\nconst DISABLED_SELECTOR = '.ng-animate-disabled';\n/** @type {?} */\nconst STAR_CLASSNAME = 'ng-star-inserted';\n/** @type {?} */\nconst STAR_SELECTOR = '.ng-star-inserted';\n/** @type {?} */\nconst EMPTY_PLAYER_ARRAY = [];\n/** @type {?} */\nconst NULL_REMOVAL_STATE = {\n namespaceId: '',\n setForRemoval: false,\n setForMove: false,\n hasAnimation: false,\n removedBeforeQueried: false\n};\n/** @type {?} */\nconst NULL_REMOVED_QUERIED_STATE = {\n namespaceId: '',\n setForMove: false,\n setForRemoval: false,\n hasAnimation: false,\n removedBeforeQueried: true\n};\n/**\n * @record\n */\nfunction TriggerListener() { }\nif (false) {\n /** @type {?} */\n TriggerListener.prototype.name;\n /** @type {?} */\n TriggerListener.prototype.phase;\n /** @type {?} */\n TriggerListener.prototype.callback;\n}\n/**\n * @record\n */\nfunction QueueInstruction() { }\nif (false) {\n /** @type {?} */\n QueueInstruction.prototype.element;\n /** @type {?} */\n QueueInstruction.prototype.triggerName;\n /** @type {?} */\n QueueInstruction.prototype.fromState;\n /** @type {?} */\n QueueInstruction.prototype.toState;\n /** @type {?} */\n QueueInstruction.prototype.transition;\n /** @type {?} */\n QueueInstruction.prototype.player;\n /** @type {?} */\n QueueInstruction.prototype.isFallbackTransition;\n}\n/** @type {?} */\nconst REMOVAL_FLAG = '__ng_removed';\n/**\n * @record\n */\nfunction ElementAnimationState() { }\nif (false) {\n /** @type {?} */\n ElementAnimationState.prototype.setForRemoval;\n /** @type {?} */\n ElementAnimationState.prototype.setForMove;\n /** @type {?} */\n ElementAnimationState.prototype.hasAnimation;\n /** @type {?} */\n ElementAnimationState.prototype.namespaceId;\n /** @type {?} */\n ElementAnimationState.prototype.removedBeforeQueried;\n}\nclass StateValue {\n /**\n * @param {?} input\n * @param {?=} namespaceId\n */\n constructor(input, namespaceId = '') {\n this.namespaceId = namespaceId;\n /** @type {?} */\n const isObj = input && input.hasOwnProperty('value');\n /** @type {?} */\n const value = isObj ? input['value'] : input;\n this.value = normalizeTriggerValue(value);\n if (isObj) {\n /** @type {?} */\n const options = copyObj((/** @type {?} */ (input)));\n delete options['value'];\n this.options = (/** @type {?} */ (options));\n }\n else {\n this.options = {};\n }\n if (!this.options.params) {\n this.options.params = {};\n }\n }\n /**\n * @return {?}\n */\n get params() { return (/** @type {?} */ (this.options.params)); }\n /**\n * @param {?} options\n * @return {?}\n */\n absorbOptions(options) {\n /** @type {?} */\n const newParams = options.params;\n if (newParams) {\n /** @type {?} */\n const oldParams = (/** @type {?} */ (this.options.params));\n Object.keys(newParams).forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => {\n if (oldParams[prop] == null) {\n oldParams[prop] = newParams[prop];\n }\n }));\n }\n }\n}\nif (false) {\n /** @type {?} */\n StateValue.prototype.value;\n /** @type {?} */\n StateValue.prototype.options;\n /** @type {?} */\n StateValue.prototype.namespaceId;\n}\n/** @type {?} */\nconst VOID_VALUE = 'void';\n/** @type {?} */\nconst DEFAULT_STATE_VALUE = new StateValue(VOID_VALUE);\nclass AnimationTransitionNamespace {\n /**\n * @param {?} id\n * @param {?} hostElement\n * @param {?} _engine\n */\n constructor(id, hostElement, _engine) {\n this.id = id;\n this.hostElement = hostElement;\n this._engine = _engine;\n this.players = [];\n this._triggers = {};\n this._queue = [];\n this._elementListeners = new Map();\n this._hostClassName = 'ng-tns-' + id;\n addClass(hostElement, this._hostClassName);\n }\n /**\n * @param {?} element\n * @param {?} name\n * @param {?} phase\n * @param {?} callback\n * @return {?}\n */\n listen(element, name, phase, callback) {\n if (!this._triggers.hasOwnProperty(name)) {\n throw new Error(`Unable to listen on the animation trigger event \"${phase}\" because the animation trigger \"${name}\" doesn\\'t exist!`);\n }\n if (phase == null || phase.length == 0) {\n throw new Error(`Unable to listen on the animation trigger \"${name}\" because the provided event is undefined!`);\n }\n if (!isTriggerEventValid(phase)) {\n throw new Error(`The provided animation trigger event \"${phase}\" for the animation trigger \"${name}\" is not supported!`);\n }\n /** @type {?} */\n const listeners = getOrSetAsInMap(this._elementListeners, element, []);\n /** @type {?} */\n const data = { name, phase, callback };\n listeners.push(data);\n /** @type {?} */\n const triggersWithStates = getOrSetAsInMap(this._engine.statesByElement, element, {});\n if (!triggersWithStates.hasOwnProperty(name)) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + name);\n triggersWithStates[name] = DEFAULT_STATE_VALUE;\n }\n return (/**\n * @return {?}\n */\n () => {\n // the event listener is removed AFTER the flush has occurred such\n // that leave animations callbacks can fire (otherwise if the node\n // is removed in between then the listeners would be deregistered)\n this._engine.afterFlush((/**\n * @return {?}\n */\n () => {\n /** @type {?} */\n const index = listeners.indexOf(data);\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n if (!this._triggers[name]) {\n delete triggersWithStates[name];\n }\n }));\n });\n }\n /**\n * @param {?} name\n * @param {?} ast\n * @return {?}\n */\n register(name, ast) {\n if (this._triggers[name]) {\n // throw\n return false;\n }\n else {\n this._triggers[name] = ast;\n return true;\n }\n }\n /**\n * @private\n * @param {?} name\n * @return {?}\n */\n _getTrigger(name) {\n /** @type {?} */\n const trigger = this._triggers[name];\n if (!trigger) {\n throw new Error(`The provided animation trigger \"${name}\" has not been registered!`);\n }\n return trigger;\n }\n /**\n * @param {?} element\n * @param {?} triggerName\n * @param {?} value\n * @param {?=} defaultToFallback\n * @return {?}\n */\n trigger(element, triggerName, value, defaultToFallback = true) {\n /** @type {?} */\n const trigger = this._getTrigger(triggerName);\n /** @type {?} */\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n /** @type {?} */\n let triggersWithStates = this._engine.statesByElement.get(element);\n if (!triggersWithStates) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + triggerName);\n this._engine.statesByElement.set(element, triggersWithStates = {});\n }\n /** @type {?} */\n let fromState = triggersWithStates[triggerName];\n /** @type {?} */\n const toState = new StateValue(value, this.id);\n /** @type {?} */\n const isObj = value && value.hasOwnProperty('value');\n if (!isObj && fromState) {\n toState.absorbOptions(fromState.options);\n }\n triggersWithStates[triggerName] = toState;\n if (!fromState) {\n fromState = DEFAULT_STATE_VALUE;\n }\n /** @type {?} */\n const isRemoval = toState.value === VOID_VALUE;\n // normally this isn't reached by here, however, if an object expression\n // is passed in then it may be a new object each time. Comparing the value\n // is important since that will stay the same despite there being a new object.\n // The removal arc here is special cased because the same element is triggered\n // twice in the event that it contains animations on the outer/inner portions\n // of the host container\n if (!isRemoval && fromState.value === toState.value) {\n // this means that despite the value not changing, some inner params\n // have changed which means that the animation final styles need to be applied\n if (!objEquals(fromState.params, toState.params)) {\n /** @type {?} */\n const errors = [];\n /** @type {?} */\n const fromStyles = trigger.matchStyles(fromState.value, fromState.params, errors);\n /** @type {?} */\n const toStyles = trigger.matchStyles(toState.value, toState.params, errors);\n if (errors.length) {\n this._engine.reportError(errors);\n }\n else {\n this._engine.afterFlush((/**\n * @return {?}\n */\n () => {\n eraseStyles(element, fromStyles);\n setStyles(element, toStyles);\n }));\n }\n }\n return;\n }\n /** @type {?} */\n const playersOnElement = getOrSetAsInMap(this._engine.playersByElement, element, []);\n playersOnElement.forEach((/**\n * @param {?} player\n * @return {?}\n */\n player => {\n // only remove the player if it is queued on the EXACT same trigger/namespace\n // we only also deal with queued players here because if the animation has\n // started then we want to keep the player alive until the flush happens\n // (which is where the previousPlayers are passed into the new palyer)\n if (player.namespaceId == this.id && player.triggerName == triggerName && player.queued) {\n player.destroy();\n }\n }));\n /** @type {?} */\n let transition = trigger.matchTransition(fromState.value, toState.value, element, toState.params);\n /** @type {?} */\n let isFallbackTransition = false;\n if (!transition) {\n if (!defaultToFallback)\n return;\n transition = trigger.fallbackTransition;\n isFallbackTransition = true;\n }\n this._engine.totalQueuedPlayers++;\n this._queue.push({ element, triggerName, transition, fromState, toState, player, isFallbackTransition });\n if (!isFallbackTransition) {\n addClass(element, QUEUED_CLASSNAME);\n player.onStart((/**\n * @return {?}\n */\n () => { removeClass(element, QUEUED_CLASSNAME); }));\n }\n player.onDone((/**\n * @return {?}\n */\n () => {\n /** @type {?} */\n let index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n /** @type {?} */\n const players = this._engine.playersByElement.get(element);\n if (players) {\n /** @type {?} */\n let index = players.indexOf(player);\n if (index >= 0) {\n players.splice(index, 1);\n }\n }\n }));\n this.players.push(player);\n playersOnElement.push(player);\n return player;\n }\n /**\n * @param {?} name\n * @return {?}\n */\n deregister(name) {\n delete this._triggers[name];\n this._engine.statesByElement.forEach((/**\n * @param {?} stateMap\n * @param {?} element\n * @return {?}\n */\n (stateMap, element) => { delete stateMap[name]; }));\n this._elementListeners.forEach((/**\n * @param {?} listeners\n * @param {?} element\n * @return {?}\n */\n (listeners, element) => {\n this._elementListeners.set(element, listeners.filter((/**\n * @param {?} entry\n * @return {?}\n */\n entry => { return entry.name != name; })));\n }));\n }\n /**\n * @param {?} element\n * @return {?}\n */\n clearElementCache(element) {\n this._engine.statesByElement.delete(element);\n this._elementListeners.delete(element);\n /** @type {?} */\n const elementPlayers = this._engine.playersByElement.get(element);\n if (elementPlayers) {\n elementPlayers.forEach((/**\n * @param {?} player\n * @return {?}\n */\n player => player.destroy()));\n this._engine.playersByElement.delete(element);\n }\n }\n /**\n * @private\n * @param {?} rootElement\n * @param {?} context\n * @return {?}\n */\n _signalRemovalForInnerTriggers(rootElement, context) {\n /** @type {?} */\n const elements = this._engine.driver.query(rootElement, NG_TRIGGER_SELECTOR, true);\n // emulate a leave animation for all inner nodes within this node.\n // If there are no animations found for any of the nodes then clear the cache\n // for the element.\n elements.forEach((/**\n * @param {?} elm\n * @return {?}\n */\n elm => {\n // this means that an inner remove() operation has already kicked off\n // the animation on this element...\n if (elm[REMOVAL_FLAG])\n return;\n /** @type {?} */\n const namespaces = this._engine.fetchNamespacesByElement(elm);\n if (namespaces.size) {\n namespaces.forEach((/**\n * @param {?} ns\n * @return {?}\n */\n ns => ns.triggerLeaveAnimation(elm, context, false, true)));\n }\n else {\n this.clearElementCache(elm);\n }\n }));\n // If the child elements were removed along with the parent, their animations might not\n // have completed. Clear all the elements from the cache so we don't end up with a memory leak.\n this._engine.afterFlushAnimationsDone((/**\n * @return {?}\n */\n () => elements.forEach((/**\n * @param {?} elm\n * @return {?}\n */\n elm => this.clearElementCache(elm)))));\n }\n /**\n * @param {?} element\n * @param {?} context\n * @param {?=} destroyAfterComplete\n * @param {?=} defaultToFallback\n * @return {?}\n */\n triggerLeaveAnimation(element, context, destroyAfterComplete, defaultToFallback) {\n /** @type {?} */\n const triggerStates = this._engine.statesByElement.get(element);\n if (triggerStates) {\n /** @type {?} */\n const players = [];\n Object.keys(triggerStates).forEach((/**\n * @param {?} triggerName\n * @return {?}\n */\n triggerName => {\n // this check is here in the event that an element is removed\n // twice (both on the host level and the component level)\n if (this._triggers[triggerName]) {\n /** @type {?} */\n const player = this.trigger(element, triggerName, VOID_VALUE, defaultToFallback);\n if (player) {\n players.push(player);\n }\n }\n }));\n if (players.length) {\n this._engine.markElementAsRemoved(this.id, element, true, context);\n if (destroyAfterComplete) {\n optimizeGroupPlayer(players).onDone((/**\n * @return {?}\n */\n () => this._engine.processLeaveNode(element)));\n }\n return true;\n }\n }\n return false;\n }\n /**\n * @param {?} element\n * @return {?}\n */\n prepareLeaveAnimationListeners(element) {\n /** @type {?} */\n const listeners = this._elementListeners.get(element);\n if (listeners) {\n /** @type {?} */\n const visitedTriggers = new Set();\n listeners.forEach((/**\n * @param {?} listener\n * @return {?}\n */\n listener => {\n /** @type {?} */\n const triggerName = listener.name;\n if (visitedTriggers.has(triggerName))\n return;\n visitedTriggers.add(triggerName);\n /** @type {?} */\n const trigger = this._triggers[triggerName];\n /** @type {?} */\n const transition = trigger.fallbackTransition;\n /** @type {?} */\n const elementStates = (/** @type {?} */ (this._engine.statesByElement.get(element)));\n /** @type {?} */\n const fromState = elementStates[triggerName] || DEFAULT_STATE_VALUE;\n /** @type {?} */\n const toState = new StateValue(VOID_VALUE);\n /** @type {?} */\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n this._engine.totalQueuedPlayers++;\n this._queue.push({\n element,\n triggerName,\n transition,\n fromState,\n toState,\n player,\n isFallbackTransition: true\n });\n }));\n }\n }\n /**\n * @param {?} element\n * @param {?} context\n * @return {?}\n */\n removeNode(element, context) {\n /** @type {?} */\n const engine = this._engine;\n if (element.childElementCount) {\n this._signalRemovalForInnerTriggers(element, context);\n }\n // this means that a * => VOID animation was detected and kicked off\n if (this.triggerLeaveAnimation(element, context, true))\n return;\n // find the player that is animating and make sure that the\n // removal is delayed until that player has completed\n /** @type {?} */\n let containsPotentialParentTransition = false;\n if (engine.totalAnimations) {\n /** @type {?} */\n const currentPlayers = engine.players.length ? engine.playersByQueriedElement.get(element) : [];\n // when this `if statement` does not continue forward it means that\n // a previous animation query has selected the current element and\n // is animating it. In this situation want to continue forwards and\n // allow the element to be queued up for animation later.\n if (currentPlayers && currentPlayers.length) {\n containsPotentialParentTransition = true;\n }\n else {\n /** @type {?} */\n let parent = element;\n while (parent = parent.parentNode) {\n /** @type {?} */\n const triggers = engine.statesByElement.get(parent);\n if (triggers) {\n containsPotentialParentTransition = true;\n break;\n }\n }\n }\n }\n // at this stage we know that the element will either get removed\n // during flush or will be picked up by a parent query. Either way\n // we need to fire the listeners for this element when it DOES get\n // removed (once the query parent animation is done or after flush)\n this.prepareLeaveAnimationListeners(element);\n // whether or not a parent has an animation we need to delay the deferral of the leave\n // operation until we have more information (which we do after flush() has been called)\n if (containsPotentialParentTransition) {\n engine.markElementAsRemoved(this.id, element, false, context);\n }\n else {\n /** @type {?} */\n const removalFlag = element[REMOVAL_FLAG];\n if (!removalFlag || removalFlag === NULL_REMOVAL_STATE) {\n // we do this after the flush has occurred such\n // that the callbacks can be fired\n engine.afterFlush((/**\n * @return {?}\n */\n () => this.clearElementCache(element)));\n engine.destroyInnerAnimations(element);\n engine._onRemovalComplete(element, context);\n }\n }\n }\n /**\n * @param {?} element\n * @param {?} parent\n * @return {?}\n */\n insertNode(element, parent) { addClass(element, this._hostClassName); }\n /**\n * @param {?} microtaskId\n * @return {?}\n */\n drainQueuedTransitions(microtaskId) {\n /** @type {?} */\n const instructions = [];\n this._queue.forEach((/**\n * @param {?} entry\n * @return {?}\n */\n entry => {\n /** @type {?} */\n const player = entry.player;\n if (player.destroyed)\n return;\n /** @type {?} */\n const element = entry.element;\n /** @type {?} */\n const listeners = this._elementListeners.get(element);\n if (listeners) {\n listeners.forEach((/**\n * @param {?} listener\n * @return {?}\n */\n (listener) => {\n if (listener.name == entry.triggerName) {\n /** @type {?} */\n const baseEvent = makeAnimationEvent(element, entry.triggerName, entry.fromState.value, entry.toState.value);\n ((/** @type {?} */ (baseEvent)))['_data'] = microtaskId;\n listenOnPlayer(entry.player, listener.phase, baseEvent, listener.callback);\n }\n }));\n }\n if (player.markedForDestroy) {\n this._engine.afterFlush((/**\n * @return {?}\n */\n () => {\n // now we can destroy the element properly since the event listeners have\n // been bound to the player\n player.destroy();\n }));\n }\n else {\n instructions.push(entry);\n }\n }));\n this._queue = [];\n return instructions.sort((/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\n (a, b) => {\n // if depCount == 0 them move to front\n // otherwise if a contains b then move back\n /** @type {?} */\n const d0 = a.transition.ast.depCount;\n /** @type {?} */\n const d1 = b.transition.ast.depCount;\n if (d0 == 0 || d1 == 0) {\n return d0 - d1;\n }\n return this._engine.driver.containsElement(a.element, b.element) ? 1 : -1;\n }));\n }\n /**\n * @param {?} context\n * @return {?}\n */\n destroy(context) {\n this.players.forEach((/**\n * @param {?} p\n * @return {?}\n */\n p => p.destroy()));\n this._signalRemovalForInnerTriggers(this.hostElement, context);\n }\n /**\n * @param {?} element\n * @return {?}\n */\n elementContainsData(element) {\n /** @type {?} */\n let containsData = false;\n if (this._elementListeners.has(element))\n containsData = true;\n containsData =\n (this._queue.find((/**\n * @param {?} entry\n * @return {?}\n */\n entry => entry.element === element)) ? true : false) || containsData;\n return containsData;\n }\n}\nif (false) {\n /** @type {?} */\n AnimationTransitionNamespace.prototype.players;\n /**\n * @type {?}\n * @private\n */\n AnimationTransitionNamespace.prototype._triggers;\n /**\n * @type {?}\n * @private\n */\n AnimationTransitionNamespace.prototype._queue;\n /**\n * @type {?}\n * @private\n */\n AnimationTransitionNamespace.prototype._elementListeners;\n /**\n * @type {?}\n * @private\n */\n AnimationTransitionNamespace.prototype._hostClassName;\n /** @type {?} */\n AnimationTransitionNamespace.prototype.id;\n /** @type {?} */\n AnimationTransitionNamespace.prototype.hostElement;\n /**\n * @type {?}\n * @private\n */\n AnimationTransitionNamespace.prototype._engine;\n}\n/**\n * @record\n */\nfunction QueuedTransition() { }\nif (false) {\n /** @type {?} */\n QueuedTransition.prototype.element;\n /** @type {?} */\n QueuedTransition.prototype.instruction;\n /** @type {?} */\n QueuedTransition.prototype.player;\n}\nclass TransitionAnimationEngine {\n /**\n * @param {?} bodyNode\n * @param {?} driver\n * @param {?} _normalizer\n */\n constructor(bodyNode, driver, _normalizer) {\n this.bodyNode = bodyNode;\n this.driver = driver;\n this._normalizer = _normalizer;\n this.players = [];\n this.newHostElements = new Map();\n this.playersByElement = new Map();\n this.playersByQueriedElement = new Map();\n this.statesByElement = new Map();\n this.disabledNodes = new Set();\n this.totalAnimations = 0;\n this.totalQueuedPlayers = 0;\n this._namespaceLookup = {};\n this._namespaceList = [];\n this._flushFns = [];\n this._whenQuietFns = [];\n this.namespacesByHostElement = new Map();\n this.collectedEnterElements = [];\n this.collectedLeaveElements = [];\n // this method is designed to be overridden by the code that uses this engine\n this.onRemovalComplete = (/**\n * @param {?} element\n * @param {?} context\n * @return {?}\n */\n (element, context) => { });\n }\n /**\n * \\@internal\n * @param {?} element\n * @param {?} context\n * @return {?}\n */\n _onRemovalComplete(element, context) { this.onRemovalComplete(element, context); }\n /**\n * @return {?}\n */\n get queuedPlayers() {\n /** @type {?} */\n const players = [];\n this._namespaceList.forEach((/**\n * @param {?} ns\n * @return {?}\n */\n ns => {\n ns.players.forEach((/**\n * @param {?} player\n * @return {?}\n */\n player => {\n if (player.queued) {\n players.push(player);\n }\n }));\n }));\n return players;\n }\n /**\n * @param {?} namespaceId\n * @param {?} hostElement\n * @return {?}\n */\n createNamespace(namespaceId, hostElement) {\n /** @type {?} */\n const ns = new AnimationTransitionNamespace(namespaceId, hostElement, this);\n if (hostElement.parentNode) {\n this._balanceNamespaceList(ns, hostElement);\n }\n else {\n // defer this later until flush during when the host element has\n // been inserted so that we know exactly where to place it in\n // the namespace list\n this.newHostElements.set(hostElement, ns);\n // given that this host element is apart of the animation code, it\n // may or may not be inserted by a parent node that is an of an\n // animation renderer type. If this happens then we can still have\n // access to this item when we query for :enter nodes. If the parent\n // is a renderer then the set data-structure will normalize the entry\n this.collectEnterElement(hostElement);\n }\n return this._namespaceLookup[namespaceId] = ns;\n }\n /**\n * @private\n * @param {?} ns\n * @param {?} hostElement\n * @return {?}\n */\n _balanceNamespaceList(ns, hostElement) {\n /** @type {?} */\n const limit = this._namespaceList.length - 1;\n if (limit >= 0) {\n /** @type {?} */\n let found = false;\n for (let i = limit; i >= 0; i--) {\n /** @type {?} */\n const nextNamespace = this._namespaceList[i];\n if (this.driver.containsElement(nextNamespace.hostElement, hostElement)) {\n this._namespaceList.splice(i + 1, 0, ns);\n found = true;\n break;\n }\n }\n if (!found) {\n this._namespaceList.splice(0, 0, ns);\n }\n }\n else {\n this._namespaceList.push(ns);\n }\n this.namespacesByHostElement.set(hostElement, ns);\n return ns;\n }\n /**\n * @param {?} namespaceId\n * @param {?} hostElement\n * @return {?}\n */\n register(namespaceId, hostElement) {\n /** @type {?} */\n let ns = this._namespaceLookup[namespaceId];\n if (!ns) {\n ns = this.createNamespace(namespaceId, hostElement);\n }\n return ns;\n }\n /**\n * @param {?} namespaceId\n * @param {?} name\n * @param {?} trigger\n * @return {?}\n */\n registerTrigger(namespaceId, name, trigger) {\n /** @type {?} */\n let ns = this._namespaceLookup[namespaceId];\n if (ns && ns.register(name, trigger)) {\n this.totalAnimations++;\n }\n }\n /**\n * @param {?} namespaceId\n * @param {?} context\n * @return {?}\n */\n destroy(namespaceId, context) {\n if (!namespaceId)\n return;\n /** @type {?} */\n const ns = this._fetchNamespace(namespaceId);\n this.afterFlush((/**\n * @return {?}\n */\n () => {\n this.namespacesByHostElement.delete(ns.hostElement);\n delete this._namespaceLookup[namespaceId];\n /** @type {?} */\n const index = this._namespaceList.indexOf(ns);\n if (index >= 0) {\n this._namespaceList.splice(index, 1);\n }\n }));\n this.afterFlushAnimationsDone((/**\n * @return {?}\n */\n () => ns.destroy(context)));\n }\n /**\n * @private\n * @param {?} id\n * @return {?}\n */\n _fetchNamespace(id) { return this._namespaceLookup[id]; }\n /**\n * @param {?} element\n * @return {?}\n */\n fetchNamespacesByElement(element) {\n // normally there should only be one namespace per element, however\n // if @triggers are placed on both the component element and then\n // its host element (within the component code) then there will be\n // two namespaces returned. We use a set here to simply the dedupe\n // of namespaces incase there are multiple triggers both the elm and host\n /** @type {?} */\n const namespaces = new Set();\n /** @type {?} */\n const elementStates = this.statesByElement.get(element);\n if (elementStates) {\n /** @type {?} */\n const keys = Object.keys(elementStates);\n for (let i = 0; i < keys.length; i++) {\n /** @type {?} */\n const nsId = elementStates[keys[i]].namespaceId;\n if (nsId) {\n /** @type {?} */\n const ns = this._fetchNamespace(nsId);\n if (ns) {\n namespaces.add(ns);\n }\n }\n }\n }\n return namespaces;\n }\n /**\n * @param {?} namespaceId\n * @param {?} element\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n trigger(namespaceId, element, name, value) {\n if (isElementNode(element)) {\n /** @type {?} */\n const ns = this._fetchNamespace(namespaceId);\n if (ns) {\n ns.trigger(element, name, value);\n return true;\n }\n }\n return false;\n }\n /**\n * @param {?} namespaceId\n * @param {?} element\n * @param {?} parent\n * @param {?} insertBefore\n * @return {?}\n */\n insertNode(namespaceId, element, parent, insertBefore) {\n if (!isElementNode(element))\n return;\n // special case for when an element is removed and reinserted (move operation)\n // when this occurs we do not want to use the element for deletion later\n /** @type {?} */\n const details = (/** @type {?} */ (element[REMOVAL_FLAG]));\n if (details && details.setForRemoval) {\n details.setForRemoval = false;\n details.setForMove = true;\n /** @type {?} */\n const index = this.collectedLeaveElements.indexOf(element);\n if (index >= 0) {\n this.collectedLeaveElements.splice(index, 1);\n }\n }\n // in the event that the namespaceId is blank then the caller\n // code does not contain any animation code in it, but it is\n // just being called so that the node is marked as being inserted\n if (namespaceId) {\n /** @type {?} */\n const ns = this._fetchNamespace(namespaceId);\n // This if-statement is a workaround for router issue #21947.\n // The router sometimes hits a race condition where while a route\n // is being instantiated a new navigation arrives, triggering leave\n // animation of DOM that has not been fully initialized, until this\n // is resolved, we need to handle the scenario when DOM is not in a\n // consistent state during the animation.\n if (ns) {\n ns.insertNode(element, parent);\n }\n }\n // only *directives and host elements are inserted before\n if (insertBefore) {\n this.collectEnterElement(element);\n }\n }\n /**\n * @param {?} element\n * @return {?}\n */\n collectEnterElement(element) { this.collectedEnterElements.push(element); }\n /**\n * @param {?} element\n * @param {?} value\n * @return {?}\n */\n markElementAsDisabled(element, value) {\n if (value) {\n if (!this.disabledNodes.has(element)) {\n this.disabledNodes.add(element);\n addClass(element, DISABLED_CLASSNAME);\n }\n }\n else if (this.disabledNodes.has(element)) {\n this.disabledNodes.delete(element);\n removeClass(element, DISABLED_CLASSNAME);\n }\n }\n /**\n * @param {?} namespaceId\n * @param {?} element\n * @param {?} isHostElement\n * @param {?} context\n * @return {?}\n */\n removeNode(namespaceId, element, isHostElement, context) {\n if (isElementNode(element)) {\n /** @type {?} */\n const ns = namespaceId ? this._fetchNamespace(namespaceId) : null;\n if (ns) {\n ns.removeNode(element, context);\n }\n else {\n this.markElementAsRemoved(namespaceId, element, false, context);\n }\n if (isHostElement) {\n /** @type {?} */\n const hostNS = this.namespacesByHostElement.get(element);\n if (hostNS && hostNS.id !== namespaceId) {\n hostNS.removeNode(element, context);\n }\n }\n }\n else {\n this._onRemovalComplete(element, context);\n }\n }\n /**\n * @param {?} namespaceId\n * @param {?} element\n * @param {?=} hasAnimation\n * @param {?=} context\n * @return {?}\n */\n markElementAsRemoved(namespaceId, element, hasAnimation, context) {\n this.collectedLeaveElements.push(element);\n element[REMOVAL_FLAG] = {\n namespaceId,\n setForRemoval: context, hasAnimation,\n removedBeforeQueried: false\n };\n }\n /**\n * @param {?} namespaceId\n * @param {?} element\n * @param {?} name\n * @param {?} phase\n * @param {?} callback\n * @return {?}\n */\n listen(namespaceId, element, name, phase, callback) {\n if (isElementNode(element)) {\n return this._fetchNamespace(namespaceId).listen(element, name, phase, callback);\n }\n return (/**\n * @return {?}\n */\n () => { });\n }\n /**\n * @private\n * @param {?} entry\n * @param {?} subTimelines\n * @param {?} enterClassName\n * @param {?} leaveClassName\n * @param {?=} skipBuildAst\n * @return {?}\n */\n _buildInstruction(entry, subTimelines, enterClassName, leaveClassName, skipBuildAst) {\n return entry.transition.build(this.driver, entry.element, entry.fromState.value, entry.toState.value, enterClassName, leaveClassName, entry.fromState.options, entry.toState.options, subTimelines, skipBuildAst);\n }\n /**\n * @param {?} containerElement\n * @return {?}\n */\n destroyInnerAnimations(containerElement) {\n /** @type {?} */\n let elements = this.driver.query(containerElement, NG_TRIGGER_SELECTOR, true);\n elements.forEach((/**\n * @param {?} element\n * @return {?}\n */\n element => this.destroyActiveAnimationsForElement(element)));\n if (this.playersByQueriedElement.size == 0)\n return;\n elements = this.driver.query(containerElement, NG_ANIMATING_SELECTOR, true);\n elements.forEach((/**\n * @param {?} element\n * @return {?}\n */\n element => this.finishActiveQueriedAnimationOnElement(element)));\n }\n /**\n * @param {?} element\n * @return {?}\n */\n destroyActiveAnimationsForElement(element) {\n /** @type {?} */\n const players = this.playersByElement.get(element);\n if (players) {\n players.forEach((/**\n * @param {?} player\n * @return {?}\n */\n player => {\n // special case for when an element is set for destruction, but hasn't started.\n // in this situation we want to delay the destruction until the flush occurs\n // so that any event listeners attached to the player are triggered.\n if (player.queued) {\n player.markedForDestroy = true;\n }\n else {\n player.destroy();\n }\n }));\n }\n }\n /**\n * @param {?} element\n * @return {?}\n */\n finishActiveQueriedAnimationOnElement(element) {\n /** @type {?} */\n const players = this.playersByQueriedElement.get(element);\n if (players) {\n players.forEach((/**\n * @param {?} player\n * @return {?}\n */\n player => player.finish()));\n }\n }\n /**\n * @return {?}\n */\n whenRenderingDone() {\n return new Promise((/**\n * @param {?} resolve\n * @return {?}\n */\n resolve => {\n if (this.players.length) {\n return optimizeGroupPlayer(this.players).onDone((/**\n * @return {?}\n */\n () => resolve()));\n }\n else {\n resolve();\n }\n }));\n }\n /**\n * @param {?} element\n * @return {?}\n */\n processLeaveNode(element) {\n /** @type {?} */\n const details = (/** @type {?} */ (element[REMOVAL_FLAG]));\n if (details && details.setForRemoval) {\n // this will prevent it from removing it twice\n element[REMOVAL_FLAG] = NULL_REMOVAL_STATE;\n if (details.namespaceId) {\n this.destroyInnerAnimations(element);\n /** @type {?} */\n const ns = this._fetchNamespace(details.namespaceId);\n if (ns) {\n ns.clearElementCache(element);\n }\n }\n this._onRemovalComplete(element, details.setForRemoval);\n }\n if (this.driver.matchesElement(element, DISABLED_SELECTOR)) {\n this.markElementAsDisabled(element, false);\n }\n this.driver.query(element, DISABLED_SELECTOR, true).forEach((/**\n * @param {?} node\n * @return {?}\n */\n node => {\n this.markElementAsDisabled(node, false);\n }));\n }\n /**\n * @param {?=} microtaskId\n * @return {?}\n */\n flush(microtaskId = -1) {\n /** @type {?} */\n let players = [];\n if (this.newHostElements.size) {\n this.newHostElements.forEach((/**\n * @param {?} ns\n * @param {?} element\n * @return {?}\n */\n (ns, element) => this._balanceNamespaceList(ns, element)));\n this.newHostElements.clear();\n }\n if (this.totalAnimations && this.collectedEnterElements.length) {\n for (let i = 0; i < this.collectedEnterElements.length; i++) {\n /** @type {?} */\n const elm = this.collectedEnterElements[i];\n addClass(elm, STAR_CLASSNAME);\n }\n }\n if (this._namespaceList.length &&\n (this.totalQueuedPlayers || this.collectedLeaveElements.length)) {\n /** @type {?} */\n const cleanupFns = [];\n try {\n players = this._flushAnimations(cleanupFns, microtaskId);\n }\n finally {\n for (let i = 0; i < cleanupFns.length; i++) {\n cleanupFns[i]();\n }\n }\n }\n else {\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n /** @type {?} */\n const element = this.collectedLeaveElements[i];\n this.processLeaveNode(element);\n }\n }\n this.totalQueuedPlayers = 0;\n this.collectedEnterElements.length = 0;\n this.collectedLeaveElements.length = 0;\n this._flushFns.forEach((/**\n * @param {?} fn\n * @return {?}\n */\n fn => fn()));\n this._flushFns = [];\n if (this._whenQuietFns.length) {\n // we move these over to a variable so that\n // if any new callbacks are registered in another\n // flush they do not populate the existing set\n /** @type {?} */\n const quietFns = this._whenQuietFns;\n this._whenQuietFns = [];\n if (players.length) {\n optimizeGroupPlayer(players).onDone((/**\n * @return {?}\n */\n () => { quietFns.forEach((/**\n * @param {?} fn\n * @return {?}\n */\n fn => fn())); }));\n }\n else {\n quietFns.forEach((/**\n * @param {?} fn\n * @return {?}\n */\n fn => fn()));\n }\n }\n }\n /**\n * @param {?} errors\n * @return {?}\n */\n reportError(errors) {\n throw new Error(`Unable to process animations due to the following failed trigger transitions\\n ${errors.join('\\n')}`);\n }\n /**\n * @private\n * @param {?} cleanupFns\n * @param {?} microtaskId\n * @return {?}\n */\n _flushAnimations(cleanupFns, microtaskId) {\n /** @type {?} */\n const subTimelines = new ElementInstructionMap();\n /** @type {?} */\n const skippedPlayers = [];\n /** @type {?} */\n const skippedPlayersMap = new Map();\n /** @type {?} */\n const queuedInstructions = [];\n /** @type {?} */\n const queriedElements = new Map();\n /** @type {?} */\n const allPreStyleElements = new Map();\n /** @type {?} */\n const allPostStyleElements = new Map();\n /** @type {?} */\n const disabledElementsSet = new Set();\n this.disabledNodes.forEach((/**\n * @param {?} node\n * @return {?}\n */\n node => {\n disabledElementsSet.add(node);\n /** @type {?} */\n const nodesThatAreDisabled = this.driver.query(node, QUEUED_SELECTOR, true);\n for (let i = 0; i < nodesThatAreDisabled.length; i++) {\n disabledElementsSet.add(nodesThatAreDisabled[i]);\n }\n }));\n /** @type {?} */\n const bodyNode = this.bodyNode;\n /** @type {?} */\n const allTriggerElements = Array.from(this.statesByElement.keys());\n /** @type {?} */\n const enterNodeMap = buildRootMap(allTriggerElements, this.collectedEnterElements);\n // this must occur before the instructions are built below such that\n // the :enter queries match the elements (since the timeline queries\n // are fired during instruction building).\n /** @type {?} */\n const enterNodeMapIds = new Map();\n /** @type {?} */\n let i = 0;\n enterNodeMap.forEach((/**\n * @param {?} nodes\n * @param {?} root\n * @return {?}\n */\n (nodes, root) => {\n /** @type {?} */\n const className = ENTER_CLASSNAME + i++;\n enterNodeMapIds.set(root, className);\n nodes.forEach((/**\n * @param {?} node\n * @return {?}\n */\n node => addClass(node, className)));\n }));\n /** @type {?} */\n const allLeaveNodes = [];\n /** @type {?} */\n const mergedLeaveNodes = new Set();\n /** @type {?} */\n const leaveNodesWithoutAnimations = new Set();\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n /** @type {?} */\n const element = this.collectedLeaveElements[i];\n /** @type {?} */\n const details = (/** @type {?} */ (element[REMOVAL_FLAG]));\n if (details && details.setForRemoval) {\n allLeaveNodes.push(element);\n mergedLeaveNodes.add(element);\n if (details.hasAnimation) {\n this.driver.query(element, STAR_SELECTOR, true).forEach((/**\n * @param {?} elm\n * @return {?}\n */\n elm => mergedLeaveNodes.add(elm)));\n }\n else {\n leaveNodesWithoutAnimations.add(element);\n }\n }\n }\n /** @type {?} */\n const leaveNodeMapIds = new Map();\n /** @type {?} */\n const leaveNodeMap = buildRootMap(allTriggerElements, Array.from(mergedLeaveNodes));\n leaveNodeMap.forEach((/**\n * @param {?} nodes\n * @param {?} root\n * @return {?}\n */\n (nodes, root) => {\n /** @type {?} */\n const className = LEAVE_CLASSNAME + i++;\n leaveNodeMapIds.set(root, className);\n nodes.forEach((/**\n * @param {?} node\n * @return {?}\n */\n node => addClass(node, className)));\n }));\n cleanupFns.push((/**\n * @return {?}\n */\n () => {\n enterNodeMap.forEach((/**\n * @param {?} nodes\n * @param {?} root\n * @return {?}\n */\n (nodes, root) => {\n /** @type {?} */\n const className = (/** @type {?} */ (enterNodeMapIds.get(root)));\n nodes.forEach((/**\n * @param {?} node\n * @return {?}\n */\n node => removeClass(node, className)));\n }));\n leaveNodeMap.forEach((/**\n * @param {?} nodes\n * @param {?} root\n * @return {?}\n */\n (nodes, root) => {\n /** @type {?} */\n const className = (/** @type {?} */ (leaveNodeMapIds.get(root)));\n nodes.forEach((/**\n * @param {?} node\n * @return {?}\n */\n node => removeClass(node, className)));\n }));\n allLeaveNodes.forEach((/**\n * @param {?} element\n * @return {?}\n */\n element => { this.processLeaveNode(element); }));\n }));\n /** @type {?} */\n const allPlayers = [];\n /** @type {?} */\n const erroneousTransitions = [];\n for (let i = this._namespaceList.length - 1; i >= 0; i--) {\n /** @type {?} */\n const ns = this._namespaceList[i];\n ns.drainQueuedTransitions(microtaskId).forEach((/**\n * @param {?} entry\n * @return {?}\n */\n entry => {\n /** @type {?} */\n const player = entry.player;\n /** @type {?} */\n const element = entry.element;\n allPlayers.push(player);\n if (this.collectedEnterElements.length) {\n /** @type {?} */\n const details = (/** @type {?} */ (element[REMOVAL_FLAG]));\n // move animations are currently not supported...\n if (details && details.setForMove) {\n player.destroy();\n return;\n }\n }\n /** @type {?} */\n const nodeIsOrphaned = !bodyNode || !this.driver.containsElement(bodyNode, element);\n /** @type {?} */\n const leaveClassName = (/** @type {?} */ (leaveNodeMapIds.get(element)));\n /** @type {?} */\n const enterClassName = (/** @type {?} */ (enterNodeMapIds.get(element)));\n /** @type {?} */\n const instruction = (/** @type {?} */ (this._buildInstruction(entry, subTimelines, enterClassName, leaveClassName, nodeIsOrphaned)));\n if (instruction.errors && instruction.errors.length) {\n erroneousTransitions.push(instruction);\n return;\n }\n // even though the element may not be apart of the DOM, it may\n // still be added at a later point (due to the mechanics of content\n // projection and/or dynamic component insertion) therefore it's\n // important we still style the element.\n if (nodeIsOrphaned) {\n player.onStart((/**\n * @return {?}\n */\n () => eraseStyles(element, instruction.fromStyles)));\n player.onDestroy((/**\n * @return {?}\n */\n () => setStyles(element, instruction.toStyles)));\n skippedPlayers.push(player);\n return;\n }\n // if a unmatched transition is queued to go then it SHOULD NOT render\n // an animation and cancel the previously running animations.\n if (entry.isFallbackTransition) {\n player.onStart((/**\n * @return {?}\n */\n () => eraseStyles(element, instruction.fromStyles)));\n player.onDestroy((/**\n * @return {?}\n */\n () => setStyles(element, instruction.toStyles)));\n skippedPlayers.push(player);\n return;\n }\n // this means that if a parent animation uses this animation as a sub trigger\n // then it will instruct the timeline builder to not add a player delay, but\n // instead stretch the first keyframe gap up until the animation starts. The\n // reason this is important is to prevent extra initialization styles from being\n // required by the user in the animation.\n instruction.timelines.forEach((/**\n * @param {?} tl\n * @return {?}\n */\n tl => tl.stretchStartingKeyframe = true));\n subTimelines.append(element, instruction.timelines);\n /** @type {?} */\n const tuple = { instruction, player, element };\n queuedInstructions.push(tuple);\n instruction.queriedElements.forEach((/**\n * @param {?} element\n * @return {?}\n */\n element => getOrSetAsInMap(queriedElements, element, []).push(player)));\n instruction.preStyleProps.forEach((/**\n * @param {?} stringMap\n * @param {?} element\n * @return {?}\n */\n (stringMap, element) => {\n /** @type {?} */\n const props = Object.keys(stringMap);\n if (props.length) {\n /** @type {?} */\n let setVal = (/** @type {?} */ (allPreStyleElements.get(element)));\n if (!setVal) {\n allPreStyleElements.set(element, setVal = new Set());\n }\n props.forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => setVal.add(prop)));\n }\n }));\n instruction.postStyleProps.forEach((/**\n * @param {?} stringMap\n * @param {?} element\n * @return {?}\n */\n (stringMap, element) => {\n /** @type {?} */\n const props = Object.keys(stringMap);\n /** @type {?} */\n let setVal = (/** @type {?} */ (allPostStyleElements.get(element)));\n if (!setVal) {\n allPostStyleElements.set(element, setVal = new Set());\n }\n props.forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => setVal.add(prop)));\n }));\n }));\n }\n if (erroneousTransitions.length) {\n /** @type {?} */\n const errors = [];\n erroneousTransitions.forEach((/**\n * @param {?} instruction\n * @return {?}\n */\n instruction => {\n errors.push(`@${instruction.triggerName} has failed due to:\\n`);\n (/** @type {?} */ (instruction.errors)).forEach((/**\n * @param {?} error\n * @return {?}\n */\n error => errors.push(`- ${error}\\n`)));\n }));\n allPlayers.forEach((/**\n * @param {?} player\n * @return {?}\n */\n player => player.destroy()));\n this.reportError(errors);\n }\n /** @type {?} */\n const allPreviousPlayersMap = new Map();\n // this map works to tell which element in the DOM tree is contained by\n // which animation. Further down below this map will get populated once\n // the players are built and in doing so it can efficiently figure out\n // if a sub player is skipped due to a parent player having priority.\n /** @type {?} */\n const animationElementMap = new Map();\n queuedInstructions.forEach((/**\n * @param {?} entry\n * @return {?}\n */\n entry => {\n /** @type {?} */\n const element = entry.element;\n if (subTimelines.has(element)) {\n animationElementMap.set(element, element);\n this._beforeAnimationBuild(entry.player.namespaceId, entry.instruction, allPreviousPlayersMap);\n }\n }));\n skippedPlayers.forEach((/**\n * @param {?} player\n * @return {?}\n */\n player => {\n /** @type {?} */\n const element = player.element;\n /** @type {?} */\n const previousPlayers = this._getPreviousPlayers(element, false, player.namespaceId, player.triggerName, null);\n previousPlayers.forEach((/**\n * @param {?} prevPlayer\n * @return {?}\n */\n prevPlayer => {\n getOrSetAsInMap(allPreviousPlayersMap, element, []).push(prevPlayer);\n prevPlayer.destroy();\n }));\n }));\n // this is a special case for nodes that will be removed (either by)\n // having their own leave animations or by being queried in a container\n // that will be removed once a parent animation is complete. The idea\n // here is that * styles must be identical to ! styles because of\n // backwards compatibility (* is also filled in by default in many places).\n // Otherwise * styles will return an empty value or auto since the element\n // that is being getComputedStyle'd will not be visible (since * = destination)\n /** @type {?} */\n const replaceNodes = allLeaveNodes.filter((/**\n * @param {?} node\n * @return {?}\n */\n node => {\n return replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements);\n }));\n // POST STAGE: fill the * styles\n /** @type {?} */\n const postStylesMap = new Map();\n /** @type {?} */\n const allLeaveQueriedNodes = cloakAndComputeStyles(postStylesMap, this.driver, leaveNodesWithoutAnimations, allPostStyleElements, AUTO_STYLE);\n allLeaveQueriedNodes.forEach((/**\n * @param {?} node\n * @return {?}\n */\n node => {\n if (replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements)) {\n replaceNodes.push(node);\n }\n }));\n // PRE STAGE: fill the ! styles\n /** @type {?} */\n const preStylesMap = new Map();\n enterNodeMap.forEach((/**\n * @param {?} nodes\n * @param {?} root\n * @return {?}\n */\n (nodes, root) => {\n cloakAndComputeStyles(preStylesMap, this.driver, new Set(nodes), allPreStyleElements, ɵPRE_STYLE);\n }));\n replaceNodes.forEach((/**\n * @param {?} node\n * @return {?}\n */\n node => {\n /** @type {?} */\n const post = postStylesMap.get(node);\n /** @type {?} */\n const pre = preStylesMap.get(node);\n postStylesMap.set(node, (/** @type {?} */ (Object.assign(Object.assign({}, post), pre))));\n }));\n /** @type {?} */\n const rootPlayers = [];\n /** @type {?} */\n const subPlayers = [];\n /** @type {?} */\n const NO_PARENT_ANIMATION_ELEMENT_DETECTED = {};\n queuedInstructions.forEach((/**\n * @param {?} entry\n * @return {?}\n */\n entry => {\n const { element, player, instruction } = entry;\n // this means that it was never consumed by a parent animation which\n // means that it is independent and therefore should be set for animation\n if (subTimelines.has(element)) {\n if (disabledElementsSet.has(element)) {\n player.onDestroy((/**\n * @return {?}\n */\n () => setStyles(element, instruction.toStyles)));\n player.disabled = true;\n player.overrideTotalTime(instruction.totalTime);\n skippedPlayers.push(player);\n return;\n }\n // this will flow up the DOM and query the map to figure out\n // if a parent animation has priority over it. In the situation\n // that a parent is detected then it will cancel the loop. If\n // nothing is detected, or it takes a few hops to find a parent,\n // then it will fill in the missing nodes and signal them as having\n // a detected parent (or a NO_PARENT value via a special constant).\n /** @type {?} */\n let parentWithAnimation = NO_PARENT_ANIMATION_ELEMENT_DETECTED;\n if (animationElementMap.size > 1) {\n /** @type {?} */\n let elm = element;\n /** @type {?} */\n const parentsToAdd = [];\n while (elm = elm.parentNode) {\n /** @type {?} */\n const detectedParent = animationElementMap.get(elm);\n if (detectedParent) {\n parentWithAnimation = detectedParent;\n break;\n }\n parentsToAdd.push(elm);\n }\n parentsToAdd.forEach((/**\n * @param {?} parent\n * @return {?}\n */\n parent => animationElementMap.set(parent, parentWithAnimation)));\n }\n /** @type {?} */\n const innerPlayer = this._buildAnimation(player.namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap);\n player.setRealPlayer(innerPlayer);\n if (parentWithAnimation === NO_PARENT_ANIMATION_ELEMENT_DETECTED) {\n rootPlayers.push(player);\n }\n else {\n /** @type {?} */\n const parentPlayers = this.playersByElement.get(parentWithAnimation);\n if (parentPlayers && parentPlayers.length) {\n player.parentPlayer = optimizeGroupPlayer(parentPlayers);\n }\n skippedPlayers.push(player);\n }\n }\n else {\n eraseStyles(element, instruction.fromStyles);\n player.onDestroy((/**\n * @return {?}\n */\n () => setStyles(element, instruction.toStyles)));\n // there still might be a ancestor player animating this\n // element therefore we will still add it as a sub player\n // even if its animation may be disabled\n subPlayers.push(player);\n if (disabledElementsSet.has(element)) {\n skippedPlayers.push(player);\n }\n }\n }));\n // find all of the sub players' corresponding inner animation player\n subPlayers.forEach((/**\n * @param {?} player\n * @return {?}\n */\n player => {\n // even if any players are not found for a sub animation then it\n // will still complete itself after the next tick since it's Noop\n /** @type {?} */\n const playersForElement = skippedPlayersMap.get(player.element);\n if (playersForElement && playersForElement.length) {\n /** @type {?} */\n const innerPlayer = optimizeGroupPlayer(playersForElement);\n player.setRealPlayer(innerPlayer);\n }\n }));\n // the reason why we don't actually play the animation is\n // because all that a skipped player is designed to do is to\n // fire the start/done transition callback events\n skippedPlayers.forEach((/**\n * @param {?} player\n * @return {?}\n */\n player => {\n if (player.parentPlayer) {\n player.syncPlayerEvents(player.parentPlayer);\n }\n else {\n player.destroy();\n }\n }));\n // run through all of the queued removals and see if they\n // were picked up by a query. If not then perform the removal\n // operation right away unless a parent animation is ongoing.\n for (let i = 0; i < allLeaveNodes.length; i++) {\n /** @type {?} */\n const element = allLeaveNodes[i];\n /** @type {?} */\n const details = (/** @type {?} */ (element[REMOVAL_FLAG]));\n removeClass(element, LEAVE_CLASSNAME);\n // this means the element has a removal animation that is being\n // taken care of and therefore the inner elements will hang around\n // until that animation is over (or the parent queried animation)\n if (details && details.hasAnimation)\n continue;\n /** @type {?} */\n let players = [];\n // if this element is queried or if it contains queried children\n // then we want for the element not to be removed from the page\n // until the queried animations have finished\n if (queriedElements.size) {\n /** @type {?} */\n let queriedPlayerResults = queriedElements.get(element);\n if (queriedPlayerResults && queriedPlayerResults.length) {\n players.push(...queriedPlayerResults);\n }\n /** @type {?} */\n let queriedInnerElements = this.driver.query(element, NG_ANIMATING_SELECTOR, true);\n for (let j = 0; j < queriedInnerElements.length; j++) {\n /** @type {?} */\n let queriedPlayers = queriedElements.get(queriedInnerElements[j]);\n if (queriedPlayers && queriedPlayers.length) {\n players.push(...queriedPlayers);\n }\n }\n }\n /** @type {?} */\n const activePlayers = players.filter((/**\n * @param {?} p\n * @return {?}\n */\n p => !p.destroyed));\n if (activePlayers.length) {\n removeNodesAfterAnimationDone(this, element, activePlayers);\n }\n else {\n this.processLeaveNode(element);\n }\n }\n // this is required so the cleanup method doesn't remove them\n allLeaveNodes.length = 0;\n rootPlayers.forEach((/**\n * @param {?} player\n * @return {?}\n */\n player => {\n this.players.push(player);\n player.onDone((/**\n * @return {?}\n */\n () => {\n player.destroy();\n /** @type {?} */\n const index = this.players.indexOf(player);\n this.players.splice(index, 1);\n }));\n player.play();\n }));\n return rootPlayers;\n }\n /**\n * @param {?} namespaceId\n * @param {?} element\n * @return {?}\n */\n elementContainsData(namespaceId, element) {\n /** @type {?} */\n let containsData = false;\n /** @type {?} */\n const details = (/** @type {?} */ (element[REMOVAL_FLAG]));\n if (details && details.setForRemoval)\n containsData = true;\n if (this.playersByElement.has(element))\n containsData = true;\n if (this.playersByQueriedElement.has(element))\n containsData = true;\n if (this.statesByElement.has(element))\n containsData = true;\n return this._fetchNamespace(namespaceId).elementContainsData(element) || containsData;\n }\n /**\n * @param {?} callback\n * @return {?}\n */\n afterFlush(callback) { this._flushFns.push(callback); }\n /**\n * @param {?} callback\n * @return {?}\n */\n afterFlushAnimationsDone(callback) { this._whenQuietFns.push(callback); }\n /**\n * @private\n * @param {?} element\n * @param {?} isQueriedElement\n * @param {?=} namespaceId\n * @param {?=} triggerName\n * @param {?=} toStateValue\n * @return {?}\n */\n _getPreviousPlayers(element, isQueriedElement, namespaceId, triggerName, toStateValue) {\n /** @type {?} */\n let players = [];\n if (isQueriedElement) {\n /** @type {?} */\n const queriedElementPlayers = this.playersByQueriedElement.get(element);\n if (queriedElementPlayers) {\n players = queriedElementPlayers;\n }\n }\n else {\n /** @type {?} */\n const elementPlayers = this.playersByElement.get(element);\n if (elementPlayers) {\n /** @type {?} */\n const isRemovalAnimation = !toStateValue || toStateValue == VOID_VALUE;\n elementPlayers.forEach((/**\n * @param {?} player\n * @return {?}\n */\n player => {\n if (player.queued)\n return;\n if (!isRemovalAnimation && player.triggerName != triggerName)\n return;\n players.push(player);\n }));\n }\n }\n if (namespaceId || triggerName) {\n players = players.filter((/**\n * @param {?} player\n * @return {?}\n */\n player => {\n if (namespaceId && namespaceId != player.namespaceId)\n return false;\n if (triggerName && triggerName != player.triggerName)\n return false;\n return true;\n }));\n }\n return players;\n }\n /**\n * @private\n * @param {?} namespaceId\n * @param {?} instruction\n * @param {?} allPreviousPlayersMap\n * @return {?}\n */\n _beforeAnimationBuild(namespaceId, instruction, allPreviousPlayersMap) {\n /** @type {?} */\n const triggerName = instruction.triggerName;\n /** @type {?} */\n const rootElement = instruction.element;\n // when a removal animation occurs, ALL previous players are collected\n // and destroyed (even if they are outside of the current namespace)\n /** @type {?} */\n const targetNameSpaceId = instruction.isRemovalTransition ? undefined : namespaceId;\n /** @type {?} */\n const targetTriggerName = instruction.isRemovalTransition ? undefined : triggerName;\n for (const timelineInstruction of instruction.timelines) {\n /** @type {?} */\n const element = timelineInstruction.element;\n /** @type {?} */\n const isQueriedElement = element !== rootElement;\n /** @type {?} */\n const players = getOrSetAsInMap(allPreviousPlayersMap, element, []);\n /** @type {?} */\n const previousPlayers = this._getPreviousPlayers(element, isQueriedElement, targetNameSpaceId, targetTriggerName, instruction.toState);\n previousPlayers.forEach((/**\n * @param {?} player\n * @return {?}\n */\n player => {\n /** @type {?} */\n const realPlayer = (/** @type {?} */ (((/** @type {?} */ (player))).getRealPlayer()));\n if (realPlayer.beforeDestroy) {\n realPlayer.beforeDestroy();\n }\n player.destroy();\n players.push(player);\n }));\n }\n // this needs to be done so that the PRE/POST styles can be\n // computed properly without interfering with the previous animation\n eraseStyles(rootElement, instruction.fromStyles);\n }\n /**\n * @private\n * @param {?} namespaceId\n * @param {?} instruction\n * @param {?} allPreviousPlayersMap\n * @param {?} skippedPlayersMap\n * @param {?} preStylesMap\n * @param {?} postStylesMap\n * @return {?}\n */\n _buildAnimation(namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap) {\n /** @type {?} */\n const triggerName = instruction.triggerName;\n /** @type {?} */\n const rootElement = instruction.element;\n // we first run this so that the previous animation player\n // data can be passed into the successive animation players\n /** @type {?} */\n const allQueriedPlayers = [];\n /** @type {?} */\n const allConsumedElements = new Set();\n /** @type {?} */\n const allSubElements = new Set();\n /** @type {?} */\n const allNewPlayers = instruction.timelines.map((/**\n * @param {?} timelineInstruction\n * @return {?}\n */\n timelineInstruction => {\n /** @type {?} */\n const element = timelineInstruction.element;\n allConsumedElements.add(element);\n // FIXME (matsko): make sure to-be-removed animations are removed properly\n /** @type {?} */\n const details = element[REMOVAL_FLAG];\n if (details && details.removedBeforeQueried)\n return new NoopAnimationPlayer(timelineInstruction.duration, timelineInstruction.delay);\n /** @type {?} */\n const isQueriedElement = element !== rootElement;\n /** @type {?} */\n const previousPlayers = flattenGroupPlayers((allPreviousPlayersMap.get(element) || EMPTY_PLAYER_ARRAY)\n .map((/**\n * @param {?} p\n * @return {?}\n */\n p => p.getRealPlayer())))\n .filter((/**\n * @param {?} p\n * @return {?}\n */\n p => {\n // the `element` is not apart of the AnimationPlayer definition, but\n // Mock/WebAnimations\n // use the element within their implementation. This will be added in Angular5 to\n // AnimationPlayer\n /** @type {?} */\n const pp = (/** @type {?} */ (p));\n return pp.element ? pp.element === element : false;\n }));\n /** @type {?} */\n const preStyles = preStylesMap.get(element);\n /** @type {?} */\n const postStyles = postStylesMap.get(element);\n /** @type {?} */\n const keyframes = normalizeKeyframes(this.driver, this._normalizer, element, timelineInstruction.keyframes, preStyles, postStyles);\n /** @type {?} */\n const player = this._buildPlayer(timelineInstruction, keyframes, previousPlayers);\n // this means that this particular player belongs to a sub trigger. It is\n // important that we match this player up with the corresponding (@trigger.listener)\n if (timelineInstruction.subTimeline && skippedPlayersMap) {\n allSubElements.add(element);\n }\n if (isQueriedElement) {\n /** @type {?} */\n const wrappedPlayer = new TransitionAnimationPlayer(namespaceId, triggerName, element);\n wrappedPlayer.setRealPlayer(player);\n allQueriedPlayers.push(wrappedPlayer);\n }\n return player;\n }));\n allQueriedPlayers.forEach((/**\n * @param {?} player\n * @return {?}\n */\n player => {\n getOrSetAsInMap(this.playersByQueriedElement, player.element, []).push(player);\n player.onDone((/**\n * @return {?}\n */\n () => deleteOrUnsetInMap(this.playersByQueriedElement, player.element, player)));\n }));\n allConsumedElements.forEach((/**\n * @param {?} element\n * @return {?}\n */\n element => addClass(element, NG_ANIMATING_CLASSNAME)));\n /** @type {?} */\n const player = optimizeGroupPlayer(allNewPlayers);\n player.onDestroy((/**\n * @return {?}\n */\n () => {\n allConsumedElements.forEach((/**\n * @param {?} element\n * @return {?}\n */\n element => removeClass(element, NG_ANIMATING_CLASSNAME)));\n setStyles(rootElement, instruction.toStyles);\n }));\n // this basically makes all of the callbacks for sub element animations\n // be dependent on the upper players for when they finish\n allSubElements.forEach((/**\n * @param {?} element\n * @return {?}\n */\n element => { getOrSetAsInMap(skippedPlayersMap, element, []).push(player); }));\n return player;\n }\n /**\n * @private\n * @param {?} instruction\n * @param {?} keyframes\n * @param {?} previousPlayers\n * @return {?}\n */\n _buildPlayer(instruction, keyframes, previousPlayers) {\n if (keyframes.length > 0) {\n return this.driver.animate(instruction.element, keyframes, instruction.duration, instruction.delay, instruction.easing, previousPlayers);\n }\n // special case for when an empty transition|definition is provided\n // ... there is no point in rendering an empty animation\n return new NoopAnimationPlayer(instruction.duration, instruction.delay);\n }\n}\nif (false) {\n /** @type {?} */\n TransitionAnimationEngine.prototype.players;\n /** @type {?} */\n TransitionAnimationEngine.prototype.newHostElements;\n /** @type {?} */\n TransitionAnimationEngine.prototype.playersByElement;\n /** @type {?} */\n TransitionAnimationEngine.prototype.playersByQueriedElement;\n /** @type {?} */\n TransitionAnimationEngine.prototype.statesByElement;\n /** @type {?} */\n TransitionAnimationEngine.prototype.disabledNodes;\n /** @type {?} */\n TransitionAnimationEngine.prototype.totalAnimations;\n /** @type {?} */\n TransitionAnimationEngine.prototype.totalQueuedPlayers;\n /**\n * @type {?}\n * @private\n */\n TransitionAnimationEngine.prototype._namespaceLookup;\n /**\n * @type {?}\n * @private\n */\n TransitionAnimationEngine.prototype._namespaceList;\n /**\n * @type {?}\n * @private\n */\n TransitionAnimationEngine.prototype._flushFns;\n /**\n * @type {?}\n * @private\n */\n TransitionAnimationEngine.prototype._whenQuietFns;\n /** @type {?} */\n TransitionAnimationEngine.prototype.namespacesByHostElement;\n /** @type {?} */\n TransitionAnimationEngine.prototype.collectedEnterElements;\n /** @type {?} */\n TransitionAnimationEngine.prototype.collectedLeaveElements;\n /** @type {?} */\n TransitionAnimationEngine.prototype.onRemovalComplete;\n /** @type {?} */\n TransitionAnimationEngine.prototype.bodyNode;\n /** @type {?} */\n TransitionAnimationEngine.prototype.driver;\n /**\n * @type {?}\n * @private\n */\n TransitionAnimationEngine.prototype._normalizer;\n}\nclass TransitionAnimationPlayer {\n /**\n * @param {?} namespaceId\n * @param {?} triggerName\n * @param {?} element\n */\n constructor(namespaceId, triggerName, element) {\n this.namespaceId = namespaceId;\n this.triggerName = triggerName;\n this.element = element;\n this._player = new NoopAnimationPlayer();\n this._containsRealPlayer = false;\n this._queuedCallbacks = {};\n this.destroyed = false;\n this.markedForDestroy = false;\n this.disabled = false;\n this.queued = true;\n this.totalTime = 0;\n }\n /**\n * @param {?} player\n * @return {?}\n */\n setRealPlayer(player) {\n if (this._containsRealPlayer)\n return;\n this._player = player;\n Object.keys(this._queuedCallbacks).forEach((/**\n * @param {?} phase\n * @return {?}\n */\n phase => {\n this._queuedCallbacks[phase].forEach((/**\n * @param {?} callback\n * @return {?}\n */\n callback => listenOnPlayer(player, phase, undefined, callback)));\n }));\n this._queuedCallbacks = {};\n this._containsRealPlayer = true;\n this.overrideTotalTime(player.totalTime);\n ((/** @type {?} */ (this))).queued = false;\n }\n /**\n * @return {?}\n */\n getRealPlayer() { return this._player; }\n /**\n * @param {?} totalTime\n * @return {?}\n */\n overrideTotalTime(totalTime) { ((/** @type {?} */ (this))).totalTime = totalTime; }\n /**\n * @param {?} player\n * @return {?}\n */\n syncPlayerEvents(player) {\n /** @type {?} */\n const p = (/** @type {?} */ (this._player));\n if (p.triggerCallback) {\n player.onStart((/**\n * @return {?}\n */\n () => (/** @type {?} */ (p.triggerCallback))('start')));\n }\n player.onDone((/**\n * @return {?}\n */\n () => this.finish()));\n player.onDestroy((/**\n * @return {?}\n */\n () => this.destroy()));\n }\n /**\n * @private\n * @param {?} name\n * @param {?} callback\n * @return {?}\n */\n _queueEvent(name, callback) {\n getOrSetAsInMap(this._queuedCallbacks, name, []).push(callback);\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n onDone(fn) {\n if (this.queued) {\n this._queueEvent('done', fn);\n }\n this._player.onDone(fn);\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n onStart(fn) {\n if (this.queued) {\n this._queueEvent('start', fn);\n }\n this._player.onStart(fn);\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n onDestroy(fn) {\n if (this.queued) {\n this._queueEvent('destroy', fn);\n }\n this._player.onDestroy(fn);\n }\n /**\n * @return {?}\n */\n init() { this._player.init(); }\n /**\n * @return {?}\n */\n hasStarted() { return this.queued ? false : this._player.hasStarted(); }\n /**\n * @return {?}\n */\n play() { !this.queued && this._player.play(); }\n /**\n * @return {?}\n */\n pause() { !this.queued && this._player.pause(); }\n /**\n * @return {?}\n */\n restart() { !this.queued && this._player.restart(); }\n /**\n * @return {?}\n */\n finish() { this._player.finish(); }\n /**\n * @return {?}\n */\n destroy() {\n ((/** @type {?} */ (this))).destroyed = true;\n this._player.destroy();\n }\n /**\n * @return {?}\n */\n reset() { !this.queued && this._player.reset(); }\n /**\n * @param {?} p\n * @return {?}\n */\n setPosition(p) {\n if (!this.queued) {\n this._player.setPosition(p);\n }\n }\n /**\n * @return {?}\n */\n getPosition() { return this.queued ? 0 : this._player.getPosition(); }\n /**\n * \\@internal\n * @param {?} phaseName\n * @return {?}\n */\n triggerCallback(phaseName) {\n /** @type {?} */\n const p = (/** @type {?} */ (this._player));\n if (p.triggerCallback) {\n p.triggerCallback(phaseName);\n }\n }\n}\nif (false) {\n /**\n * @type {?}\n * @private\n */\n TransitionAnimationPlayer.prototype._player;\n /**\n * @type {?}\n * @private\n */\n TransitionAnimationPlayer.prototype._containsRealPlayer;\n /**\n * @type {?}\n * @private\n */\n TransitionAnimationPlayer.prototype._queuedCallbacks;\n /** @type {?} */\n TransitionAnimationPlayer.prototype.destroyed;\n /** @type {?} */\n TransitionAnimationPlayer.prototype.parentPlayer;\n /** @type {?} */\n TransitionAnimationPlayer.prototype.markedForDestroy;\n /** @type {?} */\n TransitionAnimationPlayer.prototype.disabled;\n /** @type {?} */\n TransitionAnimationPlayer.prototype.queued;\n /** @type {?} */\n TransitionAnimationPlayer.prototype.totalTime;\n /** @type {?} */\n TransitionAnimationPlayer.prototype.namespaceId;\n /** @type {?} */\n TransitionAnimationPlayer.prototype.triggerName;\n /** @type {?} */\n TransitionAnimationPlayer.prototype.element;\n}\n/**\n * @param {?} map\n * @param {?} key\n * @param {?} value\n * @return {?}\n */\nfunction deleteOrUnsetInMap(map, key, value) {\n /** @type {?} */\n let currentValues;\n if (map instanceof Map) {\n currentValues = map.get(key);\n if (currentValues) {\n if (currentValues.length) {\n /** @type {?} */\n const index = currentValues.indexOf(value);\n currentValues.splice(index, 1);\n }\n if (currentValues.length == 0) {\n map.delete(key);\n }\n }\n }\n else {\n currentValues = map[key];\n if (currentValues) {\n if (currentValues.length) {\n /** @type {?} */\n const index = currentValues.indexOf(value);\n currentValues.splice(index, 1);\n }\n if (currentValues.length == 0) {\n delete map[key];\n }\n }\n }\n return currentValues;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction normalizeTriggerValue(value) {\n // we use `!= null` here because it's the most simple\n // way to test against a \"falsy\" value without mixing\n // in empty strings or a zero value. DO NOT OPTIMIZE.\n return value != null ? value : null;\n}\n/**\n * @param {?} node\n * @return {?}\n */\nfunction isElementNode(node) {\n return node && node['nodeType'] === 1;\n}\n/**\n * @param {?} eventName\n * @return {?}\n */\nfunction isTriggerEventValid(eventName) {\n return eventName == 'start' || eventName == 'done';\n}\n/**\n * @param {?} element\n * @param {?=} value\n * @return {?}\n */\nfunction cloakElement(element, value) {\n /** @type {?} */\n const oldValue = element.style.display;\n element.style.display = value != null ? value : 'none';\n return oldValue;\n}\n/**\n * @param {?} valuesMap\n * @param {?} driver\n * @param {?} elements\n * @param {?} elementPropsMap\n * @param {?} defaultStyle\n * @return {?}\n */\nfunction cloakAndComputeStyles(valuesMap, driver, elements, elementPropsMap, defaultStyle) {\n /** @type {?} */\n const cloakVals = [];\n elements.forEach((/**\n * @param {?} element\n * @return {?}\n */\n element => cloakVals.push(cloakElement(element))));\n /** @type {?} */\n const failedElements = [];\n elementPropsMap.forEach((/**\n * @param {?} props\n * @param {?} element\n * @return {?}\n */\n (props, element) => {\n /** @type {?} */\n const styles = {};\n props.forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => {\n /** @type {?} */\n const value = styles[prop] = driver.computeStyle(element, prop, defaultStyle);\n // there is no easy way to detect this because a sub element could be removed\n // by a parent animation element being detached.\n if (!value || value.length == 0) {\n element[REMOVAL_FLAG] = NULL_REMOVED_QUERIED_STATE;\n failedElements.push(element);\n }\n }));\n valuesMap.set(element, styles);\n }));\n // we use a index variable here since Set.forEach(a, i) does not return\n // an index value for the closure (but instead just the value)\n /** @type {?} */\n let i = 0;\n elements.forEach((/**\n * @param {?} element\n * @return {?}\n */\n element => cloakElement(element, cloakVals[i++])));\n return failedElements;\n}\n/*\nSince the Angular renderer code will return a collection of inserted\nnodes in all areas of a DOM tree, it's up to this algorithm to figure\nout which nodes are roots for each animation @trigger.\n\nBy placing each inserted node into a Set and traversing upwards, it\nis possible to find the @trigger elements and well any direct *star\ninsertion nodes, if a @trigger root is found then the enter element\nis placed into the Map[@trigger] spot.\n */\n/**\n * @param {?} roots\n * @param {?} nodes\n * @return {?}\n */\nfunction buildRootMap(roots, nodes) {\n /** @type {?} */\n const rootMap = new Map();\n roots.forEach((/**\n * @param {?} root\n * @return {?}\n */\n root => rootMap.set(root, [])));\n if (nodes.length == 0)\n return rootMap;\n /** @type {?} */\n const NULL_NODE = 1;\n /** @type {?} */\n const nodeSet = new Set(nodes);\n /** @type {?} */\n const localRootMap = new Map();\n /**\n * @param {?} node\n * @return {?}\n */\n function getRoot(node) {\n if (!node)\n return NULL_NODE;\n /** @type {?} */\n let root = localRootMap.get(node);\n if (root)\n return root;\n /** @type {?} */\n const parent = node.parentNode;\n if (rootMap.has(parent)) { // ngIf inside @trigger\n root = parent;\n }\n else if (nodeSet.has(parent)) { // ngIf inside ngIf\n root = NULL_NODE;\n }\n else { // recurse upwards\n root = getRoot(parent);\n }\n localRootMap.set(node, root);\n return root;\n }\n nodes.forEach((/**\n * @param {?} node\n * @return {?}\n */\n node => {\n /** @type {?} */\n const root = getRoot(node);\n if (root !== NULL_NODE) {\n (/** @type {?} */ (rootMap.get(root))).push(node);\n }\n }));\n return rootMap;\n}\n/** @type {?} */\nconst CLASSES_CACHE_KEY = '$$classes';\n/**\n * @param {?} element\n * @param {?} className\n * @return {?}\n */\nfunction containsClass(element, className) {\n if (element.classList) {\n return element.classList.contains(className);\n }\n else {\n /** @type {?} */\n const classes = element[CLASSES_CACHE_KEY];\n return classes && classes[className];\n }\n}\n/**\n * @param {?} element\n * @param {?} className\n * @return {?}\n */\nfunction addClass(element, className) {\n if (element.classList) {\n element.classList.add(className);\n }\n else {\n /** @type {?} */\n let classes = element[CLASSES_CACHE_KEY];\n if (!classes) {\n classes = element[CLASSES_CACHE_KEY] = {};\n }\n classes[className] = true;\n }\n}\n/**\n * @param {?} element\n * @param {?} className\n * @return {?}\n */\nfunction removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n }\n else {\n /** @type {?} */\n let classes = element[CLASSES_CACHE_KEY];\n if (classes) {\n delete classes[className];\n }\n }\n}\n/**\n * @param {?} engine\n * @param {?} element\n * @param {?} players\n * @return {?}\n */\nfunction removeNodesAfterAnimationDone(engine, element, players) {\n optimizeGroupPlayer(players).onDone((/**\n * @return {?}\n */\n () => engine.processLeaveNode(element)));\n}\n/**\n * @param {?} players\n * @return {?}\n */\nfunction flattenGroupPlayers(players) {\n /** @type {?} */\n const finalPlayers = [];\n _flattenGroupPlayersRecur(players, finalPlayers);\n return finalPlayers;\n}\n/**\n * @param {?} players\n * @param {?} finalPlayers\n * @return {?}\n */\nfunction _flattenGroupPlayersRecur(players, finalPlayers) {\n for (let i = 0; i < players.length; i++) {\n /** @type {?} */\n const player = players[i];\n if (player instanceof ɵAnimationGroupPlayer) {\n _flattenGroupPlayersRecur(player.players, finalPlayers);\n }\n else {\n finalPlayers.push(player);\n }\n }\n}\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nfunction objEquals(a, b) {\n /** @type {?} */\n const k1 = Object.keys(a);\n /** @type {?} */\n const k2 = Object.keys(b);\n if (k1.length != k2.length)\n return false;\n for (let i = 0; i < k1.length; i++) {\n /** @type {?} */\n const prop = k1[i];\n if (!b.hasOwnProperty(prop) || a[prop] !== b[prop])\n return false;\n }\n return true;\n}\n/**\n * @param {?} element\n * @param {?} allPreStyleElements\n * @param {?} allPostStyleElements\n * @return {?}\n */\nfunction replacePostStylesAsPre(element, allPreStyleElements, allPostStyleElements) {\n /** @type {?} */\n const postEntry = allPostStyleElements.get(element);\n if (!postEntry)\n return false;\n /** @type {?} */\n let preEntry = allPreStyleElements.get(element);\n if (preEntry) {\n postEntry.forEach((/**\n * @param {?} data\n * @return {?}\n */\n data => (/** @type {?} */ (preEntry)).add(data)));\n }\n else {\n allPreStyleElements.set(element, postEntry);\n }\n allPostStyleElements.delete(element);\n return true;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/browser/src/render/animation_engine_next.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass AnimationEngine {\n /**\n * @param {?} bodyNode\n * @param {?} _driver\n * @param {?} normalizer\n */\n constructor(bodyNode, _driver, normalizer) {\n this.bodyNode = bodyNode;\n this._driver = _driver;\n this._triggerCache = {};\n // this method is designed to be overridden by the code that uses this engine\n this.onRemovalComplete = (/**\n * @param {?} element\n * @param {?} context\n * @return {?}\n */\n (element, context) => { });\n this._transitionEngine = new TransitionAnimationEngine(bodyNode, _driver, normalizer);\n this._timelineEngine = new TimelineAnimationEngine(bodyNode, _driver, normalizer);\n this._transitionEngine.onRemovalComplete = (/**\n * @param {?} element\n * @param {?} context\n * @return {?}\n */\n (element, context) => this.onRemovalComplete(element, context));\n }\n /**\n * @param {?} componentId\n * @param {?} namespaceId\n * @param {?} hostElement\n * @param {?} name\n * @param {?} metadata\n * @return {?}\n */\n registerTrigger(componentId, namespaceId, hostElement, name, metadata) {\n /** @type {?} */\n const cacheKey = componentId + '-' + name;\n /** @type {?} */\n let trigger = this._triggerCache[cacheKey];\n if (!trigger) {\n /** @type {?} */\n const errors = [];\n /** @type {?} */\n const ast = (/** @type {?} */ (buildAnimationAst(this._driver, (/** @type {?} */ (metadata)), errors)));\n if (errors.length) {\n throw new Error(`The animation trigger \"${name}\" has failed to build due to the following errors:\\n - ${errors.join(\"\\n - \")}`);\n }\n trigger = buildTrigger(name, ast);\n this._triggerCache[cacheKey] = trigger;\n }\n this._transitionEngine.registerTrigger(namespaceId, name, trigger);\n }\n /**\n * @param {?} namespaceId\n * @param {?} hostElement\n * @return {?}\n */\n register(namespaceId, hostElement) {\n this._transitionEngine.register(namespaceId, hostElement);\n }\n /**\n * @param {?} namespaceId\n * @param {?} context\n * @return {?}\n */\n destroy(namespaceId, context) {\n this._transitionEngine.destroy(namespaceId, context);\n }\n /**\n * @param {?} namespaceId\n * @param {?} element\n * @param {?} parent\n * @param {?} insertBefore\n * @return {?}\n */\n onInsert(namespaceId, element, parent, insertBefore) {\n this._transitionEngine.insertNode(namespaceId, element, parent, insertBefore);\n }\n /**\n * @param {?} namespaceId\n * @param {?} element\n * @param {?} context\n * @param {?=} isHostElement\n * @return {?}\n */\n onRemove(namespaceId, element, context, isHostElement) {\n this._transitionEngine.removeNode(namespaceId, element, isHostElement || false, context);\n }\n /**\n * @param {?} element\n * @param {?} disable\n * @return {?}\n */\n disableAnimations(element, disable) {\n this._transitionEngine.markElementAsDisabled(element, disable);\n }\n /**\n * @param {?} namespaceId\n * @param {?} element\n * @param {?} property\n * @param {?} value\n * @return {?}\n */\n process(namespaceId, element, property, value) {\n if (property.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(property);\n /** @type {?} */\n const args = (/** @type {?} */ (value));\n this._timelineEngine.command(id, element, action, args);\n }\n else {\n this._transitionEngine.trigger(namespaceId, element, property, value);\n }\n }\n /**\n * @param {?} namespaceId\n * @param {?} element\n * @param {?} eventName\n * @param {?} eventPhase\n * @param {?} callback\n * @return {?}\n */\n listen(namespaceId, element, eventName, eventPhase, callback) {\n // @@listen\n if (eventName.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(eventName);\n return this._timelineEngine.listen(id, element, action, callback);\n }\n return this._transitionEngine.listen(namespaceId, element, eventName, eventPhase, callback);\n }\n /**\n * @param {?=} microtaskId\n * @return {?}\n */\n flush(microtaskId = -1) { this._transitionEngine.flush(microtaskId); }\n /**\n * @return {?}\n */\n get players() {\n return ((/** @type {?} */ (this._transitionEngine.players)))\n .concat((/** @type {?} */ (this._timelineEngine.players)));\n }\n /**\n * @return {?}\n */\n whenRenderingDone() { return this._transitionEngine.whenRenderingDone(); }\n}\nif (false) {\n /**\n * @type {?}\n * @private\n */\n AnimationEngine.prototype._transitionEngine;\n /**\n * @type {?}\n * @private\n */\n AnimationEngine.prototype._timelineEngine;\n /**\n * @type {?}\n * @private\n */\n AnimationEngine.prototype._triggerCache;\n /** @type {?} */\n AnimationEngine.prototype.onRemovalComplete;\n /**\n * @type {?}\n * @private\n */\n AnimationEngine.prototype.bodyNode;\n /**\n * @type {?}\n * @private\n */\n AnimationEngine.prototype._driver;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/browser/src/render/special_cased_styles.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Returns an instance of `SpecialCasedStyles` if and when any special (non animateable) styles are\n * detected.\n *\n * In CSS there exist properties that cannot be animated within a keyframe animation\n * (whether it be via CSS keyframes or web-animations) and the animation implementation\n * will ignore them. This function is designed to detect those special cased styles and\n * return a container that will be executed at the start and end of the animation.\n *\n * @param {?} element\n * @param {?} styles\n * @return {?} an instance of `SpecialCasedStyles` if any special styles are detected otherwise `null`\n */\nfunction packageNonAnimatableStyles(element, styles) {\n /** @type {?} */\n let startStyles = null;\n /** @type {?} */\n let endStyles = null;\n if (Array.isArray(styles) && styles.length) {\n startStyles = filterNonAnimatableStyles(styles[0]);\n if (styles.length > 1) {\n endStyles = filterNonAnimatableStyles(styles[styles.length - 1]);\n }\n }\n else if (styles) {\n startStyles = filterNonAnimatableStyles(styles);\n }\n return (startStyles || endStyles) ? new SpecialCasedStyles(element, startStyles, endStyles) :\n null;\n}\n/**\n * Designed to be executed during a keyframe-based animation to apply any special-cased styles.\n *\n * When started (when the `start()` method is run) then the provided `startStyles`\n * will be applied. When finished (when the `finish()` method is called) the\n * `endStyles` will be applied as well any any starting styles. Finally when\n * `destroy()` is called then all styles will be removed.\n */\nclass SpecialCasedStyles {\n /**\n * @param {?} _element\n * @param {?} _startStyles\n * @param {?} _endStyles\n */\n constructor(_element, _startStyles, _endStyles) {\n this._element = _element;\n this._startStyles = _startStyles;\n this._endStyles = _endStyles;\n this._state = 0 /* Pending */;\n /** @type {?} */\n let initialStyles = SpecialCasedStyles.initialStylesByElement.get(_element);\n if (!initialStyles) {\n SpecialCasedStyles.initialStylesByElement.set(_element, initialStyles = {});\n }\n this._initialStyles = initialStyles;\n }\n /**\n * @return {?}\n */\n start() {\n if (this._state < 1 /* Started */) {\n if (this._startStyles) {\n setStyles(this._element, this._startStyles, this._initialStyles);\n }\n this._state = 1 /* Started */;\n }\n }\n /**\n * @return {?}\n */\n finish() {\n this.start();\n if (this._state < 2 /* Finished */) {\n setStyles(this._element, this._initialStyles);\n if (this._endStyles) {\n setStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n this._state = 1 /* Started */;\n }\n }\n /**\n * @return {?}\n */\n destroy() {\n this.finish();\n if (this._state < 3 /* Destroyed */) {\n SpecialCasedStyles.initialStylesByElement.delete(this._element);\n if (this._startStyles) {\n eraseStyles(this._element, this._startStyles);\n this._endStyles = null;\n }\n if (this._endStyles) {\n eraseStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n setStyles(this._element, this._initialStyles);\n this._state = 3 /* Destroyed */;\n }\n }\n}\nSpecialCasedStyles.initialStylesByElement = new WeakMap();\nif (false) {\n /** @type {?} */\n SpecialCasedStyles.initialStylesByElement;\n /**\n * @type {?}\n * @private\n */\n SpecialCasedStyles.prototype._state;\n /**\n * @type {?}\n * @private\n */\n SpecialCasedStyles.prototype._initialStyles;\n /**\n * @type {?}\n * @private\n */\n SpecialCasedStyles.prototype._element;\n /**\n * @type {?}\n * @private\n */\n SpecialCasedStyles.prototype._startStyles;\n /**\n * @type {?}\n * @private\n */\n SpecialCasedStyles.prototype._endStyles;\n}\n/** @enum {number} */\nconst SpecialCasedStylesState = {\n Pending: 0,\n Started: 1,\n Finished: 2,\n Destroyed: 3,\n};\n/**\n * @param {?} styles\n * @return {?}\n */\nfunction filterNonAnimatableStyles(styles) {\n /** @type {?} */\n let result = null;\n /** @type {?} */\n const props = Object.keys(styles);\n for (let i = 0; i < props.length; i++) {\n /** @type {?} */\n const prop = props[i];\n if (isNonAnimatableStyle(prop)) {\n result = result || {};\n result[prop] = styles[prop];\n }\n }\n return result;\n}\n/**\n * @param {?} prop\n * @return {?}\n */\nfunction isNonAnimatableStyle(prop) {\n return prop === 'display' || prop === 'position';\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/browser/src/render/css_keyframes/element_animation_style_handler.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n * @type {?}\n */\nconst ELAPSED_TIME_MAX_DECIMAL_PLACES = 3;\n/** @type {?} */\nconst ANIMATION_PROP = 'animation';\n/** @type {?} */\nconst ANIMATIONEND_EVENT = 'animationend';\n/** @type {?} */\nconst ONE_SECOND$1 = 1000;\nclass ElementAnimationStyleHandler {\n /**\n * @param {?} _element\n * @param {?} _name\n * @param {?} _duration\n * @param {?} _delay\n * @param {?} _easing\n * @param {?} _fillMode\n * @param {?} _onDoneFn\n */\n constructor(_element, _name, _duration, _delay, _easing, _fillMode, _onDoneFn) {\n this._element = _element;\n this._name = _name;\n this._duration = _duration;\n this._delay = _delay;\n this._easing = _easing;\n this._fillMode = _fillMode;\n this._onDoneFn = _onDoneFn;\n this._finished = false;\n this._destroyed = false;\n this._startTime = 0;\n this._position = 0;\n this._eventFn = (/**\n * @param {?} e\n * @return {?}\n */\n (e) => this._handleCallback(e));\n }\n /**\n * @return {?}\n */\n apply() {\n applyKeyframeAnimation(this._element, `${this._duration}ms ${this._easing} ${this._delay}ms 1 normal ${this._fillMode} ${this._name}`);\n addRemoveAnimationEvent(this._element, this._eventFn, false);\n this._startTime = Date.now();\n }\n /**\n * @return {?}\n */\n pause() { playPauseAnimation(this._element, this._name, 'paused'); }\n /**\n * @return {?}\n */\n resume() { playPauseAnimation(this._element, this._name, 'running'); }\n /**\n * @param {?} position\n * @return {?}\n */\n setPosition(position) {\n /** @type {?} */\n const index = findIndexForAnimation(this._element, this._name);\n this._position = position * this._duration;\n setAnimationStyle(this._element, 'Delay', `-${this._position}ms`, index);\n }\n /**\n * @return {?}\n */\n getPosition() { return this._position; }\n /**\n * @private\n * @param {?} event\n * @return {?}\n */\n _handleCallback(event) {\n /** @type {?} */\n const timestamp = event._ngTestManualTimestamp || Date.now();\n /** @type {?} */\n const elapsedTime = parseFloat(event.elapsedTime.toFixed(ELAPSED_TIME_MAX_DECIMAL_PLACES)) * ONE_SECOND$1;\n if (event.animationName == this._name &&\n Math.max(timestamp - this._startTime, 0) >= this._delay && elapsedTime >= this._duration) {\n this.finish();\n }\n }\n /**\n * @return {?}\n */\n finish() {\n if (this._finished)\n return;\n this._finished = true;\n this._onDoneFn();\n addRemoveAnimationEvent(this._element, this._eventFn, true);\n }\n /**\n * @return {?}\n */\n destroy() {\n if (this._destroyed)\n return;\n this._destroyed = true;\n this.finish();\n removeKeyframeAnimation(this._element, this._name);\n }\n}\nif (false) {\n /**\n * @type {?}\n * @private\n */\n ElementAnimationStyleHandler.prototype._eventFn;\n /**\n * @type {?}\n * @private\n */\n ElementAnimationStyleHandler.prototype._finished;\n /**\n * @type {?}\n * @private\n */\n ElementAnimationStyleHandler.prototype._destroyed;\n /**\n * @type {?}\n * @private\n */\n ElementAnimationStyleHandler.prototype._startTime;\n /**\n * @type {?}\n * @private\n */\n ElementAnimationStyleHandler.prototype._position;\n /**\n * @type {?}\n * @private\n */\n ElementAnimationStyleHandler.prototype._element;\n /**\n * @type {?}\n * @private\n */\n ElementAnimationStyleHandler.prototype._name;\n /**\n * @type {?}\n * @private\n */\n ElementAnimationStyleHandler.prototype._duration;\n /**\n * @type {?}\n * @private\n */\n ElementAnimationStyleHandler.prototype._delay;\n /**\n * @type {?}\n * @private\n */\n ElementAnimationStyleHandler.prototype._easing;\n /**\n * @type {?}\n * @private\n */\n ElementAnimationStyleHandler.prototype._fillMode;\n /**\n * @type {?}\n * @private\n */\n ElementAnimationStyleHandler.prototype._onDoneFn;\n}\n/**\n * @param {?} element\n * @param {?} name\n * @param {?} status\n * @return {?}\n */\nfunction playPauseAnimation(element, name, status) {\n /** @type {?} */\n const index = findIndexForAnimation(element, name);\n setAnimationStyle(element, 'PlayState', status, index);\n}\n/**\n * @param {?} element\n * @param {?} value\n * @return {?}\n */\nfunction applyKeyframeAnimation(element, value) {\n /** @type {?} */\n const anim = getAnimationStyle(element, '').trim();\n /** @type {?} */\n let index = 0;\n if (anim.length) {\n index = countChars(anim, ',') + 1;\n value = `${anim}, ${value}`;\n }\n setAnimationStyle(element, '', value);\n return index;\n}\n/**\n * @param {?} element\n * @param {?} name\n * @return {?}\n */\nfunction removeKeyframeAnimation(element, name) {\n /** @type {?} */\n const anim = getAnimationStyle(element, '');\n /** @type {?} */\n const tokens = anim.split(',');\n /** @type {?} */\n const index = findMatchingTokenIndex(tokens, name);\n if (index >= 0) {\n tokens.splice(index, 1);\n /** @type {?} */\n const newValue = tokens.join(',');\n setAnimationStyle(element, '', newValue);\n }\n}\n/**\n * @param {?} element\n * @param {?} value\n * @return {?}\n */\nfunction findIndexForAnimation(element, value) {\n /** @type {?} */\n const anim = getAnimationStyle(element, '');\n if (anim.indexOf(',') > 0) {\n /** @type {?} */\n const tokens = anim.split(',');\n return findMatchingTokenIndex(tokens, value);\n }\n return findMatchingTokenIndex([anim], value);\n}\n/**\n * @param {?} tokens\n * @param {?} searchToken\n * @return {?}\n */\nfunction findMatchingTokenIndex(tokens, searchToken) {\n for (let i = 0; i < tokens.length; i++) {\n if (tokens[i].indexOf(searchToken) >= 0) {\n return i;\n }\n }\n return -1;\n}\n/**\n * @param {?} element\n * @param {?} fn\n * @param {?} doRemove\n * @return {?}\n */\nfunction addRemoveAnimationEvent(element, fn, doRemove) {\n doRemove ? element.removeEventListener(ANIMATIONEND_EVENT, fn) :\n element.addEventListener(ANIMATIONEND_EVENT, fn);\n}\n/**\n * @param {?} element\n * @param {?} name\n * @param {?} value\n * @param {?=} index\n * @return {?}\n */\nfunction setAnimationStyle(element, name, value, index) {\n /** @type {?} */\n const prop = ANIMATION_PROP + name;\n if (index != null) {\n /** @type {?} */\n const oldValue = element.style[prop];\n if (oldValue.length) {\n /** @type {?} */\n const tokens = oldValue.split(',');\n tokens[index] = value;\n value = tokens.join(',');\n }\n }\n element.style[prop] = value;\n}\n/**\n * @param {?} element\n * @param {?} name\n * @return {?}\n */\nfunction getAnimationStyle(element, name) {\n return element.style[ANIMATION_PROP + name];\n}\n/**\n * @param {?} value\n * @param {?} char\n * @return {?}\n */\nfunction countChars(value, char) {\n /** @type {?} */\n let count = 0;\n for (let i = 0; i < value.length; i++) {\n /** @type {?} */\n const c = value.charAt(i);\n if (c === char)\n count++;\n }\n return count;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/browser/src/render/css_keyframes/css_keyframes_player.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst DEFAULT_FILL_MODE = 'forwards';\n/** @type {?} */\nconst DEFAULT_EASING = 'linear';\n/** @enum {number} */\nconst AnimatorControlState = {\n INITIALIZED: 1, STARTED: 2, FINISHED: 3, DESTROYED: 4,\n};\nclass CssKeyframesPlayer {\n /**\n * @param {?} element\n * @param {?} keyframes\n * @param {?} animationName\n * @param {?} _duration\n * @param {?} _delay\n * @param {?} easing\n * @param {?} _finalStyles\n * @param {?=} _specialStyles\n */\n constructor(element, keyframes, animationName, _duration, _delay, easing, _finalStyles, _specialStyles) {\n this.element = element;\n this.keyframes = keyframes;\n this.animationName = animationName;\n this._duration = _duration;\n this._delay = _delay;\n this._finalStyles = _finalStyles;\n this._specialStyles = _specialStyles;\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._started = false;\n this.currentSnapshot = {};\n this._state = 0;\n this.easing = easing || DEFAULT_EASING;\n this.totalTime = _duration + _delay;\n this._buildStyler();\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n onStart(fn) { this._onStartFns.push(fn); }\n /**\n * @param {?} fn\n * @return {?}\n */\n onDone(fn) { this._onDoneFns.push(fn); }\n /**\n * @param {?} fn\n * @return {?}\n */\n onDestroy(fn) { this._onDestroyFns.push(fn); }\n /**\n * @return {?}\n */\n destroy() {\n this.init();\n if (this._state >= 4 /* DESTROYED */)\n return;\n this._state = 4 /* DESTROYED */;\n this._styler.destroy();\n this._flushStartFns();\n this._flushDoneFns();\n if (this._specialStyles) {\n this._specialStyles.destroy();\n }\n this._onDestroyFns.forEach((/**\n * @param {?} fn\n * @return {?}\n */\n fn => fn()));\n this._onDestroyFns = [];\n }\n /**\n * @private\n * @return {?}\n */\n _flushDoneFns() {\n this._onDoneFns.forEach((/**\n * @param {?} fn\n * @return {?}\n */\n fn => fn()));\n this._onDoneFns = [];\n }\n /**\n * @private\n * @return {?}\n */\n _flushStartFns() {\n this._onStartFns.forEach((/**\n * @param {?} fn\n * @return {?}\n */\n fn => fn()));\n this._onStartFns = [];\n }\n /**\n * @return {?}\n */\n finish() {\n this.init();\n if (this._state >= 3 /* FINISHED */)\n return;\n this._state = 3 /* FINISHED */;\n this._styler.finish();\n this._flushStartFns();\n if (this._specialStyles) {\n this._specialStyles.finish();\n }\n this._flushDoneFns();\n }\n /**\n * @param {?} value\n * @return {?}\n */\n setPosition(value) { this._styler.setPosition(value); }\n /**\n * @return {?}\n */\n getPosition() { return this._styler.getPosition(); }\n /**\n * @return {?}\n */\n hasStarted() { return this._state >= 2 /* STARTED */; }\n /**\n * @return {?}\n */\n init() {\n if (this._state >= 1 /* INITIALIZED */)\n return;\n this._state = 1 /* INITIALIZED */;\n /** @type {?} */\n const elm = this.element;\n this._styler.apply();\n if (this._delay) {\n this._styler.pause();\n }\n }\n /**\n * @return {?}\n */\n play() {\n this.init();\n if (!this.hasStarted()) {\n this._flushStartFns();\n this._state = 2 /* STARTED */;\n if (this._specialStyles) {\n this._specialStyles.start();\n }\n }\n this._styler.resume();\n }\n /**\n * @return {?}\n */\n pause() {\n this.init();\n this._styler.pause();\n }\n /**\n * @return {?}\n */\n restart() {\n this.reset();\n this.play();\n }\n /**\n * @return {?}\n */\n reset() {\n this._styler.destroy();\n this._buildStyler();\n this._styler.apply();\n }\n /**\n * @private\n * @return {?}\n */\n _buildStyler() {\n this._styler = new ElementAnimationStyleHandler(this.element, this.animationName, this._duration, this._delay, this.easing, DEFAULT_FILL_MODE, (/**\n * @return {?}\n */\n () => this.finish()));\n }\n /**\n * \\@internal\n * @param {?} phaseName\n * @return {?}\n */\n triggerCallback(phaseName) {\n /** @type {?} */\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach((/**\n * @param {?} fn\n * @return {?}\n */\n fn => fn()));\n methods.length = 0;\n }\n /**\n * @return {?}\n */\n beforeDestroy() {\n this.init();\n /** @type {?} */\n const styles = {};\n if (this.hasStarted()) {\n /** @type {?} */\n const finished = this._state >= 3 /* FINISHED */;\n Object.keys(this._finalStyles).forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => {\n if (prop != 'offset') {\n styles[prop] = finished ? this._finalStyles[prop] : computeStyle(this.element, prop);\n }\n }));\n }\n this.currentSnapshot = styles;\n }\n}\nif (false) {\n /**\n * @type {?}\n * @private\n */\n CssKeyframesPlayer.prototype._onDoneFns;\n /**\n * @type {?}\n * @private\n */\n CssKeyframesPlayer.prototype._onStartFns;\n /**\n * @type {?}\n * @private\n */\n CssKeyframesPlayer.prototype._onDestroyFns;\n /**\n * @type {?}\n * @private\n */\n CssKeyframesPlayer.prototype._started;\n /**\n * @type {?}\n * @private\n */\n CssKeyframesPlayer.prototype._styler;\n /** @type {?} */\n CssKeyframesPlayer.prototype.parentPlayer;\n /** @type {?} */\n CssKeyframesPlayer.prototype.totalTime;\n /** @type {?} */\n CssKeyframesPlayer.prototype.easing;\n /** @type {?} */\n CssKeyframesPlayer.prototype.currentSnapshot;\n /**\n * @type {?}\n * @private\n */\n CssKeyframesPlayer.prototype._state;\n /** @type {?} */\n CssKeyframesPlayer.prototype.element;\n /** @type {?} */\n CssKeyframesPlayer.prototype.keyframes;\n /** @type {?} */\n CssKeyframesPlayer.prototype.animationName;\n /**\n * @type {?}\n * @private\n */\n CssKeyframesPlayer.prototype._duration;\n /**\n * @type {?}\n * @private\n */\n CssKeyframesPlayer.prototype._delay;\n /**\n * @type {?}\n * @private\n */\n CssKeyframesPlayer.prototype._finalStyles;\n /**\n * @type {?}\n * @private\n */\n CssKeyframesPlayer.prototype._specialStyles;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/browser/src/render/css_keyframes/direct_style_player.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass DirectStylePlayer extends NoopAnimationPlayer {\n /**\n * @param {?} element\n * @param {?} styles\n */\n constructor(element, styles) {\n super();\n this.element = element;\n this._startingStyles = {};\n this.__initialized = false;\n this._styles = hypenatePropsObject(styles);\n }\n /**\n * @return {?}\n */\n init() {\n if (this.__initialized || !this._startingStyles)\n return;\n this.__initialized = true;\n Object.keys(this._styles).forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => {\n (/** @type {?} */ (this._startingStyles))[prop] = this.element.style[prop];\n }));\n super.init();\n }\n /**\n * @return {?}\n */\n play() {\n if (!this._startingStyles)\n return;\n this.init();\n Object.keys(this._styles)\n .forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => this.element.style.setProperty(prop, this._styles[prop])));\n super.play();\n }\n /**\n * @return {?}\n */\n destroy() {\n if (!this._startingStyles)\n return;\n Object.keys(this._startingStyles).forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => {\n /** @type {?} */\n const value = (/** @type {?} */ (this._startingStyles))[prop];\n if (value) {\n this.element.style.setProperty(prop, value);\n }\n else {\n this.element.style.removeProperty(prop);\n }\n }));\n this._startingStyles = null;\n super.destroy();\n }\n}\nif (false) {\n /**\n * @type {?}\n * @private\n */\n DirectStylePlayer.prototype._startingStyles;\n /**\n * @type {?}\n * @private\n */\n DirectStylePlayer.prototype.__initialized;\n /**\n * @type {?}\n * @private\n */\n DirectStylePlayer.prototype._styles;\n /** @type {?} */\n DirectStylePlayer.prototype.element;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/browser/src/render/css_keyframes/css_keyframes_driver.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst KEYFRAMES_NAME_PREFIX = 'gen_css_kf_';\n/** @type {?} */\nconst TAB_SPACE = ' ';\nclass CssKeyframesDriver {\n constructor() {\n this._count = 0;\n this._head = document.querySelector('head');\n this._warningIssued = false;\n }\n /**\n * @param {?} prop\n * @return {?}\n */\n validateStyleProperty(prop) { return validateStyleProperty(prop); }\n /**\n * @param {?} element\n * @param {?} selector\n * @return {?}\n */\n matchesElement(element, selector) {\n return matchesElement(element, selector);\n }\n /**\n * @param {?} elm1\n * @param {?} elm2\n * @return {?}\n */\n containsElement(elm1, elm2) { return containsElement(elm1, elm2); }\n /**\n * @param {?} element\n * @param {?} selector\n * @param {?} multi\n * @return {?}\n */\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n /**\n * @param {?} element\n * @param {?} prop\n * @param {?=} defaultValue\n * @return {?}\n */\n computeStyle(element, prop, defaultValue) {\n return (/** @type {?} */ (((/** @type {?} */ (window.getComputedStyle(element))))[prop]));\n }\n /**\n * @param {?} element\n * @param {?} name\n * @param {?} keyframes\n * @return {?}\n */\n buildKeyframeElement(element, name, keyframes) {\n keyframes = keyframes.map((/**\n * @param {?} kf\n * @return {?}\n */\n kf => hypenatePropsObject(kf)));\n /** @type {?} */\n let keyframeStr = `@keyframes ${name} {\\n`;\n /** @type {?} */\n let tab = '';\n keyframes.forEach((/**\n * @param {?} kf\n * @return {?}\n */\n kf => {\n tab = TAB_SPACE;\n /** @type {?} */\n const offset = parseFloat(kf['offset']);\n keyframeStr += `${tab}${offset * 100}% {\\n`;\n tab += TAB_SPACE;\n Object.keys(kf).forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => {\n /** @type {?} */\n const value = kf[prop];\n switch (prop) {\n case 'offset':\n return;\n case 'easing':\n if (value) {\n keyframeStr += `${tab}animation-timing-function: ${value};\\n`;\n }\n return;\n default:\n keyframeStr += `${tab}${prop}: ${value};\\n`;\n return;\n }\n }));\n keyframeStr += `${tab}}\\n`;\n }));\n keyframeStr += `}\\n`;\n /** @type {?} */\n const kfElm = document.createElement('style');\n kfElm.innerHTML = keyframeStr;\n return kfElm;\n }\n /**\n * @param {?} element\n * @param {?} keyframes\n * @param {?} duration\n * @param {?} delay\n * @param {?} easing\n * @param {?=} previousPlayers\n * @param {?=} scrubberAccessRequested\n * @return {?}\n */\n animate(element, keyframes, duration, delay, easing, previousPlayers = [], scrubberAccessRequested) {\n if (scrubberAccessRequested) {\n this._notifyFaultyScrubber();\n }\n /** @type {?} */\n const previousCssKeyframePlayers = (/** @type {?} */ (previousPlayers.filter((/**\n * @param {?} player\n * @return {?}\n */\n player => player instanceof CssKeyframesPlayer))));\n /** @type {?} */\n const previousStyles = {};\n if (allowPreviousPlayerStylesMerge(duration, delay)) {\n previousCssKeyframePlayers.forEach((/**\n * @param {?} player\n * @return {?}\n */\n player => {\n /** @type {?} */\n let styles = player.currentSnapshot;\n Object.keys(styles).forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => previousStyles[prop] = styles[prop]));\n }));\n }\n keyframes = balancePreviousStylesIntoKeyframes(element, keyframes, previousStyles);\n /** @type {?} */\n const finalStyles = flattenKeyframesIntoStyles(keyframes);\n // if there is no animation then there is no point in applying\n // styles and waiting for an event to get fired. This causes lag.\n // It's better to just directly apply the styles to the element\n // via the direct styling animation player.\n if (duration == 0) {\n return new DirectStylePlayer(element, finalStyles);\n }\n /** @type {?} */\n const animationName = `${KEYFRAMES_NAME_PREFIX}${this._count++}`;\n /** @type {?} */\n const kfElm = this.buildKeyframeElement(element, animationName, keyframes);\n (/** @type {?} */ (document.querySelector('head'))).appendChild(kfElm);\n /** @type {?} */\n const specialStyles = packageNonAnimatableStyles(element, keyframes);\n /** @type {?} */\n const player = new CssKeyframesPlayer(element, keyframes, animationName, duration, delay, easing, finalStyles, specialStyles);\n player.onDestroy((/**\n * @return {?}\n */\n () => removeElement(kfElm)));\n return player;\n }\n /**\n * @private\n * @return {?}\n */\n _notifyFaultyScrubber() {\n if (!this._warningIssued) {\n console.warn('@angular/animations: please load the web-animations.js polyfill to allow programmatic access...\\n', ' visit http://bit.ly/IWukam to learn more about using the web-animation-js polyfill.');\n this._warningIssued = true;\n }\n }\n}\nif (false) {\n /**\n * @type {?}\n * @private\n */\n CssKeyframesDriver.prototype._count;\n /**\n * @type {?}\n * @private\n */\n CssKeyframesDriver.prototype._head;\n /**\n * @type {?}\n * @private\n */\n CssKeyframesDriver.prototype._warningIssued;\n}\n/**\n * @param {?} keyframes\n * @return {?}\n */\nfunction flattenKeyframesIntoStyles(keyframes) {\n /** @type {?} */\n let flatKeyframes = {};\n if (keyframes) {\n /** @type {?} */\n const kfs = Array.isArray(keyframes) ? keyframes : [keyframes];\n kfs.forEach((/**\n * @param {?} kf\n * @return {?}\n */\n kf => {\n Object.keys(kf).forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => {\n if (prop == 'offset' || prop == 'easing')\n return;\n flatKeyframes[prop] = kf[prop];\n }));\n }));\n }\n return flatKeyframes;\n}\n/**\n * @param {?} node\n * @return {?}\n */\nfunction removeElement(node) {\n node.parentNode.removeChild(node);\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/browser/src/render/web_animations/web_animations_player.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass WebAnimationsPlayer {\n /**\n * @param {?} element\n * @param {?} keyframes\n * @param {?} options\n * @param {?=} _specialStyles\n */\n constructor(element, keyframes, options, _specialStyles) {\n this.element = element;\n this.keyframes = keyframes;\n this.options = options;\n this._specialStyles = _specialStyles;\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._initialized = false;\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n this.time = 0;\n this.parentPlayer = null;\n this.currentSnapshot = {};\n this._duration = (/** @type {?} */ (options['duration']));\n this._delay = (/** @type {?} */ (options['delay'])) || 0;\n this.time = this._duration + this._delay;\n }\n /**\n * @private\n * @return {?}\n */\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach((/**\n * @param {?} fn\n * @return {?}\n */\n fn => fn()));\n this._onDoneFns = [];\n }\n }\n /**\n * @return {?}\n */\n init() {\n this._buildPlayer();\n this._preparePlayerBeforeStart();\n }\n /**\n * @private\n * @return {?}\n */\n _buildPlayer() {\n if (this._initialized)\n return;\n this._initialized = true;\n /** @type {?} */\n const keyframes = this.keyframes;\n ((/** @type {?} */ (this))).domPlayer =\n this._triggerWebAnimation(this.element, keyframes, this.options);\n this._finalKeyframe = keyframes.length ? keyframes[keyframes.length - 1] : {};\n this.domPlayer.addEventListener('finish', (/**\n * @return {?}\n */\n () => this._onFinish()));\n }\n /**\n * @private\n * @return {?}\n */\n _preparePlayerBeforeStart() {\n // this is required so that the player doesn't start to animate right away\n if (this._delay) {\n this._resetDomPlayerState();\n }\n else {\n this.domPlayer.pause();\n }\n }\n /**\n * \\@internal\n * @param {?} element\n * @param {?} keyframes\n * @param {?} options\n * @return {?}\n */\n _triggerWebAnimation(element, keyframes, options) {\n // jscompiler doesn't seem to know animate is a native property because it's not fully\n // supported yet across common browsers (we polyfill it for Edge/Safari) [CL #143630929]\n return (/** @type {?} */ (element['animate'](keyframes, options)));\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n onStart(fn) { this._onStartFns.push(fn); }\n /**\n * @param {?} fn\n * @return {?}\n */\n onDone(fn) { this._onDoneFns.push(fn); }\n /**\n * @param {?} fn\n * @return {?}\n */\n onDestroy(fn) { this._onDestroyFns.push(fn); }\n /**\n * @return {?}\n */\n play() {\n this._buildPlayer();\n if (!this.hasStarted()) {\n this._onStartFns.forEach((/**\n * @param {?} fn\n * @return {?}\n */\n fn => fn()));\n this._onStartFns = [];\n this._started = true;\n if (this._specialStyles) {\n this._specialStyles.start();\n }\n }\n this.domPlayer.play();\n }\n /**\n * @return {?}\n */\n pause() {\n this.init();\n this.domPlayer.pause();\n }\n /**\n * @return {?}\n */\n finish() {\n this.init();\n if (this._specialStyles) {\n this._specialStyles.finish();\n }\n this._onFinish();\n this.domPlayer.finish();\n }\n /**\n * @return {?}\n */\n reset() {\n this._resetDomPlayerState();\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n }\n /**\n * @private\n * @return {?}\n */\n _resetDomPlayerState() {\n if (this.domPlayer) {\n this.domPlayer.cancel();\n }\n }\n /**\n * @return {?}\n */\n restart() {\n this.reset();\n this.play();\n }\n /**\n * @return {?}\n */\n hasStarted() { return this._started; }\n /**\n * @return {?}\n */\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._resetDomPlayerState();\n this._onFinish();\n if (this._specialStyles) {\n this._specialStyles.destroy();\n }\n this._onDestroyFns.forEach((/**\n * @param {?} fn\n * @return {?}\n */\n fn => fn()));\n this._onDestroyFns = [];\n }\n }\n /**\n * @param {?} p\n * @return {?}\n */\n setPosition(p) { this.domPlayer.currentTime = p * this.time; }\n /**\n * @return {?}\n */\n getPosition() { return this.domPlayer.currentTime / this.time; }\n /**\n * @return {?}\n */\n get totalTime() { return this._delay + this._duration; }\n /**\n * @return {?}\n */\n beforeDestroy() {\n /** @type {?} */\n const styles = {};\n if (this.hasStarted()) {\n Object.keys(this._finalKeyframe).forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => {\n if (prop != 'offset') {\n styles[prop] =\n this._finished ? this._finalKeyframe[prop] : computeStyle(this.element, prop);\n }\n }));\n }\n this.currentSnapshot = styles;\n }\n /**\n * \\@internal\n * @param {?} phaseName\n * @return {?}\n */\n triggerCallback(phaseName) {\n /** @type {?} */\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach((/**\n * @param {?} fn\n * @return {?}\n */\n fn => fn()));\n methods.length = 0;\n }\n}\nif (false) {\n /**\n * @type {?}\n * @private\n */\n WebAnimationsPlayer.prototype._onDoneFns;\n /**\n * @type {?}\n * @private\n */\n WebAnimationsPlayer.prototype._onStartFns;\n /**\n * @type {?}\n * @private\n */\n WebAnimationsPlayer.prototype._onDestroyFns;\n /**\n * @type {?}\n * @private\n */\n WebAnimationsPlayer.prototype._duration;\n /**\n * @type {?}\n * @private\n */\n WebAnimationsPlayer.prototype._delay;\n /**\n * @type {?}\n * @private\n */\n WebAnimationsPlayer.prototype._initialized;\n /**\n * @type {?}\n * @private\n */\n WebAnimationsPlayer.prototype._finished;\n /**\n * @type {?}\n * @private\n */\n WebAnimationsPlayer.prototype._started;\n /**\n * @type {?}\n * @private\n */\n WebAnimationsPlayer.prototype._destroyed;\n /**\n * @type {?}\n * @private\n */\n WebAnimationsPlayer.prototype._finalKeyframe;\n /** @type {?} */\n WebAnimationsPlayer.prototype.domPlayer;\n /** @type {?} */\n WebAnimationsPlayer.prototype.time;\n /** @type {?} */\n WebAnimationsPlayer.prototype.parentPlayer;\n /** @type {?} */\n WebAnimationsPlayer.prototype.currentSnapshot;\n /** @type {?} */\n WebAnimationsPlayer.prototype.element;\n /** @type {?} */\n WebAnimationsPlayer.prototype.keyframes;\n /** @type {?} */\n WebAnimationsPlayer.prototype.options;\n /**\n * @type {?}\n * @private\n */\n WebAnimationsPlayer.prototype._specialStyles;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/browser/src/render/web_animations/web_animations_driver.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass WebAnimationsDriver {\n constructor() {\n this._isNativeImpl = /\\{\\s*\\[native\\s+code\\]\\s*\\}/.test(getElementAnimateFn().toString());\n this._cssKeyframesDriver = new CssKeyframesDriver();\n }\n /**\n * @param {?} prop\n * @return {?}\n */\n validateStyleProperty(prop) { return validateStyleProperty(prop); }\n /**\n * @param {?} element\n * @param {?} selector\n * @return {?}\n */\n matchesElement(element, selector) {\n return matchesElement(element, selector);\n }\n /**\n * @param {?} elm1\n * @param {?} elm2\n * @return {?}\n */\n containsElement(elm1, elm2) { return containsElement(elm1, elm2); }\n /**\n * @param {?} element\n * @param {?} selector\n * @param {?} multi\n * @return {?}\n */\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n /**\n * @param {?} element\n * @param {?} prop\n * @param {?=} defaultValue\n * @return {?}\n */\n computeStyle(element, prop, defaultValue) {\n return (/** @type {?} */ (((/** @type {?} */ (window.getComputedStyle(element))))[prop]));\n }\n /**\n * @param {?} supported\n * @return {?}\n */\n overrideWebAnimationsSupport(supported) { this._isNativeImpl = supported; }\n /**\n * @param {?} element\n * @param {?} keyframes\n * @param {?} duration\n * @param {?} delay\n * @param {?} easing\n * @param {?=} previousPlayers\n * @param {?=} scrubberAccessRequested\n * @return {?}\n */\n animate(element, keyframes, duration, delay, easing, previousPlayers = [], scrubberAccessRequested) {\n /** @type {?} */\n const useKeyframes = !scrubberAccessRequested && !this._isNativeImpl;\n if (useKeyframes) {\n return this._cssKeyframesDriver.animate(element, keyframes, duration, delay, easing, previousPlayers);\n }\n /** @type {?} */\n const fill = delay == 0 ? 'both' : 'forwards';\n /** @type {?} */\n const playerOptions = { duration, delay, fill };\n // we check for this to avoid having a null|undefined value be present\n // for the easing (which results in an error for certain browsers #9752)\n if (easing) {\n playerOptions['easing'] = easing;\n }\n /** @type {?} */\n const previousStyles = {};\n /** @type {?} */\n const previousWebAnimationPlayers = (/** @type {?} */ (previousPlayers.filter((/**\n * @param {?} player\n * @return {?}\n */\n player => player instanceof WebAnimationsPlayer))));\n if (allowPreviousPlayerStylesMerge(duration, delay)) {\n previousWebAnimationPlayers.forEach((/**\n * @param {?} player\n * @return {?}\n */\n player => {\n /** @type {?} */\n let styles = player.currentSnapshot;\n Object.keys(styles).forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => previousStyles[prop] = styles[prop]));\n }));\n }\n keyframes = keyframes.map((/**\n * @param {?} styles\n * @return {?}\n */\n styles => copyStyles(styles, false)));\n keyframes = balancePreviousStylesIntoKeyframes(element, keyframes, previousStyles);\n /** @type {?} */\n const specialStyles = packageNonAnimatableStyles(element, keyframes);\n return new WebAnimationsPlayer(element, keyframes, playerOptions, specialStyles);\n }\n}\nif (false) {\n /**\n * @type {?}\n * @private\n */\n WebAnimationsDriver.prototype._isNativeImpl;\n /**\n * @type {?}\n * @private\n */\n WebAnimationsDriver.prototype._cssKeyframesDriver;\n}\n/**\n * @return {?}\n */\nfunction supportsWebAnimations() {\n return typeof getElementAnimateFn() === 'function';\n}\n/**\n * @return {?}\n */\nfunction getElementAnimateFn() {\n return (isBrowser() && ((/** @type {?} */ (Element))).prototype['animate']) || {};\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/browser/src/private_export.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/browser/src/browser.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/browser/public_api.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/animations/browser/index.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AnimationDriver, Animation as ɵAnimation, AnimationEngine as ɵAnimationEngine, AnimationStyleNormalizer as ɵAnimationStyleNormalizer, CssKeyframesDriver as ɵCssKeyframesDriver, CssKeyframesPlayer as ɵCssKeyframesPlayer, NoopAnimationDriver as ɵNoopAnimationDriver, NoopAnimationStyleNormalizer as ɵNoopAnimationStyleNormalizer, WebAnimationsDriver as ɵWebAnimationsDriver, WebAnimationsPlayer as ɵWebAnimationsPlayer, WebAnimationsStyleNormalizer as ɵWebAnimationsStyleNormalizer, allowPreviousPlayerStylesMerge as ɵallowPreviousPlayerStylesMerge, SpecialCasedStyles as ɵangular_packages_animations_browser_browser_a, containsElement as ɵcontainsElement, invokeQuery as ɵinvokeQuery, matchesElement as ɵmatchesElement, supportsWebAnimations as ɵsupportsWebAnimations, validateStyleProperty as ɵvalidateStyleProperty };\n//# sourceMappingURL=browser.js.map\n","/**\n * @license Angular v9.0.7\n * (c) 2010-2020 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { InjectionToken, Injectable, ɵɵdefineInjectable, ɵɵinject, Inject, Optional, EventEmitter, ɵfindLocaleData, ɵLocaleDataIndex, ɵgetLocaleCurrencyCode, ɵgetLocalePluralCase, LOCALE_ID, ɵregisterLocaleData, ɵisListLikeIterable, ɵstringify, Directive, IterableDiffers, KeyValueDiffers, ElementRef, Renderer2, Input, NgModuleRef, ComponentFactoryResolver, ViewContainerRef, isDevMode, TemplateRef, Host, Attribute, ɵlooseIdentical, WrappedValue, ɵisPromise, ɵisObservable, Pipe, ChangeDetectorRef, DEFAULT_CURRENCY_CODE, NgModule, Version, ErrorHandler } from '@angular/core';\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/dom_adapter.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** @type {?} */\nlet _DOM = (/** @type {?} */ (null));\n/**\n * @return {?}\n */\nfunction getDOM() {\n return _DOM;\n}\n/**\n * @param {?} adapter\n * @return {?}\n */\nfunction setDOM(adapter) {\n _DOM = adapter;\n}\n/**\n * @param {?} adapter\n * @return {?}\n */\nfunction setRootDomAdapter(adapter) {\n if (!_DOM) {\n _DOM = adapter;\n }\n}\n/* tslint:disable:requireParameterType */\n/**\n * Provides DOM operations in an environment-agnostic way.\n *\n * \\@security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n * @abstract\n */\nclass DomAdapter {\n}\nif (false) {\n /**\n * @abstract\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\n DomAdapter.prototype.getProperty = function (el, name) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} evt\n * @return {?}\n */\n DomAdapter.prototype.dispatchEvent = function (el, evt) { };\n /**\n * @abstract\n * @param {?} error\n * @return {?}\n */\n DomAdapter.prototype.log = function (error) { };\n /**\n * @abstract\n * @param {?} error\n * @return {?}\n */\n DomAdapter.prototype.logGroup = function (error) { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.logGroupEnd = function () { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.remove = function (el) { };\n /**\n * @abstract\n * @param {?} tagName\n * @param {?=} doc\n * @return {?}\n */\n DomAdapter.prototype.createElement = function (tagName, doc) { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.createHtmlDocument = function () { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.getDefaultDocument = function () { };\n /**\n * @abstract\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.isElementNode = function (node) { };\n /**\n * @abstract\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.isShadowRoot = function (node) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} evt\n * @param {?} listener\n * @return {?}\n */\n DomAdapter.prototype.onAndCancel = function (el, evt, listener) { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.supportsDOMEvents = function () { };\n /**\n * @abstract\n * @param {?} doc\n * @param {?} target\n * @return {?}\n */\n DomAdapter.prototype.getGlobalEventTarget = function (doc, target) { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.getHistory = function () { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.getLocation = function () { };\n /**\n * This is the ambient Location definition, NOT Location from \\@angular/common.\n * @abstract\n * @param {?} doc\n * @return {?}\n */\n DomAdapter.prototype.getBaseHref = function (doc) { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.resetBaseElement = function () { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.getUserAgent = function () { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.performanceNow = function () { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.supportsCookies = function () { };\n /**\n * @abstract\n * @param {?} name\n * @return {?}\n */\n DomAdapter.prototype.getCookie = function (name) { };\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/dom_tokens.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A DI Token representing the main rendering context. In a browser this is the DOM Document.\n *\n * Note: Document might not be available in the Application Context when Application and Rendering\n * Contexts are not the same (e.g. when running the application in a Web Worker).\n *\n * \\@publicApi\n * @type {?}\n */\nconst DOCUMENT = new InjectionToken('DocumentToken');\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/location/platform_location.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * This class should not be used directly by an application developer. Instead, use\n * {\\@link Location}.\n *\n * `PlatformLocation` encapsulates all calls to DOM apis, which allows the Router to be platform\n * agnostic.\n * This means that we can have different implementation of `PlatformLocation` for the different\n * platforms that angular supports. For example, `\\@angular/platform-browser` provides an\n * implementation specific to the browser environment, while `\\@angular/platform-webworker` provides\n * one suitable for use with web workers.\n *\n * The `PlatformLocation` class is used directly by all implementations of {\\@link LocationStrategy}\n * when they need to interact with the DOM apis like pushState, popState, etc...\n *\n * {\\@link LocationStrategy} in turn is used by the {\\@link Location} service which is used directly\n * by the {\\@link Router} in order to navigate between routes. Since all interactions between {\\@link\n * Router} /\n * {\\@link Location} / {\\@link LocationStrategy} and DOM apis flow through the `PlatformLocation`\n * class they are all platform independent.\n *\n * \\@publicApi\n * @abstract\n */\nclass PlatformLocation {\n}\nPlatformLocation.decorators = [\n { type: Injectable, args: [{\n providedIn: 'platform',\n // See #23917\n useFactory: useBrowserPlatformLocation\n },] }\n];\n/** @nocollapse */ PlatformLocation.ɵprov = ɵɵdefineInjectable({ factory: useBrowserPlatformLocation, token: PlatformLocation, providedIn: \"platform\" });\nif (false) {\n /**\n * @abstract\n * @return {?}\n */\n PlatformLocation.prototype.getBaseHrefFromDOM = function () { };\n /**\n * @abstract\n * @return {?}\n */\n PlatformLocation.prototype.getState = function () { };\n /**\n * @abstract\n * @param {?} fn\n * @return {?}\n */\n PlatformLocation.prototype.onPopState = function (fn) { };\n /**\n * @abstract\n * @param {?} fn\n * @return {?}\n */\n PlatformLocation.prototype.onHashChange = function (fn) { };\n /**\n * @abstract\n * @return {?}\n */\n PlatformLocation.prototype.href = function () { };\n /**\n * @abstract\n * @return {?}\n */\n PlatformLocation.prototype.protocol = function () { };\n /**\n * @abstract\n * @return {?}\n */\n PlatformLocation.prototype.hostname = function () { };\n /**\n * @abstract\n * @return {?}\n */\n PlatformLocation.prototype.port = function () { };\n /**\n * @abstract\n * @return {?}\n */\n PlatformLocation.prototype.pathname = function () { };\n /**\n * @abstract\n * @return {?}\n */\n PlatformLocation.prototype.search = function () { };\n /**\n * @abstract\n * @return {?}\n */\n PlatformLocation.prototype.hash = function () { };\n /**\n * @abstract\n * @param {?} state\n * @param {?} title\n * @param {?} url\n * @return {?}\n */\n PlatformLocation.prototype.replaceState = function (state, title, url) { };\n /**\n * @abstract\n * @param {?} state\n * @param {?} title\n * @param {?} url\n * @return {?}\n */\n PlatformLocation.prototype.pushState = function (state, title, url) { };\n /**\n * @abstract\n * @return {?}\n */\n PlatformLocation.prototype.forward = function () { };\n /**\n * @abstract\n * @return {?}\n */\n PlatformLocation.prototype.back = function () { };\n}\n/**\n * @return {?}\n */\nfunction useBrowserPlatformLocation() {\n return ɵɵinject(BrowserPlatformLocation);\n}\n/**\n * \\@description\n * Indicates when a location is initialized.\n *\n * \\@publicApi\n * @type {?}\n */\nconst LOCATION_INITIALIZED = new InjectionToken('Location Initialized');\n/**\n * \\@description\n * A serializable version of the event from `onPopState` or `onHashChange`\n *\n * \\@publicApi\n * @record\n */\nfunction LocationChangeEvent() { }\nif (false) {\n /** @type {?} */\n LocationChangeEvent.prototype.type;\n /** @type {?} */\n LocationChangeEvent.prototype.state;\n}\n/**\n * \\@publicApi\n * @record\n */\nfunction LocationChangeListener() { }\n/**\n * `PlatformLocation` encapsulates all of the direct calls to platform APIs.\n * This class should not be used directly by an application developer. Instead, use\n * {\\@link Location}.\n */\nclass BrowserPlatformLocation extends PlatformLocation {\n /**\n * @param {?} _doc\n */\n constructor(_doc) {\n super();\n this._doc = _doc;\n this._init();\n }\n // This is moved to its own method so that `MockPlatformLocationStrategy` can overwrite it\n /**\n * \\@internal\n * @return {?}\n */\n _init() {\n ((/** @type {?} */ (this))).location = getDOM().getLocation();\n this._history = getDOM().getHistory();\n }\n /**\n * @return {?}\n */\n getBaseHrefFromDOM() { return (/** @type {?} */ (getDOM().getBaseHref(this._doc))); }\n /**\n * @param {?} fn\n * @return {?}\n */\n onPopState(fn) {\n getDOM().getGlobalEventTarget(this._doc, 'window').addEventListener('popstate', fn, false);\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n onHashChange(fn) {\n getDOM().getGlobalEventTarget(this._doc, 'window').addEventListener('hashchange', fn, false);\n }\n /**\n * @return {?}\n */\n get href() { return this.location.href; }\n /**\n * @return {?}\n */\n get protocol() { return this.location.protocol; }\n /**\n * @return {?}\n */\n get hostname() { return this.location.hostname; }\n /**\n * @return {?}\n */\n get port() { return this.location.port; }\n /**\n * @return {?}\n */\n get pathname() { return this.location.pathname; }\n /**\n * @return {?}\n */\n get search() { return this.location.search; }\n /**\n * @return {?}\n */\n get hash() { return this.location.hash; }\n /**\n * @param {?} newPath\n * @return {?}\n */\n set pathname(newPath) { this.location.pathname = newPath; }\n /**\n * @param {?} state\n * @param {?} title\n * @param {?} url\n * @return {?}\n */\n pushState(state, title, url) {\n if (supportsState()) {\n this._history.pushState(state, title, url);\n }\n else {\n this.location.hash = url;\n }\n }\n /**\n * @param {?} state\n * @param {?} title\n * @param {?} url\n * @return {?}\n */\n replaceState(state, title, url) {\n if (supportsState()) {\n this._history.replaceState(state, title, url);\n }\n else {\n this.location.hash = url;\n }\n }\n /**\n * @return {?}\n */\n forward() { this._history.forward(); }\n /**\n * @return {?}\n */\n back() { this._history.back(); }\n /**\n * @return {?}\n */\n getState() { return this._history.state; }\n}\nBrowserPlatformLocation.decorators = [\n { type: Injectable, args: [{\n providedIn: 'platform',\n // See #23917\n useFactory: createBrowserPlatformLocation,\n },] }\n];\n/** @nocollapse */\nBrowserPlatformLocation.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\n/** @nocollapse */ BrowserPlatformLocation.ɵprov = ɵɵdefineInjectable({ factory: createBrowserPlatformLocation, token: BrowserPlatformLocation, providedIn: \"platform\" });\nif (false) {\n /** @type {?} */\n BrowserPlatformLocation.prototype.location;\n /**\n * @type {?}\n * @private\n */\n BrowserPlatformLocation.prototype._history;\n /**\n * @type {?}\n * @private\n */\n BrowserPlatformLocation.prototype._doc;\n}\n/**\n * @return {?}\n */\nfunction supportsState() {\n return !!window.history.pushState;\n}\n/**\n * @return {?}\n */\nfunction createBrowserPlatformLocation() {\n return new BrowserPlatformLocation(ɵɵinject(DOCUMENT));\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/private_export.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/location/util.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Joins two parts of a URL with a slash if needed.\n *\n * @param {?} start URL string\n * @param {?} end URL string\n *\n *\n * @return {?} The joined URL string.\n */\nfunction joinWithSlash(start, end) {\n if (start.length == 0) {\n return end;\n }\n if (end.length == 0) {\n return start;\n }\n /** @type {?} */\n let slashes = 0;\n if (start.endsWith('/')) {\n slashes++;\n }\n if (end.startsWith('/')) {\n slashes++;\n }\n if (slashes == 2) {\n return start + end.substring(1);\n }\n if (slashes == 1) {\n return start + end;\n }\n return start + '/' + end;\n}\n/**\n * Removes a trailing slash from a URL string if needed.\n * Looks for the first occurrence of either `#`, `?`, or the end of the\n * line as `/` characters and removes the trailing slash if one exists.\n *\n * @param {?} url URL string.\n *\n * @return {?} The URL string, modified if needed.\n */\nfunction stripTrailingSlash(url) {\n /** @type {?} */\n const match = url.match(/#|\\?|$/);\n /** @type {?} */\n const pathEndIdx = match && match.index || url.length;\n /** @type {?} */\n const droppedSlashIdx = pathEndIdx - (url[pathEndIdx - 1] === '/' ? 1 : 0);\n return url.slice(0, droppedSlashIdx) + url.slice(pathEndIdx);\n}\n/**\n * Normalizes URL parameters by prepending with `?` if needed.\n *\n * @param {?} params String of URL parameters.\n *\n * @return {?} The normalized URL parameters string.\n */\nfunction normalizeQueryParams(params) {\n return params && params[0] !== '?' ? '?' + params : params;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/location/location_strategy.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Enables the `Location` service to read route state from the browser's URL.\n * Angular provides two strategies:\n * `HashLocationStrategy` and `PathLocationStrategy`.\n *\n * Applications should use the `Router` or `Location` services to\n * interact with application route state.\n *\n * For instance, `HashLocationStrategy` produces URLs like\n * http://example.com#/foo,\n * and `PathLocationStrategy` produces\n * http://example.com/foo as an equivalent URL.\n *\n * See these two classes for more.\n *\n * \\@publicApi\n * @abstract\n */\nclass LocationStrategy {\n}\nLocationStrategy.decorators = [\n { type: Injectable, args: [{ providedIn: 'root', useFactory: provideLocationStrategy },] }\n];\n/** @nocollapse */ LocationStrategy.ɵprov = ɵɵdefineInjectable({ factory: provideLocationStrategy, token: LocationStrategy, providedIn: \"root\" });\nif (false) {\n /**\n * @abstract\n * @param {?=} includeHash\n * @return {?}\n */\n LocationStrategy.prototype.path = function (includeHash) { };\n /**\n * @abstract\n * @param {?} internal\n * @return {?}\n */\n LocationStrategy.prototype.prepareExternalUrl = function (internal) { };\n /**\n * @abstract\n * @param {?} state\n * @param {?} title\n * @param {?} url\n * @param {?} queryParams\n * @return {?}\n */\n LocationStrategy.prototype.pushState = function (state, title, url, queryParams) { };\n /**\n * @abstract\n * @param {?} state\n * @param {?} title\n * @param {?} url\n * @param {?} queryParams\n * @return {?}\n */\n LocationStrategy.prototype.replaceState = function (state, title, url, queryParams) { };\n /**\n * @abstract\n * @return {?}\n */\n LocationStrategy.prototype.forward = function () { };\n /**\n * @abstract\n * @return {?}\n */\n LocationStrategy.prototype.back = function () { };\n /**\n * @abstract\n * @param {?} fn\n * @return {?}\n */\n LocationStrategy.prototype.onPopState = function (fn) { };\n /**\n * @abstract\n * @return {?}\n */\n LocationStrategy.prototype.getBaseHref = function () { };\n}\n/**\n * @param {?} platformLocation\n * @return {?}\n */\nfunction provideLocationStrategy(platformLocation) {\n // See #23917\n /** @type {?} */\n const location = ɵɵinject(DOCUMENT).location;\n return new PathLocationStrategy(ɵɵinject((/** @type {?} */ (PlatformLocation))), location && location.origin || '');\n}\n/**\n * A predefined [DI token](guide/glossary#di-token) for the base href\n * to be used with the `PathLocationStrategy`.\n * The base href is the URL prefix that should be preserved when generating\n * and recognizing URLs.\n *\n * \\@usageNotes\n *\n * The following example shows how to use this token to configure the root app injector\n * with a base href value, so that the DI framework can supply the dependency anywhere in the app.\n *\n * ```typescript\n * import {Component, NgModule} from '\\@angular/core';\n * import {APP_BASE_HREF} from '\\@angular/common';\n *\n * \\@NgModule({\n * providers: [{provide: APP_BASE_HREF, useValue: '/my/app'}]\n * })\n * class AppModule {}\n * ```\n *\n * \\@publicApi\n * @type {?}\n */\nconst APP_BASE_HREF = new InjectionToken('appBaseHref');\n/**\n * \\@description\n * A {\\@link LocationStrategy} used to configure the {\\@link Location} service to\n * represent its state in the\n * [path](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax) of the\n * browser's URL.\n *\n * If you're using `PathLocationStrategy`, you must provide a {\\@link APP_BASE_HREF}\n * or add a base element to the document. This URL prefix that will be preserved\n * when generating and recognizing URLs.\n *\n * For instance, if you provide an `APP_BASE_HREF` of `'/my/app'` and call\n * `location.go('/foo')`, the browser's URL will become\n * `example.com/my/app/foo`.\n *\n * Similarly, if you add `` to the document and call\n * `location.go('/foo')`, the browser's URL will become\n * `example.com/my/app/foo`.\n *\n * \\@usageNotes\n *\n * ### Example\n *\n * {\\@example common/location/ts/path_location_component.ts region='LocationComponent'}\n *\n * \\@publicApi\n */\nclass PathLocationStrategy extends LocationStrategy {\n /**\n * @param {?} _platformLocation\n * @param {?=} href\n */\n constructor(_platformLocation, href) {\n super();\n this._platformLocation = _platformLocation;\n if (href == null) {\n href = this._platformLocation.getBaseHrefFromDOM();\n }\n if (href == null) {\n throw new Error(`No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document.`);\n }\n this._baseHref = href;\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n onPopState(fn) {\n this._platformLocation.onPopState(fn);\n this._platformLocation.onHashChange(fn);\n }\n /**\n * @return {?}\n */\n getBaseHref() { return this._baseHref; }\n /**\n * @param {?} internal\n * @return {?}\n */\n prepareExternalUrl(internal) { return joinWithSlash(this._baseHref, internal); }\n /**\n * @param {?=} includeHash\n * @return {?}\n */\n path(includeHash = false) {\n /** @type {?} */\n const pathname = this._platformLocation.pathname + normalizeQueryParams(this._platformLocation.search);\n /** @type {?} */\n const hash = this._platformLocation.hash;\n return hash && includeHash ? `${pathname}${hash}` : pathname;\n }\n /**\n * @param {?} state\n * @param {?} title\n * @param {?} url\n * @param {?} queryParams\n * @return {?}\n */\n pushState(state, title, url, queryParams) {\n /** @type {?} */\n const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));\n this._platformLocation.pushState(state, title, externalUrl);\n }\n /**\n * @param {?} state\n * @param {?} title\n * @param {?} url\n * @param {?} queryParams\n * @return {?}\n */\n replaceState(state, title, url, queryParams) {\n /** @type {?} */\n const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));\n this._platformLocation.replaceState(state, title, externalUrl);\n }\n /**\n * @return {?}\n */\n forward() { this._platformLocation.forward(); }\n /**\n * @return {?}\n */\n back() { this._platformLocation.back(); }\n}\nPathLocationStrategy.decorators = [\n { type: Injectable }\n];\n/** @nocollapse */\nPathLocationStrategy.ctorParameters = () => [\n { type: PlatformLocation },\n { type: String, decorators: [{ type: Optional }, { type: Inject, args: [APP_BASE_HREF,] }] }\n];\nif (false) {\n /**\n * @type {?}\n * @private\n */\n PathLocationStrategy.prototype._baseHref;\n /**\n * @type {?}\n * @private\n */\n PathLocationStrategy.prototype._platformLocation;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/location/hash_location_strategy.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * \\@description\n * A {\\@link LocationStrategy} used to configure the {\\@link Location} service to\n * represent its state in the\n * [hash fragment](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax)\n * of the browser's URL.\n *\n * For instance, if you call `location.go('/foo')`, the browser's URL will become\n * `example.com#/foo`.\n *\n * \\@usageNotes\n *\n * ### Example\n *\n * {\\@example common/location/ts/hash_location_component.ts region='LocationComponent'}\n *\n * \\@publicApi\n */\nclass HashLocationStrategy extends LocationStrategy {\n /**\n * @param {?} _platformLocation\n * @param {?=} _baseHref\n */\n constructor(_platformLocation, _baseHref) {\n super();\n this._platformLocation = _platformLocation;\n this._baseHref = '';\n if (_baseHref != null) {\n this._baseHref = _baseHref;\n }\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n onPopState(fn) {\n this._platformLocation.onPopState(fn);\n this._platformLocation.onHashChange(fn);\n }\n /**\n * @return {?}\n */\n getBaseHref() { return this._baseHref; }\n /**\n * @param {?=} includeHash\n * @return {?}\n */\n path(includeHash = false) {\n // the hash value is always prefixed with a `#`\n // and if it is empty then it will stay empty\n /** @type {?} */\n let path = this._platformLocation.hash;\n if (path == null)\n path = '#';\n return path.length > 0 ? path.substring(1) : path;\n }\n /**\n * @param {?} internal\n * @return {?}\n */\n prepareExternalUrl(internal) {\n /** @type {?} */\n const url = joinWithSlash(this._baseHref, internal);\n return url.length > 0 ? ('#' + url) : url;\n }\n /**\n * @param {?} state\n * @param {?} title\n * @param {?} path\n * @param {?} queryParams\n * @return {?}\n */\n pushState(state, title, path, queryParams) {\n /** @type {?} */\n let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams));\n if (url.length == 0) {\n url = this._platformLocation.pathname;\n }\n this._platformLocation.pushState(state, title, url);\n }\n /**\n * @param {?} state\n * @param {?} title\n * @param {?} path\n * @param {?} queryParams\n * @return {?}\n */\n replaceState(state, title, path, queryParams) {\n /** @type {?} */\n let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams));\n if (url.length == 0) {\n url = this._platformLocation.pathname;\n }\n this._platformLocation.replaceState(state, title, url);\n }\n /**\n * @return {?}\n */\n forward() { this._platformLocation.forward(); }\n /**\n * @return {?}\n */\n back() { this._platformLocation.back(); }\n}\nHashLocationStrategy.decorators = [\n { type: Injectable }\n];\n/** @nocollapse */\nHashLocationStrategy.ctorParameters = () => [\n { type: PlatformLocation },\n { type: String, decorators: [{ type: Optional }, { type: Inject, args: [APP_BASE_HREF,] }] }\n];\nif (false) {\n /**\n * @type {?}\n * @private\n */\n HashLocationStrategy.prototype._baseHref;\n /**\n * @type {?}\n * @private\n */\n HashLocationStrategy.prototype._platformLocation;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/location/location.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * \\@publicApi\n * @record\n */\nfunction PopStateEvent() { }\nif (false) {\n /** @type {?|undefined} */\n PopStateEvent.prototype.pop;\n /** @type {?|undefined} */\n PopStateEvent.prototype.state;\n /** @type {?|undefined} */\n PopStateEvent.prototype.type;\n /** @type {?|undefined} */\n PopStateEvent.prototype.url;\n}\n/**\n * \\@description\n *\n * A service that applications can use to interact with a browser's URL.\n *\n * Depending on the `LocationStrategy` used, `Location` persists\n * to the URL's path or the URL's hash segment.\n *\n * \\@usageNotes\n *\n * It's better to use the `Router#navigate` service to trigger route changes. Use\n * `Location` only if you need to interact with or create normalized URLs outside of\n * routing.\n *\n * `Location` is responsible for normalizing the URL against the application's base href.\n * A normalized URL is absolute from the URL host, includes the application's base href, and has no\n * trailing slash:\n * - `/my/app/user/123` is normalized\n * - `my/app/user/123` **is not** normalized\n * - `/my/app/user/123/` **is not** normalized\n *\n * ### Example\n *\n * \n *\n * \\@publicApi\n */\nclass Location {\n /**\n * @param {?} platformStrategy\n * @param {?} platformLocation\n */\n constructor(platformStrategy, platformLocation) {\n /**\n * \\@internal\n */\n this._subject = new EventEmitter();\n /**\n * \\@internal\n */\n this._urlChangeListeners = [];\n this._platformStrategy = platformStrategy;\n /** @type {?} */\n const browserBaseHref = this._platformStrategy.getBaseHref();\n this._platformLocation = platformLocation;\n this._baseHref = stripTrailingSlash(_stripIndexHtml(browserBaseHref));\n this._platformStrategy.onPopState((/**\n * @param {?} ev\n * @return {?}\n */\n (ev) => {\n this._subject.emit({\n 'url': this.path(true),\n 'pop': true,\n 'state': ev.state,\n 'type': ev.type,\n });\n }));\n }\n /**\n * Normalizes the URL path for this location.\n *\n * @param {?=} includeHash True to include an anchor fragment in the path.\n *\n * @return {?} The normalized URL path.\n */\n // TODO: vsavkin. Remove the boolean flag and always include hash once the deprecated router is\n // removed.\n path(includeHash = false) {\n return this.normalize(this._platformStrategy.path(includeHash));\n }\n /**\n * Reports the current state of the location history.\n * @return {?} The current value of the `history.state` object.\n */\n getState() { return this._platformLocation.getState(); }\n /**\n * Normalizes the given path and compares to the current normalized path.\n *\n * @param {?} path The given URL path.\n * @param {?=} query Query parameters.\n *\n * @return {?} True if the given URL path is equal to the current normalized path, false\n * otherwise.\n */\n isCurrentPathEqualTo(path, query = '') {\n return this.path() == this.normalize(path + normalizeQueryParams(query));\n }\n /**\n * Normalizes a URL path by stripping any trailing slashes.\n *\n * @param {?} url String representing a URL.\n *\n * @return {?} The normalized URL string.\n */\n normalize(url) {\n return Location.stripTrailingSlash(_stripBaseHref(this._baseHref, _stripIndexHtml(url)));\n }\n /**\n * Normalizes an external URL path.\n * If the given URL doesn't begin with a leading slash (`'/'`), adds one\n * before normalizing. Adds a hash if `HashLocationStrategy` is\n * in use, or the `APP_BASE_HREF` if the `PathLocationStrategy` is in use.\n *\n * @param {?} url String representing a URL.\n *\n * @return {?} A normalized platform-specific URL.\n */\n prepareExternalUrl(url) {\n if (url && url[0] !== '/') {\n url = '/' + url;\n }\n return this._platformStrategy.prepareExternalUrl(url);\n }\n // TODO: rename this method to pushState\n /**\n * Changes the browser's URL to a normalized version of a given URL, and pushes a\n * new item onto the platform's history.\n *\n * @param {?} path URL path to normalize.\n * @param {?=} query Query parameters.\n * @param {?=} state Location history state.\n *\n * @return {?}\n */\n go(path, query = '', state = null) {\n this._platformStrategy.pushState(state, '', path, query);\n this._notifyUrlChangeListeners(this.prepareExternalUrl(path + normalizeQueryParams(query)), state);\n }\n /**\n * Changes the browser's URL to a normalized version of the given URL, and replaces\n * the top item on the platform's history stack.\n *\n * @param {?} path URL path to normalize.\n * @param {?=} query Query parameters.\n * @param {?=} state Location history state.\n * @return {?}\n */\n replaceState(path, query = '', state = null) {\n this._platformStrategy.replaceState(state, '', path, query);\n this._notifyUrlChangeListeners(this.prepareExternalUrl(path + normalizeQueryParams(query)), state);\n }\n /**\n * Navigates forward in the platform's history.\n * @return {?}\n */\n forward() { this._platformStrategy.forward(); }\n /**\n * Navigates back in the platform's history.\n * @return {?}\n */\n back() { this._platformStrategy.back(); }\n /**\n * Registers a URL change listener. Use to catch updates performed by the Angular\n * framework that are not detectible through \"popstate\" or \"hashchange\" events.\n *\n * @param {?} fn The change handler function, which take a URL and a location history state.\n * @return {?}\n */\n onUrlChange(fn) {\n this._urlChangeListeners.push(fn);\n this.subscribe((/**\n * @param {?} v\n * @return {?}\n */\n v => { this._notifyUrlChangeListeners(v.url, v.state); }));\n }\n /**\n * \\@internal\n * @param {?=} url\n * @param {?=} state\n * @return {?}\n */\n _notifyUrlChangeListeners(url = '', state) {\n this._urlChangeListeners.forEach((/**\n * @param {?} fn\n * @return {?}\n */\n fn => fn(url, state)));\n }\n /**\n * Subscribes to the platform's `popState` events.\n *\n * @param {?} onNext\n * @param {?=} onThrow\n * @param {?=} onReturn\n * @return {?} Subscribed events.\n */\n subscribe(onNext, onThrow, onReturn) {\n return this._subject.subscribe({ next: onNext, error: onThrow, complete: onReturn });\n }\n}\n/**\n * Normalizes URL parameters by prepending with `?` if needed.\n *\n * @param params String of URL parameters.\n *\n * @return The normalized URL parameters string.\n */\nLocation.normalizeQueryParams = normalizeQueryParams;\n/**\n * Joins two parts of a URL with a slash if needed.\n *\n * @param start URL string\n * @param end URL string\n *\n *\n * @return The joined URL string.\n */\nLocation.joinWithSlash = joinWithSlash;\n/**\n * Removes a trailing slash from a URL string if needed.\n * Looks for the first occurrence of either `#`, `?`, or the end of the\n * line as `/` characters and removes the trailing slash if one exists.\n *\n * @param url URL string.\n *\n * @return The URL string, modified if needed.\n */\nLocation.stripTrailingSlash = stripTrailingSlash;\nLocation.decorators = [\n { type: Injectable, args: [{\n providedIn: 'root',\n // See #23917\n useFactory: createLocation,\n },] }\n];\n/** @nocollapse */\nLocation.ctorParameters = () => [\n { type: LocationStrategy },\n { type: PlatformLocation }\n];\n/** @nocollapse */ Location.ɵprov = ɵɵdefineInjectable({ factory: createLocation, token: Location, providedIn: \"root\" });\nif (false) {\n /**\n * Normalizes URL parameters by prepending with `?` if needed.\n *\n * \\@param params String of URL parameters.\n *\n * \\@return The normalized URL parameters string.\n * @type {?}\n */\n Location.normalizeQueryParams;\n /**\n * Joins two parts of a URL with a slash if needed.\n *\n * \\@param start URL string\n * \\@param end URL string\n *\n *\n * \\@return The joined URL string.\n * @type {?}\n */\n Location.joinWithSlash;\n /**\n * Removes a trailing slash from a URL string if needed.\n * Looks for the first occurrence of either `#`, `?`, or the end of the\n * line as `/` characters and removes the trailing slash if one exists.\n *\n * \\@param url URL string.\n *\n * \\@return The URL string, modified if needed.\n * @type {?}\n */\n Location.stripTrailingSlash;\n /**\n * \\@internal\n * @type {?}\n */\n Location.prototype._subject;\n /**\n * \\@internal\n * @type {?}\n */\n Location.prototype._baseHref;\n /**\n * \\@internal\n * @type {?}\n */\n Location.prototype._platformStrategy;\n /**\n * \\@internal\n * @type {?}\n */\n Location.prototype._platformLocation;\n /**\n * \\@internal\n * @type {?}\n */\n Location.prototype._urlChangeListeners;\n}\n/**\n * @return {?}\n */\nfunction createLocation() {\n return new Location(ɵɵinject((/** @type {?} */ (LocationStrategy))), ɵɵinject((/** @type {?} */ (PlatformLocation))));\n}\n/**\n * @param {?} baseHref\n * @param {?} url\n * @return {?}\n */\nfunction _stripBaseHref(baseHref, url) {\n return baseHref && url.startsWith(baseHref) ? url.substring(baseHref.length) : url;\n}\n/**\n * @param {?} url\n * @return {?}\n */\nfunction _stripIndexHtml(url) {\n return url.replace(/\\/index.html$/, '');\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/location/index.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/i18n/currencies.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// THIS CODE IS GENERATED - DO NOT MODIFY\n// See angular/tools/gulp-tasks/cldr/extract.js\n/**\n * \\@internal\n * @type {?}\n */\nconst CURRENCIES_EN = {\n 'ADP': [undefined, undefined, 0],\n 'AFN': [undefined, undefined, 0],\n 'ALL': [undefined, undefined, 0],\n 'AMD': [undefined, undefined, 2],\n 'AOA': [undefined, 'Kz'],\n 'ARS': [undefined, '$'],\n 'AUD': ['A$', '$'],\n 'BAM': [undefined, 'KM'],\n 'BBD': [undefined, '$'],\n 'BDT': [undefined, '৳'],\n 'BHD': [undefined, undefined, 3],\n 'BIF': [undefined, undefined, 0],\n 'BMD': [undefined, '$'],\n 'BND': [undefined, '$'],\n 'BOB': [undefined, 'Bs'],\n 'BRL': ['R$'],\n 'BSD': [undefined, '$'],\n 'BWP': [undefined, 'P'],\n 'BYN': [undefined, 'р.', 2],\n 'BYR': [undefined, undefined, 0],\n 'BZD': [undefined, '$'],\n 'CAD': ['CA$', '$', 2],\n 'CHF': [undefined, undefined, 2],\n 'CLF': [undefined, undefined, 4],\n 'CLP': [undefined, '$', 0],\n 'CNY': ['CN¥', '¥'],\n 'COP': [undefined, '$', 2],\n 'CRC': [undefined, '₡', 2],\n 'CUC': [undefined, '$'],\n 'CUP': [undefined, '$'],\n 'CZK': [undefined, 'Kč', 2],\n 'DJF': [undefined, undefined, 0],\n 'DKK': [undefined, 'kr', 2],\n 'DOP': [undefined, '$'],\n 'EGP': [undefined, 'E£'],\n 'ESP': [undefined, '₧', 0],\n 'EUR': ['€'],\n 'FJD': [undefined, '$'],\n 'FKP': [undefined, '£'],\n 'GBP': ['£'],\n 'GEL': [undefined, '₾'],\n 'GIP': [undefined, '£'],\n 'GNF': [undefined, 'FG', 0],\n 'GTQ': [undefined, 'Q'],\n 'GYD': [undefined, '$', 2],\n 'HKD': ['HK$', '$'],\n 'HNL': [undefined, 'L'],\n 'HRK': [undefined, 'kn'],\n 'HUF': [undefined, 'Ft', 2],\n 'IDR': [undefined, 'Rp', 2],\n 'ILS': ['₪'],\n 'INR': ['₹'],\n 'IQD': [undefined, undefined, 0],\n 'IRR': [undefined, undefined, 0],\n 'ISK': [undefined, 'kr', 0],\n 'ITL': [undefined, undefined, 0],\n 'JMD': [undefined, '$'],\n 'JOD': [undefined, undefined, 3],\n 'JPY': ['¥', undefined, 0],\n 'KHR': [undefined, '៛'],\n 'KMF': [undefined, 'CF', 0],\n 'KPW': [undefined, '₩', 0],\n 'KRW': ['₩', undefined, 0],\n 'KWD': [undefined, undefined, 3],\n 'KYD': [undefined, '$'],\n 'KZT': [undefined, '₸'],\n 'LAK': [undefined, '₭', 0],\n 'LBP': [undefined, 'L£', 0],\n 'LKR': [undefined, 'Rs'],\n 'LRD': [undefined, '$'],\n 'LTL': [undefined, 'Lt'],\n 'LUF': [undefined, undefined, 0],\n 'LVL': [undefined, 'Ls'],\n 'LYD': [undefined, undefined, 3],\n 'MGA': [undefined, 'Ar', 0],\n 'MGF': [undefined, undefined, 0],\n 'MMK': [undefined, 'K', 0],\n 'MNT': [undefined, '₮', 2],\n 'MRO': [undefined, undefined, 0],\n 'MUR': [undefined, 'Rs', 2],\n 'MXN': ['MX$', '$'],\n 'MYR': [undefined, 'RM'],\n 'NAD': [undefined, '$'],\n 'NGN': [undefined, '₦'],\n 'NIO': [undefined, 'C$'],\n 'NOK': [undefined, 'kr', 2],\n 'NPR': [undefined, 'Rs'],\n 'NZD': ['NZ$', '$'],\n 'OMR': [undefined, undefined, 3],\n 'PHP': [undefined, '₱'],\n 'PKR': [undefined, 'Rs', 2],\n 'PLN': [undefined, 'zł'],\n 'PYG': [undefined, '₲', 0],\n 'RON': [undefined, 'lei'],\n 'RSD': [undefined, undefined, 0],\n 'RUB': [undefined, '₽'],\n 'RUR': [undefined, 'р.'],\n 'RWF': [undefined, 'RF', 0],\n 'SBD': [undefined, '$'],\n 'SEK': [undefined, 'kr', 2],\n 'SGD': [undefined, '$'],\n 'SHP': [undefined, '£'],\n 'SLL': [undefined, undefined, 0],\n 'SOS': [undefined, undefined, 0],\n 'SRD': [undefined, '$'],\n 'SSP': [undefined, '£'],\n 'STD': [undefined, undefined, 0],\n 'STN': [undefined, 'Db'],\n 'SYP': [undefined, '£', 0],\n 'THB': [undefined, '฿'],\n 'TMM': [undefined, undefined, 0],\n 'TND': [undefined, undefined, 3],\n 'TOP': [undefined, 'T$'],\n 'TRL': [undefined, undefined, 0],\n 'TRY': [undefined, '₺'],\n 'TTD': [undefined, '$'],\n 'TWD': ['NT$', '$', 2],\n 'TZS': [undefined, undefined, 2],\n 'UAH': [undefined, '₴'],\n 'UGX': [undefined, undefined, 0],\n 'USD': ['$'],\n 'UYI': [undefined, undefined, 0],\n 'UYU': [undefined, '$'],\n 'UYW': [undefined, undefined, 4],\n 'UZS': [undefined, undefined, 2],\n 'VEF': [undefined, 'Bs', 2],\n 'VND': ['₫', undefined, 0],\n 'VUV': [undefined, undefined, 0],\n 'XAF': ['FCFA', undefined, 0],\n 'XCD': ['EC$', '$'],\n 'XOF': ['CFA', undefined, 0],\n 'XPF': ['CFPF', undefined, 0],\n 'XXX': ['¤'],\n 'YER': [undefined, undefined, 0],\n 'ZAR': [undefined, 'R'],\n 'ZMK': [undefined, undefined, 0],\n 'ZMW': [undefined, 'ZK'],\n 'ZWD': [undefined, undefined, 0]\n};\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/i18n/locale_data_api.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @enum {number} */\nconst NumberFormatStyle = {\n Decimal: 0,\n Percent: 1,\n Currency: 2,\n Scientific: 3,\n};\nNumberFormatStyle[NumberFormatStyle.Decimal] = 'Decimal';\nNumberFormatStyle[NumberFormatStyle.Percent] = 'Percent';\nNumberFormatStyle[NumberFormatStyle.Currency] = 'Currency';\nNumberFormatStyle[NumberFormatStyle.Scientific] = 'Scientific';\n/** @enum {number} */\nconst Plural = {\n Zero: 0,\n One: 1,\n Two: 2,\n Few: 3,\n Many: 4,\n Other: 5,\n};\nPlural[Plural.Zero] = 'Zero';\nPlural[Plural.One] = 'One';\nPlural[Plural.Two] = 'Two';\nPlural[Plural.Few] = 'Few';\nPlural[Plural.Many] = 'Many';\nPlural[Plural.Other] = 'Other';\n/** @enum {number} */\nconst FormStyle = {\n Format: 0,\n Standalone: 1,\n};\nFormStyle[FormStyle.Format] = 'Format';\nFormStyle[FormStyle.Standalone] = 'Standalone';\n/** @enum {number} */\nconst TranslationWidth = {\n /** 1 character for `en-US`. For example: 'S' */\n Narrow: 0,\n /** 3 characters for `en-US`. For example: 'Sun' */\n Abbreviated: 1,\n /** Full length for `en-US`. For example: \"Sunday\" */\n Wide: 2,\n /** 2 characters for `en-US`, For example: \"Su\" */\n Short: 3,\n};\nTranslationWidth[TranslationWidth.Narrow] = 'Narrow';\nTranslationWidth[TranslationWidth.Abbreviated] = 'Abbreviated';\nTranslationWidth[TranslationWidth.Wide] = 'Wide';\nTranslationWidth[TranslationWidth.Short] = 'Short';\n/** @enum {number} */\nconst FormatWidth = {\n /**\n * For `en-US`, 'M/d/yy, h:mm a'`\n * (Example: `6/15/15, 9:03 AM`)\n */\n Short: 0,\n /**\n * For `en-US`, `'MMM d, y, h:mm:ss a'`\n * (Example: `Jun 15, 2015, 9:03:01 AM`)\n */\n Medium: 1,\n /**\n * For `en-US`, `'MMMM d, y, h:mm:ss a z'`\n * (Example: `June 15, 2015 at 9:03:01 AM GMT+1`)\n */\n Long: 2,\n /**\n * For `en-US`, `'EEEE, MMMM d, y, h:mm:ss a zzzz'`\n * (Example: `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00`)\n */\n Full: 3,\n};\nFormatWidth[FormatWidth.Short] = 'Short';\nFormatWidth[FormatWidth.Medium] = 'Medium';\nFormatWidth[FormatWidth.Long] = 'Long';\nFormatWidth[FormatWidth.Full] = 'Full';\n/** @enum {number} */\nconst NumberSymbol = {\n /**\n * Decimal separator.\n * For `en-US`, the dot character.\n * Example : 2,345`.`67\n */\n Decimal: 0,\n /**\n * Grouping separator, typically for thousands.\n * For `en-US`, the comma character.\n * Example: 2`,`345.67\n */\n Group: 1,\n /**\n * List-item separator.\n * Example: \"one, two, and three\"\n */\n List: 2,\n /**\n * Sign for percentage (out of 100).\n * Example: 23.4%\n */\n PercentSign: 3,\n /**\n * Sign for positive numbers.\n * Example: +23\n */\n PlusSign: 4,\n /**\n * Sign for negative numbers.\n * Example: -23\n */\n MinusSign: 5,\n /**\n * Computer notation for exponential value (n times a power of 10).\n * Example: 1.2E3\n */\n Exponential: 6,\n /**\n * Human-readable format of exponential.\n * Example: 1.2x103\n */\n SuperscriptingExponent: 7,\n /**\n * Sign for permille (out of 1000).\n * Example: 23.4‰\n */\n PerMille: 8,\n /**\n * Infinity, can be used with plus and minus.\n * Example: ∞, +∞, -∞\n */\n Infinity: 9,\n /**\n * Not a number.\n * Example: NaN\n */\n NaN: 10,\n /**\n * Symbol used between time units.\n * Example: 10:52\n */\n TimeSeparator: 11,\n /**\n * Decimal separator for currency values (fallback to `Decimal`).\n * Example: $2,345.67\n */\n CurrencyDecimal: 12,\n /**\n * Group separator for currency values (fallback to `Group`).\n * Example: $2,345.67\n */\n CurrencyGroup: 13,\n};\nNumberSymbol[NumberSymbol.Decimal] = 'Decimal';\nNumberSymbol[NumberSymbol.Group] = 'Group';\nNumberSymbol[NumberSymbol.List] = 'List';\nNumberSymbol[NumberSymbol.PercentSign] = 'PercentSign';\nNumberSymbol[NumberSymbol.PlusSign] = 'PlusSign';\nNumberSymbol[NumberSymbol.MinusSign] = 'MinusSign';\nNumberSymbol[NumberSymbol.Exponential] = 'Exponential';\nNumberSymbol[NumberSymbol.SuperscriptingExponent] = 'SuperscriptingExponent';\nNumberSymbol[NumberSymbol.PerMille] = 'PerMille';\nNumberSymbol[NumberSymbol.Infinity] = 'Infinity';\nNumberSymbol[NumberSymbol.NaN] = 'NaN';\nNumberSymbol[NumberSymbol.TimeSeparator] = 'TimeSeparator';\nNumberSymbol[NumberSymbol.CurrencyDecimal] = 'CurrencyDecimal';\nNumberSymbol[NumberSymbol.CurrencyGroup] = 'CurrencyGroup';\n/** @enum {number} */\nconst WeekDay = {\n Sunday: 0,\n Monday: 1,\n Tuesday: 2,\n Wednesday: 3,\n Thursday: 4,\n Friday: 5,\n Saturday: 6,\n};\nWeekDay[WeekDay.Sunday] = 'Sunday';\nWeekDay[WeekDay.Monday] = 'Monday';\nWeekDay[WeekDay.Tuesday] = 'Tuesday';\nWeekDay[WeekDay.Wednesday] = 'Wednesday';\nWeekDay[WeekDay.Thursday] = 'Thursday';\nWeekDay[WeekDay.Friday] = 'Friday';\nWeekDay[WeekDay.Saturday] = 'Saturday';\n/**\n * Retrieves the locale ID from the currently loaded locale.\n * The loaded locale could be, for example, a global one rather than a regional one.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n)\n *\n * \\@publicApi\n * @param {?} locale A locale code, such as `fr-FR`.\n * @return {?} The locale code. For example, `fr`.\n */\nfunction getLocaleId(locale) {\n return ɵfindLocaleData(locale)[ɵLocaleDataIndex.LocaleId];\n}\n/**\n * Retrieves day period strings for the given locale.\n *\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n)\n *\n * \\@publicApi\n * @param {?} locale A locale code for the locale format rules to use.\n * @param {?} formStyle The required grammatical form.\n * @param {?} width The required character width.\n * @return {?} An array of localized period strings. For example, `[AM, PM]` for `en-US`.\n */\nfunction getLocaleDayPeriods(locale, formStyle, width) {\n /** @type {?} */\n const data = ɵfindLocaleData(locale);\n /** @type {?} */\n const amPmData = (/** @type {?} */ ([data[ɵLocaleDataIndex.DayPeriodsFormat], data[ɵLocaleDataIndex.DayPeriodsStandalone]]));\n /** @type {?} */\n const amPm = getLastDefinedValue(amPmData, formStyle);\n return getLastDefinedValue(amPm, width);\n}\n/**\n * Retrieves days of the week for the given locale, using the Gregorian calendar.\n *\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n)\n *\n * \\@publicApi\n * @param {?} locale A locale code for the locale format rules to use.\n * @param {?} formStyle The required grammatical form.\n * @param {?} width The required character width.\n * @return {?} An array of localized name strings.\n * For example,`[Sunday, Monday, ... Saturday]` for `en-US`.\n */\nfunction getLocaleDayNames(locale, formStyle, width) {\n /** @type {?} */\n const data = ɵfindLocaleData(locale);\n /** @type {?} */\n const daysData = (/** @type {?} */ ([data[ɵLocaleDataIndex.DaysFormat], data[ɵLocaleDataIndex.DaysStandalone]]));\n /** @type {?} */\n const days = getLastDefinedValue(daysData, formStyle);\n return getLastDefinedValue(days, width);\n}\n/**\n * Retrieves months of the year for the given locale, using the Gregorian calendar.\n *\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n)\n *\n * \\@publicApi\n * @param {?} locale A locale code for the locale format rules to use.\n * @param {?} formStyle The required grammatical form.\n * @param {?} width The required character width.\n * @return {?} An array of localized name strings.\n * For example, `[January, February, ...]` for `en-US`.\n */\nfunction getLocaleMonthNames(locale, formStyle, width) {\n /** @type {?} */\n const data = ɵfindLocaleData(locale);\n /** @type {?} */\n const monthsData = (/** @type {?} */ ([data[ɵLocaleDataIndex.MonthsFormat], data[ɵLocaleDataIndex.MonthsStandalone]]));\n /** @type {?} */\n const months = getLastDefinedValue(monthsData, formStyle);\n return getLastDefinedValue(months, width);\n}\n/**\n * Retrieves Gregorian-calendar eras for the given locale.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n)\n *\n * \\@publicApi\n * @param {?} locale A locale code for the locale format rules to use.\n * @param {?} width The required character width.\n * @return {?} An array of localized era strings.\n * For example, `[AD, BC]` for `en-US`.\n */\nfunction getLocaleEraNames(locale, width) {\n /** @type {?} */\n const data = ɵfindLocaleData(locale);\n /** @type {?} */\n const erasData = (/** @type {?} */ (data[ɵLocaleDataIndex.Eras]));\n return getLastDefinedValue(erasData, width);\n}\n/**\n * Retrieves the first day of the week for the given locale.\n *\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n)\n *\n * \\@publicApi\n * @param {?} locale A locale code for the locale format rules to use.\n * @return {?} A day index number, using the 0-based week-day index for `en-US`\n * (Sunday = 0, Monday = 1, ...).\n * For example, for `fr-FR`, returns 1 to indicate that the first day is Monday.\n */\nfunction getLocaleFirstDayOfWeek(locale) {\n /** @type {?} */\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.FirstDayOfWeek];\n}\n/**\n * Range of week days that are considered the week-end for the given locale.\n *\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n)\n *\n * \\@publicApi\n * @param {?} locale A locale code for the locale format rules to use.\n * @return {?} The range of day values, `[startDay, endDay]`.\n */\nfunction getLocaleWeekEndRange(locale) {\n /** @type {?} */\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.WeekendRange];\n}\n/**\n * Retrieves a localized date-value formating string.\n *\n * @see `FormatWidth` / [Internationalization (i18n) Guide](https://angular.io/guide/i18n)\n *\n * \\@publicApi\n * @param {?} locale A locale code for the locale format rules to use.\n * @param {?} width The format type.\n * @return {?} The localized formating string.\n */\nfunction getLocaleDateFormat(locale, width) {\n /** @type {?} */\n const data = ɵfindLocaleData(locale);\n return getLastDefinedValue(data[ɵLocaleDataIndex.DateFormat], width);\n}\n/**\n * Retrieves a localized time-value formatting string.\n *\n * @see `FormatWidth` / [Internationalization (i18n) Guide](https://angular.io/guide/i18n)\n * \\@publicApi\n * @param {?} locale A locale code for the locale format rules to use.\n * @param {?} width The format type.\n * @return {?} The localized formatting string.\n */\nfunction getLocaleTimeFormat(locale, width) {\n /** @type {?} */\n const data = ɵfindLocaleData(locale);\n return getLastDefinedValue(data[ɵLocaleDataIndex.TimeFormat], width);\n}\n/**\n * Retrieves a localized date-time formatting string.\n *\n * @see `FormatWidth` / [Internationalization (i18n) Guide](https://angular.io/guide/i18n)\n *\n * \\@publicApi\n * @param {?} locale A locale code for the locale format rules to use.\n * @param {?} width The format type.\n * @return {?} The localized formatting string.\n */\nfunction getLocaleDateTimeFormat(locale, width) {\n /** @type {?} */\n const data = ɵfindLocaleData(locale);\n /** @type {?} */\n const dateTimeFormatData = (/** @type {?} */ (data[ɵLocaleDataIndex.DateTimeFormat]));\n return getLastDefinedValue(dateTimeFormatData, width);\n}\n/**\n * Retrieves a localized number symbol that can be used to replace placeholders in number formats.\n * @see `NumberSymbol` / [Internationalization (i18n) Guide](https://angular.io/guide/i18n)\n *\n * \\@publicApi\n * @param {?} locale The locale code.\n * @param {?} symbol The symbol to localize.\n * @return {?} The character for the localized symbol.\n */\nfunction getLocaleNumberSymbol(locale, symbol) {\n /** @type {?} */\n const data = ɵfindLocaleData(locale);\n /** @type {?} */\n const res = data[ɵLocaleDataIndex.NumberSymbols][symbol];\n if (typeof res === 'undefined') {\n if (symbol === NumberSymbol.CurrencyDecimal) {\n return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Decimal];\n }\n else if (symbol === NumberSymbol.CurrencyGroup) {\n return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Group];\n }\n }\n return res;\n}\n/**\n * Retrieves a number format for a given locale.\n *\n * Numbers are formatted using patterns, like `#,###.00`. For example, the pattern `#,###.00`\n * when used to format the number 12345.678 could result in \"12'345,678\". That would happen if the\n * grouping separator for your language is an apostrophe, and the decimal separator is a comma.\n *\n * Important: The characters `.` `,` `0` `#` (and others below) are special placeholders\n * that stand for the decimal separator, and so on, and are NOT real characters.\n * You must NOT \"translate\" the placeholders. For example, don't change `.` to `,` even though in\n * your language the decimal point is written with a comma. The symbols should be replaced by the\n * local equivalents, using the appropriate `NumberSymbol` for your language.\n *\n * Here are the special characters used in number patterns:\n *\n * | Symbol | Meaning |\n * |--------|---------|\n * | . | Replaced automatically by the character used for the decimal point. |\n * | , | Replaced by the \"grouping\" (thousands) separator. |\n * | 0 | Replaced by a digit (or zero if there aren't enough digits). |\n * | # | Replaced by a digit (or nothing if there aren't enough). |\n * | ¤ | Replaced by a currency symbol, such as $ or USD. |\n * | % | Marks a percent format. The % symbol may change position, but must be retained. |\n * | E | Marks a scientific format. The E symbol may change position, but must be retained. |\n * | ' | Special characters used as literal characters are quoted with ASCII single quotes. |\n *\n * @see `NumberFormatStyle` / [CLDR website](http://cldr.unicode.org/translation/number-patterns) / [Internationalization (i18n) Guide](https://angular.io/guide/i18n)\n *\n * \\@publicApi\n * @param {?} locale A locale code for the locale format rules to use.\n * @param {?} type The type of numeric value to be formatted (such as `Decimal` or `Currency`.)\n * @return {?} The localized format string.\n */\nfunction getLocaleNumberFormat(locale, type) {\n /** @type {?} */\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.NumberFormats][type];\n}\n/**\n * Retrieves the symbol used to represent the currency for the main country\n * corresponding to a given locale. For example, '$' for `en-US`.\n *\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n)\n *\n * \\@publicApi\n * @param {?} locale A locale code for the locale format rules to use.\n * @return {?} The localized symbol character,\n * or `null` if the main country cannot be determined.\n */\nfunction getLocaleCurrencySymbol(locale) {\n /** @type {?} */\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.CurrencySymbol] || null;\n}\n/**\n * Retrieves the name of the currency for the main country corresponding\n * to a given locale. For example, 'US Dollar' for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n)\n *\n * \\@publicApi\n * @param {?} locale A locale code for the locale format rules to use.\n * @return {?} The currency name,\n * or `null` if the main country cannot be determined.\n */\nfunction getLocaleCurrencyName(locale) {\n /** @type {?} */\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.CurrencyName] || null;\n}\n/**\n * Retrieves the default currency code for the given locale.\n *\n * The default is defined as the first currency which is still in use.\n *\n * \\@publicApi\n * @param {?} locale The code of the locale whose currency code we want.\n * @return {?} The code of the default currency for the given locale.\n *\n */\nfunction getLocaleCurrencyCode(locale) {\n return ɵgetLocaleCurrencyCode(locale);\n}\n/**\n * Retrieves the currency values for a given locale.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n)\n * @param {?} locale A locale code for the locale format rules to use.\n * @return {?} The currency values.\n */\nfunction getLocaleCurrencies(locale) {\n /** @type {?} */\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.Currencies];\n}\n/**\n * \\@alias core/ɵgetLocalePluralCase\n * \\@publicApi\n * @type {?}\n */\nconst getLocalePluralCase = ɵgetLocalePluralCase;\n/**\n * @param {?} data\n * @return {?}\n */\nfunction checkFullData(data) {\n if (!data[ɵLocaleDataIndex.ExtraData]) {\n throw new Error(`Missing extra locale data for the locale \"${data[ɵLocaleDataIndex.LocaleId]}\". Use \"registerLocaleData\" to load new data. See the \"I18n guide\" on angular.io to know more.`);\n }\n}\n/**\n * Retrieves locale-specific rules used to determine which day period to use\n * when more than one period is defined for a locale.\n *\n * There is a rule for each defined day period. The\n * first rule is applied to the first day period and so on.\n * Fall back to AM/PM when no rules are available.\n *\n * A rule can specify a period as time range, or as a single time value.\n *\n * This functionality is only available when you have loaded the full locale data.\n * See the [\"I18n guide\"](guide/i18n#i18n-pipes).\n *\n * @see `getLocaleExtraDayPeriods()` / [Internationalization (i18n) Guide](https://angular.io/guide/i18n)\n *\n * \\@publicApi\n * @param {?} locale A locale code for the locale format rules to use.\n * @return {?} The rules for the locale, a single time value or array of *from-time, to-time*,\n * or null if no periods are available.\n *\n */\nfunction getLocaleExtraDayPeriodRules(locale) {\n /** @type {?} */\n const data = ɵfindLocaleData(locale);\n checkFullData(data);\n /** @type {?} */\n const rules = data[ɵLocaleDataIndex.ExtraData][2 /* ExtraDayPeriodsRules */] || [];\n return rules.map((/**\n * @param {?} rule\n * @return {?}\n */\n (rule) => {\n if (typeof rule === 'string') {\n return extractTime(rule);\n }\n return [extractTime(rule[0]), extractTime(rule[1])];\n }));\n}\n/**\n * Retrieves locale-specific day periods, which indicate roughly how a day is broken up\n * in different languages.\n * For example, for `en-US`, periods are morning, noon, afternoon, evening, and midnight.\n *\n * This functionality is only available when you have loaded the full locale data.\n * See the [\"I18n guide\"](guide/i18n#i18n-pipes).\n *\n * @see `getLocaleExtraDayPeriodRules()` / [Internationalization (i18n) Guide](https://angular.io/guide/i18n)\n *\n * \\@publicApi\n * @param {?} locale A locale code for the locale format rules to use.\n * @param {?} formStyle The required grammatical form.\n * @param {?} width The required character width.\n * @return {?} The translated day-period strings.\n */\nfunction getLocaleExtraDayPeriods(locale, formStyle, width) {\n /** @type {?} */\n const data = ɵfindLocaleData(locale);\n checkFullData(data);\n /** @type {?} */\n const dayPeriodsData = (/** @type {?} */ ([\n data[ɵLocaleDataIndex.ExtraData][0 /* ExtraDayPeriodFormats */],\n data[ɵLocaleDataIndex.ExtraData][1 /* ExtraDayPeriodStandalone */]\n ]));\n /** @type {?} */\n const dayPeriods = getLastDefinedValue(dayPeriodsData, formStyle) || [];\n return getLastDefinedValue(dayPeriods, width) || [];\n}\n/**\n * Retrieves the first value that is defined in an array, going backwards from an index position.\n *\n * To avoid repeating the same data (as when the \"format\" and \"standalone\" forms are the same)\n * add the first value to the locale data arrays, and add other values only if they are different.\n *\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n)\n *\n * \\@publicApi\n * @template T\n * @param {?} data The data array to retrieve from.\n * @param {?} index A 0-based index into the array to start from.\n * @return {?} The value immediately before the given index position.\n */\nfunction getLastDefinedValue(data, index) {\n for (let i = index; i > -1; i--) {\n if (typeof data[i] !== 'undefined') {\n return data[i];\n }\n }\n throw new Error('Locale data API: locale data undefined');\n}\n/**\n * Extracts the hours and minutes from a string like \"15:45\"\n * @param {?} time\n * @return {?}\n */\nfunction extractTime(time) {\n const [h, m] = time.split(':');\n return { hours: +h, minutes: +m };\n}\n/**\n * Retrieves the currency symbol for a given currency code.\n *\n * For example, for the default `en-US` locale, the code `USD` can\n * be represented by the narrow symbol `$` or the wide symbol `US$`.\n *\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n)\n *\n * \\@publicApi\n * @param {?} code The currency code.\n * @param {?} format The format, `wide` or `narrow`.\n * @param {?=} locale A locale code for the locale format rules to use.\n *\n * @return {?} The symbol, or the currency code if no symbol is available.\n */\nfunction getCurrencySymbol(code, format, locale = 'en') {\n /** @type {?} */\n const currency = getLocaleCurrencies(locale)[code] || CURRENCIES_EN[code] || [];\n /** @type {?} */\n const symbolNarrow = currency[1 /* SymbolNarrow */];\n if (format === 'narrow' && typeof symbolNarrow === 'string') {\n return symbolNarrow;\n }\n return currency[0 /* Symbol */] || code;\n}\n// Most currencies have cents, that's why the default is 2\n/** @type {?} */\nconst DEFAULT_NB_OF_CURRENCY_DIGITS = 2;\n/**\n * Reports the number of decimal digits for a given currency.\n * The value depends upon the presence of cents in that particular currency.\n *\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n)\n *\n * \\@publicApi\n * @param {?} code The currency code.\n * @return {?} The number of decimal digits, typically 0 or 2.\n */\nfunction getNumberOfCurrencyDigits(code) {\n /** @type {?} */\n let digits;\n /** @type {?} */\n const currency = CURRENCIES_EN[code];\n if (currency) {\n digits = currency[2 /* NbOfDigits */];\n }\n return typeof digits === 'number' ? digits : DEFAULT_NB_OF_CURRENCY_DIGITS;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/i18n/format_date.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst ISO8601_DATE_REGEX = /^(\\d{4})-?(\\d\\d)-?(\\d\\d)(?:T(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:\\.(\\d+))?)?)?(Z|([+-])(\\d\\d):?(\\d\\d))?)?$/;\n// 1 2 3 4 5 6 7 8 9 10 11\n/** @type {?} */\nconst NAMED_FORMATS = {};\n/** @type {?} */\nconst DATE_FORMATS_SPLIT = /((?:[^GyMLwWdEabBhHmsSzZO']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\\s\\S]*)/;\n/** @enum {number} */\nconst ZoneWidth = {\n Short: 0,\n ShortGMT: 1,\n Long: 2,\n Extended: 3,\n};\nZoneWidth[ZoneWidth.Short] = 'Short';\nZoneWidth[ZoneWidth.ShortGMT] = 'ShortGMT';\nZoneWidth[ZoneWidth.Long] = 'Long';\nZoneWidth[ZoneWidth.Extended] = 'Extended';\n/** @enum {number} */\nconst DateType = {\n FullYear: 0,\n Month: 1,\n Date: 2,\n Hours: 3,\n Minutes: 4,\n Seconds: 5,\n FractionalSeconds: 6,\n Day: 7,\n};\nDateType[DateType.FullYear] = 'FullYear';\nDateType[DateType.Month] = 'Month';\nDateType[DateType.Date] = 'Date';\nDateType[DateType.Hours] = 'Hours';\nDateType[DateType.Minutes] = 'Minutes';\nDateType[DateType.Seconds] = 'Seconds';\nDateType[DateType.FractionalSeconds] = 'FractionalSeconds';\nDateType[DateType.Day] = 'Day';\n/** @enum {number} */\nconst TranslationType = {\n DayPeriods: 0,\n Days: 1,\n Months: 2,\n Eras: 3,\n};\nTranslationType[TranslationType.DayPeriods] = 'DayPeriods';\nTranslationType[TranslationType.Days] = 'Days';\nTranslationType[TranslationType.Months] = 'Months';\nTranslationType[TranslationType.Eras] = 'Eras';\n/**\n * \\@ngModule CommonModule\n * \\@description\n *\n * Formats a date according to locale rules.\n *\n * @see `DatePipe` / [Internationalization (i18n) Guide](https://angular.io/guide/i18n)\n *\n * \\@publicApi\n * @param {?} value The date to format, as a Date, or a number (milliseconds since UTC epoch)\n * or an [ISO date-time string](https://www.w3.org/TR/NOTE-datetime).\n * @param {?} format The date-time components to include. See `DatePipe` for details.\n * @param {?} locale A locale code for the locale format rules to use.\n * @param {?=} timezone The time zone. A time zone offset from GMT (such as `'+0430'`),\n * or a standard UTC/GMT or continental US time zone abbreviation.\n * If not specified, uses host system settings.\n *\n * @return {?} The formatted date string.\n *\n */\nfunction formatDate(value, format, locale, timezone) {\n /** @type {?} */\n let date = toDate(value);\n /** @type {?} */\n const namedFormat = getNamedFormat(locale, format);\n format = namedFormat || format;\n /** @type {?} */\n let parts = [];\n /** @type {?} */\n let match;\n while (format) {\n match = DATE_FORMATS_SPLIT.exec(format);\n if (match) {\n parts = parts.concat(match.slice(1));\n /** @type {?} */\n const part = parts.pop();\n if (!part) {\n break;\n }\n format = part;\n }\n else {\n parts.push(format);\n break;\n }\n }\n /** @type {?} */\n let dateTimezoneOffset = date.getTimezoneOffset();\n if (timezone) {\n dateTimezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n date = convertTimezoneToLocal(date, timezone, true);\n }\n /** @type {?} */\n let text = '';\n parts.forEach((/**\n * @param {?} value\n * @return {?}\n */\n value => {\n /** @type {?} */\n const dateFormatter = getDateFormatter(value);\n text += dateFormatter ?\n dateFormatter(date, locale, dateTimezoneOffset) :\n value === '\\'\\'' ? '\\'' : value.replace(/(^'|'$)/g, '').replace(/''/g, '\\'');\n }));\n return text;\n}\n/**\n * @param {?} locale\n * @param {?} format\n * @return {?}\n */\nfunction getNamedFormat(locale, format) {\n /** @type {?} */\n const localeId = getLocaleId(locale);\n NAMED_FORMATS[localeId] = NAMED_FORMATS[localeId] || {};\n if (NAMED_FORMATS[localeId][format]) {\n return NAMED_FORMATS[localeId][format];\n }\n /** @type {?} */\n let formatValue = '';\n switch (format) {\n case 'shortDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Short);\n break;\n case 'mediumDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Medium);\n break;\n case 'longDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Long);\n break;\n case 'fullDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Full);\n break;\n case 'shortTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Short);\n break;\n case 'mediumTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Medium);\n break;\n case 'longTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Long);\n break;\n case 'fullTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Full);\n break;\n case 'short':\n /** @type {?} */\n const shortTime = getNamedFormat(locale, 'shortTime');\n /** @type {?} */\n const shortDate = getNamedFormat(locale, 'shortDate');\n formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Short), [shortTime, shortDate]);\n break;\n case 'medium':\n /** @type {?} */\n const mediumTime = getNamedFormat(locale, 'mediumTime');\n /** @type {?} */\n const mediumDate = getNamedFormat(locale, 'mediumDate');\n formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Medium), [mediumTime, mediumDate]);\n break;\n case 'long':\n /** @type {?} */\n const longTime = getNamedFormat(locale, 'longTime');\n /** @type {?} */\n const longDate = getNamedFormat(locale, 'longDate');\n formatValue =\n formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Long), [longTime, longDate]);\n break;\n case 'full':\n /** @type {?} */\n const fullTime = getNamedFormat(locale, 'fullTime');\n /** @type {?} */\n const fullDate = getNamedFormat(locale, 'fullDate');\n formatValue =\n formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Full), [fullTime, fullDate]);\n break;\n }\n if (formatValue) {\n NAMED_FORMATS[localeId][format] = formatValue;\n }\n return formatValue;\n}\n/**\n * @param {?} str\n * @param {?} opt_values\n * @return {?}\n */\nfunction formatDateTime(str, opt_values) {\n if (opt_values) {\n str = str.replace(/\\{([^}]+)}/g, (/**\n * @param {?} match\n * @param {?} key\n * @return {?}\n */\n function (match, key) {\n return (opt_values != null && key in opt_values) ? opt_values[key] : match;\n }));\n }\n return str;\n}\n/**\n * @param {?} num\n * @param {?} digits\n * @param {?=} minusSign\n * @param {?=} trim\n * @param {?=} negWrap\n * @return {?}\n */\nfunction padNumber(num, digits, minusSign = '-', trim, negWrap) {\n /** @type {?} */\n let neg = '';\n if (num < 0 || (negWrap && num <= 0)) {\n if (negWrap) {\n num = -num + 1;\n }\n else {\n num = -num;\n neg = minusSign;\n }\n }\n /** @type {?} */\n let strNum = String(num);\n while (strNum.length < digits) {\n strNum = '0' + strNum;\n }\n if (trim) {\n strNum = strNum.substr(strNum.length - digits);\n }\n return neg + strNum;\n}\n/**\n * @param {?} milliseconds\n * @param {?} digits\n * @return {?}\n */\nfunction formatFractionalSeconds(milliseconds, digits) {\n /** @type {?} */\n const strMs = padNumber(milliseconds, 3);\n return strMs.substr(0, digits);\n}\n/**\n * Returns a date formatter that transforms a date into its locale digit representation\n * @param {?} name\n * @param {?} size\n * @param {?=} offset\n * @param {?=} trim\n * @param {?=} negWrap\n * @return {?}\n */\nfunction dateGetter(name, size, offset = 0, trim = false, negWrap = false) {\n return (/**\n * @param {?} date\n * @param {?} locale\n * @return {?}\n */\n function (date, locale) {\n /** @type {?} */\n let part = getDatePart(name, date);\n if (offset > 0 || part > -offset) {\n part += offset;\n }\n if (name === DateType.Hours) {\n if (part === 0 && offset === -12) {\n part = 12;\n }\n }\n else if (name === DateType.FractionalSeconds) {\n return formatFractionalSeconds(part, size);\n }\n /** @type {?} */\n const localeMinus = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);\n return padNumber(part, size, localeMinus, trim, negWrap);\n });\n}\n/**\n * @param {?} part\n * @param {?} date\n * @return {?}\n */\nfunction getDatePart(part, date) {\n switch (part) {\n case DateType.FullYear:\n return date.getFullYear();\n case DateType.Month:\n return date.getMonth();\n case DateType.Date:\n return date.getDate();\n case DateType.Hours:\n return date.getHours();\n case DateType.Minutes:\n return date.getMinutes();\n case DateType.Seconds:\n return date.getSeconds();\n case DateType.FractionalSeconds:\n return date.getMilliseconds();\n case DateType.Day:\n return date.getDay();\n default:\n throw new Error(`Unknown DateType value \"${part}\".`);\n }\n}\n/**\n * Returns a date formatter that transforms a date into its locale string representation\n * @param {?} name\n * @param {?} width\n * @param {?=} form\n * @param {?=} extended\n * @return {?}\n */\nfunction dateStrGetter(name, width, form = FormStyle.Format, extended = false) {\n return (/**\n * @param {?} date\n * @param {?} locale\n * @return {?}\n */\n function (date, locale) {\n return getDateTranslation(date, locale, name, width, form, extended);\n });\n}\n/**\n * Returns the locale translation of a date for a given form, type and width\n * @param {?} date\n * @param {?} locale\n * @param {?} name\n * @param {?} width\n * @param {?} form\n * @param {?} extended\n * @return {?}\n */\nfunction getDateTranslation(date, locale, name, width, form, extended) {\n switch (name) {\n case TranslationType.Months:\n return getLocaleMonthNames(locale, form, width)[date.getMonth()];\n case TranslationType.Days:\n return getLocaleDayNames(locale, form, width)[date.getDay()];\n case TranslationType.DayPeriods:\n /** @type {?} */\n const currentHours = date.getHours();\n /** @type {?} */\n const currentMinutes = date.getMinutes();\n if (extended) {\n /** @type {?} */\n const rules = getLocaleExtraDayPeriodRules(locale);\n /** @type {?} */\n const dayPeriods = getLocaleExtraDayPeriods(locale, form, width);\n /** @type {?} */\n let result;\n rules.forEach((/**\n * @param {?} rule\n * @param {?} index\n * @return {?}\n */\n (rule, index) => {\n if (Array.isArray(rule)) {\n // morning, afternoon, evening, night\n const { hours: hoursFrom, minutes: minutesFrom } = rule[0];\n const { hours: hoursTo, minutes: minutesTo } = rule[1];\n if (currentHours >= hoursFrom && currentMinutes >= minutesFrom &&\n (currentHours < hoursTo ||\n (currentHours === hoursTo && currentMinutes < minutesTo))) {\n result = dayPeriods[index];\n }\n }\n else { // noon or midnight\n // noon or midnight\n const { hours, minutes } = rule;\n if (hours === currentHours && minutes === currentMinutes) {\n result = dayPeriods[index];\n }\n }\n }));\n if (result) {\n return result;\n }\n }\n // if no rules for the day periods, we use am/pm by default\n return getLocaleDayPeriods(locale, form, (/** @type {?} */ (width)))[currentHours < 12 ? 0 : 1];\n case TranslationType.Eras:\n return getLocaleEraNames(locale, (/** @type {?} */ (width)))[date.getFullYear() <= 0 ? 0 : 1];\n default:\n // This default case is not needed by TypeScript compiler, as the switch is exhaustive.\n // However Closure Compiler does not understand that and reports an error in typed mode.\n // The `throw new Error` below works around the problem, and the unexpected: never variable\n // makes sure tsc still checks this code is unreachable.\n /** @type {?} */\n const unexpected = name;\n throw new Error(`unexpected translation type ${unexpected}`);\n }\n}\n/**\n * Returns a date formatter that transforms a date and an offset into a timezone with ISO8601 or\n * GMT format depending on the width (eg: short = +0430, short:GMT = GMT+4, long = GMT+04:30,\n * extended = +04:30)\n * @param {?} width\n * @return {?}\n */\nfunction timeZoneGetter(width) {\n return (/**\n * @param {?} date\n * @param {?} locale\n * @param {?} offset\n * @return {?}\n */\n function (date, locale, offset) {\n /** @type {?} */\n const zone = -1 * offset;\n /** @type {?} */\n const minusSign = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);\n /** @type {?} */\n const hours = zone > 0 ? Math.floor(zone / 60) : Math.ceil(zone / 60);\n switch (width) {\n case ZoneWidth.Short:\n return ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n case ZoneWidth.ShortGMT:\n return 'GMT' + ((zone >= 0) ? '+' : '') + padNumber(hours, 1, minusSign);\n case ZoneWidth.Long:\n return 'GMT' + ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) + ':' +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n case ZoneWidth.Extended:\n if (offset === 0) {\n return 'Z';\n }\n else {\n return ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) + ':' +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n }\n default:\n throw new Error(`Unknown zone width \"${width}\"`);\n }\n });\n}\n/** @type {?} */\nconst JANUARY = 0;\n/** @type {?} */\nconst THURSDAY = 4;\n/**\n * @param {?} year\n * @return {?}\n */\nfunction getFirstThursdayOfYear(year) {\n /** @type {?} */\n const firstDayOfYear = (new Date(year, JANUARY, 1)).getDay();\n return new Date(year, 0, 1 + ((firstDayOfYear <= THURSDAY) ? THURSDAY : THURSDAY + 7) - firstDayOfYear);\n}\n/**\n * @param {?} datetime\n * @return {?}\n */\nfunction getThursdayThisWeek(datetime) {\n return new Date(datetime.getFullYear(), datetime.getMonth(), datetime.getDate() + (THURSDAY - datetime.getDay()));\n}\n/**\n * @param {?} size\n * @param {?=} monthBased\n * @return {?}\n */\nfunction weekGetter(size, monthBased = false) {\n return (/**\n * @param {?} date\n * @param {?} locale\n * @return {?}\n */\n function (date, locale) {\n /** @type {?} */\n let result;\n if (monthBased) {\n /** @type {?} */\n const nbDaysBefore1stDayOfMonth = new Date(date.getFullYear(), date.getMonth(), 1).getDay() - 1;\n /** @type {?} */\n const today = date.getDate();\n result = 1 + Math.floor((today + nbDaysBefore1stDayOfMonth) / 7);\n }\n else {\n /** @type {?} */\n const firstThurs = getFirstThursdayOfYear(date.getFullYear());\n /** @type {?} */\n const thisThurs = getThursdayThisWeek(date);\n /** @type {?} */\n const diff = thisThurs.getTime() - firstThurs.getTime();\n result = 1 + Math.round(diff / 6.048e8); // 6.048e8 ms per week\n }\n return padNumber(result, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n });\n}\n/** @type {?} */\nconst DATE_FORMATS = {};\n// Based on CLDR formats:\n// See complete list: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n// See also explanations: http://cldr.unicode.org/translation/date-time\n// TODO(ocombe): support all missing cldr formats: Y, U, Q, D, F, e, c, j, J, C, A, v, V, X, x\n/**\n * @param {?} format\n * @return {?}\n */\nfunction getDateFormatter(format) {\n if (DATE_FORMATS[format]) {\n return DATE_FORMATS[format];\n }\n /** @type {?} */\n let formatter;\n switch (format) {\n // Era name (AD/BC)\n case 'G':\n case 'GG':\n case 'GGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Abbreviated);\n break;\n case 'GGGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Wide);\n break;\n case 'GGGGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Narrow);\n break;\n // 1 digit representation of the year, e.g. (AD 1 => 1, AD 199 => 199)\n case 'y':\n formatter = dateGetter(DateType.FullYear, 1, 0, false, true);\n break;\n // 2 digit representation of the year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10)\n case 'yy':\n formatter = dateGetter(DateType.FullYear, 2, 0, true, true);\n break;\n // 3 digit representation of the year, padded (000-999). (e.g. AD 2001 => 01, AD 2010 => 10)\n case 'yyy':\n formatter = dateGetter(DateType.FullYear, 3, 0, false, true);\n break;\n // 4 digit representation of the year (e.g. AD 1 => 0001, AD 2010 => 2010)\n case 'yyyy':\n formatter = dateGetter(DateType.FullYear, 4, 0, false, true);\n break;\n // Month of the year (1-12), numeric\n case 'M':\n case 'L':\n formatter = dateGetter(DateType.Month, 1, 1);\n break;\n case 'MM':\n case 'LL':\n formatter = dateGetter(DateType.Month, 2, 1);\n break;\n // Month of the year (January, ...), string, format\n case 'MMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated);\n break;\n case 'MMMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Wide);\n break;\n case 'MMMMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Narrow);\n break;\n // Month of the year (January, ...), string, standalone\n case 'LLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated, FormStyle.Standalone);\n break;\n case 'LLLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Wide, FormStyle.Standalone);\n break;\n case 'LLLLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Narrow, FormStyle.Standalone);\n break;\n // Week of the year (1, ... 52)\n case 'w':\n formatter = weekGetter(1);\n break;\n case 'ww':\n formatter = weekGetter(2);\n break;\n // Week of the month (1, ...)\n case 'W':\n formatter = weekGetter(1, true);\n break;\n // Day of the month (1-31)\n case 'd':\n formatter = dateGetter(DateType.Date, 1);\n break;\n case 'dd':\n formatter = dateGetter(DateType.Date, 2);\n break;\n // Day of the Week\n case 'E':\n case 'EE':\n case 'EEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated);\n break;\n case 'EEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide);\n break;\n case 'EEEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Narrow);\n break;\n case 'EEEEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short);\n break;\n // Generic period of the day (am-pm)\n case 'a':\n case 'aa':\n case 'aaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated);\n break;\n case 'aaaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide);\n break;\n case 'aaaaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow);\n break;\n // Extended period of the day (midnight, at night, ...), standalone\n case 'b':\n case 'bb':\n case 'bbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Standalone, true);\n break;\n case 'bbbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Standalone, true);\n break;\n case 'bbbbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Standalone, true);\n break;\n // Extended period of the day (midnight, night, ...), standalone\n case 'B':\n case 'BB':\n case 'BBB':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Format, true);\n break;\n case 'BBBB':\n formatter =\n dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Format, true);\n break;\n case 'BBBBB':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Format, true);\n break;\n // Hour in AM/PM, (1-12)\n case 'h':\n formatter = dateGetter(DateType.Hours, 1, -12);\n break;\n case 'hh':\n formatter = dateGetter(DateType.Hours, 2, -12);\n break;\n // Hour of the day (0-23)\n case 'H':\n formatter = dateGetter(DateType.Hours, 1);\n break;\n // Hour in day, padded (00-23)\n case 'HH':\n formatter = dateGetter(DateType.Hours, 2);\n break;\n // Minute of the hour (0-59)\n case 'm':\n formatter = dateGetter(DateType.Minutes, 1);\n break;\n case 'mm':\n formatter = dateGetter(DateType.Minutes, 2);\n break;\n // Second of the minute (0-59)\n case 's':\n formatter = dateGetter(DateType.Seconds, 1);\n break;\n case 'ss':\n formatter = dateGetter(DateType.Seconds, 2);\n break;\n // Fractional second\n case 'S':\n formatter = dateGetter(DateType.FractionalSeconds, 1);\n break;\n case 'SS':\n formatter = dateGetter(DateType.FractionalSeconds, 2);\n break;\n case 'SSS':\n formatter = dateGetter(DateType.FractionalSeconds, 3);\n break;\n // Timezone ISO8601 short format (-0430)\n case 'Z':\n case 'ZZ':\n case 'ZZZ':\n formatter = timeZoneGetter(ZoneWidth.Short);\n break;\n // Timezone ISO8601 extended format (-04:30)\n case 'ZZZZZ':\n formatter = timeZoneGetter(ZoneWidth.Extended);\n break;\n // Timezone GMT short format (GMT+4)\n case 'O':\n case 'OO':\n case 'OOO':\n // Should be location, but fallback to format O instead because we don't have the data yet\n case 'z':\n case 'zz':\n case 'zzz':\n formatter = timeZoneGetter(ZoneWidth.ShortGMT);\n break;\n // Timezone GMT long format (GMT+0430)\n case 'OOOO':\n case 'ZZZZ':\n // Should be location, but fallback to format O instead because we don't have the data yet\n case 'zzzz':\n formatter = timeZoneGetter(ZoneWidth.Long);\n break;\n default:\n return null;\n }\n DATE_FORMATS[format] = formatter;\n return formatter;\n}\n/**\n * @param {?} timezone\n * @param {?} fallback\n * @return {?}\n */\nfunction timezoneToOffset(timezone, fallback) {\n // Support: IE 9-11 only, Edge 13-15+\n // IE/Edge do not \"understand\" colon (`:`) in timezone\n timezone = timezone.replace(/:/g, '');\n /** @type {?} */\n const requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000;\n return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset;\n}\n/**\n * @param {?} date\n * @param {?} minutes\n * @return {?}\n */\nfunction addDateMinutes(date, minutes) {\n date = new Date(date.getTime());\n date.setMinutes(date.getMinutes() + minutes);\n return date;\n}\n/**\n * @param {?} date\n * @param {?} timezone\n * @param {?} reverse\n * @return {?}\n */\nfunction convertTimezoneToLocal(date, timezone, reverse) {\n /** @type {?} */\n const reverseValue = reverse ? -1 : 1;\n /** @type {?} */\n const dateTimezoneOffset = date.getTimezoneOffset();\n /** @type {?} */\n const timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n return addDateMinutes(date, reverseValue * (timezoneOffset - dateTimezoneOffset));\n}\n/**\n * Converts a value to date.\n *\n * Supported input formats:\n * - `Date`\n * - number: timestamp\n * - string: numeric (e.g. \"1234\"), ISO and date strings in a format supported by\n * [Date.parse()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse).\n * Note: ISO strings without time return a date without timeoffset.\n *\n * Throws if unable to convert to a date.\n * @param {?} value\n * @return {?}\n */\nfunction toDate(value) {\n if (isDate(value)) {\n return value;\n }\n if (typeof value === 'number' && !isNaN(value)) {\n return new Date(value);\n }\n if (typeof value === 'string') {\n value = value.trim();\n /** @type {?} */\n const parsedNb = parseFloat(value);\n // any string that only contains numbers, like \"1234\" but not like \"1234hello\"\n if (!isNaN((/** @type {?} */ (value)) - parsedNb)) {\n return new Date(parsedNb);\n }\n if (/^(\\d{4}-\\d{1,2}-\\d{1,2})$/.test(value)) {\n /* For ISO Strings without time the day, month and year must be extracted from the ISO String\n before Date creation to avoid time offset and errors in the new Date.\n If we only replace '-' with ',' in the ISO String (\"2015,01,01\"), and try to create a new\n date, some browsers (e.g. IE 9) will throw an invalid Date error.\n If we leave the '-' (\"2015-01-01\") and try to create a new Date(\"2015-01-01\") the timeoffset\n is applied.\n Note: ISO months are 0 for January, 1 for February, ... */\n const [y, m, d] = value.split('-').map((/**\n * @param {?} val\n * @return {?}\n */\n (val) => +val));\n return new Date(y, m - 1, d);\n }\n /** @type {?} */\n let match;\n if (match = value.match(ISO8601_DATE_REGEX)) {\n return isoStringToDate(match);\n }\n }\n /** @type {?} */\n const date = new Date((/** @type {?} */ (value)));\n if (!isDate(date)) {\n throw new Error(`Unable to convert \"${value}\" into a date`);\n }\n return date;\n}\n/**\n * Converts a date in ISO8601 to a Date.\n * Used instead of `Date.parse` because of browser discrepancies.\n * @param {?} match\n * @return {?}\n */\nfunction isoStringToDate(match) {\n /** @type {?} */\n const date = new Date(0);\n /** @type {?} */\n let tzHour = 0;\n /** @type {?} */\n let tzMin = 0;\n // match[8] means that the string contains \"Z\" (UTC) or a timezone like \"+01:00\" or \"+0100\"\n /** @type {?} */\n const dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear;\n /** @type {?} */\n const timeSetter = match[8] ? date.setUTCHours : date.setHours;\n // if there is a timezone defined like \"+01:00\" or \"+0100\"\n if (match[9]) {\n tzHour = Number(match[9] + match[10]);\n tzMin = Number(match[9] + match[11]);\n }\n dateSetter.call(date, Number(match[1]), Number(match[2]) - 1, Number(match[3]));\n /** @type {?} */\n const h = Number(match[4] || 0) - tzHour;\n /** @type {?} */\n const m = Number(match[5] || 0) - tzMin;\n /** @type {?} */\n const s = Number(match[6] || 0);\n /** @type {?} */\n const ms = Math.round(parseFloat('0.' + (match[7] || 0)) * 1000);\n timeSetter.call(date, h, m, s, ms);\n return date;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isDate(value) {\n return value instanceof Date && !isNaN(value.valueOf());\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/i18n/format_number.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst NUMBER_FORMAT_REGEXP = /^(\\d+)?\\.((\\d+)(-(\\d+))?)?$/;\n/** @type {?} */\nconst MAX_DIGITS = 22;\n/** @type {?} */\nconst DECIMAL_SEP = '.';\n/** @type {?} */\nconst ZERO_CHAR = '0';\n/** @type {?} */\nconst PATTERN_SEP = ';';\n/** @type {?} */\nconst GROUP_SEP = ',';\n/** @type {?} */\nconst DIGIT_CHAR = '#';\n/** @type {?} */\nconst CURRENCY_CHAR = '¤';\n/** @type {?} */\nconst PERCENT_CHAR = '%';\n/**\n * Transforms a number to a locale string based on a style and a format.\n * @param {?} value\n * @param {?} pattern\n * @param {?} locale\n * @param {?} groupSymbol\n * @param {?} decimalSymbol\n * @param {?=} digitsInfo\n * @param {?=} isPercent\n * @return {?}\n */\nfunction formatNumberToLocaleString(value, pattern, locale, groupSymbol, decimalSymbol, digitsInfo, isPercent = false) {\n /** @type {?} */\n let formattedText = '';\n /** @type {?} */\n let isZero = false;\n if (!isFinite(value)) {\n formattedText = getLocaleNumberSymbol(locale, NumberSymbol.Infinity);\n }\n else {\n /** @type {?} */\n let parsedNumber = parseNumber(value);\n if (isPercent) {\n parsedNumber = toPercent(parsedNumber);\n }\n /** @type {?} */\n let minInt = pattern.minInt;\n /** @type {?} */\n let minFraction = pattern.minFrac;\n /** @type {?} */\n let maxFraction = pattern.maxFrac;\n if (digitsInfo) {\n /** @type {?} */\n const parts = digitsInfo.match(NUMBER_FORMAT_REGEXP);\n if (parts === null) {\n throw new Error(`${digitsInfo} is not a valid digit info`);\n }\n /** @type {?} */\n const minIntPart = parts[1];\n /** @type {?} */\n const minFractionPart = parts[3];\n /** @type {?} */\n const maxFractionPart = parts[5];\n if (minIntPart != null) {\n minInt = parseIntAutoRadix(minIntPart);\n }\n if (minFractionPart != null) {\n minFraction = parseIntAutoRadix(minFractionPart);\n }\n if (maxFractionPart != null) {\n maxFraction = parseIntAutoRadix(maxFractionPart);\n }\n else if (minFractionPart != null && minFraction > maxFraction) {\n maxFraction = minFraction;\n }\n }\n roundNumber(parsedNumber, minFraction, maxFraction);\n /** @type {?} */\n let digits = parsedNumber.digits;\n /** @type {?} */\n let integerLen = parsedNumber.integerLen;\n /** @type {?} */\n const exponent = parsedNumber.exponent;\n /** @type {?} */\n let decimals = [];\n isZero = digits.every((/**\n * @param {?} d\n * @return {?}\n */\n d => !d));\n // pad zeros for small numbers\n for (; integerLen < minInt; integerLen++) {\n digits.unshift(0);\n }\n // pad zeros for small numbers\n for (; integerLen < 0; integerLen++) {\n digits.unshift(0);\n }\n // extract decimals digits\n if (integerLen > 0) {\n decimals = digits.splice(integerLen, digits.length);\n }\n else {\n decimals = digits;\n digits = [0];\n }\n // format the integer digits with grouping separators\n /** @type {?} */\n const groups = [];\n if (digits.length >= pattern.lgSize) {\n groups.unshift(digits.splice(-pattern.lgSize, digits.length).join(''));\n }\n while (digits.length > pattern.gSize) {\n groups.unshift(digits.splice(-pattern.gSize, digits.length).join(''));\n }\n if (digits.length) {\n groups.unshift(digits.join(''));\n }\n formattedText = groups.join(getLocaleNumberSymbol(locale, groupSymbol));\n // append the decimal digits\n if (decimals.length) {\n formattedText += getLocaleNumberSymbol(locale, decimalSymbol) + decimals.join('');\n }\n if (exponent) {\n formattedText += getLocaleNumberSymbol(locale, NumberSymbol.Exponential) + '+' + exponent;\n }\n }\n if (value < 0 && !isZero) {\n formattedText = pattern.negPre + formattedText + pattern.negSuf;\n }\n else {\n formattedText = pattern.posPre + formattedText + pattern.posSuf;\n }\n return formattedText;\n}\n/**\n * \\@ngModule CommonModule\n * \\@description\n *\n * Formats a number as currency using locale rules.\n *\n * @see `formatNumber()` / `DecimalPipe` / [Internationalization (i18n) Guide](https://angular.io/guide/i18n)\n *\n * \\@publicApi\n * @param {?} value The number to format.\n * @param {?} locale A locale code for the locale format rules to use.\n * @param {?} currency A string containing the currency symbol or its name,\n * such as \"$\" or \"Canadian Dollar\". Used in output string, but does not affect the operation\n * of the function.\n * @param {?=} currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)\n * currency code, such as `USD` for the US dollar and `EUR` for the euro.\n * Used to determine the number of digits in the decimal part.\n * @param {?=} digitsInfo\n * @return {?} The formatted currency value.\n *\n */\nfunction formatCurrency(value, locale, currency, currencyCode, digitsInfo) {\n /** @type {?} */\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Currency);\n /** @type {?} */\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n pattern.minFrac = getNumberOfCurrencyDigits((/** @type {?} */ (currencyCode)));\n pattern.maxFrac = pattern.minFrac;\n /** @type {?} */\n const res = formatNumberToLocaleString(value, pattern, locale, NumberSymbol.CurrencyGroup, NumberSymbol.CurrencyDecimal, digitsInfo);\n return res\n .replace(CURRENCY_CHAR, currency)\n // if we have 2 time the currency character, the second one is ignored\n .replace(CURRENCY_CHAR, '')\n // If there is a spacing between currency character and the value and\n // the currency character is supressed by passing an empty string, the\n // spacing character would remain as part of the string. Then we\n // should remove it.\n .trim();\n}\n/**\n * \\@ngModule CommonModule\n * \\@description\n *\n * Formats a number as a percentage according to locale rules.\n *\n * @see `formatNumber()` / `DecimalPipe` / [Internationalization (i18n) Guide](https://angular.io/guide/i18n)\n * \\@publicApi\n *\n * @param {?} value The number to format.\n * @param {?} locale A locale code for the locale format rules to use.\n * @param {?=} digitsInfo\n * @return {?} The formatted percentage value.\n *\n */\nfunction formatPercent(value, locale, digitsInfo) {\n /** @type {?} */\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Percent);\n /** @type {?} */\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n /** @type {?} */\n const res = formatNumberToLocaleString(value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo, true);\n return res.replace(new RegExp(PERCENT_CHAR, 'g'), getLocaleNumberSymbol(locale, NumberSymbol.PercentSign));\n}\n/**\n * \\@ngModule CommonModule\n * \\@description\n *\n * Formats a number as text, with group sizing, separator, and other\n * parameters based on the locale.\n *\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n)\n *\n * \\@publicApi\n * @param {?} value The number to format.\n * @param {?} locale A locale code for the locale format rules to use.\n * @param {?=} digitsInfo\n * @return {?} The formatted text string.\n */\nfunction formatNumber(value, locale, digitsInfo) {\n /** @type {?} */\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Decimal);\n /** @type {?} */\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n return formatNumberToLocaleString(value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo);\n}\n/**\n * @record\n */\nfunction ParsedNumberFormat() { }\nif (false) {\n /** @type {?} */\n ParsedNumberFormat.prototype.minInt;\n /** @type {?} */\n ParsedNumberFormat.prototype.minFrac;\n /** @type {?} */\n ParsedNumberFormat.prototype.maxFrac;\n /** @type {?} */\n ParsedNumberFormat.prototype.posPre;\n /** @type {?} */\n ParsedNumberFormat.prototype.posSuf;\n /** @type {?} */\n ParsedNumberFormat.prototype.negPre;\n /** @type {?} */\n ParsedNumberFormat.prototype.negSuf;\n /** @type {?} */\n ParsedNumberFormat.prototype.gSize;\n /** @type {?} */\n ParsedNumberFormat.prototype.lgSize;\n}\n/**\n * @param {?} format\n * @param {?=} minusSign\n * @return {?}\n */\nfunction parseNumberFormat(format, minusSign = '-') {\n /** @type {?} */\n const p = {\n minInt: 1,\n minFrac: 0,\n maxFrac: 0,\n posPre: '',\n posSuf: '',\n negPre: '',\n negSuf: '',\n gSize: 0,\n lgSize: 0\n };\n /** @type {?} */\n const patternParts = format.split(PATTERN_SEP);\n /** @type {?} */\n const positive = patternParts[0];\n /** @type {?} */\n const negative = patternParts[1];\n /** @type {?} */\n const positiveParts = positive.indexOf(DECIMAL_SEP) !== -1 ?\n positive.split(DECIMAL_SEP) :\n [\n positive.substring(0, positive.lastIndexOf(ZERO_CHAR) + 1),\n positive.substring(positive.lastIndexOf(ZERO_CHAR) + 1)\n ];\n /** @type {?} */\n const integer = positiveParts[0];\n /** @type {?} */\n const fraction = positiveParts[1] || '';\n p.posPre = integer.substr(0, integer.indexOf(DIGIT_CHAR));\n for (let i = 0; i < fraction.length; i++) {\n /** @type {?} */\n const ch = fraction.charAt(i);\n if (ch === ZERO_CHAR) {\n p.minFrac = p.maxFrac = i + 1;\n }\n else if (ch === DIGIT_CHAR) {\n p.maxFrac = i + 1;\n }\n else {\n p.posSuf += ch;\n }\n }\n /** @type {?} */\n const groups = integer.split(GROUP_SEP);\n p.gSize = groups[1] ? groups[1].length : 0;\n p.lgSize = (groups[2] || groups[1]) ? (groups[2] || groups[1]).length : 0;\n if (negative) {\n /** @type {?} */\n const trunkLen = positive.length - p.posPre.length - p.posSuf.length;\n /** @type {?} */\n const pos = negative.indexOf(DIGIT_CHAR);\n p.negPre = negative.substr(0, pos).replace(/'/g, '');\n p.negSuf = negative.substr(pos + trunkLen).replace(/'/g, '');\n }\n else {\n p.negPre = minusSign + p.posPre;\n p.negSuf = p.posSuf;\n }\n return p;\n}\n/**\n * @record\n */\nfunction ParsedNumber() { }\nif (false) {\n /** @type {?} */\n ParsedNumber.prototype.digits;\n /** @type {?} */\n ParsedNumber.prototype.exponent;\n /** @type {?} */\n ParsedNumber.prototype.integerLen;\n}\n// Transforms a parsed number into a percentage by multiplying it by 100\n/**\n * @param {?} parsedNumber\n * @return {?}\n */\nfunction toPercent(parsedNumber) {\n // if the number is 0, don't do anything\n if (parsedNumber.digits[0] === 0) {\n return parsedNumber;\n }\n // Getting the current number of decimals\n /** @type {?} */\n const fractionLen = parsedNumber.digits.length - parsedNumber.integerLen;\n if (parsedNumber.exponent) {\n parsedNumber.exponent += 2;\n }\n else {\n if (fractionLen === 0) {\n parsedNumber.digits.push(0, 0);\n }\n else if (fractionLen === 1) {\n parsedNumber.digits.push(0);\n }\n parsedNumber.integerLen += 2;\n }\n return parsedNumber;\n}\n/**\n * Parses a number.\n * Significant bits of this parse algorithm came from https://github.com/MikeMcl/big.js/\n * @param {?} num\n * @return {?}\n */\nfunction parseNumber(num) {\n /** @type {?} */\n let numStr = Math.abs(num) + '';\n /** @type {?} */\n let exponent = 0;\n /** @type {?} */\n let digits;\n /** @type {?} */\n let integerLen;\n /** @type {?} */\n let i;\n /** @type {?} */\n let j;\n /** @type {?} */\n let zeros;\n // Decimal point?\n if ((integerLen = numStr.indexOf(DECIMAL_SEP)) > -1) {\n numStr = numStr.replace(DECIMAL_SEP, '');\n }\n // Exponential form?\n if ((i = numStr.search(/e/i)) > 0) {\n // Work out the exponent.\n if (integerLen < 0)\n integerLen = i;\n integerLen += +numStr.slice(i + 1);\n numStr = numStr.substring(0, i);\n }\n else if (integerLen < 0) {\n // There was no decimal point or exponent so it is an integer.\n integerLen = numStr.length;\n }\n // Count the number of leading zeros.\n for (i = 0; numStr.charAt(i) === ZERO_CHAR; i++) { /* empty */\n }\n if (i === (zeros = numStr.length)) {\n // The digits are all zero.\n digits = [0];\n integerLen = 1;\n }\n else {\n // Count the number of trailing zeros\n zeros--;\n while (numStr.charAt(zeros) === ZERO_CHAR)\n zeros--;\n // Trailing zeros are insignificant so ignore them\n integerLen -= i;\n digits = [];\n // Convert string to array of digits without leading/trailing zeros.\n for (j = 0; i <= zeros; i++, j++) {\n digits[j] = Number(numStr.charAt(i));\n }\n }\n // If the number overflows the maximum allowed digits then use an exponent.\n if (integerLen > MAX_DIGITS) {\n digits = digits.splice(0, MAX_DIGITS - 1);\n exponent = integerLen - 1;\n integerLen = 1;\n }\n return { digits, exponent, integerLen };\n}\n/**\n * Round the parsed number to the specified number of decimal places\n * This function changes the parsedNumber in-place\n * @param {?} parsedNumber\n * @param {?} minFrac\n * @param {?} maxFrac\n * @return {?}\n */\nfunction roundNumber(parsedNumber, minFrac, maxFrac) {\n if (minFrac > maxFrac) {\n throw new Error(`The minimum number of digits after fraction (${minFrac}) is higher than the maximum (${maxFrac}).`);\n }\n /** @type {?} */\n let digits = parsedNumber.digits;\n /** @type {?} */\n let fractionLen = digits.length - parsedNumber.integerLen;\n /** @type {?} */\n const fractionSize = Math.min(Math.max(minFrac, fractionLen), maxFrac);\n // The index of the digit to where rounding is to occur\n /** @type {?} */\n let roundAt = fractionSize + parsedNumber.integerLen;\n /** @type {?} */\n let digit = digits[roundAt];\n if (roundAt > 0) {\n // Drop fractional digits beyond `roundAt`\n digits.splice(Math.max(parsedNumber.integerLen, roundAt));\n // Set non-fractional digits beyond `roundAt` to 0\n for (let j = roundAt; j < digits.length; j++) {\n digits[j] = 0;\n }\n }\n else {\n // We rounded to zero so reset the parsedNumber\n fractionLen = Math.max(0, fractionLen);\n parsedNumber.integerLen = 1;\n digits.length = Math.max(1, roundAt = fractionSize + 1);\n digits[0] = 0;\n for (let i = 1; i < roundAt; i++)\n digits[i] = 0;\n }\n if (digit >= 5) {\n if (roundAt - 1 < 0) {\n for (let k = 0; k > roundAt; k--) {\n digits.unshift(0);\n parsedNumber.integerLen++;\n }\n digits.unshift(1);\n parsedNumber.integerLen++;\n }\n else {\n digits[roundAt - 1]++;\n }\n }\n // Pad out with zeros to get the required fraction length\n for (; fractionLen < Math.max(0, fractionSize); fractionLen++)\n digits.push(0);\n /** @type {?} */\n let dropTrailingZeros = fractionSize !== 0;\n // Minimal length = nb of decimals required + current nb of integers\n // Any number besides that is optional and can be removed if it's a trailing 0\n /** @type {?} */\n const minLen = minFrac + parsedNumber.integerLen;\n // Do any carrying, e.g. a digit was rounded up to 10\n /** @type {?} */\n const carry = digits.reduceRight((/**\n * @param {?} carry\n * @param {?} d\n * @param {?} i\n * @param {?} digits\n * @return {?}\n */\n function (carry, d, i, digits) {\n d = d + carry;\n digits[i] = d < 10 ? d : d - 10; // d % 10\n if (dropTrailingZeros) {\n // Do not keep meaningless fractional trailing zeros (e.g. 15.52000 --> 15.52)\n if (digits[i] === 0 && i >= minLen) {\n digits.pop();\n }\n else {\n dropTrailingZeros = false;\n }\n }\n return d >= 10 ? 1 : 0; // Math.floor(d / 10);\n }), 0);\n if (carry) {\n digits.unshift(carry);\n parsedNumber.integerLen++;\n }\n}\n/**\n * @param {?} text\n * @return {?}\n */\nfunction parseIntAutoRadix(text) {\n /** @type {?} */\n const result = parseInt(text);\n if (isNaN(result)) {\n throw new Error('Invalid integer literal when parsing ' + text);\n }\n return result;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/i18n/localization.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * \\@publicApi\n * @abstract\n */\nclass NgLocalization {\n}\nif (false) {\n /**\n * @abstract\n * @param {?} value\n * @param {?=} locale\n * @return {?}\n */\n NgLocalization.prototype.getPluralCategory = function (value, locale) { };\n}\n/**\n * Returns the plural category for a given value.\n * - \"=value\" when the case exists,\n * - the plural category otherwise\n * @param {?} value\n * @param {?} cases\n * @param {?} ngLocalization\n * @param {?=} locale\n * @return {?}\n */\nfunction getPluralCategory(value, cases, ngLocalization, locale) {\n /** @type {?} */\n let key = `=${value}`;\n if (cases.indexOf(key) > -1) {\n return key;\n }\n key = ngLocalization.getPluralCategory(value, locale);\n if (cases.indexOf(key) > -1) {\n return key;\n }\n if (cases.indexOf('other') > -1) {\n return 'other';\n }\n throw new Error(`No plural message found for value \"${value}\"`);\n}\n/**\n * Returns the plural case based on the locale\n *\n * \\@publicApi\n */\nclass NgLocaleLocalization extends NgLocalization {\n /**\n * @param {?} locale\n */\n constructor(locale) {\n super();\n this.locale = locale;\n }\n /**\n * @param {?} value\n * @param {?=} locale\n * @return {?}\n */\n getPluralCategory(value, locale) {\n /** @type {?} */\n const plural = getLocalePluralCase(locale || this.locale)(value);\n switch (plural) {\n case Plural.Zero:\n return 'zero';\n case Plural.One:\n return 'one';\n case Plural.Two:\n return 'two';\n case Plural.Few:\n return 'few';\n case Plural.Many:\n return 'many';\n default:\n return 'other';\n }\n }\n}\nNgLocaleLocalization.decorators = [\n { type: Injectable }\n];\n/** @nocollapse */\nNgLocaleLocalization.ctorParameters = () => [\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }\n];\nif (false) {\n /**\n * @type {?}\n * @protected\n */\n NgLocaleLocalization.prototype.locale;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/i18n/locale_data.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Register global data to be used internally by Angular. See the\n * [\"I18n guide\"](guide/i18n#i18n-pipes) to know how to import additional locale data.\n *\n * The signature registerLocaleData(data: any, extraData?: any) is deprecated since v5.1\n *\n * \\@publicApi\n * @param {?} data\n * @param {?=} localeId\n * @param {?=} extraData\n * @return {?}\n */\nfunction registerLocaleData(data, localeId, extraData) {\n return ɵregisterLocaleData(data, localeId, extraData);\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/cookie.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @param {?} cookieStr\n * @param {?} name\n * @return {?}\n */\nfunction parseCookieValue(cookieStr, name) {\n name = encodeURIComponent(name);\n for (const cookie of cookieStr.split(';')) {\n /** @type {?} */\n const eqIndex = cookie.indexOf('=');\n const [cookieName, cookieValue] = eqIndex == -1 ? [cookie, ''] : [cookie.slice(0, eqIndex), cookie.slice(eqIndex + 1)];\n if (cookieName.trim() === name) {\n return decodeURIComponent(cookieValue);\n }\n }\n return null;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/directives/ng_class.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * \\@ngModule CommonModule\n *\n * \\@usageNotes\n * ```\n * ...\n *\n * ...\n *\n * ...\n *\n * ...\n *\n * ...\n * ```\n *\n * \\@description\n *\n * Adds and removes CSS classes on an HTML element.\n *\n * The CSS classes are updated as follows, depending on the type of the expression evaluation:\n * - `string` - the CSS classes listed in the string (space delimited) are added,\n * - `Array` - the CSS classes declared as Array elements are added,\n * - `Object` - keys are CSS classes that get added when the expression given in the value\n * evaluates to a truthy value, otherwise they are removed.\n *\n * \\@publicApi\n */\nclass NgClass {\n /**\n * @param {?} _iterableDiffers\n * @param {?} _keyValueDiffers\n * @param {?} _ngEl\n * @param {?} _renderer\n */\n constructor(_iterableDiffers, _keyValueDiffers, _ngEl, _renderer) {\n this._iterableDiffers = _iterableDiffers;\n this._keyValueDiffers = _keyValueDiffers;\n this._ngEl = _ngEl;\n this._renderer = _renderer;\n this._iterableDiffer = null;\n this._keyValueDiffer = null;\n this._initialClasses = [];\n this._rawClass = null;\n }\n /**\n * @param {?} value\n * @return {?}\n */\n set klass(value) {\n this._removeClasses(this._initialClasses);\n this._initialClasses = typeof value === 'string' ? value.split(/\\s+/) : [];\n this._applyClasses(this._initialClasses);\n this._applyClasses(this._rawClass);\n }\n /**\n * @param {?} value\n * @return {?}\n */\n set ngClass(value) {\n this._removeClasses(this._rawClass);\n this._applyClasses(this._initialClasses);\n this._iterableDiffer = null;\n this._keyValueDiffer = null;\n this._rawClass = typeof value === 'string' ? value.split(/\\s+/) : value;\n if (this._rawClass) {\n if (ɵisListLikeIterable(this._rawClass)) {\n this._iterableDiffer = this._iterableDiffers.find(this._rawClass).create();\n }\n else {\n this._keyValueDiffer = this._keyValueDiffers.find(this._rawClass).create();\n }\n }\n }\n /**\n * @return {?}\n */\n ngDoCheck() {\n if (this._iterableDiffer) {\n /** @type {?} */\n const iterableChanges = this._iterableDiffer.diff((/** @type {?} */ (this._rawClass)));\n if (iterableChanges) {\n this._applyIterableChanges(iterableChanges);\n }\n }\n else if (this._keyValueDiffer) {\n /** @type {?} */\n const keyValueChanges = this._keyValueDiffer.diff((/** @type {?} */ (this._rawClass)));\n if (keyValueChanges) {\n this._applyKeyValueChanges(keyValueChanges);\n }\n }\n }\n /**\n * @private\n * @param {?} changes\n * @return {?}\n */\n _applyKeyValueChanges(changes) {\n changes.forEachAddedItem((/**\n * @param {?} record\n * @return {?}\n */\n (record) => this._toggleClass(record.key, record.currentValue)));\n changes.forEachChangedItem((/**\n * @param {?} record\n * @return {?}\n */\n (record) => this._toggleClass(record.key, record.currentValue)));\n changes.forEachRemovedItem((/**\n * @param {?} record\n * @return {?}\n */\n (record) => {\n if (record.previousValue) {\n this._toggleClass(record.key, false);\n }\n }));\n }\n /**\n * @private\n * @param {?} changes\n * @return {?}\n */\n _applyIterableChanges(changes) {\n changes.forEachAddedItem((/**\n * @param {?} record\n * @return {?}\n */\n (record) => {\n if (typeof record.item === 'string') {\n this._toggleClass(record.item, true);\n }\n else {\n throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${ɵstringify(record.item)}`);\n }\n }));\n changes.forEachRemovedItem((/**\n * @param {?} record\n * @return {?}\n */\n (record) => this._toggleClass(record.item, false)));\n }\n /**\n * Applies a collection of CSS classes to the DOM element.\n *\n * For argument of type Set and Array CSS class names contained in those collections are always\n * added.\n * For argument of type Map CSS class name in the map's key is toggled based on the value (added\n * for truthy and removed for falsy).\n * @private\n * @param {?} rawClassVal\n * @return {?}\n */\n _applyClasses(rawClassVal) {\n if (rawClassVal) {\n if (Array.isArray(rawClassVal) || rawClassVal instanceof Set) {\n ((/** @type {?} */ (rawClassVal))).forEach((/**\n * @param {?} klass\n * @return {?}\n */\n (klass) => this._toggleClass(klass, true)));\n }\n else {\n Object.keys(rawClassVal).forEach((/**\n * @param {?} klass\n * @return {?}\n */\n klass => this._toggleClass(klass, !!rawClassVal[klass])));\n }\n }\n }\n /**\n * Removes a collection of CSS classes from the DOM element. This is mostly useful for cleanup\n * purposes.\n * @private\n * @param {?} rawClassVal\n * @return {?}\n */\n _removeClasses(rawClassVal) {\n if (rawClassVal) {\n if (Array.isArray(rawClassVal) || rawClassVal instanceof Set) {\n ((/** @type {?} */ (rawClassVal))).forEach((/**\n * @param {?} klass\n * @return {?}\n */\n (klass) => this._toggleClass(klass, false)));\n }\n else {\n Object.keys(rawClassVal).forEach((/**\n * @param {?} klass\n * @return {?}\n */\n klass => this._toggleClass(klass, false)));\n }\n }\n }\n /**\n * @private\n * @param {?} klass\n * @param {?} enabled\n * @return {?}\n */\n _toggleClass(klass, enabled) {\n klass = klass.trim();\n if (klass) {\n klass.split(/\\s+/g).forEach((/**\n * @param {?} klass\n * @return {?}\n */\n klass => {\n if (enabled) {\n this._renderer.addClass(this._ngEl.nativeElement, klass);\n }\n else {\n this._renderer.removeClass(this._ngEl.nativeElement, klass);\n }\n }));\n }\n }\n}\nNgClass.decorators = [\n { type: Directive, args: [{ selector: '[ngClass]' },] }\n];\n/** @nocollapse */\nNgClass.ctorParameters = () => [\n { type: IterableDiffers },\n { type: KeyValueDiffers },\n { type: ElementRef },\n { type: Renderer2 }\n];\nNgClass.propDecorators = {\n klass: [{ type: Input, args: ['class',] }],\n ngClass: [{ type: Input, args: ['ngClass',] }]\n};\nif (false) {\n /**\n * @type {?}\n * @private\n */\n NgClass.prototype._iterableDiffer;\n /**\n * @type {?}\n * @private\n */\n NgClass.prototype._keyValueDiffer;\n /**\n * @type {?}\n * @private\n */\n NgClass.prototype._initialClasses;\n /**\n * @type {?}\n * @private\n */\n NgClass.prototype._rawClass;\n /**\n * @type {?}\n * @private\n */\n NgClass.prototype._iterableDiffers;\n /**\n * @type {?}\n * @private\n */\n NgClass.prototype._keyValueDiffers;\n /**\n * @type {?}\n * @private\n */\n NgClass.prototype._ngEl;\n /**\n * @type {?}\n * @private\n */\n NgClass.prototype._renderer;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/directives/ng_component_outlet.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Instantiates a single {\\@link Component} type and inserts its Host View into current View.\n * `NgComponentOutlet` provides a declarative approach for dynamic component creation.\n *\n * `NgComponentOutlet` requires a component type, if a falsy value is set the view will clear and\n * any existing component will get destroyed.\n *\n * \\@usageNotes\n *\n * ### Fine tune control\n *\n * You can control the component creation process by using the following optional attributes:\n *\n * * `ngComponentOutletInjector`: Optional custom {\\@link Injector} that will be used as parent for\n * the Component. Defaults to the injector of the current view container.\n *\n * * `ngComponentOutletContent`: Optional list of projectable nodes to insert into the content\n * section of the component, if exists.\n *\n * * `ngComponentOutletNgModuleFactory`: Optional module factory to allow dynamically loading other\n * module, then load a component from that module.\n *\n * ### Syntax\n *\n * Simple\n * ```\n * \n * ```\n *\n * Customized injector/content\n * ```\n * \n * \n * ```\n *\n * Customized ngModuleFactory\n * ```\n * \n * \n * ```\n *\n * ### A simple example\n *\n * {\\@example common/ngComponentOutlet/ts/module.ts region='SimpleExample'}\n *\n * A more complete example with additional options:\n *\n * {\\@example common/ngComponentOutlet/ts/module.ts region='CompleteExample'}\n *\n * \\@publicApi\n * \\@ngModule CommonModule\n */\nclass NgComponentOutlet {\n /**\n * @param {?} _viewContainerRef\n */\n constructor(_viewContainerRef) {\n this._viewContainerRef = _viewContainerRef;\n this._componentRef = null;\n this._moduleRef = null;\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n this._viewContainerRef.clear();\n this._componentRef = null;\n if (this.ngComponentOutlet) {\n /** @type {?} */\n const elInjector = this.ngComponentOutletInjector || this._viewContainerRef.parentInjector;\n if (changes['ngComponentOutletNgModuleFactory']) {\n if (this._moduleRef)\n this._moduleRef.destroy();\n if (this.ngComponentOutletNgModuleFactory) {\n /** @type {?} */\n const parentModule = elInjector.get(NgModuleRef);\n this._moduleRef = this.ngComponentOutletNgModuleFactory.create(parentModule.injector);\n }\n else {\n this._moduleRef = null;\n }\n }\n /** @type {?} */\n const componentFactoryResolver = this._moduleRef ? this._moduleRef.componentFactoryResolver :\n elInjector.get(ComponentFactoryResolver);\n /** @type {?} */\n const componentFactory = componentFactoryResolver.resolveComponentFactory(this.ngComponentOutlet);\n this._componentRef = this._viewContainerRef.createComponent(componentFactory, this._viewContainerRef.length, elInjector, this.ngComponentOutletContent);\n }\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n if (this._moduleRef)\n this._moduleRef.destroy();\n }\n}\nNgComponentOutlet.decorators = [\n { type: Directive, args: [{ selector: '[ngComponentOutlet]' },] }\n];\n/** @nocollapse */\nNgComponentOutlet.ctorParameters = () => [\n { type: ViewContainerRef }\n];\nNgComponentOutlet.propDecorators = {\n ngComponentOutlet: [{ type: Input }],\n ngComponentOutletInjector: [{ type: Input }],\n ngComponentOutletContent: [{ type: Input }],\n ngComponentOutletNgModuleFactory: [{ type: Input }]\n};\nif (false) {\n /** @type {?} */\n NgComponentOutlet.prototype.ngComponentOutlet;\n /** @type {?} */\n NgComponentOutlet.prototype.ngComponentOutletInjector;\n /** @type {?} */\n NgComponentOutlet.prototype.ngComponentOutletContent;\n /** @type {?} */\n NgComponentOutlet.prototype.ngComponentOutletNgModuleFactory;\n /**\n * @type {?}\n * @private\n */\n NgComponentOutlet.prototype._componentRef;\n /**\n * @type {?}\n * @private\n */\n NgComponentOutlet.prototype._moduleRef;\n /**\n * @type {?}\n * @private\n */\n NgComponentOutlet.prototype._viewContainerRef;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/directives/ng_for_of.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * \\@publicApi\n * @template T, U\n */\nclass NgForOfContext {\n /**\n * @param {?} $implicit\n * @param {?} ngForOf\n * @param {?} index\n * @param {?} count\n */\n constructor($implicit, ngForOf, index, count) {\n this.$implicit = $implicit;\n this.ngForOf = ngForOf;\n this.index = index;\n this.count = count;\n }\n /**\n * @return {?}\n */\n get first() { return this.index === 0; }\n /**\n * @return {?}\n */\n get last() { return this.index === this.count - 1; }\n /**\n * @return {?}\n */\n get even() { return this.index % 2 === 0; }\n /**\n * @return {?}\n */\n get odd() { return !this.even; }\n}\nif (false) {\n /** @type {?} */\n NgForOfContext.prototype.$implicit;\n /** @type {?} */\n NgForOfContext.prototype.ngForOf;\n /** @type {?} */\n NgForOfContext.prototype.index;\n /** @type {?} */\n NgForOfContext.prototype.count;\n}\n/**\n * A [structural directive](guide/structural-directives) that renders\n * a template for each item in a collection.\n * The directive is placed on an element, which becomes the parent\n * of the cloned templates.\n *\n * The `ngForOf` directive is generally used in the\n * [shorthand form](guide/structural-directives#the-asterisk--prefix) `*ngFor`.\n * In this form, the template to be rendered for each iteration is the content\n * of an anchor element containing the directive.\n *\n * The following example shows the shorthand syntax with some options,\n * contained in an `
  • ` element.\n *\n * ```\n *
  • ...
  • \n * ```\n *\n * The shorthand form expands into a long form that uses the `ngForOf` selector\n * on an `` element.\n * The content of the `` element is the `
  • ` element that held the\n * short-form directive.\n *\n * Here is the expanded version of the short-form example.\n *\n * ```\n * \n *
  • ...
  • \n *
    \n * ```\n *\n * Angular automatically expands the shorthand syntax as it compiles the template.\n * The context for each embedded view is logically merged to the current component\n * context according to its lexical position.\n *\n * When using the shorthand syntax, Angular allows only [one structural directive\n * on an element](guide/structural-directives#one-structural-directive-per-host-element).\n * If you want to iterate conditionally, for example,\n * put the `*ngIf` on a container element that wraps the `*ngFor` element.\n * For futher discussion, see\n * [Structural Directives](guide/structural-directives#one-per-element).\n *\n * \\@usageNotes\n *\n * ### Local variables\n *\n * `NgForOf` provides exported values that can be aliased to local variables.\n * For example:\n *\n * ```\n *
  • \n * {{i}}/{{users.length}}. {{user}} default\n *
  • \n * ```\n *\n * The following exported values can be aliased to local variables:\n *\n * - `$implicit: T`: The value of the individual items in the iterable (`ngForOf`).\n * - `ngForOf: NgIterable`: The value of the iterable expression. Useful when the expression is\n * more complex then a property access, for example when using the async pipe (`userStreams |\n * async`).\n * - `index: number`: The index of the current item in the iterable.\n * - `first: boolean`: True when the item is the first item in the iterable.\n * - `last: boolean`: True when the item is the last item in the iterable.\n * - `even: boolean`: True when the item has an even index in the iterable.\n * - `odd: boolean`: True when the item has an odd index in the iterable.\n *\n * ### Change propagation\n *\n * When the contents of the iterator changes, `NgForOf` makes the corresponding changes to the DOM:\n *\n * * When an item is added, a new instance of the template is added to the DOM.\n * * When an item is removed, its template instance is removed from the DOM.\n * * When items are reordered, their respective templates are reordered in the DOM.\n *\n * Angular uses object identity to track insertions and deletions within the iterator and reproduce\n * those changes in the DOM. This has important implications for animations and any stateful\n * controls that are present, such as `` elements that accept user input. Inserted rows can\n * be animated in, deleted rows can be animated out, and unchanged rows retain any unsaved state\n * such as user input.\n * For more on animations, see [Transitions and Triggers](guide/transition-and-triggers).\n *\n * The identities of elements in the iterator can change while the data does not.\n * This can happen, for example, if the iterator is produced from an RPC to the server, and that\n * RPC is re-run. Even if the data hasn't changed, the second response produces objects with\n * different identities, and Angular must tear down the entire DOM and rebuild it (as if all old\n * elements were deleted and all new elements inserted).\n *\n * To avoid this expensive operation, you can customize the default tracking algorithm.\n * by supplying the `trackBy` option to `NgForOf`.\n * `trackBy` takes a function that has two arguments: `index` and `item`.\n * If `trackBy` is given, Angular tracks changes by the return value of the function.\n *\n * @see [Structural Directives](guide/structural-directives)\n * \\@ngModule CommonModule\n * \\@publicApi\n * @template T, U\n */\nclass NgForOf {\n /**\n * @param {?} _viewContainer\n * @param {?} _template\n * @param {?} _differs\n */\n constructor(_viewContainer, _template, _differs) {\n this._viewContainer = _viewContainer;\n this._template = _template;\n this._differs = _differs;\n this._ngForOf = null;\n this._ngForOfDirty = true;\n this._differ = null;\n }\n /**\n * The value of the iterable expression, which can be used as a\n * [template input variable](guide/structural-directives#template-input-variable).\n * @param {?} ngForOf\n * @return {?}\n */\n set ngForOf(ngForOf) {\n this._ngForOf = ngForOf;\n this._ngForOfDirty = true;\n }\n /**\n * A function that defines how to track changes for items in the iterable.\n *\n * When items are added, moved, or removed in the iterable,\n * the directive must re-render the appropriate DOM nodes.\n * To minimize churn in the DOM, only nodes that have changed\n * are re-rendered.\n *\n * By default, the change detector assumes that\n * the object instance identifies the node in the iterable.\n * When this function is supplied, the directive uses\n * the result of calling this function to identify the item node,\n * rather than the identity of the object itself.\n *\n * The function receives two inputs,\n * the iteration index and the node object ID.\n * @param {?} fn\n * @return {?}\n */\n set ngForTrackBy(fn) {\n if (isDevMode() && fn != null && typeof fn !== 'function') {\n // TODO(vicb): use a log service once there is a public one available\n if ((/** @type {?} */ (console)) && (/** @type {?} */ (console.warn))) {\n console.warn(`trackBy must be a function, but received ${JSON.stringify(fn)}. ` +\n `See https://angular.io/api/common/NgForOf#change-propagation for more information.`);\n }\n }\n this._trackByFn = fn;\n }\n /**\n * @return {?}\n */\n get ngForTrackBy() { return this._trackByFn; }\n /**\n * A reference to the template that is stamped out for each item in the iterable.\n * @see [template reference variable](guide/template-syntax#template-reference-variables--var-)\n * @param {?} value\n * @return {?}\n */\n set ngForTemplate(value) {\n // TODO(TS2.1): make TemplateRef>> once we move to TS v2.1\n // The current type is too restrictive; a template that just uses index, for example,\n // should be acceptable.\n if (value) {\n this._template = value;\n }\n }\n /**\n * Applies the changes when needed.\n * @return {?}\n */\n ngDoCheck() {\n if (this._ngForOfDirty) {\n this._ngForOfDirty = false;\n // React on ngForOf changes only once all inputs have been initialized\n /** @type {?} */\n const value = this._ngForOf;\n if (!this._differ && value) {\n try {\n this._differ = this._differs.find(value).create(this.ngForTrackBy);\n }\n catch (_a) {\n throw new Error(`Cannot find a differ supporting object '${value}' of type '${getTypeName(value)}'. NgFor only supports binding to Iterables such as Arrays.`);\n }\n }\n }\n if (this._differ) {\n /** @type {?} */\n const changes = this._differ.diff(this._ngForOf);\n if (changes)\n this._applyChanges(changes);\n }\n }\n /**\n * @private\n * @param {?} changes\n * @return {?}\n */\n _applyChanges(changes) {\n /** @type {?} */\n const insertTuples = [];\n changes.forEachOperation((/**\n * @param {?} item\n * @param {?} adjustedPreviousIndex\n * @param {?} currentIndex\n * @return {?}\n */\n (item, adjustedPreviousIndex, currentIndex) => {\n if (item.previousIndex == null) {\n // NgForOf is never \"null\" or \"undefined\" here because the differ detected\n // that a new item needs to be inserted from the iterable. This implies that\n // there is an iterable value for \"_ngForOf\".\n /** @type {?} */\n const view = this._viewContainer.createEmbeddedView(this._template, new NgForOfContext((/** @type {?} */ (null)), (/** @type {?} */ (this._ngForOf)), -1, -1), currentIndex === null ? undefined : currentIndex);\n /** @type {?} */\n const tuple = new RecordViewTuple(item, view);\n insertTuples.push(tuple);\n }\n else if (currentIndex == null) {\n this._viewContainer.remove(adjustedPreviousIndex === null ? undefined : adjustedPreviousIndex);\n }\n else if (adjustedPreviousIndex !== null) {\n /** @type {?} */\n const view = (/** @type {?} */ (this._viewContainer.get(adjustedPreviousIndex)));\n this._viewContainer.move(view, currentIndex);\n /** @type {?} */\n const tuple = new RecordViewTuple(item, (/** @type {?} */ (view)));\n insertTuples.push(tuple);\n }\n }));\n for (let i = 0; i < insertTuples.length; i++) {\n this._perViewChange(insertTuples[i].view, insertTuples[i].record);\n }\n for (let i = 0, ilen = this._viewContainer.length; i < ilen; i++) {\n /** @type {?} */\n const viewRef = (/** @type {?} */ (this._viewContainer.get(i)));\n viewRef.context.index = i;\n viewRef.context.count = ilen;\n viewRef.context.ngForOf = (/** @type {?} */ (this._ngForOf));\n }\n changes.forEachIdentityChange((/**\n * @param {?} record\n * @return {?}\n */\n (record) => {\n /** @type {?} */\n const viewRef = (/** @type {?} */ (this._viewContainer.get(record.currentIndex)));\n viewRef.context.$implicit = record.item;\n }));\n }\n /**\n * @private\n * @param {?} view\n * @param {?} record\n * @return {?}\n */\n _perViewChange(view, record) {\n view.context.$implicit = record.item;\n }\n /**\n * Asserts the correct type of the context for the template that `NgForOf` will render.\n *\n * The presence of this method is a signal to the Ivy template type-check compiler that the\n * `NgForOf` structural directive renders its template with a specific context type.\n * @template T, U\n * @param {?} dir\n * @param {?} ctx\n * @return {?}\n */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n}\nNgForOf.decorators = [\n { type: Directive, args: [{ selector: '[ngFor][ngForOf]' },] }\n];\n/** @nocollapse */\nNgForOf.ctorParameters = () => [\n { type: ViewContainerRef },\n { type: TemplateRef },\n { type: IterableDiffers }\n];\nNgForOf.propDecorators = {\n ngForOf: [{ type: Input }],\n ngForTrackBy: [{ type: Input }],\n ngForTemplate: [{ type: Input }]\n};\nif (false) {\n /**\n * @type {?}\n * @private\n */\n NgForOf.prototype._ngForOf;\n /**\n * @type {?}\n * @private\n */\n NgForOf.prototype._ngForOfDirty;\n /**\n * @type {?}\n * @private\n */\n NgForOf.prototype._differ;\n /**\n * @type {?}\n * @private\n */\n NgForOf.prototype._trackByFn;\n /**\n * @type {?}\n * @private\n */\n NgForOf.prototype._viewContainer;\n /**\n * @type {?}\n * @private\n */\n NgForOf.prototype._template;\n /**\n * @type {?}\n * @private\n */\n NgForOf.prototype._differs;\n}\n/**\n * @template T, U\n */\nclass RecordViewTuple {\n /**\n * @param {?} record\n * @param {?} view\n */\n constructor(record, view) {\n this.record = record;\n this.view = view;\n }\n}\nif (false) {\n /** @type {?} */\n RecordViewTuple.prototype.record;\n /** @type {?} */\n RecordViewTuple.prototype.view;\n}\n/**\n * @param {?} type\n * @return {?}\n */\nfunction getTypeName(type) {\n return type['name'] || typeof type;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/directives/ng_if.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A structural directive that conditionally includes a template based on the value of\n * an expression coerced to Boolean.\n * When the expression evaluates to true, Angular renders the template\n * provided in a `then` clause, and when false or null,\n * Angular renders the template provided in an optional `else` clause. The default\n * template for the `else` clause is blank.\n *\n * A [shorthand form](guide/structural-directives#the-asterisk--prefix) of the directive,\n * `*ngIf=\"condition\"`, is generally used, provided\n * as an attribute of the anchor element for the inserted template.\n * Angular expands this into a more explicit version, in which the anchor element\n * is contained in an `` element.\n *\n * Simple form with shorthand syntax:\n *\n * ```\n *
    Content to render when condition is true.
    \n * ```\n *\n * Simple form with expanded syntax:\n *\n * ```\n *
    Content to render when condition is\n * true.
    \n * ```\n *\n * Form with an \"else\" block:\n *\n * ```\n *
    Content to render when condition is true.
    \n * Content to render when condition is false.\n * ```\n *\n * Shorthand form with \"then\" and \"else\" blocks:\n *\n * ```\n *
    \n * Content to render when condition is true.\n * Content to render when condition is false.\n * ```\n *\n * Form with storing the value locally:\n *\n * ```\n *
    {{value}}
    \n * Content to render when value is null.\n * ```\n *\n * \\@usageNotes\n *\n * The `*ngIf` directive is most commonly used to conditionally show an inline template,\n * as seen in the following example.\n * The default `else` template is blank.\n *\n * {\\@example common/ngIf/ts/module.ts region='NgIfSimple'}\n *\n * ### Showing an alternative template using `else`\n *\n * To display a template when `expression` evaluates to false, use an `else` template\n * binding as shown in the following example.\n * The `else` binding points to an `` element labeled `#elseBlock`.\n * The template can be defined anywhere in the component view, but is typically placed right after\n * `ngIf` for readability.\n *\n * {\\@example common/ngIf/ts/module.ts region='NgIfElse'}\n *\n * ### Using an external `then` template\n *\n * In the previous example, the then-clause template is specified inline, as the content of the\n * tag that contains the `ngIf` directive. You can also specify a template that is defined\n * externally, by referencing a labeled `` element. When you do this, you can\n * change which template to use at runtime, as shown in the following example.\n *\n * {\\@example common/ngIf/ts/module.ts region='NgIfThenElse'}\n *\n * ### Storing a conditional result in a variable\n *\n * You might want to show a set of properties from the same object. If you are waiting\n * for asynchronous data, the object can be undefined.\n * In this case, you can use `ngIf` and store the result of the condition in a local\n * variable as shown in the the following example.\n *\n * {\\@example common/ngIf/ts/module.ts region='NgIfAs'}\n *\n * This code uses only one `AsyncPipe`, so only one subscription is created.\n * The conditional statement stores the result of `userStream|async` in the local variable `user`.\n * You can then bind the local `user` repeatedly.\n *\n * The conditional displays the data only if `userStream` returns a value,\n * so you don't need to use the\n * [safe-navigation-operator](guide/template-syntax#safe-navigation-operator) (`?.`)\n * to guard against null values when accessing properties.\n * You can display an alternative template while waiting for the data.\n *\n * ### Shorthand syntax\n *\n * The shorthand syntax `*ngIf` expands into two separate template specifications\n * for the \"then\" and \"else\" clauses. For example, consider the following shorthand statement,\n * that is meant to show a loading page while waiting for data to be loaded.\n *\n * ```\n *
    \n * ...\n *
    \n *\n * \n *
    Loading...
    \n *
    \n * ```\n *\n * You can see that the \"else\" clause references the ``\n * with the `#loading` label, and the template for the \"then\" clause\n * is provided as the content of the anchor element.\n *\n * However, when Angular expands the shorthand syntax, it creates\n * another `` tag, with `ngIf` and `ngIfElse` directives.\n * The anchor element containing the template for the \"then\" clause becomes\n * the content of this unlabeled `` tag.\n *\n * ```\n * \n *
    \n * ...\n *
    \n *
    \n *\n * \n *
    Loading...
    \n *
    \n * ```\n *\n * The presence of the implicit template object has implications for the nesting of\n * structural directives. For more on this subject, see\n * [Structural Directives](https://angular.io/guide/structural-directives#one-per-element).\n *\n * \\@ngModule CommonModule\n * \\@publicApi\n * @template T\n */\nclass NgIf {\n /**\n * @param {?} _viewContainer\n * @param {?} templateRef\n */\n constructor(_viewContainer, templateRef) {\n this._viewContainer = _viewContainer;\n this._context = new NgIfContext();\n this._thenTemplateRef = null;\n this._elseTemplateRef = null;\n this._thenViewRef = null;\n this._elseViewRef = null;\n this._thenTemplateRef = templateRef;\n }\n /**\n * The Boolean expression to evaluate as the condition for showing a template.\n * @param {?} condition\n * @return {?}\n */\n set ngIf(condition) {\n this._context.$implicit = this._context.ngIf = condition;\n this._updateView();\n }\n /**\n * A template to show if the condition expression evaluates to true.\n * @param {?} templateRef\n * @return {?}\n */\n set ngIfThen(templateRef) {\n assertTemplate('ngIfThen', templateRef);\n this._thenTemplateRef = templateRef;\n this._thenViewRef = null; // clear previous view if any.\n this._updateView();\n }\n /**\n * A template to show if the condition expression evaluates to false.\n * @param {?} templateRef\n * @return {?}\n */\n set ngIfElse(templateRef) {\n assertTemplate('ngIfElse', templateRef);\n this._elseTemplateRef = templateRef;\n this._elseViewRef = null; // clear previous view if any.\n this._updateView();\n }\n /**\n * @private\n * @return {?}\n */\n _updateView() {\n if (this._context.$implicit) {\n if (!this._thenViewRef) {\n this._viewContainer.clear();\n this._elseViewRef = null;\n if (this._thenTemplateRef) {\n this._thenViewRef =\n this._viewContainer.createEmbeddedView(this._thenTemplateRef, this._context);\n }\n }\n }\n else {\n if (!this._elseViewRef) {\n this._viewContainer.clear();\n this._thenViewRef = null;\n if (this._elseTemplateRef) {\n this._elseViewRef =\n this._viewContainer.createEmbeddedView(this._elseTemplateRef, this._context);\n }\n }\n }\n }\n /**\n * Asserts the correct type of the context for the template that `NgIf` will render.\n *\n * The presence of this method is a signal to the Ivy template type-check compiler that the\n * `NgIf` structural directive renders its template with a specific context type.\n * @template T\n * @param {?} dir\n * @param {?} ctx\n * @return {?}\n */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n}\nNgIf.decorators = [\n { type: Directive, args: [{ selector: '[ngIf]' },] }\n];\n/** @nocollapse */\nNgIf.ctorParameters = () => [\n { type: ViewContainerRef },\n { type: TemplateRef }\n];\nNgIf.propDecorators = {\n ngIf: [{ type: Input }],\n ngIfThen: [{ type: Input }],\n ngIfElse: [{ type: Input }]\n};\nif (false) {\n /**\n * \\@internal\n * @type {?}\n */\n NgIf.ngIfUseIfTypeGuard;\n /**\n * Assert the correct type of the expression bound to the `ngIf` input within the template.\n *\n * The presence of this static field is a signal to the Ivy template type check compiler that\n * when the `NgIf` structural directive renders its template, the type of the expression bound\n * to `ngIf` should be narrowed in some way. For `NgIf`, the binding expression itself is used to\n * narrow its type, which allows the strictNullChecks feature of TypeScript to work with `NgIf`.\n * @type {?}\n */\n NgIf.ngTemplateGuard_ngIf;\n /**\n * @type {?}\n * @private\n */\n NgIf.prototype._context;\n /**\n * @type {?}\n * @private\n */\n NgIf.prototype._thenTemplateRef;\n /**\n * @type {?}\n * @private\n */\n NgIf.prototype._elseTemplateRef;\n /**\n * @type {?}\n * @private\n */\n NgIf.prototype._thenViewRef;\n /**\n * @type {?}\n * @private\n */\n NgIf.prototype._elseViewRef;\n /**\n * @type {?}\n * @private\n */\n NgIf.prototype._viewContainer;\n}\n/**\n * \\@publicApi\n * @template T\n */\nclass NgIfContext {\n constructor() {\n this.$implicit = (/** @type {?} */ (null));\n this.ngIf = (/** @type {?} */ (null));\n }\n}\nif (false) {\n /** @type {?} */\n NgIfContext.prototype.$implicit;\n /** @type {?} */\n NgIfContext.prototype.ngIf;\n}\n/**\n * @param {?} property\n * @param {?} templateRef\n * @return {?}\n */\nfunction assertTemplate(property, templateRef) {\n /** @type {?} */\n const isTemplateRefOrNull = !!(!templateRef || templateRef.createEmbeddedView);\n if (!isTemplateRefOrNull) {\n throw new Error(`${property} must be a TemplateRef, but received '${ɵstringify(templateRef)}'.`);\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/directives/ng_switch.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass SwitchView {\n /**\n * @param {?} _viewContainerRef\n * @param {?} _templateRef\n */\n constructor(_viewContainerRef, _templateRef) {\n this._viewContainerRef = _viewContainerRef;\n this._templateRef = _templateRef;\n this._created = false;\n }\n /**\n * @return {?}\n */\n create() {\n this._created = true;\n this._viewContainerRef.createEmbeddedView(this._templateRef);\n }\n /**\n * @return {?}\n */\n destroy() {\n this._created = false;\n this._viewContainerRef.clear();\n }\n /**\n * @param {?} created\n * @return {?}\n */\n enforceState(created) {\n if (created && !this._created) {\n this.create();\n }\n else if (!created && this._created) {\n this.destroy();\n }\n }\n}\nif (false) {\n /**\n * @type {?}\n * @private\n */\n SwitchView.prototype._created;\n /**\n * @type {?}\n * @private\n */\n SwitchView.prototype._viewContainerRef;\n /**\n * @type {?}\n * @private\n */\n SwitchView.prototype._templateRef;\n}\n/**\n * \\@ngModule CommonModule\n *\n * \\@description A structural directive that adds or removes templates (displaying or hiding views)\n * when the next match expression matches the switch expression.\n *\n * The `[ngSwitch]` directive on a container specifies an expression to match against.\n * The expressions to match are provided by `ngSwitchCase` directives on views within the container.\n * - Every view that matches is rendered.\n * - If there are no matches, a view with the `ngSwitchDefault` directive is rendered.\n * - Elements within the `[NgSwitch]` statement but outside of any `NgSwitchCase`\n * or `ngSwitchDefault` directive are preserved at the location.\n *\n * \\@usageNotes\n * Define a container element for the directive, and specify the switch expression\n * to match against as an attribute:\n *\n * ```\n * \n * ```\n *\n * Within the container, `*ngSwitchCase` statements specify the match expressions\n * as attributes. Include `*ngSwitchDefault` as the final case.\n *\n * ```\n * \n * ...\n * ...\n * ...\n * \n * ```\n *\n * ### Usage Examples\n *\n * The following example shows how to use more than one case to display the same view:\n *\n * ```\n * \n * \n * ...\n * ...\n * ...\n * \n * ...\n * \n * ```\n *\n * The following example shows how cases can be nested:\n * ```\n * \n * ...\n * ...\n * ...\n * \n * \n * \n * \n * \n * ...\n * \n * ```\n *\n * \\@publicApi\n * @see `NgSwitchCase`\n * @see `NgSwitchDefault`\n * @see [Structural Directives](guide/structural-directives)\n *\n */\nclass NgSwitch {\n constructor() {\n this._defaultUsed = false;\n this._caseCount = 0;\n this._lastCaseCheckIndex = 0;\n this._lastCasesMatched = false;\n }\n /**\n * @param {?} newValue\n * @return {?}\n */\n set ngSwitch(newValue) {\n this._ngSwitch = newValue;\n if (this._caseCount === 0) {\n this._updateDefaultCases(true);\n }\n }\n /**\n * \\@internal\n * @return {?}\n */\n _addCase() { return this._caseCount++; }\n /**\n * \\@internal\n * @param {?} view\n * @return {?}\n */\n _addDefault(view) {\n if (!this._defaultViews) {\n this._defaultViews = [];\n }\n this._defaultViews.push(view);\n }\n /**\n * \\@internal\n * @param {?} value\n * @return {?}\n */\n _matchCase(value) {\n /** @type {?} */\n const matched = value == this._ngSwitch;\n this._lastCasesMatched = this._lastCasesMatched || matched;\n this._lastCaseCheckIndex++;\n if (this._lastCaseCheckIndex === this._caseCount) {\n this._updateDefaultCases(!this._lastCasesMatched);\n this._lastCaseCheckIndex = 0;\n this._lastCasesMatched = false;\n }\n return matched;\n }\n /**\n * @private\n * @param {?} useDefault\n * @return {?}\n */\n _updateDefaultCases(useDefault) {\n if (this._defaultViews && useDefault !== this._defaultUsed) {\n this._defaultUsed = useDefault;\n for (let i = 0; i < this._defaultViews.length; i++) {\n /** @type {?} */\n const defaultView = this._defaultViews[i];\n defaultView.enforceState(useDefault);\n }\n }\n }\n}\nNgSwitch.decorators = [\n { type: Directive, args: [{ selector: '[ngSwitch]' },] }\n];\nNgSwitch.propDecorators = {\n ngSwitch: [{ type: Input }]\n};\nif (false) {\n /**\n * @type {?}\n * @private\n */\n NgSwitch.prototype._defaultViews;\n /**\n * @type {?}\n * @private\n */\n NgSwitch.prototype._defaultUsed;\n /**\n * @type {?}\n * @private\n */\n NgSwitch.prototype._caseCount;\n /**\n * @type {?}\n * @private\n */\n NgSwitch.prototype._lastCaseCheckIndex;\n /**\n * @type {?}\n * @private\n */\n NgSwitch.prototype._lastCasesMatched;\n /**\n * @type {?}\n * @private\n */\n NgSwitch.prototype._ngSwitch;\n}\n/**\n * \\@ngModule CommonModule\n *\n * \\@description\n * Provides a switch case expression to match against an enclosing `ngSwitch` expression.\n * When the expressions match, the given `NgSwitchCase` template is rendered.\n * If multiple match expressions match the switch expression value, all of them are displayed.\n *\n * \\@usageNotes\n *\n * Within a switch container, `*ngSwitchCase` statements specify the match expressions\n * as attributes. Include `*ngSwitchDefault` as the final case.\n *\n * ```\n * \n * ...\n * ...\n * ...\n * \n * ```\n *\n * Each switch-case statement contains an in-line HTML template or template reference\n * that defines the subtree to be selected if the value of the match expression\n * matches the value of the switch expression.\n *\n * Unlike JavaScript, which uses strict equality, Angular uses loose equality.\n * This means that the empty string, `\"\"` matches 0.\n *\n * \\@publicApi\n * @see `NgSwitch`\n * @see `NgSwitchDefault`\n *\n */\nclass NgSwitchCase {\n /**\n * @param {?} viewContainer\n * @param {?} templateRef\n * @param {?} ngSwitch\n */\n constructor(viewContainer, templateRef, ngSwitch) {\n this.ngSwitch = ngSwitch;\n ngSwitch._addCase();\n this._view = new SwitchView(viewContainer, templateRef);\n }\n /**\n * Performs case matching. For internal use only.\n * @return {?}\n */\n ngDoCheck() { this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase)); }\n}\nNgSwitchCase.decorators = [\n { type: Directive, args: [{ selector: '[ngSwitchCase]' },] }\n];\n/** @nocollapse */\nNgSwitchCase.ctorParameters = () => [\n { type: ViewContainerRef },\n { type: TemplateRef },\n { type: NgSwitch, decorators: [{ type: Host }] }\n];\nNgSwitchCase.propDecorators = {\n ngSwitchCase: [{ type: Input }]\n};\nif (false) {\n /**\n * @type {?}\n * @private\n */\n NgSwitchCase.prototype._view;\n /**\n * Stores the HTML template to be selected on match.\n * @type {?}\n */\n NgSwitchCase.prototype.ngSwitchCase;\n /**\n * @type {?}\n * @private\n */\n NgSwitchCase.prototype.ngSwitch;\n}\n/**\n * \\@ngModule CommonModule\n *\n * \\@description\n *\n * Creates a view that is rendered when no `NgSwitchCase` expressions\n * match the `NgSwitch` expression.\n * This statement should be the final case in an `NgSwitch`.\n *\n * \\@publicApi\n * @see `NgSwitch`\n * @see `NgSwitchCase`\n *\n */\nclass NgSwitchDefault {\n /**\n * @param {?} viewContainer\n * @param {?} templateRef\n * @param {?} ngSwitch\n */\n constructor(viewContainer, templateRef, ngSwitch) {\n ngSwitch._addDefault(new SwitchView(viewContainer, templateRef));\n }\n}\nNgSwitchDefault.decorators = [\n { type: Directive, args: [{ selector: '[ngSwitchDefault]' },] }\n];\n/** @nocollapse */\nNgSwitchDefault.ctorParameters = () => [\n { type: ViewContainerRef },\n { type: TemplateRef },\n { type: NgSwitch, decorators: [{ type: Host }] }\n];\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/directives/ng_plural.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * \\@ngModule CommonModule\n *\n * \\@usageNotes\n * ```\n * \n * there is nothing\n * there is one\n * there are a few\n * \n * ```\n *\n * \\@description\n *\n * Adds / removes DOM sub-trees based on a numeric value. Tailored for pluralization.\n *\n * Displays DOM sub-trees that match the switch expression value, or failing that, DOM sub-trees\n * that match the switch expression's pluralization category.\n *\n * To use this directive you must provide a container element that sets the `[ngPlural]` attribute\n * to a switch expression. Inner elements with a `[ngPluralCase]` will display based on their\n * expression:\n * - if `[ngPluralCase]` is set to a value starting with `=`, it will only display if the value\n * matches the switch expression exactly,\n * - otherwise, the view will be treated as a \"category match\", and will only display if exact\n * value matches aren't found and the value maps to its category for the defined locale.\n *\n * See http://cldr.unicode.org/index/cldr-spec/plural-rules\n *\n * \\@publicApi\n */\nclass NgPlural {\n /**\n * @param {?} _localization\n */\n constructor(_localization) {\n this._localization = _localization;\n this._caseViews = {};\n }\n /**\n * @param {?} value\n * @return {?}\n */\n set ngPlural(value) {\n this._switchValue = value;\n this._updateView();\n }\n /**\n * @param {?} value\n * @param {?} switchView\n * @return {?}\n */\n addCase(value, switchView) { this._caseViews[value] = switchView; }\n /**\n * @private\n * @return {?}\n */\n _updateView() {\n this._clearViews();\n /** @type {?} */\n const cases = Object.keys(this._caseViews);\n /** @type {?} */\n const key = getPluralCategory(this._switchValue, cases, this._localization);\n this._activateView(this._caseViews[key]);\n }\n /**\n * @private\n * @return {?}\n */\n _clearViews() {\n if (this._activeView)\n this._activeView.destroy();\n }\n /**\n * @private\n * @param {?} view\n * @return {?}\n */\n _activateView(view) {\n if (view) {\n this._activeView = view;\n this._activeView.create();\n }\n }\n}\nNgPlural.decorators = [\n { type: Directive, args: [{ selector: '[ngPlural]' },] }\n];\n/** @nocollapse */\nNgPlural.ctorParameters = () => [\n { type: NgLocalization }\n];\nNgPlural.propDecorators = {\n ngPlural: [{ type: Input }]\n};\nif (false) {\n /**\n * @type {?}\n * @private\n */\n NgPlural.prototype._switchValue;\n /**\n * @type {?}\n * @private\n */\n NgPlural.prototype._activeView;\n /**\n * @type {?}\n * @private\n */\n NgPlural.prototype._caseViews;\n /**\n * @type {?}\n * @private\n */\n NgPlural.prototype._localization;\n}\n/**\n * \\@ngModule CommonModule\n *\n * \\@description\n *\n * Creates a view that will be added/removed from the parent {\\@link NgPlural} when the\n * given expression matches the plural expression according to CLDR rules.\n *\n * \\@usageNotes\n * ```\n * \n * ...\n * ...\n * \n * ```\n *\n * See {\\@link NgPlural} for more details and example.\n *\n * \\@publicApi\n */\nclass NgPluralCase {\n /**\n * @param {?} value\n * @param {?} template\n * @param {?} viewContainer\n * @param {?} ngPlural\n */\n constructor(value, template, viewContainer, ngPlural) {\n this.value = value;\n /** @type {?} */\n const isANumber = !isNaN(Number(value));\n ngPlural.addCase(isANumber ? `=${value}` : value, new SwitchView(viewContainer, template));\n }\n}\nNgPluralCase.decorators = [\n { type: Directive, args: [{ selector: '[ngPluralCase]' },] }\n];\n/** @nocollapse */\nNgPluralCase.ctorParameters = () => [\n { type: String, decorators: [{ type: Attribute, args: ['ngPluralCase',] }] },\n { type: TemplateRef },\n { type: ViewContainerRef },\n { type: NgPlural, decorators: [{ type: Host }] }\n];\nif (false) {\n /** @type {?} */\n NgPluralCase.prototype.value;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/directives/ng_style.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * \\@ngModule CommonModule\n *\n * \\@usageNotes\n *\n * Set the font of the containing element to the result of an expression.\n *\n * ```\n * ...\n * ```\n *\n * Set the width of the containing element to a pixel value returned by an expression.\n *\n * ```\n * ...\n * ```\n *\n * Set a collection of style values using an expression that returns key-value pairs.\n *\n * ```\n * ...\n * ```\n *\n * \\@description\n *\n * An attribute directive that updates styles for the containing HTML element.\n * Sets one or more style properties, specified as colon-separated key-value pairs.\n * The key is a style name, with an optional `.` suffix\n * (such as 'top.px', 'font-style.em').\n * The value is an expression to be evaluated.\n * The resulting non-null value, expressed in the given unit,\n * is assigned to the given style property.\n * If the result of evaluation is null, the corresponding style is removed.\n *\n * \\@publicApi\n */\nclass NgStyle {\n /**\n * @param {?} _ngEl\n * @param {?} _differs\n * @param {?} _renderer\n */\n constructor(_ngEl, _differs, _renderer) {\n this._ngEl = _ngEl;\n this._differs = _differs;\n this._renderer = _renderer;\n this._ngStyle = null;\n this._differ = null;\n }\n /**\n * @param {?} values\n * @return {?}\n */\n set ngStyle(values) {\n this._ngStyle = values;\n if (!this._differ && values) {\n this._differ = this._differs.find(values).create();\n }\n }\n /**\n * @return {?}\n */\n ngDoCheck() {\n if (this._differ) {\n /** @type {?} */\n const changes = this._differ.diff((/** @type {?} */ (this._ngStyle)));\n if (changes) {\n this._applyChanges(changes);\n }\n }\n }\n /**\n * @private\n * @param {?} nameAndUnit\n * @param {?} value\n * @return {?}\n */\n _setStyle(nameAndUnit, value) {\n const [name, unit] = nameAndUnit.split('.');\n value = value != null && unit ? `${value}${unit}` : value;\n if (value != null) {\n this._renderer.setStyle(this._ngEl.nativeElement, name, (/** @type {?} */ (value)));\n }\n else {\n this._renderer.removeStyle(this._ngEl.nativeElement, name);\n }\n }\n /**\n * @private\n * @param {?} changes\n * @return {?}\n */\n _applyChanges(changes) {\n changes.forEachRemovedItem((/**\n * @param {?} record\n * @return {?}\n */\n (record) => this._setStyle(record.key, null)));\n changes.forEachAddedItem((/**\n * @param {?} record\n * @return {?}\n */\n (record) => this._setStyle(record.key, record.currentValue)));\n changes.forEachChangedItem((/**\n * @param {?} record\n * @return {?}\n */\n (record) => this._setStyle(record.key, record.currentValue)));\n }\n}\nNgStyle.decorators = [\n { type: Directive, args: [{ selector: '[ngStyle]' },] }\n];\n/** @nocollapse */\nNgStyle.ctorParameters = () => [\n { type: ElementRef },\n { type: KeyValueDiffers },\n { type: Renderer2 }\n];\nNgStyle.propDecorators = {\n ngStyle: [{ type: Input, args: ['ngStyle',] }]\n};\nif (false) {\n /**\n * @type {?}\n * @private\n */\n NgStyle.prototype._ngStyle;\n /**\n * @type {?}\n * @private\n */\n NgStyle.prototype._differ;\n /**\n * @type {?}\n * @private\n */\n NgStyle.prototype._ngEl;\n /**\n * @type {?}\n * @private\n */\n NgStyle.prototype._differs;\n /**\n * @type {?}\n * @private\n */\n NgStyle.prototype._renderer;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/directives/ng_template_outlet.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * \\@ngModule CommonModule\n *\n * \\@description\n *\n * Inserts an embedded view from a prepared `TemplateRef`.\n *\n * You can attach a context object to the `EmbeddedViewRef` by setting `[ngTemplateOutletContext]`.\n * `[ngTemplateOutletContext]` should be an object, the object's keys will be available for binding\n * by the local template `let` declarations.\n *\n * \\@usageNotes\n * ```\n * \n * ```\n *\n * Using the key `$implicit` in the context object will set its value as default.\n *\n * ### Example\n *\n * {\\@example common/ngTemplateOutlet/ts/module.ts region='NgTemplateOutlet'}\n *\n * \\@publicApi\n */\nclass NgTemplateOutlet {\n /**\n * @param {?} _viewContainerRef\n */\n constructor(_viewContainerRef) {\n this._viewContainerRef = _viewContainerRef;\n this._viewRef = null;\n /**\n * A context object to attach to the {\\@link EmbeddedViewRef}. This should be an\n * object, the object's keys will be available for binding by the local template `let`\n * declarations.\n * Using the key `$implicit` in the context object will set its value as default.\n */\n this.ngTemplateOutletContext = null;\n /**\n * A string defining the template reference and optionally the context object for the template.\n */\n this.ngTemplateOutlet = null;\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n /** @type {?} */\n const recreateView = this._shouldRecreateView(changes);\n if (recreateView) {\n /** @type {?} */\n const viewContainerRef = this._viewContainerRef;\n if (this._viewRef) {\n viewContainerRef.remove(viewContainerRef.indexOf(this._viewRef));\n }\n this._viewRef = this.ngTemplateOutlet ?\n viewContainerRef.createEmbeddedView(this.ngTemplateOutlet, this.ngTemplateOutletContext) :\n null;\n }\n else if (this._viewRef && this.ngTemplateOutletContext) {\n this._updateExistingContext(this.ngTemplateOutletContext);\n }\n }\n /**\n * We need to re-create existing embedded view if:\n * - templateRef has changed\n * - context has changes\n *\n * We mark context object as changed when the corresponding object\n * shape changes (new properties are added or existing properties are removed).\n * In other words we consider context with the same properties as \"the same\" even\n * if object reference changes (see https://github.com/angular/angular/issues/13407).\n * @private\n * @param {?} changes\n * @return {?}\n */\n _shouldRecreateView(changes) {\n /** @type {?} */\n const ctxChange = changes['ngTemplateOutletContext'];\n return !!changes['ngTemplateOutlet'] || (ctxChange && this._hasContextShapeChanged(ctxChange));\n }\n /**\n * @private\n * @param {?} ctxChange\n * @return {?}\n */\n _hasContextShapeChanged(ctxChange) {\n /** @type {?} */\n const prevCtxKeys = Object.keys(ctxChange.previousValue || {});\n /** @type {?} */\n const currCtxKeys = Object.keys(ctxChange.currentValue || {});\n if (prevCtxKeys.length === currCtxKeys.length) {\n for (let propName of currCtxKeys) {\n if (prevCtxKeys.indexOf(propName) === -1) {\n return true;\n }\n }\n return false;\n }\n return true;\n }\n /**\n * @private\n * @param {?} ctx\n * @return {?}\n */\n _updateExistingContext(ctx) {\n for (let propName of Object.keys(ctx)) {\n ((/** @type {?} */ ((/** @type {?} */ (this._viewRef)).context)))[propName] = ((/** @type {?} */ (this.ngTemplateOutletContext)))[propName];\n }\n }\n}\nNgTemplateOutlet.decorators = [\n { type: Directive, args: [{ selector: '[ngTemplateOutlet]' },] }\n];\n/** @nocollapse */\nNgTemplateOutlet.ctorParameters = () => [\n { type: ViewContainerRef }\n];\nNgTemplateOutlet.propDecorators = {\n ngTemplateOutletContext: [{ type: Input }],\n ngTemplateOutlet: [{ type: Input }]\n};\nif (false) {\n /**\n * @type {?}\n * @private\n */\n NgTemplateOutlet.prototype._viewRef;\n /**\n * A context object to attach to the {\\@link EmbeddedViewRef}. This should be an\n * object, the object's keys will be available for binding by the local template `let`\n * declarations.\n * Using the key `$implicit` in the context object will set its value as default.\n * @type {?}\n */\n NgTemplateOutlet.prototype.ngTemplateOutletContext;\n /**\n * A string defining the template reference and optionally the context object for the template.\n * @type {?}\n */\n NgTemplateOutlet.prototype.ngTemplateOutlet;\n /**\n * @type {?}\n * @private\n */\n NgTemplateOutlet.prototype._viewContainerRef;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/directives/index.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A collection of Angular directives that are likely to be used in each and every Angular\n * application.\n * @type {?}\n */\nconst COMMON_DIRECTIVES = [\n NgClass,\n NgComponentOutlet,\n NgForOf,\n NgIf,\n NgTemplateOutlet,\n NgStyle,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n NgPlural,\n NgPluralCase,\n];\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/pipes/invalid_pipe_argument_error.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} type\n * @param {?} value\n * @return {?}\n */\nfunction invalidPipeArgumentError(type, value) {\n return Error(`InvalidPipeArgument: '${value}' for pipe '${ɵstringify(type)}'`);\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/pipes/async_pipe.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @record\n */\nfunction SubscriptionStrategy() { }\nif (false) {\n /**\n * @param {?} async\n * @param {?} updateLatestValue\n * @return {?}\n */\n SubscriptionStrategy.prototype.createSubscription = function (async, updateLatestValue) { };\n /**\n * @param {?} subscription\n * @return {?}\n */\n SubscriptionStrategy.prototype.dispose = function (subscription) { };\n /**\n * @param {?} subscription\n * @return {?}\n */\n SubscriptionStrategy.prototype.onDestroy = function (subscription) { };\n}\nclass ObservableStrategy {\n /**\n * @param {?} async\n * @param {?} updateLatestValue\n * @return {?}\n */\n createSubscription(async, updateLatestValue) {\n return async.subscribe({ next: updateLatestValue, error: (/**\n * @param {?} e\n * @return {?}\n */\n (e) => { throw e; }) });\n }\n /**\n * @param {?} subscription\n * @return {?}\n */\n dispose(subscription) { subscription.unsubscribe(); }\n /**\n * @param {?} subscription\n * @return {?}\n */\n onDestroy(subscription) { subscription.unsubscribe(); }\n}\nclass PromiseStrategy {\n /**\n * @param {?} async\n * @param {?} updateLatestValue\n * @return {?}\n */\n createSubscription(async, updateLatestValue) {\n return async.then(updateLatestValue, (/**\n * @param {?} e\n * @return {?}\n */\n e => { throw e; }));\n }\n /**\n * @param {?} subscription\n * @return {?}\n */\n dispose(subscription) { }\n /**\n * @param {?} subscription\n * @return {?}\n */\n onDestroy(subscription) { }\n}\n/** @type {?} */\nconst _promiseStrategy = new PromiseStrategy();\n/** @type {?} */\nconst _observableStrategy = new ObservableStrategy();\n/**\n * \\@ngModule CommonModule\n * \\@description\n *\n * Unwraps a value from an asynchronous primitive.\n *\n * The `async` pipe subscribes to an `Observable` or `Promise` and returns the latest value it has\n * emitted. When a new value is emitted, the `async` pipe marks the component to be checked for\n * changes. When the component gets destroyed, the `async` pipe unsubscribes automatically to avoid\n * potential memory leaks.\n *\n * \\@usageNotes\n *\n * ### Examples\n *\n * This example binds a `Promise` to the view. Clicking the `Resolve` button resolves the\n * promise.\n *\n * {\\@example common/pipes/ts/async_pipe.ts region='AsyncPipePromise'}\n *\n * It's also possible to use `async` with Observables. The example below binds the `time` Observable\n * to the view. The Observable continuously updates the view with the current time.\n *\n * {\\@example common/pipes/ts/async_pipe.ts region='AsyncPipeObservable'}\n *\n * \\@publicApi\n */\nclass AsyncPipe {\n /**\n * @param {?} _ref\n */\n constructor(_ref) {\n this._ref = _ref;\n this._latestValue = null;\n this._latestReturnedValue = null;\n this._subscription = null;\n this._obj = null;\n this._strategy = (/** @type {?} */ (null));\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n if (this._subscription) {\n this._dispose();\n }\n }\n /**\n * @param {?} obj\n * @return {?}\n */\n transform(obj) {\n if (!this._obj) {\n if (obj) {\n this._subscribe(obj);\n }\n this._latestReturnedValue = this._latestValue;\n return this._latestValue;\n }\n if (obj !== this._obj) {\n this._dispose();\n return this.transform((/** @type {?} */ (obj)));\n }\n if (ɵlooseIdentical(this._latestValue, this._latestReturnedValue)) {\n return this._latestReturnedValue;\n }\n this._latestReturnedValue = this._latestValue;\n return WrappedValue.wrap(this._latestValue);\n }\n /**\n * @private\n * @param {?} obj\n * @return {?}\n */\n _subscribe(obj) {\n this._obj = obj;\n this._strategy = this._selectStrategy(obj);\n this._subscription = this._strategy.createSubscription(obj, (/**\n * @param {?} value\n * @return {?}\n */\n (value) => this._updateLatestValue(obj, value)));\n }\n /**\n * @private\n * @param {?} obj\n * @return {?}\n */\n _selectStrategy(obj) {\n if (ɵisPromise(obj)) {\n return _promiseStrategy;\n }\n if (ɵisObservable(obj)) {\n return _observableStrategy;\n }\n throw invalidPipeArgumentError(AsyncPipe, obj);\n }\n /**\n * @private\n * @return {?}\n */\n _dispose() {\n this._strategy.dispose((/** @type {?} */ (this._subscription)));\n this._latestValue = null;\n this._latestReturnedValue = null;\n this._subscription = null;\n this._obj = null;\n }\n /**\n * @private\n * @param {?} async\n * @param {?} value\n * @return {?}\n */\n _updateLatestValue(async, value) {\n if (async === this._obj) {\n this._latestValue = value;\n this._ref.markForCheck();\n }\n }\n}\nAsyncPipe.decorators = [\n { type: Pipe, args: [{ name: 'async', pure: false },] }\n];\n/** @nocollapse */\nAsyncPipe.ctorParameters = () => [\n { type: ChangeDetectorRef }\n];\nif (false) {\n /**\n * @type {?}\n * @private\n */\n AsyncPipe.prototype._latestValue;\n /**\n * @type {?}\n * @private\n */\n AsyncPipe.prototype._latestReturnedValue;\n /**\n * @type {?}\n * @private\n */\n AsyncPipe.prototype._subscription;\n /**\n * @type {?}\n * @private\n */\n AsyncPipe.prototype._obj;\n /**\n * @type {?}\n * @private\n */\n AsyncPipe.prototype._strategy;\n /**\n * @type {?}\n * @private\n */\n AsyncPipe.prototype._ref;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/pipes/case_conversion_pipes.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Transforms text to all lower case.\n *\n * @see `UpperCasePipe`\n * @see `TitleCasePipe`\n * \\@usageNotes\n *\n * The following example defines a view that allows the user to enter\n * text, and then uses the pipe to convert the input text to all lower case.\n *\n * \n *\n * \\@ngModule CommonModule\n * \\@publicApi\n */\nclass LowerCasePipe {\n /**\n * @param {?} value The string to transform to lower case.\n * @return {?}\n */\n transform(value) {\n if (!value)\n return value;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(LowerCasePipe, value);\n }\n return value.toLowerCase();\n }\n}\nLowerCasePipe.decorators = [\n { type: Pipe, args: [{ name: 'lowercase' },] }\n];\n//\n// Regex below matches any Unicode word and compatible with ES5. In ES2018 the same result\n// can be achieved by using /\\p{L}\\S*/gu and also known as Unicode Property Escapes\n// (http://2ality.com/2017/07/regexp-unicode-property-escapes.html). Since there is no\n// transpilation of this functionality down to ES5 without external tool, the only solution is\n// to use already transpiled form. Example can be found here -\n// https://mothereff.in/regexpu#input=var+regex+%3D+/%5Cp%7BL%7D/u%3B&unicodePropertyEscape=1\n//\n/** @type {?} */\nconst unicodeWordMatch = /(?:[A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE83\\uDE86-\\uDE89\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D])\\S*/g;\n/**\n * Transforms text to title case.\n * Capitalizes the first letter of each word, and transforms the\n * rest of the word to lower case.\n * Words are delimited by any whitespace character, such as a space, tab, or line-feed character.\n *\n * @see `LowerCasePipe`\n * @see `UpperCasePipe`\n *\n * \\@usageNotes\n * The following example shows the result of transforming various strings into title case.\n *\n * \n *\n * \\@ngModule CommonModule\n * \\@publicApi\n */\nclass TitleCasePipe {\n /**\n * @param {?} value The string to transform to title case.\n * @return {?}\n */\n transform(value) {\n if (!value)\n return value;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(TitleCasePipe, value);\n }\n return value.replace(unicodeWordMatch, ((/**\n * @param {?} txt\n * @return {?}\n */\n txt => txt[0].toUpperCase() + txt.substr(1).toLowerCase())));\n }\n}\nTitleCasePipe.decorators = [\n { type: Pipe, args: [{ name: 'titlecase' },] }\n];\n/**\n * Transforms text to all upper case.\n * @see `LowerCasePipe`\n * @see `TitleCasePipe`\n *\n * \\@ngModule CommonModule\n * \\@publicApi\n */\nclass UpperCasePipe {\n /**\n * @param {?} value The string to transform to upper case.\n * @return {?}\n */\n transform(value) {\n if (!value)\n return value;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(UpperCasePipe, value);\n }\n return value.toUpperCase();\n }\n}\nUpperCasePipe.decorators = [\n { type: Pipe, args: [{ name: 'uppercase' },] }\n];\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/pipes/date_pipe.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n// clang-format off\n/**\n * \\@ngModule CommonModule\n * \\@description\n *\n * Formats a date value according to locale rules.\n *\n * Only the `en-US` locale data comes with Angular. To localize dates\n * in another language, you must import the corresponding locale data.\n * See the [I18n guide](guide/i18n#i18n-pipes) for more information.\n *\n * @see `formatDate()`\n *\n *\n * \\@usageNotes\n *\n * The result of this pipe is not reevaluated when the input is mutated. To avoid the need to\n * reformat the date on every change-detection cycle, treat the date as an immutable object\n * and change the reference when the pipe needs to run again.\n *\n * ### Pre-defined format options\n *\n * Examples are given in `en-US` locale.\n *\n * - `'short'`: equivalent to `'M/d/yy, h:mm a'` (`6/15/15, 9:03 AM`).\n * - `'medium'`: equivalent to `'MMM d, y, h:mm:ss a'` (`Jun 15, 2015, 9:03:01 AM`).\n * - `'long'`: equivalent to `'MMMM d, y, h:mm:ss a z'` (`June 15, 2015 at 9:03:01 AM\n * GMT+1`).\n * - `'full'`: equivalent to `'EEEE, MMMM d, y, h:mm:ss a zzzz'` (`Monday, June 15, 2015 at\n * 9:03:01 AM GMT+01:00`).\n * - `'shortDate'`: equivalent to `'M/d/yy'` (`6/15/15`).\n * - `'mediumDate'`: equivalent to `'MMM d, y'` (`Jun 15, 2015`).\n * - `'longDate'`: equivalent to `'MMMM d, y'` (`June 15, 2015`).\n * - `'fullDate'`: equivalent to `'EEEE, MMMM d, y'` (`Monday, June 15, 2015`).\n * - `'shortTime'`: equivalent to `'h:mm a'` (`9:03 AM`).\n * - `'mediumTime'`: equivalent to `'h:mm:ss a'` (`9:03:01 AM`).\n * - `'longTime'`: equivalent to `'h:mm:ss a z'` (`9:03:01 AM GMT+1`).\n * - `'fullTime'`: equivalent to `'h:mm:ss a zzzz'` (`9:03:01 AM GMT+01:00`).\n *\n * ### Custom format options\n *\n * You can construct a format string using symbols to specify the components\n * of a date-time value, as described in the following table.\n * Format details depend on the locale.\n * Fields marked with (*) are only available in the extra data set for the given locale.\n *\n * | Field type | Format | Description | Example Value |\n * |--------------------|-------------|---------------------------------------------------------------|------------------------------------------------------------|\n * | Era | G, GG & GGG | Abbreviated | AD |\n * | | GGGG | Wide | Anno Domini |\n * | | GGGGG | Narrow | A |\n * | Year | y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 |\n * | | yy | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 |\n * | | yyy | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 |\n * | | yyyy | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 |\n * | Month | M | Numeric: 1 digit | 9, 12 |\n * | | MM | Numeric: 2 digits + zero padded | 09, 12 |\n * | | MMM | Abbreviated | Sep |\n * | | MMMM | Wide | September |\n * | | MMMMM | Narrow | S |\n * | Month standalone | L | Numeric: 1 digit | 9, 12 |\n * | | LL | Numeric: 2 digits + zero padded | 09, 12 |\n * | | LLL | Abbreviated | Sep |\n * | | LLLL | Wide | September |\n * | | LLLLL | Narrow | S |\n * | Week of year | w | Numeric: minimum digits | 1... 53 |\n * | | ww | Numeric: 2 digits + zero padded | 01... 53 |\n * | Week of month | W | Numeric: 1 digit | 1... 5 |\n * | Day of month | d | Numeric: minimum digits | 1 |\n * | | dd | Numeric: 2 digits + zero padded | 01 |\n * | Week day | E, EE & EEE | Abbreviated | Tue |\n * | | EEEE | Wide | Tuesday |\n * | | EEEEE | Narrow | T |\n * | | EEEEEE | Short | Tu |\n * | Period | a, aa & aaa | Abbreviated | am/pm or AM/PM |\n * | | aaaa | Wide (fallback to `a` when missing) | ante meridiem/post meridiem |\n * | | aaaaa | Narrow | a/p |\n * | Period* | B, BB & BBB | Abbreviated | mid. |\n * | | BBBB | Wide | am, pm, midnight, noon, morning, afternoon, evening, night |\n * | | BBBBB | Narrow | md |\n * | Period standalone* | b, bb & bbb | Abbreviated | mid. |\n * | | bbbb | Wide | am, pm, midnight, noon, morning, afternoon, evening, night |\n * | | bbbbb | Narrow | md |\n * | Hour 1-12 | h | Numeric: minimum digits | 1, 12 |\n * | | hh | Numeric: 2 digits + zero padded | 01, 12 |\n * | Hour 0-23 | H | Numeric: minimum digits | 0, 23 |\n * | | HH | Numeric: 2 digits + zero padded | 00, 23 |\n * | Minute | m | Numeric: minimum digits | 8, 59 |\n * | | mm | Numeric: 2 digits + zero padded | 08, 59 |\n * | Second | s | Numeric: minimum digits | 0... 59 |\n * | | ss | Numeric: 2 digits + zero padded | 00... 59 |\n * | Fractional seconds | S | Numeric: 1 digit | 0... 9 |\n * | | SS | Numeric: 2 digits + zero padded | 00... 99 |\n * | | SSS | Numeric: 3 digits + zero padded (= milliseconds) | 000... 999 |\n * | Zone | z, zz & zzz | Short specific non location format (fallback to O) | GMT-8 |\n * | | zzzz | Long specific non location format (fallback to OOOO) | GMT-08:00 |\n * | | Z, ZZ & ZZZ | ISO8601 basic format | -0800 |\n * | | ZZZZ | Long localized GMT format | GMT-8:00 |\n * | | ZZZZZ | ISO8601 extended format + Z indicator for offset 0 (= XXXXX) | -08:00 |\n * | | O, OO & OOO | Short localized GMT format | GMT-8 |\n * | | OOOO | Long localized GMT format | GMT-08:00 |\n *\n * Note that timezone correction is not applied to an ISO string that has no time component, such as \"2016-09-19\"\n *\n * ### Format examples\n *\n * These examples transform a date into various formats,\n * assuming that `dateObj` is a JavaScript `Date` object for\n * year: 2015, month: 6, day: 15, hour: 21, minute: 43, second: 11,\n * given in the local time for the `en-US` locale.\n *\n * ```\n * {{ dateObj | date }} // output is 'Jun 15, 2015'\n * {{ dateObj | date:'medium' }} // output is 'Jun 15, 2015, 9:43:11 PM'\n * {{ dateObj | date:'shortTime' }} // output is '9:43 PM'\n * {{ dateObj | date:'mm:ss' }} // output is '43:11'\n * ```\n *\n * ### Usage example\n *\n * The following component uses a date pipe to display the current date in different formats.\n *\n * ```\n * \\@Component({\n * selector: 'date-pipe',\n * template: `
    \n *

    Today is {{today | date}}

    \n *

    Or if you prefer, {{today | date:'fullDate'}}

    \n *

    The time is {{today | date:'h:mm a z'}}

    \n *
    `\n * })\n * // Get the current date and time as a date-time value.\n * export class DatePipeComponent {\n * today: number = Date.now();\n * }\n * ```\n *\n * \\@publicApi\n */\n// clang-format on\nclass DatePipe {\n /**\n * @param {?} locale\n */\n constructor(locale) {\n this.locale = locale;\n }\n /**\n * @param {?} value The date expression: a `Date` object, a number\n * (milliseconds since UTC epoch), or an ISO string (https://www.w3.org/TR/NOTE-datetime).\n * @param {?=} format The date/time components to include, using predefined options or a\n * custom format string.\n * @param {?=} timezone A timezone offset (such as `'+0430'`), or a standard\n * UTC/GMT or continental US timezone abbreviation.\n * When not supplied, uses the end-user's local system timezone.\n * @param {?=} locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n * See [Setting your app locale](guide/i18n#setting-up-the-locale-of-your-app).\n * @return {?} A date string in the desired format.\n */\n transform(value, format = 'mediumDate', timezone, locale) {\n if (value == null || value === '' || value !== value)\n return null;\n try {\n return formatDate(value, format, locale || this.locale, timezone);\n }\n catch (error) {\n throw invalidPipeArgumentError(DatePipe, error.message);\n }\n }\n}\nDatePipe.decorators = [\n { type: Pipe, args: [{ name: 'date', pure: true },] }\n];\n/** @nocollapse */\nDatePipe.ctorParameters = () => [\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }\n];\nif (false) {\n /**\n * @type {?}\n * @private\n */\n DatePipe.prototype.locale;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/pipes/i18n_plural_pipe.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst _INTERPOLATION_REGEXP = /#/g;\n/**\n * \\@ngModule CommonModule\n * \\@description\n *\n * Maps a value to a string that pluralizes the value according to locale rules.\n *\n * \\@usageNotes\n *\n * ### Example\n *\n * {\\@example common/pipes/ts/i18n_pipe.ts region='I18nPluralPipeComponent'}\n *\n * \\@publicApi\n */\nclass I18nPluralPipe {\n /**\n * @param {?} _localization\n */\n constructor(_localization) {\n this._localization = _localization;\n }\n /**\n * @param {?} value the number to be formatted\n * @param {?} pluralMap an object that mimics the ICU format, see\n * http://userguide.icu-project.org/formatparse/messages.\n * @param {?=} locale a `string` defining the locale to use (uses the current {\\@link LOCALE_ID} by\n * default).\n * @return {?}\n */\n transform(value, pluralMap, locale) {\n if (value == null)\n return '';\n if (typeof pluralMap !== 'object' || pluralMap === null) {\n throw invalidPipeArgumentError(I18nPluralPipe, pluralMap);\n }\n /** @type {?} */\n const key = getPluralCategory(value, Object.keys(pluralMap), this._localization, locale);\n return pluralMap[key].replace(_INTERPOLATION_REGEXP, value.toString());\n }\n}\nI18nPluralPipe.decorators = [\n { type: Pipe, args: [{ name: 'i18nPlural', pure: true },] }\n];\n/** @nocollapse */\nI18nPluralPipe.ctorParameters = () => [\n { type: NgLocalization }\n];\nif (false) {\n /**\n * @type {?}\n * @private\n */\n I18nPluralPipe.prototype._localization;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/pipes/i18n_select_pipe.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * \\@ngModule CommonModule\n * \\@description\n *\n * Generic selector that displays the string that matches the current value.\n *\n * If none of the keys of the `mapping` match the `value`, then the content\n * of the `other` key is returned when present, otherwise an empty string is returned.\n *\n * \\@usageNotes\n *\n * ### Example\n *\n * {\\@example common/pipes/ts/i18n_pipe.ts region='I18nSelectPipeComponent'}\n *\n * \\@publicApi\n */\nclass I18nSelectPipe {\n /**\n * @param {?} value a string to be internationalized.\n * @param {?} mapping an object that indicates the text that should be displayed\n * for different values of the provided `value`.\n * @return {?}\n */\n transform(value, mapping) {\n if (value == null)\n return '';\n if (typeof mapping !== 'object' || typeof value !== 'string') {\n throw invalidPipeArgumentError(I18nSelectPipe, mapping);\n }\n if (mapping.hasOwnProperty(value)) {\n return mapping[value];\n }\n if (mapping.hasOwnProperty('other')) {\n return mapping['other'];\n }\n return '';\n }\n}\nI18nSelectPipe.decorators = [\n { type: Pipe, args: [{ name: 'i18nSelect', pure: true },] }\n];\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/pipes/json_pipe.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * \\@ngModule CommonModule\n * \\@description\n *\n * Converts a value into its JSON-format representation. Useful for debugging.\n *\n * \\@usageNotes\n *\n * The following component uses a JSON pipe to convert an object\n * to JSON format, and displays the string in both formats for comparison.\n *\n * {\\@example common/pipes/ts/json_pipe.ts region='JsonPipe'}\n *\n * \\@publicApi\n */\nclass JsonPipe {\n /**\n * @param {?} value A value of any type to convert into a JSON-format string.\n * @return {?}\n */\n transform(value) { return JSON.stringify(value, null, 2); }\n}\nJsonPipe.decorators = [\n { type: Pipe, args: [{ name: 'json', pure: false },] }\n];\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/pipes/keyvalue_pipe.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @template K, V\n * @param {?} key\n * @param {?} value\n * @return {?}\n */\nfunction makeKeyValuePair(key, value) {\n return { key: key, value: value };\n}\n/**\n * A key value pair.\n * Usually used to represent the key value pairs from a Map or Object.\n *\n * \\@publicApi\n * @record\n * @template K, V\n */\nfunction KeyValue() { }\nif (false) {\n /** @type {?} */\n KeyValue.prototype.key;\n /** @type {?} */\n KeyValue.prototype.value;\n}\n/**\n * \\@ngModule CommonModule\n * \\@description\n *\n * Transforms Object or Map into an array of key value pairs.\n *\n * The output array will be ordered by keys.\n * By default the comparator will be by Unicode point value.\n * You can optionally pass a compareFn if your keys are complex types.\n *\n * \\@usageNotes\n * ### Examples\n *\n * This examples show how an Object or a Map can be iterated by ngFor with the use of this keyvalue\n * pipe.\n *\n * {\\@example common/pipes/ts/keyvalue_pipe.ts region='KeyValuePipe'}\n *\n * \\@publicApi\n */\nclass KeyValuePipe {\n /**\n * @param {?} differs\n */\n constructor(differs) {\n this.differs = differs;\n this.keyValues = [];\n }\n /**\n * @template K, V\n * @param {?} input\n * @param {?=} compareFn\n * @return {?}\n */\n transform(input, compareFn = defaultComparator) {\n if (!input || (!(input instanceof Map) && typeof input !== 'object')) {\n return null;\n }\n if (!this.differ) {\n // make a differ for whatever type we've been passed in\n this.differ = this.differs.find(input).create();\n }\n /** @type {?} */\n const differChanges = this.differ.diff((/** @type {?} */ (input)));\n if (differChanges) {\n this.keyValues = [];\n differChanges.forEachItem((/**\n * @param {?} r\n * @return {?}\n */\n (r) => {\n this.keyValues.push(makeKeyValuePair(r.key, (/** @type {?} */ (r.currentValue))));\n }));\n this.keyValues.sort(compareFn);\n }\n return this.keyValues;\n }\n}\nKeyValuePipe.decorators = [\n { type: Pipe, args: [{ name: 'keyvalue', pure: false },] }\n];\n/** @nocollapse */\nKeyValuePipe.ctorParameters = () => [\n { type: KeyValueDiffers }\n];\nif (false) {\n /**\n * @type {?}\n * @private\n */\n KeyValuePipe.prototype.differ;\n /**\n * @type {?}\n * @private\n */\n KeyValuePipe.prototype.keyValues;\n /**\n * @type {?}\n * @private\n */\n KeyValuePipe.prototype.differs;\n}\n/**\n * @template K, V\n * @param {?} keyValueA\n * @param {?} keyValueB\n * @return {?}\n */\nfunction defaultComparator(keyValueA, keyValueB) {\n /** @type {?} */\n const a = keyValueA.key;\n /** @type {?} */\n const b = keyValueB.key;\n // if same exit with 0;\n if (a === b)\n return 0;\n // make sure that undefined are at the end of the sort.\n if (a === undefined)\n return 1;\n if (b === undefined)\n return -1;\n // make sure that nulls are at the end of the sort.\n if (a === null)\n return 1;\n if (b === null)\n return -1;\n if (typeof a == 'string' && typeof b == 'string') {\n return a < b ? -1 : 1;\n }\n if (typeof a == 'number' && typeof b == 'number') {\n return a - b;\n }\n if (typeof a == 'boolean' && typeof b == 'boolean') {\n return a < b ? -1 : 1;\n }\n // `a` and `b` are of different types. Compare their string values.\n /** @type {?} */\n const aString = String(a);\n /** @type {?} */\n const bString = String(b);\n return aString == bString ? 0 : aString < bString ? -1 : 1;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/pipes/number_pipe.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * \\@ngModule CommonModule\n * \\@description\n *\n * Transforms a number into a string,\n * formatted according to locale rules that determine group sizing and\n * separator, decimal-point character, and other locale-specific\n * configurations.\n *\n * If no parameters are specified, the function rounds off to the nearest value using this\n * [rounding method](https://en.wikibooks.org/wiki/Arithmetic/Rounding).\n * The behavior differs from that of the JavaScript ```Math.round()``` function.\n * In the following case for example, the pipe rounds down where\n * ```Math.round()``` rounds up:\n *\n * ```html\n * -2.5 | number:'1.0-0'\n * > -3\n * Math.round(-2.5)\n * > -2\n * ```\n *\n * @see `formatNumber()`\n *\n * \\@usageNotes\n * The following code shows how the pipe transforms numbers\n * into text strings, according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * ### Example\n *\n * \n *\n * \\@publicApi\n */\nclass DecimalPipe {\n /**\n * @param {?} _locale\n */\n constructor(_locale) {\n this._locale = _locale;\n }\n /**\n * @param {?} value The number to be formatted.\n * @param {?=} digitsInfo Decimal representation options, specified by a string\n * in the following format:
    \n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `0`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `3`.\n * @param {?=} locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n * See [Setting your app locale](guide/i18n#setting-up-the-locale-of-your-app).\n * @return {?}\n */\n transform(value, digitsInfo, locale) {\n if (isEmpty(value))\n return null;\n locale = locale || this._locale;\n try {\n /** @type {?} */\n const num = strToNumber(value);\n return formatNumber(num, locale, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(DecimalPipe, error.message);\n }\n }\n}\nDecimalPipe.decorators = [\n { type: Pipe, args: [{ name: 'number' },] }\n];\n/** @nocollapse */\nDecimalPipe.ctorParameters = () => [\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }\n];\nif (false) {\n /**\n * @type {?}\n * @private\n */\n DecimalPipe.prototype._locale;\n}\n/**\n * \\@ngModule CommonModule\n * \\@description\n *\n * Transforms a number to a percentage\n * string, formatted according to locale rules that determine group sizing and\n * separator, decimal-point character, and other locale-specific\n * configurations.\n *\n * @see `formatPercent()`\n *\n * \\@usageNotes\n * The following code shows how the pipe transforms numbers\n * into text strings, according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * \\@publicApi\n */\nclass PercentPipe {\n /**\n * @param {?} _locale\n */\n constructor(_locale) {\n this._locale = _locale;\n }\n /**\n *\n * @param {?} value The number to be formatted as a percentage.\n * @param {?=} digitsInfo Decimal representation options, specified by a string\n * in the following format:
    \n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `0`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `0`.\n * @param {?=} locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n * See [Setting your app locale](guide/i18n#setting-up-the-locale-of-your-app).\n * @return {?}\n */\n transform(value, digitsInfo, locale) {\n if (isEmpty(value))\n return null;\n locale = locale || this._locale;\n try {\n /** @type {?} */\n const num = strToNumber(value);\n return formatPercent(num, locale, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(PercentPipe, error.message);\n }\n }\n}\nPercentPipe.decorators = [\n { type: Pipe, args: [{ name: 'percent' },] }\n];\n/** @nocollapse */\nPercentPipe.ctorParameters = () => [\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }\n];\nif (false) {\n /**\n * @type {?}\n * @private\n */\n PercentPipe.prototype._locale;\n}\n/**\n * \\@ngModule CommonModule\n * \\@description\n *\n * Transforms a number to a currency string, formatted according to locale rules\n * that determine group sizing and separator, decimal-point character,\n * and other locale-specific configurations.\n *\n * {\\@a currency-code-deprecation}\n *
    \n *\n * **Deprecation notice:**\n *\n * The default currency code is currently always `USD` but this is deprecated from v9.\n *\n * **In v11 the default currency code will be taken from the current locale identified by\n * the `LOCAL_ID` token. See the [i18n guide](guide/i18n#setting-up-the-locale-of-your-app) for\n * more information.**\n *\n * If you need the previous behavior then set it by creating a `DEFAULT_CURRENCY_CODE` provider in\n * your application `NgModule`:\n *\n * ```ts\n * {provide: DEFAULT_CURRENCY_CODE, useValue: 'USD'}\n * ```\n *\n *
    \n *\n * @see `getCurrencySymbol()`\n * @see `formatCurrency()`\n *\n * \\@usageNotes\n * The following code shows how the pipe transforms numbers\n * into text strings, according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * \\@publicApi\n */\nclass CurrencyPipe {\n /**\n * @param {?} _locale\n * @param {?=} _defaultCurrencyCode\n */\n constructor(_locale, _defaultCurrencyCode = 'USD') {\n this._locale = _locale;\n this._defaultCurrencyCode = _defaultCurrencyCode;\n }\n /**\n *\n * @param {?} value The number to be formatted as currency.\n * @param {?=} currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code,\n * such as `USD` for the US dollar and `EUR` for the euro. The default currency code can be\n * configured using the `DEFAULT_CURRENCY_CODE` injection token.\n * @param {?=} display The format for the currency indicator. One of the following:\n * - `code`: Show the code (such as `USD`).\n * - `symbol`(default): Show the symbol (such as `$`).\n * - `symbol-narrow`: Use the narrow symbol for locales that have two symbols for their\n * currency.\n * For example, the Canadian dollar CAD has the symbol `CA$` and the symbol-narrow `$`. If the\n * locale has no narrow symbol, uses the standard symbol for the locale.\n * - String: Use the given string value instead of a code or a symbol.\n * For example, an empty string will suppress the currency & symbol.\n * - Boolean (marked deprecated in v5): `true` for symbol and false for `code`.\n *\n * @param {?=} digitsInfo Decimal representation options, specified by a string\n * in the following format:
    \n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `2`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `2`.\n * If not provided, the number will be formatted with the proper amount of digits,\n * depending on what the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) specifies.\n * For example, the Canadian dollar has 2 digits, whereas the Chilean peso has none.\n * @param {?=} locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n * See [Setting your app locale](guide/i18n#setting-up-the-locale-of-your-app).\n * @return {?}\n */\n transform(value, currencyCode, display = 'symbol', digitsInfo, locale) {\n if (isEmpty(value))\n return null;\n locale = locale || this._locale;\n if (typeof display === 'boolean') {\n if ((/** @type {?} */ (console)) && (/** @type {?} */ (console.warn))) {\n console.warn(`Warning: the currency pipe has been changed in Angular v5. The symbolDisplay option (third parameter) is now a string instead of a boolean. The accepted values are \"code\", \"symbol\" or \"symbol-narrow\".`);\n }\n display = display ? 'symbol' : 'code';\n }\n /** @type {?} */\n let currency = currencyCode || this._defaultCurrencyCode;\n if (display !== 'code') {\n if (display === 'symbol' || display === 'symbol-narrow') {\n currency = getCurrencySymbol(currency, display === 'symbol' ? 'wide' : 'narrow', locale);\n }\n else {\n currency = display;\n }\n }\n try {\n /** @type {?} */\n const num = strToNumber(value);\n return formatCurrency(num, locale, currency, currencyCode, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(CurrencyPipe, error.message);\n }\n }\n}\nCurrencyPipe.decorators = [\n { type: Pipe, args: [{ name: 'currency' },] }\n];\n/** @nocollapse */\nCurrencyPipe.ctorParameters = () => [\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] },\n { type: String, decorators: [{ type: Inject, args: [DEFAULT_CURRENCY_CODE,] }] }\n];\nif (false) {\n /**\n * @type {?}\n * @private\n */\n CurrencyPipe.prototype._locale;\n /**\n * @type {?}\n * @private\n */\n CurrencyPipe.prototype._defaultCurrencyCode;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isEmpty(value) {\n return value == null || value === '' || value !== value;\n}\n/**\n * Transforms a string into a number (if needed).\n * @param {?} value\n * @return {?}\n */\nfunction strToNumber(value) {\n // Convert strings to numbers\n if (typeof value === 'string' && !isNaN(Number(value) - parseFloat(value))) {\n return Number(value);\n }\n if (typeof value !== 'number') {\n throw new Error(`${value} is not a number`);\n }\n return value;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/pipes/slice_pipe.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * \\@ngModule CommonModule\n * \\@description\n *\n * Creates a new `Array` or `String` containing a subset (slice) of the elements.\n *\n * \\@usageNotes\n *\n * All behavior is based on the expected behavior of the JavaScript API `Array.prototype.slice()`\n * and `String.prototype.slice()`.\n *\n * When operating on an `Array`, the returned `Array` is always a copy even when all\n * the elements are being returned.\n *\n * When operating on a blank value, the pipe returns the blank value.\n *\n * ### List Example\n *\n * This `ngFor` example:\n *\n * {\\@example common/pipes/ts/slice_pipe.ts region='SlicePipe_list'}\n *\n * produces the following:\n *\n * ```html\n *
  • b
  • \n *
  • c
  • \n * ```\n *\n * ### String Examples\n *\n * {\\@example common/pipes/ts/slice_pipe.ts region='SlicePipe_string'}\n *\n * \\@publicApi\n */\nclass SlicePipe {\n /**\n * @param {?} value\n * @param {?} start\n * @param {?=} end\n * @return {?}\n */\n transform(value, start, end) {\n if (value == null)\n return value;\n if (!this.supports(value)) {\n throw invalidPipeArgumentError(SlicePipe, value);\n }\n return value.slice(start, end);\n }\n /**\n * @private\n * @param {?} obj\n * @return {?}\n */\n supports(obj) { return typeof obj === 'string' || Array.isArray(obj); }\n}\nSlicePipe.decorators = [\n { type: Pipe, args: [{ name: 'slice', pure: false },] }\n];\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/pipes/index.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A collection of Angular pipes that are likely to be used in each and every application.\n * @type {?}\n */\nconst COMMON_PIPES = [\n AsyncPipe,\n UpperCasePipe,\n LowerCasePipe,\n JsonPipe,\n SlicePipe,\n DecimalPipe,\n PercentPipe,\n TitleCasePipe,\n CurrencyPipe,\n DatePipe,\n I18nPluralPipe,\n I18nSelectPipe,\n KeyValuePipe,\n];\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/common_module.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n// Note: This does not contain the location providers,\n// as they need some platform specific implementations to work.\n/**\n * Exports all the basic Angular directives and pipes,\n * such as `NgIf`, `NgForOf`, `DecimalPipe`, and so on.\n * Re-exported by `BrowserModule`, which is included automatically in the root\n * `AppModule` when you create a new app with the CLI `new` command.\n *\n * * The `providers` options configure the NgModule's injector to provide\n * localization dependencies to members.\n * * The `exports` options make the declared directives and pipes available for import\n * by other NgModules.\n *\n * \\@publicApi\n */\nclass CommonModule {\n}\nCommonModule.decorators = [\n { type: NgModule, args: [{\n declarations: [COMMON_DIRECTIVES, COMMON_PIPES],\n exports: [COMMON_DIRECTIVES, COMMON_PIPES],\n providers: [\n { provide: NgLocalization, useClass: NgLocaleLocalization },\n ],\n },] }\n];\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/platform_id.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** @type {?} */\nconst PLATFORM_BROWSER_ID = 'browser';\n/** @type {?} */\nconst PLATFORM_SERVER_ID = 'server';\n/** @type {?} */\nconst PLATFORM_WORKER_APP_ID = 'browserWorkerApp';\n/** @type {?} */\nconst PLATFORM_WORKER_UI_ID = 'browserWorkerUi';\n/**\n * Returns whether a platform id represents a browser platform.\n * \\@publicApi\n * @param {?} platformId\n * @return {?}\n */\nfunction isPlatformBrowser(platformId) {\n return platformId === PLATFORM_BROWSER_ID;\n}\n/**\n * Returns whether a platform id represents a server platform.\n * \\@publicApi\n * @param {?} platformId\n * @return {?}\n */\nfunction isPlatformServer(platformId) {\n return platformId === PLATFORM_SERVER_ID;\n}\n/**\n * Returns whether a platform id represents a web worker app platform.\n * \\@publicApi\n * @param {?} platformId\n * @return {?}\n */\nfunction isPlatformWorkerApp(platformId) {\n return platformId === PLATFORM_WORKER_APP_ID;\n}\n/**\n * Returns whether a platform id represents a web worker UI platform.\n * \\@publicApi\n * @param {?} platformId\n * @return {?}\n */\nfunction isPlatformWorkerUi(platformId) {\n return platformId === PLATFORM_WORKER_UI_ID;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/version.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * \\@publicApi\n * @type {?}\n */\nconst VERSION = new Version('9.0.7');\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/viewport_scroller.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Defines a scroll position manager. Implemented by `BrowserViewportScroller`.\n *\n * \\@publicApi\n * @abstract\n */\nclass ViewportScroller {\n}\n// De-sugared tree-shakable injection\n// See #23917\n/** @nocollapse */\n/** @nocollapse */ ViewportScroller.ɵprov = ɵɵdefineInjectable({\n token: ViewportScroller,\n providedIn: 'root',\n factory: (/**\n * @nocollapse @return {?}\n */\n () => new BrowserViewportScroller(ɵɵinject(DOCUMENT), window, ɵɵinject(ErrorHandler)))\n});\nif (false) {\n /**\n * @nocollapse\n * @type {?}\n */\n ViewportScroller.ɵprov;\n /**\n * Configures the top offset used when scrolling to an anchor.\n * @abstract\n * @param {?} offset A position in screen coordinates (a tuple with x and y values)\n * or a function that returns the top offset position.\n *\n * @return {?}\n */\n ViewportScroller.prototype.setOffset = function (offset) { };\n /**\n * Retrieves the current scroll position.\n * @abstract\n * @return {?} A position in screen coordinates (a tuple with x and y values).\n */\n ViewportScroller.prototype.getScrollPosition = function () { };\n /**\n * Scrolls to a specified position.\n * @abstract\n * @param {?} position A position in screen coordinates (a tuple with x and y values).\n * @return {?}\n */\n ViewportScroller.prototype.scrollToPosition = function (position) { };\n /**\n * Scrolls to an anchor element.\n * @abstract\n * @param {?} anchor The ID of the anchor element.\n * @return {?}\n */\n ViewportScroller.prototype.scrollToAnchor = function (anchor) { };\n /**\n * Disables automatic scroll restoration provided by the browser.\n * See also [window.history.scrollRestoration\n * info](https://developers.google.com/web/updates/2015/09/history-api-scroll-restoration).\n * @abstract\n * @param {?} scrollRestoration\n * @return {?}\n */\n ViewportScroller.prototype.setHistoryScrollRestoration = function (scrollRestoration) { };\n}\n/**\n * Manages the scroll position for a browser window.\n */\nclass BrowserViewportScroller {\n /**\n * @param {?} document\n * @param {?} window\n * @param {?} errorHandler\n */\n constructor(document, window, errorHandler) {\n this.document = document;\n this.window = window;\n this.errorHandler = errorHandler;\n this.offset = (/**\n * @return {?}\n */\n () => [0, 0]);\n }\n /**\n * Configures the top offset used when scrolling to an anchor.\n * @param {?} offset A position in screen coordinates (a tuple with x and y values)\n * or a function that returns the top offset position.\n *\n * @return {?}\n */\n setOffset(offset) {\n if (Array.isArray(offset)) {\n this.offset = (/**\n * @return {?}\n */\n () => offset);\n }\n else {\n this.offset = offset;\n }\n }\n /**\n * Retrieves the current scroll position.\n * @return {?} The position in screen coordinates.\n */\n getScrollPosition() {\n if (this.supportScrollRestoration()) {\n return [this.window.scrollX, this.window.scrollY];\n }\n else {\n return [0, 0];\n }\n }\n /**\n * Sets the scroll position.\n * @param {?} position The new position in screen coordinates.\n * @return {?}\n */\n scrollToPosition(position) {\n if (this.supportScrollRestoration()) {\n this.window.scrollTo(position[0], position[1]);\n }\n }\n /**\n * Scrolls to an anchor element.\n * @param {?} anchor The ID of the anchor element.\n * @return {?}\n */\n scrollToAnchor(anchor) {\n if (this.supportScrollRestoration()) {\n // Escape anything passed to `querySelector` as it can throw errors and stop the application\n // from working if invalid values are passed.\n if (this.window.CSS && this.window.CSS.escape) {\n anchor = this.window.CSS.escape(anchor);\n }\n else {\n anchor = anchor.replace(/(\\\"|\\'\\ |:|\\.|\\[|\\]|,|=)/g, '\\\\$1');\n }\n try {\n /** @type {?} */\n const elSelectedById = this.document.querySelector(`#${anchor}`);\n if (elSelectedById) {\n this.scrollToElement(elSelectedById);\n return;\n }\n /** @type {?} */\n const elSelectedByName = this.document.querySelector(`[name='${anchor}']`);\n if (elSelectedByName) {\n this.scrollToElement(elSelectedByName);\n return;\n }\n }\n catch (e) {\n this.errorHandler.handleError(e);\n }\n }\n }\n /**\n * Disables automatic scroll restoration provided by the browser.\n * @param {?} scrollRestoration\n * @return {?}\n */\n setHistoryScrollRestoration(scrollRestoration) {\n if (this.supportScrollRestoration()) {\n /** @type {?} */\n const history = this.window.history;\n if (history && history.scrollRestoration) {\n history.scrollRestoration = scrollRestoration;\n }\n }\n }\n /**\n * @private\n * @param {?} el\n * @return {?}\n */\n scrollToElement(el) {\n /** @type {?} */\n const rect = el.getBoundingClientRect();\n /** @type {?} */\n const left = rect.left + this.window.pageXOffset;\n /** @type {?} */\n const top = rect.top + this.window.pageYOffset;\n /** @type {?} */\n const offset = this.offset();\n this.window.scrollTo(left - offset[0], top - offset[1]);\n }\n /**\n * We only support scroll restoration when we can get a hold of window.\n * This means that we do not support this behavior when running in a web worker.\n *\n * Lifting this restriction right now would require more changes in the dom adapter.\n * Since webworkers aren't widely used, we will lift it once RouterScroller is\n * battle-tested.\n * @private\n * @return {?}\n */\n supportScrollRestoration() {\n try {\n return !!this.window && !!this.window.scrollTo;\n }\n catch (_a) {\n return false;\n }\n }\n}\nif (false) {\n /**\n * @type {?}\n * @private\n */\n BrowserViewportScroller.prototype.offset;\n /**\n * @type {?}\n * @private\n */\n BrowserViewportScroller.prototype.document;\n /**\n * @type {?}\n * @private\n */\n BrowserViewportScroller.prototype.window;\n /**\n * @type {?}\n * @private\n */\n BrowserViewportScroller.prototype.errorHandler;\n}\n/**\n * Provides an empty implementation of the viewport scroller. This will\n * live in \\@angular/common as it will be used by both platform-server and platform-webworker.\n */\nclass NullViewportScroller {\n /**\n * Empty implementation\n * @param {?} offset\n * @return {?}\n */\n setOffset(offset) { }\n /**\n * Empty implementation\n * @return {?}\n */\n getScrollPosition() { return [0, 0]; }\n /**\n * Empty implementation\n * @param {?} position\n * @return {?}\n */\n scrollToPosition(position) { }\n /**\n * Empty implementation\n * @param {?} anchor\n * @return {?}\n */\n scrollToAnchor(anchor) { }\n /**\n * Empty implementation\n * @param {?} scrollRestoration\n * @return {?}\n */\n setHistoryScrollRestoration(scrollRestoration) { }\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/src/common.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/public_api.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/index.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { APP_BASE_HREF, AsyncPipe, CommonModule, CurrencyPipe, DOCUMENT, DatePipe, DecimalPipe, FormStyle, FormatWidth, HashLocationStrategy, I18nPluralPipe, I18nSelectPipe, JsonPipe, KeyValuePipe, LOCATION_INITIALIZED, Location, LocationStrategy, LowerCasePipe, NgClass, NgComponentOutlet, NgForOf, NgForOfContext, NgIf, NgIfContext, NgLocaleLocalization, NgLocalization, NgPlural, NgPluralCase, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet, NumberFormatStyle, NumberSymbol, PathLocationStrategy, PercentPipe, PlatformLocation, Plural, SlicePipe, TitleCasePipe, TranslationWidth, UpperCasePipe, VERSION, ViewportScroller, WeekDay, formatCurrency, formatDate, formatNumber, formatPercent, getCurrencySymbol, getLocaleCurrencyCode, getLocaleCurrencyName, getLocaleCurrencySymbol, getLocaleDateFormat, getLocaleDateTimeFormat, getLocaleDayNames, getLocaleDayPeriods, getLocaleEraNames, getLocaleExtraDayPeriodRules, getLocaleExtraDayPeriods, getLocaleFirstDayOfWeek, getLocaleId, getLocaleMonthNames, getLocaleNumberFormat, getLocaleNumberSymbol, getLocalePluralCase, getLocaleTimeFormat, getLocaleWeekEndRange, getNumberOfCurrencyDigits, isPlatformBrowser, isPlatformServer, isPlatformWorkerApp, isPlatformWorkerUi, registerLocaleData, BrowserPlatformLocation as ɵBrowserPlatformLocation, DomAdapter as ɵDomAdapter, NullViewportScroller as ɵNullViewportScroller, PLATFORM_BROWSER_ID as ɵPLATFORM_BROWSER_ID, PLATFORM_SERVER_ID as ɵPLATFORM_SERVER_ID, PLATFORM_WORKER_APP_ID as ɵPLATFORM_WORKER_APP_ID, PLATFORM_WORKER_UI_ID as ɵPLATFORM_WORKER_UI_ID, useBrowserPlatformLocation as ɵangular_packages_common_common_a, createBrowserPlatformLocation as ɵangular_packages_common_common_b, createLocation as ɵangular_packages_common_common_c, provideLocationStrategy as ɵangular_packages_common_common_d, COMMON_DIRECTIVES as ɵangular_packages_common_common_e, COMMON_PIPES as ɵangular_packages_common_common_f, getDOM as ɵgetDOM, parseCookieValue as ɵparseCookieValue, setRootDomAdapter as ɵsetRootDomAdapter };\n//# sourceMappingURL=common.js.map\n","/**\n * @license Angular v9.0.7\n * (c) 2010-2020 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { Injectable, InjectionToken, Inject, PLATFORM_ID, Injector, NgModule } from '@angular/core';\nimport { of, Observable } from 'rxjs';\nimport { concatMap, filter, map } from 'rxjs/operators';\nimport { DOCUMENT, ɵparseCookieValue } from '@angular/common';\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/http/src/backend.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Transforms an `HttpRequest` into a stream of `HttpEvent`s, one of which will likely be a\n * `HttpResponse`.\n *\n * `HttpHandler` is injectable. When injected, the handler instance dispatches requests to the\n * first interceptor in the chain, which dispatches to the second, etc, eventually reaching the\n * `HttpBackend`.\n *\n * In an `HttpInterceptor`, the `HttpHandler` parameter is the next interceptor in the chain.\n *\n * \\@publicApi\n * @abstract\n */\nclass HttpHandler {\n}\nif (false) {\n /**\n * @abstract\n * @param {?} req\n * @return {?}\n */\n HttpHandler.prototype.handle = function (req) { };\n}\n/**\n * A final `HttpHandler` which will dispatch the request via browser HTTP APIs to a backend.\n *\n * Interceptors sit between the `HttpClient` interface and the `HttpBackend`.\n *\n * When injected, `HttpBackend` dispatches requests directly to the backend, without going\n * through the interceptor chain.\n *\n * \\@publicApi\n * @abstract\n */\nclass HttpBackend {\n}\nif (false) {\n /**\n * @abstract\n * @param {?} req\n * @return {?}\n */\n HttpBackend.prototype.handle = function (req) { };\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/http/src/headers.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @record\n */\nfunction Update() { }\nif (false) {\n /** @type {?} */\n Update.prototype.name;\n /** @type {?|undefined} */\n Update.prototype.value;\n /** @type {?} */\n Update.prototype.op;\n}\n/**\n * Represents the header configuration options for an HTTP request.\n * Instances are immutable. Modifying methods return a cloned\n * instance with the change. The original object is never changed.\n *\n * \\@publicApi\n */\nclass HttpHeaders {\n /**\n * Constructs a new HTTP header object with the given values.\n * @param {?=} headers\n */\n constructor(headers) {\n /**\n * Internal map of lowercased header names to the normalized\n * form of the name (the form seen first).\n */\n this.normalizedNames = new Map();\n /**\n * Queued updates to be materialized the next initialization.\n */\n this.lazyUpdate = null;\n if (!headers) {\n this.headers = new Map();\n }\n else if (typeof headers === 'string') {\n this.lazyInit = (/**\n * @return {?}\n */\n () => {\n this.headers = new Map();\n headers.split('\\n').forEach((/**\n * @param {?} line\n * @return {?}\n */\n line => {\n /** @type {?} */\n const index = line.indexOf(':');\n if (index > 0) {\n /** @type {?} */\n const name = line.slice(0, index);\n /** @type {?} */\n const key = name.toLowerCase();\n /** @type {?} */\n const value = line.slice(index + 1).trim();\n this.maybeSetNormalizedName(name, key);\n if (this.headers.has(key)) {\n (/** @type {?} */ (this.headers.get(key))).push(value);\n }\n else {\n this.headers.set(key, [value]);\n }\n }\n }));\n });\n }\n else {\n this.lazyInit = (/**\n * @return {?}\n */\n () => {\n this.headers = new Map();\n Object.keys(headers).forEach((/**\n * @param {?} name\n * @return {?}\n */\n name => {\n /** @type {?} */\n let values = headers[name];\n /** @type {?} */\n const key = name.toLowerCase();\n if (typeof values === 'string') {\n values = [values];\n }\n if (values.length > 0) {\n this.headers.set(key, values);\n this.maybeSetNormalizedName(name, key);\n }\n }));\n });\n }\n }\n /**\n * Checks for existence of a given header.\n *\n * @param {?} name The header name to check for existence.\n *\n * @return {?} True if the header exists, false otherwise.\n */\n has(name) {\n this.init();\n return this.headers.has(name.toLowerCase());\n }\n /**\n * Retrieves the first value of a given header.\n *\n * @param {?} name The header name.\n *\n * @return {?} The value string if the header exists, null otherwise\n */\n get(name) {\n this.init();\n /** @type {?} */\n const values = this.headers.get(name.toLowerCase());\n return values && values.length > 0 ? values[0] : null;\n }\n /**\n * Retrieves the names of the headers.\n *\n * @return {?} A list of header names.\n */\n keys() {\n this.init();\n return Array.from(this.normalizedNames.values());\n }\n /**\n * Retrieves a list of values for a given header.\n *\n * @param {?} name The header name from which to retrieve values.\n *\n * @return {?} A string of values if the header exists, null otherwise.\n */\n getAll(name) {\n this.init();\n return this.headers.get(name.toLowerCase()) || null;\n }\n /**\n * Appends a new value to the existing set of values for a header\n * and returns them in a clone of the original instance.\n *\n * @param {?} name The header name for which to append the values.\n * @param {?} value The value to append.\n *\n * @return {?} A clone of the HTTP headers object with the value appended to the given header.\n */\n append(name, value) {\n return this.clone({ name, value, op: 'a' });\n }\n /**\n * Sets or modifies a value for a given header in a clone of the original instance.\n * If the header already exists, its value is replaced with the given value\n * in the returned object.\n *\n * @param {?} name The header name.\n * @param {?} value The value or values to set or overide for the given header.\n *\n * @return {?} A clone of the HTTP headers object with the newly set header value.\n */\n set(name, value) {\n return this.clone({ name, value, op: 's' });\n }\n /**\n * Deletes values for a given header in a clone of the original instance.\n *\n * @param {?} name The header name.\n * @param {?=} value The value or values to delete for the given header.\n *\n * @return {?} A clone of the HTTP headers object with the given value deleted.\n */\n delete(name, value) {\n return this.clone({ name, value, op: 'd' });\n }\n /**\n * @private\n * @param {?} name\n * @param {?} lcName\n * @return {?}\n */\n maybeSetNormalizedName(name, lcName) {\n if (!this.normalizedNames.has(lcName)) {\n this.normalizedNames.set(lcName, name);\n }\n }\n /**\n * @private\n * @return {?}\n */\n init() {\n if (!!this.lazyInit) {\n if (this.lazyInit instanceof HttpHeaders) {\n this.copyFrom(this.lazyInit);\n }\n else {\n this.lazyInit();\n }\n this.lazyInit = null;\n if (!!this.lazyUpdate) {\n this.lazyUpdate.forEach((/**\n * @param {?} update\n * @return {?}\n */\n update => this.applyUpdate(update)));\n this.lazyUpdate = null;\n }\n }\n }\n /**\n * @private\n * @param {?} other\n * @return {?}\n */\n copyFrom(other) {\n other.init();\n Array.from(other.headers.keys()).forEach((/**\n * @param {?} key\n * @return {?}\n */\n key => {\n this.headers.set(key, (/** @type {?} */ (other.headers.get(key))));\n this.normalizedNames.set(key, (/** @type {?} */ (other.normalizedNames.get(key))));\n }));\n }\n /**\n * @private\n * @param {?} update\n * @return {?}\n */\n clone(update) {\n /** @type {?} */\n const clone = new HttpHeaders();\n clone.lazyInit =\n (!!this.lazyInit && this.lazyInit instanceof HttpHeaders) ? this.lazyInit : this;\n clone.lazyUpdate = (this.lazyUpdate || []).concat([update]);\n return clone;\n }\n /**\n * @private\n * @param {?} update\n * @return {?}\n */\n applyUpdate(update) {\n /** @type {?} */\n const key = update.name.toLowerCase();\n switch (update.op) {\n case 'a':\n case 's':\n /** @type {?} */\n let value = (/** @type {?} */ (update.value));\n if (typeof value === 'string') {\n value = [value];\n }\n if (value.length === 0) {\n return;\n }\n this.maybeSetNormalizedName(update.name, key);\n /** @type {?} */\n const base = (update.op === 'a' ? this.headers.get(key) : undefined) || [];\n base.push(...value);\n this.headers.set(key, base);\n break;\n case 'd':\n /** @type {?} */\n const toDelete = (/** @type {?} */ (update.value));\n if (!toDelete) {\n this.headers.delete(key);\n this.normalizedNames.delete(key);\n }\n else {\n /** @type {?} */\n let existing = this.headers.get(key);\n if (!existing) {\n return;\n }\n existing = existing.filter((/**\n * @param {?} value\n * @return {?}\n */\n value => toDelete.indexOf(value) === -1));\n if (existing.length === 0) {\n this.headers.delete(key);\n this.normalizedNames.delete(key);\n }\n else {\n this.headers.set(key, existing);\n }\n }\n break;\n }\n }\n /**\n * \\@internal\n * @param {?} fn\n * @return {?}\n */\n forEach(fn) {\n this.init();\n Array.from(this.normalizedNames.keys())\n .forEach((/**\n * @param {?} key\n * @return {?}\n */\n key => fn((/** @type {?} */ (this.normalizedNames.get(key))), (/** @type {?} */ (this.headers.get(key))))));\n }\n}\nif (false) {\n /**\n * Internal map of lowercase header names to values.\n * @type {?}\n * @private\n */\n HttpHeaders.prototype.headers;\n /**\n * Internal map of lowercased header names to the normalized\n * form of the name (the form seen first).\n * @type {?}\n * @private\n */\n HttpHeaders.prototype.normalizedNames;\n /**\n * Complete the lazy initialization of this object (needed before reading).\n * @type {?}\n * @private\n */\n HttpHeaders.prototype.lazyInit;\n /**\n * Queued updates to be materialized the next initialization.\n * @type {?}\n * @private\n */\n HttpHeaders.prototype.lazyUpdate;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/http/src/params.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A codec for encoding and decoding parameters in URLs.\n *\n * Used by `HttpParams`.\n *\n * \\@publicApi\n *\n * @record\n */\nfunction HttpParameterCodec() { }\nif (false) {\n /**\n * @param {?} key\n * @return {?}\n */\n HttpParameterCodec.prototype.encodeKey = function (key) { };\n /**\n * @param {?} value\n * @return {?}\n */\n HttpParameterCodec.prototype.encodeValue = function (value) { };\n /**\n * @param {?} key\n * @return {?}\n */\n HttpParameterCodec.prototype.decodeKey = function (key) { };\n /**\n * @param {?} value\n * @return {?}\n */\n HttpParameterCodec.prototype.decodeValue = function (value) { };\n}\n/**\n * Provides encoding and decoding of URL parameter and query-string values.\n *\n * Serializes and parses URL parameter keys and values to encode and decode them.\n * If you pass URL query parameters without encoding,\n * the query parameters can be misinterpreted at the receiving end.\n *\n *\n * \\@publicApi\n */\nclass HttpUrlEncodingCodec {\n /**\n * Encodes a key name for a URL parameter or query-string.\n * @param {?} key The key name.\n * @return {?} The encoded key name.\n */\n encodeKey(key) { return standardEncoding(key); }\n /**\n * Encodes the value of a URL parameter or query-string.\n * @param {?} value The value.\n * @return {?} The encoded value.\n */\n encodeValue(value) { return standardEncoding(value); }\n /**\n * Decodes an encoded URL parameter or query-string key.\n * @param {?} key The encoded key name.\n * @return {?} The decoded key name.\n */\n decodeKey(key) { return decodeURIComponent(key); }\n /**\n * Decodes an encoded URL parameter or query-string value.\n * @param {?} value The encoded value.\n * @return {?} The decoded value.\n */\n decodeValue(value) { return decodeURIComponent(value); }\n}\n/**\n * @param {?} rawParams\n * @param {?} codec\n * @return {?}\n */\nfunction paramParser(rawParams, codec) {\n /** @type {?} */\n const map = new Map();\n if (rawParams.length > 0) {\n /** @type {?} */\n const params = rawParams.split('&');\n params.forEach((/**\n * @param {?} param\n * @return {?}\n */\n (param) => {\n /** @type {?} */\n const eqIdx = param.indexOf('=');\n const [key, val] = eqIdx == -1 ?\n [codec.decodeKey(param), ''] :\n [codec.decodeKey(param.slice(0, eqIdx)), codec.decodeValue(param.slice(eqIdx + 1))];\n /** @type {?} */\n const list = map.get(key) || [];\n list.push(val);\n map.set(key, list);\n }));\n }\n return map;\n}\n/**\n * @param {?} v\n * @return {?}\n */\nfunction standardEncoding(v) {\n return encodeURIComponent(v)\n .replace(/%40/gi, '@')\n .replace(/%3A/gi, ':')\n .replace(/%24/gi, '$')\n .replace(/%2C/gi, ',')\n .replace(/%3B/gi, ';')\n .replace(/%2B/gi, '+')\n .replace(/%3D/gi, '=')\n .replace(/%3F/gi, '?')\n .replace(/%2F/gi, '/');\n}\n/**\n * @record\n */\nfunction Update$1() { }\nif (false) {\n /** @type {?} */\n Update$1.prototype.param;\n /** @type {?|undefined} */\n Update$1.prototype.value;\n /** @type {?} */\n Update$1.prototype.op;\n}\n/**\n * Options used to construct an `HttpParams` instance.\n *\n * \\@publicApi\n * @record\n */\nfunction HttpParamsOptions() { }\nif (false) {\n /**\n * String representation of the HTTP parameters in URL-query-string format.\n * Mutually exclusive with `fromObject`.\n * @type {?|undefined}\n */\n HttpParamsOptions.prototype.fromString;\n /**\n * Object map of the HTTP parameters. Mutually exclusive with `fromString`.\n * @type {?|undefined}\n */\n HttpParamsOptions.prototype.fromObject;\n /**\n * Encoding codec used to parse and serialize the parameters.\n * @type {?|undefined}\n */\n HttpParamsOptions.prototype.encoder;\n}\n/**\n * An HTTP request/response body that represents serialized parameters,\n * per the MIME type `application/x-www-form-urlencoded`.\n *\n * This class is immutable; all mutation operations return a new instance.\n *\n * \\@publicApi\n */\nclass HttpParams {\n /**\n * @param {?=} options\n */\n constructor(options = (/** @type {?} */ ({}))) {\n this.updates = null;\n this.cloneFrom = null;\n this.encoder = options.encoder || new HttpUrlEncodingCodec();\n if (!!options.fromString) {\n if (!!options.fromObject) {\n throw new Error(`Cannot specify both fromString and fromObject.`);\n }\n this.map = paramParser(options.fromString, this.encoder);\n }\n else if (!!options.fromObject) {\n this.map = new Map();\n Object.keys(options.fromObject).forEach((/**\n * @param {?} key\n * @return {?}\n */\n key => {\n /** @type {?} */\n const value = ((/** @type {?} */ (options.fromObject)))[key];\n (/** @type {?} */ (this.map)).set(key, Array.isArray(value) ? value : [value]);\n }));\n }\n else {\n this.map = null;\n }\n }\n /**\n * Reports whether the body includes one or more values for a given parameter.\n * @param {?} param The parameter name.\n * @return {?} True if the parameter has one or more values,\n * false if it has no value or is not present.\n */\n has(param) {\n this.init();\n return (/** @type {?} */ (this.map)).has(param);\n }\n /**\n * Retrieves the first value for a parameter.\n * @param {?} param The parameter name.\n * @return {?} The first value of the given parameter,\n * or `null` if the parameter is not present.\n */\n get(param) {\n this.init();\n /** @type {?} */\n const res = (/** @type {?} */ (this.map)).get(param);\n return !!res ? res[0] : null;\n }\n /**\n * Retrieves all values for a parameter.\n * @param {?} param The parameter name.\n * @return {?} All values in a string array,\n * or `null` if the parameter not present.\n */\n getAll(param) {\n this.init();\n return (/** @type {?} */ (this.map)).get(param) || null;\n }\n /**\n * Retrieves all the parameters for this body.\n * @return {?} The parameter names in a string array.\n */\n keys() {\n this.init();\n return Array.from((/** @type {?} */ (this.map)).keys());\n }\n /**\n * Appends a new value to existing values for a parameter.\n * @param {?} param The parameter name.\n * @param {?} value The new value to add.\n * @return {?} A new body with the appended value.\n */\n append(param, value) { return this.clone({ param, value, op: 'a' }); }\n /**\n * Replaces the value for a parameter.\n * @param {?} param The parameter name.\n * @param {?} value The new value.\n * @return {?} A new body with the new value.\n */\n set(param, value) { return this.clone({ param, value, op: 's' }); }\n /**\n * Removes a given value or all values from a parameter.\n * @param {?} param The parameter name.\n * @param {?=} value The value to remove, if provided.\n * @return {?} A new body with the given value removed, or with all values\n * removed if no value is specified.\n */\n delete(param, value) { return this.clone({ param, value, op: 'd' }); }\n /**\n * Serializes the body to an encoded string, where key-value pairs (separated by `=`) are\n * separated by `&`s.\n * @return {?}\n */\n toString() {\n this.init();\n return this.keys()\n .map((/**\n * @param {?} key\n * @return {?}\n */\n key => {\n /** @type {?} */\n const eKey = this.encoder.encodeKey(key);\n // `a: ['1']` produces `'a=1'`\n // `b: []` produces `''`\n // `c: ['1', '2']` produces `'c=1&c=2'`\n return (/** @type {?} */ ((/** @type {?} */ (this.map)).get(key))).map((/**\n * @param {?} value\n * @return {?}\n */\n value => eKey + '=' + this.encoder.encodeValue(value)))\n .join('&');\n }))\n // filter out empty values because `b: []` produces `''`\n // which results in `a=1&&c=1&c=2` instead of `a=1&c=1&c=2` if we don't\n .filter((/**\n * @param {?} param\n * @return {?}\n */\n param => param !== ''))\n .join('&');\n }\n /**\n * @private\n * @param {?} update\n * @return {?}\n */\n clone(update) {\n /** @type {?} */\n const clone = new HttpParams((/** @type {?} */ ({ encoder: this.encoder })));\n clone.cloneFrom = this.cloneFrom || this;\n clone.updates = (this.updates || []).concat([update]);\n return clone;\n }\n /**\n * @private\n * @return {?}\n */\n init() {\n if (this.map === null) {\n this.map = new Map();\n }\n if (this.cloneFrom !== null) {\n this.cloneFrom.init();\n this.cloneFrom.keys().forEach((/**\n * @param {?} key\n * @return {?}\n */\n key => (/** @type {?} */ (this.map)).set(key, (/** @type {?} */ ((/** @type {?} */ ((/** @type {?} */ (this.cloneFrom)).map)).get(key))))));\n (/** @type {?} */ (this.updates)).forEach((/**\n * @param {?} update\n * @return {?}\n */\n update => {\n switch (update.op) {\n case 'a':\n case 's':\n /** @type {?} */\n const base = (update.op === 'a' ? (/** @type {?} */ (this.map)).get(update.param) : undefined) || [];\n base.push((/** @type {?} */ (update.value)));\n (/** @type {?} */ (this.map)).set(update.param, base);\n break;\n case 'd':\n if (update.value !== undefined) {\n /** @type {?} */\n let base = (/** @type {?} */ (this.map)).get(update.param) || [];\n /** @type {?} */\n const idx = base.indexOf(update.value);\n if (idx !== -1) {\n base.splice(idx, 1);\n }\n if (base.length > 0) {\n (/** @type {?} */ (this.map)).set(update.param, base);\n }\n else {\n (/** @type {?} */ (this.map)).delete(update.param);\n }\n }\n else {\n (/** @type {?} */ (this.map)).delete(update.param);\n break;\n }\n }\n }));\n this.cloneFrom = this.updates = null;\n }\n }\n}\nif (false) {\n /**\n * @type {?}\n * @private\n */\n HttpParams.prototype.map;\n /**\n * @type {?}\n * @private\n */\n HttpParams.prototype.encoder;\n /**\n * @type {?}\n * @private\n */\n HttpParams.prototype.updates;\n /**\n * @type {?}\n * @private\n */\n HttpParams.prototype.cloneFrom;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/http/src/request.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Construction interface for `HttpRequest`s.\n *\n * All values are optional and will override default values if provided.\n * @record\n */\nfunction HttpRequestInit() { }\nif (false) {\n /** @type {?|undefined} */\n HttpRequestInit.prototype.headers;\n /** @type {?|undefined} */\n HttpRequestInit.prototype.reportProgress;\n /** @type {?|undefined} */\n HttpRequestInit.prototype.params;\n /** @type {?|undefined} */\n HttpRequestInit.prototype.responseType;\n /** @type {?|undefined} */\n HttpRequestInit.prototype.withCredentials;\n}\n/**\n * Determine whether the given HTTP method may include a body.\n * @param {?} method\n * @return {?}\n */\nfunction mightHaveBody(method) {\n switch (method) {\n case 'DELETE':\n case 'GET':\n case 'HEAD':\n case 'OPTIONS':\n case 'JSONP':\n return false;\n default:\n return true;\n }\n}\n/**\n * Safely assert whether the given value is an ArrayBuffer.\n *\n * In some execution environments ArrayBuffer is not defined.\n * @param {?} value\n * @return {?}\n */\nfunction isArrayBuffer(value) {\n return typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer;\n}\n/**\n * Safely assert whether the given value is a Blob.\n *\n * In some execution environments Blob is not defined.\n * @param {?} value\n * @return {?}\n */\nfunction isBlob(value) {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n/**\n * Safely assert whether the given value is a FormData instance.\n *\n * In some execution environments FormData is not defined.\n * @param {?} value\n * @return {?}\n */\nfunction isFormData(value) {\n return typeof FormData !== 'undefined' && value instanceof FormData;\n}\n/**\n * An outgoing HTTP request with an optional typed body.\n *\n * `HttpRequest` represents an outgoing request, including URL, method,\n * headers, body, and other request configuration options. Instances should be\n * assumed to be immutable. To modify a `HttpRequest`, the `clone`\n * method should be used.\n *\n * \\@publicApi\n * @template T\n */\nclass HttpRequest {\n /**\n * @param {?} method\n * @param {?} url\n * @param {?=} third\n * @param {?=} fourth\n */\n constructor(method, url, third, fourth) {\n this.url = url;\n /**\n * The request body, or `null` if one isn't set.\n *\n * Bodies are not enforced to be immutable, as they can include a reference to any\n * user-defined data type. However, interceptors should take care to preserve\n * idempotence by treating them as such.\n */\n this.body = null;\n /**\n * Whether this request should be made in a way that exposes progress events.\n *\n * Progress events are expensive (change detection runs on each event) and so\n * they should only be requested if the consumer intends to monitor them.\n */\n this.reportProgress = false;\n /**\n * Whether this request should be sent with outgoing credentials (cookies).\n */\n this.withCredentials = false;\n /**\n * The expected response type of the server.\n *\n * This is used to parse the response appropriately before returning it to\n * the requestee.\n */\n this.responseType = 'json';\n this.method = method.toUpperCase();\n // Next, need to figure out which argument holds the HttpRequestInit\n // options, if any.\n /** @type {?} */\n let options;\n // Check whether a body argument is expected. The only valid way to omit\n // the body argument is to use a known no-body method like GET.\n if (mightHaveBody(this.method) || !!fourth) {\n // Body is the third argument, options are the fourth.\n this.body = (third !== undefined) ? (/** @type {?} */ (third)) : null;\n options = fourth;\n }\n else {\n // No body required, options are the third argument. The body stays null.\n options = (/** @type {?} */ (third));\n }\n // If options have been passed, interpret them.\n if (options) {\n // Normalize reportProgress and withCredentials.\n this.reportProgress = !!options.reportProgress;\n this.withCredentials = !!options.withCredentials;\n // Override default response type of 'json' if one is provided.\n if (!!options.responseType) {\n this.responseType = options.responseType;\n }\n // Override headers if they're provided.\n if (!!options.headers) {\n this.headers = options.headers;\n }\n if (!!options.params) {\n this.params = options.params;\n }\n }\n // If no headers have been passed in, construct a new HttpHeaders instance.\n if (!this.headers) {\n this.headers = new HttpHeaders();\n }\n // If no parameters have been passed in, construct a new HttpUrlEncodedParams instance.\n if (!this.params) {\n this.params = new HttpParams();\n this.urlWithParams = url;\n }\n else {\n // Encode the parameters to a string in preparation for inclusion in the URL.\n /** @type {?} */\n const params = this.params.toString();\n if (params.length === 0) {\n // No parameters, the visible URL is just the URL given at creation time.\n this.urlWithParams = url;\n }\n else {\n // Does the URL already have query parameters? Look for '?'.\n /** @type {?} */\n const qIdx = url.indexOf('?');\n // There are 3 cases to handle:\n // 1) No existing parameters -> append '?' followed by params.\n // 2) '?' exists and is followed by existing query string ->\n // append '&' followed by params.\n // 3) '?' exists at the end of the url -> append params directly.\n // This basically amounts to determining the character, if any, with\n // which to join the URL and parameters.\n /** @type {?} */\n const sep = qIdx === -1 ? '?' : (qIdx < url.length - 1 ? '&' : '');\n this.urlWithParams = url + sep + params;\n }\n }\n }\n /**\n * Transform the free-form body into a serialized format suitable for\n * transmission to the server.\n * @return {?}\n */\n serializeBody() {\n // If no body is present, no need to serialize it.\n if (this.body === null) {\n return null;\n }\n // Check whether the body is already in a serialized form. If so,\n // it can just be returned directly.\n if (isArrayBuffer(this.body) || isBlob(this.body) || isFormData(this.body) ||\n typeof this.body === 'string') {\n return this.body;\n }\n // Check whether the body is an instance of HttpUrlEncodedParams.\n if (this.body instanceof HttpParams) {\n return this.body.toString();\n }\n // Check whether the body is an object or array, and serialize with JSON if so.\n if (typeof this.body === 'object' || typeof this.body === 'boolean' ||\n Array.isArray(this.body)) {\n return JSON.stringify(this.body);\n }\n // Fall back on toString() for everything else.\n return ((/** @type {?} */ (this.body))).toString();\n }\n /**\n * Examine the body and attempt to infer an appropriate MIME type\n * for it.\n *\n * If no such type can be inferred, this method will return `null`.\n * @return {?}\n */\n detectContentTypeHeader() {\n // An empty body has no content type.\n if (this.body === null) {\n return null;\n }\n // FormData bodies rely on the browser's content type assignment.\n if (isFormData(this.body)) {\n return null;\n }\n // Blobs usually have their own content type. If it doesn't, then\n // no type can be inferred.\n if (isBlob(this.body)) {\n return this.body.type || null;\n }\n // Array buffers have unknown contents and thus no type can be inferred.\n if (isArrayBuffer(this.body)) {\n return null;\n }\n // Technically, strings could be a form of JSON data, but it's safe enough\n // to assume they're plain strings.\n if (typeof this.body === 'string') {\n return 'text/plain';\n }\n // `HttpUrlEncodedParams` has its own content-type.\n if (this.body instanceof HttpParams) {\n return 'application/x-www-form-urlencoded;charset=UTF-8';\n }\n // Arrays, objects, and numbers will be encoded as JSON.\n if (typeof this.body === 'object' || typeof this.body === 'number' ||\n Array.isArray(this.body)) {\n return 'application/json';\n }\n // No type could be inferred.\n return null;\n }\n /**\n * @param {?=} update\n * @return {?}\n */\n clone(update = {}) {\n // For method, url, and responseType, take the current value unless\n // it is overridden in the update hash.\n /** @type {?} */\n const method = update.method || this.method;\n /** @type {?} */\n const url = update.url || this.url;\n /** @type {?} */\n const responseType = update.responseType || this.responseType;\n // The body is somewhat special - a `null` value in update.body means\n // whatever current body is present is being overridden with an empty\n // body, whereas an `undefined` value in update.body implies no\n // override.\n /** @type {?} */\n const body = (update.body !== undefined) ? update.body : this.body;\n // Carefully handle the boolean options to differentiate between\n // `false` and `undefined` in the update args.\n /** @type {?} */\n const withCredentials = (update.withCredentials !== undefined) ? update.withCredentials : this.withCredentials;\n /** @type {?} */\n const reportProgress = (update.reportProgress !== undefined) ? update.reportProgress : this.reportProgress;\n // Headers and params may be appended to if `setHeaders` or\n // `setParams` are used.\n /** @type {?} */\n let headers = update.headers || this.headers;\n /** @type {?} */\n let params = update.params || this.params;\n // Check whether the caller has asked to add headers.\n if (update.setHeaders !== undefined) {\n // Set every requested header.\n headers =\n Object.keys(update.setHeaders)\n .reduce((/**\n * @param {?} headers\n * @param {?} name\n * @return {?}\n */\n (headers, name) => headers.set(name, (/** @type {?} */ (update.setHeaders))[name])), headers);\n }\n // Check whether the caller has asked to set params.\n if (update.setParams) {\n // Set every requested param.\n params = Object.keys(update.setParams)\n .reduce((/**\n * @param {?} params\n * @param {?} param\n * @return {?}\n */\n (params, param) => params.set(param, (/** @type {?} */ (update.setParams))[param])), params);\n }\n // Finally, construct the new HttpRequest using the pieces from above.\n return new HttpRequest(method, url, body, {\n params, headers, reportProgress, responseType, withCredentials,\n });\n }\n}\nif (false) {\n /**\n * The request body, or `null` if one isn't set.\n *\n * Bodies are not enforced to be immutable, as they can include a reference to any\n * user-defined data type. However, interceptors should take care to preserve\n * idempotence by treating them as such.\n * @type {?}\n */\n HttpRequest.prototype.body;\n /**\n * Outgoing headers for this request.\n * @type {?}\n */\n HttpRequest.prototype.headers;\n /**\n * Whether this request should be made in a way that exposes progress events.\n *\n * Progress events are expensive (change detection runs on each event) and so\n * they should only be requested if the consumer intends to monitor them.\n * @type {?}\n */\n HttpRequest.prototype.reportProgress;\n /**\n * Whether this request should be sent with outgoing credentials (cookies).\n * @type {?}\n */\n HttpRequest.prototype.withCredentials;\n /**\n * The expected response type of the server.\n *\n * This is used to parse the response appropriately before returning it to\n * the requestee.\n * @type {?}\n */\n HttpRequest.prototype.responseType;\n /**\n * The outgoing HTTP request method.\n * @type {?}\n */\n HttpRequest.prototype.method;\n /**\n * Outgoing URL parameters.\n * @type {?}\n */\n HttpRequest.prototype.params;\n /**\n * The outgoing URL with all URL parameters set.\n * @type {?}\n */\n HttpRequest.prototype.urlWithParams;\n /** @type {?} */\n HttpRequest.prototype.url;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/http/src/response.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @enum {number} */\nconst HttpEventType = {\n /**\n * The request was sent out over the wire.\n */\n Sent: 0,\n /**\n * An upload progress event was received.\n */\n UploadProgress: 1,\n /**\n * The response status code and headers were received.\n */\n ResponseHeader: 2,\n /**\n * A download progress event was received.\n */\n DownloadProgress: 3,\n /**\n * The full response including the body was received.\n */\n Response: 4,\n /**\n * A custom event from an interceptor or a backend.\n */\n User: 5,\n};\nHttpEventType[HttpEventType.Sent] = 'Sent';\nHttpEventType[HttpEventType.UploadProgress] = 'UploadProgress';\nHttpEventType[HttpEventType.ResponseHeader] = 'ResponseHeader';\nHttpEventType[HttpEventType.DownloadProgress] = 'DownloadProgress';\nHttpEventType[HttpEventType.Response] = 'Response';\nHttpEventType[HttpEventType.User] = 'User';\n/**\n * Base interface for progress events.\n *\n * \\@publicApi\n * @record\n */\nfunction HttpProgressEvent() { }\nif (false) {\n /**\n * Progress event type is either upload or download.\n * @type {?}\n */\n HttpProgressEvent.prototype.type;\n /**\n * Number of bytes uploaded or downloaded.\n * @type {?}\n */\n HttpProgressEvent.prototype.loaded;\n /**\n * Total number of bytes to upload or download. Depending on the request or\n * response, this may not be computable and thus may not be present.\n * @type {?|undefined}\n */\n HttpProgressEvent.prototype.total;\n}\n/**\n * A download progress event.\n *\n * \\@publicApi\n * @record\n */\nfunction HttpDownloadProgressEvent() { }\nif (false) {\n /** @type {?} */\n HttpDownloadProgressEvent.prototype.type;\n /**\n * The partial response body as downloaded so far.\n *\n * Only present if the responseType was `text`.\n * @type {?|undefined}\n */\n HttpDownloadProgressEvent.prototype.partialText;\n}\n/**\n * An upload progress event.\n *\n * \\@publicApi\n * @record\n */\nfunction HttpUploadProgressEvent() { }\nif (false) {\n /** @type {?} */\n HttpUploadProgressEvent.prototype.type;\n}\n/**\n * An event indicating that the request was sent to the server. Useful\n * when a request may be retried multiple times, to distinguish between\n * retries on the final event stream.\n *\n * \\@publicApi\n * @record\n */\nfunction HttpSentEvent() { }\nif (false) {\n /** @type {?} */\n HttpSentEvent.prototype.type;\n}\n/**\n * A user-defined event.\n *\n * Grouping all custom events under this type ensures they will be handled\n * and forwarded by all implementations of interceptors.\n *\n * \\@publicApi\n * @record\n * @template T\n */\nfunction HttpUserEvent() { }\nif (false) {\n /** @type {?} */\n HttpUserEvent.prototype.type;\n}\n/**\n * An error that represents a failed attempt to JSON.parse text coming back\n * from the server.\n *\n * It bundles the Error object with the actual response body that failed to parse.\n *\n *\n * @record\n */\nfunction HttpJsonParseError() { }\nif (false) {\n /** @type {?} */\n HttpJsonParseError.prototype.error;\n /** @type {?} */\n HttpJsonParseError.prototype.text;\n}\n/**\n * Base class for both `HttpResponse` and `HttpHeaderResponse`.\n *\n * \\@publicApi\n * @abstract\n */\nclass HttpResponseBase {\n /**\n * Super-constructor for all responses.\n *\n * The single parameter accepted is an initialization hash. Any properties\n * of the response passed there will override the default values.\n * @param {?} init\n * @param {?=} defaultStatus\n * @param {?=} defaultStatusText\n */\n constructor(init, defaultStatus = 200, defaultStatusText = 'OK') {\n // If the hash has values passed, use them to initialize the response.\n // Otherwise use the default values.\n this.headers = init.headers || new HttpHeaders();\n this.status = init.status !== undefined ? init.status : defaultStatus;\n this.statusText = init.statusText || defaultStatusText;\n this.url = init.url || null;\n // Cache the ok value to avoid defining a getter.\n this.ok = this.status >= 200 && this.status < 300;\n }\n}\nif (false) {\n /**\n * All response headers.\n * @type {?}\n */\n HttpResponseBase.prototype.headers;\n /**\n * Response status code.\n * @type {?}\n */\n HttpResponseBase.prototype.status;\n /**\n * Textual description of response status code.\n *\n * Do not depend on this.\n * @type {?}\n */\n HttpResponseBase.prototype.statusText;\n /**\n * URL of the resource retrieved, or null if not available.\n * @type {?}\n */\n HttpResponseBase.prototype.url;\n /**\n * Whether the status code falls in the 2xx range.\n * @type {?}\n */\n HttpResponseBase.prototype.ok;\n /**\n * Type of the response, narrowed to either the full response or the header.\n * @type {?}\n */\n HttpResponseBase.prototype.type;\n}\n/**\n * A partial HTTP response which only includes the status and header data,\n * but no response body.\n *\n * `HttpHeaderResponse` is a `HttpEvent` available on the response\n * event stream, only when progress events are requested.\n *\n * \\@publicApi\n */\nclass HttpHeaderResponse extends HttpResponseBase {\n /**\n * Create a new `HttpHeaderResponse` with the given parameters.\n * @param {?=} init\n */\n constructor(init = {}) {\n super(init);\n this.type = HttpEventType.ResponseHeader;\n }\n /**\n * Copy this `HttpHeaderResponse`, overriding its contents with the\n * given parameter hash.\n * @param {?=} update\n * @return {?}\n */\n clone(update = {}) {\n // Perform a straightforward initialization of the new HttpHeaderResponse,\n // overriding the current parameters with new ones if given.\n return new HttpHeaderResponse({\n headers: update.headers || this.headers,\n status: update.status !== undefined ? update.status : this.status,\n statusText: update.statusText || this.statusText,\n url: update.url || this.url || undefined,\n });\n }\n}\nif (false) {\n /** @type {?} */\n HttpHeaderResponse.prototype.type;\n}\n/**\n * A full HTTP response, including a typed response body (which may be `null`\n * if one was not returned).\n *\n * `HttpResponse` is a `HttpEvent` available on the response event\n * stream.\n *\n * \\@publicApi\n * @template T\n */\nclass HttpResponse extends HttpResponseBase {\n /**\n * Construct a new `HttpResponse`.\n * @param {?=} init\n */\n constructor(init = {}) {\n super(init);\n this.type = HttpEventType.Response;\n this.body = init.body !== undefined ? init.body : null;\n }\n /**\n * @param {?=} update\n * @return {?}\n */\n clone(update = {}) {\n return new HttpResponse({\n body: (update.body !== undefined) ? update.body : this.body,\n headers: update.headers || this.headers,\n status: (update.status !== undefined) ? update.status : this.status,\n statusText: update.statusText || this.statusText,\n url: update.url || this.url || undefined,\n });\n }\n}\nif (false) {\n /**\n * The response body, or `null` if one was not returned.\n * @type {?}\n */\n HttpResponse.prototype.body;\n /** @type {?} */\n HttpResponse.prototype.type;\n}\n/**\n * A response that represents an error or failure, either from a\n * non-successful HTTP status, an error while executing the request,\n * or some other failure which occurred during the parsing of the response.\n *\n * Any error returned on the `Observable` response stream will be\n * wrapped in an `HttpErrorResponse` to provide additional context about\n * the state of the HTTP layer when the error occurred. The error property\n * will contain either a wrapped Error object or the error response returned\n * from the server.\n *\n * \\@publicApi\n */\nclass HttpErrorResponse extends HttpResponseBase {\n /**\n * @param {?} init\n */\n constructor(init) {\n // Initialize with a default status of 0 / Unknown Error.\n super(init, 0, 'Unknown Error');\n this.name = 'HttpErrorResponse';\n /**\n * Errors are never okay, even when the status code is in the 2xx success range.\n */\n this.ok = false;\n // If the response was successful, then this was a parse error. Otherwise, it was\n // a protocol-level failure of some sort. Either the request failed in transit\n // or the server returned an unsuccessful status code.\n if (this.status >= 200 && this.status < 300) {\n this.message = `Http failure during parsing for ${init.url || '(unknown url)'}`;\n }\n else {\n this.message =\n `Http failure response for ${init.url || '(unknown url)'}: ${init.status} ${init.statusText}`;\n }\n this.error = init.error || null;\n }\n}\nif (false) {\n /** @type {?} */\n HttpErrorResponse.prototype.name;\n /** @type {?} */\n HttpErrorResponse.prototype.message;\n /** @type {?} */\n HttpErrorResponse.prototype.error;\n /**\n * Errors are never okay, even when the status code is in the 2xx success range.\n * @type {?}\n */\n HttpErrorResponse.prototype.ok;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/http/src/client.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Constructs an instance of `HttpRequestOptions` from a source `HttpMethodOptions` and\n * the given `body`. This function clones the object and adds the body.\n *\n * Note that the `responseType` *options* value is a String that identifies the\n * single data type of the response.\n * A single overload version of the method handles each response type.\n * The value of `responseType` cannot be a union, as the combined signature could imply.\n *\n * @template T\n * @param {?} options\n * @param {?} body\n * @return {?}\n */\nfunction addBody(options, body) {\n return {\n body,\n headers: options.headers,\n observe: options.observe,\n params: options.params,\n reportProgress: options.reportProgress,\n responseType: options.responseType,\n withCredentials: options.withCredentials,\n };\n}\n/**\n * Performs HTTP requests.\n * This service is available as an injectable class, with methods to perform HTTP requests.\n * Each request method has multiple signatures, and the return type varies based on\n * the signature that is called (mainly the values of `observe` and `responseType`).\n *\n * Note that the `responseType` *options* value is a String that identifies the\n * single data type of the response.\n * A single overload version of the method handles each response type.\n * The value of `responseType` cannot be a union, as the combined signature could imply.\n *\n * \\@usageNotes\n * Sample HTTP requests for the [Tour of Heroes](/tutorial/toh-pt0) application.\n *\n * ### HTTP Request Example\n *\n * ```\n * // GET heroes whose name contains search term\n * searchHeroes(term: string): observable{\n *\n * const params = new HttpParams({fromString: 'name=term'});\n * return this.httpClient.request('GET', this.heroesUrl, {responseType:'json', params});\n * }\n * ```\n * ### JSONP Example\n * ```\n * requestJsonp(url, callback = 'callback') {\n * return this.httpClient.jsonp(this.heroesURL, callback);\n * }\n * ```\n *\n * ### PATCH Example\n * ```\n * // PATCH one of the heroes' name\n * patchHero (id: number, heroName: string): Observable<{}> {\n * const url = `${this.heroesUrl}/${id}`; // PATCH api/heroes/42\n * return this.httpClient.patch(url, {name: heroName}, httpOptions)\n * .pipe(catchError(this.handleError('patchHero')));\n * }\n * ```\n *\n * @see [HTTP Guide](guide/http)\n *\n * \\@publicApi\n */\nclass HttpClient {\n /**\n * @param {?} handler\n */\n constructor(handler) {\n this.handler = handler;\n }\n /**\n * Constructs an observable for a generic HTTP request that, when subscribed,\n * fires the request through the chain of registered interceptors and on to the\n * server.\n *\n * You can pass an `HttpRequest` directly as the only parameter. In this case,\n * the call returns an observable of the raw `HttpEvent` stream.\n *\n * Alternatively you can pass an HTTP method as the first parameter,\n * a URL string as the second, and an options hash containing the request body as the third.\n * See `addBody()`. In this case, the specified `responseType` and `observe` options determine the\n * type of returned observable.\n * * The `responseType` value determines how a successful response body is parsed.\n * * If `responseType` is the default `json`, you can pass a type interface for the resulting\n * object as a type parameter to the call.\n *\n * The `observe` value determines the return type, according to what you are interested in\n * observing.\n * * An `observe` value of events returns an observable of the raw `HttpEvent` stream, including\n * progress events by default.\n * * An `observe` value of response returns an observable of `HttpResponse`,\n * where the `T` parameter depends on the `responseType` and any optionally provided type\n * parameter.\n * * An `observe` value of body returns an observable of `` with the same `T` body type.\n *\n * @param {?} first\n * @param {?=} url\n * @param {?=} options\n * @return {?}\n */\n request(first, url, options = {}) {\n /** @type {?} */\n let req;\n // First, check whether the primary argument is an instance of `HttpRequest`.\n if (first instanceof HttpRequest) {\n // It is. The other arguments must be undefined (per the signatures) and can be\n // ignored.\n req = first;\n }\n else {\n // It's a string, so it represents a URL. Construct a request based on it,\n // and incorporate the remaining arguments (assuming `GET` unless a method is\n // provided.\n // Figure out the headers.\n /** @type {?} */\n let headers = undefined;\n if (options.headers instanceof HttpHeaders) {\n headers = options.headers;\n }\n else {\n headers = new HttpHeaders(options.headers);\n }\n // Sort out parameters.\n /** @type {?} */\n let params = undefined;\n if (!!options.params) {\n if (options.params instanceof HttpParams) {\n params = options.params;\n }\n else {\n params = new HttpParams((/** @type {?} */ ({ fromObject: options.params })));\n }\n }\n // Construct the request.\n req = new HttpRequest(first, (/** @type {?} */ (url)), (options.body !== undefined ? options.body : null), {\n headers,\n params,\n reportProgress: options.reportProgress,\n // By default, JSON is assumed to be returned for all calls.\n responseType: options.responseType || 'json',\n withCredentials: options.withCredentials,\n });\n }\n // Start with an Observable.of() the initial request, and run the handler (which\n // includes all interceptors) inside a concatMap(). This way, the handler runs\n // inside an Observable chain, which causes interceptors to be re-run on every\n // subscription (this also makes retries re-run the handler, including interceptors).\n /** @type {?} */\n const events$ = of(req).pipe(concatMap((/**\n * @param {?} req\n * @return {?}\n */\n (req) => this.handler.handle(req))));\n // If coming via the API signature which accepts a previously constructed HttpRequest,\n // the only option is to get the event stream. Otherwise, return the event stream if\n // that is what was requested.\n if (first instanceof HttpRequest || options.observe === 'events') {\n return events$;\n }\n // The requested stream contains either the full response or the body. In either\n // case, the first step is to filter the event stream to extract a stream of\n // responses(s).\n /** @type {?} */\n const res$ = (/** @type {?} */ (events$.pipe(filter((/**\n * @param {?} event\n * @return {?}\n */\n (event) => event instanceof HttpResponse)))));\n // Decide which stream to return.\n switch (options.observe || 'body') {\n case 'body':\n // The requested stream is the body. Map the response stream to the response\n // body. This could be done more simply, but a misbehaving interceptor might\n // transform the response body into a different format and ignore the requested\n // responseType. Guard against this by validating that the response is of the\n // requested type.\n switch (req.responseType) {\n case 'arraybuffer':\n return res$.pipe(map((/**\n * @param {?} res\n * @return {?}\n */\n (res) => {\n // Validate that the body is an ArrayBuffer.\n if (res.body !== null && !(res.body instanceof ArrayBuffer)) {\n throw new Error('Response is not an ArrayBuffer.');\n }\n return res.body;\n })));\n case 'blob':\n return res$.pipe(map((/**\n * @param {?} res\n * @return {?}\n */\n (res) => {\n // Validate that the body is a Blob.\n if (res.body !== null && !(res.body instanceof Blob)) {\n throw new Error('Response is not a Blob.');\n }\n return res.body;\n })));\n case 'text':\n return res$.pipe(map((/**\n * @param {?} res\n * @return {?}\n */\n (res) => {\n // Validate that the body is a string.\n if (res.body !== null && typeof res.body !== 'string') {\n throw new Error('Response is not a string.');\n }\n return res.body;\n })));\n case 'json':\n default:\n // No validation needed for JSON responses, as they can be of any type.\n return res$.pipe(map((/**\n * @param {?} res\n * @return {?}\n */\n (res) => res.body)));\n }\n case 'response':\n // The response stream was requested directly, so return it.\n return res$;\n default:\n // Guard against new future observe types being added.\n throw new Error(`Unreachable: unhandled observe type ${options.observe}}`);\n }\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `DELETE` request to execute on the server. See the individual overloads for\n * details on the return type.\n *\n * @param {?} url The endpoint URL.\n * @param {?=} options The HTTP options to send with the request.\n *\n * @return {?}\n */\n delete(url, options = {}) {\n return this.request('DELETE', url, (/** @type {?} */ (options)));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `GET` request to execute on the server. See the individual overloads for\n * details on the return type.\n * @param {?} url\n * @param {?=} options\n * @return {?}\n */\n get(url, options = {}) {\n return this.request('GET', url, (/** @type {?} */ (options)));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `HEAD` request to execute on the server. The `HEAD` method returns\n * meta information about the resource without transferring the\n * resource itself. See the individual overloads for\n * details on the return type.\n * @param {?} url\n * @param {?=} options\n * @return {?}\n */\n head(url, options = {}) {\n return this.request('HEAD', url, (/** @type {?} */ (options)));\n }\n /**\n * Constructs an `Observable` that, when subscribed, causes a request with the special method\n * `JSONP` to be dispatched via the interceptor pipeline.\n * The [JSONP pattern](https://en.wikipedia.org/wiki/JSONP) works around limitations of certain\n * API endpoints that don't support newer,\n * and preferable [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) protocol.\n * JSONP treats the endpoint API as a JavaScript file and tricks the browser to process the\n * requests even if the API endpoint is not located on the same domain (origin) as the client-side\n * application making the request.\n * The endpoint API must support JSONP callback for JSONP requests to work.\n * The resource API returns the JSON response wrapped in a callback function.\n * You can pass the callback function name as one of the query parameters.\n * Note that JSONP requests can only be used with `GET` requests.\n *\n * @template T\n * @param {?} url The resource URL.\n * @param {?} callbackParam The callback function name.\n *\n * @return {?}\n */\n jsonp(url, callbackParam) {\n return this.request('JSONP', url, {\n params: new HttpParams().append(callbackParam, 'JSONP_CALLBACK'),\n observe: 'body',\n responseType: 'json',\n });\n }\n /**\n * Constructs an `Observable` that, when subscribed, causes the configured\n * `OPTIONS` request to execute on the server. This method allows the client\n * to determine the supported HTTP methods and other capabilites of an endpoint,\n * without implying a resource action. See the individual overloads for\n * details on the return type.\n * @param {?} url\n * @param {?=} options\n * @return {?}\n */\n options(url, options = {}) {\n return this.request('OPTIONS', url, (/** @type {?} */ (options)));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `PATCH` request to execute on the server. See the individual overloads for\n * details on the return type.\n * @param {?} url\n * @param {?} body\n * @param {?=} options\n * @return {?}\n */\n patch(url, body, options = {}) {\n return this.request('PATCH', url, addBody(options, body));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `POST` request to execute on the server. The server responds with the location of\n * the replaced resource. See the individual overloads for\n * details on the return type.\n * @param {?} url\n * @param {?} body\n * @param {?=} options\n * @return {?}\n */\n post(url, body, options = {}) {\n return this.request('POST', url, addBody(options, body));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `PUT` request to execute on the server. The `PUT` method replaces an existing resource\n * with a new set of values.\n * See the individual overloads for details on the return type.\n * @param {?} url\n * @param {?} body\n * @param {?=} options\n * @return {?}\n */\n put(url, body, options = {}) {\n return this.request('PUT', url, addBody(options, body));\n }\n}\nHttpClient.decorators = [\n { type: Injectable }\n];\n/** @nocollapse */\nHttpClient.ctorParameters = () => [\n { type: HttpHandler }\n];\nif (false) {\n /**\n * @type {?}\n * @private\n */\n HttpClient.prototype.handler;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/http/src/interceptor.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Intercepts and handles an `HttpRequest` or `HttpResponse`.\n *\n * Most interceptors transform the outgoing request before passing it to the\n * next interceptor in the chain, by calling `next.handle(transformedReq)`.\n * An interceptor may transform the\n * response event stream as well, by applying additional RxJS operators on the stream\n * returned by `next.handle()`.\n *\n * More rarely, an interceptor may handle the request entirely,\n * and compose a new event stream instead of invoking `next.handle()`. This is an\n * acceptable behavior, but keep in mind that further interceptors will be skipped entirely.\n *\n * It is also rare but valid for an interceptor to return multiple responses on the\n * event stream for a single request.\n *\n * \\@publicApi\n *\n * @see [HTTP Guide](guide/http#intercepting-requests-and-responses)\n *\n * \\@usageNotes\n *\n * To use the same instance of `HttpInterceptors` for the entire app, import the `HttpClientModule`\n * only in your `AppModule`, and add the interceptors to the root application injector .\n * If you import `HttpClientModule` multiple times across different modules (for example, in lazy\n * loading modules), each import creates a new copy of the `HttpClientModule`, which overwrites the interceptors\n * provided in the root module.\n *\n * @record\n */\nfunction HttpInterceptor() { }\nif (false) {\n /**\n * Identifies and handles a given HTTP request.\n * @param {?} req The outgoing request object to handle.\n * @param {?} next The next interceptor in the chain, or the backend\n * if no interceptors remain in the chain.\n * @return {?} An observable of the event stream.\n */\n HttpInterceptor.prototype.intercept = function (req, next) { };\n}\n/**\n * `HttpHandler` which applies an `HttpInterceptor` to an `HttpRequest`.\n *\n *\n */\nclass HttpInterceptorHandler {\n /**\n * @param {?} next\n * @param {?} interceptor\n */\n constructor(next, interceptor) {\n this.next = next;\n this.interceptor = interceptor;\n }\n /**\n * @param {?} req\n * @return {?}\n */\n handle(req) {\n return this.interceptor.intercept(req, this.next);\n }\n}\nif (false) {\n /**\n * @type {?}\n * @private\n */\n HttpInterceptorHandler.prototype.next;\n /**\n * @type {?}\n * @private\n */\n HttpInterceptorHandler.prototype.interceptor;\n}\n/**\n * A multi-provider token that represents the array of registered\n * `HttpInterceptor` objects.\n *\n * \\@publicApi\n * @type {?}\n */\nconst HTTP_INTERCEPTORS = new InjectionToken('HTTP_INTERCEPTORS');\nclass NoopInterceptor {\n /**\n * @param {?} req\n * @param {?} next\n * @return {?}\n */\n intercept(req, next) {\n return next.handle(req);\n }\n}\nNoopInterceptor.decorators = [\n { type: Injectable }\n];\n\n/**\n * @fileoverview added by tsickle\n * Generated from: packages/common/http/src/jsonp.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n// Every request made through JSONP needs a callback name that's unique across the\n// whole page. Each request is assigned an id and the callback name is constructed\n// from that. The next id to be assigned is tracked in a global variable here that\n// is shared among all applications on the page.\n/** @type {?} */\nlet nextRequestId = 0;\n// Error text given when a JSONP script is injected, but doesn't invoke the callback\n// passed in its URL.\n/** @type {?} */\nconst JSONP_ERR_NO_CALLBACK = 'JSONP injected script did not invoke callback.';\n// Error text given when a request is passed to the JsonpClientBackend that doesn't\n// have a request method JSONP.\n/** @type {?} */\nconst JSONP_ERR_WRONG_METHOD = 'JSONP requests must use JSONP request method.';\n/** @type {?} */\nconst JSONP_ERR_WRONG_RESPONSE_TYPE = 'JSONP requests must use Json response type.';\n/**\n * DI token/abstract type representing a map of JSONP callbacks.\n *\n * In the browser, this should always be the `window` object.\n *\n *\n * @abstract\n */\nclass JsonpCallbackContext {\n}\n/**\n * Processes an `HttpRequest` with the JSONP method,\n * by performing JSONP style requests.\n * @see `HttpHandler`\n * @see `HttpXhrBackend`\n *\n * \\@publicApi\n */\nclass JsonpClientBackend {\n /**\n * @param {?} callbackMap\n * @param {?} document\n */\n constructor(callbackMap, document) {\n this.callbackMap = callbackMap;\n this.document = document;\n }\n /**\n * Get the name of the next callback method, by incrementing the global `nextRequestId`.\n * @private\n * @return {?}\n */\n nextCallback() { return `ng_jsonp_callback_${nextRequestId++}`; }\n /**\n * Processes a JSONP request and returns an event stream of the results.\n * @param {?} req The request object.\n * @return {?} An observable of the response events.\n *\n */\n handle(req) {\n // Firstly, check both the method and response type. If either doesn't match\n // then the request was improperly routed here and cannot be handled.\n if (req.method !== 'JSONP') {\n throw new Error(JSONP_ERR_WRONG_METHOD);\n }\n else if (req.responseType !== 'json') {\n throw new Error(JSONP_ERR_WRONG_RESPONSE_TYPE);\n }\n // Everything else happens inside the Observable boundary.\n return new Observable((/**\n * @param {?} observer\n * @return {?}\n */\n (observer) => {\n // The first step to make a request is to generate the callback name, and replace the\n // callback placeholder in the URL with the name. Care has to be taken here to ensure\n // a trailing &, if matched, gets inserted back into the URL in the correct place.\n /** @type {?} */\n const callback = this.nextCallback();\n /** @type {?} */\n const url = req.urlWithParams.replace(/=JSONP_CALLBACK(&|$)/, `=${callback}$1`);\n // Construct the ' + '');\n printWindow.document.close();\n printWindow.focus();\n // tslint:disable-next-line\n let interval = setInterval(() => {\n if (printWindow.ready) {\n printWindow.print();\n printWindow.close();\n clearInterval(interval);\n }\n }, 500);\n return printWindow;\n}\n/**\n * Function to normalize the units applied to the element.\n * @param {number|string} value\n * @return {string} result\n * @private\n */\nfunction formatUnit(value) {\n let result = value + '';\n if (result === 'auto' || result.indexOf('%') !== -1 || result.indexOf('px') !== -1) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n * @return {boolean} result\n * @private\n */\nfunction enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n * @return {boolean} result\n * @private\n */\nfunction isBlazor() {\n return isBlazorPlatform;\n}\n/**\n * Function to convert xPath to DOM element in blazor platform\n * @return {HTMLElement} result\n * @param {HTMLElement | object} element\n * @private\n */\nfunction getElement(element) {\n let xPath = 'xPath';\n if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[xPath])) {\n return document.evaluate(element[xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n return element;\n}\n/**\n * Function to fetch the Instances of a HTML element for the given component.\n * @param {string | HTMLElement} element\n * @param {any} component\n * @return {Object} inst\n * @private\n */\n// tslint:disable-next-line\nfunction getInstance(element, component) {\n // tslint:disable-next-line:no-any\n let elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[instances]) {\n for (let inst of elem[instances]) {\n if (inst instanceof component) {\n return inst;\n }\n }\n }\n return null;\n}\n/**\n * Function to add instances for the given element.\n * @param {string | HTMLElement} element\n * @param {Object} instance\n * @return {void}\n * @private\n */\nfunction addInstance(element, instance) {\n // tslint:disable-next-line:no-any\n let elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[instances]) {\n elem[instances].push(instance);\n }\n else {\n elem[instances] = [instance];\n }\n}\n/**\n * Function to generate the unique id.\n * @return {any}\n * @private\n */\n// tslint:disable-next-line:no-any\nfunction uniqueID() {\n // tslint:disable-next-line:no-any\n if ((typeof window) === 'undefined') {\n return;\n }\n // tslint:disable-next-line:no-any\n let num = new Uint16Array(5);\n let intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\nfunction combineArray(num) {\n let ret = '';\n for (let i = 0; i < 5; i++) {\n ret += (i ? ',' : '') + num[i];\n }\n return ret;\n}\n\n/**\n * Parser\n */\nconst defaultNumberingSystem = {\n 'latn': {\n '_digits': '0123456789',\n '_type': 'numeric'\n }\n};\nconst defaultNumberSymbols = {\n 'decimal': '.',\n 'group': ',',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'exponential': 'E'\n};\nconst latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n/**\n * Interface for parser base\n * @private\n */\nclass ParserBase {\n /**\n * Returns the cldr object for the culture specifies\n * @param {Object} obj - Specifies the object from which culture object to be acquired.\n * @param {string} cName - Specifies the culture name.\n * @returns {Object}\n */\n static getMainObject(obj, cName) {\n let value = isBlazor() ? cName : 'main.' + cName;\n return getValue(value, obj);\n }\n /**\n * Returns the numbering system object from given cldr data.\n * @param {Object} obj - Specifies the object from which number system is acquired.\n * @returns {Object}\n */\n static getNumberingSystem(obj) {\n return getValue('supplemental.numberingSystems', obj) || this.numberingSystems;\n }\n /**\n * Returns the reverse of given object keys or keys specified.\n * @param {Object} prop - Specifies the object to be reversed.\n * @param {number[]} keys - Optional parameter specifies the custom keyList for reversal.\n * @returns {Object}\n */\n static reverseObject(prop, keys) {\n let propKeys = keys || Object.keys(prop);\n let res = {};\n for (let key of propKeys) {\n /* tslint:disable no-any */\n if (!res.hasOwnProperty(prop[key])) {\n res[prop[key]] = key;\n }\n }\n return res;\n }\n /**\n * Returns the symbol regex by skipping the escape sequence.\n * @param {string[]} props - Specifies the array values to be skipped.\n * @returns {RegExp}\n */\n static getSymbolRegex(props) {\n let regexStr = props.map((str) => {\n return str.replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, '\\\\$1');\n }).join('|');\n return new RegExp(regexStr, 'g');\n }\n static getSymbolMatch(prop) {\n let matchKeys = Object.keys(defaultNumberSymbols);\n let ret = {};\n for (let key of matchKeys) {\n ret[prop[key]] = defaultNumberSymbols[key];\n }\n return ret;\n }\n /**\n * Returns regex string for provided value\n * @param {string} val\n * @returns {string}\n */\n static constructRegex(val) {\n let len = val.length;\n let ret = '';\n for (let i = 0; i < len; i++) {\n if (i !== len - 1) {\n ret += val[i] + '|';\n }\n else {\n ret += val[i];\n }\n }\n return ret;\n }\n /**\n * Returns the replaced value of matching regex and obj mapper.\n * @param {string} value - Specifies the values to be replaced.\n * @param {RegExp} regex - Specifies the regex to search.\n * @param {Object} obj - Specifies the object matcher to be replace value parts.\n * @returns {string}\n */\n static convertValueParts(value, regex, obj) {\n return value.replace(regex, (str) => {\n return obj[str];\n });\n }\n /**\n * Returns default numbering system object for formatting from cldr data\n * @param {Object} obj\n * @returns {NumericObject}\n */\n static getDefaultNumberingSystem(obj) {\n let ret = {};\n ret.obj = getValue('numbers', obj);\n ret.nSystem = getValue('defaultNumberingSystem', ret.obj);\n return ret;\n }\n /**\n * Returns the replaced value of matching regex and obj mapper.\n */\n static getCurrentNumericOptions(curObj, numberSystem, needSymbols, blazorMode) {\n let ret = {};\n let cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem) || blazorMode) {\n let digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n ret.numericPair = this.reverseObject(digits, latnNumberSystem);\n ret.numberParseRegex = new RegExp(this.constructRegex(digits), 'g');\n ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']';\n if (needSymbols) {\n ret.numericRegex = digits[0] + '-' + digits[9];\n ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem);\n ret.numberSystem = cur.nSystem;\n }\n }\n }\n return ret;\n }\n /**\n * Returns number mapper object for the provided cldr data\n * @param {Object} curObj\n * @param {Object} numberSystem\n * @param {boolean} isNumber\n * @returns {NumberMapper}\n */\n static getNumberMapper(curObj, numberSystem, isNumber) {\n let ret = { mapper: {} };\n let cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem)) {\n ret.numberSystem = cur.nSystem;\n ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols);\n let digits = getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n for (let i of latnNumberSystem) {\n ret.mapper[i] = digits[i];\n }\n }\n }\n return ret;\n }\n}\nParserBase.nPair = 'numericPair';\nParserBase.nRegex = 'numericRegex';\nParserBase.numberingSystems = defaultNumberingSystem;\n/**\n * @private\n */\nconst blazorCurrencyData = {\n 'DJF': 'Fdj',\n 'ERN': 'Nfk',\n 'ETB': 'Br',\n 'NAD': '$',\n 'ZAR': 'R',\n 'XAF': 'FCFA',\n 'GHS': 'GH₵',\n 'XDR': 'XDR',\n 'AED': 'د.إ.‏',\n 'BHD': 'د.ب.‏',\n 'DZD': 'د.ج.‏',\n 'EGP': 'ج.م.‏',\n 'ILS': '₪',\n 'IQD': 'د.ع.‏',\n 'JOD': 'د.ا.‏',\n 'KMF': 'CF',\n 'KWD': 'د.ك.‏',\n 'LBP': 'ل.ل.‏',\n 'LYD': 'د.ل.‏',\n 'MAD': 'د.م.‏',\n 'MRU': 'أ.م.',\n 'OMR': 'ر.ع.‏',\n 'QAR': 'ر.ق.‏',\n 'SAR': 'ر.س.‏',\n 'SDG': 'ج.س.',\n 'SOS': 'S',\n 'SSP': '£',\n 'SYP': 'ل.س.‏',\n 'TND': 'د.ت.‏',\n 'YER': 'ر.ي.‏',\n 'CLP': '$',\n 'INR': '₹',\n 'TZS': 'TSh',\n 'EUR': '€',\n 'AZN': '₼',\n 'RUB': '₽',\n 'BYN': 'Br',\n 'ZMW': 'K',\n 'BGN': 'лв.',\n 'NGN': '₦',\n 'XOF': 'CFA',\n 'BDT': '৳',\n 'CNY': '¥',\n 'BAM': 'КМ',\n 'UGX': 'USh',\n 'USD': '$',\n 'CZK': 'Kč',\n 'GBP': '£',\n 'DKK': 'kr.',\n 'KES': 'Ksh',\n 'CHF': 'CHF',\n 'MVR': 'ރ.',\n 'BTN': 'Nu.',\n 'XCD': 'EC$',\n 'AUD': '$',\n 'BBD': '$',\n 'BIF': 'FBu',\n 'BMD': '$',\n 'BSD': '$',\n 'BWP': 'P',\n 'BZD': '$',\n 'CAD': '$',\n 'NZD': '$',\n 'FJD': '$',\n 'FKP': '£',\n 'GIP': '£',\n 'GMD': 'D',\n 'GYD': '$',\n 'HKD': '$',\n 'IDR': 'Rp',\n 'JMD': '$',\n 'KYD': '$',\n 'LRD': '$',\n 'MGA': 'Ar',\n 'MOP': 'MOP$',\n 'MUR': 'Rs',\n 'MWK': 'MK',\n 'MYR': 'RM',\n 'PGK': 'K',\n 'PHP': '₱',\n 'PKR': 'Rs',\n 'RWF': 'RF',\n 'SBD': '$',\n 'SCR': 'SR',\n 'SEK': 'kr',\n 'SGD': '$',\n 'SHP': '£',\n 'SLL': 'Le',\n 'ANG': 'NAf.',\n 'SZL': 'E',\n 'TOP': 'T$',\n 'TTD': '$',\n 'VUV': 'VT',\n 'WST': 'WS$',\n 'ARS': '$',\n 'BOB': 'Bs',\n 'BRL': 'R$',\n 'COP': '$',\n 'CRC': '₡',\n 'CUP': '$',\n 'DOP': '$',\n 'GTQ': 'Q',\n 'HNL': 'L',\n 'MXN': '$',\n 'NIO': 'C$',\n 'PAB': 'B/.',\n 'PEN': 'S/',\n 'PYG': '₲',\n 'UYU': '$',\n 'VES': 'Bs.S',\n 'IRR': 'ريال',\n 'GNF': 'FG',\n 'CDF': 'FC',\n 'HTG': 'G',\n 'XPF': 'FCFP',\n 'HRK': 'kn',\n 'HUF': 'Ft',\n 'AMD': '֏',\n 'ISK': 'kr',\n 'JPY': '¥',\n 'GEL': '₾',\n 'CVE': '​',\n 'KZT': '₸',\n 'KHR': '៛',\n 'KPW': '₩',\n 'KRW': '₩',\n 'KGS': 'сом',\n 'AOA': 'Kz',\n 'LAK': '₭',\n 'MZN': 'MTn',\n 'MKD': 'ден',\n 'MNT': '₮',\n 'BND': '$',\n 'MMK': 'K',\n 'NOK': 'kr',\n 'NPR': 'रु',\n 'AWG': 'Afl.',\n 'SRD': '$',\n 'PLN': 'zł',\n 'AFN': '؋',\n 'STN': 'Db',\n 'MDL': 'L',\n 'RON': 'lei',\n 'UAH': '₴',\n 'LKR': 'රු.',\n 'ALL': 'Lekë',\n 'RSD': 'дин.',\n 'TJS': 'смн',\n 'THB': '฿',\n 'TMT': 'm.',\n 'TRY': '₺',\n 'UZS': 'сўм',\n 'VND': '₫',\n 'TWD': 'NT$'\n};\nfunction getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}\n\n/***\n * Hijri parser\n */\nvar HijriParser;\n(function (HijriParser) {\n /* tslint:disable */\n const dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990, 29019, 29049, 29078, 29108, 29137, 29167,\n 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522, 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759,\n 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053, 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348,\n 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585, 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939,\n 30968, 30998, 31027, 31057, 31086, 31116, 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530,\n 31559, 31589, 31618, 31648, 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120,\n 32150, 32180, 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711,\n 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243, 33272, 33302,\n 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775, 33804, 33834, 33863, 33893,\n 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306, 34336, 34365, 34395, 34424, 34454, 34483,\n 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837, 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074,\n 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370, 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665,\n 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901, 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254,\n 36284, 36314, 36343, 36373, 36403, 36433, 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845,\n 36875, 36904, 36934, 36963, 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436,\n 37465, 37495, 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027,\n 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558, 38587, 38617,\n 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089, 39118, 39148, 39178, 39208,\n 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621, 39650, 39680, 39709, 39739, 39768, 39798,\n 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153, 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389,\n 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685, 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980,\n 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216, 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570,\n 41599, 41629, 41658, 41688, 41718, 41748, 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161,\n 42190, 42220, 42249, 42279, 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751,\n 42780, 42810, 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342,\n 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873, 43903, 43932,\n 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405, 44434, 44464, 44493, 44523,\n 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936, 44966, 44996, 45025, 45055, 45084, 45114,\n 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468, 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704,\n 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999, 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295,\n 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531, 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885,\n 46915, 46944, 46974, 47003, 47033, 47063, 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476,\n 47506, 47535, 47565, 47594, 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066,\n 48096, 48125, 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657,\n 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189, 49218, 49248,\n 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720, 49749, 49779, 49809, 49838,\n 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252, 50281, 50311, 50340, 50370, 50400, 50429,\n 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784, 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019,\n 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315, 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611,\n 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846, 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200,\n 52230, 52260, 52290, 52319, 52349, 52379, 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792,\n 52822, 52851, 52881, 52910, 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383,\n 53412, 53441, 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973,\n 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505, 54535, 54564,\n 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036, 55066, 55095, 55125, 55154,\n 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567, 55597, 55627, 55657, 55686, 55716, 55745,\n 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100, 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335,\n 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631, 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926,\n 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162, 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517,\n 57546, 57576, 57605, 57634, 57664, 57694, 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107,\n 58137, 58167, 58196, 58226, 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698,\n 58727, 58757, 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288,\n 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820, 59850, 59879,\n 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352, 60381, 60411, 60440, 60469,\n 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883, 60912, 60942, 60972, 61002, 61031, 61061,\n 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415, 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651,\n 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947, 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242,\n 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478, 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832,\n 62862, 62891, 62921, 62950, 62980, 63009, 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423,\n 63453, 63482, 63512, 63541, 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014,\n 64043, 64073, 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603,\n 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136, 65166, 65195,\n 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667, 65697, 65726, 65755, 65785,\n 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199, 66228, 66258, 66287, 66317, 66346, 66376,\n 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730, 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967,\n 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262, 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557,\n 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793, 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148,\n 68177, 68207, 68236, 68266, 68295, 68325, 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738,\n 68768, 68797, 68827, 68857, 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330,\n 69359, 69388, 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919,\n 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451, 70481, 70510,\n 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983, 71013, 71042, 71071, 71101,\n 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514, 71543, 71573, 71602, 71632, 71662, 71691,\n 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046, 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282,\n 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577, 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872,\n 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109, 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464,\n 73493, 73523, 73552, 73581, 73611, 73640, 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053,\n 74083, 74113, 74142, 74172, 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645,\n 74675, 74704, 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235,\n 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766, 75796, 75826,\n 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299, 76328, 76358, 76387, 76416,\n 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830, 76859, 76889, 76918, 76948, 76977, 77007,\n 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361, 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598,\n 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893, 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188,\n 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425, 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779,\n 78808, 78838, 78867, 78897, 78926, 78956, 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369,\n 79399, 79428, 79458, 79487, 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960,\n 79990];\n /* tslint:enable */\n function getHijriDate(gDate) {\n let day = gDate.getDate();\n let month = gDate.getMonth();\n let year = gDate.getFullYear();\n let tMonth = month + 1;\n let tYear = year;\n if (tMonth < 3) {\n tYear -= 1;\n tMonth += 12;\n }\n let yPrefix = Math.floor(tYear / 100.);\n let julilanOffset = yPrefix - Math.floor(yPrefix / 4.) - 2;\n let julianNumber = Math.floor(365.25 * (tYear + 4716)) + Math.floor(30.6001 * (tMonth + 1)) + day - julilanOffset - 1524;\n yPrefix = Math.floor((julianNumber - 1867216.25) / 36524.25);\n julilanOffset = yPrefix - Math.floor(yPrefix / 4.) + 1;\n let b = julianNumber + julilanOffset + 1524;\n let c = Math.floor((b - 122.1) / 365.25);\n let d = Math.floor(365.25 * c);\n let tempMonth = Math.floor((b - d) / 30.6001);\n day = (b - d) - Math.floor(30.6001 * tempMonth);\n month = Math.floor((b - d) / 20.6001);\n if (month > 13) {\n c += 1;\n month -= 12;\n }\n month -= 1;\n year = c - 4716;\n let modifiedJulianDate = julianNumber - 2400000;\n // date calculation for year after 2077\n let iyear = 10631. / 30.;\n let z = julianNumber - 1948084;\n let cyc = Math.floor(z / 10631.);\n z = z - 10631 * cyc;\n let j = Math.floor((z - 0.1335) / iyear);\n let iy = 30 * cyc + j;\n z = z - Math.floor(j * iyear + 0.1335);\n let im = Math.floor((z + 28.5001) / 29.5);\n /* istanbul ignore next */\n if (im === 13) {\n im = 12;\n }\n let tempDay = z - Math.floor(29.5001 * im - 29);\n let i = 0;\n for (; i < dateCorrection.length; i++) {\n if (dateCorrection[i] > modifiedJulianDate) {\n break;\n }\n }\n let iln = i + 16260;\n let ii = Math.floor((iln - 1) / 12);\n let hYear = ii + 1;\n let hmonth = iln - 12 * ii;\n let hDate = modifiedJulianDate - dateCorrection[i - 1] + 1;\n if ((hDate + '').length > 2) {\n hDate = tempDay;\n hmonth = im;\n hYear = iy;\n }\n return { year: hYear, month: hmonth, date: hDate };\n }\n HijriParser.getHijriDate = getHijriDate;\n function toGregorian(year, month, day) {\n let iy = year;\n let im = month;\n let id = day;\n let ii = iy - 1;\n let iln = (ii * 12) + 1 + (im - 1);\n let i = iln - 16260;\n let mcjdn = id + dateCorrection[i - 1] - 1;\n let julianDate = mcjdn + 2400000;\n let z = Math.floor(julianDate + 0.5);\n let a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n let b = a + 1524;\n let c = Math.floor((b - 122.1) / 365.25);\n let d = Math.floor(365.25 * c);\n let e = Math.floor((b - d) / 30.6001);\n let gDay = b - d - Math.floor(e * 30.6001);\n let gMonth = e - (e > 13.5 ? 13 : 1);\n let gYear = c - (gMonth > 2.5 ? 4716 : 4715);\n /* istanbul ignore next */\n if (gYear <= 0) {\n gMonth--;\n } // No year zero\n return new Date(gYear + '/' + (gMonth) + '/' + gDay);\n }\n HijriParser.toGregorian = toGregorian;\n})(HijriParser || (HijriParser = {}));\n\nconst abbreviateRegexGlobal = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|K|cccc|ccc|WW|W|G+|z+/gi;\nconst standalone = 'stand-alone';\nconst weekdayKey = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\n\nconst timeSetter = {\n m: 'getMinutes',\n h: 'getHours',\n H: 'getHours',\n s: 'getSeconds',\n d: 'getDate',\n f: 'getMilliseconds'\n};\nconst datePartMatcher = {\n 'M': 'month',\n 'd': 'day',\n 'E': 'weekday',\n 'c': 'weekday',\n 'y': 'year',\n 'm': 'minute',\n 'h': 'hour',\n 'H': 'hour',\n 's': 'second',\n 'L': 'month',\n 'a': 'designator',\n 'z': 'timeZone',\n 'Z': 'timeZone',\n 'G': 'era',\n 'f': 'milliseconds'\n};\nconst timeSeparator = 'timeSeparator';\n/* tslint:disable no-any */\n/**\n * Date Format is a framework provides support for date formatting.\n * @private\n */\nclass DateFormat {\n /**\n * Returns the formatter function for given skeleton.\n * @param {string} - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} - Specific the format in which date will format.\n * @param {cldr} - Specifies the global cldr data collection.\n * @return Function.\n */\n static dateFormat(culture, option, cldr) {\n let dependable = IntlBase.getDependables(cldr, culture, option.calendar);\n let numObject = getValue('parserObject.numbers', dependable);\n let dateObject = dependable.dateObject;\n let formatOptions = { isIslamic: IntlBase.islamicRegex.test(option.calendar) };\n if (isBlazor() && option.isServerRendered) {\n option = IntlBase.compareBlazorDateFormats(option, culture);\n }\n let resPattern = option.format ||\n IntlBase.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n formatOptions.dateSeperator = isBlazor() ? getValue('dateSeperator', dateObject) : IntlBase.getDateSeparator(dependable.dateObject);\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = IntlBase.ConvertDateToWeekFormat(resPattern);\n if (isBlazor()) {\n resPattern = resPattern.replace(/tt/, 'a');\n }\n formatOptions.pattern = resPattern;\n formatOptions.numMapper = isBlazor() ?\n extend({}, numObject) : ParserBase.getNumberMapper(dependable.parserObject, ParserBase.getNumberingSystem(cldr));\n let patternMatch = resPattern.match(abbreviateRegexGlobal) || [];\n for (let str of patternMatch) {\n let len = str.length;\n let char = str[0];\n if (char === 'K') {\n char = 'h';\n }\n /* tslint:disable no-any */\n switch (char) {\n case 'E':\n case 'c':\n if (isBlazor()) {\n formatOptions.weekday = getValue('days.' + IntlBase.monthIndex[len], dateObject);\n }\n else {\n formatOptions.weekday = dependable.dateObject[IntlBase.days][standalone][IntlBase.monthIndex[len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n formatOptions.month = getValue('months.' + IntlBase.monthIndex[len], dateObject);\n }\n else {\n formatOptions.month = dependable.dateObject[IntlBase.month][standalone][IntlBase.monthIndex[len]];\n }\n break;\n case 'a':\n formatOptions.designator = isBlazor() ?\n getValue('dayPeriods', dateObject) : getValue('dayPeriods.format.wide', dateObject);\n break;\n case 'G':\n let eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n formatOptions.era = isBlazor() ? getValue('eras', dateObject) : getValue('eras.' + eText, dependable.dateObject);\n break;\n case 'z':\n formatOptions.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n break;\n }\n }\n }\n return (value) => {\n if (isNaN(value.getDate())) {\n return null;\n }\n return this.intDateFormatter(value, formatOptions);\n };\n }\n /**\n * Returns formatted date string based on options passed.\n * @param {Date} value\n * @param {FormatOptions} options\n */\n // tslint:disable-next-line:max-func-body-length\n static intDateFormatter(value, options) {\n let pattern = options.pattern;\n let ret = '';\n let matches = pattern.match(IntlBase.dateParseRegex);\n let dObject = this.getCurrentDateValue(value, options.isIslamic);\n for (let match of matches) {\n let length = match.length;\n let char = match[0];\n if (char === 'K') {\n char = 'h';\n }\n let curval;\n let curvalstr = '';\n let isNumber;\n let processNumber;\n let curstr = '';\n switch (char) {\n case 'M':\n case 'L':\n curval = dObject.month;\n if (length > 2) {\n ret += options.month[curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n ret += options.weekday[weekdayKey[value.getDay()]];\n break;\n case 'H':\n case 'h':\n case 'm':\n case 's':\n case 'd':\n case 'f':\n isNumber = true;\n if (char === 'd') {\n curval = dObject.date;\n }\n else if (char === 'f') {\n isNumber = false;\n processNumber = true;\n curvalstr = value[timeSetter[char]]().toString();\n curvalstr = curvalstr.substring(0, length);\n let curlength = curvalstr.length;\n if (length !== curlength) {\n if (length > 3) {\n continue;\n }\n for (let i = 0; i < length - curlength; i++) {\n curvalstr = '0' + curvalstr.toString();\n }\n }\n curstr += curvalstr;\n }\n else {\n curval = value[timeSetter[char]]();\n }\n if (char === 'h') {\n curval = curval % 12 || 12;\n }\n break;\n case 'y':\n processNumber = true;\n curstr += dObject.year;\n if (length === 2) {\n curstr = curstr.substr(curstr.length - 2);\n }\n break;\n case 'a':\n let desig = value.getHours() < 12 ? 'am' : 'pm';\n ret += options.designator[desig];\n break;\n case 'G':\n let dec = value.getFullYear() < 0 ? 0 : 1;\n let retu = options.era[dec];\n if (isNullOrUndefined(retu)) {\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n case '\\'':\n ret += (match === '\\'\\'') ? '\\'' : match.replace(/\\'/g, '');\n break;\n case 'z':\n let timezone = value.getTimezoneOffset();\n let pattern = (length < 4) ? '+H;-H' : options.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options.numMapper.timeSeparator);\n if (timezone === 0) {\n ret += options.timeZone.gmtZeroFormat;\n }\n else {\n processNumber = true;\n curstr = this.getTimeZoneValue(timezone, pattern);\n }\n curstr = options.timeZone.gmtFormat.replace(/\\{0\\}/, curstr);\n break;\n case ':':\n ret += options.numMapper.numberSymbols[timeSeparator];\n /* tslint:enable no-any */\n break;\n case '/':\n ret += options.dateSeperator;\n break;\n case 'W':\n isNumber = true;\n curval = IntlBase.getWeekOfYear(value);\n break;\n default:\n ret += match;\n }\n if (isNumber) {\n processNumber = true;\n curstr = this.checkTwodigitNumber(curval, length);\n }\n if (processNumber) {\n ret += ParserBase.convertValueParts(curstr, IntlBase.latnParseRegex, options.numMapper.mapper);\n }\n }\n return ret;\n }\n static getCurrentDateValue(value, isIslamic) {\n if (isIslamic) {\n return HijriParser.getHijriDate(value);\n }\n return { year: value.getFullYear(), month: value.getMonth() + 1, date: value.getDate() };\n }\n /**\n * Returns two digit numbers for given value and length\n */\n static checkTwodigitNumber(val, len) {\n let ret = val + '';\n if (len === 2 && ret.length !== 2) {\n return '0' + ret;\n }\n return ret;\n }\n /**\n * Returns the value of the Time Zone.\n * @param {number} tVal\n * @param {string} pattern\n * @private\n */\n static getTimeZoneValue(tVal, pattern) {\n let splt = pattern.split(';');\n let curPattern = splt[tVal > 0 ? 1 : 0];\n let no = Math.abs(tVal);\n return curPattern = curPattern.replace(/HH?|mm/g, (str) => {\n let len = str.length;\n let ishour = str.indexOf('H') !== -1;\n return this.checkTwodigitNumber(Math.floor(ishour ? (no / 60) : (no % 60)), len);\n });\n }\n}\n\nconst errorText = {\n 'ms': 'minimumSignificantDigits',\n 'ls': 'maximumSignificantDigits',\n 'mf': 'minimumFractionDigits',\n 'lf': 'maximumFractionDigits',\n};\nconst percentSign = 'percentSign';\nconst minusSign = 'minusSign';\nconst mapper$1 = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\n/**\n * Module for number formatting.\n * @private\n */\nclass NumberFormat {\n /**\n * Returns the formatter function for given skeleton.\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will format.\n * @param {Object} object- Specifies the global cldr data collection.\n * @return Function.\n */\n static numberFormatter(culture, option, cldr) {\n let fOptions = extend({}, option);\n let cOptions = {};\n let dOptions = {};\n let symbolPattern;\n let dependable = IntlBase.getDependables(cldr, culture, '', true);\n let numObject = dependable.numericObject;\n dOptions.numberMapper = isBlazor() ? extend({}, numObject) :\n ParserBase.getNumberMapper(dependable.parserObject, ParserBase.getNumberingSystem(cldr), true);\n dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : IntlBase.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol);\n /* tslint:disable no-any */\n dOptions.percentSymbol = isBlazor() ? getValue('numberSymbols.percentSign', numObject) :\n dOptions.numberMapper.numberSymbols[percentSign];\n dOptions.minusSymbol = isBlazor() ? getValue('numberSymbols.minusSign', numObject) :\n dOptions.numberMapper.numberSymbols[minusSign];\n let symbols = dOptions.numberMapper.numberSymbols;\n if ((option.format) && !(IntlBase.formatRegex.test(option.format))) {\n cOptions = IntlBase.customFormat(option.format, dOptions, dependable.numericObject);\n }\n else {\n extend(fOptions, IntlBase.getProperNumericSkeleton(option.format || 'N'));\n fOptions.isCurrency = fOptions.type === 'currency';\n fOptions.isPercent = fOptions.type === 'percent';\n if (!isBlazor()) {\n symbolPattern = IntlBase.getSymbolPattern(fOptions.type, dOptions.numberMapper.numberSystem, dependable.numericObject, fOptions.isAccount);\n }\n fOptions.groupOne = this.checkValueRange(fOptions.maximumSignificantDigits, fOptions.minimumSignificantDigits, true);\n this.checkValueRange(fOptions.maximumFractionDigits, fOptions.minimumFractionDigits, false, true);\n if (!isUndefined(fOptions.fractionDigits)) {\n fOptions.minimumFractionDigits = fOptions.maximumFractionDigits = fOptions.fractionDigits;\n }\n if (isUndefined(fOptions.useGrouping)) {\n fOptions.useGrouping = true;\n }\n if (fOptions.isCurrency && !isBlazor()) {\n symbolPattern = symbolPattern.replace(/\\u00A4/g, IntlBase.defaultCurrency);\n }\n if (!isBlazor()) {\n let split = symbolPattern.split(';');\n cOptions.nData = IntlBase.getFormatData(split[1] || '-' + split[0], true, dOptions.currencySymbol);\n cOptions.pData = IntlBase.getFormatData(split[0], false, dOptions.currencySymbol);\n if (fOptions.useGrouping) {\n fOptions.groupSeparator = symbols[mapper$1[2]];\n fOptions.groupData = this.getGroupingDetails(split[0]);\n }\n }\n else {\n cOptions.nData = extend({}, {}, getValue(fOptions.type + 'nData', numObject));\n cOptions.pData = extend({}, {}, getValue(fOptions.type + 'pData', numObject));\n if (fOptions.type === 'currency' && option.currency) {\n IntlBase.replaceBlazorCurrency([cOptions.pData, cOptions.nData], dOptions.currencySymbol, option.currency);\n }\n }\n let minFrac = isUndefined(fOptions.minimumFractionDigits);\n if (minFrac) {\n fOptions.minimumFractionDigits = cOptions.nData.minimumFraction;\n }\n if (isUndefined(fOptions.maximumFractionDigits)) {\n let mval = cOptions.nData.maximumFraction;\n fOptions.maximumFractionDigits = isUndefined(mval) && fOptions.isPercent ? 0 : mval;\n }\n let mfrac = fOptions.minimumFractionDigits;\n let lfrac = fOptions.maximumFractionDigits;\n if (!isUndefined(mfrac) && !isUndefined(lfrac)) {\n if (mfrac > lfrac) {\n fOptions.maximumFractionDigits = mfrac;\n }\n }\n }\n extend(cOptions.nData, fOptions);\n extend(cOptions.pData, fOptions);\n return (value) => {\n if (isNaN(value)) {\n return symbols[mapper$1[1]];\n }\n else if (!isFinite(value)) {\n return symbols[mapper$1[0]];\n }\n return this.intNumberFormatter(value, cOptions, dOptions);\n };\n }\n /**\n * Returns grouping details for the pattern provided\n * @param {string} pattern\n * @returns {GroupDetails}\n */\n static getGroupingDetails(pattern) {\n let ret = {};\n let match = pattern.match(IntlBase.negativeDataRegex);\n if (match && match[4]) {\n let pattern = match[4];\n let p = pattern.lastIndexOf(',');\n if (p !== -1) {\n let temp = pattern.split('.')[0];\n ret.primary = (temp.length - p) - 1;\n let s = pattern.lastIndexOf(',', p - 1);\n if (s !== -1) {\n ret.secondary = p - 1 - s;\n }\n }\n }\n return ret;\n }\n /**\n * Returns if the provided integer range is valid.\n * @param {number} val1\n * @param {number} val2\n * @param {boolean} checkbothExist\n * @param {boolean} isFraction\n * @returns {boolean}\n */\n static checkValueRange(val1, val2, checkbothExist, isFraction) {\n let decide = isFraction ? 'f' : 's';\n let dint = 0;\n let str1 = errorText['l' + decide];\n let str2 = errorText['m' + decide];\n if (!isUndefined(val1)) {\n this.checkRange(val1, str1, isFraction);\n dint++;\n }\n if (!isUndefined(val2)) {\n this.checkRange(val2, str2, isFraction);\n dint++;\n }\n if (dint === 2) {\n if (val1 < val2) {\n throwError(str2 + 'specified must be less than the' + str1);\n }\n else {\n return true;\n }\n }\n else if (checkbothExist && dint === 1) {\n throwError('Both' + str2 + 'and' + str2 + 'must be present');\n }\n return false;\n }\n /**\n * Check if the provided fraction range is valid\n * @param {number} val\n * @param {string} text\n * @param {boolean} isFraction\n * @returns {void}\n */\n static checkRange(val, text, isFraction) {\n let range = isFraction ? [0, 20] : [1, 21];\n if (val < range[0] || val > range[1]) {\n throwError(text + 'value must be within the range' + range[0] + 'to' + range[1]);\n }\n }\n /**\n * Returns formatted numeric string for provided formatting options\n * @param {number} value\n * @param {base.GenericFormatOptions} fOptions\n * @param {CommonOptions} dOptions\n * @returns {string}\n */\n static intNumberFormatter(value, fOptions, dOptions) {\n let curData;\n if (isUndefined(fOptions.nData.type)) {\n return undefined;\n }\n else {\n if (value < 0) {\n value = value * -1;\n curData = fOptions.nData;\n }\n else if (value === 0) {\n curData = fOptions.zeroData || fOptions.pData;\n }\n else {\n curData = fOptions.pData;\n }\n let fValue = '';\n if (curData.isPercent) {\n value = value * 100;\n }\n if (curData.groupOne) {\n fValue = this.processSignificantDigits(value, curData.minimumSignificantDigits, curData.maximumSignificantDigits);\n }\n else {\n fValue = this.processFraction(value, curData.minimumFractionDigits, curData.maximumFractionDigits);\n if (curData.minimumIntegerDigits) {\n fValue = this.processMinimumIntegers(fValue, curData.minimumIntegerDigits);\n }\n }\n if (curData.type === 'scientific') {\n fValue = value.toExponential(curData.maximumFractionDigits);\n fValue = fValue.replace('e', dOptions.numberMapper.numberSymbols[mapper$1[4]]);\n }\n fValue = fValue.replace('.', dOptions.numberMapper.numberSymbols[mapper$1[3]]);\n if (curData.useGrouping) {\n fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper$1[3]] || '.', curData.groupData.secondary);\n }\n fValue = ParserBase.convertValueParts(fValue, IntlBase.latnParseRegex, dOptions.numberMapper.mapper);\n if (curData.nlead === 'N/A') {\n return curData.nlead;\n }\n else {\n return curData.nlead + fValue + curData.nend;\n }\n }\n }\n /**\n * Returns significant digits processed numeric string\n * @param {number} value\n * @param {number} min\n * @param {number} max\n * @returns {string}\n */\n static processSignificantDigits(value, min, max) {\n let temp = value + '';\n let tn;\n let length = temp.length;\n if (length < min) {\n return value.toPrecision(min);\n }\n else {\n temp = value.toPrecision(max);\n tn = +temp;\n return tn + '';\n }\n }\n /**\n * Returns grouped numeric string\n * @param {string} val\n * @param {number} level1\n * @param {string} sep\n * @param {string} decimalSymbol\n * @param {number} level2\n * @returns {string}\n */\n static groupNumbers(val, level1, sep, decimalSymbol, level2) {\n let flag = !isNullOrUndefined(level2) && level2 !== 0;\n let split = val.split(decimalSymbol);\n let prefix = split[0];\n let length = prefix.length;\n let str = '';\n while (length > level1) {\n str = prefix.slice(length - level1, length) + (str.length ?\n (sep + str) : '');\n length -= level1;\n if (flag) {\n level1 = level2;\n flag = false;\n }\n }\n split[0] = prefix.slice(0, length) + (str.length ? sep : '') + str;\n return split.join(decimalSymbol);\n }\n /**\n * Returns fraction processed numeric string\n * @param {number} value\n * @param {number} min\n * @param {number} max\n * @returns {string}\n */\n static processFraction(value, min, max) {\n let temp = (value + '').split('.')[1];\n let length = temp ? temp.length : 0;\n if (min && length < min) {\n let ret = '';\n if (length === 0) {\n ret = value.toFixed(min);\n }\n else {\n ret += value;\n for (let j = 0; j < min - length; j++) {\n ret += '0';\n }\n return ret;\n }\n return value.toFixed(min);\n }\n else if (!isNullOrUndefined(max) && (length > max || max === 0)) {\n return value.toFixed(max);\n }\n return value + '';\n }\n /**\n * Returns integer processed numeric string\n * @param {string} value\n * @param {number} min\n * @returns {string}\n */\n static processMinimumIntegers(value, min) {\n let temp = value.split('.');\n let lead = temp[0];\n let len = lead.length;\n if (len < min) {\n for (let i = 0; i < min - len; i++) {\n lead = '0' + lead;\n }\n temp[0] = lead;\n }\n return temp.join('.');\n }\n}\n\nconst standalone$1 = 'stand-alone';\nconst latnRegex$1 = /^[0-9]*$/;\nconst timeSetter$1 = {\n minute: 'setMinutes',\n hour: 'setHours',\n second: 'setSeconds',\n day: 'setDate',\n month: 'setMonth',\n milliseconds: 'setMilliseconds'\n};\nconst month = 'months';\n/* tslint:disable no-any */\n/**\n * Date Parser.\n * @private\n */\nclass DateParser {\n /**\n * Returns the parser function for given skeleton.\n * @param {string} - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} - Specific the format in which string date will be parsed.\n * @param {cldr} - Specifies the global cldr data collection.\n * @return Function.\n */\n // tslint:disable-next-line:max-func-body-length\n static dateParser(culture, option, cldr) {\n let dependable = IntlBase.getDependables(cldr, culture, option.calendar);\n // tslint:disable-next-line\n let numOptions = ParserBase.getCurrentNumericOptions(dependable.parserObject, ParserBase.getNumberingSystem(cldr), false, isBlazor());\n let parseOptions = {};\n if (isBlazor() && option.isServerRendered) {\n option = IntlBase.compareBlazorDateFormats(option, culture);\n }\n let resPattern = option.format ||\n IntlBase.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n let regexString = '';\n let hourOnly;\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = IntlBase.ConvertDateToWeekFormat(resPattern);\n parseOptions = { isIslamic: IntlBase.islamicRegex.test(option.calendar), pattern: resPattern, evalposition: {} };\n let patternMatch = resPattern.match(IntlBase.dateParseRegex) || [];\n let length = patternMatch.length;\n let gmtCorrection = 0;\n let zCorrectTemp = 0;\n let isgmtTraversed = false;\n let nRegx = numOptions.numericRegex;\n // tslint:disable-next-line\n let numMapper = isBlazor() ? dependable.parserObject.numbers :\n ParserBase.getNumberMapper(dependable.parserObject, ParserBase.getNumberingSystem(cldr));\n for (let i = 0; i < length; i++) {\n let str = patternMatch[i];\n let len = str.length;\n let char = (str[0] === 'K') ? 'h' : str[0];\n let isNumber;\n let canUpdate;\n // tslint:disable-next-line\n let charKey = datePartMatcher[char];\n let optional = (len === 2) ? '' : '?';\n if (isgmtTraversed) {\n gmtCorrection = zCorrectTemp;\n isgmtTraversed = false;\n }\n switch (char) {\n case 'E':\n case 'c':\n // tslint:disable\n let weekData;\n if (isBlazor()) {\n weekData = getValue('days.' + IntlBase.monthIndex[len], dependable.dateObject);\n }\n else {\n weekData = dependable.dateObject[IntlBase.days][standalone$1][IntlBase.monthIndex[len]];\n }\n let weekObject = ParserBase.reverseObject(weekData);\n // tslint:enable\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\n case 'M':\n case 'L':\n case 'd':\n case 'm':\n case 's':\n case 'h':\n case 'H':\n case 'f':\n canUpdate = true;\n if ((char === 'M' || char === 'L') && len > 2) {\n let monthData;\n if (isBlazor()) {\n /* tslint:disable no-any */\n monthData = getValue('months.' + IntlBase.monthIndex[len], dependable.dateObject);\n }\n else {\n /* tslint:disable no-any */\n monthData = dependable.dateObject[month][standalone$1][IntlBase.monthIndex[len]];\n }\n // tslint:disable-next-line\n parseOptions[charKey] = ParserBase.reverseObject(monthData);\n /* tslint:disable no-any */\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n }\n else if (char === 'f') {\n if (len > 3) {\n continue;\n }\n isNumber = true;\n regexString += '(' + nRegx + nRegx + '?' + nRegx + '?' + ')';\n }\n else {\n isNumber = true;\n regexString += '(' + nRegx + nRegx + optional + ')';\n }\n if (char === 'h') {\n parseOptions.hour12 = true;\n }\n break;\n case 'W':\n let opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\n case 'y':\n canUpdate = isNumber = true;\n if (len === 2) {\n regexString += '(' + nRegx + nRegx + ')';\n }\n else {\n regexString += '(' + nRegx + '{' + len + ',})';\n }\n break;\n case 'a':\n canUpdate = true;\n let periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n parseOptions[charKey] = ParserBase.reverseObject(periodValur);\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n break;\n case 'G':\n canUpdate = true;\n let eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n parseOptions[charKey] = ParserBase.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + '?)';\n break;\n case 'z':\n let tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n parseOptions[charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n let tzone = parseOptions[charKey];\n hourOnly = (len < 4);\n let hpattern = hourOnly ? '+H;-H' : tzone.hourFormat;\n hpattern = hpattern.replace(/:/g, numMapper.timeSeparator);\n regexString += '(' + this.parseTimeZoneRegx(hpattern, tzone, nRegx) + ')?';\n isgmtTraversed = true;\n zCorrectTemp = hourOnly ? 6 : 12;\n break;\n case '\\'':\n let iString = str.replace(/\\'/g, '');\n regexString += '(' + iString + ')?';\n break;\n default:\n regexString += '([\\\\D])';\n break;\n }\n if (canUpdate) {\n parseOptions.evalposition[charKey] = { isNumber: isNumber, pos: i + 1 + gmtCorrection, hourOnly: hourOnly };\n }\n if (i === length - 1 && !isNullOrUndefined(regexString)) {\n parseOptions.parserRegex = new RegExp('^' + regexString + '$', 'i');\n }\n }\n }\n return (value) => {\n let parsedDateParts = this.internalDateParse(value, parseOptions, numOptions);\n if (isNullOrUndefined(parsedDateParts) || !Object.keys(parsedDateParts).length) {\n return null;\n }\n if (parseOptions.isIslamic) {\n let dobj = {};\n let tYear = parsedDateParts.year;\n let tDate = parsedDateParts.day;\n let tMonth = parsedDateParts.month;\n let ystrig = tYear ? (tYear + '') : '';\n let is2DigitYear = (ystrig.length === 2);\n if (!tYear || !tMonth || !tDate || is2DigitYear) {\n dobj = HijriParser.getHijriDate(new Date());\n }\n if (is2DigitYear) {\n tYear = parseInt((dobj.year + '').slice(0, 2) + ystrig, 10);\n }\n // tslint:disable-next-line\n let dateObject = HijriParser.toGregorian(tYear || dobj.year, tMonth || dobj.month, tDate || dobj.date);\n parsedDateParts.year = dateObject.getFullYear();\n parsedDateParts.month = dateObject.getMonth() + 1;\n parsedDateParts.day = dateObject.getDate();\n }\n return this.getDateObject(parsedDateParts);\n };\n }\n /* tslint:disable */\n /**\n * Returns date object for provided date options\n * @param {DateParts} options\n * @param {Date} value\n * @returns {Date}\n */\n static getDateObject(options, value) {\n let res = value || new Date();\n res.setMilliseconds(0);\n let tKeys = ['hour', 'minute', 'second', 'milliseconds', 'month', 'day'];\n let y = options.year;\n let desig = options.designator;\n let tzone = options.timeZone;\n if (!isUndefined(y)) {\n let len = (y + '').length;\n if (len <= 2) {\n let century = Math.floor(res.getFullYear() / 100) * 100;\n y += century;\n }\n res.setFullYear(y);\n }\n for (let key of tKeys) {\n let tValue = options[key];\n if (isUndefined(tValue) && key === \"day\") {\n res.setDate(1);\n }\n if (!isUndefined(tValue)) {\n if (key === 'month') {\n tValue -= 1;\n if (tValue < 0 || tValue > 11) {\n return new Date('invalid');\n }\n let pDate = res.getDate();\n res.setDate(1);\n res[timeSetter$1[key]](tValue);\n let lDate = new Date(res.getFullYear(), tValue + 1, 0).getDate();\n res.setDate(pDate < lDate ? pDate : lDate);\n }\n else {\n if (key === 'day') {\n let lastDay = new Date(res.getFullYear(), res.getMonth() + 1, 0).getDate();\n if ((tValue < 1 || tValue > lastDay)) {\n return null;\n }\n }\n res[timeSetter$1[key]](tValue);\n }\n }\n }\n if (!isUndefined(desig)) {\n let hour = res.getHours();\n if (desig === 'pm') {\n res.setHours(hour + (hour === 12 ? 0 : 12));\n }\n else if (hour === 12) {\n res.setHours(0);\n }\n }\n if (!isUndefined(tzone)) {\n let tzValue = tzone - res.getTimezoneOffset();\n if (tzValue !== 0) {\n res.setMinutes(res.getMinutes() + tzValue);\n }\n }\n return res;\n }\n /**\n * Returns date parsing options for provided value along with parse and numeric options\n * @param {string} value\n * @param {ParseOptions} parseOptions\n * @param {NumericOptions} num\n * @returns {DateParts}\n */\n static internalDateParse(value, parseOptions, num) {\n let matches = value.match(parseOptions.parserRegex);\n let retOptions = { 'hour': 0, 'minute': 0, 'second': 0 };\n let nRegx = num.numericRegex;\n if (isNullOrUndefined(matches)) {\n return null;\n }\n else {\n let props = Object.keys(parseOptions.evalposition);\n for (let prop of props) {\n let curObject = parseOptions.evalposition[prop];\n let matchString = matches[curObject.pos];\n if (curObject.isNumber) {\n retOptions[prop] = this.internalNumberParser(matchString, num);\n }\n else {\n if (prop === 'timeZone' && !isUndefined(matchString)) {\n let pos = curObject.pos;\n let val;\n let tmatch = matches[pos + 1];\n let flag = !isUndefined(tmatch);\n if (curObject.hourOnly) {\n val = this.getZoneValue(flag, tmatch, matches[pos + 4], num) * 60;\n }\n else {\n val = this.getZoneValue(flag, tmatch, matches[pos + 7], num) * 60;\n val += this.getZoneValue(flag, matches[pos + 4], matches[pos + 10], num);\n }\n if (!isNullOrUndefined(val)) {\n retOptions[prop] = val;\n }\n }\n else {\n retOptions[prop] = parseOptions[prop][matchString];\n }\n }\n }\n if (parseOptions.hour12) {\n retOptions.hour12 = true;\n }\n }\n return retOptions;\n }\n /**\n * Returns parsed number for provided Numeric string and Numeric Options\n * @param {string} value\n * @param {NumericOptions} option\n * @returns {number}\n */\n static internalNumberParser(value, option) {\n value = ParserBase.convertValueParts(value, option.numberParseRegex, option.numericPair);\n if (latnRegex$1.test(value)) {\n return +value;\n }\n return null;\n }\n /**\n * Returns parsed time zone RegExp for provided hour format and time zone\n * @param {string} hourFormat\n * @param {base.TimeZoneOptions} tZone\n * @param {string} nRegex\n * @returns {string}\n */\n static parseTimeZoneRegx(hourFormat, tZone, nRegex) {\n let pattern = tZone.gmtFormat;\n let ret;\n let cRegex = '(' + nRegex + ')' + '(' + nRegex + ')';\n let splitStr;\n ret = hourFormat.replace('+', '\\\\+');\n if (hourFormat.indexOf('HH') !== -1) {\n ret = ret.replace(/HH|mm/g, '(' + cRegex + ')');\n }\n else {\n ret = ret.replace(/H|m/g, '(' + cRegex + '?)');\n }\n splitStr = (ret.split(';').map((str) => {\n return pattern.replace('{0}', str);\n }));\n ret = splitStr.join('|') + '|' + tZone.gmtZeroFormat;\n return ret;\n }\n /**\n * Returns zone based value.\n * @param {boolean} flag\n * @param {string} val1\n * @param {string} val2\n * @param {NumericOptions} num\n * @returns {number}\n */\n static getZoneValue(flag, val1, val2, num) {\n let ival = flag ? val1 : val2;\n if (!ival) {\n return 0;\n }\n let value = this.internalNumberParser(ival, num);\n if (flag) {\n return -value;\n }\n return value;\n }\n}\n/* tslint:enable */\n\nconst parseRegex = /^([^0-9]*)(([0-9,]*[0-9]+)(\\.[0-9]+)?)([Ee][+-]?[0-9]+)?([^0-9]*)$/;\nconst groupRegex = /,/g;\nconst keys = ['minusSign', 'infinity'];\n/**\n * Module for Number Parser.\n * @private\n */\nclass NumberParser {\n /**\n * Returns the parser function for given skeleton.\n * @param {string} - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} - Specific the format in which number will parsed.\n * @param {cldr} - Specifies the global cldr data collection.\n * @return Function.\n */\n static numberParser(culture, option, cldr) {\n let dependable = IntlBase.getDependables(cldr, culture, '', true);\n let parseOptions = { custom: true };\n let numOptions;\n if ((IntlBase.formatRegex.test(option.format)) || !(option.format)) {\n extend(parseOptions, IntlBase.getProperNumericSkeleton(option.format || 'N'));\n parseOptions.custom = false;\n }\n else {\n extend(parseOptions, IntlBase.customFormat(option.format, null, null));\n }\n let numbers = getValue('numbers', dependable.parserObject);\n numOptions = ParserBase.getCurrentNumericOptions(dependable.parserObject, ParserBase.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = ParserBase.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n // tslint:disable-next-line:no-any\n parseOptions.infinity = numOptions.symbolNumberSystem[keys[1]];\n let symbolpattern;\n if (!isBlazor()) {\n symbolpattern = IntlBase.getSymbolPattern(parseOptions.type, numOptions.numberSystem, dependable.numericObject, parseOptions.isAccount);\n if (symbolpattern) {\n symbolpattern = symbolpattern.replace(/\\u00A4/g, IntlBase.defaultCurrency);\n let split = symbolpattern.split(';');\n parseOptions.nData = IntlBase.getFormatData(split[1] || '-' + split[0], true, '');\n parseOptions.pData = IntlBase.getFormatData(split[0], true, '');\n }\n }\n else {\n parseOptions.nData = extend({}, {}, getValue(parseOptions.type + 'nData', numbers));\n parseOptions.pData = extend({}, {}, getValue(parseOptions.type + 'pData', numbers));\n if (parseOptions.type === 'currency' && option.currency) {\n IntlBase.replaceBlazorCurrency([parseOptions.pData, parseOptions.nData], getValue('currencySymbol', numbers), option.currency);\n }\n }\n return (value) => {\n return this.getParsedNumber(value, parseOptions, numOptions);\n };\n }\n /**\n * Returns parsed number for the provided formatting options\n * @param {string} value\n * @param {NumericParts} options\n * @param {NumericOptions} numOptions\n * @returns {number}\n */\n static getParsedNumber(value, options, numOptions) {\n let isNegative;\n let isPercent;\n let tempValue;\n let lead;\n let end;\n let ret;\n if (value.indexOf(options.infinity) !== -1) {\n return Infinity;\n }\n else {\n value = ParserBase.convertValueParts(value, options.symbolRegex, numOptions.symbolMatch);\n value = ParserBase.convertValueParts(value, numOptions.numberParseRegex, numOptions.numericPair);\n if (value.indexOf('.') === 0) {\n value = '0' + value;\n }\n let matches = value.match(parseRegex);\n if (isNullOrUndefined(matches)) {\n return NaN;\n }\n lead = matches[1];\n tempValue = matches[2];\n let exponent = matches[5];\n end = matches[6];\n isNegative = options.custom ? ((lead === options.nData.nlead) && (end === options.nData.nend)) :\n ((lead.indexOf(options.nData.nlead) !== -1) && (end.indexOf(options.nData.nend) !== -1));\n isPercent = isNegative ?\n options.nData.isPercent :\n options.pData.isPercent;\n tempValue = tempValue.replace(groupRegex, '');\n if (exponent) {\n tempValue += exponent;\n }\n ret = +tempValue;\n if (options.type === 'percent' || isPercent) {\n ret = ret / 100;\n }\n if (options.custom || options.fractionDigits) {\n ret = parseFloat(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.fractionDigits));\n }\n if (isNegative) {\n ret *= -1;\n }\n return ret;\n }\n }\n}\n\nclass Observer {\n constructor(context) {\n this.ranArray = [];\n this.boundedEvents = {};\n if (isNullOrUndefined(context)) {\n return;\n }\n this.context = context;\n }\n ;\n /**\n * To attach handler for given property in current context.\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Specifies the handler function to be called while event notified.\n * @param {Object} context - Specifies the context binded to the handler.\n * @param {string} id - specifies the random generated id.\n * @return {void}\n */\n on(property, handler, context, id) {\n if (isNullOrUndefined(handler)) {\n return;\n }\n let cntxt = context || this.context;\n if (this.notExist(property)) {\n this.boundedEvents[property] = [{ handler: handler, context: cntxt }];\n return;\n }\n if (!isNullOrUndefined(id)) {\n if (this.ranArray.indexOf(id) === -1) {\n this.ranArray.push(id);\n this.boundedEvents[property].push({ handler: handler, context: cntxt, id: id });\n }\n }\n else if (!this.isHandlerPresent(this.boundedEvents[property], handler)) {\n this.boundedEvents[property].push({ handler: handler, context: cntxt });\n }\n }\n /**\n * To remove handlers from a event attached using on() function.\n * @param {string} eventName - specifies the name of the event.\n * @param {Function} handler - Optional argument specifies the handler function to be called while event notified.\n * @param {string} id - specifies the random generated id.\n * @return {void}\n */\n off(property, handler, id) {\n if (this.notExist(property)) {\n return;\n }\n let curObject = getValue(property, this.boundedEvents);\n if (handler) {\n for (let i = 0; i < curObject.length; i++) {\n if (id) {\n if (curObject[i].id === id) {\n curObject.splice(i, 1);\n let indexLocation = this.ranArray.indexOf(id);\n if (indexLocation !== -1) {\n this.ranArray.splice(indexLocation, 1);\n }\n break;\n }\n }\n else if (handler === curObject[i].handler) {\n curObject.splice(i, 1);\n break;\n }\n }\n }\n else {\n delete this.boundedEvents[property];\n }\n }\n /**\n * To notify the handlers in the specified event.\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} args - Additional parameters to pass while calling the handler.\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it was failure to call.\n * @return {void}\n */\n notify(property, argument, successHandler, errorHandler) {\n if (this.notExist(property)) {\n if (successHandler) {\n successHandler.call(this, argument);\n }\n return;\n }\n if (argument) {\n argument.name = property;\n }\n let blazor = 'Blazor';\n let curObject = getValue(property, this.boundedEvents).slice(0);\n if (window[blazor]) {\n return this.blazorCallback(curObject, argument, successHandler, errorHandler, 0);\n }\n else {\n for (let cur of curObject) {\n cur.handler.call(cur.context, argument);\n }\n if (successHandler) {\n successHandler.call(this, argument);\n }\n }\n }\n blazorCallback(objs, argument, successHandler, errorHandler, index) {\n let isTrigger = index === objs.length - 1;\n if (index < objs.length) {\n let obj = objs[index];\n let promise = obj.handler.call(obj.context, argument);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n return promise;\n }\n promise.then((data) => {\n data = typeof data === 'string' && this.isJson(data) ? JSON.parse(data, this.dateReviver) : data;\n extend(argument, argument, data, true);\n if (successHandler && isTrigger) {\n successHandler.call(obj.context, argument);\n }\n else {\n return this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }).catch((data) => {\n if (errorHandler) {\n errorHandler.call(obj.context, typeof data === 'string' &&\n this.isJson(data) ? JSON.parse(data, this.dateReviver) : data);\n }\n });\n }\n else if (successHandler && isTrigger) {\n successHandler.call(obj.context, argument);\n }\n else {\n return this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }\n }\n // tslint:disable-next-line:no-any\n dateReviver(key, value) {\n let dPattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\n if (isBlazor && typeof value === 'string' && value.match(dPattern) !== null) {\n return (new Date(value));\n }\n return (value);\n }\n isJson(value) {\n try {\n JSON.parse(value);\n }\n catch (e) {\n return false;\n }\n return true;\n }\n /**\n * To destroy handlers in the event\n */\n destroy() {\n this.boundedEvents = this.context = undefined;\n }\n /**\n * Returns if the property exists.\n */\n notExist(prop) {\n return this.boundedEvents.hasOwnProperty(prop) === false || this.boundedEvents[prop].length <= 0;\n }\n /**\n * Returns if the handler is present.\n */\n isHandlerPresent(boundedEvents, handler) {\n for (let cur of boundedEvents) {\n if (cur.handler === handler) {\n return true;\n }\n }\n return false;\n }\n}\n\n/**\n * Specifies the observer used for external change detection.\n */\nlet onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nlet rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n * @private\n */\nlet cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n * @private\n */\nlet defaultCulture = 'en-US';\n/**\n * Specifies default currency code to be considered\n * @private\n */\nlet defaultCurrencyCode = 'USD';\nconst mapper = ['numericObject', 'dateObject'];\n/**\n * Internationalization class provides support to parse and format the number and date object to the desired format.\n * ```typescript\n * // To set the culture globally\n * setCulture('en-GB');\n *\n * // To set currency code globally\n * setCurrencyCode('EUR');\n *\n * //Load cldr data\n * loadCldr(gregorainData);\n * loadCldr(timeZoneData);\n * loadCldr(numbersData);\n * loadCldr(numberSystemData);\n *\n * // To use formatter in component side\n * let Intl:Internationalization = new Internationalization();\n *\n * // Date formatting\n * let dateFormatter: Function = Intl.getDateFormat({skeleton:'long',type:'dateTime'});\n * dateFormatter(new Date('11/2/2016'));\n * dateFormatter(new Date('25/2/2030'));\n * Intl.formatDate(new Date(),{skeleton:'E'});\n *\n * //Number formatting\n * let numberFormatter: Function = Intl.getNumberFormat({skeleton:'C5'})\n * numberFormatter(24563334);\n * Intl.formatNumber(123123,{skeleton:'p2'});\n *\n * // Date parser\n * let dateParser: Function = Intl.getDateParser({skeleton:'short',type:'time'});\n * dateParser('10:30 PM');\n * Intl.parseDate('10',{skeleton:'H'});\n * ```\n */\nclass Internationalization {\n constructor(cultureName) {\n if (cultureName) {\n this.culture = cultureName;\n }\n }\n /**\n * Returns the format function for given options.\n * @param {DateFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function}\n */\n getDateFormat(options) {\n return DateFormat.dateFormat(this.getCulture(), options || { type: 'date', skeleton: 'short' }, cldrData);\n }\n /**\n * Returns the format function for given options.\n * @param {NumberFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function}\n */\n getNumberFormat(options) {\n if (options && !options.currency) {\n options.currency = defaultCurrencyCode;\n }\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberFormat.numberFormatter(this.getCulture(), options || {}, cldrData);\n }\n /**\n * Returns the parser function for given options.\n * @param {DateFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function}\n */\n getDateParser(options) {\n return DateParser.dateParser(this.getCulture(), options || { skeleton: 'short', type: 'date' }, cldrData);\n }\n /**\n * Returns the parser function for given options.\n * @param {NumberFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function}\n */\n getNumberParser(options) {\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberParser.numberParser(this.getCulture(), options || { format: 'N' }, cldrData);\n }\n /**\n * Returns the formatted string based on format options.\n * @param {Number} value - Specifies the number to format.\n * @param {NumberFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string}\n */\n formatNumber(value, option) {\n return this.getNumberFormat(option)(value);\n }\n /**\n * Returns the formatted date string based on format options.\n * @param {Number} value - Specifies the number to format.\n * @param {DateFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string}\n */\n formatDate(value, option) {\n return this.getDateFormat(option)(value);\n }\n /**\n * Returns the date object for given date string and options.\n * @param {string} value - Specifies the string to parse.\n * @param {DateFormatOptions} option - Specifies the parse options in which the date string will be parsed.\n * @returns {Date}\n */\n parseDate(value, option) {\n return this.getDateParser(option)(value);\n }\n /**\n * Returns the number object from the given string value and options.\n * @param {string} value - Specifies the string to parse.\n * @param {NumberFormatOptions} option - Specifies the parse options in which the string number will be parsed.\n * @returns {number}\n */\n parseNumber(value, option) {\n return this.getNumberParser(option)(value);\n }\n /**\n * Returns Native Date Time Pattern\n * @param {DateFormatOptions} option - Specifies the parse options for resultant date time pattern.\n * @param {boolean} isExcelFormat - Specifies format value to be converted to excel pattern.\n * @returns {string}\n * @private\n */\n getDatePattern(option, isExcelFormat) {\n return IntlBase.getActualDateTimeFormat(this.getCulture(), option, cldrData, isExcelFormat);\n }\n /**\n * Returns Native Number Pattern\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @returns {string}\n * @private\n */\n getNumberPattern(option, isExcel) {\n return IntlBase.getActualNumberFormat(this.getCulture(), option, cldrData, isExcel);\n }\n /**\n * Returns the First Day of the Week\n * @returns {number}\n */\n getFirstDayOfWeek() {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n }\n getCulture() {\n return this.culture || defaultCulture;\n }\n}\n/**\n * Set the default culture to all EJ2 components\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n */\nfunction setCulture(cultureName) {\n defaultCulture = cultureName;\n onIntlChange.notify('notifyExternalChange', { 'locale': defaultCulture });\n}\n/**\n * Set the default currency code to all EJ2 components\n * @param {string} currencyCode Specifies the culture name to be set as default culture.\n * @returns {void}\n */\nfunction setCurrencyCode(currencyCode) {\n defaultCurrencyCode = currencyCode;\n onIntlChange.notify('notifyExternalChange', { 'currencyCode': defaultCurrencyCode });\n}\n/**\n * Load the CLDR data into context\n * @param {Object[]} obj Specifies the CLDR data's to be used for formatting and parser.\n * @returns {void}\n */\nfunction loadCldr(...data) {\n for (let obj of data) {\n extend(cldrData, obj, {}, true);\n }\n}\n/**\n * To enable or disable RTL functionality for all components globally.\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable rtl option.\n * @returns {void}\n */\nfunction enableRtl(status = true) {\n rightToLeft = status;\n onIntlChange.notify('notifyExternalChange', { enableRtl: rightToLeft });\n}\n/**\n * To get the numeric CLDR object for given culture\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @ignore\n * @private\n */\nfunction getNumericObject(locale, type) {\n /* tslint:disable no-any */\n let numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n let dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper[1]];\n let numSystem = getValue('defaultNumberingSystem', numObject);\n let symbPattern = isBlazor() ? getValue('numberSymbols', numObject) : getValue('symbols-numberSystem-' + numSystem, numObject);\n let pattern = IntlBase.getSymbolPattern(type || 'decimal', numSystem, numObject, false);\n return extend(symbPattern, IntlBase.getFormatData(pattern, true, '', true), { 'dateSeparator': IntlBase.getDateSeparator(dateObject) });\n}\n/**\n * To get the numeric CLDR number base object for given culture\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} currency - Specifies the currency for which numericObject to be returned.\n * @ignore\n * @private\n */\nfunction getNumberDependable(locale, currency) {\n let numObject = IntlBase.getDependables(cldrData, locale, '', true);\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n * @ignore\n * @private\n */\nfunction getDefaultDateObject(mode) {\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}\n\nconst blazorCultureFormats = {\n 'en-US': {\n 'd': 'M/d/y',\n 'D': 'EEEE, MMMM d, y',\n 'f': 'EEEE, MMMM d, y h:mm a',\n 'F': 'EEEE, MMMM d, y h:mm:s a',\n 'g': 'M/d/y h:mm a',\n 'G': 'M/d/yyyy h:mm:ss tt',\n 'm': 'MMMM d',\n 'M': 'MMMM d',\n 'r': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 'R': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 's': 'yyyy\\'-\\'MM\\'-\\'dd\\'T\\'HH\\':\\'mm\\':\\'ss',\n 't': 'h:mm tt',\n 'T': 'h:m:s tt',\n 'u': 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n 'U': 'dddd, MMMM d, yyyy h:mm:ss tt',\n 'y': 'MMMM yyyy',\n 'Y': 'MMMM yyyy'\n }\n};\n/**\n * Date base common constants and function for date parser and formatter.\n */\nvar IntlBase;\n(function (IntlBase) {\n // tslint:disable-next-line:max-line-length\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;\n const fractionRegex = /[0-9]/g;\n IntlBase.defaultCurrency = '$';\n const mapper = ['infinity', 'nan', 'group', 'decimal'];\n const patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;\n const patternMatch = {\n 'G': '',\n 'M': 'm',\n 'L': 'm',\n 'H': 'h',\n 'c': 'd',\n '\\'': '\"',\n ' a': ' AM/PM',\n 'yy': 'yy',\n 'y': 'yyyy',\n 'EEEE': 'dddd',\n 'E': 'ddd'\n };\n IntlBase.dateConverterMapper = /dddd|ddd/ig;\n const defaultFirstDay = 'sun';\n IntlBase.islamicRegex = /^islamic/;\n const firstDayMapper = {\n 'sun': 0,\n 'mon': 1,\n 'tue': 2,\n 'wed': 3,\n 'thu': 4,\n 'fri': 5,\n 'sat': 6\n };\n IntlBase.formatRegex = /(^[ncpae]{1})([0-1]?[0-9]|20)?$/i;\n IntlBase.currencyFormatRegex = /(^[ca]{1})([0-1]?[0-9]|20)?$/i;\n IntlBase.curWithoutNumberRegex = /(c|a)$/ig;\n const typeMapper = {\n '$': 'isCurrency',\n '%': 'isPercent',\n '-': 'isNegative',\n 0: 'nlead',\n 1: 'nend'\n };\n IntlBase.dateParseRegex = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];\n /* tslint:disable:quotemark */\n IntlBase.defaultObject = {\n 'dates': {\n 'calendars': {\n 'gregorian': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'narrow': {\n '1': 'J',\n '2': 'F',\n '3': 'M',\n '4': 'A',\n '5': 'M',\n '6': 'J',\n '7': 'J',\n '8': 'A',\n '9': 'S',\n '10': 'O',\n '11': 'N',\n '12': 'D'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n }\n },\n \"days\": {\n \"stand-alone\": {\n \"abbreviated\": {\n \"sun\": \"Sun\",\n \"mon\": \"Mon\",\n \"tue\": \"Tue\",\n \"wed\": \"Wed\",\n \"thu\": \"Thu\",\n \"fri\": \"Fri\",\n \"sat\": \"Sat\"\n },\n \"narrow\": {\n \"sun\": \"S\",\n \"mon\": \"M\",\n \"tue\": \"T\",\n \"wed\": \"W\",\n \"thu\": \"T\",\n \"fri\": \"F\",\n \"sat\": \"S\"\n },\n \"short\": {\n \"sun\": \"Su\",\n \"mon\": \"Mo\",\n \"tue\": \"Tu\",\n \"wed\": \"We\",\n \"thu\": \"Th\",\n \"fri\": \"Fr\",\n \"sat\": \"Sa\"\n },\n \"wide\": {\n \"sun\": \"Sunday\",\n \"mon\": \"Monday\",\n \"tue\": \"Tuesday\",\n \"wed\": \"Wednesday\",\n \"thu\": \"Thursday\",\n \"fri\": \"Friday\",\n \"sat\": \"Saturday\"\n }\n }\n },\n \"dayPeriods\": {\n \"format\": {\n \"wide\": {\n \"am\": \"AM\",\n \"pm\": \"PM\"\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'Before Christ',\n '0-alt-variant': 'Before Common Era',\n '1': 'Anno Domini',\n \"1-alt-variant\": \"Common Era\"\n },\n 'eraAbbr': {\n '0': 'BC',\n '0-alt-variant': 'BCE',\n '1': 'AD',\n '1-alt-variant': 'CE'\n },\n 'eraNarrow': {\n '0': 'B',\n '0-alt-variant': 'BCE',\n '1': 'A',\n '1-alt-variant': 'CE'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y',\n 'long': 'MMMM d, y',\n 'medium': 'MMM d, y',\n 'short': 'M/d/yy'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': \"{1} 'at' {0}\",\n 'long': \"{1} 'at' {0}\",\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'hmsv': 'h:mm:ss a v',\n 'Hmsv': 'HH:mm:ss v',\n 'hmv': 'h:mm a v',\n 'Hmv': 'HH:mm v',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y',\n 'yM': 'M/y',\n 'yMd': 'M/d/y',\n 'yMEd': 'E, M/d/y',\n 'yMMM': 'MMM y',\n 'yMMMd': 'MMM d, y',\n 'yMMMEd': 'E, MMM d, y',\n 'yMMMM': 'MMMM y',\n },\n }\n },\n \"islamic\": {\n \"months\": {\n \"stand-alone\": {\n \"abbreviated\": {\n \"1\": \"Muh.\",\n \"2\": \"Saf.\",\n \"3\": \"Rab. I\",\n \"4\": \"Rab. II\",\n \"5\": \"Jum. I\",\n \"6\": \"Jum. II\",\n \"7\": \"Raj.\",\n \"8\": \"Sha.\",\n \"9\": \"Ram.\",\n \"10\": \"Shaw.\",\n \"11\": \"Dhuʻl-Q.\",\n \"12\": \"Dhuʻl-H.\"\n },\n \"narrow\": {\n \"1\": \"1\",\n \"2\": \"2\",\n \"3\": \"3\",\n \"4\": \"4\",\n \"5\": \"5\",\n \"6\": \"6\",\n \"7\": \"7\",\n \"8\": \"8\",\n \"9\": \"9\",\n \"10\": \"10\",\n \"11\": \"11\",\n \"12\": \"12\"\n },\n \"wide\": {\n \"1\": \"Muharram\",\n \"2\": \"Safar\",\n \"3\": \"Rabiʻ I\",\n \"4\": \"Rabiʻ II\",\n \"5\": \"Jumada I\",\n \"6\": \"Jumada II\",\n \"7\": \"Rajab\",\n \"8\": \"Shaʻban\",\n \"9\": \"Ramadan\",\n \"10\": \"Shawwal\",\n \"11\": \"Dhuʻl-Qiʻdah\",\n \"12\": \"Dhuʻl-Hijjah\"\n }\n }\n },\n \"days\": {\n \"stand-alone\": {\n \"abbreviated\": {\n \"sun\": \"Sun\",\n \"mon\": \"Mon\",\n \"tue\": \"Tue\",\n \"wed\": \"Wed\",\n \"thu\": \"Thu\",\n \"fri\": \"Fri\",\n \"sat\": \"Sat\"\n },\n \"narrow\": {\n \"sun\": \"S\",\n \"mon\": \"M\",\n \"tue\": \"T\",\n \"wed\": \"W\",\n \"thu\": \"T\",\n \"fri\": \"F\",\n \"sat\": \"S\"\n },\n \"short\": {\n \"sun\": \"Su\",\n \"mon\": \"Mo\",\n \"tue\": \"Tu\",\n \"wed\": \"We\",\n \"thu\": \"Th\",\n \"fri\": \"Fr\",\n \"sat\": \"Sa\"\n },\n \"wide\": {\n \"sun\": \"Sunday\",\n \"mon\": \"Monday\",\n \"tue\": \"Tuesday\",\n \"wed\": \"Wednesday\",\n \"thu\": \"Thursday\",\n \"fri\": \"Friday\",\n \"sat\": \"Saturday\"\n }\n }\n },\n \"dayPeriods\": {\n \"format\": {\n \"wide\": {\n \"am\": \"AM\",\n \"pm\": \"PM\"\n }\n }\n },\n \"eras\": {\n \"eraNames\": {\n \"0\": \"AH\"\n },\n \"eraAbbr\": {\n \"0\": \"AH\"\n },\n \"eraNarrow\": {\n \"0\": \"AH\"\n }\n },\n \"dateFormats\": {\n \"full\": \"EEEE, MMMM d, y G\",\n \"long\": \"MMMM d, y G\",\n \"medium\": \"MMM d, y G\",\n \"short\": \"M/d/y GGGGG\"\n },\n \"timeFormats\": {\n \"full\": \"h:mm:ss a zzzz\",\n \"long\": \"h:mm:ss a z\",\n \"medium\": \"h:mm:ss a\",\n \"short\": \"h:mm a\"\n },\n \"dateTimeFormats\": {\n \"full\": \"{1} 'at' {0}\",\n \"long\": \"{1} 'at' {0}\",\n \"medium\": \"{1}, {0}\",\n \"short\": \"{1}, {0}\",\n \"availableFormats\": {\n \"d\": \"d\",\n \"E\": \"ccc\",\n \"Ed\": \"d E\",\n \"Ehm\": \"E h:mm a\",\n \"EHm\": \"E HH:mm\",\n \"Ehms\": \"E h:mm:ss a\",\n \"EHms\": \"E HH:mm:ss\",\n \"Gy\": \"y G\",\n \"GyMMM\": \"MMM y G\",\n \"GyMMMd\": \"MMM d, y G\",\n \"GyMMMEd\": \"E, MMM d, y G\",\n \"h\": \"h a\",\n \"H\": \"HH\",\n \"hm\": \"h:mm a\",\n \"Hm\": \"HH:mm\",\n \"hms\": \"h:mm:ss a\",\n \"Hms\": \"HH:mm:ss\",\n \"M\": \"L\",\n \"Md\": \"M/d\",\n \"MEd\": \"E, M/d\",\n \"MMM\": \"LLL\",\n \"MMMd\": \"MMM d\",\n \"MMMEd\": \"E, MMM d\",\n \"MMMMd\": \"MMMM d\",\n \"ms\": \"mm:ss\",\n \"y\": \"y G\",\n \"yyyy\": \"y G\",\n \"yyyyM\": \"M/y GGGGG\",\n \"yyyyMd\": \"M/d/y GGGGG\",\n \"yyyyMEd\": \"E, M/d/y GGGGG\",\n \"yyyyMMM\": \"MMM y G\",\n \"yyyyMMMd\": \"MMM d, y G\",\n \"yyyyMMMEd\": \"E, MMM d, y G\",\n \"yyyyMMMM\": \"MMMM y G\",\n \"yyyyQQQ\": \"QQQ y G\",\n \"yyyyQQQQ\": \"QQQQ y G\"\n }\n }\n }\n },\n 'timeZoneNames': {\n \"hourFormat\": \"+HH:mm;-HH:mm\",\n \"gmtFormat\": \"GMT{0}\",\n \"gmtZeroFormat\": \"GMT\",\n }\n },\n 'numbers': {\n 'currencies': {\n 'USD': {\n 'displayName': 'US Dollar',\n 'symbol': '$',\n 'symbol-alt-narrow': '$'\n },\n 'EUR': {\n 'displayName': 'Euro',\n 'symbol': '€',\n 'symbol-alt-narrow': '€'\n },\n 'GBP': {\n 'displayName': 'British Pound',\n 'symbol-alt-narrow': '£'\n },\n },\n 'defaultNumberingSystem': 'latn',\n 'minimumGroupingDigits': '1',\n 'symbols-numberSystem-latn': {\n 'decimal': '.',\n 'group': ',',\n 'list': ';',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'exponential': 'E',\n 'superscriptingExponent': '×',\n 'perMille': '‰',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'timeSeparator': ':'\n },\n 'decimalFormats-numberSystem-latn': {\n 'standard': '#,##0.###',\n },\n 'percentFormats-numberSystem-latn': {\n 'standard': '#,##0%'\n },\n 'currencyFormats-numberSystem-latn': {\n 'standard': '¤#,##0.00',\n 'accounting': '¤#,##0.00;(¤#,##0.00)'\n },\n 'scientificFormats-numberSystem-latn': {\n 'standard': '#E0'\n }\n }\n };\n IntlBase.blazorDefaultObject = {\n \"numbers\": {\n \"mapper\": {\n \"0\": \"0\",\n \"1\": \"1\",\n \"2\": \"2\",\n \"3\": \"3\",\n \"4\": \"4\",\n \"5\": \"5\",\n \"6\": \"6\",\n \"7\": \"7\",\n \"8\": \"8\",\n \"9\": \"9\"\n },\n \"mapperDigits\": \"0123456789\",\n \"numberSymbols\": {\n \"decimal\": \".\",\n \"group\": \",\",\n \"plusSign\": \"+\",\n \"minusSign\": \"-\",\n \"percentSign\": \"%\",\n \"nan\": \"NaN\",\n \"timeSeparator\": \":\",\n \"infinity\": \"∞\"\n },\n \"timeSeparator\": \":\",\n \"currencySymbol\": \"$\",\n \"currencypData\": {\n \"nlead\": \"$\",\n \"nend\": \"\",\n \"groupSeparator\": \",\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"percentpData\": {\n \"nlead\": \"\",\n \"nend\": \"%\",\n \"groupSeparator\": \",\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"percentnData\": {\n \"nlead\": \"-\",\n \"nend\": \"%\",\n \"groupSeparator\": \",\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"currencynData\": {\n \"nlead\": \"($\",\n \"nend\": \")\",\n \"groupSeparator\": \",\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"decimalnData\": {\n \"nlead\": \"-\",\n \"nend\": \"\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"decimalpData\": {\n \"nlead\": \"\",\n \"nend\": \"\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n }\n },\n \"dates\": {\n \"dayPeriods\": {\n \"am\": \"AM\",\n \"pm\": \"PM\"\n },\n \"dateSeperator\": \"/\",\n \"days\": {\n \"abbreviated\": {\n \"sun\": \"Sun\",\n \"mon\": \"Mon\",\n \"tue\": \"Tue\",\n \"wed\": \"Wed\",\n \"thu\": \"Thu\",\n \"fri\": \"Fri\",\n \"sat\": \"Sat\"\n },\n \"short\": {\n \"sun\": \"Su\",\n \"mon\": \"Mo\",\n \"tue\": \"Tu\",\n \"wed\": \"We\",\n \"thu\": \"Th\",\n \"fri\": \"Fr\",\n \"sat\": \"Sa\"\n },\n \"wide\": {\n \"sun\": \"Sunday\",\n \"mon\": \"Monday\",\n \"tue\": \"Tuesday\",\n \"wed\": \"Wednesday\",\n \"thu\": \"Thursday\",\n \"fri\": \"Friday\",\n \"sat\": \"Saturday\"\n }\n },\n \"months\": {\n \"abbreviated\": {\n \"1\": \"Jan\",\n \"2\": \"Feb\",\n \"3\": \"Mar\",\n \"4\": \"Apr\",\n \"5\": \"May\",\n \"6\": \"Jun\",\n \"7\": \"Jul\",\n \"8\": \"Aug\",\n \"9\": \"Sep\",\n \"10\": \"Oct\",\n \"11\": \"Nov\",\n \"12\": \"Dec\"\n },\n \"wide\": {\n \"1\": \"January\",\n \"2\": \"February\",\n \"3\": \"March\",\n \"4\": \"April\",\n \"5\": \"May\",\n \"6\": \"June\",\n \"7\": \"July\",\n \"8\": \"August\",\n \"9\": \"September\",\n \"10\": \"October\",\n \"11\": \"November\",\n \"12\": \"December\"\n }\n },\n \"eras\": {\n \"1\": \"AD\"\n }\n }\n };\n /* tslint:enable:quotemark */\n IntlBase.monthIndex = {\n 3: 'abbreviated',\n 4: 'wide',\n 5: 'narrow',\n 1: 'abbreviated'\n };\n /**\n *\n */\n IntlBase.month = 'months';\n IntlBase.days = 'days';\n /**\n * Default numerber Object\n */\n IntlBase.patternMatcher = {\n C: 'currency',\n P: 'percent',\n N: 'decimal',\n A: 'currency',\n E: 'scientific'\n };\n /**\n * Returns the resultant pattern based on the skeleton, dateObject and the type provided\n * @private\n * @param {string} skeleton\n * @param {Object} dateObject\n * @param {string} type\n * @returns {string}\n */\n function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {\n let resPattern;\n let iType = type || 'date';\n if (blazorCulture) {\n resPattern = compareBlazorDateFormats({ skeleton: skeleton }, blazorCulture).format ||\n compareBlazorDateFormats({ skeleton: 'd' }, 'en-US').format;\n }\n else {\n if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {\n resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);\n if (iType === 'dateTime') {\n let dPattern = getValue('dateFormats.' + skeleton, dateObject);\n let tPattern = getValue('timeFormats.' + skeleton, dateObject);\n resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);\n }\n }\n else {\n resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);\n }\n if (isUndefined(resPattern) && skeleton === 'yMd') {\n resPattern = 'M/d/y';\n }\n }\n return resPattern;\n }\n IntlBase.getResultantPattern = getResultantPattern;\n /**\n * Returns the dependable object for provided cldr data and culture\n * @private\n * @param {Object} cldr\n * @param {string} culture\n * @param {boolean} isNumber\n * @returns {Dependables}\n */\n function getDependables(cldr, culture, mode, isNumber) {\n let ret = {};\n let calendartype = mode || 'gregorian';\n ret.parserObject = ParserBase.getMainObject(cldr, culture) || (isBlazor() ? IntlBase.blazorDefaultObject : IntlBase.defaultObject);\n if (isNumber) {\n ret.numericObject = getValue('numbers', ret.parserObject);\n }\n else {\n let dateString = isBlazor() ? 'dates' : ('dates.calendars.' + calendartype);\n ret.dateObject = getValue(dateString, ret.parserObject);\n }\n return ret;\n }\n IntlBase.getDependables = getDependables;\n /**\n * Returns the symbol pattern for provided parameters\n * @private\n * @param {string} type\n * @param {string} numSystem\n * @param {Object} obj\n * @param {boolean} isAccount\n * @returns {string}\n */\n function getSymbolPattern(type, numSystem, obj, isAccount) {\n return getValue(type + 'Formats-numberSystem-' +\n numSystem + (isAccount ? '.accounting' : '.standard'), obj) || (isAccount ? getValue(type + 'Formats-numberSystem-' +\n numSystem + '.standard', obj) : '');\n }\n IntlBase.getSymbolPattern = getSymbolPattern;\n function ConvertDateToWeekFormat(format) {\n let convertMapper = format.match(IntlBase.dateConverterMapper);\n if (convertMapper && isBlazor()) {\n let tempString = convertMapper[0].length === 3 ? 'EEE' : 'EEEE';\n return format.replace(IntlBase.dateConverterMapper, tempString);\n }\n return format;\n }\n IntlBase.ConvertDateToWeekFormat = ConvertDateToWeekFormat;\n function compareBlazorDateFormats(formatOptions, culture) {\n let format = formatOptions.format || formatOptions.skeleton;\n let curFormatMapper = getValue((culture || 'en-US') + '.' + format, blazorCultureFormats);\n if (!curFormatMapper) {\n curFormatMapper = getValue('en-US.' + format, blazorCultureFormats);\n }\n if (curFormatMapper) {\n curFormatMapper = ConvertDateToWeekFormat(curFormatMapper);\n formatOptions.format = curFormatMapper.replace(/tt/, 'a');\n }\n return formatOptions;\n }\n IntlBase.compareBlazorDateFormats = compareBlazorDateFormats;\n /**\n * Returns proper numeric skeleton\n * @private\n * @param {string} skeleton\n * @returns {NumericSkeleton}\n */\n function getProperNumericSkeleton(skeleton) {\n let matches = skeleton.match(IntlBase.formatRegex);\n let ret = {};\n let pattern = matches[1].toUpperCase();\n ret.isAccount = (pattern === 'A');\n /* tslint:disable no-any */\n ret.type = IntlBase.patternMatcher[pattern];\n if (skeleton.length > 1) {\n ret.fractionDigits = parseInt(matches[2], 10);\n }\n return ret;\n }\n IntlBase.getProperNumericSkeleton = getProperNumericSkeleton;\n /**\n * Returns format data for number formatting like minimum fraction, maximum fraction, etc..,\n * @private\n * @param {string} pattern\n * @param {boolean} needFraction\n * @param {string} cSymbol\n * @param {boolean} fractionOnly\n * @returns {NegativeData}\n */\n function getFormatData(pattern, needFraction, cSymbol, fractionOnly) {\n let nData = fractionOnly ? {} : { nlead: '', nend: '' };\n let match = pattern.match(IntlBase.customRegex);\n if (match) {\n if (!fractionOnly) {\n nData.nlead = changeCurrencySymbol(match[1], cSymbol);\n nData.nend = changeCurrencySymbol(match[10], cSymbol);\n nData.groupPattern = match[4];\n }\n let fraction = match[7];\n if (fraction && needFraction) {\n let fmatch = fraction.match(fractionRegex);\n if (!isNullOrUndefined(fmatch)) {\n nData.minimumFraction = fmatch.length;\n }\n else {\n nData.minimumFraction = 0;\n }\n nData.maximumFraction = fraction.length - 1;\n }\n }\n return nData;\n }\n IntlBase.getFormatData = getFormatData;\n /**\n * Changes currency symbol\n * @private\n * @param {string} val\n * @param {string} sym\n * @returns {string}\n */\n function changeCurrencySymbol(val, sym) {\n if (val) {\n return val.replace(IntlBase.defaultCurrency, sym);\n }\n return '';\n }\n /**\n * Returns currency symbol based on currency code\n * @private\n * @param {Object} numericObject\n * @param {string} currencyCode\n * @returns {string}\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol) {\n let symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n let getCurrency = getValue('currencies.' + currencyCode + symbol, numericObject) ||\n getValue('currencies.' + currencyCode + '.symbol-alt-narrow', numericObject) || '$';\n return getCurrency;\n }\n IntlBase.getCurrencySymbol = getCurrencySymbol;\n /**\n * Returns formatting options for custom number format\n * @private\n * @param {string} format\n * @param {CommonOptions} dOptions\n * @param {Dependables} obj\n * @returns {GenericFormatOptions}\n */\n function customFormat(format, dOptions, obj) {\n let options = {};\n let formatSplit = format.split(';');\n let data = ['pData', 'nData', 'zeroData'];\n for (let i = 0; i < formatSplit.length; i++) {\n options[data[i]] = customNumberFormat(formatSplit[i], dOptions, obj);\n }\n if (isNullOrUndefined(options.nData)) {\n options.nData = extend({}, options.pData);\n options.nData.nlead = isNullOrUndefined(dOptions) ? '-' + options.nData.nlead : dOptions.minusSymbol + options.nData.nlead;\n }\n return options;\n }\n IntlBase.customFormat = customFormat;\n /**\n * Returns custom formatting options\n * @private\n * @param {string} format\n * @param {CommonOptions} dOptions\n * @param {Object} numObject\n * @returns {NegativeData}\n */\n function customNumberFormat(format, dOptions, numObject) {\n let cOptions = { type: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 };\n let pattern = format.match(IntlBase.customRegex);\n if (isNullOrUndefined(pattern) || (pattern[5] === '' && format !== 'N/A')) {\n cOptions.type = undefined;\n return cOptions;\n }\n cOptions.nlead = pattern[1];\n cOptions.nend = pattern[10];\n let integerPart = pattern[6];\n cOptions.useGrouping = integerPart.indexOf(',') !== -1;\n integerPart = integerPart.replace(/,/g, '');\n let fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n }\n else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n let symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n cOptions.groupSeparator = dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/\\'/g, '');\n cOptions.nend = cOptions.nend.replace(/\\'/g, '');\n }\n return cOptions;\n }\n /**\n * Returns formatting options for currency or percent type\n * @private\n * @param {string[]} parts\n * @param {string} actual\n * @param {string} symbol\n * @returns {NegativeData}\n */\n function isCurrencyPercent(parts, actual, symbol) {\n let options = { nlead: parts[0], nend: parts[1] };\n for (let i = 0; i < 2; i++) {\n let part = parts[i];\n let loc = part.indexOf(actual);\n if ((loc !== -1) && ((loc < part.indexOf('\\'')) || (loc > part.lastIndexOf('\\'')))) {\n options[typeMapper[i]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n options[typeMapper[actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n * @private\n * @param {Object} dateObj\n * @returns {string}\n */\n function getDateSeparator(dateObj) {\n let value = (getValue('dateFormats.short', dateObj) || '').match(/[d‏M‏]([^d‏M])[d‏M‏]/i);\n return value ? value[1] : '/';\n }\n IntlBase.getDateSeparator = getDateSeparator;\n /**\n * Returns Native Date Time pattern\n * @private\n * @param {string} culture\n * @param {DateFormatOptions} options\n * @param {Object} cldr\n * @returns {string}\n */\n function getActualDateTimeFormat(culture, options, cldr, isExcelFormat) {\n let dependable = getDependables(cldr, culture, options.calendar);\n if (isBlazor()) {\n options = compareBlazorDateFormats(options, culture);\n }\n let actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);\n if (isExcelFormat) {\n actualPattern = actualPattern.replace(patternRegex, (pattern) => {\n return patternMatch[pattern];\n });\n if (actualPattern.indexOf('z') !== -1) {\n let tLength = actualPattern.match(/z/g).length;\n let timeZonePattern;\n let options = { 'timeZone': {} };\n options.numMapper = ParserBase.getNumberMapper(dependable.parserObject, ParserBase.getNumberingSystem(cldr));\n options.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n let value = new Date();\n let timezone = value.getTimezoneOffset();\n let pattern = (tLength < 4) ? '+H;-H' : options.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options.numMapper.timeSeparator);\n if (timezone === 0) {\n timeZonePattern = options.timeZone.gmtZeroFormat;\n }\n else {\n timeZonePattern = DateFormat.getTimeZoneValue(timezone, pattern);\n timeZonePattern = options.timeZone.gmtFormat.replace(/\\{0\\}/, timeZonePattern);\n }\n actualPattern = actualPattern.replace(/[z]+/, '\"' + timeZonePattern + '\"');\n }\n actualPattern = actualPattern.replace(/ $/, '');\n }\n return actualPattern;\n }\n IntlBase.getActualDateTimeFormat = getActualDateTimeFormat;\n // tslint:disable-next-line:no-any\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n // tslint:disable-next-line:no-any\n let split = actual.split(',');\n actual = (split[0] + getValue('numberMapper.numberSymbols.group', option) +\n split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option)));\n }\n else {\n actual = actual.replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n }\n return actual;\n }\n /**\n * Returns Native Number pattern\n * @private\n * @param {string} culture\n * @param {NumberFormatOptions} options\n * @param {Object} cldr\n * @returns {string}\n */\n function getActualNumberFormat(culture, options, cldr, isExcel) {\n let dependable = getDependables(cldr, culture, '', true);\n let parseOptions = { custom: true };\n let numrericObject = dependable.numericObject;\n let minFrac;\n let curObj = {};\n let curMatch = (options.format || '').match(IntlBase.currencyFormatRegex);\n let type = IntlBase.formatRegex.test(options.format) ? getProperNumericSkeleton(options.format || 'N') : {};\n let dOptions = {};\n if (curMatch) {\n dOptions.numberMapper = isBlazor() ?\n extend({}, dependable.numericObject) :\n ParserBase.getNumberMapper(dependable.parserObject, ParserBase.getNumberingSystem(cldr), true);\n let curCode = isBlazor() ? getValue('currencySymbol', dependable.numericObject) :\n getCurrencySymbol(dependable.numericObject, options.currency || defaultCurrencyCode, options.altSymbol);\n let symbolPattern = getSymbolPattern('currency', dOptions.numberMapper.numberSystem, dependable.numericObject, (/a/i).test(options.format));\n symbolPattern = symbolPattern.replace(/\\u00A4/g, curCode);\n let split = symbolPattern.split(';');\n curObj.hasNegativePattern = isBlazor() ? true : (split.length > 1);\n curObj.nData = isBlazor() ? getValue(type.type + 'nData', numrericObject) :\n getFormatData(split[1] || '-' + split[0], true, curCode);\n curObj.pData = isBlazor() ? getValue(type.type + 'pData', numrericObject) :\n getFormatData(split[0], false, curCode);\n if (!curMatch[2] && !options.minimumFractionDigits && !options.maximumFractionDigits) {\n minFrac = getFormatData(symbolPattern.split(';')[0], true, '', true).minimumFraction;\n }\n }\n let actualPattern;\n if ((IntlBase.formatRegex.test(options.format)) || !(options.format)) {\n extend(parseOptions, getProperNumericSkeleton(options.format || 'N'));\n parseOptions.custom = false;\n actualPattern = '###0';\n if (parseOptions.fractionDigits || options.minimumFractionDigits || options.maximumFractionDigits || minFrac) {\n let defaultMinimum = 0;\n if (parseOptions.fractionDigits) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseOptions.fractionDigits;\n }\n actualPattern = fractionDigitsPattern(actualPattern, minFrac || parseOptions.fractionDigits ||\n options.minimumFractionDigits || defaultMinimum, options.maximumFractionDigits || defaultMinimum);\n }\n if (options.minimumIntegerDigits) {\n actualPattern = minimumIntegerPattern(actualPattern, options.minimumIntegerDigits);\n }\n if (options.useGrouping) {\n actualPattern = groupingPattern(actualPattern);\n }\n if (parseOptions.type === 'currency' || (parseOptions.type && isBlazor())) {\n if (isBlazor() && parseOptions.type !== 'currency') {\n curObj.pData = getValue(parseOptions.type + 'pData', numrericObject);\n curObj.nData = getValue(parseOptions.type + 'nData', numrericObject);\n }\n let cPattern = actualPattern;\n actualPattern = curObj.pData.nlead + cPattern + curObj.pData.nend;\n if (curObj.hasNegativePattern || isBlazor()) {\n actualPattern += ';' + curObj.nData.nlead + cPattern + curObj.nData.nend;\n }\n }\n if (parseOptions.type === 'percent' && !isBlazor()) {\n actualPattern += ' %';\n }\n }\n else {\n actualPattern = options.format.replace(/\\'/g, '\"');\n }\n if (Object.keys(dOptions).length > 0) {\n actualPattern = !isExcel ? processSymbol(actualPattern, dOptions) : actualPattern;\n }\n return actualPattern;\n }\n IntlBase.getActualNumberFormat = getActualNumberFormat;\n function fractionDigitsPattern(pattern, minDigits, maxDigits) {\n pattern += '.';\n for (let a = 0; a < minDigits; a++) {\n pattern += '0';\n }\n if (minDigits < maxDigits) {\n let diff = maxDigits - minDigits;\n for (let b = 0; b < diff; b++) {\n pattern += '#';\n }\n }\n return pattern;\n }\n function minimumIntegerPattern(pattern, digits) {\n let temp = pattern.split('.');\n let integer = '';\n for (let x = 0; x < digits; x++) {\n integer += '0';\n }\n return temp[1] ? (integer + '.' + temp[1]) : integer;\n }\n function groupingPattern(pattern) {\n let temp = pattern.split('.');\n let integer = temp[0];\n let no = 3 - integer.length % 3;\n let hash = (no && no === 1) ? '#' : (no === 2 ? '##' : '');\n integer = hash + integer;\n pattern = '';\n for (let x = integer.length - 1; x > 0; x = x - 3) {\n pattern = ',' + integer[x - 2] + integer[x - 1] + integer[x] + pattern;\n }\n pattern = pattern.slice(1);\n return temp[1] ? (pattern + '.' + temp[1]) : pattern;\n }\n function getWeekData(culture, cldr) {\n let firstDay = defaultFirstDay;\n let mapper = getValue('supplemental.weekData.firstDay', cldr);\n let iCulture = culture;\n if ((/en-/).test(iCulture)) {\n iCulture = iCulture.slice(3);\n }\n iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);\n if (mapper) {\n firstDay = mapper[iCulture] || defaultFirstDay;\n }\n return firstDayMapper[firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param pData\n * @param aCurrency\n * @param rCurrency\n */\n function replaceBlazorCurrency(pData, aCurrency, rCurrency) {\n let iCurrency = getBlazorCurrencySymbol(rCurrency);\n if (aCurrency !== iCurrency) {\n for (let data of pData) {\n data.nend = data.nend.replace(aCurrency, iCurrency);\n data.nlead = data.nlead.replace(aCurrency, iCurrency);\n }\n }\n }\n IntlBase.replaceBlazorCurrency = replaceBlazorCurrency;\n /**\n * @private\n */\n function getWeekOfYear(date) {\n let newYear = new Date(date.getFullYear(), 0, 1);\n let day = newYear.getDay();\n let weeknum;\n day = (day >= 0 ? day : day + 7);\n let daynum = Math.floor((date.getTime() - newYear.getTime() -\n (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\n if (day < 4) {\n weeknum = Math.floor((daynum + day - 1) / 7) + 1;\n if (weeknum > 52) {\n let nYear = new Date(this.getFullYear() + 1, 0, 1);\n let nday = nYear.getDay();\n nday = nday >= 0 ? nday : nday + 7;\n weeknum = nday < 4 ? 1 : 53;\n }\n }\n else {\n weeknum = Math.floor((daynum + day - 1) / 7);\n }\n return weeknum;\n }\n IntlBase.getWeekOfYear = getWeekOfYear;\n})(IntlBase || (IntlBase = {}));\n\nconst headerRegex = /^(.*?):[ \\t]*([^\\r\\n]*)$/gm;\nconst defaultType = 'GET';\n/**\n * Ajax class provides ability to make asynchronous HTTP request to the server\n * ```typescript\n * var ajax = new Ajax(\"index.html\", \"GET\", true);\n * ajax.send().then(\n * function (value) {\n * console.log(value);\n * },\n * function (reason) {\n * console.log(reason);\n * });\n * ```\n */\nclass Ajax {\n /**\n * Constructor for Ajax class\n * @param {string|Object} options?\n * @param {string} type?\n * @param {boolean} async?\n * @returns defaultType\n */\n constructor(options, type, async, contentType) {\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n * @default true\n */\n this.mode = true;\n /**\n * A boolean value indicating whether to ignore the promise reject.\n * @private\n * @default true\n */\n this.emitError = true;\n this.options = {};\n if (typeof options === 'string') {\n this.url = options;\n this.type = type ? type.toUpperCase() : defaultType;\n this.mode = !isNullOrUndefined(async) ? async : true;\n }\n else if (typeof options === 'object') {\n this.options = options;\n merge(this, this.options);\n }\n this.type = this.type ? this.type.toUpperCase() : defaultType;\n this.contentType = (this.contentType !== undefined) ? this.contentType : contentType;\n }\n /**\n * Send the request to server.\n * @param {any} data - To send the user data\n * @return {Promise}\n */\n send(data) {\n this.data = isNullOrUndefined(data) ? this.data : data;\n let eventArgs = {\n cancel: false,\n httpRequest: null\n };\n let promise = new Promise((resolve, reject) => {\n this.httpRequest = new XMLHttpRequest();\n this.httpRequest.onreadystatechange = () => { this.stateChange(resolve, reject); };\n if (!isNullOrUndefined(this.onLoad)) {\n this.httpRequest.onload = this.onLoad;\n }\n if (!isNullOrUndefined(this.onProgress)) {\n this.httpRequest.onprogress = this.onProgress;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(this.onAbort)) {\n this.httpRequest.onabort = this.onAbort;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(this.onError)) {\n this.httpRequest.onerror = this.onError;\n }\n //** Upload Events **/\n /* istanbul ignore next */\n if (!isNullOrUndefined(this.onUploadProgress)) {\n this.httpRequest.upload.onprogress = this.onUploadProgress;\n }\n this.httpRequest.open(this.type, this.url, this.mode);\n // Set default headers\n if (!isNullOrUndefined(this.data) && this.contentType !== null) {\n this.httpRequest.setRequestHeader('Content-Type', this.contentType || 'application/json; charset=utf-8');\n }\n if (this.beforeSend) {\n eventArgs.httpRequest = this.httpRequest;\n this.beforeSend(eventArgs);\n }\n if (!eventArgs.cancel) {\n this.httpRequest.send(!isNullOrUndefined(this.data) ? this.data : null);\n }\n });\n return promise;\n }\n successHandler(data) {\n if (this.onSuccess) {\n this.onSuccess(data, this);\n }\n return data;\n }\n failureHandler(reason) {\n if (this.onFailure) {\n this.onFailure(this.httpRequest);\n }\n return reason;\n }\n stateChange(resolve, reject) {\n let data = this.httpRequest.responseText;\n if (this.dataType && this.dataType.toLowerCase() === 'json') {\n if (data === '') {\n data = undefined;\n }\n else {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // no exception handle\n }\n }\n }\n if (this.httpRequest.readyState === 4) {\n //success range should be 200 to 299\n if ((this.httpRequest.status >= 200 && this.httpRequest.status <= 299) || this.httpRequest.status === 304) {\n resolve(this.successHandler(data));\n }\n else {\n if (this.emitError) {\n reject(new Error(this.failureHandler(this.httpRequest.statusText)));\n }\n else {\n resolve();\n }\n }\n }\n }\n /**\n * To get the response header from XMLHttpRequest\n * @param {string} key Key to search in the response header\n * @returns {string}\n */\n getResponseHeader(key) {\n let responseHeaders;\n let header;\n responseHeaders = {};\n let headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n while (headers) {\n responseHeaders[headers[1].toLowerCase()] = headers[2];\n headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n }\n header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n }\n}\n\nconst REGX_MOBILE = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i;\nconst REGX_IE = /msie|trident/i;\nconst REGX_IE11 = /Trident\\/7\\./;\nconst REGX_IOS = /(ipad|iphone|ipod touch)/i;\nconst REGX_IOS7 = /(ipad|iphone|ipod touch);.*os 7_\\d|(ipad|iphone|ipod touch);.*os 8_\\d/i;\nconst REGX_ANDROID = /android/i;\nconst REGX_WINDOWS = /trident|windows phone|edge/i;\nconst REGX_VERSION = /(version)[ \\/]([\\w.]+)/i;\nconst REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ \\/]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ \\/]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ \\/]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ \\/]([\\w.]+)/i,\n SAFARI: /(safari)[ \\/]([\\w.]+)/i,\n WEBKIT: /(webkit)[ \\/]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.browserDetails = window.browserDetails || {};\n}\n/**\n * Get configuration details for Browser\n * @private\n */\nclass Browser {\n static extractBrowserDetail() {\n let browserInfo = { culture: {} };\n let keys = Object.keys(REGX_BROWSER);\n let clientInfo = [];\n for (let key of keys) {\n clientInfo = Browser.userAgent.match(REGX_BROWSER[key]);\n if (clientInfo) {\n browserInfo.name = (clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase());\n browserInfo.name = (clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name);\n browserInfo.version = clientInfo[2];\n browserInfo.culture.name = browserInfo.culture.language = navigator.language;\n if (!!Browser.userAgent.match(REGX_IE11)) {\n browserInfo.name = 'msie';\n break;\n }\n let version = Browser.userAgent.match(REGX_VERSION);\n if (browserInfo.name === 'safari' && version) {\n browserInfo.version = version[2];\n }\n break;\n }\n }\n return browserInfo;\n }\n /**\n * To get events from the browser\n * @param {string} event - type of event triggered.\n * @returns {Boolean}\n */\n static getEvent(event) {\n // tslint:disable-next-line:no-any\n let events = {\n start: {\n isPointer: 'pointerdown', isTouch: 'touchstart', isDevice: 'mousedown'\n },\n move: {\n isPointer: 'pointermove', isTouch: 'touchmove', isDevice: 'mousemove'\n },\n end: {\n isPointer: 'pointerup', isTouch: 'touchend', isDevice: 'mouseup'\n },\n cancel: {\n isPointer: 'pointercancel', isTouch: 'touchcancel', isDevice: 'mouseleave'\n }\n };\n return (Browser.isPointer ? events[event].isPointer :\n (Browser.isTouch ? events[event].isTouch + (!Browser.isDevice ? ' ' + events[event].isDevice : '')\n : events[event].isDevice));\n }\n /**\n * To get the Touch start event from browser\n * @returns {string}\n */\n static getTouchStartEvent() {\n return Browser.getEvent('start');\n }\n /**\n * To get the Touch end event from browser\n * @returns {string}\n */\n static getTouchEndEvent() {\n return Browser.getEvent('end');\n }\n /**\n * To get the Touch move event from browser\n * @returns {string}\n */\n static getTouchMoveEvent() {\n return Browser.getEvent('move');\n }\n /**\n * To cancel the touch event from browser\n * @returns {string}\n */\n static getTouchCancelEvent() {\n return Browser.getEvent('cancel');\n }\n /**\n * To get the value based on provided key and regX\n * @param {string} key\n * @param {RegExp} regX\n * @returns {Object}\n */\n static getValue(key, regX) {\n let browserDetails = window.browserDetails;\n if ('undefined' === typeof browserDetails[key]) {\n return browserDetails[key] = regX.test(Browser.userAgent);\n }\n return browserDetails[key];\n }\n //Properties \n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n */\n static set userAgent(uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n }\n static get userAgent() {\n return Browser.uA;\n }\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n * @returns BrowserInfo\n */\n static get info() {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n }\n /**\n * Property is to get whether the userAgent is based IE.\n */\n static get isIE() {\n return Browser.getValue('isIE', REGX_IE);\n }\n /**\n * Property is to get whether the browser has touch support.\n */\n static get isTouch() {\n if (isUndefined(window.browserDetails.isTouch)) {\n return (window.browserDetails.isTouch =\n ('ontouchstart' in window.navigator) ||\n (window &&\n window.navigator &&\n (window.navigator.maxTouchPoints > 0)) || ('ontouchstart' in window));\n }\n return window.browserDetails.isTouch;\n }\n /**\n * Property is to get whether the browser has Pointer support.\n */\n static get isPointer() {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = ('pointerEnabled' in window.navigator);\n }\n return window.browserDetails.isPointer;\n }\n /**\n * Property is to get whether the browser has MSPointer support.\n */\n static get isMSPointer() {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = ('msPointerEnabled' in window.navigator);\n }\n return window.browserDetails.isMSPointer;\n }\n /**\n * Property is to get whether the userAgent is device based.\n */\n static get isDevice() {\n return Browser.getValue('isDevice', REGX_MOBILE);\n }\n /**\n * Property is to get whether the userAgent is IOS.\n */\n static get isIos() {\n return Browser.getValue('isIos', REGX_IOS);\n }\n /**\n * Property is to get whether the userAgent is Ios7.\n */\n static get isIos7() {\n return Browser.getValue('isIos7', REGX_IOS7);\n }\n /**\n * Property is to get whether the userAgent is Android.\n */\n static get isAndroid() {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n }\n /**\n * Property is to identify whether application ran in web view.\n */\n static get isWebView() {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap)\n && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n }\n /**\n * Property is to get whether the userAgent is Windows.\n */\n static get isWindows() {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n }\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n */\n static get touchStartEvent() {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n }\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n */\n static get touchMoveEvent() {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n }\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n */\n static get touchEndEvent() {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n }\n /**\n * Property is to cancel the touch end event.\n */\n static get touchCancelEvent() {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n }\n}\n/* istanbul ignore next */\nBrowser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * @private\n * ```html\n *
    \n * \n * ```\n */\nclass EventHandler {\n // to get the event data based on element\n static addOrGetEventData(element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n }\n else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n }\n /**\n * Add an event to the specified DOM element.\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} debounce - Specifies at what interval given event listener should be triggered.\n * @return {Function}\n */\n static add(element, eventName, listener, bindTo, intDebounce) {\n let eventData = EventHandler.addOrGetEventData(element);\n let debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n }\n else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n let event = eventName.split(' ');\n for (let i = 0; i < event.length; i++) {\n eventData.push({\n name: event[i],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[i], debounceListener);\n }\n else {\n element.addEventListener(event[i], debounceListener, { passive: false });\n }\n }\n return debounceListener;\n }\n /**\n * Remove an event listener that has been attached before.\n * @param {any} element - Specifies the target html element to remove the event\n * @param {string} eventName - A string that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @return {void}\n */\n static remove(element, eventName, listener) {\n let eventData = EventHandler.addOrGetEventData(element);\n let event = eventName.split(' ');\n for (let j = 0; j < event.length; j++) {\n let index = -1;\n let debounceListener;\n if (eventData && eventData.length !== 0) {\n eventData.some((x, i) => {\n return x.name === event[j] && x.listener === listener ?\n (index = i, debounceListener = x.debounce, true) : false;\n });\n }\n if (index !== -1) {\n eventData.splice(index, 1);\n }\n if (debounceListener) {\n element.removeEventListener(event[j], debounceListener);\n }\n }\n }\n /**\n * Clear all the event listeners that has been previously attached to the element.\n * @param {any} element - Specifies the target html element to clear the events\n * @return {void}\n */\n static clearEvents(element) {\n let eventData;\n let copyData;\n eventData = EventHandler.addOrGetEventData(element);\n copyData = extend([], copyData, eventData);\n for (let i = 0; i < copyData.length; i++) {\n element.removeEventListener(copyData[i].name, copyData[i].debounce);\n eventData.shift();\n }\n }\n /**\n * Trigger particular event of the element.\n * @param {any} element - Specifies the target html element to trigger the events\n * @param {string} eventName - Specifies the event to trigger for the specified element.\n * Can be a custom event, or any of the standard events.\n * @param {any} eventProp - Additional parameters to pass on to the event properties\n * @return {void}\n */\n static trigger(element, eventName, eventProp) {\n let eventData = EventHandler.addOrGetEventData(element);\n for (let event of eventData) {\n if (event.name === eventName) {\n event.debounce.call(this, eventProp);\n }\n }\n }\n}\n\n/**\n * Template Engine\n */\nconst LINES = new RegExp('\\\\n|\\\\r|\\\\s\\\\s+', 'g');\nconst QUOTES = new RegExp(/'|\"/g);\nconst IF_STMT = new RegExp('if ?\\\\(');\nconst ELSEIF_STMT = new RegExp('else if ?\\\\(');\nconst ELSE_STMT = new RegExp('else');\nconst FOR_STMT = new RegExp('for ?\\\\(');\nconst IF_OR_FOR = new RegExp('(\\/if|\\/for)');\nconst CALL_FUNCTION = new RegExp('\\\\((.*)\\\\)', '');\nconst NOT_NUMBER = new RegExp('^[0-9]+$', 'g');\nconst WORD = new RegExp('[\\\\w\"\\'.\\\\s+]+', 'g');\nconst DBL_QUOTED_STR = new RegExp('\"(.*?)\"', 'g');\nconst WORDIF = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nlet exp = new RegExp('\\\\${([^}]*)}', 'g');\n// let cachedTemplate: Object = {};\nlet ARR_OBJ = /^\\..*/gm;\nlet SINGLE_SLASH = /\\\\/gi;\nlet DOUBLE_SLASH = /\\\\\\\\/gi;\nconst WORDFUNC = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nconst WINDOWFUNC = /\\window\\./gm;\n/**\n * The function to set regular expression for template expression string.\n * @param {RegExp} value - Value expression.\n * @private\n */\n\n// /**\n// * To render the template string from the given data.\n// * @param {string} template - String Template.\n// * @param {Object[]|JSON} data - DataSource for the template.\n// * @param {Object} helper? - custom helper object.\n// */\n// export function template(template: string, data: JSON, helper?: Object): string {\n// let hash: string = hashCode(template);\n// let tmpl: Function;\n// if (!cachedTemplate[hash]) {\n// tmpl = cachedTemplate[hash] = compile(template, helper);\n// } else {\n// tmpl = cachedTemplate[hash];\n// }\n// return tmpl(data);\n// }\n/**\n * Compile the template string into template function.\n * @param {string} template - The template string which is going to convert.\n * @param {Object} helper? - Helper functions as an object.\n * @private\n */\nfunction compile$1(template, helper) {\n let argName = 'data';\n let evalExpResult = evalExp(template, argName, helper);\n let fnCode = `var str=\"${evalExpResult}\"; return str;`;\n // tslint:disable-next-line:no-function-constructor-with-string-args\n let fn = new Function(argName, fnCode);\n return fn.bind(helper);\n}\n// function used to evaluate the function expression\nfunction evalExp(str, nameSpace, helper) {\n let varCOunt = 0;\n /**\n * Variable containing Local Keys\n */\n let localKeys = [];\n let isClass = str.match(/class=\"([^\\\"]+|)\\s{2}/g);\n let singleSpace = '';\n if (isClass) {\n isClass.forEach((value) => {\n singleSpace = value.replace(/\\s\\s+/g, ' ');\n str = str.replace(value, singleSpace);\n });\n }\n return str.replace(LINES, '').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, (match, cnt, offset, matchStr) => {\n const SPECIAL_CHAR = /\\@|\\#|\\$/gm;\n let matches = cnt.match(CALL_FUNCTION);\n // matches to detect any function calls\n if (matches) {\n let rlStr = matches[1];\n if (ELSEIF_STMT.test(cnt)) {\n //handling else-if condition\n cnt = '\";} ' + cnt.replace(matches[1], rlStr.replace(WORD, (str) => {\n str = str.trim();\n return addNameSpace(str, !(QUOTES.test(str)) && (localKeys.indexOf(str) === -1), nameSpace, localKeys);\n })) + '{ \\n str = str + \"';\n }\n else if (IF_STMT.test(cnt)) {\n //handling if condition\n cnt = '\"; ' + cnt.replace(matches[1], rlStr.replace(WORDIF, (strs) => {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys);\n })) + '{ \\n str = str + \"';\n }\n else if (FOR_STMT.test(cnt)) {\n //handling for condition\n let rlStr = matches[1].split(' of ');\n // replace for each into actual JavaScript\n cnt = '\"; ' + cnt.replace(matches[1], (mtc) => {\n localKeys.push(rlStr[0]);\n localKeys.push(rlStr[0] + 'Index');\n varCOunt = varCOunt + 1;\n // tslint:disable-next-line\n return 'var i' + varCOunt + '=0; i' + varCOunt + ' < ' + addNameSpace(rlStr[1], true, nameSpace, localKeys) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + rlStr[0] + '= ' + addNameSpace(rlStr[1], true, nameSpace, localKeys)\n + '[i' + varCOunt + ']; \\n var ' + rlStr[0] + 'Index=i' + varCOunt + '; \\n str = str + \"';\n }\n else {\n //helper function handling\n let fnStr = cnt.split('(');\n let fNameSpace = (helper && helper.hasOwnProperty(fnStr[0]) ? 'this.' : 'global');\n fNameSpace = (/\\./.test(fnStr[0]) ? '' : fNameSpace);\n let ftArray = matches[1].split(',');\n if (matches[1].length !== 0 && !(/data/).test(ftArray[0]) && !(/window./).test(ftArray[0])) {\n matches[1] = (fNameSpace === 'global' ? nameSpace + '.' + matches[1] : matches[1]);\n }\n let splRegexp = /\\@|\\$|\\#/gm;\n let arrObj = /\\]\\./gm;\n if (WINDOWFUNC.test(cnt) && arrObj.test(cnt) || splRegexp.test(cnt)) {\n let splArrRegexp = /\\@|\\$|\\#|\\]\\./gm;\n if (splArrRegexp.test(cnt)) {\n // tslint:disable-next-line\n cnt = '\"+ ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(matches[1], rlStr.replace(WORDFUNC, (strs) => {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys);\n })) + '+ \"';\n }\n }\n else {\n cnt = '\" + ' + (fNameSpace === 'global' ? '' : fNameSpace) +\n cnt.replace(rlStr, addNameSpace(matches[1].replace(/,( |)data.|,/gi, ',' + nameSpace + '.').replace(/,( |)data.window/gi, ',window'), (fNameSpace === 'global' ? false : true), nameSpace, localKeys)) +\n '+\"';\n }\n }\n }\n else if (ELSE_STMT.test(cnt)) {\n // handling else condition\n cnt = '\"; ' + cnt.replace(ELSE_STMT, '} else { \\n str = str + \"');\n }\n else if (!!cnt.match(IF_OR_FOR)) {\n // close condition \n cnt = cnt.replace(IF_OR_FOR, '\"; \\n } \\n str = str + \"');\n }\n else if (SPECIAL_CHAR.test(cnt)) {\n // template string with double slash with special character\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n }\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // template string with double slash\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // evaluate normal expression\n cnt = '\"+' + addNameSpace(cnt.replace(/\\,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '+\"';\n }\n }\n return cnt;\n });\n}\nfunction addNameSpace(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '.' + str : str);\n}\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n let arrObjReg = /^\\..*/gm;\n return ((addNS && !(NOT_NUMBER.test(str)) &&\n ignoreList.indexOf(str.split('.')[0]) === -1 && !(arrObjReg.test(str))) ? nameSpace + '.' + str : str);\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '[\"' + str : str);\n}\n// tslint:disable-next-line\nfunction SlashReplace(tempStr) {\n // tslint:disable-next-line\n let double = `\\\\\\\\`;\n if (tempStr.match(DOUBLE_SLASH)) {\n tempStr = tempStr;\n }\n else {\n tempStr = tempStr.replace(SINGLE_SLASH, double);\n }\n return tempStr;\n}\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys) {\n str = str.trim();\n let windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n let quotes = /'|\"/gm;\n let splRegexp = /\\@|\\$|\\#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, (keys.indexOf(str) === -1), nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n else {\n return addNameSpace(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n }\n else {\n return str;\n }\n}\n\n/**\n * Template Engine Bridge\n */\nconst HAS_ROW = /^[\\n\\r.]+\\ {\n let result = compiler(data, component, propName);\n let blazorTemplateId = 'BlazorTemplateId';\n if (isBlazor() && !isStringTemplate) {\n let randomId = getRandomId();\n let blazorId = templateId + randomId;\n if (!blazorTemplates[templateId]) {\n blazorTemplates[templateId] = [];\n }\n if (!isNullOrUndefined(index)) {\n let keys = Object.keys(blazorTemplates[templateId][index]);\n for (let key of keys) {\n if (key !== blazorTemplateId && data[key]) {\n blazorTemplates[templateId][index][key] = data[key];\n }\n if (key === blazorTemplateId) {\n blazorId = blazorTemplates[templateId][index][key];\n }\n }\n }\n else {\n data[blazorTemplateId] = blazorId;\n blazorTemplates[templateId].push(data);\n }\n // tslint:disable-next-line:no-any\n return propName === 'rowTemplate' ? [createElement('tr', { id: blazorId, className: 'e-blazor-template' })] :\n // tslint:disable-next-line:no-any\n [createElement('div', { id: blazorId, className: 'e-blazor-template' })];\n }\n if (typeof result === 'string') {\n if (HAS_SVG.test(result)) {\n let ele = createElement('svg', { innerHTML: result });\n return ele.childNodes;\n }\n else {\n let ele = createElement((HAS_ROW.test(result) ? 'table' : 'div'), { innerHTML: result });\n return ele.childNodes;\n }\n }\n else {\n return result;\n }\n };\n}\nfunction updateBlazorTemplate(templateId, templateName, comp, isEmpty, callBack) {\n if (isBlazor()) {\n let ejsIntrop = 'sfBlazor';\n window[ejsIntrop].updateTemplate(templateName, blazorTemplates[templateId], templateId, comp, callBack);\n if (isEmpty !== false) {\n blazorTemplates[templateId] = [];\n }\n }\n}\nfunction resetBlazorTemplate(templateId, templateName, index) {\n let templateDiv = document.getElementById(templateId);\n if (templateDiv) {\n // tslint:disable-next-line:no-any\n let innerTemplates = templateDiv.getElementsByClassName('blazor-inner-template');\n for (let i = 0; i < innerTemplates.length; i++) {\n let tempId = ' ';\n if (!isNullOrUndefined(index)) {\n tempId = innerTemplates[index].getAttribute('data-templateId');\n }\n else {\n tempId = innerTemplates[i].getAttribute('data-templateId');\n }\n let tempElement = document.getElementById(tempId);\n if (tempElement) {\n let length = tempElement.childNodes.length;\n for (let j = 0; j < length; j++) {\n if (!isNullOrUndefined(index)) {\n innerTemplates[index].appendChild(tempElement.childNodes[0]);\n i = innerTemplates.length;\n }\n else {\n innerTemplates[i].appendChild(tempElement.childNodes[0]);\n }\n }\n }\n }\n }\n}\n/**\n * Set your custom template engine for template rendering.\n * @param {ITemplateEngine} classObj - Class object for custom template.\n * @private\n */\nfunction setTemplateEngine(classObj) {\n engineObj.compile = classObj.compile;\n}\n/**\n * Get current template engine for template rendering\n * @param {ITemplateEngine} classObj - Class object for custom template.\n * @private\n */\nfunction getTemplateEngine() {\n return engineObj.compile;\n}\n//Default Engine Class\nclass Engine {\n compile(templateString, helper = {}) {\n return compile$1(templateString, helper);\n }\n}\nlet engineObj = { compile: new Engine().compile };\n\nconst simpleRegex = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/;\nconst multipleSplitRegex = /(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))/g;\nconst idClassSelector = /^(\\.|#)/;\nconst selectMapper = {\n '.': 'className',\n '#': 'id'\n};\nconst classRegexString = '(?=.*?\\\\b{value}\\\\b)';\nconst assigner = { className: 'attributes.className', id: 'attributes.id', tagName: 'tagName' };\nconst emptyElements = ['area', 'base', 'basefont', 'br', 'col', 'frame', 'hr', 'img', 'input',\n 'link', 'meta', 'param', 'embed', 'command', 'keygen', 'source', 'track', 'wbr'];\nconst blockElements = ['a', 'address', 'article', 'applet', 'aside', 'audio', 'blockquote',\n 'button', 'canvas', 'center', 'dd', 'del', 'dir', 'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure',\n 'footer', 'form', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup', 'hr', 'iframe', 'ins',\n 'isindex', 'li', 'map', 'menu', 'noframes', 'noscript', 'object', 'ol', 'output', 'p', 'pre', 'section',\n 'script', 'table', 'tbody', 'td', 'tfoot', 'th', 'thead', 'tr', 'ul', 'video'];\nconst inlineElement = ['abbr', 'acronym', 'applet', 'b', 'basefont', 'bdo', 'big', 'br', 'button',\n 'cite', 'code', 'del', 'dfn', 'em', 'font', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'label', 'map',\n 'object', 'q', 's', 'samp', 'script', 'select', 'small', 'span', 'strike', 'strong', 'sub', 'sup', 'textarea',\n 'tt', 'u', 'var'];\nconst selfClosingElements = ['colgroup', 'dd', 'dt', 'li', 'options', 'p', 'td', 'tfoot', 'th',\n 'thead', 'tr'];\nconst fillAttrs = ['checked', 'compact', 'declare', 'defer', 'disabled', 'ismap', 'multiple',\n 'nohref', 'noresize', 'noshade', 'nowrap', 'readonly', 'selected'];\nconst cspElement = ['Script', 'style'];\nconst nameMapper = { 'tabindex': 'tabIndex' };\nconst startRegex = /^<([-A-Za-z0-9_]+)((?:\\s+[a-zA-Z_:][-a-zA-Z0-9_:.]*(?:\\s*=\\s*(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>\\s]+))?)*)\\s*(\\/?)>/;\nconst endRegex = /^<\\/([-A-Za-z0-9_]+)[^>]*>/;\nconst attributeRegex = /([a-zA-Z_:][-a-zA-Z0-9_:.]*)(?:\\s*=\\s*(?:(?:\"((?:\\\\.|[^\"])*)\")|(?:'((?:\\\\.|[^'])*)')|([^>\\s]+)))?/g;\n/**\n * Namespace for VirtualDOM\n * @private\n */\nvar VirtualDOM;\n(function (VirtualDOM) {\n //tslint:disable:no-any\n function createElement(tagName, properties) {\n let children = [];\n let extended = extend({}, {}, properties, true);\n if (!isNullOrUndefined(properties)) {\n let keys = Object.keys(properties);\n if (keys.length) {\n if (extended.innerHTML) {\n children = ConvertHTMLToJSon(extended.innerHTML);\n delete extended.innerHTML;\n }\n if (extended.attrs) {\n extend(extended, extended.attrs);\n delete extended.attrs;\n }\n if (extended.styles) {\n let valArr = extended.styles.split(';');\n let vObj = {};\n for (let i = 0, length = valArr.length; i < length; i++) {\n let cVal = valArr[i];\n let styleSplit = cVal.split(':');\n vObj[styleSplit[0]] = styleSplit[1];\n }\n delete extended.styles;\n extended.style = vObj;\n }\n }\n }\n return {\n tagName: tagName,\n attributes: extended || {},\n children: children\n };\n }\n VirtualDOM.createElement = createElement;\n function assignParent(childrens, parent) {\n if (parent && childrens) {\n childrens.forEach((child) => {\n if (isObject(child)) {\n if (child.parent) {\n detach(child);\n }\n child.parent = parent;\n }\n return child;\n });\n }\n }\n VirtualDOM.assignParent = assignParent;\n function append(fromElements, toElement) {\n assignParent(fromElements, toElement);\n if (toElement.children) {\n toElement.children = toElement.children.concat(fromElements);\n }\n else {\n toElement.children = [].concat(fromElements);\n }\n }\n VirtualDOM.append = append;\n function prepend(child, toElement) {\n assignParent(child, toElement);\n if (!toElement.children || !toElement.children.length) {\n toElement.children = [];\n toElement.children.concat(child);\n }\n else {\n for (let i = child.length - 1; i >= 0; i--) {\n toElement.children.unshift(child[i]);\n }\n }\n }\n VirtualDOM.prepend = prepend;\n function detach(element) {\n let parent = element.parent;\n if (parent) {\n let index = parent.children.indexOf(element);\n if (index !== -1) {\n parent.children.splice(index);\n }\n }\n return parent;\n }\n VirtualDOM.detach = detach;\n //tslint:disable-next-line\n function vDomSelector({ ele, selector, selectAll, immediateParent }) {\n let iSelector = selector.split(' ');\n let curColl = ele;\n for (let i = 0, length = iSelector.length; i < length; i++) {\n let isDescendant = false;\n let parent = curColl;\n let curSelector = iSelector[i];\n let mapper = [];\n if (simpleRegex.test(curSelector)) {\n processSelector(curSelector, mapper);\n }\n else if (curSelector.indexOf('>') === -1) {\n let splitSelector = curSelector.match(multipleSplitRegex);\n for (let curMap of splitSelector) {\n processSelector(curMap, mapper);\n }\n }\n else if (curSelector.indexOf('>') !== -1) {\n isDescendant = true;\n let dSelector = curSelector.split('>');\n //tslint:disable-next-line\n let dParent = ele;\n let descendent;\n let flag = 0;\n for (let sel of dSelector) {\n if (!dParent) {\n break;\n }\n if (dParent.length) {\n let descendentChild = [];\n for (let child of dParent) {\n descendentChild = descendentChild.concat(vDomSelector({\n ele: child, selector: sel,\n selectAll, immediateParent: !!flag\n }));\n }\n descendent = descendentChild;\n }\n else {\n descendent = vDomSelector({ ele: dParent, selector: sel, selectAll, immediateParent: !!flag });\n }\n flag++;\n dParent = descendent;\n }\n if (descendent) {\n curColl = descendent;\n }\n }\n if (!isDescendant) {\n if (parent.length) {\n let iCurSelector = [];\n for (let curParent of parent) {\n iCurSelector = iCurSelector.concat(accessElement(curParent, mapper, selectAll, immediateParent));\n }\n curColl = iCurSelector;\n }\n else {\n curColl = accessElement(parent, mapper, selectAll, immediateParent);\n }\n }\n }\n if (selectAll) {\n return curColl;\n }\n else {\n return curColl[0] || null;\n }\n }\n VirtualDOM.vDomSelector = vDomSelector;\n function processSelector(selector, mapper) {\n let match = selector.match(idClassSelector);\n let obj = {};\n if (match) {\n let curMapper = selectMapper[match[0]];\n if (curMapper === 'className') {\n let curObj = mapper.filter((obj) => { return obj.hasOwnProperty('className'); })[0];\n let canPush = false;\n if (!curObj) {\n canPush = true;\n curObj = {};\n }\n let existValue = curObj[curMapper] || '';\n curObj[curMapper] = existValue + classRegexString.replace('{value}', selector.replace('.', ''));\n if (canPush) {\n mapper.push(curObj);\n }\n }\n else {\n obj[curMapper] = selector.replace(match[0], '');\n mapper.push(obj);\n }\n }\n else {\n mapper.push({ tagName: selector });\n }\n }\n //tslint:disable-next-line\n function accessElement(ele, mapper, selectAll, immediateParent) {\n if (ele.children) {\n //tslint:disable-next-line\n let temp = ele.children.filter(function (child) {\n if (typeof (child) !== 'string') {\n let matched = true;\n for (let map of mapper) {\n let key = Object.keys(map)[0];\n let expected = map[key];\n let actualValue = getValue(assigner[key], child);\n if (key === 'className') {\n if (!(new RegExp('^' + expected + '.*$').test(actualValue))) {\n matched = false;\n break;\n }\n }\n else if (actualValue !== expected) {\n matched = false;\n break;\n }\n }\n return matched;\n }\n else {\n return false;\n }\n });\n if (!immediateParent && (!temp.length || selectAll)) {\n ele.children.forEach((child) => {\n if (isObject(child)) {\n temp = temp.concat(accessElement(child, mapper, selectAll));\n }\n });\n }\n return temp;\n }\n else {\n return [];\n }\n }\n VirtualDOM.accessElement = accessElement;\n function ConvertHTMLToJSon(htmlString) {\n let results = [];\n let isText;\n let tagArray = [];\n let nodeArray = [];\n while (htmlString) {\n isText = true;\n let lastVal = getLastValue(tagArray);\n if (!lastVal || !contains(cspElement, lastVal)) {\n if (htmlString.indexOf(']*>'), (all, text) => {\n text = text.replace(/|/g, '$1$2');\n iterateText(text);\n return '';\n });\n iterateEndTag('', getLastValue(tagArray));\n }\n \n }\n function iterateStartTag(start, tagName, rest) {\n tagName = tagName.toLowerCase();\n if (contains(blockElements, tagName)) {\n while (getLastValue(tagArray) && contains(inlineElement, getLastValue(tagArray))) {\n iterateEndTag('', getLastValue(tagArray));\n }\n }\n if (contains(selfClosingElements, tagName) && getLastValue(tagArray)) {\n iterateEndTag('', tagName);\n }\n let isSelfTag = contains(emptyElements, tagName);\n if (!isSelfTag) {\n tagArray.push(tagName);\n }\n let attrs = {};\n //tslint:disable-next-line\n rest.replace(attributeRegex, function (match, name, ...names) {\n //tslint:disable-next-line\n let val = names[2] ? names[2] :\n names[3] ? names[3] :\n names[4] ? names[4] :\n contains(fillAttrs, name) ? name : '';\n if (name === 'style') {\n let valArr = val.split(';');\n let vObj = {};\n for (let i = 0, length = valArr.length; i < length; i++) {\n let cVal = valArr[i];\n let styleSplit = cVal.split(':');\n vObj[styleSplit[0]] = styleSplit[1];\n }\n val = vObj;\n }\n name = nameMapper[name] || name;\n attrs[name] = val;\n //tslint:disable-next-line\n });\n attrs['data-id'] = getRandomId();\n let tagObject = {\n tagName: tagName,\n attributes: attrs\n };\n if (isSelfTag) {\n let parent = (nodeArray[0] || results);\n if (parent.children === undefined) {\n parent.children = [];\n }\n tagObject.parent = parent;\n parent.children.push(tagObject);\n }\n else {\n nodeArray.unshift(tagObject);\n }\n }\n function iterateEndTag(start, tagName) {\n let pos;\n if (!tagName) {\n pos = 0;\n }\n else {\n for (pos = tagArray.length - 1; pos >= 0; pos--) {\n if (tagArray[pos] === tagName) {\n break;\n }\n }\n }\n if (pos >= 0) {\n for (let j = nodeArray.length - 1; j >= pos; j--) {\n //tslint:disable-next-line\n let node = nodeArray.shift();\n if (nodeArray.length === 0) {\n results.push(node);\n }\n else {\n let parent = nodeArray[0];\n if (parent.children === undefined) {\n parent.children = [];\n }\n node.parent = parent;\n parent.children.push(node);\n }\n }\n tagArray.length = pos;\n }\n }\n function iterateText(text) {\n if (nodeArray.length === 0) {\n results.push(text);\n }\n else {\n let parent = nodeArray[0];\n if (parent.children === undefined) {\n parent.children = [];\n }\n parent.children.push(text);\n }\n }\n return results;\n }\n VirtualDOM.ConvertHTMLToJSon = ConvertHTMLToJSon;\n //tslint:disable-next-line \n function getLastValue(arr) {\n return arr[arr.length - 1];\n }\n function contains(arr, key) {\n return arr.indexOf(key) !== -1;\n }\n //tslint:disable-next-line\n function cloneNode(ele, deep) {\n if (isObject(ele)) {\n if (deep) {\n return extend({}, {}, ele, true);\n }\n else {\n return { tagName: ele.tagName, attributes: ele.attributes };\n }\n }\n else {\n return ele.cloneNode(deep);\n }\n }\n VirtualDOM.cloneNode = cloneNode;\n function setStyleAttribute(element, attrs) {\n if (element.attributes.style) {\n (element.attributes).style = extend({}, attrs);\n }\n else {\n element.attributes.style = extend(element.attributes.style, attrs);\n }\n }\n VirtualDOM.setStyleAttribute = setStyleAttribute;\n //tslint:enable:no-any\n})(VirtualDOM || (VirtualDOM = {}));\n\n/**\n * Functions related to dom operations.\n */\nconst SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n * @param tagName - Name of the tag, id and class names.\n * @param properties - Object to set properties in the element.\n * @param properties.id - To set the id to the created element.\n * @param properties.className - To add classes to the element.\n * @param properties.innerHTML - To set the innerHTML to element.\n * @param properties.styles - To set the some custom styles to element.\n * @param properties.attrs - To set the attributes to element.\n * @private\n */\nfunction createElement(tagName, properties) {\n //tslint:disable-next-line\n let element = (SVG_REG.test(tagName) ? document.createElementNS('http://www.w3.org/2000/svg', tagName) : document.createElement(tagName));\n if (typeof (properties) === 'undefined') {\n return element;\n }\n element.innerHTML = (properties.innerHTML ? properties.innerHTML : '');\n if (properties.className !== undefined) {\n element.className = properties.className;\n }\n if (properties.id !== undefined) {\n element.id = properties.id;\n }\n if (properties.styles !== undefined) {\n element.setAttribute('style', properties.styles);\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\n}\n/**\n * The function used to add the classes to array of elements\n * @param {Element[]|NodeList} elements - An array of elements that need to add a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @private\n */\nfunction addClass(elements, classes) {\n let classList = getClassList(classes);\n for (let ele of elements) {\n for (let className of classList) {\n if (isObject(ele)) {\n let curClass = getValue('attributes.className', ele);\n if (isNullOrUndefined(curClass)) {\n setValue('attributes.className', className, ele);\n }\n else if (!new RegExp('\\\\b' + className + '\\\\b', 'i').test(curClass)) {\n setValue('attributes.className', curClass + ' ' + className, ele);\n }\n }\n else {\n if (!ele.classList.contains(className)) {\n ele.classList.add(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to add the classes to array of elements\n * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @private\n */\nfunction removeClass(elements, classes) {\n let classList = getClassList(classes);\n for (let ele of elements) {\n let flag = isObject(ele);\n let canRemove = flag ? getValue('attributes.className', ele) : ele.className !== '';\n if (canRemove) {\n for (let className of classList) {\n if (flag) {\n let classes = getValue('attributes.className', ele);\n let classArr = classes.split(' ');\n let index = classArr.indexOf(className);\n if (index !== -1) {\n classArr.splice(index, 1);\n }\n setValue('attributes.className', classArr.join(' '), ele);\n }\n else {\n ele.classList.remove(className);\n }\n }\n }\n }\n return elements;\n}\nfunction getClassList(classes) {\n let classList = [];\n if (typeof classes === 'string') {\n classList.push(classes);\n }\n else {\n classList = classes;\n }\n return classList;\n}\n/**\n * The function used to check element is visible or not.\n * @param {Element|Node} element - An element the need to check visibility\n * @private\n */\nfunction isVisible(element) {\n let ele = element;\n return (ele.style.visibility === '' && ele.offsetWidth > 0);\n}\n/**\n * The function used to insert an array of elements into a first of the element.\n * @param {Element[]|NodeList} fromElements - An array of elements that need to prepend.\n * @param {Element} toElement - An element that is going to prepend.\n * @private\n */\nfunction prepend(fromElements, toElement, isEval) {\n //tslint:disable:no-any\n if (isObject(toElement)) {\n VirtualDOM.prepend(fromElements, toElement);\n }\n else {\n let docFrag = document.createDocumentFragment();\n for (let ele of fromElements) {\n docFrag.appendChild(ele);\n }\n toElement.insertBefore(docFrag, toElement.firstElementChild);\n if (isEval) {\n executeScript(toElement);\n }\n }\n return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n * @param {Element[]|NodeList} fromElements - An array of elements that need to append.\n * @param {Element} toElement - An element that is going to prepend.\n * @private\n */\nfunction append(fromElements, toElement, isEval) {\n if (isObject(toElement)) {\n VirtualDOM.append(fromElements, toElement);\n }\n else {\n let docFrag = document.createDocumentFragment();\n for (let ele of fromElements) {\n docFrag.appendChild(ele);\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n }\n return fromElements;\n}\n//tslint: enable:no-any\n/**\n * The function is used to evaluate script from Ajax request\n * @param ele - An element is going to evaluate the script\n */\nfunction executeScript(ele) {\n let eleArray = ele.querySelectorAll('script');\n eleArray.forEach((element) => {\n let script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from the\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @private\n */\nfunction detach(element) {\n if (isObject(element)) {\n return VirtualDOM.detach(element);\n }\n else {\n let parentNode = element.parentNode;\n return parentNode.removeChild(element);\n }\n}\n/**\n * The function used to remove the element from Dom also clear the bounded events\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @private\n */\nfunction remove(element) {\n if (isObject(element)) {\n VirtualDOM.detach(element);\n }\n else {\n let parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n }\n}\n/**\n * The function helps to set multiple attributes to an element\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {{[key:string]:string}} attributes - JSON Object that is going to as attributes.\n * @private\n */\nfunction attributes(element, attributes) {\n let keys = Object.keys(attributes);\n let ele = element;\n for (let key of keys) {\n if (isObject(ele)) {\n let iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[iKey] = attributes[key];\n }\n else {\n ele.setAttribute(key, attributes[key]);\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n * @param {string} selector - Selector string need fetch element from the\n * @param {Document|Element=document} context - It is an optional type, That specifies a Dom context.\n * @private\n */\n//tslint:disable-next-line\nfunction select(selector, context = document, needsVDOM) {\n if (isObject(context) && needsVDOM) {\n //tslint:disable-next-line\n return VirtualDOM.vDomSelector({ ele: context, selector, selectAll: false });\n }\n else {\n return context.querySelector(selector);\n }\n}\n/**\n * The function selects an array of element from the given context.\n * @param {string} selector - Selector string need fetch element from the\n * @param {Document|Element=document} context - It is an optional type, That specifies a Dom context.\n * @private\n */\nfunction selectAll(selector, context = document, needsVDOM) {\n if (isObject(context) && !needsVDOM) {\n //tslint:disable-next-line\n return VirtualDOM.vDomSelector({ ele: context, selector, selectAll: true });\n }\n else {\n let nodeList = context.querySelectorAll(selector);\n return nodeList;\n }\n}\n/**\n * Returns single closest parent element based on class selector.\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @private\n */\nfunction closest(element, selector) {\n let el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n * @param {Element|Node} element - An element that need to get siblings.\n * @private\n */\nfunction siblings(element) {\n let siblings = [];\n let childNodes = Array.prototype.slice.call(element.parentNode.childNodes);\n for (let curNode of childNodes) {\n if (curNode.nodeType === Node.ELEMENT_NODE && element !== curNode) {\n siblings.push(curNode);\n }\n }\n return siblings;\n}\n/**\n * set the value if not exist. Otherwise set the existing value\n * @param {HTMLElement} element - An element to which we need to set value.\n * @param {string} property - Property need to get or set.\n * @param {string} value - value need to set.\n * @private\n */\nfunction getAttributeOrDefault(element, property, value) {\n let attrVal;\n let isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n }\n else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n }\n else {\n element.attributes[property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @return {void}\n * @private\n */\nfunction setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n if (isObject(element)) {\n // tslint:disable-next-line:no-any\n VirtualDOM.setStyleAttribute(element, attrs);\n }\n else {\n Object.keys(attrs).forEach((key) => {\n // tslint:disable-next-line:no-any\n element.style[key] = attrs[key];\n });\n }\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n * @param {Element} element - Element for add and remove classes\n * @param {string[]} addClasses - List of classes need to be add to the element\n * @param {string[]} removeClasses - List of classes need to be remove from the element\n * @return {void}\n * @private\n */\nfunction classList(element, addClasses, removeClasses) {\n addClass([element], addClasses);\n removeClass([element], removeClasses);\n}\n/**\n * Method to check whether the element matches the given selector.\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @return {void}\n * @private\n */\nfunction matches(element, selector) {\n //tslint:disable-next-line\n let matches = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (matches) {\n return matches.call(element, selector);\n }\n else {\n return [].indexOf.call(document.querySelectorAll(selector), element) !== -1;\n }\n}\nfunction includeInnerHTML(ele, innerHTML) {\n if (isObject(ele)) {\n if (innerHTML === '') {\n ele.children = [];\n }\n else {\n let res = VirtualDOM.ConvertHTMLToJSon(innerHTML);\n if (res.length) {\n VirtualDOM.assignParent(res, ele);\n ele.children = res;\n }\n }\n }\n else {\n ele.innerHTML = innerHTML;\n }\n}\n//tslint:disable-next-line\nfunction containsClass(ele, className) {\n if (isObject(ele)) {\n // tslint:disable-next-line:no-any\n return new RegExp('\\\\b' + className + '\\\\b', 'i').test(ele.attributes.className);\n }\n else {\n return ele.classList.contains(className);\n }\n}\n/**\n * Method to check whether the element matches the given selector.\n * @param {} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @return {Element | VirtualObject}\n * @private\n */\n//tslint:disable:no-any\nfunction cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\n }\n else {\n return { tagName: element.tagName, attributes: element.attributes };\n }\n }\n else {\n return element.cloneNode(deep);\n }\n}\n\nconst isColEName = new RegExp('\\]');\n/* tslint:enable:no-any */\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n * @private\n */\nclass Base {\n /**\n * Base constructor accept options and element\n */\n constructor(options, element) {\n this.isRendered = false;\n this.isComplexArraySetter = false;\n this.isServerRendered = false;\n this.allowServerDataBinding = true;\n this.isProtectedOnChange = true;\n this.properties = {};\n this.changedProperties = {};\n this.oldProperties = {};\n this.bulkChanges = {};\n this.refreshing = false;\n this.ignoreCollectionWatch = false;\n // tslint:disable-next-line:no-empty\n this.finalUpdate = () => { };\n this.childChangedProperties = {};\n this.modelObserver = new Observer(this);\n if (!isUndefined(element)) {\n if ('string' === typeof (element)) {\n this.element = document.querySelector(element);\n }\n else {\n this.element = element;\n }\n if (!isNullOrUndefined(this.element)) {\n this.isProtectedOnChange = false;\n this.addInstance();\n }\n }\n if (!isUndefined(options)) {\n this.setProperties(options, true);\n }\n this.isDestroyed = false;\n }\n /** Property base section */\n /**\n * Function used to set bunch of property at a time.\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange? - Specifies to true when we set properties.\n */\n setProperties(prop, muteOnChange) {\n let prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = !!muteOnChange;\n merge(this, prop);\n if (muteOnChange !== true) {\n merge(this.changedProperties, prop);\n this.dataBind();\n }\n else if (isBlazor() && this.isRendered) {\n this.serverDataBind(prop);\n }\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.isProtectedOnChange = prevDetection;\n }\n ;\n /**\n * Calls for child element data bind\n * @param {Object} obj\n * @param {Object} parent\n * @returns {void}\n */\n // tslint:disable-next-line:no-any\n static callChildDataBind(obj, parent) {\n let keys = Object.keys(obj);\n for (let key of keys) {\n if (parent[key] instanceof Array) {\n for (let obj of parent[key]) {\n if (obj.dataBind !== undefined) {\n obj.dataBind();\n }\n }\n }\n else {\n parent[key].dataBind();\n }\n }\n }\n clearChanges() {\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.childChangedProperties = {};\n }\n /**\n * Bind property changes immediately to components\n */\n dataBind() {\n Base.callChildDataBind(this.childChangedProperties, this);\n if (Object.getOwnPropertyNames(this.changedProperties).length) {\n let prevDetection = this.isProtectedOnChange;\n let newChanges = this.changedProperties;\n let oldChanges = this.oldProperties;\n this.clearChanges();\n this.isProtectedOnChange = true;\n this.onPropertyChanged(newChanges, oldChanges);\n this.isProtectedOnChange = prevDetection;\n }\n }\n ;\n /* tslint:disable:no-any */\n serverDataBind(newChanges) {\n if (!isBlazor()) {\n return;\n }\n newChanges = newChanges ? newChanges : {};\n extend(this.bulkChanges, {}, newChanges, true);\n if (this.allowServerDataBinding) {\n let sfBlazor = 'sfBlazor';\n window[sfBlazor].updateModel(this);\n this.bulkChanges = {};\n }\n }\n /* tslint:enable:no-any */\n saveChanges(key, newValue, oldValue) {\n if (isBlazor()) {\n // tslint:disable-next-line:no-any\n let newChanges = {};\n newChanges[key] = newValue;\n this.serverDataBind(newChanges);\n }\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[key] = oldValue;\n this.changedProperties[key] = newValue;\n this.finalUpdate();\n this.finalUpdate = setImmediate(this.dataBind.bind(this));\n }\n ;\n /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} listener - Specifies the call to run when the event occurs.\n * @return {void}\n */\n addEventListener(eventName, handler) {\n this.modelObserver.on(eventName, handler);\n }\n /**\n * Removes the handler from the given event listener.\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @return {void}\n */\n removeEventListener(eventName, handler) {\n this.modelObserver.off(eventName, handler);\n }\n /**\n * Triggers the handlers in the specified event.\n * @private\n * @param {string} eventName - Specifies the event to trigger for the specified component properties.\n * Can be a custom event, or any of the standard events.\n * @param {Event} eventProp - Additional parameters to pass on to the event properties\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it failured to call.\n * @return {void}\n */\n trigger(eventName, eventProp, successHandler, errorHandler) {\n if (this.isDestroyed !== true) {\n let prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n let data = this.modelObserver.notify(eventName, eventProp, successHandler, errorHandler);\n if (isColEName.test(eventName)) {\n let handler = getValue(eventName, this);\n if (handler) {\n let blazor = 'Blazor';\n if (window[blazor]) {\n let promise = handler.call(this, eventProp);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n data = promise;\n }\n else {\n promise.then((data) => {\n if (successHandler) {\n data = typeof data === 'string' && this.modelObserver.isJson(data) ?\n JSON.parse(data) : data;\n successHandler.call(this, data);\n }\n }).catch((data) => {\n if (errorHandler) {\n data = typeof data === 'string' && this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n errorHandler.call(this, data);\n }\n });\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n this.isProtectedOnChange = prevDetection;\n return data;\n }\n }\n /**\n * To maintain instance in base class\n */\n addInstance() {\n // Add module class to the root element\n let moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-lib', moduleClass]);\n if (!isNullOrUndefined(this.element.ej2_instances)) {\n this.element.ej2_instances.push(this);\n }\n else {\n setValue('ej2_instances', [this], this.element);\n }\n }\n /**\n * To remove the instance from the element\n */\n destroy() {\n this.element.ej2_instances =\n this.element.ej2_instances.filter((i) => { return i !== this; });\n removeClass([this.element], ['e-' + this.getModuleName()]);\n if (this.element.ej2_instances.length === 0) {\n // Remove module class from the root element\n removeClass([this.element], ['e-lib']);\n }\n this.clearChanges();\n this.modelObserver.destroy();\n this.isDestroyed = true;\n }\n}\n/**\n * Global function to get the component instance from the rendered element.\n * @param elem Specifies the HTMLElement or element id string.\n * @param comp Specifies the component module name or Component.\n */\n// tslint:disable-next-line:no-any\nfunction getComponent(elem, comp) {\n let instance;\n let i;\n let ele = typeof elem === 'string' ? document.getElementById(elem) : elem;\n for (i = 0; i < ele.ej2_instances.length; i++) {\n instance = ele.ej2_instances[i];\n if (typeof comp === 'string') {\n let compName = instance.getModuleName();\n if (comp === compName) {\n return instance;\n }\n }\n else {\n // tslint:disable-next-line:no-any\n if (instance instanceof comp) {\n return instance;\n }\n }\n }\n return undefined;\n}\n/**\n * Function to remove the child instances.\n * @return {void}\n * @private\n */\n// tslint:disable-next-line:no-any\nfunction removeChildInstance(element) {\n // tslint:disable-next-line:no-any\n let childEle = [].slice.call(element.getElementsByClassName('e-control'));\n for (let i = 0; i < childEle.length; i++) {\n let compName = childEle[i].classList[1].split('e-')[1];\n // tslint:disable-next-line:no-any\n let compInstance = getComponent(childEle[i], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\n\n/**\n * Returns the Class Object\n * @param {ClassObject} instance - instance of ClassObject\n * @param {string} curKey - key of the current instance\n * @param {Object} defaultValue - default Value\n * @param {Object[]} type\n */\nfunction getObject(instance, curKey, defaultValue, type) {\n if (!instance.properties.hasOwnProperty(curKey) || !(instance.properties[curKey] instanceof type)) {\n instance.properties[curKey] = createInstance(type, [instance, curKey, defaultValue]);\n }\n return instance.properties[curKey];\n}\n/**\n * Returns object array\n * @param {ClassObject} instance\n * @param {string} curKey\n * @param {Object[]} defaultValue\n * @param type\n * @param {boolean} isSetter\n * @returns {Object[]}\n */\nfunction getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactory) {\n let result = [];\n let len = defaultValue ? defaultValue.length : 0;\n for (let i = 0; i < len; i++) {\n let curType = type;\n if (isFactory) {\n curType = type(defaultValue[i], instance);\n }\n if (isSetter) {\n let inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[i], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[i], false]));\n }\n }\n return result;\n}\n/**\n * Returns the properties of the object\n * @param {Object} defaultValue\n * @param {string} curKey\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n if (!this.properties.hasOwnProperty(curKey)) {\n this.properties[curKey] = defaultValue;\n }\n return this.properties[curKey];\n };\n}\n/**\n * Set the properties for the object\n * @param {Object} defaultValue\n * @param {string} curKey\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[curKey] !== newValue) {\n let oldVal = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n this.saveChanges(curKey, newValue, oldVal);\n this.properties[curKey] = newValue;\n }\n };\n}\n/**\n * Returns complex objects\n */\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n let curType = type({});\n if (this.properties.hasOwnProperty(curKey)) {\n return this.properties[curKey];\n }\n else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\nfunction complexFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n let curType = type(newValue, this);\n getObject(this, curKey, defaultValue, curType).setProperties(newValue);\n };\n}\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n if (!this.properties.hasOwnProperty(curKey)) {\n let defCollection = getObjectArray(this, curKey, defaultValue, type, false);\n this.properties[curKey] = defCollection;\n }\n let ignore = ((this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch)\n || this.ignoreCollectionWatch);\n if (!this.properties[curKey].hasOwnProperty('push') && !ignore) {\n ['push', 'pop'].forEach((extendFunc) => {\n let descriptor = {\n value: complexArrayDefinedCallback(extendFunc, curKey, type, this.properties[curKey]).bind(this),\n configurable: true\n };\n Object.defineProperty(this.properties[curKey], extendFunc, descriptor);\n });\n }\n if (!this.properties[curKey].hasOwnProperty('isComplexArray')) {\n Object.defineProperty(this.properties[curKey], 'isComplexArray', { value: true });\n }\n return this.properties[curKey];\n };\n}\nfunction complexArraySetter(defaultValue, curKey, type) {\n return function (newValue) {\n this.isComplexArraySetter = true;\n let oldValueCollection = getObjectArray(this, curKey, defaultValue, type, false);\n let newValCollection = getObjectArray(this, curKey, newValue, type, true);\n this.isComplexArraySetter = false;\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[curKey] = newValCollection;\n };\n}\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n let oldValueCollection = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n let newValCollection = getObjectArray(this, curKey, newValue, type, true, true);\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[curKey] = newValCollection;\n };\n}\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n let curType = type({});\n if (!this.properties.hasOwnProperty(curKey)) {\n let defCollection = getObjectArray(this, curKey, defaultValue, curType, false);\n this.properties[curKey] = defCollection;\n }\n return this.properties[curKey];\n };\n}\nfunction complexArrayDefinedCallback(dFunc, curKey, type, prop) {\n /* tslint:disable no-function-expression */\n return function (...newValue) {\n let keyString = this.propName ? this.getParentKey() + '.' + curKey + '-' : curKey + '-';\n switch (dFunc) {\n case 'push':\n for (let i = 0; i < newValue.length; i++) {\n Array.prototype[dFunc].apply(prop, [newValue[i]]);\n let model = getArrayModel(keyString + (prop.length - 1), newValue[i], !this.controlParent, dFunc);\n this.serverDataBind(model, newValue[i], false, dFunc);\n }\n break;\n case 'pop':\n Array.prototype[dFunc].apply(prop);\n let model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\n }\n return prop;\n };\n /* tslint:enable no-function-expression */\n}\nfunction getArrayModel(keyString, value, isControlParent, arrayFunction) {\n let modelObject = keyString;\n if (isControlParent) {\n modelObject = {};\n modelObject[keyString] = value;\n if (value && typeof value === 'object') {\n let action = 'ejsAction';\n modelObject[keyString][action] = arrayFunction;\n }\n }\n return modelObject;\n}\n/**\n * Method used to create property. General syntax below.\n * @param {T} defaultValue? - Specifies the default value of property.\n * ```\n * @Property('TypeScript')\n * propertyName: Type;\n * ```\n * @private\n */\nfunction Property(defaultValue) {\n return (target, key) => {\n let propertyDescriptor = {\n set: propertySetter(defaultValue, key),\n get: propertyGetter(defaultValue, key),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'prop', defaultValue);\n };\n}\n/**\n * Method used to create complex property. General syntax below.\n * @param {T} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * ```\n * @Complex({},Type)\n * propertyName: Type;\n * ```\n * @private\n */\nfunction Complex(defaultValue, type) {\n return (target, key) => {\n let propertyDescriptor = {\n set: complexSetter(defaultValue, key, type),\n get: complexGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex Factory property. General syntax below.\n * @param {Function} defaultType - Specifies the default value of property.\n * @param {Function} type - Specifies the class factory type of complex object.\n * ```\n * @ComplexFactory(defaultType, factoryFunction)\n * propertyName: Type1 | Type2;\n * ```\n * @private\n */\nfunction ComplexFactory(type) {\n return (target, key) => {\n let propertyDescriptor = {\n set: complexFactorySetter({}, key, type),\n get: complexFactoryGetter({}, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', {}, type);\n };\n}\n/**\n * Method used to create complex array property. General syntax below.\n * @param {T[]} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nfunction Collection(defaultValue, type) {\n return (target, key) => {\n let propertyDescriptor = {\n set: complexArraySetter(defaultValue, key, type),\n get: complexArrayGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex factory array property. General syntax below.\n * @param {T[]} defaultType - Specifies the default type of property.\n * @param {Function} type - Specifies the class type of complex object.\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nfunction CollectionFactory(type) {\n return (target, key) => {\n let propertyDescriptor = {\n set: complexArrayFactorySetter([], key, type),\n get: complexArrayFactoryGetter([], key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', {}, type);\n };\n}\n/**\n * Method used to create event property. General syntax below.\n * @param {Function} defaultValue? - Specifies the default value of property.\n * @param {boolean} isComplex? - Specifies the whether it is complex object.\n * ```\n * @Event(()=>{return true;})\n * ```\n * @private\n */\nfunction Event$1() {\n return (target, key) => {\n let eventDescriptor = {\n set: function (newValue) {\n let oldValue = this.properties[key];\n if (oldValue !== newValue) {\n let finalContext = getParentContext(this, key);\n if (isUndefined(oldValue) === false) {\n finalContext.context.removeEventListener(finalContext.prefix, oldValue);\n }\n finalContext.context.addEventListener(finalContext.prefix, newValue);\n this.properties[key] = newValue;\n }\n },\n get: propertyGetter(undefined, key),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, eventDescriptor);\n addPropertyCollection(target, key, 'event');\n };\n}\n/**\n * NotifyPropertyChanges is triggers the call back when the property has been changed.\n *\n * ```\n * @NotifyPropertyChanges\n * class DemoClass implements INotifyPropertyChanged {\n *\n * @Property()\n * property1: string;\n *\n * dataBind: () => void;\n *\n * constructor() { }\n *\n * onPropertyChanged(newProp: any, oldProp: any) {\n * // Called when property changed\n * }\n * }\n * ```\n * @private\n */\nfunction NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n * @private\n */\nfunction addPropertyCollection(target, key, propertyType, defaultValue, type) {\n if (isUndefined(target.propList)) {\n target.propList = {\n props: [],\n complexProps: [],\n colProps: [],\n events: [],\n propNames: [],\n complexPropNames: [],\n colPropNames: [],\n eventNames: []\n };\n }\n /* tslint:disable no-any */\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n target.propList[propertyType + 'Names'].push(key);\n /* tslint:enable no-any */\n}\n/**\n * Returns an object containing the builder properties\n * @param {Function} component\n * @private\n */\nfunction getBuilderProperties(component) {\n if (isUndefined(component.prototype.builderObject)) {\n component.prototype.builderObject = {\n properties: {}, propCollections: [], add: function () {\n this.isPropertyArray = true;\n this.propCollections.push(extend({}, this.properties, {}));\n }\n };\n let rex = /complex/;\n for (let key of Object.keys(component.prototype.propList)) {\n for (let prop of component.prototype.propList[key]) {\n if (rex.test(key)) {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n let childType = {};\n merge(childType, getBuilderProperties(prop.type));\n value(childType);\n let tempValue;\n if (!childType.isPropertyArray) {\n tempValue = extend({}, childType.properties, {});\n }\n else {\n tempValue = childType.propCollections;\n }\n this.properties[prop.propertyName] = tempValue;\n childType.properties = {};\n childType.propCollections = [];\n childType.isPropertyArray = false;\n return this;\n };\n }\n else {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n this.properties[prop.propertyName] = value;\n return this;\n };\n }\n }\n }\n }\n return component.prototype.builderObject;\n}\n/**\n * Method used to create builder for the components\n * @param {any} component -specifies the target component for which builder to be created.\n * @private\n */\nfunction CreateBuilder(component) {\n let builderFunction = function (element) {\n this.element = element;\n return this;\n };\n let instanceFunction = (element) => {\n if (!builderFunction.prototype.hasOwnProperty('create')) {\n builderFunction.prototype = getBuilderProperties(component);\n builderFunction.prototype.create = function () {\n let temp = extend({}, {}, this.properties);\n this.properties = {};\n return new component(temp, this.element);\n };\n }\n return new builderFunction(element);\n };\n return instanceFunction;\n}\n/**\n * Returns parent options for the object\n * @param {Object} context\n * @param {string} prefix\n * @private\n */\nfunction getParentContext(context, prefix) {\n if (context.hasOwnProperty('parentObj') === false) {\n return { context: context, prefix: prefix };\n }\n else {\n let curText = getValue('propName', context);\n if (curText) {\n prefix = curText + '-' + prefix;\n }\n return getParentContext(getValue('parentObj', context), prefix);\n }\n}\n\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Animation_1;\n/**\n * The Animation framework provide options to animate the html DOM elements\n * ```typescript\n * let animeObject = new Animation({\n * name: 'SlideLeftIn',\n * duration: 1000\n * });\n * animeObject.animate('#anime1');\n * animeObject.animate('#anime2', { duration: 500 });\n * ```\n */\nlet Animation = Animation_1 = class Animation extends Base {\n constructor(options) {\n super(options, undefined);\n /**\n * @private\n */\n this.easing = {\n ease: 'cubic-bezier(0.250, 0.100, 0.250, 1.000)',\n linear: 'cubic-bezier(0.250, 0.250, 0.750, 0.750)',\n easeIn: 'cubic-bezier(0.420, 0.000, 1.000, 1.000)',\n easeOut: 'cubic-bezier(0.000, 0.000, 0.580, 1.000)',\n easeInOut: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',\n elasticInOut: 'cubic-bezier(0.5,-0.58,0.38,1.81)',\n elasticIn: 'cubic-bezier(0.17,0.67,0.59,1.81)',\n elasticOut: 'cubic-bezier(0.7,-0.75,0.99,1.01)'\n };\n }\n /**\n * Applies animation to the current element.\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @return {void}\n */\n animate(element, options) {\n options = !options ? {} : options;\n let model = this.getModel(options);\n if (typeof element === 'string') {\n let elements = Array.prototype.slice.call(selectAll(element, document));\n for (let element of elements) {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n }\n else {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n }\n /**\n * Stop the animation effect on animated element.\n * @param {HTMLElement} element - Element which needs to be stop the animation.\n * @param {AnimationOptions} model - Handling the animation model at stop function.\n * @return {void}\n */\n static stop(element, model) {\n element.style.animation = '';\n element.removeAttribute('e-animate');\n let animationId = element.getAttribute('e-animation-id');\n if (animationId) {\n let frameId = parseInt(animationId, 10);\n cancelAnimationFrame(frameId);\n element.removeAttribute('e-animation-id');\n }\n if (model && model.end) {\n model.end.call(this, model);\n }\n }\n /**\n * Set delay to animation element\n * @param {AnimationModel} model\n * @returns {void}\n */\n static delayAnimation(model) {\n if (model.delay) {\n setTimeout(() => { Animation_1.applyAnimation(model); }, model.delay);\n }\n else {\n Animation_1.applyAnimation(model);\n }\n }\n /**\n * Triggers animation\n * @param {AnimationModel} model\n * @returns {void}\n */\n static applyAnimation(model) {\n model.timeStamp = 0;\n let step = 0;\n let timerId = 0;\n let startTime = 0;\n let prevTimeStamp = 0;\n let duration = model.duration;\n model.element.setAttribute('e-animate', 'true');\n let startAnimation = (timeStamp) => {\n try {\n if (timeStamp) {\n // let step: number = model.timeStamp = timeStamp - startTime;\n /** phantomjs workaround for timestamp fix */\n prevTimeStamp = prevTimeStamp === 0 ? timeStamp : prevTimeStamp;\n model.timeStamp = (timeStamp + model.timeStamp) - prevTimeStamp;\n prevTimeStamp = timeStamp;\n /** phantomjs workaround end */\n // trigger animation begin event\n if (!step && model.begin) {\n model.begin.call(this, model);\n }\n step = step + 1;\n let avg = model.timeStamp / step;\n if (model.timeStamp < duration && model.timeStamp + avg < duration && model.element.getAttribute('e-animate')) {\n // apply animation effect to the current element \n model.element.style.animation = model.name + ' ' + model.duration + 'ms ' + model.timingFunction;\n if (model.progress) {\n model.progress.call(this, model);\n }\n // repeat requestAnimationFrame \n requestAnimationFrame(startAnimation);\n }\n else {\n // clear requestAnimationFrame\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n model.element.removeAttribute('e-animate');\n model.element.style.animation = '';\n if (model.end) {\n model.end.call(this, model);\n }\n }\n }\n else {\n startTime = performance.now();\n // set initial requestAnimationFrame\n timerId = requestAnimationFrame(startAnimation);\n model.element.setAttribute('e-animation-id', timerId.toString());\n }\n }\n catch (e) {\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n if (model.fail) {\n model.fail.call(this, e);\n }\n }\n };\n startAnimation();\n }\n /**\n * Returns Animation Model\n * @param {AnimationModel} options\n * @returns {AnimationModel}\n */\n getModel(options) {\n return {\n name: options.name || this.name,\n delay: options.delay || this.delay,\n duration: (options.duration !== undefined ? options.duration : this.duration),\n begin: options.begin || this.begin,\n end: options.end || this.end,\n fail: options.fail || this.fail,\n progress: options.progress || this.progress,\n timingFunction: this.easing[options.timingFunction] ? this.easing[options.timingFunction] :\n (options.timingFunction || this.easing[this.timingFunction])\n };\n }\n /**\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n // no code needed\n }\n /**\n * Returns module name as animation\n * @private\n */\n getModuleName() {\n return 'animation';\n }\n /**\n * @private\n */\n destroy() {\n //Override base destroy;\n }\n};\n__decorate([\n Property('FadeIn')\n], Animation.prototype, \"name\", void 0);\n__decorate([\n Property(400)\n], Animation.prototype, \"duration\", void 0);\n__decorate([\n Property('ease')\n], Animation.prototype, \"timingFunction\", void 0);\n__decorate([\n Property(0)\n], Animation.prototype, \"delay\", void 0);\n__decorate([\n Event$1()\n], Animation.prototype, \"progress\", void 0);\n__decorate([\n Event$1()\n], Animation.prototype, \"begin\", void 0);\n__decorate([\n Event$1()\n], Animation.prototype, \"end\", void 0);\n__decorate([\n Event$1()\n], Animation.prototype, \"fail\", void 0);\nAnimation = Animation_1 = __decorate([\n NotifyPropertyChanges\n], Animation);\n/**\n * Ripple provides material theme's wave effect when an element is clicked\n * ```html\n *
    \n * \n * ```\n * @private\n * @param HTMLElement element - Target element\n * @param RippleOptions rippleOptions - Ripple options .\n */\nfunction rippleEffect(element, rippleOptions, done) {\n let rippleModel = getRippleModel(rippleOptions);\n if (rippleModel.rippleFlag === false || (rippleModel.rippleFlag === undefined && !isRippleEnabled)) {\n return Function;\n }\n element.setAttribute('data-ripple', 'true');\n EventHandler.add(element, 'mousedown', rippleHandler, { parent: element, rippleOptions: rippleModel });\n EventHandler.add(element, 'mouseup', rippleUpHandler, { parent: element, rippleOptions: rippleModel, done: done });\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n if (Browser.isPointer) {\n EventHandler.add(element, 'transitionend', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n }\n return (() => {\n element.removeAttribute('data-ripple');\n EventHandler.remove(element, 'mousedown', rippleHandler);\n EventHandler.remove(element, 'mouseup', rippleUpHandler);\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n EventHandler.remove(element, 'transitionend', rippleLeaveHandler);\n });\n}\nfunction getRippleModel(rippleOptions) {\n let rippleModel = {\n selector: rippleOptions && rippleOptions.selector ? rippleOptions.selector : null,\n ignore: rippleOptions && rippleOptions.ignore ? rippleOptions.ignore : null,\n rippleFlag: rippleOptions && rippleOptions.rippleFlag,\n isCenterRipple: rippleOptions && rippleOptions.isCenterRipple,\n duration: rippleOptions && rippleOptions.duration ? rippleOptions.duration : 350\n };\n return rippleModel;\n}\n/**\n * Handler for ripple event\n * @param {MouseEvent} e\n * @returns {void}\n * @private\n */\nfunction rippleHandler(e) {\n let target = (e.target);\n let selector = this.rippleOptions.selector;\n let element = selector ? closest(target, selector) : target;\n if (!element || (this.rippleOptions && closest(target, this.rippleOptions.ignore))) {\n return;\n }\n let offset = element.getBoundingClientRect();\n let offsetX = e.pageX - document.body.scrollLeft;\n let offsetY = e.pageY - ((!document.body.scrollTop && document.documentElement) ?\n document.documentElement.scrollTop : document.body.scrollTop);\n let pageX = Math.max(Math.abs(offsetX - offset.left), Math.abs(offsetX - offset.right));\n let pageY = Math.max(Math.abs(offsetY - offset.top), Math.abs(offsetY - offset.bottom));\n let radius = Math.sqrt(pageX * pageX + pageY * pageY);\n let diameter = radius * 2 + 'px';\n let x = offsetX - offset.left - radius;\n let y = offsetY - offset.top - radius;\n if (this.rippleOptions && this.rippleOptions.isCenterRipple) {\n x = 0;\n y = 0;\n diameter = '100%';\n }\n element.classList.add('e-ripple');\n let duration = this.rippleOptions.duration.toString();\n let styles = 'width: ' + diameter + ';height: ' + diameter + ';left: ' + x + 'px;top: ' + y + 'px;' +\n 'transition-duration: ' + duration + 'ms;';\n let rippleElement = createElement('div', { className: 'e-ripple-element', styles: styles });\n element.appendChild(rippleElement);\n window.getComputedStyle(rippleElement).getPropertyValue('opacity');\n rippleElement.style.transform = 'scale(1)';\n if (element !== this.parent) {\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: this.parent, rippleOptions: this.rippleOptions });\n }\n}\n/**\n * Handler for ripple element mouse up event\n * @param {MouseEvent} e\n * @returns {void}\n * @private\n */\nfunction rippleUpHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for ripple element mouse move event\n * @param {MouseEvent} e\n * @returns {void}\n * @private\n */\nfunction rippleLeaveHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for removing ripple element\n * @param {MouseEvent} e\n * @param {rippleArgs} eventArgs\n * @returns {void}\n * @private\n */\nfunction removeRipple(e, eventArgs) {\n let duration = eventArgs.rippleOptions.duration;\n let target = (e.target);\n let selector = eventArgs.rippleOptions.selector;\n let element = selector ? closest(target, selector) : target;\n if (!element || (element && element.className.indexOf('e-ripple') === -1)) {\n return;\n }\n let rippleElements = selectAll('.e-ripple-element', element);\n let rippleElement = rippleElements[rippleElements.length - 1];\n if (rippleElement) {\n rippleElement.style.opacity = '0.5';\n }\n if (eventArgs.parent !== element) {\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n }\n /* tslint:disable:align */\n setTimeout(() => {\n if (rippleElement && rippleElement.parentNode) {\n rippleElement.parentNode.removeChild(rippleElement);\n }\n if (!element.getElementsByClassName('e-ripple-element').length) {\n element.classList.remove('e-ripple');\n }\n if (eventArgs.done) {\n eventArgs.done(e);\n }\n }, duration);\n}\nlet isRippleEnabled = false;\n/**\n * Animation Module provides support to enable ripple effect functionality to Essential JS 2 components.\n * @param {boolean} isRipple Specifies the boolean value to enable or disable ripple effect.\n * @returns {boolean}\n */\nfunction enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n\n/**\n * Module loading operations\n */\nconst MODULE_SUFFIX = 'Module';\nclass ModuleLoader {\n constructor(parent) {\n this.loadedModules = [];\n this.parent = parent;\n }\n ;\n /**\n * Inject required modules in component library\n * @return {void}\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @param {Function[]} moduleList - Array of modules to be injected from sample side\n */\n inject(requiredModules, moduleList) {\n let reqLength = requiredModules.length;\n if (reqLength === 0) {\n this.clean();\n return;\n }\n if (this.loadedModules.length) {\n this.clearUnusedModule(requiredModules);\n }\n for (let i = 0; i < reqLength; i++) {\n let modl = requiredModules[i];\n for (let module of moduleList) {\n let modName = modl.member;\n if (module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {\n let moduleObject = createInstance(module, modl.args);\n let memberName = this.getMemberName(modName);\n if (modl.isProperty) {\n setValue(memberName, module, this.parent);\n }\n else {\n setValue(memberName, moduleObject, this.parent);\n }\n let loadedModule = modl;\n loadedModule.member = memberName;\n this.loadedModules.push(loadedModule);\n }\n }\n }\n }\n /**\n * To remove the created object while destroying the control\n * @return {void}\n */\n clean() {\n for (let modules of this.loadedModules) {\n if (!modules.isProperty) {\n getValue(modules.member, this.parent).destroy();\n }\n }\n this.loadedModules = [];\n }\n /**\n * Removes all unused modules\n * @param {ModuleDeclaration[]} moduleList\n * @returns {void}\n */\n clearUnusedModule(moduleList) {\n let usedModules = moduleList.map((arg) => { return this.getMemberName(arg.member); });\n let removableModule = this.loadedModules.filter((module) => {\n return usedModules.indexOf(module.member) === -1;\n });\n for (let mod of removableModule) {\n if (!mod.isProperty) {\n getValue(mod.member, this.parent).destroy();\n }\n this.loadedModules.splice(this.loadedModules.indexOf(mod), 1);\n deleteObject(this.parent, mod.member);\n }\n }\n /**\n * To get the name of the member.\n * @param {string} name\n * @returns {string}\n */\n getMemberName(name) {\n return name[0].toLowerCase() + name.substring(1) + MODULE_SUFFIX;\n }\n /**\n * Returns boolean based on whether the module specified is loaded or not\n * @param {string} modName\n * @returns {boolean}\n */\n isModuleLoaded(modName) {\n for (let mod of this.loadedModules) {\n if (mod.member === this.getMemberName(modName)) {\n return true;\n }\n }\n return false;\n }\n}\n\n/**\n * To detect the changes for inner properties.\n * @private\n */\nclass ChildProperty {\n constructor(parent, propName, defaultValue, isArray) {\n this.isComplexArraySetter = false;\n this.properties = {};\n this.changedProperties = {};\n this.childChangedProperties = {};\n this.oldProperties = {};\n // tslint:disable-next-line:no-empty\n this.finalUpdate = () => { };\n this.callChildDataBind = getValue('callChildDataBind', Base);\n this.parentObj = parent;\n this.controlParent = this.parentObj.controlParent || this.parentObj;\n this.propName = propName;\n this.isParentArray = isArray;\n this.setProperties(defaultValue, true);\n }\n /**\n * Updates the property changes\n * @param {boolean} val\n * @param {string} propName\n * @returns {void}\n */\n updateChange(val, propName) {\n if (val === true) {\n this.parentObj.childChangedProperties[propName] = val;\n }\n else {\n delete this.parentObj.childChangedProperties[propName];\n }\n if (this.parentObj.updateChange) {\n this.parentObj.updateChange(val, this.parentObj.propName);\n }\n }\n /**\n * Updates time out duration\n */\n updateTimeOut() {\n if (this.parentObj.updateTimeOut) {\n this.parentObj.finalUpdate();\n this.parentObj.updateTimeOut();\n }\n else {\n let changeTime = setTimeout(this.parentObj.dataBind.bind(this.parentObj));\n let clearUpdate = () => {\n clearTimeout(changeTime);\n };\n this.finalUpdate = clearUpdate;\n }\n }\n /**\n * Clears changed properties\n */\n clearChanges() {\n this.finalUpdate();\n this.updateChange(false, this.propName);\n this.oldProperties = {};\n this.changedProperties = {};\n }\n /**\n * Set property changes\n * @param {Object} prop\n * @param {boolean} muteOnChange\n * {void}\n */\n setProperties(prop, muteOnChange) {\n if (muteOnChange === true) {\n merge(this, prop);\n this.updateChange(false, this.propName);\n this.clearChanges();\n }\n else {\n merge(this, prop);\n }\n }\n /**\n * Binds data\n */\n dataBind() {\n this.callChildDataBind(this.childChangedProperties, this);\n if (this.isParentArray) {\n let curIndex = this.parentObj[this.propName].indexOf(this);\n if (Object.keys(this.changedProperties).length) {\n setValue(this.propName + '.' + curIndex, this.changedProperties, this.parentObj.changedProperties);\n setValue(this.propName + '.' + curIndex, this.oldProperties, this.parentObj.oldProperties);\n }\n }\n else {\n this.parentObj.changedProperties[this.propName] = this.changedProperties;\n this.parentObj.oldProperties[this.propName] = this.oldProperties;\n }\n this.clearChanges();\n }\n /**\n * Saves changes to newer values\n * @param {string} key\n * @param {Object} newValue\n * @param {Object} oldValue\n * @returns {void}\n */\n saveChanges(key, newValue, oldValue, restrictServerDataBind) {\n if (this.controlParent.isProtectedOnChange) {\n return;\n }\n if (!restrictServerDataBind) {\n this.serverDataBind(key, newValue, true);\n }\n this.oldProperties[key] = oldValue;\n this.changedProperties[key] = newValue;\n this.updateChange(true, this.propName);\n this.finalUpdate();\n this.updateTimeOut();\n }\n serverDataBind(key, value, isSaveChanges, action) {\n if (isBlazor() && !this.parentObj.isComplexArraySetter) {\n // tslint:disable-next-line:no-any\n let parent;\n let newChanges = {};\n let parentKey = isSaveChanges ? this.getParentKey(true) + '.' + key : key;\n /* istanbul ignore else */\n if (parentKey.indexOf('.') !== -1) {\n let complexKeys = parentKey.split('.');\n parent = newChanges;\n for (let i = 0; i < complexKeys.length; i++) {\n let isFinal = i === complexKeys.length - 1;\n parent[complexKeys[i]] = isFinal ? value : {};\n parent = isFinal ? parent : parent[complexKeys[i]];\n }\n }\n else {\n newChanges[parentKey] = {};\n parent = newChanges[parentKey];\n newChanges[parentKey][key] = value;\n }\n /* istanbul ignore next */\n if (this.isParentArray) {\n let actionProperty = 'ejsAction';\n parent[actionProperty] = action ? action : 'none';\n }\n this.controlParent.serverDataBind(newChanges);\n }\n }\n getParentKey(isSaveChanges) {\n // tslint:disable-next-line:no-any\n let index = '';\n let propName = this.propName;\n /* istanbul ignore next */\n if (this.isParentArray) {\n index = this.parentObj[this.propName].indexOf(this);\n let valueLength = this.parentObj[this.propName].length;\n valueLength = isSaveChanges ? valueLength : (valueLength > 0 ? valueLength - 1 : 0);\n index = index !== -1 ? '-' + index : '-' + valueLength;\n propName = propName + index;\n }\n if (this.controlParent !== this.parentObj) {\n propName = this.parentObj.getParentKey() + '.' + this.propName + index;\n }\n return propName;\n }\n}\n\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nlet componentCount = 0;\nlet lastPageID;\nlet lastHistoryLen = 0;\n/**\n * Base class for all Essential JavaScript components\n */\nlet Component = class Component extends Base {\n /**\n * Initialize the constructor for component base\n */\n constructor(options, selector) {\n super(options, selector);\n this.randomId = uniqueID();\n /**\n * string template option for Blazor template rendering\n * @private\n */\n this.isStringTemplate = false;\n this.needsID = false;\n this.isReactHybrid = false;\n if (isNullOrUndefined(this.enableRtl)) {\n this.setProperties({ 'enableRtl': rightToLeft }, true);\n }\n if (isNullOrUndefined(this.locale)) {\n this.setProperties({ 'locale': defaultCulture }, true);\n }\n this.moduleLoader = new ModuleLoader(this);\n this.localObserver = new Observer(this);\n // tslint:disable-next-line:no-function-constructor-with-string-args\n onIntlChange.on('notifyExternalChange', this.detectFunction, this, this.randomId);\n if (!isUndefined(selector)) {\n this.appendTo();\n }\n }\n requiredModules() {\n return [];\n }\n ;\n /**\n * Destroys the sub modules while destroying the widget\n */\n destroy() {\n if (this.isDestroyed) {\n return;\n }\n if (this.enablePersistence) {\n this.setPersistData();\n }\n this.localObserver.destroy();\n if (this.refreshing) {\n return;\n }\n removeClass([this.element], ['e-control']);\n this.trigger('destroyed', { cancel: false });\n super.destroy();\n this.moduleLoader.clean();\n onIntlChange.off('notifyExternalChange', this.detectFunction, this.randomId);\n }\n /**\n * Applies all the pending property changes and render the component again.\n */\n refresh() {\n this.refreshing = true;\n this.moduleLoader.clean();\n this.destroy();\n this.clearChanges();\n this.localObserver = new Observer(this);\n this.preRender();\n this.injectModules();\n this.render();\n this.refreshing = false;\n }\n accessMount() {\n if (this.mount && !this.isReactHybrid) {\n this.mount();\n }\n }\n /**\n * Returns the route element of the component\n */\n getRootElement() {\n if (this.isReactHybrid) {\n return this.actualElement;\n }\n else {\n return this.element;\n }\n }\n /**\n * Appends the control within the given HTML element\n * @param {string | HTMLElement} selector - Target element where control needs to be appended\n */\n appendTo(selector) {\n if (!isNullOrUndefined(selector) && typeof (selector) === 'string') {\n this.element = document.querySelector(selector);\n }\n else if (!isNullOrUndefined(selector)) {\n this.element = selector;\n }\n if (!isNullOrUndefined(this.element)) {\n let moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-control', moduleClass]);\n this.isProtectedOnChange = false;\n if (this.needsID && !this.element.id) {\n this.element.id = this.getUniqueID(this.getModuleName());\n }\n if (this.enablePersistence) {\n this.mergePersistData();\n window.addEventListener('unload', this.setPersistData.bind(this));\n }\n let inst = getValue('ej2_instances', this.element);\n if (!inst || inst.indexOf(this) === -1) {\n super.addInstance();\n }\n this.preRender();\n this.injectModules();\n this.render();\n if (!this.mount) {\n this.trigger('created');\n }\n else {\n this.accessMount();\n }\n }\n }\n /**\n * It is used to process the post rendering functionalities to a component.\n */\n renderComplete(wrapperElement) {\n if (isBlazor()) {\n let sfBlazor = 'sfBlazor';\n // tslint:disable-next-line:no-any\n window[sfBlazor].renderComplete(this.element, wrapperElement);\n }\n this.isRendered = true;\n }\n /**\n * When invoked, applies the pending property changes immediately to the component.\n */\n dataBind() {\n this.injectModules();\n super.dataBind();\n }\n ;\n /**\n * Attach one or more event handler to the current component context.\n * It is used for internal handling event internally within the component only.\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the handler to run when the event occurs\n * @param {Object} context - optional parameter Specifies the context to be bind in the handler.\n * @return {void}\n * @private\n */\n on(event, handler, context) {\n if (typeof event === 'string') {\n this.localObserver.on(event, handler, context);\n }\n else {\n for (let arg of event) {\n this.localObserver.on(arg.event, arg.handler, arg.context);\n }\n }\n }\n /**\n * To remove one or more event handler that has been attached with the on() method.\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the function to run when the event occurs\n * @return {void}\n * @private\n */\n off(event, handler) {\n if (typeof event === 'string') {\n this.localObserver.off(event, handler);\n }\n else {\n for (let arg of event) {\n this.localObserver.off(arg.event, arg.handler);\n }\n }\n }\n /**\n * To notify the handlers in the specified event.\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @return {void}\n * @private\n */\n notify(property, argument) {\n if (this.isDestroyed !== true) {\n this.localObserver.notify(property, argument);\n }\n }\n /**\n * Get injected modules\n * @private\n */\n getInjectedModules() {\n return this.injectedModules;\n }\n ;\n /**\n * Dynamically injects the required modules to the component.\n */\n static Inject(...moduleList) {\n if (!this.prototype.injectedModules) {\n this.prototype.injectedModules = [];\n }\n for (let i = 0; i < moduleList.length; i++) {\n if (this.prototype.injectedModules.indexOf(moduleList[i]) === -1) {\n this.prototype.injectedModules.push(moduleList[i]);\n }\n }\n }\n /**\n * This is a instance method to create an element.\n * @private\n */\n //tslint:disable:no-any\n createElement(tagName, prop, isVDOM) {\n if (isVDOM && this.isReactHybrid) {\n if (prop) {\n prop = {};\n }\n prop['data-id'] = getRandomId();\n return VirtualDOM.createElement(tagName, prop);\n }\n else {\n return createElement(tagName, prop);\n }\n }\n /**\n *\n * @param handler - handler to be triggered after state Updated.\n * @param argument - Arguments to be passed to caller.\n * @private\n */\n //tslint:disable:no-any\n triggerStateChange(handler, argument) {\n if (this.isReactHybrid) {\n //tslint:disable:no-any\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n }\n // tslint: enable: no-any\n injectModules() {\n if (this.injectedModules && this.injectedModules.length) {\n this.moduleLoader.inject(this.requiredModules(), this.injectedModules);\n }\n }\n detectFunction(args) {\n let prop = Object.keys(args);\n if (prop.length) {\n this[prop[0]] = args[prop[0]];\n }\n }\n mergePersistData() {\n let data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n }\n setPersistData() {\n if (!this.isDestroyed) {\n window.localStorage.setItem(this.getModuleName() + this.element.id, this.getPersistData());\n }\n }\n //tslint:disable-next-line\n clearTemplate(templateName, index) {\n //No Code\n }\n getUniqueID(definedName) {\n if (this.isHistoryChanged()) {\n componentCount = 0;\n }\n lastPageID = this.pageID(location.href);\n lastHistoryLen = history.length;\n return definedName + '_' + lastPageID + '_' + componentCount++;\n }\n pageID(url) {\n let hash = 0;\n if (url.length === 0) {\n return hash;\n }\n for (let i = 0; i < url.length; i++) {\n let char = url.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n }\n isHistoryChanged() {\n return lastPageID !== this.pageID(location.href) || lastHistoryLen !== history.length;\n }\n addOnPersist(options) {\n let persistObj = {};\n for (let key of options) {\n let objValue;\n objValue = getValue(key, this);\n if (!isUndefined(objValue)) {\n setValue(key, this.getActualProperties(objValue), persistObj);\n }\n }\n return JSON.stringify(persistObj, (key, value) => {\n return this.getActualProperties(value);\n });\n }\n getActualProperties(obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n }\n ignoreOnPersist(options) {\n return JSON.stringify(this.iterateJsonProperties(this.properties, options));\n }\n iterateJsonProperties(obj, ignoreList) {\n let newObj = {};\n for (let key of Object.keys(obj)) {\n if (ignoreList.indexOf(key) === -1) {\n // tslint:disable-next-line:no-any\n let value = obj[key];\n if (typeof value === 'object' && !(value instanceof Array)) {\n let newList = ignoreList.filter((str) => {\n return new RegExp(key + '.').test(str);\n }).map((str) => {\n return str.replace(key + '.', '');\n });\n newObj[key] = this.iterateJsonProperties(this.getActualProperties(value), newList);\n }\n else {\n newObj[key] = value;\n }\n }\n }\n return newObj;\n }\n};\n__decorate$1([\n Property(false)\n], Component.prototype, \"enablePersistence\", void 0);\n__decorate$1([\n Property()\n], Component.prototype, \"enableRtl\", void 0);\n__decorate$1([\n Property()\n], Component.prototype, \"locale\", void 0);\nComponent = __decorate$1([\n NotifyPropertyChanges\n], Component);\n//Function handling for page navigation detection \n/* istanbul ignore next */\n(() => {\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', \n /* istanbul ignore next */\n () => {\n componentCount = 0;\n });\n }\n})();\n\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Draggable_1;\nconst defaultPosition = { left: 0, top: 0, bottom: 0, right: 0 };\nconst isDraggedObject = { isDragged: false };\n/**\n * Specifies the position coordinates\n */\nclass Position extends ChildProperty {\n}\n__decorate$2([\n Property(0)\n], Position.prototype, \"left\", void 0);\n__decorate$2([\n Property(0)\n], Position.prototype, \"top\", void 0);\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n *
    Draggable
    \n * \n * ```\n */\nlet Draggable = Draggable_1 = class Draggable extends Base {\n constructor(element, options) {\n super(options, element);\n this.dragLimit = Draggable_1.getDefaultPosition();\n this.borderWidth = Draggable_1.getDefaultPosition();\n this.padding = Draggable_1.getDefaultPosition();\n this.diffX = 0;\n this.prevLeft = 0;\n this.prevTop = 0;\n this.dragProcessStarted = false;\n /* tslint:disable no-any */\n this.tapHoldTimer = 0;\n this.externalInitialize = false;\n this.diffY = 0;\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n this.droppables = {};\n this.bind();\n }\n bind() {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n }\n static getDefaultPosition() {\n return extend({}, defaultPosition);\n }\n toggleEvents(isUnWire) {\n let ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n let handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.touchStartEvent, handler, this);\n }\n }\n /* istanbul ignore next */\n mobileInitialize(evt) {\n let target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(() => {\n this.externalInitialize = true;\n this.removeTapholdTimer();\n this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.touchEndEvent, this.removeTapholdTimer, this);\n }\n /* istanbul ignore next */\n removeTapholdTimer() {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.touchEndEvent, this.removeTapholdTimer);\n }\n /* istanbul ignore next */\n getScrollableParent(element, axis) {\n let scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n let client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[axis]] > element[client[axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n getScrollableValues() {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n let isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n let verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n let horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n }\n initialize(evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n /* tslint:disable no-any */\n let abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (let i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[i]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches)) {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n let intCoord = this.getCoordinates(evt);\n this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };\n if (!this.clone) {\n let pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n }\n else {\n EventHandler.add(document, Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n document.body.classList.add('e-prevent-select');\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.touchStartEvent, evt);\n }\n intDragStart(evt) {\n this.removeTapholdTimer();\n let isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n let intCordinate = this.getCoordinates(evt);\n let pos;\n let styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10),\n };\n let element = this.element;\n if (this.clone && this.dragTarget) {\n let intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n let x = this.initialPosition.x - intCordinate.pageX;\n let y = this.initialPosition.y - intCordinate.pageY;\n let distance = Math.sqrt((x * x) + (y * y));\n if ((distance >= this.distance || this.externalInitialize)) {\n let ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n let dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n let curTarget = this.getProperTargetElement(evt);\n let args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n }\n else {\n this.dragLimit = { left: 0, right: 0, bottom: 0, top: 0 };\n this.borderWidth = { top: 0, left: 0 };\n }\n pos = { left: this.position.left - this.parentClientRect.left, top: this.position.top - this.parentClientRect.top };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n let posValue = this.getProcessedPositionValue({\n top: (pos.top - this.diffY) + 'px',\n left: (pos.left - this.diffX) + 'px'\n });\n this.dragElePosition = { top: pos.top, left: pos.left };\n setStyleAttribute(dragTargetElement, this.getDragPosition({ position: 'absolute', left: posValue.left, top: posValue.top }));\n EventHandler.remove(document, Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n }\n bindDragEvents(dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n }\n else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n }\n elementInViewport(el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return (this.top >= window.pageYOffset &&\n this.left >= window.pageXOffset &&\n (this.top + this.height) <= (window.pageYOffset + window.innerHeight) &&\n (this.left + this.width) <= (window.pageXOffset + window.innerWidth));\n }\n getProcessedPositionValue(value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n }\n calculateParentPosition(ele) {\n if (isNullOrUndefined(ele)) {\n return { left: 0, top: 0 };\n }\n let rect = ele.getBoundingClientRect();\n let style = getComputedStyle(ele);\n return {\n left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),\n top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)\n };\n }\n // tslint:disable-next-line:max-func-body-length\n intDrag(evt) {\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n let left;\n let top;\n this.position = this.getMousePosition(evt, this.isDragScroll);\n let docHeight = this.getDocumentWidthHeight('Height');\n if (docHeight < this.position.top) {\n this.position.top = docHeight;\n }\n let docWidth = this.getDocumentWidthHeight('Width');\n if (docWidth < this.position.left) {\n this.position.left = docWidth;\n }\n if (this.drag) {\n let curTarget = this.getProperTargetElement(evt);\n this.trigger('drag', { event: evt, element: this.element, target: curTarget });\n }\n let eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n /* tslint:disable no-any */\n let flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n }\n else {\n flag = false;\n }\n }\n if (flag) {\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n }\n else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n let helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n let tLeft = this.parentClientRect.left;\n let tTop = this.parentClientRect.top;\n let intCoord = this.getCoordinates(evt);\n let pagex = intCoord.pageX;\n let pagey = intCoord.pageY;\n let dLeft = this.position.left - this.diffX;\n let dTop = this.position.top - this.diffY;\n if (this.dragArea) {\n let styles = getComputedStyle(helperElement);\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n let helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)\n + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n }\n else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n }\n else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n let helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n }\n else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n }\n else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n }\n else {\n left = dLeft;\n top = dTop;\n }\n let iTop = tTop + this.borderWidth.top;\n let iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n let draEleTop;\n let draEleLeft;\n if (this.dragArea) {\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);\n draEleLeft = (left - iLeft) < 0 ? this.dragElePosition.left : (left - iLeft);\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n let dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });\n setStyleAttribute(helperElement, this.getDragPosition(dragValue));\n if (!this.elementInViewport(helperElement) && this.enableAutoScroll) {\n this.helperElement.scrollIntoView();\n }\n this.dragProcessStarted = true;\n this.prevLeft = left;\n this.prevTop = top;\n this.position.left = left;\n this.position.top = top;\n this.pageX = pagex;\n this.pageY = pagey;\n }\n triggerOutFunction(evt, eleObj) {\n this.hoverObject.instance.intOut(evt, eleObj.target);\n this.hoverObject.instance.dragData[this.scope] = null;\n this.hoverObject = null;\n }\n getDragPosition(dragValue) {\n let temp = extend({}, dragValue);\n if (this.axis) {\n if (this.axis === 'x') {\n delete temp.top;\n }\n else if (this.axis === 'y') {\n delete temp.left;\n }\n }\n return temp;\n }\n getDocumentWidthHeight(str) {\n let docBody = document.body;\n let docEle = document.documentElement;\n let returnValue = Math.max(docBody['scroll' + str], docEle['scroll' + str], docBody['offset' + str], docEle['offset' + str], docEle['client' + str]);\n return returnValue;\n }\n intDragStop(evt) {\n this.dragProcessStarted = false;\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n let type = ['touchend', 'pointerup', 'mouseup'];\n if (type.indexOf(evt.type) !== -1) {\n if (this.dragStop) {\n let curTarget = this.getProperTargetElement(evt);\n this.trigger('dragStop', { event: evt, element: this.element, target: curTarget, helper: this.helperElement });\n }\n this.intDestroy(evt);\n }\n else {\n this.element.setAttribute('aria-grabbed', 'false');\n }\n let eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n eleObj.instance.dragStopCalled = true;\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intDrop(evt, eleObj.target);\n }\n this.setGlobalDroppables(true);\n document.body.classList.remove('e-prevent-select');\n }\n /**\n * @private\n */\n intDestroy(evt) {\n this.dragProcessStarted = false;\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n this.element.setAttribute('aria-grabbed', 'false');\n EventHandler.remove(document, Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n }\n // triggers when property changed\n onPropertyChanged(newProp, oldProp) {\n //No Code to handle\n }\n getModuleName() {\n return 'draggable';\n }\n isDragStarted(change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n }\n setDragArea() {\n let eleWidthBound;\n let eleHeightBound;\n let top = 0;\n let left = 0;\n let ele;\n let type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n }\n else {\n ele = this.dragArea;\n }\n if (ele) {\n let elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? ele.scrollHeight : elementArea.bottom - elementArea.top;\n let keys = ['Top', 'Left', 'Bottom', 'Right'];\n let styles = getComputedStyle(ele);\n for (let i = 0; i < keys.length; i++) {\n let key = keys[i];\n let tborder = styles['border' + key + 'Width'];\n let tpadding = styles['padding' + key];\n let lowerKey = key.toLowerCase();\n this.borderWidth[lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);\n this.padding[lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);\n }\n top = elementArea.top;\n left = elementArea.left;\n this.dragLimit.left = left + this.borderWidth.left + this.padding.left;\n this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;\n this.dragLimit.right = left + eleWidthBound - (this.borderWidth.right + this.padding.right);\n this.dragLimit.bottom = top + eleHeightBound - (this.borderWidth.bottom + this.padding.bottom);\n }\n }\n getProperTargetElement(evt) {\n let intCoord = this.getCoordinates(evt);\n let ele;\n let prevStyle = this.helperElement.style.pointerEvents || '';\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1) {\n this.helperElement.style.pointerEvents = 'none';\n ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);\n this.helperElement.style.pointerEvents = prevStyle;\n }\n else {\n ele = evt.target;\n }\n return ele;\n }\n getMousePosition(evt, isdragscroll) {\n /* tslint:disable no-any */\n let dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;\n let intCoord = this.getCoordinates(evt);\n let pageX;\n let pageY;\n let isOffsetParent = isNullOrUndefined(dragEle.offsetParent);\n /* istanbul ignore next */\n if (isdragscroll) {\n pageX = this.clone ? intCoord.pageX :\n (intCoord.pageX + (isOffsetParent ? 0 : dragEle.offsetParent.scrollLeft)) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY :\n (intCoord.pageY + (isOffsetParent ? 0 : dragEle.offsetParent.scrollTop)) - this.relativeYPosition;\n }\n else {\n pageX = this.clone ? intCoord.pageX : (intCoord.pageX + window.pageXOffset) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;\n }\n return {\n left: pageX - (this.margin.left + this.cursorAt.left),\n top: pageY - (this.margin.top + this.cursorAt.top)\n };\n }\n getCoordinates(evt) {\n if (evt.type.indexOf('touch') > -1) {\n return evt.changedTouches[0];\n }\n return evt;\n }\n getHelperElement(evt) {\n let element;\n if (this.clone) {\n if (this.helper) {\n element = this.helper({ sender: evt, element: this.target });\n }\n else {\n element = createElement('div', { className: 'e-drag-helper e-block-touch', innerHTML: 'Draggable' });\n document.body.appendChild(element);\n }\n }\n else {\n element = this.element;\n }\n return element;\n }\n setGlobalDroppables(reset, drag, helper) {\n this.droppables[this.scope] = reset ? null : {\n draggable: drag,\n helper: helper,\n draggedElement: this.element\n };\n }\n checkTargetElement(evt) {\n let target = this.getProperTargetElement(evt);\n let dropIns = this.getDropInstance(target);\n if (!dropIns && target && !isNullOrUndefined(target.parentNode)) {\n let parent = closest(target.parentNode, '.e-droppable') || target.parentElement;\n if (parent) {\n dropIns = this.getDropInstance(parent);\n }\n }\n return { target: target, instance: dropIns };\n }\n getDropInstance(ele) {\n let name = 'getModuleName';\n let drop;\n let eleInst = ele && ele.ej2_instances;\n if (eleInst) {\n for (let inst of eleInst) {\n if (inst[name]() === 'droppable') {\n drop = inst;\n break;\n }\n }\n }\n return drop;\n }\n destroy() {\n this.toggleEvents(true);\n super.destroy();\n }\n};\n__decorate$2([\n Complex({}, Position)\n], Draggable.prototype, \"cursorAt\", void 0);\n__decorate$2([\n Property(true)\n], Draggable.prototype, \"clone\", void 0);\n__decorate$2([\n Property()\n], Draggable.prototype, \"dragArea\", void 0);\n__decorate$2([\n Property()\n], Draggable.prototype, \"isDragScroll\", void 0);\n__decorate$2([\n Event$1()\n], Draggable.prototype, \"drag\", void 0);\n__decorate$2([\n Event$1()\n], Draggable.prototype, \"dragStart\", void 0);\n__decorate$2([\n Event$1()\n], Draggable.prototype, \"dragStop\", void 0);\n__decorate$2([\n Property(1)\n], Draggable.prototype, \"distance\", void 0);\n__decorate$2([\n Property()\n], Draggable.prototype, \"handle\", void 0);\n__decorate$2([\n Property()\n], Draggable.prototype, \"abort\", void 0);\n__decorate$2([\n Property()\n], Draggable.prototype, \"helper\", void 0);\n__decorate$2([\n Property('default')\n], Draggable.prototype, \"scope\", void 0);\n__decorate$2([\n Property('')\n], Draggable.prototype, \"dragTarget\", void 0);\n__decorate$2([\n Property()\n], Draggable.prototype, \"axis\", void 0);\n__decorate$2([\n Property()\n], Draggable.prototype, \"queryPositionInfo\", void 0);\n__decorate$2([\n Property(false)\n], Draggable.prototype, \"enableTailMode\", void 0);\n__decorate$2([\n Property(false)\n], Draggable.prototype, \"skipDistanceCheck\", void 0);\n__decorate$2([\n Property(true)\n], Draggable.prototype, \"preventDefault\", void 0);\n__decorate$2([\n Property(false)\n], Draggable.prototype, \"enableAutoScroll\", void 0);\n__decorate$2([\n Property(false)\n], Draggable.prototype, \"enableTapHold\", void 0);\n__decorate$2([\n Property(750)\n], Draggable.prototype, \"tapHoldThreshold\", void 0);\nDraggable = Draggable_1 = __decorate$2([\n NotifyPropertyChanges\n], Draggable);\n\nvar __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Droppable Module provides support to enable droppable functionality in Dom Elements.\n * ```html\n *
    Droppable
    \n * \n * ```\n */\nlet Droppable = class Droppable extends Base {\n constructor(element, options) {\n super(options, element);\n this.mouseOver = false;\n this.dragData = {};\n this.dragStopCalled = false;\n this.bind();\n }\n bind() {\n this.wireEvents();\n }\n wireEvents() {\n EventHandler.add(this.element, Browser.touchEndEvent, this.intDrop, this);\n }\n // triggers when property changed\n onPropertyChanged(newProp, oldProp) {\n //No Code to handle\n }\n getModuleName() {\n return 'droppable';\n }\n intOver(event, element) {\n if (!this.mouseOver) {\n let drag = this.dragData[this.scope];\n this.trigger('over', { event: event, target: element, dragData: drag });\n this.mouseOver = true;\n }\n }\n intOut(event, element) {\n if (this.mouseOver) {\n this.trigger('out', { evt: event, target: element });\n this.mouseOver = false;\n }\n }\n intDrop(evt, element) {\n if (!this.dragStopCalled) {\n return;\n }\n else {\n this.dragStopCalled = false;\n }\n let accept = true;\n let drag = this.dragData[this.scope];\n let isDrag = drag ? (drag.helper && isVisible(drag.helper)) : false;\n let area;\n if (isDrag) {\n area = this.isDropArea(evt, drag.helper, element);\n if (this.accept) {\n accept = matches(drag.helper, this.accept);\n }\n }\n if (isDrag && this.drop && area.canDrop && accept) {\n this.trigger('drop', { event: evt, target: area.target, droppedElement: drag.helper, dragData: drag });\n }\n this.mouseOver = false;\n }\n isDropArea(evt, helper, element) {\n let area = { canDrop: true, target: element || evt.target };\n let isTouch = evt.type === 'touchend';\n if (isTouch || area.target === helper) {\n helper.style.display = 'none';\n let coord = isTouch ? (evt.changedTouches[0]) : evt;\n let ele = document.elementFromPoint(coord.clientX, coord.clientY);\n area.canDrop = false;\n area.canDrop = compareElementParent(ele, this.element);\n if (area.canDrop) {\n area.target = ele;\n }\n helper.style.display = '';\n }\n return area;\n }\n destroy() {\n EventHandler.remove(this.element, Browser.touchEndEvent, this.intDrop);\n super.destroy();\n }\n};\n__decorate$3([\n Property()\n], Droppable.prototype, \"accept\", void 0);\n__decorate$3([\n Property('default')\n], Droppable.prototype, \"scope\", void 0);\n__decorate$3([\n Event$1()\n], Droppable.prototype, \"drop\", void 0);\n__decorate$3([\n Event$1()\n], Droppable.prototype, \"over\", void 0);\n__decorate$3([\n Event$1()\n], Droppable.prototype, \"out\", void 0);\nDroppable = __decorate$3([\n NotifyPropertyChanges\n], Droppable);\n\nvar __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar KeyboardEvents_1;\nlet keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n *
    ;\n * \n * ```\n */\nlet KeyboardEvents = KeyboardEvents_1 = class KeyboardEvents extends Base {\n /**\n * Initializes the KeyboardEvents\n * @param {HTMLElement} element\n * @param {KeyboardEventsModel} options\n */\n constructor(element, options) {\n super(options, element);\n /**\n * To handle a key press event returns null\n */\n this.keyPressHandler = (e) => {\n let isAltKey = e.altKey;\n let isCtrlKey = e.ctrlKey;\n let isShiftKey = e.shiftKey;\n let curkeyCode = e.which;\n let keys = Object.keys(this.keyConfigs);\n for (let key of keys) {\n let configCollection = this.keyConfigs[key].split(',');\n for (let rconfig of configCollection) {\n let rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && isCtrlKey === rKeyObj.ctrlKey &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n if (this.keyAction) {\n this.keyAction(e);\n }\n }\n }\n }\n };\n this.bind();\n }\n /**\n * Unwire bound events and destroy the instance.\n * @return {void}\n */\n destroy() {\n this.unwireEvents();\n super.destroy();\n }\n /**\n * Function can be used to specify certain action if a property is changed\n * @param newProp\n * @param oldProp\n * @returns {void}\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n // No code are needed\n }\n ;\n bind() {\n this.wireEvents();\n }\n /**\n * To get the module name, returns 'keyboard'.\n * @private\n */\n getModuleName() {\n return 'keyboard';\n }\n /**\n * Wiring event handlers to events\n */\n wireEvents() {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n }\n /**\n * Unwiring event handlers to events\n */\n unwireEvents() {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n }\n /**\n * To get the key configuration data\n * @param {string} config - configuration data\n * returns {KeyData}\n */\n static getKeyConfigData(config) {\n if (config in this.configCache) {\n return this.configCache[config];\n }\n let keys = config.toLowerCase().split('+');\n let keyData = {\n altKey: (keys.indexOf('alt') !== -1 ? true : false),\n ctrlKey: (keys.indexOf('ctrl') !== -1 ? true : false),\n shiftKey: (keys.indexOf('shift') !== -1 ? true : false),\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n }\n else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[config] = keyData;\n return keyData;\n }\n // Return the keycode value as string \n static getKeyCode(keyVal) {\n return keyCode[keyVal] || keyVal.toUpperCase().charCodeAt(0);\n }\n};\nKeyboardEvents.configCache = {};\n__decorate$4([\n Property({})\n], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n__decorate$4([\n Property('keyup')\n], KeyboardEvents.prototype, \"eventName\", void 0);\n__decorate$4([\n Event$1()\n], KeyboardEvents.prototype, \"keyAction\", void 0);\nKeyboardEvents = KeyboardEvents_1 = __decorate$4([\n NotifyPropertyChanges\n], KeyboardEvents);\n\n/**\n * L10n modules provides localized text for different culture.\n * ```typescript\n * import {setCulture} from '@syncfusion/ts-base-library';\n * //load global locale object common for all components.\n * L10n.load({\n * 'fr-BE': {\n * 'button': {\n * 'check': 'vérifié'\n * }\n * }\n * });\n * //set globale default locale culture.\n * setCulture('fr-BE');\n * let instance: L10n = new L10n('button', {\n * check: 'checked'\n * });\n * //Get locale text for current property.\n * instance.getConstant('check');\n * //Change locale culture in a component.\n * instance.setLocale('en-US');\n * ```\n */\nclass L10n {\n /**\n * Constructor\n */\n constructor(controlName, localeStrings, locale) {\n this.controlName = controlName;\n this.localeStrings = localeStrings;\n this.setLocale(locale || defaultCulture);\n }\n /**\n * Sets the locale text\n * @param {string} locale\n * @returns {void}\n */\n setLocale(locale) {\n let intLocale = this.intGetControlConstant(L10n.locale, locale);\n this.currentLocale = intLocale || this.localeStrings;\n }\n /**\n * Sets the global locale for all components.\n * @param {Object} localeObject - specifies the localeObject to be set as global locale.\n */\n static load(localeObject) {\n this.locale = extend(this.locale, localeObject, {}, true);\n }\n /**\n * Returns current locale text for the property based on the culture name and control name.\n * @param {string} propertyName - specifies the property for which localize text to be returned.\n * @return string\n */\n getConstant(prop) {\n // Removed conditional operator because this method does not return correct value when passing 0 as value in localization\n if (!isNullOrUndefined(this.currentLocale[prop])) {\n return this.currentLocale[prop];\n }\n else {\n return this.localeStrings[prop] || '';\n }\n }\n /**\n * Returns the control constant object for current object and the locale specified.\n * @param {Object} curObject\n * @param {string} locale\n * @returns {Object}\n */\n intGetControlConstant(curObject, locale) {\n if ((curObject)[locale]) {\n return (curObject)[locale][this.controlName];\n }\n return null;\n }\n}\nL10n.locale = {};\n\nvar __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nclass SwipeSettings extends ChildProperty {\n}\n__decorate$5([\n Property(50)\n], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\nconst swipeRegex = /(Up|Down)/;\n/**\n * Touch class provides support to handle the touch event like tap, double tap, tap hold, etc..,\n * ```typescript\n * let node: HTMLElement;\n * let touchObj: Touch = new Touch({\n * element: node,\n * tap: function (e) {\n * // tap handler function code\n * }\n * tapHold: function (e) {\n * // tap hold handler function code\n * }\n * scroll: function (e) {\n * // scroll handler function code\n * }\n * swipe: function (e) {\n * // swipe handler function code\n * }\n * });\n * ```\n */\nlet Touch = class Touch extends Base {\n /* End-Properties */\n constructor(element, options) {\n super(options, element);\n this.touchAction = true;\n this.tapCount = 0;\n this.startEvent = (evt) => {\n if (this.touchAction === true) {\n let point = this.updateChangeTouches(evt);\n if (evt.changedTouches !== undefined) {\n this.touchAction = false;\n }\n this.isTouchMoved = false;\n this.movedDirection = '';\n this.startPoint = this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n this.startEventData = point;\n this.hScrollLocked = this.vScrollLocked = false;\n this.tStampStart = Date.now();\n this.timeOutTapHold = setTimeout(() => { this.tapHoldEvent(evt); }, this.tapHoldThreshold);\n EventHandler.add(this.element, Browser.touchMoveEvent, this.moveEvent, this);\n EventHandler.add(this.element, Browser.touchEndEvent, this.endEvent, this);\n EventHandler.add(this.element, Browser.touchCancelEvent, this.cancelEvent, this);\n }\n };\n this.moveEvent = (evt) => {\n let point = this.updateChangeTouches(evt);\n this.movedPoint = point;\n this.isTouchMoved = !(point.clientX === this.startPoint.clientX && point.clientY === this.startPoint.clientY);\n let eScrollArgs = {};\n if (this.isTouchMoved) {\n clearTimeout(this.timeOutTapHold);\n this.calcScrollPoints(evt);\n let scrollArg = {\n startEvents: this.startEventData,\n originalEvent: evt, startX: this.startPoint.clientX,\n startY: this.startPoint.clientY, distanceX: this.distanceX,\n distanceY: this.distanceY, scrollDirection: this.scrollDirection,\n velocity: this.getVelocity(point)\n };\n eScrollArgs = extend(eScrollArgs, {}, scrollArg);\n this.trigger('scroll', eScrollArgs);\n this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n }\n };\n this.cancelEvent = (evt) => {\n clearTimeout(this.timeOutTapHold);\n clearTimeout(this.timeOutTap);\n this.tapCount = 0;\n this.swipeFn(evt);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n };\n this.endEvent = (evt) => {\n this.swipeFn(evt);\n if (!this.isTouchMoved) {\n if (typeof this.tap === 'function') {\n this.trigger('tap', { originalEvent: evt, tapCount: ++this.tapCount });\n this.timeOutTap = setTimeout(() => {\n this.tapCount = 0;\n }, this.tapThreshold);\n }\n }\n this.modeclear();\n };\n this.swipeFn = (evt) => {\n clearTimeout(this.timeOutTapHold);\n clearTimeout(this.timeOutTap);\n let point = this.updateChangeTouches(evt);\n let diffX = point.clientX - this.startPoint.clientX;\n let diffY = point.clientY - this.startPoint.clientY;\n diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);\n diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);\n this.isTouchMoved = diffX > 1 || diffY > 1;\n this.endPoint = point;\n this.calcPoints(evt);\n let swipeArgs = {\n originalEvent: evt,\n startEvents: this.startEventData,\n startX: this.startPoint.clientX,\n startY: this.startPoint.clientY,\n distanceX: this.distanceX, distanceY: this.distanceY, swipeDirection: this.movedDirection,\n velocity: this.getVelocity(point)\n };\n if (this.isTouchMoved) {\n let eSwipeArgs;\n let tDistance = this.swipeSettings.swipeThresholdDistance;\n eSwipeArgs = extend(eSwipeArgs, this.defaultArgs, swipeArgs);\n let canTrigger = false;\n let ele = this.element;\n let scrollBool = this.isScrollable(ele);\n let moved = swipeRegex.test(this.movedDirection);\n if ((tDistance < this.distanceX && !moved) || (tDistance < this.distanceY && moved)) {\n if (!scrollBool) {\n canTrigger = true;\n }\n else {\n canTrigger = this.checkSwipe(ele, moved);\n }\n }\n if (canTrigger) {\n this.trigger('swipe', eSwipeArgs);\n }\n }\n this.modeclear();\n };\n this.modeclear = () => {\n this.modeClear = setTimeout(() => {\n this.touchAction = true;\n }, (typeof this.tap !== 'function' ? 0 : 20));\n this.lastTapTime = new Date().getTime();\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n };\n this.bind();\n }\n // triggers when property changed \n /**\n * @private\n * @param newProp\n * @param oldProp\n */\n onPropertyChanged(newProp, oldProp) {\n //No Code to handle\n }\n bind() {\n this.wireEvents();\n if (Browser.isIE) {\n this.element.classList.add('e-block-touch');\n }\n }\n /**\n * To destroy the touch instance.\n * @return {void}\n */\n destroy() {\n this.unwireEvents();\n super.destroy();\n }\n // Need to changes the event binding once we updated the event handler.\n wireEvents() {\n EventHandler.add(this.element, Browser.touchStartEvent, this.startEvent, this);\n }\n unwireEvents() {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.startEvent);\n }\n /**\n * Returns module name as touch\n * @returns {string}\n * @private\n */\n getModuleName() {\n return 'touch';\n }\n /**\n * Returns if the HTML element is Scrollable.\n * @param {HTMLElement} element - HTML Element to check if Scrollable.\n * @returns {boolean}\n */\n isScrollable(element) {\n let eleStyle = getComputedStyle(element);\n let style = eleStyle.overflow + eleStyle.overflowX + eleStyle.overflowY;\n if ((/(auto|scroll)/).test(style)) {\n return true;\n }\n return false;\n }\n tapHoldEvent(evt) {\n this.tapCount = 0;\n this.touchAction = true;\n let eTapArgs;\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n eTapArgs = { originalEvent: evt };\n this.trigger('tapHold', eTapArgs);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n }\n calcPoints(evt) {\n let point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.startPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.startPoint.clientY)));\n if (this.distanceX > this.distanceY) {\n this.movedDirection = (point.clientX > this.startPoint.clientX) ? 'Right' : 'Left';\n }\n else {\n this.movedDirection = (point.clientY < this.startPoint.clientY) ? 'Up' : 'Down';\n }\n }\n calcScrollPoints(evt) {\n let point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.lastMovedPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.lastMovedPoint.clientY)));\n if ((this.distanceX > this.distanceY || this.hScrollLocked === true) && this.vScrollLocked === false) {\n this.scrollDirection = (point.clientX > this.lastMovedPoint.clientX) ? 'Right' : 'Left';\n this.hScrollLocked = true;\n }\n else {\n this.scrollDirection = (point.clientY < this.lastMovedPoint.clientY) ? 'Up' : 'Down';\n this.vScrollLocked = true;\n }\n }\n getVelocity(pnt) {\n let newX = pnt.clientX;\n let newY = pnt.clientY;\n let newT = Date.now();\n let xDist = newX - this.startPoint.clientX;\n let yDist = newY - this.startPoint.clientX;\n let interval = newT - this.tStampStart;\n return Math.sqrt(xDist * xDist + yDist * yDist) / interval;\n }\n // tslint:disable-next-line:no-any\n checkSwipe(ele, flag) {\n let keys = ['scroll', 'offset'];\n let temp = flag ? ['Height', 'Top'] : ['Width', 'Left'];\n if ((ele[keys[0] + temp[0]] <= ele[keys[1] + temp[0]])) {\n return true;\n }\n return (ele[keys[0] + temp[1]] === 0) ||\n (ele[keys[1] + temp[0]] + ele[keys[0] + temp[1]] >= ele[keys[0] + temp[0]]);\n }\n updateChangeTouches(evt) {\n // tslint:disable-next-line:max-line-length\n let point = evt.changedTouches && evt.changedTouches.length !== 0 ? evt.changedTouches[0] : evt;\n return point;\n }\n};\n__decorate$5([\n Event$1()\n], Touch.prototype, \"tap\", void 0);\n__decorate$5([\n Event$1()\n], Touch.prototype, \"tapHold\", void 0);\n__decorate$5([\n Event$1()\n], Touch.prototype, \"swipe\", void 0);\n__decorate$5([\n Event$1()\n], Touch.prototype, \"scroll\", void 0);\n__decorate$5([\n Property(350)\n], Touch.prototype, \"tapThreshold\", void 0);\n__decorate$5([\n Property(750)\n], Touch.prototype, \"tapHoldThreshold\", void 0);\n__decorate$5([\n Complex({}, SwipeSettings)\n], Touch.prototype, \"swipeSettings\", void 0);\nTouch = __decorate$5([\n NotifyPropertyChanges\n], Touch);\n\n/**\n * SanitizeHtmlHelper for sanitize the value.\n */\nconst removeTags = [\n 'script',\n 'style',\n 'iframe[src]',\n 'link[href*=\"javascript:\"]',\n 'object[type=\"text/x-scriptlet\"]',\n 'object[data^=\"data:text/html;base64\"]',\n 'img[src^=\"data:text/html;base64\"]',\n '[src^=\"javascript:\"]',\n '[dynsrc^=\"javascript:\"]',\n '[lowsrc^=\"javascript:\"]',\n '[type^=\"application/x-shockwave-flash\"]'\n];\nconst removeAttrs = [\n { attribute: 'href', selector: '[href*=\"javascript:\"]' },\n { attribute: 'background', selector: '[background^=\"javascript:\"]' },\n { attribute: 'style', selector: '[style*=\"javascript:\"]' },\n { attribute: 'style', selector: '[style*=\"expression(\"]' },\n { attribute: 'href', selector: 'a[href^=\"data:text/html;base64\"]' }\n];\nconst jsEvents = ['onchange',\n 'onclick',\n 'onmouseover',\n 'onmouseout',\n 'onkeydown',\n 'onload',\n 'onerror',\n 'onblur',\n 'onfocus',\n 'onbeforeload',\n 'onbeforeunload',\n 'onkeyup',\n 'onsubmit',\n 'onafterprint',\n 'onbeforeonload',\n 'onbeforeprint',\n 'onblur',\n 'oncanplay',\n 'oncanplaythrough',\n 'onchange',\n 'onclick',\n 'oncontextmenu',\n 'ondblclick',\n 'ondrag',\n 'ondragend',\n 'ondragenter',\n 'ondragleave',\n 'ondragover',\n 'ondragstart',\n 'ondrop',\n 'ondurationchange',\n 'onemptied',\n 'onended',\n 'onerror',\n 'onerror',\n 'onfocus',\n 'onformchange',\n 'onforminput',\n 'onhaschange',\n 'oninput',\n 'oninvalid',\n 'onkeydown',\n 'onkeypress',\n 'onkeyup',\n 'onload',\n 'onloadeddata',\n 'onloadedmetadata',\n 'onloadstart',\n 'onmessage',\n 'onmousedown',\n 'onmousemove',\n 'onmouseout',\n 'onmouseover',\n 'onmouseup',\n 'onmousewheel',\n 'onoffline',\n 'onoine',\n 'ononline',\n 'onpagehide',\n 'onpageshow',\n 'onpause',\n 'onplay',\n 'onplaying',\n 'onpopstate',\n 'onprogress',\n 'onratechange',\n 'onreadystatechange',\n 'onredo',\n 'onresize',\n 'onscroll',\n 'onseeked',\n 'onseeking',\n 'onselect',\n 'onstalled',\n 'onstorage',\n 'onsubmit',\n 'onsuspend',\n 'ontimeupdate',\n 'onundo',\n 'onunload',\n 'onvolumechange',\n 'onwaiting',\n 'onmouseenter',\n 'onmouseleave',\n 'onmousewheel',\n 'onstart',\n 'onpropertychange'\n];\nclass SanitizeHtmlHelper {\n static beforeSanitize() {\n return {\n selectors: {\n tags: removeTags,\n attributes: removeAttrs\n }\n };\n }\n ;\n static sanitize(value) {\n let item = this.beforeSanitize();\n let output = this.serializeValue(item, value);\n return output;\n }\n static serializeValue(item, value) {\n this.removeAttrs = item.selectors.attributes;\n this.removeTags = item.selectors.tags;\n this.wrapElement = document.createElement('div');\n this.wrapElement.innerHTML = value;\n this.removeXssTags();\n this.removeJsEvents();\n this.removeXssAttrs();\n let tempEleValue = this.wrapElement.innerHTML;\n this.removeElement();\n return tempEleValue;\n }\n static removeElement() {\n // Removes an element's attibute to avoid html tag validation\n let nodes = this.wrapElement.children;\n for (let j = 0; j < nodes.length; j++) {\n let attribute = nodes[j].attributes;\n for (let i = 0; i < attribute.length; i++) {\n this.wrapElement.children[j].removeAttribute(attribute[i].localName);\n }\n }\n }\n static removeXssTags() {\n let elements = this.wrapElement.querySelectorAll(this.removeTags.join(','));\n if (elements.length > 0) {\n elements.forEach((element) => {\n detach(element);\n });\n }\n else {\n return;\n }\n }\n static removeJsEvents() {\n let elements = this.wrapElement.querySelectorAll('[' + jsEvents.join('],[') + ']');\n if (elements.length > 0) {\n elements.forEach((element) => {\n jsEvents.forEach((attr) => {\n if (element.hasAttribute(attr)) {\n element.removeAttribute(attr);\n }\n });\n });\n }\n else {\n return;\n }\n }\n static removeXssAttrs() {\n this.removeAttrs.forEach((item, index) => {\n let elements = this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n elements.forEach((element) => {\n element.removeAttribute(item.attribute);\n });\n }\n });\n }\n}\n\n/**\n * Base modules\n */\n\nexport { blazorCultureFormats, IntlBase, Ajax, Animation, rippleEffect, isRippleEnabled, enableRipple, Base, getComponent, removeChildInstance, Browser, Component, ChildProperty, Position, Draggable, Droppable, EventHandler, onIntlChange, rightToLeft, cldrData, defaultCulture, defaultCurrencyCode, Internationalization, setCulture, setCurrencyCode, loadCldr, enableRtl, getNumericObject, getNumberDependable, getDefaultDateObject, KeyboardEvents, L10n, ModuleLoader, Property, Complex, ComplexFactory, Collection, CollectionFactory, Event$1 as Event, NotifyPropertyChanges, CreateBuilder, SwipeSettings, Touch, HijriParser, blazorTemplates, getRandomId, compile$$1 as compile, updateBlazorTemplate, resetBlazorTemplate, setTemplateEngine, getTemplateEngine, disableBlazorMode, createInstance, setImmediate, getValue, setValue, deleteObject, isObject, getEnumValue, merge, extend, isNullOrUndefined, isUndefined, getUniqueID, debounce, queryParams, isObjectArray, compareElementParent, throwError, print, formatUnit, enableBlazorMode, isBlazor, getElement, getInstance, addInstance, uniqueID, createElement, addClass, removeClass, isVisible, prepend, append, detach, remove, attributes, select, selectAll, closest, siblings, getAttributeOrDefault, setStyleAttribute, classList, matches, includeInnerHTML, containsClass, cloneNode, Observer, SanitizeHtmlHelper };\n//# sourceMappingURL=ej2-base.es2015.js.map\n","import { Component, Event, EventHandler, NotifyPropertyChanges, Observer, Property, SanitizeHtmlHelper, addClass, append, attributes, closest, deleteObject, detach, getElement, getInstance, getUniqueID, getValue, isBlazor, isNullOrUndefined, isRippleEnabled, removeClass, rippleEffect, setValue } from '@syncfusion/ej2-base';\n\n/**\n * Initialize wrapper element for angular.\n * @private\n */\nfunction wrapperInitialize(createElement, tag, type, element, WRAPPER, role) {\n let input = element;\n if (element.tagName === tag) {\n let ejInstance = getValue('ej2_instances', element);\n input = createElement('input', { attrs: { 'type': type } });\n let props = ['change', 'cssClass', 'label', 'labelPosition', 'id'];\n for (let index = 0, len = element.attributes.length; index < len; index++) {\n if (props.indexOf(element.attributes[index].nodeName) === -1) {\n input.setAttribute(element.attributes[index].nodeName, element.attributes[index].nodeValue);\n }\n }\n attributes(element, { 'class': WRAPPER, 'role': role, 'aria-checked': 'false' });\n element.appendChild(input);\n setValue('ej2_instances', ejInstance, input);\n deleteObject(element, 'ej2_instances');\n }\n return input;\n}\nfunction getTextNode(element) {\n let node;\n let childnode = element.childNodes;\n for (let i = 0; i < childnode.length; i++) {\n node = childnode[i];\n if (node.nodeType === 3) {\n return node;\n }\n }\n return null;\n}\n/**\n * Destroy the button components.\n * @private\n */\nfunction destroy(ejInst, wrapper, tagName) {\n if (tagName === 'INPUT') {\n wrapper.parentNode.insertBefore(ejInst.element, wrapper);\n detach(wrapper);\n ejInst.element.checked = false;\n ['name', 'value', 'disabled'].forEach((key) => {\n ejInst.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach((key) => {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n }\n}\nfunction preRender(proxy, control, wrapper, element, moduleName) {\n element = wrapperInitialize(proxy.createElement, control, 'checkbox', element, wrapper, moduleName);\n proxy.element = element;\n if (proxy.element.getAttribute('type') !== 'checkbox') {\n proxy.element.setAttribute('type', 'checkbox');\n }\n if (!proxy.element.id) {\n proxy.element.id = getUniqueID('e-' + moduleName);\n }\n}\n/**\n * Creates CheckBox component UI with theming and ripple support.\n * @private\n */\nfunction createCheckBox(createElement, enableRipple = false, options = {}) {\n let wrapper = createElement('div', { className: 'e-checkbox-wrapper e-css' });\n if (options.cssClass) {\n addClass([wrapper], options.cssClass.split(' '));\n }\n if (options.enableRtl) {\n wrapper.classList.add('e-rtl');\n }\n if (enableRipple) {\n let rippleSpan = createElement('span', { className: 'e-ripple-container' });\n rippleEffect(rippleSpan, { isCenterRipple: true, duration: 400 });\n wrapper.appendChild(rippleSpan);\n }\n let frameSpan = createElement('span', { className: 'e-frame e-icons' });\n if (options.checked) {\n frameSpan.classList.add('e-check');\n }\n wrapper.appendChild(frameSpan);\n if (options.label) {\n let labelSpan = createElement('span', { className: 'e-label', innerHTML: options.label });\n wrapper.appendChild(labelSpan);\n }\n return wrapper;\n}\nfunction rippleMouseHandler(e, rippleSpan) {\n if (rippleSpan) {\n let event = document.createEvent('MouseEvents');\n event.initEvent(e.type, false, true);\n rippleSpan.dispatchEvent(event);\n }\n}\n/**\n * Append hidden input to given element\n * @private\n */\nfunction setHiddenInput(proxy, wrap) {\n if (proxy.element.getAttribute('ejs-for')) {\n wrap.appendChild(proxy.createElement('input', {\n attrs: { 'name': proxy.name || proxy.element.name, 'value': 'false', 'type': 'hidden' }\n }));\n }\n}\n\n/**\n * Common modules\n */\n\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst buttonObserver = new Observer();\nconst cssClassName = {\n RTL: 'e-rtl',\n BUTTON: 'e-btn',\n PRIMARY: 'e-primary',\n ICONBTN: 'e-icon-btn'\n};\n/**\n * The Button is a graphical user interface element that triggers an event on its click action. It can contain a text, an image, or both.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nlet Button = class Button extends Component {\n /**\n * Constructor for creating the widget\n * @param {ButtonModel} options?\n * @param {string|HTMLButtonElement} element?\n */\n constructor(options, element) {\n super(options, element);\n }\n preRender() {\n // pre render code snippets\n }\n /**\n * Initialize the control rendering\n * @returns void\n * @private\n */\n render() {\n if (isBlazor() && this.isServerRendered) {\n if (!this.disabled) {\n this.wireEvents();\n }\n buttonObserver.notify('component-rendered', { id: this.element.id, instance: this });\n }\n else {\n this.initialize();\n }\n this.removeRippleEffect = rippleEffect(this.element, { selector: '.' + cssClassName.BUTTON });\n this.renderComplete();\n }\n initialize() {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n if (this.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n if (!isBlazor() || (isBlazor() && this.getModuleName() !== 'progress-btn')) {\n if (this.content) {\n let tempContent = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.content) : this.content;\n this.element.innerHTML = tempContent;\n }\n this.setIconCss();\n }\n if (this.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n if (this.disabled) {\n this.controlStatus(this.disabled);\n }\n else {\n this.wireEvents();\n }\n }\n controlStatus(disabled) {\n this.element.disabled = disabled;\n }\n setIconCss() {\n if (this.iconCss) {\n let span = this.createElement('span', { className: 'e-btn-icon ' + this.iconCss });\n if (!this.element.textContent.trim()) {\n this.element.classList.add(cssClassName.ICONBTN);\n }\n else {\n span.classList.add('e-icon-' + this.iconPosition.toLowerCase());\n if (this.iconPosition === 'Top' || this.iconPosition === 'Bottom') {\n this.element.classList.add('e-' + this.iconPosition.toLowerCase() + '-icon-btn');\n }\n }\n let node = this.element.childNodes[0];\n if (node && (this.iconPosition === 'Left' || this.iconPosition === 'Top')) {\n this.element.insertBefore(span, node);\n }\n else {\n this.element.appendChild(span);\n }\n }\n }\n wireEvents() {\n if (this.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n }\n unWireEvents() {\n if (this.isToggle) {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n }\n }\n btnClickHandler() {\n if (this.element.classList.contains('e-active')) {\n this.element.classList.remove('e-active');\n }\n else {\n this.element.classList.add('e-active');\n }\n }\n /**\n * Destroys the widget.\n * @returns void\n */\n destroy() {\n if (!(isBlazor() && this.isServerRendered)) {\n let span;\n let classList = [cssClassName.PRIMARY, cssClassName.RTL, cssClassName.ICONBTN, 'e-success', 'e-info', 'e-danger',\n 'e-warning', 'e-flat', 'e-outline', 'e-small', 'e-bigger', 'e-active', 'e-round',\n 'e-top-icon-btn', 'e-bottom-icon-btn'];\n if (this.cssClass) {\n classList = classList.concat(this.cssClass.split(' '));\n }\n super.destroy();\n removeClass([this.element], classList);\n if (!this.element.getAttribute('class')) {\n this.element.removeAttribute('class');\n }\n if (this.disabled) {\n this.element.removeAttribute('disabled');\n }\n if (this.content) {\n this.element.innerHTML = this.element.innerHTML.replace(this.content, '');\n }\n span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n }\n this.unWireEvents();\n if (isRippleEnabled) {\n this.removeRippleEffect();\n }\n }\n /**\n * Get component name.\n * @returns string\n * @private\n */\n getModuleName() {\n return 'btn';\n }\n /**\n * Get the properties to be maintained in the persisted state.\n * @returns string\n * @private\n */\n getPersistData() {\n return this.addOnPersist([]);\n }\n /**\n * Dynamically injects the required modules to the component.\n * @private\n */\n static Inject() {\n // Inject code snippets\n }\n /**\n * Called internally if any of the property value changed.\n * @param {ButtonModel} newProp\n * @param {ButtonModel} oldProp\n * @returns void\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'isPrimary':\n if (newProp.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n else {\n this.element.classList.remove(cssClassName.PRIMARY);\n }\n break;\n case 'disabled':\n this.controlStatus(newProp.disabled);\n break;\n case 'iconCss':\n let span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n if (newProp.iconCss) {\n span.className = 'e-btn-icon ' + newProp.iconCss;\n if (this.element.textContent.trim()) {\n if (this.iconPosition === 'Left') {\n span.classList.add('e-icon-left');\n }\n else {\n span.classList.add('e-icon-right');\n }\n }\n }\n else {\n detach(span);\n }\n }\n else {\n this.setIconCss();\n }\n break;\n case 'iconPosition':\n removeClass([this.element], ['e-top-icon-btn', 'e-bottom-icon-btn']);\n span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.setIconCss();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n else {\n this.element.classList.remove(cssClassName.RTL);\n }\n break;\n case 'content':\n let node = getTextNode(this.element);\n if (!node) {\n this.element.classList.remove(cssClassName.ICONBTN);\n }\n if (!isBlazor() || (isBlazor() && !this.isServerRendered && this.getModuleName() !== 'progress-btn')) {\n if (this.enableHtmlSanitizer) {\n newProp.content = SanitizeHtmlHelper.sanitize(newProp.content);\n }\n this.element.innerHTML = newProp.content;\n this.setIconCss();\n }\n break;\n case 'isToggle':\n if (newProp.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n else {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n removeClass([this.element], ['e-active']);\n }\n break;\n }\n }\n }\n /**\n * Click the button element\n * its native method\n * @public\n */\n click() {\n this.element.click();\n }\n /**\n * Sets the focus to Button\n * its native method\n * @public\n */\n focusIn() {\n this.element.focus();\n }\n};\n__decorate([\n Property('Left')\n], Button.prototype, \"iconPosition\", void 0);\n__decorate([\n Property('')\n], Button.prototype, \"iconCss\", void 0);\n__decorate([\n Property(false)\n], Button.prototype, \"disabled\", void 0);\n__decorate([\n Property(false)\n], Button.prototype, \"isPrimary\", void 0);\n__decorate([\n Property('')\n], Button.prototype, \"cssClass\", void 0);\n__decorate([\n Property('')\n], Button.prototype, \"content\", void 0);\n__decorate([\n Property(false)\n], Button.prototype, \"isToggle\", void 0);\n__decorate([\n Property()\n], Button.prototype, \"locale\", void 0);\n__decorate([\n Property(false)\n], Button.prototype, \"enableHtmlSanitizer\", void 0);\n__decorate([\n Event()\n], Button.prototype, \"created\", void 0);\nButton = __decorate([\n NotifyPropertyChanges\n], Button);\n\n/**\n * Button modules\n */\n\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst CHECK = 'e-check';\nconst DISABLED = 'e-checkbox-disabled';\nconst FRAME = 'e-frame';\nconst INDETERMINATE = 'e-stop';\nconst LABEL = 'e-label';\nconst RIPPLE = 'e-ripple-container';\nconst RIPPLECHECK = 'e-ripple-check';\nconst RIPPLEINDETERMINATE = 'e-ripple-stop';\nconst RTL = 'e-rtl';\nconst WRAPPER = 'e-checkbox-wrapper';\nconst containerAttr = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value'];\n/**\n * The CheckBox is a graphical user interface element that allows you to select one or more options from the choices.\n * It contains checked, unchecked, and indeterminate states.\n * ```html\n * \n * \n * ```\n */\nlet CheckBox = class CheckBox extends Component {\n /**\n * Constructor for creating the widget\n * @private\n */\n constructor(options, element) {\n super(options, element);\n this.isFocused = false;\n this.isMouseClick = false;\n }\n changeState(state) {\n let ariaState;\n let rippleSpan;\n let frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n if (isRippleEnabled) {\n rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n }\n if (state === 'check') {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLEINDETERMINATE);\n rippleSpan.classList.add(RIPPLECHECK);\n }\n ariaState = 'true';\n this.element.checked = true;\n }\n else if (state === 'uncheck') {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n if (rippleSpan) {\n removeClass([rippleSpan], [RIPPLECHECK, RIPPLEINDETERMINATE]);\n }\n ariaState = 'false';\n this.element.checked = false;\n }\n else {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLECHECK);\n rippleSpan.classList.add(RIPPLEINDETERMINATE);\n }\n ariaState = 'mixed';\n this.element.indeterminate = true;\n }\n this.getWrapper().setAttribute('aria-checked', ariaState);\n }\n clickHandler(event) {\n if (this.isMouseClick) {\n this.focusOutHandler();\n this.isMouseClick = false;\n }\n if (this.indeterminate) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n this.indeterminate = false;\n this.element.indeterminate = false;\n }\n else if (this.checked) {\n this.changeState('uncheck');\n this.checked = false;\n }\n else {\n this.changeState('check');\n this.checked = true;\n }\n let changeEventArgs = { checked: this.element.checked, event: event };\n this.trigger('change', changeEventArgs);\n }\n /**\n * Destroys the widget.\n * @returns void\n */\n destroy() {\n let wrapper = this.getWrapper();\n if (isBlazor() && this.isServerRendered) {\n if (!this.disabled) {\n this.unWireEvents();\n }\n }\n else {\n super.destroy();\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n wrapper.parentNode.insertBefore(this.element, wrapper);\n detach(wrapper);\n this.element.checked = false;\n if (this.indeterminate) {\n this.element.indeterminate = false;\n }\n ['name', 'value', 'disabled'].forEach((key) => {\n this.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach((key) => {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n }\n }\n }\n focusHandler() {\n this.isFocused = true;\n }\n focusOutHandler() {\n this.getWrapper().classList.remove('e-focus');\n this.isFocused = false;\n }\n /**\n * Gets the module name.\n * @private\n */\n getModuleName() {\n return 'checkbox';\n }\n /**\n * Gets the properties to be maintained in the persistence state.\n * @private\n */\n getPersistData() {\n return this.addOnPersist(['checked', 'indeterminate']);\n }\n getWrapper() {\n return this.element.parentElement.parentElement;\n }\n initialize() {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n if (this.value) {\n this.element.setAttribute('value', this.value);\n }\n if (this.checked) {\n this.changeState('check');\n }\n if (this.indeterminate) {\n this.changeState();\n }\n if (this.disabled) {\n this.setDisabled();\n }\n }\n initWrapper() {\n let wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', {\n className: WRAPPER, attrs: { 'role': 'checkbox', 'aria-checked': 'false' }\n });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n let label = this.createElement('label', { attrs: { for: this.element.id } });\n let frameSpan = this.createElement('span', { className: 'e-icons ' + FRAME });\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.split(' '));\n }\n wrapper.appendChild(label);\n label.appendChild(this.element);\n setHiddenInput(this, label);\n label.appendChild(frameSpan);\n if (isRippleEnabled) {\n let rippleSpan = this.createElement('span', { className: RIPPLE });\n if (this.labelPosition === 'Before') {\n label.appendChild(rippleSpan);\n }\n else {\n label.insertBefore(rippleSpan, frameSpan);\n }\n rippleEffect(rippleSpan, { duration: 400, isCenterRipple: true });\n }\n if (this.label) {\n this.setText(this.label);\n }\n }\n keyUpHandler() {\n if (this.isFocused) {\n this.getWrapper().classList.add('e-focus');\n }\n }\n labelMouseHandler(e) {\n this.isMouseClick = true;\n let rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n }\n /**\n * Called internally if any of the property value changes.\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n let wrapper = this.getWrapper();\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'checked':\n this.indeterminate = false;\n this.element.indeterminate = false;\n this.changeState(newProp.checked ? 'check' : 'uncheck');\n break;\n case 'indeterminate':\n if (newProp.indeterminate) {\n this.changeState();\n }\n else {\n this.element.indeterminate = false;\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n wrapper.classList.remove(DISABLED);\n wrapper.setAttribute('aria-disabled', 'false');\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition':\n let label = wrapper.getElementsByClassName(LABEL)[0];\n let labelWrap = wrapper.getElementsByTagName('label')[0];\n detach(label);\n if (newProp.labelPosition === 'After') {\n labelWrap.appendChild(label);\n }\n else {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n break;\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToWrapper();\n break;\n }\n }\n }\n /**\n * Initialize Angular, React and Unique ID support.\n * @private\n */\n preRender() {\n if (isBlazor() && this.isServerRendered) {\n return;\n }\n let element = this.element;\n this.formElement = closest(this.element, 'form');\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-CHECKBOX', 'checkbox', element, WRAPPER, 'checkbox');\n this.element = element;\n if (this.element.getAttribute('type') !== 'checkbox') {\n this.element.setAttribute('type', 'checkbox');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n }\n /**\n * Initialize the control rendering.\n * @private\n */\n render() {\n if (isBlazor() && this.isServerRendered) {\n if (isRippleEnabled) {\n rippleEffect(this.getWrapper().getElementsByClassName(RIPPLE)[0], { duration: 400, isCenterRipple: true });\n }\n }\n else {\n this.initWrapper();\n this.initialize();\n }\n if (!this.disabled) {\n this.wireEvents();\n }\n this.updateHtmlAttributeToWrapper();\n this.renderComplete();\n }\n setDisabled() {\n let wrapper = this.getWrapper();\n this.element.disabled = true;\n wrapper.classList.add(DISABLED);\n wrapper.setAttribute('aria-disabled', 'true');\n }\n setText(text) {\n let label = this.getWrapper().getElementsByClassName(LABEL)[0];\n if (label) {\n label.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n label = this.createElement('span', { className: LABEL, innerHTML: text });\n let labelWrap = this.getWrapper().getElementsByTagName('label')[0];\n if (this.labelPosition === 'Before') {\n labelWrap.insertBefore(label, this.getWrapper().getElementsByClassName(FRAME)[0]);\n }\n else {\n labelWrap.appendChild(label);\n }\n }\n }\n changeHandler(e) {\n e.stopPropagation();\n }\n formResetHandler() {\n this.checked = this.initialCheckedValue;\n this.element.checked = this.initialCheckedValue;\n }\n unWireEvents() {\n let wrapper = this.getWrapper();\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n let label = wrapper.getElementsByTagName('label')[0];\n EventHandler.remove(label, 'mousedown', this.labelMouseHandler);\n EventHandler.remove(label, 'mouseup', this.labelMouseHandler);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.remove(this.element, 'change', this.changeHandler);\n }\n }\n wireEvents() {\n let wrapper = this.getWrapper();\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n let label = wrapper.getElementsByTagName('label')[0];\n EventHandler.add(label, 'mousedown', this.labelMouseHandler, this);\n EventHandler.add(label, 'mouseup', this.labelMouseHandler, this);\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n }\n }\n updateHtmlAttributeToWrapper() {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (let key of Object.keys(this.htmlAttributes)) {\n if (containerAttr.indexOf(key) > -1) {\n let wrapper = this.getWrapper();\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[key].split(' '));\n }\n else if (key === 'title') {\n wrapper.setAttribute(key, this.htmlAttributes[key]);\n }\n else if (key === 'style') {\n let frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n frameSpan.setAttribute(key, this.htmlAttributes[key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n }\n /**\n * Click the CheckBox element\n * its native method\n * @public\n */\n click() {\n this.element.click();\n }\n /**\n * Sets the focus to CheckBox\n * its native method\n * @public\n */\n focusIn() {\n this.element.focus();\n }\n};\n__decorate$1([\n Event()\n], CheckBox.prototype, \"change\", void 0);\n__decorate$1([\n Event()\n], CheckBox.prototype, \"created\", void 0);\n__decorate$1([\n Property(false)\n], CheckBox.prototype, \"checked\", void 0);\n__decorate$1([\n Property('')\n], CheckBox.prototype, \"cssClass\", void 0);\n__decorate$1([\n Property(false)\n], CheckBox.prototype, \"disabled\", void 0);\n__decorate$1([\n Property(false)\n], CheckBox.prototype, \"indeterminate\", void 0);\n__decorate$1([\n Property('')\n], CheckBox.prototype, \"label\", void 0);\n__decorate$1([\n Property('After')\n], CheckBox.prototype, \"labelPosition\", void 0);\n__decorate$1([\n Property('')\n], CheckBox.prototype, \"name\", void 0);\n__decorate$1([\n Property('')\n], CheckBox.prototype, \"value\", void 0);\n__decorate$1([\n Property(false)\n], CheckBox.prototype, \"enableHtmlSanitizer\", void 0);\n__decorate$1([\n Property({})\n], CheckBox.prototype, \"htmlAttributes\", void 0);\nCheckBox = __decorate$1([\n NotifyPropertyChanges\n], CheckBox);\n\n/**\n * CheckBox modules\n */\n\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RadioButton_1;\nconst LABEL$1 = 'e-label';\nconst RIPPLE$1 = 'e-ripple-container';\nconst RTL$1 = 'e-rtl';\nconst WRAPPER$1 = 'e-radio-wrapper';\n/**\n * The RadioButton is a graphical user interface element that allows you to select one option from the choices.\n * It contains checked and unchecked states.\n * ```html\n * \n * \n * ```\n */\nlet RadioButton = RadioButton_1 = class RadioButton extends Component {\n /**\n * Constructor for creating the widget\n * @private\n */\n constructor(options, element) {\n super(options, element);\n this.isFocused = false;\n }\n changeHandler(event) {\n this.checked = true;\n this.dataBind();\n let changeEventArgs = { value: this.value, event: event };\n this.trigger('change', changeEventArgs);\n if (this.tagName === 'EJS-RADIOBUTTON') {\n event.stopPropagation();\n }\n }\n updateChange(state) {\n let input;\n let instance;\n let radioGrp = this.getRadioGroup();\n for (let i = 0; i < radioGrp.length; i++) {\n input = radioGrp[i];\n if (input !== this.element) {\n instance = getInstance(input, RadioButton_1);\n instance.checked = false;\n if (this.tagName === 'EJS-RADIOBUTTON') {\n instance.angularValue = this.value;\n }\n }\n }\n }\n /**\n * Destroys the widget.\n * @returns void\n */\n destroy() {\n if (isBlazor() && this.isServerRendered) {\n if (!this.disabled) {\n this.unWireEvents();\n }\n }\n else {\n let radioWrap = this.element.parentElement;\n super.destroy();\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n radioWrap.parentNode.insertBefore(this.element, radioWrap);\n detach(radioWrap);\n this.element.checked = false;\n ['name', 'value', 'disabled'].forEach((key) => {\n this.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach((key) => {\n radioWrap.removeAttribute(key);\n });\n radioWrap.innerHTML = '';\n }\n }\n }\n focusHandler() {\n this.isFocused = true;\n }\n focusOutHandler() {\n this.getLabel().classList.remove('e-focus');\n }\n getModuleName() {\n return 'radio';\n }\n /**\n * To get the value of selected radio button in a group.\n * @method getSelectedValue\n * @return {string}\n */\n getSelectedValue() {\n let input;\n let radioGrp = this.getRadioGroup();\n for (let i = 0, len = radioGrp.length; i < len; i++) {\n input = radioGrp[i];\n if (input.checked) {\n return input.value;\n }\n }\n return '';\n }\n getRadioGroup() {\n return document.querySelectorAll('input.e-radio[name=\"' + this.element.getAttribute('name') + '\"]');\n }\n /**\n * Gets the properties to be maintained in the persistence state.\n * @private\n */\n getPersistData() {\n return this.addOnPersist(['checked']);\n }\n getLabel() {\n return this.element.nextElementSibling;\n }\n initialize() {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n this.initWrapper();\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n if (this.value) {\n this.element.setAttribute('value', this.value);\n }\n if (this.checked) {\n this.element.checked = true;\n }\n if (this.disabled) {\n this.setDisabled();\n }\n }\n initWrapper() {\n let rippleSpan;\n let wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER$1)) {\n wrapper = this.createElement('div', { className: WRAPPER$1 });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n let label = this.createElement('label', { attrs: { for: this.element.id } });\n wrapper.appendChild(this.element);\n wrapper.appendChild(label);\n if (isRippleEnabled) {\n rippleSpan = this.createElement('span', { className: (RIPPLE$1) });\n label.appendChild(rippleSpan);\n rippleEffect(rippleSpan, {\n duration: 400,\n isCenterRipple: true\n });\n }\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n label.classList.add(RTL$1);\n }\n if (this.cssClass) {\n addClass([label], this.cssClass.split(' '));\n }\n if (this.label) {\n this.setText(this.label);\n }\n }\n keyUpHandler() {\n if (this.isFocused) {\n this.getLabel().classList.add('e-focus');\n }\n }\n labelRippleHandler(e) {\n let ripple = this.getLabel().getElementsByClassName(RIPPLE$1)[0];\n rippleMouseHandler(e, ripple);\n }\n formResetHandler() {\n this.checked = this.initialCheckedValue;\n if (this.initialCheckedValue) {\n attributes(this.element, { 'checked': 'true' });\n }\n }\n /**\n * Called internally if any of the property value changes.\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n let label = this.getLabel();\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'checked':\n if (newProp.checked) {\n this.updateChange(newProp.checked);\n }\n this.element.checked = newProp.checked;\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([label], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([label], newProp.cssClass.split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n label.classList.add(RTL$1);\n }\n else {\n label.classList.remove(RTL$1);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition':\n if (newProp.labelPosition === 'Before') {\n label.classList.add('e-right');\n }\n else {\n label.classList.remove('e-right');\n }\n break;\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n this.element.setAttribute('value', newProp.value);\n break;\n }\n }\n }\n /**\n * Initialize checked Property, Angular and React and Unique ID support.\n * @private\n */\n preRender() {\n if (isBlazor() && this.isServerRendered) {\n return;\n }\n let element = this.element;\n this.formElement = closest(this.element, 'form');\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-RADIOBUTTON', 'radio', element, WRAPPER$1, 'radio');\n this.element = element;\n if (this.element.getAttribute('type') !== 'radio') {\n this.element.setAttribute('type', 'radio');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.tagName === 'EJS-RADIOBUTTON') {\n let formControlName = this.element.getAttribute('formcontrolname');\n if (formControlName) {\n this.setProperties({ 'name': formControlName }, true);\n this.element.setAttribute('name', formControlName);\n }\n }\n }\n /**\n * Initialize the control rendering\n * @private\n */\n render() {\n if (isBlazor() && this.isServerRendered) {\n if (isRippleEnabled) {\n let rippleSpan = this.element.parentElement.getElementsByClassName(RIPPLE$1)[0];\n rippleEffect(rippleSpan, { duration: 400, isCenterRipple: true });\n }\n }\n else {\n this.initialize();\n }\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n }\n setDisabled() {\n this.element.disabled = true;\n }\n setText(text) {\n let label = this.getLabel();\n let textLabel = label.getElementsByClassName(LABEL$1)[0];\n if (textLabel) {\n textLabel.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n textLabel = this.createElement('span', { className: LABEL$1, innerHTML: text });\n label.appendChild(textLabel);\n }\n if (this.labelPosition === 'Before') {\n this.getLabel().classList.add('e-right');\n }\n else {\n this.getLabel().classList.remove('e-right');\n }\n }\n unWireEvents() {\n let label = this.getLabel();\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n let rippleLabel = label.getElementsByClassName(LABEL$1)[0];\n if (rippleLabel) {\n EventHandler.remove(rippleLabel, 'mousedown', this.labelRippleHandler);\n EventHandler.remove(rippleLabel, 'mouseup', this.labelRippleHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n }\n wireEvents() {\n let label = this.getLabel();\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n let rippleLabel = label.getElementsByClassName(LABEL$1)[0];\n if (rippleLabel) {\n EventHandler.add(rippleLabel, 'mousedown', this.labelRippleHandler, this);\n EventHandler.add(rippleLabel, 'mouseup', this.labelRippleHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n }\n /**\n * Click the RadioButton element\n * its native method\n * @public\n */\n click() {\n this.element.click();\n }\n /**\n * Sets the focus to RadioButton\n * its native method\n * @public\n */\n focusIn() {\n this.element.focus();\n }\n};\n__decorate$2([\n Event()\n], RadioButton.prototype, \"change\", void 0);\n__decorate$2([\n Event()\n], RadioButton.prototype, \"created\", void 0);\n__decorate$2([\n Property(false)\n], RadioButton.prototype, \"checked\", void 0);\n__decorate$2([\n Property('')\n], RadioButton.prototype, \"cssClass\", void 0);\n__decorate$2([\n Property(false)\n], RadioButton.prototype, \"disabled\", void 0);\n__decorate$2([\n Property('')\n], RadioButton.prototype, \"label\", void 0);\n__decorate$2([\n Property('After')\n], RadioButton.prototype, \"labelPosition\", void 0);\n__decorate$2([\n Property('')\n], RadioButton.prototype, \"name\", void 0);\n__decorate$2([\n Property('')\n], RadioButton.prototype, \"value\", void 0);\n__decorate$2([\n Property(false)\n], RadioButton.prototype, \"enableHtmlSanitizer\", void 0);\nRadioButton = RadioButton_1 = __decorate$2([\n NotifyPropertyChanges\n], RadioButton);\n\n/**\n * RadioButton modules\n */\n\nvar __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst DISABLED$1 = 'e-switch-disabled';\nconst RIPPLE$2 = 'e-ripple-container';\nconst RIPPLE_CHECK = 'e-ripple-check';\nconst RTL$2 = 'e-rtl';\nconst WRAPPER$2 = 'e-switch-wrapper';\nconst ACTIVE = 'e-switch-active';\n/**\n * The Switch is a graphical user interface element that allows you to toggle between checked and unchecked states.\n * ```html\n * \n * \n * ```\n */\nlet Switch = class Switch extends Component {\n /**\n * Constructor for creating the widget.\n * @private\n */\n constructor(options, element) {\n super(options, element);\n this.isFocused = false;\n this.isDrag = false;\n }\n changeState(state) {\n let ariaState;\n let rippleSpan;\n let wrapper = this.getWrapper();\n let bar = wrapper.querySelector('.e-switch-inner');\n let handle = wrapper.querySelector('.e-switch-handle');\n if (isRippleEnabled) {\n rippleSpan = wrapper.getElementsByClassName(RIPPLE$2)[0];\n }\n if (state) {\n addClass([bar, handle], ACTIVE);\n ariaState = 'true';\n this.element.checked = true;\n this.checked = true;\n if (rippleSpan) {\n addClass([rippleSpan], [RIPPLE_CHECK]);\n }\n }\n else {\n removeClass([bar, handle], ACTIVE);\n ariaState = 'false';\n this.element.checked = false;\n this.checked = false;\n if (rippleSpan) {\n removeClass([rippleSpan], [RIPPLE_CHECK]);\n }\n }\n wrapper.setAttribute('aria-checked', ariaState);\n }\n clickHandler(evt) {\n this.isDrag = false;\n this.focusOutHandler();\n this.changeState(!this.checked);\n this.element.focus();\n let changeEventArgs = { checked: this.element.checked, event: evt };\n this.trigger('change', changeEventArgs);\n }\n /**\n * Destroys the Switch widget.\n * @returns void\n */\n destroy() {\n if (isBlazor() && this.isServerRendered) {\n if (!this.disabled) {\n this.unWireEvents();\n }\n }\n else {\n super.destroy();\n if (!this.disabled) {\n this.unWireEvents();\n }\n destroy(this, this.getWrapper(), this.tagName);\n }\n }\n focusHandler() {\n this.isFocused = true;\n }\n focusOutHandler() {\n this.getWrapper().classList.remove('e-focus');\n }\n /**\n * Gets the module name.\n * @private\n */\n getModuleName() {\n return 'switch';\n }\n /**\n * Gets the properties to be maintained in the persistence state.\n * @private\n */\n getPersistData() {\n return this.addOnPersist(['checked']);\n }\n getWrapper() {\n return this.element.parentElement;\n }\n initialize() {\n if (isNullOrUndefined(this.initialSwitchCheckedValue)) {\n this.initialSwitchCheckedValue = this.checked;\n }\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n if (this.value) {\n this.element.setAttribute('value', this.value);\n }\n if (this.checked) {\n this.changeState(true);\n }\n if (this.disabled) {\n this.setDisabled();\n }\n if (this.onLabel || this.offLabel) {\n this.setLabel(this.onLabel, this.offLabel);\n }\n }\n initWrapper() {\n let wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER$2)) {\n wrapper = this.createElement('div', {\n className: WRAPPER$2, attrs: { 'role': 'switch', 'aria-checked': 'false' }\n });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n let switchInner = this.createElement('span', { className: 'e-switch-inner' });\n let onLabel = this.createElement('span', { className: 'e-switch-on' });\n let offLabel = this.createElement('span', { className: 'e-switch-off' });\n let handle = this.createElement('span', { className: 'e-switch-handle' });\n wrapper.appendChild(this.element);\n setHiddenInput(this, wrapper);\n switchInner.appendChild(onLabel);\n switchInner.appendChild(offLabel);\n wrapper.appendChild(switchInner);\n wrapper.appendChild(handle);\n if (isRippleEnabled) {\n let rippleSpan = this.createElement('span', { className: RIPPLE$2 });\n handle.appendChild(rippleSpan);\n rippleEffect(rippleSpan, { duration: 400, isCenterRipple: true });\n }\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n wrapper.classList.add(RTL$2);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.split(' '));\n }\n }\n /**\n * Called internally if any of the property value changes.\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n let wrapper = this.getWrapper();\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'checked':\n this.changeState(newProp.checked);\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n wrapper.classList.remove(DISABLED$1);\n wrapper.setAttribute('aria-disabled', 'false');\n this.wireEvents();\n }\n break;\n case 'value':\n this.element.setAttribute('value', newProp.value);\n break;\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'onLabel':\n case 'offLabel':\n this.setLabel(newProp.onLabel, newProp.offLabel);\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n wrapper.classList.add(RTL$2);\n }\n else {\n wrapper.classList.remove(RTL$2);\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.split(' '));\n }\n break;\n }\n }\n }\n /**\n * Initialize Angular, React and Unique ID support.\n * @private\n */\n preRender() {\n if (isBlazor() && this.isServerRendered) {\n return;\n }\n let element = this.element;\n this.formElement = closest(this.element, 'form');\n this.tagName = this.element.tagName;\n preRender(this, 'EJS-SWITCH', WRAPPER$2, element, this.getModuleName());\n }\n /**\n * Initialize control rendering.\n * @private\n */\n render() {\n if (isBlazor() && this.isServerRendered) {\n if (isRippleEnabled) {\n rippleEffect(this.element.parentElement, { duration: 400, isCenterRipple: true });\n }\n }\n else {\n this.initWrapper();\n this.initialize();\n }\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n }\n rippleHandler(e) {\n let rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE$2)[0];\n rippleMouseHandler(e, rippleSpan);\n if (e.type === 'mousedown' && e.currentTarget.classList.contains('e-switch-wrapper') && e.which === 1) {\n this.isDrag = true;\n this.isFocused = false;\n }\n }\n rippleTouchHandler(eventType) {\n let rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE$2)[0];\n if (rippleSpan) {\n let event = document.createEvent('MouseEvents');\n event.initEvent(eventType, false, true);\n rippleSpan.dispatchEvent(event);\n }\n }\n setDisabled() {\n let wrapper = this.getWrapper();\n this.element.disabled = true;\n wrapper.classList.add(DISABLED$1);\n wrapper.setAttribute('aria-disabled', 'true');\n }\n setLabel(onText, offText) {\n let wrapper = this.getWrapper();\n if (onText) {\n wrapper.querySelector('.e-switch-on').textContent = onText;\n }\n if (offText) {\n wrapper.querySelector('.e-switch-off').textContent = offText;\n }\n }\n switchFocusHandler() {\n if (this.isFocused) {\n this.getWrapper().classList.add('e-focus');\n }\n }\n switchMouseUp(e) {\n let target = e.target;\n let rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE$2)[0];\n if (e.type === 'touchmove') {\n e.preventDefault();\n }\n if (e.type === 'touchstart') {\n this.isDrag = true;\n this.rippleTouchHandler('mousedown');\n }\n if (this.isDrag) {\n if ((e.type === 'mouseup' && target.className.indexOf('e-switch') < 0) || e.type === 'touchend') {\n this.clickHandler(e);\n this.rippleTouchHandler('mouseup');\n e.preventDefault();\n }\n }\n }\n formResetHandler() {\n this.checked = this.initialSwitchCheckedValue;\n this.element.checked = this.initialSwitchCheckedValue;\n }\n /**\n * Toggle the Switch component state into checked/unchecked.\n * @returns void\n */\n toggle() {\n this.clickHandler();\n }\n wireEvents() {\n let wrapper = this.getWrapper();\n let handle = wrapper.querySelector('.e-switch-handle');\n this.delegateMouseUpHandler = this.switchMouseUp.bind(this);\n this.delegateKeyUpHandler = this.switchFocusHandler.bind(this);\n EventHandler.add(wrapper, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'mouseup', this.delegateMouseUpHandler, this);\n EventHandler.add(this.element, 'keyup', this.delegateKeyUpHandler, this);\n EventHandler.add(wrapper, 'mousedown mouseup', this.rippleHandler, this);\n EventHandler.add(wrapper, 'touchstart touchmove touchend', this.switchMouseUp, this);\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n }\n unWireEvents() {\n let wrapper = this.getWrapper();\n let handle = wrapper.querySelector('.e-switch-handle');\n EventHandler.remove(wrapper, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'mouseup', this.delegateMouseUpHandler);\n EventHandler.remove(this.element, 'keyup', this.delegateKeyUpHandler);\n EventHandler.remove(wrapper, 'mousedown mouseup', this.rippleHandler);\n EventHandler.remove(wrapper, 'touchstart touchmove touchend', this.switchMouseUp);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n }\n /**\n * Click the switch element\n * its native method\n * @public\n */\n click() {\n this.element.click();\n }\n /**\n * Sets the focus to Switch\n * its native method\n * @public\n */\n focusIn() {\n this.element.focus();\n }\n};\n__decorate$3([\n Event()\n], Switch.prototype, \"change\", void 0);\n__decorate$3([\n Event()\n], Switch.prototype, \"created\", void 0);\n__decorate$3([\n Property(false)\n], Switch.prototype, \"checked\", void 0);\n__decorate$3([\n Property('')\n], Switch.prototype, \"cssClass\", void 0);\n__decorate$3([\n Property(false)\n], Switch.prototype, \"disabled\", void 0);\n__decorate$3([\n Property('')\n], Switch.prototype, \"name\", void 0);\n__decorate$3([\n Property('')\n], Switch.prototype, \"onLabel\", void 0);\n__decorate$3([\n Property('')\n], Switch.prototype, \"offLabel\", void 0);\n__decorate$3([\n Property('')\n], Switch.prototype, \"value\", void 0);\nSwitch = __decorate$3([\n NotifyPropertyChanges\n], Switch);\n\n/**\n * Switch modules\n */\n\nvar __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst classNames = {\n chipSet: 'e-chip-set',\n chip: 'e-chip',\n avatar: 'e-chip-avatar',\n text: 'e-chip-text',\n icon: 'e-chip-icon',\n delete: 'e-chip-delete',\n deleteIcon: 'e-dlt-btn',\n multiSelection: 'e-multi-selection',\n singleSelection: 'e-selection',\n active: 'e-active',\n chipWrapper: 'e-chip-avatar-wrap',\n iconWrapper: 'e-chip-icon-wrap',\n focused: 'e-focused',\n disabled: 'e-disabled',\n rtl: 'e-rtl',\n};\n/**\n * A chip component is a small block of essential information, mostly used on contacts or filter tags.\n * ```html\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nlet ChipList = class ChipList extends Component {\n constructor(options, element) {\n super(options, element);\n this.multiSelectedChip = [];\n }\n /**\n * Initialize the event handler\n * @private\n */\n preRender() {\n //prerender\n }\n /**\n * To find the chips length.\n * @returns boolean\n * @private\n */\n chipType() {\n return (this.chips && this.chips.length && this.chips.length > 0);\n }\n /**\n * To Initialize the control rendering.\n * @returns void\n * @private\n */\n render() {\n this.type = this.chips.length ? 'chipset' : (this.text || this.element.innerText ? 'chip' : 'chipset');\n if (!isBlazor() || !this.isServerRendered) {\n this.setAttributes();\n this.createChip();\n this.setRtl();\n this.select(this.selectedChips);\n }\n this.wireEvent(false);\n this.rippleFunction = rippleEffect(this.element, {\n selector: '.e-chip'\n });\n this.renderComplete();\n }\n createChip() {\n this.innerText = this.element.innerText.trim();\n if (isBlazor()) {\n let childElement = this.element.querySelectorAll('.e-chip');\n for (let i = 0; i < childElement.length; i++) {\n if (childElement[i] != null) {\n detach(childElement[i]);\n }\n }\n }\n else {\n this.element.innerHTML = '';\n }\n this.chipCreation(this.type === 'chip' ? [this.innerText ? this.innerText : this.text] : this.chips);\n }\n setAttributes() {\n if (this.type === 'chip') {\n this.element.tabIndex = 0;\n this.element.setAttribute('role', 'option');\n }\n else {\n this.element.classList.add(classNames.chipSet);\n this.element.setAttribute('role', 'listbox');\n if (this.selection === 'Multiple') {\n this.element.classList.add(classNames.multiSelection);\n this.element.setAttribute('aria-multiselectable', 'true');\n }\n else if (this.selection === 'Single') {\n this.element.classList.add(classNames.singleSelection);\n this.element.setAttribute('aria-multiselectable', 'false');\n }\n else {\n this.element.setAttribute('aria-multiselectable', 'false');\n }\n }\n }\n setRtl() {\n this.element.classList[this.enableRtl ? 'add' : 'remove'](classNames.rtl);\n }\n chipCreation(data) {\n let chipListArray = [];\n for (let i = 0; i < data.length; i++) {\n let fieldsData = this.getFieldValues(data[i]);\n let chipArray = this.elementCreation(fieldsData);\n let className = (classNames.chip + ' ' + (fieldsData.enabled ? ' ' : classNames.disabled) + ' ' +\n (fieldsData.avatarIconCss || fieldsData.avatarText ? classNames.chipWrapper : (fieldsData.leadingIconCss ?\n classNames.iconWrapper : ' ')) + ' ' + fieldsData.cssClass).split(' ').filter((css) => css);\n if (!this.chipType()) {\n chipListArray = chipArray;\n addClass([this.element], className);\n this.element.setAttribute('aria-label', fieldsData.text);\n if (fieldsData.value) {\n this.element.setAttribute('data-value', fieldsData.value.toString());\n }\n }\n else {\n let wrapper = this.createElement('DIV', {\n className: className.join(' '), attrs: {\n tabIndex: '0', role: 'option',\n 'aria-label': fieldsData.text, 'aria-selected': 'false'\n }\n });\n if (fieldsData.value) {\n wrapper.setAttribute('data-value', fieldsData.value.toString());\n }\n append(chipArray, wrapper);\n chipListArray.push(wrapper);\n }\n }\n append(chipListArray, this.element);\n }\n getFieldValues(data) {\n let chipEnabled = !(this.enabled.toString() === 'false');\n let fields = {\n text: typeof data === 'object' ? (data.text ? data.text.toString() : this.text.toString()) :\n (!this.chipType() ? (this.innerText ? this.innerText : this.text.toString()) : data.toString()),\n cssClass: typeof data === 'object' ? (data.cssClass ? data.cssClass.toString() : this.cssClass.toString()) :\n (this.cssClass.toString()),\n leadingIconCss: typeof data === 'object' ? (data.leadingIconCss ? data.leadingIconCss.toString() :\n this.leadingIconCss.toString()) : (this.leadingIconCss.toString()),\n avatarIconCss: typeof data === 'object' ? (data.avatarIconCss ? data.avatarIconCss.toString() :\n this.avatarIconCss.toString()) : (this.avatarIconCss.toString()),\n avatarText: typeof data === 'object' ? (data.avatarText ? data.avatarText.toString() : this.avatarText.toString()) :\n (this.avatarText.toString()),\n trailingIconCss: typeof data === 'object' ? (data.trailingIconCss ? data.trailingIconCss.toString() :\n this.trailingIconCss.toString()) : (this.trailingIconCss.toString()),\n enabled: typeof data === 'object' ? (!isNullOrUndefined(data.enabled) ? (data.enabled.toString() === 'false' ? false : true) :\n chipEnabled) : (chipEnabled),\n value: typeof data === 'object' ? ((data.value ? data.value.toString() : null)) : null,\n leadingIconUrl: typeof data === 'object' ? (data.leadingIconUrl ? data.leadingIconUrl.toString() : this.leadingIconUrl) :\n this.leadingIconUrl,\n trailingIconUrl: typeof data === 'object' ? (data.trailingIconUrl ? data.trailingIconUrl.toString() : this.trailingIconUrl) :\n this.trailingIconUrl\n };\n return fields;\n }\n elementCreation(fields) {\n let chipArray = [];\n if (fields.avatarText || fields.avatarIconCss) {\n let className = (classNames.avatar + ' ' + fields.avatarIconCss).trim();\n let chipAvatarElement = this.createElement('span', { className: className });\n chipAvatarElement.innerText = fields.avatarText;\n chipArray.push(chipAvatarElement);\n }\n else if (fields.leadingIconCss) {\n let className = (classNames.icon + ' ' + fields.leadingIconCss).trim();\n let chipIconElement = this.createElement('span', { className: className });\n chipArray.push(chipIconElement);\n }\n else if (fields.leadingIconUrl) {\n let className = (classNames.avatar + ' ' + 'image-url').trim();\n let chipIconElement = this.createElement('span', { className: className });\n chipIconElement.style.backgroundImage = 'url(' + fields.leadingIconUrl + ')';\n chipArray.push(chipIconElement);\n }\n let chipTextElement = this.createElement('span', { className: classNames.text });\n chipTextElement.innerText = fields.text;\n chipArray.push(chipTextElement);\n if (fields.trailingIconCss || (this.chipType() && this.enableDelete)) {\n let className = (classNames.delete + ' ' +\n (fields.trailingIconCss ? fields.trailingIconCss : classNames.deleteIcon)).trim();\n let chipdeleteElement = this.createElement('span', { className: className });\n chipArray.push(chipdeleteElement);\n }\n else if (fields.trailingIconUrl) {\n let className = ('trailing-icon-url').trim();\n let chipIconsElement = this.createElement('span', { className: className });\n chipIconsElement.style.backgroundImage = 'url(' + fields.trailingIconUrl + ')';\n chipArray.push(chipIconsElement);\n }\n return chipArray;\n }\n /**\n * A function that finds chip based on given input.\n * @param {number | HTMLElement } fields - We can pass index number or element of chip.\n */\n find(fields) {\n let chipData;\n let chipElement = fields instanceof HTMLElement ?\n fields : this.element.querySelectorAll('.' + classNames.chip)[fields];\n if (chipElement && this.chipType()) {\n chipData = { text: undefined, index: undefined, element: undefined, data: undefined };\n chipData.index = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.chip)).indexOf(chipElement);\n chipData.text = typeof this.chips[chipData.index] === 'object' ?\n (this.chips[chipData.index].text ?\n this.chips[chipData.index].text.toString() : '') :\n this.chips[chipData.index].toString();\n chipData.data = this.chips[chipData.index];\n chipData.element = chipElement;\n }\n return chipData;\n }\n /**\n * Allows adding the chip item(s) by passing a single or array of string, number, or ChipModel values.\n * @param {string[] | number[] | ChipModel[] | string | number | ChipModel} chipsData - We can pass array of string or\n * array of number or array of chip model or string data or number data or chip model.\n * @deprecated\n */\n add(chipsData) {\n if (this.type !== 'chip') {\n let fieldData = chipsData instanceof Array ?\n chipsData : [chipsData];\n this.chips.push(...fieldData);\n this.chipCreation(fieldData);\n }\n }\n /**\n * Allows selecting the chip item(s) by passing a single or array of string, number, or ChipModel values.\n * @param {number | number[] | HTMLElement | HTMLElement[]} fields - We can pass number or array of number\n * or chip element or array of chip element.\n */\n select(fields) {\n this.onSelect(fields, false);\n }\n multiSelection(newProp) {\n const items = this.element.querySelectorAll('.' + 'e-chip');\n for (let j = 0; j < newProp.length; j++) {\n if (typeof newProp[j] === 'string') {\n for (let k = 0; k < items.length; k++) {\n if (newProp[j] !== k) {\n if (newProp[j] === items[k].attributes[5].value) {\n this.multiSelectedChip.push(k);\n break;\n }\n }\n }\n }\n else {\n this.multiSelectedChip.push(newProp[j]);\n }\n }\n }\n onSelect(fields, callFromProperty) {\n if (this.chipType() && this.selection !== 'None') {\n if (callFromProperty) {\n let chipElements = this.element.querySelectorAll('.' + classNames.chip);\n for (let i = 0; i < chipElements.length; i++) {\n chipElements[i].setAttribute('aria-selected', 'false');\n chipElements[i].classList.remove(classNames.active);\n }\n }\n let fieldData = fields instanceof Array ? fields : [fields];\n for (let i = 0; i < fieldData.length; i++) {\n let chipElement = fieldData[i] instanceof HTMLElement ? fieldData[i]\n : this.element.querySelectorAll('.' + classNames.chip)[fieldData[i]];\n if (chipElement instanceof HTMLElement) {\n this.selectionHandler(chipElement);\n }\n }\n }\n }\n /**\n * Allows removing the chip item(s) by passing a single or array of string, number, or ChipModel values.\n * @param {number | number[] | HTMLElement | HTMLElement[]} fields - We can pass number or array of number\n * or chip element or array of chip element.\n */\n remove(fields) {\n if (this.chipType()) {\n let fieldData = fields instanceof Array ? fields : [fields];\n let chipElements = [];\n let chipCollection = this.element.querySelectorAll('.' + classNames.chip);\n fieldData.forEach((data) => {\n let chipElement = data instanceof HTMLElement ? data\n : chipCollection[data];\n if (chipElement instanceof HTMLElement) {\n chipElements.push(chipElement);\n }\n });\n chipElements.forEach((element) => {\n let chips = this.element.querySelectorAll('.' + classNames.chip);\n let index = Array.prototype.slice.call(chips).indexOf(element);\n this.deleteHandler(element, index);\n });\n }\n }\n /**\n * Returns the selected chip(s) data.\n */\n getSelectedChips() {\n let selectedChips;\n if (this.chipType() && this.selection !== 'None') {\n let selectedItems = { texts: [], Indexes: [], data: [], elements: [] };\n const items = this.element.querySelectorAll('.' + classNames.active);\n for (let i = 0; i < items.length; i++) {\n const chip = items[i];\n selectedItems.elements.push(chip);\n let index = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.chip)).indexOf(chip);\n selectedItems.Indexes.push(index);\n selectedItems.data.push(this.chips[index]);\n let text = typeof this.chips[index] === 'object' ?\n this.chips[index].text ? this.chips[index].text.toString()\n : null : this.chips[index].toString();\n selectedItems.texts.push(text);\n }\n let selectedItem = {\n text: selectedItems.texts[0], index: selectedItems.Indexes[0],\n data: selectedItems.data[0], element: selectedItems.elements[0]\n };\n selectedChips = !isNullOrUndefined(selectedItem.index) ?\n (this.selection === 'Multiple' ? selectedItems : selectedItem) : undefined;\n }\n return selectedChips;\n }\n wireEvent(unWireEvent) {\n if (!unWireEvent) {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyHandler, this);\n }\n else {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'keydown', this.keyHandler);\n EventHandler.remove(this.element, 'keyup', this.keyHandler);\n }\n }\n keyHandler(e) {\n if (e.target.classList.contains(classNames.chip)) {\n if (e.type === 'keydown') {\n if (e.keyCode === 13) {\n this.clickHandler(e);\n }\n else if (e.keyCode === 46 && this.enableDelete) {\n this.clickHandler(e, true);\n }\n }\n else if (e.keyCode === 9) {\n this.focusInHandler(e.target);\n }\n }\n }\n focusInHandler(chipWrapper) {\n if (!chipWrapper.classList.contains(classNames.focused)) {\n chipWrapper.classList.add(classNames.focused);\n }\n }\n focusOutHandler(e) {\n let chipWrapper = closest(e.target, '.' + classNames.chip);\n let focusedElement = !this.chipType() ? (this.element.classList.contains(classNames.focused) ?\n this.element : null) : this.element.querySelector('.' + classNames.focused);\n if (chipWrapper && focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n }\n }\n clickHandler(e, del = false) {\n let chipWrapper = closest(e.target, '.' + classNames.chip);\n if (chipWrapper) {\n let chipDataArgs;\n if (this.chipType()) {\n chipDataArgs = this.find(chipWrapper);\n }\n else {\n let index = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.chip)).indexOf(chipWrapper);\n chipDataArgs = {\n text: this.innerText ? this.innerText : this.text,\n element: chipWrapper, data: this.text, index: index\n };\n }\n chipDataArgs.event = e;\n chipDataArgs.cancel = false;\n this.trigger('beforeClick', chipDataArgs, (observedArgs) => {\n if (!observedArgs.cancel) {\n observedArgs.element = isBlazor() ? getElement(observedArgs.element) : observedArgs.element;\n this.clickEventHandler(observedArgs.element, e, del);\n }\n });\n }\n }\n clickEventHandler(chipWrapper, e, del) {\n if (this.chipType()) {\n let chipData = this.find(chipWrapper);\n chipData.event = e;\n let deleteElement = e.target.classList.contains(classNames.deleteIcon) ?\n e.target : (del ? chipWrapper.querySelector('.' + classNames.deleteIcon) : undefined);\n if (deleteElement && this.enableDelete) {\n chipData.cancel = false;\n let deletedItemArgs = chipData;\n this.trigger('delete', deletedItemArgs, (observedArgs) => {\n if (!observedArgs.cancel) {\n observedArgs.element = isBlazor() ? getElement(observedArgs.element) : observedArgs.element;\n this.deleteHandler(observedArgs.element, observedArgs.index);\n }\n });\n }\n else if (this.selection !== 'None') {\n this.selectionHandler(chipWrapper);\n chipData.selected = chipWrapper.classList.contains(classNames.active);\n let selectedItemArgs = chipData;\n this.trigger('click', selectedItemArgs);\n }\n else {\n this.focusInHandler(chipWrapper);\n let clickedItemArgs = chipData;\n this.trigger('click', clickedItemArgs);\n }\n }\n else {\n this.focusInHandler(chipWrapper);\n let clickedItemArgs = {\n text: this.innerText ? this.innerText : this.text,\n element: chipWrapper, data: this.text, event: e\n };\n this.trigger('click', clickedItemArgs);\n }\n }\n selectionHandler(chipWrapper) {\n if (this.selection === 'Single') {\n let activeElement = this.element.querySelector('.' + classNames.active);\n if (activeElement && activeElement !== chipWrapper) {\n activeElement.classList.remove(classNames.active);\n activeElement.setAttribute('aria-selected', 'false');\n }\n this.setProperties({ selectedChips: null }, true);\n }\n else {\n this.setProperties({ selectedChips: [] }, true);\n }\n if (chipWrapper.classList.contains(classNames.active)) {\n chipWrapper.classList.remove(classNames.active);\n chipWrapper.setAttribute('aria-selected', 'false');\n }\n else {\n chipWrapper.classList.add(classNames.active);\n chipWrapper.setAttribute('aria-selected', 'true');\n }\n this.updateSelectedChips();\n }\n updateSelectedChips() {\n let chipListEle = this.element.querySelectorAll('.e-chip');\n let chipCollIndex = [];\n let chipCollValue = [];\n let chip = null;\n let value;\n for (let i = 0; i < chipListEle.length; i++) {\n let selectedEle = this.element.querySelectorAll('.e-chip')[i];\n if (selectedEle.getAttribute('aria-selected') === 'true') {\n value = selectedEle.getAttribute('data-value');\n if (this.selection === 'Single' && selectedEle.classList.contains('e-active')) {\n chip = value ? value : i;\n break;\n }\n else {\n value ? chipCollValue.push(value) : chipCollIndex.push(i);\n }\n }\n }\n this.setProperties({ selectedChips: this.selection === 'Single' ? chip : value ? chipCollValue : chipCollIndex }, true);\n }\n deleteHandler(chipWrapper, index) {\n this.allowServerDataBinding = true;\n this.chips.splice(index, 1);\n this.setProperties({ chips: this.chips }, true);\n this.serverDataBind();\n this.allowServerDataBinding = false;\n if (!(isBlazor() && this.isServerRendered)) {\n detach(chipWrapper);\n }\n }\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also, it removes the attributes and classes.\n */\n destroy() {\n removeClass([this.element], [classNames.chipSet, classNames.chip, classNames.rtl,\n classNames.multiSelection, classNames.singleSelection, classNames.disabled, classNames.chipWrapper, classNames.iconWrapper,\n classNames.active, classNames.focused].concat(this.cssClass.toString().split(' ').filter((css) => css)));\n this.removeMultipleAttributes(['tabindex', 'role', 'aria-label', 'aria-multiselectable'], this.element);\n this.wireEvent(true);\n this.rippleFunction();\n if (isBlazor()) {\n let chipChildElement = !this.chipType() ? this.element.querySelectorAll('.e-chip-text') :\n this.element.querySelectorAll('.e-chip');\n for (let i = 0; i < chipChildElement.length; i++) {\n if (chipChildElement[i] != null) {\n detach(chipChildElement[i]);\n }\n }\n }\n else {\n super.destroy();\n this.element.innerHTML = '';\n this.element.innerText = this.innerText;\n }\n }\n removeMultipleAttributes(attributes$$1, element) {\n attributes$$1.forEach((attr) => {\n element.removeAttribute(attr);\n });\n }\n getPersistData() {\n return this.addOnPersist([]);\n }\n getModuleName() {\n return 'chip-list';\n }\n /**\n * Called internally if any of the property value changed.\n * @returns void\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'chips':\n case 'text':\n case 'avatarText':\n case 'avatarIconCss':\n case 'leadingIconCss':\n case 'trailingIconCss':\n case 'selection':\n case 'enableDelete':\n case 'enabled':\n if (!(isBlazor() && this.isServerRendered)) {\n this.isServerRendered = false;\n this.refresh();\n this.isServerRendered = true;\n }\n break;\n case 'cssClass':\n if (!(isBlazor() && this.isServerRendered)) {\n if (!this.chipType()) {\n removeClass([this.element], oldProp.cssClass.toString().split(' ').filter((css) => css));\n addClass([this.element], newProp.cssClass.toString().split(' ').filter((css) => css));\n }\n else {\n this.isServerRendered = false;\n this.refresh();\n this.isServerRendered = true;\n }\n }\n break;\n case 'selectedChips':\n removeClass(this.element.querySelectorAll('.e-active'), 'e-active');\n if (this.selection === 'Multiple') {\n this.multiSelectedChip = [];\n this.multiSelection(newProp.selectedChips);\n this.onSelect(this.multiSelectedChip, true);\n this.updateSelectedChips();\n }\n else {\n this.onSelect(newProp.selectedChips, true);\n }\n break;\n case 'enableRtl':\n this.setRtl();\n break;\n }\n }\n }\n};\n__decorate$4([\n Property([])\n], ChipList.prototype, \"chips\", void 0);\n__decorate$4([\n Property('')\n], ChipList.prototype, \"text\", void 0);\n__decorate$4([\n Property('')\n], ChipList.prototype, \"avatarText\", void 0);\n__decorate$4([\n Property('')\n], ChipList.prototype, \"avatarIconCss\", void 0);\n__decorate$4([\n Property('')\n], ChipList.prototype, \"leadingIconCss\", void 0);\n__decorate$4([\n Property('')\n], ChipList.prototype, \"trailingIconCss\", void 0);\n__decorate$4([\n Property('')\n], ChipList.prototype, \"leadingIconUrl\", void 0);\n__decorate$4([\n Property('')\n], ChipList.prototype, \"trailingIconUrl\", void 0);\n__decorate$4([\n Property('')\n], ChipList.prototype, \"cssClass\", void 0);\n__decorate$4([\n Property(true)\n], ChipList.prototype, \"enabled\", void 0);\n__decorate$4([\n Property([])\n], ChipList.prototype, \"selectedChips\", void 0);\n__decorate$4([\n Property('None')\n], ChipList.prototype, \"selection\", void 0);\n__decorate$4([\n Property(false)\n], ChipList.prototype, \"enableDelete\", void 0);\n__decorate$4([\n Event()\n], ChipList.prototype, \"created\", void 0);\n__decorate$4([\n Event()\n], ChipList.prototype, \"click\", void 0);\n__decorate$4([\n Event()\n], ChipList.prototype, \"beforeClick\", void 0);\n__decorate$4([\n Event()\n], ChipList.prototype, \"delete\", void 0);\nChipList = __decorate$4([\n NotifyPropertyChanges\n], ChipList);\n\n/**\n * Represents ChipList `Chip` model class.\n */\nclass Chip {\n}\n\n/**\n * Chip modules\n */\n\n/**\n * Button all modules\n */\n\nexport { wrapperInitialize, getTextNode, destroy, preRender, createCheckBox, rippleMouseHandler, setHiddenInput, buttonObserver, Button, CheckBox, RadioButton, Switch, classNames, ChipList, Chip };\n//# sourceMappingURL=ej2-buttons.es2015.js.map\n","import { Animation, Browser, ChildProperty, Collection, Component, Event, EventHandler, HijriParser, Internationalization, KeyboardEvents, L10n, NotifyPropertyChanges, Property, addClass, append, attributes, blazorCultureFormats, cldrData, closest, createElement, detach, extend, formatUnit, getDefaultDateObject, getUniqueID, getValue, isBlazor, isNullOrUndefined, isUndefined, merge, prepend, remove, removeClass, rippleEffect, select, setStyleAttribute, setValue, throwError } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { ListBase } from '@syncfusion/ej2-lists';\n\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n//class constant defination.\nconst OTHERMONTH = 'e-other-month';\nconst OTHERDECADE = 'e-other-year';\nconst ROOT = 'e-calendar';\nconst DEVICE = 'e-device';\nconst HEADER = 'e-header';\nconst RTL = 'e-rtl';\nconst CONTENT = 'e-content';\nconst YEAR = 'e-year';\nconst MONTH = 'e-month';\nconst DECADE = 'e-decade';\nconst ICON = 'e-icons';\nconst PREVICON = 'e-prev';\nconst NEXTICON = 'e-next';\nconst PREVSPAN = 'e-date-icon-prev';\nconst NEXTSPAN = 'e-date-icon-next ';\nconst ICONCONTAINER = 'e-icon-container';\nconst DISABLED = 'e-disabled';\nconst OVERLAY = 'e-overlay';\nconst WEEKEND = 'e-weekend';\nconst WEEKNUMBER = 'e-week-number';\nconst SELECTED = 'e-selected';\nconst FOCUSEDDATE = 'e-focused-date';\nconst OTHERMONTHROW = 'e-month-hide';\nconst TODAY = 'e-today';\nconst TITLE = 'e-title';\nconst LINK = 'e-day';\nconst CELL = 'e-cell';\nconst WEEKHEADER = 'e-week-header';\nconst ZOOMIN = 'e-zoomin';\nconst FOOTER = 'e-footer-container';\nconst BTN = 'e-btn';\nconst FLAT = 'e-flat';\nconst CSS = 'e-css';\nconst PRIMARY = 'e-primary';\nconst DAYHEADERLONG = 'e-calendar-day-header-lg';\nconst dayMilliSeconds = 86400000;\nconst minutesMilliSeconds = 60000;\n/**\n *\n * @private\n */\nlet CalendarBase = class CalendarBase extends Component {\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n * @param {CalendarModel} options?\n * @param {string|HTMLElement} element?\n */\n constructor(options, element) {\n super(options, element);\n this.effect = '';\n this.isPopupClicked = false;\n this.isDateSelected = true;\n }\n /**\n * To Initialize the control rendering.\n * @returns void\n * @private\n */\n render() {\n this.rangeValidation(this.min, this.max);\n this.calendarEleCopy = this.element.cloneNode(true);\n if (this.calendarMode === 'Islamic') {\n if (+(this.min.setSeconds(0)) === +new Date(1900, 0, 1, 0, 0, 0)) {\n this.min = new Date(1944, 2, 18);\n }\n if (+this.max === +new Date(2099, 11, 31)) {\n this.max = new Date(2069, 10, 16);\n }\n }\n this.globalize = new Internationalization(this.locale);\n if (isNullOrUndefined(this.firstDayOfWeek) || this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: this.globalize.getFirstDayOfWeek() }, true);\n }\n this.todayDisabled = false;\n this.todayDate = new Date(new Date().setHours(0, 0, 0, 0));\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add(ROOT);\n if (this.enableRtl) {\n this.element.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.element.classList.add(DEVICE);\n }\n attributes(this.element, {\n 'data-role': 'calendar'\n });\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.calendarElement = this.createElement('div');\n this.calendarElement.classList.add(ROOT);\n if (this.enableRtl) {\n this.calendarElement.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.calendarElement.classList.add(DEVICE);\n }\n attributes(this.calendarElement, {\n 'role': 'calendar'\n });\n }\n this.createHeader();\n this.createContent();\n this.wireEvents();\n }\n rangeValidation(min, max) {\n if (isNullOrUndefined(min)) {\n this.setProperties({ min: new Date(1900, 0, 1) }, true);\n }\n if (isNullOrUndefined(max)) {\n this.setProperties({ max: new Date(2099, 11, 31) }, true);\n }\n }\n getDefaultKeyConfig() {\n this.defaultKeyConfigs = {\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n altUpArrow: 'alt+uparrow',\n spacebar: 'space',\n altRightArrow: 'alt+rightarrow',\n altLeftArrow: 'alt+leftarrow'\n };\n return this.defaultKeyConfigs;\n }\n validateDate(value) {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(this.max))) }, true);\n this.currentDate = this.currentDate ? this.currentDate : new Date(new Date().setHours(0, 0, 0, 0));\n if (!isNullOrUndefined(value) && this.min <= this.max && value >= this.min && value <= this.max) {\n this.currentDate = new Date(this.checkValue(value));\n }\n }\n setOverlayIndex(popupWrapper, popupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(popupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n let index = parseInt(popupElement.style.zIndex, 10) ? parseInt(popupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n }\n minMaxUpdate(value) {\n if (!(+this.min <= +this.max)) {\n this.setProperties({ min: this.min }, true);\n addClass([this.element], OVERLAY);\n }\n else {\n removeClass([this.element], OVERLAY);\n }\n this.min = isNullOrUndefined(this.min) || !(+this.min) ? this.min = new Date(1900, 0, 1) : this.min;\n this.max = isNullOrUndefined(this.max) || !(+this.max) ? this.max = new Date(2099, 11, 31) : this.max;\n if (+this.min <= +this.max && value && +value <= +this.max && +value >= +this.min) {\n this.currentDate = new Date(this.checkValue(value));\n }\n else {\n if (+this.min <= +this.max && !value && +this.currentDate > +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n else {\n if (+this.currentDate < +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n }\n }\n }\n createHeader() {\n let ariaPrevAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'previous month'\n };\n let ariaNextAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'next month'\n };\n let ariaTitleAttrs = {\n 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'title'\n };\n this.headerElement = this.createElement('div', { className: HEADER });\n let iconContainer = this.createElement('div', { className: ICONCONTAINER });\n this.previousIcon = this.createElement('button', { className: '' + PREVICON, attrs: { type: 'button' } });\n rippleEffect(this.previousIcon, {\n duration: 400,\n selector: '.e-prev',\n isCenterRipple: true\n });\n attributes(this.previousIcon, ariaPrevAttrs);\n this.nextIcon = this.createElement('button', { className: '' + NEXTICON, attrs: { type: 'button' } });\n rippleEffect(this.nextIcon, {\n selector: '.e-next',\n duration: 400,\n isCenterRipple: true\n });\n attributes(this.nextIcon, ariaNextAttrs);\n this.headerTitleElement = this.createElement('div', { className: '' + LINK + ' ' + TITLE });\n attributes(this.headerTitleElement, ariaTitleAttrs);\n this.headerElement.appendChild(this.headerTitleElement);\n this.previousIcon.appendChild(this.createElement('span', { className: '' + PREVSPAN + ' ' + ICON }));\n this.nextIcon.appendChild(this.createElement('span', { className: '' + NEXTSPAN + ' ' + ICON }));\n iconContainer.appendChild(this.previousIcon);\n iconContainer.appendChild(this.nextIcon);\n this.headerElement.appendChild(iconContainer);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.headerElement);\n }\n else {\n this.calendarElement.appendChild(this.headerElement);\n }\n this.adjustLongHeaderSize();\n }\n createContent() {\n this.contentElement = this.createElement('div', { className: CONTENT });\n this.table = this.createElement('table', { attrs: { tabIndex: '0', 'role': 'grid', 'aria-activedescendant': '' } });\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.contentElement);\n }\n else {\n this.calendarElement.appendChild(this.contentElement);\n }\n this.contentElement.appendChild(this.table);\n this.createContentHeader();\n this.createContentBody();\n if (this.showTodayButton) {\n this.createContentFooter();\n }\n }\n getCultureValues() {\n let culShortNames = [];\n let cldrObj;\n let dayFormat = (isBlazor() ? 'days.' : 'days.stand-alone.') + this.dayHeaderFormat.toLowerCase();\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrObj = (getValue(dayFormat, getDefaultDateObject()));\n }\n else {\n cldrObj = (this.getCultureObjects(cldrData, '' + this.locale));\n }\n for (let obj of Object.keys(cldrObj)) {\n culShortNames.push(getValue(obj, cldrObj));\n }\n return culShortNames;\n }\n toCapitalize(text) {\n return !isNullOrUndefined(text) && text.length ? text[0].toUpperCase() + text.slice(1) : text;\n }\n createContentHeader() {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.element.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n let daysCount = 6;\n let html = '';\n let shortNames;\n if (this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: 0 }, true);\n }\n this.tableHeadElement = this.createElement('thead', { className: WEEKHEADER });\n if (this.weekNumber) {\n html += '';\n if (this.getModuleName() === 'calendar') {\n addClass([this.element], '' + WEEKNUMBER);\n }\n else {\n addClass([this.calendarElement], '' + WEEKNUMBER);\n }\n }\n shortNames = this.shiftArray(((this.getCultureValues().length > 0 && this.getCultureValues())), this.firstDayOfWeek);\n for (let days = 0; days <= daysCount; days++) {\n html += '' + this.toCapitalize(shortNames[days]) + '';\n }\n html = '' + html + '';\n this.tableHeadElement.innerHTML = html;\n this.table.appendChild(this.tableHeadElement);\n }\n createContentBody() {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content tbody')[0])) {\n detach(this.element.querySelectorAll('.e-content tbody')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content tbody')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content tbody')[0]);\n }\n }\n switch (this.start) {\n case 'Year':\n this.renderYears();\n break;\n case 'Decade':\n this.renderDecades();\n break;\n default:\n this.renderMonths();\n }\n }\n updateFooter() {\n this.todayElement.textContent = this.l10.getConstant('today');\n this.todayElement.setAttribute('aria-label', this.l10.getConstant('today'));\n }\n createContentFooter() {\n if (this.showTodayButton) {\n let minimum = new Date(+this.min);\n let maximum = new Date(+this.max);\n let l10nLocale = { today: 'Today' };\n this.globalize = new Internationalization(this.locale);\n this.l10 = new L10n(this.getModuleName(), l10nLocale, this.locale);\n this.todayElement = this.createElement('button', { attrs: { role: 'button' } });\n rippleEffect(this.todayElement);\n this.updateFooter();\n addClass([this.todayElement], [BTN, TODAY, FLAT, PRIMARY, CSS]);\n if ((!(+new Date(minimum.setHours(0, 0, 0, 0)) <= +this.todayDate &&\n +this.todayDate <= +new Date(maximum.setHours(0, 0, 0, 0)))) || (this.todayDisabled)) {\n addClass([this.todayElement], DISABLED);\n }\n this.footer = this.createElement('div', { className: FOOTER });\n this.footer.appendChild(this.todayElement);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (!this.todayElement.classList.contains(DISABLED)) {\n EventHandler.add(this.todayElement, 'click', this.todayButtonClick, this);\n }\n }\n }\n wireEvents(id, ref, keyConfig, moduleName) {\n if (!(isBlazor() && ref)) {\n EventHandler.add(this.headerTitleElement, 'click', this.navigateTitle, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n }\n else {\n this.element = document.getElementById(id);\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, keyConfig);\n this.blazorRef = ref;\n this.serverModuleName = moduleName;\n }\n if (this.getModuleName() === 'calendar') {\n this.keyboardModule = new KeyboardEvents(this.element, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.calendarElement, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n }\n dateWireEvents(id, ref, keyConfig, moduleName) {\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, keyConfig);\n this.blazorRef = ref;\n this.serverModuleName = moduleName;\n }\n todayButtonClick(value) {\n if (this.showTodayButton) {\n if (this.currentView() === this.depth) {\n this.effect = '';\n }\n else {\n this.effect = 'e-zoomin';\n }\n if (this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.navigateTo(this.depth, new Date(this.checkValue(value)));\n }\n else {\n this.navigateTo('Month', new Date(this.checkValue(value)));\n }\n }\n }\n checkDeviceMode(ref) {\n if (Browser.isDevice && isBlazor() && ref) {\n // tslint:disable-next-line\n ref.invokeMethodAsync('OnDevice', true);\n }\n }\n // tslint:disable-next-line:max-func-body-length\n keyActionHandle(e, value, multiSelection) {\n if (isBlazor() && this.blazorRef) {\n e.preventDefault();\n if (!this.tableBodyElement) {\n this.element = closest(e.target, '.' + 'e-calendar');\n this.tableBodyElement = this.element.querySelector('tbody');\n }\n multiSelection = false;\n }\n let focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n let selectedDate;\n if (multiSelection) {\n if (!isNullOrUndefined(focusedDate) && +value === parseInt(focusedDate.getAttribute('id').split('_')[0], 10)) {\n selectedDate = focusedDate;\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n if (isBlazor() && this.blazorRef) {\n this.tableBodyElement.focus();\n let targetEle = e.target;\n let args = {\n Action: e.action, Key: e.key, Events: e,\n SelectDate: selectedDate ? selectedDate.id : null,\n FocusedDate: focusedDate ? focusedDate.id : null,\n classList: selectedDate ? selectedDate.classList.toString() : focusedDate ? focusedDate.classList.toString() : 'e-cell',\n Id: focusedDate ? focusedDate.id : selectedDate ? selectedDate.id : null,\n TargetClassList: targetEle.classList.toString()\n };\n // tslint:disable-next-line\n this.blazorRef.invokeMethodAsync('OnCalendarKeyboardEvent', args);\n if (targetEle.classList.contains('e-today')) {\n targetEle.blur();\n this.tableBodyElement.focus();\n }\n if (this.serverModuleName === 'sf.calendars.Calendar') {\n this.tableBodyElement = null;\n }\n }\n else {\n let view = this.getViewNumber(this.currentView());\n let depthValue = this.getViewNumber(this.depth);\n let levelRestrict = (view === depthValue && this.getViewNumber(this.start) >= depthValue);\n this.effect = '';\n switch (e.action) {\n case 'moveLeft':\n this.KeyboardNavigate(-1, view, e, this.max, this.min);\n e.preventDefault();\n break;\n case 'moveRight':\n this.KeyboardNavigate(1, view, e, this.max, this.min);\n e.preventDefault();\n break;\n case 'moveUp':\n if (view === 0) {\n this.KeyboardNavigate(-7, view, e, this.max, this.min); // move the current date to the previous seven days.\n }\n else {\n this.KeyboardNavigate(-4, view, e, this.max, this.min); // move the current year to the previous four days.\n }\n e.preventDefault();\n break;\n case 'moveDown':\n if (view === 0) {\n this.KeyboardNavigate(7, view, e, this.max, this.min);\n }\n else {\n this.KeyboardNavigate(4, view, e, this.max, this.min);\n }\n e.preventDefault();\n break;\n case 'select':\n if (e.target === this.todayElement) {\n this.todayButtonClick(value);\n }\n else {\n let element = !isNullOrUndefined(focusedDate) ? focusedDate : selectedDate;\n if (!isNullOrUndefined(element) && !element.classList.contains(DISABLED)) {\n if (levelRestrict) {\n let d = new Date(parseInt('' + (element).id, 0));\n this.selectDate(e, d, (element));\n }\n else {\n this.contentClick(null, --view, (element), value);\n }\n }\n }\n break;\n case 'controlUp':\n this.title();\n e.preventDefault();\n break;\n case 'controlDown':\n if (!isNullOrUndefined(focusedDate) || !isNullOrUndefined(selectedDate) && !levelRestrict) {\n this.contentClick(null, --view, (focusedDate || selectedDate), value);\n }\n e.preventDefault();\n break;\n case 'home':\n this.currentDate = this.firstDay(this.currentDate);\n detach(this.tableBodyElement);\n (view === 0) ? this.renderMonths(e) : ((view === 1) ? this.renderYears(e) : this.renderDecades(e));\n e.preventDefault();\n break;\n case 'end':\n this.currentDate = this.lastDay(this.currentDate, view);\n detach(this.tableBodyElement);\n (view === 0) ? this.renderMonths(e) : ((view === 1) ? this.renderYears(e) : this.renderDecades(e));\n e.preventDefault();\n break;\n case 'pageUp':\n this.addMonths(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'pageDown':\n this.addMonths(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageUp':\n this.addYears(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageDown':\n this.addYears(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'controlHome':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 0, 1));\n e.preventDefault();\n break;\n case 'controlEnd':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 11, 31));\n e.preventDefault();\n break;\n }\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n }\n }\n KeyboardNavigate(number, currentView, e, max, min) {\n let date = new Date(this.checkValue(this.currentDate));\n switch (currentView) {\n case 2:\n this.addYears(this.currentDate, number);\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n case 1:\n this.addMonths(this.currentDate, number);\n if (this.calendarMode === 'Gregorian') {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n else {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n break;\n case 0:\n this.addDay(this.currentDate, number, e, max, min);\n if (this.isMinMaxRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n }\n }\n /**\n * Initialize the event handler\n * @private\n */\n preRender(value) {\n this.navigatePreviousHandler = this.navigatePrevious.bind(this);\n this.navigateNextHandler = this.navigateNext.bind(this);\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.navigateHandler = (e) => {\n this.triggerNavigate(e);\n };\n }\n ;\n minMaxDate(localDate) {\n let currentDate = new Date(new Date(+localDate).setHours(0, 0, 0, 0));\n let minDate = new Date(new Date(+this.min).setHours(0, 0, 0, 0));\n let maxDate = new Date(new Date(+this.max).setHours(0, 0, 0, 0));\n if (+currentDate === +minDate || +currentDate === +maxDate) {\n if (+localDate < +this.min) {\n localDate = new Date(+this.min);\n }\n if (+localDate > +this.max) {\n localDate = new Date(+this.max);\n }\n }\n return localDate;\n }\n renderMonths(e, value) {\n let numCells = this.weekNumber ? 8 : 7;\n let tdEles;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(this.currentDate, e, value);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n this.createContentHeader();\n if (this.calendarMode === 'Gregorian') {\n this.renderTemplate(tdEles, numCells, MONTH, e, value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(tdEles, numCells, MONTH, e, value);\n }\n }\n // tslint:disable-next-line:max-func-body-length\n renderDays(currentDate, e, value, multiSelection, values) {\n let tdEles = [];\n let cellsCount = 42;\n let localDate = new Date(this.checkValue(currentDate));\n let minMaxDate;\n let numCells = this.weekNumber ? 8 : 7;\n // 8 and 7 denotes the number of columns to be specified.\n let currentMonth = localDate.getMonth();\n this.titleUpdate(currentDate, 'days');\n let d = localDate;\n localDate = new Date(d.getFullYear(), d.getMonth(), 0, d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds());\n while (localDate.getDay() !== this.firstDayOfWeek) {\n this.setStartDate(localDate, -1 * dayMilliSeconds);\n }\n for (let day = 0; day < cellsCount; ++day) {\n let weekEle = this.createElement('td', { className: CELL });\n let weekAnchor = this.createElement('span');\n if (day % 7 === 0 && this.weekNumber) {\n weekAnchor.textContent = '' + this.getWeek(localDate);\n weekEle.appendChild(weekAnchor);\n addClass([weekEle], '' + WEEKNUMBER);\n tdEles.push(weekEle);\n }\n minMaxDate = new Date(+localDate);\n localDate = this.minMaxDate(localDate);\n let dateFormatOptions = { type: 'dateTime', skeleton: isBlazor() ? 'D' : 'full' };\n let date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n let tdEle = this.dayCell(localDate);\n let title = this.globalize.formatDate(localDate, { type: 'date', skeleton: isBlazor() ? 'D' : 'full' });\n let dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, { format: 'd', type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' });\n let disabled = (this.min > localDate) || (this.max < localDate);\n if (disabled) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n }\n else {\n dayLink.setAttribute('title', '' + title);\n }\n if (currentMonth !== localDate.getMonth()) {\n addClass([tdEle], OTHERMONTH);\n }\n if (localDate.getDay() === 0 || localDate.getDay() === 6) {\n addClass([tdEle], WEEKEND);\n }\n tdEle.appendChild(dayLink);\n this.renderDayCellArgs = {\n date: localDate,\n isDisabled: false,\n element: tdEle,\n isOutOfRange: disabled\n };\n let argument = this.renderDayCellArgs;\n this.renderDayCellEvent(argument);\n if (argument.isDisabled) {\n let selectDate = new Date(this.checkValue(value));\n let argsDate = new Date(this.checkValue(argument.date));\n if (multiSelection) {\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (let index = 0; index < values.length; index++) {\n let localDateString = +new Date(this.globalize.formatDate(argument.date, { type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' }));\n let tempDateString = +new Date(this.globalize.formatDate(values[index], { type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' }));\n if (localDateString === tempDateString) {\n values.splice(index, 1);\n index = -1;\n }\n }\n }\n }\n else if (selectDate && +selectDate === +argsDate) {\n this.setProperties({ value: null }, true);\n }\n }\n if (this.renderDayCellArgs.isDisabled && !tdEle.classList.contains(SELECTED)) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n if (+this.renderDayCellArgs.date === +this.todayDate) {\n this.todayDisabled = true;\n }\n }\n let otherMnthBool = tdEle.classList.contains(OTHERMONTH);\n let disabledCls = tdEle.classList.contains(DISABLED);\n if (!disabledCls) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n // to set the value as null while setting the disabled date onProperty change.\n // if (args.isDisabled && +this.value === +args.date) {\n // this.setProperties({ value: null }, true);\n // }\n if (multiSelection && !isNullOrUndefined(values) && !disabledCls) {\n for (let tempValue = 0; tempValue < values.length; tempValue++) {\n let type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n let formatOptions = { format: this.getFromatStringValue(), type: 'date', skeleton: 'short', calendar: type };\n let localDateString = this.globalize.formatDate(localDate, formatOptions);\n let tempDateString = this.globalize.formatDate(values[tempValue], formatOptions);\n if ((localDateString === tempDateString && this.getDateVal(localDate, values[tempValue]))\n || (this.getDateVal(localDate, value))) {\n addClass([tdEle], SELECTED);\n }\n else {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n if (values.length <= 0) {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n else if (!disabledCls && this.getDateVal(localDate, value)) {\n addClass([tdEle], SELECTED);\n }\n else {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n if (date.getMonth() === new Date().getMonth() && date.getDate() === new Date().getDate()) {\n if (date.getFullYear() === new Date().getFullYear()) {\n addClass([tdEle], TODAY);\n }\n }\n tdEles.push(this.renderDayCellArgs.element);\n localDate = new Date(+minMaxDate);\n this.addDay(localDate, 1, null, this.max, this.min);\n }\n return tdEles;\n }\n updateFocus(otherMonth, disabled, localDate, tableElement, currentDate) {\n if (currentDate.getDate() === localDate.getDate() && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n else {\n if (currentDate >= this.max && parseInt(tableElement.id, 0) === +this.max && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n if (currentDate <= this.min && parseInt(tableElement.id, 0) === +this.min && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n }\n }\n renderYears(e, value) {\n this.removeTableHeadElement();\n let numCells = 4;\n let tdEles = [];\n let valueUtil = isNullOrUndefined(value);\n let curDate = new Date(this.checkValue(this.currentDate));\n let mon = curDate.getMonth();\n let yr = curDate.getFullYear();\n let localDate = curDate;\n let curYrs = localDate.getFullYear();\n let minYr = new Date(this.checkValue(this.min)).getFullYear();\n let minMonth = new Date(this.checkValue(this.min)).getMonth();\n let maxYr = new Date(this.checkValue(this.max)).getFullYear();\n let maxMonth = new Date(this.checkValue(this.max)).getMonth();\n localDate.setMonth(0);\n this.titleUpdate(this.currentDate, 'months');\n let disabled = (this.min > localDate) || (this.max < localDate);\n localDate.setDate(1);\n for (let month = 0; month < 12; ++month) {\n let tdEle = this.dayCell(localDate);\n let dayLink = this.createElement('span');\n let localMonth = (value && (value).getMonth() === localDate.getMonth());\n let select$$1 = (value && (value).getFullYear() === yr && localMonth);\n dayLink.textContent = this.toCapitalize(this.globalize.formatDate(localDate, {\n format: isBlazor() ? 'MMM' : null, type: 'dateTime', skeleton: 'MMM'\n }));\n if ((this.min && (curYrs < minYr || (month < minMonth && curYrs === minYr))) || (this.max && (curYrs > maxYr || (month > maxMonth && curYrs >= maxYr)))) {\n addClass([tdEle], DISABLED);\n }\n else if (!valueUtil && select$$1) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getMonth() === mon && this.currentDate.getMonth() === mon) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n localDate.setDate(1);\n localDate.setMonth(localDate.getMonth() + 1);\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, YEAR, e, value);\n }\n renderDecades(e, value) {\n this.removeTableHeadElement();\n let numCells = 4;\n let yearCell = 12;\n let tdEles = [];\n let localDate = new Date(this.checkValue(this.currentDate));\n localDate.setMonth(0);\n localDate.setDate(1);\n let localYr = localDate.getFullYear();\n let startYr = new Date(localDate.setFullYear((localYr - localYr % 10)));\n let endYr = new Date(localDate.setFullYear((localYr - localYr % 10 + (10 - 1))));\n let startFullYr = startYr.getFullYear();\n let endFullYr = endYr.getFullYear();\n let startHdrYr = this.globalize.formatDate(startYr, {\n format: isBlazor() ? 'yyyy' : null, type: 'dateTime', skeleton: 'y'\n });\n let endHdrYr = this.globalize.formatDate(endYr, { format: isBlazor() ? 'yyyy' : null, type: 'dateTime', skeleton: 'y' });\n this.headerTitleElement.textContent = startHdrYr + ' - ' + (endHdrYr);\n let start = new Date(localYr - (localYr % 10) - 1, 0, 1);\n let startYear = start.getFullYear();\n for (let rowIterator = 0; rowIterator < yearCell; ++rowIterator) {\n let year = startYear + rowIterator;\n localDate.setFullYear(year);\n let tdEle = this.dayCell(localDate);\n attributes(tdEle, { 'role': 'gridcell' });\n let dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, {\n format: isBlazor() ? 'yyyy' : null, type: 'dateTime', skeleton: 'y'\n });\n if ((year < startFullYr) || (year > endFullYr)) {\n addClass([tdEle], OTHERDECADE);\n if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n }\n else if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n else if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getFullYear() === this.currentDate.getFullYear() && !tdEle.classList.contains(DISABLED)) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, 'e-decade', e, value);\n }\n dayCell(localDate) {\n let type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n let dateFormatOptions = { skeleton: isBlazor() ? 'F' : 'full', type: 'dateTime', calendar: type };\n let date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n let value = date.valueOf();\n let attrs = {\n className: CELL, attrs: { 'id': '' + getUniqueID('' + value), 'aria-selected': 'false', 'role': 'gridcell' }\n };\n return this.createElement('td', attrs);\n }\n firstDay(date) {\n let collection = this.currentView() !== 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '');\n if (collection.length) {\n for (let i = 0; i < collection.length; i++) {\n if (!collection[i].classList.contains(DISABLED)) {\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n }\n lastDay(date, view) {\n let lastDate = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n if (view !== 2) {\n let timeOffset = Math.abs(lastDate.getTimezoneOffset() - this.firstDay(date).getTimezoneOffset());\n if (timeOffset) {\n lastDate.setHours(this.firstDay(date).getHours() + (timeOffset / 60));\n }\n return this.findLastDay(lastDate);\n }\n else {\n return this.findLastDay(this.firstDay(lastDate));\n }\n }\n ;\n checkDateValue(value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n }\n findLastDay(date) {\n let collection = this.currentView() === 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '');\n if (collection.length) {\n for (let i = collection.length - 1; i >= 0; i--) {\n if (!collection[i].classList.contains(DISABLED)) {\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n }\n removeTableHeadElement() {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n }\n renderTemplate(elements, count, classNm, e, value) {\n let view = this.getViewNumber(this.currentView());\n let trEle;\n this.tableBodyElement = this.createElement('tbody');\n this.table.appendChild(this.tableBodyElement);\n removeClass([this.contentElement, this.headerElement], [MONTH, DECADE, YEAR]);\n addClass([this.contentElement, this.headerElement], [classNm]);\n let weekNumCell = 41;\n let numberCell = 35;\n let otherMonthCell = 6;\n let row = count;\n let rowIterator = 0;\n for (let dayCell = 0; dayCell < elements.length / count; ++dayCell) {\n trEle = this.createElement('tr', { attrs: { 'role': 'row' } });\n for (rowIterator = 0 + rowIterator; rowIterator < row; rowIterator++) {\n if (!elements[rowIterator].classList.contains('e-week-number') && !isNullOrUndefined(elements[rowIterator].children[0])) {\n addClass([elements[rowIterator].children[0]], [LINK]);\n rippleEffect(elements[rowIterator].children[0], {\n duration: 600,\n isCenterRipple: true\n });\n }\n trEle.appendChild(elements[rowIterator]);\n if (this.weekNumber && rowIterator === otherMonthCell + 1 && elements[otherMonthCell + 1].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (!this.weekNumber && rowIterator === otherMonthCell && elements[otherMonthCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (this.weekNumber) {\n if (rowIterator === weekNumCell && elements[weekNumCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n else {\n if (rowIterator === numberCell && elements[numberCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n }\n row = row + count;\n rowIterator = rowIterator + 0;\n this.tableBodyElement.appendChild(trEle);\n }\n this.table.querySelector('tbody').className = this.effect;\n if (this.calendarMode === 'Gregorian') {\n this.iconHandler();\n }\n else {\n this.islamicModule.islamicIconHandler();\n }\n if (view !== this.getViewNumber(this.currentView()) || (view === 0 && view !== this.getViewNumber(this.currentView()))) {\n this.navigateHandler(e);\n }\n this.setAriaActiveDescendant();\n }\n clickHandler(e, value) {\n this.clickEventEmitter(e);\n let eve = e.currentTarget;\n let view = this.getViewNumber(this.currentView());\n if (eve.classList.contains(OTHERMONTH)) {\n this.contentClick(e, 0, null, value);\n }\n else if (view === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.contentClick(e, 1, null, value);\n }\n else if (2 === view) {\n this.contentClick(e, 1, null, value);\n }\n else if (!eve.classList.contains(OTHERMONTH) && view === 0) {\n this.selectDate(e, this.getIdValue(e, null), null);\n }\n else {\n this.contentClick(e, 0, eve, value);\n }\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n }\n // Content click event handler required for extended components\n clickEventEmitter(e) {\n e.preventDefault();\n }\n contentClick(e, view, element, value) {\n let currentView = this.getViewNumber(this.currentView());\n let d = this.getIdValue(e, element);\n switch (view) {\n case 0:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n detach(this.tableBodyElement);\n this.currentDate = d;\n this.effect = ZOOMIN;\n this.renderMonths(e);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setMonth(d.getMonth());\n if (d.getMonth() > 0 && this.currentDate.getMonth() !== d.getMonth()) {\n this.currentDate.setDate(0);\n }\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.currentDate = d;\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n break;\n case 1:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.selectDate(e, d, null);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n let islamicDate = this.islamicModule.getIslamicDate(d);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, islamicDate.month, 1);\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n }\n }\n switchView(view, e, multiSelection) {\n switch (view) {\n case 0:\n detach(this.tableBodyElement);\n this.renderMonths(e);\n if (multiSelection && !isNullOrUndefined(this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0])) {\n this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0].classList.remove(FOCUSEDDATE);\n }\n break;\n case 1:\n detach(this.tableBodyElement);\n this.renderYears(e);\n break;\n case 2:\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n }\n /**\n * To get component name\n * @private\n */\n getModuleName() {\n return 'calendar';\n }\n /**\n * @deprecated\n */\n requiredModules() {\n let modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n return modules;\n }\n /**\n * Gets the properties to be maintained upon browser refresh.\n * @returns string\n */\n getPersistData() {\n let keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n }\n /**\n * Called internally if any of the property value changed.\n * returns void\n * @private\n */\n onPropertyChanged(newProp, oldProp, multiSelection, values) {\n this.effect = '';\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'enableRtl':\n if (newProp.enableRtl) {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add('e-rtl');\n }\n else {\n this.calendarElement.classList.add('e-rtl');\n }\n }\n else {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.remove('e-rtl');\n }\n else {\n this.calendarElement.classList.remove('e-rtl');\n }\n }\n break;\n case 'dayHeaderFormat':\n this.getCultureValues();\n this.createContentHeader();\n this.adjustLongHeaderSize();\n break;\n case 'min':\n case 'max':\n this.rangeValidation(this.min, this.max);\n prop === 'min' ? this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(newProp.min))) }, true) :\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(newProp.max))) }, true);\n this.setProperties({ start: this.currentView() }, true);\n detach(this.tableBodyElement);\n this.minMaxUpdate();\n if (multiSelection) {\n this.validateValues(multiSelection, values);\n }\n this.createContentBody();\n if ((this.todayDate < this.min || this.max < this.todayDate) && (this.footer) && (this.todayElement)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n else {\n if ((this.footer) && (this.todayElement) && this.todayElement.classList.contains('e-disabled')) {\n removeClass([this.todayElement], DISABLED);\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n }\n break;\n case 'start':\n case 'depth':\n case 'weekNumber':\n case 'firstDayOfWeek':\n this.checkView();\n this.createContentHeader();\n this.createContentBody();\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.createContentHeader();\n this.createContentBody();\n this.l10.setLocale(this.locale);\n this.updateFooter();\n break;\n case 'showTodayButton':\n if (newProp.showTodayButton) {\n this.createContentFooter();\n }\n else {\n if (!isNullOrUndefined(this.todayElement) && !isNullOrUndefined(this.footer)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = undefined;\n }\n }\n this.setProperties({ showTodayButton: newProp.showTodayButton }, true);\n break;\n }\n }\n }\n /**\n * values property updated with considered disabled dates of the calendar.\n */\n validateValues(multiSelection, values) {\n if (multiSelection && !isNullOrUndefined(values) && values.length > 0) {\n let copyValues = this.copyValues(values);\n for (let skipIndex = 0; skipIndex < copyValues.length; skipIndex++) {\n let tempValue = copyValues[skipIndex];\n let type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n let tempValueString;\n if (this.calendarMode === 'Gregorian') {\n /* tslint:disable-next-line:max-line-length */\n tempValueString = this.globalize.formatDate(tempValue, { type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' });\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n tempValueString = this.globalize.formatDate(tempValue, { type: 'dateTime', skeleton: 'full', calendar: 'islamic' });\n }\n let minFormatOption = { type: 'date', skeleton: isBlazor() ? 'd' : 'yMd', calendar: type };\n let minStringValue = this.globalize.formatDate(this.min, minFormatOption);\n let minString = minStringValue;\n let maxFormatOption = { type: 'date', skeleton: isBlazor() ? 'd' : 'yMd', calendar: type };\n let maxStringValue = this.globalize.formatDate(this.max, maxFormatOption);\n let maxString = maxStringValue;\n if (+new Date(tempValueString) < +new Date(minString) ||\n +new Date(tempValueString) > +new Date(maxString)) {\n copyValues.splice(skipIndex, 1);\n skipIndex = -1;\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n }\n setValueUpdate() {\n if (!isNullOrUndefined(this.tableBodyElement)) {\n detach(this.tableBodyElement);\n this.setProperties({ start: this.currentView() }, true);\n this.createContentBody();\n }\n }\n copyValues(values) {\n let copyValues = [];\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (let index = 0; index < values.length; index++) {\n copyValues.push(new Date(+values[index]));\n }\n }\n return copyValues;\n }\n titleUpdate(date, view) {\n let globalize = new Internationalization(this.locale);\n let dayFormatOptions;\n let monthFormatOptions;\n let type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n if (this.calendarMode === 'Gregorian') {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', skeleton: isBlazor() ? 'y' : 'yMMMM', calendar: type });\n monthFormatOptions = globalize.formatDate(date, {\n format: isBlazor() ? 'yyyy' : null, type: 'dateTime', skeleton: 'y', calendar: type\n });\n }\n else {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'MMMM y', calendar: type });\n monthFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'y', calendar: type });\n }\n switch (view) {\n case 'days':\n this.headerTitleElement.textContent = this.toCapitalize(dayFormatOptions);\n break;\n case 'months':\n this.headerTitleElement.textContent = monthFormatOptions;\n }\n }\n setActiveDescendant() {\n let id;\n let focusedEle = this.tableBodyElement.querySelector('tr td.e-focused-date');\n let selectedEle = this.tableBodyElement.querySelector('tr td.e-selected');\n let type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n let title;\n let view = this.currentView();\n if (view === 'Month') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: isBlazor() ? 'D' : 'full', calendar: type });\n }\n else if (view === 'Year') {\n if (type !== 'islamic') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: isBlazor() ? 'y' : 'yMMMM', calendar: type });\n }\n else {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'GyMMM', calendar: type });\n }\n }\n else {\n title = this.globalize.formatDate(this.currentDate, {\n format: isBlazor() ? 'yyyy' : null, type: 'date', skeleton: 'y', calendar: type\n });\n }\n if (selectedEle || focusedEle) {\n if (!isNullOrUndefined(selectedEle)) {\n selectedEle.setAttribute('aria-selected', 'true');\n }\n (focusedEle || selectedEle).setAttribute('aria-label', title);\n id = (focusedEle || selectedEle).getAttribute('id');\n }\n return id;\n }\n iconHandler() {\n new Date(this.checkValue(this.currentDate)).setDate(1);\n switch (this.currentView()) {\n case 'Month':\n this.previousIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Year':\n this.previousIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Decade':\n this.previousIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n }\n }\n /**\n * Destroys the widget.\n * @returns void\n */\n destroy() {\n if (this.getModuleName() === 'calendar') {\n removeClass([this.element], [ROOT]);\n }\n else {\n if (this.calendarElement) {\n removeClass([this.element], [ROOT]);\n }\n }\n if (this.getModuleName() === 'calendar') {\n EventHandler.remove(this.headerTitleElement, 'click', this.navigateTitle);\n if (this.todayElement) {\n EventHandler.remove(this.todayElement, 'click', this.todayButtonClick);\n }\n this.previousIconHandler(true);\n this.nextIconHandler(true);\n this.keyboardModule.destroy();\n this.element.removeAttribute('data-role');\n (!isNullOrUndefined(this.calendarEleCopy.getAttribute('tabindex'))) ?\n this.element.setAttribute('tabindex', this.tabIndex) : this.element.removeAttribute('tabindex');\n }\n this.element.innerHTML = '';\n super.destroy();\n }\n title(e) {\n let currentView = this.getViewNumber(this.currentView());\n this.effect = ZOOMIN;\n this.switchView(++currentView, e);\n }\n getViewNumber(stringVal) {\n if (stringVal === 'Month') {\n return 0;\n }\n else if (stringVal === 'Year') {\n return 1;\n }\n else {\n return 2;\n }\n }\n navigateTitle(e) {\n e.preventDefault();\n this.title(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n }\n previous() {\n this.effect = '';\n let currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, -10);\n this.switchView(currentView);\n break;\n }\n }\n navigatePrevious(e) {\n e.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.previous();\n }\n else {\n this.islamicModule.islamicPrevious();\n }\n this.triggerNavigate(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n }\n next() {\n this.effect = '';\n let currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, 10);\n this.switchView(currentView);\n break;\n }\n }\n navigateNext(eve) {\n eve.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.next();\n }\n else {\n this.islamicModule.islamicNext();\n }\n this.triggerNavigate(eve);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n }\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @returns void\n */\n navigateTo(view, date) {\n if (+date >= +this.min && +date <= +this.max) {\n this.currentDate = date;\n }\n if (+date <= +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n if (+date >= +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n if ((this.getViewNumber(this.depth) >= this.getViewNumber(view))) {\n if ((this.getViewNumber(this.depth) <= this.getViewNumber(this.start))\n || this.getViewNumber(this.depth) === this.getViewNumber(view)) {\n view = this.depth;\n }\n }\n this.switchView(this.getViewNumber(view));\n }\n /**\n * Gets the current view of the Calendar.\n * @returns string\n */\n currentView() {\n if (this.contentElement.classList.contains(YEAR)) {\n return 'Year';\n }\n else if (this.contentElement.classList.contains(DECADE)) {\n return 'Decade';\n }\n else {\n return 'Month';\n }\n }\n getDateVal(date, value) {\n return (!isNullOrUndefined(value) && date.getDate() === (value).getDate()\n && date.getMonth() === (value).getMonth() && date.getFullYear() === (value).getFullYear());\n }\n getCultureObjects(ld, c) {\n let gregorianFormat = (isBlazor() ? '.dates.days.' :\n '.dates.calendars.gregorian.days.format.') + this.dayHeaderFormat.toLowerCase();\n let islamicFormat = (isBlazor() ? '.dates.days.' :\n '.dates.calendars.islamic.days.format.') + this.dayHeaderFormat.toLowerCase();\n let mainVal = isBlazor() ? '' : 'main.';\n if (this.calendarMode === 'Gregorian') {\n return getValue(mainVal + '' + this.locale + gregorianFormat, ld);\n }\n else {\n return getValue('main.' + '' + this.locale + islamicFormat, ld);\n }\n }\n ;\n getWeek(d) {\n let currentDate = new Date(this.checkValue(d)).valueOf();\n let date = new Date(d.getFullYear(), 0, 1).valueOf();\n let a = (currentDate - date);\n return Math.ceil((((a) / dayMilliSeconds) + new Date(date).getDay() + 1) / 7);\n }\n setStartDate(date, time) {\n let tzOffset = date.getTimezoneOffset();\n let d = new Date(date.getTime() + time);\n let tzOffsetDiff = d.getTimezoneOffset() - tzOffset;\n date.setTime(d.getTime() + tzOffsetDiff * minutesMilliSeconds);\n }\n addMonths(date, i) {\n if (this.calendarMode === 'Gregorian') {\n let day = date.getDate();\n date.setDate(1);\n date.setMonth(date.getMonth() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n let islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, (islamicDate.month) + i, 1);\n }\n }\n addYears(date, i) {\n if (this.calendarMode === 'Gregorian') {\n let day = date.getDate();\n date.setDate(1);\n date.setFullYear(date.getFullYear() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n let islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year + i, (islamicDate.month), 1);\n }\n }\n getIdValue(e, element) {\n let eve;\n if (e) {\n eve = e.currentTarget;\n }\n else {\n eve = element;\n }\n let type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n let dateFormatOptions = { type: 'dateTime', skeleton: isBlazor() ? 'F' : 'full', calendar: type };\n let dateString = this.globalize.formatDate(new Date(parseInt('' + eve.getAttribute('id'), 0)), dateFormatOptions);\n let date = this.globalize.parseDate(dateString, dateFormatOptions);\n let value = date.valueOf() - date.valueOf() % 1000;\n return new Date(value);\n //return this.globalize.parseDate(dateString, dateFormatOptions);\n }\n adjustLongHeaderSize() {\n removeClass([this.element], DAYHEADERLONG);\n if (this.dayHeaderFormat === 'Wide') {\n addClass([this.getModuleName() === 'calendar' ? this.element : this.calendarElement], DAYHEADERLONG);\n }\n }\n selectDate(e, date, node, multiSelection, values) {\n let element = node || e.currentTarget;\n this.isDateSelected = false;\n if (this.currentView() === 'Decade') {\n this.setDateDecade(this.currentDate, date.getFullYear());\n }\n else if (this.currentView() === 'Year') {\n this.setDateYear(this.currentDate, date);\n }\n else {\n if (multiSelection && !this.checkPresentDate(date, values)) {\n let copyValues = this.copyValues(values);\n if (!isNullOrUndefined(values) && copyValues.length > 0) {\n copyValues.push(new Date(this.checkValue(date)));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: values[values.length - 1] }, true);\n }\n else {\n this.setProperties({ values: [new Date(this.checkValue(date))] }, true);\n }\n }\n else {\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n }\n this.currentDate = new Date(this.checkValue(date));\n }\n let tableBodyElement = closest(element, '.' + ROOT);\n if (isNullOrUndefined(tableBodyElement)) {\n tableBodyElement = this.tableBodyElement;\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + SELECTED))) {\n removeClass([tableBodyElement.querySelector('.' + SELECTED)], SELECTED);\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + FOCUSEDDATE))) {\n removeClass([tableBodyElement.querySelector('.' + FOCUSEDDATE)], FOCUSEDDATE);\n }\n if (multiSelection) {\n let copyValues = this.copyValues(values);\n let collection = Array.prototype.slice.call(this.tableBodyElement.querySelectorAll('td'));\n for (let index = 0; index < collection.length; index++) {\n let tempElement = tableBodyElement.querySelectorAll('td' + '.' + FOCUSEDDATE)[0];\n let selectedElement = tableBodyElement.querySelectorAll('td' + '.' + SELECTED)[0];\n if (collection[index] === tempElement) {\n removeClass([collection[index]], FOCUSEDDATE);\n }\n if (collection[index] === selectedElement &&\n !this.checkPresentDate(new Date(parseInt(selectedElement.getAttribute('id').split('_')[0], 10)), values)) {\n removeClass([collection[index]], SELECTED);\n }\n }\n if (element.classList.contains(SELECTED)) {\n removeClass([element], SELECTED);\n for (let i = 0; i < copyValues.length; i++) {\n let type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n let formatOptions = { format: this.getFromatStringValue(), type: 'date', skeleton: 'short', calendar: type };\n let localDateString = this.globalize.formatDate(date, formatOptions);\n let tempDateString = this.globalize.formatDate(copyValues[i], formatOptions);\n if (localDateString === tempDateString) {\n let index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n addClass([element], FOCUSEDDATE);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n addClass([element], SELECTED);\n }\n }\n else {\n addClass([element], SELECTED);\n }\n this.isDateSelected = true;\n }\n getFromatStringValue() {\n return isBlazor() ?\n // tslint:disable-next-line\n 'M' + getDefaultDateObject().dateSeperator + 'd' + getDefaultDateObject().dateSeperator + 'yy'\n : null;\n }\n checkPresentDate(dates, values) {\n let previousValue = false;\n if (!isNullOrUndefined(values)) {\n for (let checkPrevious = 0; checkPrevious < values.length; checkPrevious++) {\n let type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n /* tslint:disable-next-line:max-line-length */\n let localDateString = this.globalize.formatDate(dates, {\n format: this.getFromatStringValue(), type: 'date', skeleton: 'short', calendar: type\n });\n /* tslint:disable-next-line:max-line-length */\n let tempDateString = this.globalize.formatDate(values[checkPrevious], {\n format: this.getFromatStringValue(), type: 'date', skeleton: 'short', calendar: type\n });\n if (localDateString === tempDateString) {\n previousValue = true;\n }\n }\n }\n return previousValue;\n }\n setAriaActiveDescendant() {\n attributes(this.table, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n }\n previousIconHandler(disabled) {\n if (disabled) {\n EventHandler.remove(this.previousIcon, 'click', this.navigatePreviousHandler);\n addClass([this.previousIcon], '' + DISABLED);\n addClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'true');\n }\n else {\n EventHandler.add(this.previousIcon, 'click', this.navigatePreviousHandler);\n removeClass([this.previousIcon], '' + DISABLED);\n removeClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'false');\n }\n }\n renderDayCellEvent(args) {\n extend(this.renderDayCellArgs, { name: 'renderDayCell' });\n this.trigger('renderDayCell', args);\n }\n navigatedEvent(eve) {\n extend(this.navigatedArgs, { name: 'navigated', event: eve });\n this.trigger('navigated', this.navigatedArgs);\n }\n triggerNavigate(event) {\n this.navigatedArgs = { view: this.currentView(), date: this.currentDate };\n this.navigatedEvent(event);\n }\n nextIconHandler(disabled) {\n if (disabled) {\n EventHandler.remove(this.nextIcon, 'click', this.navigateNextHandler);\n addClass([this.nextIcon], DISABLED);\n addClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'true');\n }\n else {\n EventHandler.add(this.nextIcon, 'click', this.navigateNextHandler);\n removeClass([this.nextIcon], DISABLED);\n removeClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'false');\n }\n }\n compare(startDate, endDate, modifier) {\n let start = endDate.getFullYear();\n let end;\n let result;\n end = start;\n result = 0;\n if (modifier) {\n start = start - start % modifier;\n end = start - start % modifier + modifier - 1;\n }\n if (startDate.getFullYear() > end) {\n result = 1;\n }\n else if (startDate.getFullYear() < start) {\n result = -1;\n }\n return result;\n }\n isMinMaxRange(date) {\n return +date >= +this.min && +date <= +this.max;\n }\n isMonthYearRange(date) {\n if (this.calendarMode === 'Gregorian') {\n return date.getMonth() >= this.min.getMonth()\n && date.getFullYear() >= this.min.getFullYear()\n && date.getMonth() <= this.max.getMonth()\n && date.getFullYear() <= this.max.getFullYear();\n }\n else {\n let islamicDate = this.islamicModule.getIslamicDate(date);\n return islamicDate.month >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).month\n && islamicDate.year >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).year\n && islamicDate.month <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).month\n && islamicDate.year <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).year;\n }\n }\n compareYear(start, end) {\n return this.compare(start, end, 0);\n }\n compareDecade(start, end) {\n return this.compare(start, end, 10);\n }\n shiftArray(array, i) {\n return array.slice(i).concat(array.slice(0, i));\n }\n addDay(date, i, e, max, min) {\n let column = i;\n let value = new Date(+date);\n if (!isNullOrUndefined(this.tableBodyElement) && !isNullOrUndefined(e)) {\n while (this.findNextTD(new Date(+date), column, max, min)) {\n column += i;\n }\n let rangeValue = new Date(value.setDate(value.getDate() + column));\n column = (+rangeValue > +max || +rangeValue < +min) ? column === i ? i - i : i : column;\n }\n date.setDate(date.getDate() + column);\n }\n findNextTD(date, column, max, min) {\n let value = new Date(date.setDate(date.getDate() + column));\n let collection = [];\n let isDisabled = false;\n if ((!isNullOrUndefined(value) && value.getMonth()) === (!isNullOrUndefined(this.currentDate) && this.currentDate.getMonth())) {\n let tdEles;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(value, null);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n collection = tdEles.filter((element) => {\n return element.classList.contains(DISABLED);\n });\n }\n else {\n collection = this.tableBodyElement.querySelectorAll('td.' + DISABLED);\n }\n if (+value <= (+(max)) && +value >= (+(min))) {\n if (collection.length) {\n for (let i = 0; i < collection.length; i++) {\n isDisabled = (+value === +new Date(parseInt(collection[i].id, 0))) ? true : false;\n if (isDisabled) {\n break;\n }\n }\n }\n }\n return isDisabled;\n }\n getMaxDays(d) {\n let date;\n let month;\n let tmpDate = new Date(this.checkValue(d));\n date = 28;\n month = tmpDate.getMonth();\n while (tmpDate.getMonth() === month) {\n ++date;\n tmpDate.setDate(date);\n }\n return date - 1;\n }\n setDateDecade(date, year) {\n date.setFullYear(year);\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n }\n ;\n setDateYear(date, value) {\n date.setFullYear(value.getFullYear(), value.getMonth(), date.getDate());\n if (value.getMonth() !== date.getMonth()) {\n date.setDate(0);\n this.currentDate = new Date(this.checkValue(value));\n }\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n }\n compareMonth(start, end) {\n let result;\n if (start.getFullYear() > end.getFullYear()) {\n result = 1;\n }\n else if (start.getFullYear() < end.getFullYear()) {\n result = -1;\n }\n else {\n result = start.getMonth() === end.getMonth() ? 0 : start.getMonth() > end.getMonth() ? 1 : -1;\n }\n return result;\n }\n checkValue(inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n }\n checkView() {\n if (this.start !== 'Decade' && this.start !== 'Year') {\n this.setProperties({ start: 'Month' }, true);\n }\n if (this.depth !== 'Decade' && this.depth !== 'Year') {\n this.setProperties({ depth: 'Month' }, true);\n }\n if (this.getViewNumber(this.depth) > this.getViewNumber(this.start)) {\n this.setProperties({ depth: 'Month' }, true);\n }\n }\n};\n__decorate([\n Property(new Date(1900, 0, 1))\n], CalendarBase.prototype, \"min\", void 0);\n__decorate([\n Property(new Date(2099, 11, 31))\n], CalendarBase.prototype, \"max\", void 0);\n__decorate([\n Property(null)\n], CalendarBase.prototype, \"firstDayOfWeek\", void 0);\n__decorate([\n Property('Gregorian')\n], CalendarBase.prototype, \"calendarMode\", void 0);\n__decorate([\n Property('Month')\n], CalendarBase.prototype, \"start\", void 0);\n__decorate([\n Property('Month')\n], CalendarBase.prototype, \"depth\", void 0);\n__decorate([\n Property(false)\n], CalendarBase.prototype, \"weekNumber\", void 0);\n__decorate([\n Property(true)\n], CalendarBase.prototype, \"showTodayButton\", void 0);\n__decorate([\n Property('Short')\n], CalendarBase.prototype, \"dayHeaderFormat\", void 0);\n__decorate([\n Property(false)\n], CalendarBase.prototype, \"enablePersistence\", void 0);\n__decorate([\n Property(null)\n], CalendarBase.prototype, \"keyConfigs\", void 0);\n__decorate([\n Property(null)\n], CalendarBase.prototype, \"serverTimezoneOffset\", void 0);\n__decorate([\n Event()\n], CalendarBase.prototype, \"created\", void 0);\n__decorate([\n Event()\n], CalendarBase.prototype, \"destroyed\", void 0);\n__decorate([\n Event()\n], CalendarBase.prototype, \"navigated\", void 0);\n__decorate([\n Event()\n], CalendarBase.prototype, \"renderDayCell\", void 0);\nCalendarBase = __decorate([\n NotifyPropertyChanges\n], CalendarBase);\n/**\n * Represents the Calendar component that allows the user to select a date.\n * ```html\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nlet Calendar = class Calendar extends CalendarBase {\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n * @param {CalendarModel} options?\n * @param {string|HTMLElement} element?\n */\n constructor(options, element) {\n super(options, element);\n }\n /**\n * To Initialize the control rendering.\n * @returns void\n * @private\n */\n render() {\n if (this.calendarMode === 'Islamic' && this.islamicModule === undefined) {\n throwError('Requires the injectable Islamic modules to render Calendar in Islamic mode');\n }\n if (this.isMultiSelection && typeof this.values === 'object' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n let tempValues = [];\n let copyValues = [];\n for (let limit = 0; limit < this.values.length; limit++) {\n if (tempValues.indexOf(+this.values[limit]) === -1) {\n tempValues.push(+this.values[limit]);\n copyValues.push(this.values[limit]);\n }\n }\n this.setProperties({ values: copyValues }, true);\n for (let index = 0; index < this.values.length; index++) {\n if (!this.checkDateValue(this.values[index])) {\n if (typeof (this.values[index]) === 'string' && this.checkDateValue(new Date(this.checkValue(this.values[index])))) {\n let copyDate = new Date(this.checkValue(this.values[index]));\n this.values.splice(index, 1);\n this.values.splice(index, 0, copyDate);\n }\n else {\n this.values.splice(index, 1);\n }\n }\n }\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n this.previousValues = this.values.length;\n }\n this.validateDate();\n this.minMaxUpdate();\n super.render();\n if (this.getModuleName() === 'calendar') {\n let form = closest(this.element, 'form');\n if (form) {\n EventHandler.add(form, 'reset', this.formResetHandler.bind(this));\n }\n this.setTimeZone(this.serverTimezoneOffset);\n }\n this.renderComplete();\n }\n isDayLightSaving() {\n let secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n let firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n }\n setTimeZone(offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n let serverTimezoneDiff = offsetValue;\n let clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n let timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date(this.value.getTime() + (timeZoneDiff * 60 * 60 * 1000));\n }\n }\n formResetHandler() {\n this.setProperties({ value: null }, true);\n }\n validateDate() {\n if (typeof this.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(this.checkValue(this.value))) }, true); // persist the value property.\n }\n super.validateDate(this.value);\n if (!isNullOrUndefined(this.value) && this.min <= this.max && this.value >= this.min && this.value <= this.max) {\n this.currentDate = new Date(this.checkValue(this.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n }\n minMaxUpdate() {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.value) && this.value <= this.min && this.min <= this.max) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value >= this.max && this.min <= this.max) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n }\n if (this.getModuleName() !== 'calendar' && !isNullOrUndefined(this.value)) {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max) {\n super.minMaxUpdate(this.min);\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max) {\n super.minMaxUpdate(this.max);\n }\n }\n }\n else {\n super.minMaxUpdate(this.value);\n }\n }\n generateTodayVal(value) {\n let tempValue = new Date();\n if (value) {\n tempValue.setHours(value.getHours());\n tempValue.setMinutes(value.getMinutes());\n tempValue.setSeconds(value.getSeconds());\n tempValue.setMilliseconds(value.getMilliseconds());\n }\n else {\n tempValue = new Date(tempValue.getFullYear(), tempValue.getMonth(), tempValue.getDate(), 0, 0, 0, 0);\n }\n return tempValue;\n }\n todayButtonClick() {\n if (this.showTodayButton) {\n let tempValue = this.generateTodayVal(this.value);\n this.setProperties({ value: tempValue }, true);\n if (this.isMultiSelection) {\n let copyValues = this.copyValues(this.values);\n if (!super.checkPresentDate(tempValue, this.values)) {\n copyValues.push(tempValue);\n this.setProperties({ values: copyValues });\n }\n }\n super.todayButtonClick(new Date(+this.value));\n }\n }\n keyActionHandle(e) {\n super.keyActionHandle(e, this.value, this.isMultiSelection);\n }\n /**\n * Initialize the event handler\n * @private\n */\n preRender() {\n this.changeHandler = (e) => {\n this.triggerChange(e);\n };\n this.checkView();\n super.preRender(this.value);\n }\n ;\n /**\n * @deprecated\n */\n createContent() {\n this.previousDate = this.value;\n this.previousDateTime = this.value;\n super.createContent();\n }\n minMaxDate(localDate) {\n return super.minMaxDate(localDate);\n }\n renderMonths(e) {\n super.renderMonths(e, this.value);\n }\n renderDays(currentDate, e) {\n let tempDays = super.renderDays(currentDate, e, this.value, this.isMultiSelection, this.values);\n if (this.isMultiSelection) {\n super.validateValues(this.isMultiSelection, this.values);\n }\n return tempDays;\n }\n renderYears(e) {\n if (this.calendarMode === 'Gregorian') {\n super.renderYears(e, this.value);\n }\n else {\n this.islamicModule.islamicRenderYears(e, this.value);\n }\n }\n renderDecades(e) {\n if (this.calendarMode === 'Gregorian') {\n super.renderDecades(e, this.value);\n }\n else {\n this.islamicModule.islamicRenderDecade(e, this.value);\n }\n }\n renderTemplate(elements, count, classNm, e) {\n if (this.calendarMode === 'Gregorian') {\n super.renderTemplate(elements, count, classNm, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(elements, count, classNm, e, this.value);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n clickHandler(e) {\n let eve = e.currentTarget;\n this.isPopupClicked = true;\n if (eve.classList.contains(OTHERMONTH)) {\n if (this.isMultiSelection) {\n let copyValues = this.copyValues(this.values);\n copyValues.push(this.getIdValue(e, null));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n else {\n this.setProperties({ value: this.getIdValue(e, null) }, true);\n }\n }\n let storeView = this.currentView();\n super.clickHandler(e, this.value);\n if (this.isMultiSelection && this.currentDate !== this.value &&\n !isNullOrUndefined(this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0]) && storeView === 'Year') {\n this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0].classList.remove(FOCUSEDDATE);\n }\n }\n switchView(view, e) {\n super.switchView(view, e, this.isMultiSelection);\n }\n /**\n * To get component name\n * @private\n */\n getModuleName() {\n super.getModuleName();\n return 'calendar';\n }\n /**\n * Gets the properties to be maintained upon browser refresh.\n * @returns string\n */\n getPersistData() {\n super.getPersistData();\n let keyEntity = ['value', 'values'];\n return this.addOnPersist(keyEntity);\n }\n /**\n * Called internally if any of the property value changed.\n * returns void\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n this.effect = '';\n this.rangeValidation(this.min, this.max);\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'value':\n if (this.isDateSelected) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: new Date(this.checkValue(newProp.value)) }, true);\n }\n else {\n newProp.value = new Date(this.checkValue(newProp.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: oldProp.value }, true);\n }\n this.update();\n }\n break;\n case 'values':\n if (this.isDateSelected) {\n if (typeof newProp.values === 'string' || typeof newProp.values === 'number') {\n this.setProperties({ values: null }, true);\n }\n else {\n let copyValues = this.copyValues(this.values);\n for (let index = 0; index < copyValues.length; index++) {\n let tempDate = copyValues[index];\n if (this.checkDateValue(tempDate) && !super.checkPresentDate(tempDate, copyValues)) {\n copyValues.push(tempDate);\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.values.length > 0) {\n this.setProperties({ value: newProp.values[newProp.values.length - 1] }, true);\n }\n }\n this.validateValues(this.isMultiSelection, this.values);\n this.update();\n }\n break;\n case 'isMultiSelection':\n if (this.isDateSelected) {\n this.setProperties({ isMultiSelection: newProp.isMultiSelection }, true);\n this.update();\n }\n break;\n default:\n super.onPropertyChanged(newProp, oldProp, this.isMultiSelection, this.values);\n }\n }\n }\n /**\n * Destroys the widget.\n * @returns void\n */\n destroy() {\n super.destroy();\n if (this.getModuleName() === 'calendar') {\n let form = closest(this.element, 'form');\n if (form) {\n EventHandler.remove(form, 'reset', this.formResetHandler.bind(this));\n }\n }\n }\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @returns void\n * @deprecated\n */\n navigateTo(view, date) {\n this.minMaxUpdate();\n super.navigateTo(view, date);\n }\n /**\n * Gets the current view of the Calendar.\n * @returns string\n * @deprecated\n */\n currentView() {\n return super.currentView();\n }\n /**\n * This method is used to add the single or multiple dates to the values property of the Calendar.\n * @param {Date || Date[]} dates - Specifies the date or dates to be added to the values property of the Calendar.\n * @returns void\n * @deprecated\n */\n addDate(dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number') {\n let copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && (dates).length > 0) {\n let tempDates = dates;\n for (let i = 0; i < tempDates.length; i++) {\n if (this.checkDateValue(tempDates[i]) && !super.checkPresentDate(tempDates[i], copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push(tempDates[i]);\n }\n else {\n copyValues = [new Date(+tempDates[i])];\n }\n }\n }\n }\n else {\n if (this.checkDateValue(dates) && !super.checkPresentDate(dates, copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push((dates));\n }\n else {\n copyValues = [new Date(+dates)];\n }\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.validateValues(this.isMultiSelection, copyValues);\n this.update();\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n }\n /**\n * This method is used to remove the single or multiple dates from the values property of the Calendar.\n * @param {Date || Date[]} dates - Specifies the date or dates which need to be removed from the values property of the Calendar.\n * @returns void\n * @deprecated\n */\n removeDate(dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n let copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && ((dates).length > 0)) {\n let tempDates = dates;\n for (let index = 0; index < tempDates.length; index++) {\n for (let i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +tempDates[index]) {\n copyValues.splice(i, 1);\n }\n }\n }\n }\n else {\n for (let i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +dates) {\n copyValues.splice(i, 1);\n }\n }\n }\n this.setProperties({ values: copyValues }, false);\n this.update();\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n }\n update() {\n this.validateDate();\n this.minMaxUpdate();\n super.setValueUpdate();\n }\n selectDate(e, date, element) {\n super.selectDate(e, date, element, this.isMultiSelection, this.values);\n if (this.isMultiSelection && !isNullOrUndefined(this.values) && this.values.length > 0) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler(e);\n }\n changeEvent(e) {\n if ((this.value && this.value.valueOf()) !== (this.previousDate && +this.previousDate.valueOf())\n || this.isMultiSelection) {\n this.trigger('change', this.changedArgs);\n this.previousDate = new Date(+this.value);\n }\n }\n triggerChange(e) {\n this.changedArgs.event = e || null;\n this.changedArgs.isInteracted = !isNullOrUndefined(e);\n if (!isNullOrUndefined(this.value)) {\n this.setProperties({ value: this.value }, true);\n }\n if (!this.isMultiSelection && +this.value !== Number.NaN && (+this.value !== +this.previousDate || this.previousDate == null\n && !isNaN(+this.value))) {\n this.changeEvent(e);\n }\n else if (!isNullOrUndefined(this.values) && this.previousValues !== this.values.length) {\n this.changeEvent(e);\n this.previousValues = this.values.length;\n }\n }\n};\n__decorate([\n Property(null)\n], Calendar.prototype, \"value\", void 0);\n__decorate([\n Property(null)\n], Calendar.prototype, \"values\", void 0);\n__decorate([\n Property(false)\n], Calendar.prototype, \"isMultiSelection\", void 0);\n__decorate([\n Event()\n], Calendar.prototype, \"change\", void 0);\nCalendar = __decorate([\n NotifyPropertyChanges\n], Calendar);\n\n/**\n *\n */\n//class constant defination.\nconst OTHERMONTH$1 = 'e-other-month';\nconst YEAR$1 = 'e-year';\nconst MONTH$1 = 'e-month';\nconst DECADE$1 = 'e-decade';\nconst DISABLED$1 = 'e-disabled';\nconst OVERLAY$1 = 'e-overlay';\nconst WEEKEND$1 = 'e-weekend';\nconst WEEKNUMBER$1 = 'e-week-number';\nconst SELECTED$1 = 'e-selected';\nconst FOCUSEDDATE$1 = 'e-focused-date';\nconst OTHERMONTHROW$1 = 'e-month-hide';\nconst TODAY$1 = 'e-today';\nconst LINK$1 = 'e-day';\nconst CELL$1 = 'e-cell';\nconst dayMilliSeconds$1 = 86400000;\nconst minDecade = 2060;\nconst maxDecade = 2069;\nclass Islamic {\n constructor(instance) {\n this.calendarInstance = instance;\n }\n getModuleName() {\n return 'islamic';\n }\n islamicTitleUpdate(date, view) {\n let globalize = new Internationalization(this.calendarInstance.locale);\n switch (view) {\n case 'days':\n /* tslint:disable-next-line:max-line-length */\n this.calendarInstance.headerTitleElement.textContent = globalize.formatDate(date, { type: 'dateTime', format: 'MMMMyyyy', calendar: 'islamic' });\n break;\n case 'months':\n /* tslint:disable-next-line:max-line-length */\n this.calendarInstance.headerTitleElement.textContent = globalize.formatDate(date, { type: 'dateTime', format: 'yyyy', calendar: 'islamic' });\n }\n }\n /* tslint:disable-next-line:max-line-length */\n // tslint:disable-next-line:max-func-body-length\n islamicRenderDays(currentDate, value, multiSelection, values) {\n let tdEles = [];\n let cellsCount = 42;\n let localDate = new Date(this.islamicInValue(currentDate));\n let minMaxDate;\n let numCells = this.calendarInstance.weekNumber ? 8 : 7;\n // 8 and 7 denotes the number of columns to be specified.\n this.islamicTitleUpdate(currentDate, 'days');\n /* tslint:disable-next-line:no-any */\n let islamicDate = this.getIslamicDate(localDate);\n let gregorianObject = this.toGregorian(islamicDate.year, islamicDate.month, 1);\n let currentMonth = islamicDate.month;\n localDate = gregorianObject;\n while (localDate.getDay() !== this.calendarInstance.firstDayOfWeek) {\n this.calendarInstance.setStartDate(localDate, -1 * dayMilliSeconds$1);\n }\n for (let day = 0; day < cellsCount; ++day) {\n let weekEle = this.calendarInstance.createElement('td', { className: CELL$1 });\n let weekAnchor = this.calendarInstance.createElement('span');\n if (day % 7 === 0 && this.calendarInstance.weekNumber) {\n weekAnchor.textContent = '' + this.calendarInstance.getWeek(localDate);\n weekEle.appendChild(weekAnchor);\n addClass([weekEle], '' + WEEKNUMBER$1);\n tdEles.push(weekEle);\n }\n minMaxDate = new Date(+localDate);\n localDate = this.calendarInstance.minMaxDate(localDate);\n /* tslint:disable-next-line:max-line-length */\n let dateFormatOptions = { type: 'dateTime', skeleton: 'full', calendar: 'islamic' };\n let date = this.calendarInstance.globalize.parseDate(this.calendarInstance.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n let tdEle = this.islamicDayCell(localDate);\n /* tslint:disable-next-line:max-line-length */\n let title = this.calendarInstance.globalize.formatDate(localDate, { type: 'date', skeleton: 'full', calendar: 'islamic' });\n let dayLink = this.calendarInstance.createElement('span');\n /* tslint:disable-next-line:max-line-length */\n dayLink.textContent = this.calendarInstance.globalize.formatDate(localDate, { type: 'date', skeleton: 'd', calendar: 'islamic' });\n let disabled = (this.calendarInstance.min > localDate) || (this.calendarInstance.max < localDate);\n if (disabled) {\n addClass([tdEle], DISABLED$1);\n addClass([tdEle], OVERLAY$1);\n }\n else {\n dayLink.setAttribute('title', '' + title);\n }\n /* tslint:disable-next-line:no-any */\n let hijriMonthObject = this.getIslamicDate(localDate);\n if (currentMonth !== hijriMonthObject.month) {\n addClass([tdEle], OTHERMONTH$1);\n }\n if (localDate.getDay() === 0 || localDate.getDay() === 6) {\n addClass([tdEle], WEEKEND$1);\n }\n tdEle.appendChild(dayLink);\n this.calendarInstance.renderDayCellArgs = {\n date: localDate,\n isDisabled: false,\n element: tdEle,\n isOutOfRange: disabled\n };\n let argument = this.calendarInstance.renderDayCellArgs;\n this.calendarInstance.renderDayCellEvent(argument);\n if (argument.isDisabled) {\n if (this.calendarInstance.isMultiSelection) {\n if (!isNullOrUndefined(this.calendarInstance.values) && this.calendarInstance.values.length > 0) {\n for (let index = 0; index < values.length; index++) {\n /* tslint:disable-next-line:max-line-length */\n let localDateString = +new Date(this.calendarInstance.globalize.formatDate(argument.date, { type: 'date', skeleton: 'yMd', calendar: 'islamic' }));\n /* tslint:disable-next-line:max-line-length */\n let tempDateString = +new Date(this.calendarInstance.globalize.formatDate(this.calendarInstance.values[index], { type: 'date', skeleton: 'yMd', calendar: 'islamic' }));\n if (localDateString === tempDateString) {\n this.calendarInstance.values.splice(index, 1);\n index = -1;\n }\n }\n }\n }\n else if (value && +value === +argument.date) {\n this.calendarInstance.setProperties({ value: null }, true);\n }\n }\n if (this.calendarInstance.renderDayCellArgs.isDisabled && !tdEle.classList.contains(SELECTED$1)) {\n addClass([tdEle], DISABLED$1);\n addClass([tdEle], OVERLAY$1);\n if (+this.calendarInstance.renderDayCellArgs.date === +this.calendarInstance.todayDate) {\n this.calendarInstance.todayDisabled = true;\n }\n }\n let otherMnthBool = tdEle.classList.contains(OTHERMONTH$1);\n let disabledCls = tdEle.classList.contains(DISABLED$1);\n if (!disabledCls) {\n EventHandler.add(tdEle, 'click', this.calendarInstance.clickHandler, this.calendarInstance);\n }\n if (this.calendarInstance.isMultiSelection && !isNullOrUndefined(this.calendarInstance.values) &&\n !otherMnthBool && !disabledCls) {\n for (let tempValue = 0; tempValue < this.calendarInstance.values.length; tempValue++) {\n /* tslint:disable-next-line:max-line-length */\n let localDateString = this.calendarInstance.globalize.formatDate(localDate, { type: 'date', skeleton: 'short', calendar: 'islamic' });\n let tempDateString = this.calendarInstance.globalize.formatDate(this.calendarInstance.values[tempValue], { type: 'date', skeleton: 'short', calendar: 'islamic' });\n if (localDateString === tempDateString &&\n this.calendarInstance.getDateVal(localDate, this.calendarInstance.values[tempValue])) {\n addClass([tdEle], SELECTED$1);\n }\n else {\n this.calendarInstance.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n if (this.calendarInstance.values.length <= 0) {\n this.calendarInstance.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n else if (!otherMnthBool && !disabledCls && this.calendarInstance.getDateVal(localDate, value)) {\n addClass([tdEle], SELECTED$1);\n }\n else {\n this.calendarInstance.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n if (date.getDate() === new Date().getDate() && date.getMonth() === new Date().getMonth()) {\n if (date.getFullYear() === new Date().getFullYear()) {\n addClass([tdEle], TODAY$1);\n }\n }\n localDate = new Date(+minMaxDate);\n tdEles.push(this.calendarInstance.renderDayCellArgs.element);\n this.calendarInstance.addDay(localDate, 1, null, this.calendarInstance.max, this.calendarInstance.min);\n }\n return tdEles;\n }\n islamicIconHandler() {\n new Date(this.islamicInValue(this.calendarInstance.currentDate)).setDate(1);\n let date = new Date(this.islamicInValue(this.calendarInstance.currentDate));\n switch (this.calendarInstance.currentView()) {\n case 'Month':\n let prevMonthCompare = this.islamicCompareMonth(date, this.calendarInstance.min) < 1;\n let nextMonthCompare = this.islamicCompareMonth(date, this.calendarInstance.max) > -1;\n this.calendarInstance.previousIconHandler(prevMonthCompare);\n this.calendarInstance.nextIconHandler(nextMonthCompare);\n break;\n case 'Year':\n let prevYearCompare = this.hijriCompareYear(date, this.calendarInstance.min) < 1;\n let nextYearCompare = this.hijriCompareYear(date, this.calendarInstance.max) > -1;\n this.calendarInstance.previousIconHandler(prevYearCompare);\n this.calendarInstance.nextIconHandler(nextYearCompare);\n break;\n case 'Decade':\n let prevDecadeCompare = this.hijriCompareDecade(date, this.calendarInstance.min) < 1;\n let nextDecadeCompare = this.hijriCompareDecade(date, this.calendarInstance.max) > -1;\n this.calendarInstance.previousIconHandler(prevDecadeCompare);\n this.calendarInstance.nextIconHandler(nextDecadeCompare);\n }\n }\n islamicNext() {\n this.calendarInstance.effect = '';\n let view = this.calendarInstance.getViewNumber(this.calendarInstance.currentView());\n /* tslint:disable-next-line:no-any */\n let islamicDate = this.getIslamicDate(this.calendarInstance.currentDate);\n switch (this.calendarInstance.currentView()) {\n case 'Year':\n this.calendarInstance.currentDate = this.toGregorian(islamicDate.year + 1, islamicDate.month, 1);\n this.calendarInstance.switchView(view);\n break;\n case 'Month':\n this.calendarInstance.currentDate = this.toGregorian(islamicDate.year, islamicDate.month + 1, 1);\n this.calendarInstance.switchView(view);\n break;\n case 'Decade':\n this.calendarInstance.currentDate = this.toGregorian(islamicDate.year + 10, islamicDate.month, 1);\n this.calendarInstance.switchView(view);\n break;\n }\n }\n islamicPrevious() {\n let currentView = this.calendarInstance.getViewNumber(this.calendarInstance.currentView());\n this.calendarInstance.effect = '';\n /* tslint:disable-next-line:no-any */\n let islamicDate = this.getIslamicDate(this.calendarInstance.currentDate);\n switch (this.calendarInstance.currentView()) {\n case 'Month':\n this.calendarInstance.currentDate = this.toGregorian(islamicDate.year, islamicDate.month - 1, 1);\n this.calendarInstance.switchView(currentView);\n break;\n case 'Year':\n this.calendarInstance.currentDate = this.toGregorian(islamicDate.year - 1, islamicDate.month, 1);\n this.calendarInstance.switchView(currentView);\n break;\n case 'Decade':\n this.calendarInstance.currentDate = this.toGregorian(islamicDate.year - 10, islamicDate.month - 1, 1);\n this.calendarInstance.switchView(currentView);\n break;\n }\n }\n islamicRenderYears(e, value) {\n this.calendarInstance.removeTableHeadElement();\n let numCells = 4;\n let tdEles = [];\n let valueUtil = isNullOrUndefined(value);\n let curDate = new Date(this.islamicInValue(this.calendarInstance.currentDate));\n let localDate = curDate;\n /* tslint:disable-next-line:no-any */\n let islamicDate = this.getIslamicDate(localDate);\n let gregorianObject = HijriParser.toGregorian(islamicDate.year, 1, 1);\n localDate = gregorianObject;\n let mon = islamicDate.month;\n let yr = islamicDate.year;\n let curYrs = islamicDate.year;\n /* tslint:disable-next-line:no-any */\n let minYr = (this.getIslamicDate(this.calendarInstance.min)).year;\n /* tslint:disable-next-line:no-any */\n let minMonth = (this.getIslamicDate(this.calendarInstance.min)).month;\n /* tslint:disable-next-line:no-any */\n let maxYr = (this.getIslamicDate(this.calendarInstance.max)).year;\n /* tslint:disable-next-line:no-any */\n let maxMonth = (this.getIslamicDate(this.calendarInstance.max)).month;\n this.islamicTitleUpdate(this.calendarInstance.currentDate, 'months');\n let disabled = (this.calendarInstance.min > localDate) || (this.calendarInstance.max < localDate);\n for (let month = 1; month <= 12; ++month) {\n /* tslint:disable-next-line:no-any */\n let islamicDate = this.getIslamicDate(localDate);\n let gregorianObject = HijriParser.toGregorian(islamicDate.year, month, 1);\n localDate = gregorianObject;\n let tdEle = this.islamicDayCell(localDate);\n let dayLink = this.calendarInstance.createElement('span');\n /* tslint:disable-next-line:max-line-length */\n /* tslint:disable-next-line:no-any */\n let localMonth = (value && (this.getIslamicDate(value)).month === (this.getIslamicDate(localDate)).month);\n /* tslint:disable-next-line:no-any tslint:disable-next-line:max-line-length */\n let select$$1 = (value && (this.getIslamicDate(value)).year === yr && localMonth);\n /* tslint:disable-next-line:max-line-length */\n dayLink.textContent = this.calendarInstance.globalize.formatDate(localDate, { type: 'dateTime', format: 'MMM', calendar: 'islamic' });\n if ((this.calendarInstance.min && (curYrs < minYr || (month < minMonth && curYrs === minYr))) || (this.calendarInstance.max && (curYrs > maxYr || (month > maxMonth && curYrs >= maxYr)))) {\n addClass([tdEle], DISABLED$1);\n }\n else if (!valueUtil && select$$1) {\n addClass([tdEle], SELECTED$1);\n }\n else {\n /* tslint:disable-next-line:no-any */\n if ((this.getIslamicDate(localDate)).month === mon &&\n /* tslint:disable-next-line:no-any */\n (this.getIslamicDate(this.calendarInstance.currentDate)).month === mon) {\n addClass([tdEle], FOCUSEDDATE$1);\n }\n }\n if (!tdEle.classList.contains(DISABLED$1)) {\n EventHandler.add(tdEle, 'click', this.calendarInstance.clickHandler, this.calendarInstance);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.islamicRenderTemplate(tdEles, numCells, YEAR$1, e, value);\n }\n islamicRenderDecade(e, value) {\n this.calendarInstance.removeTableHeadElement();\n let numCells = 4;\n let yearCell = 12;\n let tdEles = [];\n let localDate = new Date(this.islamicInValue(this.calendarInstance.currentDate));\n /* tslint:disable-next-line:no-any */\n let islamicDate = this.getIslamicDate(localDate);\n let gregorianObject = HijriParser.toGregorian(islamicDate.year, 1, 1);\n localDate = gregorianObject;\n let localYr = localDate.getFullYear();\n let startYr = new Date(this.islamicInValue((localYr - localYr % 10)));\n let endYr = new Date(this.islamicInValue((localYr - localYr % 10 + (10 - 1))));\n let startFullYr = startYr.getFullYear();\n let endFullYr = endYr.getFullYear();\n /* tslint:disable-next-line:max-line-length */\n let startHdrYr = this.calendarInstance.globalize.formatDate(startYr, { type: 'dateTime', format: 'y', calendar: 'islamic' });\n let endHdrYr = this.calendarInstance.globalize.formatDate(endYr, { type: 'dateTime', format: 'y', calendar: 'islamic' });\n this.calendarInstance.headerTitleElement.textContent = startHdrYr + ' - ' + (endHdrYr);\n let start = new Date(localYr - (localYr % 10) - 2, 0, 1);\n let startYear = start.getFullYear();\n for (let rowCount = 1; rowCount <= yearCell; ++rowCount) {\n let year = startYear + rowCount;\n localDate.setFullYear(year);\n localDate.setDate(1);\n localDate.setMonth(0);\n /* tslint:disable-next-line:no-any */\n let islamicDate = this.getIslamicDate(localDate);\n let gregorianObject = HijriParser.toGregorian(islamicDate.year, 1, 1);\n localDate = gregorianObject;\n let tdEle = this.islamicDayCell(localDate);\n attributes(tdEle, { 'role': 'gridcell' });\n let dayLink = this.calendarInstance.createElement('span');\n /* tslint:disable-next-line:max-line-length */\n dayLink.textContent = this.calendarInstance.globalize.formatDate(localDate, { type: 'dateTime', format: 'y', calendar: 'islamic' });\n /* tslint:disable-next-line:no-any */\n if ((year < startFullYr) || (year > endFullYr)) {\n addClass([tdEle], OTHERMONTH$1);\n }\n else if (year < new Date(this.islamicInValue(this.calendarInstance.min)).getFullYear()\n || year > new Date(this.islamicInValue(this.calendarInstance.max)).getFullYear()) {\n addClass([tdEle], DISABLED$1);\n }\n else if (!isNullOrUndefined(value) &&\n /* tslint:disable-next-line:no-any */\n (this.getIslamicDate(localDate)).year ===\n /* tslint:disable-next-line:no-any */\n (this.getIslamicDate(value)).year) {\n addClass([tdEle], SELECTED$1);\n }\n else {\n if (localDate.getFullYear() === this.calendarInstance.currentDate.getFullYear() && !tdEle.classList.contains(DISABLED$1)) {\n addClass([tdEle], FOCUSEDDATE$1);\n }\n }\n if (!tdEle.classList.contains(DISABLED$1)) {\n EventHandler.add(tdEle, 'click', this.calendarInstance.clickHandler, this.calendarInstance);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.islamicRenderTemplate(tdEles, numCells, 'e-decade', e, value);\n }\n islamicDayCell(localDate) {\n let dateFormatOptions = { skeleton: 'full', type: 'dateTime', calendar: 'islamic' };\n let formatDate = this.calendarInstance.globalize.formatDate(localDate, dateFormatOptions);\n let date = this.calendarInstance.globalize.parseDate(formatDate, dateFormatOptions);\n let value = date.valueOf();\n let attrs = {\n className: CELL$1, attrs: { 'id': '' + getUniqueID('' + value), 'aria-selected': 'false', 'role': 'gridcell' }\n };\n return this.calendarInstance.createElement('td', attrs);\n }\n islamicRenderTemplate(elements, count, classNm, e, value) {\n let view = this.calendarInstance.getViewNumber(this.calendarInstance.currentView());\n let trEle;\n this.calendarInstance.tableBodyElement = this.calendarInstance.createElement('tbody');\n this.calendarInstance.table.appendChild(this.calendarInstance.tableBodyElement);\n removeClass([this.calendarInstance.contentElement, this.calendarInstance.headerElement], [MONTH$1, DECADE$1, YEAR$1]);\n addClass([this.calendarInstance.contentElement, this.calendarInstance.headerElement], [classNm]);\n let weekNumCell = 41;\n let numberCell = 35;\n let otherMonthCell = 6;\n let row = count;\n let rowCount = 0;\n for (let dayCell = 0; dayCell < elements.length / count; ++dayCell) {\n trEle = this.calendarInstance.createElement('tr', { attrs: { 'role': 'row' } });\n for (rowCount = 0 + rowCount; rowCount < row; rowCount++) {\n if (!elements[rowCount].classList.contains('e-week-number') && !isNullOrUndefined(elements[rowCount].children[0])) {\n addClass([elements[rowCount].children[0]], [LINK$1]);\n rippleEffect(elements[rowCount].children[0], {\n duration: 600,\n isCenterRipple: true\n });\n }\n trEle.appendChild(elements[rowCount]);\n if (this.calendarInstance.weekNumber &&\n rowCount === otherMonthCell + 1 && elements[otherMonthCell + 1].classList.contains(OTHERMONTH$1)) {\n addClass([trEle], OTHERMONTHROW$1);\n }\n if (!this.calendarInstance.weekNumber\n && rowCount === otherMonthCell && elements[otherMonthCell].classList.contains(OTHERMONTH$1)) {\n addClass([trEle], OTHERMONTHROW$1);\n }\n if (this.calendarInstance.weekNumber) {\n if (rowCount === weekNumCell && elements[weekNumCell].classList.contains(OTHERMONTH$1)) {\n addClass([trEle], OTHERMONTHROW$1);\n }\n }\n else {\n if (rowCount === numberCell && elements[numberCell].classList.contains(OTHERMONTH$1)) {\n addClass([trEle], OTHERMONTHROW$1);\n }\n }\n }\n row = row + count;\n rowCount = rowCount + 0;\n this.calendarInstance.tableBodyElement.appendChild(trEle);\n }\n this.calendarInstance.table.querySelector('tbody').className = this.calendarInstance.effect;\n this.islamicIconHandler();\n if (view !== this.calendarInstance.getViewNumber(this.calendarInstance.currentView())\n || (view === 0 && view !== this.calendarInstance.getViewNumber(this.calendarInstance.currentView()))) {\n this.calendarInstance.navigateHandler(e);\n }\n this.calendarInstance.setAriaActiveDescendant();\n this.calendarInstance.changedArgs = { value: this.calendarInstance.value, values: this.calendarInstance.values };\n this.calendarInstance.changeHandler();\n }\n islamicCompareMonth(start, end) {\n /* tslint:disable-next-line:no-any */\n let hijriStart = (this.getIslamicDate(start));\n /* tslint:disable-next-line:no-any */\n let hijriEnd = (this.getIslamicDate(end));\n let result;\n if (hijriStart.year > hijriEnd.year) {\n result = 1;\n }\n else if (hijriStart.year < hijriEnd.year) {\n result = -1;\n }\n else {\n result = hijriStart.month === hijriEnd.month ? 0 : hijriStart.month > hijriEnd.month ? 1 : -1;\n }\n return result;\n }\n ;\n islamicCompare(startDate, endDate, modifier) {\n /* tslint:disable-next-line:no-any */\n let hijriStart = this.getIslamicDate(startDate);\n /* tslint:disable-next-line:no-any */\n let hijriEnd = this.getIslamicDate(endDate);\n let start = hijriEnd.year;\n let end;\n let result;\n end = start;\n result = 0;\n if (modifier) {\n start = start - start % modifier;\n end = start - start % modifier + modifier - 1;\n }\n if (hijriStart.year > end) {\n result = 1;\n }\n else if ((this.calendarInstance.currentView() === 'Decade') && hijriStart.year < start &&\n !((startDate.getFullYear() >= minDecade && startDate.getFullYear() <= maxDecade))) {\n result = -1;\n }\n else if (hijriStart.year < start && (this.calendarInstance.currentView() === 'Year')) {\n result = -1;\n }\n return result;\n }\n ;\n /* tslint:disable-next-line:no-any */\n getIslamicDate(date) {\n /* tslint:disable-next-line:no-any */\n return (HijriParser.getHijriDate(date));\n }\n toGregorian(year, month, date) {\n return HijriParser.toGregorian(year, month, date);\n }\n hijriCompareYear(start, end) {\n return this.islamicCompare(start, end, 0);\n }\n hijriCompareDecade(start, end) {\n return this.islamicCompare(start, end, 10);\n }\n ;\n destroy() {\n this.calendarInstance = null;\n }\n islamicInValue(inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n }\n}\n\n/**\n * Calendar modules\n */\n\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/// \n// tslint:disable-next-line\n//class constant defination\nconst DATEWRAPPER = 'e-date-wrapper';\nconst ROOT$1 = 'e-datepicker';\nconst LIBRARY = 'e-lib';\nconst CONTROL = 'e-control';\nconst POPUPWRAPPER = 'e-popup-wrapper';\nconst INPUTWRAPPER = 'e-input-group-icon';\nconst POPUP = 'e-popup';\nconst INPUTCONTAINER = 'e-input-group';\nconst INPUTFOCUS = 'e-input-focus';\nconst INPUTROOT = 'e-input';\nconst ERROR = 'e-error';\nconst ACTIVE = 'e-active';\nconst OVERFLOW = 'e-date-overflow';\nconst DATEICON = 'e-date-icon';\nconst CLEARICON = 'e-clear-icon';\nconst ICONS = 'e-icons';\nconst OPENDURATION = 300;\nconst OFFSETVALUE = 4;\nconst SELECTED$2 = 'e-selected';\nconst FOCUSEDDATE$2 = 'e-focused-date';\nconst NONEDIT = 'e-non-edit';\nconst containerAttr = ['title', 'class', 'style'];\n/**\n * Represents the DatePicker component that allows user to select\n * or enter a date value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nlet DatePicker = class DatePicker extends Calendar {\n /**\n * Constructor for creating the widget.\n */\n constructor(options, element) {\n super(options, element);\n this.previousElementValue = '';\n this.isDateIconClicked = false;\n this.isAltKeyPressed = false;\n this.isInteracted = true;\n this.isBlazorServer = false;\n this.invalidValueString = null;\n this.checkPreviousValue = null;\n this.datepickerOptions = options;\n }\n /**\n * To Initialize the control rendering.\n * @return void\n * @private\n */\n render() {\n this.initialize();\n this.bindEvents();\n this.renderComplete();\n if (!this.isBlazorServer) {\n this.setTimeZone(this.serverTimezoneOffset);\n }\n }\n setTimeZone(offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n let clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n let serverTimezoneDiff = offsetValue;\n let timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date((this.value).getTime() + (timeZoneDiff * 60 * 60 * 1000));\n this.updateInput();\n }\n }\n isDayLightSaving() {\n let firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n let secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n }\n setAllowEdit() {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.updateIconState();\n }\n updateIconState() {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n else {\n addClass([this.inputWrapper.container], [NONEDIT]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n }\n initialize() {\n if (!this.isBlazorServer) {\n this.checkInvalidValue(this.value);\n this.createInput();\n this.updateHtmlAttributeToWrapper();\n this.setAllowEdit();\n this.updateInput();\n }\n else {\n let parentElement = this.element.parentElement;\n this.inputWrapper = {\n container: parentElement,\n clearButton: parentElement.querySelector('.' + CLEARICON),\n buttons: [parentElement.querySelector('.' + DATEICON)]\n };\n Input.bindInitialEvent({\n element: this.inputElement,\n floatLabelType: this.floatLabelType\n });\n if (this.showClearButton && this.inputWrapper.clearButton) {\n Input.wireClearBtnEvents(this.inputElement, this.inputWrapper.clearButton, this.inputWrapper.container);\n }\n this.setAllowEdit();\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNullOrUndefined(this.value) ? new Date(+this.value) : null;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.inputValueCopy = this.value;\n }\n createInput() {\n let ariaAttrs = {\n 'aria-live': 'assertive', 'aria-atomic': 'true',\n 'aria-haspopup': 'true', 'aria-activedescendant': 'null',\n 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-invalid': 'false'\n };\n if (this.getModuleName() === 'datepicker') {\n let l10nLocale = { placeholder: this.placeholder };\n this.globalize = new Internationalization(this.locale);\n this.l10n = new L10n('datepicker', l10nLocale, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n let updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton,\n },\n buttons: [INPUTWRAPPER + ' ' + DATEICON + ' ' + ICONS]\n }, this.createElement);\n this.setWidth(this.width);\n if (this.inputElement.name !== '') {\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute('name'));\n }\n else {\n this.inputElement.setAttribute('name', '' + this.element.id);\n }\n attributes(this.inputElement, ariaAttrs);\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n Input.addAttributes({ 'aria-label': 'select' }, this.inputWrapper.buttons[0]);\n addClass([this.inputWrapper.container], DATEWRAPPER);\n }\n updateInput() {\n let formatOptions;\n if (this.value && !this.isCalendar()) {\n if (!this.isBlazorServer) {\n this.disabledDates();\n }\n }\n if (isNaN(+new Date(this.checkValue(this.value)))) {\n this.setProperties({ value: null }, true);\n }\n if (this.strictMode) {\n //calls the Calendar processDate protected method to update the date value according to the strictMode true behaviour.\n super.validateDate();\n this.minMaxUpdates();\n super.minMaxUpdate();\n }\n if (!isNullOrUndefined(this.value)) {\n let dateValue = this.value;\n let dateString;\n let tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateString = this.globalize.formatDate(this.value, formatOptions);\n }\n if ((+dateValue <= +this.max) && (+dateValue >= +this.min)) {\n this.updateInputValue(dateString);\n }\n else {\n let value = (+dateValue >= +this.max || !+this.value) || (!+this.value || +dateValue <= +this.min);\n if (!this.strictMode && value) {\n this.updateInputValue(dateString);\n }\n }\n }\n if (isNullOrUndefined(this.value) && this.strictMode) {\n this.updateInputValue('');\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.updateInputValue(this.invalidValueString);\n }\n this.changedArgs = { value: this.value };\n this.errorClass();\n this.updateIconState();\n }\n ;\n minMaxUpdates() {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n }\n checkStringValue(val) {\n let returnDate = null;\n let formatOptions = null;\n let formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n let culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: isBlazor() ? 'd' : 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatOptions));\n if (isNullOrUndefined(returnDate) && (this.getModuleName() === 'datetimepicker')) {\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatDateTime));\n }\n return returnDate;\n }\n checkInvalidValue(value) {\n if (!(value instanceof Date) && !isNullOrUndefined(value)) {\n let valueDate = null;\n let valueString = value;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n let formatOptions = null;\n let formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n let culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: isBlazor() ? 'd' : 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n let invalid = false;\n if (typeof valueString !== 'string') {\n valueString = null;\n invalid = true;\n }\n else {\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n valueDate = this.checkStringValue(valueString);\n if (!valueDate) {\n let extISOString = null;\n let basicISOString = null;\n // tslint:disable-next-line\n extISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // tslint:disable-next-line\n basicISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || (/^[a-zA-Z0-9- ]*$/).test(valueString) || isNaN(+new Date(this.checkValue(valueString)))) {\n invalid = true;\n }\n else {\n valueDate = new Date(valueString);\n }\n }\n }\n if (invalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n }\n else {\n this.setProperties({ value: valueDate }, true);\n }\n }\n }\n ;\n bindInputEvent() {\n if (!isNullOrUndefined(this.formatString)) {\n if (this.formatString.indexOf('y') === -1) {\n EventHandler.add(this.inputElement, 'input', this.inputHandler, this);\n }\n else {\n EventHandler.remove(this.inputElement, 'input', this.inputHandler);\n }\n }\n }\n bindEvents() {\n if (this.enabled) {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown touchstart', (this.isBlazorServer ? this.preventEventBubbling : this.dateIconHandler), this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n this.bindInputEvent();\n // To prevent the twice triggering.\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n if (this.showClearButton && (this.inputWrapper.clearButton || (this.isBlazorServer))) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.resetFormHandler, this);\n }\n }\n else {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', (this.isBlazorServer ? this.preventEventBubbling : this.dateIconHandler));\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n if (this.showClearButton && (this.inputWrapper.clearButton || (this.isBlazorServer))) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n }\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardModules = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n resetFormHandler() {\n if (!this.inputElement.disabled) {\n let value = this.inputElement.getAttribute('value');\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n value = '';\n this.inputValueCopy = null;\n this.inputElement.setAttribute('value', '');\n }\n if (!this.isBlazorServer) {\n this.setProperties({ value: this.inputValueCopy }, true);\n this.restoreValue();\n if (this.inputElement) {\n this.updateInputValue(value);\n this.errorClass();\n }\n }\n }\n }\n restoreValue() {\n this.currentDate = this.value ? this.value : new Date();\n this.previousDate = this.value;\n this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.globalize.formatDate(this.inputValueCopy, {\n format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd'\n });\n }\n inputChangeHandler(e) {\n e.stopPropagation();\n }\n bindClearEvent() {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n }\n resetHandler(e) {\n e.preventDefault();\n this.clear(e);\n }\n clear(event) {\n if (!this.isBlazorServer) {\n this.setProperties({ value: null }, true);\n }\n this.updateInputValue('');\n let clearedArgs = {\n event: event\n };\n this.trigger('cleared', clearedArgs);\n this.invalidValueString = '';\n if (!this.isBlazorServer) {\n this.updateInput();\n this.popupUpdate();\n this.changeEvent(event);\n }\n if (this.isBlazorServer) {\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnValueCleared');\n // tslint:enable\n }\n }\n preventEventBubbling(e) {\n e.preventDefault();\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnDateIconClick');\n // tslint:enable\n }\n updateInputValue(value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n dateIconHandler(e) {\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n this.inputElement.blur();\n }\n if (!this.isBlazorServer) {\n e.preventDefault();\n }\n if (!this.readonly) {\n if (this.isCalendar() && !this.isBlazorServer) {\n this.hide(e);\n }\n else {\n if (!this.isBlazorServer || (this.isBlazorServer && this.inputWrapper.container.nextElementSibling)) {\n this.isDateIconClicked = true;\n this.show(null, e);\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n addClass(this.inputWrapper.buttons, ACTIVE);\n }\n }\n }\n }\n updateHtmlAttributeToWrapper() {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (let key of Object.keys(this.htmlAttributes)) {\n if (!isNullOrUndefined(this.htmlAttributes[key])) {\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n let updatedClassValues = (this.htmlAttributes[key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.inputWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n let setStyle = this.inputWrapper.container.getAttribute(key);\n if (!isNullOrUndefined(setStyle)) {\n if (setStyle.charAt(setStyle.length - 1) === ';') {\n setStyle = setStyle + this.htmlAttributes[key];\n }\n else {\n setStyle = setStyle + ';' + this.htmlAttributes[key];\n }\n }\n else {\n setStyle = this.htmlAttributes[key];\n }\n this.inputWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n }\n }\n updateHtmlAttributeToElement() {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (let key of Object.keys(this.htmlAttributes)) {\n if (containerAttr.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n updateCssClass(newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newCssClass, [this.inputWrapper.container], oldCssClass);\n if (this.popupWrapper) {\n Input.setCssClass(newCssClass, [this.popupWrapper], oldCssClass);\n }\n }\n CalendarKeyActionHandle(e) {\n switch (e.action) {\n case 'escape':\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.inputWrapper.container.children[this.index].blur();\n }\n break;\n case 'enter':\n if (!this.isCalendar()) {\n this.show(null, e);\n }\n else {\n if (+this.value !== +this.currentDate && !this.isCalendar()) {\n this.inputWrapper.container.children[this.index].focus();\n }\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n break;\n case 'tab':\n this.hide(e);\n }\n }\n inputFocusHandler() {\n let focusArguments = {\n model: isBlazor() && this.isServerRendered ? null : this\n };\n this.isDateIconClicked = false;\n this.trigger('focus', focusArguments);\n this.updateIconState();\n if (this.openOnFocus) {\n this.show();\n }\n }\n inputHandler(e) {\n this.isPopupClicked = false;\n }\n inputBlurHandler(e) {\n if (!this.isBlazorServer) {\n this.strictModeUpdate();\n if (this.inputElement.value === '' && isNullOrUndefined(this.value)) {\n this.invalidValueString = null;\n this.updateInputValue('');\n }\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n }\n else {\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnStrictModeUpdate', this.inputElement.value);\n // tslint:enable\n }\n if (this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.getModuleName() === 'datepicker') {\n let blurArguments = {\n model: isBlazor() && this.isServerRendered ? null : this\n };\n this.trigger('blur', blurArguments);\n }\n if (this.isCalendar()) {\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.calendarKeyboardModules = new KeyboardEvents(this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: this.CalendarKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n this.isPopupClicked = false;\n }\n documentHandler(e) {\n if ((!isNullOrUndefined(this.popupObj) && (this.inputWrapper.container.contains(e.target) ||\n (this.popupObj.element && this.popupObj.element.contains(e.target)))) && e.type !== 'touchstart') {\n e.preventDefault();\n }\n let target = e.target;\n if (!(closest(target, '.e-datepicker.e-popup-wrapper'))\n && !(closest(target, '.' + INPUTCONTAINER) === this.inputWrapper.container)\n && (!target.classList.contains('e-day'))) {\n this.hide(e);\n this.focusOut();\n }\n else if (closest(target, '.e-datepicker.e-popup-wrapper')) {\n // Fix for close the popup when select the previously selected value.\n if (target.classList.contains('e-day')\n && !isNullOrUndefined(e.target.parentElement)\n && e.target.parentElement.classList.contains('e-selected')\n && closest(target, '.e-content')\n && closest(target, '.e-content').classList.contains('e-' + this.depth.toLowerCase())) {\n this.hide(e);\n }\n else if (closest(target, '.e-footer-container')\n && target.classList.contains('e-today')\n && target.classList.contains('e-btn')\n && (+new Date(+this.value) === +super.generateTodayVal(this.value) && !this.isBlazorServer)) {\n this.hide(e);\n }\n }\n }\n inputKeyActionHandle(e) {\n let clickedView = this.currentView();\n switch (e.action) {\n case 'altUpArrow':\n this.isAltKeyPressed = false;\n this.hide(e);\n this.inputElement.focus();\n break;\n case 'altDownArrow':\n this.isAltKeyPressed = true;\n if (!this.isBlazorServer) {\n this.strictModeUpdate();\n this.updateInput();\n this.changeTrigger(e);\n }\n else {\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnStrictModeUpdate', this.inputElement.value);\n // tslint:enable\n }\n if (this.getModuleName() === 'datepicker') {\n if (!this.isBlazorServer) {\n this.show(null, e);\n }\n else {\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnPopupHide', true);\n // tslint:enable\n }\n }\n break;\n case 'escape':\n this.hide(e);\n break;\n case 'enter':\n if (!this.isBlazorServer) {\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n }\n else {\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnStrictModeUpdate', this.inputElement.value);\n // tslint:enable\n }\n if (!this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.isCalendar()) {\n e.preventDefault();\n e.stopPropagation();\n }\n break;\n case 'tab':\n case 'shiftTab':\n if (!this.isBlazorServer) {\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n }\n else {\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnStrictModeUpdate', this.inputElement.value);\n // tslint:enable\n }\n this.hide(e);\n break;\n default:\n this.defaultAction(e);\n // Fix for close the popup when select the previously selected value.\n if (e.action === 'select' && clickedView === this.depth) {\n this.hide(e);\n }\n }\n }\n defaultAction(e) {\n this.previousDate = ((!isNullOrUndefined(this.value) && new Date(+this.value)) || null);\n if (this.isCalendar()) {\n super.keyActionHandle(e);\n if (!this.isBlazorServer) {\n attributes(this.inputElement, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n }\n }\n }\n popupUpdate() {\n if ((isNullOrUndefined(this.value)) && (!isNullOrUndefined(this.previousDate)) ||\n (+this.value !== +this.previousDate)) {\n if (this.popupObj) {\n if (this.popupObj.element.querySelectorAll('.' + SELECTED$2).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + SELECTED$2), [SELECTED$2]);\n }\n }\n if (!isNullOrUndefined(this.value) && !this.isBlazorServer) {\n if ((+this.value >= +this.min) && (+this.value <= +this.max)) {\n let targetdate = new Date(this.checkValue(this.value));\n super.navigateTo('Month', targetdate);\n }\n }\n }\n }\n strictModeUpdate() {\n let format;\n let formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n format = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else {\n format = isNullOrUndefined(this.formatString) ? this.formatString : this.formatString.replace('dd', 'd');\n }\n if (!isNullOrUndefined(format)) {\n let len = format.split('M').length - 1;\n if (len < 3) {\n format = format.replace('MM', 'M');\n }\n }\n let dateOptions;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd'\n };\n }\n else {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: format, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateOptions = formatOptions;\n }\n let date;\n if (typeof this.inputElement.value === 'string') {\n this.inputElement.value = this.inputElement.value.trim();\n }\n if ((this.getModuleName() === 'datetimepicker')) {\n if (this.checkDateValue(this.globalize.parseDate(this.inputElement.value, dateOptions))) {\n date = this.globalize.parseDate(this.inputElement.value, dateOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.parseDate(this.inputElement.value, formatOptions);\n }\n }\n else {\n date = this.globalize.parseDate(this.inputElement.value, dateOptions);\n if (!isNullOrUndefined(this.formatString) && this.inputElement.value !== '' && this.strictMode) {\n if ((this.isPopupClicked || (!this.isPopupClicked && this.inputElement.value === this.previousElementValue))\n && this.formatString.indexOf('y') === -1) {\n date.setFullYear(this.value.getFullYear());\n }\n }\n }\n // EJ2-35061 - To prevent change event from triggering twice when using strictmode and format property\n if ((this.getModuleName() === 'datepicker') && (this.value && !isNaN(+this.value)) && date) {\n date.setHours(this.value.getHours(), this.value.getMinutes(), this.value.getSeconds(), this.value.getMilliseconds());\n }\n if (this.strictMode && date) {\n this.updateInputValue(this.globalize.formatDate(date, dateOptions));\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n else if (!this.strictMode) {\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n if (this.strictMode && !date && this.inputElement.value === '') {\n this.setProperties({ value: null }, true);\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n if (isNullOrUndefined(this.value)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n }\n createCalendar() {\n if (!this.isBlazorServer) {\n this.popupWrapper = this.createElement('div', { className: '' + ROOT$1 + ' ' + POPUPWRAPPER });\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n }\n else {\n this.popupWrapper = this.inputWrapper.container.nextElementSibling;\n this.calendarElement = this.popupWrapper.firstElementChild;\n this.tableBodyElement = select('tbody', this.calendarElement);\n this.contentElement = select('.e-content', this.calendarElement);\n }\n if (Browser.isDevice) {\n this.modelHeader();\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT$1 + ' e-date-modal';\n document.body.className += ' ' + OVERFLOW;\n this.modal.style.display = 'block';\n document.body.appendChild(this.modal);\n }\n //this.calendarElement represent the Calendar object from the Calendar class.\n this.calendarElement.querySelector('table tbody').className = '';\n this.popupObj = new Popup(this.popupWrapper, {\n content: this.isBlazorServer ? null : this.calendarElement,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n offsetY: OFFSETVALUE,\n targetType: 'container',\n enableRtl: this.enableRtl,\n zIndex: this.zIndex,\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n open: () => {\n if (this.getModuleName() !== 'datetimepicker') {\n if (document.activeElement !== this.inputElement) {\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.calendarElement.children[1].firstElementChild.focus();\n this.calendarKeyboardModules = new KeyboardEvents(this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: this.CalendarKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n this.calendarKeyboardModules = new KeyboardEvents(this.inputWrapper.container.children[this.index], {\n eventName: 'keydown',\n keyAction: this.CalendarKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n }\n }, close: () => {\n if (this.isDateIconClicked) {\n this.inputWrapper.container.children[this.index].focus();\n }\n if (this.value && !this.isBlazorServer) {\n this.disabledDates();\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n detach(this.popupWrapper);\n this.popupObj = this.popupWrapper = null;\n this.setAriaAttributes();\n }, targetExitViewport: () => {\n if (!Browser.isDevice) {\n this.hide();\n }\n }\n });\n if (!this.isBlazorServer) {\n this.popupObj.element.className += ' ' + this.cssClass;\n }\n this.setAriaAttributes();\n }\n setAriaDisabled() {\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n }\n modelHeader() {\n let dateOptions;\n let modelHeader = this.createElement('div', { className: 'e-model-header' });\n let yearHeading = this.createElement('h1', { className: 'e-model-year' });\n let h2 = this.createElement('div');\n let daySpan = this.createElement('span', { className: 'e-model-day' });\n let monthSpan = this.createElement('span', { className: 'e-model-month' });\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'y', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'y', skeleton: 'dateTime', calendar: 'islamic' };\n }\n yearHeading.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'E', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'E', skeleton: 'dateTime', calendar: 'islamic' };\n }\n daySpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions) + ', ';\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime', calendar: 'islamic' };\n }\n monthSpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n modelHeader.appendChild(yearHeading);\n h2.appendChild(daySpan);\n h2.appendChild(monthSpan);\n modelHeader.appendChild(h2);\n this.calendarElement.insertBefore(modelHeader, this.calendarElement.firstElementChild);\n }\n changeTrigger(event) {\n if (this.inputElement.value !== this.previousElementValue) {\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n this.changedArgs.value = this.value;\n this.changedArgs.event = event || null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = !isNullOrUndefined(event);\n this.trigger('change', this.changedArgs);\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNaN(+new Date(this.checkValue(this.value))) ? new Date(this.checkValue(this.value)) : null;\n this.isInteracted = true;\n }\n }\n }\n navigatedEvent() {\n this.trigger('navigated', this.navigatedArgs);\n }\n changeEvent(event) {\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n this.selectCalendar(event);\n this.changedArgs.event = event ? event : null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = this.isInteracted;\n this.trigger('change', this.changedArgs);\n this.previousDate = this.value && new Date(+this.value);\n this.hide(event);\n this.previousElementValue = this.inputElement.value;\n this.errorClass();\n }\n }\n requiredModules() {\n let modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n return modules;\n }\n selectCalendar(e) {\n let date;\n let tempFormat;\n let formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else {\n tempFormat = this.formatString;\n }\n if (this.value) {\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n }\n if (!isNullOrUndefined(date)) {\n this.updateInputValue(date);\n }\n }\n isCalendar() {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + POPUPWRAPPER)) {\n return true;\n }\n return false;\n }\n setWidth(width) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(this.width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (this.width) : (formatUnit(this.width));\n }\n else {\n this.inputWrapper.container.style.width = '100%';\n }\n }\n /**\n * Shows the Calendar.\n * @returns void\n * @deprecated\n */\n show(type, e) {\n if ((this.enabled && this.readonly) || !this.enabled || this.popupObj) {\n return;\n }\n else {\n let prevent = true;\n let outOfRange;\n if (!isNullOrUndefined(this.value) && !(+this.value >= +this.min && +this.value <= +this.max)) {\n outOfRange = new Date(this.checkValue(this.value));\n if (!this.isBlazorServer) {\n this.setProperties({ 'value': null }, true);\n }\n }\n else {\n outOfRange = this.value || null;\n }\n if (!this.isCalendar()) {\n if (!this.isBlazorServer) {\n super.render();\n this.setProperties({ 'value': outOfRange || null }, true);\n }\n this.previousDate = outOfRange;\n this.createCalendar();\n }\n if (Browser.isDevice) {\n this.mobilePopupWrapper = this.createElement('div', { className: 'e-datepick-mob-popup-wrap' });\n document.body.appendChild(this.mobilePopupWrapper);\n }\n this.preventArgs = {\n preventDefault: () => {\n prevent = false;\n },\n popup: isBlazor() && this.isServerRendered ? null : this.popupObj,\n event: e || null,\n cancel: false,\n appendTo: Browser.isDevice ? this.mobilePopupWrapper : document.body\n };\n let eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, (eventArgs) => {\n this.preventArgs = eventArgs;\n if (prevent && !this.preventArgs.cancel) {\n if (this.isBlazorServer) {\n this.popupWrapper.style.visibility = '';\n this.popupWrapper.style.width = 'auto';\n this.popupWrapper.style.height = 'auto';\n }\n addClass(this.inputWrapper.buttons, ACTIVE);\n this.preventArgs.appendTo.appendChild(this.popupWrapper);\n this.popupObj.refreshPosition(this.inputElement);\n let openAnimation = {\n name: 'FadeIn',\n duration: Browser.isDevice ? 0 : OPENDURATION,\n };\n if (this.zIndex === 1000) {\n this.popupObj.show(new Animation(openAnimation), this.element);\n }\n else {\n this.popupObj.show(new Animation(openAnimation), null);\n }\n if (!this.isBlazorServer) {\n super.setOverlayIndex(this.mobilePopupWrapper, this.popupObj.element, this.modal, Browser.isDevice);\n }\n this.setAriaAttributes();\n }\n else {\n this.popupObj.destroy();\n if (this.isBlazorServer) {\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnPopupHide', false);\n // tslint:enable\n }\n this.popupWrapper = this.popupObj = null;\n }\n if (!isNullOrUndefined(this.inputElement) && this.inputElement.value === '') {\n if (!isNullOrUndefined(this.tableBodyElement) && this.tableBodyElement.querySelectorAll('td.e-selected').length > 0) {\n addClass([this.tableBodyElement.querySelector('td.e-selected')], FOCUSEDDATE$2);\n removeClass(this.tableBodyElement.querySelectorAll('td.e-selected'), SELECTED$2);\n }\n }\n EventHandler.add(document, 'mousedown touchstart', this.documentHandler, this);\n });\n }\n }\n /**\n * Hide the Calendar.\n * @returns void\n * @deprecated\n */\n hide(event) {\n if (!isNullOrUndefined(this.popupWrapper)) {\n let prevent = true;\n this.preventArgs = {\n preventDefault: () => {\n prevent = false;\n },\n popup: isBlazor() && this.isServerRendered ? null : this.popupObj,\n event: event || null,\n cancel: false\n };\n removeClass(this.inputWrapper.buttons, ACTIVE);\n removeClass([document.body], OVERFLOW);\n let eventArgs = this.preventArgs;\n if (this.isCalendar()) {\n this.trigger('close', eventArgs, (eventArgs) => {\n this.closeEventCallback(prevent, eventArgs);\n });\n }\n else {\n this.closeEventCallback(prevent, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n }\n closeEventCallback(prevent, eventArgs) {\n this.preventArgs = eventArgs;\n if (this.isCalendar() && (prevent && !this.preventArgs.cancel)) {\n if (!this.isBlazorServer) {\n this.popupObj.hide();\n this.isAltKeyPressed = false;\n this.keyboardModule.destroy();\n }\n else {\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnPopupHide', false);\n // tslint:enable\n this.isAltKeyPressed = false;\n this.popupWrapper = this.popupObj = null;\n }\n removeClass(this.inputWrapper.buttons, ACTIVE);\n }\n this.setAriaAttributes();\n if (Browser.isDevice && this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(this.mobilePopupWrapper)) {\n this.mobilePopupWrapper.remove();\n this.mobilePopupWrapper = null;\n }\n }\n EventHandler.remove(document, 'mousedown touchstart', this.documentHandler);\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n /**\n * Sets the focus to widget for interaction.\n * @returns void\n */\n focusIn(triggerEvent) {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n \n }\n }\n /**\n * Remove the focus from widget, if the widget is in focus state.\n * @returns void\n */\n focusOut() {\n if (document.activeElement === this.inputElement) {\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n this.inputElement.blur();\n }\n }\n /**\n * Gets the current view of the DatePicker.\n * @returns string\n * @deprecated\n */\n currentView() {\n let currentView;\n if (this.calendarElement) {\n // calls the Calendar currentView public method\n currentView = super.currentView();\n }\n return currentView;\n }\n /**\n * Navigates to specified month or year or decade view of the DatePicker.\n * @param {string} view - Specifies the view of the calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @returns void\n * @deprecated\n */\n navigateTo(view, date) {\n if (this.calendarElement) {\n // calls the Calendar navigateTo public method\n super.navigateTo(view, date);\n }\n }\n /**\n * To destroy the widget.\n * @returns void\n */\n destroy() {\n if (!this.isBlazorServer) {\n super.destroy();\n this.keyboardModules.destroy();\n if (this.popupObj && this.popupObj.element.classList.contains(POPUP)) {\n super.destroy();\n }\n }\n let ariaAttrs = {\n 'aria-live': 'assertive', 'aria-atomic': 'true', 'aria-disabled': 'true',\n 'aria-haspopup': 'true', 'aria-activedescendant': 'null',\n 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttrs, this.inputElement);\n (!isNullOrUndefined(this.inputElementCopy.getAttribute('tabindex'))) ?\n this.inputElement.setAttribute('tabindex', this.tabIndex) : this.inputElement.removeAttribute('tabindex');\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n this.ensureInputAttribute();\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObj = this.popupWrapper = null;\n if (!this.isBlazorServer) {\n this.keyboardModule.destroy();\n }\n }\n if (this.ngTag === null) {\n if (this.inputElement) {\n this.inputWrapper.container.insertAdjacentElement('afterend', this.inputElement);\n removeClass([this.inputElement], [INPUTROOT]);\n }\n removeClass([this.element], [ROOT$1]);\n detach(this.inputWrapper.container);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n }\n ensureInputAttribute() {\n let prop = [];\n for (let i = 0; i < this.inputElement.attributes.length; i++) {\n prop[i] = this.inputElement.attributes[i].name;\n }\n for (let i = 0; i < prop.length; i++) {\n if (isNullOrUndefined(this.inputElementCopy.getAttribute(prop[i]))) {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n this.inputElement.removeAttribute(prop[i]);\n }\n else {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = this.inputElementCopy.getAttribute(prop[i]);\n }\n this.inputElement.setAttribute(prop[i], this.inputElementCopy.getAttribute(prop[i]));\n }\n }\n }\n /**\n * Initialize the event handler\n * @private\n */\n preRender() {\n this.inputElementCopy = this.element.cloneNode(true);\n removeClass([this.inputElementCopy], [ROOT$1, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.formElement = closest(this.inputElement, 'form');\n this.index = this.showClearButton ? 2 : 1;\n this.isBlazorServer = (isBlazor() && this.isServerRendered && this.getModuleName() === 'datepicker') ? true : false;\n if (!this.isBlazorServer) {\n this.ngTag = null;\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.ngTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n if (this.element.getAttribute('id')) {\n if (this.ngTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.element.id = getUniqueID('ej2-datetimepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n else {\n this.element.id = getUniqueID('ej2-datepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n }\n if (this.ngTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n }\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.checkHtmlAttributes(false);\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n if (!this.isBlazorServer) {\n this.element.removeAttribute('tabindex');\n super.preRender();\n }\n }\n ;\n getDefaultKeyConfig() {\n this.defaultKeyConfigs = {\n altUpArrow: 'alt+uparrow',\n altDownArrow: 'alt+downarrow',\n escape: 'escape',\n enter: 'enter',\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n shiftTab: 'shift+tab',\n tab: 'tab'\n };\n return this.defaultKeyConfigs;\n }\n validationAttribute(target, inputElement) {\n let nameAttribute = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n inputElement.setAttribute('name', nameAttribute);\n target.removeAttribute('name');\n let attribute = ['required', 'aria-required', 'form'];\n for (let i = 0; i < attribute.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attribute[i]))) {\n continue;\n }\n let attr = target.getAttribute(attribute[i]);\n inputElement.setAttribute(attribute[i], attr);\n target.removeAttribute(attribute[i]);\n }\n }\n checkFormat() {\n let culture = new Internationalization(this.locale);\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = isBlazor() ? this.format.replace(/tt/, 'a') : this.format;\n }\n else if (this.format.skeleton !== '' && !isNullOrUndefined(this.format.skeleton)) {\n let skeletonString = this.format.skeleton;\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'dateTime' });\n }\n else {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'date' });\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = this.dateTimeFormat;\n }\n else {\n this.formatString = null;\n }\n }\n }\n else {\n this.formatString = null;\n }\n }\n checkHtmlAttributes(dynamic) {\n this.globalize = new Internationalization(this.locale);\n this.checkFormat();\n this.checkView();\n let attributes$$1 = dynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'disabled', 'readonly', 'style', 'name', 'placeholder', 'type'];\n let options;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd'\n };\n }\n else {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n options = { format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n for (let prop of attributes$$1) {\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n // tslint:disable-next-line\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['enabled'] === undefined)) || dynamic) && !this.isBlazorServer) {\n let enabled = this.inputElement.getAttribute(prop) === 'disabled' || this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !dynamic);\n }\n break;\n case 'readonly':\n // tslint:disable-next-line\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['readonly'] === undefined)) || dynamic) && !this.isBlazorServer) {\n let readonly = this.inputElement.getAttribute(prop) === 'readonly' || this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !dynamic);\n }\n break;\n case 'placeholder':\n // tslint:disable-next-line\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['placeholder'] === undefined)) || dynamic) && !this.isBlazorServer) {\n let placeholder = this.inputElement.getAttribute(prop);\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !dynamic);\n }\n break;\n case 'style':\n if (!this.isBlazorServer) {\n this.inputElement.setAttribute('style', '' + this.inputElement.getAttribute(prop));\n }\n break;\n case 'name':\n if (!this.isBlazorServer) {\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute(prop));\n }\n break;\n case 'value':\n // tslint:disable-next-line\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['value'] === undefined)) || dynamic) && !this.isBlazorServer) {\n let value = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(value, options), {}), !dynamic);\n }\n break;\n case 'min':\n if ((+this.min === +new Date(1900, 0, 1)) || dynamic) {\n let min = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(min), {}), !dynamic);\n }\n break;\n case 'max':\n if ((+this.max === +new Date(2099, 11, 31)) || dynamic) {\n let max = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(max), {}), !dynamic);\n }\n break;\n case 'type':\n if (this.inputElement.getAttribute(prop) !== 'text' && !this.isBlazorServer) {\n this.inputElement.setAttribute('type', 'text');\n }\n break;\n }\n }\n }\n }\n /**\n * To get component name.\n * @private\n */\n getModuleName() {\n return 'datepicker';\n }\n disabledDates() {\n let valueCopy;\n let formatOptions;\n let globalize;\n valueCopy = this.checkDateValue(this.value) ? new Date(+this.value) : new Date(this.checkValue(this.value));\n let previousValCopy = this.previousDate;\n //calls the Calendar render method to check the disabled dates through renderDayCell event and update the input value accordingly.\n this.minMaxUpdates();\n if (!this.isBlazorServer) {\n super.render();\n }\n this.previousDate = previousValCopy;\n let date = valueCopy && +(valueCopy);\n let dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + date);\n if (!this.strictMode) {\n if (typeof this.value === 'string' || ((typeof this.value === 'object') && (+this.value) !== (+valueCopy))) {\n this.setProperties({ value: valueCopy }, true);\n }\n }\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll(dateIdString)[0])) {\n if (this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled')) {\n if (!this.strictMode) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n }\n }\n let inputVal;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd'\n });\n }\n else {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n inputVal = globalize;\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n inputVal = this.globalize.formatDate(valueCopy, formatOptions);\n }\n if (!this.popupObj) {\n this.updateInputValue(inputVal);\n }\n }\n setAriaAttributes() {\n if (this.isBlazorServer) {\n if (this.isCalendar()) {\n let focusedEle = this.tableBodyElement.querySelector('tr td.e-focused-date');\n let selectedEle = this.tableBodyElement.querySelector('tr td.e-selected');\n let id = (focusedEle || selectedEle) ? (focusedEle || selectedEle).getAttribute('id') : 'null';\n attributes(this.inputElement, { 'aria-activedescendant': '' + id });\n }\n else {\n attributes(this.inputElement, { 'aria-activedescendant': 'null' });\n }\n }\n else {\n if (this.isCalendar()) {\n Input.addAttributes({ 'aria-expanded': 'true' }, this.inputElement);\n attributes(this.inputElement, { 'aria-activedescendant': '' + this.setActiveDescendant() });\n }\n else {\n Input.addAttributes({ 'aria-expanded': 'false' }, this.inputElement);\n attributes(this.inputElement, { 'aria-activedescendant': 'null' });\n }\n }\n }\n errorClass() {\n let dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + (+this.value));\n let isDisabledDate = this.calendarElement &&\n this.calendarElement.querySelectorAll(dateIdString)[0] &&\n this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled');\n if ((!isNullOrUndefined(this.value) && !(+new Date(+this.value).setMilliseconds(0) >= +this.min\n && +new Date(+this.value).setMilliseconds(0) <= +this.max))\n || (!this.strictMode && this.inputElement.value !== '' && isNullOrUndefined(this.value) || isDisabledDate)) {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n else {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n }\n }\n /**\n * Called internally if any of the property value changed.\n * returns void\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n let options;\n if (this.calendarMode === 'Gregorian') {\n options = { format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'value':\n this.isInteracted = false;\n this.invalidValueString = null;\n if (!this.isBlazorServer) {\n this.checkInvalidValue(newProp.value);\n }\n newProp.value = this.value;\n this.previousElementValue = this.inputElement.value;\n if (!this.isBlazorServer) {\n if (isNullOrUndefined(this.value)) {\n this.updateInputValue('');\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n this.updateInput();\n if (+this.previousDate !== +this.value) {\n this.changeTrigger(null);\n }\n }\n this.isInteracted = true;\n break;\n case 'format':\n this.checkFormat();\n this.bindInputEvent();\n if (!this.isBlazorServer) {\n this.updateInput();\n }\n break;\n case 'allowEdit':\n this.setAllowEdit();\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n this.setAriaDisabled();\n this.bindEvents();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkHtmlAttributes(true);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n if (!this.isBlazorServer) {\n this.updateInput();\n }\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'start':\n case 'depth':\n this.checkView();\n if (this.calendarElement && !this.isBlazorServer) {\n super.onPropertyChanged(newProp, oldProp);\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n this.index = this.showClearButton ? 2 : 1;\n break;\n case 'strictMode':\n this.invalidValueString = null;\n if (!this.isBlazorServer) {\n this.updateInput();\n }\n break;\n case 'width':\n this.setWidth(newProp.width);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n break;\n default:\n if (this.calendarElement && !this.isBlazorServer) {\n super.onPropertyChanged(newProp, oldProp);\n }\n break;\n }\n this.hide(null);\n }\n }\n};\n__decorate$1([\n Property(null)\n], DatePicker.prototype, \"width\", void 0);\n__decorate$1([\n Property(null)\n], DatePicker.prototype, \"value\", void 0);\n__decorate$1([\n Property(null)\n], DatePicker.prototype, \"cssClass\", void 0);\n__decorate$1([\n Property(false)\n], DatePicker.prototype, \"strictMode\", void 0);\n__decorate$1([\n Property(null)\n], DatePicker.prototype, \"format\", void 0);\n__decorate$1([\n Property(true)\n], DatePicker.prototype, \"enabled\", void 0);\n__decorate$1([\n Property({})\n], DatePicker.prototype, \"htmlAttributes\", void 0);\n__decorate$1([\n Property(null)\n], DatePicker.prototype, \"values\", void 0);\n__decorate$1([\n Property(false)\n], DatePicker.prototype, \"isMultiSelection\", void 0);\n__decorate$1([\n Property(true)\n], DatePicker.prototype, \"showClearButton\", void 0);\n__decorate$1([\n Property(true)\n], DatePicker.prototype, \"allowEdit\", void 0);\n__decorate$1([\n Property(null)\n], DatePicker.prototype, \"keyConfigs\", void 0);\n__decorate$1([\n Property(false)\n], DatePicker.prototype, \"enablePersistence\", void 0);\n__decorate$1([\n Property(1000)\n], DatePicker.prototype, \"zIndex\", void 0);\n__decorate$1([\n Property(false)\n], DatePicker.prototype, \"readonly\", void 0);\n__decorate$1([\n Property(null)\n], DatePicker.prototype, \"placeholder\", void 0);\n__decorate$1([\n Property('Never')\n], DatePicker.prototype, \"floatLabelType\", void 0);\n__decorate$1([\n Property(null)\n], DatePicker.prototype, \"serverTimezoneOffset\", void 0);\n__decorate$1([\n Property(false)\n], DatePicker.prototype, \"openOnFocus\", void 0);\n__decorate$1([\n Event()\n], DatePicker.prototype, \"open\", void 0);\n__decorate$1([\n Event()\n], DatePicker.prototype, \"cleared\", void 0);\n__decorate$1([\n Event()\n], DatePicker.prototype, \"close\", void 0);\n__decorate$1([\n Event()\n], DatePicker.prototype, \"blur\", void 0);\n__decorate$1([\n Event()\n], DatePicker.prototype, \"focus\", void 0);\n__decorate$1([\n Event()\n], DatePicker.prototype, \"created\", void 0);\n__decorate$1([\n Event()\n], DatePicker.prototype, \"destroyed\", void 0);\nDatePicker = __decorate$1([\n NotifyPropertyChanges\n], DatePicker);\n\n/**\n * Datepicker modules\n */\n\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/// \nconst DATERANGEWRAPPER = 'e-date-range-wrapper';\nconst INPUTCONTAINER$1 = 'e-input-group';\nconst DATERANGEICON = 'e-input-group-icon e-range-icon e-icons';\nconst POPUP$1 = 'e-popup';\nconst LEFTCALENDER = 'e-left-calendar';\nconst RIGHTCALENDER = 'e-right-calendar';\nconst LEFTCONTAINER = 'e-left-container';\nconst RIGHTCONTAINER = 'e-right-container';\nconst ROOT$2 = 'e-daterangepicker';\nconst LIBRARY$1 = 'e-lib';\nconst CONTROL$1 = 'e-control';\nconst ERROR$1 = 'e-error';\nconst ACTIVE$1 = 'e-active';\nconst STARTENDCONTAINER = 'e-start-end';\nconst STARTDATE = 'e-start-date';\nconst ENDDATE = 'e-end-date';\nconst STARTBUTTON = 'e-start-btn';\nconst INPUTFOCUS$1 = 'e-input-focus';\nconst ENDBUTTON = 'e-end-btn';\nconst RANGEHOVER = 'e-range-hover';\nconst OTHERMONTH$2 = 'e-other-month';\nconst STARTLABEL = 'e-start-label';\nconst ENDLABEL = 'e-end-label';\nconst DISABLED$2 = 'e-disabled';\nconst SELECTED$3 = 'e-selected';\nconst CALENDAR = 'e-calendar';\nconst NEXTICON$1 = 'e-next';\nconst PREVICON$1 = 'e-prev';\nconst HEADER$1 = 'e-header';\nconst TITLE$1 = 'e-title';\nconst ICONCONTAINER$1 = 'e-icon-container';\nconst RANGECONTAINER = 'e-date-range-container';\nconst RANGEHEADER = 'e-range-header';\nconst PRESETS = 'e-presets';\nconst FOOTER$1 = 'e-footer';\nconst RANGEBORDER = 'e-range-border';\nconst TODAY$2 = 'e-today';\nconst FOCUSDATE = 'e-focused-date';\nconst CONTENT$1 = 'e-content';\nconst DAYSPAN = 'e-day-span';\nconst WEEKNUMBER$2 = 'e-week-number';\nconst DATEDISABLED = 'e-date-disabled';\nconst ICONDISABLED = 'e-icon-disabled';\nconst CALENDARCONTAINER = 'e-calendar-container';\nconst SEPARATOR = 'e-separator';\nconst APPLY = 'e-apply';\nconst CANCEL = 'e-cancel';\nconst DEVICE$1 = 'e-device';\nconst OVERLAY$2 = 'e-overlay';\nconst CHANGEICON = 'e-change-icon e-icons';\nconst LISTCLASS = 'e-list-item';\nconst RTL$2 = 'e-rtl';\nconst HOVER = 'e-hover';\nconst OVERFLOW$1 = 'e-range-overflow';\nconst OFFSETVALUE$1 = 4;\nconst PRIMARY$1 = 'e-primary';\nconst FLAT$1 = 'e-flat';\nconst CSS$1 = 'e-css';\nconst ZOOMIN$1 = 'e-zoomin';\nconst NONEDITABLE = 'e-non-edit';\nconst DAYHEADERLONG$1 = 'e-daterange-day-header-lg';\nconst HIDDENELEMENT = 'e-daterange-hidden';\nconst wrapperAttr = ['title', 'class', 'style'];\nclass Presets extends ChildProperty {\n}\n__decorate$2([\n Property()\n], Presets.prototype, \"label\", void 0);\n__decorate$2([\n Property()\n], Presets.prototype, \"start\", void 0);\n__decorate$2([\n Property()\n], Presets.prototype, \"end\", void 0);\n/**\n * Represents the DateRangePicker component that allows user to select the date range from the calendar\n * or entering the range through the input element.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nlet DateRangePicker = class DateRangePicker extends CalendarBase {\n /**\n * Constructor for creating the widget\n */\n constructor(options, element) {\n super(options, element);\n this.isCustomRange = false;\n this.isCustomWindow = false;\n this.presetsItem = [];\n this.liCollections = [];\n this.previousEleValue = '';\n this.isKeyPopup = false;\n this.dateDisabled = false;\n this.isRangeIconClicked = false;\n this.isMaxDaysClicked = false;\n this.disabledDays = [];\n this.preventBlur = false;\n this.preventFocus = false;\n this.invalidValueString = null;\n this.dateRangeOptions = options;\n }\n /**\n * To Initialize the control rendering.\n * @return void\n * @private\n */\n render() {\n this.initialize();\n this.setProperties({ startDate: this.startValue }, true);\n this.setProperties({ endDate: this.endValue }, true);\n this.setModelValue();\n this.setDataAttribute(false);\n this.renderComplete();\n }\n /**\n * Initialize the event handler\n * @returns void\n * @private\n */\n preRender() {\n this.keyInputConfigs = {\n altDownArrow: 'alt+downarrow',\n escape: 'escape',\n enter: 'enter',\n tab: 'tab',\n altRightArrow: 'alt+rightarrow',\n altLeftArrow: 'alt+leftarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n spacebar: 'space'\n };\n this.defaultConstant = {\n placeholder: this.placeholder,\n startLabel: 'Start Date',\n endLabel: 'End Date',\n customRange: 'Custom Range',\n applyText: 'Apply',\n cancelText: 'Cancel',\n selectedDays: 'Selected Days',\n days: 'days'\n };\n /**\n * Mobile View\n */\n this.isMobile = window.matchMedia('(max-width:550px)').matches;\n this.inputElement = this.element;\n this.angularTag = null;\n if (this.element.tagName === 'EJS-DATERANGEPICKER') {\n this.angularTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [ROOT$2, CONTROL$1, LIBRARY$1]);\n this.updateHtmlAttributeToElement();\n if (this.element.getAttribute('id')) {\n if (this.angularTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n this.element.id = getUniqueID('ej2-datetimepicker');\n if (this.angularTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n this.checkInvalidRange(this.value);\n if (!this.invalidValueString && (typeof (this.value) === 'string')) {\n let rangeArray = this.value.split(' ' + this.separator + ' ');\n this.value = [new Date(rangeArray[0]), new Date(rangeArray[1])];\n }\n this.initProperty();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n super.preRender();\n this.navNextFunction = this.navNextMonth.bind(this);\n this.navPrevFunction = this.navPrevMonth.bind(this);\n this.deviceNavNextFunction = this.deviceNavNext.bind(this);\n this.deviceNavPrevFunction = this.deviceNavPrevious.bind(this);\n this.initStartDate = this.checkDateValue(this.startValue);\n this.initEndDate = this.checkDateValue(this.endValue);\n this.formElement = closest(this.element, 'form');\n }\n ;\n updateValue() {\n let dateOptions = { format: this.formatString, type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' };\n if (this.value && this.value.length > 0) {\n if (this.value[0] instanceof Date && !isNaN(+this.value[0])) {\n this.setProperties({ startDate: this.value[0] }, true);\n this.startValue = this.value[0];\n }\n else if (typeof this.value[0] === 'string') {\n if (+this.value[0] === 0 || isNaN(+(new Date(this.checkValue(this.value[0]))))) {\n this.startValue = null;\n this.setValue();\n }\n else {\n this.setProperties({ startDate: new Date(this.checkValue(this.value[0])) }, true);\n this.startValue = new Date(this.checkValue(this.value[0]));\n }\n }\n else {\n this.startValue = null;\n this.setValue();\n }\n if (this.value[1] instanceof Date && !isNaN(+this.value[1])) {\n this.setProperties({ endDate: this.value[1] }, true);\n this.endValue = this.value[1];\n }\n else if (typeof this.value[1] === 'string') {\n if (+this.value[0] === 0 || isNaN(+(new Date(this.checkValue(this.value[0]))))) {\n this.setProperties({ endDate: null }, true);\n this.endValue = null;\n this.setValue();\n }\n else {\n this.setProperties({ endDate: new Date(this.checkValue(this.value[1])) }, true);\n this.endValue = new Date(this.checkValue(this.value[1]));\n this.setValue();\n }\n }\n else {\n this.setProperties({ endDate: null }, true);\n this.endValue = null;\n this.setValue();\n }\n }\n else if (this.value && this.value.start) {\n if (this.value.start instanceof Date && !isNaN(+this.value.start)) {\n this.setProperties({ startDate: this.value.start }, true);\n this.startValue = this.value.start;\n }\n else if (typeof this.value.start === 'string') {\n this.setProperties({ startDate: new Date(this.checkValue(this.value.start)) }, true);\n this.startValue = new Date(this.checkValue(this.value.start));\n }\n else {\n this.startValue = null;\n this.setValue();\n }\n if (this.value.end instanceof Date && !isNaN(+this.value.end)) {\n this.setProperties({ endDate: this.value.end }, true);\n this.endValue = this.value.end;\n }\n else if (typeof this.value.end === 'string') {\n this.setProperties({ endDate: new Date(this.checkValue(this.value.end)) }, true);\n this.endValue = new Date(this.checkValue(this.value.end));\n this.setValue();\n }\n else {\n this.setProperties({ endDate: null }, true);\n this.endValue = null;\n this.setValue();\n }\n }\n else if (isNullOrUndefined(this.value)) {\n this.endValue = this.checkDateValue(new Date(this.checkValue(this.endDate)));\n this.startValue = this.checkDateValue(new Date(this.checkValue(this.startDate)));\n this.setValue();\n }\n }\n initProperty() {\n this.globalize = new Internationalization(this.locale);\n this.checkFormat();\n this.checkView();\n if (isNullOrUndefined(this.firstDayOfWeek) || this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: this.globalize.getFirstDayOfWeek() }, true);\n }\n this.updateValue();\n }\n checkFormat() {\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (this.format.skeleton !== '' && !isNullOrUndefined(this.format.skeleton)) {\n let skeletonString = this.format.skeleton;\n this.formatString = this.globalize.getDatePattern({ skeleton: skeletonString, type: 'date' });\n }\n else {\n this.formatString = null;\n }\n }\n else {\n this.formatString = null;\n }\n }\n initialize() {\n if (this.angularTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.checkHtmlAttributes(false);\n merge(this.defaultKeyConfigs, { shiftTab: 'shift+tab' });\n let start = this.checkDateValue(new Date(this.checkValue(this.startValue)));\n this.setProperties({ startDate: start }, true); // persist the value propeerty.\n this.setProperties({ endValue: this.checkDateValue(new Date(this.checkValue(this.endValue))) }, true);\n this.setValue();\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(this.max))) }, true);\n this.l10n = new L10n('daterangepicker', this.defaultConstant, this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n this.processPresets();\n this.createInput();\n this.updateHtmlAttributeToWrapper();\n this.setRangeAllowEdit();\n this.bindEvents();\n }\n setDataAttribute(isDynamic) {\n let attributes$$1 = {};\n if (!isDynamic) {\n for (let i = 0; i < this.element.attributes.length; i++) {\n attributes$$1[this.element.attributes[i].name] = this.element.getAttribute(this.element.attributes[i].name);\n }\n }\n else {\n attributes$$1 = this.htmlAttributes;\n }\n for (let pro of Object.keys(attributes$$1)) {\n if (pro.indexOf('data') === 0) {\n this.firstHiddenChild.setAttribute(pro, attributes$$1[pro]);\n this.secondHiddenChild.setAttribute(pro, attributes$$1[pro]);\n }\n }\n }\n setRangeAllowEdit() {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.updateClearIconState();\n }\n updateClearIconState() {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [NONEDITABLE]);\n }\n else {\n addClass([this.inputWrapper.container], [NONEDITABLE]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [NONEDITABLE]);\n }\n }\n validationAttribute(element, input) {\n let name = element.getAttribute('name') ? element.getAttribute('name') : element.getAttribute('id');\n input.setAttribute('name', name);\n element.removeAttribute('name');\n let attributes$$1 = ['required', 'aria-required', 'form'];\n for (let i = 0; i < attributes$$1.length; i++) {\n if (isNullOrUndefined(element.getAttribute(attributes$$1[i]))) {\n continue;\n }\n let attr = element.getAttribute(attributes$$1[i]);\n input.setAttribute(attributes$$1[i], attr);\n element.removeAttribute(attributes$$1[i]);\n }\n }\n updateHtmlAttributeToWrapper() {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (let key of Object.keys(this.htmlAttributes)) {\n if (wrapperAttr.indexOf(key) > -1) {\n if (key === 'class') {\n let updatedClassValue = (this.htmlAttributes[key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.inputWrapper.container], updatedClassValue.split(' '));\n }\n }\n else if (key === 'style') {\n let dateRangeStyle = this.inputWrapper.container.getAttribute(key);\n dateRangeStyle = !isNullOrUndefined(dateRangeStyle) ? (dateRangeStyle + this.htmlAttributes[key]) :\n this.htmlAttributes[key];\n this.inputWrapper.container.setAttribute(key, dateRangeStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n }\n updateHtmlAttributeToElement() {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (let key of Object.keys(this.htmlAttributes)) {\n if (wrapperAttr.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n updateCssClass(cssNewClass, cssOldClass) {\n if (!isNullOrUndefined(cssOldClass)) {\n cssOldClass = (cssOldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(cssNewClass)) {\n cssNewClass = (cssNewClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(cssNewClass, [this.inputWrapper.container], cssOldClass);\n if (this.popupWrapper) {\n Input.setCssClass(cssNewClass, [this.popupWrapper], cssOldClass);\n }\n }\n processPresets() {\n this.presetsItem = [];\n let i = 0;\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label)) {\n for (let range of this.presets) {\n let id = range.label.replace(/\\s+/g, '') + '_' + (++i);\n if (typeof range.end === 'string') {\n this.presetsItem.push({\n id: id, text: range.label, end: new Date(this.checkValue(range.end)), start: new Date(this.checkValue(range.start))\n });\n }\n else {\n this.presetsItem.push({ id: id, text: range.label, start: range.start, end: range.end });\n }\n }\n let startDate = isNullOrUndefined(this.startValue) ? null : new Date(+this.startValue);\n let endDate = isNullOrUndefined(this.endValue) ? null : new Date(+this.endValue);\n this.presetsItem.push({ id: 'custom_range', text: this.l10n.getConstant('customRange'), start: startDate, end: endDate });\n if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n this.isCustomRange = true;\n this.activeIndex = this.presetsItem.length - 1;\n }\n }\n }\n bindEvents() {\n if (this.enabled) {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.rangeIconHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n if (!this.isMobile) {\n this.keyInputConfigs = extend(this.keyInputConfigs, this.keyConfigs);\n this.inputKeyboardModule = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputHandler.bind(this),\n keyConfigs: this.keyInputConfigs\n });\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.rangeIconHandler);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler);\n }\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.inputKeyboardModule)) {\n this.inputKeyboardModule.destroy();\n }\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n this.inputElement.tabIndex = -1;\n }\n }\n updateHiddenInput() {\n if (this.firstHiddenChild && this.secondHiddenChild) {\n let format = { type: 'datetime', skeleton: isBlazor() ? 'd' : 'yMd' };\n if (typeof this.startDate === 'string') {\n this.startDate = this.globalize.parseDate(this.startDate, format);\n }\n if (typeof this.endDate === 'string') {\n this.endDate = this.globalize.parseDate(this.endDate, format);\n }\n this.firstHiddenChild.value = (this.startDate && this.globalize.formatDate(this.startDate, format))\n || (this.inputElement.value);\n this.secondHiddenChild.value = (this.endDate && this.globalize.formatDate(this.endDate, format)) ||\n (this.inputElement.value);\n this.dispatchEvent(this.firstHiddenChild, 'focusout');\n this.dispatchEvent(this.firstHiddenChild, 'change');\n }\n }\n inputChangeHandler(e) {\n e.stopPropagation();\n this.updateHiddenInput();\n }\n bindClearEvent() {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n }\n resetHandler(e) {\n this.valueType = this.value;\n e.preventDefault();\n this.clear();\n let clearedArgs = {\n event: e\n };\n this.setProperties({ endDate: this.checkDateValue(this.endValue) }, true);\n this.setProperties({ startDate: this.checkDateValue(this.startValue) }, true);\n this.trigger('cleared', clearedArgs);\n this.changeTrigger(e);\n this.clearRange();\n this.hide(e);\n }\n restoreValue() {\n this.previousEleValue = this.inputElement.value;\n this.previousStartValue = this.startValue;\n this.previousEndValue = this.endValue;\n this.valueType = null;\n this.initStartDate = this.checkDateValue(this.startValue);\n this.initEndDate = this.checkDateValue(this.endValue);\n this.setValue();\n this.setModelValue();\n }\n formResetHandler(e) {\n if (this.formElement && (e.target === this.formElement) && !this.inputElement.disabled) {\n let val = this.inputElement.getAttribute('value');\n if (!isNullOrUndefined(this.startCopy)) {\n if (!isNullOrUndefined(this.value) && !isNullOrUndefined(this.value.start)) {\n this.setProperties({ value: { start: this.startCopy, end: this.endCopy } }, true);\n this.startValue = this.value.start;\n this.endValue = this.value.end;\n }\n else {\n this.setProperties({ value: [this.startCopy, this.endCopy] }, true);\n this.startValue = this.value[0];\n this.endValue = this.value[1];\n }\n this.setProperties({ startDate: this.startValue, endDate: this.endValue }, true);\n }\n else {\n this.setProperties({ value: null, startDate: null, endDate: null }, true);\n this.startValue = this.endValue = null;\n }\n if (this.element.tagName === 'EJS-DATERANGEPICKER') {\n this.setProperties({ value: null, startDate: null, endDate: null }, true);\n val = '';\n this.startValue = this.endValue = null;\n this.inputElement.setAttribute('value', '');\n }\n this.restoreValue();\n if (this.inputElement) {\n Input.setValue(val, this.inputElement, this.floatLabelType, this.showClearButton);\n this.errorClass();\n }\n }\n }\n clear() {\n if (this.startValue !== null) {\n this.startValue = null;\n }\n if (this.endValue !== null) {\n this.endValue = null;\n }\n if (this.value && this.value.start) {\n this.setProperties({ value: { start: null, end: null } }, true);\n }\n if (this.value !== null && this.value.length > 0) {\n this.setProperties({ value: null }, true);\n }\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n if (!(isNullOrUndefined(this.applyButton))) {\n this.applyButton.disabled = this.applyButton.element.disabled = true;\n }\n this.removeSelection();\n }\n rangeIconHandler(e) {\n if (this.isMobile) {\n this.inputElement.setAttribute('readonly', '');\n }\n e.preventDefault();\n this.targetElement = null;\n if (this.isPopupOpen() && document.body.contains(this.popupObj.element)) {\n this.applyFunction(e);\n }\n else {\n this.isRangeIconClicked = true;\n this.inputWrapper.container.children[0].focus();\n this.show(null, e);\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.leftCalendar)) {\n this.isRangeIconClicked = false;\n this.calendarFocus();\n this.isRangeIconClicked = true;\n }\n }\n addClass([this.inputWrapper.container], [INPUTFOCUS$1]);\n }\n }\n checkHtmlAttributes(isDynamic) {\n this.globalize = new Internationalization(this.locale);\n let attributes$$1 = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['startDate', 'endDate', 'minDays', 'maxDays', 'min', 'max', 'disabled', 'readonly', 'style', 'name', 'placeholder',\n 'type', 'value'];\n let format = { format: this.formatString, type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' };\n for (let prop of attributes$$1) {\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.dateRangeOptions) || (this.dateRangeOptions['enabled'] === undefined)) || isDynamic) {\n let disabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ enabled: !disabled }, !isDynamic);\n }\n break;\n case 'readonly':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.dateRangeOptions) || (this.dateRangeOptions['readonly'] === undefined)) || isDynamic) {\n let readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === 'true' || this.inputElement.getAttribute(prop) === '' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.dateRangeOptions) || (this.dateRangeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'value':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.dateRangeOptions) || (this.dateRangeOptions['value'] === undefined)) || isDynamic) {\n let value = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, value, {}), !isDynamic);\n }\n break;\n case 'style':\n this.inputElement.setAttribute('style', '' + this.inputElement.getAttribute(prop));\n break;\n case 'min':\n if ((isNullOrUndefined(this.min) || +this.min === +new Date(1900, 0, 1)) || isDynamic) {\n let dateValue = this.globalize.parseDate(this.inputElement.getAttribute(prop), format);\n this.setProperties(setValue(prop, dateValue, {}), !isDynamic);\n }\n break;\n case 'name':\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute(prop));\n break;\n case 'max':\n if ((isNullOrUndefined(this.max) || +this.max === +new Date(2099, 11, 31)) || isDynamic) {\n let dateValue = this.globalize.parseDate(this.inputElement.getAttribute(prop), format);\n this.setProperties(setValue(prop, dateValue, {}), !isDynamic);\n }\n break;\n case 'startDate':\n if (isNullOrUndefined(this.startDate)) {\n let dateValue = this.globalize.parseDate(this.inputElement.getAttribute(prop), format);\n this.startValue = dateValue;\n this.setValue();\n }\n break;\n case 'endDate':\n if (isNullOrUndefined(this.endDate)) {\n let dateValue = this.globalize.parseDate(this.inputElement.getAttribute(prop), format);\n this.endValue = dateValue;\n this.setValue();\n }\n break;\n case 'minDays':\n if (isNullOrUndefined(this.minDays)) {\n this.setProperties(setValue(prop, parseInt(this.inputElement.getAttribute(prop), 10), {}), true);\n }\n break;\n case 'maxDays':\n if (isNullOrUndefined(this.maxDays)) {\n this.setProperties(setValue(prop, parseInt(this.inputElement.getAttribute(prop), 10), {}), true);\n }\n break;\n case 'type':\n if (this.inputElement.getAttribute(prop) !== 'text') {\n this.inputElement.setAttribute('type', 'text');\n }\n break;\n }\n }\n }\n }\n createPopup() {\n for (let i = 0; i < this.presetsItem.length; i++) {\n if ((i !== (this.presetsItem.length - 1)) && this.presetsItem[i].id === 'custom_range') {\n this.presetsItem.splice(i, 1);\n }\n }\n this.activeIndex = this.presetsItem.length - 1;\n this.isCustomRange = true;\n for (let i = 0; i <= this.presetsItem.length - 2; i++) {\n let startDate = this.presetsItem[i].start;\n let endDate = this.presetsItem[i].end;\n if (this.startValue && this.endValue) {\n if ((+startDate.setMilliseconds(0) === +this.startValue.setMilliseconds(0)) &&\n (+endDate.setMilliseconds(0) === +this.endValue.setMilliseconds(0))) {\n this.activeIndex = i;\n this.isCustomRange = false;\n }\n }\n }\n this.popupWrapper = createElement('div', { id: this.element.id + '_popup', className: ROOT$2 + ' ' + POPUP$1 });\n this.adjustLongHeaderWidth();\n let isPreset = (!this.isCustomRange || this.isMobile);\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label) && isPreset) {\n this.isCustomWindow = false;\n this.createPresets();\n this.listRippleEffect();\n this.renderPopup();\n }\n else {\n this.isCustomWindow = true;\n this.renderControl();\n }\n }\n renderControl() {\n this.createControl();\n this.bindCalendarEvents();\n this.updateRange((this.isMobile ? [this.calendarElement] : [this.leftCalendar, this.rightCalendar]));\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n this.disabledDateRender();\n }\n this.updateHeader();\n }\n clearCalendarEvents() {\n EventHandler.clearEvents(this.leftCalPrevIcon);\n EventHandler.clearEvents(this.leftCalNextIcon);\n EventHandler.clearEvents(this.rightCalPrevIcon);\n EventHandler.clearEvents(this.rightCalNextIcon);\n }\n updateNavIcons() {\n super.iconHandler();\n }\n calendarIconEvent() {\n this.clearCalendarEvents();\n if (this.leftCalPrevIcon && !this.leftCalPrevIcon.classList.contains(DISABLED$2)) {\n EventHandler.add(this.leftCalPrevIcon, 'mousedown', this.navPrevFunction);\n }\n if (this.leftCalNextIcon && !this.leftCalNextIcon.classList.contains(DISABLED$2)) {\n EventHandler.add(this.leftCalNextIcon, 'mousedown', this.navNextFunction);\n }\n if (this.rightCalPrevIcon && !this.rightCalPrevIcon.classList.contains(DISABLED$2)) {\n EventHandler.add(this.rightCalPrevIcon, 'mousedown', this.navPrevFunction);\n }\n if (this.rightCalNextIcon && !this.rightCalNextIcon.classList.contains(DISABLED$2)) {\n EventHandler.add(this.rightCalNextIcon, 'mousedown', this.navNextFunction);\n }\n }\n bindCalendarEvents() {\n if (!this.isMobile) {\n this.updateNavIcons();\n this.calendarIconEvent();\n this.calendarIconRipple();\n this.headerTitleElement = this.popupObj.element.querySelector('.' + RIGHTCALENDER + ' .' + HEADER$1 + ' .' + TITLE$1);\n this.headerTitleElement = this.popupObj.element.querySelector('.' + LEFTCALENDER + ' .' + HEADER$1 + ' .' + TITLE$1);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.leftKeyboardModule = new KeyboardEvents(this.leftCalendar, {\n eventName: 'keydown',\n keyAction: this.keyInputHandler.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n this.rightKeyboardModule = new KeyboardEvents(this.rightCalendar, {\n eventName: 'keydown',\n keyAction: this.keyInputHandler.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n else {\n this.deviceCalendarEvent();\n EventHandler.add(this.startButton.element, 'click', this.deviceHeaderClick, this);\n EventHandler.add(this.endButton.element, 'click', this.deviceHeaderClick, this);\n }\n if (this.start === this.depth) {\n this.bindCalendarCellEvents();\n }\n this.removeFocusedDate();\n }\n calendarIconRipple() {\n rippleEffect(this.leftCalPrevIcon, { selector: '.e-prev', duration: 400, isCenterRipple: true });\n rippleEffect(this.leftCalNextIcon, { selector: '.e-next', duration: 400, isCenterRipple: true });\n rippleEffect(this.rightCalPrevIcon, { selector: '.e-prev', duration: 400, isCenterRipple: true });\n rippleEffect(this.rightCalNextIcon, { selector: '.e-next', duration: 400, isCenterRipple: true });\n }\n deviceCalendarEvent() {\n EventHandler.clearEvents(this.nextIcon);\n EventHandler.clearEvents(this.previousIcon);\n rippleEffect(this.nextIcon, { selector: '.e-prev', duration: 400, isCenterRipple: true });\n rippleEffect(this.previousIcon, { selector: '.e-next', duration: 400, isCenterRipple: true });\n if (this.nextIcon && !this.nextIcon.classList.contains(DISABLED$2)) {\n EventHandler.add(this.nextIcon, 'mousedown', this.deviceNavNextFunction);\n }\n if (this.previousIcon && !this.previousIcon.classList.contains(DISABLED$2)) {\n EventHandler.add(this.previousIcon, 'mousedown', this.deviceNavPrevFunction);\n }\n }\n deviceNavNext(e) {\n let calendar = closest(e.target, '.' + CALENDAR);\n this.updateDeviceCalendar(calendar);\n this.navigateNext(e);\n this.deviceNavigation();\n }\n deviceNavPrevious(e) {\n let calendar = closest(e.target, '.' + CALENDAR);\n this.updateDeviceCalendar(calendar);\n this.navigatePrevious(e);\n this.deviceNavigation();\n }\n updateDeviceCalendar(calendar) {\n if (calendar) {\n this.previousIcon = calendar.querySelector('.' + PREVICON$1);\n this.nextIcon = calendar.querySelector('.' + NEXTICON$1);\n this.calendarElement = calendar;\n this.deviceCalendar = calendar;\n this.contentElement = calendar.querySelector('.' + CONTENT$1);\n this.tableBodyElement = select('.' + CONTENT$1 + ' tbody', calendar);\n this.table = calendar.querySelector('.' + CONTENT$1).getElementsByTagName('table')[0];\n this.headerTitleElement = calendar.querySelector('.' + HEADER$1 + ' .' + TITLE$1);\n this.headerElement = calendar.querySelector('.' + HEADER$1);\n }\n }\n deviceHeaderClick(event) {\n let element = event.currentTarget;\n if (element.classList.contains(STARTBUTTON) && !isNullOrUndefined(this.startValue)) {\n this.endButton.element.classList.remove(ACTIVE$1);\n this.startButton.element.classList.add(ACTIVE$1);\n let calendar = this.popupObj.element.querySelector('.' + CALENDAR);\n this.updateDeviceCalendar(calendar);\n if (isNullOrUndefined(this.calendarElement.querySelector('.' + STARTDATE + ':not(.e-other-month)'))) {\n this.currentDate = new Date(+this.startValue);\n remove(this.tableBodyElement);\n this.createContentBody();\n this.deviceNavigation();\n }\n this.removeClassDisabled();\n }\n else if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n this.startButton.element.classList.remove(ACTIVE$1);\n this.endButton.element.classList.add(ACTIVE$1);\n let calendar = this.popupObj.element.querySelector('.' + CALENDAR);\n this.updateDeviceCalendar(calendar);\n if (isNullOrUndefined(this.calendarElement.querySelector('.' + ENDDATE + ':not(.e-other-month)'))) {\n this.currentDate = new Date(+this.endValue);\n remove(this.tableBodyElement);\n this.createContentBody();\n this.deviceNavigation();\n }\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + CALENDAR));\n this.selectableDates();\n }\n }\n inputFocusHandler() {\n this.preventBlur = false;\n let focusArguments = {\n model: (isBlazor() && this.isServerRendered) ? null : this\n };\n if (!this.preventFocus) {\n this.preventFocus = true;\n this.trigger('focus', focusArguments);\n }\n this.updateClearIconState();\n this.updateHiddenInput();\n if (this.openOnFocus) {\n this.show();\n }\n }\n inputBlurHandler(e) {\n if (!this.preventBlur) {\n let value = this.inputElement.value;\n if (!isNullOrUndefined(this.presetsItem)) {\n if (this.presetsItem.length > 0 && this.previousEleValue !== this.inputElement.value) {\n this.activeIndex = this.presetsItem.length - 1;\n this.isCustomRange = true;\n }\n }\n if (!isNullOrUndefined(value) && value.trim() !== '') {\n let range = value.split(' ' + this.separator + ' ');\n if (range.length > 1) {\n this.invalidValueString = null;\n let dateOptions = { format: this.formatString, type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' };\n let startDate = this.globalize.parseDate(range[0].trim(), dateOptions);\n let endDate = this.globalize.parseDate(range[1].trim(), dateOptions);\n if (!isNullOrUndefined(startDate) && !isNaN(+startDate) && !isNullOrUndefined(endDate) && !isNaN(+endDate)) {\n let prevStartVal = this.startValue;\n this.startValue = startDate;\n let prevEndVal = this.endValue;\n this.endValue = endDate;\n this.setValue();\n this.refreshControl();\n if (value !== this.previousEleValue) {\n this.changeTrigger(e);\n }\n if (!this.preventBlur && document.activeElement !== this.inputElement) {\n this.preventFocus = false;\n let blurArguments = {\n model: (isBlazor() && this.isServerRendered) ? null : this\n };\n this.trigger('blur', blurArguments);\n }\n this.updateHiddenInput();\n // For Mobile mode, when a value is present and choose another range and click on console\n // when popup is open, two startvalues and end values are updated in the popup.\n if (this.isMobile && this.isPopupOpen()) {\n this.startValue = prevStartVal;\n this.endValue = prevEndVal;\n }\n return;\n }\n else {\n if (!this.strictMode) {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n }\n }\n else {\n if (!this.strictMode) {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n }\n }\n if (!this.strictMode) {\n if (isNullOrUndefined(this.popupObj)) {\n this.currentDate = null;\n }\n this.previousStartValue = this.previousEndValue = null;\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n else {\n if (!isNullOrUndefined(value) && value.trim() === '') {\n this.startValue = null;\n this.endValue = null;\n }\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n this.updateInput();\n }\n this.errorClass();\n this.changeTrigger(e);\n if (!this.preventBlur && document.activeElement !== this.inputElement) {\n this.preventFocus = false;\n let blurArguments = {\n model: (isBlazor() && this.isServerRendered) ? null : this\n };\n this.trigger('blur', blurArguments);\n }\n }\n this.updateHiddenInput();\n }\n clearRange() {\n this.previousStartValue = this.previousEndValue = null;\n this.currentDate = null;\n }\n errorClass() {\n let inputStr = this.inputElement.value.trim();\n if (((isNullOrUndefined(this.endValue) && isNullOrUndefined(this.startValue) && inputStr !== '') ||\n ((!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)\n || (!isNullOrUndefined(this.endValue) && +this.endValue > +this.max))\n || ((this.startValue && this.isDateDisabled(this.startValue))\n || (this.endValue && this.isDateDisabled(this.endValue)))) && inputStr !== '') {\n addClass([this.inputWrapper.container], ERROR$1);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n else {\n if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], ERROR$1);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n }\n }\n }\n keyCalendarUpdate(isLeftCalendar, ele) {\n this.removeFocusedDate();\n if (isLeftCalendar) {\n this.leftCalCurrentDate = new Date(+this.currentDate);\n ele = this.leftCalendar;\n }\n else {\n this.rightCalCurrentDate = new Date(+this.currentDate);\n ele = this.rightCalendar;\n }\n this.updateCalendarElement(ele);\n this.table.focus();\n return ele;\n }\n navInCalendar(e, isLeftCalendar, leftLimit, rightLimit, ele) {\n let view = this.getViewNumber(this.currentView());\n let date;\n let min = this.min;\n let max;\n if (!isNullOrUndefined(this.maxDays) && this.isMaxDaysClicked && !isNullOrUndefined(this.startValue)) {\n max = new Date(new Date(+this.startValue).setDate(this.startValue.getDate() + (this.maxDays - 1)));\n }\n else {\n max = this.max;\n }\n switch (e.action) {\n case 'moveRight':\n date = new Date(+this.currentDate);\n this.addDay(date, 1, e, max, min);\n if (isLeftCalendar && +date === +rightLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n this.KeyboardNavigate(1, view, e, max, min);\n this.keyNavigation(ele, e);\n break;\n case 'moveLeft':\n date = new Date(+this.currentDate);\n this.addDay(date, -1, e, max, min);\n if (!isLeftCalendar) {\n if (+date === +leftLimit) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n }\n this.KeyboardNavigate(-1, view, e, max, min);\n this.keyNavigation(ele, e);\n break;\n case 'moveUp':\n if (view === 0) {\n date = new Date(+this.currentDate);\n this.addDay(date, -7, e, max, min);\n if (+date <= +leftLimit && !isLeftCalendar) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n this.KeyboardNavigate(-7, view, e, max, min);\n }\n else {\n this.KeyboardNavigate(-4, view, e, this.max, this.min); // move the current year to the previous four days.\n }\n this.keyNavigation(ele, e);\n break;\n case 'moveDown':\n if (view === 0) {\n date = new Date(+this.currentDate);\n this.addDay(date, 7, e, max, min);\n if (isLeftCalendar && +date >= +rightLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n this.KeyboardNavigate(7, view, e, max, min);\n }\n else {\n this.KeyboardNavigate(4, view, e, this.max, this.min);\n }\n this.keyNavigation(ele, e);\n break;\n case 'home':\n this.currentDate = this.firstDay(this.currentDate);\n remove(this.tableBodyElement);\n (view === 0) ? this.renderMonths(e) : ((view === 1) ? this.renderYears(e) : this.renderDecades(e));\n this.keyNavigation(ele, e);\n break;\n case 'end':\n this.currentDate = this.lastDay(this.currentDate, view);\n remove(this.tableBodyElement);\n (view === 0) ? this.renderMonths(e) : ((view === 1) ? this.renderYears(e) : this.renderDecades(e));\n this.keyNavigation(ele, e);\n break;\n }\n }\n // tslint:disable-next-line:max-func-body-length\n keyInputHandler(e, value) {\n let date;\n let view = this.getViewNumber(this.currentView());\n let rightDateLimit = new Date(this.rightCalCurrentDate.getFullYear(), this.rightCalCurrentDate.getMonth(), 1);\n let leftDateLimit = new Date(this.leftCalCurrentDate.getFullYear(), this.leftCalCurrentDate.getMonth() + 1, 0);\n let ele = closest(e.target, '.' + RIGHTCALENDER);\n ele = isNullOrUndefined(ele) ? this.leftCalendar : ele;\n let isLeftCalendar = ele.classList.contains(LEFTCALENDER);\n this.updateCalendarElement(ele);\n let selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n let focusedDate = ele.querySelector('tr td.' + FOCUSDATE);\n let startDate = ele.querySelector('tr td.' + STARTDATE);\n let endDate = ele.querySelector('tr td.' + ENDDATE);\n let depthValue = this.getViewNumber(this.depth);\n let levelRestrict = (view === depthValue && this.getViewNumber(this.start) >= depthValue);\n let leftCalendar = closest(e.target, '.' + LEFTCALENDER);\n let rightCalendar = closest(e.target, '.' + RIGHTCALENDER);\n let presetElement = closest(e.target, '.' + PRESETS);\n if (!isNullOrUndefined(focusedDate)) {\n this.currentDate = this.currentDate;\n }\n else if (!isNullOrUndefined(endDate) && !this.dateDisabled) {\n this.currentDate = new Date(+this.endValue);\n }\n else if (!isNullOrUndefined(startDate) && !this.dateDisabled) {\n this.currentDate = new Date(+this.startValue);\n }\n else if (!this.dateDisabled) {\n this.currentDate.setDate(1);\n }\n this.effect = '';\n switch (e.action) {\n case 'altUpArrow':\n if (this.isPopupOpen()) {\n this.hide(e);\n this.preventFocus = true;\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS$1]);\n }\n break;\n case 'select':\n if (levelRestrict) {\n let element = !isNullOrUndefined(focusedDate) ? focusedDate : startDate;\n if (!isNullOrUndefined(element) && !element.classList.contains(DISABLED$2)) {\n this.selectRange(null, (element));\n }\n }\n else {\n if (!isNullOrUndefined(selectedDate) && !levelRestrict || !isNullOrUndefined(focusedDate)) {\n if (!isNullOrUndefined(this.value)) {\n if (this.calendarElement.classList.contains(LEFTCALENDER)) {\n value = this.startDate;\n }\n else {\n value = this.endDate;\n }\n }\n this.controlDown = e;\n this.contentClick(null, --view, (focusedDate || selectedDate), value);\n }\n }\n e.preventDefault();\n break;\n case 'controlHome':\n let yearDate = new Date(this.currentDate.getFullYear(), 0, 1);\n if (!isLeftCalendar && +yearDate < +leftDateLimit) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n super.navigateTo.call(this, 'Month', new Date(this.currentDate.getFullYear(), 0, 1));\n this.keyNavigation(ele, e);\n break;\n case 'altRightArrow':\n if (!isNullOrUndefined(leftCalendar)) {\n this.rightCalendar.children[1].firstElementChild.focus();\n }\n else if (!isNullOrUndefined(rightCalendar)) {\n if (!isNullOrUndefined(this.presetElement)) {\n this.presetElement.focus();\n this.removeFocusedDate();\n }\n else {\n this.cancelButton.element.focus();\n }\n }\n else {\n if (!isNullOrUndefined(presetElement)) {\n this.cancelButton.element.focus();\n }\n }\n e.preventDefault();\n break;\n case 'altLeftArrow':\n if (!isNullOrUndefined(leftCalendar)) {\n if (this.applyButton.element.disabled !== true) {\n this.applyButton.element.focus();\n }\n else {\n this.cancelButton.element.focus();\n }\n }\n else {\n if (!isNullOrUndefined(rightCalendar)) {\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n }\n e.preventDefault();\n break;\n case 'controlUp':\n if (this.calendarElement.classList.contains(LEFTCALENDER)) {\n this.calendarNavigation(e, this.calendarElement);\n }\n else {\n this.calendarNavigation(e, this.calendarElement);\n }\n e.preventDefault();\n break;\n case 'controlDown':\n if ((!isNullOrUndefined(selectedDate) || !isNullOrUndefined(focusedDate)) && !levelRestrict) {\n if (!isNullOrUndefined(this.value)) {\n if (this.calendarElement.classList.contains(LEFTCALENDER)) {\n value = this.startDate;\n }\n else {\n value = this.endDate;\n }\n }\n this.controlDown = e;\n this.contentClick(null, --view, (selectedDate || focusedDate), value);\n }\n e.preventDefault();\n break;\n case 'controlEnd':\n yearDate = new Date(this.currentDate.getFullYear(), 11, 31);\n if (isLeftCalendar && +yearDate > +rightDateLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n super.navigateTo.call(this, 'Month', new Date(this.currentDate.getFullYear(), 11, 31));\n this.keyNavigation(ele, e);\n break;\n case 'pageUp':\n date = new Date(+this.currentDate);\n this.addMonths(date, -1);\n if (!isLeftCalendar && +date <= +leftDateLimit) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n this.addMonths(this.currentDate, -1);\n super.navigateTo.call(this, 'Month', this.currentDate);\n this.keyNavigation(ele, e);\n break;\n case 'pageDown':\n date = new Date(+this.currentDate);\n this.addMonths(date, 1);\n if (isLeftCalendar && +date >= +rightDateLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n this.addMonths(this.currentDate, 1);\n super.navigateTo.call(this, 'Month', this.currentDate);\n this.keyNavigation(ele, e);\n break;\n case 'shiftPageUp':\n date = new Date(+this.currentDate);\n this.addYears(date, -1);\n if (!isLeftCalendar && +date <= +leftDateLimit) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n this.addYears(this.currentDate, -1);\n super.navigateTo.call(this, 'Month', this.currentDate);\n this.keyNavigation(ele, e);\n break;\n case 'shiftPageDown':\n date = new Date(+this.currentDate);\n this.addYears(date, 1);\n if (isLeftCalendar && +date >= +rightDateLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n this.addYears(this.currentDate, 1);\n super.navigateTo.call(this, 'Month', this.currentDate);\n this.keyNavigation(ele, e);\n break;\n case 'shiftTab':\n if (!isNullOrUndefined(this.presetElement)) {\n this.presetElement.setAttribute('tabindex', '0');\n this.presetElement.focus();\n this.removeFocusedDate();\n }\n e.preventDefault();\n break;\n case 'spacebar':\n if (this.applyButton && !this.applyButton.disabled) {\n this.applyFunction(e);\n }\n break;\n default:\n this.navInCalendar(e, isLeftCalendar, leftDateLimit, rightDateLimit, ele);\n this.checkMinMaxDays();\n }\n this.presetHeight();\n }\n keyNavigation(calendar, e) {\n this.bindCalendarCellEvents(calendar);\n if (calendar.classList.contains(LEFTCALENDER)) {\n this.leftCalCurrentDate = new Date(+this.currentDate);\n }\n else {\n this.rightCalCurrentDate = new Date(+this.currentDate);\n }\n this.updateNavIcons();\n this.calendarIconEvent();\n this.updateRange([calendar]);\n this.dateDisabled = this.isDateDisabled(this.currentDate);\n e.preventDefault();\n }\n inputHandler(e) {\n switch (e.action) {\n case 'altDownArrow':\n if (!this.isPopupOpen()) {\n if (this.inputElement.value === '') {\n this.clear();\n this.changeTrigger(e);\n this.clearRange();\n }\n this.show(null, e);\n this.isRangeIconClicked = false;\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.leftCalendar)) {\n this.calendarFocus();\n }\n }\n this.isKeyPopup = true;\n }\n break;\n case 'escape':\n if (this.isPopupOpen()) {\n this.hide(e);\n }\n break;\n case 'enter':\n if (document.activeElement === this.inputElement) {\n this.inputBlurHandler(e);\n this.hide(e);\n }\n break;\n case 'tab':\n if (document.activeElement === this.inputElement && this.isPopupOpen()) {\n this.hide(e);\n e.preventDefault();\n }\n break;\n }\n }\n bindCalendarCellEvents(calendar) {\n let tdCells;\n if (calendar) {\n tdCells = calendar.querySelectorAll('.' + CALENDAR + ' td');\n }\n else {\n tdCells = this.popupObj.element.querySelectorAll('.' + CALENDAR + ' td');\n }\n for (let cell of tdCells) {\n EventHandler.clearEvents(cell);\n let disabledCell;\n disabledCell = cell.classList.contains(DISABLED$2) || cell.classList.contains(DATEDISABLED);\n if (!disabledCell && !cell.classList.contains(WEEKNUMBER$2)) {\n if (!this.isMobile) {\n EventHandler.add(cell, 'mouseover', this.hoverSelection, this);\n }\n EventHandler.add(cell, 'mousedown', this.selectRange, this);\n }\n }\n }\n removeFocusedDate() {\n let isDate = !isNullOrUndefined(this.startValue) || !isNullOrUndefined(this.endValue);\n let focusedDate;\n focusedDate = this.popupObj.element.querySelectorAll('.' + CALENDAR + ' .' + FOCUSDATE);\n for (let ele of focusedDate) {\n let today = new Date();\n let eleDate = this.getIdValue(null, ele);\n if ((this.depth === 'Month' && this.currentView() === 'Month' &&\n (!ele.classList.contains(TODAY$2) || (ele.classList.contains(TODAY$2) && isDate)))\n || (this.depth === 'Year' && this.currentView() === 'Year' &&\n ((!this.isSameMonth(today, eleDate) && !this.isSameYear(today, eleDate)) || isDate))\n || (this.depth === 'Decade' && this.currentView() === 'Decade' &&\n (!this.isSameYear(today, eleDate) || isDate))) {\n ele.classList.remove(FOCUSDATE);\n if (!ele.classList.contains(STARTDATE) && !ele.classList.contains(ENDDATE)) {\n ele.removeAttribute('aria-label');\n }\n }\n }\n }\n hoverSelection(event, element) {\n let currentElement = element || event.currentTarget;\n let currentDate = this.getIdValue(null, currentElement);\n if (!isNullOrUndefined(this.startValue) && +this.startValue >= +this.min && +this.startValue <= +this.max) {\n if ((!this.isDateDisabled(this.endValue) && !this.isDateDisabled(this.startValue)\n && isNullOrUndefined(this.endValue) && isNullOrUndefined(this.startValue))\n || (!isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue))) {\n let tdCells;\n tdCells = this.popupObj.element.querySelectorAll('.' + CALENDAR + ' td');\n for (let ele of tdCells) {\n let isDisabledCell = (!ele.classList.contains(DISABLED$2) || ele.classList.contains(DATEDISABLED));\n if (!ele.classList.contains(WEEKNUMBER$2) && isDisabledCell) {\n let eleDate = this.getIdValue(null, ele);\n let startDateValue = new Date(+this.startValue);\n let eleDateValue = new Date(+eleDate);\n if (eleDateValue.setHours(0, 0, 0, 0) >= startDateValue.setHours(0, 0, 0, 0) && +eleDate <= +currentDate) {\n addClass([ele], RANGEHOVER);\n }\n else {\n removeClass([ele], [RANGEHOVER]);\n }\n }\n }\n }\n }\n }\n isSameStartEnd(startVal, endVal) {\n let isSame = false;\n if (this.depth === 'Month') {\n if ((startVal).setHours(0, 0, 0, 0) === (endVal).setHours(0, 0, 0, 0)) {\n isSame = true;\n }\n }\n else if (this.depth === 'Year') {\n if ((startVal.getFullYear() === endVal.getFullYear()) &&\n (startVal.getMonth() === endVal.getMonth())) {\n isSame = true;\n }\n }\n else if (this.depth === 'Decade') {\n if (startVal.getFullYear() === endVal.getFullYear()) {\n isSame = true;\n }\n }\n return isSame;\n }\n updateRange(elementCollection) {\n if (!isNullOrUndefined(this.startValue)) {\n for (let calendar of elementCollection) {\n let tdCells = calendar.querySelectorAll('.' + CALENDAR + ' td');\n for (let ele of tdCells) {\n if (!ele.classList.contains(WEEKNUMBER$2) && !ele.classList.contains(DISABLED$2)) {\n let eleDate = this.getIdValue(null, ele);\n let eleDateValue = this.getIdValue(null, ele);\n if (!isNullOrUndefined(this.endValue)) {\n if (this.currentView() === this.depth &&\n +eleDateValue.setHours(0, 0, 0, 0) >= +new Date(+this.startValue).setHours(0, 0, 0, 0)\n && +eleDateValue.setHours(0, 0, 0, 0) <= +new Date(+this.endValue).setHours(0, 0, 0, 0) &&\n !this.isSameStartEnd(new Date(+this.startValue), new Date(+this.endValue)) &&\n +new Date(+this.startValue).setHours(0, 0, 0, 0) >= +this.min\n && +new Date(+this.endValue).setHours(0, 0, 0, 0) <= +this.max\n && !(this.isDateDisabled(this.startValue) || this.isDateDisabled(this.endValue))) {\n addClass([ele], RANGEHOVER);\n }\n }\n else {\n removeClass([ele], [RANGEHOVER]);\n }\n if (!ele.classList.contains(OTHERMONTH$2)) {\n let startDateValue = new Date(+this.startValue);\n let eleDateValue = new Date(+eleDate);\n if (this.currentView() === this.depth &&\n +eleDateValue.setHours(0, 0, 0, 0) === +startDateValue.setHours(0, 0, 0, 0)\n && +eleDateValue.setHours(0, 0, 0, 0) >= +startDateValue.setHours(0, 0, 0, 0) &&\n +this.startValue >= +this.min\n && !this.inputWrapper.container.classList.contains('e-error')\n && !(this.isDateDisabled(this.startValue) || this.isDateDisabled(this.endValue))) {\n addClass([ele], [STARTDATE, SELECTED$3]);\n this.addSelectedAttributes(ele, this.startValue, true);\n }\n let endDateValue = new Date(+this.endValue);\n if (this.currentView() === 'Year') {\n eleDateValue = new Date(eleDateValue.getFullYear(), eleDateValue.getMonth() + 1, 0);\n }\n else if (this.currentView() === 'Decade') {\n eleDateValue = new Date(eleDateValue.getFullYear(), 11, 31);\n }\n if (this.currentView() === this.depth &&\n !isNullOrUndefined(this.endValue) &&\n +eleDateValue.setHours(0, 0, 0, 0) === +endDateValue.setHours(0, 0, 0, 0)\n && +eleDateValue.setHours(0, 0, 0, 0) <= +endDateValue.setHours(0, 0, 0, 0) &&\n +this.startValue >= +this.min\n && !this.inputWrapper.container.classList.contains('e-error')\n && !(this.isDateDisabled(this.startValue) || this.isDateDisabled(this.endValue))) {\n addClass([ele], [ENDDATE, SELECTED$3]);\n this.addSelectedAttributes(ele, this.startValue, false);\n }\n if (+eleDate === +this.startValue && !isNullOrUndefined(this.endValue) && +eleDate === +this.endValue) {\n this.addSelectedAttributes(ele, this.endValue, false, true);\n }\n }\n }\n }\n }\n }\n }\n checkMinMaxDays() {\n if ((!isNullOrUndefined(this.minDays) && this.minDays > 0) || (!isNullOrUndefined(this.maxDays) && this.maxDays > 0)) {\n if (!this.isMobile) {\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + LEFTCALENDER));\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + RIGHTCALENDER));\n }\n else {\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + CALENDAR));\n }\n }\n }\n rangeArgs(e) {\n let inputValue;\n let range;\n let startDate = !isNullOrUndefined(this.startValue) ?\n this.globalize.formatDate(this.startValue, {\n format: this.formatString, type: 'date', skeleton: isBlazor() ? 'd' : 'yMd'\n }) : null;\n let endDate = !isNullOrUndefined(this.endValue) ?\n this.globalize.formatDate(this.endValue, {\n format: this.formatString, type: 'date', skeleton: isBlazor() ? 'd' : 'yMd'\n }) : null;\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n inputValue = startDate + ' ' + this.separator + ' ' + endDate;\n range = (Math.round(Math.abs((this.startValue.getTime() - this.endValue.getTime()) / (1000 * 60 * 60 * 24))) + 1);\n }\n else {\n inputValue = '';\n range = 0;\n }\n let args = {\n value: this.value,\n startDate: this.startValue,\n endDate: this.endValue,\n daySpan: range,\n event: e || null,\n element: this.element,\n isInteracted: !isNullOrUndefined(e),\n text: inputValue\n };\n return args;\n }\n otherMonthSelect(ele, isStartDate, sameDate) {\n let value = +this.getIdValue(null, ele);\n let dateIdString = '*[id^=\"/id\"]:not(.e-other-month)'.replace('/id', '' + value);\n let tdCell = this.popupObj && this.popupObj.element.querySelector(dateIdString);\n if (!isNullOrUndefined(tdCell)) {\n if (isStartDate) {\n addClass([tdCell], [STARTDATE, SELECTED$3]);\n this.addSelectedAttributes(tdCell, this.startValue, true);\n }\n else {\n addClass([tdCell], [ENDDATE, SELECTED$3]);\n this.addSelectedAttributes(tdCell, this.endValue, true);\n }\n if (sameDate) {\n this.addSelectedAttributes(ele, this.endValue, false, true);\n }\n }\n }\n // tslint:disable-next-line:max-func-body-length\n selectRange(event, element) {\n let leftCalendar;\n let rightCalendar;\n if (event) {\n event.preventDefault();\n }\n let date;\n date = isNullOrUndefined(event) ? this.getIdValue(null, element)\n : this.getIdValue(event, null);\n let y = date.getFullYear();\n let m = date.getMonth();\n let firstDay = new Date(y, m, 1);\n let lastDay = new Date(y, m + 1, 0);\n let firstMonth = new Date(y, 0, 1);\n let lastMonth = new Date(y, 11, 31);\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n if (!this.isMobile || this.isMobile && !this.endButton.element.classList.contains(ACTIVE$1)) {\n this.removeSelection();\n }\n }\n else if (this.isMobile && this.startButton.element.classList.contains(ACTIVE$1)) {\n this.removeSelection();\n }\n let ele = element || event.currentTarget;\n if (isNullOrUndefined(this.startValue)) {\n if (!isNullOrUndefined(this.previousStartValue)) {\n date.setHours(this.previousStartValue.getHours());\n date.setMinutes(this.previousStartValue.getMinutes());\n date.setSeconds(this.previousStartValue.getSeconds());\n }\n this.startValue = (this.depth === 'Month') ? new Date(this.checkValue(date)) :\n (this.depth === 'Year') ? firstDay : firstMonth;\n this.endValue = null;\n this.setValue();\n addClass([ele], STARTDATE);\n this.addSelectedAttributes(ele, this.startValue, true);\n if (ele.classList.contains(OTHERMONTH$2)) {\n this.otherMonthSelect(ele, true);\n }\n this.checkMinMaxDays();\n this.applyButton.disabled = true;\n this.applyButton.element.disabled = true;\n if (this.isMobile) {\n this.endButton.element.classList.add(ACTIVE$1);\n this.startButton.element.classList.remove(ACTIVE$1);\n this.endButton.element.removeAttribute('disabled');\n this.selectableDates();\n }\n this.trigger('select', this.rangeArgs(event));\n }\n else {\n if (+date === +this.startValue || +date > +this.startValue) {\n if (+date === +this.startValue && !isNullOrUndefined(this.minDays) && this.minDays > 1) {\n return;\n }\n this.endValue = null;\n this.setValue();\n if (this.isMobile || element) {\n this.hoverSelection(event, element);\n }\n if (!isNullOrUndefined(this.previousEndValue)) {\n date.setHours(this.previousEndValue.getHours());\n date.setMinutes(this.previousEndValue.getMinutes());\n date.setSeconds(this.previousEndValue.getSeconds());\n }\n this.endValue = (this.depth === 'Month') ? new Date(this.checkValue(date)) :\n (this.depth === 'Year') ? lastDay : lastMonth;\n this.setValue();\n let endEle = this.popupObj.element.querySelectorAll('.' + ENDDATE);\n if (this.isMobile) {\n this.startButton.element.classList.remove(ACTIVE$1);\n this.endButton.element.classList.add(ACTIVE$1);\n for (let ele of endEle) {\n ele.removeAttribute('aria-label');\n if (!ele.classList.contains(STARTDATE)) {\n ele.setAttribute('aria-selected', 'false');\n removeClass([ele], [ENDDATE, SELECTED$3]);\n }\n else {\n this.addSelectedAttributes(ele, this.startValue, true);\n removeClass([ele], [ENDDATE]);\n }\n }\n }\n addClass([ele], ENDDATE);\n if (+this.endValue === +this.startValue) {\n this.addSelectedAttributes(ele, this.endValue, false, true);\n }\n else {\n this.addSelectedAttributes(ele, this.endValue, false);\n }\n if (ele.classList.contains(OTHERMONTH$2)) {\n if (+this.endValue === +this.startValue) {\n this.otherMonthSelect(ele, false, true);\n }\n else {\n this.otherMonthSelect(ele, false);\n }\n }\n endEle = this.popupObj.element.querySelectorAll('.' + ENDDATE);\n for (let ele of endEle) {\n if (ele.classList.contains(STARTDATE)) {\n removeClass([ele], [RANGEHOVER]);\n }\n }\n this.applyButton.disabled = false;\n this.applyButton.element.disabled = false;\n if (!this.isMobile) {\n this.removeClassDisabled();\n }\n this.disabledDateRender();\n this.trigger('select', this.rangeArgs(event));\n }\n else if (+date < +this.startValue) {\n this.removeClassDisabled();\n this.startValue = (this.depth === 'Month') ? new Date(this.checkValue(date)) :\n (this.depth === 'Year') ? firstDay : firstMonth;\n this.setValue();\n this.removeSelectedAttributes();\n removeClass(this.popupObj.element.querySelectorAll('.' + STARTDATE), [STARTDATE, SELECTED$3]);\n addClass([ele], STARTDATE);\n this.addSelectedAttributes(ele, this.startValue, true);\n if (ele.classList.contains(OTHERMONTH$2)) {\n this.otherMonthSelect(ele, true);\n }\n this.checkMinMaxDays();\n }\n }\n if (event) {\n leftCalendar = closest(event.target, '.' + LEFTCALENDER);\n }\n if (!isNullOrUndefined(leftCalendar)) {\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n else {\n if (event) {\n rightCalendar = event && closest(event.target, '.' + RIGHTCALENDER);\n }\n if (!isNullOrUndefined(rightCalendar)) {\n this.rightCalendar.children[1].firstElementChild.focus();\n }\n }\n addClass([ele], SELECTED$3);\n this.updateHeader();\n this.removeFocusedDate();\n }\n selectableDates() {\n if (!isNullOrUndefined(this.startValue)) {\n let tdCells = this.calendarElement.querySelectorAll('.' + CALENDAR + ' td');\n let isStartDate = false;\n if (this.currentView() === this.depth) {\n for (let ele of tdCells) {\n if (!ele.classList.contains(STARTDATE) && !ele.classList.contains(WEEKNUMBER$2)) {\n if (!ele.classList.contains(DISABLED$2)) {\n let eleDate = this.getIdValue(null, ele);\n if (+eleDate < +this.startValue) {\n addClass([ele], [DATEDISABLED, DISABLED$2, OVERLAY$2]);\n EventHandler.clearEvents(ele);\n continue;\n }\n else {\n break;\n }\n }\n }\n if (ele.classList.contains(STARTDATE) && !ele.classList.contains(OTHERMONTH$2)) {\n isStartDate = true;\n break;\n }\n }\n if (isStartDate) {\n if (!this.previousIcon.classList.contains(DISABLED$2)) {\n addClass([this.previousIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n }\n }\n else {\n for (let ele of tdCells) {\n let startMonth = this.startValue.getMonth();\n let startYear = this.startValue.getFullYear();\n let element = this.getIdValue(null, ele);\n if (!this.startButton.element.classList.contains(ACTIVE$1) && ((this.currentView() === 'Year' &&\n (element.getMonth() < startMonth) && (element.getFullYear() <= startYear))\n || (this.currentView() === 'Decade' && (element.getMonth() <= startMonth) &&\n (element.getFullYear() < startYear)))) {\n addClass([ele], [DISABLED$2]);\n }\n else {\n break;\n }\n }\n if (tdCells[0].classList.contains(DISABLED$2)) {\n this.previousIconHandler(true);\n }\n else if (tdCells[tdCells.length - 1].classList.contains(DISABLED$2)) {\n this.nextIconHandler(true);\n }\n }\n }\n }\n updateMinMaxDays(calendar) {\n if ((!isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) ||\n (this.isMobile && this.endButton.element.classList.contains(ACTIVE$1))) {\n if ((!isNullOrUndefined(this.minDays) && this.minDays > 0) || (!isNullOrUndefined(this.maxDays) && this.maxDays > 0)) {\n let minDate = new Date(new Date(+this.startValue).setDate(this.startValue.getDate() + (this.minDays - 1)));\n let maxDate = new Date(new Date(+this.startValue).setDate(this.startValue.getDate() + (this.maxDays - 1)));\n minDate = (!isNullOrUndefined(this.minDays) && this.minDays > 0) ? minDate : null;\n maxDate = (!isNullOrUndefined(this.maxDays) && this.maxDays > 0) ? maxDate : null;\n if (this.currentView() === 'Year') {\n minDate = isNullOrUndefined(minDate) ? null : new Date(minDate.getFullYear(), minDate.getMonth(), 0);\n maxDate = isNullOrUndefined(maxDate) ? null : new Date(maxDate.getFullYear(), maxDate.getMonth(), 1);\n }\n else if (this.currentView() === 'Decade') {\n minDate = isNullOrUndefined(minDate) ? null : new Date(minDate.getFullYear() - 1, 11, 1);\n maxDate = isNullOrUndefined(maxDate) ? null : new Date(maxDate.getFullYear(), 0, 1);\n }\n let tdCells = calendar.querySelectorAll('.' + CALENDAR + ' td');\n let maxEle;\n for (let ele of tdCells) {\n if (!ele.classList.contains(STARTDATE) && !ele.classList.contains(WEEKNUMBER$2)) {\n let eleDate = this.getIdValue(null, ele);\n if (!isNullOrUndefined(minDate) && +eleDate === +minDate && ele.classList.contains(DISABLED$2)) {\n minDate.setDate(minDate.getDate() + 1);\n }\n if (!ele.classList.contains(DISABLED$2)) {\n if (+eleDate <= +this.startValue) {\n continue;\n }\n if (!isNullOrUndefined(minDate) && +eleDate < +minDate) {\n addClass([ele], [DATEDISABLED, DISABLED$2, OVERLAY$2]);\n EventHandler.clearEvents(ele);\n }\n if (!isNullOrUndefined(maxDate) && +eleDate > +maxDate) {\n addClass([ele], [DATEDISABLED, DISABLED$2, OVERLAY$2]);\n this.isMaxDaysClicked = true;\n EventHandler.clearEvents(ele);\n if (isNullOrUndefined(maxEle) && !ele.classList.contains(OTHERMONTH$2)) {\n maxEle = ele;\n }\n }\n }\n }\n }\n if (!isNullOrUndefined(maxEle)) {\n if (this.isMobile) {\n if (!this.nextIcon.classList.contains(DISABLED$2)) {\n addClass([this.nextIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n }\n else {\n let calendar = closest(maxEle, '.' + RIGHTCALENDER);\n calendar = isNullOrUndefined(calendar) ? this.leftCalendar : calendar;\n let isLeftCalendar = calendar.classList.contains(LEFTCALENDER);\n if (!isLeftCalendar) {\n if (!this.rightCalNextIcon.classList.contains(DISABLED$2)) {\n addClass([this.rightCalNextIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n }\n else {\n if (!this.rightCalNextIcon.classList.contains(DISABLED$2)) {\n addClass([this.rightCalNextIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n if (!this.leftCalNextIcon.classList.contains(DISABLED$2)) {\n addClass([this.leftCalNextIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n if (!this.rightCalPrevIcon.classList.contains(DISABLED$2)) {\n addClass([this.rightCalPrevIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n }\n }\n }\n }\n }\n else {\n this.isMaxDaysClicked = false;\n }\n }\n removeClassDisabled() {\n let tdCells;\n tdCells = this.popupObj.element.querySelectorAll('.' + CALENDAR + ' td' + '.' + DATEDISABLED);\n for (let ele of tdCells) {\n if (ele.classList.contains(DATEDISABLED)) {\n removeClass([ele], [DATEDISABLED, DISABLED$2, OVERLAY$2]);\n EventHandler.add(ele, 'click', this.selectRange, this);\n if (!this.isMobile) {\n EventHandler.add(ele, 'mouseover', this.hoverSelection, this);\n }\n }\n }\n if (this.isMobile) {\n if (this.nextIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.nextIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n if (this.previousIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.previousIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n }\n else {\n if (this.rightCalNextIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.rightCalNextIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n if (this.rightCalPrevIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.rightCalPrevIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n if (this.leftCalNextIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.leftCalNextIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n }\n }\n updateHeader() {\n let format = { type: 'date', skeleton: isBlazor() ? 'D' : 'yMMMd' };\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n let range = (Math.round(Math.abs((this.startValue.getTime() - this.endValue.getTime()) / (1000 * 60 * 60 * 24))) + 1);\n if (!isNullOrUndefined(this.disabledDayCnt)) {\n range = range - this.disabledDayCnt;\n this.disabledDayCnt = null;\n }\n this.popupObj.element.querySelector('.' + DAYSPAN).textContent = range.toString() + ' ' + this.l10n.getConstant('days');\n }\n else {\n this.popupObj.element.querySelector('.' + DAYSPAN).textContent = this.l10n.getConstant('selectedDays');\n }\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n this.popupObj.element.querySelector('.' + ENDLABEL).textContent = this.globalize.formatDate(this.endValue, format);\n }\n else {\n this.popupObj.element.querySelector('.' + ENDLABEL).textContent = this.l10n.getConstant('endLabel');\n }\n if (!isNullOrUndefined(this.startValue)) {\n this.popupObj.element.querySelector('.' + STARTLABEL).textContent = this.globalize.formatDate(this.startValue, format);\n }\n else {\n this.popupObj.element.querySelector('.' + STARTLABEL).textContent = this.l10n.getConstant('startLabel');\n }\n }\n else {\n if (!isNullOrUndefined(this.startValue)) {\n this.startButton.element.textContent = this.globalize.formatDate(this.startValue, format);\n }\n else {\n this.startButton.element.textContent = this.l10n.getConstant('startLabel');\n }\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n this.endButton.element.textContent = this.globalize.formatDate(this.endValue, format);\n }\n else {\n this.endButton.element.textContent = this.l10n.getConstant('endLabel');\n }\n }\n if ((this.isDateDisabled(this.startValue) || this.isDateDisabled(this.endValue)) ||\n ((!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)\n || (!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue))\n && +this.startValue > +this.endValue))) {\n if (!this.isMobile) {\n this.popupObj.element.querySelector('.' + DAYSPAN).textContent = this.l10n.getConstant('selectedDays');\n this.popupObj.element.querySelector('.' + STARTLABEL).textContent = this.l10n.getConstant('startLabel');\n this.popupObj.element.querySelector('.' + ENDLABEL).textContent = this.l10n.getConstant('endLabel');\n }\n else {\n this.startButton.element.textContent = this.l10n.getConstant('startLabel');\n this.endButton.element.textContent = this.l10n.getConstant('endLabel');\n this.popupObj.element.querySelector('.' + DAYSPAN).textContent = this.l10n.getConstant('selectedDays');\n }\n }\n if (this.popupObj.element.querySelector('#custom_range')) {\n this.popupObj.element.querySelector('#custom_range').textContent =\n this.l10n.getConstant('customRange') !== '' ? this.l10n.getConstant('customRange') : 'Custom Range';\n }\n }\n removeSelection() {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n this.removeSelectedAttributes();\n if (this.popupObj) {\n if (this.popupObj.element.querySelectorAll('.' + SELECTED$3).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + SELECTED$3), [STARTDATE, ENDDATE, SELECTED$3]);\n }\n if (this.popupObj.element.querySelectorAll('.' + FOCUSDATE).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + FOCUSDATE), FOCUSDATE);\n }\n if (this.popupObj.element.querySelectorAll('.' + RANGEHOVER).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + RANGEHOVER), [RANGEHOVER]);\n }\n }\n }\n addSelectedAttributes(ele, date, isStartDate, sameDate) {\n if (ele) {\n let title = this.globalize.formatDate(date, { type: 'date', skeleton: isBlazor() ? 'D' : 'full' });\n if (!isNullOrUndefined(sameDate) && sameDate) {\n ele.setAttribute('aria-label', 'The current start and end date is ' + '' + title);\n }\n else {\n ele.setAttribute('aria-label', 'The current ' + (isStartDate ? 'start' : 'end') + ' date is ' + '' + title);\n }\n ele.setAttribute('aria-selected', 'true');\n }\n }\n removeSelectedAttributes() {\n if (this.popupObj) {\n let start = this.popupObj.element.querySelectorAll('.' + STARTDATE);\n for (let ele of start) {\n ele.setAttribute('aria-selected', 'false');\n ele.removeAttribute('aria-label');\n }\n let end = this.popupObj.element.querySelectorAll('.' + ENDDATE);\n for (let ele of end) {\n ele.setAttribute('aria-selected', 'false');\n ele.removeAttribute('aria-label');\n }\n }\n }\n updateCalendarElement(calendar) {\n if (calendar.classList.contains(LEFTCALENDER)) {\n this.calendarElement = this.leftCalendar;\n this.currentDate = this.leftCalCurrentDate;\n this.previousIcon = this.leftCalPrevIcon;\n this.nextIcon = this.leftCalNextIcon;\n }\n else {\n this.calendarElement = this.rightCalendar;\n this.currentDate = this.rightCalCurrentDate;\n this.previousIcon = this.rightCalPrevIcon;\n this.nextIcon = this.rightCalNextIcon;\n }\n this.contentElement = calendar.querySelector('.' + CONTENT$1);\n this.tableBodyElement = select('.' + CONTENT$1 + ' tbody', calendar);\n this.table = calendar.querySelector('.' + CONTENT$1).getElementsByTagName('table')[0];\n this.headerTitleElement = calendar.querySelector('.' + HEADER$1 + ' .' + TITLE$1);\n this.headerElement = calendar.querySelector('.' + HEADER$1);\n }\n navPrevMonth(e) {\n e.preventDefault();\n let ele = closest(e.target, '.' + LEFTCALENDER);\n ele = isNullOrUndefined(ele) ? closest(e.target, '.' + RIGHTCALENDER) : ele;\n this.updateCalendarElement(ele);\n this.navigatePrevious(e);\n if (!isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) {\n this.updateMinMaxDays(ele);\n }\n this.updateControl(ele);\n }\n deviceNavigation(ele) {\n this.deviceCalendarEvent();\n this.updateRange([this.popupObj.element.querySelector('.' + CALENDAR)]);\n if (this.endButton.element.classList.contains(ACTIVE$1)) {\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + CALENDAR));\n }\n if (this.endButton.element.classList.contains(ACTIVE$1)) {\n this.selectableDates();\n }\n if (this.currentView() === this.depth) {\n this.bindCalendarCellEvents();\n }\n this.removeFocusedDate();\n }\n updateControl(calendar) {\n if (calendar.classList.contains(RIGHTCALENDER)) {\n this.rightCalCurrentDate = new Date(+this.currentDate);\n }\n else {\n this.leftCalCurrentDate = new Date(+this.currentDate);\n }\n this.calendarIconEvent();\n if ((((this.depth === 'Month')\n && this.leftCalendar.querySelector('.e-content').classList.contains('e-month')\n && this.rightCalendar.querySelector('.e-content').classList.contains('e-month'))\n || ((this.depth === 'Year')\n && this.leftCalendar.querySelector('.e-content').classList.contains('e-year')\n && this.rightCalendar.querySelector('.e-content').classList.contains('e-year'))\n || ((this.depth === 'Decade')\n && this.leftCalendar.querySelector('.e-content').classList.contains('e-decade')\n && this.rightCalendar.querySelector('.e-content').classList.contains('e-decade')))\n || this.isMobile) {\n this.bindCalendarCellEvents();\n }\n this.removeFocusedDate();\n this.updateRange([calendar]);\n }\n navNextMonth(event) {\n event.preventDefault();\n let ele = closest(event.target, '.' + LEFTCALENDER);\n ele = isNullOrUndefined(ele) ? closest(event.target, '.' + RIGHTCALENDER) : ele;\n this.updateCalendarElement(ele);\n this.navigateNext(event);\n if (!isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) {\n this.updateMinMaxDays(ele);\n }\n this.updateControl(ele);\n }\n isPopupOpen() {\n if (!isNullOrUndefined(this.popupObj) && this.popupObj.element.classList.contains(POPUP$1)) {\n return true;\n }\n return false;\n }\n createRangeHeader() {\n let labelContainer = this.createElement('div', { className: STARTENDCONTAINER });\n if (!this.isMobile) {\n let startLabel = this.createElement('a', { className: STARTLABEL });\n let endLabel = this.createElement('a', { className: ENDLABEL });\n let changeIcon = this.createElement('span', { className: CHANGEICON });\n attributes(startLabel, { 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'Start Date', 'role': 'button' });\n attributes(endLabel, { 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'End Date', 'role': 'button' });\n labelContainer.appendChild(startLabel);\n labelContainer.appendChild(changeIcon);\n labelContainer.appendChild(endLabel);\n startLabel.textContent = this.l10n.getConstant('startLabel');\n endLabel.textContent = this.l10n.getConstant('endLabel');\n }\n else {\n let endBtn = this.createElement('button', { className: ENDBUTTON });\n let startBtn = this.createElement('button', { className: STARTBUTTON });\n this.startButton = new Button({ content: this.l10n.getConstant('startLabel') }, startBtn);\n this.endButton = new Button({ content: this.l10n.getConstant('endLabel') }, endBtn);\n labelContainer.appendChild(startBtn);\n labelContainer.appendChild(endBtn);\n }\n return labelContainer;\n }\n disableInput() {\n if (this.strictMode) {\n if (!isNullOrUndefined(this.previousStartValue) && !isNullOrUndefined(this.previousEndValue)) {\n this.startValue = this.previousStartValue;\n this.endValue = this.previousEndValue;\n this.setValue();\n this.updateInput();\n }\n }\n else {\n this.updateInput();\n this.clearRange();\n this.setProperties({ startDate: null }, true);\n this.setProperties({ endDate: null }, true);\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n this.errorClass();\n }\n this.setProperties({ enabled: false }, true);\n Input.setEnabled(this.enabled, this.inputElement);\n this.bindEvents();\n }\n validateMinMax() {\n this.min = isNullOrUndefined(this.min) || !(+this.min) ? this.min = new Date(1900, 0, 1) : this.min;\n this.max = isNullOrUndefined(this.max) || !(+this.max) ? this.max = new Date(2099, 11, 31) : this.max;\n if (!(this.min <= this.max)) {\n this.disableInput();\n return;\n }\n if (!isNullOrUndefined(this.minDays) && !isNullOrUndefined(this.maxDays)) {\n if (this.maxDays > 0 && this.minDays > 0 && (this.minDays > this.maxDays)) {\n this.maxDays = null;\n }\n }\n if (!isNullOrUndefined(this.minDays) && this.minDays < 0) {\n this.minDays = null;\n }\n if (!isNullOrUndefined(this.maxDays) && this.maxDays < 0) {\n this.maxDays = null;\n }\n }\n validateRangeStrict() {\n if (!isNullOrUndefined(this.startValue)) {\n if (+this.startValue <= +this.min) {\n this.startValue = this.min;\n this.setValue();\n }\n else if (+this.startValue >= +this.min && +this.startValue >= +this.max) {\n this.startValue = this.max;\n }\n }\n if (!isNullOrUndefined(this.endValue)) {\n if (+this.endValue > +this.max) {\n this.endValue = this.max;\n this.setValue();\n }\n else if (+this.endValue < +this.min) {\n this.endValue = this.min;\n this.setValue();\n }\n }\n this.validateMinMaxDays();\n }\n validateRange() {\n this.validateMinMaxDays();\n }\n validateMinMaxDays() {\n if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n let range = (Math.round(Math.abs((this.startValue.getTime() - this.endValue.getTime()) / (1000 * 60 * 60 * 24))) + 1);\n if ((!isNullOrUndefined(this.minDays) && this.minDays > 0) && !(range >= this.minDays)) {\n if (this.strictMode) {\n let date = new Date(+this.startValue);\n date.setDate(date.getDate() + (this.minDays - 1));\n if (+date > +this.max) {\n this.endValue = this.max;\n this.setValue();\n }\n else {\n this.endValue = date;\n this.setValue();\n }\n }\n else {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n }\n if ((!isNullOrUndefined(this.maxDays) && this.maxDays > 0) && !(range <= this.maxDays)) {\n if (this.strictMode) {\n this.endValue = new Date(+this.startValue);\n this.endValue.setDate(this.endValue.getDate() + (this.maxDays - 1));\n this.setValue();\n }\n else {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n }\n }\n }\n renderCalendar() {\n this.calendarElement = this.createElement('div');\n this.calendarElement.classList.add(CALENDAR);\n if (this.enableRtl) {\n this.calendarElement.classList.add(RTL$2);\n }\n attributes(this.calendarElement, { 'role': 'calendar' });\n super.createHeader();\n super.createContent();\n }\n isSameMonth(start, end) {\n if (start.getMonth() === end.getMonth() && start.getFullYear() === end.getFullYear()) {\n return true;\n }\n return false;\n }\n isSameYear(start, end) {\n if (start.getFullYear() === end.getFullYear()) {\n return true;\n }\n return false;\n }\n isSameDecade(start, end) {\n let startYear = start.getFullYear();\n let endYear = end.getFullYear();\n if ((startYear - (startYear % 10)) === (endYear - (endYear % 10))) {\n return true;\n }\n return false;\n }\n startMonthCurrentDate() {\n if (this.isSameMonth(this.min, this.max) || +this.currentDate > +this.max || this.isSameMonth(this.currentDate, this.max)) {\n this.currentDate = new Date(+this.max);\n this.currentDate.setDate(1);\n this.currentDate.setMonth(this.currentDate.getMonth() - 1);\n }\n else if (this.currentDate < this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n }\n selectNextMonth() {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) && !this.isSameMonth(this.endValue, this.currentDate)\n && !this.isDateDisabled(this.endValue) && !this.isDateDisabled(this.startValue)) {\n this.currentDate = new Date(+this.endValue);\n }\n else {\n this.currentDate.setDate(1);\n this.currentDate.setMonth(this.currentDate.getMonth() + 1);\n return;\n }\n if ((!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)\n || (!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n this.currentDate.setDate(1);\n let month = this.currentDate.getMonth() + 1;\n this.currentDate.setMonth(month);\n }\n }\n selectNextYear() {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) && !this.isSameYear(this.endValue, this.currentDate)\n && !this.isDateDisabled(this.endValue) && !this.isDateDisabled(this.startValue)) {\n this.currentDate = new Date(+this.endValue);\n }\n else {\n this.currentDate.setMonth(0);\n let yr = this.currentDate.getFullYear() + 1;\n this.currentDate.setFullYear(yr);\n return;\n }\n if ((!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)\n || (!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n this.currentDate.setMonth(0);\n this.currentDate.setFullYear(this.currentDate.getFullYear() + 1);\n }\n }\n selectNextDecade() {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) && !this.isSameDecade(this.endValue, this.currentDate)\n && !this.isDateDisabled(this.endValue) && !this.isDateDisabled(this.startValue)) {\n this.currentDate = new Date(+this.endValue);\n }\n else {\n let decyr = this.currentDate.getFullYear() + 10;\n this.currentDate.setFullYear(decyr);\n return;\n }\n if (((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)\n || (!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || (!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n this.currentDate.setFullYear(this.currentDate.getFullYear() + 10);\n }\n }\n selectStartMonth() {\n if (!isNullOrUndefined(this.startValue)) {\n if (!isNullOrUndefined(this.max) && this.isSameMonth(this.startValue, this.max)) {\n this.currentDate = new Date(+this.max);\n this.currentDate.setDate(1);\n this.currentDate.setMonth(this.currentDate.getMonth() - 1);\n }\n else if (!(this.startValue >= this.min && this.startValue <= this.max)\n || this.isDateDisabled(this.startValue)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n else {\n this.currentDate = new Date(+this.startValue);\n }\n }\n else {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n this.startMonthCurrentDate();\n }\n if ((!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || (!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n this.startMonthCurrentDate();\n }\n createCalendar() {\n let calendarContainer = this.createElement('div', { className: CALENDARCONTAINER });\n if (!this.isMobile) {\n this.selectStartMonth();\n this.renderCalendar();\n this.leftCalCurrentDate = new Date(+this.currentDate);\n this.calendarElement.classList.add(LEFTCALENDER);\n this.leftCalPrevIcon = this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + PREVICON$1);\n this.leftCalNextIcon = this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + NEXTICON$1);\n this.leftTitle = this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + TITLE$1);\n remove(this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + ICONCONTAINER$1));\n this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + HEADER$1).appendChild(this.leftCalNextIcon);\n this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + HEADER$1).appendChild(this.leftCalPrevIcon);\n prepend([this.leftCalPrevIcon], this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + HEADER$1));\n this.leftCalendar = this.calendarElement;\n let leftContainer = this.createElement('div', { className: LEFTCONTAINER });\n let rightContainer = this.createElement('div', { className: RIGHTCONTAINER });\n leftContainer.appendChild(this.leftCalendar);\n calendarContainer.appendChild(leftContainer);\n if (!this.isMobile) {\n EventHandler.add(this.leftTitle, 'click', this.leftNavTitle, this);\n }\n if (this.start === 'Month') {\n this.selectNextMonth();\n }\n if (this.start === 'Year') {\n this.selectNextYear();\n }\n if (this.start === 'Decade') {\n this.selectNextDecade();\n }\n this.renderCalendar();\n this.rightCalCurrentDate = new Date(+this.currentDate);\n addClass([this.calendarElement], RIGHTCALENDER);\n this.rightCalendar = this.calendarElement;\n removeClass([this.leftCalendar && this.leftCalendar.querySelector('.e-content tbody')], 'e-zoomin');\n removeClass([this.rightCalendar && this.rightCalendar.querySelector('.e-content tbody')], 'e-zoomin');\n this.rightCalPrevIcon = this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + PREVICON$1);\n this.rightCalNextIcon = this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + NEXTICON$1);\n this.rightTitle = this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + TITLE$1);\n remove(this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + ICONCONTAINER$1));\n this.calendarElement.querySelector('table').setAttribute('tabindex', '-1');\n this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + HEADER$1).appendChild(this.rightCalNextIcon);\n this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + HEADER$1).appendChild(this.rightCalPrevIcon);\n prepend([this.rightCalPrevIcon], this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + HEADER$1));\n rightContainer.appendChild(this.rightCalendar);\n calendarContainer.appendChild(rightContainer);\n if (!this.isMobile) {\n EventHandler.add(this.rightTitle, 'click', this.rightNavTitle, this);\n }\n }\n else {\n if (!isNullOrUndefined(this.startValue)) {\n this.currentDate = new Date(+this.startValue);\n }\n super.validateDate();\n super.minMaxUpdate();\n super.render();\n let prevIcon = this.calendarElement.querySelector('.' + CALENDAR + ' .' + PREVICON$1);\n let nextIcon = this.calendarElement.querySelector('.' + CALENDAR + ' .' + NEXTICON$1);\n remove(this.calendarElement.querySelector('.' + CALENDAR + ' .' + ICONCONTAINER$1));\n this.calendarElement.querySelector('.' + CALENDAR + ' .' + HEADER$1).appendChild(nextIcon);\n this.calendarElement.querySelector('.' + CALENDAR + ' .' + HEADER$1).appendChild(prevIcon);\n prepend([prevIcon], this.calendarElement.querySelector('.' + CALENDAR + ' .' + HEADER$1));\n this.deviceCalendar = this.calendarElement;\n calendarContainer.appendChild(this.calendarElement);\n this.headerTitleElement = this.calendarElement.querySelector('.' + CALENDAR + ' .' + HEADER$1 + ' .' + TITLE$1);\n }\n return calendarContainer;\n }\n leftNavTitle(e) {\n if (this.isPopupOpen()) {\n this.calendarElement = this.leftCalendar;\n this.calendarNavigation(e, this.calendarElement);\n }\n }\n calendarNavigation(e, element) {\n this.table = element.querySelector('table');\n this.headerTitleElement = element.querySelector('.e-title');\n this.tableBodyElement = element.querySelector('tbody');\n this.tableHeadElement = element.querySelector('thead');\n this.contentElement = element.querySelector('.e-content');\n this.updateCalendarElement(element);\n super.navigateTitle(e);\n this.updateNavIcons();\n }\n rightNavTitle(e) {\n if (this.isPopupOpen()) {\n this.calendarElement = this.rightCalendar;\n this.calendarNavigation(e, this.calendarElement);\n }\n }\n clickEventEmitter(e) {\n if (!this.isMobile) {\n if (closest(e.target, '.e-calendar.e-left-calendar')) {\n this.calendarElement = this.leftCalendar;\n this.updateCalendarElement(this.leftCalendar);\n }\n else {\n this.calendarElement = this.rightCalendar;\n this.updateCalendarElement(this.rightCalendar);\n }\n }\n }\n /**\n * Gets the current view of the Calendar.\n * @returns string\n * @private\n * @hidden\n */\n currentView() {\n return super.currentView();\n }\n getCalendarView(view) {\n if (view === 'Year') {\n return 'Year';\n }\n else if (view === 'Decade') {\n return 'Decade';\n }\n else {\n return 'Month';\n }\n }\n navigatedEvent(e) {\n this.trigger('navigated', this.navigatedArgs);\n if (!isNullOrUndefined(this.popupObj)) {\n let element;\n let view = this.getCalendarView(this.currentView());\n if (this.isMobile) {\n if (view === this.depth) {\n this.bindCalendarCellEvents();\n this.deviceNavigation();\n this.removeFocusedDate();\n this.checkMinMaxDays();\n }\n else {\n this.selectableDates();\n }\n }\n else {\n if (!this.isMobile && view === this.depth) {\n element = this.calendarElement.classList.contains('e-left-calendar') ? this.leftCalendar : this.rightCalendar;\n if (element === this.leftCalendar && ((e && !e.currentTarget.children[0].classList.contains('e-icons'))\n || (!isNullOrUndefined(this.controlDown)))) {\n this.leftCalCurrentDate = new Date(+this.currentDate);\n this.effect = '';\n this.currentDate = this.leftCalCurrentDate;\n this.updateCalendarElement(this.leftCalendar);\n this.updateControl(this.leftCalendar);\n this.updateCalendarElement(this.rightCalendar);\n super.navigateTo.call(this, view, this.rightCalCurrentDate);\n this.updateControl(this.rightCalendar);\n this.updateNavIcons();\n this.calendarIconEvent();\n this.calendarIconRipple();\n this.controlDown = null;\n }\n else if (e && !e.currentTarget.children[0].classList.contains('e-icons')\n || (!isNullOrUndefined(this.controlDown))) {\n this.rightCalCurrentDate = new Date(+this.currentDate);\n this.effect = '';\n this.currentDate = this.rightCalCurrentDate;\n this.updateCalendarElement(this.rightCalendar);\n this.updateControl(this.rightCalendar);\n this.updateCalendarElement(this.leftCalendar);\n if (this.startValue && isNullOrUndefined(this.endValue)) {\n if (view === 'Month' && this.startValue.getMonth() < this.rightCalCurrentDate.getMonth() &&\n this.startValue.getFullYear() <= this.rightCalCurrentDate.getFullYear()) {\n super.navigateTo.call(this, view, new Date(+this.startValue));\n }\n else if (view === 'Year' && this.startValue.getFullYear() < this.rightCalCurrentDate.getFullYear()) {\n super.navigateTo.call(this, view, new Date(+this.startValue));\n }\n else {\n super.navigateTo.call(this, view, this.leftCalCurrentDate);\n }\n }\n else {\n super.navigateTo.call(this, view, this.leftCalCurrentDate);\n }\n this.updateControl(this.leftCalendar);\n this.updateNavIcons();\n this.calendarIconEvent();\n this.calendarIconRipple();\n this.controlDown = null;\n }\n this.checkMinMaxDays();\n }\n else {\n this.updateNavIcons();\n this.calendarIconEvent();\n }\n }\n }\n }\n createControl() {\n let controlContainer = this.createElement('div', { className: RANGECONTAINER });\n let headerContainer = this.createElement('div', { className: RANGEHEADER });\n let labelContainer = this.createRangeHeader();\n headerContainer.appendChild(labelContainer);\n let daySpan = this.createElement('div', { className: DAYSPAN });\n attributes(daySpan, { 'aria-label': 'Selected Days' });\n daySpan.textContent = this.l10n.getConstant('selectedDays');\n headerContainer.appendChild(daySpan);\n let separator = this.createElement('div', { className: SEPARATOR });\n let calendarContainer = this.createCalendar();\n controlContainer.appendChild(headerContainer);\n controlContainer.appendChild(separator);\n controlContainer.appendChild(calendarContainer);\n let footerSection = this.createElement('div', { className: FOOTER$1 });\n let cancelBtn = this.createElement('button', { className: CANCEL + ' ' + FLAT$1 + ' ' + CSS$1 });\n let applyBtn = this.createElement('button');\n addClass([applyBtn], [APPLY, FLAT$1, PRIMARY$1, CSS$1]);\n footerSection.appendChild(applyBtn);\n footerSection.appendChild(cancelBtn);\n let enable = !isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue);\n this.cancelButton = new Button({ content: this.l10n.getConstant('cancelText') }, cancelBtn);\n this.applyButton = new Button({ content: this.l10n.getConstant('applyText'), disabled: !enable }, applyBtn);\n EventHandler.add(applyBtn, 'click', this.applyFunction, this);\n EventHandler.add(cancelBtn, 'click', this.cancelFunction, this);\n this.popupWrapper.appendChild(controlContainer);\n if (!this.isMobile) {\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label)) {\n this.createPresets();\n this.listRippleEffect();\n addClass([controlContainer], RANGEBORDER);\n addClass([this.popupWrapper], 'e-preset-wrapper');\n let presets = this.popupWrapper.querySelector('.' + PRESETS);\n presets.style.height = this.popupWrapper.querySelector('.' + RANGECONTAINER).getBoundingClientRect().height + 'px';\n }\n }\n this.popupWrapper.appendChild(footerSection);\n if (this.isMobile) {\n this.deviceHeaderUpdate();\n }\n this.renderPopup();\n }\n cancelFunction(eve) {\n if (document.activeElement !== this.inputElement) {\n this.preventFocus = true;\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS$1]);\n }\n eve.preventDefault();\n if (this.isKeyPopup) {\n this.inputElement.focus();\n this.isKeyPopup = false;\n }\n this.startValue = null;\n this.endValue = null;\n this.removeSelection();\n this.hide(eve);\n }\n deviceHeaderUpdate() {\n if (isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) {\n this.endButton.element.setAttribute('disabled', '');\n this.startButton.element.classList.add(ACTIVE$1);\n }\n else if (!isNullOrUndefined(this.startValue)) {\n this.startButton.element.classList.add(ACTIVE$1);\n }\n }\n applyFunction(eve) {\n let isValueChanged = false;\n if (eve.type !== 'touchstart') {\n eve.preventDefault();\n }\n if (this.closeEventArgs && this.closeEventArgs.cancel) {\n this.startValue = this.popupWrapper.querySelector('.e-start-date') &&\n this.getIdValue(null, this.popupWrapper.querySelector('.e-start-date'));\n this.endValue = this.popupWrapper.querySelector('.e-end-date') &&\n this.getIdValue(null, this.popupWrapper.querySelector('.e-end-date'));\n this.setValue();\n }\n if (document.activeElement !== this.inputElement) {\n this.preventFocus = true;\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS$1]);\n }\n if (eve.type !== 'touchstart' &&\n this.closeEventArgs && !this.closeEventArgs.cancel) {\n eve.preventDefault();\n }\n if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n this.previousStartValue = new Date(+this.startValue);\n this.previousEndValue = new Date(+this.endValue);\n this.previousEleValue = this.inputElement.value;\n Input.setValue(this.rangeArgs(eve).text, this.inputElement, this.floatLabelType, this.showClearButton);\n if (+this.initStartDate !== +this.startValue || +this.initEndDate !== +this.endValue) {\n isValueChanged = true;\n }\n this.changeTrigger(eve);\n this.hide(eve ? eve : null);\n this.errorClass();\n isValueChanged = true;\n }\n else {\n this.hide(eve ? eve : null);\n }\n if (!(closest(eve.target, '.' + INPUTCONTAINER$1))\n && (!isValueChanged)) {\n this.focusOut();\n }\n if (!this.isMobile) {\n this.isKeyPopup = false;\n if (this.isRangeIconClicked) {\n this.inputWrapper.container.children[1].focus();\n this.keyInputConfigs = extend(this.keyInputConfigs, this.keyConfigs);\n this.popupKeyboardModule = new KeyboardEvents(this.inputWrapper.container.children[1], {\n eventName: 'keydown',\n keyConfigs: this.keyInputConfigs,\n keyAction: this.popupKeyActionHandle.bind(this)\n });\n }\n }\n }\n onMouseClick(event, item) {\n if (event.type === 'touchstart') {\n return;\n }\n let target = item || event.target;\n let li = closest(target, '.' + LISTCLASS);\n let isClick = li && li.classList.contains(ACTIVE$1);\n if (li && li.classList.contains(LISTCLASS)) {\n this.setListSelection(li, event);\n }\n this.inputElement.focus();\n if (!this.isMobile) {\n this.preventFocus = true;\n if (li && li.classList.contains(LISTCLASS) && li.getAttribute('id') === 'custom_range') {\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n else {\n if (!isClick && event.type === 'keydown') {\n this.inputElement.focus();\n }\n }\n }\n }\n onMouseOver(event) {\n let li = closest(event.target, '.' + LISTCLASS);\n if (li && li.classList.contains(LISTCLASS) && !li.classList.contains(HOVER)) {\n addClass([li], HOVER);\n }\n }\n onMouseLeave(event) {\n let item = closest(event.target, '.' + HOVER);\n if (!isNullOrUndefined(item)) {\n removeClass([item], HOVER);\n }\n }\n setListSelection(li, event) {\n if (li && (!li.classList.contains(ACTIVE$1) || (this.isMobile && li.classList.contains(ACTIVE$1)))) {\n if (this.isMobile && li.classList.contains(ACTIVE$1)) {\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n let values = this.presetsItem[this.activeIndex];\n if (values.id === 'custom_range') {\n this.renderCustomPopup();\n return;\n }\n return;\n }\n this.removeListSelection();\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n addClass([li], ACTIVE$1);\n li.setAttribute('aria-selected', 'true');\n let values = this.presetsItem[this.activeIndex];\n if (values.id === 'custom_range') {\n this.renderCustomPopup();\n }\n else {\n this.applyPresetRange(values, event);\n }\n }\n }\n removeListSelection() {\n let item = this.presetElement.querySelector('.' + ACTIVE$1);\n if (!isNullOrUndefined(item)) {\n removeClass([item], ACTIVE$1);\n item.removeAttribute('aria-selected');\n }\n }\n setValue() {\n this.modelValue = [this.startValue, this.endValue];\n }\n applyPresetRange(values, e) {\n this.hide(null);\n this.presetsItem[this.presetsItem.length - 1].start = null;\n this.presetsItem[this.presetsItem.length - 1].end = null;\n this.startValue = values.start;\n this.endValue = values.end;\n this.setValue();\n this.refreshControl();\n this.trigger('select', this.rangeArgs(e));\n this.changeTrigger(e);\n this.previousEleValue = this.inputElement.value;\n this.isCustomRange = false;\n this.leftCalendar = this.rightCalendar = null;\n if (this.isKeyPopup) {\n this.isRangeIconClicked = false;\n this.inputElement.focus();\n }\n }\n showPopup(element, event) {\n this.presetHeight();\n if (this.zIndex === 1000) {\n this.popupObj.show(null, this.element);\n }\n else {\n this.popupObj.show(null, null);\n }\n if (this.isMobile) {\n this.popupObj.refreshPosition();\n }\n }\n renderCustomPopup() {\n this.isCustomWindow = true;\n this.popupObj.hide();\n this.popupWrapper = this.createElement('div', { id: this.element.id + '_popup', className: ROOT$2 + ' ' + POPUP$1 });\n this.renderControl();\n this.openEventArgs.appendTo.appendChild(this.popupWrapper);\n this.showPopup();\n this.isCustomRange = true;\n if (!this.isMobile) {\n this.calendarFocus();\n }\n }\n listRippleEffect() {\n for (let li of this.liCollections) {\n rippleEffect(li);\n }\n }\n createPresets() {\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label)) {\n this.presetElement = this.createElement('div', { className: PRESETS, attrs: { 'tabindex': '0' } });\n let listTag = ListBase.createList(this.createElement, this.presetsItem, null, true);\n attributes(listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options' });\n this.presetElement.appendChild(listTag);\n this.popupWrapper.appendChild(this.presetElement);\n let customElement = this.presetElement.querySelector('#custom_range');\n if (!isNullOrUndefined(customElement)) {\n customElement.textContent = this.l10n.getConstant('customRange') !== '' ? this.l10n.getConstant('customRange')\n : 'Custom Range';\n }\n this.liCollections = this.presetElement.querySelectorAll('.' + LISTCLASS);\n this.wireListEvents();\n if (this.isMobile) {\n this.presetElement.style.width = this.inputWrapper.container.getBoundingClientRect().width + 'px';\n }\n if (!isNullOrUndefined(this.activeIndex) && this.activeIndex > -1) {\n addClass([this.liCollections[this.activeIndex]], ACTIVE$1);\n }\n }\n }\n wireListEvents() {\n EventHandler.add(this.presetElement, 'click', this.onMouseClick, this);\n if (!this.isMobile) {\n EventHandler.add(this.presetElement, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.presetElement, 'mouseout', this.onMouseLeave, this);\n }\n }\n unWireListEvents() {\n if (!isNullOrUndefined(this.presetElement)) {\n EventHandler.remove(this.presetElement, 'click touchstart', this.onMouseClick);\n if (!this.isMobile) {\n EventHandler.remove(this.presetElement, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.presetElement, 'mouseout', this.onMouseLeave);\n }\n }\n }\n // tslint:disable-next-line:max-func-body-length\n renderPopup() {\n this.popupWrapper.classList.add('e-control');\n let popupWidth = this.popupWrapper.getBoundingClientRect().width;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass.trim() !== '') {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (this.isMobile && this.isCustomWindow) {\n this.modal = this.createElement('div');\n document.body.appendChild(this.modal);\n }\n this.popupObj = new Popup(this.popupWrapper, {\n relateTo: this.isMobile && this.isCustomWindow ? document.body :\n (!isNullOrUndefined(this.targetElement) ? this.targetElement : this.inputWrapper.container),\n position: (this.isMobile ?\n (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label) && !this.isCustomWindow ?\n { X: 'left', Y: 'bottom' } : { X: 'center', Y: 'center' }) :\n this.enableRtl ? { X: 'left', Y: 'bottom' } : { X: 'right', Y: 'bottom' }),\n offsetX: this.isMobile || this.enableRtl ? 0 : -popupWidth,\n offsetY: OFFSETVALUE$1,\n collision: this.isMobile ?\n (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label) && !this.isCustomWindow ?\n { X: 'fit' } : { X: 'fit', Y: 'fit' }) : { X: 'fit', Y: 'flip' },\n targetType: this.isMobile && this.isCustomWindow ? 'container' : 'relative',\n enableRtl: this.enableRtl,\n zIndex: this.zIndex,\n open: () => {\n attributes(this.inputElement, { 'aria-expanded': 'true' });\n addClass([this.inputWrapper.buttons[0]], ACTIVE$1);\n if (!this.isMobile) {\n if (this.cancelButton) {\n this.btnKeyboardModule = new KeyboardEvents(this.cancelButton.element, {\n eventName: 'keydown',\n keyAction: this.popupKeyActionHandle.bind(this),\n keyConfigs: { tab: 'tab', altRightArrow: 'alt+rightarrow', altLeftArrow: 'alt+leftarrow' }\n });\n this.btnKeyboardModule = new KeyboardEvents(this.applyButton.element, {\n eventName: 'keydown',\n keyAction: this.popupKeyActionHandle.bind(this),\n keyConfigs: { altRightArrow: 'alt+rightarrow', altLeftArrow: 'alt+leftarrow' }\n });\n }\n if (!isNullOrUndefined(this.leftCalendar)) {\n if (!this.isRangeIconClicked) {\n this.calendarFocus();\n }\n }\n if (!isNullOrUndefined(this.presetElement)) {\n this.keyInputConfigs = extend(this.keyInputConfigs, this.keyConfigs);\n this.presetKeyboardModule = new KeyboardEvents(this.presetElement, {\n eventName: 'keydown',\n keyAction: this.presetKeyActionHandler.bind(this),\n keyConfigs: this.keyInputConfigs\n });\n this.presetKeyboardModule = new KeyboardEvents(this.presetElement, {\n eventName: 'keydown',\n keyAction: this.popupKeyActionHandle.bind(this),\n keyConfigs: { altRightArrow: 'alt+rightarrow', altLeftArrow: 'alt+leftarrow' }\n });\n if (isNullOrUndefined(this.leftCalendar)) {\n this.preventBlur = true;\n this.presetElement.focus();\n }\n else {\n this.presetElement.setAttribute('tabindex', '-1');\n }\n }\n this.popupKeyBoardHandler();\n }\n if (this.isMobile && !Browser.isDevice) {\n EventHandler.add(document, 'keydown', this.popupCloseHandler, this);\n }\n },\n close: () => {\n attributes(this.inputElement, { 'aria-expanded': 'false' });\n removeClass([this.inputWrapper.buttons[0]], ACTIVE$1);\n if (this.isRangeIconClicked) {\n this.inputWrapper.container.children[1].focus();\n }\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label)) {\n this.unWireListEvents();\n }\n if (!isNullOrUndefined(this.popupObj)) {\n if (!isNullOrUndefined(this.popupObj.element.parentElement)) {\n detach(this.popupObj.element);\n }\n this.popupObj.destroy();\n this.popupObj = null;\n }\n if (this.isMobile && !Browser.isDevice) {\n EventHandler.remove(document, 'keydown', this.popupCloseHandler);\n }\n }, targetExitViewport: () => {\n if (!Browser.isDevice) {\n this.hide();\n }\n }\n });\n if (this.isMobile) {\n this.popupObj.element.classList.add(DEVICE$1);\n if (!this.isMobile) {\n this.popupObj.element.classList.add('e-bigger');\n }\n }\n if (this.isMobile && this.isCustomWindow) {\n addClass([this.modal], [DEVICE$1, ROOT$2, 'e-range-modal']);\n document.body.className += ' ' + OVERFLOW$1;\n this.modal.style.display = 'block';\n }\n EventHandler.add(document, 'mousedown touchstart', this.documentHandler, this);\n }\n popupCloseHandler(e) {\n switch (e.keyCode) {\n case 27:\n this.hide(e);\n break;\n }\n }\n calendarFocus() {\n let startDate = this.popupObj && this.popupObj.element.querySelector('.' + STARTDATE);\n if (startDate) {\n let ele = closest(startDate, '.' + RIGHTCALENDER);\n ele = isNullOrUndefined(ele) ? this.leftCalendar : ele;\n if (this.isRangeIconClicked) {\n this.inputWrapper.container.focus();\n }\n else {\n this.preventBlur = true;\n ele.children[1].firstElementChild.focus();\n }\n addClass([startDate], FOCUSDATE);\n }\n else {\n if (this.isRangeIconClicked) {\n this.inputWrapper.container.focus();\n }\n else {\n this.preventBlur = true;\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n }\n }\n presetHeight() {\n let presets = this.popupObj && this.popupObj.element.querySelector('.' + PRESETS);\n let rangeContainer = this.popupObj && this.popupObj.element.querySelector('.' + RANGECONTAINER);\n if (!isNullOrUndefined(presets) && !isNullOrUndefined(rangeContainer)) {\n presets.style.height = rangeContainer.getBoundingClientRect().height + 'px';\n }\n }\n presetKeyActionHandler(e) {\n switch (e.action) {\n case 'moveDown':\n this.listMoveDown(e);\n this.setScrollPosition();\n e.preventDefault();\n break;\n case 'moveUp':\n this.listMoveUp(e);\n this.setScrollPosition();\n e.preventDefault();\n break;\n case 'enter':\n let hvrItem = this.getHoverLI();\n let actItem = this.getActiveLI();\n if (!isNullOrUndefined(this.leftCalendar) && !isNullOrUndefined(actItem)) {\n if (isNullOrUndefined(hvrItem) || (!isNullOrUndefined(actItem) && actItem === hvrItem)) {\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(actItem);\n let values = this.presetsItem[this.activeIndex];\n if (values.id === 'custom_range') {\n this.calendarFocus();\n actItem.classList.remove(HOVER);\n e.preventDefault();\n return;\n }\n }\n }\n if (!isNullOrUndefined(hvrItem) || !isNullOrUndefined(actItem)) {\n this.onMouseClick(e, hvrItem || actItem);\n }\n e.preventDefault();\n break;\n case 'tab':\n if (this.leftCalendar) {\n let item = this.getHoverLI();\n if (!isNullOrUndefined(item)) {\n item.classList.remove(HOVER);\n }\n }\n else {\n this.hide(e);\n e.preventDefault();\n }\n break;\n }\n }\n listMoveDown(e) {\n let hvrItem = this.getHoverLI();\n let actItem = this.getActiveLI();\n if (!isNullOrUndefined(hvrItem)) {\n let li = hvrItem.nextElementSibling;\n if (!isNullOrUndefined(li) && li.classList.contains(LISTCLASS)) {\n removeClass([hvrItem], HOVER);\n addClass([li], HOVER);\n }\n }\n else if (!isNullOrUndefined(actItem)) {\n let li = actItem.nextElementSibling;\n if (!isNullOrUndefined(li) && li.classList.contains(LISTCLASS)) {\n addClass([li], HOVER);\n }\n }\n else {\n addClass([this.liCollections[0]], HOVER);\n }\n }\n listMoveUp(e) {\n let hvrItem = this.getHoverLI();\n let actItem = this.getActiveLI();\n if (!isNullOrUndefined(hvrItem)) {\n let li = hvrItem.previousElementSibling;\n if (!isNullOrUndefined(li) && li.classList.contains(LISTCLASS)) {\n removeClass([hvrItem], HOVER);\n addClass([li], HOVER);\n }\n }\n else if (!isNullOrUndefined(actItem)) {\n let li = actItem.previousElementSibling;\n if (!isNullOrUndefined(li) && li.classList.contains(LISTCLASS)) {\n addClass([li], HOVER);\n }\n }\n }\n getHoverLI() {\n let item = this.presetElement.querySelector('.' + HOVER);\n return item;\n }\n getActiveLI() {\n let item = this.presetElement.querySelector('.' + ACTIVE$1);\n return item;\n }\n popupKeyBoardHandler() {\n this.popupKeyboardModule = new KeyboardEvents(this.popupWrapper, {\n eventName: 'keydown',\n keyAction: this.popupKeyActionHandle.bind(this),\n keyConfigs: { escape: 'escape' }\n });\n this.keyInputConfigs = extend(this.keyInputConfigs, this.keyConfigs);\n this.popupKeyboardModule = new KeyboardEvents(this.inputWrapper.container.children[1], {\n eventName: 'keydown',\n keyAction: this.popupKeyActionHandle.bind(this),\n keyConfigs: this.keyInputConfigs\n });\n }\n setScrollPosition() {\n let listHeight = this.presetElement.getBoundingClientRect().height;\n let hover = this.presetElement.querySelector('.' + HOVER);\n let active = this.presetElement.querySelector('.' + ACTIVE$1);\n let element = !isNullOrUndefined(hover) ? hover : active;\n if (!isNullOrUndefined(element)) {\n let nextEle = element.nextElementSibling;\n let height = nextEle ? nextEle.offsetTop : element.offsetTop;\n let liHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n this.presetElement.scrollTop = nextEle ? (height - (listHeight / 2 + liHeight / 2)) : height;\n }\n else {\n this.presetElement.scrollTop = 0;\n }\n }\n }\n popupKeyActionHandle(e) {\n let presetElement = closest(e.target, '.' + PRESETS);\n switch (e.action) {\n case 'escape':\n if (this.isPopupOpen()) {\n if (this.isKeyPopup) {\n this.inputElement.focus();\n this.isKeyPopup = false;\n }\n this.hide(e);\n }\n else {\n this.inputWrapper.container.children[1].blur();\n }\n break;\n case 'enter':\n if (!this.isPopupOpen()) {\n this.show(null, e);\n }\n else {\n this.inputWrapper.container.children[1].focus();\n }\n break;\n case 'tab':\n this.hide(e);\n break;\n case 'altRightArrow':\n if (!isNullOrUndefined(presetElement)) {\n this.cancelButton.element.focus();\n }\n else {\n if (document.activeElement === this.cancelButton.element && this.applyButton.element.disabled !== true) {\n this.applyButton.element.focus();\n }\n else {\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n }\n e.preventDefault();\n break;\n case 'altLeftArrow':\n if (!isNullOrUndefined(presetElement)) {\n this.rightCalendar.children[1].firstElementChild.focus();\n }\n else {\n if (document.activeElement === this.applyButton.element && this.applyButton.element.disabled !== true) {\n this.cancelButton.element.focus();\n }\n else {\n if (!isNullOrUndefined(this.presetElement) && (document.activeElement === this.cancelButton.element)) {\n this.presetElement.focus();\n }\n else {\n this.rightCalendar.children[1].firstElementChild.focus();\n }\n }\n }\n e.preventDefault();\n break;\n }\n }\n documentHandler(e) {\n if (isNullOrUndefined(this.popupObj)) {\n return;\n }\n let target = e.target;\n if (!this.inputWrapper.container.contains(target) ||\n (!isNullOrUndefined(this.popupObj) && !closest(target, this.popupWrapper.id))) {\n if (e.type !== 'touchstart' && ((e.type === 'mousedown') ||\n this.closeEventArgs && !this.closeEventArgs.cancel)) {\n e.preventDefault();\n }\n }\n if ((isNullOrUndefined(this.targetElement) ||\n (!isNullOrUndefined(this.targetElement) && !(target === this.targetElement))) &&\n !(closest(target, '#' + this.popupObj.element.id))\n && !(closest(target, '.' + INPUTCONTAINER$1) === this.inputWrapper.container)\n && !(closest(target, '.e-daterangepicker.e-popup') && (!target.classList.contains('e-day')))) {\n this.preventBlur = false;\n if (this.isPopupOpen() && document.body.contains(this.popupObj.element)) {\n this.applyFunction(e);\n if (!this.isMobile) {\n this.isRangeIconClicked = false;\n }\n }\n }\n }\n createInput() {\n let updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n floatLabelType: this.floatLabelType,\n element: this.inputElement,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValue,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton,\n },\n buttons: [DATERANGEICON]\n }, this.createElement);\n attributes(this.inputElement, {\n 'aria-readonly': this.readonly ? 'true' : 'false', 'tabindex': '0', 'aria-haspopup': 'true',\n 'aria-activedescendant': 'null', 'aria-owns': this.element.id + '_popup', 'aria-expanded': 'false',\n 'role': 'combobox', 'autocomplete': 'off', 'aria-disabled': !this.enabled ? 'true' : 'false',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false'\n });\n Input.addAttributes({ 'aria-label': 'select' }, this.inputWrapper.buttons[0]);\n if (!isNullOrUndefined(this.placeholder) && this.placeholder.trim() !== '') {\n Input.addAttributes({ 'aria-placeholder': this.placeholder }, this.inputElement);\n }\n this.setEleWidth(this.width);\n addClass([this.inputWrapper.container], DATERANGEWRAPPER);\n if (isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n attributes(this.inputElement, { 'name': this.element.id });\n }\n if (this.inputElement.type === 'hidden') {\n this.inputWrapper.container.style.display = 'none';\n }\n this.refreshControl();\n this.previousEleValue = this.inputElement.value;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.startCopy = this.startDate;\n this.endCopy = this.endDate;\n }\n setEleWidth(width) {\n if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (this.width);\n }\n else if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(this.width);\n }\n else {\n this.inputWrapper.container.style.width = '100%';\n }\n }\n adjustLongHeaderWidth() {\n if (this.dayHeaderFormat === 'Wide') {\n addClass([this.popupWrapper], DAYHEADERLONG$1);\n }\n }\n refreshControl() {\n this.validateMinMax();\n if (this.strictMode) {\n this.validateRangeStrict();\n }\n let isDisabled = this.disabledDates();\n if (this.strictMode && (isDisabled)) {\n this.startValue = this.previousStartValue;\n this.setProperties({ startDate: this.startValue }, true);\n this.endValue = this.previousEndValue;\n this.setProperties({ endDate: this.endValue }, true);\n this.setValue();\n }\n this.updateInput();\n if (!this.strictMode) {\n this.validateRange();\n }\n if (!this.strictMode && (isDisabled)) {\n this.clearRange();\n }\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) && !isDisabled) {\n this.disabledDateRender();\n }\n this.errorClass();\n this.previousStartValue = isNullOrUndefined(this.startValue) || isNaN(+this.startValue) ? null : new Date(+this.startValue);\n this.previousEndValue = isNullOrUndefined(this.endValue) || isNaN(+this.endValue) ? null : new Date(+this.endValue);\n }\n updateInput() {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n let formatOption = { format: this.formatString, type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' };\n let startDate = this.globalize.formatDate(this.startValue, formatOption);\n let endDate = this.globalize.formatDate(this.endValue, formatOption);\n Input.setValue(startDate + ' ' + this.separator + ' ' + endDate, this.inputElement, this.floatLabelType, this.showClearButton);\n this.previousStartValue = new Date(+this.startValue);\n this.previousEndValue = new Date(+this.endValue);\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n Input.setValue(this.invalidValueString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n checkInvalidRange(value) {\n if (!isNullOrUndefined(value)) {\n let invalid = false;\n let startinvalue;\n let endinvalue;\n let startString = null;\n let endString = null;\n let valueString = null;\n let startObject = false;\n let endObject = false;\n let invalidobject = false;\n if (typeof (value) === 'string') {\n let range = value.split(' ' + this.separator + ' ');\n if (range.length === 2) {\n startString = range[0];\n endString = range[1];\n }\n else {\n invalid = true;\n valueString = value;\n }\n }\n else {\n if (value.length > 0) {\n startinvalue = value[0];\n endinvalue = value[1];\n }\n else {\n startinvalue = value.start;\n endinvalue = value.end;\n }\n if (!(startinvalue instanceof Date) && typeof (startinvalue) !== 'object') {\n startString = this.getstringvalue(startinvalue);\n }\n else if (startinvalue instanceof Date) {\n startObject = true;\n }\n else if (!isNullOrUndefined(startinvalue)) {\n invalidobject = true;\n }\n if (!(endinvalue instanceof Date) && typeof (endinvalue) !== 'object') {\n endString = this.getstringvalue(endinvalue);\n }\n else if (endinvalue instanceof Date) {\n endObject = true;\n }\n else if (!isNullOrUndefined(endinvalue)) {\n invalidobject = true;\n }\n }\n if ((isNullOrUndefined(startString) && !startObject && !isNullOrUndefined(endString)) ||\n (!isNullOrUndefined(startString) && !endObject && isNullOrUndefined(endString))) {\n invalid = true;\n }\n if (invalidobject) {\n startString = endString = valueString = null;\n invalid = true;\n }\n if (startString) {\n invalid = invalid || this.checkInvalidValue(startString);\n }\n if (endString) {\n invalid = invalid || this.checkInvalidValue(endString);\n }\n if (invalid) {\n if (startObject && !invalidobject) {\n startString = startinvalue.toLocaleDateString();\n }\n if (endObject && !invalidobject) {\n endString = endinvalue.toLocaleDateString();\n }\n if (!isNullOrUndefined(startString) && !isNullOrUndefined(endString)) {\n valueString = startString + ' ' + this.separator + ' ' + endString;\n }\n else if (!isNullOrUndefined(startString)) {\n valueString = startString;\n }\n else if (!isNullOrUndefined(endString)) {\n valueString = endString;\n }\n this.invalidValueString = valueString;\n this.setProperties({ value: null }, true);\n this.setProperties({ startValue: null }, true);\n this.setProperties({ endValue: null }, true);\n this.startDate = null;\n this.endDate = null;\n }\n }\n }\n getstringvalue(value) {\n let stringValue = null;\n if (!isNullOrUndefined(value) && (typeof value === 'number')) {\n stringValue = (value).toString();\n }\n else if (!isNullOrUndefined(value) && (typeof value === 'string')) {\n stringValue = '' + value;\n }\n return stringValue;\n }\n checkInvalidValue(value) {\n let valueString = value;\n let invalid = false;\n let formatOpt = null;\n formatOpt = { format: this.formatString, type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' };\n if (typeof valueString !== 'string') {\n invalid = true;\n }\n else {\n let globalize = new Internationalization(this.locale);\n if (!this.checkDateValue(globalize.parseDate(valueString, formatOpt))) {\n let extISOStr = null;\n let basISOString = null;\n // tslint:disable-next-line\n extISOStr = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // tslint:disable-next-line\n basISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOStr.test(valueString) && !basISOString.test(valueString))\n || (/^[a-zA-Z0-9- ]*$/).test(valueString) || isNaN(+new Date(this.checkValue(valueString)))) {\n invalid = true;\n }\n }\n }\n return invalid;\n }\n isDateDisabled(date) {\n if (isNullOrUndefined(date)) {\n return false;\n }\n let value = new Date(+date);\n if (+value < +this.min || +value > +this.max) {\n return true;\n }\n this.virtualRenderCellArgs = {\n date: value,\n isDisabled: false,\n };\n let args = this.virtualRenderCellArgs;\n this.virtualRenderCellEvent(args);\n if (args.isDisabled) {\n return true;\n }\n return false;\n }\n disabledDateRender() {\n this.disabledDays = [];\n this.disabledDayCnt = null;\n let localDate = new Date(+this.startValue);\n let count = 0;\n while (+localDate <= +this.endValue) {\n this.virtualRenderCellArgs = {\n date: localDate,\n isDisabled: false,\n };\n let args = this.virtualRenderCellArgs;\n this.virtualRenderCellEvent(args);\n if (args.isDisabled) {\n this.disabledDays.push(new Date(+args.date));\n if (+localDate > +this.startValue && +localDate < +this.endValue) {\n count++;\n }\n }\n this.addDay(localDate, 1, null, this.max, this.min);\n }\n this.disabledDayCnt = count;\n }\n virtualRenderCellEvent(args) {\n extend(this.virtualRenderCellArgs, { name: 'renderDayCell' });\n this.trigger('renderDayCell', args);\n }\n disabledDates() {\n let isStartDisabled = false;\n let isEndDisabled = false;\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n isStartDisabled = this.isDateDisabled(this.startValue);\n isEndDisabled = this.isDateDisabled(this.endValue);\n if (!this.isPopupOpen()) {\n this.currentDate = null;\n }\n this.setValue();\n }\n return (isStartDisabled || isEndDisabled);\n }\n setModelValue() {\n if (!this.value && this.startDate === null && this.endDate === null) {\n this.setProperties({ value: null }, true);\n }\n else if (this.value === null || this.value.start === null) {\n if (this.value === null) {\n this.setProperties({ value: [this.startDate, this.endDate] }, true);\n }\n else if (this.value.start === null) {\n this.setProperties({ value: { start: this.startDate, end: this.endDate } }, true);\n }\n }\n else {\n if ((this.value && this.value.length > 0) ||\n this.valueType && this.valueType.length > 0) {\n if (+this.startDate !== +this.value[0] || +this.endDate !== +this.value[1]) {\n this.setProperties({ value: [this.startDate, this.endDate] }, true);\n }\n if (this.value && this.value[0] == null && this.value[1] == null) {\n this.setProperties({ value: null }, true);\n }\n }\n else {\n if ((this.value && this.value.start)) {\n this.setProperties({ value: { start: this.startDate, end: this.endDate } }, true);\n }\n }\n }\n this.createHiddenInput();\n }\n /**\n * To dispatch the event manually\n */\n dispatchEvent(element, type) {\n let evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n element.dispatchEvent(evt);\n this.firstHiddenChild.dispatchEvent(evt);\n }\n changeTrigger(e) {\n if (+this.initStartDate !== +this.startValue || +this.initEndDate !== +this.endValue) {\n this.setProperties({ endDate: this.checkDateValue(this.endValue) }, true);\n this.setProperties({ startDate: this.checkDateValue(this.startValue) }, true);\n this.setModelValue();\n this.trigger('change', this.rangeArgs(e));\n }\n this.previousEleValue = this.inputElement.value;\n this.initStartDate = this.checkDateValue(this.startValue);\n this.initEndDate = this.checkDateValue(this.endValue);\n }\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @returns void\n * @hidden\n */\n navigateTo(view, date) {\n if (this.isPopupOpen()) {\n if (view.toLowerCase() === 'month') {\n view = 'Month';\n }\n else if (view.toLowerCase() === 'year') {\n view = 'Year';\n }\n else if (view.toLowerCase() === 'decade') {\n view = 'Decade';\n }\n else {\n return;\n }\n if (this.getViewNumber(view) < this.getViewNumber(this.depth)) {\n view = this.depth;\n }\n if (this.isMobile) {\n super.navigateTo.call(this, view, date);\n }\n else {\n if (date < this.min) {\n date = new Date(+this.min);\n }\n else if (date >= this.max) {\n date = new Date(+this.max);\n }\n if (view === 'Month' && this.isSameMonth(date, this.max)) {\n date = new Date(this.max.getFullYear(), this.max.getMonth() - 1, this.min.getDate());\n }\n else if (view === 'Year' && this.isSameYear(date, this.max)) {\n date = new Date((this.max.getFullYear() - 1), this.max.getMonth(), this.max.getDate());\n }\n else if (view === 'Decade' && this.isSameDecade(date, this.max)) {\n date = new Date((this.max.getFullYear() - 10), this.max.getMonth(), this.max.getDate());\n }\n this.leftCalCurrentDate = date;\n this.navigate(this.leftCalendar, this.leftCalCurrentDate, view);\n if (view === 'Month') {\n date = new Date(this.currentDate.setMonth(this.currentDate.getMonth() + 1));\n }\n else if (view === 'Year') {\n date = new Date(this.currentDate.setFullYear(this.currentDate.getFullYear() + 1));\n }\n else {\n date = new Date(this.currentDate.setFullYear(this.currentDate.getFullYear() + 10));\n }\n this.rightCalCurrentDate = date;\n this.navigate(this.rightCalendar, this.rightCalCurrentDate, view);\n this.leftKeyboardModule = this.rightKeyboardModule = null;\n this.updateNavIcons();\n }\n if (this.currentView() === this.depth) {\n this.bindCalendarCellEvents();\n }\n this.removeFocusedDate();\n this.updateRange((this.isMobile ? [this.calendarElement] : [this.leftCalendar, this.rightCalendar]));\n }\n }\n navigate(calendar, date, view) {\n this.calendarElement = calendar;\n this.table = calendar.querySelector('table');\n this.tableBodyElement = calendar.querySelector('tbody');\n this.headerTitleElement = calendar.querySelector('.e-title');\n this.tableHeadElement = calendar.querySelector('thead');\n this.contentElement = calendar.querySelector('.e-content');\n this.previousIcon = calendar.querySelector('.e-prev');\n this.nextIcon = calendar.querySelector('.e-next');\n this.effect = ZOOMIN$1;\n super.navigateTo.call(this, view, date);\n }\n /**\n * Sets the focus to widget for interaction.\n * @returns void\n */\n focusIn() {\n if (document.activeElement !== this.inputElement && this.enabled) {\n addClass([this.inputWrapper.container], [INPUTFOCUS$1]);\n this.inputElement.focus();\n \n }\n }\n /**\n * Remove the focus from widget, if the widget is in focus state.\n * @returns void\n */\n focusOut() {\n let isBlur = this.preventBlur;\n if (document.activeElement === this.inputElement) {\n removeClass([this.inputWrapper.container], [INPUTFOCUS$1]);\n this.preventBlur = false;\n this.inputElement.blur();\n this.preventBlur = isBlur;\n }\n }\n /**\n * To destroy the widget.\n * @returns void\n */\n destroy() {\n this.hide(null);\n let ariaAttrs = {\n 'aria-readonly': this.readonly ? 'true' : 'false', 'tabindex': '0', 'aria-haspopup': 'true',\n 'aria-activedescendant': 'null', 'aria-owns': this.element.id + '_popup', 'aria-expanded': 'false',\n 'role': 'combobox', 'autocomplete': 'off', 'aria-disabled': !this.enabled ? 'true' : 'false',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'aria-invalid': 'false', 'spellcheck': 'false'\n };\n if (this.inputElement) {\n removeClass([this.inputElement], [ROOT$2]);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n Input.removeAttributes(ariaAttrs, this.inputElement);\n (!isNullOrUndefined(this.cloneElement.getAttribute('tabindex'))) ?\n this.inputElement.setAttribute('tabindex', this.tabIndex) : this.inputElement.removeAttribute('tabindex');\n this.ensureInputAttribute();\n this.inputElement.classList.remove('e-input');\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.rangeIconHandler);\n if (this.angularTag === null) {\n this.inputWrapper.container.parentElement.appendChild(this.inputElement);\n }\n detach(this.inputWrapper.container);\n }\n }\n if (!isNullOrUndefined(this.inputKeyboardModule) && !this.isMobile) {\n this.inputKeyboardModule.destroy();\n }\n if (this.popupObj) {\n if (!this.isMobile) {\n this.clearCalendarEvents();\n }\n }\n super.destroy();\n this.inputWrapper = this.popupWrapper = this.popupObj = this.cloneElement = this.presetElement = null;\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n if ((!isNullOrUndefined(this.firstHiddenChild))\n && (!isNullOrUndefined(this.secondHiddenChild))) {\n detach(this.firstHiddenChild);\n detach(this.secondHiddenChild);\n this.firstHiddenChild = this.secondHiddenChild = null;\n this.inputElement.setAttribute('name', this.element.getAttribute('data-name'));\n this.inputElement.removeAttribute('data-name');\n }\n }\n ensureInputAttribute() {\n let attr = [];\n for (let i = 0; i < this.inputElement.attributes.length; i++) {\n attr[i] = this.inputElement.attributes[i].name;\n }\n for (let i = 0; i < attr.length; i++) {\n if (isNullOrUndefined(this.cloneElement.getAttribute(attr[i]))) {\n if (attr[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n this.inputElement.removeAttribute(attr[i]);\n }\n else {\n if (attr[i].toLowerCase() === 'value') {\n this.inputElement.value = this.cloneElement.getAttribute(attr[i]);\n }\n this.inputElement.setAttribute(attr[i], this.cloneElement.getAttribute(attr[i]));\n }\n }\n }\n /**\n * To get component name\n * @returns string\n * @private\n */\n getModuleName() {\n return 'daterangepicker';\n }\n /**\n * Return the properties that are maintained upon browser refresh.\n * @returns string\n */\n getPersistData() {\n let keyEntity = ['startDate', 'endDate', 'value'];\n return this.addOnPersist(keyEntity);\n }\n /**\n * Return the selected range and day span in the DateRangePicker.\n * @returns Object\n */\n getSelectedRange() {\n let range;\n if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n range = (Math.round(Math.abs((this.startValue.getTime() - this.endValue.getTime()) / (1000 * 60 * 60 * 24))) + 1);\n this.disabledDateRender();\n if (!isNullOrUndefined(this.disabledDayCnt)) {\n range = range - this.disabledDayCnt;\n this.disabledDayCnt = null;\n }\n }\n else {\n range = 0;\n }\n return { startDate: this.startValue, endDate: this.endValue, daySpan: range };\n }\n /**\n * To open the Popup container in the DateRangePicker component.\n * @returns void\n */\n show(element, event) {\n if (this.isMobile && this.popupObj) {\n this.popupObj.refreshPosition();\n }\n if ((this.enabled && this.readonly) || !this.enabled || this.popupObj) {\n return;\n }\n else {\n if (!this.isPopupOpen()) {\n if (element) {\n this.targetElement = element;\n }\n this.createPopup();\n if (this.isMobile || Browser.isDevice) {\n this.mobileRangePopupWrap = this.createElement('div', { className: 'e-daterangepick-mob-popup-wrap' });\n document.body.appendChild(this.mobileRangePopupWrap);\n }\n this.openEventArgs = {\n popup: (isBlazor() && this.isServerRendered) ? null : this.popupObj || null,\n cancel: false,\n date: this.inputElement.value,\n model: (isBlazor() && this.isServerRendered) ? null : this,\n event: event ? event : null,\n appendTo: this.isMobile || Browser.isDevice ? this.mobileRangePopupWrap : document.body\n };\n let eventArgs = this.openEventArgs;\n this.trigger('open', eventArgs, (eventArgs) => {\n this.openEventArgs = eventArgs;\n if (!this.openEventArgs.cancel) {\n this.openEventArgs.appendTo.appendChild(this.popupWrapper);\n this.showPopup(element, event);\n let isPreset = (!this.isCustomRange || (this.isMobile && this.isCustomRange));\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label) && isPreset) {\n this.setScrollPosition();\n }\n this.checkMinMaxDays();\n if ((this.isMobile) && (!isNullOrUndefined(this.startDate)) && (isNullOrUndefined(this.endDate))) {\n this.endButton.element.classList.add(ACTIVE$1);\n this.startButton.element.classList.remove(ACTIVE$1);\n this.endButton.element.removeAttribute('disabled');\n this.selectableDates();\n }\n super.setOverlayIndex(this.mobileRangePopupWrap, this.popupObj.element, this.modal, this.isMobile || Browser.isDevice);\n }\n });\n }\n }\n }\n /**\n * To close the Popup container in the DateRangePicker component.\n * @returns void\n */\n hide(event) {\n if (this.popupObj) {\n if (isNullOrUndefined(this.previousEndValue) && isNullOrUndefined(this.previousStartValue)) {\n this.clearRange();\n }\n else {\n if (!isNullOrUndefined(this.previousStartValue)) {\n this.startValue = new Date(this.checkValue(this.previousStartValue));\n this.setValue();\n this.currentDate = new Date(this.checkValue(this.startValue));\n }\n else {\n this.startValue = null;\n this.setValue();\n }\n if (!isNullOrUndefined(this.previousEndValue)) {\n this.endValue = new Date(this.checkValue(this.previousEndValue));\n this.setValue();\n }\n else {\n this.endValue = null;\n this.setValue();\n }\n }\n if (this.isPopupOpen()) {\n this.closeEventArgs = {\n cancel: false,\n popup: (isBlazor() && this.isServerRendered) ? null : this.popupObj,\n date: this.inputElement.value,\n model: (isBlazor() && this.isServerRendered) ? null : this,\n event: event ? event : null\n };\n let eventArgs = this.closeEventArgs;\n this.trigger('close', eventArgs, (eventArgs) => {\n this.closeEventArgs = eventArgs;\n if (!this.closeEventArgs.cancel) {\n if (this.isMobile) {\n if (!isNullOrUndefined(this.startButton) && !isNullOrUndefined(this.endButton)) {\n EventHandler.remove(this.startButton.element, 'click touchstart', this.deviceHeaderClick);\n EventHandler.remove(this.endButton.element, 'click touchstart', this.deviceHeaderClick);\n }\n }\n if (this.popupObj) {\n this.popupObj.hide();\n if (this.preventBlur) {\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS$1]);\n }\n }\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.leftKeyboardModule) && !isNullOrUndefined(this.rightKeyboardModule)) {\n this.leftKeyboardModule.destroy();\n this.rightKeyboardModule.destroy();\n }\n if (!isNullOrUndefined(this.presetElement)) {\n this.presetKeyboardModule.destroy();\n }\n if (!isNullOrUndefined(this.cancelButton)) {\n this.btnKeyboardModule.destroy();\n }\n }\n this.targetElement = null;\n removeClass([document.body], OVERFLOW$1);\n EventHandler.remove(document, 'mousedown touchstart', this.documentHandler);\n if (this.isMobile && this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n if (this.isMobile || Browser.isDevice) {\n if (!isNullOrUndefined(this.mobileRangePopupWrap)) {\n this.mobileRangePopupWrap.remove();\n this.mobileRangePopupWrap = null;\n }\n }\n this.isKeyPopup = this.dateDisabled = false;\n }\n else {\n removeClass([this.inputWrapper.buttons[0]], ACTIVE$1);\n }\n this.updateClearIconState();\n this.updateHiddenInput();\n if (this.isMobile && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n });\n }\n }\n else {\n this.updateClearIconState();\n this.updateHiddenInput();\n if (this.isMobile && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n }\n setLocale() {\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n this.updateInput();\n this.updateHiddenInput();\n this.changeTrigger();\n }\n refreshChange() {\n this.checkView();\n this.refreshControl();\n this.changeTrigger();\n }\n setDate() {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n this.refreshChange();\n }\n enableInput() {\n if (+this.min <= +this.max) {\n this.setProperties({ enabled: true }, true);\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.element.hasAttribute('disabled')) {\n this.bindEvents();\n }\n }\n }\n clearModelvalue(newProp, oldProp) {\n this.setProperties({ startDate: null }, true);\n this.setProperties({ endDate: null }, true);\n if (oldProp.value && oldProp.value.length > 0) {\n this.setProperties({ value: null }, true);\n }\n else if (oldProp.value && oldProp.value.start) {\n this.setProperties({ value: { start: null, end: null } }, true);\n }\n else if (oldProp.value && !oldProp.value.start) {\n this.setProperties({ value: { start: null, end: null } }, true);\n }\n this.updateValue();\n this.setDate();\n }\n createHiddenInput() {\n if (isNullOrUndefined(this.firstHiddenChild) && isNullOrUndefined(this.secondHiddenChild)) {\n this.firstHiddenChild = this.createElement('input');\n this.secondHiddenChild = this.createElement('input');\n }\n if (!isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n this.inputElement.setAttribute('data-name', this.inputElement.getAttribute('name'));\n this.inputElement.removeAttribute('name');\n }\n attributes(this.firstHiddenChild, {\n 'type': 'text', 'name': this.inputElement.getAttribute('data-name'), 'class': HIDDENELEMENT\n });\n attributes(this.secondHiddenChild, {\n 'type': 'text', 'name': this.inputElement.getAttribute('data-name'), 'class': HIDDENELEMENT\n });\n let format = { type: 'datetime', skeleton: isBlazor() ? 'd' : 'yMd' };\n this.firstHiddenChild.value = this.startDate && this.globalize.formatDate(this.startDate, format);\n this.secondHiddenChild.value = this.endDate && this.globalize.formatDate(this.endDate, format);\n this.inputElement.parentElement.appendChild(this.firstHiddenChild);\n this.inputElement.parentElement.appendChild(this.secondHiddenChild);\n }\n /**\n * Called internally if any of the property value changed.\n * returns void\n * @private\n */\n // tslint:disable-next-line:max-func-body-length\n onPropertyChanged(newProp, oldProp) {\n let format = { format: this.formatString, type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' };\n for (let prop of Object.keys(newProp)) {\n this.hide(null);\n switch (prop) {\n case 'width':\n this.setEleWidth(this.width);\n break;\n case 'separator':\n this.previousEleValue = this.inputElement.value;\n this.setProperties({ separator: newProp.separator }, true);\n this.updateInput();\n this.changeTrigger();\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n this.setProperties({ placeholder: newProp.placeholder }, true);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n this.inputElement.setAttribute('aria-readonly', '' + this.readonly);\n this.setRangeAllowEdit();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n this.setProperties({ enabled: newProp.enabled }, true);\n Input.setEnabled(this.enabled, this.inputElement);\n this.bindEvents();\n break;\n case 'allowEdit':\n this.setRangeAllowEdit();\n break;\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkFormat();\n this.updateInput();\n this.changeTrigger();\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n this.setLocale();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.setDataAttribute(true);\n this.checkHtmlAttributes(true);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n break;\n case 'startDate':\n if (typeof newProp.startDate === 'string') {\n newProp.startDate = this.globalize.parseDate(newProp.startDate, format);\n }\n if (+this.initStartDate !== +newProp.startDate) {\n this.startValue = this.checkDateValue(new Date(this.checkValue(newProp.startDate)));\n this.setDate();\n this.setValue();\n }\n break;\n case 'endDate':\n if (typeof newProp.endDate === 'string') {\n newProp.endDate = this.globalize.parseDate(newProp.endDate, format);\n }\n if (+this.initEndDate !== +newProp.endDate) {\n this.endValue = this.checkDateValue(new Date(this.checkValue(newProp.endDate)));\n this.setDate();\n this.setValue();\n }\n break;\n case 'value':\n this.invalidValueString = null;\n this.checkInvalidRange(newProp.value);\n if (typeof (newProp.value) === 'string') {\n if (!this.invalidValueString) {\n let rangeArray = newProp.value.split(' ' + this.separator + ' ');\n this.value = [new Date(rangeArray[0]), new Date(rangeArray[1])];\n this.updateValue();\n this.setDate();\n }\n else {\n this.clearModelvalue(newProp, oldProp);\n }\n }\n else {\n if ((!isNullOrUndefined(newProp.value) && newProp.value.length > 0)\n || !isNullOrUndefined(newProp.value) && newProp.value.start) {\n this.valueType = newProp.value;\n if (newProp.value[0] === null || (newProp.value.start === null)) {\n if (newProp.value.length === 1 || (newProp.value.start)) {\n this.clearModelvalue(newProp, oldProp);\n }\n else if (newProp.value[1] === null ||\n (newProp.value.start === null)) {\n this.clearModelvalue(newProp, oldProp);\n }\n }\n else if ((+this.initStartDate !== +newProp.value[0]\n || +this.initEndDate !== +newProp.value[1]) ||\n (+this.initStartDate !== +(newProp.value.start\n || +this.initEndDate !== +newProp.value.start))) {\n if (newProp.value.length === 1) {\n this.modelValue = newProp.value;\n }\n else if (newProp.value.start) {\n this.modelValue = newProp.value;\n }\n this.updateValue();\n this.setDate();\n }\n }\n else {\n if (isNullOrUndefined(this.value)\n || newProp.value.start == null) {\n this.valueType = newProp.value;\n this.startValue = null;\n this.endValue = null;\n this.clearModelvalue(newProp, oldProp);\n }\n }\n }\n break;\n case 'minDays':\n this.setProperties({ minDays: newProp.minDays }, true);\n this.refreshChange();\n break;\n case 'maxDays':\n this.setProperties({ maxDays: newProp.maxDays }, true);\n this.refreshChange();\n break;\n case 'min':\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(newProp.min))) }, true);\n this.previousEleValue = this.inputElement.value;\n this.enableInput();\n this.refreshChange();\n break;\n case 'max':\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(newProp.max))) }, true);\n this.enableInput();\n this.refreshChange();\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.setProperties({ strictMode: newProp.strictMode }, true);\n this.refreshChange();\n break;\n case 'presets':\n this.setProperties({ presets: newProp.presets }, true);\n this.processPresets();\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n break;\n case 'start':\n this.setProperties({ start: newProp.start }, true);\n this.refreshChange();\n break;\n case 'depth':\n this.setProperties({ depth: newProp.depth }, true);\n this.refreshChange();\n break;\n }\n }\n }\n};\n__decorate$2([\n Property(null)\n], DateRangePicker.prototype, \"value\", void 0);\n__decorate$2([\n Property(false)\n], DateRangePicker.prototype, \"enablePersistence\", void 0);\n__decorate$2([\n Property(new Date(1900, 0, 1))\n], DateRangePicker.prototype, \"min\", void 0);\n__decorate$2([\n Property(new Date(2099, 11, 31))\n], DateRangePicker.prototype, \"max\", void 0);\n__decorate$2([\n Property(null)\n], DateRangePicker.prototype, \"locale\", void 0);\n__decorate$2([\n Property(null)\n], DateRangePicker.prototype, \"firstDayOfWeek\", void 0);\n__decorate$2([\n Property(false)\n], DateRangePicker.prototype, \"weekNumber\", void 0);\n__decorate$2([\n Property('Gregorian')\n], DateRangePicker.prototype, \"calendarMode\", void 0);\n__decorate$2([\n Property(false)\n], DateRangePicker.prototype, \"openOnFocus\", void 0);\n__decorate$2([\n Event()\n], DateRangePicker.prototype, \"created\", void 0);\n__decorate$2([\n Event()\n], DateRangePicker.prototype, \"destroyed\", void 0);\n__decorate$2([\n Event()\n], DateRangePicker.prototype, \"change\", void 0);\n__decorate$2([\n Event()\n], DateRangePicker.prototype, \"cleared\", void 0);\n__decorate$2([\n Event()\n], DateRangePicker.prototype, \"navigated\", void 0);\n__decorate$2([\n Event()\n], DateRangePicker.prototype, \"renderDayCell\", void 0);\n__decorate$2([\n Property(null)\n], DateRangePicker.prototype, \"startDate\", void 0);\n__decorate$2([\n Property(null)\n], DateRangePicker.prototype, \"endDate\", void 0);\n__decorate$2([\n Collection([{}], Presets)\n], DateRangePicker.prototype, \"presets\", void 0);\n__decorate$2([\n Property('')\n], DateRangePicker.prototype, \"width\", void 0);\n__decorate$2([\n Property(1000)\n], DateRangePicker.prototype, \"zIndex\", void 0);\n__decorate$2([\n Property(true)\n], DateRangePicker.prototype, \"showClearButton\", void 0);\n__decorate$2([\n Property(true)\n], DateRangePicker.prototype, \"showTodayButton\", void 0);\n__decorate$2([\n Property('Month')\n], DateRangePicker.prototype, \"start\", void 0);\n__decorate$2([\n Property('Month')\n], DateRangePicker.prototype, \"depth\", void 0);\n__decorate$2([\n Property('')\n], DateRangePicker.prototype, \"cssClass\", void 0);\n__decorate$2([\n Property('-')\n], DateRangePicker.prototype, \"separator\", void 0);\n__decorate$2([\n Property(null)\n], DateRangePicker.prototype, \"minDays\", void 0);\n__decorate$2([\n Property(null)\n], DateRangePicker.prototype, \"maxDays\", void 0);\n__decorate$2([\n Property(false)\n], DateRangePicker.prototype, \"strictMode\", void 0);\n__decorate$2([\n Property(null)\n], DateRangePicker.prototype, \"keyConfigs\", void 0);\n__decorate$2([\n Property(null)\n], DateRangePicker.prototype, \"format\", void 0);\n__decorate$2([\n Property(true)\n], DateRangePicker.prototype, \"enabled\", void 0);\n__decorate$2([\n Property(false)\n], DateRangePicker.prototype, \"readonly\", void 0);\n__decorate$2([\n Property(true)\n], DateRangePicker.prototype, \"allowEdit\", void 0);\n__decorate$2([\n Property('Never')\n], DateRangePicker.prototype, \"floatLabelType\", void 0);\n__decorate$2([\n Property(null)\n], DateRangePicker.prototype, \"placeholder\", void 0);\n__decorate$2([\n Property({})\n], DateRangePicker.prototype, \"htmlAttributes\", void 0);\n__decorate$2([\n Event()\n], DateRangePicker.prototype, \"open\", void 0);\n__decorate$2([\n Event()\n], DateRangePicker.prototype, \"close\", void 0);\n__decorate$2([\n Event()\n], DateRangePicker.prototype, \"select\", void 0);\n__decorate$2([\n Event()\n], DateRangePicker.prototype, \"focus\", void 0);\n__decorate$2([\n Event()\n], DateRangePicker.prototype, \"blur\", void 0);\nDateRangePicker = __decorate$2([\n NotifyPropertyChanges\n], DateRangePicker);\n\n/**\n * DateRangePicker modules\n */\n\nvar __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst WRAPPERCLASS = 'e-time-wrapper';\nconst POPUP$2 = 'e-popup';\nconst ERROR$2 = 'e-error';\nconst POPUPDIMENSION = '240px';\nconst DAY = new Date().getDate();\nconst MONTH$2 = new Date().getMonth();\nconst YEAR$2 = new Date().getFullYear();\nconst ROOT$3 = 'e-timepicker';\nconst LIBRARY$2 = 'e-lib';\nconst CONTROL$2 = 'e-control';\nconst CONTENT$2 = 'e-content';\nconst SELECTED$4 = 'e-active';\nconst HOVER$1 = 'e-hover';\nconst NAVIGATION = 'e-navigation';\nconst DISABLED$3 = 'e-disabled';\nconst ICONANIMATION = 'e-icon-anim';\nconst TIMEICON = 'e-time-icon';\nconst CLEARICON$1 = 'e-clear-icon';\nconst FOCUS = 'e-input-focus';\nconst LISTCLASS$1 = 'e-list-item';\nconst HALFPOSITION = 2;\nconst ANIMATIONDURATION = 50;\nconst OVERFLOW$2 = 'e-time-overflow';\nconst OFFSETVAL = 4;\nconst EDITABLE = 'e-non-edit';\nconst wrapperAttributes = ['title', 'class', 'style'];\nvar TimePickerBase;\n(function (TimePickerBase) {\n // tslint:disable-next-line\n function createListItems(createdEl, min, max, globalize, timeFormat, step) {\n if (this.calendarMode === 'Gregorian') {\n \n }\n else {\n \n }\n let start;\n let end;\n let interval = step * 60000;\n let listItems = [];\n let timeCollections = [];\n start = +(min.setMilliseconds(0));\n end = +(max.setMilliseconds(0));\n while (end >= start) {\n timeCollections.push(start);\n listItems.push(globalize.formatDate(new Date(start), { format: timeFormat, type: 'time' }));\n start += interval;\n }\n let listTag = ListBase.createList(createdEl, listItems, null, true);\n return { collection: timeCollections, list: listTag };\n }\n TimePickerBase.createListItems = createListItems;\n})(TimePickerBase || (TimePickerBase = {}));\n/**\n * TimePicker is an intuitive interface component which provides an options to select a time value\n * from popup list or to set a desired time value.\n * ```\n * \n * \n * ```\n */\nlet TimePicker = class TimePicker extends Component {\n /**\n * Constructor for creating the widget\n */\n constructor(options, element) {\n super(options, element);\n this.liCollections = [];\n this.timeCollections = [];\n this.blazorTimeCollections = [];\n this.disableItemCollection = [];\n this.invalidValueString = null;\n this.isBlazorServer = false;\n this.timeOptions = options;\n }\n /**\n * Initialize the event handler\n * @private\n */\n preRender() {\n this.keyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [ROOT$3, CONTROL$2, LIBRARY$2]);\n this.inputElement = this.element;\n this.angularTag = null;\n this.formElement = closest(this.element, 'form');\n this.isBlazorServer = (isBlazor() && this.isServerRendered && this.getModuleName() === 'timepicker') ? true : false;\n if (!this.isBlazorServer) {\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n this.angularTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n this.openPopupEventArgs = {\n appendTo: document.body\n };\n }\n }\n // element creation\n render() {\n if (!this.isBlazorServer) {\n this.initialize();\n this.createInputElement();\n this.updateHtmlAttributeToWrapper();\n this.setTimeAllowEdit();\n this.setEnable();\n this.validateInterval();\n }\n else {\n this.globalize = new Internationalization(this.locale);\n this.defaultCulture = new Internationalization('en');\n this.checkTimeFormat();\n let parentElement = this.element.parentElement;\n this.inputWrapper = {\n container: parentElement,\n clearButton: parentElement.querySelector('.' + CLEARICON$1),\n buttons: [parentElement.querySelector('.' + TIMEICON)]\n };\n Input.bindInitialEvent({\n element: this.inputElement,\n floatLabelType: this.floatLabelType\n });\n if (this.showClearButton && this.inputWrapper.clearButton) {\n Input.wireClearBtnEvents(this.inputElement, this.inputWrapper.clearButton, this.inputWrapper.container);\n }\n }\n this.bindEvents();\n if (!this.isBlazorServer) {\n this.validateDisable();\n this.setValue(this.getFormattedValue(this.value));\n }\n this.anchor = this.inputElement;\n this.inputElement.setAttribute('value', this.inputElement.value);\n if (!this.isBlazorServer) {\n this.inputEleValue = this.getDateObject(this.inputElement.value);\n }\n this.renderComplete();\n }\n setTimeAllowEdit() {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.clearIconState();\n }\n clearIconState() {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n else {\n addClass([this.inputWrapper.container], [EDITABLE]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n }\n validateDisable() {\n this.setMinMax(this.initMin, this.initMax);\n this.popupCreation();\n this.popupObj.destroy();\n this.popupWrapper = this.popupObj = null;\n if ((!isNaN(+this.value) && this.value !== null)) {\n if (!this.valueIsDisable(this.value)) {\n //disable value given in value property so reset the date based on current date\n if (this.strictMode) {\n this.resetState();\n }\n this.initValue = null;\n this.initMax = this.getDateObject(this.initMax);\n this.initMin = this.getDateObject(this.initMin);\n this.timeCollections = this.liCollections = [];\n this.setMinMax(this.initMin, this.initMax);\n }\n }\n }\n validationAttribute(target, input) {\n let name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n input.setAttribute('name', name);\n target.removeAttribute('name');\n let attributes$$1 = ['required', 'aria-required', 'form'];\n for (let i = 0; i < attributes$$1.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attributes$$1[i]))) {\n continue;\n }\n let attr = target.getAttribute(attributes$$1[i]);\n input.setAttribute(attributes$$1[i], attr);\n target.removeAttribute(attributes$$1[i]);\n }\n }\n initialize() {\n this.globalize = new Internationalization(this.locale);\n this.defaultCulture = new Internationalization('en');\n this.checkTimeFormat();\n this.checkInvalidValue(this.value);\n // persist the value property.\n this.setProperties({ value: this.checkDateValue(new Date(this.checkInValue(this.value))) }, true);\n this.setProperties({ min: this.checkDateValue(new Date(this.checkInValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkInValue(this.max))) }, true);\n if (this.angularTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n this.checkAttributes(false); //check the input element attributes\n let localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('timepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n this.initValue = this.checkDateValue(this.value);\n this.initMin = this.checkDateValue(this.min);\n this.initMax = this.checkDateValue(this.max);\n this.isNavigate = this.isPreventBlur = this.isTextSelected = false;\n this.activeIndex = this.valueWithMinutes = this.prevDate = null;\n if (!isNullOrUndefined(this.element.getAttribute('id'))) {\n if (this.angularTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n //for angular case\n this.element.id = getUniqueID('ej2_timepicker');\n if (this.angularTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n attributes(this.inputElement, { 'name': this.element.id });\n }\n }\n checkTimeFormat() {\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (!isNullOrUndefined(this.format.skeleton) && this.format.skeleton !== '') {\n let skeletonString = this.format.skeleton;\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: skeletonString });\n }\n else {\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: 'short' });\n }\n }\n else {\n this.formatString = null;\n }\n }\n checkDateValue(value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n }\n createInputElement() {\n let updatedCssClassesValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassesValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassesValue,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton,\n },\n buttons: [' e-input-group-icon e-time-icon e-icons']\n }, this.createElement);\n this.inputWrapper.container.style.width = this.setWidth(this.width);\n attributes(this.inputElement, {\n 'aria-haspopup': 'true', 'aria-autocomplete': 'list', 'tabindex': '0', 'aria-activedescendant': 'null',\n 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-disabled': 'false', 'aria-invalid': 'false'\n });\n if (!this.isNullOrEmpty(this.inputStyle)) {\n Input.addAttributes({ 'style': this.inputStyle }, this.inputElement);\n }\n addClass([this.inputWrapper.container], WRAPPERCLASS);\n }\n getCldrDateTimeFormat() {\n let culture = new Internationalization(this.locale);\n let cldrTime;\n let dateFormat = culture.getDatePattern({ skeleton: isBlazor() ? 'd' : 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.CldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n }\n checkInvalidValue(value) {\n let isInvalid = false;\n if (typeof value !== 'object' && !isNullOrUndefined(value)) {\n let valueString = value;\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n let valueExpression = null;\n let valueExp = null;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n else if (typeof value === 'string') {\n if (!(/^[a-zA-Z0-9- ]*$/).test(value)) {\n valueExpression = this.setCurrentDate(this.getDateObject(value));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n }));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd'\n }));\n }\n }\n }\n }\n valueExp = this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n });\n valueExpression = (!isNullOrUndefined(valueExp) && valueExp instanceof Date && !isNaN(+valueExp)) ? valueExp : null;\n if (isNullOrUndefined(valueExpression) && valueString.replace(/\\s/g, '').length) {\n let extISOString = null;\n let basicISOString = null;\n // tslint:disable-next-line\n extISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // tslint:disable-next-line\n basicISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || ((/^[a-zA-Z0-9- ]*$/).test(value)) || isNaN(+new Date('' + valueString))) {\n isInvalid = true;\n }\n else {\n valueExpression = new Date('' + valueString);\n }\n }\n if (isInvalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n this.initValue = null;\n }\n else {\n this.setProperties({ value: valueExpression }, true);\n this.initValue = this.value;\n }\n }\n }\n CldrFormat(type) {\n let cldrDateTimeString;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTimeString = isBlazor() ? this.getBlazorCultureFormat('t') :\n (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTimeString = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTimeString;\n }\n // destroy function\n destroy() {\n if (this.isBlazorServer) {\n this.unBindEvents();\n }\n else {\n this.hide();\n this.unBindEvents();\n let ariaAttribute = {\n 'aria-haspopup': 'true', 'aria-autocomplete': 'list', 'tabindex': '0', 'aria-activedescendant': 'null',\n 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-disabled': 'true', 'aria-invalid': 'false'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n if (this.angularTag === null) {\n this.inputWrapper.container.parentElement.appendChild(this.inputElement);\n }\n (!isNullOrUndefined(this.cloneElement.getAttribute('tabindex'))) ?\n this.inputElement.setAttribute('tabindex', this.tabIndex) : this.inputElement.removeAttribute('tabindex');\n this.ensureInputAttribute();\n this.enableElement([this.inputElement]);\n this.inputElement.classList.remove('e-input');\n if (isNullOrUndefined(this.cloneElement.getAttribute('disabled'))) {\n Input.setEnabled(true, this.inputElement, this.floatLabelType);\n }\n }\n if (this.inputWrapper.container) {\n detach(this.inputWrapper.container);\n }\n this.inputWrapper = this.popupWrapper = this.cloneElement = undefined;\n this.liCollections = this.timeCollections = this.disableItemCollection = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n super.destroy();\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n }\n }\n ensureInputAttribute() {\n let propertyList = [];\n for (let i = 0; i < this.inputElement.attributes.length; i++) {\n propertyList[i] = this.inputElement.attributes[i].name;\n }\n for (let i = 0; i < propertyList.length; i++) {\n if (!isNullOrUndefined(this.cloneElement.getAttribute(propertyList[i]))) {\n this.inputElement.setAttribute(propertyList[i], this.cloneElement.getAttribute(propertyList[i]));\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = this.cloneElement.getAttribute(propertyList[i]);\n }\n }\n else {\n this.inputElement.removeAttribute(propertyList[i]);\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n }\n }\n }\n //popup creation\n popupCreation() {\n if (!this.isBlazorServer) {\n this.popupWrapper = this.createElement('div', {\n className: ROOT$3 + ' ' + POPUP$2,\n attrs: { 'id': this.element.id + '_popup', 'style': 'visibility:hidden' }\n });\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.generateList();\n append([this.listWrapper], this.popupWrapper);\n }\n this.openPopupEventArgs.appendTo.appendChild(this.popupWrapper);\n }\n else {\n this.popupWrapper = this.inputWrapper.container.nextElementSibling;\n this.generateList();\n }\n this.addSelection();\n this.renderPopup();\n detach(this.popupWrapper);\n }\n getPopupHeight() {\n let height = parseInt(POPUPDIMENSION, 10);\n let popupHeight = this.popupWrapper.getBoundingClientRect().height;\n return popupHeight > height ? height : popupHeight;\n }\n generateList() {\n if (!this.isBlazorServer) {\n this.createListItems();\n }\n else {\n this.listWrapper = this.popupWrapper.querySelector('.e-content');\n }\n this.wireListEvents();\n let rippleModel = { duration: 300, selector: '.' + LISTCLASS$1 };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS$1);\n if (this.isBlazorServer) {\n this.blazorTimeCollections = [];\n for (let index = 0; index < this.liCollections.length; index++) {\n this.blazorTimeCollections.push(this.liCollections[index].getAttribute('data-value'));\n }\n }\n }\n renderPopup() {\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.setPopupWidth(this.width),\n zIndex: this.zIndex,\n targetType: 'relative',\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n enableRtl: this.enableRtl,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n offsetY: OFFSETVAL,\n open: () => {\n this.popupWrapper.style.visibility = 'visible';\n addClass([this.inputWrapper.buttons[0]], SELECTED$4);\n }, close: () => {\n removeClass([this.inputWrapper.buttons[0]], SELECTED$4);\n this.unWireListEvents();\n this.inputElement.setAttribute('aria-activedescendant', 'null');\n if (!this.isBlazorServer) {\n remove(this.popupObj.element);\n this.popupObj.destroy();\n this.popupWrapper.innerHTML = '';\n }\n this.listWrapper = this.popupWrapper = this.listTag = undefined;\n }, targetExitViewport: () => {\n if (!Browser.isDevice) {\n this.hide();\n }\n }\n });\n if (!Browser.isDevice) {\n this.popupObj.collision = { X: 'none', Y: 'flip' };\n }\n this.popupObj.element.style.maxHeight = POPUPDIMENSION;\n }\n //util function\n getFormattedValue(value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { skeleton: isBlazor() ? 't' : 'medium', type: 'time' });\n }\n }\n getDateObject(text) {\n if (!this.isNullOrEmpty(text)) {\n let dateValue = this.createDateObj(text);\n let value = !this.isNullOrEmpty(this.initValue);\n if (this.checkDateValue(dateValue)) {\n let date = value ? this.initValue.getDate() : DAY;\n let month = value ? this.initValue.getMonth() : MONTH$2;\n let year = value ? this.initValue.getFullYear() : YEAR$2;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds());\n }\n }\n return null;\n }\n updateHtmlAttributeToWrapper() {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (let key of Object.keys(this.htmlAttributes)) {\n if (wrapperAttributes.indexOf(key) > -1) {\n if (key === 'class') {\n let updatedClassesValue = (this.htmlAttributes[key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassesValue !== '') {\n addClass([this.inputWrapper.container], updatedClassesValue.split(' '));\n }\n }\n else if (key === 'style') {\n let timeStyle = this.inputWrapper.container.getAttribute(key);\n timeStyle = !isNullOrUndefined(timeStyle) ? (timeStyle + this.htmlAttributes[key]) :\n this.htmlAttributes[key];\n this.inputWrapper.container.setAttribute(key, timeStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n }\n updateHtmlAttributeToElement() {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (let key of Object.keys(this.htmlAttributes)) {\n if (wrapperAttributes.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n updateCssClass(cssClassNew, cssClassOld) {\n if (!isNullOrUndefined(cssClassOld)) {\n cssClassOld = (cssClassOld.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(cssClassNew)) {\n cssClassNew = (cssClassNew.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(cssClassNew, [this.inputWrapper.container], cssClassOld);\n if (this.popupWrapper) {\n Input.setCssClass(cssClassNew, [this.popupWrapper], cssClassOld);\n }\n }\n removeErrorClass() {\n removeClass([this.inputWrapper.container], ERROR$2);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n }\n checkErrorState(val) {\n let value = this.getDateObject(val);\n if (this.validateState(value) && !this.invalidValueString) {\n this.removeErrorClass();\n }\n else {\n addClass([this.inputWrapper.container], ERROR$2);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n }\n validateInterval() {\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.enableElement([this.inputWrapper.buttons[0]]);\n }\n else {\n this.disableTimeIcon();\n }\n }\n disableTimeIcon() {\n this.disableElement([this.inputWrapper.buttons[0]]);\n this.hide();\n }\n disableElement(element) {\n addClass(element, DISABLED$3);\n }\n enableElement(element) {\n removeClass(element, DISABLED$3);\n }\n selectInputText() {\n this.inputElement.setSelectionRange(0, (this.inputElement).value.length);\n }\n setCursorToEnd() {\n this.inputElement.setSelectionRange((this.inputElement).value.length, (this.inputElement).value.length);\n }\n getMeridianText() {\n let meridian;\n if (this.locale === 'en' || this.locale === 'en-US') {\n meridian = getValue((isBlazor() ? 'dayPeriods.wide' : 'dayPeriods.format.wide'), getDefaultDateObject());\n }\n else {\n let gregorianFormat = (isBlazor() ? '.dates.dayPeriods.abbreviated' :\n '.dates.calendars.gregorian.dayPeriods.format.abbreviated');\n let mainVal = isBlazor() ? '' : 'main.';\n meridian = getValue(mainVal + '' + this.locale + gregorianFormat, cldrData);\n }\n return meridian;\n }\n getCursorSelection() {\n let input = (this.inputElement);\n let start = 0;\n let end = 0;\n if (!isNaN(input.selectionStart)) {\n start = input.selectionStart;\n end = input.selectionEnd;\n }\n return { start: Math.abs(start), end: Math.abs(end) };\n }\n getActiveElement() {\n if (!isNullOrUndefined(this.popupWrapper)) {\n return this.popupWrapper.querySelectorAll('.' + SELECTED$4);\n }\n else {\n return null;\n }\n }\n isNullOrEmpty(value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n }\n setWidth(width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n width = (width.match(/px|%|em/)) ? width : formatUnit(width);\n }\n else {\n width = '100%';\n }\n return width;\n }\n setPopupWidth(width) {\n width = this.setWidth(width);\n if (width.indexOf('%') > -1) {\n let inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n }\n setScrollPosition() {\n let listHeight = this.getPopupHeight();\n let element;\n element = this.selectedElement;\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else if (this.popupWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n }\n findScrollTop(element) {\n let listHeight = this.getPopupHeight();\n let nextEle = element.nextElementSibling;\n let height = nextEle ? nextEle.offsetTop : element.offsetTop;\n let liHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n this.popupWrapper.scrollTop = nextEle ? (height - (listHeight / HALFPOSITION + liHeight / HALFPOSITION)) : height;\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n }\n setScrollTo() {\n let element;\n if (!isNullOrUndefined(this.popupWrapper)) {\n let items = this.popupWrapper.querySelectorAll('.' + LISTCLASS$1);\n if (items.length) {\n let initialTime = this.isBlazorServer ? new Date(new Date().toDateString() + ' ' +\n this.blazorTimeCollections[0]).setMilliseconds(0) : this.timeCollections[0];\n let scrollTime = this.isBlazorServer ? new Date(new Date().toDateString() + ' ' +\n this.scrollTo.toLocaleTimeString()).setMilliseconds(0) :\n this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n }\n getText() {\n return (isNullOrUndefined(this.checkDateValue(this.value))) ? '' : this.getValue(this.value);\n }\n getValue(value) {\n return (isNullOrUndefined(this.checkDateValue(value))) ? null : this.globalize.formatDate(value, {\n format: this.cldrTimeFormat(), type: 'time'\n });\n }\n cldrDateFormat() {\n let cldrDate;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDate = isBlazor() ? (getValue('d', getValue(this.locale, blazorCultureFormats))) :\n (getValue('dateFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDate = (this.getCultureDateObject(cldrData, '' + this.locale));\n }\n return cldrDate;\n }\n getBlazorCultureFormat(formatVal) {\n return (getValue(formatVal, getValue(this.locale, blazorCultureFormats))).replace(/tt/, 'a');\n }\n cldrTimeFormat() {\n let cldrTime;\n if (this.isNullOrEmpty(this.formatString)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = isBlazor() ? this.getBlazorCultureFormat('t') :\n (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n }\n dateToNumeric() {\n let cldrTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = isBlazor() ? this.getBlazorCultureFormat('T') :\n (getValue('timeFormats.medium', getDefaultDateObject()));\n }\n else {\n cldrTime = isBlazor() ? this.getBlazorCultureFormat('T') :\n (getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.medium', cldrData));\n }\n return cldrTime;\n }\n getExactDateTime(value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { format: this.dateToNumeric(), type: 'time' });\n }\n }\n setValue(value) {\n let time = this.checkValue(value);\n if (!this.strictMode && !this.validateState(time)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n if (this.isNullOrEmpty(time)) {\n this.initValue = null;\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.initValue = this.compareFormatChange(time);\n }\n }\n this.updateInput(true, this.initValue);\n }\n compareFormatChange(value) {\n if (isNullOrUndefined(value)) {\n return null;\n }\n return (value !== this.getText()) ? this.getDateObject(value) : this.getDateObject(this.value);\n }\n updatePlaceHolder() {\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n }\n //event related functions\n updateInputValue(value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n preventEventBubbling(e) {\n e.preventDefault();\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnTimeIconClick');\n // tslint:enable\n }\n updateBlazorTimeCollections(listData) {\n this.blazorTimeCollections = listData;\n }\n popupHandler(e) {\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n if (!this.isBlazorServer) {\n e.preventDefault();\n }\n if (this.isPopupOpen() && !this.isBlazorServer) {\n this.closePopup(0, e);\n }\n else {\n this.inputElement.focus();\n this.show(e);\n }\n }\n mouseDownHandler() {\n if (!this.readonly) {\n let curPos = this.getCursorSelection();\n this.inputElement.setSelectionRange(0, 0);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n }\n }\n mouseUpHandler(event) {\n if (!this.readonly) {\n event.preventDefault();\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n let curPos = this.getCursorSelection();\n if (!(curPos.start === 0 && curPos.end === this.inputElement.value.length)) {\n if (this.inputElement.value.length > 0) {\n this.cursorDetails = this.focusSelection();\n }\n this.inputElement.setSelectionRange(this.cursorDetails.start, this.cursorDetails.end);\n }\n }\n }\n focusSelection() {\n let regex = new RegExp('^[a-zA-Z0-9]+$');\n let split = this.inputElement.value.split('');\n split.push(' ');\n let curPos = this.getCursorSelection();\n let start = 0;\n let end = 0;\n let isSeparator = false;\n if (!this.isTextSelected) {\n for (let i = 0; i < split.length; i++) {\n if (!regex.test(split[i])) {\n end = i;\n isSeparator = true;\n }\n if (isSeparator) {\n if (curPos.start >= start && curPos.end <= end) {\n end = end;\n this.isTextSelected = true;\n break;\n }\n else {\n start = i + 1;\n isSeparator = false;\n }\n }\n }\n }\n else {\n start = curPos.start;\n end = curPos.end;\n this.isTextSelected = false;\n }\n return { start: start, end: end };\n }\n inputHandler(event) {\n if (!this.readonly && this.enabled) {\n if (event.action !== 'right' && event.action !== 'left' && event.action !== 'tab') {\n event.preventDefault();\n }\n switch (event.action) {\n case 'home':\n case 'end':\n case 'up':\n case 'down':\n this.keyHandler(event);\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n if (!this.isBlazorServer) {\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.updateValue(this.valueWithMinutes, event);\n }\n else {\n this.inputElement.setAttribute('value', this.selectedElement.getAttribute('data-value'));\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnListItemClick', this.activeIndex, true);\n }\n }\n else {\n if (!this.isBlazorServer) {\n this.updateValue(this.inputElement.value, event);\n }\n else {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnStrictMode', this.inputElement.value);\n }\n }\n this.hide();\n this.isNavigate = false;\n if (this.isPopupOpen()) {\n event.stopPropagation();\n }\n break;\n case 'open':\n if (this.isBlazorServer) {\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnPopupHide', true);\n // tslint:enable\n }\n else {\n this.show(event);\n }\n break;\n case 'escape':\n if (!this.isBlazorServer) {\n this.updateInputValue(this.objToString(this.value));\n this.previousState(this.value);\n }\n this.hide();\n break;\n case 'close':\n this.hide();\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n }\n onMouseClick(event) {\n let target = event.target;\n let li = this.selectedElement = closest(target, '.' + LISTCLASS$1);\n this.setSelection(li, event);\n if (li && li.classList.contains(LISTCLASS$1)) {\n this.hide();\n }\n }\n closePopup(delay, e) {\n if (this.isPopupOpen() && this.popupWrapper) {\n let args = {\n popup: this.isBlazorServer ? null : this.popupObj,\n event: e || null,\n cancel: false,\n name: 'open'\n };\n removeClass([document.body], OVERFLOW$2);\n this.trigger('close', args, (args) => {\n if (!args.cancel) {\n let animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: delay ? delay : 0\n };\n this.popupObj.hide(new Animation(animModel));\n removeClass([this.inputWrapper.container], [ICONANIMATION]);\n attributes(this.inputElement, { 'aria-expanded': 'false' });\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n if (this.isBlazorServer) {\n this.disposeServerPopup();\n // tslint:disable\n this.inputWrapper.container.parentElement.insertBefore(this.popupWrapper, this.inputWrapper.container.nextElementSibling);\n this.interopAdaptor.invokeMethodAsync('OnPopupHide', false);\n // tslint:enable\n this.popupWrapper = this.popupObj = null;\n }\n }\n if (Browser.isDevice && this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(this.mobileTimePopupWrap)) {\n this.mobileTimePopupWrap.remove();\n this.mobileTimePopupWrap = null;\n }\n }\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n });\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n }\n disposeServerPopup() {\n if (this.popupWrapper) {\n this.popupWrapper.style.visibility = 'hidden';\n this.popupWrapper.style.top = '-9999px';\n this.popupWrapper.style.left = '-9999px';\n this.popupWrapper.style.width = '0px';\n this.popupWrapper.style.height = '0px';\n }\n }\n checkValueChange(event, isNavigation) {\n if (!this.strictMode && !this.validateState(this.valueWithMinutes)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.setProperties({ value: this.compareFormatChange(this.inputElement.value) }, true);\n this.initValue = this.valueWithMinutes = this.compareFormatChange(this.inputElement.value);\n this.prevValue = this.inputElement.value;\n if (+this.prevDate !== +this.value) {\n this.changeEvent(event);\n }\n }\n else {\n if (!isNavigation) {\n if ((this.prevValue !== this.inputElement.value) || isNullOrUndefined(this.checkDateValue(this.value))) {\n this.valueProcess(event, this.compareFormatChange(this.inputElement.value));\n }\n }\n else {\n let value = this.getDateObject(new Date(this.timeCollections[this.activeIndex]));\n if (+this.prevDate !== +value) {\n this.valueProcess(event, value);\n }\n }\n }\n }\n onMouseOver(event) {\n let currentLi = closest(event.target, '.' + LISTCLASS$1);\n this.setHover(currentLi, HOVER$1);\n }\n setHover(li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeHover(className);\n addClass([li], className);\n if (className === NAVIGATION) {\n li.setAttribute('aria-selected', 'true');\n }\n }\n }\n setSelection(li, event) {\n if (this.isValidLI(li) && !li.classList.contains(SELECTED$4)) {\n if (!this.isBlazorServer) {\n this.checkValue(li.getAttribute('data-value'));\n this.selectedElement = li;\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], SELECTED$4);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.checkValueChange(event, true);\n }\n else {\n this.selectedElement = li;\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n addClass([this.selectedElement], SELECTED$4);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.inputElement.setAttribute('value', li.getAttribute('data-value'));\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnListItemClick', this.activeIndex, false);\n this.addSelection();\n }\n }\n }\n onMouseLeave() {\n this.removeHover(HOVER$1);\n }\n scrollHandler() {\n if (this.getModuleName() === 'timepicker' && Browser.isDevice) {\n return;\n }\n else {\n this.hide();\n }\n }\n setMinMax(minVal, maxVal) {\n if (isNullOrUndefined(this.checkDateValue(minVal))) {\n this.initMin = this.getDateObject('12:00:00 AM');\n }\n if (isNullOrUndefined(this.checkDateValue(maxVal))) {\n this.initMax = this.getDateObject('11:59:59 PM');\n }\n }\n //protected function\n validateMinMax(dateVal, minVal, maxVal) {\n let value = dateVal instanceof Date ? dateVal : this.getDateObject(dateVal);\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n dateVal = this.strictOperation(this.initMin, this.initMax, dateVal, value);\n }\n else if (+(this.createDateObj(this.getFormattedValue(this.initMin))) >\n +(this.createDateObj(this.getFormattedValue(this.initMax)))) {\n this.disableTimeIcon();\n }\n if (this.strictMode) {\n dateVal = this.valueIsDisable(dateVal) ? dateVal : null;\n }\n this.checkErrorState(dateVal);\n return dateVal;\n }\n valueIsDisable(value) {\n if (this.disableItemCollection.length > 0) {\n if (this.disableItemCollection.length === this.timeCollections.length) {\n return false;\n }\n let time = value instanceof Date ? this.objToString(value) : value;\n for (let index = 0; index < this.disableItemCollection.length; index++) {\n if (time === this.disableItemCollection[index]) {\n return false;\n }\n }\n }\n return true;\n }\n validateState(val) {\n if (!this.strictMode) {\n if (this.valueIsDisable(val)) {\n let value = typeof val === 'string' ? this.setCurrentDate(this.getDateObject(val)) :\n this.setCurrentDate(this.getDateObject(val));\n let maxValue = this.setCurrentDate(this.getDateObject(this.initMax));\n let minValue = this.setCurrentDate(this.getDateObject(this.initMin));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n if ((+(value) > +(maxValue)) || (+(value) < +(minValue))) {\n return false;\n }\n }\n else {\n if ((+(maxValue) < +(minValue)) || this.inputElement.value !== '') {\n return false;\n }\n }\n }\n else {\n return false;\n }\n }\n return true;\n }\n strictOperation(minimum, maximum, dateVal, val) {\n let maxValue = this.createDateObj(this.getFormattedValue(maximum));\n let minValue = this.createDateObj(this.getFormattedValue(minimum));\n let value = this.createDateObj(this.getFormattedValue(val));\n if (this.strictMode) {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n this.initValue = this.getDateObject(maxValue);\n this.updateInputValue(this.getValue(this.initValue));\n return this.inputElement.value;\n }\n else if (+minValue >= +value) {\n return this.getDateObject(minValue);\n }\n else if (+value >= +maxValue || +minValue === +maxValue) {\n return this.getDateObject(maxValue);\n }\n }\n else {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n if (!isNaN(+this.createDateObj(dateVal))) {\n return dateVal;\n }\n }\n }\n return dateVal;\n }\n bindEvents() {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', (this.isBlazorServer ? this.preventEventBubbling : this.popupHandler), this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyConfigure = extend(this.keyConfigure, this.keyConfigs);\n this.inputEvent = new KeyboardEvents(this.inputWrapper.container, {\n keyAction: this.inputHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n if (this.showClearButton && this.inputElement) {\n EventHandler.add(this.inputElement, 'mousedown', this.mouseDownHandler, this);\n }\n }\n }\n formResetHandler() {\n if (!this.inputElement.disabled) {\n let timeValue = this.inputElement.getAttribute('value');\n let val = this.isBlazorServer ? this.inputEleValue : this.checkDateValue(this.inputEleValue);\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n val = null;\n timeValue = '';\n this.inputElement.setAttribute('value', '');\n }\n if (!this.isBlazorServer) {\n this.setProperties({ value: val }, true);\n this.prevDate = this.value;\n this.valueWithMinutes = this.value;\n this.initValue = this.value;\n }\n if (this.inputElement) {\n this.updateInputValue(timeValue);\n if (!this.isBlazorServer) {\n this.checkErrorState(timeValue);\n }\n this.prevValue = this.inputElement.value;\n }\n }\n }\n inputChangeHandler(e) {\n e.stopPropagation();\n }\n unBindEvents() {\n if (this.inputWrapper) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', (this.isBlazorServer ? this.preventEventBubbling : this.popupHandler));\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n if (this.inputEvent) {\n this.inputEvent.destroy();\n }\n EventHandler.remove(this.inputElement, 'mousedown touchstart', this.mouseDownHandler);\n if (this.showClearButton && !isNullOrUndefined(this.inputWrapper.clearButton)) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.clearHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n }\n bindClearEvent() {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n }\n raiseClearedEvent(e) {\n let clearedArgs = {\n event: e\n };\n this.trigger('cleared', clearedArgs);\n }\n clearHandler(e) {\n e.preventDefault();\n if (!isNullOrUndefined(this.value)) {\n this.clear(e);\n }\n else {\n this.resetState();\n this.raiseClearedEvent(e);\n }\n if (this.isBlazorServer) {\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnValueCleared');\n // tslint:enable\n }\n if (this.popupWrapper) {\n this.popupWrapper.scrollTop = 0;\n }\n }\n clear(event) {\n if (!this.isBlazorServer) {\n this.setProperties({ value: null }, true);\n }\n this.initValue = null;\n this.resetState();\n this.raiseClearedEvent(event);\n if (!this.isBlazorServer) {\n this.changeEvent(event);\n }\n }\n setZIndex() {\n if (this.popupObj) {\n this.popupObj.zIndex = this.zIndex;\n this.popupObj.dataBind();\n }\n }\n checkAttributes(isDynamic) {\n let attributes$$1 = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['step', 'disabled', 'readonly', 'style', 'name', 'value', 'min', 'max', 'placeholder'];\n let value;\n for (let prop of attributes$$1) {\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['enabled'] === undefined)) || isDynamic) {\n let enabled = this.inputElement.getAttribute(prop) === 'disabled' || this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'style':\n this.inputStyle = this.inputElement.getAttribute(prop);\n break;\n case 'readonly':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['readonly'] === undefined)) || isDynamic) {\n let readonly = this.inputElement.getAttribute(prop) === 'readonly' || this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'placeholder':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if (!this.isBlazorServer) {\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n }\n break;\n case 'max':\n if (!this.isBlazorServer) {\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n }\n break;\n case 'value':\n if (!this.isBlazorServer) {\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.initValue = value;\n this.updateInput(false, this.initValue);\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n }\n break;\n }\n }\n }\n }\n setCurrentDate(value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n return new Date(YEAR$2, MONTH$2, DAY, value.getHours(), value.getMinutes(), value.getSeconds());\n }\n getTextFormat() {\n let time = 0;\n if (this.cldrTimeFormat().split(' ')[0] === 'a' || this.cldrTimeFormat().indexOf('a') === 0) {\n time = 1;\n }\n else if (this.cldrTimeFormat().indexOf('a') < 0) {\n let strArray = this.cldrTimeFormat().split(' ');\n for (let i = 0; i < strArray.length; i++) {\n if (strArray[i].toLowerCase().indexOf('h') >= 0) {\n time = i;\n break;\n }\n }\n }\n return time;\n }\n updateValue(value, event) {\n let val;\n if (this.isNullOrEmpty(value)) {\n this.resetState();\n }\n else {\n val = this.checkValue(value);\n if (this.strictMode) {\n // this case set previous value to the text box when set invalid date\n let inputVal = (val === null && value.trim().length > 0) ?\n this.previousState(this.prevDate) : this.inputElement.value;\n this.updateInputValue(inputVal);\n }\n }\n this.checkValueChange(event, typeof value === 'string' ? false : true);\n }\n previousState(date) {\n let value = this.getDateObject(date);\n for (let i = 0; i < this.timeCollections.length; i++) {\n if (+value === this.timeCollections[i]) {\n this.activeIndex = i;\n this.selectedElement = this.liCollections[i];\n this.valueWithMinutes = new Date(this.timeCollections[i]);\n break;\n }\n }\n return this.prevValue;\n }\n resetState() {\n this.removeSelection();\n Input.setValue('', this.inputElement, this.floatLabelType, false);\n this.valueWithMinutes = this.activeIndex = null;\n if (!this.strictMode && !this.isBlazorServer) {\n this.checkErrorState(null);\n }\n }\n objToString(val) {\n if (isNullOrUndefined(this.checkDateValue(val))) {\n return null;\n }\n else {\n return this.globalize.formatDate(val, { format: this.cldrTimeFormat(), type: 'time' });\n }\n }\n checkValue(value) {\n if (!this.isNullOrEmpty(value)) {\n let date = value instanceof Date ? value : this.getDateObject(value);\n return this.validateValue(date, value);\n }\n this.resetState();\n return this.valueWithMinutes = null;\n }\n validateValue(date, value) {\n let time;\n let val = this.validateMinMax(value, this.min, this.max);\n let newval = this.createDateObj(val);\n if (this.getFormattedValue(newval) !== this.getFormattedValue(this.value)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = this.objToString(this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = this.objToString(this.valueWithMinutes);\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n let value = val.trim().length > 0 ? val : '';\n this.updateInputValue(value);\n }\n else {\n this.updateInputValue(time);\n }\n return time;\n }\n findNextElement(event) {\n let textVal = (this.inputElement).value;\n let value = isNullOrUndefined(this.valueWithMinutes) || this.isBlazorServer ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n let timeVal = null;\n let count = this.liCollections.length;\n let collections = this.isBlazorServer ? (isNullOrUndefined(this.blazorTimeCollections) ? [] :\n this.blazorTimeCollections) : this.timeCollections;\n if (!isNullOrUndefined(this.checkDateValue(value)) || !isNullOrUndefined(this.activeIndex)) {\n if (event.action === 'home') {\n let index = this.validLiElement(0);\n if (!this.isBlazorServer) {\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n }\n this.activeIndex = index;\n }\n else if (event.action === 'end') {\n let index = this.validLiElement(collections.length - 1, true);\n if (!this.isBlazorServer) {\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n }\n this.activeIndex = index;\n }\n else {\n if (event.action === 'down') {\n for (let i = 0; i < count; i++) {\n if (this.isBlazorServer ? (+value < +this.createDateObj(this.blazorTimeCollections[i])) :\n (+value < this.timeCollections[i])) {\n let index = this.validLiElement(i);\n if (!this.isBlazorServer) {\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n }\n this.activeIndex = index;\n break;\n }\n else if (i === count - 1) {\n let index = this.validLiElement(0);\n if (!this.isBlazorServer) {\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n }\n this.activeIndex = index;\n break;\n }\n }\n }\n else {\n for (let i = count - 1; i >= 0; i--) {\n if (this.isBlazorServer ? (+value > +this.createDateObj(this.blazorTimeCollections[i])) :\n (+value > this.timeCollections[i])) {\n let index = this.validLiElement(i, true);\n if (!this.isBlazorServer) {\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n }\n this.activeIndex = index;\n break;\n }\n else if (i === 0) {\n let index = this.validLiElement(count - 1);\n if (!this.isBlazorServer) {\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n }\n this.activeIndex = index;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n if (this.isBlazorServer) {\n this.inputElement.setAttribute('value', this.selectedElement.getAttribute('data-value'));\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnListItemClick', this.activeIndex, true);\n }\n else {\n this.elementValue(isNullOrUndefined(timeVal) ? null : new Date(timeVal));\n }\n }\n else {\n this.selectNextItem(event);\n }\n }\n selectNextItem(event) {\n let index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n if (this.isBlazorServer) {\n this.inputElement.setAttribute('value', this.selectedElement.getAttribute('data-value'));\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnListItemClick', index, true);\n }\n else {\n this.elementValue(new Date(this.timeCollections[index]));\n }\n }\n findNextInBlazor(event) {\n let count = isNullOrUndefined(this.blazorTimeCollections) ? 0 : this.blazorTimeCollections.length;\n let index = 0;\n let value = this.createDateObj(this.inputElement.value);\n switch (event.action) {\n case 'home':\n this.activeIndex = index;\n break;\n case 'end':\n index = count - 1;\n this.activeIndex = index;\n break;\n case 'down':\n for (let i = 0; i < count; i++) {\n if (this.isBlazorServer ? (+value < +this.createDateObj(this.blazorTimeCollections[i])) :\n (+value < this.timeCollections[i])) {\n let index = this.validLiElement(i);\n this.activeIndex = index;\n break;\n }\n else if (i === count - 1) {\n let index = this.validLiElement(0);\n this.activeIndex = index;\n break;\n }\n }\n break;\n case 'up':\n for (let i = count - 1; i >= 0; i--) {\n if (this.isBlazorServer ? (+value > +this.createDateObj(this.blazorTimeCollections[i])) :\n (+value > this.timeCollections[i])) {\n let index = this.validLiElement(i, true);\n this.activeIndex = index;\n break;\n }\n else if (i === 0) {\n let index = this.validLiElement(count - 1);\n this.activeIndex = index;\n break;\n }\n }\n break;\n }\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnListItemClick', this.activeIndex, true);\n }\n elementValue(value) {\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.checkValue(value);\n }\n }\n validLiElement(index, backward) {\n let elementIndex = null;\n if (this.isBlazorServer && isNullOrUndefined(this.popupWrapper)) {\n let items = this.blazorTimeCollections;\n if (items.length) {\n if (backward) {\n for (let i = index; i >= 0; i--) {\n elementIndex = i;\n break;\n }\n }\n else {\n for (let i = index; i <= items.length - 1; i++) {\n elementIndex = i;\n break;\n }\n }\n }\n }\n else {\n let items = isNullOrUndefined(this.popupWrapper) ? this.liCollections :\n this.popupWrapper.querySelectorAll('.' + LISTCLASS$1);\n let isCheck = true;\n if (items.length) {\n if (backward) {\n for (let i = index; i >= 0; i--) {\n if (!items[i].classList.contains(DISABLED$3)) {\n elementIndex = i;\n break;\n }\n else if (i === 0) {\n if (isCheck) {\n index = i = items.length;\n isCheck = false;\n }\n }\n }\n }\n else {\n for (let i = index; i <= items.length - 1; i++) {\n if (!items[i].classList.contains(DISABLED$3)) {\n elementIndex = i;\n break;\n }\n else if (i === items.length - 1) {\n if (isCheck) {\n index = i = -1;\n isCheck = false;\n }\n }\n }\n }\n }\n }\n return elementIndex;\n }\n keyHandler(event) {\n if (isNullOrUndefined(this.step) || this.step <= 0 || this.inputWrapper.buttons[0].classList.contains(DISABLED$3)) {\n return;\n }\n let count = this.isBlazorServer ? (isNullOrUndefined(this.blazorTimeCollections) ? 0 :\n this.blazorTimeCollections.length) : this.timeCollections.length;\n if (isNullOrUndefined(this.getActiveElement()) || this.getActiveElement().length === 0) {\n if (isNullOrUndefined(this.popupObj) && this.isBlazorServer) {\n if (isNullOrUndefined(this.activeIndex)) {\n let index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnListItemClick', index, true);\n }\n else {\n this.findNextInBlazor(event);\n }\n }\n else {\n if (this.liCollections.length > 0) {\n if (this.isBlazorServer ? (isNullOrUndefined(this.activeIndex)) : (isNullOrUndefined(this.value) &&\n isNullOrUndefined(this.activeIndex))) {\n this.selectNextItem(event);\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n this.findNextElement(event);\n }\n }\n }\n else {\n let nextItem;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n let index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (count) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (count - 1) : this.activeIndex;\n this.activeIndex = index = this.validLiElement(this.activeIndex, (event.keyCode === 40 || event.keyCode === 39) ?\n false : true);\n if (!this.isBlazorServer) {\n nextItem = isNullOrUndefined(this.timeCollections[index]) ? this.timeCollections[0] : this.timeCollections[index];\n }\n }\n else if (event.action === 'home') {\n let index = this.validLiElement(0);\n this.activeIndex = index;\n if (!this.isBlazorServer) {\n nextItem = this.timeCollections[index];\n }\n }\n else if (event.action === 'end') {\n let index = this.validLiElement(count - 1, true);\n this.activeIndex = index;\n if (!this.isBlazorServer) {\n nextItem = this.timeCollections[index];\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n if (this.isBlazorServer) {\n this.inputElement.setAttribute('value', this.selectedElement.getAttribute('data-value'));\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnListItemClick', this.activeIndex, true);\n }\n else {\n this.elementValue(new Date(nextItem));\n }\n }\n this.isNavigate = true;\n this.setHover(this.selectedElement, NAVIGATION);\n this.setActiveDescendant();\n if (!this.isBlazorServer) {\n this.selectInputText();\n }\n if (this.isPopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setScrollPosition();\n }\n }\n getCultureTimeObject(ld, c) {\n return isBlazor() ? (getValue('t', getValue(c, blazorCultureFormats))).replace(/tt/, 'a') :\n getValue('main.' + c + '.dates.calendars.gregorian.timeFormats.short', ld);\n }\n getCultureDateObject(ld, c) {\n return isBlazor() ? (getValue('d', getValue(c, blazorCultureFormats))) :\n getValue('main.' + c + '.dates.calendars.gregorian.dateFormats.short', ld);\n }\n wireListEvents() {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n }\n unWireListEvents() {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n if (!Browser.isDevice) {\n EventHandler.remove(this.listWrapper, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.listWrapper, 'mouseout', this.onMouseLeave);\n }\n }\n }\n valueProcess(event, value) {\n let result = (isNullOrUndefined(this.checkDateValue(value))) ? null : value;\n if (+this.prevDate !== +result) {\n this.initValue = result;\n this.changeEvent(event);\n }\n }\n changeEvent(e) {\n this.addSelection();\n this.updateInput(true, this.initValue);\n let eventArgs = {\n event: (e || null),\n value: this.value,\n text: (this.inputElement).value,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n eventArgs.value = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n this.prevDate = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n this.trigger('change', eventArgs);\n this.invalidValueString = null;\n this.checkErrorState(this.value);\n }\n updateInput(isUpdate, date) {\n if (isUpdate) {\n this.prevValue = this.getValue(date);\n }\n this.prevDate = this.valueWithMinutes = date;\n if ((typeof date !== 'number') || (this.value && +new Date(+this.value).setMilliseconds(0)) !== +date) {\n this.setProperties({ value: date }, true);\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.checkErrorState(this.invalidValueString);\n this.updateInputValue(this.invalidValueString);\n }\n this.clearIconState();\n }\n setActiveDescendant() {\n if (!isNullOrUndefined(this.selectedElement)) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n attributes(this.inputElement, { 'aria-activedescendant': 'null' });\n }\n }\n removeSelection() {\n this.removeHover(HOVER$1);\n if (!isNullOrUndefined(this.popupWrapper)) {\n let items = this.popupWrapper.querySelectorAll('.' + SELECTED$4);\n if (items.length) {\n removeClass(items, SELECTED$4);\n items[0].removeAttribute('aria-selected');\n }\n }\n }\n removeHover(className) {\n let hoveredItem = this.getHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n if (className === NAVIGATION) {\n hoveredItem[0].removeAttribute('aria-selected');\n }\n }\n }\n getHoverItem(className) {\n let hoveredItem;\n if (!isNullOrUndefined(this.popupWrapper)) {\n hoveredItem = this.popupWrapper.querySelectorAll('.' + className);\n }\n return hoveredItem;\n }\n setActiveClass() {\n if (!isNullOrUndefined(this.popupWrapper)) {\n let items = this.popupWrapper.querySelectorAll('.' + LISTCLASS$1);\n if (items.length) {\n for (let i = 0; i < items.length; i++) {\n if ((!this.isBlazorServer && this.timeCollections[i] === +this.getDateObject(this.valueWithMinutes))\n || (this.isBlazorServer && this.blazorTimeCollections[i] === this.blazorTimeCollections[this.activeIndex])) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n }\n addSelection() {\n this.selectedElement = null;\n this.removeSelection();\n this.setActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], SELECTED$4);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n }\n isValidLI(li) {\n return (li && li.classList.contains(LISTCLASS$1) && !li.classList.contains(DISABLED$3));\n }\n createDateObj(val) {\n let formatStr = isBlazor() ?\n // tslint:disable-next-line\n 'M' + getDefaultDateObject().dateSeperator + 'd' + getDefaultDateObject().dateSeperator + 'yy'\n : null;\n let today = this.globalize.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n let value = null;\n if (typeof val === 'string') {\n if (val.toUpperCase().indexOf('AM') > -1 || val.toUpperCase().indexOf('PM') > -1) {\n today = this.defaultCulture.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n value = isNaN(+new Date(today + ' ' + val)) ? null : new Date(new Date(today + ' ' + val).setMilliseconds(0));\n if (isNullOrUndefined(value)) {\n value = this.TimeParse(today, val);\n }\n }\n else {\n value = this.TimeParse(today, val);\n }\n }\n else if (val instanceof Date) {\n value = val;\n }\n return value;\n }\n TimeParse(today, val) {\n let value;\n value = this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.cldrTimeFormat(), type: 'datetime'\n });\n value = isNullOrUndefined(value) ? this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.dateToNumeric(), type: 'datetime'\n }) : value;\n value = isNullOrUndefined(value) ? value : new Date(value.setMilliseconds(0));\n return value;\n }\n createListItems() {\n this.listWrapper = this.createElement('div', { className: CONTENT$2, attrs: { 'tabindex': '0' } });\n let start;\n let end;\n let interval = this.step * 60000;\n let listItems = [];\n this.timeCollections = [];\n this.disableItemCollection = [];\n start = +(this.getDateObject(this.initMin).setMilliseconds(0));\n end = +(this.getDateObject(this.initMax).setMilliseconds(0));\n while (end >= start) {\n this.timeCollections.push(start);\n listItems.push(this.globalize.formatDate(new Date(start), { format: this.cldrTimeFormat(), type: 'time' }));\n start += interval;\n }\n let listBaseOptions = {\n itemCreated: (args) => {\n let eventArgs = {\n element: args.item,\n text: args.text, value: this.getDateObject(args.text), isDisabled: false\n };\n this.trigger('itemRender', eventArgs, (eventArgs) => {\n if (eventArgs.isDisabled) {\n eventArgs.element.classList.add(DISABLED$3);\n }\n if (eventArgs.element.classList.contains(DISABLED$3)) {\n this.disableItemCollection.push(eventArgs.element.getAttribute('data-value'));\n }\n });\n }\n };\n this.listTag = ListBase.createList(this.createElement, listItems, listBaseOptions, true);\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options' });\n append([this.listTag], this.listWrapper);\n }\n documentClickHandler(event) {\n let target = event.target;\n if ((!isNullOrUndefined(this.popupObj) && (this.inputWrapper.container.contains(target) ||\n (this.popupObj.element && this.popupObj.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '#' + this.popupObj.element.id)) && target !== this.inputElement\n && target !== (this.inputWrapper && this.inputWrapper.buttons[0]) &&\n target !== (this.inputWrapper && this.inputWrapper.clearButton) &&\n target !== (this.inputWrapper && this.inputWrapper.container)) {\n if (this.isPopupOpen()) {\n this.hide();\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement)\n && (target === this.popupWrapper);\n }\n }\n }\n setEnableRtl() {\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n }\n setEnable() {\n Input.setEnabled(this.enabled, this.inputElement, this.floatLabelType);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], DISABLED$3);\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hide();\n addClass([this.inputWrapper.container], DISABLED$3);\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.inputElement.tabIndex = -1;\n }\n }\n getProperty(date, val) {\n if (val === 'min') {\n this.initMin = this.checkDateValue(new Date(this.checkInValue(date.min)));\n this.setProperties({ min: this.initMin }, true);\n }\n else {\n this.initMax = this.checkDateValue(new Date(this.checkInValue(date.max)));\n this.setProperties({ max: this.initMax }, true);\n }\n if (this.inputElement.value === '') {\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.checkValue(this.inputElement.value);\n }\n this.checkValueChange(null, false);\n }\n inputBlurHandler(e) {\n // IE popup closing issue when click over the scrollbar\n if (this.isPreventBlur && this.isPopupOpen()) {\n this.inputElement.focus();\n return;\n }\n this.closePopup(0, e);\n removeClass([this.inputWrapper.container], [FOCUS]);\n let blurArguments = {\n model: this.isBlazorServer ? null : this,\n };\n this.trigger('blur', blurArguments);\n if (!this.isBlazorServer && this.getText() !== this.inputElement.value) {\n this.updateValue((this.inputElement).value, e);\n }\n else if (this.inputElement.value.trim().length === 0) {\n this.resetState();\n }\n if (this.isBlazorServer) {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnStrictMode', this.inputElement.value);\n }\n this.cursorDetails = null;\n this.isNavigate = false;\n if (this.inputElement.value === '') {\n this.invalidValueString = null;\n }\n }\n /**\n * Focuses out the TimePicker textbox element.\n * @returns void\n */\n focusOut() {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [FOCUS]);\n let blurArguments = {\n model: this.isBlazorServer ? null : this\n };\n this.trigger('blur', blurArguments);\n }\n }\n isPopupOpen() {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + ROOT$3)) {\n return true;\n }\n return false;\n }\n inputFocusHandler() {\n let focusArguments = {\n model: this.isBlazorServer ? null : this\n };\n if (!this.readonly && !Browser.isDevice) {\n this.selectInputText();\n }\n this.trigger('focus', focusArguments);\n this.clearIconState();\n if (this.openOnFocus) {\n this.show();\n }\n }\n /**\n * Focused the TimePicker textbox element.\n * @returns void\n */\n focusIn() {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n \n }\n }\n /**\n * Hides the TimePicker popup.\n * @returns void\n * @deprecated\n */\n hide() {\n this.closePopup(100, null);\n this.clearIconState();\n }\n /**\n * Opens the popup to show the list items.\n * @returns void\n * @deprecated\n */\n show(event) {\n if ((this.enabled && this.readonly) || !this.enabled || this.popupWrapper) {\n return;\n }\n else {\n this.popupCreation();\n if (Browser.isDevice && this.listWrapper) {\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT$3 + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW$2;\n document.body.appendChild(this.modal);\n }\n if (Browser.isDevice) {\n this.mobileTimePopupWrap = this.createElement('div', { className: 'e-timepicker-mob-popup-wrap' });\n document.body.appendChild(this.mobileTimePopupWrap);\n }\n this.openPopupEventArgs = {\n popup: this.isBlazorServer ? null : (this.popupObj || null),\n cancel: false,\n event: event || null,\n name: 'open',\n appendTo: Browser.isDevice ? this.mobileTimePopupWrap : document.body\n };\n let eventArgs = this.openPopupEventArgs;\n this.trigger('open', eventArgs, (eventArgs) => {\n if ((isBlazor() && this.isServerRendered)) {\n eventArgs.popup = this.popupObj || null;\n }\n this.openPopupEventArgs = eventArgs;\n if (!this.openPopupEventArgs.cancel && !this.inputWrapper.buttons[0].classList.contains(DISABLED$3)) {\n if (this.isBlazorServer) {\n this.popupWrapper.style.visibility = '';\n this.popupWrapper.style.width = this.inputWrapper.container.offsetWidth + 'px';\n this.popupWrapper.style.height = 'auto';\n }\n if (this.isBlazorServer) {\n this.openPopupEventArgs.popup = this.popupObj;\n }\n this.openPopupEventArgs.appendTo.appendChild(this.popupWrapper);\n this.popupAlignment(this.openPopupEventArgs);\n this.setScrollPosition();\n if (!Browser.isDevice) {\n this.inputElement.focus();\n }\n let openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION,\n };\n this.popupObj.refreshPosition(this.anchor);\n if (this.zIndex === 1000) {\n this.popupObj.show(new Animation(openAnimation), this.element);\n }\n else {\n this.popupObj.show(new Animation(openAnimation), null);\n }\n this.setActiveDescendant();\n attributes(this.inputElement, { 'aria-expanded': 'true' });\n addClass([this.inputWrapper.container], FOCUS);\n EventHandler.add(document, 'mousedown touchstart', this.documentClickHandler, this);\n this.setOverlayIndex(this.mobileTimePopupWrap, this.popupObj.element, this.modal, Browser.isDevice);\n }\n else {\n this.popupObj.destroy();\n if (this.isBlazorServer) {\n this.disposeServerPopup();\n // tslint:disable\n this.inputWrapper.container.parentElement.insertBefore(this.popupWrapper, this.inputWrapper.container.nextElementSibling);\n this.interopAdaptor.invokeMethodAsync('OnPopupHide', false);\n // tslint:enable\n }\n this.popupWrapper = this.listTag = undefined;\n this.liCollections = this.timeCollections = this.disableItemCollection = [];\n this.popupObj = null;\n }\n });\n }\n }\n setOverlayIndex(popupWrapper, timePopupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(timePopupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n let index = parseInt(timePopupElement.style.zIndex, 10) ? parseInt(timePopupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n }\n formatValues(type) {\n let value;\n if (typeof type === 'number') {\n value = formatUnit(type);\n }\n else if (typeof type === 'string') {\n value = (type.match(/px|%|em/)) ? type : isNaN(parseInt(type, 10)) ? type : formatUnit(type);\n }\n return value;\n }\n popupAlignment(args) {\n args.popup.position.X = this.formatValues(args.popup.position.X);\n args.popup.position.Y = this.formatValues(args.popup.position.Y);\n if (!isNaN(parseFloat(args.popup.position.X)) || !isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.targetType = 'container';\n }\n if (!isNaN(parseFloat(args.popup.position.X))) {\n this.popupObj.offsetX = parseFloat(args.popup.position.X);\n }\n if (!isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.offsetY = parseFloat(args.popup.position.Y);\n }\n if (!Browser.isDevice) {\n switch (args.popup.position.X) {\n case 'left':\n break;\n case 'right':\n args.popup.offsetX = this.containerStyle.width;\n break;\n case 'center':\n args.popup.offsetX = -(this.containerStyle.width / 2);\n break;\n }\n switch (args.popup.position.Y) {\n case 'top':\n break;\n case 'bottom':\n break;\n case 'center':\n args.popup.offsetY = -(this.containerStyle.height / 2);\n break;\n }\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.inputWrapper.container;\n this.anchor = this.inputElement;\n this.popupObj.targetType = 'relative';\n }\n }\n else {\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.offsetY = 0;\n this.popupObj.targetType = 'container';\n this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n }\n }\n /**\n * Gets the properties to be maintained upon browser refresh.\n * @returns string\n */\n getPersistData() {\n let keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n }\n /**\n * To get component name\n * @private\n */\n getModuleName() {\n return 'timepicker';\n }\n /**\n * Called internally if any of the property value changed.\n * returns void\n * @private\n */\n // tslint:disable-next-line:max-func-body-length\n onPropertyChanged(newProp, oldProp) {\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n this.inputElement.setAttribute('aria-placeholder', newProp.placeholder);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement, this.floatLabelType);\n if (this.readonly) {\n this.hide();\n }\n this.setTimeAllowEdit();\n break;\n case 'enabled':\n this.setProperties({ enabled: newProp.enabled }, true);\n this.setEnable();\n break;\n case 'allowEdit':\n this.setTimeAllowEdit();\n break;\n case 'enableRtl':\n if (!this.isBlazorServer) {\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n }\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'min':\n case 'max':\n if (!this.isBlazorServer) {\n this.getProperty(newProp, prop);\n }\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n break;\n case 'locale':\n this.setProperties({ locale: newProp.locale }, true);\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.updatePlaceHolder();\n if (!this.isBlazorServer) {\n this.setValue(this.value);\n }\n break;\n case 'width':\n setStyleAttribute(this.inputWrapper.container, { 'width': this.setWidth(newProp.width) });\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkTimeFormat();\n if (!this.isBlazorServer) {\n this.setValue(this.value);\n }\n break;\n case 'value':\n if (!this.isBlazorServer) {\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n if (!this.invalidValueString) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(newProp.value)) }, true);\n newProp.value = this.value;\n }\n else {\n if ((newProp.value && +new Date(+newProp.value).setMilliseconds(0)) !== +this.value) {\n newProp.value = this.checkDateValue(new Date('' + newProp.value));\n }\n }\n this.initValue = newProp.value;\n newProp.value = this.compareFormatChange(this.checkValue(newProp.value));\n }\n else {\n this.updateInputValue(this.invalidValueString);\n this.checkErrorState(this.invalidValueString);\n }\n this.checkValueChange(null, false);\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n break;\n case 'strictMode':\n if (!this.isBlazorServer) {\n this.invalidValueString = null;\n if (newProp.strictMode) {\n this.checkErrorState(null);\n }\n this.setProperties({ strictMode: newProp.strictMode }, true);\n this.checkValue((this.inputElement).value);\n this.checkValueChange(null, false);\n }\n break;\n case 'scrollTo':\n if (!this.isBlazorServer) {\n if (this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo)))) {\n if (this.popupWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: newProp.scrollTo }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n }\n else {\n if (this.popupWrapper) {\n this.setScrollTo();\n }\n }\n break;\n }\n }\n }\n checkInValue(inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n }\n};\n__decorate$3([\n Property(null)\n], TimePicker.prototype, \"width\", void 0);\n__decorate$3([\n Property(null)\n], TimePicker.prototype, \"cssClass\", void 0);\n__decorate$3([\n Property(false)\n], TimePicker.prototype, \"strictMode\", void 0);\n__decorate$3([\n Property(null)\n], TimePicker.prototype, \"keyConfigs\", void 0);\n__decorate$3([\n Property(null)\n], TimePicker.prototype, \"format\", void 0);\n__decorate$3([\n Property(true)\n], TimePicker.prototype, \"enabled\", void 0);\n__decorate$3([\n Property(false)\n], TimePicker.prototype, \"readonly\", void 0);\n__decorate$3([\n Property({})\n], TimePicker.prototype, \"htmlAttributes\", void 0);\n__decorate$3([\n Property('Never')\n], TimePicker.prototype, \"floatLabelType\", void 0);\n__decorate$3([\n Property(null)\n], TimePicker.prototype, \"placeholder\", void 0);\n__decorate$3([\n Property(1000)\n], TimePicker.prototype, \"zIndex\", void 0);\n__decorate$3([\n Property(false)\n], TimePicker.prototype, \"enablePersistence\", void 0);\n__decorate$3([\n Property(true)\n], TimePicker.prototype, \"showClearButton\", void 0);\n__decorate$3([\n Property(30)\n], TimePicker.prototype, \"step\", void 0);\n__decorate$3([\n Property(null)\n], TimePicker.prototype, \"scrollTo\", void 0);\n__decorate$3([\n Property(null)\n], TimePicker.prototype, \"value\", void 0);\n__decorate$3([\n Property(null)\n], TimePicker.prototype, \"min\", void 0);\n__decorate$3([\n Property(null)\n], TimePicker.prototype, \"max\", void 0);\n__decorate$3([\n Property(true)\n], TimePicker.prototype, \"allowEdit\", void 0);\n__decorate$3([\n Property(false)\n], TimePicker.prototype, \"openOnFocus\", void 0);\n__decorate$3([\n Event()\n], TimePicker.prototype, \"change\", void 0);\n__decorate$3([\n Event()\n], TimePicker.prototype, \"created\", void 0);\n__decorate$3([\n Event()\n], TimePicker.prototype, \"destroyed\", void 0);\n__decorate$3([\n Event()\n], TimePicker.prototype, \"open\", void 0);\n__decorate$3([\n Event()\n], TimePicker.prototype, \"itemRender\", void 0);\n__decorate$3([\n Event()\n], TimePicker.prototype, \"close\", void 0);\n__decorate$3([\n Event()\n], TimePicker.prototype, \"cleared\", void 0);\n__decorate$3([\n Event()\n], TimePicker.prototype, \"blur\", void 0);\n__decorate$3([\n Event()\n], TimePicker.prototype, \"focus\", void 0);\nTimePicker = __decorate$3([\n NotifyPropertyChanges\n], TimePicker);\n\n/**\n * TimePicker modules\n */\n\nvar __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n///\n//class constant defination\nconst DATEWRAPPER$1 = 'e-date-wrapper';\nconst DATEPICKERROOT = 'e-datepicker';\nconst DATETIMEWRAPPER = 'e-datetime-wrapper';\nconst DAY$1 = new Date().getDate();\nconst MONTH$3 = new Date().getMonth();\nconst YEAR$3 = new Date().getFullYear();\nconst HOUR = new Date().getHours();\nconst MINUTE = new Date().getMinutes();\nconst SECOND = new Date().getSeconds();\nconst MILLISECOND = new Date().getMilliseconds();\nconst ROOT$4 = 'e-datetimepicker';\nconst DATETIMEPOPUPWRAPPER = 'e-datetimepopup-wrapper';\nconst INPUTWRAPPER$1 = 'e-input-group-icon';\nconst POPUP$3 = 'e-popup';\nconst TIMEICON$1 = 'e-time-icon';\nconst INPUTFOCUS$2 = 'e-input-focus';\nconst POPUPDIMENSION$1 = '250px';\nconst ICONANIMATION$1 = 'e-icon-anim';\nconst DISABLED$4 = 'e-disabled';\nconst ERROR$3 = 'e-error';\nconst CONTENT$3 = 'e-content';\nconst NAVIGATION$1 = 'e-navigation';\nconst ACTIVE$2 = 'e-active';\nconst HOVER$2 = 'e-hover';\nconst ICONS$1 = 'e-icons';\nconst HALFPOSITION$1 = 2;\nconst LISTCLASS$2 = 'e-list-item';\nconst ANIMATIONDURATION$1 = 100;\nconst OVERFLOW$3 = 'e-time-overflow';\n/**\n * Represents the DateTimePicker component that allows user to select\n * or enter a date time value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nlet DateTimePicker = class DateTimePicker extends DatePicker {\n /**\n * Constructor for creating the widget\n */\n constructor(options, element) {\n super(options, element);\n this.valueWithMinutes = null;\n this.dateTimeOptions = options;\n }\n focusHandler() {\n addClass([this.inputWrapper.container], INPUTFOCUS$2);\n }\n /**\n * Sets the focus to widget for interaction.\n * @returns void\n */\n focusIn() {\n super.focusIn();\n }\n /**\n * Remove the focus from widget, if the widget is in focus state.\n * @returns void\n */\n focusOut() {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [INPUTFOCUS$2]);\n }\n }\n blurHandler(e) {\n // IE popup closing issue when click over the scrollbar\n if (this.isTimePopupOpen() && this.isPreventBlur) {\n this.inputElement.focus();\n return;\n }\n removeClass([this.inputWrapper.container], INPUTFOCUS$2);\n let blurArguments = {\n model: (isBlazor() && this.isServerRendered) ? null : this\n };\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n this.trigger('blur', blurArguments);\n }\n /**\n * To destroy the widget.\n * @returns void\n */\n destroy() {\n if (this.popupObject && this.popupObject.element.classList.contains(POPUP$3)) {\n this.popupObject.destroy();\n detach(this.dateTimeWrapper);\n this.dateTimeWrapper = undefined;\n this.liCollections = this.timeCollections = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n }\n let ariaAttribute = {\n 'aria-live': 'assertive', 'aria-atomic': 'true', 'aria-invalid': 'false',\n 'aria-haspopup': 'true', 'aria-activedescendant': 'null',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n this.inputElement.removeAttribute('aria-placeholder');\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObject = this.popupWrapper = null;\n this.keyboardHandler.destroy();\n }\n this.unBindInputEvents();\n super.destroy();\n }\n /**\n * To Initialize the control rendering.\n * @return void\n * @private\n */\n render() {\n this.timekeyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.valueWithMinutes = null;\n this.previousDateTime = null;\n this.isPreventBlur = false;\n this.cloneElement = this.element.cloneNode(true);\n this.dateTimeFormat = this.cldrDateTimeFormat();\n this.initValue = this.value;\n super.updateHtmlAttributeToElement();\n this.checkAttributes(false);\n let localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('datetimepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n super.render();\n this.createInputElement();\n super.updateHtmlAttributeToWrapper();\n this.bindInputEvents();\n this.setValue();\n this.previousDateTime = this.value && new Date(+this.value);\n if (this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n if (!this.enabled) {\n this.inputElement.tabIndex = -1;\n }\n }\n this.renderComplete();\n }\n setValue() {\n this.initValue = this.validateMinMaxRange(this.value);\n if (!this.strictMode && this.isDateObject(this.initValue)) {\n let value = this.validateMinMaxRange(this.initValue);\n Input.setValue(this.getFormattedValue(value), this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value }, true);\n }\n else {\n if (isNullOrUndefined(this.value)) {\n this.initValue = null;\n this.setProperties({ value: null }, true);\n }\n }\n this.valueWithMinutes = this.value;\n super.updateInput();\n }\n validateMinMaxRange(value) {\n let result = value;\n if (this.isDateObject(value)) {\n result = this.validateValue(value);\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n }\n }\n this.checkValidState(result);\n return result;\n }\n checkValidState(value) {\n this.isValidState = true;\n if (!this.strictMode) {\n if ((+(value) > +(this.max)) || (+(value) < +(this.min))) {\n this.isValidState = false;\n }\n }\n this.checkErrorState();\n }\n checkErrorState() {\n if (this.isValidState) {\n removeClass([this.inputWrapper.container], ERROR$3);\n }\n else {\n addClass([this.inputWrapper.container], ERROR$3);\n }\n attributes(this.inputElement, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n }\n validateValue(value) {\n let dateVal = value;\n if (this.strictMode) {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = this.max;\n }\n else if (+value < +this.min) {\n dateVal = this.min;\n }\n else if (+value > +this.max) {\n dateVal = this.max;\n }\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = value;\n }\n }\n return dateVal;\n }\n disablePopupButton(isDisable) {\n if (isDisable) {\n addClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED$4);\n this.hide();\n }\n else {\n removeClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED$4);\n }\n }\n getFormattedValue(value) {\n let dateOptions;\n if (!isNullOrUndefined(value)) {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n return this.globalize.formatDate(value, dateOptions);\n }\n else {\n return null;\n }\n }\n isDateObject(value) {\n return (!isNullOrUndefined(value) && !isNaN(+value)) ? true : false;\n }\n createInputElement() {\n removeClass([this.inputElement], DATEPICKERROOT);\n removeClass([this.inputWrapper.container], DATEWRAPPER$1);\n addClass([this.inputWrapper.container], DATETIMEWRAPPER);\n addClass([this.inputElement], ROOT$4);\n this.renderTimeIcon();\n }\n renderTimeIcon() {\n this.timeIcon = Input.appendSpan(INPUTWRAPPER$1 + ' ' + TIMEICON$1 + ' ' + ICONS$1, this.inputWrapper.container);\n }\n bindInputEvents() {\n EventHandler.add(this.timeIcon, 'mousedown', this.timeHandler, this);\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dateHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.blurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.focusHandler, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardHandler = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyAction.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n unBindInputEvents() {\n EventHandler.remove(this.timeIcon, 'mousedown touchstart', this.timeHandler);\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.dateHandler);\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'blur', this.blurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.focusHandler);\n }\n if (this.keyboardHandler) {\n this.keyboardHandler.destroy();\n }\n }\n cldrTimeFormat() {\n let cldrTime;\n if (this.isNullOrEmpty(this.timeFormat)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = isBlazor() ? (getValue('t', getValue(this.locale, blazorCultureFormats))).replace(/tt/, 'a') :\n (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.timeFormat;\n }\n return cldrTime;\n }\n cldrDateTimeFormat() {\n let cldrTime;\n let culture = new Internationalization(this.locale);\n let dateFormat = culture.getDatePattern({ skeleton: isBlazor() ? 'd' : 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.getCldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n }\n getCldrFormat(type) {\n let cldrDateTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTime = isBlazor() ? (getValue('t', getValue(this.locale, blazorCultureFormats))).replace(/tt/, 'a') :\n (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTime;\n }\n isNullOrEmpty(value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n }\n getCultureTimeObject(ld, c) {\n if (this.calendarMode === 'Gregorian') {\n return isBlazor() ? (getValue('t', getValue(this.locale, blazorCultureFormats))).replace(/tt/, 'a') :\n (getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.short', ld));\n }\n else {\n return getValue('main.' + '' + this.locale + '.dates.calendars.islamic.timeFormats.short', ld);\n }\n }\n timeHandler(e) {\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n if (e.currentTarget === this.timeIcon) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isDatePopupOpen()) {\n super.hide(e);\n }\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n else {\n this.inputElement.focus();\n this.popupCreation('time', e);\n addClass([this.inputWrapper.container], [INPUTFOCUS$2]);\n }\n }\n }\n dateHandler(e) {\n if (e.currentTarget === this.inputWrapper.buttons[0]) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n if (!isNullOrUndefined(this.popupWrapper)) {\n this.popupCreation('date', e);\n }\n }\n }\n show(type, e) {\n if ((this.enabled && this.readonly) || !this.enabled) {\n return;\n }\n else {\n if (type === 'time' && !this.dateTimeWrapper) {\n if (this.isDatePopupOpen()) {\n this.hide(e);\n }\n this.popupCreation('time', e);\n }\n else if (!this.popupObj) {\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n super.show();\n this.popupCreation('date', e);\n }\n }\n }\n toggle(e) {\n if (this.isDatePopupOpen()) {\n super.hide(e);\n this.show('time', null);\n }\n else if (this.isTimePopupOpen()) {\n this.hide(e);\n super.show(null, e);\n this.popupCreation('date', null);\n }\n else {\n this.show(null, e);\n }\n }\n listCreation() {\n let dateObject;\n if (this.calendarMode === 'Gregorian') {\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.cldrDateTimeFormat(), type: 'datetime'\n });\n }\n else {\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.cldrDateTimeFormat(), type: 'datetime', calendar: 'islamic'\n });\n }\n let value = isNullOrUndefined(this.value) ? this.inputElement.value !== '' ?\n dateObject :\n new Date() : this.value;\n this.valueWithMinutes = value;\n this.listWrapper = createElement('div', { className: CONTENT$3, attrs: { 'tabindex': '0' } });\n let min = this.startTime(value);\n let max = this.endTime(value);\n let listDetails = TimePickerBase.createListItems(this.createElement, min, max, this.globalize, this.cldrTimeFormat(), this.step);\n this.timeCollections = listDetails.collection;\n this.listTag = listDetails.list;\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options' });\n append([listDetails.list], this.listWrapper);\n this.wireTimeListEvents();\n let rippleModel = { duration: 300, selector: '.' + LISTCLASS$2 };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS$2);\n }\n popupCreation(type, e) {\n if (Browser.isDevice) {\n this.element.setAttribute('readonly', 'readonly');\n }\n if (type === 'date') {\n if (!this.readonly && this.popupWrapper) {\n addClass([this.popupWrapper], DATETIMEPOPUPWRAPPER);\n attributes(this.popupWrapper, { 'id': this.element.id + '_datepopup' });\n }\n }\n else {\n if (!this.readonly) {\n this.dateTimeWrapper = createElement('div', {\n className: ROOT$4 + ' ' + POPUP$3,\n attrs: { 'id': this.element.id + '_timepopup', 'style': 'visibility:hidden ; display:block' }\n });\n if (!isNullOrUndefined(this.cssClass)) {\n this.dateTimeWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.listCreation();\n append([this.listWrapper], this.dateTimeWrapper);\n }\n document.body.appendChild(this.dateTimeWrapper);\n this.addTimeSelection();\n this.renderPopup();\n this.setTimeScrollPosition();\n this.openPopup(e);\n this.popupObject.refreshPosition(this.inputElement);\n }\n }\n }\n openPopup(e) {\n this.preventArgs = {\n cancel: false,\n popup: (isBlazor() && this.isServerRendered) ? null : this.popupObject,\n event: e || null\n };\n let eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, (eventArgs) => {\n this.preventArgs = eventArgs;\n if (!this.preventArgs.cancel && !this.readonly) {\n let openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION$1,\n };\n if (this.zIndex === 1000) {\n this.popupObject.show(new Animation(openAnimation), this.element);\n }\n else {\n this.popupObject.show(new Animation(openAnimation), null);\n }\n addClass([this.inputWrapper.container], [ICONANIMATION$1]);\n attributes(this.inputElement, { 'aria-expanded': 'true' });\n EventHandler.add(document, 'mousedown touchstart', this.documentClickHandler, this);\n }\n });\n }\n documentClickHandler(event) {\n let target = event.target;\n if ((!isNullOrUndefined(this.popupObject) && (this.inputWrapper.container.contains(target) ||\n (this.popupObject.element && this.popupObject.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '#' + (this.popupObject && this.popupObject.element.id))) && target !== this.inputElement\n && target !== this.timeIcon && target !== this.inputWrapper.container) {\n if (this.isTimePopupOpen()) {\n this.hide(event);\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = ((document.activeElement === this.inputElement) && (Browser.isIE || Browser.info.name === 'edge')\n && target === this.popupObject.element);\n }\n }\n if (this.openOnFocus) {\n this.show();\n }\n }\n isTimePopupOpen() {\n return (this.dateTimeWrapper && this.dateTimeWrapper.classList.contains('' + ROOT$4)) ? true : false;\n }\n isDatePopupOpen() {\n return (this.popupWrapper && this.popupWrapper.classList.contains('' + DATETIMEPOPUPWRAPPER)) ? true : false;\n }\n renderPopup() {\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n if (Browser.isDevice) {\n this.timeModal = createElement('div');\n this.timeModal.className = '' + ROOT$4 + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW$3;\n this.timeModal.style.display = 'block';\n document.body.appendChild(this.timeModal);\n }\n let offset = 4;\n this.popupObject = new Popup(this.dateTimeWrapper, {\n width: this.setPopupWidth(),\n zIndex: this.zIndex,\n targetType: 'container',\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n enableRtl: this.enableRtl,\n offsetY: offset,\n open: () => {\n this.dateTimeWrapper.style.visibility = 'visible';\n addClass([this.timeIcon], ACTIVE$2);\n if (!Browser.isDevice) {\n this.timekeyConfigure = extend(this.timekeyConfigure, this.keyConfigs);\n this.inputEvent = new KeyboardEvents(this.inputWrapper.container, {\n keyAction: this.TimeKeyActionHandle.bind(this),\n keyConfigs: this.timekeyConfigure,\n eventName: 'keydown'\n });\n }\n }, close: () => {\n removeClass([this.timeIcon], ACTIVE$2);\n this.unWireTimeListEvents();\n this.inputElement.setAttribute('aria-activedescendant', 'null');\n remove(this.popupObject.element);\n this.popupObject.destroy();\n this.dateTimeWrapper.innerHTML = '';\n this.listWrapper = this.dateTimeWrapper = undefined;\n if (this.inputEvent) {\n this.inputEvent.destroy();\n }\n }, targetExitViewport: () => {\n if (!Browser.isDevice) {\n this.hide();\n }\n }\n });\n this.popupObject.element.style.maxHeight = POPUPDIMENSION$1;\n }\n setDimension(width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n width = width;\n }\n else {\n width = '100%';\n }\n return width;\n }\n setPopupWidth() {\n let width = this.setDimension(this.width);\n if (width.indexOf('%') > -1) {\n let inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n }\n wireTimeListEvents() {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n }\n unWireTimeListEvents() {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n }\n }\n onMouseOver(event) {\n let currentLi = closest(event.target, '.' + LISTCLASS$2);\n this.setTimeHover(currentLi, HOVER$2);\n }\n onMouseLeave() {\n this.removeTimeHover(HOVER$2);\n }\n setTimeHover(li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeTimeHover(className);\n addClass([li], className);\n }\n }\n getPopupHeight() {\n let height = parseInt(POPUPDIMENSION$1, 10);\n let popupHeight = this.dateTimeWrapper.getBoundingClientRect().height;\n return popupHeight > height ? height : popupHeight;\n }\n changeEvent(e) {\n if ((this.value && this.value.valueOf()) !== (this.previousDateTime && +this.previousDateTime.valueOf())) {\n super.changeEvent(e);\n this.valueWithMinutes = this.value;\n this.setInputValue('date');\n this.previousDateTime = this.value && new Date(+this.value);\n }\n }\n updateValue(e) {\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs = {\n value: this.value, event: e || null,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n this.addTimeSelection();\n this.trigger('change', this.changedArgs);\n this.previousDateTime = this.value;\n }\n }\n setTimeScrollPosition() {\n let popupElement;\n popupElement = this.selectedElement;\n if (!isNullOrUndefined(popupElement)) {\n this.findScrollTop(popupElement);\n }\n else if (this.dateTimeWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n }\n findScrollTop(element) {\n let listHeight = this.getPopupHeight();\n let nextElement = element.nextElementSibling;\n let height = nextElement ? nextElement.offsetTop : element.offsetTop;\n let lineHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n this.dateTimeWrapper.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION$1 + lineHeight / HALFPOSITION$1)) : height;\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n }\n setScrollTo() {\n let element;\n let items = this.dateTimeWrapper.querySelectorAll('.' + LISTCLASS$2);\n if (items.length >= 0) {\n let initialTime = this.timeCollections[0];\n let scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n }\n setInputValue(type) {\n if (type === 'date') {\n this.inputElement.value = this.previousElementValue = this.getFormattedValue(this.getFullDateTime());\n this.setProperties({ value: this.getFullDateTime() }, true);\n }\n else {\n let tempVal = this.getFormattedValue(new Date(this.timeCollections[this.activeIndex]));\n Input.setValue(tempVal, this.inputElement, this.floatLabelType, this.showClearButton);\n this.previousElementValue = this.inputElement.value;\n this.setProperties({ value: new Date(this.timeCollections[this.activeIndex]) }, true);\n }\n this.updateIconState();\n }\n getFullDateTime() {\n let value = null;\n if (this.isDateObject(this.valueWithMinutes)) {\n value = this.combineDateTime(this.valueWithMinutes);\n }\n else {\n value = this.previousDate;\n }\n return this.validateMinMaxRange(value);\n }\n combineDateTime(value) {\n if (this.isDateObject(value)) {\n let day = this.previousDate.getDate();\n let month = this.previousDate.getMonth();\n let year = this.previousDate.getFullYear();\n let hour = value.getHours();\n let minutes = value.getMinutes();\n let seconds = value.getSeconds();\n return new Date(year, month, day, hour, minutes, seconds);\n }\n else {\n return this.previousDate;\n }\n }\n onMouseClick(event) {\n let target = event.target;\n let li = this.selectedElement = closest(target, '.' + LISTCLASS$2);\n if (li && li.classList.contains(LISTCLASS$2)) {\n this.timeValue = li.getAttribute('data-value');\n this.hide(event);\n }\n this.setSelection(li, event);\n }\n setSelection(li, event) {\n if (this.isValidLI(li) && !li.classList.contains(ACTIVE$2)) {\n let value = li.getAttribute('data-value');\n this.selectedElement = li;\n let index = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.activeIndex = index;\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], ACTIVE$2);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.updateValue(event);\n }\n }\n setTimeActiveClass() {\n let collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n if (!isNullOrUndefined(collections)) {\n let items = collections.querySelectorAll('.' + LISTCLASS$2);\n if (items.length) {\n for (let i = 0; i < items.length; i++) {\n if (this.timeCollections[i] === +(this.valueWithMinutes)) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n this.setTimeActiveDescendant();\n break;\n }\n }\n }\n }\n }\n setTimeActiveDescendant() {\n if (!isNullOrUndefined(this.selectedElement)) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n attributes(this.inputElement, { 'aria-activedescendant': 'null' });\n }\n }\n addTimeSelection() {\n this.selectedElement = null;\n this.removeTimeSelection();\n this.setTimeActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], ACTIVE$2);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n }\n removeTimeSelection() {\n this.removeTimeHover(HOVER$2);\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n let items = this.dateTimeWrapper.querySelectorAll('.' + ACTIVE$2);\n if (items.length) {\n removeClass(items, ACTIVE$2);\n items[0].removeAttribute('aria-selected');\n }\n }\n }\n removeTimeHover(className) {\n let hoveredItem = this.getTimeHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n }\n }\n getTimeHoverItem(className) {\n let collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n let hoveredItem;\n if (!isNullOrUndefined(collections)) {\n hoveredItem = collections.querySelectorAll('.' + className);\n }\n return hoveredItem;\n }\n isValidLI(li) {\n return (li && li.classList.contains(LISTCLASS$2) && !li.classList.contains(DISABLED$4));\n }\n calculateStartEnd(value, range, method) {\n let day = value.getDate();\n let month = value.getMonth();\n let year = value.getFullYear();\n let hours = value.getHours();\n let minutes = value.getMinutes();\n let seconds = value.getSeconds();\n let milliseconds = value.getMilliseconds();\n if (range) {\n if (method === 'starttime') {\n return new Date(year, month, day, 0, 0, 0);\n }\n else {\n return new Date(year, month, day, 23, 59, 59);\n }\n }\n else {\n return new Date(year, month, day, hours, minutes, seconds, milliseconds);\n }\n }\n startTime(date) {\n let tempStartValue;\n let start;\n let tempMin = this.min;\n let value;\n value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMin.getDate() && +value.getMonth() === +tempMin.getMonth() &&\n +value.getFullYear() === +tempMin.getFullYear()) || ((+new Date(value.getFullYear(), value.getMonth(), value.getDate())) <=\n +new Date(tempMin.getFullYear(), tempMin.getMonth(), tempMin.getDate()))) {\n start = false;\n tempStartValue = this.min;\n }\n else if (+value < +this.max && +value > +this.min) {\n start = true;\n tempStartValue = value;\n }\n else if (+value >= +this.max) {\n start = true;\n tempStartValue = this.max;\n }\n return this.calculateStartEnd(tempStartValue, start, 'starttime');\n }\n endTime(date) {\n let tempEndValue;\n let end;\n let tempMax = this.max;\n let value;\n value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMax.getDate() && +value.getMonth() === +tempMax.getMonth() &&\n +value.getFullYear() === +tempMax.getFullYear()) || (+new Date(value.getUTCFullYear(), value.getMonth(), value.getDate()) >=\n +new Date(tempMax.getFullYear(), tempMax.getMonth(), tempMax.getDate()))) {\n end = false;\n tempEndValue = this.max;\n }\n else if (+value < +this.max && +value > +this.min) {\n end = true;\n tempEndValue = value;\n }\n else if (+value <= +this.min) {\n end = true;\n tempEndValue = this.min;\n }\n return this.calculateStartEnd(tempEndValue, end, 'endtime');\n }\n hide(e) {\n if (this.popupObj || this.dateTimeWrapper) {\n this.preventArgs = {\n cancel: false,\n popup: (isBlazor() && this.isServerRendered) ? null : this.popupObj || this.popupObject,\n event: e || null\n };\n let eventArgs = this.preventArgs;\n if (isNullOrUndefined(this.popupObj)) {\n this.trigger('close', eventArgs, (eventArgs) => {\n this.dateTimeCloseEventCallback(e, eventArgs);\n });\n }\n else {\n this.dateTimeCloseEventCallback(e, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n }\n dateTimeCloseEventCallback(e, eventArgs) {\n this.preventArgs = eventArgs;\n if (!this.preventArgs.cancel) {\n if (this.isDatePopupOpen()) {\n super.hide(e);\n }\n else if (this.isTimePopupOpen()) {\n this.closePopup(e);\n removeClass([document.body], OVERFLOW$3);\n if (Browser.isDevice && this.timeModal) {\n this.timeModal.style.display = 'none';\n this.timeModal.outerHTML = '';\n this.timeModal = null;\n }\n this.setTimeActiveDescendant();\n }\n }\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n closePopup(e) {\n if (this.isTimePopupOpen() && this.popupObject) {\n let animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION$1,\n delay: 0\n };\n this.popupObject.hide(new Animation(animModel));\n this.inputWrapper.container.classList.remove(ICONANIMATION$1);\n attributes(this.inputElement, { 'aria-expanded': 'false' });\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n }\n }\n preRender() {\n this.checkFormat();\n this.dateTimeFormat = this.cldrDateTimeFormat();\n super.preRender();\n removeClass([this.inputElementCopy], [ROOT$4]);\n }\n ;\n getProperty(date, val) {\n if (val === 'min') {\n this.setProperties({ min: this.validateValue(date.min) }, true);\n }\n else {\n this.setProperties({ max: this.validateValue(date.max) }, true);\n }\n }\n checkAttributes(isDynamic) {\n let attributes$$1 = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['style', 'name', 'step', 'disabled', 'readonly', 'value', 'min', 'max', 'placeholder', 'type'];\n let value;\n for (let prop of attributes$$1) {\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'readonly':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['readonly'] === undefined)) || isDynamic) {\n let readonly = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'disabled':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['enabled'] === undefined)) || isDynamic) {\n let enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === 'true' ||\n this.inputElement.getAttribute(prop) === '' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'value':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n }\n requiredModules() {\n let modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n return modules;\n }\n getTimeActiveElement() {\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n return this.dateTimeWrapper.querySelectorAll('.' + ACTIVE$2);\n }\n else {\n return null;\n }\n }\n createDateObj(val) {\n return val instanceof Date ? val : null;\n }\n getDateObject(text) {\n if (!this.isNullOrEmpty(text)) {\n let dateValue = this.createDateObj(text);\n let value = this.valueWithMinutes;\n let status = !isNullOrUndefined(value);\n if (this.checkDateValue(dateValue)) {\n let date = status ? value.getDate() : DAY$1;\n let month = status ? value.getMonth() : MONTH$3;\n let year = status ? value.getFullYear() : YEAR$3;\n let hour = status ? value.getHours() : HOUR;\n let minute = status ? value.getMinutes() : MINUTE;\n let second = status ? value.getSeconds() : SECOND;\n let millisecond = status ? value.getMilliseconds() : MILLISECOND;\n return new Date(year, month, date, hour, minute, second, millisecond);\n }\n }\n return null;\n }\n findNextTimeElement(event) {\n let textVal = (this.inputElement).value;\n let value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n let dateTimeVal = null;\n let listCount = this.liCollections.length;\n if (!isNullOrUndefined(this.activeIndex) || !isNullOrUndefined(this.checkDateValue(value))) {\n if (event.action === 'home') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[0])));\n this.activeIndex = 0;\n }\n else if (event.action === 'end') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[this.timeCollections.length - 1])));\n this.activeIndex = this.timeCollections.length - 1;\n }\n else {\n if (event.action === 'down') {\n for (let i = 0; i < listCount; i++) {\n if (+value < this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n else {\n for (let i = listCount - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(isNullOrUndefined(dateTimeVal) ? null : new Date(dateTimeVal));\n }\n }\n setTimeValue(date, value) {\n let dateString;\n let time;\n let val = this.validateMinMaxRange(value);\n let newval = this.createDateObj(val);\n if (this.getFormattedValue(newval) !== (!isNullOrUndefined(this.value) ? this.getFormattedValue(this.value) : null)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = new Date(+this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = new Date(+this.valueWithMinutes);\n }\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n return time;\n }\n timeElementValue(value) {\n if (!isNullOrUndefined(this.checkDateValue(value)) && !this.isNullOrEmpty(value)) {\n let date = value instanceof Date ? value : this.getDateObject(value);\n return this.setTimeValue(date, value);\n }\n return null;\n }\n timeKeyHandler(event) {\n if (isNullOrUndefined(this.step) || this.step <= 0) {\n return;\n }\n let listCount = this.timeCollections.length;\n if (isNullOrUndefined(this.getTimeActiveElement()) || this.getTimeActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n this.activeIndex = 0;\n this.selectedElement = this.liCollections[0];\n this.timeElementValue(new Date(this.timeCollections[0]));\n }\n else {\n this.findNextTimeElement(event);\n }\n }\n }\n else {\n let nextItemValue;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n let index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (listCount) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (listCount - 1) : this.activeIndex;\n nextItemValue = isNullOrUndefined(this.timeCollections[index]) ? this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n this.activeIndex = 0;\n nextItemValue = this.timeCollections[0];\n }\n else if (event.action === 'end') {\n this.activeIndex = listCount - 1;\n nextItemValue = this.timeCollections[listCount - 1];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(new Date(nextItemValue));\n }\n this.isNavigate = true;\n this.setTimeHover(this.selectedElement, NAVIGATION$1);\n this.setTimeActiveDescendant();\n if (this.isTimePopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setTimeScrollPosition();\n }\n }\n TimeKeyActionHandle(event) {\n if (this.enabled) {\n if (event.action !== 'right' && event.action !== 'left' && event.action !== 'tab') {\n event.preventDefault();\n }\n switch (event.action) {\n case 'up':\n case 'down':\n case 'home':\n case 'end':\n this.timeKeyHandler(event);\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs.value = this.value;\n this.addTimeSelection();\n this.previousDateTime = this.value;\n }\n }\n else {\n this.updateValue(event);\n }\n this.hide(event);\n addClass([this.inputWrapper.container], INPUTFOCUS$2);\n this.isNavigate = false;\n event.stopPropagation();\n break;\n case 'escape':\n this.hide(event);\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n }\n inputKeyAction(event) {\n switch (event.action) {\n case 'altDownArrow':\n this.strictModeUpdate();\n this.updateInput();\n this.toggle(event);\n break;\n }\n }\n /**\n * Called internally if any of the property value changed.\n * returns void\n * @deprecated\n */\n onPropertyChanged(newProp, oldProp) {\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'value':\n let options = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n newProp.value = this.validateValue(newProp.value);\n Input.setValue(this.getFormattedValue(newProp.value), this.inputElement, this.floatLabelType, this.showClearButton);\n this.valueWithMinutes = newProp.value;\n this.setProperties({ value: newProp.value }, true);\n this.previousDateTime = new Date(this.inputElement.value);\n this.updateInput();\n this.changeTrigger(null);\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n this.updateInput();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'cssClass':\n if (!isNullOrUndefined(oldProp.cssClass)) {\n oldProp.cssClass = (oldProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newProp.cssClass)) {\n newProp.cssClass = (newProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newProp.cssClass, [this.inputWrapper.container], oldProp.cssClass);\n if (this.dateTimeWrapper) {\n Input.setCssClass(newProp.cssClass, [this.dateTimeWrapper], oldProp.cssClass);\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n this.dateTimeFormat = this.cldrDateTimeFormat();\n super.updateInput();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkFormat();\n this.dateTimeFormat = this.formatString;\n this.setValue();\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n this.inputElement.setAttribute('aria-placeholder', newProp.placeholder);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n if (!this.enabled) {\n this.inputElement.tabIndex = -1;\n }\n this.bindEvents();\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkValue(newProp.scrollTo)))) {\n if (this.dateTimeWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: newProp.scrollTo }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n default:\n super.onPropertyChanged(newProp, oldProp);\n break;\n }\n this.hide(null);\n }\n }\n /**\n * To get component name.\n * @private\n */\n getModuleName() {\n return 'datetimepicker';\n }\n restoreValue() {\n this.previousDateTime = this.previousDate;\n this.currentDate = this.value ? this.value : new Date();\n this.valueWithMinutes = this.value;\n this.previousDate = this.value;\n this.previousElementValue = this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.getFormattedValue(this.inputValueCopy);\n }\n};\n__decorate$4([\n Property(null)\n], DateTimePicker.prototype, \"timeFormat\", void 0);\n__decorate$4([\n Property(30)\n], DateTimePicker.prototype, \"step\", void 0);\n__decorate$4([\n Property(null)\n], DateTimePicker.prototype, \"scrollTo\", void 0);\n__decorate$4([\n Property(1000)\n], DateTimePicker.prototype, \"zIndex\", void 0);\n__decorate$4([\n Property(null)\n], DateTimePicker.prototype, \"value\", void 0);\n__decorate$4([\n Property(null)\n], DateTimePicker.prototype, \"keyConfigs\", void 0);\n__decorate$4([\n Property({})\n], DateTimePicker.prototype, \"htmlAttributes\", void 0);\n__decorate$4([\n Property(false)\n], DateTimePicker.prototype, \"enablePersistence\", void 0);\n__decorate$4([\n Property(true)\n], DateTimePicker.prototype, \"allowEdit\", void 0);\n__decorate$4([\n Property(false)\n], DateTimePicker.prototype, \"isMultiSelection\", void 0);\n__decorate$4([\n Property(null)\n], DateTimePicker.prototype, \"values\", void 0);\n__decorate$4([\n Property(true)\n], DateTimePicker.prototype, \"showClearButton\", void 0);\n__decorate$4([\n Property(null)\n], DateTimePicker.prototype, \"placeholder\", void 0);\n__decorate$4([\n Property(false)\n], DateTimePicker.prototype, \"strictMode\", void 0);\n__decorate$4([\n Property(null)\n], DateTimePicker.prototype, \"serverTimezoneOffset\", void 0);\n__decorate$4([\n Property(new Date(1900, 0, 1))\n], DateTimePicker.prototype, \"min\", void 0);\n__decorate$4([\n Property(new Date(2099, 11, 31))\n], DateTimePicker.prototype, \"max\", void 0);\n__decorate$4([\n Property(null)\n], DateTimePicker.prototype, \"firstDayOfWeek\", void 0);\n__decorate$4([\n Property('Gregorian')\n], DateTimePicker.prototype, \"calendarMode\", void 0);\n__decorate$4([\n Property('Month')\n], DateTimePicker.prototype, \"start\", void 0);\n__decorate$4([\n Property('Month')\n], DateTimePicker.prototype, \"depth\", void 0);\n__decorate$4([\n Property(false)\n], DateTimePicker.prototype, \"weekNumber\", void 0);\n__decorate$4([\n Property(true)\n], DateTimePicker.prototype, \"showTodayButton\", void 0);\n__decorate$4([\n Property('Short')\n], DateTimePicker.prototype, \"dayHeaderFormat\", void 0);\n__decorate$4([\n Property(false)\n], DateTimePicker.prototype, \"openOnFocus\", void 0);\n__decorate$4([\n Event()\n], DateTimePicker.prototype, \"open\", void 0);\n__decorate$4([\n Event()\n], DateTimePicker.prototype, \"close\", void 0);\n__decorate$4([\n Event()\n], DateTimePicker.prototype, \"cleared\", void 0);\n__decorate$4([\n Event()\n], DateTimePicker.prototype, \"blur\", void 0);\n__decorate$4([\n Event()\n], DateTimePicker.prototype, \"focus\", void 0);\n__decorate$4([\n Event()\n], DateTimePicker.prototype, \"created\", void 0);\n__decorate$4([\n Event()\n], DateTimePicker.prototype, \"destroyed\", void 0);\nDateTimePicker = __decorate$4([\n NotifyPropertyChanges\n], DateTimePicker);\n\n/**\n * DateTimePicker modules\n */\n\n/**\n * Calendar all modules\n */\n\nexport { CalendarBase, Calendar, Islamic, DatePicker, Presets, DateRangePicker, TimePickerBase, TimePicker, DateTimePicker };\n//# sourceMappingURL=ej2-calendars.es2015.js.map\n","import { Encoding, Save } from '@syncfusion/ej2-file-utils';\n\n/**\n * array literal codes\n */\nconst ARR_LITERAL_CODES = new Int16Array(286);\nconst ARR_LITERAL_LENGTHS = new Uint8Array(286);\nconst ARR_DISTANCE_CODES = new Int16Array(30);\nconst ARR_DISTANCE_LENGTHS = new Uint8Array(30);\n/**\n * represent compression stream writer\n * ```typescript\n * let compressedWriter = new CompressedStreamWriter();\n * let text: string = 'Hello world!!!';\n * compressedWriter.write(text, 0, text.length);\n * compressedWriter.close();\n * ```\n */\nclass CompressedStreamWriter {\n /**\n * Initializes compressor and writes ZLib header if needed.\n * @param {boolean} noWrap - optional if true, ZLib header and checksum will not be written.\n */\n constructor(noWrap) {\n this.pendingBuffer = new Uint8Array(1 << 16);\n this.pendingBufLength = 0;\n this.pendingBufCache = 0;\n this.pendingBufBitsInCache = 0;\n this.bufferPosition = 0;\n this.extraBits = 0;\n this.currentHash = 0;\n this.matchStart = 0;\n this.matchLength = 0;\n this.matchPrevAvail = false;\n this.blockStart = 0;\n this.stringStart = 0;\n this.lookAhead = 0;\n this.totalBytesIn = 0;\n this.inputOffset = 0;\n this.inputEnd = 0;\n this.windowSize = 1 << 15;\n this.windowMask = this.windowSize - 1;\n this.hashSize = 1 << 15;\n this.hashMask = this.hashSize - 1;\n this.hashShift = Math.floor((15 + 3 - 1) / 3);\n this.maxDist = this.windowSize - 262;\n this.checkSum = 1;\n this.noWrap = false;\n if (!CompressedStreamWriter.isHuffmanTreeInitiated) {\n CompressedStreamWriter.initHuffmanTree();\n CompressedStreamWriter.isHuffmanTreeInitiated = true;\n }\n this.treeLiteral = new CompressorHuffmanTree(this, 286, 257, 15);\n this.treeDistances = new CompressorHuffmanTree(this, 30, 1, 15);\n this.treeCodeLengths = new CompressorHuffmanTree(this, 19, 4, 7);\n this.arrDistances = new Uint16Array((1 << 14));\n this.arrLiterals = new Uint8Array((1 << 14));\n this.stream = [];\n this.dataWindow = new Uint8Array(2 * this.windowSize);\n this.hashHead = new Int16Array(this.hashSize);\n this.hashPrevious = new Int16Array(this.windowSize);\n this.blockStart = this.stringStart = 1;\n this.noWrap = noWrap;\n if (!noWrap) {\n this.writeZLibHeader();\n }\n }\n /**\n * get compressed data\n */\n get compressedData() {\n return this.stream;\n }\n get getCompressedString() {\n let compressedString = '';\n if (this.stream !== undefined) {\n for (let i = 0; i < this.stream.length; i++) {\n compressedString += String.fromCharCode.apply(null, this.stream[i]);\n }\n }\n return compressedString;\n }\n /**\n * Compresses data and writes it to the stream.\n * @param {Uint8Array} data - data to compress\n * @param {number} offset - offset in data\n * @param {number} length - length of the data\n * @returns {void}\n */\n write(data, offset, length) {\n if (data === undefined || data === null) {\n throw new Error('ArgumentException: data cannot null or undefined');\n }\n let end = offset + length;\n if (0 > offset || offset > end || end > data.length) {\n throw new Error('ArgumentOutOfRangeException: Offset or length is incorrect');\n }\n if (typeof data === 'string') {\n let encode = new Encoding(false);\n encode.type = 'Utf8';\n data = new Uint8Array(encode.getBytes(data, 0, data.length));\n end = offset + data.length;\n }\n this.inputBuffer = data;\n this.inputOffset = offset;\n this.inputEnd = end;\n if (!this.noWrap) {\n this.checkSum = ChecksumCalculator.checksumUpdate(this.checkSum, this.inputBuffer, this.inputOffset, end);\n }\n while (!(this.inputEnd === this.inputOffset) || !(this.pendingBufLength === 0)) {\n this.pendingBufferFlush();\n this.compressData(false);\n }\n }\n /**\n * write ZLib header to the compressed data\n * @return {void}\n */\n writeZLibHeader() {\n /* Initialize header.*/\n let headerDate = (8 + (7 << 4)) << 8;\n /* Save compression level.*/\n headerDate |= ((5 >> 2) & 3) << 6;\n /* Align header.*/\n headerDate += 31 - (headerDate % 31);\n /* Write header to stream.*/\n this.pendingBufferWriteShortBytes(headerDate);\n }\n /**\n * Write Most Significant Bytes in to stream\n * @param {number} s - check sum value\n */\n pendingBufferWriteShortBytes(s) {\n this.pendingBuffer[this.pendingBufLength++] = s >> 8;\n this.pendingBuffer[this.pendingBufLength++] = s;\n }\n compressData(finish) {\n let success;\n do {\n this.fillWindow();\n let canFlush = (finish && this.inputEnd === this.inputOffset);\n success = this.compressSlow(canFlush, finish);\n } while (this.pendingBufLength === 0 && success);\n return success;\n }\n compressSlow(flush, finish) {\n if (this.lookAhead < 262 && !flush) {\n return false;\n }\n while (this.lookAhead >= 262 || flush) {\n if (this.lookAhead === 0) {\n return this.lookAheadCompleted(finish);\n }\n if (this.stringStart >= 2 * this.windowSize - 262) {\n this.slideWindow();\n }\n let prevMatch = this.matchStart;\n let prevLen = this.matchLength;\n if (this.lookAhead >= 3) {\n this.discardMatch();\n }\n if (prevLen >= 3 && this.matchLength <= prevLen) {\n prevLen = this.matchPreviousBest(prevMatch, prevLen);\n }\n else {\n this.matchPreviousAvailable();\n }\n if (this.bufferPosition >= (1 << 14)) {\n return this.huffmanIsFull(finish);\n }\n }\n return true;\n }\n discardMatch() {\n let hashHead = this.insertString();\n if (hashHead !== 0 && this.stringStart - hashHead <= this.maxDist && this.findLongestMatch(hashHead)) {\n if (this.matchLength <= 5 && (this.matchLength === 3 && this.stringStart - this.matchStart > 4096)) {\n this.matchLength = 3 - 1;\n }\n }\n }\n matchPreviousAvailable() {\n if (this.matchPrevAvail) {\n this.huffmanTallyLit(this.dataWindow[this.stringStart - 1] & 0xff);\n }\n this.matchPrevAvail = true;\n this.stringStart++;\n this.lookAhead--;\n }\n matchPreviousBest(prevMatch, prevLen) {\n this.huffmanTallyDist(this.stringStart - 1 - prevMatch, prevLen);\n prevLen -= 2;\n do {\n this.stringStart++;\n this.lookAhead--;\n if (this.lookAhead >= 3) {\n this.insertString();\n }\n } while (--prevLen > 0);\n this.stringStart++;\n this.lookAhead--;\n this.matchPrevAvail = false;\n this.matchLength = 3 - 1;\n return prevLen;\n }\n lookAheadCompleted(finish) {\n if (this.matchPrevAvail) {\n this.huffmanTallyLit(this.dataWindow[this.stringStart - 1] & 0xff);\n }\n this.matchPrevAvail = false;\n this.huffmanFlushBlock(this.dataWindow, this.blockStart, this.stringStart - this.blockStart, finish);\n this.blockStart = this.stringStart;\n return false;\n }\n huffmanIsFull(finish) {\n let len = this.stringStart - this.blockStart;\n if (this.matchPrevAvail) {\n len--;\n }\n let lastBlock = (finish && this.lookAhead === 0 && !this.matchPrevAvail);\n this.huffmanFlushBlock(this.dataWindow, this.blockStart, len, lastBlock);\n this.blockStart += len;\n return !lastBlock;\n }\n fillWindow() {\n if (this.stringStart >= this.windowSize + this.maxDist) {\n this.slideWindow();\n }\n while (this.lookAhead < 262 && this.inputOffset < this.inputEnd) {\n let more = 2 * this.windowSize - this.lookAhead - this.stringStart;\n if (more > this.inputEnd - this.inputOffset) {\n more = this.inputEnd - this.inputOffset;\n }\n this.dataWindow.set(this.inputBuffer.subarray(this.inputOffset, this.inputOffset + more), this.stringStart + this.lookAhead);\n this.inputOffset += more;\n this.totalBytesIn += more;\n this.lookAhead += more;\n }\n if (this.lookAhead >= 3) {\n this.updateHash();\n }\n }\n slideWindow() {\n this.dataWindow.set(this.dataWindow.subarray(this.windowSize, this.windowSize + this.windowSize), 0);\n this.matchStart -= this.windowSize;\n this.stringStart -= this.windowSize;\n this.blockStart -= this.windowSize;\n for (let i = 0; i < this.hashSize; ++i) {\n let m = this.hashHead[i] & 0xffff;\n this.hashHead[i] = (((m >= this.windowSize) ? (m - this.windowSize) : 0));\n }\n for (let i = 0; i < this.windowSize; i++) {\n let m = this.hashPrevious[i] & 0xffff;\n this.hashPrevious[i] = ((m >= this.windowSize) ? (m - this.windowSize) : 0);\n }\n }\n insertString() {\n let match;\n let hash = ((this.currentHash << this.hashShift) ^ this.dataWindow[this.stringStart + (3 - 1)]) & this.hashMask;\n this.hashPrevious[this.stringStart & this.windowMask] = match = this.hashHead[hash];\n this.hashHead[hash] = this.stringStart;\n this.currentHash = hash;\n return match & 0xffff;\n }\n findLongestMatch(curMatch) {\n let chainLen = 4096;\n let niceLen = 258;\n let scan = this.stringStart;\n let match;\n let bestEnd = this.stringStart + this.matchLength;\n let bestLength = Math.max(this.matchLength, 3 - 1);\n let limit = Math.max(this.stringStart - this.maxDist, 0);\n let stringEnd = this.stringStart + 258 - 1;\n let scanEnd1 = this.dataWindow[bestEnd - 1];\n let scanEnd = this.dataWindow[bestEnd];\n let data = this.dataWindow;\n if (bestLength >= 32) {\n chainLen >>= 2;\n }\n if (niceLen > this.lookAhead) {\n niceLen = this.lookAhead;\n }\n do {\n if (data[curMatch + bestLength] !== scanEnd ||\n data[curMatch + bestLength - 1] !== scanEnd1 ||\n data[curMatch] !== data[scan] ||\n data[curMatch + 1] !== data[scan + 1]) {\n continue;\n }\n match = curMatch + 2;\n scan += 2;\n /* tslint:disable */\n while (data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] && scan < stringEnd) {\n /* tslint:disable */\n }\n if (scan > bestEnd) {\n this.matchStart = curMatch;\n bestEnd = scan;\n bestLength = scan - this.stringStart;\n if (bestLength >= niceLen) {\n break;\n }\n scanEnd1 = data[bestEnd - 1];\n scanEnd = data[bestEnd];\n }\n scan = this.stringStart;\n } while ((curMatch = (this.hashPrevious[curMatch & this.windowMask] & 0xffff)) > limit && --chainLen !== 0);\n this.matchLength = Math.min(bestLength, this.lookAhead);\n return this.matchLength >= 3;\n }\n updateHash() {\n this.currentHash = (this.dataWindow[this.stringStart] << this.hashShift) ^ this.dataWindow[this.stringStart + 1];\n }\n huffmanTallyLit(literal) {\n this.arrDistances[this.bufferPosition] = 0;\n this.arrLiterals[this.bufferPosition++] = literal;\n this.treeLiteral.codeFrequencies[literal]++;\n return this.bufferPosition >= (1 << 14);\n }\n huffmanTallyDist(dist, len) {\n this.arrDistances[this.bufferPosition] = dist;\n this.arrLiterals[this.bufferPosition++] = (len - 3);\n let lc = this.huffmanLengthCode(len - 3);\n this.treeLiteral.codeFrequencies[lc]++;\n if (lc >= 265 && lc < 285) {\n this.extraBits += Math.floor((lc - 261) / 4);\n }\n let dc = this.huffmanDistanceCode(dist - 1);\n this.treeDistances.codeFrequencies[dc]++;\n if (dc >= 4) {\n this.extraBits += Math.floor((dc / 2 - 1));\n }\n return this.bufferPosition >= (1 << 14);\n }\n huffmanFlushBlock(stored, storedOffset, storedLength, lastBlock) {\n this.treeLiteral.codeFrequencies[256]++;\n this.treeLiteral.buildTree();\n this.treeDistances.buildTree();\n this.treeLiteral.calculateBLFreq(this.treeCodeLengths);\n this.treeDistances.calculateBLFreq(this.treeCodeLengths);\n this.treeCodeLengths.buildTree();\n let blTreeCodes = 4;\n for (let i = 18; i > blTreeCodes; i--) {\n if (this.treeCodeLengths.codeLengths[CompressorHuffmanTree.huffCodeLengthOrders[i]] > 0) {\n blTreeCodes = i + 1;\n }\n }\n let opt_len = 14 + blTreeCodes * 3 + this.treeCodeLengths.getEncodedLength() +\n this.treeLiteral.getEncodedLength() + this.treeDistances.getEncodedLength() + this.extraBits;\n let static_len = this.extraBits;\n for (let i = 0; i < 286; i++) {\n static_len += this.treeLiteral.codeFrequencies[i] * ARR_LITERAL_LENGTHS[i];\n }\n for (let i = 0; i < 30; i++) {\n static_len += this.treeDistances.codeFrequencies[i] * ARR_DISTANCE_LENGTHS[i];\n }\n if (opt_len >= static_len) {\n // Force static trees.\n opt_len = static_len;\n }\n if (storedOffset >= 0 && storedLength + 4 < opt_len >> 3) {\n this.huffmanFlushStoredBlock(stored, storedOffset, storedLength, lastBlock);\n }\n else if (opt_len == static_len) {\n // Encode with static tree.\n this.pendingBufferWriteBits((1 << 1) + (lastBlock ? 1 : 0), 3);\n this.treeLiteral.setStaticCodes(ARR_LITERAL_CODES, ARR_LITERAL_LENGTHS);\n this.treeDistances.setStaticCodes(ARR_DISTANCE_CODES, ARR_DISTANCE_LENGTHS);\n this.huffmanCompressBlock();\n this.huffmanReset();\n }\n else {\n this.pendingBufferWriteBits((2 << 1) + (lastBlock ? 1 : 0), 3);\n this.huffmanSendAllTrees(blTreeCodes);\n this.huffmanCompressBlock();\n this.huffmanReset();\n }\n }\n huffmanFlushStoredBlock(stored, storedOffset, storedLength, lastBlock) {\n this.pendingBufferWriteBits((0 << 1) + (lastBlock ? 1 : 0), 3);\n this.pendingBufferAlignToByte();\n this.pendingBufferWriteShort(storedLength);\n this.pendingBufferWriteShort(~storedLength);\n this.pendingBufferWriteByteBlock(stored, storedOffset, storedLength);\n this.huffmanReset();\n }\n huffmanLengthCode(len) {\n if (len === 255) {\n return 285;\n }\n let code = 257;\n while (len >= 8) {\n code += 4;\n len >>= 1;\n }\n return code + len;\n }\n huffmanDistanceCode(distance) {\n let code = 0;\n while (distance >= 4) {\n code += 2;\n distance >>= 1;\n }\n return code + distance;\n }\n huffmanSendAllTrees(blTreeCodes) {\n this.treeCodeLengths.buildCodes();\n this.treeLiteral.buildCodes();\n this.treeDistances.buildCodes();\n this.pendingBufferWriteBits(this.treeLiteral.treeLength - 257, 5);\n this.pendingBufferWriteBits(this.treeDistances.treeLength - 1, 5);\n this.pendingBufferWriteBits(blTreeCodes - 4, 4);\n for (let rank = 0; rank < blTreeCodes; rank++) {\n this.pendingBufferWriteBits(this.treeCodeLengths.codeLengths[CompressorHuffmanTree.huffCodeLengthOrders[rank]], 3);\n }\n this.treeLiteral.writeTree(this.treeCodeLengths);\n this.treeDistances.writeTree(this.treeCodeLengths);\n }\n huffmanReset() {\n this.bufferPosition = 0;\n this.extraBits = 0;\n this.treeLiteral.reset();\n this.treeDistances.reset();\n this.treeCodeLengths.reset();\n }\n huffmanCompressBlock() {\n for (let i = 0; i < this.bufferPosition; i++) {\n let literalLen = this.arrLiterals[i] & 255;\n let dist = this.arrDistances[i];\n if (dist-- !== 0) {\n let lc = this.huffmanLengthCode(literalLen);\n this.treeLiteral.writeCodeToStream(lc);\n let bits = Math.floor((lc - 261) / 4);\n if (bits > 0 && bits <= 5) {\n this.pendingBufferWriteBits(literalLen & ((1 << bits) - 1), bits);\n }\n let dc = this.huffmanDistanceCode(dist);\n this.treeDistances.writeCodeToStream(dc);\n bits = Math.floor(dc / 2 - 1);\n if (bits > 0) {\n this.pendingBufferWriteBits(dist & ((1 << bits) - 1), bits);\n }\n }\n else {\n this.treeLiteral.writeCodeToStream(literalLen);\n }\n }\n this.treeLiteral.writeCodeToStream(256);\n }\n /**\n * write bits in to internal buffer\n * @param {number} b - source of bits\n * @param {number} count - count of bits to write\n */\n pendingBufferWriteBits(b, count) {\n let uint = new Uint32Array(1);\n uint[0] = this.pendingBufCache | (b << this.pendingBufBitsInCache);\n this.pendingBufCache = uint[0];\n this.pendingBufBitsInCache += count;\n this.pendingBufferFlushBits();\n }\n pendingBufferFlush(isClose) {\n this.pendingBufferFlushBits();\n if (this.pendingBufLength > 0) {\n let array = new Uint8Array(this.pendingBufLength);\n array.set(this.pendingBuffer.subarray(0, this.pendingBufLength), 0);\n this.stream.push(array);\n }\n this.pendingBufLength = 0;\n }\n pendingBufferFlushBits() {\n let result = 0;\n while (this.pendingBufBitsInCache >= 8 && this.pendingBufLength < (1 << 16)) {\n this.pendingBuffer[this.pendingBufLength++] = this.pendingBufCache;\n this.pendingBufCache >>= 8;\n this.pendingBufBitsInCache -= 8;\n result++;\n }\n return result;\n }\n pendingBufferWriteByteBlock(data, offset, length) {\n let array = data.subarray(offset, offset + length);\n this.pendingBuffer.set(array, this.pendingBufLength);\n this.pendingBufLength += length;\n }\n pendingBufferWriteShort(s) {\n this.pendingBuffer[this.pendingBufLength++] = s;\n this.pendingBuffer[this.pendingBufLength++] = (s >> 8);\n }\n pendingBufferAlignToByte() {\n if (this.pendingBufBitsInCache > 0) {\n this.pendingBuffer[this.pendingBufLength++] = this.pendingBufCache;\n }\n this.pendingBufCache = 0;\n this.pendingBufBitsInCache = 0;\n }\n /**\n * Huffman Tree literal calculation\n * @private\n */\n static initHuffmanTree() {\n let i = 0;\n while (i < 144) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x030 + i) << 8);\n ARR_LITERAL_LENGTHS[i++] = 8;\n }\n while (i < 256) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x190 - 144 + i) << 7);\n ARR_LITERAL_LENGTHS[i++] = 9;\n }\n while (i < 280) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x000 - 256 + i) << 9);\n ARR_LITERAL_LENGTHS[i++] = 7;\n }\n while (i < 286) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x0c0 - 280 + i) << 8);\n ARR_LITERAL_LENGTHS[i++] = 8;\n }\n for (i = 0; i < 30; i++) {\n ARR_DISTANCE_CODES[i] = CompressorHuffmanTree.bitReverse(i << 11);\n ARR_DISTANCE_LENGTHS[i] = 5;\n }\n }\n /**\n * close the stream and write all pending buffer in to stream\n * @returns {void}\n */\n close() {\n do {\n this.pendingBufferFlush(true);\n if (!this.compressData(true)) {\n this.pendingBufferFlush(true);\n this.pendingBufferAlignToByte();\n if (!this.noWrap) {\n this.pendingBufferWriteShortBytes(this.checkSum >> 16);\n this.pendingBufferWriteShortBytes(this.checkSum & 0xffff);\n }\n this.pendingBufferFlush(true);\n }\n } while (!(this.inputEnd === this.inputOffset) ||\n !(this.pendingBufLength === 0));\n }\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n destroy() {\n this.stream = [];\n this.stream = undefined;\n this.pendingBuffer = undefined;\n this.treeLiteral = undefined;\n this.treeDistances = undefined;\n this.treeCodeLengths = undefined;\n this.arrLiterals = undefined;\n this.arrDistances = undefined;\n this.hashHead = undefined;\n this.hashPrevious = undefined;\n this.dataWindow = undefined;\n this.inputBuffer = undefined;\n this.pendingBufLength = undefined;\n this.pendingBufCache = undefined;\n this.pendingBufBitsInCache = undefined;\n this.bufferPosition = undefined;\n this.extraBits = undefined;\n this.currentHash = undefined;\n this.matchStart = undefined;\n this.matchLength = undefined;\n this.matchPrevAvail = undefined;\n this.blockStart = undefined;\n this.stringStart = undefined;\n this.lookAhead = undefined;\n this.totalBytesIn = undefined;\n this.inputOffset = undefined;\n this.inputEnd = undefined;\n this.windowSize = undefined;\n this.windowMask = undefined;\n this.hashSize = undefined;\n this.hashMask = undefined;\n this.hashShift = undefined;\n this.maxDist = undefined;\n this.checkSum = undefined;\n this.noWrap = undefined;\n }\n}\nCompressedStreamWriter.isHuffmanTreeInitiated = false;\n/**\n * represent the Huffman Tree\n */\nclass CompressorHuffmanTree {\n /**\n * Create new Huffman Tree\n * @param {CompressedStreamWriter} writer instance\n * @param {number} elementCount - element count\n * @param {number} minCodes - minimum count\n * @param {number} maxLength - maximum count\n */\n constructor(writer, elementCount, minCodes, maxLength) {\n this.writer = writer;\n this.codeMinCount = minCodes;\n this.maxLength = maxLength;\n this.codeFrequency = new Uint16Array(elementCount);\n this.lengthCount = new Int32Array(maxLength);\n }\n get treeLength() {\n return this.codeCount;\n }\n get codeLengths() {\n return this.codeLength;\n }\n get codeFrequencies() {\n return this.codeFrequency;\n }\n setStaticCodes(codes, lengths) {\n let temp = new Int16Array(codes.length);\n temp.set(codes, 0);\n this.codes = temp;\n let lengthTemp = new Uint8Array(lengths.length);\n lengthTemp.set(lengths, 0);\n this.codeLength = lengthTemp;\n }\n /**\n * reset all code data in tree\n * @returns {void}\n */\n reset() {\n for (let i = 0; i < this.codeFrequency.length; i++) {\n this.codeFrequency[i] = 0;\n }\n this.codes = undefined;\n this.codeLength = undefined;\n }\n /**\n * write code to the compressor output stream\n * @param {number} code - code to be written\n * @returns {void}\n */\n writeCodeToStream(code) {\n this.writer.pendingBufferWriteBits(this.codes[code] & 0xffff, this.codeLength[code]);\n }\n /**\n * calculate code from their frequencies\n * @returns {void}\n */\n buildCodes() {\n let nextCode = new Int32Array(this.maxLength);\n this.codes = new Int16Array(this.codeCount);\n let code = 0;\n for (let bitsCount = 0; bitsCount < this.maxLength; bitsCount++) {\n nextCode[bitsCount] = code;\n code += this.lengthCount[bitsCount] << (15 - bitsCount);\n }\n for (let i = 0; i < this.codeCount; i++) {\n let bits = this.codeLength[i];\n if (bits > 0) {\n this.codes[i] = CompressorHuffmanTree.bitReverse(nextCode[bits - 1]);\n nextCode[bits - 1] += 1 << (16 - bits);\n }\n }\n }\n static bitReverse(value) {\n return (CompressorHuffmanTree.reverseBits[value & 15] << 12\n | CompressorHuffmanTree.reverseBits[(value >> 4) & 15] << 8\n | CompressorHuffmanTree.reverseBits[(value >> 8) & 15] << 4\n | CompressorHuffmanTree.reverseBits[value >> 12]);\n }\n /**\n * calculate length of compressed data\n * @returns {number}\n */\n getEncodedLength() {\n let len = 0;\n for (let i = 0; i < this.codeFrequency.length; i++) {\n len += this.codeFrequency[i] * this.codeLength[i];\n }\n return len;\n }\n /**\n * calculate code frequencies\n * @param {CompressorHuffmanTree} blTree\n * @returns {void}\n */\n calculateBLFreq(blTree) {\n let maxCount;\n let minCount;\n let count;\n let curLen = -1;\n let i = 0;\n while (i < this.codeCount) {\n count = 1;\n let nextLen = this.codeLength[i];\n if (nextLen === 0) {\n maxCount = 138;\n minCount = 3;\n }\n else {\n maxCount = 6;\n minCount = 3;\n if (curLen !== nextLen) {\n blTree.codeFrequency[nextLen]++;\n count = 0;\n }\n }\n curLen = nextLen;\n i++;\n while (i < this.codeCount && curLen === this.codeLength[i]) {\n i++;\n if (++count >= maxCount) {\n break;\n }\n }\n if (count < minCount) {\n blTree.codeFrequency[curLen] += count;\n }\n else if (curLen !== 0) {\n blTree.codeFrequency[16]++;\n }\n else if (count <= 10) {\n blTree.codeFrequency[17]++;\n }\n else {\n blTree.codeFrequency[18]++;\n }\n }\n }\n /**\n * @param {CompressorHuffmanTree} blTree - write tree to output stream\n * @returns {void}\n */\n writeTree(blTree) {\n let maxRepeatCount;\n let minRepeatCount;\n let currentRepeatCount;\n let currentCodeLength = -1;\n let i = 0;\n while (i < this.codeCount) {\n currentRepeatCount = 1;\n let nextLen = this.codeLength[i];\n if (nextLen === 0) {\n maxRepeatCount = 138;\n minRepeatCount = 3;\n }\n else {\n maxRepeatCount = 6;\n minRepeatCount = 3;\n if (currentCodeLength !== nextLen) {\n blTree.writeCodeToStream(nextLen);\n currentRepeatCount = 0;\n }\n }\n currentCodeLength = nextLen;\n i++;\n while (i < this.codeCount && currentCodeLength === this.codeLength[i]) {\n i++;\n if (++currentRepeatCount >= maxRepeatCount) {\n break;\n }\n }\n if (currentRepeatCount < minRepeatCount) {\n while (currentRepeatCount-- > 0) {\n blTree.writeCodeToStream(currentCodeLength);\n }\n }\n else if (currentCodeLength !== 0) {\n blTree.writeCodeToStream(16);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 3, 2);\n }\n else if (currentRepeatCount <= 10) {\n blTree.writeCodeToStream(17);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 3, 3);\n }\n else {\n blTree.writeCodeToStream(18);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 11, 7);\n }\n }\n }\n /**\n * Build huffman tree\n * @returns {void}\n */\n buildTree() {\n let codesCount = this.codeFrequency.length;\n let arrTree = new Int32Array(codesCount);\n let treeLength = 0;\n let maxCount = 0;\n for (let n = 0; n < codesCount; n++) {\n let freq = this.codeFrequency[n];\n if (freq !== 0) {\n let pos = treeLength++;\n let pPos = 0;\n while (pos > 0 && this.codeFrequency[arrTree[pPos = Math.floor((pos - 1) / 2)]] > freq) {\n arrTree[pos] = arrTree[pPos];\n pos = pPos;\n }\n arrTree[pos] = n;\n maxCount = n;\n }\n }\n while (treeLength < 2) {\n arrTree[treeLength++] =\n (maxCount < 2) ? ++maxCount : 0;\n }\n this.codeCount = Math.max(maxCount + 1, this.codeMinCount);\n let leafsCount = treeLength;\n let nodesCount = leafsCount;\n let child = new Int32Array(4 * treeLength - 2);\n let values = new Int32Array(2 * treeLength - 1);\n for (let i = 0; i < treeLength; i++) {\n let node = arrTree[i];\n let iIndex = 2 * i;\n child[iIndex] = node;\n child[iIndex + 1] = -1;\n values[i] = (this.codeFrequency[node] << 8);\n arrTree[i] = i;\n }\n this.constructHuffmanTree(arrTree, treeLength, values, nodesCount, child);\n this.buildLength(child);\n }\n constructHuffmanTree(arrTree, treeLength, values, nodesCount, child) {\n do {\n let first = arrTree[0];\n let last = arrTree[--treeLength];\n let lastVal = values[last];\n let pPos = 0;\n let path = 1;\n while (path < treeLength) {\n if (path + 1 < treeLength && values[arrTree[path]] > values[arrTree[path + 1]]) {\n path++;\n }\n arrTree[pPos] = arrTree[path];\n pPos = path;\n path = pPos * 2 + 1;\n }\n while ((path = pPos) > 0 && values[arrTree[pPos = Math.floor((path - 1) / 2)]] > lastVal) {\n arrTree[path] = arrTree[pPos];\n }\n arrTree[path] = last;\n let second = arrTree[0];\n last = nodesCount++;\n child[2 * last] = first;\n child[2 * last + 1] = second;\n let minDepth = Math.min(values[first] & 0xff, values[second] & 0xff);\n values[last] = lastVal = values[first] + values[second] - minDepth + 1;\n pPos = 0;\n path = 1;\n /* tslint:disable */\n while (path < treeLength) {\n if (path + 1 < treeLength && values[arrTree[path]] > values[arrTree[path + 1]]) {\n path++;\n }\n arrTree[pPos] = arrTree[path];\n pPos = path;\n path = pPos * 2 + 1;\n } /* tslint:disable */\n while ((path = pPos) > 0 && values[arrTree[pPos = Math.floor((path - 1) / 2)]] > lastVal) {\n arrTree[path] = arrTree[pPos];\n }\n arrTree[path] = last;\n } while (treeLength > 1);\n }\n buildLength(child) {\n this.codeLength = new Uint8Array(this.codeFrequency.length);\n let numNodes = Math.floor(child.length / 2);\n let numLeafs = Math.floor((numNodes + 1) / 2);\n let overflow = 0;\n for (let i = 0; i < this.maxLength; i++) {\n this.lengthCount[i] = 0;\n }\n overflow = this.calculateOptimalCodeLength(child, overflow, numNodes);\n if (overflow === 0) {\n return;\n }\n let iIncreasableLength = this.maxLength - 1;\n do {\n while (this.lengthCount[--iIncreasableLength] === 0) {\n /* tslint:disable */\n }\n do {\n this.lengthCount[iIncreasableLength]--;\n this.lengthCount[++iIncreasableLength]++;\n overflow -= (1 << (this.maxLength - 1 - iIncreasableLength));\n } while (overflow > 0 && iIncreasableLength < this.maxLength - 1);\n } while (overflow > 0);\n this.recreateTree(child, overflow, numLeafs);\n }\n recreateTree(child, overflow, numLeafs) {\n this.lengthCount[this.maxLength - 1] += overflow;\n this.lengthCount[this.maxLength - 2] -= overflow;\n let nodePtr = 2 * numLeafs;\n for (let bits = this.maxLength; bits !== 0; bits--) {\n let n = this.lengthCount[bits - 1];\n while (n > 0) {\n let childPtr = 2 * child[nodePtr++];\n if (child[childPtr + 1] === -1) {\n this.codeLength[child[childPtr]] = bits;\n n--;\n }\n }\n }\n }\n calculateOptimalCodeLength(child, overflow, numNodes) {\n let lengths = new Int32Array(numNodes);\n lengths[numNodes - 1] = 0;\n for (let i = numNodes - 1; i >= 0; i--) {\n let childIndex = 2 * i + 1;\n if (child[childIndex] !== -1) {\n let bitLength = lengths[i] + 1;\n if (bitLength > this.maxLength) {\n bitLength = this.maxLength;\n overflow++;\n }\n lengths[child[childIndex - 1]] = lengths[child[childIndex]] = bitLength;\n }\n else {\n let bitLength = lengths[i];\n this.lengthCount[bitLength - 1]++;\n this.codeLength[child[childIndex - 1]] = lengths[i];\n }\n }\n return overflow;\n }\n}\nCompressorHuffmanTree.reverseBits = [0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15];\nCompressorHuffmanTree.huffCodeLengthOrders = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n/**\n * Checksum calculator, based on Adler32 algorithm.\n */\nclass ChecksumCalculator {\n /**\n * Updates checksum by calculating checksum of the\n * given buffer and adding it to current value.\n * @param {number} checksum - current checksum.\n * @param {Uint8Array} buffer - data byte array.\n * @param {number} offset - offset in the buffer.\n * @param {number} length - length of data to be used from the stream.\n * @returns {number}\n */\n static checksumUpdate(checksum, buffer, offset, length) {\n let uint = new Uint32Array(1);\n uint[0] = checksum;\n let checksum_uint = uint[0];\n let s1 = uint[0] = checksum_uint & 65535;\n let s2 = uint[0] = checksum_uint >> ChecksumCalculator.checkSumBitOffset;\n while (length > 0) {\n let steps = Math.min(length, ChecksumCalculator.checksumIterationCount);\n length -= steps;\n while (--steps >= 0) {\n s1 = s1 + (uint[0] = (buffer[offset++] & 255));\n s2 = s2 + s1;\n }\n s1 %= ChecksumCalculator.checksumBase;\n s2 %= ChecksumCalculator.checksumBase;\n }\n checksum_uint = (s2 << ChecksumCalculator.checkSumBitOffset) | s1;\n return checksum_uint;\n }\n}\nChecksumCalculator.checkSumBitOffset = 16;\nChecksumCalculator.checksumBase = 65521;\nChecksumCalculator.checksumIterationCount = 3800;\n\nconst CRC32TABLE = [];\n/**\n * class provide compression library\n * ```typescript\n * let archive = new ZipArchive();\n * archive.compressionLevel = 'Normal';\n * let archiveItem = new ZipArchiveItem(archive, 'directoryName\\fileName.txt');\n * archive.addItem(archiveItem);\n * archive.save(fileName.zip);\n * ```\n */\nclass ZipArchive {\n /**\n * gets compression level\n */\n get compressionLevel() {\n return this.level;\n }\n /**\n * sets compression level\n */\n set compressionLevel(level) {\n this.level = level;\n }\n /**\n * gets items count\n */\n get length() {\n if (this.files === undefined) {\n return 0;\n }\n return this.files.length;\n }\n /**\n * constructor for creating ZipArchive instance\n */\n constructor() {\n if (CRC32TABLE.length === 0) {\n ZipArchive.initCrc32Table();\n }\n this.files = [];\n this.level = 'Normal';\n Save.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n }\n /**\n * add new item to archive\n * @param {ZipArchiveItem} item - item to be added\n * @returns {void}\n */\n addItem(item) {\n if (item === null || item === undefined) {\n throw new Error('ArgumentException: item cannot be null or undefined');\n }\n for (let i = 0; i < this.files.length; i++) {\n let file = this.files[i];\n if (file instanceof ZipArchiveItem) {\n if (file.name === item.name) {\n throw new Error('item with same name already exist');\n }\n }\n }\n this.files.push(item);\n }\n /**\n * add new directory to archive\n * @param directoryName directoryName to be created\n * @returns {void}\n */\n addDirectory(directoryName) {\n if (directoryName === null || directoryName === undefined) {\n throw new Error('ArgumentException: string cannot be null or undefined');\n }\n if (directoryName.length === 0) {\n throw new Error('ArgumentException: string cannot be empty');\n }\n if (directoryName.slice(-1) !== '/') {\n directoryName += '/';\n }\n if (this.files.indexOf(directoryName) !== -1) {\n throw new Error('item with same name already exist');\n }\n this.files.push(directoryName);\n }\n /**\n * gets item at specified index\n * @param {number} index - item index\n * @returns {ZipArchiveItem}\n */\n getItem(index) {\n if (index >= 0 && index < this.files.length) {\n return this.files[index];\n }\n return undefined;\n }\n /**\n * determines whether an element is in the collection\n * @param {string | ZipArchiveItem} item - item to search\n * @returns {boolean}\n */\n contains(item) {\n return this.files.indexOf(item) !== -1 ? true : false;\n }\n /**\n * save archive with specified file name\n * @param {string} fileName save archive with specified file name\n * @returns {Promise}\n */\n save(fileName) {\n if (fileName === null || fileName === undefined || fileName.length === 0) {\n throw new Error('ArgumentException: fileName cannot be null or undefined');\n }\n if (this.files.length === 0) {\n throw new Error('InvalidOperation');\n }\n let zipArchive = this;\n let promise;\n return promise = new Promise((resolve, reject) => {\n zipArchive.saveInternal(fileName, false).then(() => {\n resolve(zipArchive);\n });\n });\n }\n /**\n * Save archive as blob\n * @return {Promise}\n */\n saveAsBlob() {\n let zipArchive = this;\n let promise;\n return promise = new Promise((resolve, reject) => {\n zipArchive.saveInternal('', true).then((blob) => {\n resolve(blob);\n });\n });\n }\n saveInternal(fileName, skipFileSave) {\n let zipArchive = this;\n let promise;\n return promise = new Promise((resolve, reject) => {\n let zipData = [];\n let dirLength = 0;\n for (let i = 0; i < zipArchive.files.length; i++) {\n let compressedObject = this.getCompressedData(this.files[i]);\n compressedObject.then((data) => {\n dirLength = zipArchive.constructZippedObject(zipData, data, dirLength, data.isDirectory);\n if (zipData.length === zipArchive.files.length) {\n let blob = zipArchive.writeZippedContent(fileName, zipData, dirLength, skipFileSave);\n resolve(blob);\n }\n });\n }\n });\n }\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n destroy() {\n if (this.files !== undefined && this.files.length > 0) {\n for (let i = 0; i < this.files.length; i++) {\n let file = this.files[i];\n if (file instanceof ZipArchiveItem) {\n file.destroy();\n }\n file = undefined;\n }\n this.files = [];\n }\n this.files = undefined;\n this.level = undefined;\n }\n getCompressedData(item) {\n let zipArchive = this;\n let promise = new Promise((resolve, reject) => {\n if (item instanceof ZipArchiveItem) {\n let reader = new FileReader();\n reader.onload = () => {\n let input = new Uint8Array(reader.result);\n let data = {\n fileName: item.name, crc32Value: 0, compressedData: [],\n compressedSize: undefined, uncompressedDataSize: input.length, compressionType: undefined,\n isDirectory: false\n };\n if (zipArchive.level === 'Normal') {\n zipArchive.compressData(input, data, CRC32TABLE);\n let length = 0;\n for (let i = 0; i < data.compressedData.length; i++) {\n length += data.compressedData[i].length;\n }\n data.compressedSize = length;\n data.compressionType = '\\x08\\x00'; //Deflated = 8\n }\n else {\n data.compressedSize = input.length;\n data.crc32Value = zipArchive.calculateCrc32Value(0, input, CRC32TABLE);\n data.compressionType = '\\x00\\x00'; // Stored = 0\n data.compressedData.push(input);\n }\n resolve(data);\n };\n reader.readAsArrayBuffer(item.data);\n }\n else {\n let data = {\n fileName: item, crc32Value: 0, compressedData: '', compressedSize: 0, uncompressedDataSize: 0,\n compressionType: '\\x00\\x00', isDirectory: true\n };\n resolve(data);\n }\n });\n return promise;\n }\n compressData(input, data, crc32Table) {\n let compressor = new CompressedStreamWriter(true);\n let currentIndex = 0;\n let nextIndex = 0;\n do {\n if (currentIndex >= input.length) {\n compressor.close();\n break;\n }\n nextIndex = Math.min(input.length, currentIndex + 16384);\n let subArray = input.subarray(currentIndex, nextIndex);\n data.crc32Value = this.calculateCrc32Value(data.crc32Value, subArray, crc32Table);\n compressor.write(subArray, 0, nextIndex - currentIndex);\n currentIndex = nextIndex;\n } while (currentIndex <= input.length);\n data.compressedData = compressor.compressedData;\n compressor.destroy();\n }\n constructZippedObject(zipParts, data, dirLength, isDirectory) {\n let extFileAttr = 0;\n let date = new Date();\n if (isDirectory) {\n extFileAttr = extFileAttr | 0x00010; // directory flag\n }\n extFileAttr = extFileAttr | (0 & 0x3F);\n let header = this.writeHeader(data, date);\n let localHeader = 'PK\\x03\\x04' + header + data.fileName;\n let centralDir = this.writeCentralDirectory(data, header, dirLength, extFileAttr);\n zipParts.push({ localHeader: localHeader, centralDir: centralDir, compressedData: data });\n return dirLength + localHeader.length + data.compressedSize;\n }\n writeHeader(data, date) {\n let zipHeader = '';\n zipHeader += '\\x0A\\x00' + '\\x00\\x00'; // version needed to extract & general purpose bit flag\n zipHeader += data.compressionType; // compression method Deflate=8,Stored=0\n zipHeader += this.getBytes(this.getModifiedTime(date), 2); // last modified Time\n zipHeader += this.getBytes(this.getModifiedDate(date), 2); // last modified date\n zipHeader += this.getBytes(data.crc32Value, 4); // crc-32 value\n zipHeader += this.getBytes(data.compressedSize, 4); // compressed file size\n zipHeader += this.getBytes(data.uncompressedDataSize, 4); // uncompressed file size\n zipHeader += this.getBytes(data.fileName.length, 2); // file name length\n zipHeader += this.getBytes(0, 2); // extra field length\n return zipHeader;\n }\n writeZippedContent(fileName, zipData, localDirLen, skipFileSave) {\n let cenDirLen = 0;\n let buffer = [];\n for (let i = 0; i < zipData.length; i++) {\n let item = zipData[i];\n cenDirLen += item.centralDir.length;\n buffer.push(this.getArrayBuffer(item.localHeader));\n while (item.compressedData.compressedData.length) {\n buffer.push(item.compressedData.compressedData.shift().buffer);\n }\n }\n for (let i = 0; i < zipData.length; i++) {\n buffer.push(this.getArrayBuffer(zipData[i].centralDir));\n }\n buffer.push(this.getArrayBuffer(this.writeFooter(zipData, cenDirLen, localDirLen)));\n let blob = new Blob(buffer, { type: 'application/zip' });\n if (!skipFileSave) {\n Save.save(fileName, blob);\n }\n return blob;\n }\n writeCentralDirectory(data, localHeader, offset, externalFileAttribute) {\n let directoryHeader = 'PK\\x01\\x02' +\n this.getBytes(0x0014, 2) + localHeader + // inherit from file header\n this.getBytes(0, 2) + // comment length\n '\\x00\\x00' + '\\x00\\x00' + // internal file attributes \n this.getBytes(externalFileAttribute, 4) + // external file attributes\n this.getBytes(offset, 4) + // local fileHeader relative offset\n data.fileName;\n return directoryHeader;\n }\n writeFooter(zipData, centralLength, localLength) {\n let dirEnd = 'PK\\x05\\x06' + '\\x00\\x00' + '\\x00\\x00' +\n this.getBytes(zipData.length, 2) + this.getBytes(zipData.length, 2) +\n this.getBytes(centralLength, 4) + this.getBytes(localLength, 4) +\n this.getBytes(0, 2);\n return dirEnd;\n }\n getArrayBuffer(input) {\n let a = new Uint8Array(input.length);\n for (let j = 0; j < input.length; ++j) {\n a[j] = input.charCodeAt(j) & 0xFF;\n }\n return a.buffer;\n }\n getBytes(value, offset) {\n let bytes = '';\n for (let i = 0; i < offset; i++) {\n bytes += String.fromCharCode(value & 0xff);\n value = value >>> 8;\n }\n return bytes;\n }\n getModifiedTime(date) {\n let modTime = date.getHours();\n modTime = modTime << 6;\n modTime = modTime | date.getMinutes();\n modTime = modTime << 5;\n return modTime = modTime | date.getSeconds() / 2;\n }\n getModifiedDate(date) {\n let modiDate = date.getFullYear() - 1980;\n modiDate = modiDate << 4;\n modiDate = modiDate | (date.getMonth() + 1);\n modiDate = modiDate << 5;\n return modiDate = modiDate | date.getDate();\n }\n calculateCrc32Value(crc32Value, input, crc32Table) {\n crc32Value ^= -1;\n for (let i = 0; i < input.length; i++) {\n crc32Value = (crc32Value >>> 8) ^ crc32Table[(crc32Value ^ input[i]) & 0xFF];\n }\n return (crc32Value ^ (-1));\n }\n /**\n * construct cyclic redundancy code table\n * @private\n */\n static initCrc32Table() {\n let i;\n for (let j = 0; j < 256; j++) {\n i = j;\n for (let k = 0; k < 8; k++) {\n i = ((i & 1) ? (0xEDB88320 ^ (i >>> 1)) : (i >>> 1));\n }\n CRC32TABLE[j] = i;\n }\n }\n}\n/**\n * Class represent unique ZipArchive item\n * ```typescript\n * let archiveItem = new ZipArchiveItem(archive, 'directoryName\\fileName.txt');\n * ```\n */\nclass ZipArchiveItem {\n /**\n * Get the name of archive item\n * @returns string\n */\n get name() {\n return this.fileName;\n }\n /**\n * Set the name of archive item\n * @param {string} value\n */\n set name(value) {\n this.fileName = value;\n }\n /**\n * constructor for creating {ZipArchiveItem} instance\n * @param {Blob|ArrayBuffer} data file data\n * @param {itemName} itemName absolute file path\n */\n constructor(data, itemName) {\n if (data === null || data === undefined) {\n throw new Error('ArgumentException: data cannot be null or undefined');\n }\n if (itemName === null || itemName === undefined) {\n throw new Error('ArgumentException: string cannot be null or undefined');\n }\n if (itemName.length === 0) {\n throw new Error('string cannot be empty');\n }\n this.data = data;\n this.name = itemName;\n }\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n destroy() {\n this.fileName = undefined;\n this.data = undefined;\n }\n}\n\n/**\n * export ZipArchive class\n */\n\nexport { ZipArchive, ZipArchiveItem, CompressedStreamWriter, CompressorHuffmanTree, ChecksumCalculator };\n//# sourceMappingURL=ej2-compression.es2015.js.map\n","import { Ajax, extend, getValue, isNullOrUndefined, merge, setValue } from '@syncfusion/ej2-base';\n\n/**\n * Query class is used to build query which is used by the DataManager to communicate with datasource.\n */\nclass Query {\n /**\n * Constructor for Query class.\n * @param {string|string[]} from?\n * @hidden\n */\n constructor(from) {\n /** @hidden */\n this.subQuery = null;\n /** @hidden */\n this.isChild = false;\n /** @hidden */\n this.distincts = [];\n this.queries = [];\n this.key = '';\n this.fKey = '';\n if (typeof from === 'string') {\n this.fromTable = from;\n }\n else if (from && from instanceof Array) {\n this.lookups = from;\n }\n this.expands = [];\n this.sortedColumns = [];\n this.groupedColumns = [];\n this.subQuery = null;\n this.isChild = false;\n this.params = [];\n return this;\n }\n /**\n * Sets the primary key.\n * @param {string} field - Defines the column field.\n */\n setKey(field) {\n this.key = field;\n return this;\n }\n /**\n * Sets default DataManager to execute query.\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n using(dataManager) {\n this.dataManager = dataManager;\n return this;\n }\n /**\n * Executes query with the given DataManager.\n * @param {DataManager} dataManager - Defines the DataManager.\n * @param {Function} done - Defines the success callback.\n * @param {Function} fail - Defines the failure callback.\n * @param {Function} always - Defines the callback which will be invoked on either success or failure.\n *\n *
    \n     * let dataManager: DataManager = new DataManager([{ ID: '10' }, { ID: '2' }, { ID: '1' }, { ID: '20' }]);\n     * let query: Query = new Query();\n     * query.sortBy('ID', (x: string, y: string): number => { return parseInt(x, 10) - parseInt(y, 10) });\n     * let promise: Promise< Object > = query.execute(dataManager);\n     * promise.then((e: { result: Object }) => { });\n     * 
    \n */\n execute(dataManager, done, fail, always) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeQuery(this, done, fail, always);\n }\n return DataUtil.throwError('Query - execute() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n }\n /**\n * Executes query with the local datasource.\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n executeLocal(dataManager) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeLocal(this);\n }\n return DataUtil.throwError('Query - executeLocal() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n }\n /**\n * Creates deep copy of the Query object.\n */\n clone() {\n let cloned = new Query();\n cloned.queries = this.queries.slice(0);\n cloned.key = this.key;\n cloned.isChild = this.isChild;\n cloned.dataManager = this.dataManager;\n cloned.fromTable = this.fromTable;\n cloned.params = this.params.slice(0);\n cloned.expands = this.expands.slice(0);\n cloned.sortedColumns = this.sortedColumns.slice(0);\n cloned.groupedColumns = this.groupedColumns.slice(0);\n cloned.subQuerySelector = this.subQuerySelector;\n cloned.subQuery = this.subQuery;\n cloned.fKey = this.fKey;\n cloned.isCountRequired = this.isCountRequired;\n cloned.distincts = this.distincts.slice(0);\n return cloned;\n }\n /**\n * Specifies the name of table to retrieve data in query execution.\n * @param {string} tableName - Defines the table name.\n */\n from(tableName) {\n this.fromTable = tableName;\n return this;\n }\n /**\n * Adds additional parameter which will be sent along with the request which will be generated while DataManager execute.\n * @param {string} key - Defines the key of additional parameter.\n * @param {Function|string} value - Defines the value for the key.\n */\n addParams(key, value) {\n if (typeof value === 'function') {\n this.params.push({ key: key, fn: value });\n }\n else {\n this.params.push({ key: key, value: value });\n }\n return this;\n }\n /**\n * @hidden\n */\n distinct(fields) {\n if (typeof fields === 'string') {\n this.distincts = [].slice.call([fields], 0);\n }\n else {\n this.distincts = fields.slice(0);\n }\n return this;\n }\n /**\n * Expands the related table.\n * @param {string|Object[]} tables\n */\n expand(tables) {\n if (typeof tables === 'string') {\n this.expands = [].slice.call([tables], 0);\n }\n else {\n this.expands = tables.slice(0);\n }\n return this;\n }\n /**\n * Filter data with given filter criteria.\n * @param {string|Predicate} fieldName - Defines the column field or Predicate.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string|number|boolean} value - Defines the values to match with data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n */\n where(fieldName, operator, value, ignoreCase, ignoreAccent) {\n operator = operator ? (operator).toLowerCase() : null;\n let predicate = null;\n if (typeof fieldName === 'string') {\n predicate = new Predicate(fieldName, operator, value, ignoreCase, ignoreAccent);\n }\n else if (fieldName instanceof Predicate) {\n predicate = fieldName;\n }\n this.queries.push({\n fn: 'onWhere',\n e: predicate\n });\n return this;\n }\n /**\n * Search data with given search criteria.\n * @param {string|number|boolean} searchKey - Defines the search key.\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n * @param {string} operator - Defines the operator how to search data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n */\n search(searchKey, fieldNames, operator, ignoreCase, ignoreAccent) {\n if (typeof fieldNames === 'string') {\n fieldNames = [fieldNames];\n }\n if (!operator || operator === 'none') {\n operator = 'contains';\n }\n let comparer = DataUtil.fnOperators[operator];\n this.queries.push({\n fn: 'onSearch',\n e: {\n fieldNames: fieldNames,\n operator: operator,\n searchKey: searchKey,\n ignoreCase: ignoreCase,\n ignoreAccent: ignoreAccent,\n comparer: comparer\n }\n });\n return this;\n }\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n */\n sortBy(fieldName, comparer, isFromGroup) {\n let order = 'ascending';\n let sorts;\n let temp;\n if (typeof fieldName === 'string' && DataUtil.endsWith(fieldName.toLowerCase(), ' desc')) {\n fieldName = fieldName.replace(/ desc$/i, '');\n comparer = 'descending';\n }\n if (!comparer || typeof comparer === 'string') {\n order = comparer ? comparer.toLowerCase() : 'ascending';\n comparer = DataUtil.fnSort(comparer);\n }\n if (isFromGroup) {\n sorts = Query.filterQueries(this.queries, 'onSortBy');\n for (let i = 0; i < sorts.length; i++) {\n temp = sorts[i].e.fieldName;\n if (typeof temp === 'string') {\n if (temp === fieldName) {\n return this;\n }\n }\n else if (temp instanceof Array) {\n for (let j = 0; j < temp.length; j++) {\n if (temp[j] === fieldName || fieldName.toLowerCase() === temp[j] + ' desc') {\n return this;\n }\n }\n }\n }\n }\n this.queries.push({\n fn: 'onSortBy',\n e: {\n fieldName: fieldName,\n comparer: comparer,\n direction: order\n }\n });\n return this;\n }\n /**\n * Sorts data in descending order.\n * @param {string} fieldName - Defines the column field.\n */\n sortByDesc(fieldName) {\n return this.sortBy(fieldName, 'descending');\n }\n /**\n * Groups data with the given field name.\n * @param {string} fieldName - Defines the column field.\n */\n group(fieldName, fn, format) {\n this.sortBy(fieldName, null, true);\n this.queries.push({\n fn: 'onGroup',\n e: {\n fieldName: fieldName,\n comparer: fn ? fn : null,\n format: format ? format : null\n }\n });\n return this;\n }\n /**\n * Gets data based on the given page index and size.\n * @param {number} pageIndex - Defines the current page index.\n * @param {number} pageSize - Defines the no of records per page.\n */\n page(pageIndex, pageSize) {\n this.queries.push({\n fn: 'onPage',\n e: {\n pageIndex: pageIndex,\n pageSize: pageSize\n }\n });\n return this;\n }\n /**\n * Gets data based on the given start and end index.\n * @param {number} start - Defines the start index of the datasource.\n * @param {number} end - Defines the end index of the datasource.\n */\n range(start, end) {\n this.queries.push({\n fn: 'onRange',\n e: {\n start: start,\n end: end\n }\n });\n return this;\n }\n /**\n * Gets data from the top of the data source based on given number of records count.\n * @param {number} nos - Defines the no of records to retrieve from datasource.\n */\n take(nos) {\n this.queries.push({\n fn: 'onTake',\n e: {\n nos: nos\n }\n });\n return this;\n }\n /**\n * Skips data with given number of records count from the top of the data source.\n * @param {number} nos - Defines the no of records skip in the datasource.\n */\n skip(nos) {\n this.queries.push({\n fn: 'onSkip',\n e: { nos: nos }\n });\n return this;\n }\n /**\n * Selects specified columns from the data source.\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n */\n select(fieldNames) {\n if (typeof fieldNames === 'string') {\n fieldNames = [].slice.call([fieldNames], 0);\n }\n this.queries.push({\n fn: 'onSelect',\n e: { fieldNames: fieldNames }\n });\n return this;\n }\n /**\n * Gets the records in hierarchical relationship from two tables. It requires the foreign key to relate two tables.\n * @param {Query} query - Defines the query to relate two tables.\n * @param {Function} selectorFn - Defines the custom function to select records.\n */\n hierarchy(query, selectorFn) {\n this.subQuerySelector = selectorFn;\n this.subQuery = query;\n return this;\n }\n /**\n * Sets the foreign key which is used to get data from the related table.\n * @param {string} key - Defines the foreign key.\n */\n foreignKey(key) {\n this.fKey = key;\n return this;\n }\n /**\n * It is used to get total number of records in the DataManager execution result.\n */\n requiresCount() {\n this.isCountRequired = true;\n return this;\n }\n //type - sum, avg, min, max\n /**\n * Aggregate the data with given type and field name.\n * @param {string} type - Defines the aggregate type.\n * @param {string} field - Defines the column field to aggregate.\n */\n aggregate(type, field) {\n this.queries.push({\n fn: 'onAggregates',\n e: { field: field, type: type }\n });\n return this;\n }\n /**\n * Pass array of filterColumn query for performing filter operation.\n * @param {QueryOptions[]} queries\n * @param {string} name\n * @hidden\n */\n static filterQueries(queries, name) {\n return queries.filter((q) => {\n return q.fn === name;\n });\n }\n /**\n * To get the list of queries which is already filtered in current data source.\n * @param {Object[]} queries\n * @param {string[]} singles\n * @hidden\n */\n static filterQueryLists(queries, singles) {\n let filtered = queries.filter((q) => {\n return singles.indexOf(q.fn) !== -1;\n });\n let res = {};\n for (let i = 0; i < filtered.length; i++) {\n if (!res[filtered[i].fn]) {\n res[filtered[i].fn] = filtered[i].e;\n }\n }\n return res;\n }\n}\n/**\n * Predicate class is used to generate complex filter criteria.\n * This will be used by DataManager to perform multiple filtering operation.\n */\nclass Predicate {\n /**\n * Constructor for Predicate class.\n * @param {string|Predicate} field\n * @param {string} operator\n * @param {string|number|boolean|Predicate|Predicate[]} value\n * @param {boolean=false} ignoreCase\n * @hidden\n */\n constructor(field, operator, value, ignoreCase = false, ignoreAccent) {\n /** @hidden */\n this.ignoreAccent = false;\n /** @hidden */\n this.isComplex = false;\n if (typeof field === 'string') {\n this.field = field;\n this.operator = operator.toLowerCase();\n this.value = value;\n this.ignoreCase = ignoreCase;\n this.ignoreAccent = ignoreAccent;\n this.isComplex = false;\n this.comparer = DataUtil.fnOperators.processOperator(this.operator);\n }\n else if (field instanceof Predicate && value instanceof Predicate || value instanceof Array) {\n this.isComplex = true;\n this.condition = operator.toLowerCase();\n this.predicates = [field];\n if (value instanceof Array) {\n [].push.apply(this.predicates, value);\n }\n else {\n this.predicates.push(value);\n }\n }\n return this;\n }\n /**\n * Adds n-number of new predicates on existing predicate with “and” condition.\n * @param {Object[]} args - Defines the collection of predicates.\n */\n static and(...args) {\n return Predicate.combinePredicates([].slice.call(args, 0), 'and');\n }\n /**\n * Adds new predicate on existing predicate with “and” condition.\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n */\n and(field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'and', ignoreCase, ignoreAccent);\n }\n /**\n * Adds n-number of new predicates on existing predicate with “or” condition.\n * @param {Object[]} args - Defines the collection of predicates.\n */\n static or(...args) {\n return Predicate.combinePredicates([].slice.call(args, 0), 'or');\n }\n /**\n * Adds new predicate on existing predicate with “or” condition.\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n */\n or(field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'or', ignoreCase, ignoreAccent);\n }\n /**\n * Converts plain JavaScript object to Predicate object.\n * @param {Predicate[]|Predicate} json - Defines single or collection of Predicate.\n */\n static fromJson(json) {\n if (json instanceof Array) {\n let res = [];\n for (let i = 0, len = json.length; i < len; i++) {\n res.push(this.fromJSONData(json[i]));\n }\n return res;\n }\n let pred = json;\n return this.fromJSONData(pred);\n }\n /**\n * Validate the record based on the predicates.\n * @param {Object} record - Defines the datasource record.\n */\n validate(record) {\n let predicate = this.predicates ? this.predicates : [];\n let isAnd;\n let ret;\n if (!this.isComplex && this.comparer) {\n return this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n isAnd = this.condition === 'and';\n for (let i = 0; i < predicate.length; i++) {\n ret = predicate[i].validate(record);\n if (isAnd) {\n if (!ret) {\n return false;\n }\n }\n else {\n if (ret) {\n return true;\n }\n }\n }\n return isAnd;\n }\n /**\n * Converts predicates to plain JavaScript.\n * This method is uses Json stringify when serializing Predicate object.\n */\n toJson() {\n let predicates;\n let p;\n if (this.isComplex) {\n predicates = [];\n p = this.predicates;\n for (let i = 0; i < p.length; i++) {\n predicates.push(p[i].toJson());\n }\n }\n return {\n isComplex: this.isComplex,\n field: this.field,\n operator: this.operator,\n value: this.value,\n ignoreCase: this.ignoreCase,\n ignoreAccent: this.ignoreAccent,\n condition: this.condition,\n predicates: predicates\n };\n }\n static combinePredicates(predicates, operator) {\n if (predicates.length === 1) {\n if (!(predicates[0] instanceof Array)) {\n return predicates[0];\n }\n predicates = predicates[0];\n }\n return new Predicate(predicates[0], operator, predicates.slice(1));\n }\n static combine(pred, field, operator, value, condition, ignoreCase, ignoreAccent) {\n if (field instanceof Predicate) {\n return Predicate[condition](pred, field);\n }\n if (typeof field === 'string') {\n return Predicate[condition](pred, new Predicate(field, operator, value, ignoreCase, ignoreAccent));\n }\n return DataUtil.throwError('Predicate - ' + condition + ' : invalid arguments');\n }\n static fromJSONData(json) {\n let preds = json.predicates || [];\n let len = preds.length;\n let predicates = [];\n let result;\n for (let i = 0; i < len; i++) {\n predicates.push(this.fromJSONData(preds[i]));\n }\n if (!json.isComplex) {\n result = new Predicate(json.field, json.operator, json.value, json.ignoreCase, json.ignoreAccent);\n }\n else {\n result = new Predicate(predicates[0], json.condition, predicates.slice(1));\n }\n return result;\n }\n}\n\nconst consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Data manager common utility methods.\n * @hidden\n */\nclass DataUtil {\n /**\n * Returns the value by invoking the provided parameter function.\n * If the paramater is not of type function then it will be returned as it is.\n * @param {Function|string|string[]|number} value\n * @param {Object} inst?\n * @hidden\n */\n static getValue(value, inst) {\n if (typeof value === 'function') {\n return value.call(inst || {});\n }\n return value;\n }\n /**\n * Returns true if the input string ends with given string.\n * @param {string} input\n * @param {string} substr\n */\n static endsWith(input, substr) {\n return input.slice && input.slice(-substr.length) === substr;\n }\n /**\n * Returns true if the input string starts with given string.\n * @param {string} str\n * @param {string} startstr\n */\n static startsWith(input, start) {\n return input.slice(0, start.length) === start;\n }\n /**\n * To return the sorting function based on the string.\n * @param {string} order\n * @hidden\n */\n static fnSort(order) {\n order = order ? DataUtil.toLowerCase(order) : 'ascending';\n if (order === 'ascending') {\n return this.fnAscending;\n }\n return this.fnDescending;\n }\n /**\n * Comparer function which is used to sort the data in ascending order.\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n static fnAscending(x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return -1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y);\n }\n if (x === null || x === undefined) {\n return 1;\n }\n return x - y;\n }\n /**\n * Comparer function which is used to sort the data in descending order.\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n static fnDescending(x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return 1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y) * -1;\n }\n if (x === null || x === undefined) {\n return -1;\n }\n return y - x;\n }\n static extractFields(obj, fields) {\n let newObj = {};\n for (let i = 0; i < fields.length; i++) {\n newObj = this.setValue(fields[i], this.getObject(fields[i], obj), newObj);\n }\n return newObj;\n }\n /**\n * Select objects by given fields from jsonArray.\n * @param {Object[]} jsonArray\n * @param {string[]} fields\n */\n static select(jsonArray, fields) {\n let newData = [];\n for (let i = 0; i < jsonArray.length; i++) {\n newData.push(this.extractFields(jsonArray[i], fields));\n }\n return newData;\n }\n /**\n * Group the input data based on the field name.\n * It also performs aggregation of the grouped records based on the aggregates paramater.\n * @param {Object[]} jsonArray\n * @param {string} field?\n * @param {Object[]} agg?\n * @param {number} level?\n * @param {Object[]} groupDs?\n */\n static group(jsonArray, field, aggregates, level, groupDs, format) {\n level = level || 1;\n let jsonData = jsonArray;\n let guid = 'GroupGuid';\n if (jsonData.GroupGuid === consts[guid]) {\n for (let j = 0; j < jsonData.length; j++) {\n if (!isNullOrUndefined(groupDs)) {\n let indx = -1;\n let temp = groupDs.filter((e) => { return e.key === jsonData[j].key; });\n indx = groupDs.indexOf(temp[0]);\n jsonData[j].items = this.group(jsonData[j].items, field, aggregates, jsonData.level + 1, groupDs[indx].items, format);\n jsonData[j].count = groupDs[indx].count;\n }\n else {\n jsonData[j].items = this.group(jsonData[j].items, field, aggregates, jsonData.level + 1, null, format);\n jsonData[j].count = jsonData[j].items.length;\n }\n }\n jsonData.childLevels += 1;\n return jsonData;\n }\n let grouped = {};\n let groupedArray = [];\n groupedArray.GroupGuid = consts[guid];\n groupedArray.level = level;\n groupedArray.childLevels = 0;\n groupedArray.records = jsonData;\n for (let i = 0; i < jsonData.length; i++) {\n let val = this.getVal(jsonData, i, field);\n if (!isNullOrUndefined(format)) {\n val = format(val, field);\n }\n if (!grouped[val]) {\n grouped[val] = {\n key: val,\n count: 0,\n items: [],\n aggregates: {},\n field: field\n };\n groupedArray.push(grouped[val]);\n if (!isNullOrUndefined(groupDs)) {\n let tempObj = groupDs.filter((e) => { return e.key === grouped[val].key; });\n grouped[val].count = tempObj[0].count;\n }\n }\n grouped[val].count = !isNullOrUndefined(groupDs) ? grouped[val].count : grouped[val].count += 1;\n grouped[val].items.push(jsonData[i]);\n }\n if (aggregates && aggregates.length) {\n for (let i = 0; i < groupedArray.length; i++) {\n let res = {};\n let fn;\n let aggs = aggregates;\n for (let j = 0; j < aggregates.length; j++) {\n fn = DataUtil.aggregates[aggregates[j].type];\n if (!isNullOrUndefined(groupDs)) {\n let temp = groupDs.filter((e) => { return e.key === groupedArray[i].key; });\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(temp[0].items, aggs[j].field);\n }\n }\n else {\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(groupedArray[i].items, aggs[j].field);\n }\n }\n }\n groupedArray[i].aggregates = res;\n }\n }\n return jsonData.length && groupedArray || jsonData;\n }\n /**\n * It is used to categorize the multiple items based on a specific field in jsonArray.\n * The hierarchical queries are commonly required when you use foreign key binding.\n * @param {string} fKey\n * @param {string} from\n * @param {Object[]} source\n * @param {Group} lookup?\n * @param {string} pKey?\n * @hidden\n */\n static buildHierarchy(fKey, from, source, lookup, pKey) {\n let i;\n let grp = {};\n let temp;\n if (lookup.result) {\n lookup = lookup.result;\n }\n if (lookup.GroupGuid) {\n this.throwError('DataManager: Do not have support Grouping in hierarchy');\n }\n for (i = 0; i < lookup.length; i++) {\n let fKeyData = this.getObject(fKey, lookup[i]);\n temp = grp[fKeyData] || (grp[fKeyData] = []);\n temp.push(lookup[i]);\n }\n for (i = 0; i < source.length; i++) {\n let fKeyData = this.getObject(pKey || fKey, source[i]);\n source[i][from] = grp[fKeyData];\n }\n }\n /**\n * The method used to get the field names which started with specified characters.\n * @param {Object} obj\n * @param {string[]} fields?\n * @param {string} prefix?\n * @hidden\n */\n static getFieldList(obj, fields, prefix) {\n if (prefix === undefined) {\n prefix = '';\n }\n if (fields === undefined || fields === null) {\n return this.getFieldList(obj, [], prefix);\n }\n let copyObj = obj;\n let keys = Object.keys(obj);\n for (let prop of keys) {\n if (typeof copyObj[prop] === 'object' && !(copyObj[prop] instanceof Array)) {\n this.getFieldList(copyObj[prop], fields, prefix + prop + '.');\n }\n else {\n fields.push(prefix + prop);\n }\n }\n return fields;\n }\n /**\n * Gets the value of the property in the given object.\n * The complex object can be accessed by providing the field names concatenated with dot(.).\n * @param {string} nameSpace - The name of the property to be accessed.\n * @param {Object} from - Defines the source object.\n */\n static getObject(nameSpace, from) {\n if (!nameSpace) {\n return from;\n }\n if (!from) {\n return undefined;\n }\n if (nameSpace.indexOf('.') === -1) {\n return from[nameSpace];\n }\n let value = from;\n let splits = nameSpace.split('.');\n for (let i = 0; i < splits.length; i++) {\n if (value == null) {\n break;\n }\n value = value[splits[i]];\n }\n return value;\n }\n /**\n * To set value for the nameSpace in desired object.\n * @param {string} nameSpace - String value to the get the inner object.\n * @param {Object} value - Value that you need to set.\n * @param {Object} obj - Object to get the inner object value.\n * @return { [key: string]: Object; } | Object\n * @hidden\n */\n static setValue(nameSpace, value, obj) {\n let keys = nameSpace.toString().split('.');\n let start = obj || {};\n let fromObj = start;\n let i;\n let length = keys.length;\n let key;\n for (i = 0; i < length; i++) {\n key = keys[i];\n if (i + 1 === length) {\n fromObj[key] = value === undefined ? undefined : value;\n }\n else if (isNullOrUndefined(fromObj[key])) {\n fromObj[key] = {};\n }\n fromObj = fromObj[key];\n }\n return start;\n }\n /**\n * Sort the given data based on the field and comparer.\n * @param {Object[]} ds - Defines the input data.\n * @param {string} field - Defines the field to be sorted.\n * @param {Function} comparer - Defines the comparer function used to sort the records.\n */\n static sort(ds, field, comparer) {\n if (ds.length <= 1) {\n return ds;\n }\n let middle = parseInt((ds.length / 2).toString(), 10);\n let left = ds.slice(0, middle);\n let right = ds.slice(middle);\n left = this.sort(left, field, comparer);\n right = this.sort(right, field, comparer);\n return this.merge(left, right, field, comparer);\n }\n static ignoreDiacritics(value) {\n if (typeof value !== 'string') {\n return value;\n }\n let result = value.split('');\n let newValue = result.map((temp) => temp in DataUtil.diacritics ? DataUtil.diacritics[temp] : temp);\n return newValue.join('');\n }\n static merge(left, right, fieldName, comparer) {\n let result = [];\n let current;\n while (left.length > 0 || right.length > 0) {\n if (left.length > 0 && right.length > 0) {\n if (comparer) {\n current = comparer(this.getVal(left, 0, fieldName), this.getVal(right, 0, fieldName), left[0], right[0]) <= 0 ? left : right;\n }\n else {\n current = left[0][fieldName] < left[0][fieldName] ? left : right;\n }\n }\n else {\n current = left.length > 0 ? left : right;\n }\n result.push(current.shift());\n }\n return result;\n }\n static getVal(array, index, field) {\n return field ? this.getObject(field, array[index]) : array[index];\n }\n static toLowerCase(val) {\n return val ? typeof val === 'string' ? val.toLowerCase() : val.toString() : (val === 0 || val === false) ? val.toString() : '';\n }\n /**\n * To perform the filter operation with specified adaptor and returns the result.\n * @param {Object} adaptor\n * @param {string} fnName\n * @param {Object} param1?\n * @param {Object} param2?\n * @hidden\n */\n static callAdaptorFunction(adaptor, fnName, param1, param2) {\n if (fnName in adaptor) {\n let res = adaptor[fnName](param1, param2);\n if (!isNullOrUndefined(res)) {\n param1 = res;\n }\n }\n return param1;\n }\n static getAddParams(adp, dm, query) {\n let req = {};\n DataUtil.callAdaptorFunction(adp, 'addParams', {\n dm: dm,\n query: query,\n params: query.params,\n reqParams: req\n });\n return req;\n }\n /**\n * Checks wheather the given input is a plain object or not.\n * @param {Object|Object[]} obj\n */\n static isPlainObject(obj) {\n return (!!obj) && (obj.constructor === Object);\n }\n /**\n * Returns true when the browser cross origin request.\n */\n static isCors() {\n let xhr = null;\n let request = 'XMLHttpRequest';\n try {\n xhr = new window[request]();\n }\n catch (e) {\n // No exception handling\n }\n return !!xhr && ('withCredentials' in xhr);\n }\n /**\n * Generate random GUID value which will be prefixed with the given value.\n * @param {string} prefix\n */\n static getGuid(prefix) {\n let hexs = '0123456789abcdef';\n let rand;\n return (prefix || '') + '00000000-0000-4000-0000-000000000000'.replace(/0/g, (val, i) => {\n if ('crypto' in window && 'getRandomValues' in crypto) {\n let arr = new Uint8Array(1);\n window.crypto.getRandomValues(arr);\n rand = arr[0] % 16 | 0;\n }\n else {\n rand = Math.random() * 16 | 0;\n }\n return hexs[i === 19 ? rand & 0x3 | 0x8 : rand];\n });\n }\n /**\n * Checks wheather the given value is null or not.\n * @param {string|Object} val\n * @returns boolean\n */\n static isNull(val) {\n return val === undefined || val === null;\n }\n /**\n * To get the required items from collection of objects.\n * @param {Object[]} array\n * @param {string} field\n * @param {Function} comparer\n * @returns Object\n * @hidden\n */\n static getItemFromComparer(array, field, comparer) {\n let keyVal;\n let current;\n let key;\n let i = 0;\n let castRequired = typeof DataUtil.getVal(array, 0, field) === 'string';\n if (array.length) {\n while (isNullOrUndefined(keyVal) && i < array.length) {\n keyVal = DataUtil.getVal(array, i, field);\n key = array[i++];\n }\n }\n for (; i < array.length; i++) {\n current = DataUtil.getVal(array, i, field);\n if (isNullOrUndefined(current)) {\n continue;\n }\n if (castRequired) {\n keyVal = +keyVal;\n current = +current;\n }\n if (comparer(keyVal, current) > 0) {\n keyVal = current;\n key = array[i];\n }\n }\n return key;\n }\n /**\n * To get distinct values of Array or Array of Objects.\n * @param {Object[]} json\n * @param {string} field\n * @param {boolean} requiresCompleteRecord\n * @returns Object[]\n * * distinct array of objects is return when requiresCompleteRecord set as true.\n * @hidden\n */\n static distinct(json, fieldName, requiresCompleteRecord) {\n requiresCompleteRecord = isNullOrUndefined(requiresCompleteRecord) ? false : requiresCompleteRecord;\n let result = [];\n let val;\n let tmp = {};\n json.forEach((data, index) => {\n val = typeof (json[index]) === 'object' ? DataUtil.getVal(json, index, fieldName) : json[index];\n if (!(val in tmp)) {\n result.push(!requiresCompleteRecord ? val : json[index]);\n tmp[val] = 1;\n }\n });\n return result;\n }\n}\n/**\n * Specifies the value which will be used to adjust the date value to server timezone.\n * @default null\n */\nDataUtil.serverTimezoneOffset = null;\n/**\n * Species whether are not to be parsed with serverTimezoneOffset value.\n * @hidden\n */\nDataUtil.timeZoneHandling = true;\n/**\n * Throw error with the given string as message.\n * @param {string} er\n */\nDataUtil.throwError = (error) => {\n try {\n throw new Error(error);\n }\n catch (e) {\n throw e.message + '\\n' + e.stack;\n }\n};\nDataUtil.aggregates = {\n /**\n * Calculate sum of the given field in the data.\n * @param {Object[]} ds\n * @param {string} field\n */\n sum: (ds, field) => {\n let result = 0;\n let val;\n let castRequired = typeof DataUtil.getVal(ds, 0, field) !== 'number';\n for (let i = 0; i < ds.length; i++) {\n val = DataUtil.getVal(ds, i, field);\n if (!isNaN(val) && val !== null) {\n if (castRequired) {\n val = +val;\n }\n result += val;\n }\n }\n return result;\n },\n /**\n * Calculate average value of the given field in the data.\n * @param {Object[]} ds\n * @param {string} field\n */\n average: (ds, field) => {\n return DataUtil.aggregates.sum(ds, field) / ds.length;\n },\n /**\n * Returns the min value of the data based on the field.\n * @param {Object[]} ds\n * @param {string|Function} field\n */\n min: (ds, field) => {\n let comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnAscending));\n },\n /**\n * Returns the max value of the data based on the field.\n * @param {Object[]} ds\n * @param {string} field\n * @returns number\n */\n max: (ds, field) => {\n let comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnDescending));\n },\n /**\n * Returns the total number of true value present in the data based on the given boolean field name.\n * @param {Object[]} ds\n * @param {string} field\n */\n truecount: (ds, field) => {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', true, true)).length;\n },\n /**\n * Returns the total number of false value present in the data based on the given boolean field name.\n * @param {Object[]} ds\n * @param {string} field\n */\n falsecount: (ds, field) => {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', false, true)).length;\n },\n /**\n * Returns the length of the given data.\n * @param {Object[]} ds\n * @param {string} field?\n * @returns number\n */\n count: (ds, field) => {\n return ds.length;\n }\n};\n/**\n * Specifies the Object with filter operators.\n */\nDataUtil.operatorSymbols = {\n '<': 'lessthan',\n '>': 'greaterthan',\n '<=': 'lessthanorequal',\n '>=': 'greaterthanorequal',\n '==': 'equal',\n '!=': 'notequal',\n '*=': 'contains',\n '$=': 'endswith',\n '^=': 'startswith'\n};\n/**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * * It will be used for date/number type filter query.\n */\nDataUtil.odBiOperator = {\n '<': ' lt ',\n '>': ' gt ',\n '<=': ' le ',\n '>=': ' ge ',\n '==': ' eq ',\n '!=': ' ne ',\n 'lessthan': ' lt ',\n 'lessthanorequal': ' le ',\n 'greaterthan': ' gt ',\n 'greaterthanorequal': ' ge ',\n 'equal': ' eq ',\n 'notequal': ' ne '\n};\n/**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * It will be used for string type filter query.\n */\nDataUtil.odUniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'substringof',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'substringof'\n};\n/**\n * Specifies the Object with filter operators which will be used for ODataV4 filter query generation.\n * It will be used for string type filter query.\n */\nDataUtil.odv4UniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'contains',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'contains'\n};\nDataUtil.diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03C9': '\\u03C9',\n '\\u03C2': '\\u03C3'\n};\nDataUtil.fnOperators = {\n /**\n * Returns true when the actual input is equal to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param {boolean} ignoreAccent?\n */\n equal: (actual, expected, ignoreCase, ignoreAccent) => {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) === DataUtil.toLowerCase(expected);\n }\n return actual === expected;\n },\n /**\n * Returns true when the actual input is not equal to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n notequal: (actual, expected, ignoreCase, ignoreAccent) => {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n return !DataUtil.fnOperators.equal(actual, expected, ignoreCase);\n },\n /**\n * Returns true when the actual input is less than to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n lessthan: (actual, expected, ignoreCase) => {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) < DataUtil.toLowerCase(expected);\n }\n return actual < expected;\n },\n /**\n * Returns true when the actual input is greater than to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n greaterthan: (actual, expected, ignoreCase) => {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) > DataUtil.toLowerCase(expected);\n }\n return actual > expected;\n },\n /**\n * Returns true when the actual input is less than or equal to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n lessthanorequal: (actual, expected, ignoreCase) => {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) <= DataUtil.toLowerCase(expected);\n }\n return actual <= expected;\n },\n /**\n * Returns true when the actual input is greater than or equal to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n greaterthanorequal: (actual, expected, ignoreCase) => {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) >= DataUtil.toLowerCase(expected);\n }\n return actual >= expected;\n },\n /**\n * Returns true when the actual input contains the given string.\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n */\n contains: (actual, expected, ignoreCase, ignoreAccent) => {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n DataUtil.toLowerCase(actual).indexOf(DataUtil.toLowerCase(expected)) !== -1;\n }\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n actual.toString().indexOf(expected) !== -1;\n },\n /**\n * Returns true when the given input value is not null.\n * @param {string|number} actual\n * @returns boolean\n */\n notnull: (actual) => {\n return actual !== null;\n },\n /**\n * Returns true when the given input value is null.\n * @param {string|number} actual\n * @returns boolean\n */\n isnull: (actual) => {\n return actual === null;\n },\n /**\n * Returns true when the actual input starts with the given string\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n startswith: (actual, expected, ignoreCase, ignoreAccent) => {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.startsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.startsWith(actual, expected);\n },\n /**\n * Returns true when the actual input ends with the given string.\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n endswith: (actual, expected, ignoreCase, ignoreAccent) => {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.endsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.endsWith(actual, expected);\n },\n /**\n * It will return the filter operator based on the filter symbol.\n * @param {string} operator\n * @hidden\n */\n processSymbols: (operator) => {\n let fnName = DataUtil.operatorSymbols[operator];\n if (fnName) {\n let fn = DataUtil.fnOperators[fnName];\n return fn;\n }\n return DataUtil.throwError('Query - Process Operator : Invalid operator');\n },\n /**\n * It will return the valid filter operator based on the specified operators.\n * @param {string} operator\n * @hidden\n */\n processOperator: (operator) => {\n let fn = DataUtil.fnOperators[operator];\n if (fn) {\n return fn;\n }\n return DataUtil.fnOperators.processSymbols(operator);\n }\n};\n/**\n * To perform the parse operation on JSON data, like convert to string from JSON or convert to JSON from string.\n */\nDataUtil.parse = {\n /**\n * Parse the given string to the plain JavaScript object.\n * @param {string|Object|Object[]} jsonText\n */\n parseJson: (jsonText) => {\n if (typeof jsonText === 'string') {\n jsonText = JSON.parse(jsonText, DataUtil.parse.jsonReviver);\n }\n else if (jsonText instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(jsonText);\n }\n else if (typeof jsonText === 'object' && jsonText !== null) {\n DataUtil.parse.iterateAndReviveJson(jsonText);\n }\n return jsonText;\n },\n /**\n * It will perform on array of values.\n * @param {string[]|Object[]} array\n * @hidden\n */\n iterateAndReviveArray: (array) => {\n for (let i = 0; i < array.length; i++) {\n if (typeof array[i] === 'object' && array[i] !== null) {\n DataUtil.parse.iterateAndReviveJson(array[i]);\n }\n else if (typeof array[i] === 'string' && !/^[\\s]*\\[|^[\\s]*\\{(.)+:|\\\"/g.test(array[i])) {\n array[i] = DataUtil.parse.jsonReviver('', array[i]);\n }\n else {\n array[i] = DataUtil.parse.parseJson(array[i]);\n }\n }\n },\n /**\n * It will perform on JSON values\n * @param {JSON} json\n * @hidden\n */\n iterateAndReviveJson: (json) => {\n let value;\n let keys = Object.keys(json);\n for (let prop of keys) {\n if (DataUtil.startsWith(prop, '__')) {\n continue;\n }\n value = json[prop];\n if (typeof value === 'object') {\n if (value instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(value);\n }\n else if (value) {\n DataUtil.parse.iterateAndReviveJson(value);\n }\n }\n else {\n json[prop] = DataUtil.parse.jsonReviver(json[prop], value);\n }\n }\n },\n /**\n * It will perform on JSON values\n * @param {string} field\n * @param {string|Date} value\n * @hidden\n */\n jsonReviver: (field, value) => {\n if (typeof value === 'string') {\n let ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n let offSet = DataUtil.timeZoneHandling ? DataUtil.serverTimezoneOffset : null;\n if (ms) {\n return DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), offSet, true);\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n let isUTC = value.indexOf('Z') > -1 || value.indexOf('z') > -1;\n let arr = value.split(/[^0-9.]/);\n if (isUTC) {\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10)), DataUtil.serverTimezoneOffset, false);\n }\n else {\n let utcFormat = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10));\n let hrs = parseInt(arr[6], 10);\n let mins = parseInt(arr[7], 10);\n if (isNaN(hrs) && isNaN(mins)) {\n return utcFormat;\n }\n if (value.indexOf('+') > -1) {\n utcFormat.setHours(utcFormat.getHours() - hrs, utcFormat.getMinutes() - mins);\n }\n else {\n utcFormat.setHours(utcFormat.getHours() + hrs, utcFormat.getMinutes() + mins);\n }\n value = DataUtil.dateParse\n .toTimeZone(utcFormat, DataUtil.serverTimezoneOffset, false);\n }\n if (DataUtil.serverTimezoneOffset == null) {\n value = DataUtil.dateParse.addSelfOffset(value);\n }\n }\n }\n return value;\n },\n /**\n * Check wheather the given value is JSON or not.\n * @param {Object[]} jsonData\n */\n isJson: (jsonData) => {\n if (typeof jsonData[0] === 'string') {\n return jsonData;\n }\n return DataUtil.parse.parseJson(jsonData);\n },\n /**\n * Checks wheather the given value is GUID or not.\n * @param {string} value\n */\n isGuid: (value) => {\n let regex = /[A-Fa-f0-9]{8}(?:-[A-Fa-f0-9]{4}){3}-[A-Fa-f0-9]{12}/i;\n let match = regex.exec(value);\n return match != null;\n },\n /**\n * The method used to replace the value based on the type.\n * @param {Object} value\n * @param {boolean} stringify\n * @hidden\n */\n replacer: (value, stringify) => {\n if (DataUtil.isPlainObject(value)) {\n return DataUtil.parse.jsonReplacer(value, stringify);\n }\n if (value instanceof Array) {\n return DataUtil.parse.arrayReplacer(value);\n }\n if (value instanceof Date) {\n return DataUtil.parse.jsonReplacer({ val: value }, stringify).val;\n }\n return value;\n },\n /**\n * It will replace the JSON value.\n * @param {string} key\n * @param {Object} val\n * @hidden\n */\n jsonReplacer: (val, stringify) => {\n let value;\n let keys = Object.keys(val);\n for (let prop of keys) {\n value = val[prop];\n if (!(value instanceof Date)) {\n continue;\n }\n let d = value;\n if (DataUtil.serverTimezoneOffset == null) {\n val[prop] = DataUtil.dateParse.toTimeZone(d, null).toJSON();\n }\n else {\n d = new Date(+d + DataUtil.serverTimezoneOffset * 3600000);\n val[prop] = DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(d), null).toJSON();\n }\n }\n return val;\n },\n /**\n * It will replace the Array of value.\n * @param {string} key\n * @param {Object[]} val\n * @hidden\n */\n arrayReplacer: (val) => {\n for (let i = 0; i < val.length; i++) {\n if (DataUtil.isPlainObject(val[i])) {\n val[i] = DataUtil.parse.jsonReplacer(val[i]);\n }\n else if (val[i] instanceof Date) {\n val[i] = DataUtil.parse.jsonReplacer({ date: val[i] }).date;\n }\n }\n return val;\n },\n /**\n * It will replace the Date object with respective to UTC format value.\n * @param {string} key\n * @param {any} value\n * @hidden\n */\n /* tslint:disable-next-line:no-any */\n jsonDateReplacer: (key, value) => {\n if (key === 'value' && value) {\n if (typeof value === 'string') {\n let ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n if (ms) {\n value = DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), null, true);\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n let arr = value.split(/[^0-9]/);\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10)), null, true);\n }\n }\n if (value instanceof Date) {\n value = DataUtil.dateParse.addSelfOffset(value);\n if (DataUtil.serverTimezoneOffset === null) {\n return DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(value), null).toJSON();\n }\n else {\n value = DataUtil.dateParse.toTimeZone(value, (((value.getTimezoneOffset() / 60) * 2)\n - DataUtil.serverTimezoneOffset), false);\n return value.toJSON();\n }\n }\n }\n return value;\n }\n};\n/**\n * @hidden\n */\nDataUtil.dateParse = {\n addSelfOffset: (input) => {\n return new Date(+input - (input.getTimezoneOffset() * 60000));\n },\n toUTC: (input) => {\n return new Date(+input + (input.getTimezoneOffset() * 60000));\n },\n toTimeZone: (input, offset, utc) => {\n if (offset === null) {\n return input;\n }\n let unix = utc ? DataUtil.dateParse.toUTC(input) : input;\n return new Date(+unix - (offset * 3600000));\n },\n toLocalTime: (input) => {\n let datefn = input;\n let timeZone = -datefn.getTimezoneOffset();\n let differenceString = timeZone >= 0 ? '+' : '-';\n let localtimefn = (num) => {\n let norm = Math.floor(Math.abs(num));\n return (norm < 10 ? '0' : '') + norm;\n };\n let val = datefn.getFullYear() + '-' + localtimefn(datefn.getMonth() + 1) + '-' + localtimefn(datefn.getDate()) +\n 'T' + localtimefn(datefn.getHours()) +\n ':' + localtimefn(datefn.getMinutes()) +\n ':' + localtimefn(datefn.getSeconds()) +\n differenceString + localtimefn(timeZone / 60) +\n ':' + localtimefn(timeZone % 60);\n return val;\n }\n};\n\n/**\n * Adaptors are specific data source type aware interfaces that are used by DataManager to communicate with DataSource.\n * This is the base adaptor class that other adaptors can extend.\n * @hidden\n */\nclass Adaptor {\n /**\n * Constructor for Adaptor class\n * @param {DataOptions} ds?\n * @hidden\n * @returns aggregates\n */\n constructor(ds) {\n // common options for all the adaptors \n this.options = {\n from: 'table',\n requestType: 'json',\n sortBy: 'sorted',\n select: 'select',\n skip: 'skip',\n group: 'group',\n take: 'take',\n search: 'search',\n count: 'requiresCounts',\n where: 'where',\n aggregates: 'aggregates',\n expand: 'expand'\n };\n /**\n * Specifies the type of adaptor.\n * @default Adaptor\n */\n this.type = Adaptor;\n this.dataSource = ds;\n this.pvt = {};\n }\n /**\n * Returns the data from the query processing.\n * @param {Object} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @returns Object\n */\n processResponse(data, ds, query, xhr) {\n return data;\n }\n}\n/**\n * JsonAdaptor is used to process JSON data. It contains methods to process the given JSON data based on the queries.\n * @hidden\n */\nclass JsonAdaptor extends Adaptor {\n /**\n * Process the JSON data based on the provided queries.\n * @param {DataManager} dataManager\n * @param {Query} query\n * @returns Object\n */\n processQuery(dataManager, query) {\n let result = dataManager.dataSource.json.slice(0);\n let count = result.length;\n let countFlg = true;\n let ret;\n let key;\n let agg = {};\n for (let i = 0; i < query.queries.length; i++) {\n key = query.queries[i];\n ret = this[key.fn].call(this, result, key.e, query);\n if (key.fn === 'onAggregates') {\n agg[key.e.field + ' - ' + key.e.type] = ret;\n }\n else {\n result = ret !== undefined ? ret : result;\n }\n if (key.fn === 'onPage' || key.fn === 'onSkip' || key.fn === 'onTake' || key.fn === 'onRange') {\n countFlg = false;\n }\n if (countFlg) {\n count = result.length;\n }\n }\n if (query.isCountRequired) {\n result = {\n result: result,\n count: count,\n aggregates: agg\n };\n }\n return result;\n }\n /**\n * Performs batch update in the JSON array which add, remove and update records.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n batchRequest(dm, changes, e) {\n let i;\n let deletedRecordsLen = changes.deletedRecords.length;\n for (i = 0; i < changes.addedRecords.length; i++) {\n this.insert(dm, changes.addedRecords[i]);\n }\n for (i = 0; i < changes.changedRecords.length; i++) {\n this.update(dm, e.key, changes.changedRecords[i]);\n }\n for (i = 0; i < deletedRecordsLen; i++) {\n this.remove(dm, e.key, changes.deletedRecords[i]);\n }\n return changes;\n }\n /**\n * Performs filter operation with the given data and where query.\n * @param {Object[]} ds\n * @param {{validate:Function}} e\n */\n onWhere(ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.filter((obj) => {\n if (e) {\n return e.validate(obj);\n }\n });\n }\n /**\n * Returns aggregate function based on the aggregate type.\n * @param {Object[]} ds\n * @param {{field:string} e\n * @param {string}} type\n */\n onAggregates(ds, e) {\n let fn = DataUtil.aggregates[e.type];\n if (!ds || !fn || ds.length === 0) {\n return null;\n }\n return fn(ds, e.field);\n }\n /**\n * Performs search operation based on the given query.\n * @param {Object[]} ds\n * @param {QueryOptions} e\n */\n onSearch(ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n if (e.fieldNames.length === 0) {\n DataUtil.getFieldList(ds[0], e.fieldNames);\n }\n return ds.filter((obj) => {\n for (let j = 0; j < e.fieldNames.length; j++) {\n if (e.comparer.call(obj, DataUtil.getObject(e.fieldNames[j], obj), e.searchKey, e.ignoreCase, e.ignoreAccent)) {\n return true;\n }\n }\n return false;\n });\n }\n /**\n * Sort the data with given direction and field.\n * @param {Object[]} ds\n * @param {{comparer:(a:Object} e\n * @param {Object} b\n */\n onSortBy(ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n let fnCompare;\n let field = DataUtil.getValue(e.fieldName, query);\n if (!field) {\n return ds.sort(e.comparer);\n }\n if (field instanceof Array) {\n field = field.slice(0);\n for (let i = field.length - 1; i >= 0; i--) {\n if (!field[i]) {\n continue;\n }\n fnCompare = e.comparer;\n if (DataUtil.endsWith(field[i], ' desc')) {\n fnCompare = DataUtil.fnSort('descending');\n field[i] = field[i].replace(' desc', '');\n }\n ds = DataUtil.sort(ds, field[i], fnCompare);\n }\n return ds;\n }\n return DataUtil.sort(ds, field, e.comparer);\n }\n /**\n * Group the data based on the given query.\n * @param {Object[]} ds\n * @param {QueryOptions} e\n * @param {Query} query\n */\n onGroup(ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n let aggQuery = Query.filterQueries(query.queries, 'onAggregates');\n let agg = [];\n if (aggQuery.length) {\n let tmp;\n for (let i = 0; i < aggQuery.length; i++) {\n tmp = aggQuery[i].e;\n agg.push({ type: tmp.type, field: DataUtil.getValue(tmp.field, query) });\n }\n }\n return DataUtil.group(ds, DataUtil.getValue(e.fieldName, query), agg, null, null, e.comparer);\n }\n /**\n * Retrieves records based on the given page index and size.\n * @param {Object[]} ds\n * @param {{pageSize:number} e\n * @param {number}} pageIndex\n * @param {Query} query\n */\n onPage(ds, e, query) {\n let size = DataUtil.getValue(e.pageSize, query);\n let start = (DataUtil.getValue(e.pageIndex, query) - 1) * size;\n let end = start + size;\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(start, end);\n }\n /**\n * Retrieves records based on the given start and end index from query.\n * @param {Object[]} ds\n * @param {{start:number} e\n * @param {number}} end\n */\n onRange(ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.start), DataUtil.getValue(e.end));\n }\n /**\n * Picks the given count of records from the top of the datasource.\n * @param {Object[]} ds\n * @param {{nos:number}} e\n */\n onTake(ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(0, DataUtil.getValue(e.nos));\n }\n /**\n * Skips the given count of records from the data source.\n * @param {Object[]} ds\n * @param {{nos:number}} e\n */\n onSkip(ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.nos));\n }\n /**\n * Selects specified columns from the data source.\n * @param {Object[]} ds\n * @param {{fieldNames:string}} e\n */\n onSelect(ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return DataUtil.select(ds, DataUtil.getValue(e.fieldNames));\n }\n /**\n * Inserts new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {number} position\n */\n insert(dm, data, tableName, query, position) {\n if (isNullOrUndefined(position)) {\n return dm.dataSource.json.push(data);\n }\n else {\n return dm.dataSource.json.splice(position, 0, data);\n }\n }\n /**\n * Remove the data from the dataSource based on the key field value.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @returns null\n */\n remove(dm, keyField, value, tableName) {\n let ds = dm.dataSource.json;\n let i;\n if (typeof value === 'object' && !(value instanceof Date)) {\n value = DataUtil.getObject(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (DataUtil.getObject(keyField, ds[i]) === value) {\n break;\n }\n }\n return i !== ds.length ? ds.splice(i, 1) : null;\n }\n /**\n * Updates existing record and saves the changes to the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @returns null\n */\n update(dm, keyField, value, tableName) {\n let ds = dm.dataSource.json;\n let i;\n let key;\n if (!isNullOrUndefined(keyField)) {\n key = getValue(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (!isNullOrUndefined(keyField) && (getValue(keyField, ds[i])) === key) {\n break;\n }\n }\n return i < ds.length ? merge(ds[i], value) : null;\n }\n}\n/**\n * URL Adaptor of DataManager can be used when you are required to use remote service to retrieve data.\n * It interacts with server-side for all DataManager Queries and CRUD operations.\n * @hidden\n */\nclass UrlAdaptor extends Adaptor {\n /**\n * Process the query to generate request body.\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @returns p\n */\n processQuery(dm, query, hierarchyFilters) {\n let queries = this.getQueryRequest(query);\n let singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n let params = query.params;\n let url = dm.dataSource.url;\n let temp;\n let skip;\n let take = null;\n let options = this.options;\n let request = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n // calc Paging & Range\n if ('onPage' in singles) {\n temp = singles.onPage;\n skip = DataUtil.getValue(temp.pageIndex, query);\n take = DataUtil.getValue(temp.pageSize, query);\n skip = (skip - 1) * take;\n }\n else if ('onRange' in singles) {\n temp = singles.onRange;\n skip = temp.start;\n take = temp.end - temp.start;\n }\n // Sorting\n for (let i = 0; i < queries.sorts.length; i++) {\n temp = DataUtil.getValue(queries.sorts[i].e.fieldName, query);\n request.sorts.push(DataUtil.callAdaptorFunction(this, 'onEachSort', { name: temp, direction: queries.sorts[i].e.direction }, query));\n }\n // hierarchy\n if (hierarchyFilters) {\n temp = this.getFiltersFrom(hierarchyFilters, query);\n if (temp) {\n request.filters.push(DataUtil.callAdaptorFunction(this, 'onEachWhere', temp.toJson(), query));\n }\n }\n // Filters\n for (let i = 0; i < queries.filters.length; i++) {\n request.filters.push(DataUtil.callAdaptorFunction(this, 'onEachWhere', queries.filters[i].e.toJson(), query));\n let keys = typeof request.filters[i] === 'object' ? Object.keys(request.filters[i]) : [];\n for (let prop of keys) {\n if (DataUtil.isNull((request)[prop])) {\n delete request[prop];\n }\n }\n }\n // Searches\n for (let i = 0; i < queries.searches.length; i++) {\n temp = queries.searches[i].e;\n request.searches.push(DataUtil.callAdaptorFunction(this, 'onEachSearch', {\n fields: temp.fieldNames,\n operator: temp.operator,\n key: temp.searchKey,\n ignoreCase: temp.ignoreCase\n }, query));\n }\n // Grouping\n for (let i = 0; i < queries.groups.length; i++) {\n request.groups.push(DataUtil.getValue(queries.groups[i].e.fieldName, query));\n }\n // aggregates\n for (let i = 0; i < queries.aggregates.length; i++) {\n temp = queries.aggregates[i].e;\n request.aggregates.push({ type: temp.type, field: DataUtil.getValue(temp.field, query) });\n }\n let req = {};\n this.getRequestQuery(options, query, singles, request, req);\n // Params\n DataUtil.callAdaptorFunction(this, 'addParams', { dm: dm, query: query, params: params, reqParams: req });\n // cleanup\n let keys = Object.keys(req);\n for (let prop of keys) {\n if (DataUtil.isNull(req[prop]) || req[prop] === '' || req[prop].length === 0) {\n delete req[prop];\n }\n }\n if (!(options.skip in req && options.take in req) && take !== null) {\n req[options.skip] = DataUtil.callAdaptorFunction(this, 'onSkip', skip, query);\n req[options.take] = DataUtil.callAdaptorFunction(this, 'onTake', take, query);\n }\n let p = this.pvt;\n this.pvt = {};\n if (this.options.requestType === 'json') {\n return {\n data: JSON.stringify(req, DataUtil.parse.jsonDateReplacer),\n url: url,\n pvtData: p,\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n }\n temp = this.convertToQueryString(req, query, dm);\n temp = (dm.dataSource.url.indexOf('?') !== -1 ? '&' : '/') + temp;\n return {\n type: 'GET', url: temp.length ? url.replace(/\\/*$/, temp) : url, pvtData: p\n };\n }\n getRequestQuery(options, query, singles, request, request1) {\n let param = 'param';\n let req = request1;\n req[options.from] = query.fromTable;\n if (options.apply && query.distincts.length) {\n req[options.apply] = 'onDistinct' in this ? DataUtil.callAdaptorFunction(this, 'onDistinct', query.distincts) : '';\n }\n if (!query.distincts.length && options.expand) {\n req[options.expand] = 'onExpand' in this && 'onSelect' in singles ?\n DataUtil.callAdaptorFunction(this, 'onExpand', { selects: DataUtil.getValue(singles.onSelect.fieldNames, query), expands: query.expands }, query) : query.expands;\n }\n req[options.select] = 'onSelect' in singles && !query.distincts.length ?\n DataUtil.callAdaptorFunction(this, 'onSelect', DataUtil.getValue(singles.onSelect.fieldNames, query), query) : '';\n req[options.count] = query.isCountRequired ? DataUtil.callAdaptorFunction(this, 'onCount', query.isCountRequired, query) : '';\n req[options.search] = request.searches.length ? DataUtil.callAdaptorFunction(this, 'onSearch', request.searches, query) : '';\n req[options.skip] = 'onSkip' in singles ?\n DataUtil.callAdaptorFunction(this, 'onSkip', DataUtil.getValue(singles.onSkip.nos, query), query) : '';\n req[options.take] = 'onTake' in singles ?\n DataUtil.callAdaptorFunction(this, 'onTake', DataUtil.getValue(singles.onTake.nos, query), query) : '';\n req[options.where] = request.filters.length || request.searches.length ?\n DataUtil.callAdaptorFunction(this, 'onWhere', request.filters, query) : '';\n req[options.sortBy] = request.sorts.length ? DataUtil.callAdaptorFunction(this, 'onSortBy', request.sorts, query) : '';\n req[options.group] = request.groups.length ? DataUtil.callAdaptorFunction(this, 'onGroup', request.groups, query) : '';\n req[options.aggregates] = request.aggregates.length ?\n DataUtil.callAdaptorFunction(this, 'onAggregates', request.aggregates, query) : '';\n req[param] = [];\n }\n /**\n * Convert the object from processQuery to string which can be added query string.\n * @param {Object} req\n * @param {Query} query\n * @param {DataManager} dm\n */\n convertToQueryString(request, query, dm) {\n return '';\n // this needs to be overridden\n }\n /**\n * Return the data from the data manager processing.\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Object} request?\n * @param {CrudOptions} changes?\n */\n processResponse(data, ds, query, xhr, request, changes) {\n if (xhr && xhr.getResponseHeader('Content-Type') &&\n xhr.getResponseHeader('Content-Type').indexOf('application/json') !== -1) {\n let handleTimeZone = DataUtil.timeZoneHandling;\n if (ds && !ds.timeZoneHandling) {\n DataUtil.timeZoneHandling = false;\n }\n data = DataUtil.parse.parseJson(data);\n DataUtil.timeZoneHandling = handleTimeZone;\n }\n let requests = request;\n let pvt = requests.pvtData || {};\n let groupDs = data ? data.groupDs : [];\n if (xhr && xhr.getResponseHeader('Content-Type') &&\n xhr.getResponseHeader('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n let d = JSON.parse(requests.data);\n if (d && d.action === 'batch' && data && data.addedRecords) {\n changes.addedRecords = data.addedRecords;\n return changes;\n }\n if (data && data.d) {\n data = data.d;\n }\n let args = {};\n if (data && 'count' in data) {\n args.count = data.count;\n }\n args.result = data && data.result ? data.result : data;\n this.getAggregateResult(pvt, data, args, groupDs, query);\n return DataUtil.isNull(args.count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n }\n /**\n * Add the group query to the adaptor`s option.\n * @param {Object[]} e\n * @returns void\n */\n onGroup(e) {\n this.pvt.groups = e;\n return e;\n }\n /**\n * Add the aggregate query to the adaptor`s option.\n * @param {Aggregates[]} e\n * @returns void\n */\n onAggregates(e) {\n this.pvt.aggregates = e;\n }\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n */\n batchRequest(dm, changes, e, query, original) {\n let url;\n let key;\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.removeUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e[url],\n key: e[key]\n }, DataUtil.getAddParams(this, dm, query)))\n };\n }\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @returns void\n */\n beforeSend(dm, request) {\n // need to extend this method\n }\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName\n */\n insert(dm, data, tableName, query) {\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n }\n /**\n * Prepare and return request body which is used to remove record from the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number|string} value\n * @param {string} tableName\n */\n remove(dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: value,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n }\n /**\n * Prepare and return request body which is used to update record.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n */\n update(dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: value,\n action: 'update',\n keyColumn: keyField,\n key: DataUtil.getObject(keyField, value),\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n }\n /**\n * To generate the predicate based on the filtered query.\n * @param {Object[]|string[]|number[]} data\n * @param {Query} query\n * @hidden\n */\n getFiltersFrom(data, query) {\n let key = query.fKey;\n let value;\n let prop = key;\n let pKey = query.key;\n let predicats = [];\n if (typeof data[0] !== 'object') {\n prop = null;\n }\n for (let i = 0; i < data.length; i++) {\n if (typeof data[0] === 'object') {\n value = DataUtil.getObject(pKey || prop, data[i]);\n }\n else {\n value = data[i];\n }\n predicats.push(new Predicate(key, 'equal', value));\n }\n return Predicate.or(predicats);\n }\n getAggregateResult(pvt, data, args, groupDs, query) {\n let pData = data;\n if (data && data.result) {\n pData = data.result;\n }\n if (pvt && pvt.aggregates && pvt.aggregates.length) {\n let agg = pvt.aggregates;\n let fn;\n let aggregateData = pData;\n let res = {};\n if (data.aggregate) {\n aggregateData = data.aggregate;\n }\n for (let i = 0; i < agg.length; i++) {\n fn = DataUtil.aggregates[agg[i].type];\n if (fn) {\n res[agg[i].field + ' - ' + agg[i].type] = fn(aggregateData, agg[i].field);\n }\n }\n args.aggregates = res;\n }\n if (pvt && pvt.groups && pvt.groups.length) {\n let groups = pvt.groups;\n for (let i = 0; i < groups.length; i++) {\n let level = null;\n if (!isNullOrUndefined(groupDs)) {\n groupDs = DataUtil.group(groupDs, groups[i]);\n }\n let groupQuery = Query.filterQueries(query.queries, 'onGroup')[i].e;\n pData = DataUtil.group(pData, groups[i], pvt.aggregates, level, groupDs, groupQuery.comparer);\n }\n args.result = pData;\n }\n return args;\n }\n getQueryRequest(query) {\n let req = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n req.sorts = Query.filterQueries(query.queries, 'onSortBy');\n req.groups = Query.filterQueries(query.queries, 'onGroup');\n req.filters = Query.filterQueries(query.queries, 'onWhere');\n req.searches = Query.filterQueries(query.queries, 'onSearch');\n req.aggregates = Query.filterQueries(query.queries, 'onAggregates');\n return req;\n }\n addParams(options) {\n let req = options.reqParams;\n if (options.params.length) {\n req.params = {};\n }\n for (let tmp of options.params) {\n if (req[tmp.key]) {\n throw new Error('Query() - addParams: Custom Param is conflicting other request arguments');\n }\n req[tmp.key] = tmp.value;\n if (tmp.fn) {\n req[tmp.key] = tmp.fn.call(options.query, tmp.key, options.query, options.dm);\n }\n req.params[tmp.key] = req[tmp.key];\n }\n }\n}\n/**\n * OData Adaptor that is extended from URL Adaptor, is used for consuming data through OData Service.\n * @hidden\n */\nclass ODataAdaptor extends UrlAdaptor {\n constructor(props) {\n super();\n // options replaced the default adaptor options\n this.options = extend({}, this.options, {\n requestType: 'get',\n accept: 'application/json;odata=light;q=1,application/json;odata=verbose;q=0.5',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$inlinecount',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PUT'\n });\n extend(this.options, props || {});\n }\n getModuleName() {\n return 'ODataAdaptor';\n }\n /**\n * Generate request string based on the filter criteria from query.\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n */\n onPredicate(predicate, query, requiresCast) {\n let returnValue = '';\n let operator;\n let guid;\n let val = predicate.value;\n let type = typeof val;\n let field = predicate.field ? ODataAdaptor.getField(predicate.field) : null;\n if (val instanceof Date) {\n val = 'datetime\\'' + DataUtil.parse.replacer(val) + '\\'';\n }\n if (type === 'string') {\n val = encodeURIComponent(val);\n val = '\\'' + val + '\\'';\n if (requiresCast) {\n field = 'cast(' + field + ', \\'Edm.String\\')';\n }\n if (DataUtil.parse.isGuid(val)) {\n guid = 'guid';\n }\n if (predicate.ignoreCase) {\n if (!guid) {\n field = 'tolower(' + field + ')';\n }\n val = val.toLowerCase();\n }\n }\n operator = DataUtil.odBiOperator[predicate.operator];\n if (operator) {\n returnValue += field;\n returnValue += operator;\n if (guid) {\n returnValue += guid;\n }\n return returnValue + val;\n }\n if (!isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor') {\n operator = DataUtil.odv4UniOperator[predicate.operator];\n }\n else {\n operator = DataUtil.odUniOperator[predicate.operator];\n }\n if (operator === 'substringof') {\n let temp = val;\n val = field;\n field = temp;\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += val + ')';\n return returnValue;\n }\n addParams(options) {\n super.addParams(options);\n delete options.reqParams.params;\n }\n /**\n * Generate request string based on the multiple filter criteria from query.\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n */\n onComplexPredicate(predicate, query, requiresCast) {\n let res = [];\n for (let i = 0; i < predicate.predicates.length; i++) {\n res.push('(' + this.onEachWhere(predicate.predicates[i], query, requiresCast) + ')');\n }\n return res.join(' ' + predicate.condition + ' ');\n }\n /**\n * Generate query string based on the multiple filter criteria from query.\n * @param {Predicate} filter\n * @param {boolean} requiresCast?\n */\n onEachWhere(filter, query, requiresCast) {\n return filter.isComplex ? this.onComplexPredicate(filter, query, requiresCast) : this.onPredicate(filter, query, requiresCast);\n }\n /**\n * Generate query string based on the multiple filter criteria from query.\n * @param {string[]} filters\n */\n onWhere(filters) {\n if (this.pvt.search) {\n filters.push(this.onEachWhere(this.pvt.search, null, true));\n }\n return filters.join(' and ');\n }\n /**\n * Generate query string based on the multiple search criteria from query.\n * @param {{fields:string[]} e\n * @param {string} operator\n * @param {string} key\n * @param {boolean}} ignoreCase\n */\n onEachSearch(e) {\n if (e.fields && e.fields.length === 0) {\n DataUtil.throwError('Query() - Search : oData search requires list of field names to search');\n }\n let filter = this.pvt.search || [];\n for (let i = 0; i < e.fields.length; i++) {\n filter.push(new Predicate(e.fields[i], e.operator, e.key, e.ignoreCase));\n }\n this.pvt.search = filter;\n }\n /**\n * Generate query string based on the search criteria from query.\n * @param {Object} e\n */\n onSearch(e) {\n this.pvt.search = Predicate.or(this.pvt.search);\n return '';\n }\n /**\n * Generate query string based on multiple sort criteria from query.\n * @param {QueryOptions} e\n */\n onEachSort(e) {\n let res = [];\n if (e.name instanceof Array) {\n for (let i = 0; i < e.name.length; i++) {\n res.push(ODataAdaptor.getField(e.name[i]) + (e.direction === 'descending' ? ' desc' : ''));\n }\n }\n else {\n res.push(ODataAdaptor.getField(e.name) + (e.direction === 'descending' ? ' desc' : ''));\n }\n return res.join(',');\n }\n /**\n * Returns sort query string.\n * @param {string[]} e\n */\n onSortBy(e) {\n return e.reverse().join(',');\n }\n /**\n * Adds the group query to the adaptor option.\n * @param {Object[]} e\n * @returns string\n */\n onGroup(e) {\n this.pvt.groups = e;\n return [];\n }\n /**\n * Returns the select query string.\n * @param {string[]} e\n */\n onSelect(e) {\n for (let i = 0; i < e.length; i++) {\n e[i] = ODataAdaptor.getField(e[i]);\n }\n return e.join(',');\n }\n /**\n * Add the aggregate query to the adaptor option.\n * @param {Object[]} e\n * @returns string\n */\n onAggregates(e) {\n this.pvt.aggregates = e;\n return '';\n }\n /**\n * Returns the query string which requests total count from the data source.\n * @param {boolean} e\n * @returns string\n */\n onCount(e) {\n return e === true ? 'allpages' : '';\n }\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings?\n */\n beforeSend(dm, request, settings) {\n if (DataUtil.endsWith(settings.url, this.options.batch) && settings.type.toLowerCase() === 'post') {\n request.setRequestHeader('Accept', this.options.multipartAccept);\n request.setRequestHeader('DataServiceVersion', '2.0');\n request.overrideMimeType('text/plain; charset=x-user-defined');\n }\n else {\n request.setRequestHeader('Accept', this.options.accept);\n }\n request.setRequestHeader('DataServiceVersion', '2.0');\n request.setRequestHeader('MaxDataServiceVersion', '2.0');\n }\n /**\n * Returns the data from the query processing.\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @returns aggregateResult\n */\n processResponse(data, ds, query, xhr, request, changes) {\n let metaCheck = 'odata.metadata';\n if ((request && request.type === 'GET') && !this.rootUrl && data[metaCheck]) {\n let dataUrls = data[metaCheck].split('/$metadata#');\n this.rootUrl = dataUrls[0];\n this.resourceTableName = dataUrls[1];\n }\n let pvtData = 'pvtData';\n if (!isNullOrUndefined(data.d)) {\n let dataCopy = ((query && query.isCountRequired) ? data.d.results : data.d);\n let metaData = '__metadata';\n if (!isNullOrUndefined(dataCopy)) {\n for (let i = 0; i < dataCopy.length; i++) {\n if (!isNullOrUndefined(dataCopy[i][metaData])) {\n delete dataCopy[i][metaData];\n }\n }\n }\n }\n let pvt = request && request[pvtData];\n let emptyAndBatch = this.processBatchResponse(data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n let versionCheck = xhr && request.getResponseHeader('DataServiceVersion');\n let count = null;\n let version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n let oDataCount = '__count';\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n if (data.d) {\n data = data.d;\n }\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n }\n if (version === 3 && data.value) {\n data = data.value;\n }\n if (data.d) {\n data = data.d;\n }\n if (version < 3 && data.results) {\n data = data.results;\n }\n let args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n }\n /**\n * Converts the request object to query string.\n * @param {Object} req\n * @param {Query} query\n * @param {DataManager} dm\n * @returns tableName\n */\n convertToQueryString(request, query, dm) {\n let res = [];\n let table = 'table';\n let tableName = request[table] || '';\n let format = '$format';\n delete request[table];\n if (dm.dataSource.requiresFormat) {\n request[format] = 'json';\n }\n let keys = Object.keys(request);\n for (let prop of keys) {\n res.push(prop + '=' + request[prop]);\n }\n res = res.join('&');\n if (dm.dataSource.url && dm.dataSource.url.indexOf('?') !== -1 && !tableName) {\n return res;\n }\n return res.length ? tableName + '?' + res : tableName || '';\n }\n localTimeReplacer(key, convertObj) {\n for (let prop of !isNullOrUndefined(convertObj) ? Object.keys(convertObj) : []) {\n if ((convertObj[prop] instanceof Date)) {\n convertObj[prop] = DataUtil.dateParse.toLocalTime(convertObj[prop]);\n }\n }\n return convertObj;\n }\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n */\n insert(dm, data, tableName) {\n return {\n url: (dm.dataSource.insertUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : ''),\n data: JSON.stringify(data, this.options.localTime ? this.localTimeReplacer : null)\n };\n }\n /**\n * Prepare and return request body which is used to remove record from the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n */\n remove(dm, keyField, value, tableName) {\n let url;\n if (typeof value === 'string' && !DataUtil.parse.isGuid(value)) {\n url = `('${value}')`;\n }\n else {\n url = `(${value})`;\n }\n return {\n type: 'DELETE',\n url: (dm.dataSource.removeUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url\n };\n }\n /**\n * Updates existing record and saves the changes to the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @returns this\n */\n update(dm, keyField, value, tableName, query, original) {\n if (this.options.updateType === 'PATCH' && !isNullOrUndefined(original)) {\n value = this.compareAndRemove(value, original, keyField);\n }\n let url;\n if (typeof value[keyField] === 'string' && !DataUtil.parse.isGuid(value[keyField])) {\n url = `('${value[keyField]}')`;\n }\n else {\n url = `(${value[keyField]})`;\n }\n return {\n type: this.options.updateType,\n url: (dm.dataSource.updateUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url,\n data: JSON.stringify(value, this.options.localTime ? this.localTimeReplacer : null),\n accept: this.options.accept\n };\n }\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @returns {Object}\n */\n batchRequest(dm, changes, e, query, original) {\n let initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n let url = this.rootUrl ? this.rootUrl + '/' + this.options.batch :\n dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n let args = {\n url: e.url,\n key: e.key,\n cid: 1,\n cSet: DataUtil.getGuid(this.options.changeSet)\n };\n let req = '--' + initialGuid + '\\n';\n req += 'Content-Type: multipart/mixed; boundary=' + args.cSet.replace('--', '') + '\\n';\n this.pvt.changeSet = 0;\n req += this.generateInsertRequest(changes.addedRecords, args, dm);\n req += this.generateUpdateRequest(changes.changedRecords, args, dm, original ? original.changedRecords : []);\n req += this.generateDeleteRequest(changes.deletedRecords, args, dm);\n req += args.cSet + '--\\n';\n req += '--' + initialGuid + '--';\n return {\n type: 'POST',\n url: url,\n dataType: 'json',\n contentType: 'multipart/mixed; charset=UTF-8;boundary=' + initialGuid,\n data: req\n };\n }\n /**\n * Generate the string content from the removed records.\n * The result will be send during batch update.\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @returns this\n */\n generateDeleteRequest(arr, e, dm) {\n if (!arr) {\n return '';\n }\n let req = '';\n let stat = {\n 'method': 'DELETE ',\n 'url': (data, i, key) => {\n let url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '(' + url + ')';\n }\n else if (url instanceof Date) {\n let dateTime = data[i][key];\n return '(' + dateTime.toJSON() + ')';\n }\n else {\n return `('${url}')`;\n }\n },\n 'data': (data, i) => ''\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req + '\\n';\n }\n /**\n * Generate the string content from the inserted records.\n * The result will be send during batch update.\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n */\n generateInsertRequest(arr, e, dm) {\n if (!arr) {\n return '';\n }\n let req = '';\n let stat = {\n 'method': 'POST ',\n 'url': (data, i, key) => '',\n 'data': (data, i) => JSON.stringify(data[i]) + '\\n\\n'\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n }\n /**\n * Generate the string content from the updated records.\n * The result will be send during batch update.\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n */\n generateUpdateRequest(arr, e, dm, org) {\n if (!arr) {\n return '';\n }\n let req = '';\n arr.forEach((change) => change = this.compareAndRemove(change, org.filter((o) => DataUtil.getObject(e.key, o) === DataUtil.getObject(e.key, change))[0], e.key));\n let stat = {\n 'method': this.options.updateType + ' ',\n 'url': (data, i, key) => {\n if (typeof data[i][key] === 'number' || DataUtil.parse.isGuid(data[i][key])) {\n return '(' + data[i][key] + ')';\n }\n else if (data[i][key] instanceof Date) {\n let date = data[i][key];\n return '(' + date.toJSON() + ')';\n }\n else {\n return `('${data[i][key]}')`;\n }\n },\n 'data': (data, i) => JSON.stringify(data[i]) + '\\n\\n'\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n }\n static getField(prop) {\n return prop.replace(/\\./g, '/');\n }\n generateBodyContent(arr, e, stat, dm) {\n let req = '';\n for (let i = 0; i < arr.length; i++) {\n req += '\\n' + e.cSet + '\\n';\n req += this.options.changeSetContent + '\\n\\n';\n req += stat.method;\n if (stat.method === 'POST ') {\n req += (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'PUT ' || stat.method === 'PATCH ') {\n req += (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'DELETE ') {\n req += (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n req += 'Accept: ' + this.options.accept + '\\n';\n req += 'Content-Id: ' + this.pvt.changeSet++ + '\\n';\n req += this.options.batchChangeSetContentType + '\\n';\n if (!isNullOrUndefined(arr[i]['@odata.etag'])) {\n req += 'If-Match: ' + arr[i]['@odata.etag'] + '\\n\\n';\n delete arr[i]['@odata.etag'];\n }\n else {\n req += '\\n';\n }\n req += stat.data(arr, i);\n }\n return req;\n }\n processBatchResponse(data, query, xhr, request, changes) {\n if (xhr && xhr.getResponseHeader('Content-Type') && xhr.getResponseHeader('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n if (request && this.options.batch && DataUtil.endsWith(request.url, this.options.batch) && request.type.toLowerCase() === 'post') {\n let guid = xhr.getResponseHeader('Content-Type');\n let cIdx;\n let jsonObj;\n let d = data + '';\n guid = guid.substring(guid.indexOf('=batchresponse') + 1);\n d = d.split(guid);\n if (d.length < 2) {\n return {};\n }\n d = d[1];\n let exVal = /(?:\\bContent-Type.+boundary=)(changesetresponse.+)/i.exec(d);\n if (exVal) {\n d.replace(exVal[0], '');\n }\n let changeGuid = exVal ? exVal[1] : '';\n d = d.split(changeGuid);\n for (let i = d.length; i > -1; i--) {\n if (!/\\bContent-ID:/i.test(d[i]) || !/\\bHTTP.+201/.test(d[i])) {\n continue;\n }\n cIdx = parseInt(/\\bContent-ID: (\\d+)/i.exec(d[i])[1], 10);\n if (changes.addedRecords[cIdx]) {\n jsonObj = DataUtil.parse.parseJson(/^\\{.+\\}/m.exec(d[i])[0]);\n extend({}, changes.addedRecords[cIdx], this.processResponse(jsonObj));\n }\n }\n return changes;\n }\n return null;\n }\n compareAndRemove(data, original, key) {\n if (isNullOrUndefined(original)) {\n return data;\n }\n Object.keys(data).forEach((prop) => {\n if (prop !== key && prop !== '@odata.etag') {\n if (DataUtil.isPlainObject(data[prop])) {\n this.compareAndRemove(data[prop], original[prop]);\n let final = Object.keys(data[prop]).filter((data) => data !== '@odata.etag');\n if (final.length === 0) {\n delete data[prop];\n }\n }\n else if (data[prop] === original[prop]) {\n delete data[prop];\n }\n else if (data[prop] && original[prop] && data[prop].valueOf() === original[prop].valueOf()) {\n delete data[prop];\n }\n }\n });\n return data;\n }\n}\n/**\n * The OData v4 is an improved version of OData protocols.\n * The DataManager uses the ODataV4Adaptor to consume OData v4 services.\n * @hidden\n */\nclass ODataV4Adaptor extends ODataAdaptor {\n constructor(props) {\n super(props);\n // options replaced the default adaptor options\n this.options = extend({}, this.options, {\n requestType: 'get',\n accept: 'application/json, text/javascript, */*; q=0.01',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$count',\n search: '$search',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PATCH',\n localTime: false,\n apply: '$apply'\n });\n extend(this.options, props || {});\n }\n /**\n * @hidden\n */\n getModuleName() {\n return 'ODataV4Adaptor';\n }\n /**\n * Returns the query string which requests total count from the data source.\n * @param {boolean} e\n * @returns string\n */\n onCount(e) {\n return e === true ? 'true' : '';\n }\n /**\n * Generate request string based on the filter criteria from query.\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n */\n onPredicate(predicate, query, requiresCast) {\n let returnValue = '';\n let val = predicate.value;\n let isDate = val instanceof Date;\n if (query instanceof Query) {\n let queries = this.getQueryRequest(query);\n for (let i = 0; i < queries.filters.length; i++) {\n if (queries.filters[i].e.key === predicate.value) {\n requiresCast = true;\n }\n }\n }\n returnValue = super.onPredicate.call(this, predicate, query, requiresCast);\n if (isDate) {\n returnValue = returnValue.replace(/datetime'(.*)'$/, '$1');\n }\n if (DataUtil.parse.isGuid(val)) {\n returnValue = returnValue.replace('guid', '').replace(/'/g, '');\n }\n return returnValue;\n }\n /**\n * Generate query string based on the multiple search criteria from query.\n * @param {{fields:string[]} e\n * @param {string} operator\n * @param {string} key\n * @param {boolean}} ignoreCase\n */\n onEachSearch(e) {\n let search = this.pvt.searches || [];\n search.push(e.key);\n this.pvt.searches = search;\n }\n /**\n * Generate query string based on the search criteria from query.\n * @param {Object} e\n */\n onSearch(e) {\n return this.pvt.searches.join(' OR ');\n }\n /**\n * Returns the expand query string.\n * @param {string} e\n */\n onExpand(e) {\n let selected = {};\n let expanded = {};\n let expands = e.expands.slice();\n let exArr = [];\n let selects = e.selects.filter((item) => item.indexOf('.') > -1);\n selects.forEach((select) => {\n let splits = select.split('.');\n if (!(splits[0] in selected)) {\n selected[splits[0]] = [];\n }\n selected[splits[0]].push(splits[1]);\n });\n //Auto expand from select query\n Object.keys(selected).forEach((expand) => {\n if ((expands.indexOf(expand) === -1)) {\n expands.push(expand);\n }\n });\n expands.forEach((expand) => {\n expanded[expand] = expand in selected ? `${expand}(${this.options.select}=${selected[expand].join(',')})` : expand;\n });\n Object.keys(expanded).forEach((ex) => exArr.push(expanded[ex]));\n return exArr.join(',');\n }\n /**\n * Returns the groupby query string.\n * @param {string} e\n */\n onDistinct(distinctFields) {\n let fields = distinctFields.map((field) => ODataAdaptor.getField(field)).join(',');\n return `groupby((${fields}))`;\n }\n /**\n * Returns the select query string.\n * @param {string[]} e\n */\n onSelect(e) {\n return super.onSelect(e.filter((item) => item.indexOf('.') === -1));\n }\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings\n * @returns void\n */\n beforeSend(dm, request, settings) {\n if (settings.type === 'POST' || settings.type === 'PUT' || settings.type === 'PATCH') {\n request.setRequestHeader('Prefer', 'return=representation');\n }\n request.setRequestHeader('Accept', this.options.accept);\n }\n /**\n * Returns the data from the query processing.\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @returns aggregateResult\n */\n processResponse(data, ds, query, xhr, request, changes) {\n let metaName = '@odata.context';\n if ((request && request.type === 'GET') && !this.rootUrl && data[metaName]) {\n let dataUrl = data[metaName].split('/$metadata#');\n this.rootUrl = dataUrl[0];\n this.resourceTableName = dataUrl[1];\n }\n let pvtData = 'pvtData';\n let pvt = request && request[pvtData];\n let emptyAndBatch = super.processBatchResponse(data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n let count = null;\n let dataCount = '@odata.count';\n if (query && query.isCountRequired) {\n if (dataCount in data) {\n count = data[dataCount];\n }\n }\n data = !isNullOrUndefined(data.value) ? data.value : data;\n let args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: count, aggregates: args.aggregates };\n }\n}\n/**\n * The Web API is a programmatic interface to define the request and response messages system that is mostly exposed in JSON or XML.\n * The DataManager uses the WebApiAdaptor to consume Web API.\n * Since this adaptor is targeted to interact with Web API created using OData endpoint, it is extended from ODataAdaptor\n * @hidden\n */\nclass WebApiAdaptor extends ODataAdaptor {\n getModuleName() {\n return 'WebApiAdaptor';\n }\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n */\n insert(dm, data, tableName) {\n return {\n type: 'POST',\n url: dm.dataSource.url,\n data: JSON.stringify(data)\n };\n }\n /**\n * Prepare and return request body which is used to remove record from the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n */\n remove(dm, keyField, value, tableName) {\n return {\n type: 'DELETE',\n url: dm.dataSource.url + '/' + value,\n data: JSON.stringify(value)\n };\n }\n /**\n * Prepare and return request body which is used to update record.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n */\n update(dm, keyField, value, tableName) {\n return {\n type: 'PUT',\n url: dm.dataSource.url,\n data: JSON.stringify(value)\n };\n }\n batchRequest(dm, changes, e) {\n let initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n let url = dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n let req = [];\n //insertion\n for (let i = 0, x = changes.addedRecords.length; i < x; i++) {\n changes.addedRecords.forEach((j, d) => {\n let stat = {\n 'method': 'POST ',\n 'url': (data, i, key) => '',\n 'data': (data, i) => JSON.stringify(data[i]) + '\\n\\n'\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('POST ' + '/api/' + (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.addedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n }\n //updation \n for (let i = 0, x = changes.changedRecords.length; i < x; i++) {\n changes.changedRecords.forEach((j, d) => {\n let stat = {\n 'method': this.options.updateType + ' ',\n 'url': (data, i, key) => '',\n 'data': (data, i) => JSON.stringify(data[i]) + '\\n\\n'\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('PUT ' + '/api/' + (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.changedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n }\n //deletion\n for (let i = 0, x = changes.deletedRecords.length; i < x; i++) {\n changes.deletedRecords.forEach((j, d) => {\n let state = {\n 'mtd': 'DELETE ',\n 'url': (data, i, key) => {\n let url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '/' + url;\n }\n else if (url instanceof Date) {\n let datTime = data[i][key];\n return '/' + datTime.toJSON();\n }\n else {\n return `/'${url}'`;\n }\n },\n 'data': (data, i) => ''\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('DELETE ' + '/api/' + (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url)\n + state.url(changes.deletedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n }\n req.push('--' + initialGuid + '--', '');\n return {\n type: 'POST',\n url: url,\n contentType: 'multipart/mixed; boundary=' + initialGuid,\n data: req.join('\\r\\n')\n };\n }\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings\n * @returns void\n */\n beforeSend(dm, request, settings) {\n request.setRequestHeader('Accept', 'application/json, text/javascript, */*; q=0.01');\n }\n /**\n * Returns the data from the query processing.\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @returns aggregateResult\n */\n processResponse(data, ds, query, xhr, request, changes) {\n let pvtData = 'pvtData';\n let pvt = request && request[pvtData];\n let count = null;\n let args = {};\n if (request && request.type.toLowerCase() !== 'post') {\n let versionCheck = xhr && request.getResponseHeader('DataServiceVersion');\n let version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n if (!DataUtil.isNull(data.Count)) {\n count = data.Count;\n }\n }\n if (version < 3 && data.Items) {\n data = data.Items;\n }\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n }\n args.result = args.result || data;\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n }\n}\n/**\n * WebMethodAdaptor can be used by DataManager to interact with web method.\n * @hidden\n */\nclass WebMethodAdaptor extends UrlAdaptor {\n /**\n * Prepare the request body based on the query.\n * The query information can be accessed at the WebMethod using variable named `value`.\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @returns application\n */\n processQuery(dm, query, hierarchyFilters) {\n let obj = new UrlAdaptor().processQuery(dm, query, hierarchyFilters);\n let getData = 'data';\n let data = DataUtil.parse.parseJson(obj[getData]);\n let result = {};\n let value = 'value';\n if (data.param) {\n for (let i = 0; i < data.param.length; i++) {\n let param = data.param[i];\n let key = Object.keys(param)[0];\n result[key] = param[key];\n }\n }\n result[value] = data;\n let pvtData = 'pvtData';\n let url = 'url';\n return {\n data: JSON.stringify(result),\n url: obj[url],\n pvtData: obj[pvtData],\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n }\n}\n/**\n * RemoteSaveAdaptor, extended from JsonAdaptor and it is used for binding local data and performs all DataManager queries in client-side.\n * It interacts with server-side only for CRUD operations.\n * @hidden\n */\nclass RemoteSaveAdaptor extends JsonAdaptor {\n /**\n * @hidden\n */\n constructor() {\n super();\n setValue('beforeSend', UrlAdaptor.prototype.beforeSend, this);\n }\n insert(dm, data, tableName, query, position) {\n this.pvt.position = position;\n this.updateType = 'add';\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n }\n remove(dm, keyField, val, tableName, query) {\n super.remove(dm, keyField, val);\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: val,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n }\n update(dm, keyField, val, tableName, query) {\n this.updateType = 'update';\n this.updateKey = keyField;\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: val,\n action: 'update',\n keyColumn: keyField,\n key: val[keyField],\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n }\n processResponse(data, ds, query, xhr, request, changes, e) {\n let i;\n if (this.updateType === 'add') {\n super.insert(ds, data, null, null, this.pvt.position);\n }\n if (this.updateType === 'update') {\n super.update(ds, this.updateKey, data);\n }\n this.updateType = undefined;\n if (data.added) {\n for (i = 0; i < data.added.length; i++) {\n super.insert(ds, data.added[i]);\n }\n }\n if (data.changed) {\n for (i = 0; i < data.changed.length; i++) {\n super.update(ds, e.key, data.changed[i]);\n }\n }\n if (data.deleted) {\n for (i = 0; i < data.deleted.length; i++) {\n super.remove(ds, e.key, data.deleted[i]);\n }\n }\n return data;\n }\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * Also perform the changes in the locally cached data to sync with the remote data.\n * The result is used by the batch request.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n batchRequest(dm, changes, e, query, original) {\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e.url,\n key: e.key\n }, DataUtil.getAddParams(this, dm, query)))\n };\n }\n addParams(options) {\n let urlParams = new UrlAdaptor();\n urlParams.addParams(options);\n }\n}\n/**\n * Cache Adaptor is used to cache the data of the visited pages. It prevents new requests for the previously visited pages.\n * You can configure cache page size and duration of caching by using cachingPageSize and timeTillExpiration properties of the DataManager\n * @hidden\n */\nclass CacheAdaptor extends UrlAdaptor {\n /**\n * Constructor for CacheAdaptor class.\n * @param {CacheAdaptor} adaptor?\n * @param {number} timeStamp?\n * @param {number} pageSize?\n * @hidden\n */\n constructor(adaptor, timeStamp, pageSize) {\n super();\n this.isCrudAction = false;\n this.isInsertAction = false;\n if (!isNullOrUndefined(adaptor)) {\n this.cacheAdaptor = adaptor;\n }\n this.pageSize = pageSize;\n this.guidId = DataUtil.getGuid('cacheAdaptor');\n let obj = { keys: [], results: [] };\n window.localStorage.setItem(this.guidId, JSON.stringify(obj));\n let guid = this.guidId;\n if (!isNullOrUndefined(timeStamp)) {\n setInterval(() => {\n let data;\n data = DataUtil.parse.parseJson(window.localStorage.getItem(guid));\n let forDel = [];\n for (let i = 0; i < data.results.length; i++) {\n let currentTime = +new Date();\n let requestTime = +new Date(data.results[i].timeStamp);\n data.results[i].timeStamp = currentTime - requestTime;\n if (currentTime - requestTime > timeStamp) {\n forDel.push(i);\n }\n }\n for (let i = 0; i < forDel.length; i++) {\n data.results.splice(forDel[i], 1);\n data.keys.splice(forDel[i], 1);\n }\n window.localStorage.removeItem(guid);\n window.localStorage.setItem(guid, JSON.stringify(data));\n }, timeStamp);\n }\n }\n /**\n * It will generate the key based on the URL when we send a request to server.\n * @param {string} url\n * @param {Query} query?\n * @hidden\n */\n generateKey(url, query) {\n let queries = this.getQueryRequest(query);\n let singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n let key = url;\n let page = 'onPage';\n if (page in singles) {\n key += singles[page].pageIndex;\n }\n queries.sorts.forEach((obj) => {\n key += obj.e.direction + obj.e.fieldName;\n });\n queries.groups.forEach((obj) => {\n key += obj.e.fieldName;\n });\n queries.searches.forEach((obj) => {\n key += obj.e.searchKey;\n });\n for (let filter = 0; filter < queries.filters.length; filter++) {\n let currentFilter = queries.filters[filter];\n if (currentFilter.e.isComplex) {\n let newQuery = query.clone();\n newQuery.queries = [];\n for (let i = 0; i < currentFilter.e.predicates.length; i++) {\n newQuery.queries.push({ fn: 'onWhere', e: currentFilter.e.predicates[i], filter: query.queries.filter });\n }\n key += currentFilter.e.condition + this.generateKey(url, newQuery);\n }\n else {\n key += currentFilter.e.field + currentFilter.e.operator + currentFilter.e.value;\n }\n }\n return key;\n }\n /**\n * Process the query to generate request body.\n * If the data is already cached, it will return the cached data.\n * @param {DataManager} dm\n * @param {Query} query?\n * @param {Object[]} hierarchyFilters?\n */\n processQuery(dm, query, hierarchyFilters) {\n let key = this.generateKey(dm.dataSource.url, query);\n let cachedItems;\n cachedItems = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n let data = cachedItems ? cachedItems.results[cachedItems.keys.indexOf(key)] : null;\n if (data != null && !this.isCrudAction && !this.isInsertAction) {\n return data;\n }\n this.isCrudAction = null;\n this.isInsertAction = null;\n return this.cacheAdaptor.processQuery.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n }\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n */\n processResponse(data, ds, query, xhr, request, changes) {\n if (this.isInsertAction || (request && this.cacheAdaptor.options.batch &&\n DataUtil.endsWith(request.url, this.cacheAdaptor.options.batch) && request.type.toLowerCase() === 'post')) {\n return this.cacheAdaptor.processResponse(data, ds, query, xhr, request, changes);\n }\n data = this.cacheAdaptor.processResponse.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n let key = query ? this.generateKey(ds.dataSource.url, query) : ds.dataSource.url;\n let obj = {};\n obj = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n let index = obj.keys.indexOf(key);\n if (index !== -1) {\n obj.results.splice(index, 1);\n obj.keys.splice(index, 1);\n }\n obj.results[obj.keys.push(key) - 1] = { keys: key, result: data.result, timeStamp: new Date(), count: data.count };\n while (obj.results.length > this.pageSize) {\n obj.results.splice(0, 1);\n obj.keys.splice(0, 1);\n }\n window.localStorage.setItem(this.guidId, JSON.stringify(obj));\n return data;\n }\n /**\n * Method will trigger before send the request to server side. Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings?\n */\n beforeSend(dm, request, settings) {\n if (!isNullOrUndefined(this.cacheAdaptor.options.batch) && DataUtil.endsWith(settings.url, this.cacheAdaptor.options.batch)\n && settings.type.toLowerCase() === 'post') {\n request.setRequestHeader('Accept', this.cacheAdaptor.options.multipartAccept);\n }\n if (!dm.dataSource.crossDomain) {\n request.setRequestHeader('Accept', this.cacheAdaptor.options.accept);\n }\n }\n /**\n * Updates existing record and saves the changes to the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n */\n update(dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.update(dm, keyField, value, tableName);\n }\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n */\n insert(dm, data, tableName) {\n this.isInsertAction = true;\n return this.cacheAdaptor.insert(dm, data, tableName);\n }\n /**\n * Prepare and return request body which is used to remove record from the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n */\n remove(dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.remove(dm, keyField, value, tableName);\n }\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n batchRequest(dm, changes, e) {\n return this.cacheAdaptor.batchRequest(dm, changes, e);\n }\n}\n\n/**\n * DataManager is used to manage and manipulate relational data.\n */\nclass DataManager {\n /**\n * Constructor for DataManager class\n * @param {DataOptions|JSON[]} dataSource?\n * @param {Query} query?\n * @param {AdaptorOptions|string} adaptor?\n * @hidden\n */\n constructor(dataSource, query, adaptor) {\n /** @hidden */\n this.dateParse = true;\n /** @hidden */\n this.timeZoneHandling = true;\n this.requests = [];\n if (!dataSource && !this.dataSource) {\n dataSource = [];\n }\n adaptor = adaptor || dataSource.adaptor;\n if (dataSource && dataSource.timeZoneHandling === false) {\n this.timeZoneHandling = dataSource.timeZoneHandling;\n }\n let data;\n if (dataSource instanceof Array) {\n data = {\n json: dataSource,\n offline: true\n };\n }\n else if (typeof dataSource === 'object') {\n if (!dataSource.json) {\n dataSource.json = [];\n }\n data = {\n url: dataSource.url,\n insertUrl: dataSource.insertUrl,\n removeUrl: dataSource.removeUrl,\n updateUrl: dataSource.updateUrl,\n crudUrl: dataSource.crudUrl,\n batchUrl: dataSource.batchUrl,\n json: dataSource.json,\n headers: dataSource.headers,\n accept: dataSource.accept,\n data: dataSource.data,\n timeTillExpiration: dataSource.timeTillExpiration,\n cachingPageSize: dataSource.cachingPageSize,\n enableCaching: dataSource.enableCaching,\n requestType: dataSource.requestType,\n key: dataSource.key,\n crossDomain: dataSource.crossDomain,\n jsonp: dataSource.jsonp,\n dataType: dataSource.dataType,\n offline: dataSource.offline !== undefined ? dataSource.offline\n : dataSource.adaptor instanceof RemoteSaveAdaptor ? false : dataSource.url ? false : true,\n requiresFormat: dataSource.requiresFormat\n };\n }\n else {\n DataUtil.throwError('DataManager: Invalid arguments');\n }\n if (data.requiresFormat === undefined && !DataUtil.isCors()) {\n data.requiresFormat = isNullOrUndefined(data.crossDomain) ? true : data.crossDomain;\n }\n if (data.dataType === undefined) {\n data.dataType = 'json';\n }\n this.dataSource = data;\n this.defaultQuery = query;\n if (data.url && data.offline && !data.json.length) {\n this.isDataAvailable = false;\n this.adaptor = adaptor || new ODataAdaptor();\n this.dataSource.offline = false;\n this.ready = this.executeQuery(query || new Query());\n this.ready.then((e) => {\n this.dataSource.offline = true;\n this.isDataAvailable = true;\n data.json = e.result;\n this.adaptor = new JsonAdaptor();\n });\n }\n else {\n this.adaptor = data.offline ? new JsonAdaptor() : new ODataAdaptor();\n }\n if (!data.jsonp && this.adaptor instanceof ODataAdaptor) {\n data.jsonp = 'callback';\n }\n this.adaptor = adaptor || this.adaptor;\n if (data.enableCaching) {\n this.adaptor = new CacheAdaptor(this.adaptor, data.timeTillExpiration, data.cachingPageSize);\n }\n return this;\n }\n /**\n * Overrides DataManager's default query with given query.\n * @param {Query} query - Defines the new default query.\n */\n setDefaultQuery(query) {\n this.defaultQuery = query;\n return this;\n }\n /**\n * Executes the given query with local data source.\n * @param {Query} query - Defines the query to retrieve data.\n */\n executeLocal(query) {\n if (!this.defaultQuery && !(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeLocal() : A query is required to execute');\n }\n if (!this.dataSource.json) {\n DataUtil.throwError('DataManager - executeLocal() : Json data is required to execute');\n }\n query = query || this.defaultQuery;\n let result = this.adaptor.processQuery(this, query);\n if (query.subQuery) {\n let from = query.subQuery.fromTable;\n let lookup = query.subQuery.lookups;\n let res = query.isCountRequired ? result.result :\n result;\n if (lookup && lookup instanceof Array) {\n DataUtil.buildHierarchy(query.subQuery.fKey, from, res, lookup, query.subQuery.key);\n }\n for (let j = 0; j < res.length; j++) {\n if (res[j][from] instanceof Array) {\n res[j] = extend({}, {}, res[j]);\n res[j][from] = this.adaptor.processResponse(query.subQuery.using(new DataManager(res[j][from].slice(0))).executeLocal(), this, query);\n }\n }\n }\n return this.adaptor.processResponse(result, this, query);\n }\n /**\n * Executes the given query with either local or remote data source.\n * It will be executed as asynchronously and returns Promise object which will be resolved or rejected after action completed.\n * @param {Query|Function} query - Defines the query to retrieve data.\n * @param {Function} done - Defines the callback function and triggers when the Promise is resolved.\n * @param {Function} fail - Defines the callback function and triggers when the Promise is rejected.\n * @param {Function} always - Defines the callback function and triggers when the Promise is resolved or rejected.\n */\n executeQuery(query, done, fail, always) {\n let makeRequest = 'makeRequest';\n if (typeof query === 'function') {\n always = fail;\n fail = done;\n done = query;\n query = null;\n }\n if (!query) {\n query = this.defaultQuery;\n }\n if (!(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeQuery() : A query is required to execute');\n }\n let deffered = new Deferred();\n let args = { query: query };\n if (!this.dataSource.offline && (this.dataSource.url !== undefined && this.dataSource.url !== '')\n || (!isNullOrUndefined(this.adaptor[makeRequest]))) {\n let result = this.adaptor.processQuery(this, query);\n if (!isNullOrUndefined(this.adaptor[makeRequest])) {\n this.adaptor[makeRequest](result, deffered, args, query);\n }\n else if (!isNullOrUndefined(result.url)) {\n this.makeRequest(result, deffered, args, query);\n }\n else {\n args = DataManager.getDeferedArgs(query, result, args);\n deffered.resolve(args);\n }\n }\n else {\n DataManager.nextTick(() => {\n let res = this.executeLocal(query);\n args = DataManager.getDeferedArgs(query, res, args);\n deffered.resolve(args);\n });\n }\n if (done || fail) {\n deffered.promise.then(done, fail);\n }\n if (always) {\n deffered.promise.then(always, always);\n }\n return deffered.promise;\n }\n static getDeferedArgs(query, result, args) {\n if (query.isCountRequired) {\n args.result = result.result;\n args.count = result.count;\n args.aggregates = result.aggregates;\n }\n else {\n args.result = result;\n }\n return args;\n }\n static nextTick(fn) {\n (window.setImmediate || window.setTimeout)(fn, 0);\n }\n extendRequest(url, fnSuccess, fnFail) {\n return extend({}, {\n type: 'GET',\n dataType: this.dataSource.dataType,\n crossDomain: this.dataSource.crossDomain,\n jsonp: this.dataSource.jsonp,\n cache: true,\n processData: false,\n onSuccess: fnSuccess,\n onFailure: fnFail\n }, url);\n }\n makeRequest(url, deffered, args, query) {\n let isSelector = !!query.subQuerySelector;\n let fnFail = (e) => {\n args.error = e;\n deffered.reject(args);\n };\n let process = (data, count, xhr, request, actual, aggregates, virtualSelectRecords) => {\n args.xhr = xhr;\n args.count = count ? parseInt(count.toString(), 10) : 0;\n args.result = data;\n args.request = request;\n args.aggregates = aggregates;\n args.actual = actual;\n args.virtualSelectRecords = virtualSelectRecords;\n deffered.resolve(args);\n };\n let fnQueryChild = (data, selector) => {\n let subDeffer = new Deferred();\n let childArgs = { parent: args };\n query.subQuery.isChild = true;\n let subUrl = this.adaptor.processQuery(this, query.subQuery, data ? this.adaptor.processResponse(data) : selector);\n let childReq = this.makeRequest(subUrl, subDeffer, childArgs, query.subQuery);\n if (!isSelector) {\n subDeffer.then((subData) => {\n if (data) {\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, data, subData, query.subQuery.key);\n process(data, subData.count, subData.xhr);\n }\n }, fnFail);\n }\n return childReq;\n };\n let fnSuccess = (data, request) => {\n if (request.httpRequest.getResponseHeader('Content-Type').indexOf('xml') === -1 && this.dateParse) {\n data = DataUtil.parse.parseJson(data);\n }\n let result = this.adaptor.processResponse(data, this, query, request.httpRequest, request);\n let count = 0;\n let aggregates = null;\n let virtualSelectRecords = 'virtualSelectRecords';\n let virtualRecords = data[virtualSelectRecords];\n if (query.isCountRequired) {\n count = result.count;\n aggregates = result.aggregates;\n result = result.result;\n }\n if (!query.subQuery) {\n process(result, count, request.httpRequest, request.type, data, aggregates, virtualRecords);\n return;\n }\n if (!isSelector) {\n fnQueryChild(result, request);\n }\n };\n let req = this.extendRequest(url, fnSuccess, fnFail);\n let ajax = new Ajax(req);\n ajax.beforeSend = () => {\n this.beforeSend(ajax.httpRequest, ajax);\n };\n req = ajax.send();\n req.catch((e) => true); // to handle failure remote requests. \n this.requests.push(ajax);\n if (isSelector) {\n let promise;\n let res = query.subQuerySelector.call(this, { query: query.subQuery, parent: query });\n if (res && res.length) {\n promise = Promise.all([req, fnQueryChild(null, res)]);\n promise.then((...args) => {\n let result = args[0];\n let pResult = this.adaptor.processResponse(result[0], this, query, this.requests[0].httpRequest, this.requests[0]);\n let count = 0;\n if (query.isCountRequired) {\n count = pResult.count;\n pResult = pResult.result;\n }\n let cResult = this.adaptor.processResponse(result[1], this, query.subQuery, this.requests[1].httpRequest, this.requests[1]);\n count = 0;\n if (query.subQuery.isCountRequired) {\n count = cResult.count;\n cResult = cResult.result;\n }\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, pResult, cResult, query.subQuery.key);\n isSelector = false;\n process(pResult, count, this.requests[0].httpRequest);\n });\n }\n else {\n isSelector = false;\n }\n }\n return req;\n }\n beforeSend(request, settings) {\n this.adaptor.beforeSend(this, request, settings);\n let headers = this.dataSource.headers;\n let props;\n for (let i = 0; headers && i < headers.length; i++) {\n props = [];\n let keys = Object.keys(headers[i]);\n for (let prop of keys) {\n props.push(prop);\n request.setRequestHeader(prop, headers[i][prop]);\n }\n }\n }\n /**\n * Save bulk changes to the given table name.\n * User can add a new record, edit an existing record, and delete a record at the same time.\n * If the datasource from remote, then updated in a single post.\n * @param {Object} changes - Defines the CrudOptions.\n * @param {string} key - Defines the column field.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n */\n saveChanges(changes, key, tableName, query, original) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n let args = {\n url: tableName,\n key: key || this.dataSource.key\n };\n let req = this.adaptor.batchRequest(this, changes, args, query || new Query(), original);\n let doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](req);\n }\n else {\n let deff = new Deferred();\n let ajax = new Ajax(req);\n ajax.beforeSend = () => {\n this.beforeSend(ajax.httpRequest, ajax);\n };\n ajax.onSuccess = (data, request) => {\n deff.resolve(this.adaptor.processResponse(data, this, null, request.httpRequest, request, changes, args));\n };\n ajax.onFailure = (e) => {\n deff.reject([{ error: e }]);\n };\n ajax.send().catch((e) => true); // to handle the failure requests. \n return deff.promise;\n }\n }\n /**\n * Inserts new record in the given table.\n * @param {Object} data - Defines the data to insert.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n */\n insert(data, tableName, query, position) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n let req = this.adaptor.insert(this, data, tableName, query, position);\n let doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](req);\n }\n else {\n return this.doAjaxRequest(req);\n }\n }\n /**\n * Removes data from the table with the given key.\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n */\n remove(keyField, value, tableName, query) {\n if (typeof value === 'object') {\n value = DataUtil.getObject(keyField, value);\n }\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n let res = this.adaptor.remove(this, keyField, value, tableName, query);\n let doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](res);\n }\n else {\n return this.doAjaxRequest(res);\n }\n }\n /**\n * Updates existing record in the given table.\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n */\n update(keyField, value, tableName, query, original) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n let res = this.adaptor.update(this, keyField, value, tableName, query, original);\n let doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](res);\n }\n else {\n return this.doAjaxRequest(res);\n }\n }\n doAjaxRequest(res) {\n let defer = new Deferred();\n res = extend({}, {\n type: 'POST',\n contentType: 'application/json; charset=utf-8',\n processData: false\n }, res);\n let ajax = new Ajax(res);\n ajax.beforeSend = () => {\n this.beforeSend(ajax.httpRequest, ajax);\n };\n ajax.onSuccess = (record, request) => {\n try {\n DataUtil.parse.parseJson(record);\n }\n catch (e) {\n record = [];\n }\n record = this.adaptor.processResponse(DataUtil.parse.parseJson(record), this, null, request.httpRequest, request);\n defer.resolve(record);\n };\n ajax.onFailure = (e) => {\n defer.reject([{ error: e }]);\n };\n ajax.send().catch((e) => true); // to handle the failure requests.\n return defer.promise;\n }\n}\n/**\n * Deferred is used to handle asynchronous operation.\n */\nclass Deferred {\n constructor() {\n /**\n * Promise is an object that represents a value that may not be available yet, but will be resolved at some point in the future.\n */\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n /**\n * Defines the callback function triggers when the Deferred object is resolved.\n */\n this.then = this.promise.then.bind(this.promise);\n /**\n * Defines the callback function triggers when the Deferred object is rejected.\n */\n this.catch = this.promise.catch.bind(this.promise);\n }\n}\n\n/**\n * Data modules\n */\n\nexport { DataManager, Deferred, Query, Predicate, Adaptor, JsonAdaptor, UrlAdaptor, ODataAdaptor, ODataV4Adaptor, WebApiAdaptor, WebMethodAdaptor, RemoteSaveAdaptor, CacheAdaptor, DataUtil };\n//# sourceMappingURL=ej2-data.es2015.js.map\n","import { Animation, Browser, ChildProperty, Complex, Component, Event, EventHandler, KeyboardEvents, L10n, NotifyPropertyChanges, Property, SanitizeHtmlHelper, addClass, append, attributes, classList, closest, compile, createElement, detach, extend, formatUnit, getComponent, getUniqueID, getValue, isBlazor, isNullOrUndefined, isUndefined, matches, prepend, remove, removeClass, resetBlazorTemplate, rippleEffect, select, selectAll, setStyleAttribute, setValue, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil, Predicate, Query } from '@syncfusion/ej2-data';\nimport { ListBase, Sortable, cssClass, moveTo } from '@syncfusion/ej2-lists';\nimport { Popup, createSpinner, getZindexPartial, hideSpinner, isCollide, showSpinner } from '@syncfusion/ej2-popups';\nimport { Input, TextBox } from '@syncfusion/ej2-inputs';\nimport { Button, createCheckBox } from '@syncfusion/ej2-buttons';\nimport { TreeView } from '@syncfusion/ej2-navigations';\n\n/**\n * IncrementalSearch module file\n */\nlet queryString = '';\nlet prevString = '';\nlet matches$1 = [];\nlet activeClass = 'e-active';\nlet prevElementId = '';\n/**\n * Search and focus the list item based on key code matches with list text content\n * @param { number } keyCode - Specifies the key code which pressed on keyboard events.\n * @param { HTMLElement[]] } items - Specifies an array of HTMLElement, from which matches find has done.\n * @param { number } selectedIndex - Specifies the selected item in list item, so that search will happen\n * after selected item otherwise it will do from initial.\n * @param { boolean } ignoreCase - Specifies the case consideration when search has done.\n */\nfunction incrementalSearch(keyCode, items, selectedIndex, ignoreCase, elementId, isBlazor$$1) {\n queryString += String.fromCharCode(keyCode);\n setTimeout(() => { queryString = ''; }, 1000);\n let index;\n queryString = ignoreCase ? queryString.toLowerCase() : queryString;\n if (prevElementId === elementId && prevString === queryString) {\n for (let i = 0; i < matches$1.length; i++) {\n if (matches$1[i].classList.contains(activeClass)) {\n index = i;\n break;\n }\n }\n index = index + 1;\n return matches$1[index];\n }\n else {\n let listItems = items;\n let strLength = queryString.length;\n let text;\n let item;\n selectedIndex = selectedIndex ? selectedIndex + 1 : 0;\n let i = selectedIndex;\n matches$1 = [];\n do {\n if (i === listItems.length) {\n i = -1;\n }\n i === -1 ? index = 0 : index = i;\n item = listItems[index];\n if (isBlazor$$1) {\n text = ignoreCase ? item.textContent.trim().toLowerCase() : item.textContent.trim();\n }\n else {\n text = ignoreCase ? item.innerText.toLowerCase() : item.innerText;\n }\n if (text.substr(0, strLength) === queryString) {\n matches$1.push(listItems[index]);\n }\n i++;\n } while (i !== selectedIndex);\n prevString = queryString;\n prevElementId = elementId;\n return matches$1[0];\n }\n}\nfunction Search(inputVal, items, searchType, ignoreCase) {\n let listItems = items;\n ignoreCase = ignoreCase !== undefined && ignoreCase !== null ? ignoreCase : true;\n let itemData = { item: null, index: null };\n if (inputVal && inputVal.length) {\n let strLength = inputVal.length;\n let queryStr = ignoreCase ? inputVal.toLocaleLowerCase() : inputVal;\n for (let i = 0, itemsData = listItems; i < itemsData.length; i++) {\n let item = itemsData[i];\n let text = (ignoreCase ? item.textContent.toLocaleLowerCase() : item.textContent).replace(/^\\s+|\\s+$/g, '');\n if ((searchType === 'Equal' && text === queryStr) || (searchType === 'StartsWith' && text.substr(0, strLength) === queryStr)) {\n itemData.item = item;\n itemData.index = i;\n return { item: item, index: i };\n }\n }\n return itemData;\n }\n return itemData;\n}\n\n/**\n * Function helps to find which highlightSearch is to call based on your data.\n * @param {HTMLElement} element - Specifies an li element.\n * @param {string} query - Specifies the string to be highlighted.\n * @param {boolean} ignoreCase - Specifies the ignoreCase option.\n * @param {HightLightType} type - Specifies the type of highlight.\n */\nfunction highlightSearch(element, query, ignoreCase, type, isBlazor$$1) {\n if (query === '') {\n return;\n }\n else {\n let ignoreRegex = ignoreCase ? 'gim' : 'gm';\n query = /^[a-zA-Z0-9- ]*$/.test(query) ? query : query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n let replaceQuery = type === 'StartsWith' ? '^(' + query + ')' : type === 'EndsWith' ? '(' + query + ')$' : '(' + query + ')';\n findTextNode(element, new RegExp(replaceQuery, ignoreRegex), isBlazor$$1);\n }\n}\nfunction findTextNode(element, pattern, isBlazor$$1) {\n for (let index = 0; element.childNodes && (index < element.childNodes.length); index++) {\n if (element.childNodes[index].nodeType === 3 && element.childNodes[index].textContent.trim() !== '') {\n element = (isBlazor$$1 && element.classList.contains('e-highlight')) ? element.parentElement : element;\n if (isBlazor$$1 && element.getAttribute('data-value')) {\n element.innerHTML = element.getAttribute('data-value').replace(pattern, '$1');\n }\n else {\n element.innerHTML = element.innerHTML.replace(pattern, '$1');\n }\n break;\n }\n else {\n findTextNode(element.childNodes[index], pattern, isBlazor$$1);\n }\n }\n}\n/**\n * Function helps to remove highlighted element based on your data.\n * @param {HTMLElement} content - Specifies an content element.\n */\nfunction revertHighlightSearch(content) {\n let contentElement = content.querySelectorAll('.e-highlight');\n for (let i = contentElement.length - 1; i >= 0; i--) {\n let parent = contentElement[i].parentNode;\n let text = document.createTextNode(contentElement[i].textContent);\n parent.replaceChild(text, contentElement[i]);\n }\n}\n\n/**\n * Common source\n */\n\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass FieldSettings extends ChildProperty {\n}\n__decorate([\n Property()\n], FieldSettings.prototype, \"text\", void 0);\n__decorate([\n Property()\n], FieldSettings.prototype, \"value\", void 0);\n__decorate([\n Property()\n], FieldSettings.prototype, \"iconCss\", void 0);\n__decorate([\n Property()\n], FieldSettings.prototype, \"groupBy\", void 0);\n__decorate([\n Property()\n], FieldSettings.prototype, \"htmlAttributes\", void 0);\nconst dropDownBaseClasses = {\n root: 'e-dropdownbase',\n rtl: 'e-rtl',\n content: 'e-content',\n selected: 'e-active',\n hover: 'e-hover',\n noData: 'e-nodata',\n fixedHead: 'e-fixed-head',\n focus: 'e-item-focus',\n li: 'e-list-item',\n group: 'e-list-group-item',\n disabled: 'e-disabled',\n grouping: 'e-dd-group'\n};\nconst ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\nconst VALUETEMPLATE_PROPERTY = 'ValueTemplate';\nconst GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nconst HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nconst FOOTERTEMPLATE_PROPERTY = 'FooterTemplate';\nconst NORECORDSTEMPLATE_PROPERTY = 'NoRecordsTemplate';\nconst ACTIONFAILURETEMPLATE_PROPERTY = 'ActionFailureTemplate';\n/**\n * DropDownBase component will generate the list items based on given data and act as base class to drop-down related components\n */\nlet DropDownBase = class DropDownBase extends Component {\n /**\n * * Constructor for DropDownBase class\n */\n constructor(options, element) {\n super(options, element);\n }\n ;\n getPropObject(prop, newProp, oldProp) {\n let newProperty = new Object();\n let oldProperty = new Object();\n // tslint:disable-next-line:no-function-constructor-with-string-args\n let propName = (prop) => {\n return prop;\n };\n newProperty[propName(prop)] = newProp[propName(prop)];\n oldProperty[propName(prop)] = oldProp[propName(prop)];\n let data = new Object();\n data.newProperty = newProperty;\n data.oldProperty = oldProperty;\n return data;\n }\n getValueByText(text, ignoreCase, ignoreAccent) {\n let value = null;\n if (!isNullOrUndefined(this.listData)) {\n if (ignoreCase) {\n value = this.checkValueCase(text, true, ignoreAccent);\n }\n else {\n value = this.checkValueCase(text, false, ignoreAccent);\n }\n }\n return value;\n }\n ;\n checkValueCase(text, ignoreCase, ignoreAccent, isTextByValue) {\n let value = null;\n if (isTextByValue) {\n value = text;\n }\n let dataSource = this.listData;\n let fields = this.fields;\n let type = this.typeOfData(dataSource).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (let item of dataSource) {\n if (!isNullOrUndefined(item)) {\n if (ignoreAccent) {\n value = this.checkingAccent(String(item), text, ignoreCase);\n }\n else {\n if (ignoreCase) {\n if (this.checkIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase, isTextByValue);\n }\n }\n }\n }\n }\n }\n else {\n if (ignoreCase) {\n dataSource.filter((item) => {\n let itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && this.checkIgnoreCase(getValue(fields.text, item).toString(), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n else {\n if (isTextByValue) {\n dataSource.filter((item) => {\n let itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && !isNullOrUndefined(value) && itemValue.toString() === value.toString()) {\n value = getValue(fields.text, item);\n }\n });\n }\n else {\n dataSource.filter((item) => {\n if (this.checkNonIgnoreCase(getValue(fields.text, item), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n }\n }\n return value;\n }\n checkingAccent(item, text, ignoreCase) {\n let dataItem = DataUtil.ignoreDiacritics(String(item));\n let textItem = DataUtil.ignoreDiacritics(text.toString());\n let value = null;\n if (ignoreCase) {\n if (this.checkIgnoreCase(dataItem, textItem)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n return value;\n }\n checkIgnoreCase(item, text) {\n return String(item).toLowerCase() === text.toString().toLowerCase() ? true : false;\n }\n checkNonIgnoreCase(item, text) {\n return String(item) === text.toString() ? true : false;\n }\n getItemValue(dataItem, typedText, ignoreCase, isTextByValue) {\n let value = null;\n let dataSource = this.listData;\n let type = this.typeOfData(dataSource).typeof;\n if (isTextByValue) {\n value = dataItem.toString();\n }\n else {\n if (ignoreCase) {\n value = type === 'string' ? String(dataItem) : this.getFormattedValue(String(dataItem));\n }\n else {\n value = type === 'string' ? typedText : this.getFormattedValue(typedText);\n }\n }\n return value;\n }\n templateCompiler(baseTemplate) {\n let checkTemplate = false;\n if (baseTemplate) {\n try {\n checkTemplate = (document.querySelectorAll(baseTemplate).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n }\n l10nUpdate(actionFailure) {\n let ele = this.getModuleName() === 'listbox' ? this.ulElement : this.list;\n if (this.noRecordsTemplate !== 'No records found' || this.actionFailureTemplate !== 'Request failed') {\n this.DropDownBaseresetBlazorTemplates(false, false, true, true);\n let template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n let compiledString;\n let templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n ele.innerHTML = '';\n let tempaltecheck = this.templateCompiler(template);\n if (tempaltecheck) {\n compiledString = compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n compiledString = compile(template);\n }\n for (let item of compiledString({}, null, null, templateId, this.isStringTemplate)) {\n ele.appendChild(item);\n }\n this.DropDownBaseupdateBlazorTemplates(false, false, !actionFailure, actionFailure, false, false, false, false);\n }\n else {\n let l10nLocale = { noRecordsTemplate: 'No records found', actionFailureTemplate: 'Request failed' };\n let componentLocale = new L10n(this.getLocaleName(), {}, this.locale);\n if (componentLocale.getConstant('actionFailureTemplate') !== '') {\n this.l10n = componentLocale;\n }\n else {\n this.l10n = new L10n(this.getModuleName() === 'listbox' ? 'listbox' : 'dropdowns', l10nLocale, this.locale);\n }\n let content = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n if (this.getModuleName() === 'listbox') {\n let liElem = this.createElement('li');\n liElem.textContent = content;\n ele.appendChild(liElem);\n liElem.classList.add('e-list-nrt');\n }\n else {\n ele.innerHTML = content;\n }\n }\n }\n getLocaleName() {\n return 'drop-down-base';\n }\n ;\n getTextByValue(value) {\n let text;\n text = this.checkValueCase(value, false, false, true);\n return text;\n }\n getFormattedValue(value) {\n if (this.listData && this.listData.length) {\n let item = this.typeOfData(this.listData);\n if (isBlazor() && isNullOrUndefined(value) || value === 'null') {\n return null;\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'number'\n || item.typeof === 'number') {\n return parseFloat(value);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'boolean'\n || item.typeof === 'boolean') {\n return (value === 'true');\n }\n }\n return value;\n }\n /**\n * Sets RTL to dropdownbase wrapper\n */\n setEnableRtl() {\n if (this.list) {\n this.enableRtlElements.push(this.list);\n }\n this.enableRtl ? addClass(this.enableRtlElements, dropDownBaseClasses.rtl) :\n removeClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n ;\n /**\n * Initialize the Component.\n */\n initialize() {\n this.bindEvent = true;\n this.actionFailureTemplateId = `${this.element.id}${ACTIONFAILURETEMPLATE_PROPERTY}`;\n if (this.element.tagName === 'UL') {\n let jsonElement = ListBase.createJsonFromElement(this.element);\n this.setProperties({ fields: { text: 'text', value: 'text' } }, true);\n this.resetList(jsonElement, this.fields);\n }\n else if (this.element.tagName === 'SELECT') {\n let dataSource = this.dataSource instanceof Array ? (this.dataSource.length > 0 ? true : false)\n : !isNullOrUndefined(this.dataSource) ? true : false;\n if (!dataSource) {\n this.renderItemsBySelect();\n }\n }\n else {\n this.setListData(this.dataSource, this.fields, this.query);\n }\n }\n ;\n DropDownBaseupdateBlazorTemplates(item, group, noRecord, action, value, header, footer, isEmpty) {\n if (!this.isStringTemplate) {\n if (this.itemTemplate && item) {\n updateBlazorTemplate(this.itemTemplateId, ITEMTEMPLATE_PROPERTY, this, isEmpty);\n }\n if (this.groupTemplate && group) {\n updateBlazorTemplate(this.groupTemplateId, GROUPTEMPLATE_PROPERTY, this, isEmpty);\n }\n if (this.noRecordsTemplate && noRecord) {\n updateBlazorTemplate(this.noRecordsTemplateId, NORECORDSTEMPLATE_PROPERTY, this, isEmpty);\n }\n if (this.actionFailureTemplate && action) {\n updateBlazorTemplate(this.actionFailureTemplateId, ACTIONFAILURETEMPLATE_PROPERTY, this, isEmpty);\n }\n if (value) {\n updateBlazorTemplate(this.valueTemplateId, VALUETEMPLATE_PROPERTY, this, isEmpty);\n }\n if (header) {\n updateBlazorTemplate(this.headerTemplateId, HEADERTEMPLATE_PROPERTY, this);\n }\n if (footer) {\n updateBlazorTemplate(this.footerTemplateId, FOOTERTEMPLATE_PROPERTY, this);\n }\n }\n }\n DropDownBaseresetBlazorTemplates(item, group, noRecord, action, value, header, footer) {\n if (!this.isStringTemplate) {\n if (this.itemTemplate && item) {\n resetBlazorTemplate(this.itemTemplateId, ITEMTEMPLATE_PROPERTY);\n }\n if (this.groupTemplate && group) {\n resetBlazorTemplate(this.groupTemplateId, GROUPTEMPLATE_PROPERTY);\n }\n if (this.noRecordsTemplate && noRecord) {\n resetBlazorTemplate(this.noRecordsTemplateId, NORECORDSTEMPLATE_PROPERTY);\n }\n if (this.actionFailureTemplate && action) {\n resetBlazorTemplate(this.actionFailureTemplateId, ACTIONFAILURETEMPLATE_PROPERTY);\n }\n if (value) {\n resetBlazorTemplate(this.valueTemplateId, VALUETEMPLATE_PROPERTY);\n }\n if (header) {\n resetBlazorTemplate(this.headerTemplateId, HEADERTEMPLATE_PROPERTY);\n }\n if (footer) {\n resetBlazorTemplate(this.footerTemplateId, FOOTERTEMPLATE_PROPERTY);\n }\n }\n }\n /**\n * Get the properties to be maintained in persisted state.\n */\n getPersistData() {\n return this.addOnPersist([]);\n }\n ;\n /**\n * Sets the enabled state to DropDownBase.\n */\n setEnabled() {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\n }\n ;\n /**\n * Sets the enabled state to DropDownBase.\n */\n updateDataAttribute(value) {\n let invalidAttr = ['class', 'style', 'id', 'type'];\n let attr = {};\n for (let a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.getModuleName() === 'dropdownlist' && this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n }\n renderItemsBySelect() {\n let element = this.element;\n let fields = { value: 'value', text: 'text' };\n let jsonElement = [];\n let group = element.querySelectorAll('select>optgroup');\n let option = element.querySelectorAll('select>option');\n this.getJSONfromOption(jsonElement, option, fields);\n if (group.length) {\n for (let i = 0; i < group.length; i++) {\n let item = group[i];\n let optionGroup = {};\n optionGroup[fields.text] = item.label;\n optionGroup.isHeader = true;\n let child = item.querySelectorAll('option');\n jsonElement.push(optionGroup);\n this.getJSONfromOption(jsonElement, child, fields);\n }\n let items = element.querySelectorAll('select>option');\n }\n this.fields.text = fields.text;\n this.fields.value = fields.value;\n this.resetList(jsonElement, fields);\n }\n getJSONfromOption(items, options, fields) {\n for (let option of options) {\n let json = {};\n json[fields.text] = option.innerText;\n json[fields.value] = option.getAttribute(fields.value) ? option.getAttribute(fields.value) : option.innerText;\n items.push(json);\n }\n }\n /**\n * Execute before render the list items\n * @private\n */\n preRender() {\n // there is no event handler\n this.scrollTimer = -1;\n this.enableRtlElements = [];\n this.isRequested = false;\n this.isDataFetched = false;\n this.itemTemplateId = `${this.element.id}${ITEMTEMPLATE_PROPERTY}`;\n this.valueTemplateId = `${this.element.id}${VALUETEMPLATE_PROPERTY}`;\n this.groupTemplateId = `${this.element.id}${GROUPTEMPLATE_PROPERTY}`;\n this.headerTemplateId = `${this.element.id}${HEADERTEMPLATE_PROPERTY}`;\n this.footerTemplateId = `${this.element.id}${FOOTERTEMPLATE_PROPERTY}`;\n this.noRecordsTemplateId = `${this.element.id}${NORECORDSTEMPLATE_PROPERTY}`;\n }\n /**\n * Creates the list items of DropDownBase component.\n */\n setListData(dataSource, fields, query) {\n fields = fields ? fields : this.fields;\n let ulElement;\n this.isActive = true;\n let eventArgs = { cancel: false, data: dataSource, query: query };\n this.trigger('actionBegin', eventArgs, (eventArgs) => {\n if (!eventArgs.cancel) {\n this.showSpinner();\n if (dataSource instanceof DataManager) {\n this.isRequested = true;\n if (this.isDataFetched) {\n this.emptyDataRequest(fields);\n return;\n }\n eventArgs.data.executeQuery(this.getQuery(eventArgs.query)).then((e) => {\n this.trigger('actionComplete', e, (e) => {\n if (!e.cancel) {\n let listItems = e.result;\n if (listItems.length === 0) {\n this.isDataFetched = true;\n }\n ulElement = this.renderItems(listItems, fields);\n this.onActionComplete(ulElement, listItems, e);\n if (this.groupTemplate) {\n this.renderGroupTemplate(ulElement);\n }\n this.isRequested = false;\n this.bindChildItems(listItems, ulElement, fields, e);\n }\n });\n }).catch((e) => {\n this.isRequested = false;\n this.onActionFailure(e);\n this.hideSpinner();\n });\n }\n else {\n let dataManager = new DataManager(eventArgs.data);\n let listItems = (this.getQuery(eventArgs.query)).executeLocal(dataManager);\n let localDataArgs = { cancel: false, result: listItems };\n this.trigger('actionComplete', localDataArgs, (localDataArgs) => {\n if (!localDataArgs.cancel) {\n ulElement = this.renderItems(localDataArgs.result, fields);\n this.onActionComplete(ulElement, localDataArgs.result);\n if (this.groupTemplate) {\n this.renderGroupTemplate(ulElement);\n }\n this.bindChildItems(localDataArgs.result, ulElement, fields);\n }\n });\n }\n }\n });\n }\n bindChildItems(listItems, ulElement, fields, e) {\n if (listItems.length >= 100 && this.getModuleName() === 'autocomplete') {\n setTimeout(() => {\n let childNode = this.remainingItems(this.sortedData, fields);\n append(childNode, ulElement);\n this.DropDownBaseupdateBlazorTemplates(true, false, false, false);\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.updateListValues();\n this.raiseDataBound(listItems, e);\n }, 0);\n }\n else {\n this.raiseDataBound(listItems, e);\n }\n }\n updateListValues() {\n // Used this method in component side.\n }\n findListElement(list, findNode, attribute, value) {\n let liElement = null;\n if (list) {\n let listArr = [].slice.call(list.querySelectorAll(findNode));\n for (let index = 0; index < listArr.length; index++) {\n if (listArr[index].getAttribute(attribute) === (value + '')) {\n liElement = listArr[index];\n break;\n }\n }\n }\n return liElement;\n }\n raiseDataBound(listItems, e) {\n this.hideSpinner();\n let dataBoundEventArgs = {\n items: listItems,\n e: e\n };\n this.trigger('dataBound', dataBoundEventArgs);\n }\n remainingItems(dataSource, fields) {\n let spliceData = new DataManager(dataSource).executeLocal(new Query().skip(100));\n if (this.itemTemplate) {\n let listElements = this.templateListItem(spliceData, fields);\n return [].slice.call(listElements.childNodes);\n }\n let type = this.typeOfData(spliceData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return ListBase.createListItemFromArray(this.createElement, spliceData, true, this.listOption(spliceData, fields));\n }\n return ListBase.createListItemFromJson(this.createElement, spliceData, this.listOption(spliceData, fields), 1, true);\n }\n emptyDataRequest(fields) {\n let listItems = [];\n this.onActionComplete(this.renderItems(listItems, fields), listItems);\n this.isRequested = false;\n this.hideSpinner();\n }\n showSpinner() {\n // Used this method in component side.\n }\n hideSpinner() {\n // Used this method in component side.\n }\n onActionFailure(e) {\n this.liCollections = [];\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n addClass([this.list], dropDownBaseClasses.noData);\n }\n onActionComplete(ulElement, list, e) {\n this.listData = list;\n if (isBlazor() && this.isServerRendered && this.getModuleName() === 'listbox') {\n remove(this.list.querySelector('.e-list-parent'));\n remove(this.list.querySelector('.e-hidden-select'));\n }\n else {\n this.list.innerHTML = '';\n }\n this.fixedHeaderElement = isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement : null;\n this.list.appendChild(ulElement);\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.postRender(this.list, list, this.bindEvent);\n }\n postRender(listElement, list, bindEvent) {\n let focusItem = listElement.querySelector('.' + dropDownBaseClasses.li);\n let selectedItem = listElement.querySelector('.' + dropDownBaseClasses.selected);\n if (focusItem && !selectedItem) {\n focusItem.classList.add(dropDownBaseClasses.focus);\n }\n if (list.length <= 0) {\n this.l10nUpdate();\n addClass([listElement], dropDownBaseClasses.noData);\n }\n else {\n listElement.classList.remove(dropDownBaseClasses.noData);\n }\n }\n /**\n * Get the query to do the data operation before list item generation.\n */\n getQuery(query) {\n return query ? query : this.query ? this.query : new Query();\n }\n /**\n * To render the template content for group header element.\n */\n renderGroupTemplate(listEle) {\n if (this.fields.groupBy !== null && this.dataSource || this.element.querySelector('.' + dropDownBaseClasses.group)) {\n let dataSource = this.dataSource;\n let option = { groupTemplateID: this.groupTemplateId, isStringTemplate: this.isStringTemplate };\n let headerItems = listEle.querySelectorAll('.' + dropDownBaseClasses.group);\n let groupcheck = this.templateCompiler(this.groupTemplate);\n if (groupcheck) {\n let groupValue = document.querySelector(this.groupTemplate).innerHTML.trim();\n let tempHeaders = ListBase.renderGroupTemplate(groupValue, dataSource, this.fields.properties, headerItems, option);\n }\n else {\n let tempHeaders = ListBase.renderGroupTemplate(this.groupTemplate, dataSource, this.fields.properties, headerItems, option);\n }\n this.DropDownBaseupdateBlazorTemplates(false, true, false, false, false, false, false, false);\n }\n }\n /**\n * To create the ul li list items\n */\n createListItems(dataSource, fields) {\n if (dataSource && fields.groupBy || this.element.querySelector('optgroup')) {\n if (fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n addClass([this.list], dropDownBaseClasses.grouping);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n let options = this.listOption(dataSource, fields);\n let spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n this.sortedData = dataSource;\n return ListBase.createList(this.createElement, (this.getModuleName() === 'autocomplete') ? spliceData : dataSource, options, true);\n }\n ;\n listOption(dataSource, fields) {\n let iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n let fieldValues = !isNullOrUndefined(fields.properties) ?\n fields.properties : fields;\n let options = (fields.text !== null || fields.value !== null) ? {\n fields: fieldValues,\n showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n return extend({}, options, fields, true);\n }\n ;\n setFloatingHeader(e) {\n if (isNullOrUndefined(this.fixedHeaderElement)) {\n this.fixedHeaderElement = this.createElement('div', { className: dropDownBaseClasses.fixedHead });\n if (!this.list.querySelector('li').classList.contains(dropDownBaseClasses.group)) {\n this.fixedHeaderElement.style.display = 'none';\n }\n prepend([this.fixedHeaderElement], this.list);\n this.setFixedHeader();\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && this.fixedHeaderElement.style.zIndex === '0') {\n this.setFixedHeader();\n }\n this.scrollStop(e);\n }\n scrollStop(e) {\n let target = e.target;\n let liHeight = parseInt(getComputedStyle(this.liCollections[0], null).getPropertyValue('height'), 10);\n let topIndex = Math.round(target.scrollTop / liHeight);\n let liCollections = this.list.querySelectorAll('li');\n for (let i = topIndex; i > -1; i--) {\n if (!isNullOrUndefined(liCollections[i]) && liCollections[i].classList.contains(dropDownBaseClasses.group)) {\n let currentLi = liCollections[i];\n this.fixedHeaderElement.innerHTML = currentLi.innerHTML;\n this.fixedHeaderElement.style.top = e.target.scrollTop + 'px';\n this.fixedHeaderElement.style.display = 'block';\n break;\n }\n else {\n this.fixedHeaderElement.style.display = 'none';\n this.fixedHeaderElement.style.top = 'none';\n }\n }\n }\n /**\n * To render the list items\n */\n renderItems(listData, fields) {\n let ulElement;\n if (this.itemTemplate && listData) {\n let dataSource = listData;\n if (dataSource && fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n this.sortedData = dataSource;\n let spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n ulElement = this.templateListItem((this.getModuleName() === 'autocomplete') ? spliceData : dataSource, fields);\n let isTempEmpty = (this.getModuleName() === 'listbox') ? true : false;\n this.DropDownBaseupdateBlazorTemplates(true, false, false, false, false, false, false, isTempEmpty);\n }\n else {\n ulElement = this.createListItems(listData, fields);\n }\n return ulElement;\n }\n ;\n templateListItem(dataSource, fields) {\n this.DropDownBaseresetBlazorTemplates(true, false, false, false);\n let option = this.listOption(dataSource, fields);\n option.templateID = this.itemTemplateId;\n option.isStringTemplate = this.isStringTemplate;\n let itemcheck = this.templateCompiler(this.itemTemplate);\n if (itemcheck) {\n let itemValue = document.querySelector(this.itemTemplate).innerHTML.trim();\n return ListBase.renderContentTemplate(this.createElement, itemValue, dataSource, fields.properties, option);\n }\n else {\n return ListBase.renderContentTemplate(this.createElement, this.itemTemplate, dataSource, fields.properties, option);\n }\n }\n ;\n typeOfData(items) {\n let item = { typeof: null, item: null };\n for (let i = 0; (!isNullOrUndefined(items) && i < items.length); i++) {\n if (!isNullOrUndefined(items[i])) {\n let listDataType = typeof (items[i]) === 'string' ||\n typeof (items[i]) === 'number' || typeof (items[i]) === 'boolean';\n let isNullData = listDataType ? isNullOrUndefined(items[i]) :\n isNullOrUndefined(getValue((this.fields.value ? this.fields.value : 'value'), items[i]));\n if (!isNullData) {\n return item = { typeof: typeof items[i], item: items[i] };\n }\n }\n }\n return item;\n }\n setFixedHeader() {\n this.list.parentElement.style.display = 'block';\n let borderWidth = 0;\n if (this.list && this.list.parentElement) {\n borderWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-width'), 10);\n }\n let liWidth = this.liCollections[0].offsetWidth - borderWidth;\n this.fixedHeaderElement.style.width = liWidth.toString() + 'px';\n setStyleAttribute(this.fixedHeaderElement, { zIndex: 10 });\n let firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group);\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n }\n getSortedDataSource(dataSource) {\n if (dataSource && this.sortOrder !== 'None') {\n let textField = this.fields.text ? this.fields.text : 'text';\n dataSource = ListBase.getDataSource(dataSource, ListBase.addSorting(this.sortOrder, textField));\n }\n return dataSource;\n }\n /**\n * Return the index of item which matched with given value in data source\n */\n getIndexByValue(value) {\n let index;\n let listItems = this.getItems();\n for (let i = 0; i < listItems.length; i++) {\n if (!isNullOrUndefined(value) && listItems[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n return index;\n }\n ;\n /**\n * To dispatch the event manually\n */\n dispatchEvent(element, type) {\n let evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n element.dispatchEvent(evt);\n }\n /**\n * To set the current fields\n */\n setFields() {\n if (this.fields.value && !this.fields.text) {\n this.fields.text = this.fields.value;\n }\n else if (!this.fields.value && this.fields.text) {\n this.fields.value = this.fields.text;\n }\n else if (!this.fields.value && !this.fields.text) {\n this.fields.value = this.fields.text = 'text';\n }\n }\n /**\n * reset the items list.\n */\n resetList(dataSource, fields, query) {\n if (this.list) {\n if ((this.element.tagName === 'SELECT' && this.element.options.length > 0)\n || (this.element.tagName === 'UL' && this.element.childNodes.length > 0)) {\n let data = dataSource instanceof Array ? (dataSource.length > 0)\n : !isNullOrUndefined(dataSource);\n if (!data && this.selectData && this.selectData.length > 0) {\n dataSource = this.selectData;\n }\n }\n this.setListData(dataSource, fields, query);\n }\n }\n updateSelectElementData(isFiltering) {\n if (isFiltering && isNullOrUndefined(this.selectData) && this.listData && this.listData.length > 0) {\n this.selectData = this.listData;\n }\n }\n updateSelection() {\n // This is for after added the item, need to update the selected index values.\n }\n renderList() {\n // This is for render the list items.\n this.render();\n }\n updateDataSource(props) {\n this.resetList(this.dataSource);\n }\n setUpdateInitial(props, newProp) {\n this.isDataFetched = false;\n let updateData = {};\n for (let j = 0; props.length > j; j++) {\n if (newProp[props[j]] && props[j] === 'fields') {\n this.setFields();\n }\n else if (newProp[props[j]]) {\n updateData[props[j]] = newProp[props[j]];\n }\n }\n if (Object.keys(updateData).length > 0) {\n if (Object.keys(updateData).indexOf('dataSource') === -1) {\n updateData.dataSource = this.dataSource;\n }\n this.updateDataSource(updateData);\n }\n }\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n if (this.getModuleName() === 'dropdownbase') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n this.setUpdateInitial(['sortOrder', 'itemTemplate'], newProp);\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'query':\n case 'sortOrder':\n case 'dataSource':\n case 'itemTemplate':\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'enabled':\n this.setEnabled();\n break;\n case 'groupTemplate':\n this.renderGroupTemplate(this.list);\n if (this.ulElement && this.fixedHeaderElement) {\n let firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group);\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n }\n break;\n case 'locale':\n if (this.list && (!isNullOrUndefined(this.liCollections) && this.liCollections.length === 0)) {\n this.l10nUpdate();\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n }\n }\n }\n ;\n /**\n * Build and render the component\n * @private\n */\n render(isEmptyData) {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content, attrs: { 'tabindex': '0' } });\n this.list.classList.add(dropDownBaseClasses.root);\n this.setFields();\n let rippleModel = { duration: 300, selector: '.' + dropDownBaseClasses.li };\n this.rippleFun = rippleEffect(this.list, rippleModel);\n let group = this.element.querySelector('select>optgroup');\n if ((this.fields.groupBy || !isNullOrUndefined(group)) && !this.isGroupChecking) {\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (this.getModuleName() === 'dropdownbase') {\n if (this.element.getAttribute('tabindex')) {\n this.list.setAttribute('tabindex', this.element.getAttribute('tabindex'));\n }\n removeClass([this.element], dropDownBaseClasses.root);\n this.element.style.display = 'none';\n let wrapperElement = this.createElement('div');\n this.element.parentElement.insertBefore(wrapperElement, this.element);\n wrapperElement.appendChild(this.element);\n wrapperElement.appendChild(this.list);\n }\n this.setEnableRtl();\n this.setEnabled();\n if (!isEmptyData) {\n this.initialize();\n }\n }\n ;\n /**\n * Return the module name of this component.\n * @private\n */\n getModuleName() {\n return 'dropdownbase';\n }\n ;\n /**\n * Gets all the list items bound on this component.\n * @returns Element[].\n */\n getItems() {\n return this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n }\n ;\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @return {void}.\n * @deprecated\n */\n addItem(items, itemIndex) {\n if (!this.list || (this.list.textContent === this.noRecordsTemplate && this.getModuleName() !== 'listbox')) {\n this.renderList();\n }\n if (this.sortOrder !== 'None' && isNullOrUndefined(itemIndex)) {\n let newList = [].slice.call(this.listData);\n newList.push(items);\n newList = this.getSortedDataSource(newList);\n if (this.fields.groupBy) {\n newList = ListBase.groupDataSource(newList, this.fields.properties, this.sortOrder);\n itemIndex = newList.indexOf(items);\n }\n else {\n itemIndex = newList.indexOf(items);\n }\n }\n this.DropDownBaseresetBlazorTemplates(true, false, false, false);\n let itemsCount = this.getItems().length;\n let selectedItemValue = this.list.querySelector('.' + dropDownBaseClasses.selected);\n items = (items instanceof Array ? items : [items]);\n let index;\n index = (isNullOrUndefined(itemIndex) || itemIndex < 0 || itemIndex > itemsCount - 1) ? itemsCount : itemIndex;\n let fields = this.fields;\n if (items && fields.groupBy) {\n items = ListBase.groupDataSource(items, fields.properties);\n }\n let liCollections = [];\n for (let i = 0; i < items.length; i++) {\n let item = items[i];\n let isHeader = item.isHeader;\n let li = this.createElement('li', { className: isHeader ? dropDownBaseClasses.group : dropDownBaseClasses.li, id: 'option-add-' + i });\n let itemText = item instanceof Object ? getValue(fields.text, item) : item;\n if (isHeader) {\n li.innerText = itemText;\n }\n if (this.itemTemplate && !isHeader) {\n let compiledString = compile(this.itemTemplate);\n append(compiledString(item, null, null, this.itemTemplateId, this.isStringTemplate), li);\n this.DropDownBaseupdateBlazorTemplates(true, false, false, false);\n }\n else if (!isHeader) {\n li.appendChild(document.createTextNode(itemText));\n }\n li.setAttribute('data-value', item instanceof Object ? getValue(fields.value, item) : item);\n li.setAttribute('role', 'option');\n this.notify('addItem', { module: 'CheckBoxSelection', item: li });\n liCollections.push(li);\n this.listData.push(item);\n this.updateActionCompleteData(li, item, index);\n //Listbox event\n this.trigger('beforeItemRender', { element: li, item: item });\n }\n if (itemsCount === 0 && isNullOrUndefined(this.list.querySelector('ul'))) {\n this.list.innerHTML = '';\n this.list.classList.remove(dropDownBaseClasses.noData);\n this.list.appendChild(this.ulElement);\n this.liCollections = liCollections;\n append(liCollections, this.ulElement);\n this.updateAddItemList(this.list, itemsCount);\n }\n else {\n if (this.getModuleName() === 'listbox' && itemsCount === 0) {\n this.ulElement.innerHTML = '';\n }\n let attr = [];\n for (let i = 0; i < items.length; i++) {\n let listGroupItem = this.ulElement.querySelectorAll('.e-list-group-item');\n for (let j = 0; j < listGroupItem.length; j++) {\n attr[j] = listGroupItem[j].innerText;\n }\n if (attr.indexOf(liCollections[i].innerText) > -1 && fields.groupBy) {\n for (let j = 0; j < listGroupItem.length; j++) {\n if (attr[j] === liCollections[i].innerText) {\n if (this.sortOrder === 'None') {\n this.ulElement.insertBefore(liCollections[i + 1], listGroupItem[j + 1]);\n }\n else {\n this.ulElement.insertBefore(liCollections[i + 1], this.ulElement.childNodes[itemIndex]);\n }\n i = i + 1;\n break;\n }\n }\n }\n else {\n if (this.liCollections[index]) {\n this.liCollections[index].parentNode.insertBefore(liCollections[i], this.liCollections[index]);\n }\n else {\n this.ulElement.appendChild(liCollections[i]);\n }\n }\n let tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 0, liCollections[i]);\n this.liCollections = tempLi;\n index += 1;\n if (this.getModuleName() === 'multiselect') {\n this.updateDataList();\n }\n }\n }\n if (selectedItemValue || itemIndex === 0) {\n this.updateSelection();\n }\n }\n validationAttribute(target, hidden) {\n let name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n hidden.setAttribute('name', name);\n target.removeAttribute('name');\n let attributes$$1 = ['required', 'aria-required', 'form'];\n for (let i = 0; i < attributes$$1.length; i++) {\n if (!target.getAttribute(attributes$$1[i])) {\n continue;\n }\n let attr = target.getAttribute(attributes$$1[i]);\n hidden.setAttribute(attributes$$1[i], attr);\n target.removeAttribute(attributes$$1[i]);\n }\n }\n setZIndex() {\n // this is for component wise\n }\n updateActionCompleteData(li, item, index) {\n // this is for ComboBox custom value\n }\n updateAddItemList(list, itemCount) {\n // this is for multiselect add item\n }\n updateDataList() {\n // this is for multiselect update list items\n }\n /**\n * Gets the data Object that matches the given value.\n * @param { string | number } value - Specifies the value of the list item.\n * @returns Object.\n * @blazorType object\n */\n getDataByValue(value) {\n if (!isNullOrUndefined(this.listData)) {\n let type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (let item of this.listData) {\n if (!isNullOrUndefined(item) && item === value) {\n return item;\n }\n }\n }\n else {\n for (let item of this.listData) {\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n return item;\n }\n }\n }\n }\n return null;\n }\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n * @method destroy\n * @return {void}.\n */\n destroy() {\n if (document.body.contains(this.list)) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n if (!isNullOrUndefined(this.rippleFun)) {\n this.rippleFun();\n }\n detach(this.list);\n }\n super.destroy();\n }\n ;\n};\n__decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n], DropDownBase.prototype, \"fields\", void 0);\n__decorate([\n Property(false)\n], DropDownBase.prototype, \"enablePersistence\", void 0);\n__decorate([\n Property(null)\n], DropDownBase.prototype, \"itemTemplate\", void 0);\n__decorate([\n Property(null)\n], DropDownBase.prototype, \"groupTemplate\", void 0);\n__decorate([\n Property('No records found')\n], DropDownBase.prototype, \"noRecordsTemplate\", void 0);\n__decorate([\n Property('Request failed')\n], DropDownBase.prototype, \"actionFailureTemplate\", void 0);\n__decorate([\n Property('None')\n], DropDownBase.prototype, \"sortOrder\", void 0);\n__decorate([\n Property(true)\n], DropDownBase.prototype, \"enabled\", void 0);\n__decorate([\n Property([])\n], DropDownBase.prototype, \"dataSource\", void 0);\n__decorate([\n Property(null)\n], DropDownBase.prototype, \"query\", void 0);\n__decorate([\n Property('StartsWith')\n], DropDownBase.prototype, \"filterType\", void 0);\n__decorate([\n Property(true)\n], DropDownBase.prototype, \"ignoreCase\", void 0);\n__decorate([\n Property(1000)\n], DropDownBase.prototype, \"zIndex\", void 0);\n__decorate([\n Property(false)\n], DropDownBase.prototype, \"ignoreAccent\", void 0);\n__decorate([\n Property()\n], DropDownBase.prototype, \"locale\", void 0);\n__decorate([\n Event()\n], DropDownBase.prototype, \"actionBegin\", void 0);\n__decorate([\n Event()\n], DropDownBase.prototype, \"actionComplete\", void 0);\n__decorate([\n Event()\n], DropDownBase.prototype, \"actionFailure\", void 0);\n__decorate([\n Event()\n], DropDownBase.prototype, \"select\", void 0);\n__decorate([\n Event()\n], DropDownBase.prototype, \"dataBound\", void 0);\n__decorate([\n Event()\n], DropDownBase.prototype, \"created\", void 0);\n__decorate([\n Event()\n], DropDownBase.prototype, \"destroyed\", void 0);\nDropDownBase = __decorate([\n NotifyPropertyChanges\n], DropDownBase);\n\n/**\n * export all modules from current location\n */\n\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/// \n/* tslint:disable */\n// don't use space in classnames \nconst dropDownListClasses = {\n root: 'e-dropdownlist',\n hover: dropDownBaseClasses.hover,\n selected: dropDownBaseClasses.selected,\n rtl: dropDownBaseClasses.rtl,\n li: dropDownBaseClasses.li,\n disable: dropDownBaseClasses.disabled,\n base: dropDownBaseClasses.root,\n focus: dropDownBaseClasses.focus,\n input: 'e-input-group',\n inputFocus: 'e-input-focus',\n icon: 'e-input-group-icon e-ddl-icon',\n iconAnimation: 'e-icon-anim',\n value: 'e-input-value',\n device: 'e-ddl-device',\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n mobileFilter: 'e-ddl-device-filter',\n footer: 'e-ddl-footer',\n header: 'e-ddl-header',\n clearIcon: 'e-clear-icon',\n clearIconHide: 'e-clear-icon-hide',\n popupFullScreen: 'e-popup-full-page',\n disableIcon: 'e-ddl-disable-icon',\n hiddenElement: 'e-ddl-hidden'\n};\nlet inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The DropDownList component contains a list of predefined values from which you can\n * choose a single value.\n * ```html\n * \n * ```\n * ```typescript\n * let dropDownListObj:DropDownList = new DropDownList();\n * dropDownListObj.appendTo(\"#list\");\n * ```\n */\nlet DropDownList = class DropDownList extends DropDownBase {\n /**\n * * Constructor for creating the DropDownList component.\n */\n constructor(options, element) {\n super(options, element);\n this.previousValue = null;\n }\n ;\n /**\n * Initialize the event handler.\n * @private\n */\n preRender() {\n let checkBlazor = isBlazor() && this.isServerRendered;\n this.isServerBlazor = (checkBlazor) ? true : false;\n if (this.isServerBlazor) {\n this.initializeData();\n }\n else {\n this.element.style.opacity = '0';\n this.initializeData();\n super.preRender();\n }\n this.activeIndex = this.index;\n this.queryString = '';\n }\n initializeData() {\n this.isPopupOpen = false;\n this.isDocumentClick = false;\n this.isInteracted = false;\n this.isFilterFocus = false;\n this.beforePopupOpen = false;\n this.initial = true;\n this.initRemoteRender = false;\n this.isNotSearchList = false;\n this.isTyped = false;\n this.isSelected = false;\n this.preventFocus = false;\n this.preventAutoFill = false;\n this.isValidKey = false;\n this.typedString = '';\n this.isEscapeKey = false;\n this.isPreventBlur = false;\n this.isTabKey = false;\n this.actionCompleteData = { isUpdated: false };\n this.prevSelectPoints = {};\n this.isSelectCustom = false;\n this.isDropDownClick = false;\n this.preventAltUp = false;\n this.isCustomFilter = false;\n this.isSecondClick = false;\n this.keyConfigure = {\n tab: 'tab',\n enter: '13',\n escape: '27',\n end: '35',\n home: '36',\n down: '40',\n up: '38',\n pageUp: '33',\n pageDown: '34',\n open: 'alt+40',\n close: 'shift+tab',\n hide: 'alt+38',\n space: '32'\n };\n }\n setZIndex() {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n }\n renderList(isEmptyData) {\n if (!this.isServerBlazor) {\n super.render(isEmptyData);\n this.wireListEvents();\n }\n else {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', this.beforePopupOpen, false);\n }\n }\n floatLabelChange() {\n if (this.getModuleName() === 'dropdownlist' && this.floatLabelType === 'Auto') {\n let floatElement = this.inputWrapper.container.querySelector('.e-float-text');\n if (this.inputElement.value !== '' || this.isInteracted) {\n classList(floatElement, ['e-label-top'], ['e-label-bottom']);\n }\n else {\n classList(floatElement, ['e-label-bottom'], ['e-label-top']);\n }\n }\n }\n resetHandler(e) {\n e.preventDefault();\n this.clearAll(e);\n }\n resetFocusElement() {\n this.removeHover();\n this.removeSelection();\n this.removeFocus();\n this.list.scrollTop = 0;\n if (this.getModuleName() !== 'autocomplete' && !isNullOrUndefined(this.ulElement)) {\n let li = this.ulElement.querySelector('.' + dropDownListClasses.li);\n if (li) {\n li.classList.add(dropDownListClasses.focus);\n }\n }\n }\n clearAll(e, properties) {\n if (isNullOrUndefined(properties) || (!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.isActive = true;\n this.resetSelection(properties);\n }\n let dataItem = this.getItemData();\n if (this.previousValue === dataItem.value) {\n return;\n }\n this.onChangeEvent(e);\n }\n resetSelection(properties) {\n if (this.list) {\n if ((!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.selectedLI = null;\n this.actionCompleteData.isUpdated = false;\n this.actionCompleteData.ulElement = null;\n this.actionCompleteData.list = null;\n this.resetList(properties.dataSource);\n }\n else {\n if (this.allowFiltering && this.getModuleName() !== 'autocomplete'\n && !isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list)) {\n let actionList = this.actionCompleteData.ulElement.querySelector('li');\n let ulElement = this.ulElement && this.ulElement.querySelector('li');\n if (this.element.tagName === 'EJS-COMBOBOX' && actionList && ulElement &&\n actionList.childElementCount > 0 && ulElement.childElementCount > 0 &&\n actionList.textContent !== ulElement.textContent && this.itemTemplate) {\n this.cloneElements();\n }\n this.onActionComplete(this.actionCompleteData.ulElement.cloneNode(true), this.actionCompleteData.list);\n }\n this.resetFocusElement();\n }\n }\n if (!this.isServerBlazor) {\n this.hiddenElement.innerHTML = '';\n }\n this.inputElement.value = '';\n this.value = null;\n this.itemData = null;\n this.text = null;\n this.index = null;\n this.activeIndex = null;\n this.item = null;\n this.queryString = '';\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n this.setSelection(null, null);\n this.isSelectCustom = false;\n this.updateIconState();\n this.cloneElements();\n }\n setHTMLAttributes() {\n if (Object.keys(this.htmlAttributes).length) {\n for (let htmlAttr of Object.keys(this.htmlAttributes)) {\n if (htmlAttr === 'class') {\n let updatedClassValue = (this.htmlAttributes[htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.inputWrapper.container], updatedClassValue.split(' '));\n }\n }\n else if (htmlAttr === 'disabled' && this.htmlAttributes[htmlAttr] === 'disabled') {\n this.enabled = false;\n this.setEnable();\n }\n else if (htmlAttr === 'readonly' && !isNullOrUndefined(this.htmlAttributes[htmlAttr])) {\n this.readonly = true;\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.container.setAttribute('style', this.htmlAttributes[htmlAttr]);\n }\n else {\n let defaultAttr = ['title', 'id', 'placeholder', 'aria-placeholder',\n 'role', 'autocorrect', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n let validateAttr = ['name', 'required'];\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n defaultAttr.push('tabindex');\n }\n if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n htmlAttr === 'placeholder' ? Input.setPlaceholder(this.htmlAttributes[htmlAttr], this.inputElement) :\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n else {\n this.inputWrapper.container.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n }\n }\n }\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputWrapper.container.removeAttribute('tabindex');\n }\n }\n getAriaAttributes() {\n return {\n 'aria-disabled': 'false',\n 'aria-owns': this.element.id + '_options',\n 'role': 'listbox',\n 'aria-haspopup': 'true',\n 'aria-expanded': 'false',\n 'aria-activedescendant': 'null',\n 'aria-live': 'polite',\n 'aria-labelledby': this.hiddenElement.id\n };\n }\n setEnableRtl() {\n Input.setEnableRtl(this.enableRtl, [this.inputElement.parentElement]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n }\n setEnable() {\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hidePopup();\n addClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.targetElement().tabIndex = -1;\n }\n }\n /**\n * Get the properties to be maintained in the persisted state.\n */\n getPersistData() {\n return this.addOnPersist(['value']);\n }\n ;\n getLocaleName() {\n return 'drop-down-list';\n }\n ;\n preventTabIndex(element) {\n if (this.getModuleName() === 'dropdownlist') {\n element.tabIndex = -1;\n }\n }\n targetElement() {\n return this.inputWrapper.container;\n }\n getNgDirective() {\n return 'EJS-DROPDOWNLIST';\n }\n getElementByText(text) {\n return this.getElementByValue(this.getValueByText(text));\n }\n getElementByValue(value) {\n let item;\n let listItems = this.getItems();\n for (let liItem of listItems) {\n if (this.getFormattedValue(liItem.getAttribute('data-value')) === value) {\n item = liItem;\n break;\n }\n }\n return item;\n }\n ;\n initValue() {\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n }\n updateValues() {\n if (!isNullOrUndefined(this.value)) {\n this.setSelection(this.getElementByValue(this.value), null);\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n let element = this.getElementByText(this.text);\n if (isNullOrUndefined(element)) {\n this.setProperties({ text: null });\n return;\n }\n else {\n this.setSelection(element, null);\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n onBlur(e) {\n if (!this.enabled) {\n return;\n }\n let target = e.relatedTarget;\n let currentTarget = e.target;\n let isPreventBlur = this.isPreventBlur;\n this.isPreventBlur = false;\n //IE 11 - issue\n if (isPreventBlur && !this.isDocumentClick && this.isPopupOpen && (!isNullOrUndefined(currentTarget) ||\n !this.isFilterLayout() && isNullOrUndefined(target))) {\n if (this.getModuleName() === 'dropdownlist' && this.allowFiltering && this.isPopupOpen) {\n this.filterInput.focus();\n }\n else {\n this.targetElement().focus();\n }\n return;\n }\n if (this.isDocumentClick || (!isNullOrUndefined(this.popupObj)\n && document.body.contains(this.popupObj.element) &&\n this.popupObj.element.classList.contains(dropDownListClasses.mobileFilter))) {\n if (!this.beforePopupOpen) {\n this.isDocumentClick = false;\n }\n return;\n }\n if (((this.getModuleName() === 'dropdownlist' && !this.isFilterFocus && target !== this.inputElement)\n && (document.activeElement !== target || (document.activeElement === target &&\n currentTarget.classList.contains(dropDownListClasses.inputFocus)))) ||\n (isNullOrUndefined(target) && this.getModuleName() === 'dropdownlist' && this.allowFiltering &&\n currentTarget !== this.inputWrapper.container) || this.getModuleName() !== 'dropdownlist' &&\n !this.inputWrapper.container.contains(target) || this.isTabKey) {\n this.isDocumentClick = this.isPopupOpen ? true : false;\n this.focusOutAction(e);\n this.isTabKey = false;\n }\n if (this.isRequested && !this.isPopupOpen && !this.isPreventBlur) {\n this.isActive = false;\n this.beforePopupOpen = false;\n }\n }\n focusOutAction(e) {\n this.isInteracted = false;\n this.focusOut(e);\n this.onFocusOut();\n }\n onFocusOut() {\n if (!this.enabled) {\n return;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(null);\n }\n this.floatLabelChange();\n this.dispatchEvent(this.hiddenElement, 'change');\n if (this.getModuleName() === 'dropdownlist' && this.element.tagName !== 'INPUT') {\n this.dispatchEvent(this.inputElement, 'blur');\n }\n if (this.inputWrapper.clearButton) {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n this.trigger('blur');\n }\n onFocus(e) {\n if (!this.isInteracted) {\n this.isInteracted = true;\n let args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n }\n this.updateIconState();\n }\n resetValueHandler(e) {\n let formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n let val = (this.element.tagName === this.getNgDirective()) ? null : this.inputElement.getAttribute('value');\n this.text = val;\n }\n }\n wireEvent() {\n EventHandler.add(this.inputWrapper.container, 'mousedown', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper.container, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper.container, 'keypress', this.onSearch, this);\n this.bindCommonEvent();\n }\n bindCommonEvent() {\n EventHandler.add(this.targetElement(), 'blur', this.onBlur, this);\n let formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.keyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.mobileKeyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n this.bindClearEvent();\n }\n bindClearEvent() {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n }\n unBindCommonEvent() {\n EventHandler.remove(this.targetElement(), 'blur', this.onBlur);\n let formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n if (!Browser.isDevice) {\n this.keyboardModule.destroy();\n }\n if (this.showClearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown', this.resetHandler);\n }\n }\n updateIconState() {\n if (this.showClearButton) {\n if (this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n }\n /**\n * Event binding for list\n */\n wireListEvents() {\n EventHandler.add(this.list, 'click', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n ;\n onSearch(e) {\n if (e.charCode !== 32 && e.charCode !== 13) {\n if (this.list === undefined) {\n if (!this.isServerBlazor) {\n this.renderList();\n }\n else {\n this.isServerIncrementalSearch = true;\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', true, false);\n }\n }\n this.searchKeyEvent = e;\n this.onServerIncrementalSearch(e);\n }\n }\n onServerIncrementalSearch(e) {\n if (!this.isRequested && !isNullOrUndefined(this.list) &&\n !isNullOrUndefined(this.list.querySelector('li')) && this.enabled && !this.readonly) {\n this.incrementalSearch(e);\n }\n }\n onMouseClick(e) {\n let target = e.target;\n let classList$$1 = target.classList;\n let li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li)) {\n return;\n }\n this.setSelection(li, e);\n if (Browser.isDevice && this.isFilterLayout()) {\n history.back();\n }\n else {\n let delay = 100;\n this.closePopup(delay);\n }\n }\n onMouseOver(e) {\n let currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n }\n ;\n setHover(li) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n }\n ;\n onMouseLeave(e) {\n this.removeHover();\n }\n ;\n removeHover() {\n if (this.list) {\n let hoveredItem = (this.isServerBlazor && this.popupObj && this.popupObj.element) ?\n this.popupObj.element.querySelectorAll('.' + dropDownBaseClasses.hover) :\n this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n }\n ;\n isValidLI(li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n }\n ;\n incrementalSearch(e) {\n if (this.liCollections.length > 0) {\n let li = incrementalSearch(e.charCode, this.liCollections, this.activeIndex, true, this.element.id, this.isServerBlazor);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, e);\n this.setScrollPosition();\n }\n }\n }\n ;\n /**\n * Hides the spinner loader.\n * @returns void.\n */\n hideSpinner() {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n this.spinnerElement.innerHTML = '';\n this.spinnerElement = null;\n }\n }\n /**\n * Shows the spinner loader.\n * @returns void.\n */\n showSpinner() {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = Browser.isDevice && !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[1] ||\n !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[0] || this.inputWrapper.buttons[0];\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n }\n keyActionHandler(e) {\n if (!this.enabled) {\n return;\n }\n let preventAction = e.action === 'pageUp' || e.action === 'pageDown';\n let preventHomeEnd = this.getModuleName() !== 'dropdownlist' && (e.action === 'home' || e.action === 'end');\n this.isEscapeKey = e.action === 'escape';\n this.isTabKey = !this.isPopupOpen && e.action === 'tab';\n let isNavAction = e.action === 'down' || e.action === 'up' || e.action === 'home' || e.action === 'end';\n let isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n if ((this.isEditTextBox() || preventAction || preventHomeEnd) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n let isTabAction = e.action === 'tab' || e.action === 'close';\n if (this.list === undefined && !this.isRequested && !isTabAction && e.action !== 'escape') {\n this.searchKeyEvent = e;\n this.renderList();\n }\n if (!(this.isServerBlazor && (e.action === 'open' || e.action === 'space')) && isNullOrUndefined(this.list) ||\n (!isNullOrUndefined(this.liCollections) && isNavigation && this.liCollections.length === 0) || this.isRequested) {\n if (!(this.isServerBlazor && isNavAction)) {\n return;\n }\n }\n if ((isTabAction && this.getModuleName() !== 'autocomplete') && this.isPopupOpen\n || e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n this.isTyped = (isNavigation || e.action === 'escape') ? false : this.isTyped;\n switch (e.action) {\n case 'down':\n case 'up':\n this.updateUpDownAction(e);\n break;\n case 'pageUp':\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'pageDown':\n this.pageDownSelection(this.activeIndex + this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'home':\n this.updateHomeEndAction(e);\n break;\n case 'end':\n this.updateHomeEndAction(e);\n break;\n case 'space':\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.beforePopupOpen) {\n this.showPopup();\n }\n }\n break;\n case 'open':\n this.showPopup();\n break;\n case 'hide':\n this.preventAltUp = this.isPopupOpen;\n this.hidePopup(e);\n this.focusDropDown(e);\n break;\n case 'enter':\n this.selectCurrentItem(e);\n break;\n case 'tab':\n this.selectCurrentValueOnTab(e);\n break;\n case 'escape':\n case 'close':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n break;\n }\n }\n }\n updateUpDownAction(e) {\n if (this.isServerBlazor && isNullOrUndefined(this.list)) {\n this.isServerNavigation = true;\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', true, false);\n }\n else {\n this.isServerNavigation = false;\n let focusEle = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isSelectFocusItem(focusEle)) {\n this.setSelection(focusEle, e);\n }\n else {\n let nextItem;\n let index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n let startIndex = 0;\n if (this.getModuleName() === 'autocomplete') {\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n }\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex] : this.liCollections[index];\n if (!isNullOrUndefined(nextItem)) {\n this.setSelection(nextItem, e);\n }\n }\n e.preventDefault();\n }\n }\n updateHomeEndAction(e) {\n if (this.getModuleName() === 'dropdownlist') {\n if (this.isServerBlazor && isNullOrUndefined(this.list)) {\n this.isServerNavigation = true;\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', true, false);\n }\n else {\n this.isServerNavigation = false;\n let findLi = 0;\n if (e.action === 'home') {\n findLi = 0;\n }\n else {\n findLi = this.getItems().length - 1;\n }\n e.preventDefault();\n if (this.activeIndex === findLi) {\n return;\n }\n this.setSelection(this.liCollections[findLi], e);\n }\n }\n }\n selectCurrentValueOnTab(e) {\n if (this.getModuleName() === 'autocomplete') {\n this.selectCurrentItem(e);\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n }\n }\n mobileKeyActionHandler(e) {\n if (!this.enabled) {\n return;\n }\n if ((this.isEditTextBox()) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n if (this.list === undefined && !this.isRequested) {\n this.searchKeyEvent = e;\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'enter') {\n this.selectCurrentItem(e);\n }\n }\n }\n selectCurrentItem(e) {\n if (this.isPopupOpen) {\n let li = this.list.querySelector('.' + dropDownListClasses.focus);\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.hidePopup();\n this.focusDropDown(e);\n }\n else {\n this.showPopup();\n }\n }\n isSelectFocusItem(element) {\n return !isNullOrUndefined(element);\n }\n getPageCount() {\n let liHeight = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n return Math.round(this.list.getBoundingClientRect().height / parseInt(liHeight, 10));\n }\n pageUpSelection(steps, event) {\n let previousItem = steps >= 0 ? this.liCollections[steps + 1] : this.liCollections[0];\n this.setSelection(previousItem, event);\n }\n ;\n pageDownSelection(steps, event) {\n let list = this.getItems();\n let previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];\n this.setSelection(previousItem, event);\n }\n ;\n unWireEvent() {\n EventHandler.remove(this.inputWrapper.container, 'mousedown', this.dropDownClick);\n EventHandler.remove(this.inputWrapper.container, 'keypress', this.onSearch);\n EventHandler.remove(this.inputWrapper.container, 'focus', this.focusIn);\n this.unBindCommonEvent();\n }\n /**\n * Event un binding for list items.\n */\n unWireListEvents() {\n EventHandler.remove(this.list, 'click', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n ;\n checkSelector(id) {\n return '#' + id.replace(/(:|\\.|\\[|\\]|,|=|@|\\\\|\\/|#)/g, '\\\\$1');\n }\n onDocumentClick(e) {\n let target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, this.checkSelector(this.popupObj.element.id))) &&\n !this.inputWrapper.container.contains(e.target)) {\n if (this.inputWrapper.container.classList.contains(dropDownListClasses.inputFocus) || this.isPopupOpen) {\n this.isDocumentClick = true;\n let isActive = this.isRequested;\n this.isInteracted = false;\n this.hidePopup(e);\n if (!isActive) {\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n }\n }\n else if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput)\n && !(this.getModuleName() === 'combobox' &&\n !this.allowFiltering && Browser.isDevice && target === this.inputWrapper.buttons[0])) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.targetElement() ||\n document.activeElement === this.filterInput);\n e.preventDefault();\n }\n }\n activeStateChange() {\n if (this.isDocumentClick) {\n this.hidePopup();\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n }\n focusDropDown(e) {\n if (!this.initial && this.isFilterLayout()) {\n this.focusIn(e);\n }\n }\n dropDownClick(e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable) || this.inputWrapper.clearButton === e.target) {\n return;\n }\n let target = e.target;\n if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput) && this.getModuleName() !== 'combobox') {\n e.preventDefault();\n }\n if (!this.readonly) {\n if (this.isPopupOpen) {\n this.hidePopup();\n if (this.isFilterLayout()) {\n this.focusDropDown(e);\n }\n }\n else {\n this.focusIn(e);\n this.floatLabelChange();\n this.queryString = this.inputElement.value.trim() === '' ? null : this.inputElement.value;\n this.isDropDownClick = true;\n this.showPopup();\n }\n let proxy = this;\n let duration = (isBlazor()) ? 1000 : (this.element.tagName === this.getNgDirective() && this.itemTemplate) ? 500 : 100;\n if (!this.isSecondClick) {\n setTimeout(() => { proxy.cloneElements(); proxy.isSecondClick = true; }, duration);\n }\n }\n else {\n this.focusIn(e);\n }\n }\n cloneElements() {\n if (this.list) {\n let ulElement = this.list.querySelector('ul');\n if (ulElement) {\n ulElement = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.actionCompleteData.ulElement = ulElement;\n }\n }\n }\n updateSelectedItem(li, e, preventSelect, isSelection) {\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n let value = this.getFormattedValue(li.getAttribute('data-value'));\n let selectedData = this.getDataByValue(value);\n if (!this.initial && !preventSelect && !isNullOrUndefined(e)) {\n let items = this.detachChanges(selectedData);\n this.isSelected = true;\n let eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, (eventArgs) => {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n }\n else {\n this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (this.isServerBlazor) {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerItemData', this.itemData);\n }\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n });\n }\n else {\n this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (this.isServerBlazor) {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerItemData', this.itemData);\n }\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n }\n selectEventCallback(li, e, preventSelect, selectedData, value) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n this.item = li;\n this.itemData = selectedData;\n let focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n li.setAttribute('aria-selected', 'true');\n this.activeIndex = this.getIndexByValue(value);\n }\n activeItem(li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.selected)) {\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n li.setAttribute('aria-selected', 'true');\n }\n }\n setValue(e) {\n let dataItem = this.getItemData();\n if (dataItem.value === null) {\n if (isBlazor() && dataItem.text !== null || dataItem.text !== '') {\n Input.setValue(dataItem.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(null, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n else {\n Input.setValue(dataItem.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.isServerBlazor) {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerValueTemplate', dataItem);\n }\n if (this.valueTemplate && this.itemData !== null && !this.isServerBlazor) {\n this.DropDownBaseresetBlazorTemplates(false, false, false, false, true);\n this.setValueTemplate();\n }\n else if (this.inputElement.previousSibling === this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n }\n if (this.previousValue === dataItem.value) {\n this.isSelected = false;\n return true;\n }\n else {\n this.isSelected = !this.initial ? true : false;\n this.isSelectCustom = false;\n if (this.getModuleName() === 'dropdownlist') {\n this.updateIconState();\n }\n return false;\n }\n }\n setSelection(li, e) {\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || (this.isPopupOpen && this.isSelected\n && li.classList.contains(dropDownBaseClasses.selected)))) {\n this.updateSelectedItem(li, e, false, true);\n }\n else {\n this.setSelectOptions(li, e);\n }\n }\n setSelectOptions(li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = (!isNullOrUndefined(this.selectedLI)) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.setValue(e)) {\n return;\n }\n if (this.isPopupOpen) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.selectedLI ? this.selectedLI.id : null });\n if (this.isFilterLayout() && this.filterInput) {\n attributes(this.filterInput, { 'aria-activedescendant': this.selectedLI ? this.selectedLI.id : null });\n }\n }\n if ((!this.isPopupOpen && !isNullOrUndefined(li)) || (this.isPopupOpen && !isNullOrUndefined(e) &&\n (e.type !== 'keydown' || e.type === 'keydown' && e.action === 'enter'))) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.selectedLI) && this.itemData !== null && (!e || e.type !== 'click')) {\n this.setScrollPosition(e);\n }\n if (Browser.info.name !== 'mozilla') {\n attributes(this.inputElement, { 'aria-label': this.inputElement.value });\n attributes(this.targetElement(), { 'aria-describedby': this.inputElement.id });\n this.targetElement().removeAttribute('aria-live');\n }\n }\n dropdownCompiler(dropdownTemplate) {\n let checkTemplate = false;\n if (dropdownTemplate) {\n try {\n checkTemplate = (document.querySelectorAll(dropdownTemplate).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n }\n setValueTemplate() {\n let compiledString;\n if (!this.valueTempElement) {\n this.valueTempElement = this.createElement('span', { className: dropDownListClasses.value });\n this.inputElement.parentElement.insertBefore(this.valueTempElement, this.inputElement);\n this.inputElement.style.display = 'none';\n }\n this.valueTempElement.innerHTML = '';\n let templateData = (isBlazor()) ? JSON.parse(JSON.stringify(this.itemData)) : this.itemData;\n let valuecheck = this.dropdownCompiler(this.valueTemplate);\n if (valuecheck) {\n compiledString = compile(document.querySelector(this.valueTemplate).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n for (let item of compiledString(templateData, null, null, this.valueTemplateId, this.isStringTemplate)) {\n this.valueTempElement.appendChild(item);\n }\n this.DropDownBaseupdateBlazorTemplates(false, false, false, false, true, true, true);\n }\n removeSelection() {\n if (this.list) {\n let selectedItems = this.list.querySelectorAll('.' + dropDownBaseClasses.selected);\n if (selectedItems.length) {\n removeClass(selectedItems, dropDownBaseClasses.selected);\n selectedItems[0].removeAttribute('aria-selected');\n }\n }\n }\n ;\n getItemData() {\n let fields = this.fields;\n let dataItem = null;\n dataItem = this.itemData;\n let dataValue;\n let dataText;\n if (!isNullOrUndefined(dataItem)) {\n dataValue = getValue(fields.value, dataItem);\n dataText = getValue(fields.text, dataItem);\n }\n let value = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataValue : dataItem);\n let text = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataText : dataItem);\n return { value: value, text: text };\n }\n /**\n * To trigger the change event for list.\n */\n onChangeEvent(eve) {\n let dataItem = this.getItemData();\n let index = this.isSelectCustom ? null : this.activeIndex;\n this.setProperties({ 'index': index, 'text': dataItem.text, 'value': dataItem.value }, true);\n this.detachChangeEvent(eve);\n }\n ;\n detachChanges(value) {\n let items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n }\n detachChangeEvent(eve) {\n this.isSelected = false;\n this.previousValue = this.value;\n this.activeIndex = this.index;\n this.typedString = !isNullOrUndefined(this.text) ? this.text : '';\n if (!this.initial) {\n let items = this.detachChanges(this.itemData);\n let preItems;\n if (typeof this.previousItemData === 'string' ||\n typeof this.previousItemData === 'boolean' ||\n typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n }\n else {\n preItems = this.previousItemData;\n }\n this.setHiddenValue();\n let eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.value,\n element: this.element\n };\n this.trigger('change', eventArgs);\n if (this.isServerBlazor && this.enablePersistence) {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('ServerChange');\n }\n }\n if ((isNullOrUndefined(this.value) || this.value === '') && this.floatLabelType !== 'Always') {\n removeClass([this.inputWrapper.container], 'e-valid-input');\n }\n }\n setHiddenValue() {\n if (!isNullOrUndefined(this.value)) {\n if (this.isServerBlazor && this.hiddenElement.querySelector('option')) {\n let selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.textContent = this.text;\n selectedElement.setAttribute('value', this.value.toString());\n }\n else if (!this.isServerBlazor) {\n this.hiddenElement.innerHTML = '';\n let selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.setAttribute('value', this.value.toString());\n }\n }\n else if (!this.isServerBlazor) {\n this.hiddenElement.innerHTML = '';\n }\n }\n /**\n * Filter bar implementation\n */\n onFilterUp(e) {\n if (!(e.ctrlKey && e.keyCode === 86) && (this.isValidKey || e.keyCode === 40 || e.keyCode === 38)) {\n this.isValidKey = false;\n switch (e.keyCode) {\n case 38: //up arrow \n case 40: //down arrow \n if (this.getModuleName() === 'autocomplete' && !this.isPopupOpen && !this.preventAltUp && !this.isRequested) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else {\n this.preventAutoFill = false;\n }\n this.preventAltUp = false;\n e.preventDefault();\n break;\n case 46: //delete\n case 8: //backspace\n this.typedString = this.filterInput.value;\n if (!this.isPopupOpen && this.typedString !== '' || this.isPopupOpen && this.queryString.length > 0) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '' && this.queryString === '' && this.getModuleName() !== 'autocomplete') {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '') {\n if (this.list) {\n this.resetFocusElement();\n }\n this.activeIndex = null;\n if (this.getModuleName() === 'autocomplete') {\n this.hidePopup();\n }\n }\n e.preventDefault();\n break;\n default:\n this.typedString = this.filterInput.value;\n this.preventAutoFill = false;\n this.searchLists(e);\n break;\n }\n }\n else {\n this.isValidKey = false;\n }\n }\n onFilterDown(e) {\n switch (e.keyCode) {\n case 13: //enter\n break;\n case 40: //down arrow\n case 38: //up arrow \n this.queryString = this.filterInput.value;\n e.preventDefault();\n break;\n case 9: //tab \n if (this.isPopupOpen && this.getModuleName() !== 'autocomplete') {\n e.preventDefault();\n }\n break;\n default:\n this.prevSelectPoints = this.getSelectionPoints();\n this.queryString = this.filterInput.value;\n break;\n }\n }\n removeFillSelection() {\n if (this.isInteracted) {\n let selection = this.getSelectionPoints();\n this.inputElement.setSelectionRange(selection.end, selection.end);\n }\n }\n getQuery(query) {\n let filterQuery;\n if (!this.isCustomFilter && this.allowFiltering && this.filterInput) {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n let filterType = this.typedString === '' ? 'contains' : this.filterType;\n let dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n let fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = query ? query : this.query ? this.query : new Query();\n }\n return filterQuery;\n }\n getSelectionPoints() {\n let input = this.inputElement;\n return { start: Math.abs(input.selectionStart), end: Math.abs(input.selectionEnd) };\n }\n searchLists(e) {\n this.isTyped = true;\n this.activeIndex = null;\n if (this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon)) {\n let clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n this.isDataFetched = false;\n if (this.isFiltering()) {\n if (this.isServerBlazor) {\n this.beforePopupOpen = (this.getModuleName() === 'combobox' && this.isFiltering() && !this.beforePopupOpen)\n ? !this.beforePopupOpen : this.beforePopupOpen;\n if (this.filterInput.value === '' && this.getModuleName() !== 'dropdownlist') {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', this.beforePopupOpen, false);\n }\n else {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerFilter', this.filterInput.value);\n }\n }\n else {\n let eventArgs = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: (dataSource, query, fields) => {\n if (eventArgs.cancel) {\n return;\n }\n this.isCustomFilter = true;\n this.filteringAction(dataSource, query, fields);\n },\n baseEventArgs: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs, (eventArgs) => {\n if (!eventArgs.cancel && !this.isCustomFilter && !eventArgs.preventDefaultAction) {\n this.filteringAction(this.dataSource, null, this.fields);\n }\n });\n }\n }\n }\n /**\n * To filter the data from given data source by using query\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @return {void}.\n * @deprecated\n */\n filter(dataSource, query, fields) {\n this.isCustomFilter = true;\n this.filteringAction(dataSource, query, fields);\n }\n filteringAction(dataSource, query, fields) {\n if (!isNullOrUndefined(this.filterInput)) {\n this.beforePopupOpen = true;\n if (this.filterInput.value.trim() === '' && !this.itemTemplate) {\n this.actionCompleteData.isUpdated = false;\n this.isTyped = false;\n if (!isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list)) {\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list);\n }\n this.isTyped = true;\n if (!isNullOrUndefined(this.itemData) && this.getModuleName() === 'dropdownlist') {\n this.focusIndexItem();\n this.setScrollPosition();\n }\n this.isNotSearchList = true;\n }\n else {\n this.isNotSearchList = false;\n query = (this.filterInput.value.trim() === '') ? null : query;\n this.resetList(dataSource, fields, query);\n }\n }\n }\n setSearchBox(popupElement) {\n if (this.isFiltering()) {\n let parentElement = popupElement.querySelector('.' + dropDownListClasses.filterParent) ?\n popupElement.querySelector('.' + dropDownListClasses.filterParent) : this.createElement('span', {\n className: dropDownListClasses.filterParent\n });\n if (this.isServerBlazor) {\n parentElement.innerHTML = '';\n }\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: dropDownListClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n let backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ?\n [dropDownListClasses.backIcon, dropDownListClasses.filterBarClearIcon] : [dropDownListClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n if (!isNullOrUndefined(this.cssClass)) {\n if (this.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], parentElement);\n prepend([parentElement], popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'aria-owns': this.element.id + '_options',\n 'role': 'listbox',\n 'aria-activedescendant': this.selectedLI ? this.selectedLI.id : null,\n 'autocomplete': 'off',\n 'autocorrect': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n if (!Browser.isDevice) {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n else {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.mobileKeyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.filterInput, 'blur', this.onBlur, this);\n EventHandler.add(this.filterInput, 'paste', this.pasteHandler, this);\n return this.filterInputObj;\n }\n else {\n return inputObject;\n }\n }\n ;\n onInput(e) {\n this.isValidKey = true;\n // For filtering works in mobile firefox.\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.typedString = this.filterInput.value;\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n }\n pasteHandler(e) {\n setTimeout(() => {\n this.typedString = this.filterInput.value;\n this.searchLists(e);\n });\n }\n onActionFailure(e) {\n super.onActionFailure(e);\n if (this.beforePopupOpen) {\n this.renderPopup();\n }\n }\n onActionComplete(ulElement, list, e, isUpdated) {\n if (this.isNotSearchList) {\n this.isNotSearchList = false;\n return;\n }\n if (this.isActive) {\n let selectedItem = this.selectedLI ? this.selectedLI.cloneNode(true) : null;\n super.onActionComplete(ulElement, list, e);\n this.updateSelectElementData(this.allowFiltering);\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent) && this.searchKeyEvent.type === 'keydown') {\n this.isRequested = false;\n this.keyActionHandler(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent)) {\n this.incrementalSearch(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n this.list.scrollTop = 0;\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\n if (this.initRemoteRender) {\n this.initial = true;\n this.activeIndex = this.index;\n this.updateValues();\n this.initRemoteRender = false;\n this.initial = false;\n if (this.value && this.dataSource instanceof DataManager) {\n let checkField = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n let checkVal = list.some((x) => x[checkField] === this.value);\n if (!checkVal) {\n this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField, 'equal', this.value)))\n .then((e) => {\n if (e.result.length > 0) {\n this.addItem(e.result, list.length);\n this.updateValues();\n }\n });\n }\n }\n }\n if (this.getModuleName() !== 'autocomplete' && this.isFiltering() && !this.isTyped) {\n if (!this.actionCompleteData.isUpdated || ((!this.isCustomFilter\n && !this.isFilterFocus)\n && ((this.dataSource instanceof DataManager)\n || (!isNullOrUndefined(this.dataSource) && !isNullOrUndefined(this.dataSource.length) &&\n this.dataSource.length !== 0)))) {\n this.actionCompleteData = { ulElement: ulElement.cloneNode(true), list: list, isUpdated: true };\n }\n this.addNewItem(list, selectedItem);\n if (!isNullOrUndefined(this.itemData)) {\n this.focusIndexItem();\n }\n }\n if (this.beforePopupOpen) {\n this.renderPopup();\n }\n }\n }\n addNewItem(listData, newElement) {\n if (!isNullOrUndefined(this.itemData) && !isNullOrUndefined(newElement)) {\n let value = this.getItemData().value;\n let isExist = listData.some((data) => {\n return (((typeof data === 'string' || typeof data === 'number') && data === value) ||\n (getValue(this.fields.value, data) === value));\n });\n if (!isExist) {\n this.addItem(this.itemData);\n }\n }\n }\n updateActionCompleteData(li, item, index) {\n if (this.getModuleName() !== 'autocomplete' && this.actionCompleteData.ulElement) {\n this.actionCompleteData.ulElement.insertBefore(li.cloneNode(true), this.actionCompleteData.ulElement.childNodes[index]);\n if (this.isFiltering() && this.actionCompleteData.list.indexOf(item) < 0) {\n this.actionCompleteData.list.push(item);\n }\n }\n }\n focusIndexItem() {\n let value = this.getItemData().value;\n this.activeIndex = this.getIndexByValue(value);\n let element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n this.activeItem(element);\n this.removeFocus();\n }\n updateSelection() {\n let selectedItem = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (selectedItem) {\n this.setProperties({ 'index': this.getIndexByValue(selectedItem.getAttribute('data-value')) });\n this.activeIndex = this.index;\n }\n else {\n this.removeFocus();\n this.list.querySelector('.' + dropDownBaseClasses.li).classList.add(dropDownListClasses.focus);\n }\n }\n removeFocus() {\n let highlightedItem = this.list.querySelectorAll('.' + dropDownListClasses.focus);\n if (highlightedItem && highlightedItem.length) {\n removeClass(highlightedItem, dropDownListClasses.focus);\n }\n }\n ;\n renderPopup() {\n if (this.popupObj && document.body.contains(this.popupObj.element)) {\n this.refreshPopup();\n return;\n }\n let args = { cancel: false };\n this.trigger('beforeOpen', args, (args) => {\n if (!args.cancel) {\n let popupEle = (this.serverPopupEle) ? this.serverPopupEle : this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-ddl e-popup ' + (this.cssClass != null ? this.cssClass : '')\n });\n let searchBox = this.setSearchBox(popupEle);\n this.listHeight = formatUnit(this.popupHeight);\n if (this.headerTemplate && !this.isServerBlazor) {\n this.setHeaderTemplate(popupEle);\n }\n append([this.list], popupEle);\n if (this.footerTemplate && !this.isServerBlazor) {\n this.setFooterTemplate(popupEle);\n }\n if (this.isServerRendered && popupEle && popupEle.querySelector('.e-ddl-footer')) {\n popupEle.appendChild(popupEle.querySelector('.e-ddl-footer'));\n }\n document.body.appendChild(popupEle);\n this.updateServerPopup(popupEle);\n popupEle.style.visibility = 'hidden';\n if (this.popupHeight !== 'auto') {\n this.searchBoxHeight = 0;\n if (!isNullOrUndefined(searchBox.container)) {\n this.searchBoxHeight = (searchBox.container.parentElement).getBoundingClientRect().height;\n this.listHeight = (parseInt(this.listHeight, 10) - (this.searchBoxHeight)).toString() + 'px';\n }\n if (this.headerTemplate || (this.isServerRendered && popupEle && popupEle.querySelector('.e-ddl-header'))) {\n this.header = this.header ? this.header : popupEle.querySelector('.e-ddl-header');\n let height = Math.round(this.header.getBoundingClientRect().height);\n this.listHeight = (parseInt(this.listHeight, 10) - (height + this.searchBoxHeight)).toString() + 'px';\n }\n if (this.footerTemplate || (this.isServerRendered && popupEle && popupEle.querySelector('.e-ddl-footer'))) {\n this.footer = this.footer ? this.footer : popupEle.querySelector('.e-ddl-footer');\n let height = Math.round(this.footer.getBoundingClientRect().height);\n this.listHeight = (parseInt(this.listHeight, 10) - (height + this.searchBoxHeight)).toString() + 'px';\n }\n this.list.style.maxHeight = (parseInt(this.listHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n let offsetValue = 0;\n let left;\n if (!isNullOrUndefined(this.selectedLI) && (!isNullOrUndefined(this.activeIndex) && this.activeIndex >= 0)) {\n this.setScrollPosition();\n }\n else {\n this.list.scrollTop = 0;\n }\n if (Browser.isDevice && (!this.allowFiltering && (this.getModuleName() === 'dropdownlist' ||\n (this.isDropDownClick && this.getModuleName() === 'combobox')))) {\n offsetValue = this.getOffsetValue(popupEle);\n let firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n left = -(parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(this.inputElement.parentElement).borderLeftWidth, 10));\n }\n this.getFocusElement();\n this.createPopup(popupEle, offsetValue, left);\n this.checkCollision(popupEle);\n if (Browser.isDevice) {\n this.popupObj.element.classList.add(dropDownListClasses.device);\n if (this.getModuleName() === 'dropdownlist' || (this.getModuleName() === 'combobox'\n && !this.allowFiltering && this.isDropDownClick)) {\n this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n if (this.isFilterLayout()) {\n this.popupObj.element.classList.add(dropDownListClasses.mobileFilter);\n this.popupObj.position = { X: 0, Y: 0 };\n this.popupObj.dataBind();\n attributes(this.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, this.popupObj.element], dropDownListClasses.popupFullScreen);\n this.setSearchBoxPosition();\n this.backIconElement = searchBox.container.querySelector('.e-back-icon');\n this.clearIconElement = searchBox.container.querySelector('.' + dropDownListClasses.clearIcon);\n EventHandler.add(this.backIconElement, 'click', this.clickOnBackIcon, this);\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n }\n }\n popupEle.style.visibility = 'visible';\n addClass([popupEle], 'e-popup-close');\n let scrollParentElements = this.popupObj.getScrollableParent(this.inputWrapper.container);\n for (let element of scrollParentElements) {\n EventHandler.add(element, 'scroll', this.scrollHandler, this);\n }\n if (Browser.isDevice && this.isFilterLayout()) {\n EventHandler.add(this.list, 'scroll', this.listScroll, this);\n }\n attributes(this.targetElement(), { 'aria-expanded': 'true' });\n let inputParent = this.isFiltering() ? this.filterInput.parentElement : this.inputWrapper.container;\n addClass([inputParent], [dropDownListClasses.inputFocus]);\n let animModel = { name: 'FadeIn', duration: 100 };\n this.beforePopupOpen = true;\n let popupInstance = (isBlazor() && this.isServerRendered) ? null : this.popupObj;\n let eventArgs = { popup: popupInstance, cancel: false, animation: animModel };\n this.trigger('open', eventArgs, (eventArgs) => {\n if (!eventArgs.cancel) {\n this.serverBlazorUpdateSelection();\n this.bindServerScrollEvent();\n addClass([this.inputWrapper.container], [dropDownListClasses.iconAnimation]);\n this.popupObj.show(new Animation(eventArgs.animation), (this.zIndex === 1000) ? this.element : null);\n }\n else {\n this.beforePopupOpen = false;\n this.destroyPopup();\n }\n });\n }\n else {\n this.beforePopupOpen = false;\n }\n });\n }\n checkCollision(popupEle) {\n if (!Browser.isDevice || (Browser.isDevice && !(this.getModuleName() === 'dropdownlist' || this.isDropDownClick))) {\n let collision = isCollide(popupEle);\n if (collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n }\n this.popupObj.resolveCollision();\n }\n }\n serverBlazorUpdateSelection() {\n if (this.isServerBlazor && (this.value !== null || this.index !== null || this.text !== null) ||\n (this.getModuleName() !== 'dropdownlist' && !this.isTyped)) {\n if (this.getModuleName() === 'dropdownlist') {\n this.removeSelection();\n this.removeFocus();\n this.removeHover();\n this.updateValues();\n }\n if (this.getModuleName() === 'combobox' && this.ulElement &&\n this.findListElement(this.ulElement, 'li', 'data-value', this.value) && !this.isTyped) {\n this.updateValues();\n }\n if (this.isServerBlazor && this.getModuleName() !== 'dropdownlist' &&\n (this.text === '' || this.text === null) && this.ulElement) {\n if (!this.ulElement.querySelector('li').classList.contains(dropDownBaseClasses.hover)) {\n addClass([this.ulElement.querySelector('li')], dropDownBaseClasses.hover);\n }\n }\n }\n }\n bindServerScrollEvent() {\n if (this.isServerBlazor && this.list) {\n if ((this.fields.groupBy) && !this.isGroupChecking) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n }\n }\n updateServerPopup(popupEle) {\n if (this.isServerBlazor) {\n if (popupEle && popupEle.querySelector('li')) {\n removeClass([popupEle.querySelector('.e-content')], ['e-nodata']);\n }\n this.initial = false;\n popupEle.removeAttribute('style');\n }\n }\n getOffsetValue(popupEle) {\n let popupStyles = getComputedStyle(popupEle);\n let borderTop = parseInt(popupStyles.borderTopWidth, 10);\n let borderBottom = parseInt(popupStyles.borderBottomWidth, 10);\n return this.setPopupPosition(borderTop + borderBottom);\n }\n createPopup(element, offsetValue, left) {\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputWrapper.container, collision: { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left, position: { X: 'left', Y: 'bottom' },\n zIndex: this.zIndex,\n close: () => {\n if (!this.isDocumentClick) {\n this.focusDropDown();\n }\n let isResetItem = (this.getModuleName() === 'autocomplete') ? true : false;\n this.DropDownBaseresetBlazorTemplates(isResetItem, isResetItem, true, true, false, true, true);\n this.isNotSearchList = false;\n this.isDocumentClick = false;\n this.destroyPopup();\n let formElement = closest(this.inputElement, 'form');\n if (this.isFiltering() && formElement && this.actionCompleteData.list && this.actionCompleteData.list[0]) {\n this.isActive = true;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n },\n open: () => {\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n this.isPopupOpen = true;\n let actionList = this.actionCompleteData && this.actionCompleteData.ulElement &&\n this.actionCompleteData.ulElement.querySelector('li');\n let ulElement = this.list.querySelector('ul li');\n if (this.isFiltering() && this.itemTemplate && (this.element.tagName === this.getNgDirective()) &&\n (actionList && ulElement && actionList.textContent !== ulElement.textContent)) {\n this.cloneElements();\n }\n if (this.isFilterLayout()) {\n removeClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n this.isFilterFocus = true;\n this.filterInput.focus();\n if (this.inputWrapper.clearButton) {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n this.activeStateChange();\n },\n targetExitViewport: () => {\n if (!Browser.isDevice) {\n this.hidePopup();\n }\n }\n });\n }\n isEmptyList() {\n return !isNullOrUndefined(this.liCollections) && this.liCollections.length === 0;\n }\n getFocusElement() {\n // combo-box used this method\n }\n isFilterLayout() {\n return this.getModuleName() === 'dropdownlist' && this.allowFiltering;\n }\n scrollHandler() {\n if (Browser.isDevice && ((this.getModuleName() === 'dropdownlist' &&\n !this.isFilterLayout()) || (this.getModuleName() === 'combobox' && !this.allowFiltering && this.isDropDownClick))) {\n this.hidePopup();\n }\n }\n setSearchBoxPosition() {\n let searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n this.popupObj.element.style.maxHeight = '100%';\n this.popupObj.element.style.width = '100%';\n this.list.style.maxHeight = (window.innerHeight - searchBoxHeight) + 'px';\n this.list.style.height = (window.innerHeight - searchBoxHeight) + 'px';\n let clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n }\n setPopupPosition(border) {\n let offsetValue;\n let popupOffset = border;\n let selectedLI = this.list.querySelector('.' + dropDownListClasses.focus) || this.selectedLI;\n let firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n let lastItem = this.isEmptyList() ? this.list : this.liCollections[this.getItems().length - 1];\n let liHeight = firstItem.getBoundingClientRect().height;\n let listHeight = this.list.offsetHeight / 2;\n let height = isNullOrUndefined(selectedLI) ? firstItem.offsetTop : selectedLI.offsetTop;\n let lastItemOffsetValue = lastItem.offsetTop;\n if (lastItemOffsetValue - listHeight < height && !isNullOrUndefined(this.liCollections) &&\n this.liCollections.length > 0 && !isNullOrUndefined(selectedLI)) {\n let count = this.list.offsetHeight / liHeight;\n let paddingBottom = parseInt(getComputedStyle(this.list).paddingBottom, 10);\n offsetValue = (count - (this.liCollections.length - this.activeIndex)) * liHeight - popupOffset + paddingBottom;\n this.list.scrollTop = selectedLI.offsetTop;\n }\n else if (height > listHeight) {\n offsetValue = listHeight - liHeight / 2;\n this.list.scrollTop = height - listHeight + liHeight / 2;\n }\n else {\n offsetValue = height;\n }\n let inputHeight = this.inputWrapper.container.offsetHeight;\n offsetValue = offsetValue + liHeight + popupOffset - ((liHeight - inputHeight) / 2);\n return -offsetValue;\n }\n setWidth() {\n let width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n let inputWidth = this.inputWrapper.container.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n if (Browser.isDevice && (!this.allowFiltering && (this.getModuleName() === 'dropdownlist' ||\n (this.isDropDownClick && this.getModuleName() === 'combobox')))) {\n let firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n width = (parseInt(width, 10) + (parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(this.inputElement.parentElement).borderLeftWidth, 10)) * 2) + 'px';\n }\n return width;\n }\n scrollBottom(isInitial) {\n if (!isNullOrUndefined(this.selectedLI)) {\n let currentOffset = this.list.offsetHeight;\n let nextBottom = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n let nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset;\n let boxRange = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n }\n }\n scrollTop() {\n if (!isNullOrUndefined(this.selectedLI)) {\n let nextOffset = this.selectedLI.offsetTop - this.list.scrollTop;\n let nextBottom = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n nextOffset = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n let boxRange = (this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop);\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0) {\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = this.selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n }\n }\n isEditTextBox() {\n return false;\n }\n isFiltering() {\n return this.allowFiltering;\n }\n isPopupButton() {\n return true;\n }\n setScrollPosition(e) {\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.scrollBottom();\n break;\n default:\n this.scrollTop();\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n }\n clearText() {\n this.filterInput.value = '';\n this.searchLists(null);\n }\n listScroll() {\n this.filterInput.blur();\n }\n setEleWidth(width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n }\n closePopup(delay) {\n this.isTyped = false;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.isActive = false;\n this.filterInputObj = null;\n this.isDropDownClick = false;\n this.preventAutoFill = false;\n let scrollableParentElements = this.popupObj.getScrollableParent(this.inputWrapper.container);\n for (let element of scrollableParentElements) {\n EventHandler.remove(element, 'scroll', this.scrollHandler);\n }\n if (Browser.isDevice && this.isFilterLayout()) {\n removeClass([document.body, this.popupObj.element], dropDownListClasses.popupFullScreen);\n EventHandler.remove(this.list, 'scroll', this.listScroll);\n }\n if (this.isFilterLayout()) {\n if (!Browser.isDevice) {\n this.searchKeyModule.destroy();\n if (this.clearIconElement) {\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n }\n if (this.backIconElement) {\n EventHandler.remove(this.backIconElement, 'click', this.clickOnBackIcon);\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n EventHandler.remove(this.filterInput, 'input', this.onInput);\n EventHandler.remove(this.filterInput, 'keyup', this.onFilterUp);\n EventHandler.remove(this.filterInput, 'keydown', this.onFilterDown);\n EventHandler.remove(this.filterInput, 'blur', this.onBlur);\n EventHandler.remove(this.filterInput, 'paste', this.pasteHandler);\n this.filterInput = null;\n }\n attributes(this.targetElement(), { 'aria-expanded': 'false', 'aria-activedescendant': null });\n this.inputWrapper.container.classList.remove(dropDownListClasses.iconAnimation);\n if (this.isFiltering()) {\n this.actionCompleteData.isUpdated = false;\n }\n this.beforePopupOpen = false;\n let animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n let popupInstance = (isBlazor() && this.isServerRendered) ? null : this.popupObj;\n let eventArgs = { popup: popupInstance, cancel: false, animation: animModel };\n this.trigger('close', eventArgs, (eventArgs) => {\n if (!isNullOrUndefined(this.popupObj) &&\n !isNullOrUndefined(this.popupObj.element.querySelector('.e-fixed-head'))) {\n let fixedHeader = this.popupObj.element.querySelector('.e-fixed-head');\n fixedHeader.parentNode.removeChild(fixedHeader);\n this.fixedHeaderElement = null;\n }\n if (!eventArgs.cancel) {\n if (this.getModuleName() === 'autocomplete' && !this.isServerBlazor) {\n this.rippleFun();\n }\n if (this.isPopupOpen) {\n this.popupObj.hide(new Animation(eventArgs.animation));\n }\n else {\n this.destroyPopup();\n }\n }\n });\n }\n destroyPopup() {\n let popupHolderEle = document.querySelector('#' + this.element.id + '_popup_holder');\n if (this.isServerBlazor && this.serverPopupEle && popupHolderEle) {\n popupHolderEle.appendChild(this.serverPopupEle);\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerClosePopup');\n }\n this.isPopupOpen = false;\n this.isFilterFocus = false;\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n clickOnBackIcon() {\n this.hidePopup();\n this.focusIn();\n }\n /**\n * To Initialize the control rendering\n * @private\n */\n // tslint:disable-next-line\n render() {\n if (this.isServerBlazor) {\n this.inputElement = this.element;\n this.inputWrapper = { container: this.element.parentElement };\n this.hiddenElement = this.inputWrapper.container.querySelector('select');\n this.inputWrapper.buttons = [this.inputWrapper.container.querySelector('.e-input-group-icon.e-ddl-icon')];\n if (this.showClearButton) {\n this.inputWrapper.clearButton = this.inputWrapper.container.querySelector('.e-clear-icon');\n Input.wireClearBtnEvents(this.element, this.inputWrapper.clearButton, this.inputWrapper.container);\n }\n if (this.floatLabelType === 'Auto') {\n Input.wireFloatingEvents(this.element);\n }\n Input.bindInitialEvent({\n element: this.element,\n buttons: null, customTag: null,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n });\n this.setFields();\n this.wireEvent();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n if (!this.enabled) {\n this.targetElement().tabIndex = -1;\n }\n if (this.element.hasAttribute('autofocus')) {\n this.focusIn();\n }\n this.initial = false;\n }\n else {\n if (this.element.tagName === 'INPUT') {\n this.inputElement = this.element;\n if (isNullOrUndefined(this.inputElement.getAttribute('role'))) {\n this.inputElement.setAttribute('role', 'textbox');\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('type'))) {\n this.inputElement.setAttribute('type', 'text');\n }\n }\n else {\n this.inputElement = this.createElement('input', { attrs: { role: 'textbox', type: 'text' } });\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n this.element.parentElement.insertBefore(this.inputElement, this.element);\n this.preventTabIndex(this.inputElement);\n }\n let updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n buttons: this.isPopupButton() ? [dropDownListClasses.icon] : null,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.getModuleName() === 'dropdownlist' ? true : this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n }, this.createElement);\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.inputWrapper.container);\n }\n else {\n this.inputElement.parentElement.insertBefore(this.element, this.inputElement);\n }\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'tabindex': '-1', 'class': dropDownListClasses.hiddenElement }\n });\n prepend([this.hiddenElement], this.inputWrapper.container);\n this.validationAttribute(this.element, this.hiddenElement);\n this.setFields();\n this.inputWrapper.container.style.width = formatUnit(this.width);\n this.inputWrapper.container.classList.add('e-ddl');\n this.wireEvent();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n let id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement.id = id + '_hidden';\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n attributes(this.targetElement(), this.getAriaAttributes());\n this.updateDataAttribute(this.htmlAttributes);\n this.setHTMLAttributes();\n if (this.value !== null || this.activeIndex !== null || this.text !== null) {\n this.initValue();\n }\n else if (this.element.tagName === 'SELECT' && this.element.options[0]) {\n let selectElement = this.element;\n this.value = selectElement.options[selectElement.selectedIndex].value;\n this.text = isNullOrUndefined(this.value) ? null : selectElement.options[selectElement.selectedIndex].textContent;\n this.initValue();\n }\n this.preventTabIndex(this.element);\n if (!this.enabled) {\n this.targetElement().tabIndex = -1;\n }\n this.initial = false;\n this.element.style.opacity = '';\n this.inputElement.onselect = (e) => { e.stopImmediatePropagation(); };\n this.inputElement.onchange = (e) => { e.stopImmediatePropagation(); };\n if (this.element.hasAttribute('autofocus')) {\n this.focusIn();\n }\n if (!isNullOrUndefined(this.text)) {\n this.inputElement.setAttribute('value', this.text);\n }\n }\n this.renderComplete();\n }\n ;\n setFooterTemplate(popupEle) {\n let compiledString;\n if (this.footer) {\n this.footer.innerHTML = '';\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], dropDownListClasses.footer);\n }\n let footercheck = this.dropdownCompiler(this.footerTemplate);\n if (footercheck) {\n compiledString = compile(document.querySelector(this.footerTemplate).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n for (let item of compiledString({}, null, null, this.footerTemplateId, this.isStringTemplate)) {\n this.footer.appendChild(item);\n }\n this.DropDownBaseupdateBlazorTemplates(false, false, false, false, false, false, true);\n append([this.footer], popupEle);\n }\n setHeaderTemplate(popupEle) {\n let compiledString;\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], dropDownListClasses.header);\n }\n let headercheck = this.dropdownCompiler(this.headerTemplate);\n if (headercheck) {\n compiledString = compile(document.querySelector(this.headerTemplate).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n for (let item of compiledString({}, null, null, this.headerTemplateId, this.isStringTemplate)) {\n this.header.appendChild(item);\n }\n this.DropDownBaseupdateBlazorTemplates(false, false, false, false, false, true, false);\n let contentEle = popupEle.querySelector('div.e-content');\n popupEle.insertBefore(this.header, contentEle);\n }\n setOldText(text) {\n this.text = text;\n }\n setOldValue(value) {\n this.value = value;\n }\n refreshPopup() {\n if (!isNullOrUndefined(this.popupObj) && document.body.contains(this.popupObj.element) &&\n ((this.allowFiltering && !(Browser.isDevice && this.isFilterLayout())) || this.getModuleName() === 'autocomplete')) {\n removeClass([this.popupObj.element], 'e-popup-close');\n this.popupObj.refreshPosition(this.inputWrapper.container);\n this.popupObj.resolveCollision();\n }\n }\n checkDatasource(newProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource)) && this.itemTemplate && this.allowFiltering) {\n this.list = null;\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n }\n let isChangeValue = Object.keys(newProp).indexOf('value') !== -1 && isNullOrUndefined(newProp.value);\n let isChangeText = Object.keys(newProp).indexOf('text') !== -1 && isNullOrUndefined(newProp.text);\n if (this.getModuleName() !== 'autocomplete' && this.allowFiltering && (isChangeValue || isChangeText)) {\n this.itemData = null;\n }\n }\n updateDataSource(props) {\n if (this.inputElement.value !== '' || (!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0)))) {\n this.clearAll(null, props);\n }\n if (!(!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0))) || !(props.dataSource === [])) {\n this.resetList(this.dataSource);\n }\n if (!this.isCustomFilter && !this.isFilterFocus && document.activeElement !== this.filterInput) {\n this.checkCustomValue();\n }\n }\n checkCustomValue() {\n this.itemData = this.getDataByValue(this.value);\n let dataItem = this.getItemData();\n this.setProperties({ 'value': dataItem.value, 'text': dataItem.text });\n }\n updateInputFields() {\n if (this.getModuleName() === 'dropdownlist') {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n /**\n * Dynamically change the value of properties.\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.isServerBlazor) {\n this.checkDatasource(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n }\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'query':\n case 'dataSource':\n break;\n case 'htmlAttributes':\n this.setHTMLAttributes();\n break;\n case 'width':\n this.setEleWidth(newProp.width);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'filterBarPlaceholder':\n if (this.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this.filterInput);\n }\n break;\n case 'readonly':\n if (this.getModuleName() !== 'dropdownlist') {\n Input.setReadonly(newProp.readonly, this.inputElement);\n }\n break;\n case 'cssClass':\n this.setCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'text':\n if (newProp.text === null) {\n this.clearAll();\n break;\n }\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n if (!this.initRemoteRender) {\n let li = this.getElementByText(newProp.text);\n if (!this.checkValidLi(li)) {\n if (this.liCollections && this.liCollections.length === 100 &&\n this.getModuleName() === 'autocomplete' && this.listData.length > 100) {\n this.setSelectionData(newProp.text, oldProp.text, 'text');\n }\n else if (!this.isServerBlazor) {\n this.setOldText(oldProp.text);\n }\n }\n this.updateInputFields();\n }\n break;\n case 'value':\n if (newProp.value === null) {\n this.clearAll();\n break;\n }\n this.notify('beforeValueChange', { newProp: newProp }); // gird component value type change\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n if (!this.initRemoteRender) {\n let item = this.getElementByValue(newProp.value);\n if (!this.checkValidLi(item)) {\n if (this.liCollections && this.liCollections.length === 100 &&\n this.getModuleName() === 'autocomplete' && this.listData.length > 100) {\n this.setSelectionData(newProp.value, oldProp.value, 'value');\n }\n else if (!this.isServerBlazor) {\n this.setOldValue(oldProp.value);\n }\n }\n this.updateInputFields();\n }\n break;\n case 'index':\n if (newProp.index === null) {\n this.clearAll();\n break;\n }\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n if (!this.initRemoteRender && this.liCollections) {\n let element = this.liCollections[newProp.index];\n if (!this.checkValidLi(element)) {\n if (this.liCollections && this.liCollections.length === 100 &&\n this.getModuleName() === 'autocomplete' && this.listData.length > 100) {\n this.setSelectionData(newProp.index, oldProp.index, 'index');\n }\n else if (!this.isServerBlazor) {\n this.index = oldProp.index;\n }\n }\n this.updateInputFields();\n }\n break;\n case 'footerTemplate':\n if (this.popupObj) {\n this.setFooterTemplate(this.popupObj.element);\n }\n break;\n case 'headerTemplate':\n if (this.popupObj) {\n this.setHeaderTemplate(this.popupObj.element);\n }\n break;\n case 'valueTemplate':\n if (!isNullOrUndefined(this.itemData) && this.valueTemplate != null) {\n this.setValueTemplate();\n }\n break;\n case 'allowFiltering':\n if (this.allowFiltering) {\n this.actionCompleteData = { ulElement: this.ulElement,\n list: this.listData, isUpdated: true };\n this.updateSelectElementData(this.allowFiltering);\n }\n break;\n case 'floatLabelType':\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, newProp.floatLabelType, this.placeholder, this.createElement);\n break;\n case 'showClearButton':\n Input.setClearButton(newProp.showClearButton, this.inputElement, this.inputWrapper, null, this.createElement);\n this.bindClearEvent();\n break;\n default:\n let ddlProps;\n ddlProps = this.getPropObject(prop, newProp, oldProp);\n super.onPropertyChanged(ddlProps.newProperty, ddlProps.oldProperty);\n break;\n }\n }\n }\n checkValidLi(element) {\n if (this.isValidLI(element)) {\n this.setSelection(element, null);\n return true;\n }\n return false;\n }\n setSelectionData(newProp, oldProp, prop) {\n let li;\n this.updateListValues = () => {\n if (prop === 'text') {\n li = this.getElementByText(newProp);\n if (!this.checkValidLi(li)) {\n this.setOldText(oldProp);\n }\n }\n else if (prop === 'value') {\n li = this.getElementByValue(newProp);\n if (!this.checkValidLi(li)) {\n this.setOldValue(oldProp);\n }\n }\n else if (prop === 'index') {\n li = this.liCollections[newProp];\n if (!this.checkValidLi(li)) {\n this.index = oldProp;\n }\n }\n };\n }\n setCssClass(newClass, oldClass) {\n if (!isNullOrUndefined(oldClass)) {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newClass)) {\n newClass = (newClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newClass, [this.inputWrapper.container], oldClass);\n if (this.popupObj) {\n Input.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n }\n /**\n * Return the module name.\n * @private\n */\n getModuleName() {\n return 'dropdownlist';\n }\n /**\n * Opens the popup that displays the list of items.\n * @returns void.\n */\n showPopup() {\n if (!this.enabled) {\n return;\n }\n if (isBlazor() && this.itemTemplate) {\n this.DropDownBaseupdateBlazorTemplates(true, false, false, false);\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n if (this.isFiltering() && !this.isActive && this.actionCompleteData.list && this.actionCompleteData.list[0]) {\n this.isActive = true;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n else if (isNullOrUndefined(this.list) || !isUndefined(this.list) && (this.list.classList.contains(dropDownBaseClasses.noData) ||\n this.list.querySelectorAll('.' + dropDownBaseClasses.li).length <= 0)) {\n this.renderList();\n }\n else if (this.isFiltering() && this.isServerBlazor) {\n this.renderList();\n }\n if (!this.isServerBlazor) {\n this.invokeRenderPopup();\n }\n let popupHolderEle = !this.isFiltering() || document.querySelector('#' + this.element.id + '_popup_holder');\n let isDropdownComp = this.getModuleName() === 'dropdownlist' || !this.isFiltering();\n if (this.isServerBlazor && popupHolderEle && !isNullOrUndefined(this.list) && isDropdownComp) {\n this.invokeRenderPopup();\n }\n }\n invokeRenderPopup() {\n if (Browser.isDevice && this.isFilterLayout()) {\n let proxy = this;\n window.onpopstate = () => {\n proxy.hidePopup();\n };\n history.pushState({}, '');\n }\n if (!isNullOrUndefined(this.list.children[0]) || this.list.classList.contains(dropDownBaseClasses.noData)) {\n this.renderPopup();\n }\n attributes(this.targetElement(), { 'aria-activedescendant': this.selectedLI ? this.selectedLI.id : null });\n }\n clientRenderPopup(data, popupEle) {\n if (popupEle) {\n this.serverPopupEle = popupEle;\n this.list = popupEle.querySelector('.e-dropdownbase.e-content') ?\n popupEle.querySelector('.e-dropdownbase.e-content') : this.list;\n this.ulElement = this.list.querySelector('ul');\n if (isNullOrUndefined(this.ulElement) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n addClass([this.list], [dropDownBaseClasses.noData]);\n }\n this.liCollections = this.ulElement ?\n this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li) : [];\n this.listData = data;\n if (this.getModuleName() === 'autocomplete' && this.liCollections.length > 0) {\n this.renderHightSearch();\n }\n this.initRemoteRender = false;\n if (!this.isPopupOpen) {\n this.serverBlazorUpdateSelection();\n }\n this.unWireListEvents();\n this.wireListEvents();\n if (this.isServerIncrementalSearch && this.searchKeyEvent) {\n this.isServerIncrementalSearch = false;\n this.initial = false;\n this.onServerIncrementalSearch(this.searchKeyEvent);\n }\n if (this.isServerNavigation && this.searchKeyEvent) {\n if (this.searchKeyEvent.action === 'down' || this.searchKeyEvent.action === 'up') {\n this.isServerNavigation = false;\n this.updateUpDownAction(this.searchKeyEvent);\n }\n else if (this.searchKeyEvent.action === 'home' || this.searchKeyEvent.action === 'end') {\n this.isServerNavigation = false;\n this.updateHomeEndAction(this.searchKeyEvent);\n }\n }\n if (this.beforePopupOpen) {\n this.invokeRenderPopup();\n }\n if (this.getModuleName() !== 'dropdownlist') {\n this.onActionComplete(this.ulElement, this.listData);\n }\n }\n else if (data != null && this.listData !== data) {\n this.listData = data;\n this.initRemoteRender = false;\n }\n }\n renderHightSearch() {\n // update high light search \n }\n updateclientItemData(data) {\n this.listData = data;\n }\n initValueItemData(selectData) {\n this.itemData = selectData;\n this.previousValue = this.value;\n this.initial = false;\n }\n serverUpdateListElement(data, popupEle) {\n this.listData = data;\n if (this.ulElement) {\n this.liCollections = this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n }\n }\n /**\n * Hides the popup if it is in an open state.\n * @returns void.\n */\n hidePopup(e) {\n let isHeader = (this.headerTemplate) ? true : false;\n let isFooter = (this.headerTemplate) ? true : false;\n this.DropDownBaseresetBlazorTemplates(false, false, false, false, false, isHeader, isFooter);\n if (this.isEscapeKey && this.getModuleName() === 'dropdownlist') {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.isEscapeKey = false;\n if (!isNullOrUndefined(this.index)) {\n let element = this.findListElement(this.ulElement, 'li', 'data-value', this.value);\n this.selectedLI = this.liCollections[this.index] || element;\n if (this.selectedLI) {\n this.updateSelectedItem(this.selectedLI, null, true);\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n }\n }\n else {\n this.resetSelection();\n }\n }\n this.closePopup();\n let dataItem = this.getItemData();\n let isSelectVal = this.isServerBlazor ? !isNullOrUndefined(this.value) : !isNullOrUndefined(this.selectedLI);\n if (this.inputElement.value.trim() === '' && !this.isInteracted && (this.isSelectCustom ||\n isSelectVal && this.inputElement.value !== dataItem.text)) {\n this.isSelectCustom = false;\n this.clearAll(e);\n }\n }\n /**\n * Sets the focus on the component for interaction.\n * @returns void.\n */\n focusIn(e) {\n if (!this.enabled) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable)) {\n return;\n }\n let isFocused = false;\n if (this.preventFocus && Browser.isDevice) {\n this.inputWrapper.container.tabIndex = 1;\n this.inputWrapper.container.focus();\n this.preventFocus = false;\n isFocused = true;\n }\n if (!isFocused) {\n this.targetElement().focus();\n }\n addClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n this.onFocus(e);\n }\n /**\n * Moves the focus from the component if the component is already focused.\n * @returns void.\n */\n focusOut(e) {\n if (!this.enabled) {\n return;\n }\n this.isTyped = true;\n this.hidePopup(e);\n this.targetElement().blur();\n removeClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n }\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n * @method destroy\n * @return {void}.\n */\n destroy() {\n this.isActive = false;\n if (!this.isServerBlazor || (this.popupObj && document.body.contains(this.popupObj.element))) {\n this.hidePopup();\n }\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n if (this.isServerBlazor) {\n if ((this.fields.groupBy) && !this.isGroupChecking) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n }\n }\n }\n if (!this.isServerBlazor) {\n if (this.element && !this.element.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n let attrArray = ['readonly', 'aria-disabled', 'aria-placeholder',\n 'placeholder', 'aria-owns', 'aria-labelledby', 'aria-haspopup', 'aria-expanded',\n 'aria-activedescendant', 'autocomplete', 'aria-readonly', 'autocorrect',\n 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-describedby', 'aria-label'];\n for (let i = 0; i < attrArray.length; i++) {\n this.inputElement.removeAttribute(attrArray[i]);\n }\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n this.inputElement.classList.remove('e-input');\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n this.element.style.display = 'block';\n if (this.inputWrapper.container.parentElement.tagName === this.getNgDirective()) {\n detach(this.inputWrapper.container);\n }\n else {\n this.inputWrapper.container.parentElement.insertBefore(this.element, this.inputWrapper.container);\n detach(this.inputWrapper.container);\n }\n super.destroy();\n }\n }\n ;\n /**\n * Gets all the list items bound on this component.\n * @returns Element[].\n */\n getItems() {\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n return this.ulElement ? super.getItems() : [];\n }\n /**\n * Gets the data Object that matches the given value.\n * @param { string | number } value - Specifies the value of the list item.\n * @returns Object.\n * @blazorType object\n */\n getDataByValue(value) {\n return super.getDataByValue(value);\n }\n /**\n * Allows you to clear the selected values from the component.\n * @returns void.\n */\n clear() {\n this.value = null;\n }\n};\n__decorate$1([\n Property(null)\n], DropDownList.prototype, \"cssClass\", void 0);\n__decorate$1([\n Property('100%')\n], DropDownList.prototype, \"width\", void 0);\n__decorate$1([\n Property('300px')\n], DropDownList.prototype, \"popupHeight\", void 0);\n__decorate$1([\n Property('100%')\n], DropDownList.prototype, \"popupWidth\", void 0);\n__decorate$1([\n Property(null)\n], DropDownList.prototype, \"placeholder\", void 0);\n__decorate$1([\n Property(null)\n], DropDownList.prototype, \"filterBarPlaceholder\", void 0);\n__decorate$1([\n Property({})\n], DropDownList.prototype, \"htmlAttributes\", void 0);\n__decorate$1([\n Property(null)\n], DropDownList.prototype, \"query\", void 0);\n__decorate$1([\n Property(null)\n], DropDownList.prototype, \"valueTemplate\", void 0);\n__decorate$1([\n Property(null)\n], DropDownList.prototype, \"headerTemplate\", void 0);\n__decorate$1([\n Property(null)\n], DropDownList.prototype, \"footerTemplate\", void 0);\n__decorate$1([\n Property(false)\n], DropDownList.prototype, \"allowFiltering\", void 0);\n__decorate$1([\n Property(false)\n], DropDownList.prototype, \"readonly\", void 0);\n__decorate$1([\n Property(null)\n], DropDownList.prototype, \"text\", void 0);\n__decorate$1([\n Property(null)\n], DropDownList.prototype, \"value\", void 0);\n__decorate$1([\n Property(null)\n], DropDownList.prototype, \"index\", void 0);\n__decorate$1([\n Property('Never')\n], DropDownList.prototype, \"floatLabelType\", void 0);\n__decorate$1([\n Property(false)\n], DropDownList.prototype, \"showClearButton\", void 0);\n__decorate$1([\n Event()\n], DropDownList.prototype, \"filtering\", void 0);\n__decorate$1([\n Event()\n], DropDownList.prototype, \"change\", void 0);\n__decorate$1([\n Event()\n], DropDownList.prototype, \"beforeOpen\", void 0);\n__decorate$1([\n Event()\n], DropDownList.prototype, \"open\", void 0);\n__decorate$1([\n Event()\n], DropDownList.prototype, \"close\", void 0);\n__decorate$1([\n Event()\n], DropDownList.prototype, \"blur\", void 0);\n__decorate$1([\n Event()\n], DropDownList.prototype, \"focus\", void 0);\nDropDownList = __decorate$1([\n NotifyPropertyChanges\n], DropDownList);\n\n/**\n * export all modules from current location\n */\n\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst RTL = 'e-rtl';\nconst DROPDOWNTREE = 'e-ddt';\nconst HIDDENELEMENT = 'e-ddt-hidden';\nconst DROPDOWNICON = 'e-input-group-icon e-ddt-icon e-icons';\nconst SHOW_CHIP = 'e-show-chip';\nconst SHOW_CLEAR = 'e-show-clear';\nconst SHOW_DD_ICON = 'e-show-dd-icon';\nconst CHIP_INPUT = 'e-chip-input';\nconst INPUTFOCUS = 'e-input-focus';\nconst INPUTGROUP = 'e-input-group';\nconst ICONANIMATION = 'e-icon-anim';\nconst CLOSEICON_CLASS = 'e-clear-icon e-icons';\nconst CHIP_WRAPPER = 'e-chips-wrapper';\nconst CHIP_COLLECTION = 'e-chips-collection';\nconst CHIP = 'e-chips';\nconst CHIP_CONTENT = 'e-chipcontent';\nconst CHIP_CLOSE = 'e-chips-close';\nconst HIDEICON = 'e-icon-hide';\nconst POPUP_CLASS = 'e-ddt e-popup';\nconst PARENTITEM = 'e-list-parent';\nconst CONTENT = 'e-popup-content';\nconst DROPDOWN = 'e-dropdown';\nconst DISABLED = 'e-disabled';\nconst ICONS = 'e-icons';\nconst CHECKALLPARENT = 'e-selectall-parent';\nconst CHECKALLHIDE = 'e-hide-selectall';\nconst BIGGER = 'e-bigger';\nconst SMALL = 'e-small';\nconst ALLTEXT = 'e-all-text';\nconst CHECKBOXFRAME = 'e-frame';\nconst CHECK = 'e-check';\nconst CHECKBOXWRAP = 'e-checkbox-wrapper';\nconst FILTERWRAP = 'e-filter-wrap';\nconst DDTICON = 'e-ddt-icon';\nconst FOOTER = 'e-ddt-footer';\nconst HEADER = 'e-ddt-header';\nconst NODATACONTAINER = 'e-ddt-nodata';\nconst NODATA = 'e-no-data';\nconst HEADERTEMPLATE = 'HeaderTemplate';\nconst FOOTERTEMPLATE = 'FooterTemplate';\nconst NORECORDSTEMPLATE = 'NoRecordsTemplate';\nconst ACTIONFAILURETEMPLATE = 'ActionFailureTemplate';\nconst REMAIN_WRAPPER = 'e-remain';\nconst OVERFLOW_VIEW = 'e-overflow';\nconst SHOW_TEXT = 'e-show-text';\nconst TOTAL_COUNT_WRAPPER = 'e-total-count';\nconst REMAIN_COUNT = 'e-wrap-count';\nclass Fields extends ChildProperty {\n}\n__decorate$2([\n Property('child')\n], Fields.prototype, \"child\", void 0);\n__decorate$2([\n Property([])\n], Fields.prototype, \"dataSource\", void 0);\n__decorate$2([\n Property('expanded')\n], Fields.prototype, \"expanded\", void 0);\n__decorate$2([\n Property('hasChildren')\n], Fields.prototype, \"hasChildren\", void 0);\n__decorate$2([\n Property('htmlAttributes')\n], Fields.prototype, \"htmlAttributes\", void 0);\n__decorate$2([\n Property('iconCss')\n], Fields.prototype, \"iconCss\", void 0);\n__decorate$2([\n Property('imageUrl')\n], Fields.prototype, \"imageUrl\", void 0);\n__decorate$2([\n Property('parentValue')\n], Fields.prototype, \"parentValue\", void 0);\n__decorate$2([\n Property(null)\n], Fields.prototype, \"query\", void 0);\n__decorate$2([\n Property('selected')\n], Fields.prototype, \"selected\", void 0);\n__decorate$2([\n Property(null)\n], Fields.prototype, \"tableName\", void 0);\n__decorate$2([\n Property('text')\n], Fields.prototype, \"text\", void 0);\n__decorate$2([\n Property('tooltip')\n], Fields.prototype, \"tooltip\", void 0);\n__decorate$2([\n Property('value')\n], Fields.prototype, \"value\", void 0);\nclass TreeSettings extends ChildProperty {\n}\n__decorate$2([\n Property(false)\n], TreeSettings.prototype, \"autoCheck\", void 0);\n__decorate$2([\n Property('Auto')\n], TreeSettings.prototype, \"expandOn\", void 0);\n__decorate$2([\n Property(false)\n], TreeSettings.prototype, \"loadOnDemand\", void 0);\n/**\n * The Dropdown Tree control allows you to select single or multiple values from hierarchical data in a tree-like structure.\n * It has several out-of-the-box features, such as data binding, check boxes, templates, filter,\n * UI customization, accessibility, and preselected values.\n * ```html\n * \n * ```\n * ```typescript\n * let ddtObj: DropDownTree = new DropDownTree();\n * ddtObj.appendTo(\"#tree\");\n * ```\n */\nlet DropDownTree = class DropDownTree extends Component {\n constructor(options, element) {\n super(options, element);\n this.filterTimer = null;\n this.isFilteredData = false;\n this.isFilterRestore = false;\n this.selectedData = [];\n this.filterDelayTime = 300;\n }\n /**\n * Get the properties to be maintained in the persisted state.\n * @returns string\n * @hidden\n */\n getPersistData() {\n let keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n }\n getLocaleName() {\n return 'drop-down-tree';\n }\n /**\n * Initialize the event handler.\n * @private\n */\n preRender() {\n this.inputFocus = false;\n this.isPopupOpen = false;\n this.isFirstRender = true;\n this.isInitialized = false;\n this.currentText = null;\n this.currentValue = null;\n this.oldValue = null;\n this.removeValue = false;\n this.selectedText = [];\n this.treeItems = [];\n this.dataValue = null;\n this.isNodeSelected = false;\n this.isDynamicChange = false;\n this.clearIconWidth = 0;\n this.isBlazorPlatForm = isBlazor();\n this.headerTemplateId = `${this.element.id}${HEADERTEMPLATE}`;\n this.footerTemplateId = `${this.element.id}${FOOTERTEMPLATE}`;\n this.actionFailureTemplateId = `${this.element.id}${ACTIONFAILURETEMPLATE}`;\n this.noRecordsTemplateId = `${this.element.id}${NORECORDSTEMPLATE}`;\n this.keyConfigs = {\n escape: 'escape',\n altUp: 'alt+uparrow',\n altDown: 'alt+downarrow',\n tab: 'tab',\n shiftTab: 'shift+tab',\n end: 'end',\n enter: 'enter',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlDown: 'ctrl+downarrow',\n ctrlUp: 'ctrl+uparrow',\n ctrlEnter: 'ctrl+enter',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftEnter: 'shift+enter',\n shiftHome: 'shift+home',\n shiftEnd: 'shift+end',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n csEnter: 'ctrl+shift+enter',\n csHome: 'ctrl+shift+home',\n csEnd: 'ctrl+shift+end',\n space: 'space',\n ctrlA: 'ctrl+A'\n };\n }\n /**\n * To Initialize the control rendering\n * @private\n */\n render() {\n this.ensureAutoCheck();\n if (this.element.tagName === 'INPUT') {\n this.inputEle = this.element;\n if (isNullOrUndefined(this.inputEle.getAttribute('role'))) {\n this.inputEle.setAttribute('role', 'textbox');\n }\n if (isNullOrUndefined(this.inputEle.getAttribute('type'))) {\n this.inputEle.setAttribute('type', 'text');\n }\n }\n else {\n this.inputEle = this.createElement('input', { attrs: { role: 'textbox', type: 'text' } });\n this.element.parentElement.insertBefore(this.inputEle, this.element);\n }\n this.inputObj = Input.createInput({\n element: this.inputEle,\n floatLabelType: this.floatLabelType,\n buttons: this.showDropDownIcon ? [DROPDOWNICON] : null,\n properties: {\n readonly: true,\n placeholder: this.placeholder,\n enabled: this.enabled,\n cssClass: this.cssClass,\n enableRtl: this.enableRtl,\n },\n }, this.createElement);\n this.inputWrapper = this.inputObj.container;\n if (!this.inputWrapper.classList.contains(INPUTGROUP)) {\n this.inputWrapper.classList.add(INPUTGROUP);\n }\n if (this.showDropDownIcon) {\n this.inputWrapper.classList.add(SHOW_DD_ICON);\n }\n if (this.element.tagName === this.getDirective()) {\n this.element.appendChild(this.inputWrapper);\n }\n this.createHiddenElement();\n this.createClearIcon();\n this.inputWrapper.classList.add(DROPDOWNTREE);\n this.setElementWidth(this.width);\n this.setAttributes();\n this.updateDataAttribute();\n this.setHTMLAttributes();\n this.popupDiv = this.createElement('div', { className: CONTENT, attrs: { 'tabindex': '0' } });\n this.popupDiv.classList.add(DROPDOWN);\n this.tree = this.createElement('div', { id: this.element.id + '_tree', });\n this.popupDiv.appendChild(this.tree);\n document.body.appendChild(this.popupDiv);\n this.wireTreeEvents();\n this.popupDiv.style.display = 'none';\n this.renderTree();\n this.isRemoteData = this.fields.dataSource instanceof DataManager;\n if (this.allowMultiSelection || this.showCheckBox) {\n if (this.mode !== 'Delimiter') {\n this.createChip();\n }\n if (!this.wrapText) {\n this.overFlowWrapper = this.createElement('span', { className: OVERFLOW_VIEW + ' ' + HIDEICON });\n this.inputWrapper.insertBefore(this.overFlowWrapper, this.hiddenElement);\n if (this.mode !== 'Box') {\n addClass([this.overFlowWrapper], SHOW_TEXT);\n }\n }\n }\n if (!this.isRemoteData) {\n this.setTreeValue();\n this.setTreeText();\n this.updateHiddenValue();\n this.setSelectedValue();\n if (!this.wrapText) {\n this.updateView();\n }\n }\n this.wireEvents();\n let firstUl = select('.' + PARENTITEM, this.treeObj.element);\n if (firstUl && firstUl.getAttribute('aria-multiselectable')) {\n firstUl.removeAttribute('aria-multiselectable');\n }\n this.oldValue = this.value;\n this.isInitialized = true;\n this.renderComplete();\n }\n ensureAutoCheck() {\n if (this.allowFiltering && this.treeSettings.autoCheck) {\n this.setProperties({ treeSettings: { autoCheck: false } }, true);\n }\n }\n hideCheckAll(flag) {\n let checkAllEle = !isNullOrUndefined(this.popupEle) ? this.popupEle.querySelector('.' + CHECKALLPARENT) : null;\n if (!isNullOrUndefined(checkAllEle)) {\n if (flag && !checkAllEle.classList.contains(CHECKALLHIDE)) {\n addClass([checkAllEle], CHECKALLHIDE);\n }\n else if (!flag && checkAllEle.classList.contains(CHECKALLHIDE)) {\n removeClass([checkAllEle], CHECKALLHIDE);\n }\n }\n }\n renderFilter() {\n this.filterContainer = this.createElement('div', {\n id: this.element.id + '_filter_wrap',\n className: FILTERWRAP\n });\n let filterInput = this.createElement('input', {\n id: this.element.id + '_filter',\n attrs: { autocomplete: 'off', 'aria-label': this.filterBarPlaceholder }\n });\n this.filterContainer.appendChild(filterInput);\n prepend([this.filterContainer], this.popupEle);\n this.filterObj = new TextBox({\n value: '',\n showClearButton: true,\n placeholder: this.filterBarPlaceholder,\n input: this.filterChangeHandler.bind(this),\n });\n this.filterObj.appendTo('#' + this.element.id + '_filter');\n }\n filterChangeHandler(args) {\n if (!isNullOrUndefined(args.value)) {\n window.clearTimeout(this.filterTimer);\n this.filterTimer = window.setTimeout(() => { this.filterHandler(args.value, args.event); }, this.filterDelayTime);\n }\n }\n filterHandler(value, event) {\n if (!this.isFilteredData) {\n this.treeData = this.treeObj.getTreeData();\n }\n let filterFields = this.cloneFields(this.fields);\n let args = {\n cancel: false,\n preventDefaultAction: false,\n event: event,\n text: value,\n fields: filterFields\n };\n this.trigger('filtering', args, (args) => {\n if (!args.cancel) {\n let flag = false;\n let fields;\n this.isFilteredData = true;\n if (value === '') {\n this.isFilteredData = false;\n this.isFilterRestore = true;\n fields = this.cloneFields(this.fields);\n }\n else if (args.preventDefaultAction) {\n fields = args.fields;\n }\n else {\n if (this.treeDataType === 1) {\n fields = this.selfReferencefilter(value, args.fields);\n }\n else {\n if (this.fields.dataSource instanceof DataManager) {\n flag = true;\n }\n else {\n fields = this.nestedFilter(value, args.fields);\n }\n }\n }\n this.hideCheckAll(this.isFilteredData);\n if (flag) {\n return;\n }\n this.treeObj.fields = this.getTreeFields(fields);\n this.treeObj.dataBind();\n }\n });\n }\n nestedFilter(value, filteredFields) {\n let matchedDataSource = [];\n for (let i = 0; i < this.treeData.length; i++) {\n let filteredChild = this.nestedChildFilter(value, this.treeData[i]);\n if (!isNullOrUndefined(filteredChild)) {\n matchedDataSource.push(filteredChild);\n }\n }\n filteredFields.dataSource = matchedDataSource;\n return filteredFields;\n }\n nestedChildFilter(value, node) {\n let children = node[this.fields.child];\n if (isNullOrUndefined(children)) {\n return (this.isMatchedNode(value, node)) ? node : null;\n }\n else {\n let matchedChildren = [];\n for (let i = 0; i < children.length; i++) {\n let filteredChild = this.nestedChildFilter(value, children[i]);\n if (!isNullOrUndefined(filteredChild)) {\n matchedChildren.push(filteredChild);\n }\n }\n if (matchedChildren.length !== 0) {\n node[this.fields.child] = matchedChildren;\n return node;\n }\n else {\n node[this.fields.child] = null;\n return (this.isMatchedNode(value, node)) ? node : null;\n }\n }\n }\n selfReferencefilter(value, filteredFields) {\n let matchedData = [];\n let matchedDataSource = [];\n for (let i = 0; i < this.treeData.length; i++) {\n if (this.isMatchedNode(value, this.treeData[i])) {\n matchedData.push(this.treeData[i]);\n }\n }\n for (let i = 0; i < matchedData.length; i++) {\n if (matchedDataSource.indexOf(matchedData[i]) === -1) {\n matchedDataSource.push(matchedData[i]);\n let parentId = matchedData[i][this.fields.parentValue];\n while (!isNullOrUndefined(parentId)) {\n let parent = null;\n for (let j = 0; j < this.treeData.length; j++) {\n let value = this.treeData[j][this.fields.value];\n if (!isNullOrUndefined(value) && (value === parentId)) {\n parent = this.treeData[j];\n break;\n }\n }\n if (!isNullOrUndefined(parent) && (matchedDataSource.indexOf(parent) === -1)) {\n matchedDataSource.push(parent);\n parentId = parent[this.fields.parentValue];\n }\n else {\n break;\n }\n }\n }\n }\n filteredFields.dataSource = matchedDataSource;\n return filteredFields;\n }\n isMatchedNode(value, node) {\n let checkValue = node[this.fields.text];\n if (this.ignoreCase) {\n checkValue = checkValue.toLowerCase();\n value = value.toLowerCase();\n }\n if (this.ignoreAccent) {\n checkValue = DataUtil.ignoreDiacritics(checkValue);\n value = DataUtil.ignoreDiacritics(value);\n }\n if (this.filterType === 'StartsWith') {\n return checkValue.slice(0, value.length) === value;\n }\n else if (this.filterType === 'EndsWith') {\n return checkValue.slice(-value.length) === value;\n }\n else {\n return checkValue.indexOf(value) !== -1;\n }\n }\n /* To wire events for the dropdown tree */\n wireEvents() {\n EventHandler.add(this.inputWrapper, 'mouseup', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper, 'blur', this.focusOut, this);\n EventHandler.add(this.inputWrapper, 'mousemove', this.mouseIn, this);\n EventHandler.add(this.inputWrapper, 'mouseout', this.onMouseLeave, this);\n EventHandler.add(this.overAllClear, 'mousedown', this.clearAll, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n let formElement = closest(this.inputWrapper, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n this.keyboardModule = new KeyboardEvents(this.inputWrapper, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown',\n });\n }\n wireTreeEvents() {\n this.keyboardModule = new KeyboardEvents(this.tree, {\n keyAction: this.treeAction.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown',\n });\n }\n wireCheckAllWrapperEvents() {\n this.keyboardModule = new KeyboardEvents(this.checkAllParent, {\n keyAction: this.checkAllAction.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown',\n });\n }\n /* To unwire events for the dropdown tree */\n unWireEvents() {\n EventHandler.remove(this.inputWrapper, 'mouseup', this.dropDownClick);\n EventHandler.remove(this.inputWrapper, 'focus', this.focusIn);\n EventHandler.remove(this.inputWrapper, 'blur', this.focusOut);\n EventHandler.remove(this.inputWrapper, 'mousemove', this.mouseIn);\n EventHandler.remove(this.inputWrapper, 'mouseout', this.onMouseLeave);\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n EventHandler.remove(window, 'resize', this.windowResize);\n let formElement = closest(this.inputWrapper, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n }\n /* Trigger when the dropdown is clicked */\n dropDownClick(e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isClearButtonClick) {\n this.isClearButtonClick = false;\n return;\n }\n if (!this.wrapText && e.target.classList.contains(CHIP_CLOSE)) {\n this.removeChip(e);\n }\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n else {\n this.focusIn(e);\n this.renderPopup();\n }\n this.showOverAllClear();\n }\n mouseIn() {\n if (this.enabled || !this.readonly) {\n this.showOverAllClear();\n }\n }\n onMouseLeave() {\n if (!this.inputFocus) {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n }\n getDirective() {\n return 'EJS-DROPDOWNTREE';\n }\n focusOut(e) {\n if (!this.enabled || this.readonly || !this.inputFocus) {\n return;\n }\n if ((Browser.isIE || Browser.info.name === 'edge') && (e.target === this.inputWrapper)) {\n return;\n }\n let target = e.relatedTarget;\n if ((target !== this.inputEle) && (isNullOrUndefined(target)) && (e.target !== this.inputWrapper || !this.isPopupOpen)) {\n this.onFocusOut(e);\n }\n }\n onFocusOut(event) {\n this.inputFocus = false;\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n if (this.isClearButtonClick) {\n this.isClearButtonClick = false;\n }\n if (this.showClearButton) {\n this.clearIconWidth = select('.e-clear-icon', this.inputWrapper).offsetWidth;\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n if ((this.allowMultiSelection || this.showCheckBox)) {\n let isValue = this.value ? (this.value.length ? true : false) : false;\n if (this.mode !== 'Delimiter') {\n if (this.chipWrapper && (this.mode === 'Default')) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n }\n if (!this.wrapText && isValue) {\n this.updateView();\n }\n }\n if (this.changeOnBlur) {\n this.triggerChangeEvent(event);\n }\n this.removeValue = false;\n this.oldValue = this.value;\n this.trigger('blur');\n }\n updateView() {\n if (!this.showCheckBox && !this.allowMultiSelection) {\n return;\n }\n if (this.mode !== 'Box') {\n addClass([this.inputWrapper, this.overFlowWrapper], SHOW_TEXT);\n }\n else {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n if (this.value && this.value.length !== 0) {\n if (this.inputWrapper.contains(this.chipWrapper)) {\n addClass([this.chipWrapper], HIDEICON);\n }\n addClass([this.inputEle], CHIP_INPUT);\n this.updateOverFlowView();\n this.ensurePlaceHolder();\n }\n }\n triggerChangeEvent(event) {\n let isEqual = this.compareValues(this.oldValue, this.value);\n if ((!isEqual || this.isChipDelete) && !this.removeValue) {\n let eventArgs = {\n e: event,\n oldValue: this.oldValue,\n value: this.value,\n isInteracted: event ? true : false,\n element: this.element\n };\n this.trigger('change', eventArgs);\n }\n }\n compareValues(oldValue, newValue) {\n if (oldValue === null || oldValue.length === 0) {\n let isValid = oldValue === null ? ((newValue === oldValue) ? true : false) :\n (oldValue.length === 0 ? (newValue === oldValue) : false);\n return isValid;\n }\n else if (oldValue.length !== newValue.length) {\n return false;\n }\n for (let i = 0; i < oldValue.length; i++) {\n if (oldValue[i] !== newValue[i]) {\n return false;\n }\n }\n return true;\n }\n focusIn(e) {\n if (!this.enabled || this.readonly || this.inputFocus) {\n return;\n }\n this.showOverAllClear();\n this.inputFocus = true;\n addClass([this.inputWrapper], [INPUTFOCUS]);\n if (this.allowMultiSelection || this.showCheckBox) {\n if (this.mode !== 'Delimiter' && this.inputFocus) {\n if (this.chipWrapper && (this.value && this.value.length !== 0)) {\n removeClass([this.chipWrapper], HIDEICON);\n addClass([this.inputEle], CHIP_INPUT);\n }\n addClass([this.inputWrapper], SHOW_CHIP);\n if (this.popupObj) {\n this.popupObj.refreshPosition();\n }\n }\n if (!this.wrapText) {\n if (this.inputWrapper.contains(this.overFlowWrapper)) {\n addClass([this.overFlowWrapper], HIDEICON);\n }\n if (this.mode === 'Delimiter') {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n else {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n removeClass([this.inputWrapper], SHOW_TEXT);\n this.ensurePlaceHolder();\n }\n }\n let args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n }\n treeAction(e) {\n let eventArgs = {\n cancel: false,\n event: e,\n };\n this.trigger('keyPress', eventArgs, (observedArgs) => {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n this.inputWrapper.focus();\n e.preventDefault();\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n break;\n case 'tab':\n case 'shiftTab':\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n if (!this.showCheckBox) {\n this.isValueChange = true;\n this.keyEventArgs = e;\n }\n break;\n case 'space':\n this.isValueChange = true;\n this.keyEventArgs = e;\n break;\n case 'ctrlA':\n if (this.allowMultiSelection) {\n this.selectAll(true);\n }\n break;\n case 'moveRight':\n case 'moveLeft':\n case 'shiftDown':\n case 'moveDown':\n case 'ctrlDown':\n case 'csDown':\n case 'shiftUp':\n case 'moveUp':\n case 'ctrlUp':\n case 'csUp':\n case 'home':\n case 'shiftHome':\n case 'ctrlHome':\n case 'csHome':\n case 'end':\n case 'shiftEnd':\n case 'ctrlEnd':\n case 'csEnd':\n }\n }\n else {\n e.stopImmediatePropagation();\n }\n });\n }\n keyActionHandler(e) {\n let eventArgs = {\n cancel: false,\n event: e,\n };\n this.trigger('keyPress', eventArgs, (observedArgs) => {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n case 'shiftTab':\n case 'tab':\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n break;\n case 'altDown':\n if (!this.isPopupOpen) {\n this.showPopup();\n e.preventDefault();\n }\n break;\n case 'moveDown':\n if (this.showSelectAll && this.showCheckBox) {\n this.checkAllParent.focus();\n }\n break;\n }\n }\n });\n }\n checkAllAction(e) {\n let eventArgs = {\n cancel: false,\n event: e,\n };\n this.trigger('keyPress', eventArgs, (observedArgs) => {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n this.clickHandler(e);\n break;\n case 'moveDown':\n this.treeObj.element.focus();\n }\n }\n });\n }\n windowResize() {\n if (this.popupObj) {\n this.popupObj.setProperties({ width: this.setWidth() });\n this.popupObj.refreshPosition();\n }\n }\n resetValueHandler(e) {\n let formElement = closest(this.inputWrapper, 'form');\n if (formElement && e.target === formElement) {\n this.resetValue(true);\n }\n }\n getAriaAttributes() {\n let disable = this.enabled ? 'false' : 'true';\n return {\n 'aria-disabled': disable,\n 'aria-owns': this.element.id + '_options',\n 'role': 'listbox',\n 'aria-haspopup': 'true',\n 'aria-expanded': 'false',\n 'aria-activedescendant': 'null',\n 'aria-labelledby': this.hiddenElement.id\n };\n }\n updateOverFlowView() {\n this.overFlowWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n removeClass([this.overFlowWrapper], HIDEICON);\n if (this.value && this.value.length) {\n let data = '';\n let overAllContainer;\n let temp;\n let tempData;\n let tempIndex = 1;\n let wrapperleng;\n let remaining;\n let downIconWidth = 0;\n this.overFlowWrapper.innerHTML = '';\n let l10nLocale = { overflowCountTemplate: '+${count} more..', totalCountTemplate: '${count} selected' };\n this.l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n let remainContent = this.l10n.getConstant('overflowCountTemplate');\n let remainElement = this.createElement('span', { className: REMAIN_WRAPPER });\n let compiledString = compile(remainContent);\n let totalCompiledString = compile(this.l10n.getConstant('totalCountTemplate'));\n remainElement.appendChild(compiledString({ 'count': this.value.length }, null, null, null, !this.isStringTemplate)[0]);\n this.overFlowWrapper.appendChild(remainElement);\n let remainSize = remainElement.offsetWidth;\n remove(remainElement);\n if (this.showDropDownIcon) {\n downIconWidth = select('.' + DDTICON, this.inputWrapper).offsetWidth;\n }\n if (!isNullOrUndefined(this.value)) {\n if (this.mode !== 'Box') {\n for (let index = 0; !isNullOrUndefined(this.value[index]); index++) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.overFlowWrapper.innerHTML;\n this.overFlowWrapper.innerHTML = data;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n overAllContainer = this.inputWrapper.offsetWidth;\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.overFlowWrapper.innerHTML = temp;\n remaining = this.value.length - index;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) >= overAllContainer)\n && wrapperleng !== 0 && this.overFlowWrapper.innerHTML !== '') {\n let textArr = this.overFlowWrapper.innerHTML.split(this.delimiterChar);\n textArr.pop();\n this.overFlowWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining++;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n else {\n addClass([this.chipWrapper], HIDEICON);\n let ele = this.chipWrapper.cloneNode(true);\n let chips = selectAll('.' + CHIP, ele);\n for (let i = 0; i < chips.length; i++) {\n temp = this.overFlowWrapper.innerHTML;\n this.overFlowWrapper.appendChild(chips[i]);\n data = this.overFlowWrapper.innerHTML;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n overAllContainer = this.inputWrapper.offsetWidth;\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n i = tempIndex + 1;\n }\n this.overFlowWrapper.innerHTML = temp;\n remaining = this.value.length - i;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) >= overAllContainer)\n && wrapperleng !== 0 && this.overFlowWrapper.innerHTML !== '') {\n this.overFlowWrapper.removeChild(this.overFlowWrapper.lastChild);\n remaining++;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = i;\n }\n else if (i === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n }\n if (remaining > 0) {\n let totalWidth = overAllContainer - (downIconWidth + this.clearIconWidth);\n this.overFlowWrapper.appendChild(this.updateRemainTemplate(remainElement, remaining, compiledString, totalCompiledString, totalWidth));\n }\n if (this.mode === 'Box' && !this.overFlowWrapper.classList.contains(TOTAL_COUNT_WRAPPER)) {\n addClass([remainElement], REMAIN_COUNT);\n }\n }\n else {\n this.overFlowWrapper.innerHTML = '';\n addClass([this.overFlowWrapper], HIDEICON);\n }\n this.updateDelimMode();\n }\n updateRemainTemplate(remainElement, remaining, compiledString, totalCompiledString, totalWidth) {\n if (this.overFlowWrapper.firstChild && this.overFlowWrapper.firstChild.nodeType === 3 &&\n this.overFlowWrapper.firstChild.nodeValue === '') {\n this.overFlowWrapper.removeChild(this.overFlowWrapper.firstChild);\n }\n remainElement.innerHTML = '';\n remainElement.appendChild((this.overFlowWrapper.firstChild && (this.overFlowWrapper.firstChild.nodeType === 3 || this.mode === 'Box')) ?\n compiledString({ 'count': remaining }, null, null, null, !this.isStringTemplate)[0] :\n totalCompiledString({ 'count': remaining }, null, null, null, !this.isStringTemplate)[0]);\n if (this.overFlowWrapper.firstChild && (this.overFlowWrapper.firstChild.nodeType === 3 || this.mode === 'Box')) {\n removeClass([this.overFlowWrapper], TOTAL_COUNT_WRAPPER);\n }\n else {\n addClass([this.overFlowWrapper], TOTAL_COUNT_WRAPPER);\n removeClass([this.overFlowWrapper], REMAIN_COUNT);\n }\n return remainElement;\n }\n getOverflowVal(index) {\n let temp;\n let selectedData = this.getSelectedData(this.value[index]);\n temp = getValue(this.treeSettings.loadOnDemand ? this.fields.text : 'text', selectedData);\n return temp;\n }\n updateDelimMode() {\n if (this.mode !== 'Box') {\n if (select('.' + REMAIN_WRAPPER, this.overFlowWrapper) && !this.overFlowWrapper.classList.contains(TOTAL_COUNT_WRAPPER)) {\n addClass([this.overFlowWrapper], REMAIN_COUNT);\n addClass([this.overFlowWrapper], SHOW_TEXT);\n }\n else {\n this.overFlowWrapper.classList.remove(REMAIN_COUNT);\n removeClass([this.overFlowWrapper], REMAIN_COUNT);\n }\n }\n else if (select('.' + REMAIN_WRAPPER, this.overFlowWrapper)) {\n this.overFlowWrapper.classList.remove(REMAIN_COUNT);\n }\n }\n createHiddenElement() {\n if (this.allowMultiSelection || this.showCheckBox) {\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDENELEMENT, 'tabindex': '-1', 'multiple': '' }\n });\n }\n else {\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'tabindex': '-1', 'class': HIDDENELEMENT }\n });\n }\n prepend([this.hiddenElement], this.inputWrapper);\n this.validationAttribute();\n }\n createClearIcon() {\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS\n });\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n if (this.showClearButton) {\n this.inputWrapper.insertBefore(this.overAllClear, this.inputObj.buttons[0]);\n }\n }\n validationAttribute() {\n let name = this.inputEle.getAttribute('name') ? this.inputEle.getAttribute('name') : this.inputEle.getAttribute('id');\n this.hiddenElement.setAttribute('name', name);\n this.inputEle.removeAttribute('name');\n let attributes$$1 = ['required', 'aria-required', 'form'];\n for (let i = 0; i < attributes$$1.length; i++) {\n let attr = this.inputEle.getAttribute(attributes$$1[i]);\n if (attr) {\n this.hiddenElement.setAttribute(attributes$$1[i], attr);\n this.inputEle.removeAttribute(attributes$$1[i]);\n }\n }\n }\n createChip() {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.chipWrapper = this.createElement('span', {\n className: CHIP_WRAPPER,\n });\n this.chipCollection = this.createElement('span', {\n className: CHIP_COLLECTION\n });\n this.chipWrapper.appendChild(this.chipCollection);\n this.inputWrapper.insertBefore(this.chipWrapper, this.hiddenElement);\n addClass([this.inputWrapper], SHOW_CHIP);\n let isValid = this.getValidMode();\n if (isValid && this.value !== null) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n else if (this.value === null) {\n addClass([this.chipWrapper], HIDEICON);\n }\n }\n }\n getValidMode() {\n if (this.allowMultiSelection || this.showCheckBox) {\n return this.mode === 'Box' ? true : (this.mode === 'Default' && this.inputFocus) ? true : false;\n }\n else {\n return false;\n }\n }\n createSelectAllWrapper() {\n this.checkAllParent = this.createElement('div', {\n className: CHECKALLPARENT, attrs: { 'tabindex': '0' }\n });\n this.selectAllSpan = this.createElement('span', {\n className: ALLTEXT\n });\n this.selectAllSpan.textContent = '';\n let ele = closest(this.element, '.' + BIGGER);\n let touchClass = isNullOrUndefined(ele) ? '' : SMALL;\n this.checkBoxElement = createCheckBox(this.createElement, true, { cssClass: touchClass });\n this.checkBoxElement.setAttribute('role', 'checkbox');\n this.checkAllParent.appendChild(this.checkBoxElement);\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n EventHandler.add(this.checkAllParent, 'mouseup', this.clickHandler, this);\n this.wireCheckAllWrapperEvents();\n }\n clickHandler(e) {\n let target;\n if ((e.currentTarget && e.currentTarget.classList.contains(CHECKALLPARENT))) {\n target = e.currentTarget.firstElementChild.lastElementChild;\n }\n else {\n target = e.target;\n }\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNullOrUndefined(this.checkWrapper)) {\n let checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n this.changeState(this.checkWrapper, checkElement.classList.contains(CHECK) ? 'uncheck' : 'check', e);\n }\n e.preventDefault();\n }\n changeState(wrapper, state, e) {\n let ariaState;\n let frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.add(CHECK);\n ariaState = 'true';\n if (!this.isReverseUpdate) {\n this.treeObj.checkAll();\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n }\n this.setLocale(true);\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK))) {\n frameSpan.classList.remove(CHECK);\n ariaState = 'false';\n if (!this.isReverseUpdate) {\n this.treeObj.uncheckAll();\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n }\n this.setLocale(false);\n }\n this.setMultiSelect();\n this.ensurePlaceHolder();\n ariaState = state === 'check' ? 'true' : 'false';\n if (!isNullOrUndefined(ariaState)) {\n wrapper.setAttribute('aria-checked', ariaState);\n }\n }\n setLocale(unSelect) {\n if (!this.selectAllSpan) {\n return;\n }\n if (this.selectAllText !== 'Select All' || this.unSelectAllText !== 'Unselect All') {\n let template = unSelect ? this.unSelectAllText : this.selectAllText;\n let compiledString;\n this.selectAllSpan.textContent = '';\n compiledString = compile(template);\n for (let item of compiledString({}, null, null, null, !this.isStringTemplate)) {\n this.selectAllSpan.textContent = item.textContent;\n }\n }\n else {\n this.selectAllSpan.textContent = unSelect ? this.unSelectAllText : this.selectAllText;\n }\n }\n setAttributes() {\n this.element.removeAttribute('tabindex');\n let id = this.element.getAttribute('id');\n this.hiddenElement.id = id + '_hidden';\n this.inputWrapper.setAttribute('tabindex', '0');\n attributes(this.inputWrapper, this.getAriaAttributes());\n }\n setHTMLAttributes() {\n if (Object.keys(this.htmlAttributes).length) {\n for (let htmlAttr of Object.keys(this.htmlAttributes)) {\n if (htmlAttr === 'class') {\n this.inputWrapper.classList.add(this.htmlAttributes[htmlAttr]);\n }\n else if (htmlAttr === 'disabled' && this.htmlAttributes[htmlAttr] === 'disabled') {\n this.setProperties({ enabled: false }, true);\n this.setEnable();\n }\n else if (htmlAttr === 'readonly' && !isNullOrUndefined(this.htmlAttributes[htmlAttr])) {\n this.setProperties({ readonly: true }, true);\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.setAttribute('style', this.htmlAttributes[htmlAttr]);\n }\n else {\n let defaultAttr = ['title', 'id', 'placeholder', 'aria-placeholder',\n 'role', 'autocorrect', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n let validateAttr = ['name', 'required'];\n if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n htmlAttr === 'placeholder' ? Input.setPlaceholder(this.htmlAttributes[htmlAttr], this.inputEle) :\n this.inputEle.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n else {\n this.inputWrapper.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n }\n }\n }\n }\n updateDataAttribute() {\n let value = this.htmlAttributes;\n let invalidAttr = ['class', 'style', 'id', 'type'];\n let attr = {};\n for (let a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n }\n showOverAllClear() {\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.overAllClear) {\n let isValue = this.value ? (this.value.length ? true : false) : false;\n if (isValue && this.showClearButton) {\n removeClass([this.overAllClear], HIDEICON);\n addClass([this.inputWrapper], SHOW_CLEAR);\n }\n else {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n }\n }\n setTreeValue() {\n if (this.value !== null && this.value.length !== 0) {\n let data;\n if (this.showCheckBox || this.allowMultiSelection) {\n for (let i = 0; i < this.value.length; i++) {\n data = this.treeObj.getTreeData(this.value[i])[0];\n if (isNullOrUndefined(data)) {\n this.value.splice(this.value.indexOf(this.value[i]), 1);\n }\n }\n if (this.value.length !== 0) {\n this.setValidValue();\n }\n }\n else {\n data = this.treeObj.getTreeData(this.value[0])[0];\n if (!isNullOrUndefined(data)) {\n this.setProperties({ text: data[this.fields.text] }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ value: this.currentValue }, true);\n }\n }\n }\n }\n setTreeText() {\n if (this.value !== null && !this.isInitialized) {\n return;\n }\n if (this.text !== null) {\n let data;\n let valArr = [];\n if (this.showCheckBox || this.allowMultiSelection) {\n let textArr = this.text.split(this.delimiterChar);\n for (let i = 0; i < textArr.length; i++) {\n data = this.getItems(textArr[i]);\n if (!isNullOrUndefined(data)) {\n valArr.push(data[this.fields.value].toString());\n }\n }\n if (valArr.length !== 0) {\n this.oldValue = this.value;\n this.setProperties({ value: valArr }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ text: this.currentText }, true);\n }\n }\n else {\n data = this.getItems(this.text);\n if (!isNullOrUndefined(data)) {\n this.oldValue = this.value;\n this.setProperties({ value: [data[this.fields.value].toString()] }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ text: this.currentText }, true);\n }\n }\n }\n }\n setSelectedValue() {\n if (this.value != null) {\n return;\n }\n if (!this.isInitialized) {\n this.oldValue = this.value;\n if (this.treeObj.selectedNodes.length > 0 && !this.showCheckBox) {\n this.setProperties({ value: this.treeObj.selectedNodes }, true);\n if (this.allowMultiSelection) {\n this.updateMode();\n }\n }\n else if (this.showCheckBox && this.treeObj.checkedNodes) {\n if (this.treeObj.checkedNodes.length > 0) {\n this.setProperties({ value: this.treeObj.checkedNodes }, true);\n setValue('selectedNodes', [], this.treeObj);\n this.treeObj.dataBind();\n this.updateMode();\n }\n }\n this.updateSelectedValues();\n this.currentText = this.text;\n this.currentValue = this.value;\n }\n }\n setValidValue() {\n if (!this.showCheckBox && !this.allowMultiSelection) {\n Input.setValue(this.text, this.inputEle, this.floatLabelType);\n let id = this.value[0].toString();\n if (this.treeObj.selectedNodes[0] !== id) {\n setValue('selectedNodes', [id], this.treeObj);\n }\n }\n else {\n if (this.showCheckBox) {\n this.treeObj.checkedNodes = this.value.slice();\n setValue('selectedNodes', [], this.treeObj);\n this.treeObj.dataBind();\n this.setMultiSelect();\n }\n else {\n this.treeObj.selectedNodes = this.value.slice();\n this.selectedText = [];\n this.updateSelectedValues();\n }\n this.treeObj.dataBind();\n }\n this.currentText = this.text;\n this.currentValue = this.value;\n if (this.isInitialized) {\n this.triggerChangeEvent();\n }\n }\n getItems(givenText) {\n let data;\n if (this.treeDataType === 1) {\n for (let i = 0; i < this.treeItems.length; i++) {\n let text = getValue(this.fields.text, this.treeItems[i]);\n if (!isNullOrUndefined(this.treeItems[i]) && !isNullOrUndefined(text) && text === givenText) {\n data = this.treeItems[i];\n break;\n }\n }\n }\n else {\n data = this.getNestedItems(this.treeItems, this.fields, givenText);\n }\n return data;\n }\n getNestedItems(data, field, givenText) {\n let newData;\n for (let i = 0, objlen = data.length; i < objlen; i++) {\n let dataId = getValue(this.fields.text, data[i]);\n if (data[i] && dataId && dataId.toString() === givenText) {\n return data[i];\n }\n else if (typeof field.child === 'string' && !isNullOrUndefined(getValue(field.child, data[i]))) {\n let childData = getValue(field.child, data[i]);\n newData = this.getNestedItems(childData, this.getChildType(field), givenText);\n if (newData !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNullOrUndefined(getValue('child', data[i]))) {\n let child = 'child';\n newData = this.getNestedItems(getValue(child, data[i]), this.getChildType(field), givenText);\n if (newData !== undefined) {\n break;\n }\n }\n }\n return newData;\n }\n getChildType(mapper) {\n return (typeof mapper.child === 'string' || isNullOrUndefined(mapper.child)) ? mapper : mapper.child;\n }\n /* To render the treeview */\n renderTree() {\n this.treeObj = new TreeView({\n fields: this.getTreeFields(this.fields),\n enableRtl: this.enableRtl,\n nodeSelected: this.onNodeSelected.bind(this),\n nodeChecked: this.onNodeChecked.bind(this),\n nodeChecking: this.beforeCheck.bind(this),\n actionFailure: this.onActionFailure.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n dataBound: this.OnDataBound.bind(this),\n allowMultiSelection: this.allowMultiSelection,\n showCheckBox: this.showCheckBox,\n autoCheck: this.treeSettings.autoCheck,\n sortOrder: this.sortOrder,\n expandOn: this.treeSettings.expandOn,\n loadOnDemand: this.treeSettings.loadOnDemand,\n nodeSelecting: this.onBeforeSelect.bind(this),\n nodeTemplate: this.itemTemplate\n });\n this.treeObj.appendTo('#' + this.tree.id);\n }\n /* To render the popup element */\n renderPopup() {\n if (this.isFilteredData) {\n this.filterObj.value = '';\n this.treeObj.fields = this.getTreeFields(this.fields);\n this.isFilterRestore = true;\n this.isFilteredData = false;\n this.hideCheckAll(false);\n }\n let isCancelled = false;\n let args = { cancel: false };\n this.trigger('beforeOpen', args, (args) => {\n if (!args.cancel) {\n addClass([this.inputWrapper], [ICONANIMATION]);\n if (this.isFirstRender) {\n this.popupEle = this.createElement('div', {\n id: this.element.id + '_popup', className: POPUP_CLASS + ' ' + (this.cssClass != null ? this.cssClass : '')\n });\n document.body.appendChild(this.popupEle);\n this.createPopup(this.popupEle);\n }\n else {\n this.popupEle = this.popupObj.element;\n }\n }\n else {\n isCancelled = true;\n }\n if (this.isFirstRender && !isCancelled) {\n prepend([this.popupDiv], this.popupEle);\n this.popupDiv.style.display = 'block';\n if (this.allowFiltering) {\n this.renderFilter();\n }\n if (this.showCheckBox && this.showSelectAll && (!this.popupDiv.classList.contains(NODATA))) {\n this.createSelectAllWrapper();\n this.popupEle.insertBefore(this.checkAllParent, this.popupDiv);\n }\n if (this.headerTemplate) {\n this.setHeaderTemplate();\n }\n if (this.footerTemplate) {\n this.setFooterTemplate();\n }\n this.isFirstRender = false;\n }\n if (!isCancelled) {\n attributes(this.inputWrapper, { 'aria-expanded': 'true' });\n this.popupObj.show(null, (this.zIndex === 1000) ? this.inputEle : null);\n this.popupEle.style.display = 'block';\n this.updatePopupHeight();\n this.popupObj.refreshPosition();\n if (!(this.showCheckBox && this.showSelectAll) && (!this.popupDiv.classList.contains(NODATA)\n && this.treeItems.length > 0)) {\n this.treeObj.element.focus();\n }\n if (this.checkSelectAll && this.checkBoxElement) {\n let wrap = closest(this.checkBoxElement, '.' + CHECKBOXWRAP);\n this.changeState(wrap, 'check');\n this.checkSelectAll = false;\n }\n if (this.allowFiltering) {\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n this.filterObj.element.focus();\n }\n let eventArgs = { popup: this.popupObj };\n this.trigger('open', eventArgs);\n }\n });\n }\n updatePopupHeight() {\n if (this.isFirstRender) {\n return;\n }\n let popupHeight = this.getHeight();\n this.popupEle.style.maxHeight = popupHeight;\n if (this.allowFiltering) {\n let height = Math.round(this.filterContainer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.headerTemplate) {\n let height = Math.round(this.header.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.showCheckBox && this.showSelectAll) {\n let height = Math.round(this.checkAllParent.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.footerTemplate) {\n let height = Math.round(this.footer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n let border = parseInt(window.getComputedStyle(this.popupEle).borderTopWidth, 10);\n border = border + parseInt(window.getComputedStyle(this.popupEle).borderBottomWidth, 10);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - border + 'px');\n this.popupDiv.style.maxHeight = popupHeight;\n }\n createPopup(element) {\n if (this.isFirstRender) {\n this.popupObj = new Popup(element, {\n width: this.setWidth(),\n targetType: 'relative',\n collision: { X: 'flip', Y: 'flip' },\n relateTo: this.inputWrapper,\n zIndex: this.zIndex,\n enableRtl: this.enableRtl,\n position: { X: 'left', Y: 'bottom' },\n close: () => {\n this.isPopupOpen = false;\n },\n open: () => {\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n this.isPopupOpen = true;\n },\n targetExitViewport: () => {\n if (!Browser.isDevice) {\n this.hidePopup();\n }\n }\n });\n }\n }\n /* To calculate the width when change via set model */\n setElementWidth(inputWidth) {\n let ddElement = this.inputWrapper;\n if (!isNullOrUndefined(inputWidth)) {\n if (typeof inputWidth === 'number') {\n ddElement.style.width = formatUnit(inputWidth);\n }\n else if (typeof inputWidth === 'string') {\n ddElement.style.width = (inputWidth.match(/px|%|em/)) ? (inputWidth) :\n (formatUnit(inputWidth));\n }\n }\n }\n /* To calculate the width of the popup */\n setWidth() {\n let width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n let inputWidth = this.inputWrapper.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n else if (typeof this.popupWidth === 'string') {\n width = (this.popupWidth.match(/px|em/)) ? (this.popupWidth) : width;\n }\n return width;\n }\n /* To calculate the height of the popup */\n getHeight() {\n let height = formatUnit(this.popupHeight);\n if (height.indexOf('%') > -1) {\n // Will set the height of the popup according to the view port height\n let viewPortHeight = document.documentElement.clientHeight * parseFloat(height) / 100;\n height = viewPortHeight.toString() + 'px';\n }\n else if (typeof this.popupHeight === 'string') {\n height = (this.popupHeight.match(/px|em/)) ? (this.popupHeight) : height;\n }\n return height;\n }\n onDocumentClick(e) {\n let target = e.target;\n let isTree = closest(target, '.' + PARENTITEM);\n let isFilter = closest(target, '.' + FILTERWRAP);\n let isScroller = target.classList.contains(DROPDOWN) ? true :\n (matches(target, '.e-ddt .e-popup') || matches(target, '.e-ddt .e-treeview'));\n if ((this.isPopupOpen && (this.inputWrapper.contains(target) || isTree || isFilter || isScroller)) ||\n ((this.allowMultiSelection || this.showCheckBox) && (this.isPopupOpen && target.classList.contains(CHIP_CLOSE) ||\n (this.isPopupOpen && (target.classList.contains(CHECKALLPARENT) || target.classList.contains(ALLTEXT)\n || target.classList.contains(CHECKBOXFRAME)))))) {\n this.isDocumentClick = false;\n e.preventDefault();\n }\n else if (!this.inputWrapper.contains(target) && this.inputFocus) {\n this.focusOut(e);\n }\n }\n onActionFailure(e) {\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n addClass([this.popupDiv], NODATA);\n }\n OnDataBound(args) {\n this.treeItems = args.data;\n if (this.treeItems.length <= 0) {\n this.l10nUpdate();\n addClass([this.popupDiv], NODATA);\n this.hideCheckAll(true);\n }\n else if (this.popupDiv.classList.contains(NODATA) && this.treeItems.length >= 1) {\n removeClass([this.popupDiv], NODATA);\n this.hideCheckAll(false);\n }\n this.treeDataType = this.getTreeDataType(this.treeItems, this.fields);\n if (this.isFirstRender && this.isRemoteData) {\n this.setTreeValue();\n this.setTreeText();\n this.updateHiddenValue();\n this.setSelectedValue();\n if (!this.wrapText) {\n this.updateView();\n }\n this.treeObj.element.focus();\n }\n let eventArgs = { data: args.data };\n this.trigger('dataBound', eventArgs);\n if (this.isFilteredData) {\n this.treeObj.expandAll();\n }\n if (this.isFilterRestore) {\n this.restoreFilterSelection();\n this.isFilterRestore = false;\n }\n }\n restoreFilterSelection() {\n if (this.showCheckBox) {\n this.treeObj.checkedNodes = this.value ? this.value : [];\n }\n else {\n this.treeObj.selectedNodes = this.value ? this.value : [];\n }\n }\n /* To set cssclass for the dropdowntree */\n setCssClass(newClass, oldClass) {\n let elements = this.popupObj ? [this.inputWrapper, this.popupObj.element] : [this.inputWrapper];\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(newClass) && newClass !== '') {\n addClass(elements, newClass.split(' '));\n }\n }\n setEnableRTL(state) {\n if (state) {\n this.inputWrapper.classList.add(RTL);\n }\n else {\n this.inputWrapper.classList.remove(RTL);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n if (this.treeObj) {\n this.treeObj.enableRtl = state;\n this.treeObj.dataBind();\n }\n }\n /* To set enable property */\n setEnable() {\n Input.setEnabled(this.enabled, this.inputEle);\n if (this.enabled) {\n removeClass([this.inputWrapper], DISABLED);\n this.inputEle.setAttribute('aria-disabled', 'false');\n this.inputWrapper.setAttribute('aria-disabled', 'false');\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n addClass([this.inputWrapper], DISABLED);\n if (this.inputWrapper && this.inputWrapper.classList.contains(INPUTFOCUS)) {\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n }\n this.inputEle.setAttribute('aria-disabled', 'true');\n this.inputWrapper.setAttribute('aria-disabled', 'true');\n }\n }\n cloneFields(fields) {\n let clonedField = {\n dataSource: fields.dataSource, value: fields.value, text: fields.text, parentValue: fields.parentValue,\n child: this.cloneChildField(fields.child), hasChildren: fields.hasChildren, expanded: fields.expanded,\n iconCss: fields.iconCss, imageUrl: fields.imageUrl, htmlAttributes: fields.htmlAttributes, query: fields.query,\n selected: fields.selected, tableName: fields.tableName, tooltip: fields.tooltip\n };\n return clonedField;\n }\n cloneChildField(fields) {\n if (typeof fields === 'string') {\n return fields;\n }\n else {\n let clonedField = {\n dataSource: fields.dataSource, value: fields.value, text: fields.text, parentValue: fields.parentValue,\n child: (fields.child ? this.cloneChildField(fields.child) : null), hasChildren: fields.hasChildren,\n expanded: fields.expanded, iconCss: fields.iconCss, imageUrl: fields.imageUrl, htmlAttributes: fields.htmlAttributes,\n query: fields.query, selected: fields.selected, tableName: fields.tableName, tooltip: fields.tooltip\n };\n return clonedField;\n }\n }\n getTreeFields(fields) {\n let treeFields = {\n dataSource: fields.dataSource, id: fields.value, text: fields.text, parentID: fields.parentValue,\n child: this.getTreeChildren(fields.child), hasChildren: fields.hasChildren, expanded: fields.expanded,\n iconCss: fields.iconCss, imageUrl: fields.imageUrl, isChecked: fields.selected,\n htmlAttributes: fields.htmlAttributes, query: fields.query, selected: fields.selected,\n tableName: fields.tableName, tooltip: fields.tooltip\n };\n return treeFields;\n }\n getTreeChildren(mapper) {\n if (typeof mapper === 'string') {\n return mapper;\n }\n else if (!isNullOrUndefined(mapper)) {\n let childFields;\n mapper = this.getActualProperties(mapper);\n childFields = mapper;\n if (mapper.value) {\n childFields.id = mapper.value;\n }\n if (mapper.parentValue) {\n childFields.parentID = mapper.parentValue;\n }\n if (mapper.child) {\n childFields.child = this.getTreeChildren(mapper.child);\n }\n if (mapper.selected && this.showCheckBox) {\n childFields.isChecked = mapper.selected;\n }\n return childFields;\n }\n return null;\n }\n getTreeDataType(ds, field) {\n if (this.fields.dataSource instanceof DataManager) {\n for (let i = 0; i < ds.length; i++) {\n if ((typeof field.child === 'string') && isNullOrUndefined(getValue(field.child, ds[i]))) {\n return 1;\n }\n }\n return 2;\n }\n for (let i = 0, len = ds.length; i < len; i++) {\n if ((typeof field.child === 'string') && !isNullOrUndefined(getValue(field.child, ds[i]))) {\n return 2;\n }\n if (!isNullOrUndefined(getValue(field.parentValue, ds[i])) || !isNullOrUndefined(getValue(field.hasChildren, ds[i]))) {\n return 1;\n }\n }\n return 1;\n }\n /* Triggers when the tree fields is changed dynamically */\n setFields() {\n this.resetValue();\n this.treeObj.fields = this.getTreeFields(this.fields);\n this.treeObj.dataBind();\n }\n getEventArgs(args) {\n let checkData = args.data;\n let selectData = args.nodeData;\n let state;\n if (this.showCheckBox) {\n if (args.action === 'check') {\n state = 'select';\n }\n else if (args.action === 'uncheck') {\n state = 'un-select';\n }\n }\n let eventArgs = {\n action: this.showCheckBox ? state : args.action,\n isInteracted: args.isInteracted,\n item: args.node,\n itemData: this.showCheckBox ? checkData[0] : selectData\n };\n return eventArgs;\n }\n onBeforeSelect(args) {\n if (args.isInteracted) {\n this.oldValue = this.value ? this.value.slice() : this.value;\n if (this.value === null) {\n this.setProperties({ value: [] }, true);\n }\n }\n }\n updateHiddenValue() {\n if (this.allowMultiSelection || this.showCheckBox) {\n return;\n }\n if (this.value && this.value.length) {\n this.hiddenElement.innerHTML = '';\n }\n else {\n this.hiddenElement.innerHTML = '';\n }\n }\n /* Triggers when the tree node is selected */\n onNodeSelected(args) {\n if (this.showCheckBox) {\n return;\n }\n let selectedText;\n if (args.isInteracted) {\n let id = getValue('id', args.nodeData).toString();\n if (!this.allowMultiSelection) {\n this.hiddenElement.innerHTML = '';\n this.setProperties({ value: [id] }, true);\n if (this.itemTemplate) {\n selectedText = getValue('text', this.treeObj.getNode(id));\n }\n else {\n selectedText = getValue('text', args.nodeData).toString();\n }\n Input.setValue(selectedText, this.inputEle, this.floatLabelType);\n this.setProperties({ text: selectedText }, true);\n this.currentText = this.text;\n this.currentValue = this.value;\n attributes(this.inputWrapper, { 'aria-describedby': this.element.id });\n attributes(this.inputWrapper, { 'aria-activedescendant': id.toString() });\n this.updateHiddenValue();\n this.showOverAllClear();\n this.hidePopup();\n this.isNodeSelected = true;\n }\n else if (this.allowMultiSelection) {\n this.setMultiSelect();\n }\n }\n let eventArgs = this.getEventArgs(args);\n this.trigger('select', eventArgs);\n if (this.isValueChange && !this.changeOnBlur) {\n this.triggerChangeEvent(this.keyEventArgs);\n this.isValueChange = false;\n }\n }\n onNodeClicked(args) {\n if (!this.changeOnBlur && this.isNodeSelected) {\n this.triggerChangeEvent(args.event);\n this.isNodeSelected = false;\n }\n let target = args.event.target;\n if ((target.classList.contains('e-fullrow') || target.classList.contains('e-list-text')) && this.showCheckBox) {\n let getNodeDetails = this.treeObj.getNode(args.node);\n if (getNodeDetails.isChecked === 'true') {\n this.treeObj.uncheckAll([args.node]);\n }\n else {\n this.treeObj.checkAll([args.node]);\n }\n this.setMultiSelect();\n this.ensurePlaceHolder();\n }\n if (!this.changeOnBlur && (this.allowMultiSelection || this.showCheckBox)) {\n this.triggerChangeEvent(args.event);\n }\n }\n onNodeChecked(args) {\n let eventArgs = this.getEventArgs(args);\n this.trigger('select', eventArgs);\n if (this.isFilteredData && args.action === 'uncheck') {\n let id = getValue('id', args.data[0]).toString();\n this.removeSelectedData(id, true);\n }\n if (!this.isChipDelete && args.isInteracted) {\n this.setMultiSelect();\n this.ensurePlaceHolder();\n }\n if (this.showSelectAll && this.checkBoxElement) {\n let nodes = this.treeObj.element.querySelectorAll('li');\n let checkedNodes = this.treeObj.element.querySelectorAll('li .e-checkbox-wrapper[aria-checked=true]');\n let wrap = closest(this.checkBoxElement, '.' + CHECKBOXWRAP);\n if (wrap && args.action === 'uncheck') {\n this.isReverseUpdate = true;\n this.changeState(wrap, 'uncheck');\n this.isReverseUpdate = false;\n }\n else if (wrap && args.action === 'check' && checkedNodes.length === nodes.length) {\n this.isReverseUpdate = true;\n this.changeState(wrap, 'check');\n this.isReverseUpdate = false;\n }\n }\n }\n beforeCheck(args) {\n if (args.isInteracted) {\n this.oldValue = this.value ? this.value.slice() : this.value;\n }\n }\n updateClearButton(state) {\n if (state) {\n if (!this.inputWrapper.contains(this.overAllClear)) {\n this.inputEle.parentElement.insertBefore(this.overAllClear, this.inputEle.nextSibling);\n }\n else {\n removeClass([this.overAllClear], HIDEICON);\n addClass([this.inputWrapper], SHOW_CLEAR);\n }\n }\n else {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.chipWrapper) {\n let chipClose = selectAll('.' + CHIP_CLOSE, this.chipWrapper);\n for (let i = 0; i < chipClose.length; i++) {\n if (!state) {\n addClass([chipClose[i]], HIDEICON);\n }\n else {\n removeClass([chipClose[i]], HIDEICON);\n }\n }\n }\n }\n updateDropDownIconState(state) {\n let spinIcon = select('.' + DDTICON, this.inputWrapper);\n if (state) {\n if (!spinIcon) {\n Input.appendSpan(DROPDOWNICON, this.inputWrapper, this.createElement);\n }\n else {\n removeClass([spinIcon], HIDEICON);\n }\n addClass([this.inputWrapper], SHOW_DD_ICON);\n }\n else {\n addClass([spinIcon], HIDEICON);\n removeClass([this.inputWrapper], SHOW_DD_ICON);\n }\n }\n updateMode() {\n if (this.mode !== 'Delimiter') {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n let isValid = this.getValidMode();\n if (this.chipWrapper.classList.contains(HIDEICON) && isValid) {\n removeClass([this.chipWrapper], HIDEICON);\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n else if (!isValid) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n let isValue = this.value !== null ? (this.value.length !== 0 ? true : false) : false;\n if (isValid && isValue) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n else {\n removeClass([this.inputEle], CHIP_INPUT);\n }\n }\n else if (this.inputEle.classList.contains(CHIP_INPUT)) {\n removeClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n }\n }\n ensurePlaceHolder() {\n if (this.value && this.value.length === 0) {\n removeClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n }\n }\n }\n ensureClearIconPosition(floatLabelType) {\n if (floatLabelType !== 'Never') {\n this.inputWrapper.insertBefore(this.overAllClear, this.inputObj.buttons[0]);\n }\n }\n setMultiSelectValue(newValues) {\n if (!this.isFilteredData) {\n this.setProperties({ value: newValues }, true);\n if (newValues && newValues.length !== 0 && !this.showCheckBox) {\n this.treeObj.selectedNodes = this.value.slice();\n this.treeObj.dataBind();\n }\n }\n else {\n let selectedValues = isNullOrUndefined(this.value) ? [] : this.value;\n for (let i = 0; i < newValues.length; i++) {\n if (isNullOrUndefined(this.value) || this.value.indexOf(newValues[i]) === -1) {\n selectedValues.push(newValues[i]);\n }\n }\n this.setProperties({ value: selectedValues }, true);\n }\n }\n setMultiSelect() {\n if (this.showCheckBox && !this.isDynamicChange) {\n this.setMultiSelectValue(this.treeObj.checkedNodes);\n }\n else {\n let ddtValue = this.allowMultiSelection ? (this.showCheckBox ? this.treeObj.checkedNodes\n : this.treeObj.selectedNodes) : (this.value ? (this.showCheckBox ? this.value : [this.value[0]]) : null);\n this.setMultiSelectValue(ddtValue);\n if (this.showCheckBox && this.value !== null) {\n this.treeObj.checkedNodes = this.value;\n this.treeObj.dataBind();\n }\n }\n this.selectedText = [];\n let checkSelection = this.allowMultiSelection ? true : (this.showCheckBox ? true : false);\n if (this.inputWrapper.contains(this.chipWrapper) && !checkSelection) {\n removeClass([this.inputEle], CHIP_INPUT);\n detach(this.chipWrapper);\n }\n let isValid = this.getValidMode();\n if (isValid && this.value !== null) {\n addClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n removeClass([this.chipWrapper], HIDEICON);\n }\n }\n let isValue = this.value ? (this.value.length ? true : false) : false;\n if (this.chipWrapper && (this.mode === 'Box' && !isValue)) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n this.updateSelectedValues();\n }\n getSelectedData(value) {\n let data = null;\n if (this.isFilteredData) {\n for (let i = 0; i < this.selectedData.length; i++) {\n if (getValue(this.treeSettings.loadOnDemand ? this.fields.value : 'id', this.selectedData[i]).toString() === value) {\n data = this.selectedData[i];\n break;\n }\n }\n }\n if (isNullOrUndefined(data)) {\n if (this.treeSettings.loadOnDemand) {\n data = this.treeObj.getTreeData(value)[0];\n }\n else {\n data = this.treeObj.getNode(value);\n }\n if (!isNullOrUndefined(data)) {\n this.selectedData.push(data);\n }\n }\n return data;\n }\n removeSelectedData(value, muteOnChange) {\n let selectedValues = isNullOrUndefined(this.value) ? [] : this.value.slice();\n selectedValues.splice(selectedValues.indexOf(value), 1);\n this.setProperties({ value: selectedValues }, muteOnChange);\n for (let i = 0; i < this.selectedData.length; i++) {\n if (getValue(this.treeSettings.loadOnDemand ? this.fields.value : 'id', this.selectedData[i]).toString() === value) {\n this.selectedData.splice(i, 1);\n break;\n }\n }\n }\n updateSelectedValues() {\n this.dataValue = '';\n let temp;\n let text;\n let textValue = '';\n let selectedData;\n this.hiddenElement.innerHTML = '';\n if ((!this.isChipDelete || this.treeSettings.autoCheck) && (this.inputWrapper.contains(this.chipWrapper))) {\n this.chipCollection.innerHTML = '';\n }\n if (!this.isFilteredData) {\n this.selectedData = [];\n }\n if (!isNullOrUndefined(this.value)) {\n for (let i = 0, len = this.value.length; i < len; i++) {\n selectedData = this.getSelectedData(this.value[i]);\n text = getValue(this.treeSettings.loadOnDemand ? this.fields.text : 'text', selectedData);\n this.selectedText.push(text);\n temp = this.selectedText[this.selectedText.length - 1];\n if (this.selectedText.length > 1) {\n this.dataValue += (this.delimiterChar + ' ' + temp);\n textValue += (',' + temp);\n this.setProperties({ text: textValue }, true);\n }\n else {\n this.dataValue += temp;\n textValue += temp;\n }\n if (this.mode !== 'Delimiter' && (!this.isChipDelete || this.treeSettings.autoCheck) &&\n (this.allowMultiSelection || this.showCheckBox)) {\n this.setChipValues(temp, this.value[i]);\n }\n this.hiddenElement.innerHTML += '';\n }\n }\n let isValid = this.getValidMode();\n if (this.mode !== 'Box' && (this.allowMultiSelection || this.showCheckBox) && !isValid) {\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n }\n Input.setValue(this.dataValue, this.inputEle, this.floatLabelType);\n if (textValue === '') {\n this.setProperties({ text: null }, true);\n }\n else {\n this.setProperties({ text: textValue }, true);\n }\n if (this.showClearButton && this.inputFocus) {\n this.showOverAllClear();\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.popupObj) {\n this.popupObj.refreshPosition();\n }\n this.currentText = this.text;\n this.currentValue = this.value;\n }\n setChipValues(text, value) {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n let chip = this.createElement('span', {\n className: CHIP,\n attrs: { 'data-value': value }\n });\n let chipContent = this.createElement('span', { className: CHIP_CONTENT });\n let chipClose = this.createElement('span', { className: CHIP_CLOSE + ' ' + ICONS });\n chipContent.innerHTML = text;\n chip.appendChild(chipContent);\n this.chipCollection.appendChild(chip);\n if (this.showClearButton) {\n chip.appendChild(chipClose);\n EventHandler.add(chipClose, 'mousedown', this.removeChip, this);\n }\n }\n setSelectAllWrapper(state) {\n if (this.isFirstRender) {\n return;\n }\n if (state && !this.popupEle.contains(this.checkAllParent) && this.showCheckBox) {\n this.createSelectAllWrapper();\n this.popupEle.insertBefore(this.checkAllParent, this.popupDiv);\n }\n else if (this.popupEle.contains(this.checkAllParent)) {\n detach(this.checkAllParent);\n this.checkAllParent = null;\n }\n }\n setHeaderTemplate() {\n let compiledString;\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n }\n compiledString = this.templateComplier(this.headerTemplate);\n for (let item of compiledString({}, null, null, this.headerTemplateId, this.isStringTemplate)) {\n this.header.appendChild(item);\n }\n this.ddtupdateBlazorTemplates(false, false, true, false);\n this.popupEle.insertBefore(this.header, this.checkAllParent ? this.checkAllParent : this.popupDiv);\n }\n templateComplier(template) {\n if (template) {\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return compile(template);\n }\n setFooterTemplate() {\n let compiledString;\n if (this.footer) {\n this.footer.innerHTML = '';\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER);\n }\n compiledString = this.templateComplier(this.footerTemplate);\n for (let item of compiledString({}, null, null, this.footerTemplateId, this.isStringTemplate)) {\n this.footer.appendChild(item);\n }\n this.ddtupdateBlazorTemplates(false, false, false, true);\n append([this.footer], this.popupEle);\n }\n clearAll(e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n this.resetValue();\n this.showOverAllClear();\n if ((this.allowMultiSelection || this.showCheckBox)) {\n if (this.popupObj) {\n this.popupObj.refreshPosition();\n }\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n }\n if (e) {\n this.isClearButtonClick = true;\n }\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n }\n removeChip(e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n let element = e.target.parentElement;\n let value = element.getAttribute('data-value');\n if (this.chipCollection) {\n if (element) {\n remove(element);\n }\n }\n this.isChipDelete = true;\n this.isClearButtonClick = true;\n this.removeSelectedData(value, true);\n this.selectedText = [];\n if (this.allowMultiSelection) {\n this.treeObj.selectedNodes = this.value.slice();\n this.updateSelectedValues();\n }\n if (this.showCheckBox) {\n this.treeObj.uncheckAll([value]);\n this.clearCheckAll();\n this.setMultiSelect();\n }\n this.triggerChangeEvent(e);\n this.isChipDelete = false;\n this.ensurePlaceHolder();\n }\n resetValue(isDynamicChange) {\n Input.setValue(null, this.inputEle, this.floatLabelType);\n this.oldValue = this.value;\n this.dataValue = null;\n this.setProperties({ value: [] }, true);\n this.setProperties({ text: null }, true);\n this.selectedData = [];\n setValue('selectedNodes', [], this.treeObj);\n this.hiddenElement.innerHTML = '';\n if (this.showCheckBox) {\n this.treeObj.uncheckAll();\n this.setMultiSelect();\n this.clearCheckAll();\n }\n if (this.oldValue === null && !isDynamicChange) {\n this.removeValue = true;\n }\n else if (isDynamicChange) {\n this.triggerChangeEvent();\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.chipWrapper) {\n this.chipCollection.innerHTML = '';\n this.ensurePlaceHolder();\n }\n }\n clearCheckAll() {\n if (this.showSelectAll && this.value.length === 0) {\n this.setLocale(false);\n }\n }\n selectAllItems(state) {\n if (this.showCheckBox) {\n state ? this.treeObj.checkAll() : this.treeObj.uncheckAll();\n this.checkSelectAll = true;\n }\n else if (this.allowMultiSelection) {\n if (!state) {\n this.treeObj.selectedNodes = [];\n }\n else {\n let li = selectAll('li', this.treeObj.element);\n let id;\n let arr = [];\n for (let i = 0; i < li.length; i++) {\n id = li[i].getAttribute('data-uid').toString();\n arr.push(id);\n }\n this.treeObj.selectedNodes = arr;\n }\n }\n this.updateMode();\n this.setMultiSelect();\n if (!this.wrapText) {\n state ? this.updateView() : this.updateOverflowWrapper(true);\n }\n }\n updateTreeSettings(prop) {\n let value = Object.keys(prop.treeSettings)[0];\n if (value === 'autoCheck') {\n this.ensureAutoCheck();\n this.treeObj.autoCheck = this.treeSettings.autoCheck;\n }\n else if (value === 'loadOnDemand') {\n this.treeObj.loadOnDemand = this.treeSettings.loadOnDemand;\n }\n else if (value === 'expandOn') {\n this.treeObj.expandOn = this.treeSettings.expandOn;\n this.treeObj.dataBind();\n return;\n }\n this.treeObj.dataBind();\n this.setMultiSelect();\n }\n updateCheckBoxState(checkBox) {\n if (!this.wrapText) {\n this.updateOverflowWrapper(false);\n }\n this.treeObj.showCheckBox = checkBox;\n this.treeObj.dataBind();\n this.isDynamicChange = true;\n this.setSelectAllWrapper(this.showSelectAll);\n if (this.showSelectAll) {\n this.setLocale();\n }\n if (this.showCheckBox) {\n this.updateMode();\n }\n this.setMultiSelect();\n this.isDynamicChange = false;\n }\n updateTemplate() {\n if (this.popupObj) {\n this.popupObj.destroy();\n if (this.isPopupOpen) {\n this.hidePopup();\n this.isFirstRender = true;\n this.renderPopup();\n }\n else {\n this.isFirstRender = true;\n }\n }\n }\n l10nUpdate(actionFailure) {\n if (this.noRecord) {\n this.noRecord.innerHTML = '';\n }\n else {\n this.noRecord = this.createElement('div');\n addClass([this.noRecord], NODATACONTAINER);\n prepend([this.noRecord], this.popupDiv);\n }\n if (this.noRecordsTemplate !== 'No Records Found' || this.actionFailureTemplate !== 'The Request Failed') {\n let template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n let compiledString;\n let templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n compiledString = this.templateComplier(template);\n for (let item of compiledString({}, null, null, templateId, this.isStringTemplate)) {\n this.noRecord.appendChild(item);\n }\n this.ddtupdateBlazorTemplates(!actionFailure, actionFailure);\n }\n else {\n let l10nLocale = { noRecordsTemplate: 'No Records Found', actionFailureTemplate: 'The Request Failed' };\n this.l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n this.noRecord.innerHTML = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n }\n }\n ddtupdateBlazorTemplates(noRecord, action, header, footer, isEmpty) {\n if (!this.isStringTemplate) {\n if (this.noRecordsTemplate && noRecord) {\n updateBlazorTemplate(this.noRecordsTemplateId, NORECORDSTEMPLATE, this, isEmpty);\n }\n if (this.actionFailureTemplate && action) {\n updateBlazorTemplate(this.actionFailureTemplateId, ACTIONFAILURETEMPLATE, this, isEmpty);\n }\n if (header) {\n updateBlazorTemplate(this.headerTemplateId, HEADERTEMPLATE, this);\n }\n if (footer) {\n updateBlazorTemplate(this.footerTemplateId, FOOTERTEMPLATE, this);\n }\n }\n }\n ddtresetBlazorTemplates(noRecord, action, header, footer) {\n if (!this.isStringTemplate) {\n if (this.noRecordsTemplate && noRecord) {\n resetBlazorTemplate(this.noRecordsTemplateId, NORECORDSTEMPLATE);\n }\n if (this.actionFailureTemplate && action) {\n resetBlazorTemplate(this.actionFailureTemplateId, ACTIONFAILURETEMPLATE);\n }\n if (header) {\n resetBlazorTemplate(this.headerTemplateId, HEADERTEMPLATE);\n }\n if (footer) {\n resetBlazorTemplate(this.footerTemplateId, FOOTERTEMPLATE);\n }\n }\n }\n updateRecordTemplate(action) {\n if (this.treeItems && this.treeItems.length <= 0) {\n this.l10nUpdate(action);\n this.updateTemplate();\n }\n }\n updateOverflowWrapper(state) {\n if (!state) {\n if (!this.inputWrapper.contains(this.overFlowWrapper)) {\n this.overFlowWrapper = this.createElement('span', { className: OVERFLOW_VIEW + ' ' + HIDEICON });\n this.inputWrapper.insertBefore(this.overFlowWrapper, this.hiddenElement);\n }\n }\n else if (this.inputWrapper.contains(this.overFlowWrapper) && state) {\n this.overFlowWrapper.innerHTML = '';\n }\n }\n updateMultiSelection(state) {\n if (!this.wrapText) {\n this.updateOverflowWrapper(false);\n }\n this.treeObj.allowMultiSelection = state;\n this.treeObj.dataBind();\n this.updateOption();\n if (this.allowMultiSelection) {\n this.updateMode();\n }\n this.setMultiSelect();\n }\n updateAllowFiltering(state) {\n if (!this.isFirstRender) {\n if (state) {\n this.renderFilter();\n }\n else {\n this.destroyFilter();\n }\n }\n this.ensureAutoCheck();\n }\n updateFilterPlaceHolder() {\n if (this.filterObj) {\n this.filterObj.placeholder = this.filterBarPlaceholder;\n this.filterObj.element.setAttribute('aria-label', this.filterBarPlaceholder);\n }\n }\n updateValue(value) {\n if (isNullOrUndefined(value) || value.length === 0) {\n this.resetValue(true);\n }\n else {\n this.setTreeValue();\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateOverflowWrapper(false);\n this.updateView();\n }\n }\n this.updateHiddenValue();\n }\n updateText(text) {\n if (isNullOrUndefined(text)) {\n this.resetValue();\n }\n else {\n this.setTreeText();\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateOverflowWrapper(false);\n this.updateView();\n }\n }\n this.updateHiddenValue();\n }\n updateModelMode() {\n let validMode = this.allowMultiSelection ? true : (this.showCheckBox ? true : false);\n if (!validMode) {\n return;\n }\n if (!this.wrapText) {\n let overFlow = select('.' + OVERFLOW_VIEW, this.inputWrapper);\n if (overFlow) {\n overFlow.innerHTML = '';\n }\n }\n this.updateMode();\n this.setMultiSelect();\n if (!this.wrapText && (this.value && this.value.length !== 0)) {\n this.updateOverFlowView();\n addClass([this.inputEle], CHIP_INPUT);\n if (this.mode === 'Box') {\n removeClass([this.overFlowWrapper, this.inputWrapper], SHOW_TEXT);\n }\n else {\n addClass([this.overFlowWrapper, this.inputWrapper], SHOW_TEXT);\n }\n }\n }\n updateOption() {\n if (!this.hiddenElement.hasAttribute('multiple') && (this.allowMultiSelection || this.showCheckBox)) {\n this.hiddenElement.setAttribute('multiple', '');\n }\n else if (this.hiddenElement.hasAttribute('multiple') && (!this.allowMultiSelection && !this.showCheckBox)) {\n this.hiddenElement.removeAttribute('multiple');\n }\n }\n /**\n * Dynamically change the value of properties.\n * @private\n */\n // tslint:disable-next-line:max-func-body-length\n onPropertyChanged(newProp, oldProp) {\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n if (this.popupObj) {\n this.popupObj.element.style.width = this.setWidth();\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputEle);\n break;\n case 'cssClass':\n this.setCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRTL(this.enableRtl);\n break;\n case 'fields':\n this.setFields();\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.inputEle);\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'floatLabelType':\n Input.removeFloating(this.inputObj);\n Input.addFloating(this.inputEle, newProp.floatLabelType, this.placeholder, this.createElement);\n this.ensureClearIconPosition(newProp.floatLabelType);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'allowFiltering':\n this.updateAllowFiltering(newProp.allowFiltering);\n break;\n case 'filterBarPlaceholder':\n this.updateFilterPlaceHolder();\n break;\n case 'value':\n this.updateValue(newProp.value);\n break;\n case 'text':\n this.updateText(newProp.text);\n break;\n case 'allowMultiSelection':\n this.updateMultiSelection(newProp.allowMultiSelection);\n break;\n case 'mode':\n this.updateModelMode();\n break;\n case 'delimiterChar':\n if (this.mode === 'Box') {\n return;\n }\n if (this.showCheckBox || this.allowMultiSelection) {\n this.setMultiSelect();\n }\n break;\n case 'selectAllText':\n if (this.showCheckBox && this.showSelectAll) {\n this.setLocale();\n }\n break;\n case 'unSelectAllText':\n if (this.showCheckBox && this.showSelectAll) {\n this.setLocale(false);\n }\n break;\n case 'showSelectAll':\n if (this.showCheckBox) {\n this.setSelectAllWrapper(newProp.showSelectAll);\n this.updatePopupHeight();\n }\n break;\n case 'showCheckBox':\n this.updateCheckBoxState(newProp.showCheckBox);\n this.updatePopupHeight();\n this.updateOption();\n break;\n case 'treeSettings':\n this.updateTreeSettings(newProp);\n break;\n case 'sortOrder':\n this.treeObj.sortOrder = newProp.sortOrder;\n this.treeObj.dataBind();\n break;\n case 'showDropDownIcon':\n this.updateDropDownIconState(newProp.showDropDownIcon);\n break;\n case 'popupWidth':\n if (this.popupObj) {\n this.popupObj.element.style.width = this.setWidth();\n }\n break;\n case 'popupHeight':\n if (this.popupObj) {\n this.updatePopupHeight();\n }\n break;\n case 'zIndex':\n if (this.popupObj) {\n this.popupObj.zIndex = newProp.zIndex;\n this.popupObj.dataBind();\n }\n break;\n case 'headerTemplate':\n this.updateTemplate();\n break;\n case 'footerTemplate':\n this.updateTemplate();\n break;\n case 'itemTemplate':\n this.treeObj.nodeTemplate = newProp.itemTemplate;\n this.treeObj.dataBind();\n break;\n case 'noRecordsTemplate':\n this.updateRecordTemplate();\n break;\n case 'actionFailureTemplate':\n this.updateRecordTemplate(true);\n break;\n case 'htmlAttributes':\n this.setHTMLAttributes();\n break;\n case 'wrapText':\n this.updateOverflowWrapper(this.wrapText);\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateView();\n }\n else {\n addClass([this.overFlowWrapper], HIDEICON);\n if (this.chipWrapper && this.mode === 'Box') {\n removeClass([this.chipWrapper], HIDEICON);\n }\n else {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n this.ensurePlaceHolder();\n }\n break;\n }\n }\n }\n /**\n * Allows you to clear the selected values from the Dropdown Tree component.\n * @method clear\n * @return {void}.\n */\n clear() {\n this.clearAll();\n if (this.inputFocus) {\n this.onFocusOut();\n }\n else {\n if (this.changeOnBlur) {\n this.triggerChangeEvent();\n }\n this.removeValue = false;\n }\n }\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also, it removes the attributes and classes.\n * @method destroy\n * @return {void}.\n */\n destroy() {\n this.ddtresetBlazorTemplates(true, true, true, true);\n this.unWireEvents();\n this.setCssClass(null, this.cssClass);\n this.resetValue();\n this.treeObj.destroy();\n this.destroyFilter();\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n if (this.element.tagName !== this.getDirective()) {\n this.inputWrapper.parentElement.insertBefore(this.element, this.inputWrapper);\n }\n detach(this.inputWrapper);\n detach(this.popupDiv);\n this.element.classList.remove('e-input');\n super.destroy();\n }\n destroyFilter() {\n if (this.filterObj) {\n this.filterObj.destroy();\n detach(this.filterObj.element);\n detach(this.filterContainer);\n this.filterObj = null;\n }\n }\n /**\n * Ensures visibility of the Dropdown Tree item by using item value or item element.\n * If many Dropdown Tree items are present, and we are in need to find a particular item, then the `ensureVisible` property\n * helps you to bring the item to visibility by expanding the Dropdown Tree and scrolling to the specific item.\n * @param {string | Element} item - Specifies the value of Dropdown Tree item/ Dropdown Tree item element.\n */\n ensureVisible(item) {\n this.treeObj.ensureVisible(item);\n }\n /**\n * To get the updated data of source of the Dropdown Tree.\n * @param {string | Element} item - Specifies the value of Dropdown Tree item/ Dropdown Tree item element.\n * @returns { { [key: string]: Object }[] }.\n */\n getData(item) {\n return this.treeObj.getTreeData(item);\n }\n /**\n * Close the Dropdown tree pop-up.\n * @returns void.\n */\n hidePopup() {\n let eventArgs = { popup: this.popupObj };\n this.inputWrapper.classList.remove(ICONANIMATION);\n if (this.popupEle) {\n this.popupEle.style.display = 'none';\n }\n attributes(this.inputWrapper, { 'aria-expanded': 'false' });\n if (this.popupObj && this.isPopupOpen) {\n this.popupObj.hide();\n if (this.inputFocus) {\n this.inputWrapper.focus();\n if (this.allowFiltering) {\n addClass([this.inputWrapper], [INPUTFOCUS]);\n }\n }\n this.trigger('close', eventArgs);\n }\n }\n /**\n * Based on the state parameter, entire list item will be selected or deselected.\n * parameter\n * `true` - Selects entire Dropdown Tree items.\n * `false` - Unselects entire Dropdown Tree items.\n * @returns void\n */\n selectAll(state) {\n this.selectAllItems(state);\n }\n /**\n * Opens the popup that displays the Dropdown Tree items.\n * @returns void.\n */\n showPopup() {\n if (!this.enabled || this.readonly || this.isPopupOpen) {\n return;\n }\n this.renderPopup();\n this.focusIn();\n }\n /**\n * Return the module name.\n * @private\n */\n getModuleName() {\n return 'dropdowntree';\n }\n};\n__decorate$2([\n Property('The Request Failed')\n], DropDownTree.prototype, \"actionFailureTemplate\", void 0);\n__decorate$2([\n Property(false)\n], DropDownTree.prototype, \"allowFiltering\", void 0);\n__decorate$2([\n Property(false)\n], DropDownTree.prototype, \"allowMultiSelection\", void 0);\n__decorate$2([\n Property(true)\n], DropDownTree.prototype, \"changeOnBlur\", void 0);\n__decorate$2([\n Property('')\n], DropDownTree.prototype, \"cssClass\", void 0);\n__decorate$2([\n Property(',')\n], DropDownTree.prototype, \"delimiterChar\", void 0);\n__decorate$2([\n Property(true)\n], DropDownTree.prototype, \"enabled\", void 0);\n__decorate$2([\n Complex({}, Fields)\n], DropDownTree.prototype, \"fields\", void 0);\n__decorate$2([\n Property(null)\n], DropDownTree.prototype, \"filterBarPlaceholder\", void 0);\n__decorate$2([\n Property('StartsWith')\n], DropDownTree.prototype, \"filterType\", void 0);\n__decorate$2([\n Property('Never')\n], DropDownTree.prototype, \"floatLabelType\", void 0);\n__decorate$2([\n Property(null)\n], DropDownTree.prototype, \"footerTemplate\", void 0);\n__decorate$2([\n Property(false)\n], DropDownTree.prototype, \"ignoreAccent\", void 0);\n__decorate$2([\n Property(true)\n], DropDownTree.prototype, \"ignoreCase\", void 0);\n__decorate$2([\n Property(null)\n], DropDownTree.prototype, \"headerTemplate\", void 0);\n__decorate$2([\n Property({})\n], DropDownTree.prototype, \"htmlAttributes\", void 0);\n__decorate$2([\n Property(null)\n], DropDownTree.prototype, \"itemTemplate\", void 0);\n__decorate$2([\n Property('Default')\n], DropDownTree.prototype, \"mode\", void 0);\n__decorate$2([\n Property('No Records Found')\n], DropDownTree.prototype, \"noRecordsTemplate\", void 0);\n__decorate$2([\n Property(null)\n], DropDownTree.prototype, \"placeholder\", void 0);\n__decorate$2([\n Property('300px')\n], DropDownTree.prototype, \"popupHeight\", void 0);\n__decorate$2([\n Property('100%')\n], DropDownTree.prototype, \"popupWidth\", void 0);\n__decorate$2([\n Property(false)\n], DropDownTree.prototype, \"readonly\", void 0);\n__decorate$2([\n Property(false)\n], DropDownTree.prototype, \"showSelectAll\", void 0);\n__decorate$2([\n Property('Select All')\n], DropDownTree.prototype, \"selectAllText\", void 0);\n__decorate$2([\n Property(false)\n], DropDownTree.prototype, \"showCheckBox\", void 0);\n__decorate$2([\n Property(true)\n], DropDownTree.prototype, \"showClearButton\", void 0);\n__decorate$2([\n Property(true)\n], DropDownTree.prototype, \"showDropDownIcon\", void 0);\n__decorate$2([\n Property('None')\n], DropDownTree.prototype, \"sortOrder\", void 0);\n__decorate$2([\n Property(null)\n], DropDownTree.prototype, \"text\", void 0);\n__decorate$2([\n Complex({}, TreeSettings)\n], DropDownTree.prototype, \"treeSettings\", void 0);\n__decorate$2([\n Property('Unselect All')\n], DropDownTree.prototype, \"unSelectAllText\", void 0);\n__decorate$2([\n Property(null)\n], DropDownTree.prototype, \"value\", void 0);\n__decorate$2([\n Property('100%')\n], DropDownTree.prototype, \"width\", void 0);\n__decorate$2([\n Property(1000)\n], DropDownTree.prototype, \"zIndex\", void 0);\n__decorate$2([\n Property(false)\n], DropDownTree.prototype, \"wrapText\", void 0);\n__decorate$2([\n Event()\n], DropDownTree.prototype, \"actionFailure\", void 0);\n__decorate$2([\n Event()\n], DropDownTree.prototype, \"beforeOpen\", void 0);\n__decorate$2([\n Event()\n], DropDownTree.prototype, \"change\", void 0);\n__decorate$2([\n Event()\n], DropDownTree.prototype, \"close\", void 0);\n__decorate$2([\n Event()\n], DropDownTree.prototype, \"blur\", void 0);\n__decorate$2([\n Event()\n], DropDownTree.prototype, \"created\", void 0);\n__decorate$2([\n Event()\n], DropDownTree.prototype, \"dataBound\", void 0);\n__decorate$2([\n Event()\n], DropDownTree.prototype, \"destroyed\", void 0);\n__decorate$2([\n Event()\n], DropDownTree.prototype, \"filtering\", void 0);\n__decorate$2([\n Event()\n], DropDownTree.prototype, \"focus\", void 0);\n__decorate$2([\n Event()\n], DropDownTree.prototype, \"keyPress\", void 0);\n__decorate$2([\n Event()\n], DropDownTree.prototype, \"open\", void 0);\n__decorate$2([\n Event()\n], DropDownTree.prototype, \"select\", void 0);\nDropDownTree = __decorate$2([\n NotifyPropertyChanges\n], DropDownTree);\n\n/**\n * export all modules from current location\n */\n\nvar __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/// \n/* tslint:disable */\n/* tslint:enable */\nconst SPINNER_CLASS = 'e-atc-spinner-icon';\ndropDownListClasses.root = 'e-combobox';\nlet inputObject$1 = {\n container: null,\n buttons: []\n};\n/**\n * The ComboBox component allows the user to type a value or choose an option from the list of predefined options.\n * ```html\n * \n * ```\n * ```typescript\n * let games:ComboBox = new ComboBox();\n * games.appendTo(\"#list\");\n * ```\n */\nlet ComboBox = class ComboBox extends DropDownList {\n /**\n * *Constructor for creating the component\n */\n constructor(options, element) {\n super(options, element);\n }\n ;\n /**\n * Initialize the event handler\n * @private\n */\n preRender() {\n super.preRender();\n }\n getLocaleName() {\n return 'combo-box';\n }\n ;\n wireEvent() {\n if (this.getModuleName() === 'combobox') {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur, this);\n EventHandler.add(this.inputWrapper.container, 'blur', this.onBlur, this);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick, this);\n }\n EventHandler.add(this.inputElement, 'focus', this.targetFocus, this);\n if (!this.readonly) {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n }\n this.bindCommonEvent();\n }\n preventBlur(e) {\n if ((!this.allowFiltering && document.activeElement !== this.inputElement &&\n !document.activeElement.classList.contains(dropDownListClasses.input) && Browser.isDevice || !Browser.isDevice)) {\n e.preventDefault();\n }\n }\n onBlur(e) {\n let inputValue = this.inputElement.value === '' ? null : this.inputElement.value;\n if (!isNullOrUndefined(this.listData) && !isNullOrUndefined(inputValue) && inputValue !== this.text) {\n this.customValue(e);\n }\n super.onBlur(e);\n }\n targetElement() {\n return this.inputElement;\n }\n setOldText(text) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n this.removeSelection();\n }\n setOldValue(value) {\n if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n this.removeSelection();\n this.setHiddenValue();\n }\n valueMuteChange(value) {\n let inputValue = isNullOrUndefined(value) ? null : value.toString();\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value, text: value, index: null }, true);\n this.activeIndex = this.index;\n let fields = this.fields;\n let dataItem = {};\n dataItem[fields.text] = isNullOrUndefined(value) ? null : value.toString();\n dataItem[fields.value] = isNullOrUndefined(value) ? null : value.toString();\n this.itemData = dataItem;\n this.item = null;\n if (this.previousValue !== this.value) {\n this.detachChangeEvent(null);\n }\n }\n updateValues() {\n if (!isNullOrUndefined(this.value)) {\n let li = this.getElementByValue(this.value);\n if (li) {\n this.setSelection(li, null);\n }\n else if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n let li = this.getElementByText(this.text);\n if (li) {\n this.setSelection(li, null);\n }\n else {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n updateIconState() {\n if (this.showClearButton) {\n if (this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n }\n getAriaAttributes() {\n let ariaAttributes = {\n 'aria-owns': this.element.id + '_options',\n 'role': 'combobox',\n 'aria-autocomplete': 'both',\n 'aria-labelledby': this.hiddenElement.id,\n 'aria-hasPopup': 'true',\n 'aria-expanded': 'false',\n 'aria-readonly': this.readonly.toString(),\n 'autocomplete': 'off',\n 'autocorrect': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n };\n return ariaAttributes;\n }\n searchLists(e) {\n this.isTyped = true;\n if (this.isFiltering()) {\n super.searchLists(e);\n if (this.ulElement && this.filterInput.value.trim() === '') {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n }\n else {\n if (this.ulElement && this.inputElement.value === '' && this.preventAutoFill) {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n this.incrementalSearch(e);\n }\n }\n getNgDirective() {\n return 'EJS-COMBOBOX';\n }\n setSearchBox() {\n this.filterInput = this.inputElement;\n return (this.isFiltering() ? this.inputWrapper : inputObject$1);\n }\n onActionComplete(ulElement, list, e, isUpdated) {\n if (!this.isServerBlazor) {\n super.onActionComplete(ulElement, list, e);\n }\n if (this.isSelectCustom) {\n this.removeSelection();\n }\n if (!this.preventAutoFill && this.getModuleName() === 'combobox' && this.isTyped) {\n this.inlineSearch();\n }\n }\n getFocusElement() {\n let dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n let selected = this.list.querySelector('.' + dropDownListClasses.selected);\n let isSelected = dataItem.text === this.inputElement.value && !isNullOrUndefined(selected);\n if (isSelected) {\n return selected;\n }\n if ((Browser.isDevice && !this.isDropDownClick || !Browser.isDevice) &&\n !isNullOrUndefined(this.liCollections) && this.liCollections.length > 0) {\n let inputValue = this.inputElement.value;\n let activeItem = Search(inputValue, this.liCollections, 'StartsWith', true);\n let activeElement = activeItem.item;\n if (!isNullOrUndefined(activeElement)) {\n let count = this.getIndexByValue(activeElement.getAttribute('data-value')) - 1;\n let height = parseInt(getComputedStyle(this.liCollections[0], null).getPropertyValue('height'), 10);\n if (!isNaN(height) && this.getModuleName() !== 'autocomplete') {\n this.removeFocus();\n let fixedHead = this.fields.groupBy ? this.liCollections[0].offsetHeight : 0;\n this.list.scrollTop = count * height + fixedHead;\n addClass([activeElement], dropDownListClasses.focus);\n }\n }\n else {\n if (this.isSelectCustom && this.inputElement.value.trim() !== '') {\n this.removeFocus();\n this.list.scrollTop = 0;\n }\n }\n return activeElement;\n }\n else {\n return null;\n }\n }\n setValue(e) {\n if (e && e.type === 'keydown' && e.action === 'enter') {\n this.removeFillSelection();\n }\n if (this.autofill && this.getModuleName() === 'combobox' && e && e.type === 'keydown' && e.action !== 'enter') {\n this.preventAutoFill = false;\n this.inlineSearch(e);\n return false;\n }\n else {\n return super.setValue(e);\n }\n }\n checkCustomValue() {\n this.itemData = this.getDataByValue(this.value);\n let dataItem = this.getItemData();\n if (!(this.allowCustom && isNullOrUndefined(dataItem.value) && isNullOrUndefined(dataItem.text))) {\n this.setProperties({ 'value': dataItem.value, 'text': dataItem.text }, true);\n }\n }\n /**\n * Shows the spinner loader.\n * @returns void.\n * @deprecated\n */\n showSpinner() {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = (this.getModuleName() === 'autocomplete') ? (this.inputWrapper.buttons[0] ||\n this.inputWrapper.clearButton ||\n Input.appendSpan('e-input-group-icon ' + SPINNER_CLASS, this.inputWrapper.container, this.createElement)) :\n (this.inputWrapper.buttons[0] || this.inputWrapper.clearButton);\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n }\n /**\n * Hides the spinner loader.\n * @returns void.\n * @deprecated\n */\n hideSpinner() {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n }\n setAutoFill(activeElement, isHover) {\n if (!isHover) {\n this.setHoverList(activeElement);\n }\n if (this.autofill && !this.preventAutoFill) {\n let currentValue = this.getTextByValue(activeElement.getAttribute('data-value')).toString();\n let currentFillValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n if (this.getModuleName() === 'combobox') {\n if (!this.isSelected && this.previousValue !== currentFillValue) {\n this.updateSelectedItem(activeElement, null);\n this.isSelected = true;\n this.previousValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n }\n else {\n this.updateSelectedItem(activeElement, null, true);\n }\n }\n if (!this.isAndroidAutoFill(currentValue)) {\n this.setAutoFillSelection(currentValue);\n }\n }\n }\n isAndroidAutoFill(value) {\n if (Browser.isAndroid) {\n let currentPoints = this.getSelectionPoints();\n let prevEnd = this.prevSelectPoints.end;\n let curEnd = currentPoints.end;\n let prevStart = this.prevSelectPoints.start;\n let curStart = currentPoints.start;\n if (prevEnd !== 0 && ((prevEnd === value.length && prevStart === value.length) ||\n (prevStart > curStart && prevEnd > curEnd) || (prevEnd === curEnd && prevStart === curStart))) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n }\n clearAll(e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n super.clearAll(e);\n if (this.isServerBlazor && this.isFiltering() && this.isPopupOpen && e) {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', this.beforePopupOpen, true);\n }\n }\n }\n isSelectFocusItem(element) {\n return !isNullOrUndefined(element);\n }\n inlineSearch(e) {\n let isKeyNavigate = (e && (e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown'));\n let activeElement = isKeyNavigate ? this.liCollections[this.activeIndex] : this.getFocusElement();\n if (!isNullOrUndefined(activeElement)) {\n if (!isKeyNavigate) {\n let value = this.getFormattedValue(activeElement.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.activeIndex = !isNullOrUndefined(this.activeIndex) ? this.activeIndex : null;\n }\n this.preventAutoFill = this.inputElement.value === '' ? false : this.preventAutoFill;\n this.setAutoFill(activeElement, isKeyNavigate);\n }\n else if (this.inputElement.value === '') {\n this.activeIndex = null;\n this.list.scrollTop = 0;\n let focusItem = this.list.querySelector('.' + dropDownListClasses.li);\n this.setHoverList(focusItem);\n }\n else {\n this.activeIndex = null;\n this.removeSelection();\n if (this.liCollections && this.liCollections.length < 0) {\n this.removeFocus();\n }\n }\n }\n incrementalSearch(e) {\n this.showPopup();\n if (!isNullOrUndefined(this.listData)) {\n this.inlineSearch(e);\n e.preventDefault();\n }\n }\n ;\n setAutoFillSelection(currentValue) {\n let selection = this.getSelectionPoints();\n let value = this.inputElement.value.substr(0, selection.start);\n if (value && (value.toLowerCase() === currentValue.substr(0, selection.start).toLowerCase())) {\n let inputValue = value + currentValue.substr(value.length, currentValue.length);\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(selection.start, this.inputElement.value.length);\n }\n else {\n Input.setValue(currentValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(0, this.inputElement.value.length);\n }\n }\n ;\n getValueByText(text) {\n return super.getValueByText(text, true, this.ignoreAccent);\n }\n unWireEvent() {\n if (this.getModuleName() === 'combobox') {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur);\n EventHandler.remove(this.inputWrapper.container, 'blur', this.onBlur);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick);\n }\n EventHandler.remove(this.inputElement, 'focus', this.targetFocus);\n if (!this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n }\n this.unBindCommonEvent();\n }\n setSelection(li, e) {\n super.setSelection(li, e);\n if (!isNullOrUndefined(li) && !this.autofill && !this.isDropDownClick) {\n this.removeFocus();\n }\n }\n selectCurrentItem(e) {\n let li;\n if (this.isPopupOpen) {\n if (this.isSelected) {\n li = this.list.querySelector('.' + dropDownListClasses.selected);\n }\n else {\n li = this.list.querySelector('.' + dropDownListClasses.focus);\n }\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n }\n if (e.action === 'enter' && this.inputElement.value.trim() === '') {\n this.clearAll(e);\n }\n else if (this.isTyped && !this.isSelected && isNullOrUndefined(li)) {\n this.customValue(e);\n }\n this.hidePopup();\n }\n setHoverList(li) {\n this.removeSelection();\n if (this.isValidLI(li) && !li.classList.contains(dropDownListClasses.selected)) {\n this.removeFocus();\n li.classList.add(dropDownListClasses.focus);\n }\n }\n ;\n targetFocus(e) {\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = false;\n }\n this.onFocus(e);\n }\n dropDownClick(e) {\n e.preventDefault();\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = true;\n }\n super.dropDownClick(e);\n }\n customValue(e) {\n let value = this.getValueByText(this.inputElement.value);\n if (!this.allowCustom && this.inputElement.value !== '') {\n let previousValue = this.previousValue;\n let currentValue = this.value;\n this.setProperties({ value: value });\n if (isNullOrUndefined(this.value)) {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.autofill && previousValue === this.value && currentValue !== this.value) {\n this.onChangeEvent(null);\n }\n }\n else if (this.inputElement.value.trim() !== '') {\n let previousValue = this.value;\n if (isNullOrUndefined(value)) {\n let value = this.inputElement.value === '' ? null : this.inputElement.value;\n let eventArgs;\n eventArgs = { text: value, item: {} };\n if (!this.initial) {\n this.trigger('customValueSpecifier', eventArgs, (eventArgs) => {\n this.updateCustomValueCallback(value, eventArgs, previousValue, e);\n });\n }\n else {\n this.updateCustomValueCallback(value, eventArgs, previousValue);\n }\n }\n else {\n this.isSelectCustom = false;\n this.setProperties({ value: value });\n if (previousValue !== this.value) {\n this.onChangeEvent(e);\n }\n }\n }\n else if (this.allowCustom) {\n this.isSelectCustom = true;\n }\n }\n updateCustomValueCallback(value, eventArgs, previousValue, e) {\n let fields = this.fields;\n let item = eventArgs.item;\n let dataItem = {};\n if (item && getValue(fields.text, item) && getValue(fields.value, item)) {\n dataItem = item;\n }\n else {\n setValue(fields.text, value, dataItem);\n setValue(fields.value, value, dataItem);\n }\n this.itemData = dataItem;\n let changeData = {\n text: getValue(fields.text, this.itemData),\n value: getValue(fields.value, this.itemData),\n index: null\n };\n this.setProperties(changeData, true);\n this.setSelection(null, null);\n this.isSelectCustom = true;\n if (previousValue !== this.value) {\n this.onChangeEvent(e);\n }\n }\n /**\n * Dynamically change the value of properties.\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n if (this.getModuleName() === 'combobox') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n if (this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n }\n else {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n }\n break;\n case 'allowFiltering':\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n super.renderList();\n }\n break;\n case 'allowCustom':\n break;\n default:\n let comboProps;\n comboProps = this.getPropObject(prop, newProp, oldProp);\n super.onPropertyChanged(comboProps.newProperty, comboProps.oldProperty);\n break;\n }\n }\n }\n /**\n * To initialize the control rendering.\n * @private\n */\n render() {\n super.render();\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n super.renderList();\n }\n this.renderComplete();\n }\n ;\n /**\n * Return the module name of this component.\n * @private\n */\n getModuleName() {\n return 'combobox';\n }\n /**\n * Adds a new item to the combobox popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @return {void}.\n * @deprecated\n */\n addItem(items, itemIndex) {\n super.addItem(items, itemIndex);\n }\n /**\n * To filter the data from given data source by using query\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @return {void}.\n * @deprecated\n */\n filter(dataSource, query, fields) {\n super.filter(dataSource, query, fields);\n }\n /**\n * Opens the popup that displays the list of items.\n * @returns void.\n * @deprecated\n */\n showPopup() {\n super.showPopup();\n }\n /**\n * Hides the popup if it is in open state.\n * @returns void.\n * @deprecated\n */\n hidePopup(e) {\n let inputValue = this.inputElement.value === '' ? null : this.inputElement.value;\n if (!isNullOrUndefined(this.listData)) {\n let isEscape = this.isEscapeKey;\n if (this.isEscapeKey) {\n Input.setValue(this.typedString, this.inputElement, this.floatLabelType, this.showClearButton);\n this.isEscapeKey = false;\n }\n if (this.autofill) {\n this.removeFillSelection();\n }\n let dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n let selected = this.list.querySelector('.' + dropDownListClasses.selected);\n if (dataItem.text === this.inputElement.value && !isNullOrUndefined(selected)) {\n if (this.isSelected) {\n this.onChangeEvent(e);\n this.isSelectCustom = false;\n }\n super.hidePopup(e);\n return;\n }\n if (this.getModuleName() === 'combobox' && this.inputElement.value.trim() !== '') {\n let searchItem = Search(this.inputElement.value, this.liCollections, 'Equal', true);\n this.selectedLI = searchItem.item;\n if (isNullOrUndefined(searchItem.index)) {\n searchItem.index = Search(this.inputElement.value, this.liCollections, 'StartsWith', true).index;\n }\n this.activeIndex = searchItem.index;\n if (!isNullOrUndefined(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, null, true);\n }\n else if (isEscape) {\n this.isSelectCustom = true;\n this.removeSelection();\n }\n }\n if (!this.isEscapeKey && this.isTyped && !this.isInteracted) {\n this.customValue(e);\n }\n }\n if (isNullOrUndefined(this.listData) && this.allowCustom && !isNullOrUndefined(inputValue) && inputValue !== this.value) {\n this.customValue();\n }\n super.hidePopup(e);\n }\n /**\n * Sets the focus to the component for interaction.\n * @returns void.\n */\n focusIn() {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = true;\n }\n super.focusIn();\n }\n /**\n * Allows you to clear the selected values from the component.\n * @returns void.\n * @deprecated\n */\n clear() {\n this.value = null;\n }\n /**\n * Moves the focus from the component if the component is already focused.\n * @returns void.\n * @deprecated\n */\n focusOut(e) {\n super.focusOut(e);\n }\n /**\n * Gets all the list items bound on this component.\n * @returns Element[].\n * @deprecated\n */\n getItems() {\n return super.getItems();\n }\n /**\n * Gets the data Object that matches the given value.\n * @param { string | number } value - Specifies the value of the list item.\n * @returns Object.\n * @blazorType object\n * @deprecated\n */\n getDataByValue(value) {\n return super.getDataByValue(value);\n }\n renderHightSearch() {\n // update high light search \n }\n};\n__decorate$3([\n Property(false)\n], ComboBox.prototype, \"autofill\", void 0);\n__decorate$3([\n Property(true)\n], ComboBox.prototype, \"allowCustom\", void 0);\n__decorate$3([\n Property({})\n], ComboBox.prototype, \"htmlAttributes\", void 0);\n__decorate$3([\n Property(false)\n], ComboBox.prototype, \"allowFiltering\", void 0);\n__decorate$3([\n Property(null)\n], ComboBox.prototype, \"query\", void 0);\n__decorate$3([\n Property(null)\n], ComboBox.prototype, \"index\", void 0);\n__decorate$3([\n Property(true)\n], ComboBox.prototype, \"showClearButton\", void 0);\n__decorate$3([\n Property(false)\n], ComboBox.prototype, \"enableRtl\", void 0);\n__decorate$3([\n Event()\n], ComboBox.prototype, \"customValueSpecifier\", void 0);\n__decorate$3([\n Event()\n], ComboBox.prototype, \"filtering\", void 0);\n__decorate$3([\n Property(null)\n], ComboBox.prototype, \"valueTemplate\", void 0);\n__decorate$3([\n Property('Never')\n], ComboBox.prototype, \"floatLabelType\", void 0);\n__decorate$3([\n Property(null)\n], ComboBox.prototype, \"filterBarPlaceholder\", void 0);\n__decorate$3([\n Property(null)\n], ComboBox.prototype, \"cssClass\", void 0);\n__decorate$3([\n Property(null)\n], ComboBox.prototype, \"headerTemplate\", void 0);\n__decorate$3([\n Property(null)\n], ComboBox.prototype, \"footerTemplate\", void 0);\n__decorate$3([\n Property(null)\n], ComboBox.prototype, \"placeholder\", void 0);\n__decorate$3([\n Property('100%')\n], ComboBox.prototype, \"width\", void 0);\n__decorate$3([\n Property('300px')\n], ComboBox.prototype, \"popupHeight\", void 0);\n__decorate$3([\n Property('100%')\n], ComboBox.prototype, \"popupWidth\", void 0);\n__decorate$3([\n Property(false)\n], ComboBox.prototype, \"readonly\", void 0);\n__decorate$3([\n Property(null)\n], ComboBox.prototype, \"text\", void 0);\n__decorate$3([\n Property(null)\n], ComboBox.prototype, \"value\", void 0);\nComboBox = __decorate$3([\n NotifyPropertyChanges\n], ComboBox);\n\n/**\n * export all modules from current location\n */\n\nvar __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/// \n/* tslint:disable */\n/* tslint:enable */\ndropDownListClasses.root = 'e-autocomplete';\ndropDownListClasses.icon = 'e-input-group-icon e-ddl-icon e-search-icon';\n/**\n * The AutoComplete component provides the matched suggestion list when type into the input,\n * from which the user can select one.\n * ```html\n * \n * ```\n * ```typescript\n * let atcObj:AutoComplete = new AutoComplete();\n * atcObj.appendTo(\"#list\");\n * ```\n */\nlet AutoComplete = class AutoComplete extends ComboBox {\n /**\n * * Constructor for creating the widget\n */\n constructor(options, element) {\n super(options, element);\n this.isFiltered = false;\n }\n ;\n /**\n * Initialize the event handler\n * @private\n */\n preRender() {\n super.preRender();\n }\n getLocaleName() {\n return 'auto-complete';\n }\n ;\n getNgDirective() {\n return 'EJS-AUTOCOMPLETE';\n }\n getQuery(query) {\n let filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n let filterType = (this.queryString === '' && !isNullOrUndefined(this.value)) ? 'equal' : this.filterType;\n let queryString = (this.queryString === '' && !isNullOrUndefined(this.value)) ? this.value : this.queryString;\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.queryString !== null && this.queryString !== '') {\n let dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n let mapping = !isNullOrUndefined(this.fields.value) ? this.fields.value : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount)) {\n // Since defualt value of suggestioncount is 20, checked the condition\n if (this.suggestionCount !== 20) {\n for (let queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n return filterQuery;\n }\n searchLists(e) {\n this.isTyped = true;\n this.isDataFetched = this.isSelectCustom = false;\n if (this.isServerBlazor) {\n this.beforePopupOpen = (this.isFiltering() && !this.beforePopupOpen) ? !this.beforePopupOpen : this.beforePopupOpen;\n this.queryString = this.filterInput.value;\n if (this.queryString !== '' && (this.queryString.length >= this.minLength)) {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerFilter', this.filterInput.value);\n }\n else {\n this.hidePopup();\n }\n }\n else {\n if (isNullOrUndefined(this.list)) {\n super.renderList(true);\n }\n this.queryString = this.filterInput.value;\n if (e.keyCode === 40 || e.keyCode === 38) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n let eventArgs = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: (dataSource, query, fields) => {\n if (eventArgs.cancel) {\n return;\n }\n this.isFiltered = true;\n this.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, (eventArgs) => {\n if (!eventArgs.cancel && !this.isFiltered && !eventArgs.preventDefaultAction) {\n this.filterAction(this.dataSource, null, this.fields);\n }\n });\n }\n }\n /**\n * To filter the data from given data source by using query\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @return {void}.\n * @deprecated\n */\n filter(dataSource, query, fields) {\n this.isFiltered = true;\n this.filterAction(dataSource, query, fields);\n }\n filterAction(dataSource, query, fields) {\n this.beforePopupOpen = true;\n if (this.queryString !== '' && (this.queryString.length >= this.minLength)) {\n this.resetList(dataSource, fields, query);\n }\n else {\n this.hidePopup();\n }\n }\n clearAll(e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n super.clearAll(e);\n }\n if (this.beforePopupOpen) {\n this.hidePopup();\n }\n }\n onActionComplete(ulElement, list, e, isUpdated) {\n this.fixedHeaderElement = null;\n super.onActionComplete(ulElement, list, e);\n let item = this.list.querySelector('.' + dropDownListClasses.li);\n if (!isNullOrUndefined(item)) {\n removeClass([item], dropDownListClasses.focus);\n }\n this.postBackAction();\n }\n postBackAction() {\n if (this.autofill && !isNullOrUndefined(this.liCollections[0])) {\n let items = [this.liCollections[0]];\n let searchItem = Search(this.inputElement.value, items, 'StartsWith', this.ignoreCase);\n if (!isNullOrUndefined(searchItem.item)) {\n super.setAutoFill(this.liCollections[0], true);\n }\n }\n }\n setSelection(li, e) {\n if (!this.isValidLI(li)) {\n return;\n }\n if (!isNullOrUndefined(e) && e.type === 'keydown' && e.action !== 'enter'\n && e.action !== 'tab' && this.isValidLI(li)) {\n let value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n if (this.isServerBlazor) {\n this.removeHover();\n }\n this.setHoverList(li);\n this.selectedLI = li;\n this.setScrollPosition(e);\n if (this.autofill && this.isPopupOpen) {\n this.preventAutoFill = false;\n super.setAutoFill(li);\n }\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedLI ? this.selectedLI.id : null });\n }\n else {\n super.setSelection(li, e);\n }\n }\n listOption(dataSource, fieldsSettings) {\n let fields = super.listOption(dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = (e) => {\n if (this.highlight) {\n if (this.element.tagName === this.getNgDirective() && this.itemTemplate) {\n setTimeout(() => { highlightSearch(e.item, this.queryString, this.ignoreCase, this.filterType); }, 0);\n }\n else {\n highlightSearch(e.item, this.queryString, this.ignoreCase, this.filterType);\n }\n }\n };\n }\n else {\n let itemCreated = fields.itemCreated;\n fields.itemCreated = (e) => {\n if (this.highlight) {\n highlightSearch(e.item, this.queryString, this.ignoreCase, this.filterType);\n }\n itemCreated.apply(this, [e]);\n };\n }\n return fields;\n }\n ;\n isFiltering() {\n return true;\n }\n renderPopup() {\n this.list.scrollTop = 0;\n super.renderPopup();\n }\n isEditTextBox() {\n return true && this.inputElement.value.trim() !== '';\n }\n isPopupButton() {\n return this.showPopupButton;\n }\n isSelectFocusItem(element) {\n return false;\n }\n /**\n * Search the entered text and show it in the suggestion list if available.\n * @returns void.\n * @deprecated\n */\n showPopup() {\n if (!this.enabled) {\n return;\n }\n if (this.beforePopupOpen && !this.isServerBlazor) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n this.preventAutoFill = true;\n if (isNullOrUndefined(this.list) || this.isServerBlazor) {\n this.renderList();\n }\n else {\n this.resetList(this.dataSource, this.fields);\n }\n }\n /**\n * Hides the popup if it is in open state.\n * @returns void.\n */\n hidePopup() {\n this.DropDownBaseresetBlazorTemplates(true, false, false, false);\n super.hidePopup();\n this.activeIndex = -1;\n }\n /**\n * Dynamically change the value of properties.\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n if (this.getModuleName() === 'autocomplete') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'showPopupButton':\n if (this.showPopupButton) {\n if (!this.isServerBlazor) {\n let button = Input.appendSpan(dropDownListClasses.icon, this.inputWrapper.container, this.createElement);\n this.inputWrapper.buttons[0] = button;\n }\n else if (this.inputWrapper && this.inputWrapper.container) {\n let button = this.inputWrapper.container.querySelector('.e-input-group-icon.e-ddl-icon');\n this.inputWrapper.buttons[0] = button;\n }\n if (this.inputWrapper && this.inputWrapper.buttons && this.inputWrapper.buttons[0]) {\n EventHandler.add(this.inputWrapper.buttons[0], 'click', this.dropDownClick, this);\n }\n }\n else if (!this.isServerBlazor) {\n detach(this.inputWrapper.buttons[0]);\n this.inputWrapper.buttons[0] = null;\n }\n break;\n default:\n let atcProps;\n atcProps = this.getPropObject(prop, newProp, oldProp);\n super.onPropertyChanged(atcProps.newProperty, atcProps.oldProperty);\n break;\n }\n }\n }\n renderHightSearch() {\n if (this.highlight) {\n for (let i = 0; i < this.liCollections.length; i++) {\n let isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType, this.isServerBlazor);\n }\n }\n }\n }\n /**\n * Return the module name of this component.\n * @private\n */\n getModuleName() {\n return 'autocomplete';\n }\n /**\n * To initialize the control rendering\n * @private\n */\n render() {\n super.render();\n }\n ;\n};\n__decorate$4([\n Complex({ value: null, iconCss: null, groupBy: null }, FieldSettings)\n], AutoComplete.prototype, \"fields\", void 0);\n__decorate$4([\n Property(true)\n], AutoComplete.prototype, \"ignoreCase\", void 0);\n__decorate$4([\n Property(false)\n], AutoComplete.prototype, \"showPopupButton\", void 0);\n__decorate$4([\n Property(false)\n], AutoComplete.prototype, \"highlight\", void 0);\n__decorate$4([\n Property(20)\n], AutoComplete.prototype, \"suggestionCount\", void 0);\n__decorate$4([\n Property({})\n], AutoComplete.prototype, \"htmlAttributes\", void 0);\n__decorate$4([\n Property(null)\n], AutoComplete.prototype, \"query\", void 0);\n__decorate$4([\n Property(1)\n], AutoComplete.prototype, \"minLength\", void 0);\n__decorate$4([\n Property('Contains')\n], AutoComplete.prototype, \"filterType\", void 0);\n__decorate$4([\n Event()\n], AutoComplete.prototype, \"filtering\", void 0);\n__decorate$4([\n Property(null)\n], AutoComplete.prototype, \"index\", void 0);\n__decorate$4([\n Property('Never')\n], AutoComplete.prototype, \"floatLabelType\", void 0);\n__decorate$4([\n Property(null)\n], AutoComplete.prototype, \"valueTemplate\", void 0);\n__decorate$4([\n Property(null)\n], AutoComplete.prototype, \"filterBarPlaceholder\", void 0);\n__decorate$4([\n Property(false)\n], AutoComplete.prototype, \"allowFiltering\", void 0);\n__decorate$4([\n Property(null)\n], AutoComplete.prototype, \"text\", void 0);\nAutoComplete = __decorate$4([\n NotifyPropertyChanges\n], AutoComplete);\n\n/**\n * export all modules from current location\n */\n\n/**\n * FloatLable Moduel\n * Specifies whether to display the floating label above the input element.\n */\nconst FLOATLINE = 'e-float-line';\nconst FLOATTEXT = 'e-float-text';\nconst LABELTOP = 'e-label-top';\nconst LABELBOTTOM = 'e-label-bottom';\n/**\n * Function to create Float Label element.\n * @param overAllWrapper - overall wrapper of multiselect.\n * @param element - the given html element.\n * @param inputElement - specify the input wrapper.\n * @param value - Value of the MultiSelect.\n * @param floatLabelType - Specify the FloatLabel Type.\n * @param placeholder - Specify the PlaceHolder text.\n */\nfunction createFloatLabel(overAllWrapper, searchWrapper, element, inputElement, value, floatLabelType, placeholder) {\n let floatLinelement;\n let floatLabelElement;\n floatLinelement = createElement('span', { className: FLOATLINE });\n floatLabelElement = createElement('label', { className: FLOATTEXT });\n if (!isNullOrUndefined(element.id) && element.id !== '') {\n floatLabelElement.id = 'label_' + element.id.replace(/ /g, '_');\n attributes(element, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(inputElement.placeholder) && inputElement.placeholder !== '') {\n floatLabelElement.innerText = SanitizeHtmlHelper.sanitize(inputElement.placeholder);\n inputElement.removeAttribute('placeholder');\n }\n floatLabelElement.innerText = SanitizeHtmlHelper.sanitize(placeholder);\n searchWrapper.appendChild(floatLinelement);\n searchWrapper.appendChild(floatLabelElement);\n overAllWrapper.classList.add('e-float-input');\n updateFloatLabelState(value, floatLabelElement);\n if (floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(LABELBOTTOM)) {\n removeClass([floatLabelElement], LABELBOTTOM);\n }\n addClass([floatLabelElement], LABELTOP);\n }\n}\n/**\n * Function to update status of the Float Label element.\n * @param value - Value of the MultiSelect.\n * @param label - float label element.\n */\nfunction updateFloatLabelState(value, label) {\n if (value && value.length > 0) {\n addClass([label], LABELTOP);\n removeClass([label], LABELBOTTOM);\n }\n else {\n removeClass([label], LABELTOP);\n addClass([label], LABELBOTTOM);\n }\n}\n/**\n * Function to remove Float Label element.\n * @param overAllWrapper - overall wrapper of multiselect.\n * @param componentWrapper - wrapper element of multiselect.\n * @param searchWrapper - search wrapper of multiselect.\n * @param inputElement - specify the input wrapper.\n * @param value - Value of the MultiSelect.\n * @param floatLabelType - Specify the FloatLabel Type.\n * @param placeholder - Specify the PlaceHolder text.\n */\nfunction removeFloating(overAllWrapper, componentWrapper, searchWrapper, inputElement, value, floatLabelType, placeholder) {\n let placeholderElement = componentWrapper.querySelector('.' + FLOATTEXT);\n let floatLine = componentWrapper.querySelector('.' + FLOATLINE);\n let placeholderText;\n if (!isNullOrUndefined(placeholderElement)) {\n placeholderText = placeholderElement.innerText;\n detach(searchWrapper.querySelector('.' + FLOATTEXT));\n setPlaceHolder(value, inputElement, placeholderText);\n if (!isNullOrUndefined(floatLine)) {\n detach(searchWrapper.querySelector('.' + FLOATLINE));\n }\n }\n else {\n placeholderText = (placeholder !== null) ? placeholder : '';\n setPlaceHolder(value, inputElement, placeholderText);\n }\n overAllWrapper.classList.remove('e-float-input');\n}\n/**\n * Function to set the placeholder to the element.\n * @param value - Value of the MultiSelect.\n * @param inputElement - specify the input wrapper.\n * @param placeholder - Specify the PlaceHolder text.\n */\nfunction setPlaceHolder(value, inputElement, placeholder) {\n if (value && value.length) {\n inputElement.placeholder = '';\n }\n else {\n inputElement.placeholder = placeholder;\n }\n}\n/**\n * Function for focusing the Float Element.\n * @param overAllWrapper - overall wrapper of multiselect.\n * @param componentWrapper - wrapper element of multiselect.\n */\nfunction floatLabelFocus(overAllWrapper, componentWrapper) {\n overAllWrapper.classList.add('e-input-focus');\n let label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (!isNullOrUndefined(label)) {\n addClass([label], LABELTOP);\n if (label.classList.contains(LABELBOTTOM)) {\n removeClass([label], LABELBOTTOM);\n }\n }\n}\n/**\n * Function to focus the Float Label element.\n * @param overAllWrapper - overall wrapper of multiselect.\n * @param componentWrapper - wrapper element of multiselect.\n * @param value - Value of the MultiSelect.\n * @param floatLabelType - Specify the FloatLabel Type.\n * @param placeholder - Specify the PlaceHolder text.\n */\nfunction floatLabelBlur(overAllWrapper, componentWrapper, value, floatLabelType, placeholder) {\n overAllWrapper.classList.remove('e-input-focus');\n let label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (value && value.length <= 0 && floatLabelType === 'Auto' && !isNullOrUndefined(label)) {\n if (label.classList.contains(LABELTOP)) {\n removeClass([label], LABELTOP);\n }\n addClass([label], LABELBOTTOM);\n }\n}\n\nvar __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/// \n/* tslint:disable */\n/* tslint:enable */\nconst FOCUS = 'e-input-focus';\nconst DISABLED$1 = 'e-disabled';\nconst OVER_ALL_WRAPPER = 'e-multiselect e-input-group e-control-wrapper';\nconst ELEMENT_WRAPPER = 'e-multi-select-wrapper';\nconst ELEMENT_MOBILE_WRAPPER = 'e-mob-wrapper';\nconst HIDE_LIST = 'e-hide-listitem';\nconst DELIMITER_VIEW = 'e-delim-view';\nconst CHIP_WRAPPER$1 = 'e-chips-collection';\nconst CHIP$1 = 'e-chips';\nconst CHIP_CONTENT$1 = 'e-chipcontent';\nconst CHIP_CLOSE$1 = 'e-chips-close';\nconst CHIP_SELECTED = 'e-chip-selected';\nconst SEARCHBOX_WRAPPER = 'e-searcher';\nconst DELIMITER_VIEW_WRAPPER = 'e-delimiter';\nconst ZERO_SIZE = 'e-zero-size';\nconst REMAIN_WRAPPER$1 = 'e-remain';\nconst CLOSEICON_CLASS$1 = 'e-chips-close e-close-hooker';\nconst DELIMITER_WRAPPER = 'e-delim-values';\nconst POPUP_WRAPPER = 'e-ddl e-popup e-multi-select-list-wrapper';\nconst INPUT_ELEMENT = 'e-dropdownbase';\nconst RTL_CLASS = 'e-rtl';\nconst CLOSE_ICON_HIDE = 'e-close-icon-hide';\nconst MOBILE_CHIP = 'e-mob-chip';\nconst FOOTER$1 = 'e-ddl-footer';\nconst HEADER$1 = 'e-ddl-header';\nconst DISABLE_ICON = 'e-ddl-disable-icon';\nconst SPINNER_CLASS$1 = 'e-ms-spinner-icon';\nconst HIDDEN_ELEMENT = 'e-multi-hidden';\nconst destroy = 'destroy';\nconst dropdownIcon = 'e-input-group-icon e-ddl-icon';\nconst iconAnimation = 'e-icon-anim';\nconst TOTAL_COUNT_WRAPPER$1 = 'e-delim-total';\nconst BOX_ELEMENT = 'e-multiselect-box';\nconst FILTERPARENT = 'e-filter-parent';\nconst CUSTOM_WIDTH = 'e-search-custom-width';\n/**\n * The Multiselect allows the user to pick a more than one value from list of predefined values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nlet MultiSelect = class MultiSelect extends DropDownBase {\n /**\n * Constructor for creating the DropDownList widget.\n */\n constructor(option, element) {\n super(option, element);\n this.isValidKey = false;\n this.selectAllEventData = [];\n this.selectAllEventEle = [];\n this.isDynamicDataChange = false;\n this.scrollFocusStatus = false;\n this.keyDownStatus = false;\n }\n ;\n enableRTL(state) {\n if (state) {\n this.overAllWrapper.classList.add(RTL_CLASS);\n }\n else {\n this.overAllWrapper.classList.remove(RTL_CLASS);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n }\n requiredModules() {\n let modules = [];\n if (this.mode === 'CheckBox') {\n this.isGroupChecking = this.enableGroupCheckBox;\n if (this.enableGroupCheckBox) {\n let prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.enableSelectionOrder = false;\n this.isProtectedOnChange = prevOnChange;\n }\n this.allowCustomValue = false;\n this.hideSelectedItem = false;\n this.closePopupOnSelect = false;\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n }\n updateHTMLAttribute() {\n if (Object.keys(this.htmlAttributes).length) {\n for (let htmlAttr of Object.keys(this.htmlAttributes)) {\n switch (htmlAttr) {\n case 'class':\n let updatedClassValue = (this.htmlAttributes[htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.overAllWrapper], updatedClassValue.split(' '));\n addClass([this.popupWrapper], updatedClassValue.split(' '));\n }\n break;\n case 'disabled':\n this.enable(false);\n break;\n case 'placeholder':\n if (!this.placeholder) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n this.setProperties({ placeholder: this.inputElement.placeholder }, true);\n this.refreshPlaceHolder();\n }\n break;\n default:\n let defaultAttr = ['id'];\n let validateAttr = ['name', 'required', 'aria-required', 'form'];\n let containerAttr = ['title', 'role', 'style', 'class'];\n if (defaultAttr.indexOf(htmlAttr) > -1) {\n this.element.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n else if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n else if (containerAttr.indexOf(htmlAttr) > -1) {\n this.overAllWrapper.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n else {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n break;\n }\n }\n }\n }\n updateReadonly(state) {\n if (state || this.mode === 'CheckBox') {\n this.inputElement.setAttribute('readonly', 'true');\n }\n else {\n this.inputElement.removeAttribute('readonly');\n }\n }\n updateClearButton(state) {\n if (state) {\n if (this.overAllClear.parentNode) {\n this.overAllClear.style.display = '';\n }\n else {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n this.componentWrapper.classList.remove(CLOSE_ICON_HIDE);\n }\n else {\n this.overAllClear.style.display = 'none';\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n }\n updateCssClass() {\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n let updatedCssClassValues = this.cssClass;\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n if (updatedCssClassValues !== '') {\n addClass([this.overAllWrapper], updatedCssClassValues.split(' '));\n addClass([this.popupWrapper], updatedCssClassValues.split(' '));\n }\n }\n }\n updateOldPropCssClass(oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n if (oldClass !== '') {\n removeClass([this.overAllWrapper], oldClass.split(' '));\n removeClass([this.popupWrapper], oldClass.split(' '));\n }\n }\n }\n onPopupShown() {\n if (Browser.isDevice && (this.mode === 'CheckBox' && this.allowFiltering)) {\n let proxy = this;\n window.onpopstate = () => {\n proxy.hidePopup();\n proxy.inputElement.focus();\n };\n history.pushState({}, '');\n }\n let animModel = { name: 'FadeIn', duration: 100 };\n let eventArgs = { popup: this.popupObj, cancel: false, animation: animModel };\n this.trigger('open', eventArgs, (eventArgs) => {\n if (!eventArgs.cancel) {\n this.focusAtFirstListItem();\n document.body.appendChild(this.popupObj.element);\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n this.updateListItems(this.list.querySelectorAll('li.e-list-item'), this.mainList.querySelectorAll('li.e-list-item'));\n }\n if (this.mode === 'CheckBox' || this.showDropDownIcon) {\n addClass([this.overAllWrapper], [iconAnimation]);\n }\n this.refreshPopup();\n this.popupObj.show(eventArgs.animation, (this.zIndex === 1000) ? this.element : null);\n attributes(this.inputElement, { 'aria-expanded': 'true' });\n if (this.isFirstClick) {\n this.loadTemplate();\n }\n }\n });\n }\n updateListItems(listItems, mainListItems) {\n for (let i = 0; i < listItems.length; i++) {\n this.findGroupStart(listItems[i]);\n this.findGroupStart(mainListItems[i]);\n }\n this.deselectHeader();\n }\n loadTemplate() {\n this.refreshListItems(null);\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n }\n setScrollPosition() {\n if (((!this.hideSelectedItem && this.mode !== 'CheckBox') || (this.mode === 'CheckBox' && !this.enableSelectionOrder)) &&\n (!isNullOrUndefined(this.value) && (this.value.length > 0))) {\n let valueEle = this.findListElement((this.hideSelectedItem ? this.ulElement : this.list), 'li', 'data-value', this.value[this.value.length - 1]);\n if (!isNullOrUndefined(valueEle)) {\n this.scrollBottom(valueEle);\n }\n }\n }\n focusAtFirstListItem() {\n if (this.ulElement && this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li)) {\n let element;\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n return;\n }\n else {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.'\n + HIDE_LIST + ')');\n }\n if (element !== null) {\n this.removeFocus();\n this.addListFocus(element);\n }\n }\n }\n focusAtLastListItem(data) {\n let activeElement;\n if (data) {\n activeElement = Search(data, this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n if (this.value && this.value.length) {\n Search(this.value[this.value.length - 1], this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n activeElement = null;\n }\n }\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n this.scrollBottom(activeElement.item, activeElement.index);\n }\n }\n getAriaAttributes() {\n let ariaAttributes = {\n 'aria-disabled': 'false',\n 'aria-owns': this.element.id + '_options',\n 'role': 'listbox',\n 'aria-multiselectable': 'true',\n 'aria-activedescendant': 'null',\n 'aria-haspopup': 'true',\n 'aria-expanded': 'false'\n };\n return ariaAttributes;\n }\n updateListARIA() {\n attributes(this.ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n let disableStatus = (this.inputElement.disabled) ? true : false;\n attributes(this.inputElement, this.getAriaAttributes());\n if (disableStatus) {\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n }\n this.ensureAriaDisabled((disableStatus) ? 'true' : 'false');\n }\n ensureAriaDisabled(status) {\n if (this.htmlAttributes && this.htmlAttributes['aria-disabled']) {\n let attr = this.htmlAttributes;\n extend(attr, { 'aria-disabled': status }, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n }\n }\n removelastSelection(e) {\n let elements;\n elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP$1);\n let value = elements[elements.length - 1].getAttribute('data-value');\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.value.slice();\n }\n this.removeValue(value, e);\n this.removeChipSelection();\n this.updateDelimeter(this.delimiterChar, e);\n this.makeTextBoxEmpty();\n if (this.mainList && this.listData) {\n this.refreshSelection();\n }\n this.checkPlaceholderSize();\n }\n onActionFailure(e) {\n super.onActionFailure(e);\n this.renderPopup();\n this.onPopupShown();\n }\n targetElement() {\n this.targetInputElement = this.inputElement;\n if (this.mode === 'CheckBox' && this.allowFiltering) {\n this.notify('targetElement', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n return this.targetInputElement.value;\n }\n getForQuery(valuecheck) {\n let predicate;\n let field = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n for (let i = 0; i < valuecheck.length; i++) {\n if (i === 0) {\n predicate = new Predicate(field, 'equal', valuecheck[i]);\n }\n else {\n predicate = predicate.or(field, 'equal', valuecheck[i]);\n }\n }\n return this.getQuery(this.query).where(predicate);\n }\n onActionComplete(ulElement, list, e, isUpdated) {\n super.onActionComplete(ulElement, list, e);\n this.updateSelectElementData(this.allowFiltering);\n let proxy = this;\n let valuecheck = [];\n if (isBlazor() && this.isServerRendered && this.isDynamicDataChange && this.value !== null && this.value.length > 0) {\n let items = [];\n for (let k = 0; k < this.value.length; k++) {\n let itemsData = this.getDataByValue(this.value[k]);\n if (itemsData) {\n // tslint:disable-next-line\n items.push(itemsData[this.fields.value]); // remove the condition for hybrid\n }\n }\n if (items.length === 0) {\n this.setProperties({ 'value': null });\n }\n }\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n for (let i = 0; i < this.value.length; i++) {\n let checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', proxy.value[i]);\n if (!checkEle) {\n valuecheck.push(proxy.value[i]);\n }\n }\n }\n if (valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)) {\n this.dataSource.executeQuery(this.getForQuery(valuecheck)).then((e) => {\n proxy.addItem(e.result, list.length);\n proxy.updateActionList(ulElement, list, e);\n });\n }\n else {\n this.updateActionList(ulElement, list, e);\n }\n if (isBlazor() && this.isServerRendered && this.allowFiltering && this.mode === 'CheckBox') {\n this.removeFocus();\n }\n if (isBlazor() && this.isServerRendered && this.isDynamicDataChange && this.value && this.value.length > 0) {\n this.updateVal(this.value, null, 'value');\n this.addValidInputClass();\n this.isDynamicDataChange = false;\n }\n if (this.dataSource instanceof DataManager && this.mode === 'CheckBox' && this.allowFiltering &&\n !(isBlazor() && this.isServerRendered)) {\n this.removeFocus();\n }\n }\n updateActionList(ulElement, list, e, isUpdated) {\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n if (!this.mainList && !this.mainData) {\n this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.mainData = list;\n this.mainListCollection = this.liCollections;\n }\n else if (!isNullOrUndefined(this.mainData) && this.mainData.length === 0) {\n this.mainData = list;\n }\n if ((this.remoteCustomValue || list.length <= 0) && this.allowCustomValue && this.inputFocus && this.allowFiltering) {\n this.checkForCustomValue(this.tempQuery, this.fields);\n return;\n }\n if (this.value && this.value.length && ((this.mode !== 'CheckBox' && this.inputElement.value !== '') ||\n this.mode === 'CheckBox')) {\n this.refreshSelection();\n }\n this.updateListARIA();\n this.unwireListEvents();\n this.wireListEvents();\n if (!isNullOrUndefined(this.setInitialValue)) {\n this.setInitialValue();\n }\n if (!isNullOrUndefined(this.selectAllAction)) {\n this.selectAllAction();\n }\n if (this.setDynValue) {\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n this.initialValueUpdate();\n this.initialUpdate();\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, this.value, null);\n }\n }\n this.renderPopup();\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.onPopupShown();\n }\n }\n refreshSelection() {\n let value;\n let element;\n let className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (!isNullOrUndefined(this.value)) {\n for (let index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.value[index];\n element = this.findListElement(this.list, 'li', 'data-value', value);\n if (element) {\n addClass([element], className);\n if (this.hideSelectedItem && element.previousSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group)\n && (!element.nextElementSibling ||\n element.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n addClass([element.previousElementSibling], className);\n }\n if (this.hideSelectedItem && this.fields.groupBy && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n this.hideGroupItem(value);\n }\n if (this.hideSelectedItem && element.classList.contains(dropDownBaseClasses.focus)) {\n removeClass([element], dropDownBaseClasses.focus);\n let listEle = element.parentElement.querySelectorAll('.' +\n dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n if (listEle.length > 0) {\n addClass([listEle[0]], dropDownBaseClasses.focus);\n }\n else {\n this.ulElement = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;\n this.l10nUpdate();\n addClass([this.list], dropDownBaseClasses.noData);\n }\n }\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n let ariaValue = element.firstElementChild.getAttribute('aria-checked');\n if (isNullOrUndefined(ariaValue) || ariaValue === 'false') {\n let args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n li: element,\n e: null\n };\n this.notify('updatelist', args);\n }\n }\n }\n }\n }\n this.checkSelectAll();\n this.checkMaxSelection();\n }\n hideGroupItem(value) {\n let element;\n let element1;\n let className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n element1 = element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n let i = 0;\n let j = 0;\n let temp = true;\n let temp1 = true;\n do {\n if (element && element.previousElementSibling\n && (!element.previousElementSibling.classList.contains(HIDE_LIST) &&\n element.previousElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp = false;\n }\n if (!temp || !element || (element.previousElementSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group))) {\n i = 10;\n }\n else {\n element = element.previousElementSibling;\n }\n if (element1 && element1.nextElementSibling\n && (!element1.nextElementSibling.classList.contains(HIDE_LIST) &&\n element1.nextElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp1 = false;\n }\n if (!temp1 || !element1 || (element1.nextElementSibling\n && element1.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n j = 10;\n }\n else {\n element1 = element1.nextElementSibling;\n }\n } while (i < 10 || j < 10);\n if (temp && temp1 && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n addClass([element.previousElementSibling], className);\n }\n else if (temp && temp1 && element.previousElementSibling.classList.contains(HIDE_LIST)) {\n removeClass([element.previousElementSibling], className);\n }\n }\n checkSelectAll() {\n let groupItemLength = this.list.querySelectorAll('li.e-list-group-item.e-active').length;\n let listItem = this.list.querySelectorAll('li.e-list-item');\n let searchCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.li).length;\n let searchActiveCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.selected).length;\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n searchActiveCount = searchActiveCount - groupItemLength;\n }\n if ((searchCount === searchActiveCount || searchActiveCount === this.maximumSelectionLength)\n && (this.mode === 'CheckBox' && this.showSelectAll)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'check' });\n }\n else if ((searchCount !== searchActiveCount) && (this.mode === 'CheckBox' && this.showSelectAll)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.enableGroupCheckBox && this.fields.groupBy && !this.enableSelectionOrder) {\n for (let i = 0; i < listItem.length; i++) {\n this.findGroupStart(listItem[i]);\n }\n this.deselectHeader();\n }\n }\n openClick(e) {\n if (!this.openOnClick && this.mode !== 'CheckBox') {\n if (this.targetElement() !== '') {\n this.showPopup();\n }\n else {\n this.hidePopup();\n }\n }\n else if (!this.openOnClick && this.mode === 'CheckBox' && !this.isPopupOpen()) {\n this.showPopup();\n }\n }\n KeyUp(e) {\n if (this.mode === 'CheckBox' && !this.openOnClick) {\n let char = String.fromCharCode(e.keyCode);\n let isWordCharacter = char.match(/\\w/);\n if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\n }\n this.isValidKey = (this.isPopupOpen() && e.keyCode === 8) || this.isValidKey;\n this.isValidKey = e.ctrlKey && e.keyCode === 86 ? false : this.isValidKey;\n if (this.isValidKey) {\n this.isValidKey = false;\n this.expandTextbox();\n this.showOverAllClear();\n switch (e.keyCode) {\n default:\n // For filtering works in mobile firefox\n this.search(e);\n }\n }\n }\n /**\n * To filter the multiselect data from given data source by using query\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @return {void}.\n */\n filter(dataSource, query, fields) {\n this.isFiltered = true;\n this.remoteFilterAction = true;\n this.dataUpdater(dataSource, query, fields);\n }\n getQuery(query) {\n let filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.filterAction) {\n if (this.targetElement() !== null) {\n let dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n else {\n let fields = this.fields;\n filterQuery.where(!isNullOrUndefined(fields.text) ? fields.text : '', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n }\n return filterQuery;\n }\n else {\n return query ? query : this.query ? this.query : new Query();\n }\n }\n dataUpdater(dataSource, query, fields) {\n this.isDataFetched = false;\n if (this.targetElement().trim() === '') {\n let list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (this.backCommand) {\n this.remoteCustomValue = false;\n this.onActionComplete(list, this.mainData);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n if (this.keyCode !== 8) {\n this.focusAtFirstListItem();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n }\n }\n else {\n this.resetList(dataSource, fields, query);\n if (this.allowCustomValue) {\n if (!(dataSource instanceof DataManager)) {\n this.checkForCustomValue(query, fields);\n }\n else {\n this.remoteCustomValue = true;\n this.tempQuery = query;\n }\n }\n }\n this.refreshPopup();\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n }\n checkForCustomValue(query, fields) {\n let dataChecks = !this.getValueByText(this.inputElement.value, this.ignoreCase);\n if (this.allowCustomValue && dataChecks) {\n let value = this.inputElement.value;\n let field = fields ? fields : this.fields;\n let customData = (!isNullOrUndefined(this.mainData) && this.mainData.length > 0) ?\n this.mainData[0] : this.mainData;\n if (typeof (customData) !== 'string') {\n let dataItem = {};\n setValue(field.text, value, dataItem);\n setValue(field.value, value, dataItem);\n let tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, dataItem);\n this.resetList(tempData, field, query);\n }\n else {\n let tempData = [this.inputElement.value];\n this.resetList(tempData, field);\n }\n }\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n }\n getNgDirective() {\n return 'EJS-MULTISELECT';\n }\n wrapperClick(e) {\n this.setDynValue = false;\n if (!this.enabled) {\n return;\n }\n if (e.target === this.overAllClear) {\n e.preventDefault();\n return;\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n if (!this.readonly) {\n if (e.target && e.target.classList.toString().indexOf(CHIP_CLOSE$1) !== -1) {\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n return;\n }\n if (!this.isPopupOpen() &&\n (this.openOnClick || (this.showDropDownIcon && e.target && e.target.className === dropdownIcon))) {\n this.showPopup();\n }\n else {\n this.hidePopup();\n if (this.mode === 'CheckBox') {\n this.showOverAllClear();\n this.inputFocus = true;\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n }\n }\n if (!(this.targetElement() && this.targetElement() !== '')) {\n e.preventDefault();\n }\n }\n enable(state) {\n if (state) {\n this.overAllWrapper.classList.remove(DISABLED$1);\n this.inputElement.removeAttribute('disabled');\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.ensureAriaDisabled('false');\n }\n else {\n this.overAllWrapper.classList.add(DISABLED$1);\n this.inputElement.setAttribute('disabled', 'true');\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.ensureAriaDisabled('true');\n }\n if (this.enabled !== state) {\n this.enabled = state;\n }\n this.hidePopup();\n }\n onBlur(eve, isDocClickFromCheck) {\n let target;\n if (!isNullOrUndefined(eve)) {\n target = eve.relatedTarget;\n }\n if (this.popupObj && document.body.contains(this.popupObj.element) && this.popupObj.element.contains(target)) {\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n else if ((this.floatLabelType === 'Auto' &&\n ((this.overAllWrapper.classList.contains('e-outline')) || (this.overAllWrapper.classList.contains('e-filled'))))) {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n return;\n }\n if (this.floatLabelType === 'Auto' && (this.overAllWrapper.classList.contains('e-outline')) && this.mode === 'CheckBox' &&\n ((isNullOrUndefined(this.value)) || this.value.length === 0)) {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n if (this.mode === 'CheckBox' && Browser.isIE && !isNullOrUndefined(eve) && !isDocClickFromCheck) {\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n return;\n }\n if (this.scrollFocusStatus) {\n if (!isNullOrUndefined(eve)) {\n eve.preventDefault();\n }\n this.inputElement.focus();\n this.scrollFocusStatus = false;\n return;\n }\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n this.refreshListItems(null);\n if (this.mode !== 'Box' && this.mode !== 'CheckBox') {\n this.updateDelimView();\n }\n if (this.changeOnBlur) {\n this.updateValueState(eve, this.value, this.tempValues);\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n this.overAllClear.style.display = 'none';\n if (this.isPopupOpen()) {\n this.DropDownBaseresetBlazorTemplates(false, false, true, true, false, true, true);\n this.hidePopup();\n }\n this.makeTextBoxEmpty();\n this.trigger('blur');\n this.focused = true;\n if (Browser.isDevice && this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.removeChipFocus();\n }\n this.removeChipSelection();\n this.refreshInputHight();\n floatLabelBlur(this.overAllWrapper, this.componentWrapper, this.value, this.floatLabelType, this.placeholder);\n this.refreshPlaceHolder();\n if ((this.allowFiltering || (this.enableSelectionOrder === true && this.mode === 'CheckBox'))\n && !isNullOrUndefined(this.mainList)) {\n this.ulElement = this.mainList;\n }\n this.checkPlaceholderSize();\n }\n checkPlaceholderSize() {\n if (this.showDropDownIcon) {\n let downIconWidth = this.dropIcon.offsetWidth +\n parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n this.setPlaceholderSize(downIconWidth);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.setPlaceholderSize(this.showDropDownIcon ? this.dropIcon.offsetWidth : 0);\n }\n }\n }\n setPlaceholderSize(downIconWidth) {\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n if (this.dropIcon.offsetWidth !== 0) {\n this.searchWrapper.style.width = ('calc(100% - ' + (downIconWidth + 10)) + 'px';\n }\n else {\n addClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n }\n else if (!isNullOrUndefined(this.value)) {\n this.searchWrapper.removeAttribute('style');\n removeClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n }\n refreshInputHight() {\n if ((!this.value || !this.value.length) && (isNullOrUndefined(this.text) || this.text === '')) {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n else {\n this.searchWrapper.classList.add(ZERO_SIZE);\n }\n }\n validateValues(newValue, oldValue) {\n return JSON.stringify(newValue.slice().sort()) !== JSON.stringify(oldValue.slice().sort());\n }\n updateValueState(event, newVal, oldVal) {\n let newValue = newVal ? newVal : [];\n let oldValue = oldVal ? oldVal : [];\n if (this.initStatus && this.validateValues(newValue, oldValue)) {\n let eventArgs = {\n e: event,\n oldValue: oldVal,\n value: newVal,\n isInteracted: event ? true : false,\n element: this.element\n };\n this.trigger('change', eventArgs);\n this.updateTempValue();\n if (!this.changeOnBlur) {\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n }\n }\n updateTempValue() {\n if (!this.value) {\n this.tempValues = this.value;\n }\n else {\n this.tempValues = this.value.slice();\n }\n }\n getPagingCount() {\n let height = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n return Math.round(this.list.offsetHeight / parseInt(height, 10));\n }\n pageUpSelection(steps) {\n let collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n let previousItem;\n previousItem = steps >= 0 ? collection[steps + 1] : collection[0];\n this.addListFocus(previousItem);\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')));\n }\n ;\n pageDownSelection(steps) {\n let list = this.getItems();\n let collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n let previousItem;\n previousItem = steps <= collection.length ? collection[steps - 1] : collection[collection.length - 1];\n this.addListFocus(previousItem);\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')));\n }\n getItems() {\n if (!this.list) {\n super.render();\n }\n return this.ulElement && this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li).length > 0 ?\n this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')') : [];\n }\n focusInHandler(e) {\n if (this.enabled) {\n this.showOverAllClear();\n this.inputFocus = true;\n if (this.value && this.value.length) {\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n if (this.mode !== 'CheckBox') {\n this.viewWrapper.style.display = 'none';\n }\n }\n if (this.mode !== 'CheckBox') {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n this.checkPlaceholderSize();\n if (this.focused) {\n let args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n this.focused = false;\n }\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n floatLabelFocus(this.overAllWrapper, this.componentWrapper);\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n return true;\n }\n else {\n return false;\n }\n }\n showDelimWrapper() {\n if (this.mode === 'CheckBox') {\n this.viewWrapper.style.display = '';\n }\n else {\n this.delimiterWrapper.style.display = '';\n }\n this.componentWrapper.classList.add(DELIMITER_VIEW_WRAPPER);\n }\n hideDelimWrapper() {\n this.delimiterWrapper.style.display = 'none';\n this.componentWrapper.classList.remove(DELIMITER_VIEW_WRAPPER);\n }\n expandTextbox() {\n let size = 5;\n if (this.placeholder) {\n size = size > this.inputElement.placeholder.length ? size : this.inputElement.placeholder.length;\n }\n if (this.inputElement.value.length > size) {\n this.inputElement.size = this.inputElement.value.length;\n }\n else {\n this.inputElement.size = size;\n }\n }\n isPopupOpen() {\n return ((this.popupWrapper !== null) && (this.popupWrapper.parentElement !== null));\n }\n refreshPopup() {\n if (this.popupObj && this.mobFilter) {\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n this.popupObj.refreshPosition(this.overAllWrapper);\n this.popupObj.resolveCollision();\n }\n }\n checkTextLength() {\n return this.targetElement().length < 1;\n }\n popupKeyActions(e) {\n switch (e.keyCode) {\n case 38:\n this.hidePopup();\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n e.preventDefault();\n break;\n case 40:\n if (!this.isPopupOpen()) {\n this.showPopup();\n e.preventDefault();\n }\n break;\n }\n }\n updateAriaAttribute() {\n let focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(focusedItem)) {\n this.inputElement.setAttribute('aria-activedescendant', focusedItem.id);\n }\n }\n homeNavigation(isHome) {\n this.removeFocus();\n let scrollEle = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (scrollEle.length > 0) {\n let element = scrollEle[(isHome) ? 0 : (scrollEle.length - 1)];\n element.classList.add(dropDownBaseClasses.focus);\n this.scrollBottom(element);\n }\n }\n onKeyDown(e) {\n if (this.readonly || !this.enabled && this.mode !== 'CheckBox') {\n return;\n }\n this.keyDownStatus = true;\n if (e.keyCode > 111 && e.keyCode < 124) {\n return;\n }\n if (e.altKey) {\n this.popupKeyActions(e);\n return;\n }\n else if (this.isPopupOpen()) {\n let focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n let activeIndex;\n switch (e.keyCode) {\n case 36:\n case 35:\n this.homeNavigation((e.keyCode === 36) ? true : false);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageUpSelection(activeIndex - this.getPagingCount());\n this.updateAriaAttribute();\n }\n return;\n case 34:\n e.preventDefault();\n if (focusedItem) {\n this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageDownSelection(activeIndex + this.getPagingCount());\n this.updateAriaAttribute();\n }\n return;\n case 38:\n this.arrowUp(e);\n break;\n case 40:\n this.arrowDown(e);\n break;\n case 27:\n e.preventDefault();\n this.hidePopup();\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n return;\n case 13:\n e.preventDefault();\n if (this.mode !== 'CheckBox') {\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n return;\n case 32:\n this.spaceKeySelection(e);\n return;\n case 9:\n e.preventDefault();\n this.hidePopup();\n this.inputElement.focus();\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n else {\n switch (e.keyCode) {\n case 13:\n case 9:\n case 16:\n case 17:\n case 20:\n return;\n case 40:\n if (this.openOnClick) {\n this.showPopup();\n }\n break;\n case 27:\n e.preventDefault();\n this.escapeAction();\n return;\n }\n }\n if (this.checkTextLength()) {\n this.keyNavigation(e);\n }\n if (this.mode === 'CheckBox' && this.enableSelectionOrder) {\n this.checkBackCommand(e);\n }\n this.expandTextbox();\n this.refreshPopup();\n }\n arrowDown(e) {\n e.preventDefault();\n this.moveByList(1);\n this.keyAction = true;\n if (document.activeElement.classList.contains('e-input-filter')\n || (this.mode === 'CheckBox' && !this.allowFiltering && document.activeElement !== this.list)) {\n this.list.focus();\n EventHandler.add(this.list, 'keydown', this.onKeyDown, this);\n }\n this.updateAriaAttribute();\n }\n arrowUp(e) {\n e.preventDefault();\n this.keyAction = true;\n let list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n let focuseElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n let index = Array.prototype.slice.call(list).indexOf(focuseElem);\n if (index <= 0 && (this.mode === 'CheckBox' && this.allowFiltering)) {\n this.keyAction = false;\n this.notify('inputFocus', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'focus' });\n }\n else {\n this.list.focus();\n }\n this.moveByList(-1);\n this.updateAriaAttribute();\n }\n spaceKeySelection(e) {\n if (this.mode === 'CheckBox') {\n if (!document.activeElement.classList.contains('e-input-filter')) {\n e.preventDefault();\n this.keyAction = true;\n this.list.focus();\n }\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n }\n checkBackCommand(e) {\n if (e.keyCode === 8 && this.targetElement() === '') {\n this.backCommand = false;\n }\n else {\n this.backCommand = true;\n }\n }\n keyNavigation(e) {\n if ((this.mode !== 'Delimiter' && this.mode !== 'CheckBox') && this.value && this.value.length) {\n switch (e.keyCode) {\n case 37: //left arrow \n e.preventDefault();\n this.moveBy(-1, e);\n break;\n case 39: //right arrow \n e.preventDefault();\n this.moveBy(1, e);\n break;\n case 8:\n this.removelastSelection(e);\n break;\n case 46: //del\n this.removeSelectedChip(e);\n break;\n }\n }\n else if (e.keyCode === 8 && this.mode === 'Delimiter') {\n if (this.value && this.value.length) {\n e.preventDefault();\n let temp = this.value[this.value.length - 1];\n this.removeValue(temp, e);\n this.updateDelimeter(this.delimiterChar, e);\n this.focusAtLastListItem(temp);\n }\n }\n }\n selectByKey(e) {\n this.removeChipSelection();\n this.selectListByKey(e);\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n }\n escapeAction() {\n let temp = this.tempValues ? this.tempValues.slice() : [];\n if (this.value && this.validateValues(this.value, temp)) {\n if (this.mode !== 'CheckBox') {\n this.value = temp;\n this.initialValueUpdate();\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n this.refreshPlaceHolder();\n if (this.value.length) {\n this.showOverAllClear();\n }\n else {\n this.hideOverAllClear();\n }\n }\n this.makeTextBoxEmpty();\n }\n scrollBottom(selectedLI, activeIndex) {\n let currentOffset = this.list.offsetHeight;\n let nextBottom = selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop;\n let nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n let boxRange = (selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop);\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset) {\n this.list.scrollTop = nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n }\n scrollTop(selectedLI, activeIndex) {\n let nextOffset = selectedLI.offsetTop - this.list.scrollTop;\n let nextBottom = selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop;\n nextOffset = this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n let boxRange = (selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop);\n if (activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0) {\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = selectedLI.offsetTop - (this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n }\n selectListByKey(e) {\n let li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n let limit = this.value && this.value.length ? this.value.length : 0;\n let target;\n if (li !== null) {\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (this.isValidLI(li) && limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.addListFocus(li);\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n this.updateDelimeter(this.delimiterChar, e);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n target = li.firstElementChild.lastElementChild;\n this.findGroupStart(target);\n this.deselectHeader();\n }\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.makeTextBoxEmpty();\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(li.textContent);\n }\n if (!this.changeOnBlur) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.refreshPopup();\n }\n else {\n if (!this.isValidLI(li) && limit < this.maximumSelectionLength) {\n target = li.firstElementChild.lastElementChild;\n target.classList.contains('e-check') ? this.selectAllItem(false, e, li) : this.selectAllItem(true, e, li);\n }\n }\n this.refreshSelection();\n if (this.closePopupOnSelect) {\n this.hidePopup();\n }\n }\n this.refreshPlaceHolder();\n }\n refreshListItems(data) {\n if ((this.allowFiltering || (this.mode === 'CheckBox' && this.enableSelectionOrder === true)\n || this.allowCustomValue) && this.mainList && this.listData) {\n let list;\n list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n this.focusAtLastListItem(data);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n }\n }\n removeSelectedChip(e) {\n let selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n let temp;\n if (selectedElem !== null) {\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.value.slice();\n }\n temp = selectedElem.nextElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n this.removeValue(selectedElem.getAttribute('data-value'), e);\n this.makeTextBoxEmpty();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup();\n }\n this.checkPlaceholderSize();\n }\n moveByTop(state) {\n let elements = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n let index;\n if (elements.length > 1) {\n this.removeFocus();\n index = state ? 0 : (elements.length - 1);\n this.addListFocus(elements[index]);\n this.scrollBottom(elements[index], index);\n }\n this.updateAriaAttribute();\n }\n moveByList(position) {\n if (this.list) {\n let elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n let selectedElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n let temp = -1;\n if (elements.length) {\n for (let index = 0; index < elements.length; index++) {\n if (elements[index] === selectedElem) {\n temp = index;\n break;\n }\n }\n if (position > 0) {\n if (temp < (elements.length - 1)) {\n this.removeFocus();\n this.addListFocus(elements[++temp]);\n this.updateCheck(elements[temp]);\n this.scrollBottom(elements[temp], temp);\n }\n }\n else {\n if (temp > 0) {\n this.removeFocus();\n this.addListFocus(elements[--temp]);\n this.updateCheck(elements[temp]);\n this.scrollTop(elements[temp], temp);\n }\n }\n }\n }\n }\n updateCheck(element) {\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox &&\n !isNullOrUndefined(this.fields.groupBy)) {\n let checkElement = element.firstElementChild.lastElementChild;\n if (checkElement.classList.contains('e-check')) {\n element.classList.add('e-active');\n }\n else {\n element.classList.remove('e-active');\n }\n }\n }\n moveBy(position, e) {\n let elements;\n let selectedElem;\n let temp;\n elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP$1);\n selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n if (selectedElem === null) {\n if (position < 0) {\n this.addChipSelection(elements[elements.length - 1], e);\n }\n }\n else {\n if (position < 0) {\n temp = selectedElem.previousElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n }\n else {\n temp = selectedElem.nextElementSibling;\n this.removeChipSelection();\n if (temp !== null) {\n this.addChipSelection(temp, e);\n }\n }\n }\n }\n chipClick(e) {\n if (this.enabled) {\n let elem = closest(e.target, '.' + CHIP$1);\n this.removeChipSelection();\n this.addChipSelection(elem, e);\n }\n }\n removeChipSelection() {\n if (this.chipCollectionWrapper) {\n this.removeChipFocus();\n }\n }\n addChipSelection(element, e) {\n addClass([element], CHIP_SELECTED);\n this.trigger('chipSelection', e);\n }\n onChipRemove(e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.enabled && !this.readonly) {\n let element = e.target.parentElement;\n let customVal = element.getAttribute('data-value');\n let value = this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n if (this.isPopupOpen() && this.mode !== 'CheckBox') {\n this.hidePopup();\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n this.removeValue(value, e);\n if (isNullOrUndefined(this.findListElement(this.list, 'li', 'data-value', value)) && this.mainList && this.listData) {\n let list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.updateDelimeter(this.delimiterChar, e);\n if (this.placeholder && this.floatLabelType === 'Never') {\n this.makeTextBoxEmpty();\n this.checkPlaceholderSize();\n }\n else {\n this.inputElement.value = '';\n }\n e.preventDefault();\n }\n }\n makeTextBoxEmpty() {\n this.inputElement.value = '';\n this.refreshPlaceHolder();\n }\n refreshPlaceHolder() {\n if (this.placeholder && this.floatLabelType === 'Never') {\n if ((this.value && this.value.length) || (!isNullOrUndefined(this.text) && this.text !== '')) {\n this.inputElement.placeholder = '';\n }\n else {\n this.inputElement.placeholder = this.placeholder;\n }\n }\n else {\n this.setFloatLabelType();\n }\n this.expandTextbox();\n }\n removeValue(value, eve, length, isClearAll) {\n let index = this.value.indexOf(this.getFormattedValue(value));\n if (index === -1 && this.allowCustomValue && !isNullOrUndefined(value)) {\n index = this.value.indexOf(value.toString());\n }\n let targetEle = eve && eve.target;\n isClearAll = (isClearAll || targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n let className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (index !== -1) {\n let element = this.findListElement(this.list, 'li', 'data-value', value);\n let val = this.getDataByValue(value);\n let eventArgs = {\n e: eve,\n item: element,\n itemData: val,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('removing', eventArgs, (eventArgs) => {\n if (eventArgs.cancel) {\n this.removeIndex++;\n }\n else {\n let removeVal = this.value.slice(0);\n removeVal.splice(index, 1);\n if (isBlazor() && this.isServerRendered) {\n let removedValues = [].concat([], removeVal);\n this.setProperties({ value: removedValues.length === 0 ? null : removedValues }, true);\n }\n else {\n this.setProperties({ value: [].concat([], removeVal) }, true);\n }\n if (element !== null) {\n let hideElement = this.findListElement(this.mainList, 'li', 'data-value', value);\n element.setAttribute('aria-selected', 'false');\n removeClass([element], className);\n if (hideElement) {\n hideElement.setAttribute('aria-selected', 'false');\n removeClass([element, hideElement], className);\n }\n this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox', li: element,\n e: this, index: index\n });\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: eve });\n attributes(this.inputElement, { 'aria-activedescendant': element.id });\n if ((this.value && this.value.length !== this.mainData.length)\n && (this.mode === 'CheckBox' && this.showSelectAll)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'uncheck' });\n }\n }\n if (this.hideSelectedItem && this.fields.groupBy) {\n this.hideGroupItem(value);\n }\n this.updateMainList(true, value);\n this.removeChip(value);\n this.updateChipStatus();\n let limit = this.value && this.value.length ? this.value.length : 0;\n if (limit < this.maximumSelectionLength) {\n let collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n this.trigger('removed', eventArgs);\n let targetEle = eve && eve.currentTarget;\n let isSelectAll = (targetEle && targetEle.classList.contains('e-selectall-parent')) ? true : null;\n if (!this.changeOnBlur && !isClearAll && (eve && length && !isSelectAll)) {\n this.updateValueState(eve, this.value, this.tempValues);\n }\n if (length) {\n this.selectAllEventData.push(val);\n this.selectAllEventEle.push(element);\n }\n if (length === 1) {\n if (!this.changeOnBlur) {\n this.updateValueState(eve, this.value, this.tempValues);\n }\n let args = {\n event: eve,\n items: this.selectAllEventEle,\n itemData: this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: false\n };\n this.trigger('selectedAll', args);\n this.selectAllEventData = [];\n this.selectAllEventEle = [];\n }\n if (isClearAll && (length === 1 || length === null)) {\n this.clearAllCallback(eve, isClearAll);\n }\n if (isBlazor() && this.isServerRendered && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updatedataValueItems(eve);\n }\n }\n });\n }\n }\n updateMainList(state, value) {\n if (this.allowFiltering || this.mode === 'CheckBox') {\n let element2 = this.findListElement(this.mainList, 'li', 'data-value', value);\n if (element2) {\n if (state) {\n element2.setAttribute('aria-selected', 'false');\n removeClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n element2.firstElementChild.setAttribute('aria-checked', 'false');\n removeClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n else {\n element2.setAttribute('aria-selected', 'true');\n addClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n element2.firstElementChild.setAttribute('aria-checked', 'true');\n addClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n }\n }\n }\n removeChip(value) {\n if (this.chipCollectionWrapper) {\n let element = this.findListElement(this.chipCollectionWrapper, 'span', 'data-value', value);\n if (element) {\n remove(element);\n }\n }\n }\n setWidth(width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.overAllWrapper.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.overAllWrapper.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n }\n updateChipStatus() {\n if (this.value && this.value.length) {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n (this.chipCollectionWrapper.style.display = '');\n }\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n this.showOverAllClear();\n }\n else {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.delimiterWrapper)) {\n (this.delimiterWrapper.style.display = 'none');\n }\n this.hideOverAllClear();\n }\n }\n addValue(value, text, eve) {\n if (!this.value) {\n this.value = [];\n }\n if (this.value.indexOf(value) < 0) {\n this.setProperties({ value: [].concat([], this.value, [value]) }, true);\n }\n let element = this.findListElement(this.list, 'li', 'data-value', value);\n this.removeFocus();\n if (element) {\n this.addListFocus(element);\n this.addListSelection(element);\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.addChip(text, value, eve);\n }\n if (this.hideSelectedItem && this.fields.groupBy) {\n this.hideGroupItem(value);\n }\n this.updateChipStatus();\n this.checkMaxSelection();\n }\n checkMaxSelection() {\n let limit = this.value && this.value.length ? this.value.length : 0;\n if (limit === this.maximumSelectionLength) {\n let collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n addClass(collection, 'e-disable');\n }\n }\n dispatchSelect(value, eve, element, isNotTrigger, length) {\n if (this.initStatus && !isNotTrigger) {\n let val = this.getDataByValue(value);\n let eventArgs = {\n e: eve,\n item: element,\n itemData: val,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, (eventArgs) => {\n if (!eventArgs.cancel) {\n if (length) {\n this.selectAllEventData.push(val);\n this.selectAllEventEle.push(element);\n }\n if (length === 1) {\n let args = {\n event: eve,\n items: this.selectAllEventEle,\n itemData: this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: true\n };\n this.trigger('selectedAll', args);\n this.selectAllEventData = [];\n }\n this.updateListSelectEventCallback(value, element, eve);\n }\n });\n }\n }\n addChip(text, value, e) {\n if (this.chipCollectionWrapper) {\n this.getChip(text, value, e);\n }\n }\n removeChipFocus() {\n let elements;\n let closeElements;\n elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP$1);\n closeElements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP_CLOSE$1.split(' ')[0]);\n removeClass(elements, CHIP_SELECTED);\n if (Browser.isDevice) {\n for (let index = 0; index < closeElements.length; index++) {\n closeElements[index].style.display = 'none';\n }\n }\n }\n onMobileChipInteraction(e) {\n let chipElem = closest(e.target, '.' + CHIP$1);\n let chipClose = chipElem.querySelector('span.' + CHIP_CLOSE$1.split(' ')[0]);\n if (this.enabled && !this.readonly) {\n if (!chipElem.classList.contains(CHIP_SELECTED)) {\n this.removeChipFocus();\n chipClose.style.display = '';\n chipElem.classList.add(CHIP_SELECTED);\n }\n this.refreshPopup();\n e.preventDefault();\n }\n }\n multiCompiler(multiselectTemplate) {\n let checkTemplate = false;\n if (multiselectTemplate) {\n try {\n checkTemplate = (document.querySelectorAll(multiselectTemplate).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n }\n getChip(data, value, e) {\n let itemData = { text: value, value: value };\n let chip = this.createElement('span', {\n className: CHIP$1,\n attrs: { 'data-value': value, 'title': data }\n });\n let compiledString;\n let chipContent = this.createElement('span', { className: CHIP_CONTENT$1 });\n let chipClose = this.createElement('span', { className: CHIP_CLOSE$1 });\n if (this.mainData) {\n itemData = (isBlazor() && this.isServerRendered) ? JSON.parse(JSON.stringify(this.getDataByValue(value)))\n : this.getDataByValue(value);\n }\n if (this.valueTemplate && !isNullOrUndefined(itemData)) {\n let valuecheck = this.multiCompiler(this.valueTemplate);\n if (valuecheck) {\n compiledString = compile(document.querySelector(this.valueTemplate).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n for (let item of compiledString(itemData, null, null, this.valueTemplateId, this.isStringTemplate)) {\n chipContent.appendChild(item);\n }\n this.DropDownBaseupdateBlazorTemplates(false, false, false, false, true, false, false, false);\n }\n else if (this.enableHtmlSanitizer) {\n chipContent.innerText = data;\n }\n else {\n chipContent.innerHTML = data;\n }\n chip.appendChild(chipContent);\n let eventArgs = {\n isInteracted: e ? true : false,\n itemData: itemData,\n e: e,\n setClass: (classes) => {\n addClass([chip], classes);\n },\n cancel: false\n };\n this.trigger('tagging', eventArgs, (eventArgs) => {\n if (!eventArgs.cancel) {\n if (eventArgs.setClass && typeof eventArgs.setClass === 'string' && (isBlazor() && this.isServerRendered)) {\n addClass([chip], eventArgs.setClass);\n }\n if (Browser.isDevice) {\n chip.classList.add(MOBILE_CHIP);\n append([chipClose], chip);\n chipClose.style.display = 'none';\n EventHandler.add(chip, 'click', this.onMobileChipInteraction, this);\n }\n else {\n EventHandler.add(chip, 'mousedown', this.chipClick, this);\n if (this.showClearButton) {\n chip.appendChild(chipClose);\n }\n }\n EventHandler.add(chipClose, 'mousedown', this.onChipRemove, this);\n this.chipCollectionWrapper.appendChild(chip);\n if (!this.changeOnBlur && e) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n }\n });\n }\n calcPopupWidth() {\n let width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n let inputWidth = (this.componentWrapper.offsetWidth) * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n }\n mouseIn() {\n if (this.enabled && !this.readonly) {\n this.showOverAllClear();\n }\n }\n mouseOut() {\n if (!this.inputFocus) {\n this.overAllClear.style.display = 'none';\n }\n }\n listOption(dataSource, fields) {\n let iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n let fieldProperty = isNullOrUndefined(fields.properties) ? fields :\n fields.properties;\n this.listCurrentOptions = (fields.text !== null || fields.value !== null) ? {\n fields: fieldProperty, showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n extend(this.listCurrentOptions, this.listCurrentOptions, fields, true);\n if (this.mode === 'CheckBox') {\n this.notify('listoption', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', dataSource, fieldProperty });\n }\n return this.listCurrentOptions;\n }\n renderPopup() {\n if (!this.list) {\n super.render();\n }\n if (!this.popupObj) {\n let args = { cancel: false };\n this.trigger('beforeOpen', args, (args) => {\n if (!args.cancel) {\n document.body.appendChild(this.popupWrapper);\n let checkboxFilter = this.popupWrapper.querySelector('.' + FILTERPARENT);\n if (this.mode === 'CheckBox' && !this.allowFiltering && checkboxFilter && this.filterParent) {\n checkboxFilter.remove();\n this.filterParent = null;\n }\n let overAllHeight = parseInt(this.popupHeight, 10);\n this.popupWrapper.style.visibility = 'hidden';\n if (this.headerTemplate) {\n this.setHeaderTemplate();\n overAllHeight -= this.header.offsetHeight;\n }\n append([this.list], this.popupWrapper);\n if (this.footerTemplate) {\n this.setFooterTemplate();\n overAllHeight -= this.footer.offsetHeight;\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight -= this.selectAllHeight;\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll && (!this.headerTemplate || !this.footerTemplate)) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n if (this.headerTemplate && this.header) {\n overAllHeight -= this.header.offsetHeight;\n }\n if (this.footerTemplate && this.footer) {\n overAllHeight -= this.footer.offsetHeight;\n }\n }\n if (this.mode === 'CheckBox') {\n let args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n popupElement: this.popupWrapper\n };\n if (this.allowFiltering) {\n this.notify('searchBox', args);\n overAllHeight -= this.searchBoxHeight;\n }\n addClass([this.popupWrapper], 'e-checkbox');\n }\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.calcPopupWidth(), targetType: 'relative', position: { X: 'left', Y: 'bottom' },\n relateTo: this.overAllWrapper, collision: { X: 'flip', Y: 'flip' }, offsetY: 1,\n enableRtl: this.enableRtl, zIndex: this.zIndex,\n close: () => {\n if (this.popupObj.element.parentElement) {\n this.popupObj.unwireScrollEvents();\n detach(this.popupObj.element);\n }\n },\n open: () => {\n this.popupObj.resolveCollision();\n if (!this.isFirstClick) {\n let ulElement = this.list.querySelector('ul');\n if (ulElement) {\n if (this.itemTemplate && (isBlazor() && this.isServerRendered)) {\n setTimeout(() => { this.mainList = this.ulElement; }, 0);\n }\n else if (!(this.mode !== 'CheckBox' && (this.allowFiltering || this.allowCustomValue) &&\n this.targetElement().trim() !== '')) {\n this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n }\n }\n this.isFirstClick = true;\n }\n this.popupObj.wireScrollEvents();\n if (!(this.mode !== 'CheckBox' && (this.allowFiltering || this.allowCustomValue) &&\n this.targetElement().trim() !== '')) {\n this.loadTemplate();\n }\n this.setScrollPosition();\n if (this.allowFiltering) {\n this.notify('inputFocus', {\n module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'focus'\n });\n }\n }, targetExitViewport: () => {\n if (!Browser.isDevice) {\n this.hidePopup();\n }\n }\n });\n if (this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering) {\n this.notify('deviceSearchBox', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n this.popupObj.close();\n this.popupWrapper.style.visibility = '';\n }\n });\n }\n }\n setHeaderTemplate() {\n let compiledString;\n if (this.header) {\n this.header.remove();\n }\n this.header = this.createElement('div');\n addClass([this.header], HEADER$1);\n let headercheck = this.multiCompiler(this.headerTemplate);\n if (headercheck) {\n compiledString = compile(document.querySelector(this.headerTemplate).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n let elements = compiledString({}, null, null, this.headerTemplateId, this.isStringTemplate);\n for (let temp = 0; temp < elements.length; temp++) {\n this.header.appendChild(elements[temp]);\n }\n this.DropDownBaseupdateBlazorTemplates(false, false, false, false, false, true, false);\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n prepend([this.header], this.popupWrapper);\n }\n else {\n append([this.header], this.popupWrapper);\n }\n EventHandler.add(this.header, 'mousedown', this.onListMouseDown, this);\n }\n setFooterTemplate() {\n let compiledString;\n if (this.footer) {\n this.footer.remove();\n }\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER$1);\n let footercheck = this.multiCompiler(this.footerTemplate);\n if (footercheck) {\n compiledString = compile(document.querySelector(this.footerTemplate).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n let elements = compiledString({}, null, null, this.footerTemplateId, this.isStringTemplate);\n for (let temp = 0; temp < elements.length; temp++) {\n this.footer.appendChild(elements[temp]);\n }\n this.DropDownBaseupdateBlazorTemplates(false, false, false, false, false, false, true);\n append([this.footer], this.popupWrapper);\n EventHandler.add(this.footer, 'mousedown', this.onListMouseDown, this);\n }\n ClearAll(e) {\n if (this.enabled && !this.readonly) {\n let temp;\n if (this.value && this.value.length > 0) {\n let liElement = this.list && this.list.querySelectorAll('li.e-list-item');\n if (liElement && liElement.length > 0) {\n this.selectAllItems(false, e);\n }\n else {\n this.removeIndex = 0;\n for (temp = this.value[this.removeIndex]; this.removeIndex < this.value.length; temp = this.value[this.removeIndex]) {\n this.removeValue(temp, e, null, true);\n if (this.value === null && isBlazor() && this.isServerRendered) {\n break;\n }\n }\n }\n }\n else {\n this.clearAllCallback(e);\n }\n }\n }\n clearAllCallback(e, isClearAll) {\n let tempValues = this.value ? this.value.slice() : [];\n if (this.mainList && this.listData && ((this.allowFiltering && this.mode !== 'CheckBox') || this.allowCustomValue)) {\n let list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.focusAtFirstListItem();\n this.updateDelimeter(this.delimiterChar, e);\n if (this.mode !== 'Box' && (!this.inputFocus || this.mode === 'CheckBox')) {\n this.updateDelimView();\n }\n this.makeTextBoxEmpty();\n this.checkPlaceholderSize();\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n if (!this.inputFocus) {\n if (this.changeOnBlur) {\n this.updateValueState(e, this.value, tempValues);\n }\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n }\n if (this.mode === 'CheckBox') {\n this.refreshPlaceHolder();\n this.refreshInputHight();\n if (this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n }\n if (!this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n this.updateListItems(this.list.querySelectorAll('li.e-list-item'), this.mainList.querySelectorAll('li.e-list-item'));\n }\n e.preventDefault();\n }\n windowResize() {\n this.refreshPopup();\n if ((!this.inputFocus || this.mode === 'CheckBox') && this.viewWrapper && this.viewWrapper.parentElement) {\n this.updateDelimView();\n }\n }\n resetValueHandler(e) {\n let formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n let textVal = (this.element.tagName === this.getNgDirective()) ? null : this.element.getAttribute('data-initial-value');\n this.text = textVal;\n }\n }\n wireEvent() {\n EventHandler.add(this.componentWrapper, 'mousedown', this.wrapperClick, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(this.inputElement, 'focus', this.focusInHandler, this);\n EventHandler.add(this.inputElement, 'keydown', this.onKeyDown, this);\n EventHandler.add(this.inputElement, 'keyup', this.KeyUp, this);\n if (this.mode !== 'CheckBox') {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n }\n EventHandler.add(this.inputElement, 'blur', this.onBlur, this);\n EventHandler.add(this.componentWrapper, 'mousemove', this.mouseIn, this);\n let formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n EventHandler.add(this.componentWrapper, 'mouseout', this.mouseOut, this);\n EventHandler.add(this.overAllClear, 'mouseup', this.ClearAll, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n }\n onInput(e) {\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n // For Filtering works in mobile firefox\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.search(e);\n }\n }\n pasteHandler(event) {\n setTimeout(() => {\n this.search(event);\n });\n }\n search(e) {\n if (!this.isPopupOpen() && this.openOnClick) {\n this.showPopup();\n }\n this.openClick(e);\n if (this.checkTextLength() && !this.allowFiltering && (e.keyCode !== 8)) {\n this.focusAtFirstListItem();\n }\n else {\n let text = this.targetElement();\n this.keyCode = e.keyCode;\n if (this.allowFiltering) {\n let eventArgs = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: (dataSource, query, fields) => {\n if (eventArgs.cancel) {\n return;\n }\n this.isFiltered = true;\n this.remoteFilterAction = true;\n this.dataUpdater(dataSource, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs, (eventArgs) => {\n if (!eventArgs.cancel) {\n if (!this.isFiltered && !eventArgs.preventDefaultAction) {\n this.filterAction = true;\n this.dataUpdater(this.dataSource, null, this.fields);\n }\n }\n });\n }\n else if (this.allowCustomValue) {\n let query = new Query();\n query = (text !== '') ? query.where(this.fields.text, 'startswith', text, this.ignoreCase, this.ignoreAccent) : query;\n this.dataUpdater(this.mainData, query, this.fields);\n }\n else {\n let liCollections;\n liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n let activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n this.list.scrollTop =\n activeElement.item.offsetHeight * activeElement.index;\n }\n else if (this.targetElement() !== '') {\n this.removeFocus();\n }\n else {\n this.focusAtFirstListItem();\n }\n }\n }\n }\n preRender() {\n if (this.allowFiltering === null) {\n this.allowFiltering = (this.mode === 'CheckBox') ? true : false;\n }\n this.initializeData();\n this.updateDataAttribute(this.htmlAttributes);\n super.preRender();\n }\n getLocaleName() {\n return 'multi-select';\n }\n ;\n initializeData() {\n this.mainListCollection = [];\n this.beforePopupOpen = false;\n this.filterAction = false;\n this.remoteFilterAction = false;\n this.isFirstClick = false;\n this.mobFilter = true;\n this.isFiltered = false;\n this.focused = true;\n this.initial = true;\n this.backCommand = true;\n }\n updateData(delimiterChar, e) {\n let data = '';\n let delim = this.mode === 'Delimiter' || this.mode === 'CheckBox';\n let text = [];\n let temp;\n let tempData = this.listData;\n this.listData = this.mainData;\n this.hiddenElement.innerHTML = '';\n if (!isNullOrUndefined(this.value)) {\n for (let index = 0; !isNullOrUndefined(this.value[index]); index++) {\n if (this.listData) {\n temp = this.getTextByValue(this.value[index]);\n }\n else {\n temp = this.value[index];\n }\n data += temp + delimiterChar + ' ';\n text.push(temp);\n this.hiddenElement.innerHTML += '';\n }\n }\n this.setProperties({ text: text.toString() }, true);\n if (delim) {\n this.updateWrapperText(this.delimiterWrapper, data);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n }\n let targetEle = e && e.target;\n let isClearAll = (targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n if (!this.changeOnBlur && ((e && !isClearAll)) || this.isSelectAll) {\n this.isSelectAll = false;\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.listData = tempData;\n this.addValidInputClass();\n }\n initialTextUpdate() {\n if (!isNullOrUndefined(this.text)) {\n let textArr = this.text.split(this.delimiterChar);\n let textVal = [];\n for (let index = 0; textArr.length > index; index++) {\n let val = this.getValueByText(textArr[index]);\n if (!isNullOrUndefined(val)) {\n textVal.push(val);\n }\n else if (this.allowCustomValue) {\n textVal.push(textArr[index]);\n }\n }\n if (textVal && textVal.length) {\n this.setProperties({ value: textVal }, true);\n }\n }\n else {\n this.setProperties({ value: null }, true);\n }\n }\n renderList(isEmptyData) {\n if (!isEmptyData && this.allowCustomValue && this.list && (this.list.textContent === this.noRecordsTemplate\n || this.list.querySelector('.e-ul') && this.list.querySelector('.e-ul').childElementCount === 0)) {\n isEmptyData = true;\n }\n super.render(isEmptyData);\n this.unwireListEvents();\n this.wireListEvents();\n }\n initialValueUpdate() {\n if (this.list) {\n let text;\n let element;\n let value;\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.innerHTML = '';\n }\n this.removeListSelection();\n if (!isNullOrUndefined(this.value)) {\n for (let index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.value[index];\n element = this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n text = this.getTextByValue(value);\n if ((element && (element.getAttribute('aria-selected') !== 'true')) ||\n (element && (element.getAttribute('aria-selected') === 'true' && this.hideSelectedItem) &&\n (this.mode === 'Box' || this.mode === 'Default'))) {\n this.addChip(text, value);\n this.addListSelection(element);\n }\n else if (value && this.allowCustomValue) {\n let indexItem = this.listData.length;\n let newValue = {};\n setValue(this.fields.text, value, newValue);\n setValue(this.fields.value, value, newValue);\n let noDataEle = this.popupWrapper.querySelector('.' + dropDownBaseClasses.noData);\n this.addItem(newValue, indexItem);\n if (this.popupWrapper.contains(noDataEle)) {\n this.list.setAttribute('style', noDataEle.getAttribute('style'));\n this.popupWrapper.replaceChild(this.list, noDataEle);\n this.wireListEvents();\n }\n this.addChip(text, value);\n this.addListSelection(element);\n }\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.changeOnBlur) {\n this.updateValueState(null, this.value, this.tempValues);\n }\n this.updateDelimeter(this.delimiterChar);\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll && (isNullOrUndefined(this.value) || !this.value.length)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.mode === 'Box') {\n this.chipCollectionWrapper.style.display = '';\n }\n else if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n }\n }\n updateActionCompleteData(li, item) {\n if (this.value && this.value.indexOf(li.getAttribute('data-value')) > -1) {\n this.mainList = this.ulElement;\n addClass([li], HIDE_LIST);\n }\n }\n updateAddItemList(list, itemCount) {\n if (this.popupObj && this.popupObj.element && this.popupObj.element.querySelector('.' + dropDownBaseClasses.noData) && list) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n remove(this.popupWrapper.querySelector('.e-content'));\n this.popupObj = null;\n this.renderPopup();\n }\n }\n updateDataList() {\n if (this.mainList && this.ulElement && this.mainList.childElementCount < this.ulElement.childElementCount) {\n this.mainList = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;\n }\n }\n isValidLI(li) {\n return (li && !li.classList.contains(dropDownBaseClasses.disabled) && !li.classList.contains(dropDownBaseClasses.group) &&\n li.classList.contains(dropDownBaseClasses.li));\n }\n ;\n updateListSelection(li, e, length) {\n let customVal = li.getAttribute('data-value');\n let value = this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n let text = this.getTextByValue(value);\n this.removeHover();\n if (!this.value || this.value.indexOf(value) === -1) {\n this.dispatchSelect(value, e, li, (li.getAttribute('aria-selected') === 'true'), length);\n }\n else {\n this.removeValue(value, e, length);\n }\n }\n updateListSelectEventCallback(value, li, e) {\n let text = this.getTextByValue(value);\n if ((this.allowCustomValue || this.allowFiltering) && !this.findListElement(this.mainList, 'li', 'data-value', value)) {\n let temp = li.cloneNode(true);\n let data = this.getDataByValue(value);\n let eventArgs = {\n newData: data,\n cancel: false\n };\n this.trigger('customValueSelection', eventArgs, (eventArgs) => {\n if (!eventArgs.cancel) {\n append([temp], this.mainList);\n this.mainData.push(data);\n this.remoteCustomValue = false;\n this.addValue(value, text, e);\n }\n });\n }\n else {\n this.remoteCustomValue = false;\n this.addValue(value, text, e);\n }\n if (isBlazor() && this.isServerRendered && this.value && this.list &&\n this.value.length === this.list.querySelectorAll('li.e-list-item').length ||\n this.value.length === this.maximumSelectionLength) {\n this.updatedataValueItems(e);\n this.checkPlaceholderSize();\n }\n if (isBlazor() && this.isServerRendered) {\n this.checkPlaceholderSize();\n this.makeTextBoxEmpty();\n }\n }\n removeListSelection() {\n let className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n let selectedItems = this.list.querySelectorAll('.' + className);\n let temp = selectedItems.length;\n if (selectedItems && selectedItems.length) {\n removeClass(selectedItems, className);\n while (temp > 0) {\n selectedItems[temp - 1].setAttribute('aria-selected', 'false');\n temp--;\n }\n }\n if (!isNullOrUndefined(this.mainList)) {\n let selectItems = this.mainList.querySelectorAll('.' + className);\n let temp1 = selectItems.length;\n if (selectItems && selectItems.length) {\n removeClass(selectItems, className);\n while (temp1 > 0) {\n selectItems[temp1 - 1].setAttribute('aria-selected', 'false');\n if (this.mode === 'CheckBox') {\n if (selectedItems && (selectedItems.length > (temp1 - 1))) {\n selectedItems[temp1 - 1].firstElementChild.setAttribute('aria-checked', 'false');\n removeClass([selectedItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n selectItems[temp1 - 1].firstElementChild.setAttribute('aria-checked', 'false');\n removeClass([selectItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n temp1--;\n }\n }\n }\n }\n ;\n removeHover() {\n let hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n ;\n removeFocus() {\n if (this.list && this.mainList) {\n let hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.focus);\n let mainlist = this.mainList.querySelectorAll('.' + dropDownBaseClasses.focus);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.focus);\n removeClass(mainlist, dropDownBaseClasses.focus);\n }\n }\n }\n ;\n addListHover(li) {\n if (this.enabled && this.isValidLI(li)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n else {\n if ((li !== null && li.classList.contains('e-list-group-item')) && this.enableGroupCheckBox && this.mode === 'CheckBox'\n && !isNullOrUndefined(this.fields.groupBy)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n }\n }\n ;\n addListFocus(element) {\n if (this.enabled && this.isValidLI(element)) {\n this.removeFocus();\n addClass([element], dropDownBaseClasses.focus);\n }\n else {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n addClass([element], dropDownBaseClasses.focus);\n }\n }\n }\n addListSelection(element) {\n let className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (this.isValidLI(element) && !element.classList.contains(dropDownBaseClasses.hover)) {\n addClass([element], className);\n this.updateMainList(false, element.getAttribute('data-value'));\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox') {\n let ariaCheck = element.firstElementChild.getAttribute('aria-checked');\n if (ariaCheck === 'false' || isNullOrUndefined(ariaCheck)) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n }\n }\n this.notify('activeList', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n if (this.chipCollectionWrapper !== null) {\n this.removeChipSelection();\n }\n attributes(this.inputElement, { 'aria-activedescendant': element.id });\n }\n }\n updateDelimeter(delimChar, e) {\n this.updateData(delimChar, e);\n }\n onMouseClick(e) {\n this.scrollFocusStatus = false;\n let target = e.target;\n let li = closest(target, '.' + dropDownBaseClasses.li);\n let headerLi = closest(target, '.' + dropDownBaseClasses.group);\n if (headerLi && this.enableGroupCheckBox && this.mode === 'CheckBox' && this.fields.groupBy) {\n target = target.classList.contains('e-list-group-item') ? target.firstElementChild.lastElementChild\n : e.target;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e);\n target.classList.remove('e-check');\n target.classList.remove('e-stop');\n closest(target, '.' + 'e-list-group-item').classList.remove('e-active');\n target.setAttribute('aria-selected', 'false');\n }\n else {\n this.selectAllItem(true, e);\n target.classList.remove('e-stop');\n target.classList.add('e-check');\n closest(target, '.' + 'e-list-group-item').classList.add('e-active');\n target.setAttribute('aria-selected', 'true');\n }\n this.refreshSelection();\n this.checkSelectAll();\n }\n else {\n if (this.isValidLI(li)) {\n let limit = this.value && this.value.length ? this.value.length : 0;\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.checkPlaceholderSize();\n this.addListFocus(li);\n if ((this.allowCustomValue || this.allowFiltering) && this.mainList && this.listData) {\n if (this.mode !== 'CheckBox') {\n this.focusAtLastListItem(li.getAttribute('data-value'));\n }\n this.refreshSelection();\n }\n else {\n this.makeTextBoxEmpty();\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n this.updateDelimeter(this.delimiterChar, e);\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.checkSelectAll();\n this.refreshPopup();\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup();\n }\n else {\n e.preventDefault();\n }\n this.makeTextBoxEmpty();\n this.findGroupStart(target);\n }\n else {\n e.preventDefault();\n }\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(isNullOrUndefined(li) ? null : li.textContent);\n }\n this.refreshPlaceHolder();\n this.deselectHeader();\n }\n }\n findGroupStart(target) {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n let count = 0;\n let liChecked = 0;\n let liUnchecked = 0;\n let groupValues;\n if (this.itemTemplate && !target.getElementsByClassName('e-frame').length) {\n while (!target.getElementsByClassName('e-frame').length) {\n target = target.parentElement;\n }\n }\n if (target.classList.contains('e-frame')) {\n target = target.parentElement.parentElement;\n }\n groupValues = this.findGroupAttrtibutes(target, liChecked, liUnchecked, count, 0);\n groupValues = this.findGroupAttrtibutes(target, groupValues[0], groupValues[1], groupValues[2], 1);\n while (!target.classList.contains('e-list-group-item')) {\n if (target.classList.contains('e-list-icon')) {\n target = target.parentElement;\n }\n target = target.previousElementSibling;\n if (target == null) {\n break;\n }\n }\n this.updateCheckBox(target, groupValues[0], groupValues[1], groupValues[2]);\n }\n }\n findGroupAttrtibutes(listElement, checked, unChecked, count, position) {\n while (!listElement.classList.contains('e-list-group-item')) {\n if (listElement.classList.contains('e-list-icon')) {\n listElement = listElement.parentElement;\n }\n if (listElement.getElementsByClassName('e-frame')[0].classList.contains('e-check') &&\n listElement.classList.contains('e-list-item')) {\n checked++;\n }\n else if (listElement.classList.contains('e-list-item')) {\n unChecked++;\n }\n count++;\n listElement = position ? listElement.nextElementSibling : listElement.previousElementSibling;\n if (listElement == null) {\n break;\n }\n }\n return [checked, unChecked, count];\n }\n updateCheckBox(groupHeader, checked, unChecked, count) {\n if (groupHeader === null) {\n return;\n }\n let checkBoxElement = groupHeader.getElementsByClassName('e-frame')[0];\n if (count === checked) {\n checkBoxElement.classList.remove('e-stop');\n checkBoxElement.classList.add('e-check');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'true');\n }\n else if (count === unChecked) {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.remove('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.remove('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n else if (this.maximumSelectionLength === checked - 1) {\n checkBoxElement.classList.remove('e-stop');\n groupHeader.setAttribute('aria-selected', 'true');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n checkBoxElement.classList.add('e-check');\n }\n else {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.add('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n }\n deselectHeader() {\n let limit = this.value && this.value.length ? this.value.length : 0;\n let collection = this.list.querySelectorAll('li.e-list-group-item:not(.e-active)');\n if (limit < this.maximumSelectionLength) {\n removeClass(collection, 'e-disable');\n }\n if (limit === this.maximumSelectionLength) {\n addClass(collection, 'e-disable');\n }\n }\n onMouseOver(e) {\n let currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n if (currentLi === null && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)\n && this.enableGroupCheckBox) {\n currentLi = closest(e.target, '.' + dropDownBaseClasses.group);\n }\n this.addListHover(currentLi);\n }\n onMouseLeave(e) {\n this.removeHover();\n }\n onListMouseDown(e) {\n e.preventDefault();\n this.scrollFocusStatus = true;\n }\n onDocumentClick(e) {\n if (this.mode !== 'CheckBox') {\n let target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '#' + this.popupObj.element.id)) &&\n !this.overAllWrapper.contains(e.target)) {\n this.scrollFocusStatus = false;\n }\n else {\n this.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement);\n }\n }\n }\n wireListEvents() {\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.list, 'mousedown', this.onListMouseDown, this);\n EventHandler.add(this.list, 'mouseup', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n ;\n unwireListEvents() {\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n if (this.list) {\n EventHandler.remove(this.list, 'mousedown', this.onListMouseDown);\n EventHandler.remove(this.list, 'mouseup', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n }\n ;\n hideOverAllClear() {\n if (!this.value || !this.value.length || this.inputElement.value === '') {\n this.overAllClear.style.display = 'none';\n }\n }\n showOverAllClear() {\n if (((this.value && this.value.length) || this.inputElement.value !== '') && this.showClearButton && this.readonly !== true) {\n this.overAllClear.style.display = '';\n }\n else {\n this.overAllClear.style.display = 'none';\n }\n }\n /**\n * Sets the focus to widget for interaction.\n * @returns void\n */\n focusIn() {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n }\n /**\n * Remove the focus from widget, if the widget is in focus state.\n * @returns void\n */\n focusOut() {\n if (document.activeElement === this.inputElement && this.enabled) {\n this.inputElement.blur();\n }\n }\n /**\n * Shows the spinner loader.\n * @returns void.\n */\n showSpinner() {\n if (isNullOrUndefined(this.spinnerElement)) {\n if (this.overAllClear.style.display !== 'none') {\n this.spinnerElement = this.overAllClear;\n }\n else {\n this.spinnerElement = this.createElement('span', { className: CLOSEICON_CLASS$1 + ' ' + SPINNER_CLASS$1 });\n this.componentWrapper.appendChild(this.spinnerElement);\n }\n createSpinner({ target: this.spinnerElement, width: Browser.isDevice ? '16px' : '14px' }, this.createElement);\n addClass([this.spinnerElement], DISABLE_ICON);\n showSpinner(this.spinnerElement);\n }\n }\n /**\n * Hides the spinner loader.\n * @returns void.\n */\n hideSpinner() {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], DISABLE_ICON);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS$1)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n }\n updateWrapperText(wrapperType, wrapperData) {\n if (this.valueTemplate || !this.enableHtmlSanitizer) {\n wrapperType.innerHTML = wrapperData;\n }\n else {\n wrapperType.innerText = SanitizeHtmlHelper.sanitize(wrapperData);\n }\n }\n updateDelimView() {\n if (this.delimiterWrapper) {\n this.hideDelimWrapper();\n }\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n this.viewWrapper.style.display = '';\n this.viewWrapper.style.width = '';\n this.viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER$1);\n if (this.value && this.value.length) {\n let data = '';\n let temp;\n let tempData;\n let tempIndex = 1;\n let wrapperleng;\n let remaining;\n let downIconWidth = 0;\n let overAllContainer;\n this.updateWrapperText(this.viewWrapper, data);\n let l10nLocale = {\n noRecordsTemplate: 'No records found',\n actionFailureTemplate: 'Request failed',\n overflowCountTemplate: '+${count} more..',\n totalCountTemplate: '${count} selected'\n };\n let l10n = new L10n(this.getLocaleName(), {}, this.locale);\n if (l10n.getConstant('actionFailureTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n let remainContent = l10n.getConstant('overflowCountTemplate');\n let raminElement = this.createElement('span', {\n className: REMAIN_WRAPPER$1\n });\n let compiledString = compile(remainContent);\n let totalCompiledString = compile(l10n.getConstant('totalCountTemplate'));\n raminElement.appendChild(compiledString({ 'count': this.value.length }, null, null, null, !this.isStringTemplate)[0]);\n this.viewWrapper.appendChild(raminElement);\n let remainSize = raminElement.offsetWidth;\n remove(raminElement);\n if (this.showDropDownIcon) {\n downIconWidth = this.dropIcon.offsetWidth +\n parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n }\n if (!isNullOrUndefined(this.value)) {\n for (let index = 0; !isNullOrUndefined(this.value[index]); index++) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n if ((wrapperleng + downIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.updateWrapperText(this.viewWrapper, temp);\n remaining = this.value.length - index;\n wrapperleng = this.viewWrapper.offsetWidth;\n while (((wrapperleng + remainSize + downIconWidth) > overAllContainer) && wrapperleng !== 0\n && this.viewWrapper.innerHTML !== '') {\n let textArr = this.viewWrapper.innerHTML.split(this.delimiterChar);\n textArr.pop();\n this.viewWrapper.innerHTML = textArr.join(this.delimiterChar);\n if (this.viewWrapper.innerHTML === '') {\n remaining++;\n }\n wrapperleng = this.viewWrapper.offsetWidth;\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n if (remaining > 0) {\n let totalWidth = overAllContainer - downIconWidth;\n this.viewWrapper.appendChild(this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, compiledString, totalCompiledString, totalWidth));\n this.updateRemainWidth(this.viewWrapper, totalWidth);\n this.updateRemainingText(raminElement, downIconWidth, remaining, compiledString, totalCompiledString);\n }\n }\n else {\n this.viewWrapper.innerHTML = '';\n this.viewWrapper.style.display = 'none';\n }\n }\n updateRemainWidth(viewWrapper, totalWidth) {\n if (viewWrapper.classList.contains(TOTAL_COUNT_WRAPPER$1) && totalWidth < (viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10)\n + parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10))) {\n viewWrapper.style.width = totalWidth + 'px';\n }\n }\n updateRemainTemplate(raminElement, viewWrapper, remaining, compiledString, totalCompiledString, totalWidth) {\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3 && viewWrapper.firstChild.nodeValue === '') {\n viewWrapper.removeChild(viewWrapper.firstChild);\n }\n raminElement.innerHTML = '';\n raminElement.appendChild((viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) ?\n compiledString({ 'count': remaining }, null, null, null, !this.isStringTemplate)[0] :\n totalCompiledString({ 'count': remaining }, null, null, null, !this.isStringTemplate)[0]);\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) {\n viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER$1);\n }\n else {\n viewWrapper.classList.add(TOTAL_COUNT_WRAPPER$1);\n this.updateRemainWidth(viewWrapper, totalWidth);\n }\n return raminElement;\n }\n updateRemainingText(raminElement, downIconWidth, remaining, compiledString, totalCompiledString) {\n let overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n let wrapperleng = this.viewWrapper.offsetWidth + parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n if (((wrapperleng + downIconWidth) >= overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n while (((wrapperleng + downIconWidth) > overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n let textArr = this.viewWrapper.firstChild.nodeValue.split(this.delimiterChar);\n textArr.pop();\n this.viewWrapper.firstChild.nodeValue = textArr.join(this.delimiterChar);\n if (this.viewWrapper.firstChild.nodeValue === '') {\n this.viewWrapper.removeChild(this.viewWrapper.firstChild);\n }\n remaining++;\n wrapperleng = this.viewWrapper.offsetWidth;\n }\n let totalWidth = overAllContainer - downIconWidth;\n this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, compiledString, totalCompiledString, totalWidth);\n }\n }\n getOverflowVal(index) {\n let temp;\n if (this.mainData && this.mainData.length) {\n if (this.mode === 'CheckBox') {\n let newTemp = this.listData;\n this.listData = this.mainData;\n temp = this.getTextByValue(this.value[index]);\n this.listData = newTemp;\n }\n else {\n temp = this.getTextByValue(this.value[index]);\n }\n }\n else {\n temp = this.value[index];\n }\n return temp;\n }\n unWireEvent() {\n EventHandler.remove(this.componentWrapper, 'mousedown', this.wrapperClick);\n EventHandler.remove(window, 'resize', this.windowResize);\n EventHandler.remove(this.inputElement, 'focus', this.focusInHandler);\n EventHandler.remove(this.inputElement, 'keydown', this.onKeyDown);\n if (this.mode !== 'CheckBox') {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n }\n EventHandler.remove(this.inputElement, 'keyup', this.KeyUp);\n let formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.onBlur);\n EventHandler.remove(this.componentWrapper, 'mousemove', this.mouseIn);\n EventHandler.remove(this.componentWrapper, 'mouseout', this.mouseOut);\n EventHandler.remove(this.overAllClear, 'mousedown', this.ClearAll);\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n }\n selectAllItem(state, event, list) {\n let li;\n li = this.list.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)');\n if (this.value && this.value.length && this.isPopupOpen() && event && event.target\n && closest(event.target, '.e-close-hooker') && this.allowFiltering) {\n li = this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)');\n }\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n let target = (event ? event.target : null);\n target = (event && event.keyCode === 32) ? list : target;\n target = (target && target.classList.contains('e-frame')) ? target.parentElement.parentElement : target;\n if (target && target.classList.contains('e-list-group-item')) {\n let listElement = target.nextElementSibling;\n if (isNullOrUndefined(listElement)) {\n return;\n }\n while (listElement.classList.contains('e-list-item')) {\n if (state) {\n if (!listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n let selectionLimit = this.value && this.value.length ? this.value.length : 0;\n if (listElement.classList.contains('e-active')) {\n selectionLimit -= 1;\n }\n if (selectionLimit < this.maximumSelectionLength) {\n this.updateListSelection(listElement, event);\n }\n }\n }\n else {\n if (listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n this.updateListSelection(listElement, event);\n }\n }\n listElement = listElement.nextElementSibling;\n if (listElement == null) {\n break;\n }\n }\n if (target.classList.contains('e-list-group-item')) {\n let focusedElement = this.list.getElementsByClassName('e-item-focus')[0];\n if (focusedElement) {\n focusedElement.classList.remove('e-item-focus');\n }\n state ? target.classList.add('e-active') : target.classList.remove('e-active');\n target.classList.add('e-item-focus');\n }\n this.textboxValueUpdate();\n this.checkPlaceholderSize();\n if (!this.changeOnBlur && event) {\n this.updateValueState(event, this.value, this.tempValues);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n }\n updateValue(event, li, state) {\n let length = li.length;\n if (li && li.length) {\n let index = 0;\n let count = 0;\n if (this.enableGroupCheckBox) {\n count = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : li.length;\n }\n else {\n count = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : this.maximumSelectionLength;\n }\n while (index < length && index <= 50 && index < count) {\n this.updateListSelection(li[index], event, length - index);\n this.findGroupStart(li[index]);\n index++;\n }\n if (length > 50) {\n setTimeout(() => {\n while (index < length && index < count) {\n this.updateListSelection(li[index], event, length - index);\n this.findGroupStart(li[index]);\n index++;\n }\n if (!(isBlazor() && this.isServerRendered)) {\n this.updatedataValueItems(event);\n }\n }, 0);\n }\n }\n if (!(isBlazor() && this.isServerRendered)) {\n this.updatedataValueItems(event);\n this.checkPlaceholderSize();\n }\n }\n updatedataValueItems(event) {\n this.deselectHeader();\n this.textboxValueUpdate(event);\n }\n textboxValueUpdate(event) {\n if (this.mode !== 'Box' && !this.isPopupOpen()) {\n this.updateDelimView();\n }\n else {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n this.updateDelimeter(this.delimiterChar, event);\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshPlaceHolder();\n }\n setZIndex() {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n }\n updateDataSource(prop) {\n if (isNullOrUndefined(this.list)) {\n this.renderPopup();\n }\n else {\n this.resetList(this.dataSource);\n }\n if (this.value && this.value.length && !(isBlazor() && this.isServerRendered)) {\n this.setProperties({ 'value': this.value });\n this.refreshSelection();\n }\n }\n onLoadSelect() {\n this.setDynValue = true;\n this.renderPopup();\n }\n selectAllItems(state, event) {\n if (isNullOrUndefined(this.list)) {\n this.selectAllAction = () => {\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n let args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: state ? 'check' : 'uncheck'\n };\n this.notify('checkSelectAll', args);\n }\n this.selectAllItem(state, event);\n this.selectAllAction = null;\n };\n super.render();\n }\n else {\n this.selectAllAction = null;\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n let args = {\n value: state ? 'check' : 'uncheck',\n enable: this.mode === 'CheckBox',\n module: 'CheckBoxSelection'\n };\n this.notify('checkSelectAll', args);\n }\n this.selectAllItem(state, event);\n }\n }\n /**\n * Get the properties to be maintained in the persisted state.\n */\n getPersistData() {\n return this.addOnPersist(['value']);\n }\n ;\n /**\n * Dynamically change the value of properties.\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))\n || newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n this.mainList = null;\n this.mainData = null;\n this.isFirstClick = false;\n this.isDynamicDataChange = true;\n }\n if (this.getModuleName() === 'multiselect') {\n this.filterAction = false;\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'query':\n case 'dataSource':\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n if (!isNullOrUndefined(this.popupObj)) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttribute();\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'text':\n this.updateVal(this.value, this.value, 'text');\n break;\n case 'value':\n this.updateVal(this.value, oldProp.value, 'value');\n this.addValidInputClass();\n break;\n case 'width':\n this.setWidth(newProp.width);\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n break;\n case 'placeholder':\n this.refreshPlaceHolder();\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n this.notify('filterBarPlaceholder', { filterBarPlaceholder: newProp.filterBarPlaceholder });\n }\n break;\n case 'delimiterChar':\n if (this.mode !== 'Box') {\n this.updateDelimView();\n }\n this.updateData(newProp.delimiterChar);\n break;\n case 'cssClass':\n this.updateOldPropCssClass(oldProp.cssClass);\n this.updateCssClass();\n break;\n case 'enableRtl':\n this.enableRTL(newProp.enableRtl);\n super.onPropertyChanged(newProp, oldProp);\n break;\n case 'readonly':\n this.updateReadonly(newProp.readonly);\n this.hidePopup();\n break;\n case 'enabled':\n this.hidePopup();\n this.enable(newProp.enabled);\n break;\n case 'showSelectAll':\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n break;\n case 'showDropDownIcon':\n this.dropDownIcon();\n break;\n case 'floatLabelType':\n this.setFloatLabelType();\n this.addValidInputClass();\n break;\n case 'enableSelectionOrder':\n break;\n case 'selectAllText':\n this.notify('selectAllText', false);\n break;\n case 'popupHeight':\n case 'headerTemplate':\n case 'footerTemplate':\n this.reInitializePoup();\n break;\n case 'allowFiltering':\n if (this.mode === 'CheckBox' && this.popupObj) {\n this.reInitializePoup();\n }\n this.updateSelectElementData(this.allowFiltering);\n break;\n default:\n let msProps;\n msProps = this.getPropObject(prop, newProp, oldProp);\n super.onPropertyChanged(msProps.newProperty, msProps.oldProperty);\n break;\n }\n }\n }\n reInitializePoup() {\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n }\n updateVal(newProp, oldProp, prop) {\n if (!this.list) {\n this.onLoadSelect();\n }\n else if (!this.inputFocus) {\n if (prop === 'text') {\n this.initialTextUpdate();\n newProp = this.value;\n }\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n this.tempValues = oldProp;\n }\n this.initialValueUpdate();\n if (this.mode !== 'Box') {\n this.updateDelimView();\n }\n this.refreshInputHight();\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n this.checkPlaceholderSize();\n }\n if (!this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n }\n /**\n * Adds a new item to the multiselect popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @return {void}.\n */\n addItem(items, itemIndex) {\n super.addItem(items, itemIndex);\n }\n /**\n * Hides the popup, if the popup in a open state.\n * @returns void\n */\n hidePopup() {\n let delay = 100;\n if (this.isPopupOpen()) {\n let animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n let eventArgs = { popup: this.popupObj, cancel: false, animation: animModel };\n this.trigger('close', eventArgs, (eventArgs) => {\n if (!eventArgs.cancel) {\n this.beforePopupOpen = false;\n this.overAllWrapper.classList.remove(iconAnimation);\n this.popupObj.hide(new Animation(eventArgs.animation));\n attributes(this.inputElement, { 'aria-expanded': 'false' });\n if (this.allowFiltering) {\n this.notify('inputFocus', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'clear' });\n }\n this.popupObj.hide();\n removeClass([document.body, this.popupObj.element], 'e-popup-full-page');\n EventHandler.remove(this.list, 'keydown', this.onKeyDown);\n }\n });\n }\n }\n /**\n * Shows the popup, if the popup in a closed state.\n * @returns void\n */\n showPopup() {\n if (!this.enabled) {\n return;\n }\n if ((isBlazor() && this.isServerRendered) && this.itemTemplate) {\n this.DropDownBaseupdateBlazorTemplates(true, false, false, false, false, false, false, false);\n if (this.mode !== 'CheckBox' && this.list) {\n this.refreshSelection();\n }\n }\n if (!this.ulElement) {\n this.beforePopupOpen = true;\n super.render();\n if (this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering) {\n this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n return;\n }\n if (this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering) {\n this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n let mainLiLength = this.ulElement.querySelectorAll('li.' + 'e-list-item').length;\n let liLength = this.ulElement.querySelectorAll('li.'\n + dropDownBaseClasses.li + '.' + HIDE_LIST).length;\n if (mainLiLength > 0 && (mainLiLength === liLength) && (liLength === this.mainData.length)) {\n this.beforePopupOpen = false;\n return;\n }\n this.onPopupShown();\n }\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n * parameter\n * `true` - Selects entire list items.\n * `false` - Un Selects entire list items.\n * @returns void\n */\n selectAll(state) {\n this.isSelectAll = true;\n this.selectAllItems(state);\n }\n getModuleName() {\n return 'multiselect';\n }\n ;\n /**\n * Allows you to clear the selected values from the Multiselect component.\n * @returns void\n */\n clear() {\n this.selectAll(false);\n this.setProperties({ value: null }, true);\n }\n /**\n * To Initialize the control rendering\n * @private\n */\n render() {\n this.setDynValue = this.initStatus = false;\n this.isSelectAll = false;\n this.searchWrapper = this.createElement('span', { className: SEARCHBOX_WRAPPER + ' ' + ((this.mode === 'Box') ? BOX_ELEMENT : '') });\n this.viewWrapper = this.createElement('span', { className: DELIMITER_VIEW + ' ' + DELIMITER_WRAPPER, styles: 'display:none;' });\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS$1, styles: 'display:none;'\n });\n this.componentWrapper = this.createElement('div', { className: ELEMENT_WRAPPER });\n this.overAllWrapper = this.createElement('div', { className: OVER_ALL_WRAPPER });\n if (this.mode === 'CheckBox') {\n addClass([this.overAllWrapper], 'e-checkbox');\n }\n if (Browser.isDevice) {\n this.componentWrapper.classList.add(ELEMENT_MOBILE_WRAPPER);\n }\n this.setWidth(this.width);\n this.overAllWrapper.appendChild(this.componentWrapper);\n this.popupWrapper = this.createElement('div', { id: this.element.id + '_popup', className: POPUP_WRAPPER });\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.delimiterWrapper = this.createElement('span', { className: DELIMITER_WRAPPER, styles: 'display:none' });\n this.componentWrapper.appendChild(this.delimiterWrapper);\n }\n else {\n this.chipCollectionWrapper = this.createElement('span', {\n className: CHIP_WRAPPER$1,\n styles: 'display:none'\n });\n if (this.mode === 'Default') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_default'));\n }\n else if (this.mode === 'Box') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_box'));\n }\n this.componentWrapper.appendChild(this.chipCollectionWrapper);\n }\n if (this.mode !== 'Box') {\n this.componentWrapper.appendChild(this.viewWrapper);\n }\n this.componentWrapper.appendChild(this.searchWrapper);\n if (this.showClearButton && !Browser.isDevice) {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n else {\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n this.dropDownIcon();\n this.inputElement = this.createElement('input', {\n className: INPUT_ELEMENT,\n attrs: {\n spellcheck: 'false',\n type: 'text',\n autocomplete: 'off',\n tabindex: '0'\n }\n });\n if (this.mode === 'Default' || this.mode === 'Box') {\n this.inputElement.setAttribute('aria-describedby', this.chipCollectionWrapper.id);\n }\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.overAllWrapper);\n this.searchWrapper.appendChild(this.inputElement);\n }\n else {\n this.element.parentElement.insertBefore(this.overAllWrapper, this.element);\n this.searchWrapper.appendChild(this.inputElement);\n this.searchWrapper.appendChild(this.element);\n this.element.removeAttribute('tabindex');\n }\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n else if (this.floatLabelType === 'Never') {\n this.refreshPlaceHolder();\n }\n this.addValidInputClass();\n this.element.style.opacity = '';\n let id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDEN_ELEMENT, 'tabindex': '-1', 'multiple': '' }\n });\n this.componentWrapper.appendChild(this.hiddenElement);\n this.validationAttribute(this.element, this.hiddenElement);\n if (this.mode !== 'CheckBox') {\n this.hideOverAllClear();\n }\n this.wireEvent();\n this.enable(this.enabled);\n this.enableRTL(this.enableRtl);\n this.checkInitialValue();\n this.renderComplete();\n }\n checkInitialValue() {\n let isData = this.dataSource instanceof Array ? (this.dataSource.length > 0)\n : !isNullOrUndefined(this.dataSource);\n if (!(this.value && this.value.length) &&\n isNullOrUndefined(this.text) &&\n !isData &&\n this.element.tagName === 'SELECT' &&\n this.element.options.length > 0) {\n let optionsElement = this.element.options;\n let valueCol = [];\n let textCol = '';\n for (let index = 0, optionsLen = optionsElement.length; index < optionsLen; index++) {\n let opt = optionsElement[index];\n if (!isNullOrUndefined(opt.getAttribute('selected'))) {\n (opt.getAttribute('value')) ? valueCol.push(opt.getAttribute('value')) : textCol += (opt.text + this.delimiterChar);\n }\n }\n if (valueCol.length > 0) {\n this.setProperties({ value: valueCol }, true);\n }\n else if (textCol !== '') {\n this.setProperties({ text: textCol }, true);\n }\n if (valueCol.length > 0 || textCol !== '') {\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n }\n if ((this.value && this.value.length) || !isNullOrUndefined(this.text)) {\n this.renderPopup();\n }\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n if (this.value && this.value.length) {\n if (!(this.dataSource instanceof DataManager)) {\n this.initialValueUpdate();\n this.initialUpdate();\n }\n else {\n this.setInitialValue = () => {\n this.initStatus = false;\n this.initialValueUpdate();\n this.initialUpdate();\n this.setInitialValue = null;\n this.initStatus = true;\n };\n }\n this.updateTempValue();\n }\n else {\n this.initialUpdate();\n }\n this.initStatus = true;\n this.checkAutoFocus();\n if (!isNullOrUndefined(this.text)) {\n this.element.setAttribute('data-initial-value', this.text);\n }\n }\n checkAutoFocus() {\n if (this.element.hasAttribute('autofocus')) {\n this.inputElement.focus();\n }\n }\n setFloatLabelType() {\n removeFloating(this.overAllWrapper, this.componentWrapper, this.searchWrapper, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n }\n addValidInputClass() {\n if ((!isNullOrUndefined(this.value) && this.value.length) || this.floatLabelType === 'Always') {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n else {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n }\n dropDownIcon() {\n if (this.showDropDownIcon) {\n this.dropIcon = this.createElement('span', { className: dropdownIcon });\n this.componentWrapper.appendChild(this.dropIcon);\n addClass([this.componentWrapper], ['e-down-icon']);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.dropIcon.parentElement.removeChild(this.dropIcon);\n removeClass([this.componentWrapper], ['e-down-icon']);\n }\n }\n }\n initialUpdate() {\n if (this.mode !== 'Box') {\n this.updateDelimView();\n }\n this.updateCssClass();\n this.updateHTMLAttribute();\n this.updateReadonly(this.readonly);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n }\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n * @method destroy\n * @return {void}\n */\n destroy() {\n if (this.popupObj) {\n this.popupObj.hide();\n }\n this.notify(destroy, {});\n this.unwireListEvents();\n this.unWireEvent();\n this.list = null;\n this.popupObj = null;\n this.mainList = null;\n this.mainData = null;\n this.filterParent = null;\n this.ulElement = null;\n super.destroy();\n let temp = ['readonly', 'aria-disabled', 'aria-placeholder', 'placeholder'];\n let length = temp.length;\n while (length > 0) {\n this.inputElement.removeAttribute(temp[length - 1]);\n length--;\n }\n this.element.removeAttribute('data-initial-value');\n this.element.style.display = 'block';\n if (this.overAllWrapper.parentElement) {\n if (this.overAllWrapper.parentElement.tagName === this.getNgDirective()) {\n remove(this.overAllWrapper);\n }\n else {\n this.overAllWrapper.parentElement.insertBefore(this.element, this.overAllWrapper);\n remove(this.overAllWrapper);\n }\n }\n }\n ;\n};\n__decorate$5([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n], MultiSelect.prototype, \"fields\", void 0);\n__decorate$5([\n Property(false)\n], MultiSelect.prototype, \"enablePersistence\", void 0);\n__decorate$5([\n Property(null)\n], MultiSelect.prototype, \"groupTemplate\", void 0);\n__decorate$5([\n Property('No records found')\n], MultiSelect.prototype, \"noRecordsTemplate\", void 0);\n__decorate$5([\n Property('Request failed')\n], MultiSelect.prototype, \"actionFailureTemplate\", void 0);\n__decorate$5([\n Property('None')\n], MultiSelect.prototype, \"sortOrder\", void 0);\n__decorate$5([\n Property(true)\n], MultiSelect.prototype, \"enabled\", void 0);\n__decorate$5([\n Property(false)\n], MultiSelect.prototype, \"enableHtmlSanitizer\", void 0);\n__decorate$5([\n Property([])\n], MultiSelect.prototype, \"dataSource\", void 0);\n__decorate$5([\n Property(null)\n], MultiSelect.prototype, \"query\", void 0);\n__decorate$5([\n Property('StartsWith')\n], MultiSelect.prototype, \"filterType\", void 0);\n__decorate$5([\n Property(1000)\n], MultiSelect.prototype, \"zIndex\", void 0);\n__decorate$5([\n Property(false)\n], MultiSelect.prototype, \"ignoreAccent\", void 0);\n__decorate$5([\n Property()\n], MultiSelect.prototype, \"locale\", void 0);\n__decorate$5([\n Property(false)\n], MultiSelect.prototype, \"enableGroupCheckBox\", void 0);\n__decorate$5([\n Property(null)\n], MultiSelect.prototype, \"cssClass\", void 0);\n__decorate$5([\n Property('100%')\n], MultiSelect.prototype, \"width\", void 0);\n__decorate$5([\n Property('300px')\n], MultiSelect.prototype, \"popupHeight\", void 0);\n__decorate$5([\n Property('100%')\n], MultiSelect.prototype, \"popupWidth\", void 0);\n__decorate$5([\n Property(null)\n], MultiSelect.prototype, \"placeholder\", void 0);\n__decorate$5([\n Property(null)\n], MultiSelect.prototype, \"filterBarPlaceholder\", void 0);\n__decorate$5([\n Property({})\n], MultiSelect.prototype, \"htmlAttributes\", void 0);\n__decorate$5([\n Property(null)\n], MultiSelect.prototype, \"valueTemplate\", void 0);\n__decorate$5([\n Property(null)\n], MultiSelect.prototype, \"headerTemplate\", void 0);\n__decorate$5([\n Property(null)\n], MultiSelect.prototype, \"footerTemplate\", void 0);\n__decorate$5([\n Property(null)\n], MultiSelect.prototype, \"itemTemplate\", void 0);\n__decorate$5([\n Property(null)\n], MultiSelect.prototype, \"allowFiltering\", void 0);\n__decorate$5([\n Property(true)\n], MultiSelect.prototype, \"changeOnBlur\", void 0);\n__decorate$5([\n Property(false)\n], MultiSelect.prototype, \"allowCustomValue\", void 0);\n__decorate$5([\n Property(true)\n], MultiSelect.prototype, \"showClearButton\", void 0);\n__decorate$5([\n Property(1000)\n], MultiSelect.prototype, \"maximumSelectionLength\", void 0);\n__decorate$5([\n Property(false)\n], MultiSelect.prototype, \"readonly\", void 0);\n__decorate$5([\n Property(null)\n], MultiSelect.prototype, \"text\", void 0);\n__decorate$5([\n Property(null)\n], MultiSelect.prototype, \"value\", void 0);\n__decorate$5([\n Property(true)\n], MultiSelect.prototype, \"hideSelectedItem\", void 0);\n__decorate$5([\n Property(true)\n], MultiSelect.prototype, \"closePopupOnSelect\", void 0);\n__decorate$5([\n Property('Default')\n], MultiSelect.prototype, \"mode\", void 0);\n__decorate$5([\n Property(',')\n], MultiSelect.prototype, \"delimiterChar\", void 0);\n__decorate$5([\n Property(true)\n], MultiSelect.prototype, \"ignoreCase\", void 0);\n__decorate$5([\n Property(false)\n], MultiSelect.prototype, \"showDropDownIcon\", void 0);\n__decorate$5([\n Property('Never')\n], MultiSelect.prototype, \"floatLabelType\", void 0);\n__decorate$5([\n Property(false)\n], MultiSelect.prototype, \"showSelectAll\", void 0);\n__decorate$5([\n Property('Select All')\n], MultiSelect.prototype, \"selectAllText\", void 0);\n__decorate$5([\n Property('Unselect All')\n], MultiSelect.prototype, \"unSelectAllText\", void 0);\n__decorate$5([\n Property(true)\n], MultiSelect.prototype, \"enableSelectionOrder\", void 0);\n__decorate$5([\n Property(true)\n], MultiSelect.prototype, \"openOnClick\", void 0);\n__decorate$5([\n Event()\n], MultiSelect.prototype, \"change\", void 0);\n__decorate$5([\n Event()\n], MultiSelect.prototype, \"removing\", void 0);\n__decorate$5([\n Event()\n], MultiSelect.prototype, \"removed\", void 0);\n__decorate$5([\n Event()\n], MultiSelect.prototype, \"selectedAll\", void 0);\n__decorate$5([\n Event()\n], MultiSelect.prototype, \"beforeOpen\", void 0);\n__decorate$5([\n Event()\n], MultiSelect.prototype, \"open\", void 0);\n__decorate$5([\n Event()\n], MultiSelect.prototype, \"close\", void 0);\n__decorate$5([\n Event()\n], MultiSelect.prototype, \"blur\", void 0);\n__decorate$5([\n Event()\n], MultiSelect.prototype, \"focus\", void 0);\n__decorate$5([\n Event()\n], MultiSelect.prototype, \"chipSelection\", void 0);\n__decorate$5([\n Event()\n], MultiSelect.prototype, \"filtering\", void 0);\n__decorate$5([\n Event()\n], MultiSelect.prototype, \"tagging\", void 0);\n__decorate$5([\n Event()\n], MultiSelect.prototype, \"customValueSelection\", void 0);\nMultiSelect = __decorate$5([\n NotifyPropertyChanges\n], MultiSelect);\n\nconst ICON = 'e-icons';\nconst CHECKBOXFRAME$1 = 'e-frame';\nconst CHECK$1 = 'e-check';\nconst CHECKBOXWRAP$1 = 'e-checkbox-wrapper';\nconst INDETERMINATE = 'e-stop';\nconst checkAllParent = 'e-selectall-parent';\nconst searchBackIcon = 'e-input-group-icon e-back-icon e-icons';\nconst filterBarClearIcon = 'e-input-group-icon e-clear-icon e-icons';\nconst filterInput = 'e-input-filter';\nconst filterParent = 'e-filter-parent';\nconst mobileFilter = 'e-ddl-device-filter';\nconst clearIcon = 'e-clear-icon';\nconst popupFullScreen = 'e-popup-full-page';\nconst device = 'e-ddl-device';\nconst FOCUS$1 = 'e-input-focus';\n/**\n * The Multiselect enable CheckBoxSelection call this inject module.\n */\nclass CheckBoxSelection {\n constructor(parent) {\n this.activeLi = [];\n this.activeEle = [];\n this.parent = parent;\n this.removeEventListener();\n this.addEventListener();\n }\n getModuleName() {\n return 'CheckBoxSelection';\n }\n addEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('updatelist', this.listSelection, this);\n this.parent.on('listoption', this.listOption, this);\n this.parent.on('selectAll', this.setSelectAll, this);\n this.parent.on('checkSelectAll', this.checkSelectAll, this);\n this.parent.on('searchBox', this.setSearchBox, this);\n this.parent.on('blur', this.onBlur, this);\n this.parent.on('targetElement', this.targetElement, this);\n this.parent.on('deviceSearchBox', this.setDeviceSearchBox, this);\n this.parent.on('inputFocus', this.getFocus, this);\n this.parent.on('reOrder', this.setReorder, this);\n this.parent.on('activeList', this.getActiveList, this);\n this.parent.on('selectAllText', this.setLocale, this);\n this.parent.on('filterBarPlaceholder', this.setPlaceholder, this);\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n this.parent.on('addItem', this.checboxCreate, this);\n this.parent.on('popupFullScreen', this.setPopupFullScreen, this);\n }\n removeEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updatelist', this.listSelection);\n this.parent.off('listoption', this.listOption);\n this.parent.off('selectAll', this.setSelectAll);\n this.parent.off('checkSelectAll', this.checkSelectAll);\n this.parent.off('searchBox', this.setSearchBox);\n this.parent.off('blur', this.onBlur);\n this.parent.off('targetElement', this.targetElement);\n this.parent.off('deviceSearchBox', this.setDeviceSearchBox);\n this.parent.off('inputFocus', this.getFocus);\n this.parent.off('reOrder', this.setReorder);\n this.parent.off('activeList', this.getActiveList);\n this.parent.off('selectAllText', this.setLocale);\n this.parent.off('filterBarPlaceholder', this.setPlaceholder);\n this.parent.off('addItem', this.checboxCreate);\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.parent.off('popupFullScreen', this.setPopupFullScreen);\n }\n listOption(args) {\n if (isNullOrUndefined(this.parent.listCurrentOptions.itemCreated)) {\n this.parent.listCurrentOptions.itemCreated = (e) => {\n this.checboxCreate(e);\n };\n }\n else {\n let itemCreated = this.parent.listCurrentOptions.itemCreated;\n this.parent.listCurrentOptions.itemCreated = (e) => {\n this.checboxCreate(e);\n itemCreated.apply(this, [e]);\n };\n }\n }\n ;\n setPlaceholder(props) {\n Input.setPlaceholder(props.filterBarPlaceholder, this.filterInput);\n }\n checboxCreate(e) {\n let item;\n if (!isNullOrUndefined(e.item)) {\n item = e.item;\n }\n else {\n item = e;\n }\n if (this.parent.enableGroupCheckBox || (item.className !== 'e-list-group-item '\n && item.className !== 'e-list-group-item')) {\n let checkboxEle = createCheckBox(this.parent.createElement, true);\n let icon = select('div.' + ICON, item);\n let id = item.getAttribute('data-uid');\n item.insertBefore(checkboxEle, item.childNodes[isNullOrUndefined(icon) ? 0 : 1]);\n select('.' + CHECKBOXFRAME$1, checkboxEle);\n let frame = select('.' + CHECKBOXFRAME$1, checkboxEle);\n if (this.parent.enableGroupCheckBox) {\n this.parent.popupWrapper.classList.add('e-multiselect-group');\n }\n return item;\n }\n else {\n return item;\n }\n }\n setSelectAll() {\n if (this.parent.showSelectAll) {\n if (isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent = this.parent.createElement('div', {\n className: checkAllParent\n });\n this.selectAllSpan = this.parent.createElement('span', {\n className: 'e-all-text'\n });\n this.selectAllSpan.textContent = '';\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n this.checboxCreate(this.checkAllParent);\n if (this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n append([this.checkAllParent], this.parent.filterParent);\n }\n else {\n append([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n if (!this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent.parentNode.insertBefore(this.checkAllParent, this.parent.filterParent.nextSibling);\n }\n else {\n prepend([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n EventHandler.add(this.checkAllParent, 'mousedown', this.clickHandler, this);\n }\n if (this.parent.list.classList.contains('e-nodata') || (this.parent.listData && this.parent.listData.length <= 1)) {\n this.checkAllParent.style.display = 'none';\n }\n else {\n this.checkAllParent.style.display = 'block';\n }\n this.parent.selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n else if (!isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent.parentElement.removeChild(this.checkAllParent);\n this.checkAllParent = null;\n }\n }\n destroy() {\n this.removeEventListener();\n }\n listSelection(args) {\n let target;\n let isBlazorListbox = isBlazor() && (args.module && args.module === 'listbox');\n if (!isNullOrUndefined(args.e)) {\n let frameElm = args.li.querySelector('.e-checkbox-wrapper .e-frame');\n target = !isNullOrUndefined(args.e.target) ?\n (args.e.target.classList.contains('e-frame')\n && (!this.parent.showSelectAll\n || (this.checkAllParent && !this.checkAllParent.contains(args.e.target)))) ?\n args.e.target : (isBlazorListbox ? frameElm : args.li.querySelector('.e-checkbox-wrapper').childNodes[1])\n : (isBlazorListbox ? frameElm : args.li.querySelector('.e-checkbox-wrapper').childNodes[1]);\n }\n else {\n let checkboxWrapper = args.li.querySelector('.e-checkbox-wrapper');\n target = checkboxWrapper ? (isBlazorListbox ?\n checkboxWrapper.querySelector('.e-frame') : checkboxWrapper.childNodes[1]) : args.li.lastElementChild.childNodes[1];\n }\n if (this.parent.itemTemplate || this.parent.enableGroupCheckBox) {\n target = args.li.firstElementChild.childNodes[1];\n }\n if (!isNullOrUndefined(target)) {\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP$1);\n }\n if (!isNullOrUndefined(this.checkWrapper)) {\n let checkElement = select('.' + CHECKBOXFRAME$1, this.checkWrapper);\n let selectAll$$1 = false;\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK$1), args.li, args.e, selectAll$$1);\n }\n }\n validateCheckNode(checkWrap, isCheck, li, e, selectAll$$1) {\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true, selectAll$$1);\n }\n clickHandler(e) {\n let target;\n if (e.currentTarget.classList.contains(this.checkAllParent.className)) {\n target = e.currentTarget.firstElementChild.lastElementChild;\n }\n else {\n target = e.currentTarget;\n }\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP$1);\n let selectAll$$1 = true;\n if (!isNullOrUndefined(this.checkWrapper)) {\n let checkElement = select('.' + CHECKBOXFRAME$1, this.checkWrapper);\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK$1), null, e, selectAll$$1);\n }\n e.preventDefault();\n }\n changeState(wrapper, state, e, isPrevent, selectAll$$1) {\n let ariaState;\n let frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME$1)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK$1)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK$1);\n ariaState = 'true';\n if (selectAll$$1) {\n this.parent.selectAllItems(true, e);\n this.setLocale(true);\n }\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK$1) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK$1, INDETERMINATE]);\n ariaState = 'false';\n if (selectAll$$1) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n else if (state === 'indeterminate' && !(frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK$1]);\n frameSpan.classList.add(INDETERMINATE);\n ariaState = 'false';\n if (selectAll$$1) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n ariaState = state === 'check' ? 'true' : state === 'uncheck' ? 'false' : ariaState;\n if (!isNullOrUndefined(ariaState)) {\n wrapper.setAttribute('aria-checked', ariaState);\n }\n }\n setSearchBox(args) {\n if (isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent = this.parent.createElement('span', {\n className: filterParent\n });\n this.filterInput = this.parent.createElement('input', {\n attrs: { type: 'text' },\n className: filterInput\n });\n this.parent.element.parentNode.insertBefore(this.filterInput, this.parent.element);\n let backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n this.parent.mobFilter = false;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ? [searchBackIcon, filterBarClearIcon] : [filterBarClearIcon],\n properties: { placeholder: this.parent.filterBarPlaceholder }\n }, this.parent.createElement);\n if (!isNullOrUndefined(this.parent.cssClass)) {\n if (this.parent.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.parent.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], this.parent.filterParent);\n prepend([this.parent.filterParent], args.popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'aria-owns': this.parent.element.id + '_options',\n 'role': 'listbox',\n 'aria-activedescendant': null,\n 'autocomplete': 'off',\n 'autocorrect': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'mousedown', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n EventHandler.add(this.filterInput, 'input', this.parent.onInput, this.parent);\n EventHandler.add(this.filterInput, 'keyup', this.parent.KeyUp, this.parent);\n EventHandler.add(this.filterInput, 'keydown', this.parent.onKeyDown, this.parent);\n EventHandler.add(this.filterInput, 'blur', this.onBlur, this);\n EventHandler.add(this.filterInput, 'paste', this.parent.pasteHandler, this.parent);\n this.parent.searchBoxHeight = (this.filterInputObj.container.parentElement).getBoundingClientRect().height;\n return this.filterInputObj;\n }\n }\n ;\n clickOnBackIcon(e) {\n this.parent.hidePopup();\n removeClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.inputElement.focus();\n }\n clearText(e) {\n this.parent.targetInputElement.value = '';\n this.parent.refreshPopup();\n this.parent.refreshListItems(null);\n this.clearIconElement.style.visibility = 'hidden';\n this.filterInput.focus();\n this.setReorder(e);\n e.preventDefault();\n }\n setDeviceSearchBox() {\n this.parent.popupObj.element.classList.add(device);\n this.parent.popupObj.element.classList.add(mobileFilter);\n this.parent.popupObj.position = { X: 0, Y: 0 };\n this.parent.popupObj.dataBind();\n this.setSearchBoxPosition();\n this.backIconElement = this.filterInputObj.container.querySelector('.e-back-icon');\n this.clearIconElement = this.filterInputObj.container.querySelector('.' + clearIcon);\n this.clearIconElement.style.visibility = 'hidden';\n EventHandler.add(this.backIconElement, 'click', this.clickOnBackIcon, this);\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n }\n setSearchBoxPosition() {\n let searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n let selectAllHeight = 0;\n if (this.checkAllParent) {\n selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n this.parent.popupObj.element.style.maxHeight = '100%';\n this.parent.popupObj.element.style.width = '100%';\n this.parent.list.style.maxHeight = (window.innerHeight - searchBoxHeight - selectAllHeight) + 'px';\n this.parent.list.style.height = (window.innerHeight - searchBoxHeight - selectAllHeight) + 'px';\n let clearElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n }\n setPopupFullScreen() {\n attributes(this.parent.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.popupObj.element.style.maxHeight = '100%';\n this.parent.popupObj.element.style.width = '100%';\n }\n targetElement() {\n if (!isNullOrUndefined(this.clearIconElement)) {\n this.parent.targetInputElement = this.filterInput;\n this.clearIconElement.style.visibility = this.parent.targetInputElement.value === '' ? 'hidden' : 'visible';\n }\n return this.parent.targetInputElement.value;\n }\n onBlur(e) {\n if (!this.parent.element.classList.contains('e-listbox')) {\n let target;\n if (this.parent.keyAction) {\n return;\n }\n if (Browser.isIE) {\n target = !isNullOrUndefined(e) && e.target;\n }\n if (!Browser.isIE) {\n target = !isNullOrUndefined(e) && e.relatedTarget;\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) && this.parent.popupObj.element.contains(target)\n && !Browser.isIE && this.filterInput) {\n this.filterInput.focus();\n return;\n }\n if (this.parent.scrollFocusStatus && this.filterInput) {\n e.preventDefault();\n this.filterInput.focus();\n this.parent.scrollFocusStatus = false;\n return;\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element)\n && !this.parent.popupObj.element.classList.contains('e-popup-close')) {\n this.parent.inputFocus = false;\n this.parent.updateValueState(e, this.parent.value, this.parent.tempValues);\n this.parent.dispatchEvent(this.parent.hiddenElement, 'change');\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) &&\n !this.parent.popupObj.element.classList.contains('e-popup-close')) {\n this.parent.inputFocus = false;\n this.parent.overAllWrapper.classList.remove(FOCUS$1);\n this.parent.trigger('blur');\n this.parent.focused = true;\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) &&\n !this.parent.popupObj.element.classList.contains('e-popup-close') && !Browser.isDevice) {\n this.parent.hidePopup();\n }\n }\n }\n onDocumentClick(e) {\n if (this.parent.getLocaleName() !== 'listbox') {\n let target = e.target;\n if (!isNullOrUndefined(this.parent.popupObj) && closest(target, '#' + this.parent.popupObj.element.id)) {\n if (!(this.filterInput && this.filterInput.value !== '')) {\n e.preventDefault();\n }\n }\n if (!(!isNullOrUndefined(this.parent.popupObj) && closest(target, '#' + this.parent.popupObj.element.id)) &&\n !this.parent.overAllWrapper.contains(e.target)) {\n if (this.parent.overAllWrapper.classList.contains(dropDownBaseClasses.focus) || this.parent.isPopupOpen()) {\n this.parent.inputFocus = false;\n this.parent.scrollFocusStatus = false;\n this.parent.hidePopup();\n this.parent.onBlur(e, true);\n this.parent.focused = true;\n }\n }\n else {\n this.parent.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.filterInput);\n }\n if (!this.parent.overAllWrapper.contains(e.target) && this.parent.overAllWrapper.classList.contains('e-input-focus') &&\n !this.parent.isPopupOpen()) {\n if (Browser.isIE) {\n this.parent.onBlur();\n }\n else {\n this.parent.onBlur(e);\n }\n }\n if (this.filterInput === target) {\n this.filterInput.focus();\n }\n }\n }\n getFocus(e) {\n this.parent.overAllWrapper.classList.remove(FOCUS$1);\n if (this.parent.keyAction && e.value !== 'clear') {\n this.parent.keyAction = false;\n return;\n }\n if (e.value === 'focus') {\n this.filterInput.focus();\n this.parent.removeFocus();\n EventHandler.remove(this.parent.list, 'keydown', this.parent.onKeyDown);\n }\n if (e.value === 'clear') {\n this.filterInput.value = '';\n this.clearIconElement.style.visibility = 'hidden';\n }\n }\n checkSelectAll(e) {\n if (e.value === 'check' && this.checkAllParent.getAttribute('aria-checked') !== 'true') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale(true);\n }\n if (e.value === 'uncheck') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale();\n }\n if (e.value === 'indeterminate') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale();\n }\n }\n setLocale(unSelect) {\n if (this.parent.selectAllText !== 'Select All' || this.parent.unSelectAllText !== 'Unselect All') {\n let template = unSelect ? this.parent.unSelectAllText : this.parent.selectAllText;\n let compiledString;\n this.selectAllSpan.textContent = '';\n compiledString = compile(template);\n for (let item of compiledString({}, null, null, null, !this.parent.isStringTemplate)) {\n this.selectAllSpan.textContent = item.textContent;\n }\n }\n else {\n let l10nLocale = { selectAllText: 'Select All', unSelectAllText: 'Unselect All' };\n let l10n = new L10n(this.parent.getLocaleName(), {}, this.parent.locale);\n if (l10n.getConstant('selectAllText') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.parent.locale);\n }\n this.selectAllSpan.textContent = unSelect ? l10n.getConstant('unSelectAllText') : l10n.getConstant('selectAllText');\n }\n }\n getActiveList(args) {\n if (args.li.classList.contains('e-active')) {\n this.activeLi.push(args.li.cloneNode(true));\n }\n else {\n this.activeLi.splice(args.index, 1);\n }\n }\n setReorder(args) {\n if (this.parent.enableSelectionOrder && !isNullOrUndefined(this.parent.value)) {\n let activeLiCount = this.parent.ulElement.querySelectorAll('li.e-active').length;\n let remLi;\n let ulEle = this.parent.createElement('ul', {\n className: 'e-list-parent e-ul e-reorder'\n });\n let removeEle = this.parent.createElement('div');\n if (activeLiCount > 0) {\n append(this.parent.ulElement.querySelectorAll('li.e-active'), ulEle);\n remLi = this.parent.ulElement.querySelectorAll('li.e-active');\n addClass(remLi, 'e-reorder-hide');\n prepend([ulEle], this.parent.list);\n }\n this.parent.focusAtFirstListItem();\n }\n }\n}\n\n/**\n * export all modules from current location\n */\n\nvar __decorate$6 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ListBox_1;\n/// \nconst ITEMTEMPLATE_PROPERTY$1 = 'ItemTemplate';\n/**\n * Defines the Selection settings of List Box.\n */\nclass SelectionSettings extends ChildProperty {\n}\n__decorate$6([\n Property('Multiple')\n], SelectionSettings.prototype, \"mode\", void 0);\n__decorate$6([\n Property(false)\n], SelectionSettings.prototype, \"showCheckbox\", void 0);\n__decorate$6([\n Property(false)\n], SelectionSettings.prototype, \"showSelectAll\", void 0);\n__decorate$6([\n Property('Left')\n], SelectionSettings.prototype, \"checkboxPosition\", void 0);\n/**\n * Defines the toolbar settings of List Box.\n */\nclass ToolbarSettings extends ChildProperty {\n}\n__decorate$6([\n Property([])\n], ToolbarSettings.prototype, \"items\", void 0);\n__decorate$6([\n Property('Right')\n], ToolbarSettings.prototype, \"position\", void 0);\n/**\n * The ListBox is a graphical user interface component used to display a list of items.\n * Users can select one or more items in the list using a checkbox or by keyboard selection.\n * It supports sorting, grouping, reordering and drag and drop of items.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nlet ListBox = ListBox_1 = class ListBox extends DropDownBase {\n /**\n * Constructor for creating the ListBox component.\n */\n constructor(options, element) {\n super(options, element);\n this.isValidKey = false;\n this.keyDownStatus = false;\n }\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @return {void}.\n * @private\n */\n addItem(items, itemIndex) {\n super.addItem(items, itemIndex);\n }\n ;\n /**\n * Build and render the component\n * @private\n */\n render() {\n this.inputString = '';\n this.initLoad = true;\n this.isCustomFiltering = false;\n this.initialSelectedOptions = this.value;\n if (isBlazor() && this.isServerRendered) {\n this.list = this.element.parentElement;\n this.liCollections = this.list.querySelectorAll('.' + cssClass.li);\n this.mainList = this.ulElement = this.list.querySelector('ul');\n this.setSelection(this.value);\n if (this.allowFiltering) {\n this.setFiltering();\n }\n this.initToolbarAndStyles();\n this.updateSelectionSettings();\n this.wireEvents();\n this.initDraggable();\n this.initLoad = false;\n }\n else {\n super.render();\n }\n this.renderComplete();\n }\n updateBlazorListData(data, isDataSource, select$$1) {\n if (isDataSource) {\n this.liCollections = this.list.querySelectorAll('.' + cssClass.li);\n this.mainList = this.ulElement = this.list.querySelector('ul');\n if (this.allowDragAndDrop && !this.ulElement.classList.contains('e-sortable')) {\n this.initDraggable();\n }\n if (select$$1) {\n this.selectItems(this.listData, false);\n }\n }\n if (!isNullOrUndefined(data)) {\n this.sortedData = this.jsonData = this.listData = data;\n }\n }\n initWrapper() {\n let hiddenSelect = this.createElement('select', { className: 'e-hidden-select', attrs: { 'multiple': '' } });\n this.list.classList.add('e-listbox-wrapper');\n if (this.itemTemplate) {\n this.list.classList.add('e-list-template');\n }\n this.list.classList.add('e-wrapper');\n if (this.element.tagName === 'EJS-LISTBOX') {\n this.element.setAttribute('tabindex', '0');\n if (this.initLoad) {\n this.element.appendChild(this.list);\n }\n }\n else {\n if (this.initLoad) {\n this.element.parentElement.insertBefore(this.list, this.element);\n }\n this.list.insertBefore(this.element, this.list.firstChild);\n this.element.style.display = 'none';\n }\n this.list.insertBefore(hiddenSelect, this.list.firstChild);\n if (this.list.getElementsByClassName('e-list-item')[0]) {\n this.list.getElementsByClassName('e-list-item')[0].classList.remove(dropDownBaseClasses.focus);\n }\n removeClass([this.list], [dropDownBaseClasses.content, dropDownBaseClasses.root]);\n this.validationAttribute(this.element, hiddenSelect);\n this.list.setAttribute('role', 'listbox');\n attributes(this.list, { 'role': 'listbox', 'aria-multiselectable': this.selectionSettings.mode === 'Multiple' ? 'true' : 'false' });\n this.updateSelectionSettings();\n }\n updateSelectionSettings() {\n if (this.selectionSettings.showCheckbox && this.selectionSettings.showSelectAll && this.liCollections.length) {\n let l10nSelect = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.showSelectAll = true;\n this.selectAllText = l10nSelect.getConstant('selectAllText');\n this.unSelectAllText = l10nSelect.getConstant('unSelectAllText');\n this.popupWrapper = this.list;\n this.checkBoxSelectionModule.checkAllParent = null;\n this.notify('selectAll', {});\n }\n }\n initDraggable() {\n if (this.ulElement) {\n this.ulElement.id = this.element.id + '_parent';\n }\n if (this.allowDragAndDrop) {\n new Sortable(this.ulElement, {\n scope: this.scope,\n itemClass: 'e-list-item',\n dragStart: this.triggerDragStart.bind(this),\n drag: this.triggerDrag.bind(this),\n beforeDrop: this.beforeDragEnd.bind(this),\n drop: this.dragEnd.bind(this),\n placeHolder: () => { return this.createElement('span', { className: 'e-placeholder' }); },\n helper: (e) => {\n let wrapper = this.list.cloneNode();\n let ele = e.sender.cloneNode(true);\n wrapper.appendChild(ele);\n let refEle = this.getItems()[0];\n wrapper.style.width = refEle.offsetWidth + 'px';\n wrapper.style.height = refEle.offsetHeight + 'px';\n if ((this.value && this.value.length) > 1 && this.isSelected(ele)) {\n ele.appendChild(this.createElement('span', {\n className: 'e-list-badge', innerHTML: this.value.length + ''\n }));\n }\n wrapper.style.zIndex = getZindexPartial(this.element) + '';\n return wrapper;\n }\n });\n }\n }\n updateActionCompleteData(li, item) {\n this.jsonData.push(item);\n }\n initToolbar() {\n let scope;\n let pos = this.toolbarSettings.position;\n let prevScope = this.element.getAttribute('data-value');\n if (this.toolbarSettings.items.length) {\n let toolElem = this.createElement('div', { className: 'e-listbox-tool', attrs: { 'role': 'toolbar' } });\n let wrapper = this.createElement('div', {\n className: 'e-listboxtool-wrapper e-' + pos.toLowerCase()\n });\n this.list.parentElement.insertBefore(wrapper, this.list);\n wrapper.appendChild(pos === 'Right' ? this.list : toolElem);\n wrapper.appendChild(pos === 'Right' ? toolElem : this.list);\n this.createButtons(toolElem);\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.scope) {\n document.querySelector(this.scope).setAttribute('data-value', this.element.id);\n }\n else {\n this.updateToolBarState();\n }\n }\n scope = this.element.getAttribute('data-value');\n if (prevScope && scope && (prevScope !== scope)) {\n this.tBListBox = getComponent(document.getElementById(prevScope), this.getModuleName());\n this.tBListBox.updateToolBarState();\n }\n else if (scope) {\n this.tBListBox = getComponent(document.getElementById(scope), this.getModuleName());\n this.tBListBox.updateToolBarState();\n }\n }\n createButtons(toolElem) {\n let btn;\n let ele;\n let title;\n let l10n = new L10n(this.getModuleName(), {\n moveUp: 'Move Up', moveDown: 'Move Down', moveTo: 'Move To',\n moveFrom: 'Move From', moveAllTo: 'Move All To', moveAllFrom: 'Move All From'\n }, this.locale);\n this.toolbarSettings.items.forEach((value) => {\n title = l10n.getConstant(value);\n ele = this.createElement('button', {\n attrs: {\n 'type': 'button',\n 'data-value': value,\n 'title': title,\n 'aria-label': title\n }\n });\n toolElem.appendChild(ele);\n btn = new Button({ iconCss: 'e-icons e-' + value.toLowerCase() }, ele);\n btn.createElement = this.createElement;\n });\n }\n validationAttribute(input, hiddenSelect) {\n super.validationAttribute(input, hiddenSelect);\n hiddenSelect.required = input.required;\n input.required = false;\n }\n setHeight() {\n let ele = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n ele.style.height = formatUnit(this.height);\n if (this.allowFiltering && this.height.toString().indexOf('%') < 0) {\n addClass([this.list], 'e-filter-list');\n }\n else {\n removeClass([this.list], 'e-filter-list');\n }\n }\n setCssClass() {\n let wrap = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n if (this.cssClass) {\n addClass([wrap], this.cssClass.split(' '));\n }\n if (this.enableRtl) {\n addClass([wrap], 'e-rtl');\n }\n }\n setEnable() {\n let ele = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n if (this.enabled) {\n removeClass([ele], cssClass.disabled);\n }\n else {\n addClass([ele], cssClass.disabled);\n if (isBlazor() && this.isServerRendered && this.toolbarSettings.items.length) {\n removeClass([this.list], cssClass.disabled);\n }\n }\n }\n showSpinner() {\n if (!this.spinner) {\n this.spinner = this.createElement('div', { className: 'e-listbox-wrapper' });\n }\n this.spinner.style.height = formatUnit(this.height);\n this.element.parentElement.insertBefore(this.spinner, this.element.nextSibling);\n createSpinner({ target: this.spinner }, this.createElement);\n showSpinner(this.spinner);\n }\n hideSpinner() {\n if (this.spinner.querySelector('.e-spinner-pane')) {\n hideSpinner(this.spinner);\n }\n if (this.spinner.parentElement) {\n detach(this.spinner);\n }\n }\n onInput() {\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n this.refreshClearIcon();\n }\n clearText() {\n this.filterInput.value = '';\n this.refreshClearIcon();\n let event = document.createEvent('KeyboardEvent');\n this.isValidKey = true;\n this.KeyUp(event);\n }\n refreshClearIcon() {\n if (this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon)) {\n let clearElement = this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n }\n onActionComplete(ulElement, list, e) {\n let searchEle;\n if (this.allowFiltering && this.list.getElementsByClassName('e-filter-parent')[0]) {\n if (isBlazor() && this.isServerRendered) {\n searchEle = this.list.getElementsByClassName('e-filter-parent')[0];\n }\n else {\n searchEle = this.list.getElementsByClassName('e-filter-parent')[0].cloneNode(true);\n }\n }\n super.onActionComplete(ulElement, list, e);\n if (this.allowFiltering && !isNullOrUndefined(searchEle)) {\n this.list.insertBefore(searchEle, this.list.firstElementChild);\n if (!isBlazor() && !this.isServerRendered) {\n this.filterParent = this.list.getElementsByClassName('e-filter-parent')[0];\n this.filterWireEvents(searchEle);\n }\n }\n this.initWrapper();\n this.setSelection();\n this.initDraggable();\n this.mainList = this.ulElement;\n if (this.initLoad) {\n this.jsonData = [];\n extend(this.jsonData, list, []);\n this.initToolbarAndStyles();\n this.wireEvents();\n if (this.showCheckbox) {\n this.setCheckboxPosition();\n }\n if (this.allowFiltering) {\n this.setFiltering();\n }\n }\n else {\n if (this.allowFiltering) {\n let filterElem = this.list.getElementsByClassName('e-input-filter')[0];\n let txtLength = this.filterInput.value.length;\n filterElem.selectionStart = txtLength;\n filterElem.selectionEnd = txtLength;\n filterElem.focus();\n }\n }\n this.initLoad = false;\n }\n initToolbarAndStyles() {\n this.initToolbar();\n this.setCssClass();\n this.setEnable();\n this.setHeight();\n }\n triggerDragStart(args) {\n let badge;\n args = extend(this.getDragArgs(args), { dragSelected: true });\n if (Browser.isIos) {\n this.list.style.overflow = 'hidden';\n }\n this.trigger('dragStart', args, (dragEventArgs) => {\n this.allowDragAll = dragEventArgs.dragSelected;\n if (!this.allowDragAll) {\n badge = this.ulElement.getElementsByClassName('e-list-badge')[0];\n if (badge) {\n detach(badge);\n }\n }\n if (isBlazor()) {\n args.bindEvents(args.dragElement);\n }\n });\n }\n triggerDrag(args) {\n this.trigger('drag', this.getDragArgs(args));\n let listObj = this.getComponent(args.target);\n if (listObj && listObj.listData.length === 0) {\n let noRecElem = listObj.ulElement.getElementsByClassName('e-list-nrt')[0];\n if (noRecElem) {\n listObj.ulElement.removeChild(noRecElem);\n }\n }\n }\n beforeDragEnd(args) {\n let dragValue = args.droppedElement.getAttribute('data-value');\n if (this.value.indexOf(dragValue) > -1) {\n args.items = this.getDataByValues(this.value);\n }\n else {\n args.items = this.getDataByValues([dragValue]);\n }\n this.trigger('beforeDrop', args);\n }\n // tslint:disable-next-line:max-func-body-length\n dragEnd(args) {\n let listData;\n let liColl;\n let jsonData;\n let droppedData;\n let selectedOptions;\n let sortedData;\n let dropValue = this.getFormattedValue(args.droppedElement.getAttribute('data-value'));\n let listObj = this.getComponent(args.droppedElement);\n let getArgs = this.getDragArgs({ target: args.droppedElement }, true);\n let sourceArgs = { previousData: this.dataSource };\n let destArgs = { previousData: listObj.dataSource };\n let dragArgs = extend({}, getArgs, { target: args.target, source: { previousData: this.dataSource } });\n if (listObj !== this) {\n let sourceArgs1 = extend(sourceArgs, { currentData: this.listData });\n dragArgs = extend(dragArgs, { source: sourceArgs1, destination: destArgs });\n }\n if (Browser.isIos) {\n this.list.style.overflow = '';\n }\n if (listObj === this) {\n let ul = this.ulElement;\n listData = [].slice.call(this.listData);\n liColl = [].slice.call(this.liCollections);\n jsonData = [].slice.call(this.jsonData);\n sortedData = [].slice.call(this.sortedData);\n let toSortIdx = args.currentIndex;\n let toIdx = args.currentIndex = this.getCurIdx(this, args.currentIndex);\n let rIdx = listData.indexOf(this.getDataByValue(dropValue));\n let jsonIdx = jsonData.indexOf(this.getDataByValue(dropValue));\n let sIdx = sortedData.indexOf(this.getDataByValue(dropValue));\n listData.splice(toIdx, 0, listData.splice(rIdx, 1)[0]);\n sortedData.splice(toSortIdx, 0, sortedData.splice(sIdx, 1)[0]);\n jsonData.splice(toIdx, 0, jsonData.splice(jsonIdx, 1)[0]);\n if (!isBlazor()) {\n liColl.splice(toIdx, 0, liColl.splice(rIdx, 1)[0]);\n }\n if (this.allowDragAll) {\n selectedOptions = this.value && Array.prototype.indexOf.call(this.value, dropValue) > -1 ? this.value : [dropValue];\n selectedOptions.forEach((value) => {\n if (value !== dropValue) {\n let idx = listData.indexOf(this.getDataByValue(value));\n let jsonIdx = jsonData.indexOf(this.getDataByValue(value));\n let sIdx = sortedData.indexOf(this.getDataByValue(value));\n if (idx > toIdx) {\n toIdx++;\n }\n jsonData.splice(toIdx, 0, jsonData.splice(jsonIdx, 1)[0]);\n listData.splice(toIdx, 0, listData.splice(idx, 1)[0]);\n sortedData.splice(toSortIdx, 0, sortedData.splice(sIdx, 1)[0]);\n if (!isBlazor()) {\n liColl.splice(toIdx, 0, liColl.splice(idx, 1)[0]);\n ul.insertBefore(this.getItems()[this.getIndexByValue(value)], ul.getElementsByClassName('e-placeholder')[0]);\n }\n }\n else if (isBlazor()) {\n let lists = [].slice.call(this.ulElement.getElementsByClassName(cssClass.li));\n let refChild = this.ulElement.removeChild(lists[args.currentIndex]);\n lists.splice(args.currentIndex, 1);\n this.ulElement.insertBefore(refChild, lists[args.previousIndex]);\n }\n });\n }\n this.listData = listData;\n this.jsonData = jsonData;\n this.sortedData = sortedData;\n this.liCollections = liColl;\n if (isBlazor()) {\n let value = this.value;\n // tslint:disable-next-line:no-any\n this.interopAdaptor.invokeMethodAsync('UpdateListData', this.listData).then(() => {\n this.updateBlazorListData(null, true);\n this.selectItems(this.listData, false);\n this.selectItems(value);\n });\n }\n }\n else {\n let li;\n let fLiColl = [].slice.call(this.liCollections);\n let currIdx = args.currentIndex = this.getCurIdx(listObj, args.currentIndex);\n let ul = listObj.ulElement;\n listData = [].slice.call(listObj.listData);\n liColl = [].slice.call(listObj.liCollections);\n jsonData = [].slice.call(listObj.jsonData);\n sortedData = [].slice.call(listObj.sortedData);\n selectedOptions = (this.value && Array.prototype.indexOf.call(this.value, dropValue) > -1 && this.allowDragAll)\n ? this.value : [dropValue];\n let fListData = [].slice.call(this.listData);\n let fSortData = [].slice.call(this.sortedData);\n selectedOptions.forEach((value, index) => {\n droppedData = this.getDataByValue(value);\n let srcIdx = this.listData.indexOf(droppedData);\n let jsonSrcIdx = this.jsonData.indexOf(droppedData);\n let sortIdx = this.sortedData.indexOf(droppedData);\n fListData.splice(srcIdx, 1);\n this.jsonData.splice(jsonSrcIdx, 1);\n fSortData.splice(sortIdx, 1);\n this.listData = fListData;\n this.sortedData = fSortData;\n let destIdx = value === dropValue ? args.currentIndex : currIdx;\n listData.splice(destIdx, 0, droppedData);\n jsonData.splice(destIdx, 0, droppedData);\n sortedData.splice(destIdx, 0, droppedData);\n if (!isBlazor()) {\n liColl.splice(destIdx, 0, fLiColl.splice(srcIdx, 1)[0]);\n }\n if (!value) {\n let liCollElem = this.getItems();\n for (let i = 0; i < liCollElem.length; i++) {\n if (liCollElem[i].getAttribute('data-value') === null && liCollElem[i].classList.contains('e-list-item')) {\n li = liCollElem[i];\n break;\n }\n }\n }\n else {\n li = this.getItems()[this.getIndexByValue(value)];\n }\n if (!li) {\n li = args.helper;\n }\n this.removeSelected(this, value === dropValue ? [args.droppedElement] : [li]);\n if (isBlazor()) {\n if (index === 0) {\n this.ulElement.insertBefore(ul.getElementsByClassName(cssClass.li)[args.currentIndex], this.ulElement.getElementsByClassName(cssClass.li)[args.previousIndex]);\n }\n }\n else {\n ul.insertBefore(li, ul.getElementsByClassName('e-placeholder')[0]);\n }\n currIdx++;\n });\n if (isBlazor()) {\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('UpdateListData', this.listData).then(() => {\n this.updateSelectedOptions();\n if (this.fields.groupBy) {\n this.setSelection();\n }\n this.updateBlazorListData(null, true, this.value == null || !this.value.length);\n });\n listObj.interopAdaptor.invokeMethodAsync('UpdateListData', listData).then(() => {\n if (listObj.sortOrder !== 'None' || this.selectionSettings.showCheckbox\n !== listObj.selectionSettings.showCheckbox || listObj.fields.groupBy) {\n listObj.setSelection();\n }\n listObj.updateBlazorListData(null, true, listObj.value == null || !listObj.value.length);\n });\n // tslint:enable\n }\n else {\n if (this.fields.groupBy) {\n this.ulElement.innerHTML = this.renderItems(this.listData, this.fields).innerHTML;\n this.setSelection();\n }\n if (listObj.sortOrder !== 'None' || this.selectionSettings.showCheckbox\n !== listObj.selectionSettings.showCheckbox || listObj.fields.groupBy) {\n let sortabale = getComponent(ul, 'sortable');\n ul.innerHTML = listObj.renderItems(listData, listObj.fields).innerHTML;\n if (sortabale.placeHolderElement) {\n ul.appendChild(sortabale.placeHolderElement);\n }\n ul.appendChild(args.helper);\n listObj.setSelection();\n }\n this.liCollections = fLiColl;\n listObj.liCollections = liColl;\n }\n listObj.jsonData = extend([], [], jsonData, false);\n listObj.listData = extend([], [], listData, false);\n listObj.sortedData = extend([], [], sortedData, false);\n if (this.listData.length === 0) {\n this.l10nUpdate();\n }\n }\n if (this === listObj) {\n let sourceArgs1 = extend(sourceArgs, { currentData: listData });\n dragArgs = extend(dragArgs, { source: sourceArgs1 });\n }\n else {\n let dragArgs1 = extend(destArgs, { currentData: listData });\n dragArgs = extend(dragArgs, { destination: dragArgs1 });\n }\n this.trigger('drop', dragArgs);\n }\n removeSelected(listObj, elems) {\n if (listObj.selectionSettings.showCheckbox) {\n elems.forEach((ele) => { ele.getElementsByClassName('e-frame')[0].classList.remove('e-check'); });\n }\n else {\n removeClass(elems, cssClass.selected);\n }\n }\n getCurIdx(listObj, idx) {\n if (listObj.fields.groupBy) {\n idx -= [].slice.call(listObj.ulElement.children).slice(0, idx)\n .filter((ele) => ele.classList.contains(cssClass.group)).length;\n }\n return idx;\n }\n getComponent(li) {\n let listObj;\n let ele = (this.element.tagName === 'EJS-LISTBOX' ? closest(li, '.e-listbox')\n : closest(li, '.e-listbox-wrapper') && closest(li, '.e-listbox-wrapper').querySelector('.e-listbox'));\n if (ele) {\n listObj = getComponent(ele, this.getModuleName());\n }\n return listObj;\n }\n listOption(dataSource, fields) {\n this.listCurrentOptions = super.listOption(dataSource, fields);\n this.listCurrentOptions = extend({}, this.listCurrentOptions, { itemCreated: this.triggerBeforeItemRender.bind(this) }, true);\n this.notify('listoption', { module: 'CheckBoxSelection' });\n return this.listCurrentOptions;\n }\n triggerBeforeItemRender(e) {\n e.item.setAttribute('tabindex', '-1');\n this.trigger('beforeItemRender', { element: e.item, item: e.curData });\n }\n requiredModules() {\n let modules = [];\n if (this.selectionSettings.showCheckbox) {\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n }\n /**\n * This method is used to enable or disable the items in the ListBox based on the items and enable argument.\n * @param items Text items that needs to be enabled/disabled.\n * @param enable Set `true`/`false` to enable/disable the list items.\n * @param isValue - Set `true` if `items` parameter is a array of unique values.\n * @returns void\n */\n enableItems(items, enable = true, isValue) {\n let li;\n items.forEach((item) => {\n let text;\n if (isBlazor() && typeof (item) === 'object') {\n text = getValue(isValue ? this.fields.value : this.fields.text, item);\n if (isNullOrUndefined(text)) {\n return;\n }\n }\n else {\n text = item;\n }\n li = this.findListElement(this.list, 'li', 'data-value', isValue ? text : this.getValueByText(text));\n if (!li) {\n return;\n }\n if (enable) {\n removeClass([li], cssClass.disabled);\n li.removeAttribute('aria-disabled');\n }\n else {\n addClass([li], cssClass.disabled);\n li.setAttribute('aria-disabled', 'true');\n }\n });\n }\n /**\n * Based on the state parameter, specified list item will be selected/deselected.\n * @param items Array of text value of the item.\n * @param state Set `true`/`false` to select/un select the list items.\n * @param isValue - Set `true` if `items` parameter is a array of unique values.\n * @returns void\n */\n selectItems(items, state = true, isValue) {\n this.setSelection(items, state, !isValue);\n this.updateSelectedOptions();\n }\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n * @param state Set `true`/`false` to select/un select the entire list items.\n * @returns void\n */\n selectAll(state = true) {\n this.selectAllItems(state);\n }\n /**\n * Adds a new item to the list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the list.\n * @returns {void}.\n */\n addItems(items, itemIndex) {\n super.addItem(items, itemIndex);\n }\n /**\n * Removes a item from the list. By default, removed the last item in the list,\n * but you can remove based on the index parameter.\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to remove the item from the list.\n * @returns {void}.\n */\n removeItems(items, itemIndex) {\n this.removeItem(items, itemIndex);\n }\n /**\n * Removes a item from the list. By default, removed the last item in the list,\n * but you can remove based on the index parameter.\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to remove the item from the list.\n * @returns {void}.\n */\n removeItem(items, itemIndex) {\n let liCollections = [];\n let liElement = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n if (items) {\n items = (items instanceof Array ? items : [items]);\n let fields = this.fields;\n let dataValue;\n let objValue;\n let dupData = [];\n let itemIdx;\n extend(dupData, [], this.listData);\n let removeIdxes = [];\n let removeLiIdxes = [];\n for (let j = 0; j < items.length; j++) {\n if (items[j] instanceof Object) {\n dataValue = getValue(fields.value, items[j]);\n }\n else {\n dataValue = items[j].toString();\n }\n for (let i = 0, len = dupData.length; i < len; i++) {\n if (dupData[i] instanceof Object) {\n objValue = getValue(fields.value, dupData[i]);\n }\n else {\n objValue = dupData[i].toString();\n }\n if (objValue === dataValue) {\n itemIdx = this.getIndexByValue(dataValue);\n liCollections.push(liElement[itemIdx]);\n removeIdxes.push(i);\n removeLiIdxes.push(itemIdx);\n }\n }\n }\n for (let k = removeIdxes.length - 1; k > 0; k--) {\n this.listData.splice(removeIdxes[k], 1);\n }\n for (let k = removeLiIdxes.length - 1; k > 0; k--) {\n this.liCollections.splice(removeLiIdxes[k], 1);\n }\n }\n else {\n itemIndex = itemIndex ? itemIndex : 0;\n liCollections.push(liElement[itemIndex]);\n this.listData.splice(itemIndex, 1);\n this.updateLiCollection(itemIndex);\n }\n for (let i = 0; i < liCollections.length; i++) {\n this.ulElement.removeChild(liCollections[i]);\n }\n if (this.listData.length === 0) {\n this.l10nUpdate();\n }\n }\n /**\n * Gets the array of data Object that matches the given array of values.\n * @param { string[] | number[] | boolean[] } value - Specifies the array value of the list item.\n * @returns object[].\n */\n getDataByValues(value) {\n let data = [];\n for (let i = 0; i < value.length; i++) {\n data.push(this.getDataByValue(value[i]));\n }\n return data;\n }\n /**\n * Moves the given value(s) / selected value(s) upwards.\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n moveUp(value) {\n let elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(true, false, elem);\n }\n /**\n * Moves the given value(s) / selected value(s) downwards.\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n moveDown(value) {\n let elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(false, false, elem);\n }\n /**\n * Moves the given value(s) / selected value(s) to the given / default scoped ListBox.\n * @param { string[] | number[] | boolean[] } value - Specifies the value or array value of the list item.\n * @returns {void}\n */\n moveTo(value, index, targetId) {\n let elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n let tlistbox = (targetId) ? getComponent(targetId, ListBox_1) : this.getScopedListBox();\n this.moveData(this, tlistbox, false, elem, index);\n }\n /**\n * Moves all the values from one ListBox to the scoped ListBox.\n * @param { string } targetId - Specifies the scoped ListBox ID.\n * @param { string } index - Specifies the index to where the items moved.\n * @returns {void}\n */\n moveAllTo(targetId, index) {\n let tlistbox = (targetId) ? getComponent(targetId, ListBox_1) : this.getScopedListBox();\n this.moveAllData(this, tlistbox, false, index);\n }\n /**\n * Returns the updated dataSource in ListBox\n * @returns {{ [key: string]: Object }[] | string[] | boolean[] | number[]}\n */\n getDataList() {\n return this.jsonData;\n }\n /**\n * Returns the sorted Data in ListBox\n * @returns {{ [key: string]: Object }[] | string[] | boolean[] | number[]}\n */\n getSortedList() {\n let sortData;\n let tempData;\n sortData = tempData = this.sortedData;\n if (this.fields.groupBy) {\n sortData = [];\n for (let i = 0; i < tempData.length; i++) {\n if (tempData[i].isHeader) {\n continue;\n }\n sortData.push(tempData[i]);\n }\n }\n return sortData;\n }\n getElemByValue(value) {\n let elem = [];\n for (let i = 0; i < value.length; i++) {\n elem.push(this.ulElement.querySelector('[data-value =\"' + value[i] + '\"]'));\n }\n return elem;\n }\n updateLiCollection(index) {\n let tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 1);\n this.liCollections = tempLi;\n }\n selectAllItems(state, event) {\n [].slice.call(this.getItems()).forEach((li) => {\n if (!li.classList.contains(cssClass.disabled)) {\n if (this.selectionSettings.showCheckbox) {\n let ele = li.getElementsByClassName('e-check')[0];\n if ((!ele && state) || (ele && !state)) {\n this.notify('updatelist', { li: li, module: 'listbox' });\n if (this.maximumSelectionLength >= this.list.querySelectorAll('.e-list-item span.e-check').length) {\n this.checkMaxSelection();\n }\n }\n }\n else {\n if (state) {\n li.classList.add(cssClass.selected);\n }\n else {\n li.classList.remove(cssClass.selected);\n }\n }\n }\n });\n this.updateSelectedOptions();\n if (this.allowFiltering && this.selectionSettings.showCheckbox) {\n let liEle = this.list.getElementsByTagName('li');\n let index = 0;\n if (state) {\n for (index = 0; index < liEle.length; index++) {\n let dataValue1 = this.getFormattedValue(liEle[index].getAttribute('data-value'));\n if (!this.value.some((e) => e === dataValue1)) {\n this.value.push(this.getFormattedValue(liEle[index].getAttribute('data-value')));\n }\n }\n }\n else {\n for (index = 0; index < liEle.length; index++) {\n let dataValue2 = this.getFormattedValue(liEle[index].getAttribute('data-value'));\n this.value = this.value.filter((e) => e !== dataValue2);\n }\n }\n if (document.querySelectorAll('ul').length < 2) {\n this.updateMainList();\n }\n }\n this.triggerChange(this.getSelectedItems(), event);\n }\n updateMainList() {\n let mainList = this.mainList.querySelectorAll('.e-list-item');\n let ulList = this.ulElement.querySelectorAll('.e-list-item');\n let mainCount = mainList.length;\n let ulEleCount = ulList.length;\n if (this.selectionSettings.showCheckbox || (document.querySelectorAll('ul').length > 1 || mainCount !== ulEleCount)) {\n let listindex = 0;\n let valueindex = 0;\n let count = 0;\n for (listindex; listindex < mainCount;) {\n if (this.value) {\n for (valueindex; valueindex < this.value.length; valueindex++) {\n if (mainList[listindex].getAttribute('data-value') === this.value[valueindex]) {\n count++;\n }\n }\n }\n if (!count && this.selectionSettings.showCheckbox) {\n mainList[listindex].getElementsByClassName('e-frame')[0].classList.remove('e-check');\n }\n if (document.querySelectorAll('ul').length > 1 && count && mainCount !== ulEleCount) {\n this.mainList.removeChild(this.mainList.getElementsByTagName('li')[listindex]);\n listindex = 0;\n }\n else {\n listindex++;\n }\n count = 0;\n valueindex = 0;\n }\n }\n }\n wireEvents() {\n let form = closest(this.element, 'form');\n let wrapper = this.element.tagName === 'EJS-LISTBOX' ? this.element : this.list;\n EventHandler.add(this.list, 'click', this.clickHandler, this);\n EventHandler.add(wrapper, 'keydown', this.keyDownHandler, this);\n EventHandler.add(wrapper, 'focusout', this.focusOutHandler, this);\n this.wireToolbarEvent();\n if (this.selectionSettings.showCheckbox) {\n EventHandler.remove(document, 'mousedown', this.checkBoxSelectionModule.onDocumentClick);\n }\n if (this.fields.groupBy || this.element.querySelector('select>optgroup')) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n }\n if (form) {\n EventHandler.add(form, 'reset', this.formResetHandler, this);\n }\n }\n wireToolbarEvent() {\n if (this.toolbarSettings.items.length) {\n EventHandler.add(this.getToolElem(), 'click', this.toolbarClickHandler, this);\n }\n }\n unwireEvents() {\n let form = closest(this.element, 'form');\n let wrapper = this.element.tagName === 'EJS-LISTBOX' ? this.element : this.list;\n EventHandler.remove(this.list, 'click', this.clickHandler);\n EventHandler.remove(wrapper, 'keydown', this.keyDownHandler);\n EventHandler.remove(wrapper, 'focusout', this.focusOutHandler);\n if (this.allowFiltering && this.clearFilterIconElem) {\n EventHandler.remove(this.clearFilterIconElem, 'click', this.clearText);\n }\n if (this.toolbarSettings.items.length) {\n EventHandler.remove(this.getToolElem(), 'click', this.toolbarClickHandler);\n }\n if (form) {\n EventHandler.remove(form, 'reset', this.formResetHandler);\n }\n }\n clickHandler(e) {\n this.selectHandler(e);\n }\n ;\n checkSelectAll() {\n let searchCount = 0;\n let liItems = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n for (let i = 0; i < liItems.length; i++) {\n if (!liItems[i].classList.contains('e-disabled')) {\n searchCount++;\n }\n }\n let len = this.getSelectedItems().length;\n if (this.showSelectAll && searchCount) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection',\n value: (searchCount === len) ? 'check' : (len === 0) ? 'uncheck' : 'indeterminate' });\n }\n }\n getQuery(query) {\n let filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.allowFiltering) {\n let filterType = this.inputString === '' ? 'contains' : this.filterType;\n let dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.inputString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n let fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.inputString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = query ? query : this.query ? this.query : new Query();\n }\n return filterQuery;\n }\n setFiltering() {\n let filterInputObj;\n if (isNullOrUndefined(this.filterParent)) {\n if (isBlazor() && this.isServerRendered) {\n this.filterParent = this.list.querySelector('.e-filter-parent');\n this.filterInput = this.list.querySelector('.e-input-filter');\n }\n else {\n this.filterParent = this.createElement('span', {\n className: listBoxClasses.filterParent\n });\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: listBoxClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n if (Browser.isDevice) {\n \n }\n filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: [listBoxClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n append([filterInputObj.container], this.filterParent);\n prepend([this.filterParent], this.list);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'aria-owns': this.element.id + '_options',\n 'role': 'listbox',\n 'aria-activedescendant': null,\n 'autocomplete': 'off',\n 'autocorrect': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n }\n if (this.height.toString().indexOf('%') < 0) {\n addClass([this.list], 'e-filter-list');\n }\n this.inputString = this.filterInput.value;\n this.filterWireEvents();\n return filterInputObj;\n }\n }\n filterWireEvents(filterElem) {\n if (filterElem) {\n this.filterInput = filterElem.querySelector('.e-input-filter');\n }\n this.clearFilterIconElem = this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon);\n if (this.clearFilterIconElem) {\n EventHandler.add(this.clearFilterIconElem, 'click', this.clearText, this);\n if (!filterElem) {\n this.clearFilterIconElem.style.visibility = 'hidden';\n }\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.KeyUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onKeyDown, this);\n }\n selectHandler(e, isKey) {\n let isSelect = true;\n let currSelIdx;\n let li = closest(e.target, '.' + 'e-list-item');\n let selectedLi = [li];\n if (li) {\n currSelIdx = [].slice.call(li.parentElement.children).indexOf(li);\n if (!this.selectionSettings.showCheckbox) {\n if ((e.ctrlKey || Browser.isDevice) && this.isSelected(li)) {\n li.classList.remove(cssClass.selected);\n li.removeAttribute('aria-selected');\n isSelect = false;\n }\n else if (!(this.selectionSettings.mode === 'Multiple' && (e.ctrlKey || Browser.isDevice))) {\n this.getSelectedItems().forEach((ele) => {\n ele.removeAttribute('aria-selected');\n });\n removeClass(this.getSelectedItems(), cssClass.selected);\n }\n }\n else {\n isSelect = !li.getElementsByClassName('e-frame')[0].classList.contains('e-check');\n }\n if (e.shiftKey && !this.selectionSettings.showCheckbox && this.selectionSettings.mode !== 'Single') {\n selectedLi = [].slice.call(li.parentElement.children)\n .slice(Math.min(currSelIdx, this.prevSelIdx), Math.max(currSelIdx, this.prevSelIdx) + 1)\n .filter((ele) => { return ele.classList.contains('e-list-item'); });\n }\n else {\n this.prevSelIdx = [].slice.call(li.parentElement.children).indexOf(li);\n }\n if (isSelect) {\n if (!this.selectionSettings.showCheckbox) {\n addClass(selectedLi, cssClass.selected);\n }\n selectedLi.forEach((ele) => {\n ele.setAttribute('aria-selected', 'true');\n });\n this.list.setAttribute('aria-activedescendant', li.id);\n }\n if (!isKey && (this.maximumSelectionLength > (this.value && this.value.length) || !isSelect) &&\n (this.maximumSelectionLength >= (this.value && this.value.length) || !isSelect) &&\n !(this.maximumSelectionLength < (this.value && this.value.length))) {\n this.notify('updatelist', { li: li, e: e, module: 'listbox' });\n }\n if (this.allowFiltering && !isKey) {\n let liDataValue = this.getFormattedValue(li.getAttribute('data-value'));\n if (!isSelect) {\n this.value = this.value.filter((value1) => value1 !== liDataValue);\n }\n else {\n let values = [];\n extend(values, this.value);\n values.push(liDataValue);\n this.value = values;\n }\n if (document.querySelectorAll('ul').length < 2) {\n this.updateMainList();\n }\n }\n this.updateSelectedOptions();\n this.triggerChange(this.getSelectedItems(), e);\n this.checkMaxSelection();\n }\n }\n triggerChange(selectedLis, event) {\n this.trigger('change', { elements: selectedLis, items: this.getDataByElements(selectedLis), value: this.value, event: event });\n }\n getDataByElems(elems) {\n let data = [];\n for (let i = 0, len = elems.length; i < len; i++) {\n data.push(this.getDataByValue(this.getFormattedValue(elems[i].getAttribute('data-value'))));\n }\n return data;\n }\n getDataByElements(elems) {\n let data = [];\n let value;\n let sIdx = 0;\n if (!isNullOrUndefined(this.listData)) {\n let type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (let item of this.listData) {\n for (let i = sIdx, len = elems.length; i < len; i++) {\n value = this.getFormattedValue(elems[i].getAttribute('data-value'));\n if (!isNullOrUndefined(item) && item === value) {\n sIdx = i;\n data.push(item);\n break;\n }\n }\n if (elems.length === data.length) {\n break;\n }\n }\n }\n else {\n for (let item of this.listData) {\n for (let i = sIdx, len = elems.length; i < len; i++) {\n value = this.getFormattedValue(elems[i].getAttribute('data-value'));\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n sIdx = i;\n data.push(item);\n break;\n }\n }\n if (elems.length === data.length) {\n break;\n }\n }\n }\n return data;\n }\n return null;\n }\n checkMaxSelection() {\n let limit = this.list.querySelectorAll('.e-list-item span.e-check').length;\n if (this.selectionSettings.showCheckbox) {\n let index = 0;\n let liCollElem;\n liCollElem = this.list.getElementsByClassName('e-list-item');\n for (index; index < liCollElem.length; index++) {\n if (!liCollElem[index].querySelector('.e-frame.e-check')) {\n if (limit === this.maximumSelectionLength) {\n liCollElem[index].classList.add('e-disable');\n }\n else if (liCollElem[index].classList.contains('e-disable')) {\n liCollElem[index].classList.remove('e-disable');\n }\n }\n }\n }\n }\n toolbarClickHandler(e) {\n let btn = closest(e.target, 'button');\n if (btn) {\n this.toolbarAction = btn.getAttribute('data-value');\n if (btn.disabled) {\n return;\n }\n switch (this.toolbarAction) {\n case 'moveUp':\n this.moveUpDown(true);\n break;\n case 'moveDown':\n this.moveUpDown();\n break;\n case 'moveTo':\n this.moveItemTo();\n break;\n case 'moveFrom':\n this.moveItemFrom();\n break;\n case 'moveAllTo':\n this.moveAllItemTo();\n break;\n case 'moveAllFrom':\n this.moveAllItemFrom();\n break;\n }\n }\n }\n moveUpDown(isUp, isKey, value) {\n let elems = this.getSelectedItems();\n let tempItems;\n if (value) {\n elems = value;\n }\n if (((isUp && this.isSelected(this.ulElement.firstElementChild))\n || (!isUp && this.isSelected(this.ulElement.lastElementChild))) && !value) {\n return;\n }\n tempItems = this.getDataByElems(elems);\n let localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n this.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n (isUp ? elems : elems.reverse()).forEach((ele) => {\n let jsonToIdx = Array.prototype.indexOf.call(this.ulElement.querySelectorAll('.e-list-item'), ele);\n let idx = Array.prototype.indexOf.call(this.ulElement.children, ele);\n moveTo(this.ulElement, this.ulElement, [idx], isUp ? idx - 1 : idx + 2);\n this.changeData(idx, isUp ? idx - 1 : idx + 1, isUp ? jsonToIdx - 1 : jsonToIdx + 1, ele);\n });\n this.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n elems[0].focus();\n if (!isKey && this.toolbarSettings.items.length) {\n this.getToolElem().querySelector('[data-value=' + (isUp ? 'moveUp' : 'moveDown') + ']').focus();\n }\n this.updateToolBarState();\n }\n moveItemTo() {\n this.moveData(this, this.getScopedListBox());\n }\n moveItemFrom() {\n this.moveData(this.getScopedListBox(), this);\n }\n /**\n * Called internally if any of the property value changed.\n * @returns void\n * @private\n */\n // tslint:disable-next-line:max-func-body-length\n moveData(fListBox, tListBox, isKey, value, index) {\n let idx = [];\n let dataIdx = [];\n let jsonIdx = [];\n let sortIdx = [];\n let listData = [].slice.call(fListBox.listData);\n let tListData = [].slice.call(tListBox.listData);\n let sortData = [].slice.call(fListBox.sortedData);\n let tSortData = [].slice.call(tListBox.sortedData);\n let fliCollections = [].slice.call(fListBox.liCollections);\n let dataLiIdx = [];\n let tliCollections = [].slice.call(tListBox.liCollections);\n let tempItems = [];\n let data = [];\n let elems = fListBox.getSelectedItems();\n if (value) {\n elems = value;\n }\n let isRefresh = tListBox.sortOrder !== 'None' ||\n (tListBox.selectionSettings.showCheckbox !== fListBox.selectionSettings.showCheckbox) || tListBox.fields.groupBy;\n fListBox.value = [];\n if (elems.length) {\n this.removeSelected(fListBox, elems);\n elems.forEach((ele, i) => {\n idx.push(Array.prototype.indexOf.call(fListBox.ulElement.children, ele)); // update sortable elem\n // To update lb view data\n dataLiIdx.push(Array.prototype.indexOf.call(fListBox.ulElement.querySelectorAll('.e-list-item'), ele));\n // To update lb listdata data\n dataIdx.push(Array.prototype.indexOf.call(fListBox.listData, fListBox.getDataByElems([ele])[0]));\n // To update lb sorted data\n sortIdx.push(Array.prototype.indexOf.call(fListBox.sortedData, fListBox.getDataByElems([ele])[0]));\n // To update lb original data\n jsonIdx.push(Array.prototype.indexOf.call(fListBox.jsonData, fListBox.getDataByElems([ele])[0]));\n });\n if (this.sortOrder !== 'None') {\n sortIdx.forEach((i) => {\n tempItems.push(fListBox.sortedData[i]);\n });\n }\n else {\n jsonIdx.forEach((i) => {\n tempItems.push(fListBox.jsonData[i]);\n });\n }\n let localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n fListBox.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n if (!isBlazor()) {\n let rLiCollection = [];\n dataLiIdx.sort((n1, n2) => n1 - n2).reverse().forEach((i) => {\n rLiCollection.push(fliCollections.splice(i, 1)[0]);\n });\n fListBox.liCollections = fliCollections;\n if (index) {\n let toColl = tliCollections.splice(0, index);\n tListBox.liCollections = toColl.concat(rLiCollection.reverse()).concat(tliCollections);\n }\n else {\n tListBox.liCollections = tliCollections.concat(rLiCollection.reverse());\n }\n if (tListBox.listData.length === 0) {\n let noRecElem = tListBox.ulElement.getElementsByClassName('e-list-nrt')[0];\n if (noRecElem) {\n tListBox.ulElement.removeChild(noRecElem);\n }\n }\n }\n dataIdx.sort((n1, n2) => n2 - n1).forEach((i) => {\n listData.splice(i, 1)[0];\n });\n sortIdx.sort((n1, n2) => n2 - n1).forEach((i) => {\n sortData.splice(i, 1)[0];\n });\n jsonIdx.slice().reverse().forEach((i) => {\n data.push(fListBox.jsonData.splice(i, 1)[0]);\n });\n if (!isBlazor()) {\n if (isRefresh) {\n if (fListBox.fields.groupBy) {\n fListBox.ulElement.innerHTML = fListBox.renderItems(listData, fListBox.fields).innerHTML;\n }\n else {\n elems.forEach((ele) => { detach(ele); });\n }\n }\n else {\n moveTo(fListBox.ulElement, tListBox.ulElement, idx, index);\n fListBox.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n if (tListBox.mainList.childElementCount !== tListBox.jsonData.length) {\n tListBox.mainList = tListBox.ulElement;\n }\n fListBox.updateMainList();\n }\n let tJsonData = [].slice.call(tListBox.jsonData);\n tSortData = [].slice.call(tListBox.sortedData);\n if (!isBlazor()) {\n this.selectNextList(elems, dataLiIdx, dataIdx, fListBox);\n }\n if (isKey) {\n this.list.focus();\n }\n fListBox.listData = listData;\n fListBox.sortedData = sortData;\n index = (index) ? index : tListData.length;\n for (let i = tempItems.length - 1; i >= 0; i--) {\n tListData.splice(index, 0, tempItems[i]);\n tJsonData.splice(index, 0, tempItems[i]);\n tSortData.splice(index, 0, tempItems[i]);\n }\n tListBox.listData = tListData;\n tListBox.jsonData = tJsonData;\n tListBox.sortedData = tSortData;\n if (isBlazor()) {\n // tslint:disable\n fListBox.interopAdaptor.invokeMethodAsync('UpdateListData', fListBox.listData).then(() => {\n fListBox.updateBlazorListData(null, true);\n this.selectNextList(elems, dataLiIdx, dataIdx, fListBox);\n fListBox.updateSelectedOptions();\n });\n tListBox.interopAdaptor.invokeMethodAsync('UpdateListData', tListBox.listData).then(() => {\n if (isRefresh) {\n tListBox.setSelection();\n }\n tListBox.updateBlazorListData(null, true);\n fListBox.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n });\n // tslint:enable\n }\n else {\n if (isRefresh) {\n tListBox.ulElement.innerHTML = tListBox.renderItems(tListData, tListBox.fields).innerHTML;\n tListBox.setSelection();\n }\n fListBox.updateSelectedOptions();\n }\n if (fListBox.listData.length === 0) {\n // tslint:disable-next-line\n fListBox.l10nUpdate();\n }\n }\n if (fListBox.value.length === 1 && fListBox.getSelectedItems().length) {\n fListBox.value[0] = fListBox.getFormattedValue(fListBox.getSelectedItems()[0].getAttribute('data-value'));\n }\n }\n selectNextList(elems, dataLiIdx, dataIdx, inst) {\n let childCnt = inst.ulElement.querySelectorAll('.e-list-item').length;\n let ele;\n let liIdx;\n let validIdx = -1;\n if (elems.length === 1 && childCnt && !inst.selectionSettings.showCheckbox) {\n liIdx = childCnt <= dataLiIdx[0] ? childCnt - 1 : dataLiIdx[0];\n ele = inst.ulElement.querySelectorAll('.e-list-item')[liIdx];\n validIdx = inst.getValidIndex(ele, liIdx, childCnt === dataIdx[0] ? 38 : 40);\n if (validIdx > -1) {\n (inst.ulElement.querySelectorAll('.e-list-item')[validIdx].classList.add(cssClass.selected));\n }\n }\n }\n moveAllItemTo() {\n this.moveAllData(this, this.getScopedListBox());\n }\n moveAllItemFrom() {\n this.moveAllData(this.getScopedListBox(), this);\n }\n moveAllData(fListBox, tListBox, isKey, index) {\n let listData = [].slice.call(tListBox.listData);\n let jsonData = [].slice.call(tListBox.jsonData);\n let isRefresh = tListBox.sortOrder !== 'None' ||\n (tListBox.selectionSettings.showCheckbox !== fListBox.selectionSettings.showCheckbox) || tListBox.fields.groupBy;\n this.removeSelected(fListBox, fListBox.getSelectedItems());\n let tempItems = [].slice.call(fListBox.jsonData);\n let localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n fListBox.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n if (!isBlazor()) {\n if (tListBox.listData.length === 0) {\n let noRecElem = tListBox.ulElement.getElementsByClassName('e-list-nrt')[0];\n if (noRecElem) {\n tListBox.ulElement.removeChild(noRecElem);\n }\n }\n if (isRefresh) {\n let noRecElem = fListBox.ulElement.getElementsByClassName('e-list-nrt')[0];\n if (noRecElem) {\n fListBox.ulElement.removeChild(noRecElem);\n }\n }\n else {\n moveTo(fListBox.ulElement, tListBox.ulElement, Array.apply(null, { length: fListBox.ulElement.childElementCount }).map(Number.call, Number), index);\n this.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n }\n if (isKey) {\n this.list.focus();\n }\n index = (index) ? index : listData.length;\n for (let i = 0; i < fListBox.listData.length; i++) {\n listData.splice(index + i, 0, fListBox.listData[i]);\n }\n for (let i = 0; i < fListBox.jsonData.length; i++) {\n jsonData.splice(index + i, 0, fListBox.jsonData[i]);\n }\n if (!isBlazor()) {\n let fliCollections = [].slice.call(fListBox.liCollections);\n let tliCollections = [].slice.call(tListBox.liCollections);\n fListBox.liCollections = [];\n if (index) {\n let toColl = tliCollections.splice(0, index);\n tListBox.liCollections = toColl.concat(fliCollections).concat(tliCollections);\n }\n else {\n tListBox.liCollections = tliCollections.concat(fliCollections);\n }\n }\n fListBox.value = [];\n listData = listData\n .filter((data) => data.isHeader !== true);\n tListBox.listData = listData;\n tListBox.jsonData = jsonData;\n fListBox.listData = fListBox.sortedData = fListBox.jsonData = [];\n if (isBlazor()) {\n if (!isRefresh) {\n tListBox.sortedData = listData;\n }\n // tslint:disable\n fListBox.interopAdaptor.invokeMethodAsync('UpdateListData', fListBox.listData).then(() => {\n fListBox.updateBlazorListData(null, true);\n fListBox.updateSelectedOptions();\n });\n tListBox.interopAdaptor.invokeMethodAsync('UpdateListData', tListBox.listData).then(() => {\n tListBox.updateBlazorListData(null, true);\n fListBox.updateSelectedOptions();\n fListBox.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n });\n // tslint:enable\n }\n else {\n if (isRefresh) {\n tListBox.ulElement.innerHTML = tListBox.renderItems(listData, tListBox.fields).innerHTML;\n this.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n else {\n tListBox.sortedData = listData;\n }\n fListBox.updateSelectedOptions();\n }\n if (fListBox.listData.length === 0) {\n // tslint:disable-next-line\n fListBox.l10nUpdate();\n }\n }\n changeData(fromIdx, toIdx, jsonToIdx, ele) {\n let listData = [].slice.call(this.listData);\n let jsonData = [].slice.call(this.jsonData);\n let sortData = [].slice.call(this.sortedData);\n let jsonIdx = Array.prototype.indexOf.call(this.jsonData, this.getDataByElems([ele])[0]);\n let sortIdx = Array.prototype.indexOf.call(this.sortedData, this.getDataByElems([ele])[0]);\n let liColl = [].slice.call(this.liCollections);\n listData.splice(toIdx, 0, listData.splice(fromIdx, 1)[0]);\n jsonData.splice(jsonToIdx, 0, jsonData.splice(jsonIdx, 1)[0]);\n sortData.splice(toIdx, 0, sortData.splice(sortIdx, 1)[0]);\n liColl.splice(toIdx, 0, liColl.splice(fromIdx, 1)[0]);\n this.listData = listData;\n this.jsonData = jsonData;\n this.liCollections = liColl;\n this.sortedData = sortData;\n }\n getSelectedItems() {\n let ele = [];\n if (this.selectionSettings.showCheckbox) {\n [].slice.call(this.ulElement.getElementsByClassName('e-check')).forEach((cbox) => {\n ele.push(closest(cbox, '.' + 'e-list-item'));\n });\n }\n else {\n ele = [].slice.call(this.ulElement.getElementsByClassName(cssClass.selected));\n }\n return ele;\n }\n getScopedListBox() {\n let listObj;\n if (this.scope) {\n [].slice.call(document.querySelectorAll(this.scope)).forEach((ele) => {\n if (getComponent(ele, this.getModuleName())) {\n listObj = getComponent(ele, this.getModuleName());\n }\n });\n }\n return listObj;\n }\n getDragArgs(args, isDragEnd) {\n let elems = this.getSelectedItems();\n if (elems.length) {\n elems.pop();\n if (isDragEnd) {\n elems.push(args.target);\n }\n }\n else {\n elems = [args.target];\n }\n if (isBlazor()) {\n return { elements: elems, items: this.getDataByElems(elems), bindEvents: args.bindEvents,\n dragElement: args.dragElement };\n }\n else {\n return { elements: elems, items: this.getDataByElems(elems) };\n }\n }\n onKeyDown(e) {\n this.keyDownHandler(e);\n event.stopPropagation();\n }\n keyDownHandler(e) {\n if ([32, 35, 36, 37, 38, 39, 40, 65].indexOf(e.keyCode) > -1 && !this.allowFiltering) {\n e.preventDefault();\n if (e.keyCode === 32 && this.ulElement.children.length) {\n this.selectHandler({\n target: this.ulElement.getElementsByClassName('e-focused')[0],\n ctrlKey: e.ctrlKey, shiftKey: e.shiftKey\n });\n }\n else if (e.keyCode === 65 && e.ctrlKey) {\n this.selectAll();\n }\n else if ((e.keyCode === 38 || e.keyCode === 40) && e.ctrlKey && e.shiftKey) {\n this.moveUpDown(e.keyCode === 38 ? true : false, true);\n }\n else if ((this.toolbarSettings.items.length || this.tBListBox) && (e.keyCode === 39 || e.keyCode === 37) && e.ctrlKey) {\n let listObj = this.tBListBox || this.getScopedListBox();\n if (e.keyCode === 39) {\n e.shiftKey ? this.moveAllData(this, listObj, true) : this.moveData(this, listObj, true);\n }\n else {\n e.shiftKey ? this.moveAllData(listObj, this, true) : this.moveData(listObj, this, true);\n }\n }\n else if (e.keyCode !== 37 && e.keyCode !== 39) {\n this.upDownKeyHandler(e);\n }\n }\n else if (this.allowFiltering) {\n if (e.keyCode === 40 || e.keyCode === 38) {\n this.upDownKeyHandler(e);\n }\n }\n }\n upDownKeyHandler(e) {\n let ul = this.ulElement;\n let defaultIdx = (e.keyCode === 40 || e.keyCode === 36) ? 0 : ul.childElementCount - 1;\n let fliIdx = defaultIdx;\n let fli = ul.getElementsByClassName('e-focused')[0] || ul.getElementsByClassName(cssClass.selected)[0];\n if (fli) {\n if (e.keyCode !== 35 && e.keyCode !== 36) {\n fliIdx = Array.prototype.indexOf.call(ul.children, fli);\n e.keyCode === 40 ? fliIdx++ : fliIdx--;\n if (fliIdx < 0 || fliIdx > ul.childElementCount - 1) {\n return;\n }\n }\n removeClass([fli], 'e-focused');\n }\n let cli = ul.children[fliIdx];\n if (cli) {\n fliIdx = this.getValidIndex(cli, fliIdx, e.keyCode);\n if (fliIdx === -1) {\n addClass([fli], 'e-focused');\n return;\n }\n ul.children[fliIdx].focus();\n ul.children[fliIdx].classList.add('e-focused');\n if (!e.ctrlKey) {\n this.selectHandler({ target: ul.children[fliIdx], ctrlKey: e.ctrlKey, shiftKey: e.shiftKey }, true);\n }\n }\n }\n KeyUp(e) {\n let char = String.fromCharCode(e.keyCode);\n let isWordCharacter = char.match(/\\w/);\n if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\n this.isValidKey = (e.keyCode === 8) || this.isValidKey;\n if (this.isValidKey) {\n this.isValidKey = false;\n switch (e.keyCode) {\n default:\n let text = this.targetElement();\n let keyCode = e.keyCode;\n if (this.allowFiltering) {\n let eventArgsData = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: (dataSource, query, fields) => {\n if (eventArgsData.cancel) {\n return;\n }\n this.isFiltered = true;\n this.remoteFilterAction = true;\n this.dataUpdater(dataSource, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgsData, (args) => {\n this.isDataFetched = false;\n if (eventArgsData.cancel || (this.filterInput.value !== '' && this.isFiltered)) {\n return;\n }\n if (!eventArgsData.cancel && !this.isCustomFiltering && !eventArgsData.preventDefaultAction) {\n this.inputString = this.filterInput.value;\n this.filteringAction(this.jsonData, new Query(), this.fields);\n }\n if (!this.isFiltered && !this.isCustomFiltering && !eventArgsData.preventDefaultAction) {\n this.dataUpdater(this.jsonData, new Query(), this.fields);\n }\n });\n }\n }\n }\n }\n /**\n * To filter the data from given data source by using query\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @return {void}.\n */\n filter(dataSource, query, fields) {\n this.isCustomFiltering = true;\n this.filteringAction(dataSource, query, fields);\n }\n filteringAction(dataSource, query, fields) {\n this.resetList(dataSource, fields, query);\n }\n targetElement() {\n this.targetInputElement = this.list.getElementsByClassName('e-input-filter')[0];\n return this.targetInputElement.value;\n }\n dataUpdater(dataSource, query, fields) {\n this.isDataFetched = false;\n let backCommand = true;\n if (this.targetElement().trim() === '') {\n let list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (backCommand) {\n this.remoteCustomValue = false;\n this.onActionComplete(list, this.jsonData);\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.selectionSettings.showCheckbox, e: this });\n }\n }\n else {\n this.resetList(dataSource, fields, query);\n }\n }\n focusOutHandler() {\n let ele = this.list.getElementsByClassName('e-focused')[0];\n if (ele) {\n ele.classList.remove('e-focused');\n }\n if (this.allowFiltering) {\n this.refreshClearIcon();\n }\n }\n getValidIndex(cli, index, keyCode) {\n let cul = this.ulElement;\n if (cli.classList.contains('e-disabled') || cli.classList.contains(cssClass.group)) {\n (keyCode === 40 || keyCode === 36) ? index++ : index--;\n }\n if (index < 0 || index === cul.childElementCount) {\n return -1;\n }\n cli = cul.querySelectorAll('.e-list-item')[index];\n if (cli.classList.contains('e-disabled') || cli.classList.contains(cssClass.group)) {\n index = this.getValidIndex(cli, index, keyCode);\n }\n return index;\n }\n updateSelectedOptions() {\n let selectedOptions = [];\n let values = [];\n extend(values, this.value);\n this.getSelectedItems().forEach((ele) => {\n if (!ele.classList.contains('e-grabbed')) {\n selectedOptions.push(this.getFormattedValue(ele.getAttribute('data-value')));\n }\n });\n if (this.mainList.childElementCount === this.ulElement.childElementCount) {\n if (this.allowFiltering && this.selectionSettings.showCheckbox) {\n for (let i = 0; i < selectedOptions.length; i++) {\n if (values.indexOf(selectedOptions[i]) > -1) {\n continue;\n }\n else {\n values.push(selectedOptions[i]);\n }\n }\n this.setProperties({ value: values }, true);\n }\n else {\n this.setProperties({ value: selectedOptions }, true);\n }\n }\n this.updateSelectTag();\n this.updateToolBarState();\n if (this.tBListBox) {\n this.tBListBox.updateToolBarState();\n }\n }\n clearSelection(values = this.value) {\n if (this.selectionSettings.showCheckbox) {\n let dvalue;\n this.getSelectedItems().forEach((li) => {\n dvalue = this.getFormattedValue(li.getAttribute('data-value'));\n if (values.indexOf(dvalue) < 0) {\n li.getElementsByClassName('e-check')[0].classList.remove('e-check');\n li.getElementsByClassName('e-checkbox-wrapper')[0].removeAttribute('aria-checked');\n li.removeAttribute('aria-selected');\n }\n });\n }\n }\n ;\n setSelection(values = this.value, isSelect = true, isText = false) {\n let li;\n let liselect;\n if (values) {\n values.forEach((value) => {\n let text;\n if (isText) {\n if (isBlazor() && typeof (value) === 'object') {\n text = value[this.fields.text || 'text'];\n if (isNullOrUndefined(text)) {\n return;\n }\n text = this.getValueByText(text);\n }\n else {\n text = this.getValueByText(value);\n }\n }\n else {\n text = value;\n }\n li = this.list.querySelector('[data-value=\"' + text + '\"]');\n if (li) {\n if (this.selectionSettings.showCheckbox) {\n liselect = li.getElementsByClassName('e-frame')[0].classList.contains('e-check');\n }\n else {\n liselect = li.classList.contains('e-selected');\n }\n if (!isSelect && liselect || isSelect && !liselect && li) {\n if (this.selectionSettings.showCheckbox) {\n this.notify('updatelist', { li: li, module: 'listbox' });\n }\n else {\n if (isSelect) {\n li.classList.add(cssClass.selected);\n li.setAttribute('aria-selected', 'true');\n }\n else {\n li.classList.remove(cssClass.selected);\n li.removeAttribute('aria-selected');\n }\n }\n }\n }\n });\n }\n this.updateSelectTag();\n }\n updateSelectTag() {\n let ele = this.getSelectTag();\n let innerHTML = '';\n ele.innerHTML = '';\n if (this.value) {\n for (let i = 0, len = this.value.length; i < len; i++) {\n innerHTML += '';\n }\n ele.innerHTML += innerHTML;\n }\n this.checkSelectAll();\n }\n checkDisabledState(inst) {\n return (isBlazor() ? inst.ulElement.querySelectorAll('.' + cssClass.li).length : inst.ulElement.childElementCount) === 0;\n }\n updateToolBarState() {\n if (this.toolbarSettings.items.length) {\n let listObj = this.getScopedListBox();\n let wrap = this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n this.toolbarSettings.items.forEach((value) => {\n let btn = wrap.querySelector('[data-value=\"' + value + '\"]');\n switch (value) {\n case 'moveAllTo':\n btn.disabled = this.checkDisabledState(this);\n break;\n case 'moveAllFrom':\n btn.disabled = this.checkDisabledState(listObj);\n break;\n case 'moveFrom':\n btn.disabled = listObj.value && listObj.value.length ? false : true;\n break;\n case 'moveUp':\n btn.disabled = this.value && this.value.length\n && !this.isSelected(this.ulElement.children[0]) ? false : true;\n break;\n case 'moveDown':\n btn.disabled = this.value && this.value.length\n && !this.isSelected(this.ulElement.children[this.ulElement.childElementCount - 1]) ? false : true;\n break;\n default:\n btn.disabled = this.value && this.value.length ? false : true;\n break;\n }\n });\n }\n }\n setCheckboxPosition() {\n let listWrap = this.list;\n if (!this.initLoad && this.selectionSettings.checkboxPosition === 'Left') {\n listWrap.classList.remove('e-right');\n }\n if (this.selectionSettings.checkboxPosition === 'Right') {\n listWrap.classList.add('e-right');\n }\n }\n showCheckbox(showCheckbox) {\n let index = 0;\n let liColl = this.list.lastElementChild.querySelectorAll('li');\n let liCollLen = this.list.lastElementChild.getElementsByClassName('e-list-item').length;\n if (showCheckbox) {\n if (!isBlazor()) {\n this.ulElement = this.renderItems(this.listData, this.fields);\n this.mainList = this.ulElement;\n this.list.removeChild(this.list.getElementsByTagName('ul')[0]);\n this.list.appendChild(this.ulElement);\n }\n if (this.selectionSettings.showSelectAll && !this.list.getElementsByClassName('e-selectall-parent')[0]) {\n let l10nShow = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.showSelectAll = true;\n this.selectAllText = l10nShow.getConstant('selectAllText');\n this.unSelectAllText = l10nShow.getConstant('unSelectAllText');\n this.popupWrapper = this.list;\n this.checkBoxSelectionModule.checkAllParent = null;\n this.notify('selectAll', {});\n this.checkSelectAll();\n }\n }\n else {\n if (this.list.getElementsByClassName('e-selectall-parent')[0]) {\n this.list.removeChild(this.list.getElementsByClassName('e-selectall-parent')[0]);\n }\n if (!isBlazor()) {\n for (index; index < liCollLen; index++) {\n if (liColl[index].classList.contains('e-list-item')) {\n liColl[index].removeChild(liColl[index].getElementsByClassName('e-checkbox-wrapper')[0]);\n }\n if (liColl[index].hasAttribute('aria-selected')) {\n liColl[index].removeAttribute('aria-selected');\n }\n }\n this.mainList = this.ulElement;\n }\n }\n this.value = [];\n }\n isSelected(ele) {\n if (!isNullOrUndefined(ele)) {\n return ele.classList.contains(cssClass.selected) || ele.querySelector('.e-check') !== null;\n }\n else {\n return false;\n }\n }\n getSelectTag() {\n return this.list.getElementsByClassName('e-hidden-select')[0];\n }\n getToolElem() {\n return this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n }\n formResetHandler() {\n this.value = this.initialSelectedOptions;\n }\n /**\n * Return the module name.\n * @private\n */\n getModuleName() {\n return 'listbox';\n }\n /**\n * Get the properties to be maintained in the persisted state.\n */\n getPersistData() {\n return this.addOnPersist(['value']);\n }\n getLocaleName() {\n return 'listbox';\n }\n ;\n destroy() {\n if (this.itemTemplate) {\n resetBlazorTemplate(`${this.element.id}${ITEMTEMPLATE_PROPERTY$1}`, ITEMTEMPLATE_PROPERTY$1);\n }\n this.unwireEvents();\n if (this.element.tagName === 'EJS-LISTBOX') {\n this.element.innerHTML = '';\n }\n else {\n if (!isBlazor() || (isBlazor() && !this.isServerRendered)) {\n this.element.style.display = 'inline-block';\n if (this.toolbarSettings.items.length) {\n this.list.parentElement.parentElement.insertBefore(this.list, this.list.parentElement);\n detach(this.list.nextElementSibling);\n }\n this.list.parentElement.insertBefore(this.element, this.list);\n }\n }\n if (!isBlazor() || (isBlazor() && !this.isServerRendered)) {\n super.destroy();\n }\n }\n /**\n * Called internally if any of the property value changed.\n * @returns void\n * @private\n */\n // tslint:disable-next-line:max-func-body-length\n onPropertyChanged(newProp, oldProp) {\n let wrap = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n super.onPropertyChanged(newProp, oldProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrap], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrap], newProp.cssClass.split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n wrap.classList.add('e-rtl');\n }\n else {\n wrap.classList.remove('e-rtl');\n }\n break;\n case 'value':\n removeClass(this.list.querySelectorAll('.' + cssClass.selected), cssClass.selected);\n this.clearSelection(this.value);\n this.setSelection();\n break;\n case 'height':\n this.setHeight();\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'allowDragAndDrop':\n if (newProp.allowDragAndDrop) {\n this.initDraggable();\n }\n else {\n getComponent(this.ulElement, 'sortable').destroy();\n }\n break;\n case 'allowFiltering':\n if (this.allowFiltering) {\n this.setFiltering();\n }\n else {\n this.list.removeChild(this.list.getElementsByClassName('e-filter-parent')[0]);\n this.filterParent = null;\n removeClass([this.list], 'e-filter-list');\n }\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n if (this.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this.filterInput);\n }\n }\n break;\n case 'scope':\n if (this.allowDragAndDrop) {\n getComponent(this.ulElement, 'sortable').scope = newProp.scope;\n }\n if (this.toolbarSettings.items.length) {\n if (oldProp.scope) {\n getComponent(document.querySelector(oldProp.scope), this.getModuleName())\n .tBListBox = null;\n }\n if (newProp.scope) {\n getComponent(document.querySelector(newProp.scope), this.getModuleName())\n .tBListBox = this;\n }\n }\n break;\n case 'toolbarSettings':\n let ele;\n let pos = newProp.toolbarSettings.position;\n let toolElem = this.getToolElem();\n if (pos) {\n removeClass([wrap], ['e-right', 'e-left']);\n wrap.classList.add('e-' + pos.toLowerCase());\n if (pos === 'Left') {\n wrap.insertBefore(toolElem, this.list);\n }\n else {\n wrap.appendChild(toolElem);\n }\n }\n if (newProp.toolbarSettings.items) {\n if (oldProp.toolbarSettings.items.length) {\n ele = this.list.parentElement;\n ele.parentElement.insertBefore(this.list, ele);\n detach(ele);\n }\n this.initToolbarAndStyles();\n this.wireToolbarEvent();\n }\n break;\n case 'selectionSettings':\n let showSelectAll = newProp.selectionSettings.showSelectAll;\n let showCheckbox = newProp.selectionSettings.showCheckbox;\n if (!isNullOrUndefined(showSelectAll)) {\n this.showSelectAll = showSelectAll;\n if (this.showSelectAll) {\n let l10nSel = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.checkBoxSelectionModule.checkAllParent = null;\n this.showSelectAll = true;\n this.selectAllText = l10nSel.getConstant('selectAllText');\n this.unSelectAllText = l10nSel.getConstant('selectAllText');\n this.popupWrapper = this.list;\n }\n this.notify('selectAll', {});\n this.checkSelectAll();\n }\n if (!isNullOrUndefined(showCheckbox)) {\n this.showCheckbox(showCheckbox);\n }\n if (this.selectionSettings.showCheckbox) {\n this.setCheckboxPosition();\n }\n break;\n case 'dataSource':\n this.jsonData = [].slice.call(this.dataSource);\n break;\n }\n }\n }\n};\n__decorate$6([\n Property('')\n], ListBox.prototype, \"cssClass\", void 0);\n__decorate$6([\n Property([])\n], ListBox.prototype, \"value\", void 0);\n__decorate$6([\n Property('')\n], ListBox.prototype, \"height\", void 0);\n__decorate$6([\n Property(false)\n], ListBox.prototype, \"allowDragAndDrop\", void 0);\n__decorate$6([\n Property(1000)\n], ListBox.prototype, \"maximumSelectionLength\", void 0);\n__decorate$6([\n Property(false)\n], ListBox.prototype, \"allowFiltering\", void 0);\n__decorate$6([\n Property('')\n], ListBox.prototype, \"scope\", void 0);\n__decorate$6([\n Property(true)\n], ListBox.prototype, \"ignoreCase\", void 0);\n__decorate$6([\n Property(null)\n], ListBox.prototype, \"filterBarPlaceholder\", void 0);\n__decorate$6([\n Event()\n], ListBox.prototype, \"beforeItemRender\", void 0);\n__decorate$6([\n Event()\n], ListBox.prototype, \"filtering\", void 0);\n__decorate$6([\n Event()\n], ListBox.prototype, \"select\", void 0);\n__decorate$6([\n Event()\n], ListBox.prototype, \"change\", void 0);\n__decorate$6([\n Event()\n], ListBox.prototype, \"beforeDrop\", void 0);\n__decorate$6([\n Event()\n], ListBox.prototype, \"dragStart\", void 0);\n__decorate$6([\n Event()\n], ListBox.prototype, \"drag\", void 0);\n__decorate$6([\n Event()\n], ListBox.prototype, \"drop\", void 0);\n__decorate$6([\n Event()\n], ListBox.prototype, \"dataBound\", void 0);\n__decorate$6([\n Property(null)\n], ListBox.prototype, \"groupTemplate\", void 0);\n__decorate$6([\n Property('No records found')\n], ListBox.prototype, \"noRecordsTemplate\", void 0);\n__decorate$6([\n Property('Request failed')\n], ListBox.prototype, \"actionFailureTemplate\", void 0);\n__decorate$6([\n Property(1000)\n], ListBox.prototype, \"zIndex\", void 0);\n__decorate$6([\n Property(false)\n], ListBox.prototype, \"ignoreAccent\", void 0);\n__decorate$6([\n Complex({}, ToolbarSettings)\n], ListBox.prototype, \"toolbarSettings\", void 0);\n__decorate$6([\n Complex({}, SelectionSettings)\n], ListBox.prototype, \"selectionSettings\", void 0);\nListBox = ListBox_1 = __decorate$6([\n NotifyPropertyChanges\n], ListBox);\nconst listBoxClasses = {\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n clearIcon: 'e-clear-icon',\n};\n\n/**\n * export all modules from current location\n */\n\n/**\n * export all modules from current location\n */\n\nexport { incrementalSearch, Search, highlightSearch, revertHighlightSearch, FieldSettings, dropDownBaseClasses, DropDownBase, dropDownListClasses, DropDownList, Fields, TreeSettings, DropDownTree, ComboBox, AutoComplete, MultiSelect, CheckBoxSelection, createFloatLabel, updateFloatLabelState, removeFloating, setPlaceHolder, floatLabelFocus, floatLabelBlur, SelectionSettings, ToolbarSettings, ListBox };\n//# sourceMappingURL=ej2-dropdowns.es2015.js.map\n","import { ZipArchive, ZipArchiveItem } from '@syncfusion/ej2-compression';\nimport { Internationalization, isNullOrUndefined } from '@syncfusion/ej2-base';\n\n/**\n * CellStyle class\n * @private\n */\nclass CellStyle {\n constructor() {\n this.numFmtId = 0;\n this.backColor = 'none';\n this.fontName = 'Calibri';\n this.fontSize = 14;\n this.fontColor = '#000000';\n this.italic = false;\n this.bold = false;\n this.underline = false;\n this.wrapText = false;\n this.hAlign = 'general';\n this.vAlign = 'bottom';\n this.indent = 0;\n this.rotation = 0;\n this.numberFormat = 'GENERAL';\n this.type = 'datetime';\n this.borders = new Borders();\n this.isGlobalStyle = false;\n }\n}\n/**\n * Font Class\n * @private\n */\nclass Font {\n constructor() {\n this.sz = 14;\n this.name = 'Calibri';\n this.u = false;\n this.b = false;\n this.i = false;\n this.color = 'FF000000';\n }\n}\n/**\n * CellXfs class\n * @private\n */\nclass CellXfs {\n}\n/**\n * Alignment class\n * @private\n */\nclass Alignment {\n}\n/**\n * CellStyleXfs class\n * @private\n */\nclass CellStyleXfs {\n}\n/**\n * CellStyles class\n * @private\n */\nclass CellStyles {\n constructor() {\n this.name = 'Normal';\n this.xfId = 0;\n }\n}\n/**\n * NumFmt class\n * @private\n */\nclass NumFmt {\n constructor(id, code) {\n this.numFmtId = id;\n this.formatCode = code;\n }\n}\n/**\n * Border class\n * @private\n */\nclass Border {\n constructor(mLine, mColor) {\n this.lineStyle = mLine;\n this.color = mColor;\n }\n}\n/**\n * Borders class\n * @private\n */\nclass Borders {\n constructor() {\n this.left = new Border('none', '#FFFFFF');\n this.right = new Border('none', '#FFFFFF');\n this.top = new Border('none', '#FFFFFF');\n this.bottom = new Border('none', '#FFFFFF');\n this.all = new Border('none', '#FFFFFF');\n }\n}\n\n/**\n * Worksheet class\n * @private\n */\nclass Cell {\n}\n/**\n * Cells class\n * @private\n */\nclass Cells extends Array {\n constructor() {\n super(...arguments);\n this.add = (cell) => {\n let inserted = false;\n let count = 0;\n for (let c of this) {\n if (c.index === cell.index) {\n this[count] = cell;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n this.push(cell);\n }\n };\n }\n}\n\n/**\n * Column class\n * @private\n */\nclass Column {\n}\n\n/**\n * Row class\n * @private\n */\nclass Row {\n}\n/**\n * Rows class\n * @private\n */\nclass Rows extends Array {\n constructor() {\n super(...arguments);\n this.add = (row) => {\n let inserted = false;\n let count = 0;\n for (let r of this) {\n if (r.index === row.index) {\n this[count] = row;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n this.push(row);\n }\n };\n }\n}\n\n/**\n * Worksheets class\n * @private\n */\nclass Worksheets extends Array {\n}\n\n/**\n * Worksheet class\n * @private\n */\nclass Worksheet {\n constructor() {\n this.isSummaryRowBelow = true;\n this.showGridLines = true;\n }\n}\n/**\n * Hyperlink class\n * @private\n */\nclass HyperLink {\n}\n/**\n * Grouping class\n * @private\n */\nclass Grouping {\n}\n/**\n * FreezePane class\n * @private\n */\nclass FreezePane {\n}\n/**\n * MergeCell\n * @private\n */\nclass MergeCell {\n}\n/**\n * MergeCells class\n * @private\n */\nclass MergeCells extends Array {\n constructor() {\n super(...arguments);\n this.add = (mergeCell) => {\n let inserted = false;\n let count = 0;\n for (let mCell of this) {\n if (MergeCells.isIntersecting(mCell, mergeCell)) {\n let intersectingCell = new MergeCell();\n intersectingCell.x = Math.min(mCell.x, mergeCell.x);\n intersectingCell.y = Math.min(mCell.Y, mergeCell.y);\n intersectingCell.width = Math.max(mCell.Width + mCell.X, mergeCell.width + mergeCell.x);\n intersectingCell.height = Math.max(mCell.Height + mCell.Y, mergeCell.height + mergeCell.y);\n intersectingCell.ref = (this[count].ref.split(':')[0]) + ':' + (mergeCell.ref.split(':')[1]);\n this[count] = intersectingCell;\n mergeCell = intersectingCell;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n this.push(mergeCell);\n }\n return mergeCell;\n };\n }\n static isIntersecting(base, compare) {\n return (base.x <= compare.x + compare.width)\n && (compare.x <= base.x + base.width)\n && (base.y <= compare.y + compare.height)\n && (compare.y <= base.y + base.height);\n }\n}\n\n/**\n * Image class\n * @private\n */\nclass Image {\n}\n\n// import { IValueFormatter } from '../base/interface';\n/**\n * ValueFormatter class to globalize the value.\n * @private\n */\nclass ValueFormatter {\n constructor(cultureName) {\n this.intl = new Internationalization();\n // if (!isNullOrUndefined(cultureName)) {\n // this.intl.culture = cultureName;\n // }\n }\n getFormatFunction(format, isServerRendered) {\n if (format.type) {\n if (isServerRendered) {\n format.isServerRendered = true;\n }\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n }\n // public getParserFunction(format: NumberFormatOptions | DateFormatOptions): Function {\n // if ((format).type) {\n // return this.intl.getDateParser(format);\n // } else {\n // return this.intl.getNumberParser(format);\n // }\n // }\n // public fromView(value: string, format: Function, type?: string): string | number | Date {\n // if (type === 'date' || type === 'datetime' || type === 'number') {\n // return format(value);\n // } else {\n // return value;\n // }\n // }\n toView(value, format) {\n let result = value;\n if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) {\n result = format(value);\n }\n return result;\n }\n // public setCulture(cultureName: string): void {\n // if (!isNullOrUndefined(cultureName)) {\n // setCulture(cultureName);\n // }\n // }\n /* tslint:disable:no-any */\n displayText(value, format, isServerRendered) {\n return this.toView(value, this.getFormatFunction(format, isServerRendered));\n }\n}\n\n/**\n * CsvHelper class\n * @private\n */\nclass CsvHelper {\n /* tslint:disable:no-any */\n constructor(json, separator) {\n this.csvStr = '';\n if (separator === null || separator === undefined) {\n this.separator = ',';\n }\n else {\n this.separator = separator;\n }\n this.formatter = new ValueFormatter();\n this.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n if (json.isServerRendered !== null && json.isServerRendered !== undefined) {\n this.isServerRendered = json.isServerRendered;\n }\n if (json.styles !== null && json.styles !== undefined) {\n this.globalStyles = new Map();\n for (let i = 0; i < json.styles.length; i++) {\n if (json.styles[i].name !== undefined && json.styles[i].numberFormat !== undefined) {\n this.globalStyles.set(json.styles[i].name, json.styles[i].numberFormat);\n }\n }\n }\n // Parses Worksheets data to DOM. \n if (json.worksheets !== null && json.worksheets !== undefined) {\n this.parseWorksheet(json.worksheets[0]);\n }\n //this.csvStr = 'a1,a2,a3\\nb1,b2,b3';\n }\n parseWorksheet(json) {\n //Rows\n if (json.rows !== null && json.rows !== undefined) {\n this.parseRows(json.rows);\n }\n }\n /* tslint:disable:no-any */\n parseRows(rows) {\n let count = 1;\n for (let row of rows) {\n //Row index\n if (row.index !== null && row.index !== undefined) {\n while (count < row.index) {\n this.csvStr += '\\n';\n count++;\n }\n this.parseRow(row);\n }\n else {\n throw Error('Row index is missing.');\n }\n }\n }\n /* tslint:disable:no-any */\n parseRow(row) {\n if (row.cells !== null && row.cells !== undefined) {\n let count = 1;\n for (let cell of row.cells) {\n //cell index\n if (cell.index !== null && cell.index !== undefined) {\n while (count < cell.index) {\n this.csvStr += this.separator;\n count++;\n }\n this.parseCell(cell);\n }\n else {\n throw Error('Cell index is missing.');\n }\n }\n }\n }\n /* tslint:disable:no-any */\n parseCell(cell) {\n let csv = this.csvStr;\n if (cell.value !== undefined) {\n if (cell.value instanceof Date) {\n if (cell.style !== undefined && cell.style.numberFormat !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n try {\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', skeleton: cell.style.numberFormat }, this.isServerRendered));\n }\n catch (error) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', format: cell.style.numberFormat }, this.isServerRendered));\n }\n }\n else if (cell.style !== undefined && cell.style.name !== undefined && this.globalStyles.has(cell.style.name)) {\n /* tslint:disable-next-line:max-line-length */\n try {\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', skeleton: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n catch (error) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', format: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n }\n else {\n csv += cell.value;\n }\n }\n else if (typeof (cell.value) === 'boolean') {\n csv += cell.value ? 'TRUE' : 'FALSE';\n }\n else if (typeof (cell.value) === 'number') {\n if (cell.style !== undefined && cell.style.numberFormat !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { format: cell.style.numberFormat }, this.isServerRendered));\n }\n else if (cell.style !== undefined && cell.style.name !== undefined && this.globalStyles.has(cell.style.name)) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { format: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n else {\n csv += cell.value;\n }\n }\n else {\n csv += this.parseCellValue(cell.value);\n }\n }\n this.csvStr = csv;\n }\n parseCellValue(value) {\n let val = '';\n let length = value.length;\n for (let start = 0; start < length; start++) {\n if (value[start] === '\\\"') {\n val += value[start].replace('\\\"', '\\\"\\\"');\n }\n else {\n val += value[start];\n }\n }\n value = val;\n if (value.indexOf(this.separator) !== -1 || value.indexOf('\\n') !== -1) {\n return value = '\\\"' + value + '\\\"';\n }\n else {\n return value;\n }\n }\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName- file name to save.\n * @param {Blob} buffer- the content to write in file\n */\n save(fileName) {\n this.buffer = new Blob(['\\ufeff' + this.csvStr], { type: 'text/csv;charset=UTF-8' });\n if (this.isMicrosoftBrowser) {\n navigator.msSaveBlob(this.buffer, fileName);\n }\n else {\n let dataUrl = window.URL.createObjectURL(this.buffer);\n let dwlLink = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');\n dwlLink.download = fileName;\n dwlLink.href = dataUrl;\n let event = document.createEvent('MouseEvent');\n event.initEvent('click', true, true);\n dwlLink.dispatchEvent(event);\n setTimeout(() => {\n window.URL.revokeObjectURL(dataUrl);\n });\n }\n }\n saveAsBlob() {\n return new Blob(['\\ufeff' + this.csvStr], { type: 'text/csv;charset=UTF-8' });\n }\n}\n\n/**\n * BlobHelper class\n * @private\n */\nclass BlobHelper {\n constructor() {\n /* tslint:disable:no-any */\n this.parts = [];\n }\n /* tslint:disable:no-any */\n append(part) {\n this.parts.push(part);\n this.blob = undefined; // Invalidate the blob\n }\n getBlob() {\n return new Blob(this.parts, { type: 'text/plain' });\n }\n}\n\n/**\n * Workbook class\n */\nclass Workbook {\n /* tslint:disable:no-any */\n constructor(json, saveType, culture, currencyString, separator) {\n this.sharedStringCount = 0;\n this.unitsProportions = [\n 96 / 75.0,\n 96 / 300.0,\n 96,\n 96 / 25.4,\n 96 / 2.54,\n 1,\n 96 / 72.0,\n 96 / 72.0 / 12700,\n ];\n /* tslint:disable:no-any */\n this.hyperlinkStyle = { fontColor: '#0000FF', underline: true };\n if (culture !== undefined) {\n this.culture = culture;\n }\n else {\n this.culture = 'en-US';\n }\n if (currencyString !== undefined) {\n this.currency = currencyString;\n }\n else {\n this.currency = 'USD';\n }\n this.intl = new Internationalization(this.culture);\n this.mSaveType = saveType;\n if (saveType === 'xlsx') {\n this.mArchive = new ZipArchive();\n this.sharedString = [];\n this.mFonts = [];\n this.mBorders = [];\n this.mStyles = [];\n this.printTitles = new Map();\n this.cellStyles = new Map();\n this.mNumFmt = new Map();\n this.mFills = new Map();\n this.mStyles.push(new CellStyle());\n this.mFonts.push(new Font());\n /* tslint:disable */\n this.cellStyles.set('Normal', new CellStyles());\n /* tslint:enable */\n this.mCellXfs = [];\n this.mCellStyleXfs = [];\n this.drawingCount = 0;\n this.imageCount = 0;\n if (json.styles !== null && json.styles !== undefined) {\n /* tslint:disable-next-line:no-any */\n this.globalStyles = new Map();\n for (let i = 0; i < json.styles.length; i++) {\n if (json.styles[i].name !== undefined) {\n if (!this.cellStyles.has(json.styles[i].name)) {\n let cellStyle = new CellStyle();\n cellStyle.isGlobalStyle = true;\n this.parserCellStyle(json.styles[i], cellStyle, 'none');\n let cellStylesIn = new CellStyles();\n cellStylesIn.name = cellStyle.name;\n cellStylesIn.xfId = (cellStyle.index - 1);\n this.cellStyles.set(cellStylesIn.name, cellStylesIn);\n /* tslint:disable-next-line:no-any */\n let tFormat = {};\n if (json.styles[i].numberFormat !== undefined) {\n tFormat.format = json.styles[i].numberFormat;\n }\n if (json.styles[i].type !== undefined) {\n tFormat.type = json.styles[i].type;\n }\n else {\n tFormat.type = 'datetime';\n }\n if (tFormat.format !== undefined) {\n this.globalStyles.set(json.styles[i].name, tFormat);\n }\n }\n else {\n throw Error('Style name ' + json.styles[i].name + ' is already existed');\n }\n }\n }\n }\n // Parses Worksheets data to DOM. \n if (json.worksheets !== null && json.worksheets !== undefined) {\n this.parserWorksheets(json.worksheets);\n }\n else {\n throw Error('Worksheet is expected.');\n }\n // Parses the BuiltInProperties data to DOM. \n if (json.builtInProperties !== null && json.builtInProperties !== undefined) {\n this.builtInProperties = new BuiltInProperties();\n this.parserBuiltInProperties(json.builtInProperties, this.builtInProperties);\n }\n }\n else {\n this.csvHelper = new CsvHelper(json, separator);\n }\n }\n /* tslint:disable:no-any */\n parserBuiltInProperties(jsonBuiltInProperties, builtInProperties) {\n //Author\n if (jsonBuiltInProperties.author !== null && jsonBuiltInProperties.author !== undefined) {\n builtInProperties.author = jsonBuiltInProperties.author;\n }\n //Comments\n if (jsonBuiltInProperties.comments !== null && jsonBuiltInProperties.comments !== undefined) {\n builtInProperties.comments = jsonBuiltInProperties.comments;\n }\n //Category\n if (jsonBuiltInProperties.category !== null && jsonBuiltInProperties.category !== undefined) {\n builtInProperties.category = jsonBuiltInProperties.category;\n }\n //Company\n if (jsonBuiltInProperties.company !== null && jsonBuiltInProperties.company !== undefined) {\n builtInProperties.company = jsonBuiltInProperties.company;\n }\n //Manager\n if (jsonBuiltInProperties.manager !== null && jsonBuiltInProperties.manager !== undefined) {\n builtInProperties.manager = jsonBuiltInProperties.manager;\n }\n //Subject\n if (jsonBuiltInProperties.subject !== null && jsonBuiltInProperties.subject !== undefined) {\n builtInProperties.subject = jsonBuiltInProperties.subject;\n }\n //Title\n if (jsonBuiltInProperties.title !== null && jsonBuiltInProperties.title !== undefined) {\n builtInProperties.title = jsonBuiltInProperties.title;\n }\n //Creation date\n if (jsonBuiltInProperties.createdDate !== null && jsonBuiltInProperties.createdDate !== undefined) {\n builtInProperties.createdDate = jsonBuiltInProperties.createdDate;\n }\n //Modified date\n if (jsonBuiltInProperties.modifiedDate !== null && jsonBuiltInProperties.modifiedDate !== undefined) {\n builtInProperties.modifiedDate = jsonBuiltInProperties.modifiedDate;\n }\n //Tags\n if (jsonBuiltInProperties.tags !== null && jsonBuiltInProperties.tags !== undefined) {\n builtInProperties.tags = jsonBuiltInProperties.tags;\n }\n //Status\n if (jsonBuiltInProperties.status !== null && jsonBuiltInProperties.status !== undefined) {\n builtInProperties.status = jsonBuiltInProperties.status;\n }\n }\n /* tslint:disable:no-any */\n parserWorksheets(json) {\n this.worksheets = new Worksheets();\n let length = json.length;\n for (let i = 0; i < length; i++) {\n let jsonSheet = json[i];\n let sheet = new Worksheet();\n this.mergeCells = new MergeCells();\n this.mergedCellsStyle = new Map();\n this.mHyperLinks = [];\n //Name\n if (jsonSheet.name !== null && jsonSheet.name !== undefined) {\n sheet.name = jsonSheet.name;\n }\n else {\n sheet.name = 'Sheet' + (i + 1).toString();\n }\n sheet.index = (i + 1);\n //Columns\n if (jsonSheet.columns !== null && jsonSheet.columns !== undefined) {\n this.parserColumns(jsonSheet.columns, sheet);\n }\n //Rows\n if (jsonSheet.rows !== null && jsonSheet.rows !== undefined) {\n this.parserRows(jsonSheet.rows, sheet);\n }\n //showGridLines\n if (jsonSheet.showGridLines !== null && jsonSheet.showGridLines !== undefined) {\n sheet.showGridLines = jsonSheet.showGridLines;\n }\n //FreezePanes\n if (jsonSheet.freeze !== null && jsonSheet.freeze !== undefined) {\n this.parserFreezePanes(jsonSheet.freeze, sheet);\n }\n //Print Title\n if (jsonSheet.printTitle !== null && jsonSheet.printTitle !== undefined) {\n this.parserPrintTitle(jsonSheet.printTitle, sheet);\n }\n if (jsonSheet.pageSetup !== undefined) {\n if (jsonSheet.pageSetup.isSummaryRowBelow !== undefined) {\n sheet.isSummaryRowBelow = jsonSheet.pageSetup.isSummaryRowBelow;\n }\n }\n if (jsonSheet.images !== undefined) {\n this.parserImages(jsonSheet.images, sheet);\n }\n sheet.index = (i + 1);\n sheet.mergeCells = this.mergeCells;\n sheet.hyperLinks = this.mHyperLinks;\n this.worksheets.push(sheet);\n }\n }\n /* tslint:disable:no-any */\n mergeOptions(fromJson, toJson) {\n /* tslint:disable:no-any */\n let result = {};\n this.applyProperties(fromJson, result);\n this.applyProperties(toJson, result);\n return result;\n }\n /* tslint:disable:no-any */\n applyProperties(sourceJson, destJson) {\n let keys = Object.keys(sourceJson);\n for (let index = 0; index < keys.length; index++) {\n if (keys[index] !== 'name') {\n destJson[keys[index]] = sourceJson[keys[index]];\n }\n }\n }\n getCellName(row, column) {\n return this.getColumnName(column) + row.toString();\n }\n getColumnName(col) {\n col--;\n let strColumnName = '';\n do {\n let iCurrentDigit = col % 26;\n col = col / 26 - 1;\n strColumnName = String.fromCharCode(65 + iCurrentDigit) + strColumnName;\n } while (col >= 0);\n return strColumnName;\n }\n /* tslint:disable:no-any */\n parserPrintTitle(json, sheet) {\n let printTitleName = '';\n let titleRowName;\n if (json.fromRow !== null && json.fromRow !== undefined) {\n let fromRow = json.fromRow;\n let toRow;\n if (json.toRow !== null && json.toRow !== undefined) {\n toRow = json.toRow;\n }\n else {\n toRow = json.fromRow;\n }\n titleRowName = '$' + fromRow + ':$' + toRow;\n }\n let titleColName;\n if (json.fromColumn !== null && json.fromColumn !== undefined) {\n let fromColumn = json.fromColumn;\n let toColumn;\n if (json.toColumn !== null && json.toColumn !== undefined) {\n toColumn = json.toColumn;\n }\n else {\n toColumn = json.fromColumn;\n }\n titleColName = '$' + this.getColumnName(fromColumn) + ':$' + this.getColumnName(toColumn);\n }\n if (titleRowName !== undefined) {\n printTitleName += (sheet.name + '!' + titleRowName);\n }\n if (titleColName !== undefined && titleRowName !== undefined) {\n printTitleName += ',' + (sheet.name + '!' + titleColName);\n }\n else if (titleColName !== undefined) {\n printTitleName += (sheet.name + '!' + titleColName);\n }\n if (printTitleName !== '') {\n this.printTitles.set(sheet.index - 1, printTitleName);\n }\n }\n /* tslint:disable:no-any */\n parserFreezePanes(json, sheet) {\n sheet.freezePanes = new FreezePane();\n if (json.row !== null && json.row !== undefined) {\n sheet.freezePanes.row = json.row;\n }\n else {\n sheet.freezePanes.row = 0;\n }\n if (json.column !== null && json.column !== undefined) {\n sheet.freezePanes.column = json.column;\n }\n else {\n sheet.freezePanes.column = 0;\n }\n sheet.freezePanes.leftCell = this.getCellName(sheet.freezePanes.row + 1, sheet.freezePanes.column + 1);\n }\n /* tslint:disable:no-any */\n parserColumns(json, sheet) {\n let columnsLength = json.length;\n sheet.columns = [];\n for (let column = 0; column < columnsLength; column++) {\n let col = new Column();\n if (json[column].index !== null && json[column].index !== undefined) {\n col.index = json[column].index;\n }\n else {\n throw Error('Column index is missing.');\n }\n if (json[column].width !== null && json[column].width !== undefined) {\n col.width = json[column].width;\n }\n sheet.columns.push(col);\n }\n }\n /* tslint:disable:no-any */\n parserRows(json, sheet) {\n let rowsLength = json.length;\n sheet.rows = new Rows();\n let rowId = 0;\n for (let r = 0; r < rowsLength; r++) {\n let row = this.parserRow(json[r], rowId);\n rowId = row.index;\n sheet.rows.add(row);\n }\n this.insertMergedCellsStyle(sheet);\n }\n insertMergedCellsStyle(sheet) {\n if (this.mergeCells.length > 0) {\n this.mergedCellsStyle.forEach((value, key) => {\n let row = sheet.rows.filter((item) => {\n return item.index === value.y;\n })[0];\n if (!isNullOrUndefined(row)) {\n let cell = row.cells.filter((item) => {\n return item.index === value.x;\n })[0];\n if (!isNullOrUndefined(cell)) {\n cell.styleIndex = value.styleIndex;\n }\n else {\n let cells = row.cells.filter((item) => {\n return item.index <= value.x;\n });\n let insertIndex = 0;\n if (cells.length > 0) {\n insertIndex = row.cells.indexOf(cells[cells.length - 1]) + 1;\n }\n row.cells.splice(insertIndex, 0, this.createCell(value, key));\n }\n }\n else {\n let rows = sheet.rows.filter((item) => {\n return item.index <= value.y;\n });\n let rowToInsert = new Row();\n rowToInsert.index = value.y;\n rowToInsert.cells = new Cells();\n rowToInsert.cells.add(this.createCell(value, key));\n let insertIndex = 0;\n if (rows.length > 0) {\n insertIndex = sheet.rows.indexOf(rows[rows.length - 1]) + 1;\n }\n sheet.rows.splice(insertIndex, 0, rowToInsert);\n }\n });\n }\n }\n createCell(value, key) {\n let cellToInsert = new Cell();\n cellToInsert.refName = key;\n cellToInsert.index = value.x;\n cellToInsert.cellStyle = new CellStyle();\n cellToInsert.styleIndex = value.styleIndex;\n return cellToInsert;\n }\n /* tslint:disable:no-any */\n parserRow(json, rowIndex) {\n let row = new Row();\n //Row Height\n if (json.height !== null && json.height !== undefined) {\n row.height = json.height;\n }\n //Row index\n if (json.index !== null && json.index !== undefined) {\n row.index = json.index;\n }\n else {\n throw Error('Row index is missing.');\n }\n if (json.grouping !== null && json.grouping !== undefined) {\n this.parseGrouping(json.grouping, row);\n }\n this.parseCells(json.cells, row);\n return row;\n }\n /* tslint:disable:no-any */\n parseGrouping(json, row) {\n row.grouping = new Grouping();\n if (json.outlineLevel !== undefined) {\n row.grouping.outlineLevel = json.outlineLevel;\n }\n if (json.isCollapsed !== undefined) {\n row.grouping.isCollapsed = json.isCollapsed;\n }\n if (json.isHidden !== undefined) {\n row.grouping.isHidden = json.isHidden;\n }\n }\n /* tslint:disable:no-any */\n parseCells(json, row) {\n row.cells = new Cells();\n let cellsLength = json !== undefined ? json.length : 0;\n let spanMin = 1;\n let spanMax = 1;\n for (let cellId = 0; cellId < cellsLength; cellId++) {\n /* tslint:disable:no-any */\n let jsonCell = json[cellId];\n let cell = new Cell();\n //cell index\n if (jsonCell.index !== null && jsonCell.index !== undefined) {\n cell.index = jsonCell.index;\n }\n else {\n throw Error('Cell index is missing.');\n }\n if (cell.index < spanMin) {\n spanMin = cell.index;\n }\n else if (cell.index > spanMax) {\n spanMax = cell.index;\n }\n //Update the Cell name\n cell.refName = this.getCellName(row.index, cell.index);\n //Row span\n if (jsonCell.rowSpan !== null && jsonCell.rowSpan !== undefined) {\n cell.rowSpan = jsonCell.rowSpan - 1;\n }\n else {\n cell.rowSpan = 0;\n }\n //Column span\n if (jsonCell.colSpan !== null && jsonCell.colSpan !== undefined) {\n cell.colSpan = jsonCell.colSpan - 1;\n }\n else {\n cell.colSpan = 0;\n }\n //Hyperlink\n if (jsonCell.hyperlink !== null && jsonCell.hyperlink !== undefined) {\n let hyperLink = new HyperLink();\n if (jsonCell.hyperlink.target !== undefined) {\n hyperLink.target = jsonCell.hyperlink.target;\n if (jsonCell.hyperlink.displayText !== undefined) {\n cell.value = jsonCell.hyperlink.displayText;\n }\n else {\n cell.value = jsonCell.hyperlink.target;\n }\n cell.type = this.getCellValueType(cell.value);\n hyperLink.ref = cell.refName;\n hyperLink.rId = (this.mHyperLinks.length + 1);\n this.mHyperLinks.push(hyperLink);\n cell.cellStyle = new CellStyle();\n /* tslint:disable-next-line:max-line-length */\n this.parserCellStyle((jsonCell.style !== undefined ? this.mergeOptions(jsonCell.style, this.hyperlinkStyle) : this.hyperlinkStyle), cell.cellStyle, 'string');\n cell.styleIndex = cell.cellStyle.index;\n }\n }\n // formulas\n if (jsonCell.formula !== null && jsonCell.formula !== undefined) {\n cell.formula = jsonCell.formula;\n cell.type = 'formula';\n }\n //Cell value\n if (jsonCell.value !== null && jsonCell.value !== undefined) {\n if (cell.formula !== undefined) {\n cell.value = 0;\n }\n else {\n cell.value = jsonCell.value;\n cell.type = this.getCellValueType(cell.value);\n }\n }\n if (jsonCell.style !== null && jsonCell.style !== undefined && cell.styleIndex === undefined) {\n cell.cellStyle = new CellStyle();\n if (cell.value instanceof Date) {\n this.parserCellStyle(jsonCell.style, cell.cellStyle, cell.type, 14);\n }\n else {\n this.parserCellStyle(jsonCell.style, cell.cellStyle, cell.type);\n }\n cell.styleIndex = cell.cellStyle.index;\n }\n else if (cell.value instanceof Date) {\n cell.cellStyle = new CellStyle();\n this.parserCellStyle({}, cell.cellStyle, cell.type, 14);\n cell.styleIndex = cell.cellStyle.index;\n }\n this.parseCellType(cell);\n this.mergeCells = this.processMergeCells(cell, row.index, this.mergeCells);\n row.cells.add(cell);\n \n }\n row.spans = (spanMin) + ':' + (spanMax);\n }\n GetColors() {\n let colors;\n colors = new Map();\n /* tslint:disable */\n colors.set('WHITE', 'FFFFFFFF');\n /* tslint:disable */\n colors.set('SILVER', 'FFC0C0C0');\n /* tslint:disable */\n colors.set('GRAY', 'FF808080');\n /* tslint:disable */\n colors.set('BLACK', 'FF000000');\n /* tslint:disable */\n colors.set('RED', 'FFFF0000');\n /* tslint:disable */\n colors.set('MAROON', 'FF800000');\n /* tslint:disable */\n colors.set('YELLOW', 'FFFFFF00');\n /* tslint:disable */\n colors.set('OLIVE', 'FF808000');\n /* tslint:disable */\n colors.set('LIME', 'FF00FF00');\n /* tslint:disable */\n colors.set('GREEN', 'FF008000');\n /* tslint:disable */\n colors.set('AQUA', 'FF00FFFF');\n /* tslint:disable */\n colors.set('TEAL', 'FF008080');\n /* tslint:disable */\n colors.set('BLUE', 'FF0000FF');\n /* tslint:disable */\n colors.set('NAVY', 'FF000080');\n /* tslint:disable */\n colors.set('FUCHSIA', 'FFFF00FF');\n /* tslint:disable */\n colors.set('PURPLE', 'FF800080');\n return colors;\n }\n processColor(colorVal) {\n if (colorVal.indexOf('#') === 0) {\n return colorVal.replace('#', 'FF');\n }\n colorVal = colorVal.toUpperCase();\n this.rgbColors = this.GetColors();\n if (this.rgbColors.has(colorVal)) {\n colorVal = this.rgbColors.get(colorVal);\n }\n else {\n colorVal = 'FF000000';\n }\n return colorVal;\n }\n processCellValue(value, cell) {\n let cellValue = value;\n if (value.indexOf(\"\") !== -1 ||\n value.indexOf(\"\") !== -1 || value.indexOf(\"\") !== -1) {\n let processedVal = '';\n let startindex = value.indexOf('<', 0);\n let endIndex = value.indexOf('>', startindex + 1);\n if (startindex >= 0 && endIndex >= 0) {\n if (startindex !== 0) {\n processedVal += '' + value.substring(0, startindex) + '';\n }\n while (startindex >= 0 && endIndex >= 0) {\n endIndex = value.indexOf('>', startindex + 1);\n if (endIndex >= 0) {\n let subString = value.substring(startindex + 1, endIndex);\n startindex = value.indexOf('<', endIndex + 1);\n if (startindex < 0) {\n startindex = cellValue.length;\n }\n let text = cellValue.substring(endIndex + 1, startindex);\n if (text.length !== 0) {\n let subSplit = subString.split(' ');\n if (subSplit.length > 0) {\n processedVal += '';\n }\n if (subSplit.length > 1) {\n for (let element of subSplit) {\n let start = element.trim().substring(0, 5);\n switch (start) {\n case 'size=':\n processedVal += '';\n break;\n case 'face=':\n processedVal += '';\n break;\n case 'color':\n processedVal += '';\n break;\n case 'href=':\n let hyperLink = new HyperLink();\n hyperLink.target = element.substring(6, element.length - 1).trim();\n hyperLink.ref = cell.refName;\n hyperLink.rId = (this.mHyperLinks.length + 1);\n this.mHyperLinks.push(hyperLink);\n processedVal += '';\n break;\n }\n }\n }\n else if (subSplit.length === 1) {\n let style = subSplit[0].trim();\n switch (style) {\n case 'b':\n processedVal += '';\n break;\n case 'i':\n processedVal += '';\n break;\n case 'u':\n processedVal += '';\n break;\n }\n }\n processedVal += '' + text + '';\n }\n }\n }\n if (processedVal === '') {\n return cellValue;\n }\n return processedVal;\n }\n else {\n return cellValue;\n }\n }\n else {\n return cellValue;\n }\n }\n applyGlobalStyle(json, cellStyle) {\n if (this.cellStyles.has(json.name)) {\n cellStyle.index = this.mStyles.filter((a) => (a.name === json.name))[0].index;\n cellStyle.name = json.name;\n }\n }\n /* tslint:disable:no-any */\n parserCellStyle(json, cellStyle, cellType, defStyleIndex) {\n //name\n if (json.name !== null && json.name !== undefined) {\n if (cellStyle.isGlobalStyle) {\n cellStyle.name = json.name;\n }\n else {\n this.applyGlobalStyle(json, cellStyle);\n return;\n }\n }\n //background color\n if (json.backColor !== null && json.backColor !== undefined) {\n cellStyle.backColor = json.backColor;\n }\n //borders\n //leftBorder\n cellStyle.borders = new Borders();\n //AllBorder\n if (json.borders !== null && json.borders !== undefined) {\n this.parserBorder(json.borders, cellStyle.borders.all);\n }\n //leftborder\n if (json.leftBorder !== null && json.leftBorder !== undefined) {\n this.parserBorder(json.leftBorder, cellStyle.borders.left);\n }\n //rightBorder\n if (json.rightBorder !== null && json.rightBorder !== undefined) {\n this.parserBorder(json.rightBorder, cellStyle.borders.right);\n }\n //topBorder\n if (json.topBorder !== null && json.topBorder !== undefined) {\n this.parserBorder(json.topBorder, cellStyle.borders.top);\n }\n //bottomBorder\n if (json.bottomBorder !== null && json.bottomBorder !== undefined) {\n this.parserBorder(json.bottomBorder, cellStyle.borders.bottom);\n }\n //fontName\n if (json.fontName !== null && json.fontName !== undefined) {\n cellStyle.fontName = json.fontName;\n }\n //fontSize\n if (json.fontSize !== null && json.fontSize !== undefined) {\n cellStyle.fontSize = json.fontSize;\n }\n //fontColor\n if (json.fontColor !== null && json.fontColor !== undefined) {\n cellStyle.fontColor = json.fontColor;\n }\n //italic\n if (json.italic !== null && json.italic !== undefined) {\n cellStyle.italic = json.italic;\n }\n //bold\n if (json.bold !== null && json.bold !== undefined) {\n cellStyle.bold = json.bold;\n }\n //hAlign\n if (json.hAlign !== null && json.hAlign !== undefined) {\n cellStyle.hAlign = json.hAlign.toLowerCase();\n }\n //indent\n if (json.indent !== null && json.indent !== undefined) {\n cellStyle.indent = json.indent;\n if (!(cellStyle.hAlign === 'left' || cellStyle.hAlign === 'right')) {\n cellStyle.hAlign = 'left';\n }\n }\n if (json.rotation !== null && json.rotation !== undefined) {\n cellStyle.rotation = json.rotation;\n }\n //vAlign\n if (json.vAlign !== null && json.vAlign !== undefined) {\n cellStyle.vAlign = json.vAlign.toLowerCase();\n }\n //underline\n if (json.underline !== null && json.underline !== undefined) {\n cellStyle.underline = json.underline;\n }\n //wrapText\n if (json.wrapText !== null && json.wrapText !== undefined) {\n cellStyle.wrapText = json.wrapText;\n }\n //numberFormat\n if (json.numberFormat !== null && json.numberFormat !== undefined) {\n if (json.type !== null && json.type !== undefined) {\n cellStyle.numberFormat = this.getNumberFormat(json.numberFormat, json.type);\n }\n else {\n cellStyle.numberFormat = this.getNumberFormat(json.numberFormat, cellType);\n }\n }\n else if (defStyleIndex !== undefined) {\n cellStyle.numFmtId = 14;\n cellStyle.numberFormat = 'GENERAL';\n }\n else {\n cellStyle.numberFormat = 'GENERAL';\n }\n cellStyle.index = this.processCellStyle(cellStyle);\n }\n switchNumberFormat(numberFormat, type) {\n let format = this.getNumberFormat(numberFormat, type);\n if (format !== numberFormat) {\n let numFmt = this.mNumFmt.get(numberFormat);\n if (numFmt !== undefined) {\n numFmt.formatCode = format;\n if (this.mNumFmt.has(format)) {\n for (let cellStyleXfs of this.mCellStyleXfs) {\n if (cellStyleXfs.numFmtId === numFmt.numFmtId) {\n cellStyleXfs.numFmtId = this.mNumFmt.get(format).numFmtId;\n }\n }\n for (let cellXfs of this.mCellXfs) {\n if (cellXfs.numFmtId === numFmt.numFmtId) {\n cellXfs.numFmtId = this.mNumFmt.get(format).numFmtId;\n }\n }\n }\n }\n }\n }\n getNumberFormat(numberFormat, type) {\n let returnFormat;\n switch (type) {\n case 'number':\n try {\n returnFormat = this.intl.getNumberPattern({ format: numberFormat, currency: this.currency, useGrouping: true }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n break;\n case 'datetime':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'dateTime' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'dateTime' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n case 'date':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'date' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'date' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n case 'time':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'time' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'time' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n default:\n returnFormat = numberFormat;\n break;\n }\n return returnFormat;\n }\n /* tslint:disable:no-any */\n parserBorder(json, border) {\n if (json.color !== null && json.color !== undefined) {\n border.color = json.color;\n }\n else {\n border.color = '#000000';\n }\n if (json.lineStyle !== null && json.lineStyle !== undefined) {\n border.lineStyle = json.lineStyle;\n }\n else {\n border.lineStyle = 'thin';\n }\n }\n processCellStyle(style) {\n if (style.isGlobalStyle) {\n this.processNumFormatId(style);\n this.mStyles.push(style);\n return this.mStyles.length;\n }\n else {\n let compareResult = this.compareStyle(style);\n if (!compareResult.result) {\n this.processNumFormatId(style);\n this.mStyles.push(style);\n return this.mStyles.length;\n }\n else {\n //Return the index of the already existing style.\n return compareResult.index;\n }\n }\n }\n processNumFormatId(style) {\n if (style.numberFormat !== 'GENERAL' && !this.mNumFmt.has(style.numberFormat)) {\n let id = this.mNumFmt.size + 164;\n this.mNumFmt.set(style.numberFormat, new NumFmt(id, style.numberFormat));\n }\n }\n isNewFont(toCompareStyle) {\n let result = false;\n let index = 0;\n for (let font of this.mFonts) {\n index++;\n let fontColor = undefined;\n if (toCompareStyle.fontColor !== undefined) {\n fontColor = ('FF' + toCompareStyle.fontColor.replace('#', ''));\n }\n result = font.color === fontColor &&\n font.b === toCompareStyle.bold &&\n font.i === toCompareStyle.italic &&\n font.u === toCompareStyle.underline &&\n font.name === toCompareStyle.fontName &&\n font.sz === toCompareStyle.fontSize;\n if (result) {\n break;\n }\n }\n index = index - 1;\n return { index, result };\n }\n isNewBorder(toCompareStyle) {\n let bStyle = new CellStyle();\n if (this.isAllBorder(toCompareStyle.borders)) {\n return (bStyle.borders.all.color === toCompareStyle.borders.all.color &&\n bStyle.borders.all.lineStyle === toCompareStyle.borders.all.lineStyle);\n }\n else {\n return (bStyle.borders.left.color === toCompareStyle.borders.left.color &&\n bStyle.borders.left.lineStyle === toCompareStyle.borders.left.lineStyle &&\n bStyle.borders.right.color === toCompareStyle.borders.right.color &&\n bStyle.borders.right.lineStyle === toCompareStyle.borders.right.lineStyle &&\n bStyle.borders.top.color === toCompareStyle.borders.top.color &&\n bStyle.borders.top.lineStyle === toCompareStyle.borders.top.lineStyle &&\n bStyle.borders.bottom.color === toCompareStyle.borders.bottom.color &&\n bStyle.borders.bottom.lineStyle === toCompareStyle.borders.bottom.lineStyle);\n }\n }\n isAllBorder(toCompareBorder) {\n let allBorderStyle = new CellStyle();\n return allBorderStyle.borders.all.color !== toCompareBorder.all.color &&\n allBorderStyle.borders.all.lineStyle !== toCompareBorder.all.lineStyle;\n }\n compareStyle(toCompareStyle) {\n let result = true;\n let index = 0;\n for (let baseStyle of this.mStyles) {\n result = baseStyle.isGlobalStyle ? false : (baseStyle.backColor === toCompareStyle.backColor &&\n baseStyle.bold === toCompareStyle.bold &&\n baseStyle.numFmtId === toCompareStyle.numFmtId &&\n baseStyle.numberFormat === toCompareStyle.numberFormat &&\n baseStyle.type === toCompareStyle.type &&\n baseStyle.fontColor === toCompareStyle.fontColor &&\n baseStyle.fontName === toCompareStyle.fontName &&\n baseStyle.fontSize === toCompareStyle.fontSize &&\n baseStyle.hAlign === toCompareStyle.hAlign &&\n baseStyle.italic === toCompareStyle.italic &&\n baseStyle.underline === toCompareStyle.underline &&\n baseStyle.vAlign === toCompareStyle.vAlign &&\n baseStyle.indent === toCompareStyle.indent &&\n baseStyle.rotation === toCompareStyle.rotation &&\n baseStyle.wrapText === toCompareStyle.wrapText &&\n (baseStyle.borders.all.color === toCompareStyle.borders.all.color &&\n baseStyle.borders.all.lineStyle === toCompareStyle.borders.all.lineStyle) &&\n (baseStyle.borders.left.color === toCompareStyle.borders.left.color &&\n baseStyle.borders.left.lineStyle === toCompareStyle.borders.left.lineStyle &&\n baseStyle.borders.right.color === toCompareStyle.borders.right.color &&\n baseStyle.borders.right.lineStyle === toCompareStyle.borders.right.lineStyle &&\n baseStyle.borders.top.color === toCompareStyle.borders.top.color &&\n baseStyle.borders.top.lineStyle === toCompareStyle.borders.top.lineStyle &&\n baseStyle.borders.bottom.color === toCompareStyle.borders.bottom.color &&\n baseStyle.borders.bottom.lineStyle === toCompareStyle.borders.bottom.lineStyle));\n if (result) {\n index = baseStyle.index;\n break;\n }\n }\n return { index, result };\n }\n contains(array, item) {\n let index = array.indexOf(item);\n return index > -1 && index < array.length;\n }\n getCellValueType(value) {\n if (value instanceof Date) {\n return 'datetime';\n }\n else if (typeof (value) === 'boolean') {\n return 'boolean';\n }\n else if (typeof (value) === 'number') {\n return 'number';\n }\n else {\n return 'string';\n }\n }\n parseCellType(cell) {\n let type = cell.type;\n let saveType;\n let value = cell.value;\n switch (type) {\n case 'datetime':\n value = this.toOADate(value);\n if (cell.cellStyle !== undefined && cell.cellStyle.name !== undefined) {\n if (this.globalStyles.has(cell.cellStyle.name)) {\n let value = this.globalStyles.get(cell.cellStyle.name);\n this.switchNumberFormat(value.format, value.type);\n }\n }\n saveType = 'n';\n break;\n //TODO: Update the number format index and style\n case 'boolean':\n value = value ? 1 : 0;\n saveType = 'b';\n break;\n case 'number':\n saveType = 'n';\n if (cell.cellStyle !== undefined && cell.cellStyle.name !== undefined) {\n if (this.globalStyles.has(cell.cellStyle.name)) {\n this.switchNumberFormat(this.globalStyles.get(cell.cellStyle.name).format, 'number');\n }\n }\n break;\n case 'string':\n this.sharedStringCount++;\n saveType = 's';\n let sstvalue = this.processCellValue(value, cell);\n if (!this.contains(this.sharedString, sstvalue)) {\n this.sharedString.push(sstvalue);\n }\n value = this.sharedString.indexOf(sstvalue);\n break;\n default:\n break;\n }\n cell.saveType = saveType;\n cell.value = value;\n }\n parserImages(json, sheet) {\n let imagesLength = json.length;\n sheet.images = [];\n for (let p = 0; p < imagesLength; p++) {\n let image = this.parserImage(json[p]);\n sheet.images.push(image);\n }\n }\n parserImage(json) {\n let image = new Image();\n if (json.image !== null && json.image !== undefined) {\n image.image = json.image;\n }\n if (json.row !== null && json.row !== undefined) {\n image.row = json.row;\n }\n if (json.column !== null && json.column !== undefined) {\n image.column = json.column;\n }\n if (json.lastRow !== null && json.lastRow !== undefined) {\n image.lastRow = json.lastRow;\n }\n if (json.lastColumn !== null && json.lastColumn !== undefined) {\n image.lastColumn = json.lastColumn;\n }\n if (json.width !== null && json.width !== undefined) {\n image.width = json.width;\n }\n if (json.height !== null && json.height !== undefined) {\n image.height = json.height;\n }\n if (json.horizontalFlip !== null && json.horizontalFlip !== undefined) {\n image.horizontalFlip = json.horizontalFlip;\n }\n if (json.verticalFlip !== null && json.verticalFlip !== undefined) {\n image.verticalFlip = json.verticalFlip;\n }\n if (json.rotation !== null && json.rotation !== undefined) {\n image.rotation = json.rotation;\n }\n return image;\n }\n saveAsBlob(blobSaveType) {\n switch (blobSaveType) {\n case 'text/csv':\n return new Promise((resolve, reject) => {\n let obj = {};\n obj.blobData = this.csvHelper.saveAsBlob();\n resolve(obj);\n });\n default:\n return new Promise((resolve, reject) => {\n this.saveInternal();\n this.mArchive.saveAsBlob().then((blob) => {\n let obj = {};\n obj.blobData = new Blob([blob], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });\n resolve(obj);\n });\n });\n }\n }\n save(fileName, proxyUrl) {\n if (fileName === null || fileName === undefined || fileName === '') {\n throw new Error('Argument Null Exception: fileName cannot be null or empty');\n }\n let xlsxMatch = fileName.match('.xlsx$');\n let csvMatch = fileName.match('.csv$');\n if (xlsxMatch !== null && xlsxMatch[0] === ('.' + this.mSaveType)) {\n this.saveInternal();\n this.mArchive.save(fileName).then(() => {\n this.mArchive.destroy();\n });\n }\n else if (csvMatch !== null && csvMatch[0] === ('.' + this.mSaveType)) {\n this.csvHelper.save(fileName);\n }\n else {\n throw Error('Save type and file extension is different.');\n }\n }\n saveInternal() {\n this.saveWorkbook();\n this.saveWorksheets();\n this.saveSharedString();\n this.saveStyles();\n this.saveApp(this.builtInProperties);\n this.saveCore(this.builtInProperties);\n this.saveContentType();\n this.saveTopLevelRelation();\n this.saveWorkbookRelation();\n }\n saveWorkbook() {\n /* tslint:disable-next-line:max-line-length */\n let workbookTemp = '';\n let sheets = '';\n let length = this.worksheets.length;\n for (let i = 0; i < length; i++) {\n /* tslint:disable-next-line:max-line-length */\n sheets += '';\n }\n sheets += '';\n workbookTemp += sheets;\n if (this.printTitles.size > 0) {\n let printTitle = '';\n this.printTitles.forEach((value, key) => {\n printTitle += '' + value + '';\n });\n printTitle += '';\n workbookTemp += printTitle;\n }\n this.addToArchive(workbookTemp + '', 'xl/workbook.xml');\n }\n saveWorksheets() {\n let length = this.worksheets.length;\n for (let i = 0; i < length; i++) {\n this.saveWorksheet(this.worksheets[i], i);\n }\n }\n saveWorksheet(sheet, index) {\n let sheetBlob = new BlobHelper();\n /* tslint:disable-next-line:max-line-length */\n let sheetString = '';\n if (!sheet.isSummaryRowBelow) {\n sheetString += ('' + '' + '' + '');\n }\n else {\n sheetString += ('');\n }\n sheetString += this.saveSheetView(sheet);\n if (sheet.columns !== undefined) {\n let colString = '';\n for (let column of sheet.columns) {\n /* tslint:disable-next-line:max-line-length */\n if (column.width !== undefined) {\n colString += '';\n }\n else {\n colString += '';\n }\n }\n sheetString += (colString + '');\n }\n sheetString += ('');\n sheetBlob.append(sheetString);\n sheetString = '';\n if (sheet.rows !== undefined) {\n for (let row of sheet.rows) {\n let rowString = '');\n for (let cell of row.cells) {\n if (cell !== undefined && (cell.value !== undefined || cell.cellStyle !== undefined)) {\n rowString += ('');\n if (cell.formula !== undefined) {\n rowString += ('' + cell.formula + '');\n }\n if (cell.value !== undefined) {\n rowString += ('' + cell.value + '');\n }\n else {\n rowString += ('');\n }\n }\n }\n rowString += ('');\n sheetBlob.append(rowString);\n }\n }\n sheetString += ('');\n if (sheet.mergeCells.length > 0) {\n sheetString += ('');\n for (let mCell of sheet.mergeCells) {\n sheetString += ('');\n }\n sheetString += ('');\n }\n if (sheet.hyperLinks.length > 0) {\n sheetString += ('');\n for (let hLink of sheet.hyperLinks) {\n sheetString += ('');\n }\n sheetString += ('');\n }\n /* tslint:disable-next-line:max-line-length */\n sheetString += ('');\n if (sheet.images != undefined && sheet.images.length > 0) {\n this.drawingCount++;\n this.saveDrawings(sheet, sheet.index);\n sheetString += '';\n }\n this.addToArchive(this.saveSheetRelations(sheet), ('xl/worksheets/_rels/sheet' + sheet.index + '.xml.rels'));\n sheetBlob.append(sheetString + '');\n this.addToArchive(sheetBlob.getBlob(), 'xl/worksheets' + '/sheet' + (index + 1) + '.xml');\n }\n saveDrawings(sheet, index) {\n let drawings = new BlobHelper();\n /* tslint:disable-next-line:max-line-length */\n let sheetDrawingString = '';\n if (sheet.images !== undefined) {\n let imgId = 0;\n for (let pic of sheet.images) {\n if (pic.height !== undefined && pic.width !== undefined) {\n this.updatelastRowOffset(sheet, pic);\n this.updatelastColumnOffSet(sheet, pic);\n }\n else if (pic.lastRow !== undefined && pic.lastColumn !== undefined) {\n pic.lastRowOffset = 0;\n pic.lastColOffset = 0;\n }\n imgId++;\n sheetDrawingString += '';\n sheetDrawingString += '';\n //col\n sheetDrawingString += pic.column - 1;\n sheetDrawingString += '';\n //colOff\n sheetDrawingString += 0;\n sheetDrawingString += '';\n //row\n sheetDrawingString += pic.row - 1;\n sheetDrawingString += '';\n //rowOff\n sheetDrawingString += 0;\n sheetDrawingString += '';\n sheetDrawingString += '';\n //col\n sheetDrawingString += pic.lastColumn;\n sheetDrawingString += '';\n //colOff\n sheetDrawingString += pic.lastColOffset;\n sheetDrawingString += '';\n //row\n sheetDrawingString += pic.lastRow;\n sheetDrawingString += '';\n //rowOff\n sheetDrawingString += pic.lastRowOffset;\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += ' ';\n sheetDrawingString += ' ';\n sheetDrawingString += '';\n /* tslint:disable-next-line:max-line-length */\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '= -3600) {\n sheetDrawingString += ' rot=\"' + (pic.rotation * 60000) + '\"';\n }\n if (pic.verticalFlip != undefined && pic.verticalFlip != false) {\n sheetDrawingString += ' flipV=\"1\"';\n }\n if (pic.horizontalFlip != undefined && pic.horizontalFlip != false) {\n sheetDrawingString += ' flipH=\"1\"';\n }\n sheetDrawingString += '/>';\n sheetDrawingString += '';\n sheetDrawingString += '';\n let imageData = this.convertBase64toImage(pic.image);\n this.imageCount += 1;\n this.addToArchive(imageData, 'xl/media/image' + this.imageCount + '.png');\n }\n drawings.append(sheetDrawingString);\n drawings.append('');\n this.saveDrawingRelations(sheet);\n this.addToArchive(drawings.getBlob(), 'xl/drawings/drawing' + this.drawingCount + '.xml');\n }\n }\n updatelastRowOffset(sheet, picture) {\n let iCurHeight = picture.height;\n let iCurRow = picture.row;\n let iCurOffset = 0;\n while (iCurHeight >= 0) {\n let iRowHeight = 0;\n if (sheet.rows !== undefined && sheet.rows[iCurRow - 1] !== undefined)\n iRowHeight = this.convertToPixels(sheet.rows[iCurRow - 1].height === undefined ? 15 : sheet.rows[iCurRow - 1].height);\n else\n iRowHeight = this.convertToPixels(15);\n let iSpaceInCell = iRowHeight - (iCurOffset * iRowHeight / 256);\n if (iSpaceInCell > iCurHeight) {\n picture.lastRow = iCurRow;\n picture.lastRowOffset = iCurOffset + (iCurHeight * 256 / iRowHeight);\n let rowHiddenHeight = 0;\n if (sheet.rows !== undefined && sheet.rows[iCurRow - 1] !== undefined)\n rowHiddenHeight = this.convertToPixels(sheet.rows[iCurRow - 1].height === undefined ? 15 : sheet.rows[iCurRow - 1].height);\n else\n rowHiddenHeight = this.convertToPixels(15);\n picture.lastRowOffset = (rowHiddenHeight * picture.lastRowOffset) / 256;\n picture.lastRowOffset = Math.round(picture.lastRowOffset / this.unitsProportions[7]);\n break;\n }\n else {\n iCurHeight -= iSpaceInCell;\n iCurRow++;\n iCurOffset = 0;\n }\n }\n }\n updatelastColumnOffSet(sheet, picture) {\n let iCurWidth = picture.width;\n let iCurCol = picture.column;\n let iCurOffset = 0;\n while (iCurWidth >= 0) {\n let iColWidth = 0;\n if (sheet.columns !== undefined && sheet.columns[iCurCol - 1] !== undefined)\n iColWidth = this.ColumnWidthToPixels(sheet.columns[iCurCol - 1].width === undefined ? 8.43 : sheet.columns[iCurCol - 1].width);\n else\n iColWidth = this.ColumnWidthToPixels(8.43);\n let iSpaceInCell = iColWidth - (iCurOffset * iColWidth / 1024);\n if (iSpaceInCell > iCurWidth) {\n picture.lastColumn = iCurCol;\n picture.lastColOffset = iCurOffset + (iCurWidth * 1024 / iColWidth);\n let colHiddenWidth = 0;\n if (sheet.columns !== undefined && sheet.columns[iCurCol - 1] !== undefined)\n colHiddenWidth = this.ColumnWidthToPixels(sheet.columns[iCurCol - 1].width === undefined ? 8.43 : sheet.columns[iCurCol].width);\n else\n colHiddenWidth = this.ColumnWidthToPixels(8.43);\n picture.lastColOffset = (colHiddenWidth * picture.lastColOffset) / 1024;\n picture.lastColOffset = Math.round(picture.lastColOffset / this.unitsProportions[7]);\n break;\n }\n else {\n iCurWidth -= iSpaceInCell;\n iCurCol++;\n iCurOffset = 0;\n }\n }\n }\n convertToPixels(value) {\n return value * this.unitsProportions[6];\n }\n convertBase64toImage(img) {\n const byteStr = window.atob(img);\n const buffer = new ArrayBuffer(byteStr.length);\n const data = new Uint8Array(buffer);\n for (let i = 0; i < byteStr.length; i++) {\n data[i] = byteStr.charCodeAt(i);\n }\n const blob = new Blob([data], { type: 'image/png' });\n return blob;\n }\n saveDrawingRelations(sheet) {\n /* tslint:disable-next-line:max-line-length */\n let drawingRelation = '';\n let length = sheet.images.length;\n let id = this.imageCount - sheet.images.length;\n for (let i = 1; i <= length; i++) {\n id++;\n /* tslint:disable-next-line:max-line-length */\n drawingRelation += '';\n }\n this.addToArchive((drawingRelation + ''), 'xl/drawings/_rels/drawing' + this.drawingCount + '.xml.rels');\n }\n pixelsToColumnWidth(pixels) {\n let dDigitWidth = 7;\n let val = (pixels > dDigitWidth + 5) ?\n this.trunc((pixels - 5) / dDigitWidth * 100 + 0.5) / 100 :\n pixels / (dDigitWidth + 5);\n return (val > 1) ?\n ((val * dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0 :\n (val * (dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0;\n }\n ColumnWidthToPixels(val) {\n let dDigitWidth = 7;\n let fileWidth = (val > 1) ?\n ((val * dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0 :\n (val * (dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0;\n return this.trunc(((256 * fileWidth + this.trunc(128 / dDigitWidth)) / 256) * dDigitWidth);\n }\n trunc(x) {\n let n = x - x % 1;\n return n === 0 && (x < 0 || (x === 0 && (1 / x !== 1 / 0))) ? -0 : n;\n }\n pixelsToRowHeight(pixels) {\n return (pixels * this.unitsProportions[5] / this.unitsProportions[6]);\n }\n saveSheetRelations(sheet) {\n /* tslint:disable-next-line:max-line-length */\n let relStr = '';\n for (let hLink of sheet.hyperLinks) {\n /* tslint:disable-next-line:max-line-length */\n relStr += '';\n }\n if (sheet.images != undefined && sheet.images.length > 0) {\n /* tslint:disable-next-line:max-line-length */\n relStr += '';\n }\n relStr += '';\n return relStr;\n }\n saveSheetView(sheet) {\n let paneString = ' 0) {\n /* tslint:disable-next-line:max-line-length */\n let sstStart = '';\n let si = '';\n for (let i = 0; i < length; i++) {\n if (this.sharedString[i].indexOf('') !== 0) {\n si += '';\n si += this.processString(this.sharedString[i]);\n si += '';\n }\n else {\n si += '';\n si += this.sharedString[i];\n si += '';\n }\n }\n si += '';\n this.addToArchive(sstStart + si, 'xl/sharedStrings.xml');\n }\n }\n processString(value) {\n if (value.indexOf('&') !== -1) {\n value = value.replace(/&/g, '&');\n }\n if (value.indexOf('<') !== -1) {\n value = value.replace(/') !== -1) {\n value = value.replace(/>/g, '>');\n }\n return value;\n }\n saveStyles() {\n this.updateCellXfsStyleXfs();\n /* tslint:disable-next-line:max-line-length */\n let styleTemp = '';\n styleTemp += this.saveNumberFormats();\n styleTemp += this.saveFonts();\n styleTemp += this.saveFills();\n styleTemp += this.saveBorders();\n styleTemp += this.saveCellStyleXfs();\n styleTemp += this.saveCellXfs();\n styleTemp += this.saveCellStyles();\n this.addToArchive(styleTemp + '', 'xl/styles.xml');\n }\n updateCellXfsStyleXfs() {\n for (let style of this.mStyles) {\n let cellXfs = undefined;\n if (style.isGlobalStyle) {\n cellXfs = new CellStyleXfs();\n cellXfs.xfId = (style.index - 1);\n }\n else {\n cellXfs = new CellXfs();\n cellXfs.xfId = 0;\n }\n //Add font\n let compareFontResult = this.isNewFont(style);\n if (!compareFontResult.result) {\n let font = new Font();\n font.b = style.bold;\n font.i = style.italic;\n font.name = style.fontName;\n font.sz = style.fontSize;\n font.u = style.underline;\n font.color = ('FF' + style.fontColor.replace('#', ''));\n this.mFonts.push(font);\n cellXfs.fontId = this.mFonts.length - 1;\n }\n else {\n cellXfs.fontId = compareFontResult.index;\n }\n //Add fill\n if (style.backColor !== 'none') {\n let backColor = 'FF' + style.backColor.replace('#', '');\n if (this.mFills.has(backColor)) {\n let fillId = this.mFills.get(backColor);\n cellXfs.fillId = fillId;\n }\n else {\n let fillId = this.mFills.size + 2;\n this.mFills.set(backColor, fillId);\n cellXfs.fillId = (fillId);\n }\n }\n else {\n cellXfs.fillId = 0;\n }\n //Add border \n if (!this.isNewBorder(style)) {\n this.mBorders.push(style.borders);\n cellXfs.borderId = this.mBorders.length;\n }\n else {\n cellXfs.borderId = 0;\n }\n //Add Number Format \n if (style.numberFormat !== 'GENERAL') {\n if (this.mNumFmt.has(style.numberFormat)) {\n let numFmt = this.mNumFmt.get(style.numberFormat);\n cellXfs.numFmtId = numFmt.numFmtId;\n }\n else {\n let id = this.mNumFmt.size + 164;\n this.mNumFmt.set(style.numberFormat, new NumFmt(id, style.numberFormat));\n cellXfs.numFmtId = id;\n }\n }\n else {\n if (style.numberFormat === 'GENERAL' && style.numFmtId === 14) {\n cellXfs.numFmtId = 14;\n }\n else {\n cellXfs.numFmtId = 0;\n }\n }\n //Add alignment \n if (!style.isGlobalStyle) {\n cellXfs.applyAlignment = 1;\n }\n cellXfs.alignment = new Alignment();\n cellXfs.alignment.indent = style.indent;\n cellXfs.alignment.horizontal = style.hAlign;\n cellXfs.alignment.vertical = style.vAlign;\n cellXfs.alignment.wrapText = style.wrapText ? 1 : 0;\n cellXfs.alignment.rotation = style.rotation;\n if (style.isGlobalStyle) {\n this.mCellStyleXfs.push(cellXfs);\n this.mCellXfs.push(cellXfs);\n }\n else {\n //Add cellxfs\n this.mCellXfs.push(cellXfs);\n }\n }\n }\n saveNumberFormats() {\n if (this.mNumFmt.size >= 1) {\n let numFmtStyle = '';\n this.mNumFmt.forEach((value, key) => {\n numFmtStyle += '';\n });\n return (numFmtStyle += '');\n }\n else {\n return '';\n }\n }\n saveFonts() {\n /* tslint:disable-next-line:max-line-length */\n let fontStyle = '';\n if (this.mFonts.length >= 1) {\n for (let font of this.mFonts) {\n fontStyle += '';\n if (font.b) {\n fontStyle += '';\n }\n if (font.i) {\n fontStyle += '';\n }\n if (font.u) {\n fontStyle += '';\n }\n fontStyle += '';\n fontStyle += '';\n fontStyle += '';\n }\n }\n return fontStyle + '';\n }\n saveFills() {\n /* tslint:disable-next-line:max-line-length */\n let fillsStyle = '';\n if (this.mFills.size >= 1) {\n this.mFills.forEach((value, key) => {\n /* tslint:disable-next-line:max-line-length */\n fillsStyle += '';\n });\n }\n return fillsStyle + '';\n }\n saveBorders() {\n /* tslint:disable-next-line:max-line-length */\n let bordersStyle = '';\n if (this.mBorders.length >= 1) {\n for (let borders of this.mBorders) {\n if (this.isAllBorder(borders)) {\n let color = borders.all.color.replace('#', '');\n let lineStyle = borders.all.lineStyle;\n /* tslint:disable-next-line:max-line-length */\n bordersStyle += '';\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n bordersStyle += '';\n }\n }\n }\n return bordersStyle + '';\n }\n saveCellStyles() {\n let cellStyleString = '';\n this.cellStyles.forEach((value, key) => {\n cellStyleString += '';\n if (this.mCellStyleXfs.length >= 1) {\n for (let cellStyleXf of this.mCellStyleXfs) {\n /* tslint:disable-next-line:max-line-length */\n cellXfsStyle += '';\n }\n else {\n cellXfsStyle += ' />';\n }\n }\n }\n return cellXfsStyle + '';\n }\n saveCellXfs() {\n /* tslint:disable-next-line:max-line-length */\n let cellXfsStyle = '';\n if (this.mCellXfs.length >= 1) {\n for (let cellXf of this.mCellXfs) {\n /* tslint:disable-next-line:max-line-length */\n cellXfsStyle += '';\n }\n }\n return cellXfsStyle + '';\n }\n saveAlignment(cellXf) {\n let alignString = '';\n return alignString;\n }\n saveApp(builtInProperties) {\n /* tslint:disable-next-line:max-line-length */\n let appString = 'Essential XlsIO';\n if (builtInProperties !== undefined) {\n if (builtInProperties.manager !== undefined) {\n appString += '' + builtInProperties.manager + '';\n }\n if (builtInProperties.company !== undefined) {\n appString += '' + builtInProperties.company + '';\n }\n }\n this.addToArchive((appString + ''), 'docProps/app.xml');\n }\n saveCore(builtInProperties) {\n let createdDate = new Date();\n /* tslint:disable-next-line:max-line-length */\n let coreString = '';\n if (this.builtInProperties !== undefined) {\n if (builtInProperties.author !== undefined) {\n coreString += '' + builtInProperties.author + '';\n }\n if (builtInProperties.subject !== undefined) {\n coreString += '' + builtInProperties.subject + '';\n }\n if (builtInProperties.category !== undefined) {\n coreString += '' + builtInProperties.category + '';\n }\n if (builtInProperties.comments !== undefined) {\n coreString += '' + builtInProperties.comments + '';\n }\n if (builtInProperties.title !== undefined) {\n coreString += '' + builtInProperties.title + '';\n }\n if (builtInProperties.tags !== undefined) {\n coreString += '' + builtInProperties.tags + '';\n }\n if (builtInProperties.status !== undefined) {\n coreString += '' + builtInProperties.status + '';\n }\n if (builtInProperties.createdDate !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n coreString += '' + builtInProperties.createdDate.toISOString() + '';\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n }\n if (builtInProperties.modifiedDate !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n coreString += '' + builtInProperties.modifiedDate.toISOString() + '';\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n }\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n coreString += '' + createdDate.toISOString() + '';\n }\n /* tslint:disable-next-line:max-line-length */\n coreString += '';\n this.addToArchive(coreString, 'docProps/core.xml');\n }\n saveTopLevelRelation() {\n /* tslint:disable-next-line:max-line-length */\n let topRelation = '';\n this.addToArchive(topRelation, '_rels/.rels');\n }\n saveWorkbookRelation() {\n /* tslint:disable-next-line:max-line-length */\n let wbRelation = '';\n let length = this.worksheets.length;\n let count = 0;\n for (let i = 0; i < length; i++, count++) {\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n }\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n if (this.sharedStringCount > 0) {\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n }\n this.addToArchive((wbRelation + ''), 'xl/_rels/workbook.xml.rels');\n }\n saveContentType() {\n /* tslint:disable-next-line:max-line-length */\n let contentTypeString = '';\n let sheetsOverride = '';\n let length = this.worksheets.length;\n for (let i = 0; i < length; i++) {\n /* tslint:disable-next-line:max-line-length */\n sheetsOverride += '';\n if (this.worksheets[i].images != undefined && this.worksheets[i].images.length > 0) {\n /* tslint:disable-next-line:max-line-length */\n sheetsOverride += '';\n }\n }\n if (this.imageCount > 0)\n sheetsOverride += '';\n if (this.sharedStringCount > 0) {\n /* tslint:disable-next-line:max-line-length */\n contentTypeString += '';\n }\n this.addToArchive((contentTypeString + sheetsOverride + ''), '[Content_Types].xml');\n }\n addToArchive(xmlString, itemName) {\n if (typeof (xmlString) === 'string') {\n let blob = new Blob([xmlString], { type: 'text/plain' });\n let archiveItem = new ZipArchiveItem(blob, itemName);\n this.mArchive.addItem(archiveItem);\n }\n else {\n let archiveItem = new ZipArchiveItem(xmlString, itemName);\n this.mArchive.addItem(archiveItem);\n }\n }\n processMergeCells(cell, rowIndex, mergeCells) {\n if (cell.rowSpan !== 0 || cell.colSpan !== 0) {\n let mCell = new MergeCell();\n mCell.x = cell.index;\n mCell.width = cell.colSpan;\n mCell.y = rowIndex;\n mCell.height = cell.rowSpan;\n let startCell = this.getCellName(mCell.y, mCell.x);\n let endCell = this.getCellName(rowIndex + mCell.height, cell.index + mCell.width);\n mCell.ref = startCell + ':' + endCell;\n let mergedCell = mergeCells.add(mCell);\n let start = { x: mCell.x, y: mCell.y };\n let end = {\n x: (cell.index + mCell.width), y: (rowIndex + mCell.height)\n };\n this.updatedMergedCellStyles(start, end, cell);\n }\n return mergeCells;\n }\n updatedMergedCellStyles(sCell, eCell, cell) {\n for (let x = sCell.x; x <= eCell.x; x++) {\n for (let y = sCell.y; y <= eCell.y; y++) {\n this.mergedCellsStyle.set(this.getCellName(y, x), { x: x, y: y, styleIndex: cell.styleIndex });\n }\n }\n }\n /**\n * Returns the tick count corresponding to the given year, month, and day.\n * @param year number value of year\n * @param month number value of month\n * @param day number value of day\n */\n dateToTicks(year, month, day) {\n let ticksPerDay = 10000 * 1000 * 60 * 60 * 24;\n let daysToMonth365 = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];\n let daysToMonth366 = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366];\n if (year >= 1 && year <= 9999 && month >= 1 && month <= 12) {\n let days = this.isLeapYear(year) ? daysToMonth366 : daysToMonth365;\n let y = year - 1;\n let n = y * 365 + ((y / 4) | 0) - ((y / 100) | 0) + ((y / 400) | 0) + days[month - 1] + day - 1;\n return n * ticksPerDay;\n }\n throw new Error('Not a valid date');\n }\n /**\n * Return the tick count corresponding to the given hour, minute, second.\n * @param hour number value of hour\n * @param minute number value if minute\n * @param second number value of second\n */\n timeToTicks(hour, minute, second) {\n if (hour >= 0 && hour < 24 && minute >= 0 && minute < 60 && second >= 0 && second < 60) {\n let totalSeconds = hour * 3600 + minute * 60 + second;\n return totalSeconds * 10000 * 1000;\n }\n throw new Error('Not valid time');\n }\n /**\n * Checks if given year is a leap year.\n * @param year Year value.\n */\n isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n }\n /**\n * Converts `DateTime` to the equivalent OLE Automation date.\n */\n toOADate(date) {\n let ticks = 0;\n /* tslint:disable-next-line:max-line-length */\n ticks = this.dateToTicks(date.getFullYear(), (date.getMonth() + 1), date.getDate()) + this.timeToTicks(date.getHours(), date.getMinutes(), date.getSeconds());\n if (ticks === 0) {\n return 0.0;\n }\n let ticksPerDay = 10000 * 1000 * 60 * 60 * 24;\n let daysTo1899 = (((365 * 4 + 1) * 25 - 1) * 4 + 1) * 4 + ((365 * 4 + 1) * 25 - 1) * 3 - 367;\n let doubleDateOffset = daysTo1899 * ticksPerDay;\n let oaDateMinAsTicks = (((365 * 4 + 1) * 25 - 1) - 365) * ticksPerDay;\n if (ticks < oaDateMinAsTicks) {\n throw new Error('Arg_OleAutDateInvalid');\n }\n let millisPerDay = 1000 * 60 * 60 * 24;\n return ((ticks - doubleDateOffset) / 10000) / millisPerDay;\n }\n}\n/**\n * BuiltInProperties Class\n * @private\n */\nclass BuiltInProperties {\n}\n\n/**\n * index class\n */\n\nexport { CellStyle, Font, CellXfs, Alignment, CellStyleXfs, CellStyles, NumFmt, Border, Borders, Cell, Cells, Column, Row, Rows, Workbook, BuiltInProperties, Worksheet, HyperLink, Grouping, FreezePane, MergeCell, MergeCells, Worksheets, CsvHelper, ValueFormatter, BlobHelper };\n//# sourceMappingURL=ej2-excel-export.es2015.js.map\n","/**\n * Save class provide method to save file\n * ```typescript\n * let blob : Blob = new Blob([''], { type: 'text/plain' });\n * Save.save('fileName.txt',blob);\n */\nclass Save {\n /**\n * Initialize new instance of {save}\n */\n constructor() {\n // tslint:disable\n }\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName- file name to save.\n * @param {Blob} buffer- the content to write in file\n * @param {boolean} isMicrosoftBrowser- specify whether microsoft browser or not\n * @returns {void}\n */\n static save(fileName, buffer) {\n if (fileName === null || fileName === undefined || fileName === '') {\n throw new Error('ArgumentException: fileName cannot be undefined, null or empty');\n }\n let extension = fileName.substring(fileName.lastIndexOf('.') + 1, fileName.length);\n let mimeType = this.getMimeType(extension);\n if (mimeType !== '') {\n buffer = new Blob([buffer], { type: mimeType });\n }\n if (this.isMicrosoftBrowser) {\n navigator.msSaveBlob(buffer, fileName);\n }\n else {\n let downloadLink = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');\n this.saveInternal(fileName, extension, buffer, downloadLink, 'download' in downloadLink);\n }\n }\n static saveInternal(fileName, extension, buffer, downloadLink, hasDownloadAttribute) {\n if (hasDownloadAttribute) {\n downloadLink.download = fileName;\n let dataUrl = window.URL.createObjectURL(buffer);\n downloadLink.href = dataUrl;\n let event = document.createEvent('MouseEvent');\n event.initEvent('click', true, true);\n downloadLink.dispatchEvent(event);\n setTimeout(() => {\n window.URL.revokeObjectURL(dataUrl);\n dataUrl = undefined;\n });\n }\n else {\n if (extension !== 'docx' && extension !== 'xlsx') {\n let url = window.URL.createObjectURL(buffer);\n let isPopupBlocked = window.open(url, '_blank');\n if (!isPopupBlocked) {\n window.location.href = url;\n }\n }\n else {\n let reader = new FileReader();\n reader.onloadend = () => {\n let isPopupBlocked = window.open(reader.result, '_blank');\n if (!isPopupBlocked) {\n window.location.href = reader.result;\n }\n };\n reader.readAsDataURL(buffer);\n }\n }\n }\n /**\n *\n * @param {string} extension - get mime type of the specified extension\n * @private\n */\n static getMimeType(extension) {\n let mimeType = '';\n switch (extension) {\n case 'html':\n mimeType = 'text/html';\n break;\n case 'pdf':\n mimeType = 'application/pdf';\n break;\n case 'docx':\n mimeType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n break;\n case 'xlsx':\n mimeType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n break;\n case 'txt':\n mimeType = 'text/plain';\n break;\n }\n return mimeType;\n }\n}\n\n/**\n * XmlWriter class provide method to create XML data\n */\nclass XmlWriter {\n /**\n * Initialize new instance of {XmlWriter}\n */\n constructor() {\n this.contentPos = 0;\n this.bufferText = '';\n this.bufferBlob = new Blob([''], { type: 'text/plain' });\n this.currentState = 'Initial';\n this.namespaceStack = [];\n this.namespaceStack.push(new Namespace());\n this.namespaceStack[0].set('xmlns', 'http://www.w3.org/2000/xmlns/', 'Special');\n this.namespaceStack.push(new Namespace());\n this.namespaceStack[1].set('xml', 'http://www.w3.org/XML/1998/namespace', 'Special');\n this.namespaceStack.push(new Namespace());\n this.namespaceStack[2].set('', '', 'Implied');\n this.elementStack = [];\n this.elementStack.push(new XmlElement());\n this.elementStack[0].set('', '', '', this.namespaceStack.length - 1);\n this.attributeStack = [];\n Save.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n }\n /**\n * Gets the content written to the {XmlWriter} as Blob.\n * @returns {Blob}\n */\n get buffer() {\n this.flush();\n return this.bufferBlob;\n }\n /**\n * Writes processing instruction with a space between the name and text\n * @param {string} name - name of the processing instruction\n * @param {string} text - text to write in the processing instruction\n * @throws ArgumentException\n * @throws InvalidArgumentException\n * @throws InvalidOperationException\n */\n writeProcessingInstruction(name, text) {\n if (name === undefined || name === null || name.length === 0) {\n throw new Error('ArgumentException: name should not be undefined, null or empty');\n }\n this.checkName(name);\n if (text === undefined || text === null) {\n text = '';\n }\n if (name.length === 3 && name === 'xml') {\n if (this.currentState !== 'Initial') {\n // tslint:disable-next-line:max-line-length\n throw new Error('InvalidArgumentException: Cannot write XML declaration.WriteStartDocument method has already written it');\n }\n }\n if (this.currentState !== 'Initial' || this.bufferBlob === undefined) {\n throw new Error('InvalidOperationException: Wrong Token');\n }\n else {\n this.writeStartDocument();\n this.writeProcessingInstructionInternal(name, text);\n }\n }\n /**\n * Writes Xml declaration with version and standalone attribute\n * @param {boolean} standalone - if true it write standalone=yes else standalone=no\n * @throws InvalidOperation\n */\n writeStartDocument(standalone) {\n if (this.currentState !== 'Initial' || this.bufferBlob === undefined) {\n throw new Error('InvalidOperationException: Wrong Token');\n }\n this.currentState = 'StartDocument';\n this.rawText('');\n }\n /**\n * Closes any open tag or attribute and write the state back to start\n */\n writeEndDocument() {\n while (this.elementStack.length - 1 > 0) {\n this.writeEndElement();\n }\n this.currentState = 'EndDocument';\n this.flush();\n }\n /**\n * Writes the specified start tag and associates it with the given namespace and prefix.\n * @param {string} prefix - namespace prefix of element\n * @param {string} localName -localName of element\n * @param {string} namespace - namespace URI associate with element\n * @throws ArgumentException\n * @throws InvalidOperationException\n */\n writeStartElement(prefix, localName, namespace) {\n if (this.bufferBlob === undefined) {\n throw new Error('InvalidOperationException: Wrong Token');\n }\n if (localName === undefined || localName === null || localName.length === 0) {\n throw new Error('ArgumentException: localName cannot be undefined, null or empty');\n }\n this.checkName(localName);\n if (this.currentState === 'Initial') {\n this.writeStartDocument();\n }\n if (this.currentState === 'StartElement') {\n this.startElementContent();\n }\n this.currentState = 'StartElement';\n if (prefix === undefined || prefix === null) {\n if (namespace !== undefined && namespace !== null) {\n prefix = this.lookupPrefix(namespace);\n }\n if (prefix === undefined || prefix === null) {\n prefix = '';\n }\n }\n else if (prefix.length > 0) {\n if (namespace === undefined || namespace === null) {\n namespace = this.lookupNamespace(prefix);\n }\n if (namespace === undefined || namespace === null || (namespace !== undefined && namespace.length === 0)) {\n throw new Error('ArgumentException: Cannot use a prefix with an empty namespace');\n }\n }\n if (namespace === undefined || namespace === null) {\n namespace = this.lookupNamespace(prefix);\n }\n this.writeStartElementInternal(prefix, localName, namespace);\n }\n /**\n * Closes one element and pop corresponding namespace scope\n */\n writeEndElement() {\n if (this.currentState === 'StartElement') {\n this.startElementContent();\n this.currentState = 'ElementContent';\n }\n else if (this.currentState === 'ElementContent') {\n this.currentState = 'ElementContent';\n }\n this.currentState = 'EndElement';\n let top = this.elementStack.length - 1;\n this.writeEndElementInternal(this.elementStack[top].prefix, this.elementStack[top].localName);\n this.namespaceStack.splice(this.elementStack[top].previousTop + 1);\n this.elementStack.splice(top);\n if (this.bufferText.length > 10240) {\n this.flush();\n }\n }\n /**\n * Writes an element with the specified prefix, local name, namespace URI, and value.\n * @param {string} prefix - namespace prefix of element\n * @param {string} localName - localName of element\n * @param {string} namespace - namespace URI associate with element\n * @param {string} value - value of element\n */\n writeElementString(prefix, localName, namespace, value) {\n this.writeStartElement(prefix, localName, namespace);\n if (value !== undefined && value !== null && value.length !== 0) {\n this.writeString(value);\n }\n this.writeEndElement();\n }\n /**\n * Writes out the attribute with the specified prefix, local name, namespace URI, and value\n * @param {string} prefix - namespace prefix of element\n * @param {string} localName - localName of element\n * @param {string} namespace - namespace URI associate with element\n * @param {string} value - value of element\n */\n writeAttributeString(prefix, localName, namespace, value) {\n this.writeStartAttribute(prefix, localName, namespace, value);\n this.writeStringInternal(value, true);\n this.writeEndAttribute();\n }\n /**\n * Writes the given text content\n * @param {string} text - text to write\n * @throws InvalidOperationException\n */\n writeString(text) {\n this.writeInternal(text, false);\n }\n /**\n * Write given text as raw data\n * @param {string} text - text to write\n * @throws InvalidOperationException\n */\n writeRaw(text) {\n this.writeInternal(text, true);\n }\n writeInternal(text, isRawString) {\n if (text === undefined || text === null) {\n return;\n }\n else {\n if (this.currentState !== 'StartElement' && this.currentState !== 'ElementContent') {\n throw new Error('InvalidOperationException: Wrong Token');\n }\n if (this.currentState === 'StartElement') {\n this.startElementContent();\n }\n this.currentState = 'ElementContent';\n if (isRawString) {\n this.rawText(text);\n }\n else {\n this.writeStringInternal(text, false);\n }\n }\n }\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName - file name\n */\n save(fileName) {\n while (this.elementStack.length - 1 > 0) {\n this.writeEndElement();\n }\n if (this.bufferText !== '') {\n this.flush();\n }\n Save.save(fileName, this.buffer);\n }\n /**\n * Releases the resources used by XmlWriter.\n */\n destroy() {\n this.bufferBlob = undefined;\n for (let i = 0; i < this.namespaceStack.length; i++) {\n this.namespaceStack[i].destroy();\n }\n this.namespaceStack = [];\n for (let i = 0; i < this.elementStack.length; i++) {\n this.elementStack[i].destroy();\n }\n this.elementStack = [];\n this.bufferText = '';\n this.contentPos = 0;\n }\n flush() {\n if (this.bufferBlob === undefined) {\n return;\n }\n this.bufferBlob = new Blob([this.bufferBlob, this.bufferText], { type: 'text/plain' });\n this.bufferText = '';\n }\n writeProcessingInstructionInternal(name, text) {\n this.bufferText += ' 0) {\n this.bufferText += ' ';\n text = text.replace(/\\?\\>/g, '? >');\n this.bufferText += text;\n }\n this.bufferText += '?';\n this.bufferText += '>';\n }\n writeStartAttribute(prefix, localName, namespace, value) {\n if (localName === undefined || localName === null || localName.length === 0) {\n if (prefix === 'xmlns') {\n localName = 'xmlns';\n prefix = '';\n }\n else {\n throw new Error('ArgumentException: localName cannot be undefined, null or empty');\n }\n }\n if (this.currentState !== 'StartElement') {\n throw new Error('InvalidOperationException: Wrong Token');\n }\n this.checkName(localName);\n this.writeStartAttributePrefixAndNameSpace(prefix, localName, namespace, value);\n }\n writeStartAttributePrefixAndNameSpace(prefix, localName, namespace, value) {\n if (prefix === undefined || prefix === null) {\n if (namespace !== undefined && namespace !== null) {\n if (!(localName === 'xmlns' && namespace === 'http://www.w3.org/2000/xmlns/')) {\n prefix = this.lookupPrefix(namespace);\n }\n }\n if (prefix === undefined || prefix === null) {\n prefix = '';\n }\n }\n if (namespace === undefined || namespace === null) {\n if (prefix !== undefined && prefix !== null && prefix.length > 0) {\n namespace = this.lookupNamespace(prefix);\n }\n if (namespace === undefined || namespace === null) {\n namespace = '';\n }\n }\n this.writeStartAttributeSpecialAttribute(prefix, localName, namespace, value);\n }\n writeStartAttributeSpecialAttribute(prefix, localName, namespace, value) {\n if (prefix.length === 0) {\n if (localName[0] === 'x' && localName === 'xmlns') {\n this.skipPushAndWrite(prefix, localName, namespace);\n this.pushNamespaceExplicit('', value);\n return;\n }\n else if (namespace.length > 0) {\n prefix = this.lookupPrefix(namespace);\n }\n }\n else {\n if (prefix[0] === 'x') {\n if (prefix === 'xmlns') {\n this.skipPushAndWrite(prefix, localName, namespace);\n this.pushNamespaceExplicit(localName, value);\n return;\n }\n else if (prefix === 'xml') {\n if (localName === 'space' || localName === 'lang') {\n this.skipPushAndWrite(prefix, localName, namespace);\n return;\n }\n }\n }\n if (namespace.length === 0) {\n prefix = '';\n }\n }\n if (prefix !== undefined && prefix !== null && prefix.length !== 0) {\n this.pushNamespaceImplicit(prefix, namespace);\n }\n this.skipPushAndWrite(prefix, localName, namespace);\n }\n writeEndAttribute() {\n this.currentState = 'StartElement';\n this.bufferText += '\"';\n }\n writeStartElementInternal(prefix, localName, namespace) {\n this.bufferText += '<';\n if (prefix.length > 0) {\n this.rawText(prefix);\n this.bufferText += ':';\n }\n this.rawText(localName);\n let top = this.elementStack.length;\n this.elementStack.push(new XmlElement());\n this.elementStack[top].set(prefix, localName, namespace, this.namespaceStack.length - 1);\n this.pushNamespaceImplicit(prefix, namespace);\n for (let i = 0; i < this.attributeStack.length; i++) {\n this.attributeStack[i].destroy();\n }\n this.attributeStack = [];\n }\n writeEndElementInternal(prefix, localName) {\n if (this.contentPos !== this.bufferText.length + 1) {\n this.bufferText += '';\n }\n else {\n this.bufferText = this.bufferText.substring(0, this.bufferText.length - 1);\n this.bufferText += ' />';\n }\n }\n writeStartAttributeInternal(prefix, localName, namespaceName) {\n this.bufferText += ' ';\n if (prefix !== undefined && prefix !== null && prefix.length > 0) {\n this.rawText(prefix);\n this.bufferText += ':';\n }\n this.rawText(localName);\n this.bufferText += '=';\n this.bufferText += '\"';\n }\n writeNamespaceDeclaration(prefix, namespaceUri) {\n this.writeStartNamespaceDeclaration(prefix);\n this.writeStringInternal(namespaceUri, true);\n this.bufferText += '\"';\n }\n writeStartNamespaceDeclaration(prefix) {\n if (prefix === undefined || prefix === null || prefix.length === 0) {\n this.rawText(' xmlns=\\\"');\n }\n else {\n this.rawText(' xmlns:');\n this.rawText(prefix);\n this.bufferText += '=';\n this.bufferText += '\"';\n }\n }\n writeStringInternal(text, inAttributeValue) {\n if (text === null || text === undefined) {\n text = '';\n }\n text = text.replace(/\\&/g, '&');\n text = text.replace(/\\/g, '>');\n if (inAttributeValue) {\n text = text.replace(/\\\"/g, '"');\n }\n this.bufferText += text;\n if (!inAttributeValue) {\n this.contentPos = 0;\n }\n }\n startElementContent() {\n let start = this.elementStack[this.elementStack.length - 1].previousTop;\n for (let i = this.namespaceStack.length - 1; i > start; i--) {\n if (this.namespaceStack[i].kind === 'NeedToWrite') {\n this.writeNamespaceDeclaration(this.namespaceStack[i].prefix, this.namespaceStack[i].namespaceUri);\n }\n }\n this.bufferText += '>';\n this.contentPos = this.bufferText.length + 1;\n }\n rawText(text) {\n this.bufferText += text;\n }\n addNamespace(prefix, ns, kind) {\n let top = this.namespaceStack.length;\n this.namespaceStack.push(new Namespace());\n this.namespaceStack[top].set(prefix, ns, kind);\n }\n lookupPrefix(namespace) {\n for (let i = this.namespaceStack.length - 1; i >= 0; i--) {\n if (this.namespaceStack[i].namespaceUri === namespace) {\n return this.namespaceStack[i].prefix;\n }\n }\n return undefined;\n }\n lookupNamespace(prefix) {\n for (let i = this.namespaceStack.length - 1; i >= 0; i--) {\n if (this.namespaceStack[i].prefix === prefix) {\n return this.namespaceStack[i].namespaceUri;\n }\n }\n return undefined;\n }\n lookupNamespaceIndex(prefix) {\n for (let i = this.namespaceStack.length - 1; i >= 0; i--) {\n if (this.namespaceStack[i].prefix === prefix) {\n return i;\n }\n }\n return -1;\n }\n pushNamespaceImplicit(prefix, ns) {\n let kind;\n let existingNsIndex = this.lookupNamespaceIndex(prefix);\n if (existingNsIndex !== -1) {\n if (existingNsIndex > this.elementStack[this.elementStack.length - 1].previousTop) {\n if (this.namespaceStack[existingNsIndex].namespaceUri !== ns) {\n throw new Error('XmlException namespace Uri needs to be the same as the one that is already declared');\n }\n return;\n }\n else {\n if (this.namespaceStack[existingNsIndex].kind === 'Special') {\n if (prefix === 'xml') {\n if (ns !== this.namespaceStack[existingNsIndex].namespaceUri) {\n throw new Error('InvalidArgumentException: Xml String');\n }\n else {\n kind = 'Implied';\n }\n }\n else {\n throw new Error('InvalidArgumentException: Prefix \"xmlns\" is reserved for use by XML.');\n }\n }\n else {\n kind = (this.namespaceStack[existingNsIndex].namespaceUri === ns) ? 'Implied' : 'NeedToWrite';\n }\n }\n }\n else {\n if ((ns === 'http://www.w3.org/XML/1998/namespace' && prefix !== 'xml') ||\n (ns === 'http://www.w3.org/2000/xmlns/' && prefix !== 'xmlns')) {\n throw new Error('InvalidArgumentException');\n }\n kind = 'NeedToWrite';\n }\n this.addNamespace(prefix, ns, kind);\n }\n pushNamespaceExplicit(prefix, ns) {\n let existingNsIndex = this.lookupNamespaceIndex(prefix);\n if (existingNsIndex !== -1) {\n if (existingNsIndex > this.elementStack[this.elementStack.length - 1].previousTop) {\n this.namespaceStack[existingNsIndex].kind = 'Written';\n return;\n }\n }\n this.addNamespace(prefix, ns, 'Written');\n return;\n }\n addAttribute(prefix, localName, namespaceName) {\n let top = this.attributeStack.length;\n this.attributeStack.push(new XmlAttribute());\n this.attributeStack[top].set(prefix, localName, namespaceName);\n for (let i = 0; i < top; i++) {\n if (this.attributeStack[i].isDuplicate(prefix, localName, namespaceName)) {\n throw new Error('XmlException: duplicate attribute name');\n }\n }\n }\n skipPushAndWrite(prefix, localName, namespace) {\n this.addAttribute(prefix, localName, namespace);\n this.writeStartAttributeInternal(prefix, localName, namespace);\n }\n checkName(text) {\n let format = /[ !@#$%^&*()+\\=\\[\\]{};':\"\\\\|,<>\\/?]/;\n if (format.test(text)) {\n throw new Error('InvalidArgumentException: invalid name character');\n }\n }\n}\n/**\n * class for managing namespace collection\n */\nclass Namespace {\n /**\n * set value for current namespace instance\n * @param {string} prefix namespace's prefix\n * @param {string} namespaceUri namespace URI\n * @param {string} kind namespace kind\n */\n set(prefix, namespaceUri, kind) {\n this.prefix = prefix;\n this.namespaceUri = namespaceUri;\n this.kind = kind;\n }\n /**\n * Releases the resources used by Namespace\n */\n destroy() {\n this.prefix = undefined;\n this.namespaceUri = undefined;\n this.kind = undefined;\n }\n}\n/**\n * class for managing element collection\n */\nclass XmlElement {\n /**\n * set value of current element\n * @param {string} prefix - element prefix\n * @param {string} localName - element local name\n * @param {string} namespaceUri -namespace URI\n * @param {string} previousTop - previous namespace top\n */\n set(prefix, localName, namespaceUri, previousTop) {\n this.previousTop = previousTop;\n this.prefix = prefix;\n this.namespaceUri = namespaceUri;\n this.localName = localName;\n }\n /**\n * Releases the resources used by XmlElement\n */\n destroy() {\n this.previousTop = undefined;\n this.prefix = undefined;\n this.localName = undefined;\n this.namespaceUri = undefined;\n }\n}\n/**\n * class for managing attribute collection\n */\nclass XmlAttribute {\n /**\n * set value of current attribute\n * @param {string} prefix - namespace's prefix\n * @param {string} namespaceUri - namespace URI\n * @param {string} localName - attribute localName\n */\n set(prefix, localName, namespaceUri) {\n this.prefix = prefix;\n this.namespaceUri = namespaceUri;\n this.localName = localName;\n }\n /**\n * get whether the attribute is duplicate or not\n * @param {string} prefix - namespace's prefix\n * @param {string} namespaceUri - namespace URI\n * @param {string} localName - attribute localName\n */\n isDuplicate(prefix, localName, namespaceUri) {\n return ((this.localName === localName) && ((this.prefix === prefix) || (this.namespaceUri === namespaceUri)));\n }\n /**\n * Releases the resources used by XmlAttribute\n */\n destroy() {\n this.prefix = undefined;\n this.namespaceUri = undefined;\n this.localName = undefined;\n }\n}\n\n/**\n * Encoding class: Contains the details about encoding type, whether to write a Unicode byte order mark (BOM).\n * ```typescript\n * let encoding : Encoding = new Encoding();\n * encoding.type = 'Utf8';\n * encoding.getBytes('Encoding', 0, 5);\n * ```\n */\nclass Encoding {\n /**\n * Initializes a new instance of the Encoding class. A parameter specifies whether to write a Unicode byte order mark\n * @param {boolean} includeBom?-true to specify that a Unicode byte order mark is written; otherwise, false.\n */\n constructor(includeBom) {\n this.emitBOM = true;\n this.encodingType = 'Ansi';\n this.initBOM(includeBom);\n }\n /**\n * Gets a value indicating whether to write a Unicode byte order mark\n * @returns boolean- true to specify that a Unicode byte order mark is written; otherwise, false\n */\n get includeBom() {\n return this.emitBOM;\n }\n /**\n * Gets the encoding type.\n * @returns EncodingType\n */\n get type() {\n return this.encodingType;\n }\n /**\n * Sets the encoding type.\n * @param {EncodingType} value\n */\n set type(value) {\n this.encodingType = value;\n }\n /**\n * Initialize the includeBom to emit BOM or Not\n * @param {boolean} includeBom\n */\n initBOM(includeBom) {\n if (includeBom === undefined || includeBom === null) {\n this.emitBOM = true;\n }\n else {\n this.emitBOM = includeBom;\n }\n }\n /**\n * Calculates the number of bytes produced by encoding the characters in the specified string\n * @param {string} chars - The string containing the set of characters to encode\n * @returns {number} - The number of bytes produced by encoding the specified characters\n */\n getByteCount(chars) {\n validateNullOrUndefined(chars, 'string');\n if (chars === '') {\n let byte = this.utf8Len(chars.charCodeAt(0));\n return byte;\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n return this.getByteCountInternal(chars, 0, chars.length);\n }\n /**\n * Return the Byte of character\n * @param {number} codePoint\n * @returns {number}\n */\n utf8Len(codePoint) {\n let bytes = codePoint <= 0x7F ? 1 :\n codePoint <= 0x7FF ? 2 :\n codePoint <= 0xFFFF ? 3 :\n codePoint <= 0x1FFFFF ? 4 : 0;\n return bytes;\n }\n /**\n * for 4 byte character return surrogate pair true, otherwise false\n * @param {number} codeUnit\n * @returns {boolean}\n */\n isHighSurrogate(codeUnit) {\n return codeUnit >= 0xD800 && codeUnit <= 0xDBFF;\n }\n /**\n * for 4byte character generate the surrogate pair\n * @param {number} highCodeUnit\n * @param {number} lowCodeUnit\n */\n toCodepoint(highCodeUnit, lowCodeUnit) {\n highCodeUnit = (0x3FF & highCodeUnit) << 10;\n let u = highCodeUnit | (0x3FF & lowCodeUnit);\n return u + 0x10000;\n }\n /**\n * private method to get the byte count for specific charindex and count\n * @param {string} chars\n * @param {number} charIndex\n * @param {number} charCount\n */\n getByteCountInternal(chars, charIndex, charCount) {\n let byteCount = 0;\n if (this.encodingType === 'Utf8' || this.encodingType === 'Unicode') {\n let isUtf8 = this.encodingType === 'Utf8';\n for (let i = 0; i < charCount; i++) {\n let charCode = chars.charCodeAt(isUtf8 ? charIndex : charIndex++);\n if (this.isHighSurrogate(charCode)) {\n if (isUtf8) {\n let high = charCode;\n let low = chars.charCodeAt(++charIndex);\n byteCount += this.utf8Len(this.toCodepoint(high, low));\n }\n else {\n byteCount += 4;\n ++i;\n }\n }\n else {\n if (isUtf8) {\n byteCount += this.utf8Len(charCode);\n }\n else {\n byteCount += 2;\n }\n }\n if (isUtf8) {\n charIndex++;\n }\n }\n return byteCount;\n }\n else {\n byteCount = charCount;\n return byteCount;\n }\n }\n /**\n * Encodes a set of characters from the specified string into the ArrayBuffer.\n * @param {string} s- The string containing the set of characters to encode\n * @param {number} charIndex-The index of the first character to encode.\n * @param {number} charCount- The number of characters to encode.\n * @returns {ArrayBuffer} - The ArrayBuffer that contains the resulting sequence of bytes.\n */\n getBytes(s, charIndex, charCount) {\n validateNullOrUndefined(s, 'string');\n validateNullOrUndefined(charIndex, 'charIndex');\n validateNullOrUndefined(charCount, 'charCount');\n if (charIndex < 0 || charCount < 0) {\n throw new RangeError('Argument Out Of Range Exception: charIndex or charCount is less than zero');\n }\n if (s.length - charIndex < charCount) {\n throw new RangeError('Argument Out Of Range Exception: charIndex and charCount do not denote a valid range in string');\n }\n let bytes;\n if (s === '') {\n bytes = new ArrayBuffer(0);\n return bytes;\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n let byteCount = this.getByteCountInternal(s, charIndex, charCount);\n switch (this.type) {\n case 'Utf8':\n bytes = this.getBytesOfUtf8Encoding(byteCount, s, charIndex, charCount);\n return bytes;\n case 'Unicode':\n bytes = this.getBytesOfUnicodeEncoding(byteCount, s, charIndex, charCount);\n return bytes;\n default:\n bytes = this.getBytesOfAnsiEncoding(byteCount, s, charIndex, charCount);\n return bytes;\n }\n }\n /**\n * Decodes a sequence of bytes from the specified ArrayBuffer into the string.\n * @param {ArrayBuffer} bytes- The ArrayBuffer containing the sequence of bytes to decode.\n * @param {number} index- The index of the first byte to decode.\n * @param {number} count- The number of bytes to decode.\n * @returns {string} - The string that contains the resulting set of characters.\n */\n getString(bytes, index, count) {\n validateNullOrUndefined(bytes, 'bytes');\n validateNullOrUndefined(index, 'index');\n validateNullOrUndefined(count, 'count');\n if (index < 0 || count < 0) {\n throw new RangeError('Argument Out Of Range Exception: index or count is less than zero');\n }\n if (bytes.byteLength - index < count) {\n throw new RangeError('Argument Out Of Range Exception: index and count do not denote a valid range in bytes');\n }\n if (bytes.byteLength === 0 || count === 0) {\n return '';\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n let out = '';\n let byteCal = new Uint8Array(bytes);\n switch (this.type) {\n case 'Utf8':\n let s = this.getStringOfUtf8Encoding(byteCal, index, count);\n return s;\n case 'Unicode':\n let byteUnicode = new Uint16Array(bytes);\n out = this.getStringofUnicodeEncoding(byteUnicode, index, count);\n return out;\n default:\n let j = index;\n for (let i = 0; i < count; i++) {\n let c = byteCal[j];\n out += String.fromCharCode(c); // 1 byte(ASCII) character \n j++;\n }\n return out;\n }\n }\n getBytesOfAnsiEncoding(byteCount, s, charIndex, charCount) {\n let bytes = new ArrayBuffer(byteCount);\n let bufview = new Uint8Array(bytes);\n let k = 0;\n for (let i = 0; i < charCount; i++) {\n let charcode = s.charCodeAt(charIndex++);\n if (charcode < 0x800) {\n bufview[k] = charcode;\n }\n else {\n bufview[k] = 63; //replacement character '?'\n }\n k++;\n }\n return bytes;\n }\n getBytesOfUtf8Encoding(byteCount, s, charIndex, charCount) {\n let bytes = new ArrayBuffer(byteCount);\n let uint = new Uint8Array(bytes);\n let index = charIndex;\n let j = 0;\n for (let i = 0; i < charCount; i++) {\n let charcode = s.charCodeAt(index);\n if (charcode <= 0x7F) { // 1 byte character 2^7\n uint[j] = charcode;\n }\n else if (charcode < 0x800) { // 2 byte character 2^11\n uint[j] = 0xc0 | (charcode >> 6);\n uint[++j] = 0x80 | (charcode & 0x3f);\n }\n else if ((charcode < 0xd800 || charcode >= 0xe000)) { // 3 byte character 2^16 \n uint[j] = 0xe0 | (charcode >> 12);\n uint[++j] = 0x80 | ((charcode >> 6) & 0x3f);\n uint[++j] = 0x80 | (charcode & 0x3f);\n }\n else {\n uint[j] = 0xef;\n uint[++j] = 0xbf;\n uint[++j] = 0xbd; // U+FFFE \"replacement character\"\n }\n ++j;\n ++index;\n }\n return bytes;\n }\n getBytesOfUnicodeEncoding(byteCount, s, charIndex, charCount) {\n let bytes = new ArrayBuffer(byteCount);\n let uint16 = new Uint16Array(bytes);\n for (let i = 0; i < charCount; i++) {\n let charcode = s.charCodeAt(i);\n uint16[i] = charcode;\n }\n return bytes;\n }\n getStringOfUtf8Encoding(byteCal, index, count) {\n let j = 0;\n let i = index;\n let s = '';\n for (j; j < count; j++) {\n let c = byteCal[i++];\n while (i > byteCal.length) {\n return s;\n }\n if (c > 127) {\n if (c > 191 && c < 224 && i < count) {\n c = (c & 31) << 6 | byteCal[i] & 63;\n }\n else if (c > 223 && c < 240 && i < byteCal.byteLength) {\n c = (c & 15) << 12 | (byteCal[i] & 63) << 6 | byteCal[++i] & 63;\n }\n else if (c > 239 && c < 248 && i < byteCal.byteLength) {\n c = (c & 7) << 18 | (byteCal[i] & 63) << 12 | (byteCal[++i] & 63) << 6 | byteCal[++i] & 63;\n }\n ++i;\n }\n s += String.fromCharCode(c); // 1 byte(ASCII) character \n }\n return s;\n }\n getStringofUnicodeEncoding(byteUni, index, count) {\n if (count > byteUni.length) {\n throw new RangeError('ArgumentOutOfRange_Count');\n }\n let byte16 = new Uint16Array(count);\n let out = '';\n for (let i = 0; i < count && i < byteUni.length; i++) {\n byte16[i] = byteUni[index++];\n }\n out = String.fromCharCode.apply(null, byte16);\n return out;\n }\n /**\n * To clear the encoding instance\n * @return {void}\n */\n destroy() {\n this.emitBOM = undefined;\n this.encodingType = undefined;\n }\n}\n/**\n * To check the object is null or undefined and throw error if it is null or undefined\n * @param {Object} value - object to check is null or undefined\n * @return {boolean}\n * @throws {ArgumentException} - if the value is null or undefined\n * @private\n */\nfunction validateNullOrUndefined(value, message) {\n if (value === null || value === undefined) {\n throw new Error('ArgumentException: ' + message + ' cannot be null or undefined');\n }\n}\n\n/**\n * StreamWriter class contains the implementation for writing characters to a file in a particular encoding\n * ```typescript\n * let writer = new StreamWriter();\n * writer.write('Hello World');\n * writer.save('Sample.txt');\n * writer.dispose();\n * ```\n */\nclass StreamWriter {\n /**\n * Gets the content written to the StreamWriter as Blob.\n * @returns Blob\n */\n get buffer() {\n this.flush();\n return this.bufferBlob;\n }\n /**\n * Gets the encoding.\n * @returns Encoding\n */\n get encoding() {\n return this.enc;\n }\n /**\n * Initializes a new instance of the StreamWriter class by using the specified encoding.\n * @param {Encoding} encoding?- The character encoding to use.\n */\n constructor(encoding) {\n this.bufferBlob = new Blob(['']);\n this.bufferText = '';\n this.init(encoding);\n Save.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n }\n init(encoding) {\n if (encoding === null || encoding === undefined) {\n this.enc = new Encoding(false);\n this.enc.type = 'Utf8';\n }\n else {\n this.enc = encoding;\n this.setBomByte();\n }\n }\n /**\n * Private method to set Byte Order Mark(BOM) value based on EncodingType\n */\n setBomByte() {\n if (this.encoding.includeBom) {\n switch (this.encoding.type) {\n case 'Unicode':\n let arrayUnicode = new ArrayBuffer(2);\n let uint8 = new Uint8Array(arrayUnicode);\n uint8[0] = 255;\n uint8[1] = 254;\n this.bufferBlob = new Blob([arrayUnicode]);\n break;\n case 'Utf8':\n let arrayUtf8 = new ArrayBuffer(3);\n let utf8 = new Uint8Array(arrayUtf8);\n utf8[0] = 239;\n utf8[1] = 187;\n utf8[2] = 191;\n this.bufferBlob = new Blob([arrayUtf8]);\n break;\n default:\n this.bufferBlob = new Blob(['']);\n break;\n }\n }\n }\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName - The file name to save\n * @returns {void}\n */\n save(fileName) {\n if (this.bufferText !== '') {\n this.flush();\n }\n Save.save(fileName, this.buffer);\n }\n /**\n * Writes the specified string.\n * @param {string} value - The string to write. If value is null or undefined, nothing is written.\n * @returns {void}\n */\n write(value) {\n if (this.encoding === undefined) {\n throw new Error('Object Disposed Exception: current writer is disposed');\n }\n validateNullOrUndefined(value, 'string');\n this.bufferText += value;\n if (this.bufferText.length >= 10240) {\n this.flush();\n }\n }\n flush() {\n if (this.bufferText === undefined || this.bufferText === null || this.bufferText.length === 0) {\n return;\n }\n let bufferArray = this.encoding.getBytes(this.bufferText, 0, this.bufferText.length);\n this.bufferText = '';\n this.bufferBlob = new Blob([this.bufferBlob, bufferArray]);\n }\n /**\n * Writes the specified string followed by a line terminator\n * @param {string} value - The string to write. If value is null or undefined, nothing is written\n * @returns {void}\n */\n writeLine(value) {\n if (this.encoding === undefined) {\n throw new Error('Object Disposed Exception: current writer is disposed');\n }\n validateNullOrUndefined(value, 'string');\n this.bufferText = this.bufferText + value + '\\r\\n';\n if (this.bufferText.length >= 10240) {\n this.flush();\n }\n }\n /**\n * Releases the resources used by the StreamWriter\n * @returns {void}\n */\n destroy() {\n this.bufferBlob = undefined;\n this.bufferText = undefined;\n if (this.enc instanceof Encoding) {\n this.enc.destroy();\n }\n this.enc = undefined;\n }\n}\n\n// export all modules from current location\n// example: export * from './module'\n/**\n * file utils modules\n */\n\nexport { XmlWriter, Namespace, XmlElement, XmlAttribute, StreamWriter, Encoding, validateNullOrUndefined, Save };\n//# sourceMappingURL=ej2-file-utils.es2015.js.map\n","import { Browser, ChildProperty, Collection, Complex, Component, Draggable, Droppable, Event, EventHandler, Internationalization, KeyboardEvents, L10n, NotifyPropertyChanges, Observer, Property, addClass, append, attributes, blazorTemplates, classList, closest, compile, createElement, debounce, detach, extend, formatUnit, getEnumValue, getValue, isBlazor, isNullOrUndefined, isObject, isUndefined, matches, merge, print, remove, removeClass, resetBlazorTemplate, setCulture, setStyleAttribute, setValue, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil, Deferred, Predicate, Query, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { Dialog, Tooltip, calculatePosition, calculateRelativeBasedPosition, createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { Button, CheckBox, RadioButton, Switch, createCheckBox } from '@syncfusion/ej2-buttons';\nimport { FormValidator, Input, MaskedTextBox, NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { AutoComplete, ComboBox, DropDownList, MultiSelect } from '@syncfusion/ej2-dropdowns';\nimport { DatePicker, DateTimePicker, TimePicker } from '@syncfusion/ej2-calendars';\nimport { ContextMenu, Toolbar } from '@syncfusion/ej2-navigations';\nimport { Workbook } from '@syncfusion/ej2-excel-export';\nimport { PdfBitmap, PdfBorders, PdfColor, PdfCompositeField, PdfDocument, PdfFontFamily, PdfFontStyle, PdfGrid, PdfPaddings, PdfPageCountField, PdfPageNumberField, PdfPageOrientation, PdfPageSettings, PdfPageTemplateElement, PdfPen, PdfSolidBrush, PdfStandardFont, PdfStringFormat, PdfTextAlignment, PdfTrueTypeFont, PdfVerticalAlignment, PointF, RectangleF, SizeF } from '@syncfusion/ej2-pdf-export';\n\n/**\n * ValueFormatter class to globalize the value.\n * @hidden\n */\nclass ValueFormatter {\n constructor(cultureName) {\n this.intl = new Internationalization();\n if (!isNullOrUndefined(cultureName)) {\n this.intl.culture = cultureName;\n }\n }\n getFormatFunction(format) {\n if (format.type) {\n if (isBlazor()) {\n let isServerRendered = 'isServerRendered';\n format[isServerRendered] = true;\n }\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n }\n getParserFunction(format) {\n if (format.type) {\n if (isBlazor()) {\n let isServerRendered = 'isServerRendered';\n format[isServerRendered] = true;\n }\n return this.intl.getDateParser(format);\n }\n else {\n return this.intl.getNumberParser(format);\n }\n }\n fromView(value, format, type) {\n if ((type === 'date' || type === 'datetime' || type === 'number') && (!isNullOrUndefined(format))) {\n return format(value);\n }\n else {\n return value;\n }\n }\n toView(value, format) {\n let result = value;\n if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) {\n result = format(value);\n }\n return result;\n }\n setCulture(cultureName) {\n if (!isNullOrUndefined(cultureName)) {\n setCulture(cultureName);\n }\n }\n}\n\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Represents Grid `Column` model class.\n */\nclass Column {\n constructor(options) {\n /**\n * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells.\n * @default true\n */\n this.disableHtmlEncode = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n * @default true\n */\n this.allowResizing = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n * @default true\n */\n this.allowFiltering = true;\n /**\n * If `allowGrouping` set to false, then it disables grouping of a particular column.\n * By default all columns are groupable.\n * @default true\n */\n this.allowGrouping = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `showColumnMenu` set to false, then it disable the column menu of a particular column.\n * By default column menu will show for all columns\n * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `enableGroupByFormat` set to true, then it groups the particular column by formatted values.\n * @default true\n */\n this.enableGroupByFormat = false;\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n * @default true\n */\n this.allowEditing = true;\n /**\n * It is used to customize the default filter options for a specific columns.\n * * type - Specifies the filter type as menu or checkbox.\n * * ui - to render custom component for specific column it has following functions.\n * * ui.create – It is used for creating custom components.\n * * ui.read - It is used for read the value from the component.\n * * ui.write - It is used to apply component model as dynamically.\n * {% codeBlock src=\"grid/filter-menu-api/index.ts\" %}{% endcodeBlock %}\n *\n * > Check the [`Filter UI`](../../grid/filtering/#custom-component-in-filter-menu) for its customization.\n * @default {}\n */\n this.filter = {};\n /**\n * If `showInColumnChooser` set to false, then hide the particular column in column chooser.\n * By default all columns are displayed in column Chooser.\n * @default true\n */\n this.showInColumnChooser = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n * @default {}\n */\n this.edit = {};\n /**\n * If `allowSearching` set to false, then it disables Searching of a particular column.\n * By default all columns allow Searching.\n * @default true\n */\n this.allowSearching = true;\n /**\n * If `autoFit` set to true, then the particular column content width will be\n * adjusted based on its content in the initial rendering itself.\n * Setting this property as true is equivalent to calling `autoFitColumns` method in the `dataBound` event.\n * @default false\n */\n this.autoFit = false;\n this.sortDirection = 'Descending';\n /** @hidden */\n this.getEditTemplate = () => this.editTemplateFn;\n /** @hidden */\n this.getFilterTemplate = () => this.filterTemplateFn;\n merge(this, options);\n if (this.type === 'none') {\n this.type = (isBlazor() && !isNullOrUndefined(this.template) && isNullOrUndefined(this.field)) ? 'none' : null;\n }\n else if (this.type) {\n this.type = typeof (this.type) === 'string' ? this.type.toLowerCase() : undefined;\n }\n if (this.editType) {\n this.editType = this.editType.toLowerCase();\n }\n if (isNullOrUndefined(this.uid)) {\n this.uid = getUid('grid-column');\n }\n let valueFormatter = new ValueFormatter();\n if (options.format && (options.format.skeleton || options.format.format)) {\n this.setFormatter(valueFormatter.getFormatFunction(extend({}, options.format)));\n this.setParser(valueFormatter.getParserFunction(options.format));\n }\n this.toJSON = () => {\n let col = {};\n let skip = ['filter', 'dataSource', isBlazor() ? ' ' : 'headerText', 'template', 'headerTemplate', 'edit',\n 'editTemplate', 'filterTemplate', 'commandsTemplate'];\n let keys = Object.keys(this);\n for (let i = 0; i < keys.length; i++) {\n if (keys[i] === 'columns') {\n col[keys[i]] = [];\n for (let j = 0; j < this[keys[i]].length; j++) {\n col[keys[i]].push(this[keys[i]][j].toJSON());\n }\n }\n else if (skip.indexOf(keys[i]) < 0) {\n col[keys[i]] = this[keys[i]];\n }\n }\n return col;\n };\n if (!this.field) {\n this.allowFiltering = false;\n this.allowGrouping = false;\n this.allowSorting = false;\n if (this.columns) {\n this.allowResizing = this.columns.some((col) => {\n return col.allowResizing;\n });\n }\n }\n if (this.commands && !this.textAlign) {\n this.textAlign = 'Right';\n }\n if (this.template || this.commandsTemplate) {\n this.templateFn = templateCompiler(this.template || this.commandsTemplate);\n }\n if (this.headerTemplate) {\n this.headerTemplateFn = templateCompiler(this.headerTemplate);\n }\n if (!isNullOrUndefined(this.filter) && this.filter.itemTemplate) {\n this.fltrTemplateFn = templateCompiler(this.filter.itemTemplate);\n }\n if (this.editTemplate) {\n this.editTemplateFn = templateCompiler(this.editTemplate);\n }\n if (this.filterTemplate) {\n this.filterTemplateFn = templateCompiler(this.filterTemplate);\n }\n if (this.isForeignColumn() &&\n (isNullOrUndefined(this.editType) || this.editType === 'dropdownedit' || this.editType === 'defaultedit')) {\n this.editType = 'dropdownedit';\n this.edit.params = extend({\n dataSource: this.dataSource,\n query: new Query(), fields: { value: this.foreignKeyField || this.field, text: this.foreignKeyValue }\n }, this.edit.params);\n }\n if (this.sortComparer) {\n let a = this.sortComparer;\n this.sortComparer = function comparer(x, y, xObj, yObj) {\n if (typeof a === 'string') {\n a = getObject(a, window);\n }\n if (this.sortDirection === 'Descending') {\n let z = x;\n x = y;\n y = z;\n let obj = xObj;\n xObj = yObj;\n yObj = obj;\n }\n return a(x, y, xObj, yObj);\n };\n }\n if (!this.sortComparer && this.isForeignColumn()) {\n this.sortComparer = (x, y) => {\n x = getObject(this.foreignKeyValue, getForeignData(this, {}, x)[0]);\n y = getObject(this.foreignKeyValue, getForeignData(this, {}, y)[0]);\n return this.sortDirection === 'Descending' ? DataUtil.fnDescending(x, y) : DataUtil.fnAscending(x, y);\n };\n }\n }\n /** @hidden */\n getSortDirection() {\n return this.sortDirection;\n }\n /** @hidden */\n setSortDirection(direction) {\n this.sortDirection = direction;\n }\n /** @hidden */\n setProperties(column) {\n //Angular two way binding\n let keys = Object.keys(column);\n for (let i = 0; i < keys.length; i++) {\n this[keys[i]] = column[keys[i]];\n }\n }\n /**\n * @hidden\n * It defines the column is foreign key column or not.\n */\n isForeignColumn() {\n return !!(this.dataSource && this.foreignKeyValue);\n }\n /** @hidden */\n getFormatter() {\n return this.formatFn;\n }\n /** @hidden */\n setFormatter(value) {\n this.formatFn = value;\n }\n /** @hidden */\n getParser() {\n return this.parserFn;\n }\n /** @hidden */\n setParser(value) {\n this.parserFn = value;\n }\n /** @hidden */\n getColumnTemplate() {\n return this.templateFn;\n }\n /** @hidden */\n getHeaderTemplate() {\n return this.headerTemplateFn;\n }\n /** @hidden */\n getFilterItemTemplate() {\n return this.fltrTemplateFn;\n }\n /** @hidden */\n getDomSetter() {\n return this.disableHtmlEncode ? 'textContent' : 'innerHTML';\n }\n}\n/**\n * Define options for custom command buttons.\n */\nclass CommandColumnModel {\n}\n__decorate([\n Property()\n], CommandColumnModel.prototype, \"title\", void 0);\n__decorate([\n Property()\n], CommandColumnModel.prototype, \"type\", void 0);\n__decorate([\n Property()\n], CommandColumnModel.prototype, \"buttonOption\", void 0);\n\n/** @hidden */\nconst created = 'create';\n/** @hidden */\nconst destroyed = 'destroy';\n/** @hidden */\nconst load = 'load';\n/** @hidden */\nconst rowDataBound = 'rowDataBound';\n/** @hidden */\nconst queryCellInfo = 'queryCellInfo';\n/** @hidden */\nconst headerCellInfo = 'headerCellInfo';\n/** @hidden */\nconst actionBegin = 'actionBegin';\n/** @hidden */\nconst actionComplete = 'actionComplete';\n/** @hidden */\nconst actionFailure = 'actionFailure';\n/** @hidden */\nconst dataBound = 'dataBound';\n/** @hidden */\nconst rowSelecting = 'rowSelecting';\n/** @hidden */\nconst rowSelected = 'rowSelected';\n/** @hidden */\nconst rowDeselecting = 'rowDeselecting';\n/** @hidden */\nconst rowDeselected = 'rowDeselected';\n/** @hidden */\nconst cellSelecting = 'cellSelecting';\n/** @hidden */\nconst cellSelected = 'cellSelected';\n/** @hidden */\nconst cellDeselecting = 'cellDeselecting';\n/** @hidden */\nconst cellDeselected = 'cellDeselected';\n/** @hidden */\nconst columnDragStart = 'columnDragStart';\n/** @hidden */\nconst columnDrag = 'columnDrag';\n/** @hidden */\nconst columnDrop = 'columnDrop';\n/** @hidden */\nconst rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nconst rowDragStart = 'rowDragStart';\n/** @hidden */\nconst rowDrag = 'rowDrag';\n/** @hidden */\nconst rowDrop = 'rowDrop';\n/** @hidden */\nconst beforePrint = 'beforePrint';\n/** @hidden */\nconst printComplete = 'printComplete';\n/** @hidden */\nconst detailDataBound = 'detailDataBound';\n/** @hidden */\nconst toolbarClick = 'toolbarClick';\n/** @hidden */\nconst batchAdd = 'batchAdd';\n/** @hidden */\nconst batchCancel = 'batchCancel';\n/** @hidden */\nconst batchDelete = 'batchDelete';\n/** @hidden */\nconst beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nconst beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nconst beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nconst beginEdit = 'beginEdit';\n/** @hidden */\nconst cellEdit = 'cellEdit';\n/** @hidden */\nconst cellSave = 'cellSave';\n/** @hidden */\nconst cellSaved = 'cellSaved';\n/** @hidden */\nconst endAdd = 'endAdd';\n/** @hidden */\nconst endDelete = 'endDelete';\n/** @hidden */\nconst endEdit = 'endEdit';\n/** @hidden */\nconst recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nconst recordClick = 'recordClick';\n/** @hidden */\nconst beforeDataBound = 'beforeDataBound';\n/** @hidden */\nconst beforeOpenColumnChooser = 'beforeOpenColumnChooser';\n/** @hidden */\nconst resizeStart = 'resizeStart';\n/** @hidden */\nconst onResize = 'resizing';\n/** @hidden */\nconst resizeStop = 'resizeStop';\n/** @hidden */\nconst checkBoxChange = 'checkBoxChange';\n/** @hidden */\nconst beforeCopy = 'beforeCopy';\n/** @hidden */\nconst beforePaste = 'beforePaste';\n/** @hidden */\nconst beforeAutoFill = 'beforeAutoFill';\n/** @hidden */\nconst filterChoiceRequest = 'filterchoicerequest';\n/** @hidden */\nconst filterAfterOpen = 'filterafteropen';\n/** @hidden */\nconst filterBeforeOpen = 'filterbeforeopen';\n/** @hidden */\nconst filterSearchBegin = 'filtersearchbegin';\n/** @hidden */\nconst commandClick = 'commandClick';\n/** @hidden */\nconst exportGroupCaption = 'exportGroupCaption';\n/**\n * Specifies grid internal events\n */\n/** @hidden */\nconst initialLoad = 'initial-load';\n/** @hidden */\nconst initialEnd = 'initial-end';\n/** @hidden */\nconst dataReady = 'data-ready';\n/** @hidden */\nconst contentReady = 'content-ready';\n/** @hidden */\nconst uiUpdate = 'ui-update';\n/** @hidden */\nconst onEmpty = 'on-empty';\n/** @hidden */\nconst inBoundModelChanged = 'inbound-model-changed';\n/** @hidden */\nconst modelChanged = 'model-changed';\n/** @hidden */\nconst colGroupRefresh = 'colgroup-refresh';\n/** @hidden */\nconst headerRefreshed = 'header-refreshed';\n/** @hidden */\nconst pageBegin = 'paging-begin';\n/** @hidden */\nconst pageComplete = 'paging-complete';\n/** @hidden */\nconst sortBegin = 'sorting-begin';\n/** @hidden */\nconst sortComplete = 'sorting-complete';\n/** @hidden */\nconst filterBegin = 'filtering-begin';\n/** @hidden */\nconst filterComplete = 'filtering-complete';\n/** @hidden */\nconst searchBegin = 'searching-begin';\n/** @hidden */\nconst searchComplete = 'searching-complete';\n/** @hidden */\nconst reorderBegin = 'reorder-begin';\n/** @hidden */\nconst reorderComplete = 'reorder-complete';\n/** @hidden */\nconst rowDragAndDropBegin = 'rowdraganddrop-begin';\n/** @hidden */\nconst rowDragAndDropComplete = 'rowdraganddrop-complete';\n/** @hidden */\nconst groupBegin = 'grouping-begin';\n/** @hidden */\nconst groupComplete = 'grouping-complete';\n/** @hidden */\nconst ungroupBegin = 'ungrouping-begin';\n/** @hidden */\nconst ungroupComplete = 'ungrouping-complete';\n/** @hidden */\nconst groupAggregates = 'group-aggregates';\n/** @hidden */\nconst refreshFooterRenderer = 'refresh-footer-rendered';\n/** @hidden */\nconst refreshAggregateCell = 'refresh-aggregate-cell';\n/** @hidden */\nconst refreshAggregates = 'refresh-aggregates';\n/** @hidden */\nconst rowSelectionBegin = 'rowselecting';\n/** @hidden */\nconst rowSelectionComplete = 'rowselected';\n/** @hidden */\nconst columnSelectionBegin = 'columnselecting';\n/** @hidden */\nconst columnSelectionComplete = 'columnselected';\n/** @hidden */\nconst cellSelectionBegin = 'cellselecting';\n/** @hidden */\nconst cellSelectionComplete = 'cellselected';\n/** @hidden */\nconst beforeCellFocused = 'beforecellfocused';\n/** @hidden */\nconst cellFocused = 'cellfocused';\n/** @hidden */\nconst keyPressed = 'key-pressed';\n/** @hidden */\nconst click = 'click';\n/** @hidden */\nconst destroy = 'destroy';\n/** @hidden */\nconst columnVisibilityChanged = 'column-visible-changed';\n/** @hidden */\nconst scroll = 'scroll';\n/** @hidden */\nconst columnWidthChanged = 'column-width-changed';\n/** @hidden */\nconst columnPositionChanged = 'column-position-changed';\n/** @hidden */\nconst rowDragAndDrop = 'row-drag-and-drop';\n/** @hidden */\nconst rowsAdded = 'rows-added';\n/** @hidden */\nconst rowsRemoved = 'rows-removed';\n/** @hidden */\nconst columnDragStop = 'column-drag-stop';\n/** @hidden */\nconst headerDrop = 'header-drop';\n/** @hidden */\nconst dataSourceModified = 'datasource-modified';\n/** @hidden */\nconst refreshComplete = 'refresh-complete';\n/** @hidden */\nconst refreshVirtualBlock = 'refresh-virtual-block';\n/** @hidden */\nconst dblclick = 'dblclick';\n/** @hidden */\nconst toolbarRefresh = 'toolbar-refresh';\n/** @hidden */\nconst bulkSave = 'bulk-save';\n/** @hidden */\nconst autoCol = 'auto-col';\n/** @hidden */\nconst tooltipDestroy = 'tooltip-destroy';\n/** @hidden */\nconst updateData = 'update-data';\n/** @hidden */\nconst editBegin = 'edit-begin';\n/** @hidden */\nconst editComplete = 'edit-complete';\n/** @hidden */\nconst addBegin = 'add-begin';\n/** @hidden */\nconst addComplete = 'add-complete';\n/** @hidden */\nconst saveComplete = 'save-complete';\n/** @hidden */\nconst deleteBegin = 'delete-begin';\n/** @hidden */\nconst deleteComplete = 'delete-complete';\n/** @hidden */\nconst preventBatch = 'prevent-batch';\n/** @hidden */\nconst dialogDestroy = 'dialog-destroy';\n/** @hidden */\nconst crudAction = 'crud-Action';\n/** @hidden */\nconst addDeleteAction = 'add-delete-Action';\n/** @hidden */\nconst destroyForm = 'destroy-form';\n/** @hidden */\nconst doubleTap = 'double-tap';\n/** @hidden */\nconst beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nconst excelExportComplete = 'excelExportComplete';\n/** @hidden */\nconst excelQueryCellInfo = 'excelQueryCellInfo';\n/** @hidden */\nconst excelHeaderQueryCellInfo = 'excelHeaderQueryCellInfo';\n/** @hidden */\nconst exportDetailDataBound = 'exportdetaildatabound';\n/** @hidden */\nconst beforePdfExport = 'beforePdfExport';\n/** @hidden */\nconst pdfExportComplete = 'pdfExportComplete';\n/** @hidden */\nconst pdfQueryCellInfo = 'pdfQueryCellInfo';\n/** @hidden */\nconst pdfHeaderQueryCellInfo = 'pdfHeaderQueryCellInfo';\n/** @hidden */\nconst accessPredicate = 'access-predicate';\n/** @hidden */\nconst contextMenuClick = 'contextMenuClick';\n/** @hidden */\nconst freezeRender = 'freezerender';\n/** @hidden */\nconst freezeRefresh = 'freezerefresh';\n/** @hidden */\nconst contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nconst columnMenuClick = 'columnMenuClick';\n/** @hidden */\nconst columnMenuOpen = 'columnMenuOpen';\n/** @hidden */\nconst filterOpen = 'filterOpen';\n/** @hidden */\nconst filterDialogCreated = 'filterDialogCreated';\n/** @hidden */\nconst filterMenuClose = 'filter-menu-close';\n/** @hidden */\nconst initForeignKeyColumn = 'initForeignKeyColumn';\n/** @hidden */\nconst getForeignKeyData = 'getForeignKeyData';\n/** @hidden */\nconst generateQuery = 'generateQuery';\n/** @hidden */\nconst showEmptyGrid = 'showEmptyGrid';\n/** @hidden */\nconst foreignKeyData = 'foreignKeyData';\n/** @hidden */\nconst columnDataStateChange = 'columnDataStateChange';\n/** @hidden */\nconst dataStateChange = 'dataStateChange';\n/** @hidden */\nconst dataSourceChanged = 'dataSourceChanged';\n/** @hidden */\nconst rtlUpdated = 'rtl-updated';\n/** @hidden */\nconst beforeFragAppend = 'beforeFragAppend';\n/** @hidden */\nconst frozenHeight = 'frozenHeight';\n/** @hidden */\nconst textWrapRefresh = 'textWrapRefresh';\n/** @hidden */\nconst recordAdded = 'recordAdded';\n/** @hidden */\nconst cancelBegin = 'cancel-Begin';\n/** @hidden */\nconst editNextValCell = 'editNextValCell';\n/** @hidden */\nconst hierarchyPrint = 'hierarchyprint';\n/** @hidden */\nconst expandChildGrid = 'expandchildgrid';\n/** @hidden */\nconst printGridInit = 'printGrid-Init';\n/** @hidden */\nconst exportRowDataBound = 'export-RowDataBound';\n/** @hidden */\nconst exportDataBound = 'export-DataBound';\n/** @hidden */\nconst rowPositionChanged = 'row-position-changed';\n/** @hidden */\nconst columnChooserOpened = 'columnChooserOpened';\n/** @hidden */\nconst batchForm = 'batchedit-form';\n/** @hidden */\nconst beforeStartEdit = 'edit-form';\n/** @hidden */\nconst beforeBatchCancel = 'before-batch-cancel';\n/** @hidden */\nconst batchEditFormRendered = 'batcheditform-rendered';\n/** @hidden */\nconst partialRefresh = 'partial-refresh';\n/** @hidden */\nconst beforeCustomFilterOpen = 'beforeCustomFilterOpen';\n/** @hidden */\nconst selectVirtualRow = 'select-virtual-Row';\n/** @hidden */\nconst columnsPrepared = 'columns-prepared';\n/** @hidden */\nconst cBoxFltrBegin = 'cbox-filter-begin';\n/** @hidden */\nconst cBoxFltrComplete = 'cbox-filter-complete';\n/** @hidden */\nconst fltrPrevent = 'filter-Prevent';\n/** @hidden */\nconst beforeFltrcMenuOpen = 'before-filter-cmenu-open';\n/** @hidden */\nconst valCustomPlacement = 'validation-custom-placement';\n/** @hidden */\nconst filterCboxValue = 'filter-cbox-value';\n/** @hidden */\nconst componentRendered = 'component-rendered';\n/** @hidden */\nconst restoreFocus = 'restore-Focus';\n/** @hidden */\nconst detailStateChange = 'detail-state-change';\n/** @hidden */\nconst detailIndentCellInfo = 'detail-indentcell-info';\n/** @hidden */\nconst virtaulKeyHandler = 'virtaul-key-handler';\n/** @hidden */\nconst virtaulCellFocus = 'virtaul-cell-focus';\n/** @hidden */\nconst virtualScrollEditActionBegin = 'virtual-scroll-edit-action-begin';\n/** @hidden */\nconst virtualScrollEditSuccess = 'virtual-scroll-edit-success';\n/** @hidden */\nconst virtualScrollEditCancel = 'virtual-scroll-edit-cancel';\n/** @hidden */\nconst virtualScrollEdit = 'virtual-scroll-edit';\n/** @hidden */\nconst refreshVirtualCache = 'refresh-virtual-cache';\n/** @hidden */\nconst editReset = 'edit-reset';\n/** @hidden */\nconst virtualScrollAddActionBegin = 'virtual-scroll-add-action-begin';\n/** @hidden */\nconst getVirtualData = 'get-virtual-data';\n/** @hidden */\nconst refreshInfiniteModeBlocks = 'refresh-infinite-mode-blocks';\n/** @hidden */\nconst resetInfiniteBlocks = 'reset-infinite-blocks';\n/** @hidden */\nconst infiniteScrollHandler = 'infinite-scroll-handler';\n/** @hidden */\nconst infinitePageQuery = 'infinite-page-query';\n/** @hidden */\nconst infiniteShowHide = 'infinite-show-hide';\n/** @hidden */\nconst appendInfiniteContent = 'append-infinite-content';\n/** @hidden */\nconst removeInfiniteRows = 'remove-infinite-rows';\n/** @hidden */\nconst setInfiniteCache = 'set-infinite-cache';\n/** @hidden */\nconst infiniteEditHandler = 'infinite-edit-handler';\n/** @hidden */\nconst initialCollapse = 'initial-collapse';\n/** @hidden */\nconst getAggregateQuery = 'get-aggregate-query';\n/** @hidden */\nconst closeFilterDialog = 'close-filter-dialog';\n/** @hidden */\nconst columnChooserCancelBtnClick = 'columnChooserCancelBtnClick';\n/** @hidden */\nconst getFilterBarOperator = 'get-filterbar-operator';\n/** @hidden */\nconst resetColumns = 'reset-columns';\n/** @hidden */\nconst pdfAggregateQueryCellInfo = 'pdfAggregateQueryCellInfo';\n/** @hidden */\nconst excelAggregateQueryCellInfo = 'excelAggregateQueryCellInfo';\n\n/**\n * Defines types of Cell\n * @hidden\n */\nvar CellType;\n(function (CellType) {\n /** Defines CellType as Data */\n CellType[CellType[\"Data\"] = 0] = \"Data\";\n /** Defines CellType as Header */\n CellType[CellType[\"Header\"] = 1] = \"Header\";\n /** Defines CellType as Summary */\n CellType[CellType[\"Summary\"] = 2] = \"Summary\";\n /** Defines CellType as GroupSummary */\n CellType[CellType[\"GroupSummary\"] = 3] = \"GroupSummary\";\n /** Defines CellType as CaptionSummary */\n CellType[CellType[\"CaptionSummary\"] = 4] = \"CaptionSummary\";\n /** Defines CellType as Filter */\n CellType[CellType[\"Filter\"] = 5] = \"Filter\";\n /** Defines CellType as Indent */\n CellType[CellType[\"Indent\"] = 6] = \"Indent\";\n /** Defines CellType as GroupCaption */\n CellType[CellType[\"GroupCaption\"] = 7] = \"GroupCaption\";\n /** Defines CellType as GroupCaptionEmpty */\n CellType[CellType[\"GroupCaptionEmpty\"] = 8] = \"GroupCaptionEmpty\";\n /** Defines CellType as Expand */\n CellType[CellType[\"Expand\"] = 9] = \"Expand\";\n /** Defines CellType as HeaderIndent */\n CellType[CellType[\"HeaderIndent\"] = 10] = \"HeaderIndent\";\n /** Defines CellType as StackedHeader */\n CellType[CellType[\"StackedHeader\"] = 11] = \"StackedHeader\";\n /** Defines CellType as DetailHeader */\n CellType[CellType[\"DetailHeader\"] = 12] = \"DetailHeader\";\n /** Defines CellType as DetailExpand */\n CellType[CellType[\"DetailExpand\"] = 13] = \"DetailExpand\";\n /** Defines CellType as CommandColumn */\n CellType[CellType[\"CommandColumn\"] = 14] = \"CommandColumn\";\n /** Defines CellType as DetailFooterIntent */\n CellType[CellType[\"DetailFooterIntent\"] = 15] = \"DetailFooterIntent\";\n /** Defines CellType as RowDrag */\n CellType[CellType[\"RowDragIcon\"] = 16] = \"RowDragIcon\";\n /** Defines CellType as RowDragHeader */\n CellType[CellType[\"RowDragHIcon\"] = 17] = \"RowDragHIcon\";\n})(CellType || (CellType = {}));\n/**\n * Defines types of Render\n * @hidden\n */\nvar RenderType;\n(function (RenderType) {\n /** Defines RenderType as Header */\n RenderType[RenderType[\"Header\"] = 0] = \"Header\";\n /** Defines RenderType as Content */\n RenderType[RenderType[\"Content\"] = 1] = \"Content\";\n /** Defines RenderType as Summary */\n RenderType[RenderType[\"Summary\"] = 2] = \"Summary\";\n})(RenderType || (RenderType = {}));\n/**\n * Defines Predefined toolbar items.\n * @hidden\n */\nvar ToolbarItem;\n(function (ToolbarItem) {\n ToolbarItem[ToolbarItem[\"Add\"] = 0] = \"Add\";\n ToolbarItem[ToolbarItem[\"Edit\"] = 1] = \"Edit\";\n ToolbarItem[ToolbarItem[\"Update\"] = 2] = \"Update\";\n ToolbarItem[ToolbarItem[\"Delete\"] = 3] = \"Delete\";\n ToolbarItem[ToolbarItem[\"Cancel\"] = 4] = \"Cancel\";\n ToolbarItem[ToolbarItem[\"Print\"] = 5] = \"Print\";\n ToolbarItem[ToolbarItem[\"Search\"] = 6] = \"Search\";\n ToolbarItem[ToolbarItem[\"ColumnChooser\"] = 7] = \"ColumnChooser\";\n ToolbarItem[ToolbarItem[\"PdfExport\"] = 8] = \"PdfExport\";\n ToolbarItem[ToolbarItem[\"ExcelExport\"] = 9] = \"ExcelExport\";\n ToolbarItem[ToolbarItem[\"CsvExport\"] = 10] = \"CsvExport\";\n ToolbarItem[ToolbarItem[\"WordExport\"] = 11] = \"WordExport\";\n})(ToolbarItem || (ToolbarItem = {}));\n/**\n * Defines the Aggregate Template Type\n * * groupCaptionTemplate\n * * groupFooterTemplate\n * * footerTemplate\n */\nvar AggregateTemplateType;\n(function (AggregateTemplateType) {\n AggregateTemplateType[\"GroupCaption\"] = \"GroupCaption\";\n AggregateTemplateType[\"GroupFooter\"] = \"GroupFooter\";\n AggregateTemplateType[\"Footer\"] = \"Footer\";\n})(AggregateTemplateType || (AggregateTemplateType = {}));\n\n/**\n * Grid data module is used to generate query and data source.\n * @hidden\n */\nclass Data {\n /**\n * Constructor for data module.\n * @hidden\n */\n constructor(parent, serviceLocator) {\n this.dataState = { isPending: false, resolver: null, group: [] };\n this.foreignKeyDataState = { isPending: false, resolver: null };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.initDataManager();\n if (this.parent.isDestroyed || this.getModuleName() === 'foreignKey') {\n return;\n }\n this.parent.on(rowsAdded, this.addRows, this);\n this.parent.on(rowPositionChanged, this.reorderRows, this);\n this.parent.on(rowsRemoved, this.removeRows, this);\n this.parent.on(dataSourceModified, this.initDataManager, this);\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(updateData, this.crudActions, this);\n this.parent.on(addDeleteAction, this.getData, this);\n this.parent.on(autoCol, this.refreshFilteredCols, this);\n this.parent.on(columnsPrepared, this.refreshFilteredCols, this);\n }\n reorderRows(e) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, this.dataManager.dataSource.json.splice(e.fromIndex, 1)[0]);\n }\n getModuleName() {\n return 'data';\n }\n /**\n * The function used to initialize dataManager and external query\n * @return {void}\n */\n initDataManager() {\n let gObj = this.parent;\n this.dataManager = gObj.dataSource instanceof DataManager ? gObj.dataSource :\n (isNullOrUndefined(gObj.dataSource) ? new DataManager() : new DataManager(gObj.dataSource));\n this.isQueryInvokedFromData = true;\n gObj.query = gObj.query instanceof Query ? gObj.query : new Query();\n }\n /**\n * The function is used to generate updated Query from Grid model.\n * @return {Query}\n * @hidden\n */\n generateQuery(skipPage) {\n let gObj = this.parent;\n let query = gObj.getQuery().clone();\n if (this.parent.columnQueryMode === 'ExcludeHidden') {\n query.select(this.parent.getColumns().filter((column) => !(column.isPrimaryKey !== true && column.visible === false || column.field === undefined)).map((column) => column.field));\n }\n else if (this.parent.columnQueryMode === 'Schema') {\n let selectQueryFields = [];\n let columns = this.parent.columns;\n for (let i = 0; i < columns.length; i++) {\n selectQueryFields.push(columns[i].field);\n }\n query.select(selectQueryFields);\n }\n this.filterQuery(query);\n this.searchQuery(query);\n this.aggregateQuery(query);\n this.sortQuery(query);\n if (isGroupAdaptive(this.parent)) {\n this.virtualGroupPageQuery(query);\n }\n else {\n this.pageQuery(query, skipPage);\n }\n this.groupQuery(query);\n return query;\n }\n /** @hidden */\n aggregateQuery(query, isForeign) {\n let rows = this.parent.aggregates;\n for (let i = 0; i < rows.length; i++) {\n let row = rows[i];\n for (let j = 0; j < row.columns.length; j++) {\n let cols = row.columns[j];\n let types = cols.type instanceof Array ? cols.type : [cols.type];\n for (let k = 0; k < types.length; k++) {\n query.aggregate(types[k].toLowerCase(), cols.field);\n }\n }\n }\n return query;\n }\n virtualGroupPageQuery(query) {\n let gObj = this.parent;\n let fName = 'fn';\n if (query.queries.length) {\n for (let i = 0; i < query.queries.length; i++) {\n if (query.queries[i][fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n }\n pageQuery(query, skipPage) {\n let gObj = this.parent;\n let fName = 'fn';\n if ((gObj.allowPaging || gObj.enableVirtualization || gObj.enableInfiniteScrolling) && skipPage !== true) {\n gObj.pageSettings.currentPage = Math.max(1, gObj.pageSettings.currentPage);\n if (gObj.pageSettings.pageCount <= 0) {\n gObj.pageSettings.pageCount = 8;\n }\n if (gObj.pageSettings.pageSize <= 0) {\n gObj.pageSettings.pageSize = 12;\n }\n if (query.queries.length) {\n for (let i = 0; i < query.queries.length; i++) {\n if (query.queries[i][fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n if (!isNullOrUndefined(gObj.infiniteScrollModule) && gObj.enableInfiniteScrolling) {\n this.parent.notify(infinitePageQuery, query);\n }\n else {\n query.page(gObj.pageSettings.currentPage, gObj.pageSettings.pageSize);\n }\n }\n return query;\n }\n groupQuery(query) {\n let gObj = this.parent;\n if (gObj.allowGrouping && gObj.groupSettings.columns.length) {\n let columns = gObj.groupSettings.columns;\n for (let i = 0, len = columns.length; i < len; i++) {\n let column = this.getColumnByField(columns[i]);\n if (!column) {\n this.parent.log('initial_action', { moduleName: 'group', columnName: columns[i] });\n }\n let isGrpFmt = column.enableGroupByFormat;\n let format = column.format;\n if (isGrpFmt) {\n query.group(columns[i], this.formatGroupColumn.bind(this), format);\n }\n else {\n query.group(columns[i], null);\n }\n }\n }\n return query;\n }\n sortQuery(query) {\n let gObj = this.parent;\n if ((gObj.allowSorting || gObj.allowGrouping) && gObj.sortSettings.columns.length) {\n let columns = gObj.sortSettings.columns;\n let sortGrp = [];\n for (let i = columns.length - 1; i > -1; i--) {\n let col = this.getColumnByField(columns[i].field);\n if (col) {\n col.setSortDirection(columns[i].direction);\n }\n else {\n this.parent.log('initial_action', { moduleName: 'sort', columnName: columns[i].field });\n return query;\n }\n let fn = columns[i].direction;\n if (col.sortComparer) {\n this.parent.log('grid_sort_comparer');\n fn = !this.isRemote() ? col.sortComparer.bind(col) : columns[i].direction;\n }\n if (gObj.groupSettings.columns.indexOf(columns[i].field) === -1) {\n query.sortBy(col.field, fn);\n }\n else {\n sortGrp.push({ direction: fn, field: col.field });\n }\n }\n for (let i = 0, len = sortGrp.length; i < len; i++) {\n query.sortBy(sortGrp[i].field, sortGrp[i].direction);\n }\n }\n return query;\n }\n searchQuery(query, fcolumn, isForeignKey) {\n let sSettings = this.parent.searchSettings;\n let fields = sSettings.fields.length ? sSettings.fields : this.getSearchColumnFieldNames();\n let predicateList = [];\n let needForeignKeySearch = false;\n if (this.parent.searchSettings.key.length) {\n needForeignKeySearch = this.parent.getForeignKeyColumns().some((col) => fields.indexOf(col.field) > -1);\n let adaptor = !isForeignKey ? this.dataManager.adaptor : fcolumn.dataSource.adaptor;\n if (needForeignKeySearch || (adaptor.getModuleName &&\n adaptor.getModuleName() === 'ODataV4Adaptor')) {\n fields = isForeignKey ? [fcolumn.foreignKeyValue] : fields;\n for (let i = 0; i < fields.length; i++) {\n let column = isForeignKey ? fcolumn : this.getColumnByField(fields[i]);\n if (column.isForeignColumn() && !isForeignKey) {\n predicateList = this.fGeneratePredicate(column, predicateList);\n }\n else {\n predicateList.push(new Predicate(fields[i], sSettings.operator, sSettings.key, sSettings.ignoreCase, sSettings.ignoreAccent));\n }\n }\n let predList = Predicate.or(predicateList);\n predList.key = sSettings.key;\n query.where(predList);\n }\n else {\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n }\n return query;\n }\n filterQuery(query, column, skipFoerign) {\n let gObj = this.parent;\n let predicateList = [];\n let actualFilter = [];\n let foreignColumn = this.parent.getForeignKeyColumns();\n if (gObj.allowFiltering && gObj.filterSettings.columns.length) {\n let columns = column ? column : gObj.filterSettings.columns;\n let colType = {};\n for (let col of gObj.getColumns()) {\n colType[col.field] = col.filter.type ? col.filter.type : gObj.filterSettings.type;\n }\n let foreignCols = [];\n let defaultFltrCols = [];\n for (let col of columns) {\n let gridColumn = gObj.getColumnByField(col.field);\n if (isNullOrUndefined(col.type) && gridColumn && (gridColumn.type === 'date' || gridColumn.type === 'datetime')) {\n col.type = gObj.getColumnByField(col.field).type;\n }\n if (col.isForeignKey) {\n foreignCols.push(col);\n }\n else {\n defaultFltrCols.push(col);\n }\n }\n if (defaultFltrCols.length) {\n if (gObj.filterSettings.type === 'FilterBar' || gObj.filterSettings.type === 'Menu') {\n for (let i = 0, len = defaultFltrCols.length; i < len; i++) {\n defaultFltrCols[i].uid = defaultFltrCols[i].uid ||\n this.parent.grabColumnByFieldFromAllCols(defaultFltrCols[i].field).uid;\n }\n }\n let excelPredicate = CheckBoxFilterBase.getPredicate(defaultFltrCols);\n for (let prop of Object.keys(excelPredicate)) {\n predicateList.push(excelPredicate[prop]);\n }\n }\n if (foreignCols.length) {\n for (let col of foreignCols) {\n col.uid = col.uid || this.parent.grabColumnByFieldFromAllCols(col.field).uid;\n let column = this.parent.grabColumnByUidFromAllCols(col.uid);\n if (!column) {\n this.parent.log('initial_action', { moduleName: 'filter', columnName: col.field });\n }\n if (column.isForeignColumn() && getColumnByForeignKeyValue(col.field, foreignColumn) && !skipFoerign) {\n actualFilter.push(col);\n predicateList = this.fGeneratePredicate(column, predicateList);\n }\n else {\n let excelPredicate = CheckBoxFilterBase.getPredicate(columns);\n for (let prop of Object.keys(excelPredicate)) {\n predicateList.push(excelPredicate[prop]);\n }\n }\n }\n }\n if (predicateList.length) {\n query.where(Predicate.and(predicateList));\n }\n else {\n this.parent.notify(showEmptyGrid, {});\n }\n }\n return query;\n }\n fGeneratePredicate(col, predicateList) {\n let fPredicate = {};\n if (col) {\n this.parent.notify(generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(fPredicate.predicate);\n }\n }\n return predicateList;\n }\n /**\n * The function is used to get dataManager promise by executing given Query.\n * @param {Query} query - Defines the query which will execute along with data processing.\n * @return {Promise}\n * @hidden\n */\n getData(args = { requestType: '' }, query) {\n let key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ?\n args.foreignKeyData : this.parent.getPrimaryKeyFieldNames());\n this.parent.log('datasource_syntax_mismatch', { dataState: this.parent });\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n let def = this.eventPromise(args, query, key);\n return def.promise;\n }\n else {\n let crud;\n switch (args.requestType) {\n case 'delete':\n query = query ? query : this.generateQuery();\n let len = Object.keys(args.data).length;\n if (len === 1) {\n crud = this.dataManager.remove(key, args.data[0], query.fromTable, query);\n }\n else {\n let changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n changes.deletedRecords = args.data;\n crud = this.dataManager.saveChanges(changes, key, query.fromTable, query.requiresCount());\n }\n break;\n case 'save':\n if (isBlazor() && this.parent.isServerRendered) {\n this.parent.notify('offset', args);\n }\n query = query ? query : this.generateQuery();\n args.index = isNullOrUndefined(args.index) ? 0 : args.index;\n crud = this.dataManager.insert(args.data, query.fromTable, query, args.index);\n break;\n }\n let promise = 'promise';\n args[promise] = crud;\n if (crud && !Array.isArray(crud) && !crud.hasOwnProperty('deletedRecords')) {\n if (isBlazor()) {\n return crud.then((result) => {\n return this.insert(query, args);\n }).catch((e) => {\n return null;\n });\n }\n else {\n return crud.then((result) => {\n return this.insert(query, args);\n });\n }\n }\n else {\n return this.insert(query, args);\n }\n }\n }\n insert(query, args) {\n if (args.requestType === 'save') {\n this.parent.notify(recordAdded, args);\n }\n return this.executeQuery(query);\n }\n executeQuery(query) {\n if (this.dataManager.ready) {\n let deferred = new Deferred();\n let ready = this.dataManager.ready;\n ready.then((e) => {\n this.dataManager.executeQuery(query).then((result) => {\n deferred.resolve(result);\n });\n }).catch((e) => {\n deferred.reject(e);\n });\n return deferred.promise;\n }\n else {\n return this.dataManager.executeQuery(query);\n }\n }\n formatGroupColumn(value, field) {\n let gObj = this.parent;\n let serviceLocator = this.serviceLocator;\n let column = this.getColumnByField(field);\n let date = value;\n if (!column.type) {\n column.type = date.getDay ? (date.getHours() > 0 || date.getMinutes() > 0 ||\n date.getSeconds() > 0 || date.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n if (isNullOrUndefined(column.getFormatter())) {\n setFormatter(serviceLocator, column);\n }\n let formatVal = ValueFormatter.prototype.toView(value, column.getFormatter());\n return formatVal;\n }\n crudActions(args) {\n let query = this.generateQuery();\n let promise = null;\n let pr = 'promise';\n let key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ? args.foreignKeyData :\n this.parent.getPrimaryKeyFieldNames());\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.eventPromise(args, query, key);\n }\n switch (args.requestType) {\n case 'save':\n if (isBlazor() && this.parent.isServerRendered) {\n this.parent.notify('offset', args);\n }\n promise = this.dataManager.update(key, args.data, query.fromTable, query, args.previousData);\n break;\n }\n args[pr] = promise ? promise : args[pr];\n this.parent.notify(crudAction, args);\n }\n /** @hidden */\n saveChanges(changes, key, original, query = this.generateQuery()) {\n query.requiresCount();\n if ('result' in this.parent.dataSource) {\n let state;\n state = this.getStateEventArgument(query);\n let deff = new Deferred();\n let args = {\n requestType: 'batchsave', changes: changes, key: key, query: query,\n endEdit: deff.resolve\n };\n this.setState({ isPending: true, resolver: deff.resolve });\n this.parent.trigger(dataSourceChanged, args);\n return deff.promise;\n }\n else {\n let changedRecords = 'changedRecords';\n let addedRecords = 'addedRecords';\n let data = 'data';\n if (isBlazor() && this.parent.isServerRendered) {\n for (let i = 0; i < changes[changedRecords].length; i++) {\n let args = { data: changes[changedRecords][i] };\n this.parent.notify('offset', args);\n changes[changedRecords][i] = args[data];\n }\n for (let i = 0; i < changes[addedRecords].length; i++) {\n let args = { data: changes[addedRecords][i] };\n this.parent.notify('offset', args);\n changes[addedRecords][i] = args[data];\n }\n }\n let promise = this.dataManager.saveChanges(changes, key, query.fromTable, query, original);\n return promise;\n }\n }\n getKey(keys) {\n if (keys && keys.length) {\n return keys[0];\n }\n return undefined;\n }\n /** @hidden */\n isRemote() {\n return this.dataManager.dataSource.offline !== true && this.dataManager.dataSource.url !== undefined &&\n this.dataManager.dataSource.url !== '';\n }\n addRows(e) {\n for (let i = e.records.length; i > 0; i--) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, e.records[i - 1]);\n }\n }\n removeRows(e) {\n let json = this.dataManager.dataSource.json;\n this.dataManager.dataSource.json = json.filter((value, index) => e.records.indexOf(value) === -1);\n }\n getColumnByField(field) {\n let col;\n return (this.parent.columnModel).some((column) => {\n col = column;\n return column.field === field;\n }) && col;\n }\n destroy() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(rowsAdded, this.addRows);\n this.parent.off(rowsRemoved, this.removeRows);\n this.parent.off(dataSourceModified, this.initDataManager);\n this.parent.off(destroy, this.destroy);\n this.parent.off(updateData, this.crudActions);\n this.parent.off(addDeleteAction, this.getData);\n this.parent.off(autoCol, this.refreshFilteredCols);\n this.parent.off(columnsPrepared, this.refreshFilteredCols);\n }\n getState() {\n return this.dataState;\n }\n setState(state) {\n return this.dataState = state;\n }\n getForeignKeyDataState() {\n return this.foreignKeyDataState;\n }\n setForeignKeyDataState(state) {\n this.foreignKeyDataState = state;\n }\n getStateEventArgument(query) {\n let adaptr = new UrlAdaptor();\n let dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n let state = adaptr.processQuery(dm, query);\n let data = JSON.parse(state.data);\n return extend(data, state.pvtData);\n }\n eventPromise(args, query, key) {\n let state;\n let dataArgs = args;\n state = this.getStateEventArgument(query);\n let def = new Deferred();\n let deff = new Deferred();\n if (args.requestType !== undefined && this.dataState.isDataChanged !== false) {\n state.action = args;\n if (args.requestType === 'save' || args.requestType === 'delete') {\n let editArgs = args;\n editArgs.key = key;\n let promise = 'promise';\n editArgs[promise] = deff.promise;\n editArgs.state = state;\n this.setState({ isPending: true, resolver: deff.resolve });\n dataArgs.endEdit = deff.resolve;\n dataArgs.cancelEdit = deff.reject;\n this.parent.trigger(dataSourceChanged, editArgs);\n deff.promise.then((e) => {\n this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n if (editArgs.requestType === 'save') {\n this.parent.notify(recordAdded, editArgs);\n }\n this.parent.trigger(dataStateChange, state);\n })\n .catch(() => void 0);\n }\n else {\n this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n this.parent.trigger(dataStateChange, state);\n }\n }\n else {\n this.setState({});\n def.resolve(this.parent.dataSource);\n }\n return def;\n }\n /**\n * Gets the columns where searching needs to be performed from the Grid.\n * @return {string[]}\n */\n getSearchColumnFieldNames() {\n let colFieldNames = [];\n let columns = this.parent.getColumns();\n for (let col of columns) {\n if (col.allowSearching && !isNullOrUndefined(col.field)) {\n colFieldNames.push(col.field);\n }\n }\n return colFieldNames;\n }\n refreshFilteredCols() {\n if (this.parent.allowFiltering && this.parent.filterSettings.columns.length) {\n refreshFilteredColsUid(this.parent, this.parent.filterSettings.columns);\n }\n }\n}\n\n/**\n * Row\n * @hidden\n */\nclass Row {\n constructor(options) {\n merge(this, options);\n }\n clone() {\n let row = new Row({});\n merge(row, this);\n row.cells = this.cells.map((cell) => cell.clone());\n return row;\n }\n}\n\n/**\n * Cell\n * @hidden\n */\nclass Cell {\n constructor(options) {\n this.isSpanned = false;\n this.isRowSpanned = false;\n merge(this, options);\n }\n clone() {\n let cell = new Cell({});\n merge(cell, this);\n return cell;\n }\n}\n\n/**\n * `CellMergeRender` module.\n * @hidden\n */\nclass CellMergeRender {\n constructor(serviceLocator, parent) {\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n }\n render(cellArgs, row, i, td) {\n let cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n let cellRenderer = cellRendererFact.getCellRenderer(row.cells[i].cellType || CellType.Data);\n let colSpan = row.cells[i].cellSpan ? row.cells[i].cellSpan :\n (cellArgs.colSpan + i) <= row.cells.length ? cellArgs.colSpan : row.cells.length - i;\n let rowSpan = cellArgs.rowSpan;\n let visible = 0;\n let spannedCell;\n if (row.index > 0) {\n let cells = this.parent.groupSettings.columns.length > 0 &&\n !this.parent.getRowsObject()[row.index - 1].isDataRow ? this.parent.getRowsObject()[row.index].cells :\n this.parent.getRowsObject()[row.index - 1].cells;\n let targetCell = row.cells[i];\n let uid = 'uid';\n spannedCell = cells.filter((cell) => cell.column.uid === targetCell.column[uid])[0];\n }\n let colSpanLen = spannedCell && spannedCell.colSpanRange > 1 && spannedCell.rowSpanRange > 1 ?\n spannedCell.colSpanRange : colSpan;\n for (let j = i + 1; j < i + colSpanLen && j < row.cells.length; j++) {\n if (row.cells[j].visible === false) {\n visible++;\n }\n else {\n row.cells[j].isSpanned = true;\n }\n }\n if (visible > 0) {\n for (let j = i + colSpan; j < i + colSpan + visible && j < row.cells.length; j++) {\n row.cells[j].isSpanned = true;\n }\n if (i + colSpan + visible >= row.cells.length) {\n colSpan -= (i + colSpan + visible) - row.cells.length;\n }\n }\n if (row.cells[i].cellSpan) {\n row.data[cellArgs.column.field] = row.cells[i].spanText;\n td = cellRenderer.render(row.cells[i], row.data, { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' });\n }\n if (colSpan > 1) {\n attributes(td, { 'colSpan': colSpan.toString(), 'aria-colSpan': colSpan.toString() });\n }\n if (rowSpan > 1) {\n attributes(td, { 'rowspan': rowSpan.toString(), 'aria-rowspan': rowSpan.toString() });\n row.cells[i].isRowSpanned = true;\n row.cells[i].rowSpanRange = Number(rowSpan);\n if (colSpan > 1) {\n row.cells[i].colSpanRange = Number(colSpan);\n }\n }\n if (row.index > 0 && (spannedCell.rowSpanRange > 1)) {\n row.cells[i].isSpanned = true;\n row.cells[i].rowSpanRange = Number(spannedCell.rowSpanRange - 1);\n row.cells[i].colSpanRange = spannedCell.rowSpanRange > 0 ? spannedCell.colSpanRange : 1;\n }\n if (this.parent.enableColumnVirtualization && !row.cells[i].cellSpan &&\n !this.containsKey(cellArgs.column.field, cellArgs.data[cellArgs.column.field])) {\n this.backupMergeCells(cellArgs.column.field, cellArgs.data[cellArgs.column.field], cellArgs.colSpan);\n }\n return td;\n }\n backupMergeCells(fName, data, span) {\n this.setMergeCells(this.generteKey(fName, data), span);\n }\n generteKey(fname, data) {\n return fname + '__' + data.toString();\n }\n splitKey(key) {\n return key.split('__');\n }\n containsKey(fname, data) {\n return this.getMergeCells().hasOwnProperty(this.generteKey(fname, data));\n }\n getMergeCells() {\n return this.parent.mergeCells;\n }\n setMergeCells(key, span) {\n this.parent.mergeCells[key] = span;\n }\n updateVirtualCells(rows) {\n let mCells = this.getMergeCells();\n for (let key of Object.keys(mCells)) {\n let value = mCells[key];\n let merge$$1 = this.splitKey(key);\n let columnIndex = this.getIndexFromAllColumns(merge$$1[0]);\n let vColumnIndices = this.parent.getColumnIndexesInView();\n let span = value - (vColumnIndices[0] - columnIndex);\n if (columnIndex < vColumnIndices[0] && span > 1) {\n for (let row of rows) {\n if (row.data[merge$$1[0]].toString() === merge$$1[1].toString()) {\n row.cells[0].cellSpan = span;\n row.cells[0].spanText = merge$$1[1];\n break;\n }\n }\n }\n }\n return rows;\n }\n getIndexFromAllColumns(field) {\n let index = iterateArrayOrObject(this.parent.getVisibleColumns(), (item, index) => {\n if (item.field === field) {\n return index;\n }\n return undefined;\n })[0];\n return index;\n }\n}\n\n/**\n * RowRenderer class which responsible for building row content.\n * @hidden\n */\nclass RowRenderer {\n constructor(serviceLocator, cellType, parent) {\n this.isSpan = false;\n this.cellType = cellType;\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n this.element = this.parent.createElement('tr', { attrs: { role: 'row' } });\n }\n /**\n * Function to render the row content based on Column[] and data.\n * @param {Column[]} columns\n * @param {Object} data?\n * @param {{[x:string]:Object}} attributes?\n * @param {string} rowTemplate?\n */\n render(row, columns, attributes$$1, rowTemplate, cloneNode) {\n return this.refreshRow(row, columns, attributes$$1, rowTemplate, cloneNode);\n }\n /**\n * Function to refresh the row content based on Column[] and data.\n * @param {Column[]} columns\n * @param {Object} data?\n * @param {{[x:string]:Object}} attributes?\n * @param {string} rowTemplate?\n */\n refresh(row, columns, isChanged, attributes$$1, rowTemplate) {\n if (isChanged) {\n row.data = extendObjWithFn({}, row.changes);\n this.refreshMergeCells(row);\n }\n let node = this.parent.element.querySelector('[data-uid=' + row.uid + ']');\n let tr = this.refreshRow(row, columns, attributes$$1, rowTemplate, null, isChanged);\n let cells = [].slice.call(tr.cells);\n node.innerHTML = '';\n for (let cell of cells) {\n node.appendChild(cell);\n }\n }\n refreshRow(row, columns, attributes$$1, rowTemplate, cloneNode, isEdit) {\n let tr = !isNullOrUndefined(cloneNode) ? cloneNode : this.element.cloneNode();\n let rowArgs = { data: row.data };\n let cellArgs = { data: row.data };\n let attrCopy = extend({}, attributes$$1, {});\n let chekBoxEnable = this.parent.getColumns().filter((col) => col.type === 'checkbox' && col.field)[0];\n let value = false;\n if (chekBoxEnable) {\n value = getObject(chekBoxEnable.field, rowArgs.data);\n }\n if (row.isDataRow) {\n row.isSelected = this.parent.getSelectedRowIndexes().indexOf(row.index) > -1 || value;\n }\n if (row.isDataRow && this.parent.isCheckBoxSelection\n && this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n row.isSelected = true;\n if (this.parent.getSelectedRowIndexes().indexOf(row.index) === -1) {\n this.parent.getSelectedRowIndexes().push(row.index);\n }\n }\n this.buildAttributeFromRow(tr, row);\n attributes(tr, attrCopy);\n setStyleAndAttributes(tr, row.attributes);\n let cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n for (let i = 0, len = row.cells.length; i < len; i++) {\n let cell = row.cells[i];\n cell.isSelected = row.isSelected;\n let cellRenderer = cellRendererFact.getCellRenderer(row.cells[i].cellType || CellType.Data);\n let attrs = { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' };\n if (row.isExpand && row.cells[i].cellType === CellType.DetailExpand) {\n attrs['class'] = this.parent.isPrinting ? 'e-detailrowcollapse' : 'e-detailrowexpand';\n }\n let td = cellRenderer.render(row.cells[i], row.data, attrs, row.isExpand, isEdit);\n if (row.cells[i].cellType !== CellType.Filter) {\n if (row.cells[i].cellType === CellType.Data || row.cells[i].cellType === CellType.CommandColumn) {\n this.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[i].foreignKeyData,\n requestType: this.parent.requestTypeAction\n }));\n let isRowSpanned = false;\n if (row.index > 0 && this.isSpan) {\n let prevRowCells = this.parent.groupSettings.columns.length > 0 &&\n !this.parent.getRowsObject()[row.index - 1].isDataRow ?\n this.parent.getRowsObject()[row.index].cells : this.parent.getRowsObject()[row.index - 1].cells;\n let uid = 'uid';\n let prevRowCell = prevRowCells.filter((cell) => cell.column.uid === row.cells[i].column[uid])[0];\n isRowSpanned = prevRowCell.isRowSpanned ? prevRowCell.isRowSpanned : prevRowCell.rowSpanRange > 1;\n }\n if (cellArgs.colSpan > 1 || row.cells[i].cellSpan > 1 || cellArgs.rowSpan > 1 || isRowSpanned) {\n this.isSpan = true;\n let cellMerge = new CellMergeRender(this.serviceLocator, this.parent);\n td = cellMerge.render(cellArgs, row, i, td);\n }\n }\n if (!row.cells[i].isSpanned) {\n tr.appendChild(td);\n }\n }\n }\n let args = { row: tr, rowHeight: this.parent.rowHeight };\n if (row.isDataRow) {\n this.parent.trigger(rowDataBound, extend(rowArgs, args));\n if (this.parent.childGrid || this.parent.isRowDragable() || this.parent.detailTemplate) {\n let td = tr.querySelectorAll('.e-rowcell:not(.e-hide)')[0];\n if (td) {\n td.classList.add('e-detailrowvisible');\n }\n }\n }\n if (this.parent.enableVirtualization) {\n rowArgs.rowHeight = this.parent.rowHeight;\n }\n if (rowArgs.rowHeight) {\n tr.style.height = rowArgs.rowHeight + 'px';\n }\n else if (this.parent.rowHeight && (tr.querySelector('.e-headercell') || tr.querySelector('.e-groupcaption'))) {\n tr.style.height = this.parent.rowHeight + 'px';\n }\n if (row.cssClass) {\n tr.classList.add(row.cssClass);\n }\n let vFTable = this.parent.enableColumnVirtualization && this.parent.frozenColumns !== 0;\n if (!vFTable && this.parent.element.scrollHeight > this.parent.height && this.parent.aggregates.length) {\n for (let i = 0; i < this.parent.aggregates.length; i++) {\n let property = 'properties';\n let column = 'columns';\n if (this.parent.aggregates[i][property][column][0].footerTemplate) {\n let summarycell = tr.querySelectorAll('.e-summarycell');\n if (summarycell.length) {\n let lastSummaryCell = (summarycell[summarycell.length - 1]);\n addClass([lastSummaryCell], ['e-lastsummarycell']);\n }\n }\n }\n }\n return tr;\n }\n refreshMergeCells(row) {\n for (let cell of row.cells) {\n cell.isSpanned = false;\n }\n return row;\n }\n /**\n * Function to check and add alternative row css class.\n * @param {Element} tr\n * @param {{[x:string]:Object}} attr\n */\n buildAttributeFromRow(tr, row) {\n let attr = {};\n let prop = { 'rowindex': 'aria-rowindex', 'dataUID': 'data-uid', 'ariaSelected': 'aria-selected' };\n let classes = [];\n if (row.isDataRow) {\n classes.push('e-row');\n }\n if (row.isAltRow) {\n classes.push('e-altrow');\n }\n if (!isNullOrUndefined(row.index)) {\n attr[prop.rowindex] = row.index;\n }\n if (row.rowSpan) {\n attr.rowSpan = row.rowSpan;\n }\n if (row.uid) {\n attr[prop.dataUID] = row.uid;\n }\n if (row.isSelected) {\n attr[prop.ariaSelected] = true;\n }\n if (row.visible === false) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(tr, attr);\n }\n}\n\n/**\n * RowModelGenerator is used to generate grid data rows.\n * @hidden\n */\nclass RowModelGenerator {\n /**\n * Constructor for header renderer module\n */\n constructor(parent) {\n this.parent = parent;\n }\n generateRows(data, args) {\n let rows = [];\n let startIndex = this.parent.enableVirtualization ? args.startIndex : 0;\n startIndex = this.parent.enableInfiniteScrolling ? this.getInfiniteIndex(args) : startIndex;\n for (let i = 0, len = Object.keys(data).length; i < len; i++, startIndex++) {\n rows[i] = this.generateRow(data[i], startIndex);\n }\n return rows;\n }\n ensureColumns() {\n //TODO: generate dummy column for group, detail here;\n let cols = [];\n if (this.parent.detailTemplate || this.parent.childGrid) {\n let args = {};\n this.parent.notify(detailIndentCellInfo, args);\n cols.push(this.generateCell(args, null, CellType.DetailExpand));\n }\n if (this.parent.isRowDragable()) {\n cols.push(this.generateCell({}, null, CellType.RowDragIcon));\n }\n return cols;\n }\n generateRow(data, index, cssClass, indent, pid, tIndex, parentUid) {\n let options = {};\n options.foreignKeyData = {};\n let isServerRendered = 'isServerRendered';\n options.uid = isBlazor() && this.parent[isServerRendered] ? this.parent.getRowUid('grid-row') : getUid('grid-row');\n options.data = data;\n options.index = index;\n options.indent = indent;\n options.tIndex = tIndex;\n options.isDataRow = true;\n options.parentGid = pid;\n options.parentUid = parentUid;\n if (this.parent.isPrinting) {\n if (this.parent.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (this.parent.hierarchyPrintMode === 'Expanded' && this.parent.expandedRows && this.parent.expandedRows[index]) {\n options.isExpand = this.parent.expandedRows[index].isExpand;\n }\n }\n options.cssClass = cssClass;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n if (isBlazor() && this.parent.isServerRendered && this.parent.enableVirtualization && this.parent.selectionModule.checkBoxState) {\n options.isSelected = this.parent.selectionModule.checkBoxState;\n if (options.isSelected && this.parent.selectionModule.selectedRowIndexes.indexOf(index) === -1) {\n this.parent.selectionModule.selectedRowIndexes.push(index);\n }\n }\n else {\n options.isSelected = this.parent.getSelectedRowIndexes().indexOf(index) > -1;\n }\n this.refreshForeignKeyRow(options);\n let cells = this.ensureColumns();\n let row = new Row(options);\n row.cells = cells.concat(this.generateCells(options));\n return row;\n }\n refreshForeignKeyRow(options) {\n let foreignKeyColumns = this.parent.getForeignKeyColumns();\n for (let i = 0; i < foreignKeyColumns.length; i++) {\n setValue(foreignKeyColumns[i].field, getForeignData(foreignKeyColumns[i], options.data), options.foreignKeyData);\n }\n }\n generateCells(options) {\n let dummies = this.parent.getColumns();\n let tmp = [];\n for (let i = 0; i < dummies.length; i++) {\n tmp.push(this.generateCell(dummies[i], options.uid, isNullOrUndefined(dummies[i].commands) ? undefined : CellType.CommandColumn, null, i, options.foreignKeyData));\n }\n return tmp;\n }\n generateCell(column, rowId, cellType, colSpan, oIndex, foreignKeyData$$1) {\n let opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(column.field || column.template),\n 'isTemplate': !isNullOrUndefined(column.template),\n 'rowID': rowId,\n 'column': column,\n 'cellType': !isNullOrUndefined(cellType) ? cellType : CellType.Data,\n 'colSpan': colSpan,\n 'commands': column.commands,\n 'isForeignKey': column.isForeignColumn && column.isForeignColumn(),\n 'foreignKeyData': column.isForeignColumn && column.isForeignColumn() && getValue(column.field, foreignKeyData$$1)\n };\n if (opt.isDataCell || opt.column.type === 'checkbox' || opt.commands) {\n opt.index = oIndex;\n }\n return new Cell(opt);\n }\n refreshRows(input) {\n for (let i = 0; i < input.length; i++) {\n this.refreshForeignKeyRow(input[i]);\n input[i].cells = this.generateCells(input[i]);\n }\n return input;\n }\n getInfiniteIndex(args) {\n return args.requestType === 'infiniteScroll' || args.requestType === 'delete' || args.action === 'add'\n ? args.startIndex : 0;\n }\n}\n\n/**\n * Summary row model generator\n * @hidden\n */\nclass SummaryModelGenerator {\n /**\n * Constructor for Summary row model generator\n */\n constructor(parent) {\n this.parent = parent;\n }\n getData() {\n let rows = [];\n let row = this.parent.aggregates.slice();\n for (let i = 0; i < row.length; i++) {\n let columns = row[i].columns.filter((column) => {\n return !(column.footerTemplate || column.groupFooterTemplate || column.groupCaptionTemplate)\n || this.columnSelector(column);\n });\n if (columns.length) {\n rows.push({ columns: columns });\n }\n }\n return rows;\n }\n columnSelector(column) {\n return column.footerTemplate !== undefined;\n }\n getColumns(start, end) {\n let columns = [];\n if (this.parent.allowGrouping) {\n for (let i = 0; i < this.parent.groupSettings.columns.length; i++) {\n columns.push(new Column({}));\n }\n }\n if (this.parent.detailTemplate || !isNullOrUndefined(this.parent.childGrid) || this.parent.isRowDragable()) {\n columns.push(new Column({}));\n }\n columns.push(...this.parent.getColumns());\n return isNullOrUndefined(start) ? columns : columns.slice(start, end);\n }\n generateRows(input, args, start, end, columns) {\n if (input.length === 0) {\n if (args === undefined || !args.count) {\n return [];\n }\n }\n let data = this.buildSummaryData(input, args);\n let rows = [];\n let row = this.getData();\n for (let i = 0; i < row.length; i++) {\n rows.push(this.getGeneratedRow(row[i], data[i], args ? args.level : undefined, start, end, args ? args.parentUid : undefined, columns));\n }\n return rows;\n }\n getGeneratedRow(summaryRow, data, raw, start, end, parentUid, columns) {\n let tmp = [];\n let indents = this.getIndentByLevel(raw);\n let isDetailGridAlone = !isNullOrUndefined(this.parent.childGrid);\n let indentLength = this.parent.getIndentCount();\n if (this.parent.isRowDragable()) {\n indents = ['e-indentcelltop'];\n }\n let values = columns ? columns : this.getColumns(start, end);\n for (let i = 0; i < values.length; i++) {\n tmp.push(this.getGeneratedCell(values[i], summaryRow, i >= indentLength ? this.getCellType() :\n i < this.parent.groupSettings.columns.length ? CellType.Indent : CellType.DetailFooterIntent, indents[i], isDetailGridAlone));\n }\n let row = new Row({ data: data, attributes: { class: 'e-summaryrow' } });\n row.cells = tmp;\n if (isBlazor() && this.parent.isServerRendered && !isNullOrUndefined(parentUid)) {\n row.uid = this.parent.getRowUid('grid-row');\n }\n else {\n row.uid = getUid('grid-row');\n }\n row.parentUid = parentUid;\n row.visible = tmp.some((cell) => cell.isDataCell && cell.visible);\n return row;\n }\n getGeneratedCell(column, summaryRow, cellType, indent, isDetailGridAlone) {\n //Get the summary column by display\n let sColumn = summaryRow.columns.filter((scolumn) => scolumn.columnName === column.field)[0];\n let attrs = {\n 'style': { 'textAlign': column.textAlign },\n 'e-mappinguid': column.uid, index: column.index\n };\n if (indent) {\n attrs.class = indent;\n }\n if (isNullOrUndefined(indent) && isDetailGridAlone) {\n attrs.class = 'e-detailindentcelltop';\n }\n let opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(sColumn),\n 'isTemplate': sColumn && !isNullOrUndefined(sColumn.footerTemplate\n || sColumn.groupFooterTemplate || sColumn.groupCaptionTemplate),\n 'column': sColumn || {},\n 'attributes': attrs,\n 'cellType': cellType\n };\n opt.column.headerText = column.headerText;\n return new Cell(opt);\n }\n buildSummaryData(data, args) {\n let dummy = [];\n let summaryRows = this.getData();\n let single = {};\n for (let i = 0; i < summaryRows.length; i++) {\n single = {};\n let column = summaryRows[i].columns;\n for (let j = 0; j < column.length; j++) {\n single = this.setTemplate(column[j], (args && args.aggregates) ? args : data, single);\n }\n dummy.push(single);\n }\n return dummy;\n }\n getIndentByLevel(data) {\n return this.parent.groupSettings.columns.map(() => 'e-indentcelltop');\n }\n setTemplate(column, data, single) {\n let types = column.type;\n let helper = {};\n let formatFn = column.getFormatter() || (() => (a) => a)();\n let group = data;\n if (!(types instanceof Array)) {\n types = [column.type];\n }\n for (let i = 0; i < types.length; i++) {\n let key = column.field + ' - ' + types[i].toLowerCase();\n let disp = column.columnName;\n let val = types[i] !== 'Custom' && group.aggregates && key in group.aggregates ? group.aggregates[key] :\n calculateAggregate(types[i], group.aggregates ? group : data, column, this.parent);\n single[disp] = single[disp] || {};\n single[disp][key] = val;\n single[disp][types[i]] = !isNullOrUndefined(val) ? formatFn(val) : ' ';\n if (group.field) {\n single[disp].field = group.field;\n single[disp].key = group.key;\n }\n }\n helper.format = column.getFormatter();\n column.setTemplate(helper);\n return single;\n }\n getCellType() {\n return CellType.Summary;\n }\n}\nclass GroupSummaryModelGenerator extends SummaryModelGenerator {\n columnSelector(column) {\n return column.groupFooterTemplate !== undefined;\n }\n getIndentByLevel(level = this.parent.groupSettings.columns.length) {\n return this.parent.groupSettings.columns.map((v, indx) => indx <= level - 1 ? '' : 'e-indentcelltop');\n }\n getCellType() {\n return CellType.GroupSummary;\n }\n}\nclass CaptionSummaryModelGenerator extends SummaryModelGenerator {\n columnSelector(column) {\n return column.groupCaptionTemplate !== undefined;\n }\n getData() {\n let initVal = { columns: [] };\n return [super.getData().reduce((prev, cur) => {\n prev.columns = [...prev.columns, ...cur.columns];\n return prev;\n }, initVal)];\n }\n isEmpty() {\n return (this.getData()[0].columns || []).length === 0;\n }\n getCellType() {\n return CellType.CaptionSummary;\n }\n}\n\n/**\n * GroupModelGenerator is used to generate group caption rows and data rows.\n * @hidden\n */\nclass GroupModelGenerator extends RowModelGenerator {\n constructor(parent) {\n super(parent);\n this.rows = [];\n this.index = 0;\n this.parent = parent;\n this.summaryModelGen = new GroupSummaryModelGenerator(parent);\n this.captionModelGen = new CaptionSummaryModelGenerator(parent);\n }\n generateRows(data, args) {\n if (this.parent.groupSettings.columns.length === 0) {\n return super.generateRows(data, args);\n }\n let isInfiniteScroll = this.parent.enableInfiniteScrolling && args.requestType === 'infiniteScroll';\n this.rows = [];\n this.index = this.parent.enableVirtualization || isInfiniteScroll ? args.startIndex : 0;\n for (let i = 0, len = data.length; i < len; i++) {\n this.getGroupedRecords(0, data[i], data.level, i, undefined, this.rows.length);\n }\n this.index = 0;\n if (this.parent.isCollapseStateEnabled()) {\n this.ensureRowVisibility();\n }\n return this.rows;\n }\n getGroupedRecords(index, data, raw, parentid, childId, tIndex, parentUid) {\n let isRenderCaption = this.parent.enableInfiniteScrolling && this.prevKey === data.key;\n let level = raw;\n if (isNullOrUndefined(data.items)) {\n if (isNullOrUndefined(data.GroupGuid)) {\n this.rows = this.rows.concat(this.generateDataRows(data, index, parentid, this.rows.length, parentUid));\n }\n else {\n for (let j = 0, len = data.length; j < len; j++) {\n this.getGroupedRecords(index, data[j], data.level, parentid, index, this.rows.length, parentUid);\n }\n }\n }\n else {\n let captionRow = this.generateCaptionRow(data, index, parentid, childId, tIndex, parentUid);\n if (!isRenderCaption) {\n this.rows = this.rows.concat(captionRow);\n }\n if (data.items && data.items.length) {\n this.getGroupedRecords(index + 1, data.items, data.items.level, parentid, index + 1, this.rows.length, captionRow.uid);\n }\n if (this.parent.aggregates.length) {\n let rowCnt = this.rows.length;\n this.rows.push(...this.summaryModelGen.generateRows(data, { level: level, parentUid: captionRow.uid }));\n for (let i = rowCnt - 1; i >= 0; i--) {\n if (this.rows[i].isCaptionRow) {\n this.rows[i].aggregatesCount = this.rows.length - rowCnt;\n }\n else if (!this.rows[i].isCaptionRow && !this.rows[i].isDataRow) {\n break;\n }\n }\n }\n }\n this.prevKey = data.key;\n }\n getCaptionRowCells(field, indent, data) {\n let cells = [];\n let visibles = [];\n let column = this.parent.getColumnByField(field);\n let indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization) {\n column = this.parent.columns.filter((c) => c.field === field)[0];\n }\n let groupedLen = this.parent.groupSettings.columns.length;\n let gObj = this.parent;\n if (!this.parent.enableColumnVirtualization || indexes.indexOf(indent) !== -1) {\n for (let i = 0; i < indent; i++) {\n cells.push(this.generateIndentCell());\n }\n cells.push(this.generateCell({}, null, CellType.Expand));\n }\n indent = this.parent.enableColumnVirtualization ? 1 :\n (this.parent.getVisibleColumns().length + groupedLen + (gObj.detailTemplate || gObj.childGrid ? 1 : 0) -\n indent + (this.parent.getVisibleColumns().length ? -1 : 0));\n //Captionsummary cells will be added here. \n if (this.parent.aggregates.length && !this.captionModelGen.isEmpty()) {\n let captionCells = this.captionModelGen.generateRows(data)[0];\n extend(data, captionCells.data);\n let cIndex = 0;\n captionCells.cells.some((cell, index) => { cIndex = index; return cell.visible && cell.isDataCell; });\n visibles = captionCells.cells.slice(cIndex).filter((cell) => cell.visible);\n if (captionCells.visible && visibles[0].column.field === this.parent.getVisibleColumns()[0].field) {\n visibles = visibles.slice(1);\n }\n if (this.parent.getVisibleColumns().length === 1) {\n visibles = [];\n }\n indent = indent - visibles.length;\n }\n let cols = (!this.parent.enableColumnVirtualization ? [column] : this.parent.getColumns());\n let wFlag = true;\n for (let j = 0; j < cols.length; j++) {\n let tmpFlag = wFlag && indexes.indexOf(indent) !== -1;\n if (tmpFlag) {\n wFlag = false;\n }\n let cellType = !this.parent.enableColumnVirtualization || tmpFlag ?\n CellType.GroupCaption : CellType.GroupCaptionEmpty;\n indent = this.parent.enableColumnVirtualization && cellType === CellType.GroupCaption ? indent + groupedLen : indent;\n if (gObj.isRowDragable()) {\n indent++;\n }\n cells.push(this.generateCell(column, null, cellType, indent));\n }\n cells.push(...visibles);\n return cells;\n }\n generateCaptionRow(data, indent, parentID, childID, tIndex, parentUid) {\n let options = {};\n let records = 'records';\n let col = this.parent.getColumnByField(data.field);\n options.data = extend({}, data);\n if (col) {\n options.data.field = data.field;\n }\n options.isDataRow = false;\n options.isExpand = !this.parent.isCollapseStateEnabled();\n options.parentGid = parentID;\n options.childGid = childID;\n options.tIndex = tIndex;\n options.isCaptionRow = true;\n options.parentUid = parentUid;\n options.gSummary = !isNullOrUndefined(data.items[records]) ? data.items[records].length : data.items.length;\n options.uid = isBlazor() && this.parent.isServerRendered ? this.parent.getRowUid('grid-row') : getUid('grid-row');\n let row = new Row(options);\n row.indent = indent;\n this.getForeignKeyData(row);\n row.cells = this.getCaptionRowCells(data.field, indent, row.data);\n return row;\n }\n getForeignKeyData(row) {\n let data = row.data;\n let col = this.parent.getColumnByField(data.field);\n if (col && col.isForeignColumn && col.isForeignColumn()) {\n let fkValue = (isNullOrUndefined(data.key) ? '' : col.valueAccessor(col.foreignKeyValue, getForeignData(col, {}, data.key)[0], col));\n setValue('foreignKey', fkValue, row.data);\n }\n }\n generateDataRows(data, indent, childID, tIndex, parentUid) {\n let rows = [];\n let indexes = this.parent.getColumnIndexesInView();\n for (let i = 0, len = data.length; i < len; i++, tIndex++) {\n rows[i] = this.generateRow(data[i], this.index, i ? undefined : 'e-firstchildrow', indent, childID, tIndex, parentUid);\n for (let j = 0; j < indent; j++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(indent) === -1) {\n continue;\n }\n rows[i].cells.unshift(this.generateIndentCell());\n }\n this.index++;\n }\n return rows;\n }\n generateIndentCell() {\n return this.generateCell({}, null, CellType.Indent);\n }\n refreshRows(input) {\n let indexes = this.parent.getColumnIndexesInView();\n for (let i = 0; i < input.length; i++) {\n if (input[i].isDataRow) {\n input[i].cells = this.generateCells(input[i]);\n for (let j = 0; j < input[i].indent; j++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(input[i].indent) === -1) {\n continue;\n }\n input[i].cells.unshift(this.generateIndentCell());\n }\n }\n else {\n let cRow = this.generateCaptionRow(input[i].data, input[i].indent);\n input[i].cells = cRow.cells;\n }\n }\n return input;\n }\n ensureRowVisibility() {\n for (let i = 0; i < this.rows.length; i++) {\n let row = this.rows[i];\n if (!row.isCaptionRow) {\n continue;\n }\n for (let j = i + 1; j < this.rows.length; j++) {\n let childRow = this.rows[j];\n if (row.uid === childRow.parentUid) {\n this.rows[j].visible = row.isExpand;\n }\n }\n }\n }\n}\n\n/**\n * Content module is used to render grid content\n * @hidden\n */\nclass ContentRender {\n /**\n * Constructor for content renderer module\n */\n constructor(parent, serviceLocator) {\n this.rows = [];\n this.freezeRows = [];\n this.movableRows = [];\n this.freezeRowElements = [];\n /** @hidden */\n this.currentInfo = {};\n this.isLoaded = true;\n this.viewColIndexes = [];\n this.drop = (e) => {\n this.parent.notify(columnDrop, { target: e.target, droppedElement: e.droppedElement });\n remove(e.droppedElement);\n };\n this.infiniteCache = {};\n this.isRemove = false;\n this.visibleRows = [];\n this.visibleFrozenRows = [];\n this.isAddRows = false;\n this.isInfiniteFreeze = false;\n this.rafCallback = (args) => {\n let arg = args;\n return () => {\n if (this.parent.getFrozenColumns() && this.parent.enableVirtualization) {\n let mContentRows = [].slice.call(this.parent.getMovableVirtualContent().querySelectorAll('.e-row'));\n let fContentRows = [].slice.call(this.parent.getFrozenVirtualContent().querySelectorAll('.e-row'));\n this.isLoaded = !mContentRows ? false : mContentRows.length === fContentRows.length;\n if (this.parent.enableColumnVirtualization && args.requestType === 'virtualscroll' && this.isLoaded) {\n let mHdr = [].slice.call(this.parent.getMovableVirtualHeader().querySelectorAll('.e-row'));\n let fHdr = [].slice.call(this.parent.getFrozenVirtualHeader().querySelectorAll('.e-row'));\n this.isLoaded = mHdr.length === fHdr.length;\n }\n }\n this.ariaService.setBusy(this.getPanel().querySelector('.e-content'), false);\n if (this.parent.isDestroyed) {\n return;\n }\n let rows = this.rows.slice(0);\n if (this.parent.getFrozenColumns() !== 0) {\n rows = args.isFrozen ? this.freezeRows : this.movableRows;\n }\n this.parent.notify(contentReady, { rows: rows, args: arg });\n if (this.isLoaded) {\n this.parent.trigger(dataBound, {}, () => {\n if (this.parent.allowTextWrap) {\n this.parent.notify(freezeRender, { case: 'textwrap' });\n }\n });\n }\n if (arg) {\n let action = (arg.requestType || '').toLowerCase() + '-complete';\n this.parent.notify(action, arg);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n this.parent.trigger(actionComplete, args);\n }\n }\n if (this.isLoaded) {\n this.parent.hideSpinner();\n }\n };\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.generator = this.getModelGenerator();\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization && !this.parent.enableVirtualization) {\n this.parent.on(columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(colGroupRefresh, this.colGroupRefresh, this);\n this.parent.on(uiUpdate, this.enableAfterRender, this);\n this.parent.on(refreshInfiniteModeBlocks, this.refreshContentRows, this);\n this.parent.on(beforeCellFocused, this.beforeCellFocused, this);\n }\n beforeCellFocused(e) {\n if (e.byKey && (e.keyArgs.action === 'upArrow' || e.keyArgs.action === 'downArrow')) {\n this.pressedKey = e.keyArgs.action;\n }\n else {\n this.pressedKey = undefined;\n }\n }\n /**\n * The function is used to render grid content div\n */\n renderPanel() {\n let gObj = this.parent;\n let div = this.parent.element.querySelector('.e-gridcontent');\n if (div) {\n this.ariaService.setOptions(this.parent.element.querySelector('.e-content'), { busy: false });\n this.setPanel(div);\n return;\n }\n div = this.parent.createElement('div', { className: 'e-gridcontent' });\n let innerDiv = this.parent.createElement('div', {\n className: 'e-content'\n });\n this.ariaService.setOptions(innerDiv, { busy: false });\n div.appendChild(innerDiv);\n this.setPanel(div);\n gObj.element.appendChild(div);\n }\n /**\n * The function is used to render grid content table\n */\n renderTable() {\n let contentDiv = this.getPanel();\n let virtualTable = contentDiv.querySelector('.e-virtualtable');\n let virtualTrack = contentDiv.querySelector('.e-virtualtrack');\n if (this.parent.enableVirtualization && !isNullOrUndefined(virtualTable) && !isNullOrUndefined(virtualTrack)\n && (!isBlazor() || (isBlazor() && !this.parent.isServerRendered))) {\n remove(virtualTable);\n remove(virtualTrack);\n }\n contentDiv.appendChild(this.createContentTable('_content_table'));\n this.setTable(contentDiv.querySelector('.e-table'));\n this.ariaService.setOptions(this.getTable(), {\n multiselectable: this.parent.selectionSettings.type === 'Multiple'\n });\n this.initializeContentDrop();\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().classList.add('e-frozenhdrcont');\n }\n }\n /**\n * The function is used to create content table elements\n * @return {Element}\n * @hidden\n */\n createContentTable(id) {\n let innerDiv = this.getPanel().firstElementChild;\n if (!isBlazor()) {\n if (this.getTable()) {\n remove(this.getTable());\n }\n }\n let table = innerDiv.querySelector('.e-table') ? innerDiv.querySelector('.e-table') :\n this.parent.createElement('table', { className: 'e-table', attrs: {\n cellspacing: '0.25px', role: 'grid',\n id: this.parent.element.id + id\n }\n });\n this.setColGroup(this.parent.element.querySelector('.e-gridheader').querySelector('colgroup').cloneNode(true));\n table.appendChild(this.getColGroup());\n table.appendChild(this.parent.createElement('tbody'));\n innerDiv.appendChild(table);\n return innerDiv;\n }\n splitRows(idx) {\n if (this.parent.getFrozenColumns()) {\n if (idx === 0) {\n this.freezeRows = this.rows;\n this.freezeRowElements = this.rowElements;\n }\n else {\n this.movableRows = this.rows;\n }\n }\n }\n /**\n * Refresh the content of the Grid.\n * @return {void}\n */\n // tslint:disable-next-line:max-func-body-length\n refreshContentRows(args = {}) {\n let gObj = this.parent;\n if (gObj.currentViewData.length === 0) {\n return;\n }\n let dataSource = this.currentMovableRows || gObj.currentViewData;\n let frag = document.createDocumentFragment();\n if (!this.initialPageRecords) {\n this.initialPageRecords = extend([], dataSource);\n }\n let hdrfrag = document.createDocumentFragment();\n let columns = gObj.getColumns();\n let tr;\n let hdrTbody;\n let frzCols = gObj.getFrozenColumns();\n let trElement;\n let row = new RowRenderer(this.serviceLocator, null, this.parent);\n let isInfiniteScroll = this.parent.enableInfiniteScrolling\n && args.requestType === 'infiniteScroll';\n this.rowElements = [];\n this.rows = [];\n let fCont = this.getPanel().querySelector('.e-frozencontent');\n let mCont = this.getPanel().querySelector('.e-movablecontent');\n let cont = this.getPanel().querySelector('.e-content');\n if (isGroupAdaptive(gObj)) {\n if (['sorting', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder']\n .some((value) => { return args.requestType === value; })) {\n gObj.vcRows = [];\n gObj.vRows = [];\n }\n }\n let modelData;\n let isServerRendered = 'isServerRendered';\n if (isBlazor() && this.parent[isServerRendered]) {\n modelData = this.generator.generateRows(dataSource, args);\n if (this.parent.enableVirtualization) {\n this.prevInfo = this.prevInfo ? this.prevInfo : args.virtualInfo;\n this.prevInfo = args.virtualInfo.sentinelInfo && args.virtualInfo.sentinelInfo.axis === 'Y' && this.currentInfo.page &&\n this.currentInfo.page !== args.virtualInfo.page ? this.currentInfo : args.virtualInfo;\n }\n this.rows = modelData;\n this.freezeRows = modelData;\n this.rowElements = [].slice.call(this.getTable().querySelectorAll('tr.e-row[data-uid]'));\n if (frzCols) {\n this.movableRows = modelData.map((mRow) => {\n let sRow = new Row(mRow);\n sRow.cells = mRow.cells.slice(frzCols, mRow.cells.length);\n mRow.cells = mRow.cells.slice(0, frzCols);\n return sRow;\n });\n this.freezeRowElements = this.rowElements;\n }\n this.isLoaded = true;\n this.parent.hideSpinner();\n args.isFrozen = this.parent.getFrozenColumns() !== 0 && !args.isFrozen;\n let arg = extend({ rows: this.rows }, args);\n if (this.getTable().querySelector('.e-emptyrow')) {\n remove(this.getTable().querySelector('.e-emptyrow'));\n if (!isNullOrUndefined(this.getTable().querySelectorAll('.e-table > tbody')[1])) {\n remove(this.getTable().querySelectorAll('.e-table > tbody')[1]);\n }\n }\n this.parent.notify('contentcolgroup', {});\n this.rafCallback(arg)();\n if (frzCols) {\n cont.style.overflowY = 'hidden';\n fCont.style.height = ((mCont.offsetHeight) - getScrollBarWidth()) + 'px';\n mCont.style.overflowY = this.parent.height !== 'auto' ? 'scroll' : 'auto';\n fCont.style.borderRightWidth = '1px';\n this.parent.notify(contentReady, { rows: this.movableRows, args: extend({}, arg, { isFrozen: false }) });\n }\n if (!(this.parent.isCheckBoxSelection || this.parent.selectionSettings.type === 'Multiple')\n || (!this.parent.isPersistSelection && !this.parent.enableVirtualization)) {\n let rowIndex = 'editRowIndex';\n if (this.parent.editSettings.mode === 'Normal' && !isNullOrUndefined(args[rowIndex])) {\n this.parent.selectRow(args[rowIndex]);\n }\n }\n if (this.parent.enableVirtualization && !this.parent.getHeaderContent().querySelectorAll('.e-check').length) {\n let removeClassByUid = this.parent.getRows().filter((x) => x.getAttribute('aria-selected'))\n .map((y) => y.getAttribute('data-uid'));\n let addClassByUid = this.parent.getRows().filter((x) => x.getAttribute('aria-selected') === null)\n .map((y) => y.getAttribute('data-uid'));\n for (let i = 0; i < removeClassByUid.length; i++) {\n if (!isNullOrUndefined(this.parent.getRowObjectFromUID(removeClassByUid[i])) &&\n !this.parent.getRowObjectFromUID(removeClassByUid[i]).isSelected) {\n this.parent.getRowElementByUID(removeClassByUid[i]).removeAttribute('aria-selected');\n if (!isNullOrUndefined(this.parent.getRowElementByUID(removeClassByUid[i]).querySelector('.e-check'))) {\n removeClass([this.parent.getRowElementByUID(removeClassByUid[i]).querySelector('.e-check')], ['e-check']);\n }\n for (let j = 0; j < this.parent.getRowElementByUID(removeClassByUid[i]).children.length; j++) {\n this.parent.getRowElementByUID(removeClassByUid[i])\n .children[j].classList.remove('e-selectionbackground', 'e-active');\n }\n }\n }\n for (let i = 0; i < addClassByUid.length; i++) {\n if (!isNullOrUndefined(this.parent.getRowObjectFromUID(addClassByUid[i]))\n && this.parent.getRowObjectFromUID(addClassByUid[i]).isSelected) {\n this.parent.getRowElementByUID(addClassByUid[i]).setAttribute('aria-selected', 'true');\n if (!isNullOrUndefined(this.parent.getRowElementByUID(addClassByUid[i]).querySelector('.e-frame'))) {\n addClass([this.parent.getRowElementByUID(addClassByUid[i]).querySelector('.e-frame')], ['e-check']);\n }\n for (let j = 0; j < this.parent.getRowElementByUID(addClassByUid[i]).children.length; j++) {\n this.parent.getRowElementByUID(addClassByUid[i])\n .children[j].classList.add('e-selectionbackground', 'e-active');\n }\n }\n }\n }\n return;\n }\n if (this.parent.enableVirtualization && this.parent.getFrozenColumns()) {\n if (this.parent.enableColumnVirtualization && args.requestType === 'virtualscroll') {\n if (args.virtualInfo.sentinelInfo.axis === 'X') {\n modelData = this.parent.contentModule.generateRows(dataSource, args);\n args.renderMovableContent = true;\n }\n else if (mCont.scrollLeft > 0 && !args.renderMovableContent) {\n this.viewColIndexes = args.virtualInfo.columnIndexes;\n let indexes = [];\n for (let i = 0; i < this.parent.getFrozenColumns(); i++) {\n indexes.push(i);\n }\n this.parent.setColumnIndexesInView(indexes);\n args.virtualInfo.columnIndexes = indexes;\n }\n }\n modelData = this.parent.contentModule.generateRows(dataSource, args);\n }\n else {\n modelData = this.checkInfiniteCache(modelData, args);\n if (!this.isAddRows) {\n modelData = this.generator.generateRows(dataSource, args);\n }\n }\n this.parent.notify(setInfiniteCache, { isInfiniteScroll: isInfiniteScroll, modelData: modelData, args: args });\n if (isNullOrUndefined(modelData[0].cells[0])) {\n mCont.querySelector('tbody').innerHTML = '';\n }\n let idx = modelData[0].cells[0].index;\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns() && args.renderMovableContent\n && args.requestType === 'virtualscroll' && mCont.scrollLeft > 0 && args.virtualInfo.columnIndexes[0] !== 0) {\n idx = this.parent.getFrozenColumns();\n }\n /* tslint:disable:no-any */\n if (args.requestType !== 'infiniteScroll' && this.parent.registeredTemplate\n && this.parent.registeredTemplate.template && !args.isFrozen) {\n let templatetoclear = [];\n for (let i = 0; i < this.parent.registeredTemplate.template.length; i++) {\n for (let j = 0; j < this.parent.registeredTemplate.template[i].rootNodes.length; j++) {\n if (isNullOrUndefined(this.parent.registeredTemplate.template[i].rootNodes[j].parentNode)) {\n templatetoclear.push(this.parent.registeredTemplate.template[i]);\n /* tslint:enable:no-any */\n }\n }\n }\n this.parent.destroyTemplate(['template'], templatetoclear);\n }\n if (this.parent.enableColumnVirtualization) {\n let cellMerge = new CellMergeRender(this.serviceLocator, this.parent);\n cellMerge.updateVirtualCells(modelData);\n }\n if (frzCols && idx >= frzCols) {\n this.tbody = mCont.querySelector('tbody');\n }\n else {\n this.tbody = this.getTable().querySelector('tbody');\n }\n let startIndex = 0;\n let blockLoad = true;\n if (isGroupAdaptive(gObj) && gObj.vcRows.length) {\n let top = 'top';\n let scrollTop = !isNullOrUndefined(args.virtualInfo.offsets) ? args.virtualInfo.offsets.top :\n (!isNullOrUndefined(args.scrollTop) ? args.scrollTop[top] : 0);\n if (scrollTop !== 0) {\n let offsets = gObj.vGroupOffsets;\n let bSize = gObj.pageSettings.pageSize / 2;\n let values = Object.keys(offsets).map((key) => offsets[key]);\n for (let m = 0; m < values.length; m++) {\n if (scrollTop < values[m]) {\n if (!isNullOrUndefined(args.virtualInfo) && args.virtualInfo.direction === 'up') {\n args.virtualInfo.blockIndexes = m === 0 || m === 1 ? [1, 2] : [m, m + 1];\n startIndex = m === 0 || m === 1 ? 0 : (m * bSize);\n break;\n }\n else {\n args.virtualInfo.blockIndexes = m === 0 || m === 1 ? [1, 2] : [m, m + 1];\n startIndex = m === 0 || m === 1 ? 0 : (m) * bSize;\n break;\n }\n }\n }\n if (scrollTop + this.contentPanel.firstElementChild.offsetHeight ===\n this.contentPanel.firstElementChild.scrollHeight && !args.rowObject) {\n blockLoad = false;\n }\n }\n }\n let isVFFrozenOnly = gObj.frozenRows && !gObj.getFrozenColumns() && this.parent.enableVirtualization\n && args.requestType === 'reorder';\n if ((gObj.frozenRows && args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo.axis === 'X') || isVFFrozenOnly) {\n let bIndex = args.virtualInfo.blockIndexes;\n let page = args.virtualInfo.page;\n args.virtualInfo.blockIndexes = [1, 2];\n if (isVFFrozenOnly) {\n args.virtualInfo.page = 1;\n }\n let data = isVFFrozenOnly ? this.initialPageRecords : dataSource;\n let mhdrData = this.vgenerator\n .generateRows(data, args);\n mhdrData.splice(this.parent.frozenRows);\n for (let i = 0; i < this.parent.frozenRows; i++) {\n mhdrData[i].cells.splice(0, this.parent.getFrozenColumns());\n tr = row.render(mhdrData[i], columns);\n hdrfrag.appendChild(tr);\n }\n args.virtualInfo.blockIndexes = bIndex;\n args.virtualInfo.page = page;\n if (isVFFrozenOnly && args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n }\n this.virtualFrozenHdrRefresh(hdrfrag, modelData, row, args, dataSource, columns);\n for (let i = startIndex, len = modelData.length; i < len; i++) {\n this.rows.push(modelData[i]);\n this.setInfiniteVisibleRows(args, modelData[i]);\n if (isGroupAdaptive(gObj) && this.rows.length >= (gObj.pageSettings.pageSize) && blockLoad) {\n break;\n }\n if (!gObj.rowTemplate) {\n tr = row.render(modelData[i], columns);\n let isVFreorder = this.ensureFrozenHeaderRender(args);\n if (gObj.frozenRows && i < gObj.frozenRows && !isInfiniteScroll && args.requestType !== 'virtualscroll' && isVFreorder) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n if (modelData[i].isExpand) {\n gObj.notify(expandChildGrid, tr.cells[gObj.groupSettings.columns.length]);\n }\n }\n else {\n let rowTemplateID = gObj.element.id + 'rowTemplate';\n let elements = gObj.getRowTemplate()(extend({ index: i }, dataSource[i]), gObj, 'rowTemplate', rowTemplateID);\n if (elements[0].tagName === 'TBODY') {\n for (let j = 0; j < elements.length; j++) {\n let isTR = elements[j].nodeName.toLowerCase() === 'tr';\n if (isTR || (elements[j].querySelectorAll && elements[j].querySelectorAll('tr').length)) {\n tr = isTR ? elements[j] : elements[j].querySelector('tr');\n }\n }\n if (gObj.frozenRows && i < gObj.frozenRows) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n }\n else {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = appendChildren(hdrfrag, elements);\n }\n else {\n // frag.appendChild(tr);\n tr = appendChildren(frag, elements);\n trElement = tr.lastElementChild;\n }\n }\n let arg = { data: modelData[i].data, row: trElement ? trElement : tr };\n this.parent.trigger(rowDataBound, arg);\n }\n if (modelData[i].isDataRow) {\n this.rowElements.push(tr);\n }\n this.ariaService.setOptions(this.getTable(), { colcount: gObj.getColumns().length.toString() });\n }\n this.splitRows(idx);\n if ((gObj.frozenRows && args.requestType !== 'virtualscroll' && !isInfiniteScroll)\n || (args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo && args.virtualInfo.sentinelInfo.axis === 'X')) {\n hdrTbody = frzCols ? gObj.getHeaderContent().querySelector(idx === 0 ? '.e-frozenheader'\n : '.e-movableheader').querySelector('tbody') : gObj.getHeaderTable().querySelector('tbody');\n hdrTbody.innerHTML = '';\n hdrTbody.appendChild(hdrfrag);\n }\n if (!gObj.enableVirtualization && gObj.frozenRows && idx === 0 && cont.offsetHeight === Number(gObj.height)) {\n cont.style.height = (cont.offsetHeight - hdrTbody.offsetHeight) + 'px';\n }\n if (frzCols && idx === 0) {\n this.getPanel().firstChild.style.overflowY = 'hidden';\n }\n if (!isBlazor() || this.parent.isJsComponent) {\n args.rows = this.rows.slice(0);\n }\n args.isFrozen = this.parent.getFrozenColumns() !== 0 && !args.isFrozen;\n this.index = idx;\n getUpdateUsingRaf(() => {\n this.parent.notify(beforeFragAppend, args);\n let isVFTable = this.parent.enableVirtualization && this.parent.getFrozenColumns() !== 0;\n if (!this.parent.enableVirtualization && !isInfiniteScroll) {\n remove(this.tbody);\n this.tbody = this.parent.createElement('tbody');\n }\n if (frzCols && !isVFTable && !this.parent.enableInfiniteScrolling) {\n this.tbody.appendChild(frag);\n if (this.index === 0) {\n this.isLoaded = false;\n fCont.querySelector('table').appendChild(this.tbody);\n }\n else {\n if (this.tbody.childElementCount < 1) {\n this.tbody.appendChild(this.parent.createElement('tr').appendChild(this.parent.createElement('td')));\n }\n this.isLoaded = true;\n mCont.querySelector('table').appendChild(this.tbody);\n if (this.parent.getFrozenColumns() !== 0 && !this.parent.allowTextWrap) {\n this.parent.notify(freezeRender, { case: 'refreshHeight' });\n }\n fCont.style.height = ((mCont.offsetHeight) - getScrollBarWidth()) + 'px';\n mCont.style.overflowY = this.parent.height !== 'auto' ? 'scroll' : 'auto';\n fCont.style.borderRightWidth = '1px';\n }\n }\n else {\n if (gObj.rowTemplate) {\n updateBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate', gObj);\n }\n if (isVFTable) {\n if (!args.renderMovableContent) {\n this.appendContent(fCont.querySelector('tbody'), frag, args);\n if (this.parent.enableColumnVirtualization && args.requestType === 'virtualscroll'\n && mCont.scrollLeft > 0) {\n this.parent.setColumnIndexesInView(this.viewColIndexes);\n args.virtualInfo.columnIndexes = this.viewColIndexes;\n }\n }\n else {\n this.appendContent(mCont.querySelector('tbody'), frag, args);\n if (args.virtualInfo && args.virtualInfo.direction !== 'right' && args.virtualInfo.direction !== 'left') {\n fCont.style.height = ((mCont.offsetHeight) - getScrollBarWidth()) + 'px';\n }\n args.renderMovableContent = false;\n }\n }\n else {\n if (!isNullOrUndefined(this.parent.infiniteScrollModule) && this.parent.enableInfiniteScrolling) {\n this.isAddRows = false;\n this.parent.notify(removeInfiniteRows, { args: args });\n this.parent.notify(appendInfiniteContent, {\n tbody: this.tbody, frag: frag, args: args, rows: this.rows,\n rowElements: this.rowElements, visibleRows: this.visibleRows\n });\n if (frzCols && idx !== 0) {\n fCont.style.height = ((mCont.offsetHeight) - getScrollBarWidth()) + 'px';\n mCont.style.overflowY = this.parent.height !== 'auto' ? 'scroll' : 'auto';\n fCont.style.borderRightWidth = '1px';\n }\n }\n else {\n this.appendContent(this.tbody, frag, args);\n }\n }\n }\n if (frzCols && idx === 0) {\n if (isVFTable) {\n args.renderMovableContent = true;\n }\n this.refreshContentRows(extend({}, args));\n }\n frag = null;\n }, this.rafCallback(extend({}, args)));\n }\n appendContent(tbody, frag, args) {\n tbody.appendChild(frag);\n this.getTable().appendChild(tbody);\n }\n ensureFrozenHeaderRender(args) {\n return !((this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) || (this.parent.infiniteScrollSettings.enableCache\n && this.parent.frozenRows && this.parent.infiniteScrollModule.requestType === 'delete'\n && this.parent.pageSettings.currentPage !== 1));\n }\n checkInfiniteCache(modelData, args) {\n if (this.parent.infiniteScrollSettings.enableCache && args.requestType === 'infiniteScroll') {\n let index = args.isFrozen ? 1 : 0;\n let frozenCols = this.parent.getFrozenColumns();\n this.isAddRows = !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage]);\n if (frozenCols && !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage])) {\n this.isAddRows = this.infiniteCache[this.parent.pageSettings.currentPage][index].length !== 0;\n }\n if (this.isAddRows) {\n let data = !frozenCols ? this.infiniteCache[this.parent.pageSettings.currentPage]\n : this.infiniteCache[this.parent.pageSettings.currentPage][index];\n modelData = this.parent.pageSettings.currentPage === 1 ? data.slice(this.parent.frozenRows) : data;\n }\n return modelData;\n }\n return null;\n }\n setInfiniteVisibleRows(args, data) {\n let frozenCols = this.parent.getFrozenColumns();\n if (this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache) {\n if (frozenCols) {\n !args.isFrozen ? this.visibleFrozenRows.push(data) : this.visibleRows.push(data);\n }\n else if (!this.parent.infiniteScrollSettings.enableCache) {\n this.visibleRows.push(data);\n }\n }\n }\n getCurrentBlockInfiniteRecords(isFreeze) {\n let data = [];\n if (this.parent.infiniteScrollSettings.enableCache) {\n if (!Object.keys(this.infiniteCache).length) {\n return [];\n }\n let frozenCols = this.parent.getFrozenColumns();\n let rows = this.parent.getRows();\n let index = parseInt(rows[this.parent.frozenRows].getAttribute('aria-rowindex'), 10);\n let first = Math.ceil((index + 1) / this.parent.pageSettings.pageSize);\n index = parseInt(rows[rows.length - 1].getAttribute('aria-rowindex'), 10);\n let last = Math.ceil(index / this.parent.pageSettings.pageSize);\n if (frozenCols) {\n let idx = isFreeze ? 0 : 1;\n for (let i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[i][idx]\n : data.concat(this.infiniteCache[i][idx]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1][idx].slice(0, this.parent.frozenRows).concat(data);\n }\n }\n else {\n for (let i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[i] : data.concat(this.infiniteCache[i]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1].slice(0, this.parent.frozenRows).concat(data);\n }\n }\n }\n return data;\n }\n getReorderedVFRows(args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\n }\n virtualFrozenHdrRefresh(hdrfrag, modelData, row, args, dataSource, columns) {\n if (this.parent.frozenRows && this.parent.getFrozenColumns() && this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) {\n let tr;\n this.currentMovableRows = dataSource;\n let fhdrData = this.getReorderedVFRows(args);\n for (let i = 0; i < fhdrData.length; i++) {\n tr = row.render(fhdrData[i], columns);\n hdrfrag.appendChild(tr);\n }\n if (args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n if (args.renderMovableContent) {\n this.parent.currentViewData = this.currentMovableRows;\n this.currentMovableRows = null;\n }\n }\n }\n getInfiniteRows() {\n let rows = [];\n let frozenCols = this.parent.getFrozenColumns();\n if (this.parent.enableInfiniteScrolling) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n let keys = Object.keys(this.infiniteCache);\n for (let i = 0; i < keys.length; i++) {\n rows = !frozenCols ? [...rows, ...this.infiniteCache[keys[i]]] : [...rows, ...this.infiniteCache[keys[i]][0]];\n }\n }\n else {\n rows = frozenCols ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return rows;\n }\n getInfiniteMovableRows() {\n let infiniteCacheRows = this.getCurrentBlockInfiniteRecords();\n let infiniteRows = this.parent.enableInfiniteScrolling ? infiniteCacheRows.length ? infiniteCacheRows\n : this.visibleRows : [];\n return infiniteRows;\n }\n /**\n * Get the content div element of grid\n * @return {Element}\n */\n getPanel() {\n return this.contentPanel;\n }\n /**\n * Set the content div element of grid\n * @param {Element} panel\n */\n setPanel(panel) {\n this.contentPanel = panel;\n }\n /**\n * Get the content table element of grid\n * @return {Element}\n */\n getTable() {\n return this.contentTable;\n }\n /**\n * Set the content table element of grid\n * @param {Element} table\n */\n setTable(table) {\n this.contentTable = table;\n }\n /**\n * Get the Row collection in the Grid.\n * @returns {Row[] | HTMLCollectionOf}\n */\n getRows() {\n let infiniteRows = this.getInfiniteRows();\n return infiniteRows.length ? infiniteRows : this.parent.getFrozenColumns() ? this.freezeRows : this.rows;\n }\n /**\n * Get the Movable Row collection in the Freeze pane Grid.\n * @returns {Row[] | HTMLCollectionOf}\n */\n getMovableRows() {\n let infiniteRows = this.getInfiniteMovableRows();\n return infiniteRows.length ? infiniteRows : this.movableRows;\n }\n /**\n * Get the content table data row elements\n * @return {Element}\n */\n getRowElements() {\n return this.parent.getFrozenColumns() ? this.freezeRowElements : this.rowElements;\n }\n /**\n * Get the Freeze pane movable content table data row elements\n * @return {Element}\n */\n getMovableRowElements() {\n return this.rowElements;\n }\n /**\n * Get the content table data row elements\n * @return {Element}\n */\n setRowElements(elements) {\n this.rowElements = elements;\n }\n /**\n * Get the header colgroup element\n * @returns {Element}\n */\n getColGroup() {\n return this.colgroup;\n }\n /**\n * Set the header colgroup element\n * @param {Element} colgroup\n * @returns {Element}\n */\n setColGroup(colGroup) {\n if (!isNullOrUndefined(colGroup)) {\n colGroup.id = 'content-' + colGroup.id;\n }\n return this.colgroup = colGroup;\n }\n /**\n * Function to hide content table column based on visible property\n * @param {Column[]} columns?\n */\n setVisible(columns) {\n let gObj = this.parent;\n if (isBlazor() && gObj.isServerRendered) {\n this.parent.notify('setvisibility', columns);\n }\n let frzCols = gObj.getFrozenColumns();\n let rows = [];\n if (frzCols) {\n let fRows = this.freezeRows;\n let mRows = this.movableRows;\n let rowLen = fRows.length;\n let cellLen;\n for (let i = 0, row; i < rowLen; i++) {\n cellLen = mRows[i].cells.length;\n row = fRows[i].clone();\n for (let j = 0; j < cellLen; j++) {\n row.cells.push(mRows[i].cells[j]);\n }\n rows.push(row);\n }\n }\n else {\n rows = this.getRows();\n }\n let testRow;\n rows.some((r) => { if (r.isDataRow) {\n testRow = r;\n } return r.isDataRow; });\n let needFullRefresh = true;\n if (!gObj.groupSettings.columns.length && testRow) {\n needFullRefresh = false;\n }\n let tr = gObj.getDataRows();\n let args = {};\n let infiniteData = this.infiniteRowVisibility();\n let contentrows = infiniteData ? infiniteData\n : this.rows.filter((row) => !row.isDetailRow);\n for (let c = 0, clen = columns.length; c < clen; c++) {\n let column = columns[c];\n let idx = this.parent.getNormalizedColumnIndex(column.uid);\n let colIdx = this.parent.getColumnIndexByUid(column.uid);\n let displayVal = column.visible === true ? '' : 'none';\n if (idx !== -1 && testRow && idx < testRow.cells.length) {\n if (frzCols) {\n if (idx < frzCols) {\n setStyleAttribute(this.getColGroup().childNodes[idx], { 'display': displayVal });\n let infiniteFreezeData = this.infiniteRowVisibility(true);\n contentrows = infiniteFreezeData ? infiniteFreezeData : this.freezeRows;\n tr = gObj.getDataRows();\n }\n else {\n let mTable = gObj.getContent().querySelector('.e-movablecontent').querySelector('colgroup');\n colIdx = idx = idx - frzCols;\n setStyleAttribute(mTable.childNodes[idx], { 'display': displayVal });\n tr = gObj.getMovableDataRows();\n let infiniteMovableData = this.infiniteRowVisibility();\n contentrows = infiniteMovableData ? infiniteMovableData : this.movableRows;\n }\n }\n else {\n setStyleAttribute(this.getColGroup().childNodes[idx], { 'display': displayVal });\n }\n }\n if (!needFullRefresh) {\n this.setDisplayNone(tr, colIdx, displayVal, contentrows);\n }\n if (!this.parent.invokedFromMedia && column.hideAtMedia) {\n this.parent.updateMediaColumns(column);\n }\n this.parent.invokedFromMedia = false;\n }\n if (needFullRefresh) {\n this.refreshContentRows({ requestType: 'refresh' });\n }\n else {\n if (!this.parent.getFrozenColumns()) {\n this.parent.notify(partialRefresh, { rows: contentrows, args: args });\n }\n else {\n this.parent.notify(partialRefresh, { rows: this.freezeRows, args: { isFrozen: true, rows: this.freezeRows } });\n this.parent.notify(partialRefresh, { rows: this.movableRows, args: { isFrozen: false, rows: this.movableRows } });\n }\n }\n }\n /**\n * @hidden\n */\n setDisplayNone(tr, idx, displayVal, rows) {\n let trs = Object.keys(tr);\n for (let i = 0; i < trs.length; i++) {\n let td = tr[trs[i]].querySelectorAll('td.e-rowcell')[idx];\n if (tr[trs[i]].querySelectorAll('td.e-rowcell').length && td) {\n setStyleAttribute(tr[trs[i]].querySelectorAll('td.e-rowcell')[idx], { 'display': displayVal });\n if (tr[trs[i]].querySelectorAll('td.e-rowcell')[idx].classList.contains('e-hide')) {\n removeClass([tr[trs[i]].querySelectorAll('td.e-rowcell')[idx]], ['e-hide']);\n }\n if (this.parent.isRowDragable()) {\n rows[trs[i]].cells[idx + 1].visible = displayVal === '' ? true : false;\n }\n else {\n rows[trs[i]].cells[idx].visible = displayVal === '' ? true : false;\n }\n }\n }\n this.parent.notify(infiniteShowHide, { visible: displayVal, index: idx, isFreeze: this.isInfiniteFreeze });\n }\n infiniteRowVisibility(isFreeze) {\n let infiniteData;\n if (this.parent.enableInfiniteScrolling) {\n this.isInfiniteFreeze = isFreeze;\n if (this.parent.infiniteScrollSettings.enableCache) {\n infiniteData = isFreeze ? this.getCurrentBlockInfiniteRecords(true) : this.getCurrentBlockInfiniteRecords();\n }\n else {\n infiniteData = isFreeze ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return infiniteData;\n }\n colGroupRefresh() {\n if (this.getColGroup()) {\n let colGroup;\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()\n && this.parent.contentModule.isXaxis()) {\n colGroup = this.parent.getMovableVirtualHeader().querySelector('colgroup').cloneNode(true);\n }\n else {\n colGroup = isBlazor() ? this.parent.getHeaderTable().querySelector('colgroup').cloneNode(true) :\n this.parent.element.querySelector('.e-gridheader').querySelector('colgroup').cloneNode(true);\n }\n this.getTable().replaceChild(colGroup, this.getColGroup());\n this.setColGroup(colGroup);\n }\n }\n initializeContentDrop() {\n let gObj = this.parent;\n let drop = new Droppable(gObj.getContent(), {\n accept: '.e-dragclone',\n drop: this.drop\n });\n }\n canSkip(column, row, index) {\n /**\n * Skip the toggle visiblity operation when one of the following success\n * 1. Grid has empty records\n * 2. column visible property is unchanged\n * 3. cell`s isVisible property is same as column`s visible property.\n */\n return isNullOrUndefined(row) || //(1)\n isNullOrUndefined(column.visible) || //(2) \n row.cells[index].visible === column.visible; //(3)\n }\n getModelGenerator() {\n return this.generator = this.parent.allowGrouping ? new GroupModelGenerator(this.parent) : new RowModelGenerator(this.parent);\n }\n renderEmpty(tbody) {\n if (isBlazor() && !this.parent.isJsComponent && this.parent.frozenRows) {\n return;\n }\n this.getTable().appendChild(tbody);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector('tbody').innerHTML = '';\n }\n }\n setSelection(uid, set, clearAll) {\n if (this.parent.getFrozenColumns()) {\n let rows = this.getMovableRows().filter((row) => clearAll || uid === row.uid);\n for (let i = 0; i < rows.length; i++) {\n rows[i].isSelected = set;\n }\n }\n let row = this.getRows().filter((row) => clearAll || uid === row.uid);\n for (let j = 0; j < row.length; j++) {\n row[j].isSelected = set;\n let cells = row[j].cells;\n for (let k = 0; k < cells.length; k++) {\n cells[k].isSelected = set;\n }\n }\n }\n getRowByIndex(index) {\n index = this.getInfiniteRowIndex(index);\n return this.parent.getDataRows()[index];\n }\n getInfiniteRowIndex(index) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n let fRows = this.parent.frozenRows;\n let idx = fRows > index ? 0 : fRows;\n let firstRowIndex = parseInt(this.parent.getRows()[idx].getAttribute('aria-rowindex'), 10);\n index = fRows > index ? index : (index - firstRowIndex) + fRows;\n }\n return index;\n }\n getVirtualRowIndex(index) {\n return index;\n }\n getMovableRowByIndex(index) {\n index = this.getInfiniteRowIndex(index);\n return this.parent.getMovableDataRows()[index];\n }\n enableAfterRender(e) {\n if (e.module === 'group' && e.enable) {\n this.generator = this.getModelGenerator();\n }\n }\n setRowObjects(rows) {\n this.rows = rows;\n }\n}\n\n/**\n * Content module is used to render grid content\n * @hidden\n */\nclass HeaderRender {\n /**\n * Constructor for header renderer module\n */\n constructor(parent, serviceLocator) {\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n this.isFirstCol = false;\n this.helper = (e) => {\n let gObj = this.parent;\n let target = this.draggable.currentStateTarget;\n let parentEle = parentsUntil(target, 'e-headercell');\n if (!(gObj.allowReordering || gObj.allowGrouping) || (!isNullOrUndefined(parentEle)\n && parentEle.querySelectorAll('.e-checkselectall').length > 0)) {\n return false;\n }\n let visualElement = this.parent.createElement('div', { className: 'e-cloneproperties e-dragclone e-headerclone' });\n let element = target.classList.contains('e-headercell') ? target : parentEle;\n if (!element || (!gObj.allowReordering && element.classList.contains('e-stackedheadercell'))) {\n return false;\n }\n let height = element.offsetHeight;\n let headercelldiv = element.querySelector('.e-headercelldiv') || element.querySelector('.e-stackedheadercelldiv');\n let col;\n if (headercelldiv) {\n if (element.querySelector('.e-stackedheadercelldiv')) {\n col = gObj.getStackedHeaderColumnByHeaderText(headercelldiv.innerText.trim(), gObj.columns);\n }\n else {\n col = gObj.getColumnByUid(headercelldiv.getAttribute('e-mappinguid'));\n }\n this.column = col;\n if (this.column.lockColumn) {\n return false;\n }\n visualElement.setAttribute('e-mappinguid', this.column.uid);\n }\n if (col && !isNullOrUndefined(col.headerTemplate)) {\n if (!isNullOrUndefined(col.headerTemplate)) {\n let result;\n let colIndex = gObj.getColumnIndexByField(col.field);\n result = col.getHeaderTemplate()(extend({ 'index': colIndex }, col), gObj, 'headerTemplate');\n appendChildren(visualElement, result);\n }\n else {\n visualElement.innerHTML = col.headerTemplate;\n }\n }\n else {\n visualElement.innerHTML = headercelldiv ?\n col.headerText : element.firstElementChild.innerHTML;\n }\n visualElement.style.width = element.offsetWidth + 'px';\n visualElement.style.height = element.offsetHeight + 'px';\n visualElement.style.lineHeight = (height - 6).toString() + 'px';\n gObj.element.appendChild(visualElement);\n return visualElement;\n };\n this.dragStart = (e) => {\n let gObj = this.parent;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n gObj.notify(columnDragStart, { target: this.draggable.currentStateTarget, column: this.column, event: e.event });\n if (isBlazor()) {\n e.bindEvents(e.dragElement);\n }\n };\n this.drag = (e) => {\n let gObj = this.parent;\n let target = e.target;\n if (target) {\n let closest$$1 = closest(target, '.e-grid');\n let cloneElement = this.parent.element.querySelector('.e-cloneproperties');\n if (!closest$$1 || closest$$1.getAttribute('id') !== gObj.element.getAttribute('id')) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n if (gObj.allowReordering) {\n gObj.element.querySelector('.e-reorderuparrow').style.display = 'none';\n gObj.element.querySelector('.e-reorderdownarrow').style.display = 'none';\n }\n if (!gObj.groupSettings.allowReordering) {\n return;\n }\n }\n gObj.notify(columnDrag, { target: e.target, column: this.column, event: e.event });\n }\n };\n this.dragStop = (e) => {\n let gObj = this.parent;\n let cancel;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n if ((!parentsUntil(e.target, 'e-headercell') && !parentsUntil(e.target, 'e-groupdroparea')) ||\n (!gObj.allowReordering && parentsUntil(e.target, 'e-headercell')) ||\n (!e.helper.getAttribute('e-mappinguid') && parentsUntil(e.target, 'e-groupdroparea'))) {\n remove(e.helper);\n cancel = true;\n }\n gObj.notify(columnDragStop, { target: e.target, event: e.event, column: this.column, cancel: cancel });\n };\n this.drop = (e) => {\n let gObj = this.parent;\n let uid = e.droppedElement.getAttribute('e-mappinguid');\n let closest$$1 = closest(e.target, '.e-grid');\n remove(e.droppedElement);\n if (closest$$1 && closest$$1.getAttribute('id') !== gObj.element.getAttribute('id') ||\n !(gObj.allowReordering || gObj.allowGrouping)) {\n return;\n }\n gObj.notify(headerDrop, { target: e.target, uid: uid, droppedElement: e.droppedElement });\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.widthService = this.serviceLocator.getService('widthService');\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization) {\n this.parent.on(columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(columnPositionChanged, this.colPosRefresh, this);\n }\n /**\n * The function is used to render grid header div\n */\n renderPanel() {\n let div = this.parent.element.querySelector('.e-gridheader');\n let isRendered = (div != null);\n div = isRendered ? div : this.parent.createElement('div', { className: 'e-gridheader' });\n let innerDiv = isRendered ? div.querySelector('.e-headercontent') :\n this.parent.createElement('div', { className: 'e-headercontent' });\n this.toggleStackClass(div);\n div.appendChild(innerDiv);\n this.setPanel(div);\n if (!isRendered) {\n this.parent.element.appendChild(div);\n }\n }\n /**\n * The function is used to render grid header table\n */\n renderTable() {\n let headerDiv = this.getPanel();\n headerDiv.appendChild(this.createHeaderTable());\n this.setTable(headerDiv.querySelector('.e-table'));\n if (!this.parent.getFrozenColumns()) {\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n }\n this.parent.notify(headerRefreshed, { rows: this.rows, args: { isFrozen: this.parent.getFrozenColumns() !== 0 } });\n }\n /**\n * Get the header content div element of grid\n * @return {Element}\n */\n getPanel() {\n return this.headerPanel;\n }\n /**\n * Set the header content div element of grid\n * @param {Element} panel\n */\n setPanel(panel) {\n this.headerPanel = panel;\n }\n /**\n * Get the header table element of grid\n * @return {Element}\n */\n getTable() {\n return this.headerTable;\n }\n /**\n * Set the header table element of grid\n * @param {Element} table\n */\n setTable(table) {\n this.headerTable = table;\n }\n /**\n * Get the header colgroup element\n * @returns {Element}\n */\n getColGroup() {\n return this.colgroup;\n }\n /**\n * Set the header colgroup element\n * @param {Element} colgroup\n * @returns {Element}\n */\n setColGroup(colGroup) {\n return this.colgroup = colGroup;\n }\n /**\n * Get the header row element collection.\n * @return {Element[]}\n */\n getRows() {\n let table = this.getTable();\n return table.tHead.rows;\n }\n /**\n * The function is used to create header table elements\n * @return {Element}\n * @hidden\n */\n createHeaderTable() {\n let skipDom = isBlazor() && this.parent.frozenRows !== 0;\n let table = this.createTable();\n let innerDiv = this.getPanel().querySelector('.e-headercontent');\n if (!skipDom) {\n innerDiv.appendChild(table);\n }\n return innerDiv;\n }\n /**\n * @hidden\n */\n createTable(tableEle = null) {\n let skipDom = isBlazor() && this.parent.frozenRows !== 0;\n let gObj = this.parent;\n if (!(isBlazor() && !gObj.isJsComponent) && this.getTable() && (!gObj.getFrozenColumns())) {\n remove(this.getTable());\n }\n let columns = gObj.getColumns();\n let innerDiv = this.getPanel().querySelector('.e-headercontent');\n let table = skipDom ? tableEle || innerDiv.querySelector('.e-table') :\n this.parent.createElement('table', { className: 'e-table', attrs: { cellspacing: '0.25px', role: 'grid' } });\n let findHeaderRow = this.createHeaderContent();\n let thead = findHeaderRow.thead;\n let tbody = this.parent.createElement('tbody', { className: this.parent.frozenRows ? '' : 'e-hide' });\n this.caption = this.parent.createElement('caption', { innerHTML: this.parent.element.id + '_header_table', className: 'e-hide' });\n let colGroup = this.parent.createElement('colgroup');\n let rowBody = this.parent.createElement('tr');\n let bodyCell;\n let rows = this.rows = findHeaderRow.rows;\n let rowRenderer = new RowRenderer(this.serviceLocator, CellType.Header, this.parent);\n for (let i = 0, len = rows.length; i < len; i++) {\n for (let j = 0, len = rows[i].cells.length; j < len; j++) {\n let cell = rows[i].cells[j];\n bodyCell = this.parent.createElement('td');\n rowBody.appendChild(bodyCell);\n }\n }\n if (gObj.allowFiltering || gObj.allowSorting || gObj.allowGrouping) {\n table.classList.add('e-sortfilter');\n }\n this.updateColGroup(colGroup);\n if (!skipDom) {\n tbody.appendChild(rowBody);\n }\n table.appendChild(this.setColGroup(colGroup));\n table.appendChild(thead);\n if (!skipDom) {\n table.appendChild(tbody);\n }\n table.appendChild(this.caption);\n this.ariaService.setOptions(table, { colcount: gObj.getColumns().length.toString() });\n return table;\n }\n createHeaderContent() {\n let gObj = this.parent;\n let columns = gObj.getColumns();\n let thead = this.parent.createElement('thead');\n let colHeader = this.parent.createElement('tr', { className: 'e-columnheader' });\n let rowRenderer = new RowRenderer(this.serviceLocator, CellType.Header, gObj);\n rowRenderer.element = colHeader;\n let rows = [];\n let headerRow;\n this.colDepth = measureColumnDepth(gObj.columns);\n for (let i = 0, len = this.colDepth; i < len; i++) {\n rows[i] = this.generateRow(i);\n rows[i].cells = [];\n }\n rows = this.ensureColumns(rows);\n rows = this.getHeaderCells(rows);\n for (let i = 0, len = this.colDepth; i < len; i++) {\n headerRow = rowRenderer.render(rows[i], columns);\n if (this.parent.rowHeight && headerRow.querySelector('.e-headercell')) {\n headerRow.style.height = this.parent.rowHeight + 'px';\n }\n thead.appendChild(headerRow);\n }\n let findHeaderRow = {\n thead: thead,\n rows: rows\n };\n return findHeaderRow;\n }\n updateColGroup(colGroup) {\n let cols = this.parent.getColumns();\n let col;\n let indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()\n && this.parent.contentModule.isXaxis()) {\n cols = extend([], this.parent.getColumns());\n cols.splice(0, this.parent.getFrozenColumns());\n }\n colGroup.id = this.parent.element.id + 'colGroup';\n if (this.parent.allowGrouping) {\n for (let i = 0, len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n continue;\n }\n col = this.parent.createElement('col', { className: 'e-group-intent' });\n colGroup.appendChild(col);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n col = this.parent.createElement('col', { className: 'e-detail-intent' });\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable()) {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n for (let i = 0, len = cols.length; i < len; i++) {\n col = this.parent.createElement('col');\n if (cols[i].visible === false) {\n setStyleAttribute(col, { 'display': 'none' });\n }\n colGroup.appendChild(col);\n }\n return colGroup;\n }\n ensureColumns(rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n let gObj = this.parent;\n let indexes = this.parent.getColumnIndexesInView();\n for (let i = 0, len = rows.length; i < len; i++) {\n if (gObj.allowGrouping) {\n for (let c = 0, len = gObj.groupSettings.columns.length; c < len; c++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(c) === -1) {\n continue;\n }\n rows[i].cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (gObj.detailTemplate || gObj.childGrid) {\n let args = {};\n this.parent.notify(detailIndentCellInfo, args);\n rows[i].cells.push(this.generateCell(args, CellType.DetailHeader));\n }\n if (gObj.isRowDragable()) {\n rows[i].cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n }\n return rows;\n }\n getHeaderCells(rows) {\n let thead = this.parent.getHeaderTable() && this.parent.getHeaderTable().querySelector('thead');\n let cols = this.parent.enableColumnVirtualization ?\n this.parent.getColumns(this.parent.enablePersistence) : this.parent.columns;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n if (this.parent.lockcolPositionCount) {\n for (let i = 0; i < cols.length; i++) {\n this.lockColsRendered = false;\n rows = this.appendCells(cols[i], rows, 0, i === 0, false, i === (cols.length - 1), thead);\n }\n }\n for (let i = 0, len = cols.length; i < len; i++) {\n this.notfrzIdx = 0;\n this.lockColsRendered = true;\n rows = this.appendCells(cols[i], rows, 0, i === 0, false, i === (len - 1), thead);\n }\n return rows;\n }\n appendCells(cols, rows, index, isFirstObj, isFirstCol, isLastCol, isMovable) {\n let lastCol = isLastCol ? 'e-lastcell' : '';\n let frzCols = this.parent.getFrozenColumns();\n let left;\n if (this.parent.enableColumnVirtualization && frzCols) {\n left = this.parent.getContent().querySelector('.e-movablecontent').scrollLeft;\n }\n if (!cols.columns) {\n if (left && left > 0 && this.parent.contentModule.isXaxis()\n && this.parent.inViewIndexes[0] !== 0 && this.frzIdx > this.parent.getFrozenColumns()) {\n rows[index].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n else {\n if (!frzCols && (!this.parent.lockcolPositionCount\n || (cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered))\n || (frzCols && ((!isMovable && (this.frzIdx + this.notfrzIdx < this.parent.frozenColumns || cols.isFrozen) &&\n (!this.parent.lockcolPositionCount || (cols.lockColumn && !this.lockColsRendered) ||\n (!cols.lockColumn && this.lockColsRendered)))\n || (isMovable && (this.frzIdx + this.notfrzIdx >= this.parent.frozenColumns && !cols.isFrozen) &&\n (!this.parent.lockcolPositionCount || (cols.lockColumn && !this.lockColsRendered) ||\n (!cols.lockColumn && this.lockColsRendered)))))) {\n rows[index].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n }\n if (this.parent.lockcolPositionCount) {\n if ((this.frzIdx + this.notfrzIdx < this.parent.frozenColumns) &&\n ((cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered))) {\n this.frzIdx++;\n }\n else {\n this.notfrzIdx++;\n }\n }\n else {\n this.frzIdx++;\n }\n }\n else {\n this.isFirstCol = false;\n let colSpan = this.getCellCnt(cols, 0);\n if (colSpan) {\n let frzObj = this.refreshFrozenHdr(cols.columns, { isPartial: false, isComp: true, cnt: 0 });\n let stackedLockColsCount = this.getStackedLockColsCount(cols, 0);\n if (!frzCols && (!this.parent.lockcolPositionCount\n || (!this.lockColsRendered && stackedLockColsCount) || (this.lockColsRendered && (colSpan - stackedLockColsCount)))\n || (frzCols && ((!isMovable && this.checkFrozenStackHeader(cols.columns, isMovable)\n && (this.parent.frozenColumns - this.frzIdx > 0 || (frzObj.isPartial)))\n || (isMovable && ((colSpan + this.frzIdx > this.parent.frozenColumns && !frzObj.isComp)\n || this.checkFrozenStackHeader(cols.columns, isMovable)))))) {\n rows[index].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols,\n colSpan: this.getColSpan(colSpan, isMovable, frzObj.cnt, stackedLockColsCount)\n }));\n }\n }\n if (this.parent.lockcolPositionCount && !this.lockColsRendered) {\n for (let i = 0; i < cols.columns.length; i++) {\n rows = this.appendCells(cols.columns[i], rows, index + 1, isFirstObj, i === 0, i === (cols.columns.length - 1) && isLastCol, isMovable);\n }\n }\n if (this.lockColsRendered) {\n for (let i = 0, len = cols.columns.length; i < len; i++) {\n let isFirstCol = this.isFirstCol = cols.columns[i].visible && !this.isFirstCol;\n let isLastCol = i === (len - 1) && !isFirstCol;\n rows = this.appendCells(cols.columns[i], rows, index + 1, isFirstObj, isFirstCol, isLastCol && isLastCol, isMovable);\n }\n }\n }\n return rows;\n }\n checkFrozenStackHeader(cols, isMovable) {\n let isTrue = false;\n for (let i = 0; i < cols.length; i++) {\n let col = cols[i];\n let colIndex = this.parent.getNormalizedColumnIndex(col.uid);\n if (!col.columns) {\n if (isMovable && colIndex >= this.parent.getFrozenColumns() && col.visible) {\n isTrue = true;\n break;\n }\n if (!isMovable && colIndex < this.parent.getFrozenColumns() && col.visible) {\n isTrue = true;\n break;\n }\n }\n }\n return isTrue;\n }\n getStackedLockColsCount(col, lockColsCount) {\n if (col.columns) {\n for (let i = 0; i < col.columns.length; i++) {\n lockColsCount = this.getStackedLockColsCount(col.columns[i], lockColsCount);\n }\n }\n else if (col.lockColumn) {\n lockColsCount++;\n }\n return lockColsCount;\n }\n refreshFrozenHdr(cols, frzObj) {\n for (let i = 0; i < cols.length; i++) {\n if (cols[i].columns) {\n frzObj = this.refreshFrozenHdr(cols[i].columns, frzObj);\n }\n else {\n if (cols[i].isFrozen) {\n frzObj.isPartial = true;\n frzObj.cnt++;\n }\n frzObj.isComp = frzObj.isComp && (cols[i].isFrozen ||\n this.parent.getColumnIndexByField(cols[i].field) < this.parent.frozenColumns);\n }\n }\n return frzObj;\n }\n getColSpan(colSpan, isMovable, frozenCnt, stackedLockColsCount) {\n let frzCol = this.parent.frozenColumns;\n if (this.parent.getFrozenColumns() && this.frzIdx + colSpan > frzCol) {\n if (isMovable) {\n colSpan = colSpan - (frzCol > this.frzIdx ? frzCol - this.frzIdx : 0) - frozenCnt;\n }\n else {\n colSpan = colSpan - (colSpan - (frzCol > this.frzIdx ? frzCol + frozenCnt - this.frzIdx : frozenCnt));\n }\n }\n else if (this.parent.lockcolPositionCount) {\n colSpan = !this.lockColsRendered ? stackedLockColsCount : colSpan - stackedLockColsCount;\n }\n return colSpan;\n }\n generateRow(index) {\n return new Row({});\n }\n generateCell(column, cellType, rowSpan, className, rowIndex, colIndex) {\n let opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'isTemplate': !isNullOrUndefined(column.headerTemplate),\n 'rowID': '',\n 'column': column,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'className': className,\n 'index': rowIndex,\n 'colIndex': colIndex\n };\n if (!opt.rowSpan || opt.rowSpan < 2) {\n delete opt.rowSpan;\n }\n return new Cell(opt);\n }\n /**\n * Function to hide header table column based on visible property\n * @param {Column[]} columns?\n */\n setVisible(columns) {\n let gObj = this.parent;\n let rows = [].slice.call(this.getRows()); //NodeList -> Array \n let displayVal;\n let idx;\n let frzCols = gObj.getFrozenColumns();\n for (let c = 0, clen = columns.length; c < clen; c++) {\n let column = columns[c];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n if (frzCols) {\n if (idx < frzCols) {\n if (isBlazor() && gObj.isServerRendered) {\n setStyleAttribute(this.getTable().querySelector('colgroup').children[idx], { 'display': displayVal });\n setStyleAttribute(this.getTable().querySelectorAll('th')[idx], { 'display': displayVal });\n }\n else {\n setStyleAttribute(this.getColGroup().children[idx], { 'display': displayVal });\n }\n }\n else {\n let mTblColGrp = gObj.getHeaderContent().querySelector('.e-movableheader').querySelector('colgroup');\n let mTbl = gObj.getHeaderContent().querySelector('.e-movableheader').querySelector('table');\n setStyleAttribute(mTblColGrp.children[idx - frzCols], { 'display': displayVal });\n if (isBlazor() && gObj.isServerRendered) {\n setStyleAttribute(mTbl.querySelectorAll('th')[idx - frzCols], { 'display': displayVal });\n }\n }\n }\n else {\n setStyleAttribute(this.getColGroup().children[idx], { 'display': displayVal });\n }\n }\n this.refreshUI();\n }\n colPosRefresh() {\n if (isBlazor() && this.parent.isServerRendered && this.parent.frozenRows && this.parent.getFrozenColumns()) {\n this.freezeReorder = true;\n }\n this.refreshUI();\n }\n /**\n * Refresh the header of the Grid.\n * @returns {void}\n */\n refreshUI() {\n let frzCols = this.parent.getFrozenColumns();\n let isVFTable = this.parent.enableColumnVirtualization && frzCols !== 0;\n let setFrozenTable = isBlazor() && this.parent.isServerRendered && this.parent.frozenRows !== 0 && frzCols !== 0;\n let headerDiv = this.getPanel();\n this.toggleStackClass(headerDiv);\n let table = this.freezeReorder ? this.headerPanel.querySelector('.e-movableheader').querySelector('.e-table')\n : this.getTable();\n if (isVFTable) {\n table = this.parent.contentModule.getVirtualFreezeHeader();\n }\n if (setFrozenTable && !isVFTable) {\n table = this.freezeReorder ? this.headerPanel.querySelector('.e-movableheader').querySelector('.e-table') :\n this.headerPanel.querySelector('.e-frozenheader').querySelector('.e-table');\n }\n if (table) {\n if (isBlazor() && this.parent.isServerRendered) {\n table.removeChild(table.querySelector('colgroup'));\n table.removeChild(table.querySelector('thead'));\n }\n else {\n remove(table);\n table.removeChild(table.firstChild);\n table.removeChild(table.childNodes[0]);\n }\n let colGroup = this.parent.createElement('colgroup');\n let findHeaderRow = this.createHeaderContent();\n this.rows = findHeaderRow.rows;\n table.insertBefore(findHeaderRow.thead, table.firstChild);\n this.updateColGroup(colGroup);\n table.insertBefore(this.setColGroup(colGroup), table.firstChild);\n if (!isVFTable && !setFrozenTable) {\n this.setTable(table);\n }\n if (!(isBlazor() && this.parent.isServerRendered)) {\n this.appendContent(table);\n }\n this.parent.notify(colGroupRefresh, {});\n this.widthService.setWidthToColumns();\n this.parent.updateDefaultCursor();\n if (!frzCols || (this.parent.enableColumnVirtualization && frzCols)) {\n this.initializeHeaderDrag();\n }\n let rows = [].slice.call(headerDiv.querySelectorAll('tr.e-columnheader'));\n for (let row of rows) {\n let gCells = [].slice.call(row.querySelectorAll('.e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n }\n if (!frzCols) {\n this.parent.notify(headerRefreshed, { rows: this.rows, args: { isFrozen: this.parent.getFrozenColumns() !== 0 } });\n }\n if (this.parent.enableColumnVirtualization && parentsUntil(table, 'e-movableheader')) {\n this.parent.notify(headerRefreshed, { rows: this.rows, args: { isFrozen: false, isXaxis: true } });\n }\n if (this.parent.allowTextWrap && this.parent.textWrapSettings.wrapMode === 'Header') {\n wrap(rows, true);\n }\n }\n }\n toggleStackClass(div) {\n let column = this.parent.columns;\n let stackedHdr = column.some((column) => !isNullOrUndefined(column.columns));\n if (stackedHdr) {\n div.classList.add('e-stackedheader');\n }\n else {\n div.classList.remove('e-stackedheader');\n }\n }\n appendContent(table) {\n this.getPanel().querySelector('.e-headercontent').appendChild(table);\n }\n getCellCnt(col, cnt) {\n if (col.columns) {\n for (let i = 0, len = col.columns.length; i < len; i++) {\n cnt = this.getCellCnt(col.columns[i], cnt);\n }\n }\n else {\n if (col.visible) {\n cnt++;\n }\n }\n return cnt;\n }\n initializeHeaderDrag() {\n let gObj = this.parent;\n if (!(this.parent.allowReordering || (this.parent.allowGrouping && this.parent.groupSettings.showDropArea))) {\n return;\n }\n this.draggable = new Draggable(gObj.getHeaderContent(), {\n dragTarget: '.e-headercell',\n distance: 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop,\n abort: '.e-rhandler'\n });\n }\n initializeHeaderDrop() {\n let gObj = this.parent;\n let drop = new Droppable(gObj.getHeaderContent(), {\n accept: '.e-dragclone',\n drop: this.drop\n });\n }\n}\n\n/**\n * CellRenderer class which responsible for building cell content.\n * @hidden\n */\nclass CellRenderer {\n constructor(parent, locator) {\n this.localizer = locator.getService('localization');\n this.formatter = locator.getService('valueFormatter');\n this.parent = parent;\n this.element = this.parent.createElement('TD', { className: 'e-rowcell', attrs: { role: 'gridcell', tabindex: '-1' } });\n this.rowChkBox = this.parent.createElement('input', { className: 'e-checkselect', attrs: { 'type': 'checkbox' } });\n }\n /**\n * Function to return the wrapper for the TD content\n * @returns string\n */\n getGui() {\n return '';\n }\n /**\n * Function to format the cell value.\n * @param {Column} column\n * @param {Object} value\n * @param {Object} data\n */\n format(column, value, data) {\n if (!isNullOrUndefined(column.format)) {\n if (column.type === 'number' && isNaN(parseInt(value, 10))) {\n value = null;\n }\n value = this.formatter.toView(value, column.getFormatter());\n }\n return isNullOrUndefined(value) ? '' : value.toString();\n }\n evaluate(node, cell, data, attributes$$1, fData, isEdit) {\n let result;\n if (cell.column.template) {\n let literals = ['index'];\n let dummyData = extendObjWithFn({}, data, { [foreignKeyData]: fData, column: cell.column });\n let templateID = this.parent.element.id + cell.column.uid;\n let str = 'isStringTemplate';\n let index = 'index';\n if (isBlazor() && isEdit) {\n let rNumber = this.parent.editSettings.mode !== 'Batch' ? parseInt(attributes$$1[index], 10) : null;\n result = cell.column.getColumnTemplate()(extend({ 'index': attributes$$1[literals[0]] }, dummyData), this.parent, 'template', templateID, this.parent[str], rNumber);\n window[templateID] = null;\n if (this.parent.editSettings.mode !== 'Batch') {\n updateBlazorTemplate(templateID, 'Template', cell.column, false);\n }\n }\n else {\n result = cell.column.getColumnTemplate()(extend({ 'index': attributes$$1[literals[0]] }, dummyData), this.parent, 'template', templateID, this.parent[str]);\n }\n appendChildren(node, result);\n this.parent.notify('template-result', { template: result });\n result = null;\n node.setAttribute('aria-label', node.innerText + ' is template cell' + ' column header ' +\n cell.column.headerText);\n return false;\n }\n return true;\n }\n /**\n * Function to invoke the custom formatter available in the column object.\n * @param {Column} column\n * @param {Object} value\n * @param {Object} data\n */\n invokeFormatter(column, value, data) {\n if (!isNullOrUndefined(column.formatter)) {\n if (doesImplementInterface(column.formatter, 'getValue')) {\n let formatter = column.formatter;\n value = new formatter().getValue(column, data);\n }\n else if (typeof column.formatter === 'function') {\n value = column.formatter(column, data);\n }\n else {\n value = column.formatter.getValue(column, data);\n }\n }\n return value;\n }\n /**\n * Function to render the cell content based on Column object.\n * @param {Column} column\n * @param {Object} data\n * @param {{[x:string]:Object}} attributes?\n * @param {Element}\n */\n render(cell, data, attributes$$1, isExpand, isEdit) {\n return this.refreshCell(cell, data, attributes$$1, isEdit);\n }\n /**\n * Function to refresh the cell content based on Column object.\n * @param {Column} column\n * @param {Object} data\n * @param {{[x:string]:Object}} attributes?\n * @param {Element}\n */\n refreshTD(td, cell, data, attributes$$1) {\n let isEdit = this.parent.editSettings.mode === 'Batch' && td.classList.contains('e-editedbatchcell');\n let node = this.refreshCell(cell, data, attributes$$1, isEdit);\n td.innerHTML = '';\n td.setAttribute('aria-label', node.getAttribute('aria-label'));\n let elements = [].slice.call(node.childNodes);\n for (let elem of elements) {\n td.appendChild(elem);\n }\n }\n refreshCell(cell, data, attributes$$1, isEdit) {\n let node = this.element.cloneNode();\n let column = cell.column;\n let fData;\n if (cell.isForeignKey) {\n fData = cell.foreignKeyData[0] || { [column.foreignKeyValue]: column.format ? null : '' };\n }\n //Prepare innerHtml\n let innerHtml = this.getGui();\n let value = cell.isForeignKey ? this.getValue(column.foreignKeyValue, fData, column) :\n this.getValue(column.field, data, column);\n if ((column.type === 'date' || column.type === 'datetime') && !isNullOrUndefined(value)) {\n value = new Date(value);\n }\n value = this.format(column, value, data);\n innerHtml = value.toString();\n if (column.type === 'boolean' && !column.displayAsCheckBox) {\n let localeStr = (value !== 'true' && value !== 'false') ? null : value === 'true' ? 'True' : 'False';\n innerHtml = localeStr ? this.localizer.getConstant(localeStr) : innerHtml;\n }\n let fromFormatter = this.invokeFormatter(column, value, data);\n innerHtml = !isNullOrUndefined(column.formatter) ? isNullOrUndefined(fromFormatter) ? '' : fromFormatter.toString() : innerHtml;\n node.setAttribute('aria-label', innerHtml + ' column header ' + cell.column.headerText);\n if (this.evaluate(node, cell, data, attributes$$1, fData, isEdit) && column.type !== 'checkbox') {\n this.appendHtml(node, innerHtml, column.getDomSetter ? column.getDomSetter() : 'innerHTML');\n }\n else if (column.type === 'checkbox') {\n node.classList.add('e-gridchkbox');\n node.setAttribute('aria-label', 'checkbox');\n if (this.parent.selectionSettings.persistSelection) {\n value = value === 'true';\n }\n else {\n value = false;\n }\n let checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n checkWrap.insertBefore(this.rowChkBox.cloneNode(), checkWrap.firstChild);\n node.appendChild(checkWrap);\n }\n if (this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n cell.isSelected = true;\n }\n this.setAttributes(node, cell, attributes$$1);\n if (column.type === 'boolean' && column.displayAsCheckBox) {\n let checked = isNaN(parseInt(value.toString(), 10)) ? value === 'true' : parseInt(value.toString(), 10) > 0;\n let checkWrap = createCheckBox(this.parent.createElement, false, { checked: checked, label: ' ' });\n node.innerHTML = '';\n checkWrap.classList.add('e-checkbox-disabled');\n node.appendChild(checkWrap);\n node.setAttribute('aria-label', checked + ' column header ' + cell.column.headerText);\n }\n return node;\n }\n /**\n * Function to specifies how the result content to be placed in the cell.\n * @param {Element} node\n * @param {string|Element} innerHtml\n * @returns Element\n */\n appendHtml(node, innerHtml, property = 'innerHTML') {\n node[property] = innerHtml;\n return node;\n }\n /**\n * @hidden\n */\n setAttributes(node, cell, attributes$$1) {\n let column = cell.column;\n this.buildAttributeFromCell(node, cell, column.type === 'checkbox');\n setStyleAndAttributes(node, attributes$$1);\n setStyleAndAttributes(node, cell.attributes);\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (column.textAlign) {\n node.style.textAlign = column.textAlign;\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n }\n buildAttributeFromCell(node, cell, isCheckBoxType) {\n let attr = {};\n let prop = { 'colindex': 'aria-colindex' };\n let classes = [];\n if (cell.colSpan) {\n attr.colSpan = cell.colSpan;\n }\n if (cell.rowSpan) {\n attr.rowSpan = cell.rowSpan;\n }\n if (cell.isTemplate) {\n classes.push('e-templatecell');\n }\n if (cell.isSelected) {\n classes.push(...['e-selectionbackground', 'e-active']);\n if (isCheckBoxType) {\n node.querySelector('.e-frame').classList.add('e-check');\n }\n }\n if (!isNullOrUndefined(cell.index)) {\n attr[prop.colindex] = cell.index;\n }\n if (!cell.visible) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(node, attr);\n }\n getValue(field, data, column) {\n return column.valueAccessor(field, data, column);\n }\n}\n\n/**\n * AriaService\n * @hidden\n */\nclass AriaService {\n setOptions(target, options) {\n let props = Object.keys(options);\n for (let i = 0; i < props.length; i++) {\n setStateAndProperties(target, config[props[i]], options[props[i]]);\n }\n }\n setExpand(target, expand) {\n setStateAndProperties(target, config.expand, expand);\n }\n setSort(target, direction) {\n setStateAndProperties(target, config.sort, direction, typeof direction === 'boolean');\n }\n setBusy(target, isBusy) {\n setStateAndProperties(target, config.busy, isBusy);\n setStateAndProperties(target, config.invalid, null, true);\n }\n setGrabbed(target, isGrabbed, remove$$1) {\n setStateAndProperties(target, config.grabbed, isGrabbed, remove$$1);\n }\n setDropTarget(target, isTarget) {\n setStateAndProperties(target, config.dropeffect, 'copy', !isTarget);\n }\n}\n/**\n * @hidden\n */\nfunction setStateAndProperties(target, attribute, value, remove$$1) {\n if (remove$$1 && target) {\n target.removeAttribute(attribute);\n return;\n }\n if (target) {\n target.setAttribute(attribute, value);\n }\n}\nconst config = {\n expand: 'aria-expanded',\n role: 'role',\n selected: 'aria-selected',\n multiselectable: 'aria-multiselectable',\n sort: 'aria-sort',\n busy: 'aria-busy',\n invalid: 'aria-invalid',\n grabbed: 'aria-grabbed',\n dropeffect: 'aria-dropeffect',\n haspopup: 'aria-haspopup',\n level: 'aria-level',\n colcount: 'aria-colcount'\n};\n\n/**\n * HeaderCellRenderer class which responsible for building header cell content.\n * @hidden\n */\nclass HeaderCellRenderer extends CellRenderer {\n constructor() {\n super(...arguments);\n this.element = this.parent\n .createElement('TH', { className: 'e-headercell', attrs: { role: 'columnheader', tabindex: '-1' } });\n this.ariaService = new AriaService();\n this.hTxtEle = this.parent.createElement('span', { className: 'e-headertext' });\n this.sortEle = this.parent.createElement('div', { className: 'e-sortfilterdiv e-icons' });\n this.gui = this.parent.createElement('div');\n this.chkAllBox = this.parent.createElement('input', { className: 'e-checkselectall', attrs: { 'type': 'checkbox' } });\n }\n /**\n * Function to return the wrapper for the TH content.\n * @returns string\n */\n getGui() {\n return this.gui.cloneNode();\n }\n /**\n * Function to render the cell content based on Column object.\n * @param {Column} column\n * @param {Object} data\n * @param {Element}\n */\n render(cell, data, attributes$$1) {\n let node = this.element.cloneNode();\n let fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter' });\n return this.prepareHeader(cell, node, fltrMenuEle);\n }\n /**\n * Function to refresh the cell content based on Column object.\n * @param {Cell} cell\n * @param {Element} node\n */\n refresh(cell, node) {\n this.clean(node);\n let fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter' });\n return this.prepareHeader(cell, node, fltrMenuEle);\n }\n clean(node) {\n node.innerHTML = '';\n }\n prepareHeader(cell, node, fltrMenuEle) {\n let column = cell.column;\n let ariaAttr = {};\n //Prepare innerHtml\n let innerDIV = this.getGui();\n let hValueAccer;\n attributes(innerDIV, {\n 'e-mappinguid': column.uid,\n 'class': 'e-headercelldiv'\n });\n if (!isNullOrUndefined(column.headerValueAccessor)) {\n hValueAccer = this.getValue(column.headerText, column);\n }\n if (column.type !== 'checkbox') {\n let value = column.headerText;\n if (!isNullOrUndefined(hValueAccer)) {\n value = hValueAccer;\n }\n let headerText = this.hTxtEle.cloneNode();\n headerText[column.getDomSetter()] = value;\n innerDIV.appendChild(headerText);\n }\n else {\n column.editType = 'booleanedit';\n let checkAllWrap = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n checkAllWrap.insertBefore(this.chkAllBox.cloneNode(), checkAllWrap.firstChild);\n innerDIV.appendChild(checkAllWrap);\n innerDIV.classList.add('e-headerchkcelldiv');\n }\n this.buildAttributeFromCell(node, cell);\n this.appendHtml(node, innerDIV);\n node.appendChild(this.sortEle.cloneNode());\n if ((this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') &&\n (column.allowFiltering && !isNullOrUndefined(column.field)) &&\n !(this.parent.showColumnMenu && column.showColumnMenu)) {\n attributes(fltrMenuEle, {\n 'e-mappinguid': 'e-flmenu-' + column.uid,\n });\n node.classList.add('e-fltr-icon');\n let matchFlColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFlColumns.length) {\n for (let index = 0; index < this.parent.columns.length; index++) {\n for (let count = 0; count < this.parent.filterSettings.columns.length; count++) {\n if (this.parent.filterSettings.columns[count].field === column.field) {\n fltrMenuEle.classList.add('e-filtered');\n matchFlColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.appendChild(fltrMenuEle.cloneNode());\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (column.allowSorting) {\n ariaAttr.sort = 'none';\n }\n if (column.allowGrouping) {\n ariaAttr.grabbed = false;\n }\n node = this.extendPrepareHeader(column, node);\n let result;\n let gridObj = this.parent;\n let colIndex = gridObj.getColumnIndexByField(column.field);\n if (!isNullOrUndefined(column.headerTemplate)) {\n //need to pass the template id for blazor headertemplate\n let headerTempID = gridObj.element.id + column.uid + 'headerTemplate';\n let str = 'isStringTemplate';\n let col = isBlazor() ? column.toJSON() : column;\n result = column.getHeaderTemplate()(extend({ 'index': colIndex }, col), gridObj, 'headerTemplate', headerTempID, this.parent[str]);\n node.firstElementChild.innerHTML = '';\n appendChildren(node.firstElementChild, result);\n }\n this.ariaService.setOptions(node, ariaAttr);\n if (!isNullOrUndefined(column.headerTextAlign) || !isNullOrUndefined(column.textAlign)) {\n let alignment = column.headerTextAlign || column.textAlign;\n innerDIV.style.textAlign = alignment;\n if (alignment === 'Right' || alignment === 'Left') {\n node.classList.add(alignment === 'Right' ? 'e-rightalign' : 'e-leftalign');\n }\n else if (alignment === 'Center') {\n node.classList.add('e-centeralign');\n }\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n node.setAttribute('aria-rowspan', (!isNullOrUndefined(cell.rowSpan) ? cell.rowSpan : 1).toString());\n node.setAttribute('aria-colspan', '1');\n this.parent.trigger(headerCellInfo, { cell, node });\n return node;\n }\n getValue(field, column) {\n return column.headerValueAccessor(field, column);\n }\n extendPrepareHeader(column, node) {\n if (this.parent.showColumnMenu && column.showColumnMenu && !isNullOrUndefined(column.field)) {\n let element = (this.parent.createElement('div', { className: 'e-icons e-columnmenu' }));\n let matchFilteredColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFilteredColumns.length) {\n for (let i = 0; i < this.parent.columns.length; i++) {\n for (let j = 0; j < this.parent.filterSettings.columns.length; j++) {\n if (this.parent.filterSettings.columns[j].field === column.field) {\n element.classList.add('e-filtered');\n matchFilteredColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.classList.add('e-fltr-icon');\n node.appendChild(element);\n }\n if (this.parent.allowResizing) {\n let handler = this.parent.createElement('div');\n handler.className = column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n return node;\n }\n /**\n * Function to specifies how the result content to be placed in the cell.\n * @param {Element} node\n * @param {string|Element} innerHtml\n * @returns Element\n */\n appendHtml(node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n }\n}\n\n/**\n * StackedHeaderCellRenderer class which responsible for building stacked header cell content.\n * @hidden\n */\nclass StackedHeaderCellRenderer extends CellRenderer {\n constructor() {\n super(...arguments);\n this.element = this.parent.createElement('TH', {\n className: 'e-headercell e-stackedheadercell', attrs: {\n role: 'columnheader',\n tabindex: '-1'\n }\n });\n }\n /**\n * Function to render the cell content based on Column object.\n * @param {Column} column\n * @param {Object} data\n * @param {Element}\n */\n render(cell, data, attributes$$1) {\n let node = this.element.cloneNode();\n let div = this.parent.createElement('div', {\n className: 'e-stackedheadercelldiv',\n attrs: { 'e-mappinguid': cell.column.uid }\n });\n let column = cell.column;\n node.appendChild(div);\n if (!isNullOrUndefined(column.headerTemplate)) {\n appendChildren(div, column.getHeaderTemplate()(column, this.parent, 'headerTemplate'));\n }\n else {\n this.appendHtml(div, column.headerText, column.getDomSetter());\n }\n if (cell.column.toolTip) {\n node.setAttribute('title', cell.column.toolTip);\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n node.classList.add('e-ellipsistooltip');\n }\n if (!isNullOrUndefined(cell.column.textAlign)) {\n div.style.textAlign = cell.column.textAlign;\n }\n if (cell.column.customAttributes) {\n setStyleAndAttributes(node, cell.column.customAttributes);\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-colspan', cell.colSpan.toString());\n node.setAttribute('aria-rowspan', '1');\n if (this.parent.allowResizing) {\n let handler = this.parent.createElement('div');\n handler.className = cell.column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n this.parent.trigger(headerCellInfo, { cell, node });\n return node;\n }\n}\n\n/**\n * IndentCellRenderer class which responsible for building group indent cell.\n * @hidden\n */\nclass IndentCellRenderer extends CellRenderer {\n constructor() {\n super(...arguments);\n this.element = this.parent.createElement('TD', { className: 'e-indentcell' });\n }\n /**\n * Function to render the indent cell\n * @param {Cell} cell\n * @param {Object} data\n */\n render(cell, data) {\n let node = this.element.cloneNode();\n setStyleAndAttributes(node, cell.attributes);\n return node;\n }\n}\n\n/**\n * GroupCaptionCellRenderer class which responsible for building group caption cell.\n * @hidden\n */\nclass GroupCaptionCellRenderer extends CellRenderer {\n constructor() {\n super(...arguments);\n this.element = this.parent\n .createElement('TD', { className: 'e-groupcaption',\n attrs: { id: this.parent.element.id + 'captioncell', role: 'gridcell', tabindex: '-1' } });\n }\n /**\n * Function to render the cell content based on Column object.\n * @param {Cell} cell\n * @param {Object} data\n */\n render(cell, data) {\n let node = this.element.cloneNode();\n let gObj = this.parent;\n let result;\n let fKeyValue;\n data.headerText = cell.column.headerText;\n if (cell.isForeignKey) {\n fKeyValue = this.format(cell.column, cell.column.valueAccessor('foreignKey', data, cell.column));\n }\n let value = cell.isForeignKey ? fKeyValue : cell.column.enableGroupByFormat ? data.key :\n this.format(cell.column, cell.column.valueAccessor('key', data, cell.column));\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n if (isBlazor()) {\n let tempID = gObj.element.id + 'captionTemplate';\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data, null, null, tempID);\n }\n else {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data);\n }\n appendChildren(node, result);\n }\n else {\n node.innerHTML = cell.column.headerText + ': ' + value + ' - ' + data.count + ' ' +\n (data.count < 2 ? this.localizer.getConstant('Item') : this.localizer.getConstant('Items'));\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-label', node.innerHTML + ' is groupcaption cell');\n node.setAttribute('title', node.innerHTML);\n return node;\n }\n}\n/**\n * GroupCaptionEmptyCellRenderer class which responsible for building group caption empty cell.\n * @hidden\n */\nclass GroupCaptionEmptyCellRenderer extends CellRenderer {\n constructor() {\n super(...arguments);\n this.element = this.parent.createElement('TD', { className: 'e-groupcaption' });\n }\n /**\n * Function to render the cell content based on Column object.\n * @param {Cell} cell\n * @param {Object} data\n */\n render(cell, data) {\n let node = this.element.cloneNode();\n node.innerHTML = ' ';\n node.setAttribute('colspan', cell.colSpan.toString());\n return node;\n }\n}\n\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n * @hidden\n */\nclass ExpandCellRenderer extends IndentCellRenderer {\n /**\n * Function to render the expand cell\n * @param {Cell} cell\n * @param {Object} data\n * @param {{ [x: string]: string }} attr\n * @param {boolean} isExpand\n */\n render(cell, data, attr, isExpand) {\n let node = this.element.cloneNode();\n node.className = isExpand ? 'e-recordplusexpand' : 'e-recordpluscollapse';\n node.setAttribute('ej-mappingname', data.field);\n node.setAttribute('ej-mappingvalue', data.key);\n node.setAttribute('aria-expanded', isExpand ? 'true' : 'false');\n node.setAttribute('tabindex', '-1');\n node.appendChild(this.parent.createElement('div', {\n className: isExpand ? 'e-icons e-gdiagonaldown e-icon-gdownarrow' : 'e-icons e-gnextforward e-icon-grightarrow'\n }));\n return node;\n }\n}\n\n/**\n * HeaderIndentCellRenderer class which responsible for building header indent cell.\n * @hidden\n */\nclass HeaderIndentCellRenderer extends CellRenderer {\n constructor() {\n super(...arguments);\n this.element = this.parent.createElement('TH', { className: 'e-grouptopleftcell' });\n }\n /**\n * Function to render the indent cell\n * @param {Cell} cell\n * @param {Object} data\n */\n render(cell, data) {\n let node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-headercelldiv e-emptycell', innerHTML: '' }));\n return node;\n }\n}\n\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n * @hidden\n */\nclass DetailHeaderIndentCellRenderer extends CellRenderer {\n constructor() {\n super(...arguments);\n this.element = this.parent.createElement('TH', { className: 'e-detailheadercell' });\n }\n /**\n * Function to render the detail indent cell\n * @param {Cell} cell\n * @param {Object} data\n */\n render(cell, data) {\n let node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-emptycell' }));\n return node;\n }\n}\n\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n * @hidden\n */\nclass DetailExpandCellRenderer extends CellRenderer {\n constructor() {\n super(...arguments);\n this.element = this.parent.createElement('TD', {\n className: 'e-detailrowcollapse',\n attrs: { 'aria-expanded': 'false', role: 'gridcell', tabindex: '-1' }\n });\n }\n /**\n * Function to render the detail expand cell\n */\n render(cell, data, attributes$$1) {\n let node = this.element.cloneNode();\n if (attributes$$1 && !isNullOrUndefined(attributes$$1['class'])) {\n node.className = '';\n node.className = attributes$$1['class'];\n node.appendChild(this.parent.createElement('div', { className: 'e-icons e-dtdiagonaldown e-icon-gdownarrow' }));\n }\n else {\n node.appendChild(this.parent.createElement('div', { className: 'e-icons e-dtdiagonalright e-icon-grightarrow' }));\n }\n return node;\n }\n}\n\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n * @hidden\n */\nclass RowDragDropRenderer extends CellRenderer {\n constructor() {\n super(...arguments);\n this.element = this.parent.createElement('TD', {\n className: 'e-rowdragdrop',\n attrs: { role: 'gridcell', tabindex: '-1' }\n });\n }\n /**\n * Function to render the detail expand cell\n */\n render(cell, data) {\n let nodeElement = this.element.cloneNode();\n nodeElement.appendChild(this.parent.createElement('div', {\n className: 'e-icons e-rowcelldrag e-dtdiagonalright e-icon-rowdragicon'\n }));\n if (cell.isSelected) {\n nodeElement.classList.add('e-selectionbackground');\n nodeElement.classList.add('e-active');\n }\n return nodeElement;\n }\n}\n\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n * @hidden\n */\nclass RowDragDropHeaderRenderer extends CellRenderer {\n constructor() {\n super(...arguments);\n this.element = this.parent.createElement('TH', { className: 'e-rowdragheader' });\n }\n /**\n * Function to render the detail indent cell\n * @param {Cell} cell\n * @param {Object} data\n */\n render(cell, data) {\n let node = this.element.cloneNode();\n node.appendChild(createElement('div', { className: 'e-emptycell' }));\n return node;\n }\n}\n\n/**\n * Content module is used to render grid content\n * @hidden\n */\nclass Render {\n /**\n * Constructor for render module\n */\n constructor(parent, locator) {\n this.emptyGrid = false;\n this.counter = 0;\n this.parent = parent;\n this.locator = locator;\n this.data = new Data(parent, locator);\n this.l10n = locator.getService('localization');\n this.ariaService = this.locator.getService('ariaService');\n this.renderer = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n /**\n * To initialize grid header, content and footer rendering\n */\n render() {\n let gObj = this.parent;\n let isServerRendered = 'isServerRendered';\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer.renderPanel();\n this.contentRenderer.renderPanel();\n if (gObj.getColumns().length) {\n this.isLayoutRendered = true;\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.emptyRow(false);\n }\n this.parent.scrollModule.setWidth();\n this.parent.scrollModule.setHeight();\n if (this.parent.height !== 'auto') {\n this.parent.scrollModule.setPadding();\n }\n if (!(isBlazor() && this.parent[isServerRendered])) {\n this.refreshDataManager();\n }\n }\n /**\n * Refresh the entire Grid.\n * @return {void}\n */\n refresh(e = { requestType: 'refresh' }) {\n let gObj = this.parent;\n let preventUpdate = 'preventUpdate';\n gObj.notify(`${e.requestType}-begin`, e);\n if (isBlazor()) {\n this.resetTemplates();\n }\n if (isBlazor() && gObj.isServerRendered) {\n let bulkChanges = 'bulkChanges';\n if (gObj[bulkChanges].dataSource) {\n delete gObj[bulkChanges].dataSource;\n }\n gObj.notify('blazor-action-begin', e);\n if (e.requestType === 'filtering') {\n let columns = 'columns';\n e[columns] = null;\n }\n if (e.requestType === 'sorting') {\n let target = 'target';\n e[target] = null;\n }\n if (gObj.editSettings.mode === 'Batch' && !gObj.isEdit) {\n gObj.notify('closebatch', {});\n }\n }\n let tempPreventUpdate = this.parent[preventUpdate];\n gObj.trigger(actionBegin, e, (args = { requestType: 'refresh' }) => {\n if (args.requestType === 'delete' && isBlazor() && !gObj.isJsComponent) {\n let data = 'data';\n if (isNullOrUndefined(gObj.commandDelIndex)) {\n args[data] = gObj.getSelectedRecords();\n }\n else {\n let tempSelectedRecord = args[data];\n args[data] = {};\n args[data][0] = tempSelectedRecord;\n }\n }\n if (args.cancel) {\n gObj.notify(cancelBegin, args);\n return;\n }\n if (gObj.editSettings.mode === 'Normal' && gObj.isEdit && e.requestType !== 'infiniteScroll') {\n gObj.notify('closeinline', {});\n }\n if (args.requestType === 'delete' && gObj.allowPaging) {\n let dataLength = args.data.length;\n let count = gObj.pageSettings.totalRecordsCount - dataLength;\n if (!(gObj.currentViewData.length - dataLength) && count) {\n gObj.prevPageMoving = true;\n gObj.setProperties({\n pageSettings: {\n totalRecordsCount: count, currentPage: Math.ceil(count / gObj.pageSettings.pageSize)\n }\n }, true);\n gObj.pagerModule.pagerObj.totalRecordsCount = count;\n }\n }\n if (isBlazor() && this.parent.isServerRendered) {\n if (tempPreventUpdate) {\n let bulkChanges = 'bulkChanges';\n gObj[bulkChanges] = {};\n return;\n }\n if (e.requestType === 'refresh') {\n this.parent.notify('updateaction', args);\n }\n if (args.requestType !== 'virtualscroll') {\n this.parent.showSpinner();\n }\n if (args.requestType === 'delete' || args.requestType === 'save') {\n this.parent.notify(addDeleteAction, args);\n this.parent.notify('add-delete-success', args);\n }\n else {\n this.parent.allowServerDataBinding = true;\n this.parent.serverDataBind();\n this.parent.allowServerDataBinding = false;\n }\n }\n else if (args.requestType === 'reorder' && this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.contentRenderer.refreshContentRows(args);\n }\n else {\n this.refreshDataManager(args);\n }\n });\n }\n /**\n * @hidden\n */\n resetTemplates() {\n let gObj = this.parent;\n let gridColumns = gObj.getColumns();\n if (gObj.detailTemplate) {\n let detailTemplateID = gObj.element.id + 'detailTemplate';\n blazorTemplates[detailTemplateID] = [];\n resetBlazorTemplate(detailTemplateID, 'DetailTemplate');\n }\n if (gObj.groupSettings.captionTemplate) {\n resetBlazorTemplate(gObj.element.id + 'captionTemplate', 'CaptionTemplate');\n }\n if (gObj.rowTemplate) {\n resetBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate');\n }\n if (gObj.toolbarTemplate) {\n resetBlazorTemplate(gObj.element.id + 'toolbarTemplate', 'ToolbarTemplate');\n }\n if (gObj.pageSettings.template) {\n resetBlazorTemplate(gObj.element.id + '_template', 'pageSettings');\n }\n for (let i = 0; i < gridColumns.length; i++) {\n if (gridColumns[i].template) {\n blazorTemplates[gObj.element.id + gridColumns[i].uid] = [];\n resetBlazorTemplate(gObj.element.id + gridColumns[i].uid, 'Template');\n }\n if (gridColumns[i].headerTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[i].uid + 'headerTemplate', 'HeaderTemplate');\n }\n if (gridColumns[i].filterTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[i].uid + 'filterTemplate', 'FilterTemplate');\n }\n }\n let guid = 'guid';\n for (let k = 0; k < gObj.aggregates.length; k++) {\n for (let j = 0; j < gObj.aggregates[k].columns.length; j++) {\n if (gObj.aggregates[k].columns[j].footerTemplate) {\n let tempID = gObj.element.id + gObj.aggregates[k].columns[j][guid] + 'footerTemplate';\n resetBlazorTemplate(tempID, 'FooterTemplate');\n }\n if (gObj.aggregates[k].columns[j].groupFooterTemplate) {\n let tempID = gObj.element.id + gObj.aggregates[k].columns[j][guid] + 'groupFooterTemplate';\n resetBlazorTemplate(tempID, 'GroupFooterTemplate');\n }\n if (gObj.aggregates[k].columns[j].groupCaptionTemplate) {\n let tempID = gObj.element.id + gObj.aggregates[k].columns[j][guid] + 'groupCaptionTemplate';\n resetBlazorTemplate(tempID, 'GroupCaptionTemplate');\n }\n }\n }\n }\n refreshComplete(e) {\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\n this.parent.trigger(actionComplete, e);\n }\n /**\n * The function is used to refresh the dataManager\n * @return {void}\n */\n refreshDataManager(args = {}) {\n if (args.requestType !== 'virtualscroll') {\n this.parent.showSpinner();\n }\n this.parent.notify(resetInfiniteBlocks, args);\n this.emptyGrid = false;\n let dataManager;\n let isFActon = this.isNeedForeignAction();\n this.ariaService.setBusy(this.parent.getContent().querySelector('.e-content'), true);\n if (isFActon) {\n let deffered = new Deferred();\n dataManager = this.getFData(deffered, args);\n }\n if (!dataManager) {\n dataManager = this.data.getData(args, this.data.generateQuery().requiresCount());\n }\n else {\n dataManager = dataManager.then((e) => {\n let query = this.data.generateQuery().requiresCount();\n if (this.emptyGrid) {\n let def = new Deferred();\n def.resolve({ result: [], count: 0 });\n return def.promise;\n }\n return this.data.getData(args, query);\n });\n }\n if (this.parent.getForeignKeyColumns().length && (!isFActon || this.parent.searchSettings.key.length)) {\n let deffered = new Deferred();\n dataManager = dataManager.then((e) => {\n this.parent.notify(getForeignKeyData, { dataManager: dataManager, result: e, promise: deffered, action: args });\n return deffered.promise;\n });\n }\n if (this.parent.groupSettings.disablePageWiseAggregates && this.parent.groupSettings.columns.length) {\n dataManager = dataManager.then((e) => this.validateGroupRecords(e));\n }\n dataManager.then((e) => this.dataManagerSuccess(e, args))\n .catch((e) => this.dataManagerFailure(e, args));\n }\n getFData(deferred, args) {\n this.parent.notify(getForeignKeyData, { isComplex: true, promise: deferred, action: args });\n return deferred.promise;\n }\n isNeedForeignAction() {\n let gObj = this.parent;\n return !!((gObj.allowFiltering && gObj.filterSettings.columns.length) ||\n (gObj.searchSettings.key.length)) && this.foreignKey(this.parent.getForeignKeyColumns());\n }\n foreignKey(columns) {\n return columns.some((col) => {\n let fbool = false;\n fbool = this.parent.filterSettings.columns.some((value) => {\n return col.uid === value.uid;\n });\n return !!(fbool || this.parent.searchSettings.key.length);\n });\n }\n sendBulkRequest(args) {\n args.requestType = 'batchsave';\n let promise = this.data.saveChanges(args.changes, this.parent.getPrimaryKeyFieldNames()[0], args.original);\n if (isBlazor() && !this.parent.isJsComponent) {\n promise.then((e) => {\n this.parent.notify('editsuccess', args);\n }).catch((e) => {\n let error = 'error';\n let message = 'message';\n if (!isNullOrUndefined(e[error]) && !isNullOrUndefined(e[error][message])) {\n e[error] = e[error][message];\n }\n this.parent.trigger(actionFailure, e);\n });\n }\n else {\n let query = this.data.generateQuery().requiresCount();\n if (this.data.dataManager.dataSource.offline) {\n this.refreshDataManager({ requestType: 'batchsave' });\n return;\n }\n else {\n promise.then((e) => {\n this.data.getData(args, query)\n .then((e) => this.dmSuccess(e, args))\n .catch((e) => this.dmFailure(e, args));\n })\n .catch((e) => this.dmFailure(e, args));\n }\n }\n }\n dmSuccess(e, args) {\n this.dataManagerSuccess(e, args);\n }\n dmFailure(e, args) {\n this.dataManagerFailure(e, args);\n }\n /**\n * Render empty row to Grid which is used at the time to represent to no records.\n * @return {void}\n * @hidden\n */\n renderEmptyRow() {\n this.emptyRow(true);\n }\n emptyRow(isTrigger) {\n let gObj = this.parent;\n let tbody = this.contentRenderer.getTable().querySelector('tbody');\n let tr;\n if (!isNullOrUndefined(tbody)) {\n remove(tbody);\n }\n tbody = this.parent.createElement('tbody');\n let spanCount = 0;\n if (gObj.detailTemplate || gObj.childGrid) {\n ++spanCount;\n }\n tr = this.parent.createElement('tr', { className: 'e-emptyrow' });\n tr.appendChild(this.parent.createElement('td', {\n innerHTML: this.l10n.getConstant('EmptyRecord'),\n attrs: { colspan: (gObj.getColumns().length + spanCount).toString() }\n }));\n tbody.appendChild(tr);\n this.contentRenderer.renderEmpty(tbody);\n if (isTrigger) {\n this.parent.trigger(dataBound, {});\n this.parent.notify(onEmpty, { rows: [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })] });\n }\n }\n dynamicColumnChange() {\n if (this.parent.getCurrentViewRecords().length) {\n this.updateColumnType(this.parent.getCurrentViewRecords()[0]);\n }\n }\n updateColumnType(record) {\n let columns = this.parent.getColumns();\n let value;\n let cFormat = 'customFormat';\n let equalTo = 'equalTo';\n let data = record && record.items ? record.items[0] : record;\n let fmtr = this.locator.getService('valueFormatter');\n for (let i = 0, len = columns.length; i < len; i++) {\n value = getObject(columns[i].field || '', data);\n if (!isNullOrUndefined(columns[i][cFormat])) {\n columns[i].format = columns[i][cFormat];\n }\n if (!isNullOrUndefined(columns[i].validationRules) && !isNullOrUndefined(columns[i].validationRules[equalTo])) {\n columns[i].validationRules[equalTo][0] = this.parent.element.id + columns[i].validationRules[equalTo][0];\n }\n if (columns[i].isForeignColumn() && columns[i].columnData) {\n value = getObject(columns[i].foreignKeyValue || '', columns[i].columnData[0]);\n }\n if (!isNullOrUndefined(value)) {\n this.isColTypeDef = true;\n if (!columns[i].type || (isBlazor() && this.parent.isServerRendered && columns[i].type === 'none')) {\n columns[i].type = value.getDay ? (value.getHours() > 0 || value.getMinutes() > 0 ||\n value.getSeconds() > 0 || value.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n }\n else {\n columns[i].type = columns[i].type || (isBlazor() && this.parent.isServerRendered ? 'none' : null);\n }\n let valueFormatter = new ValueFormatter();\n if (columns[i].format && (columns[i].format.skeleton || columns[i].format.format)) {\n columns[i].setFormatter(valueFormatter.getFormatFunction(extend({}, columns[i].format)));\n columns[i].setParser(valueFormatter.getParserFunction(columns[i].format));\n }\n if (typeof (columns[i].format) === 'string') {\n let isServerRendered = 'isServerRendered';\n let isServerDateMap = this.parent[isServerRendered] || this.parent.printModule.isPrintGrid();\n setFormatter(this.locator, columns[i], isServerDateMap);\n }\n else if (!columns[i].format && columns[i].type === 'number') {\n columns[i].setParser(fmtr.getParserFunction({ format: 'n2' }));\n }\n }\n }\n /** @hidden */\n // tslint:disable-next-line:max-func-body-length\n dataManagerSuccess(e, args) {\n let gObj = this.parent;\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n e.actionArgs = args;\n let isInfiniteDelete = this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache\n && (args.requestType === 'delete' || (args.requestType === 'save' && this.parent.infiniteScrollModule.requestType === 'add'));\n gObj.trigger(beforeDataBound, e, (dataArgs) => {\n if (dataArgs.cancel) {\n return;\n }\n dataArgs.result = isNullOrUndefined(dataArgs.result) ? [] : dataArgs.result;\n let len = Object.keys(dataArgs.result).length;\n if (this.parent.isDestroyed) {\n return;\n }\n if ((!gObj.getColumns().length && !len) && !(gObj.columns.length && gObj.columns[0] instanceof Column)) {\n gObj.hideSpinner();\n return;\n }\n if (this.isInfiniteEnd(args) && !len) {\n this.parent.notify(infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n return;\n }\n this.parent.isEdit = false;\n this.parent.notify(editReset, {});\n this.parent.notify(tooltipDestroy, {});\n gObj.currentViewData = dataArgs.result;\n if (isBlazor() && gObj.filterSettings.type === 'FilterBar'\n && (isNullOrUndefined(gObj.currentViewData) ||\n (!isNullOrUndefined(gObj.currentViewData) && !gObj.currentViewData.length))) {\n let gridColumns = gObj.getColumns();\n for (let i = 0; i < gridColumns.length; i++) {\n if (gridColumns[i].filterTemplate) {\n let tempID = gObj.element.id + gridColumns[i].uid + 'filterTemplate';\n resetBlazorTemplate(tempID, 'FilterTemplate');\n let fieldName = gridColumns[i].field;\n let filteredColumns = gObj.filterSettings.columns;\n for (let k = 0; k < filteredColumns.length; k++) {\n if (fieldName === filteredColumns[k].field) {\n blazorTemplates[tempID][0][fieldName] = filteredColumns[k].value;\n }\n }\n updateBlazorTemplate(tempID, 'FilterTemplate', gridColumns[i], false);\n }\n }\n }\n if (!len && dataArgs.count && gObj.allowPaging && args && args.requestType !== 'delete') {\n gObj.prevPageMoving = true;\n gObj.pageSettings.totalRecordsCount = dataArgs.count;\n if (args.requestType !== 'paging') {\n gObj.pageSettings.currentPage = Math.ceil(dataArgs.count / gObj.pageSettings.pageSize);\n }\n gObj.dataBind();\n return;\n }\n if ((!gObj.getColumns().length && len || !this.isLayoutRendered) && !isGroupAdaptive(gObj)) {\n this.updatesOnInitialRender(dataArgs);\n }\n if (!this.isColTypeDef && gObj.getCurrentViewRecords()) {\n if (this.data.dataManager.dataSource.offline && gObj.dataSource.length) {\n this.updateColumnType(gObj.dataSource[0]);\n }\n else {\n this.updateColumnType(gObj.getCurrentViewRecords()[0]);\n }\n }\n if (!this.parent.isInitialLoad && this.parent.groupSettings.disablePageWiseAggregates &&\n !this.parent.groupSettings.columns.length) {\n dataArgs.result = this.parent.dataSource instanceof Array ? this.parent.dataSource : this.parent.currentViewData;\n }\n this.parent.notify(dataReady, extend({ count: dataArgs.count, result: dataArgs.result, aggregates: dataArgs.aggregates }, args));\n if ((gObj.groupSettings.columns.length || (args && args.requestType === 'ungrouping'))\n && (args && args.requestType !== 'filtering')) {\n this.headerRenderer.refreshUI();\n }\n if (len) {\n if (isGroupAdaptive(gObj)) {\n let content = 'content';\n args.scrollTop = { top: this.contentRenderer[content].scrollTop };\n }\n if (!isInfiniteDelete) {\n this.contentRenderer.refreshContentRows(args);\n }\n else {\n this.parent.notify(infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n }\n }\n else {\n if (!gObj.getColumns().length) {\n gObj.element.innerHTML = '';\n alert(this.l10n.getConstant('EmptyDataSourceError')); //ToDO: change this alert as dialog\n return;\n }\n this.contentRenderer.setRowElements([]);\n this.contentRenderer.setRowObjects([]);\n this.ariaService.setBusy(this.parent.getContent().querySelector('.e-content'), false);\n this.renderEmptyRow();\n if (args) {\n let action = (args.requestType || '').toLowerCase() + '-complete';\n this.parent.notify(action, args);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n args.rows = [];\n args.isFrozen = this.parent.getFrozenColumns() !== 0 && !args.isFrozen;\n this.parent.trigger(actionComplete, args);\n }\n }\n this.parent.hideSpinner();\n }\n this.parent.notify(toolbarRefresh, {});\n });\n }\n /** @hidden */\n dataManagerFailure(e, args) {\n this.ariaService.setOptions(this.parent.getContent().querySelector('.e-content'), { busy: false, invalid: true });\n this.parent.trigger(actionFailure, { error: e });\n this.parent.hideSpinner();\n if (args.requestType === 'save' || args.requestType === 'delete'\n || args.name === 'bulk-save') {\n return;\n }\n this.parent.currentViewData = [];\n this.renderEmptyRow();\n this.parent.log('actionfailure', { error: e });\n }\n isInfiniteEnd(args) {\n return this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache && args.requestType === 'delete';\n }\n updatesOnInitialRender(e) {\n this.isLayoutRendered = true;\n if (this.parent.columns.length < 1) {\n this.buildColumns(e.result[0]);\n }\n prepareColumns(this.parent.columns);\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.parent.isAutoGen = true;\n this.parent.notify(autoCol, {});\n }\n iterateComplexColumns(obj, field, split) {\n let keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n let childKeys = typeof obj[keys[i]] === 'object' && obj[keys[i]] && !(obj[keys[i]] instanceof Date) ?\n Object.keys(obj[keys[i]]) : [];\n if (childKeys.length) {\n this.iterateComplexColumns(obj[keys[i]], field + (keys[i] + '.'), split);\n }\n else {\n split[this.counter] = field + keys[i];\n this.counter++;\n }\n }\n }\n buildColumns(record) {\n let cols = [];\n let complexCols = {};\n this.iterateComplexColumns(record, '', complexCols);\n let columns = Object.keys(complexCols).filter((e) => complexCols[e] !== 'BlazId').\n map((field) => complexCols[field]);\n for (let i = 0, len = columns.length; i < len; i++) {\n cols[i] = { 'field': columns[i] };\n if (this.parent.enableColumnVirtualization) {\n cols[i].width = !isNullOrUndefined(cols[i].width) ? cols[i].width : 200;\n }\n }\n this.parent.setProperties({ 'columns': cols }, true);\n }\n instantiateRenderer() {\n this.renderer.addRenderer(RenderType.Header, new HeaderRender(this.parent, this.locator));\n this.renderer.addRenderer(RenderType.Content, new ContentRender(this.parent, this.locator));\n let cellrender = this.locator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Header, new HeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Data, new CellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Indent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaption, new GroupCaptionCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaptionEmpty, new GroupCaptionEmptyCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Expand, new ExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.HeaderIndent, new HeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailHeader, new DetailHeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragHIcon, new RowDragDropHeaderRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailExpand, new DetailExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailFooterIntent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragIcon, new RowDragDropRenderer(this.parent, this.locator));\n }\n addEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initialLoad, this.instantiateRenderer, this);\n this.parent.on('refreshdataSource', this.dataManagerSuccess, this);\n this.parent.on(modelChanged, this.refresh, this);\n this.parent.on(refreshComplete, this.refreshComplete, this);\n this.parent.on(bulkSave, this.sendBulkRequest, this);\n this.parent.on(showEmptyGrid, () => { this.emptyGrid = true; }, this);\n this.parent.on(autoCol, this.dynamicColumnChange, this);\n }\n /** @hidden */\n validateGroupRecords(e) {\n let index = e.result.length - 1;\n if (index < 0) {\n return Promise.resolve(e);\n }\n let group0 = e.result[0];\n let groupN = e.result[index];\n let predicate = [];\n let addWhere = (input) => {\n let groups = [group0, groupN];\n for (let i = 0; i < groups.length; i++) {\n predicate.push(new Predicate('field', '==', groups[i].field).and(this.getPredicate('key', 'equal', groups[i].key)));\n }\n input.where(Predicate.or(predicate));\n };\n let query = new Query();\n addWhere(query);\n let curDm = new DataManager(e.result);\n let curFilter = curDm.executeLocal(query);\n let newQuery = this.data.generateQuery(true);\n let rPredicate = [];\n if (this.data.isRemote() || isBlazor()) {\n let groups = [group0, groupN];\n for (let i = 0; i < groups.length; i++) {\n rPredicate.push(this.getPredicate(groups[i].field, 'equal', groups[i].key));\n }\n newQuery.where(Predicate.or(rPredicate));\n }\n else {\n addWhere(newQuery);\n }\n let deferred = new Deferred();\n this.data.getData({}, newQuery).then((r) => {\n this.updateGroupInfo(curFilter, r.result);\n deferred.resolve(e);\n }).catch((e) => deferred.reject(e));\n return deferred.promise;\n }\n getPredicate(key, operator, value) {\n if (value instanceof Date) {\n return getDatePredicate({ field: key, operator: operator, value: value });\n }\n return new Predicate(key, operator, value);\n }\n updateGroupInfo(current, untouched) {\n let dm = new DataManager(untouched);\n let elements = current;\n for (let i = 0; i < elements.length; i++) {\n let uGroup = dm.executeLocal(new Query()\n .where(new Predicate('field', '==', elements[i].field).and(this.getPredicate('key', 'equal', elements[i].key))))[0];\n elements[i].count = uGroup.count;\n let itemGroup = elements[i].items;\n let uGroupItem = uGroup.items;\n if (itemGroup.GroupGuid) {\n elements[i].items = this.updateGroupInfo(elements[i].items, uGroup.items);\n }\n let rows = this.parent.aggregates;\n for (let j = 0; j < rows.length; j++) {\n let row = rows[j];\n for (let k = 0; k < row.columns.length; k++) {\n let types = row.columns[k].type instanceof Array ? (row.columns[k].type) :\n [(row.columns[k].type)];\n for (let l = 0; l < types.length; l++) {\n let key = row.columns[k].field + ' - ' + types[l].toLowerCase();\n let data = itemGroup.level ? uGroupItem.records : uGroup.items;\n let context = this.parent;\n if (types[l] === 'Custom') {\n let data = itemGroup.level ? uGroupItem : uGroup;\n elements[i].aggregates[key] = row.columns[k].customAggregate ?\n row.columns[k].customAggregate\n .call(context, data, row.columns[k]) : '';\n }\n else {\n elements[i].aggregates[key] = DataUtil.aggregates[types[l].toLowerCase()](data, row.columns[k].field);\n }\n }\n }\n }\n }\n return current;\n }\n}\n\n/**\n * CellRendererFactory\n * @hidden\n */\nclass CellRendererFactory {\n constructor() {\n this.cellRenderMap = {};\n }\n addCellRenderer(name, type) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[name])) {\n this.cellRenderMap[name] = type;\n }\n }\n getCellRenderer(name) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[name])) {\n throw `The cellRenderer ${name} is not found`;\n }\n else {\n return this.cellRenderMap[name];\n }\n }\n}\n\n/**\n * ServiceLocator\n * @hidden\n */\nclass ServiceLocator {\n constructor() {\n this.services = {};\n }\n register(name, type) {\n if (isNullOrUndefined(this.services[name])) {\n this.services[name] = type;\n }\n }\n getService(name) {\n if (isNullOrUndefined(this.services[name])) {\n throw `The service ${name} is not registered`;\n }\n return this.services[name];\n }\n}\n\n/**\n * RendererFactory\n * @hidden\n */\nclass RendererFactory {\n constructor() {\n this.rendererMap = {};\n }\n addRenderer(name, type) {\n let rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[rName])) {\n this.rendererMap[rName] = type;\n }\n }\n getRenderer(name) {\n let rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[rName])) {\n throw `The renderer ${rName} is not found`;\n }\n else {\n return this.rendererMap[rName];\n }\n }\n}\n\n/**\n * ColumnWidthService\n * @hidden\n */\nclass ColumnWidthService {\n constructor(parent) {\n this.parent = parent;\n }\n setWidthToColumns() {\n let i = 0;\n let indexes = this.parent.getColumnIndexesInView();\n let wFlag = true;\n let totalColumnsWidth = 0;\n if (this.parent.allowGrouping) {\n for (let len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n wFlag = false;\n continue;\n }\n this.setColumnWidth(new Column({ width: '30px' }), i);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n if (this.parent.isRowDragable()) {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n let columns = this.parent.getColumns();\n for (let j = 0; j < columns.length; j++) {\n this.setColumnWidth(columns[j], wFlag && this.parent.enableColumnVirtualization ? undefined : j + i);\n }\n totalColumnsWidth = this.getTableWidth(this.parent.getColumns());\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(totalColumnsWidth);\n }\n }\n setMinwidthBycalculation(tWidth) {\n let difference = 0;\n let collection = this.parent.getColumns().filter((a) => {\n return isNullOrUndefined(a.width) || a.width === 'auto';\n });\n if (collection.length) {\n if (!isNullOrUndefined(this.parent.width) && this.parent.width !== 'auto') {\n difference = (typeof this.parent.width === 'string' ? parseInt(this.parent.width, 10) : this.parent.width) - tWidth;\n }\n let tmWidth = 0;\n for (let cols of collection) {\n tmWidth += !isNullOrUndefined(cols.minWidth) ?\n ((typeof cols.minWidth === 'string' ? parseInt(cols.minWidth, 10) : cols.minWidth)) : 0;\n }\n for (let i = 0; i < collection.length; i++) {\n if (tWidth === 0 && this.parent.allowResizing && this.isWidthUndefined() && (i !== collection.length - 1)) {\n this.setUndefinedColumnWidth(collection);\n }\n if (tWidth !== 0 && difference < tmWidth) {\n this.setWidth(collection[i].minWidth, this.parent.getColumnIndexByField(collection[i].field));\n }\n else if (tWidth !== 0 && difference > tmWidth) {\n this.setWidth('', this.parent.getColumnIndexByField(collection[i].field), true);\n }\n }\n }\n }\n setUndefinedColumnWidth(collection) {\n for (let k = 0; k < collection.length; k++) {\n if (k !== collection.length - 1) {\n collection[k].width = 200;\n this.setWidth(200, this.parent.getColumnIndexByField(collection[k].field));\n }\n }\n }\n setColumnWidth(column, index, module) {\n if (this.parent.getColumns().length < 1) {\n return;\n }\n let columnIndex = isNullOrUndefined(index) ? this.parent.getNormalizedColumnIndex(column.uid) : index;\n let cWidth = this.getWidth(column);\n let tgridWidth = this.getTableWidth(this.parent.getColumns());\n if (cWidth !== null) {\n this.setWidth(cWidth, columnIndex);\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(tgridWidth);\n }\n if ((this.parent.allowResizing && module === 'resize') || (this.parent.getFrozenColumns() && this.parent.allowResizing)) {\n this.setWidthToTable();\n }\n this.parent.notify(columnWidthChanged, { index: columnIndex, width: cWidth, column: column, module: module });\n }\n }\n setWidth(width, index, clear) {\n if (this.parent.groupSettings.columns.length > index && ispercentageWidth(this.parent)) {\n let elementWidth = this.parent.element.offsetWidth;\n width = (30 / elementWidth * 100).toFixed(1) + '%';\n }\n let header = this.parent.getHeaderTable();\n let content = this.parent.getContentTable();\n let fWidth = formatUnit(width);\n let headerCol;\n let frzCols = this.parent.getFrozenColumns();\n let mHdr = this.parent.getHeaderContent().querySelector('.e-movableheader');\n let mCont = this.parent.getContent().querySelector('.e-movablecontent');\n if (frzCols && index >= frzCols && mHdr && mHdr.querySelector('colgroup')) {\n headerCol = mHdr.querySelector('colgroup').children[index - frzCols];\n }\n else if (this.parent.enableColumnVirtualization && frzCols && this.parent.contentModule.isXaxis()\n && mHdr.scrollLeft > 0) {\n let colGroup = mHdr.querySelector('colgroup');\n headerCol = colGroup.children[(colGroup.children.length - 1) - index];\n }\n else {\n headerCol = header.querySelector('colgroup').children[index];\n }\n if (headerCol && !clear) {\n headerCol.style.width = fWidth;\n }\n else if (headerCol && clear) {\n headerCol.style.width = ' ';\n }\n let contentCol;\n if (frzCols && index >= frzCols) {\n contentCol = this.parent.getContent().querySelector('.e-movablecontent')\n .querySelector('colgroup').children[index - frzCols];\n }\n else if (this.parent.enableColumnVirtualization && frzCols && this.parent.contentModule.isXaxis()\n && mCont.scrollLeft > 0) {\n let colGroup = this.parent.getContent().querySelector('.e-movablecontent')\n .querySelector('colgroup');\n contentCol = colGroup.children[(colGroup.children.length - 1) - index];\n }\n else {\n contentCol = content.querySelector('colgroup').children[index];\n }\n if (contentCol && !clear) {\n contentCol.style.width = fWidth;\n }\n else if (contentCol && clear) {\n contentCol.style.width = ' ';\n }\n let edit = this.parent.element.querySelectorAll('.e-table.e-inline-edit');\n let editTableCol = [];\n for (let i = 0; i < edit.length; i++) {\n if (parentsUntil(edit[i], 'e-grid').id === this.parent.element.id) {\n for (let j = 0; j < edit[i].querySelector('colgroup').children.length; j++) {\n editTableCol.push(edit[i].querySelector('colgroup').children[j]);\n }\n }\n }\n if (edit.length && editTableCol.length) {\n editTableCol[index].style.width = fWidth;\n }\n }\n getSiblingsHeight(element) {\n let previous = this.getHeightFromDirection(element, 'previous');\n let next = this.getHeightFromDirection(element, 'next');\n return previous + next;\n }\n getHeightFromDirection(element, direction) {\n let sibling = element[direction + 'ElementSibling'];\n let result = 0;\n let classList$$1 = ['e-gridheader', 'e-gridfooter', 'e-groupdroparea', 'e-gridpager', 'e-toolbar'];\n while (sibling) {\n if (classList$$1.some((value) => sibling.classList.contains(value))) {\n result += sibling.offsetHeight;\n }\n sibling = sibling[direction + 'ElementSibling'];\n }\n return result;\n }\n isWidthUndefined() {\n let isWidUndefCount = this.parent.getColumns().filter((col) => {\n return isNullOrUndefined(col.width) && isNullOrUndefined(col.minWidth);\n }).length;\n return (this.parent.getColumns().length === isWidUndefCount);\n }\n getWidth(column) {\n if (isNullOrUndefined(column.width) && this.parent.allowResizing\n && isNullOrUndefined(column.minWidth) && !this.isWidthUndefined()) {\n column.width = 200;\n }\n if (this.parent.frozenColumns && isNullOrUndefined(column.width) &&\n column.index < this.parent.frozenColumns) {\n column.width = 200;\n }\n if (!column.width) {\n return null;\n }\n let width = parseInt(column.width.toString(), 10);\n if (column.minWidth && width < parseInt(column.minWidth.toString(), 10)) {\n return column.minWidth;\n }\n else if ((column.maxWidth && width > parseInt(column.maxWidth.toString(), 10))) {\n return column.maxWidth;\n }\n else {\n return column.width;\n }\n }\n getTableWidth(columns) {\n let tWidth = 0;\n for (let column of columns) {\n let cWidth = this.getWidth(column);\n if (column.width === 'auto') {\n cWidth = 0;\n }\n if (column.visible !== false && cWidth !== null) {\n tWidth += parseInt(cWidth.toString(), 10);\n }\n }\n return tWidth;\n }\n calcMovableOrFreezeColWidth(tableType) {\n let columns = this.parent.getColumns().slice();\n if (tableType === 'movable') {\n columns.splice(0, this.parent.getFrozenColumns());\n }\n else if (tableType === 'freeze') {\n columns.splice(this.parent.getFrozenColumns(), columns.length);\n }\n return formatUnit(this.getTableWidth(columns));\n }\n setWidthToFrozenTable() {\n let freezeWidth = this.calcMovableOrFreezeColWidth('freeze');\n this.parent.getHeaderTable().style.width = freezeWidth;\n this.parent.getContentTable().style.width = freezeWidth;\n }\n setWidthToMovableTable() {\n let movableWidth = '';\n let isColUndefined = this.parent.getColumns().filter((a) => { return isNullOrUndefined(a.width); }).length >= 1;\n let isWidthAuto = this.parent.getColumns().filter((a) => { return (a.width === 'auto'); }).length >= 1;\n if (typeof this.parent.width === 'number' && !isColUndefined && !isWidthAuto) {\n movableWidth = formatUnit(this.parent.width - parseInt(this.calcMovableOrFreezeColWidth('freeze').split('px')[0], 10) - 5);\n }\n else if (!isColUndefined && !isWidthAuto) {\n movableWidth = this.calcMovableOrFreezeColWidth('movable');\n }\n if (this.parent.getHeaderContent().querySelector('.e-movableheader').firstElementChild) {\n this.parent.getHeaderContent().querySelector('.e-movableheader').firstElementChild.style.width\n = movableWidth;\n }\n this.parent.getContent().querySelector('.e-movablecontent').firstElementChild.style.width =\n movableWidth;\n }\n setWidthToFrozenEditTable() {\n let freezeWidth = this.calcMovableOrFreezeColWidth('freeze');\n this.parent.element.querySelectorAll('.e-table.e-inline-edit')[0].style.width = freezeWidth;\n }\n setWidthToMovableEditTable() {\n let movableWidth = this.calcMovableOrFreezeColWidth('movable');\n this.parent.element.querySelectorAll('.e-table.e-inline-edit')[1].style.width = movableWidth;\n }\n setWidthToTable() {\n let tWidth = formatUnit(this.getTableWidth(this.parent.getColumns()));\n if (this.parent.getFrozenColumns()) {\n this.setWidthToFrozenTable();\n this.setWidthToMovableTable();\n }\n else {\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }));\n }\n this.parent.getHeaderTable().style.width = tWidth;\n this.parent.getContentTable().style.width = tWidth;\n }\n let edit = this.parent.element.querySelector('.e-table.e-inline-edit');\n if (edit && this.parent.getFrozenColumns()) {\n this.setWidthToFrozenEditTable();\n this.setWidthToMovableEditTable();\n }\n else if (edit) {\n edit.style.width = tWidth;\n }\n }\n}\n\n/**\n * FocusStrategy class\n * @hidden\n */\nclass FocusStrategy {\n constructor(parent) {\n this.currentInfo = {};\n this.oneTime = true;\n this.swap = {};\n this.forget = false;\n this.skipFocus = true;\n this.focusByClick = false;\n this.prevIndexes = {};\n this.refMatrix = this.refreshMatrix(true);\n this.actions = ['downArrow', 'upArrow'];\n this.parent = parent;\n this.rowModelGen = new RowModelGenerator(this.parent);\n this.addEventListener();\n }\n focusCheck(e) {\n let target = e.target;\n this.focusByClick = true;\n this.skipFocus = target.classList.contains('e-grid');\n }\n onFocus() {\n if (this.parent.isDestroyed || Browser.isDevice || this.parent.enableVirtualization) {\n return;\n }\n this.setActive(!this.parent.enableHeaderFocus && this.parent.frozenRows === 0, this.parent.frozenColumns !== 0);\n let added = 'addedRecords';\n if (!this.parent.enableHeaderFocus && !this.parent.getCurrentViewRecords().length && ((this.parent.editSettings.mode !== 'Batch')\n || (this.parent.editSettings.mode === 'Batch' && !this.parent.editModule.getBatchChanges()[added].length))) {\n this.getContent().matrix.\n generate(this.rowModelGen.generateRows({ rows: [new Row({ isDataRow: true })] }), this.getContent().selector, false);\n }\n let current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n if (this.skipFocus) {\n this.focus();\n this.skipFocus = false;\n }\n }\n passiveFocus(e) {\n if (this.parent.isDestroyed) {\n return;\n }\n if (e.target && e.target.classList.contains('e-detailcell')) {\n this.currentInfo.skipAction = false;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n }\n onBlur(e) {\n if ((this.parent.isEdit || e && (!e.relatedTarget || closest(e.relatedTarget, '.e-grid')))) {\n return;\n }\n this.removeFocus();\n this.skipFocus = false;\n this.currentInfo.skipAction = false;\n if (this.getContent().getFocusInfo().elementToFocus) {\n this.getContent().getFocusInfo().elementToFocus.tabIndex = 0;\n }\n }\n onClick(e, force) {\n if (parentsUntil(e.target, 'e-filterbarcell') &&\n e.target.classList.contains('e-input-group-icon')) {\n return;\n }\n let isContent = !isNullOrUndefined(closest(e.target, '.e-gridcontent'));\n let isHeader = !isNullOrUndefined(closest(e.target, '.e-gridheader'));\n isContent = isContent && isHeader ? !isContent : isContent;\n let isFrozen = !isNullOrUndefined(closest(e.target, '.e-frozencontent')) ||\n !isNullOrUndefined(closest(e.target, '.e-frozenheader'));\n if (!isContent && isNullOrUndefined(closest(e.target, '.e-gridheader')) ||\n e.target.classList.contains('e-content') ||\n !isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n return;\n }\n this.setActive(isContent, isFrozen);\n if (!isContent && isNullOrUndefined(closest(e.target, '.e-gridheader'))) {\n this.clearOutline();\n return;\n }\n let beforeArgs = { cancel: false, byKey: false, byClick: !isNullOrUndefined(e.target), clickArgs: e };\n this.parent.notify(beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel || closest(e.target, '.e-inline-edit')) {\n return;\n }\n this.setActive(isContent, isFrozen);\n if (this.getContent()) {\n let returnVal = this.getContent().onClick(e, force);\n if (returnVal === false) {\n return;\n }\n this.focus();\n }\n }\n onKeyPress(e) {\n if (this.skipOn(e)) {\n return;\n }\n this.activeKey = e.action;\n let beforeArgs = { cancel: false, byKey: true, byClick: false, keyArgs: e };\n this.parent.notify(beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel) {\n return;\n }\n let bValue = this.getContent().matrix.current;\n this.currentInfo.outline = true;\n let swapInfo = this.getContent().jump(e.action, bValue);\n this.swap = swapInfo;\n if (swapInfo.swap) {\n this.setActive(!swapInfo.toHeader, swapInfo.toFrozen);\n this.getContent().matrix.current = this.getContent().getNextCurrent(bValue, swapInfo, this.active, e.action);\n this.prevIndexes = {};\n }\n this.setActiveByKey(e.action, this.getContent());\n let returnVal = this.getContent().onKeyPress(e);\n if (returnVal === false) {\n this.clearIndicator();\n return;\n }\n e.preventDefault();\n this.focus(e);\n }\n skipOn(e) {\n let target = e.target;\n if (!target) {\n return false;\n }\n if (this.currentInfo.skipAction) {\n this.clearIndicator();\n return true;\n }\n if (['pageUp', 'pageDown', 'altDownArrow'].indexOf(e.action) > -1) {\n this.clearIndicator();\n return true;\n }\n let th = closest(target, 'th') && !closest(target, 'th').tabIndex;\n if (e.target.classList.contains('e-filterbaroperator') && (e.keyCode === 13 || e.keyCode === 27)) {\n let inputTarget = closest(e.target, '.e-filterbarcell');\n inputTarget.querySelector('input').focus();\n }\n if (th && closest(document.activeElement, '.e-filterbarcell') !== null) {\n this.removeFocus();\n }\n let filterCell = closest(document.activeElement, '.e-filterbarcell') !== null;\n if (this.parent.enableHeaderFocus && filterCell) {\n let matrix = this.active.matrix;\n let current = matrix.current;\n filterCell = matrix.matrix[current[0]].lastIndexOf(1) !== current[1];\n }\n return (e.action === 'delete'\n || (this.parent.editSettings.mode !== 'Batch' && (this.parent.isEdit || ['insert', 'f2'].indexOf(e.action) > -1))\n || (filterCell ||\n closest(document.activeElement, '#' + this.parent.element.id + '_searchbar') !== null\n && ['enter', 'leftArrow', 'rightArrow',\n 'shiftLeft', 'shiftRight', 'ctrlPlusA'].indexOf(e.action) > -1)\n || (closest(target, '.e-gridcontent') === null && closest(target, '.e-gridheader') === null)\n || (e.action === 'space' && (!target.classList.contains('e-gridchkbox') && closest(target, '.e-gridchkbox') === null\n && closest(target, '.e-headerchkcelldiv') === null))) || closest(target, '.e-filter-popup') !== null;\n }\n focusVirtualElement(e) {\n if (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) {\n let data = { virtualData: {}, isAdd: false, isCancel: false };\n this.parent.notify(getVirtualData, data);\n let isKeyFocus = this.actions.some((value) => value === this.activeKey);\n let isSelected = this.parent.contentModule ?\n this.parent.contentModule.selectedRowIndex > -1 : false;\n if (data.isAdd || Object.keys(data.virtualData).length || isKeyFocus || data.isCancel || isSelected) {\n data.isCancel = false;\n this.parent.contentModule.selectedRowIndex = -1;\n if (isKeyFocus) {\n this.activeKey = this.empty;\n this.parent.notify('virtaul-key-handler', e);\n }\n // tslint:disable-next-line:no-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n this.currentInfo.elementToFocus.focus();\n }\n }\n }\n getFocusedElement() {\n return this.currentInfo.elementToFocus;\n }\n getContent() {\n return this.active || this.content;\n }\n setActive(content, isFrozen) {\n this.active = content ? isFrozen ? this.fContent : this.content :\n isFrozen ? this.fHeader : this.header;\n }\n setFocusedElement(element, e) {\n this.currentInfo.elementToFocus = element;\n setTimeout(() => {\n if (!isNullOrUndefined(this.currentInfo.elementToFocus)) {\n if (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) {\n this.focusVirtualElement(e);\n }\n else {\n this.currentInfo.elementToFocus.focus();\n }\n }\n }, 0);\n }\n focus(e) {\n this.parent.notify(virtaulCellFocus, e);\n this.removeFocus();\n this.addFocus(this.getContent().getFocusInfo(), e);\n }\n removeFocus(e) {\n if (!this.currentInfo.element) {\n return;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.currentInfo.element.tabIndex = -1;\n }\n /** @hidden */\n addOutline() {\n let info = this.getContent().getFocusInfo();\n if (info.element) {\n addClass([info.element], ['e-focused']);\n addClass([info.elementToFocus], ['e-focus']);\n }\n }\n /** @hidden */\n focusHeader() {\n this.setActive(false, this.parent.frozenColumns !== 0);\n this.resetFocus();\n }\n /** @hidden */\n focusContent() {\n this.setActive(true, this.parent.frozenColumns !== 0);\n this.resetFocus();\n }\n resetFocus() {\n let current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n this.focus();\n }\n addFocus(info, e) {\n this.currentInfo = info;\n this.currentInfo.outline = info.outline && !isNullOrUndefined(e);\n if (!info.element) {\n return;\n }\n let isFocused = info.elementToFocus.classList.contains('e-focus');\n if (isFocused) {\n return;\n }\n if (this.currentInfo.outline) {\n addClass([info.element], ['e-focused']);\n }\n addClass([info.elementToFocus], ['e-focus']);\n info.element.tabIndex = 0;\n if (!isFocused) {\n this.setFocusedElement(info.elementToFocus, e);\n }\n this.parent.notify(cellFocused, {\n element: info.elementToFocus,\n parent: info.element,\n indexes: this.getContent().matrix.current,\n byKey: !isNullOrUndefined(e),\n byClick: isNullOrUndefined(e),\n keyArgs: e,\n isJump: this.swap.swap,\n container: this.getContent().getInfo(e),\n outline: !isNullOrUndefined(e),\n swapInfo: this.swap\n });\n let [rowIndex, cellIndex] = this.getContent().matrix.current;\n this.prevIndexes = { rowIndex, cellIndex };\n this.focusedColumnUid = this.parent.getColumnByIndex(cellIndex).uid;\n this.focusByClick = false;\n }\n refreshMatrix(content) {\n return (e) => {\n if (content && (e.args && e.args.isFrozen) && !this.fContent) {\n this.fContent = new FixedContentFocus(this.parent);\n }\n else if (content && !this.content) {\n this.content = new ContentFocus(this.parent);\n }\n if (!content && (e.args && e.args.isFrozen) && !this.fHeader) {\n this.fHeader = new FixedHeaderFocus(this.parent);\n }\n else if (!content && !this.header) {\n this.header = new HeaderFocus(this.parent);\n }\n let cFocus = content ? (e.args && e.args.isFrozen) ? this.fContent : this.content :\n (e.args && e.args.isFrozen) ? this.fHeader : this.header;\n let rows = content ? e.rows.slice(this.parent.frozenRows) : e.rows;\n let updateRow = content ? e.rows.slice(0, this.parent.frozenRows) : e.rows;\n if (this.parent.isCollapseStateEnabled() && content) {\n rows = rows.filter((x) => x.visible !== false);\n }\n let isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n let matrix = cFocus.matrix.generate(updateRow, cFocus.selector, isRowTemplate);\n let frozenColumnsCount = this.parent.getFrozenColumns();\n if (e.name === 'batchAdd' && frozenColumnsCount) {\n let mRows = this.parent.getMovableRowsObject();\n let newMovableRows = mRows.map((row) => { return row.clone(); });\n let newFrozenRows = rows.map((row) => { return row.clone(); });\n this.fContent.matrix.generate(newFrozenRows, this.fContent.selector, isRowTemplate);\n this.content.matrix.generate(newMovableRows, this.content.selector, isRowTemplate);\n }\n else {\n cFocus.matrix.generate(rows, cFocus.selector, isRowTemplate);\n }\n cFocus.generateRows(updateRow, { matrix, handlerInstance: (e.args && e.args.isFrozen) ? this.fHeader : this.header });\n if (!Browser.isDevice && e && e.args) {\n if (!this.focusByClick && e.args.requestType === 'paging') {\n this.skipFocus = false;\n this.parent.element.focus();\n }\n if (e.args.requestType === 'grouping') {\n this.skipFocus = true;\n }\n }\n if (e && e.args && e.args.requestType === 'virtualscroll') {\n if (this.currentInfo.uid) {\n let index;\n let bool = e.rows.some((row, i) => {\n index = i;\n return row.uid === this.currentInfo.uid;\n });\n if (bool) {\n this.content.matrix.current[0] = index;\n this.content.matrix.current[1] = this.parent.getColumnIndexByUid(this.focusedColumnUid) || 0;\n let focusElement = this.getContent().getFocusInfo().elementToFocus;\n if (focusElement) {\n let cellPosition = focusElement.getBoundingClientRect();\n let gridPosition = this.parent.element.getBoundingClientRect();\n if (cellPosition.top >= 0 && cellPosition.left >= 0 &&\n cellPosition.right <= Math.min(gridPosition.right, window.innerWidth ||\n document.documentElement.clientWidth) &&\n cellPosition.bottom <= Math.min(gridPosition.bottom, window.innerHeight ||\n document.documentElement.clientHeight)) {\n this.focus();\n }\n }\n }\n }\n else if (e.args.focusElement && e.args.focusElement.classList.contains('e-filtertext')) {\n let focusElement = this.parent.element.querySelector('#' + e.args.focusElement.id);\n if (focusElement) {\n focusElement.focus();\n }\n }\n }\n };\n }\n addEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.add(this.parent.element, 'mousedown', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'focus', this.onFocus, this);\n this.parent.element.addEventListener('focus', this.passiveHandler = (e) => this.passiveFocus(e), true);\n EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n this.parent.on(keyPressed, this.onKeyPress, this);\n this.parent.on(click, this.onClick, this);\n this.parent.on(contentReady, this.refMatrix, this);\n this.parent.on(partialRefresh, this.refMatrix, this);\n this.parent.on(headerRefreshed, this.refreshMatrix(), this);\n this.parent.on('close-edit', this.restoreFocus, this);\n this.parent.on('restore-Focus', this.restoreFocus, this);\n let evts = ['start-edit', 'start-add'];\n for (let i = 0; i < evts.length; i++) {\n this.parent.on(evts[i], this.clearIndicator, this);\n }\n this.parent.on('sorting-complete', this.restoreFocus, this);\n this.parent.on('filtering-complete', this.filterfocus, this);\n let actionsG = ['grouping', 'ungrouping'];\n for (let k = 0; k < actionsG.length; k++) {\n this.parent.on(`${actionsG[k]}-complete`, this.restoreFocusWithAction, this);\n }\n this.parent.on(batchAdd, this.refMatrix, this);\n this.parent.on(batchCancel, this.refMatrix, this);\n this.parent.on(batchDelete, this.refMatrix, this);\n this.parent.on(detailDataBound, this.refMatrix, this);\n this.parent.on(onEmpty, this.refMatrix, this);\n this.parent.on(cellFocused, this.internalCellFocus, this);\n }\n filterfocus() {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n this.restoreFocus();\n }\n }\n removeEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(this.parent.element, 'mousedown', this.focusCheck);\n EventHandler.remove(this.parent.element, 'focus', this.onFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n this.parent.element.removeEventListener('focus', this.passiveHandler, true);\n this.parent.off(keyPressed, this.onKeyPress);\n this.parent.off(click, this.onClick);\n this.parent.off(contentReady, this.refMatrix);\n this.parent.off(partialRefresh, this.refMatrix);\n this.parent.off(headerRefreshed, this.refreshMatrix());\n this.parent.off('close-edit', this.restoreFocus);\n this.parent.off('restore-focus', this.restoreFocus);\n let evts = ['start-edit', 'start-add'];\n for (let i = 0; i < evts.length; i++) {\n this.parent.off(evts[i], this.clearOutline);\n }\n this.parent.off('sorting-complete', this.restoreFocus);\n this.parent.off('filtering-complete', this.filterfocus);\n let actionsG = ['grouping', 'ungrouping'];\n for (let k = 0; k < actionsG.length; k++) {\n this.parent.on(`${actionsG[k]}-complete`, this.restoreFocusWithAction);\n }\n this.parent.off(batchAdd, this.refMatrix);\n this.parent.off(batchDelete, this.refMatrix);\n this.parent.off(batchCancel, this.refMatrix);\n this.parent.off(detailDataBound, this.refMatrix);\n this.parent.off(onEmpty, this.refMatrix);\n this.parent.off(cellFocused, this.internalCellFocus);\n }\n destroy() {\n this.removeEventListener();\n }\n restoreFocus() {\n this.addFocus(this.getContent().getFocusInfo());\n }\n restoreFocusWithAction(e) {\n if (!this.parent.enableInfiniteScrolling) {\n let matrix = this.getContent().matrix;\n let current = matrix.current;\n switch (e.requestType) {\n case 'grouping':\n case 'ungrouping':\n current[1] = current.length &&\n !this.parent.groupSettings.showGroupedColumn && !isNullOrUndefined(matrix.matrix[current[0]]) ?\n matrix.matrix[current[0]].indexOf(1) : e.requestType === 'grouping' ? current[1] + 1 : current[1] - 1;\n break;\n }\n this.getContent().matrix.current = current;\n this.addFocus(this.getContent().getFocusInfo());\n }\n }\n clearOutline() {\n this.getContent().matrix.current = this.getContent().matrix.get(0, -1, [0, 1], 'downArrow', this.getContent().validator());\n this.clearIndicator();\n }\n clearIndicator() {\n if (!this.currentInfo.element || !this.currentInfo.elementToFocus) {\n return;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focus', 'e-focused']);\n }\n getPrevIndexes() {\n let forget = this.forget;\n this.forget = false;\n return forget || !Object.keys(this.prevIndexes).length ? { rowIndex: null, cellIndex: null } : this.prevIndexes;\n }\n forgetPrevious() {\n this.forget = true;\n }\n setActiveByKey(action, active) {\n if (this.parent.frozenColumns === 0 && this.parent.frozenRows === 0) {\n return;\n }\n let info;\n let actions = {\n 'home': () => ({ toHeader: !info.isContent, toFrozen: true }),\n 'end': () => ({ toHeader: !info.isContent, toFrozen: false }),\n 'ctrlHome': () => ({ toHeader: true, toFrozen: this.parent.frozenColumns !== 0 }),\n 'ctrlEnd': () => ({ toHeader: false, toFrozen: false })\n };\n if (!(action in actions)) {\n return;\n }\n info = active.getInfo();\n let swap = actions[action]();\n this.setActive(!swap.toHeader, swap.toFrozen);\n this.getContent().matrix.current = active.matrix.current;\n }\n internalCellFocus(e) {\n if (!(e.byKey && e.container.isContent && e.keyArgs.action === 'enter'\n && (e.parent.classList.contains('e-detailcell') ||\n e.parent.classList.contains('e-unboundcell') || e.parent.classList.contains('e-templatecell')))) {\n return;\n }\n this.clearIndicator();\n let focusEle = this.getContent().getFocusable(this.getFocusedElement());\n this.setFocusedElement(focusEle);\n this.currentInfo.skipAction = true;\n }\n}\n/**\n * Create matrix from row collection which act as mental model for cell navigation\n * @hidden\n */\nclass Matrix {\n constructor() {\n this.matrix = [];\n this.current = [];\n }\n set(rowIndex, columnIndex, allow) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.columns));\n this.matrix[rowIndex] = this.matrix[rowIndex] || [];\n this.matrix[rowIndex][columnIndex] = allow ? 1 : 0;\n }\n get(rowIndex, columnIndex, navigator, action, validator) {\n let tmp = columnIndex;\n if (rowIndex + navigator[0] < 0) {\n return [rowIndex, columnIndex];\n }\n rowIndex = Math.max(0, Math.min(rowIndex + navigator[0], this.rows));\n let emptyTable = true;\n if (isNullOrUndefined(this.matrix[rowIndex])) {\n return null;\n }\n columnIndex = Math.max(0, Math.min(columnIndex + navigator[1], this.matrix[rowIndex].length - 1));\n if (tmp + navigator[1] > this.matrix[rowIndex].length - 1 && validator(rowIndex, columnIndex, action)) {\n return [rowIndex, tmp];\n }\n let first = this.first(this.matrix[rowIndex], columnIndex, navigator, true, action);\n columnIndex = first === null ? tmp : first;\n let val = getValue(`${rowIndex}.${columnIndex}`, this.matrix);\n if (rowIndex === this.rows && (action === 'downArrow' || action === 'enter')) {\n navigator[0] = -1;\n }\n if (first === null) {\n rowIndex = this.current[0];\n for (let i = 0; i < this.rows; i++) {\n if (this.matrix[i].some((v) => { return v === 1; })) {\n emptyTable = false;\n break;\n }\n }\n if (emptyTable) {\n return [rowIndex, columnIndex];\n }\n }\n return this.inValid(val) || !validator(rowIndex, columnIndex, action) ?\n this.get(rowIndex, tmp, navigator, action, validator) : [rowIndex, columnIndex];\n }\n first(vector, index, navigator, moveTo, action) {\n if (((index < 0 || index === vector.length) && this.inValid(vector[index])\n && (action !== 'upArrow' && action !== 'downArrow')) || !vector.some((v) => v === 1)) {\n return null;\n }\n return !this.inValid(vector[index]) ? index :\n this.first(vector, (['upArrow', 'downArrow', 'shiftUp', 'shiftDown'].indexOf(action) !== -1) ? moveTo ? 0 : ++index : index + navigator[1], navigator, false, action);\n }\n select(rowIndex, columnIndex) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.matrix[rowIndex].length - 1));\n this.current = [rowIndex, columnIndex];\n }\n generate(rows, selector, isRowTemplate) {\n this.rows = rows.length - 1;\n this.matrix = [];\n for (let i = 0; i < rows.length; i++) {\n let cells = rows[i].cells.filter((c) => c.isSpanned !== true);\n this.columns = Math.max(cells.length - 1, this.columns | 0);\n for (let j = 0; j < cells.length; j++) {\n this.set(i, j, selector(rows[i], cells[j], isRowTemplate));\n }\n }\n return this.matrix;\n }\n inValid(value) {\n return value === 0 || value === undefined;\n }\n}\n/**\n * @hidden\n */\nclass ContentFocus {\n constructor(parent) {\n this.matrix = new Matrix();\n this.parent = parent;\n this.keyActions = {\n 'rightArrow': [0, 1],\n 'tab': [0, 1],\n 'leftArrow': [0, -1],\n 'shiftTab': [0, -1],\n 'upArrow': [-1, 0],\n 'downArrow': [1, 0],\n 'shiftUp': [-1, 0],\n 'shiftDown': [1, 0],\n 'shiftRight': [0, 1],\n 'shiftLeft': [0, -1],\n 'enter': [1, 0],\n 'shiftEnter': [-1, 0]\n };\n this.indexesByKey = (action) => {\n let opt = {\n 'home': [this.matrix.current[0], -1, 0, 1],\n 'end': [this.matrix.current[0], this.matrix.columns + 1, 0, -1],\n 'ctrlHome': [0, -1, 0, 1],\n 'ctrlEnd': [this.matrix.rows, this.matrix.columns + 1, 0, -1]\n };\n return opt[action] || null;\n };\n }\n getTable() {\n return (this.parent.getFrozenColumns() ?\n this.parent.getContent().querySelector('.e-movablecontent .e-table') :\n this.parent.getContentTable());\n }\n onKeyPress(e) {\n let navigator = this.keyActions[e.action];\n let current = this.getCurrentFromAction(e.action, navigator, e.action in this.keyActions, e);\n if (!current) {\n return;\n }\n if ((['tab', 'shiftTab'].indexOf(e.action) > -1 && this.matrix.current || []).toString() === current.toString()) {\n if (current.toString() === [this.matrix.rows, this.matrix.columns].toString() ||\n current.toString() === [0, 0].toString() || (this.matrix.current[0] === this.matrix.rows &&\n this.matrix.current.toString() === current.toString())) {\n return false;\n }\n else {\n current = this.editNextRow(current[0], current[1], e.action);\n }\n }\n this.matrix.select(current[0], current[1]);\n }\n editNextRow(rowIndex, cellIndex, action) {\n let gObj = this.parent;\n let editNextRow = gObj.editSettings.allowNextRowEdit && (gObj.isEdit || gObj.isLastCellPrimaryKey);\n let visibleIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[0].field);\n let cell = this.getTable().rows[rowIndex].cells[cellIndex];\n if (action === 'tab' && editNextRow) {\n rowIndex++;\n let index = (this.getTable().rows[rowIndex].querySelectorAll('.e-indentcell').length +\n this.getTable().rows[rowIndex].querySelectorAll('.e-detailrowcollapse').length);\n cellIndex = visibleIndex + index;\n }\n if (action === 'shiftTab' && editNextRow) {\n rowIndex--;\n cellIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[gObj.getVisibleColumns().length - 1].field);\n }\n return !cell.classList.contains('e-rowcell') && !cell.classList.contains('e-headercell') &&\n !cell.classList.contains('e-groupcaption') ?\n this.editNextRow(rowIndex, cellIndex, action) : [rowIndex, cellIndex];\n }\n getCurrentFromAction(action, navigator = [0, 0], isPresent, e) {\n if (!isPresent && !this.indexesByKey(action) || (this.matrix.current.length === 0)) {\n return null;\n }\n if (!this.shouldFocusChange(e)) {\n return this.matrix.current;\n }\n let [rowIndex, cellIndex, rN, cN] = this.indexesByKey(action) || [...this.matrix.current, ...navigator];\n let current = this.matrix.get(rowIndex, cellIndex, [rN, cN], action, this.validator());\n return current;\n }\n onClick(e, force) {\n let target = e.target;\n target = (target.classList.contains('e-rowcell') ? target : closest(target, 'td'));\n target = target ? target : closest(e.target, 'td.e-detailrowcollapse')\n || closest(e.target, 'td.e-detailrowexpand');\n target = closest(e.target, 'td.e-detailcell') ?\n isNullOrUndefined(closest(closest(e.target, '.e-grid'), 'td.e-detailcell')) ? null : target : target;\n target = target && closest(target, 'table').classList.contains('e-table') ? target : null;\n if (!target) {\n return false;\n }\n let [rowIndex, cellIndex] = [target.parentElement.rowIndex, target.cellIndex];\n let [oRowIndex, oCellIndex] = this.matrix.current;\n let val = getValue(`${rowIndex}.${cellIndex}`, this.matrix.matrix);\n if (this.matrix.inValid(val) || (!force && oRowIndex === rowIndex && oCellIndex === cellIndex) ||\n (!parentsUntil(e.target, 'e-rowcell') && !parentsUntil(e.target, 'e-groupcaption'))) {\n return false;\n }\n this.matrix.select(rowIndex, cellIndex);\n }\n getFocusInfo() {\n let info = {};\n let [rowIndex = 0, cellIndex = 0] = this.matrix.current;\n this.matrix.current = [rowIndex, cellIndex];\n info.element = !isNullOrUndefined(this.getTable().rows[rowIndex]) ? this.getTable().rows[rowIndex].cells[cellIndex] : null;\n if (!info.element) {\n return info;\n }\n info.elementToFocus = !info.element.classList.contains('e-unboundcell') && !info.element.classList.contains('e-detailcell')\n ? this.getFocusable(info.element) : info.element;\n info.outline = true;\n info.uid = info.element.parentElement.getAttribute('data-uid');\n return info;\n }\n getFocusable(element) {\n let query = 'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n if (this.parent.isEdit) {\n query = 'input:not([type=\"hidden\"]), select:not([aria-hidden=\"true\"]), textarea';\n }\n let child = [].slice.call(element.querySelectorAll(query));\n /* Select the first focusable child element\n * if no child found then select the cell itself.\n * if Grid is in editable state, check for editable control inside child.\n */\n return child.length ? child[0] : element;\n }\n selector(row, cell, isRowTemplate) {\n let types = [CellType.Expand, CellType.GroupCaption, CellType.CaptionSummary, CellType.GroupSummary];\n return ((row.isDataRow && cell.visible && (cell.isDataCell || cell.isTemplate))\n || (row.isDataRow && cell.cellType === CellType.DetailExpand && isNullOrUndefined(cell.visible))\n || (!row.isDataRow && types.indexOf(cell.cellType) > -1)\n || (cell.column && cell.column.type === 'checkbox')\n || (cell.cellType === CellType.CommandColumn)\n || (row.isDataRow && isRowTemplate))\n && !(row.edit === 'delete' && row.isDirty);\n }\n jump(action, current) {\n let frozenSwap = this.parent.frozenColumns > 0 &&\n ((action === 'leftArrow' || action === 'shiftTab') && current[1] === 0);\n let enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n if (action === 'tab' && !this.parent.isEdit &&\n current[1] === this.matrix.matrix[current[0]].lastIndexOf(1) && this.matrix.matrix.length - 1 !== current[0]) {\n this.matrix.current[0] = this.matrix.current[0] + 1;\n this.matrix.current[1] = -1;\n frozenSwap = this.parent.frozenColumns > 0;\n }\n if (action === 'shiftTab' && !this.parent.isEdit &&\n current[0] !== 0 && this.matrix.matrix[current[0]].indexOf(1) === current[1]) {\n this.matrix.current[0] = this.matrix.current[0] - 1;\n this.matrix.current[1] = this.matrix.matrix[current[0]].length;\n }\n let isHeaderFocus = false;\n let row = document.activeElement.parentElement;\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && row.classList.contains('e-row')) {\n let rowIndex = parseInt(row.getAttribute('aria-rowindex'), 10);\n isHeaderFocus = rowIndex > 0;\n }\n let info = {\n swap: !isHeaderFocus ? ((action === 'upArrow' || enterFrozen) && current[0] === 0) || frozenSwap : false,\n toHeader: (action === 'upArrow' || enterFrozen) && current[0] === 0,\n toFrozen: frozenSwap\n };\n return info;\n }\n getNextCurrent(previous = [], swap, active, action) {\n let current = [];\n if (action === 'rightArrow' || action === 'tab') {\n current[0] = previous[0];\n current[1] = -1;\n }\n else if (action === 'downArrow' || action === 'enter') {\n current[0] = -1;\n current[1] = previous[1];\n }\n return current;\n }\n generateRows(rows, optionals) {\n let { matrix, handlerInstance } = optionals;\n let len = handlerInstance.matrix.matrix.length;\n let defaultLen = this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' ? len + 1 : len;\n handlerInstance.matrix.matrix = handlerInstance.matrix.matrix.slice(0, defaultLen); //Header matrix update.\n handlerInstance.matrix.rows = defaultLen;\n handlerInstance.matrix.matrix.push(...matrix);\n handlerInstance.matrix.rows += matrix.length;\n }\n getInfo(e) {\n let info = this.getFocusInfo();\n let [rIndex, cIndex] = this.matrix.current;\n let isData = info.element.classList.contains('e-rowcell');\n let isSelectable = isData || (e && e.action !== 'enter' && (info.element.classList.contains('e-detailrowcollapse')\n || info.element.classList.contains('e-detailrowexpand')));\n let [rowIndex, cellIndex] = [Math.min(parseInt(info.element.parentElement.getAttribute('aria-rowindex'), 10), rIndex),\n Math.min(parseInt(info.element.getAttribute('aria-colindex'), 10), cIndex)];\n return { isContent: true, isDataCell: isData, indexes: [rowIndex, cellIndex], isSelectable: isSelectable };\n }\n validator() {\n let table = this.getTable();\n return (rowIndex, cellIndex, action) => {\n if (!isNullOrUndefined(table.rows[rowIndex])) {\n let cell;\n cellIndex = table.querySelector('.e-emptyrow') ? 0 : cellIndex;\n if (table.rows[rowIndex].cells[0].classList.contains('e-editcell')) {\n cell = table.rows[rowIndex].cells[0].querySelectorAll('td')[cellIndex];\n }\n else {\n cell = table.rows[rowIndex].cells[cellIndex];\n }\n let isCellWidth = cell.getBoundingClientRect().width !== 0;\n if (action === 'enter' || action === 'shiftEnter') {\n return isCellWidth && cell.classList.contains('e-rowcell');\n }\n if ((action === 'shiftUp' || action === 'shiftDown') && cell.classList.contains('e-rowcell')) {\n return isCellWidth;\n }\n else if (action !== 'shiftUp' && action !== 'shiftDown') {\n return isCellWidth;\n }\n }\n return false;\n };\n }\n shouldFocusChange(e) {\n let [rIndex = -1, cIndex = -1] = this.matrix.current;\n if (rIndex < 0 || cIndex < 0) {\n return true;\n }\n let cell = getValue(`${rIndex}.cells.${cIndex}`, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'shiftEnter' ?\n cell.classList.contains('e-rowcell') && !cell.classList.contains('e-unboundcell')\n && (!cell.classList.contains('e-templatecell') || cell.classList.contains('e-editedbatchcell'))\n && !cell.classList.contains('e-detailcell') : true;\n }\n}\n/**\n * @hidden\n */\nclass HeaderFocus extends ContentFocus {\n constructor(parent) {\n super(parent);\n }\n getTable() {\n return (this.parent.getFrozenColumns() ?\n this.parent.getHeaderContent().querySelector('.e-movableheader .e-table') :\n this.parent.getHeaderTable());\n }\n onClick(e) {\n let target = e.target;\n target = (target.classList.contains('e-headercell') ? target : closest(target, 'th'));\n if (!target && this.parent.frozenRows !== 0) {\n target = (e.target.classList.contains('e-rowcell') ? e.target :\n closest(e.target, 'td'));\n }\n if (e.target.classList.contains('e-columnheader') ||\n e.target.querySelector('.e-stackedheadercell')) {\n return false;\n }\n if (!target) {\n return;\n }\n let [rowIndex, cellIndex] = [target.parentElement.rowIndex, target.cellIndex];\n let val = getValue(`${rowIndex}.${cellIndex}`, this.matrix.matrix);\n if (this.matrix.inValid(val)) {\n return false;\n }\n this.matrix.select(target.parentElement.rowIndex, target.cellIndex);\n }\n getFocusInfo() {\n let info = {};\n let [rowIndex = 0, cellIndex = 0] = this.matrix.current;\n info.element = this.getTable().rows[rowIndex].cells[cellIndex];\n if (!isNullOrUndefined(info.element)) {\n info.elementToFocus = this.getFocusable(info.element);\n info.outline = !info.element.classList.contains('e-filterbarcell');\n }\n return info;\n }\n selector(row, cell) {\n return (cell.visible && (cell.column.field !== undefined || cell.isTemplate)) || cell.column.type === 'checkbox' ||\n cell.cellType === CellType.StackedHeader;\n }\n jump(action, current) {\n let frozenSwap = this.parent.frozenColumns > 0 &&\n (action === 'leftArrow' || action === 'shiftTab') && current[1] === 0;\n let enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n let isLastCell;\n let lastRow;\n let headerSwap = frozenSwap;\n let fMatrix = this.parent.focusModule.fHeader && this.parent.focusModule.fHeader.matrix.matrix;\n let isPresent = fMatrix && !isNullOrUndefined(fMatrix[current[0]]);\n if (this.parent.enableHeaderFocus && action === 'tab') {\n lastRow = this.matrix.matrix.length - 1 === current[0];\n isLastCell = current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n if (isLastCell) {\n if (!lastRow) {\n this.matrix.current[0] = this.matrix.current[0] + 1;\n }\n else {\n this.matrix.current[0] = 0;\n }\n this.matrix.current[1] = -1;\n }\n if (this.parent.frozenColumns > 0 && lastRow && isLastCell) {\n frozenSwap = true;\n headerSwap = false;\n }\n }\n return {\n swap: ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && frozenSwap) || (action === 'tab' && lastRow && isLastCell),\n toHeader: headerSwap,\n toFrozen: frozenSwap\n };\n }\n getNextCurrent(previous = [], swap, active, action) {\n let current1 = [];\n if (action === 'upArrow' || action === 'shiftEnter') {\n current1[0] = this.matrix.matrix.length;\n current1[1] = previous[1];\n }\n else if (action === 'rightArrow' || action === 'tab') {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n return current1;\n }\n generateRows(rows) {\n let length = this.matrix.matrix.length;\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar') {\n this.matrix.rows = ++this.matrix.rows;\n let cells = rows[0].cells;\n for (let i = 0; i < cells.length; i++) {\n this.matrix.set(length, i, cells[i].visible && cells[i].column.allowFiltering !== false);\n }\n }\n }\n getInfo(e) {\n return extend(super.getInfo(e), { isContent: false, isHeader: true });\n }\n validator() {\n return () => true;\n }\n shouldFocusChange(e) {\n let [rowIndex, columnIndex] = this.matrix.current;\n if (rowIndex < 0 || columnIndex < 0) {\n return true;\n }\n let cell = getValue(`${rowIndex}.cells.${columnIndex}`, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'altDownArrow' ? !cell.classList.contains('e-headercell') : true;\n }\n}\nclass FixedContentFocus extends ContentFocus {\n getTable() {\n return this.parent.getContent().querySelector('.e-frozencontent .e-table');\n }\n jump(action, current) {\n let enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n return {\n swap: (action === 'upArrow' || enterFrozen) && current[0] === 0\n || ((action === 'tab' || action === 'rightArrow') && current[1] === this.matrix.columns),\n toHeader: (action === 'upArrow' || enterFrozen) && current[0] === 0,\n toFrozen: (action === 'upArrow' || enterFrozen) && current[0] === 0\n };\n }\n getNextCurrent(previous = [], swap, active, action) {\n let current2 = [];\n if (action === 'tab' && this.parent.enableHeaderFocus) {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'leftArrow' || action === 'shiftTab') {\n current2[0] = previous[0];\n current2[1] = active.matrix.columns + 1;\n }\n else if (action === 'downArrow' || action === 'enter') {\n current2[0] = -1;\n current2[1] = previous[1];\n }\n return current2;\n }\n}\nclass FixedHeaderFocus extends HeaderFocus {\n jump(action, current) {\n let enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n let hMatrix = this.parent.focusModule.header && this.parent.focusModule.header.matrix.matrix;\n let isPresent = hMatrix && !isNullOrUndefined(hMatrix[current[0]]);\n return {\n swap: (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1\n || ((action === 'rightArrow' || action === 'tab') && current[1] === this.matrix.columns && isPresent),\n toHeader: (action === 'rightArrow' || action === 'tab') && current[1] === this.matrix.columns,\n toFrozen: (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1\n };\n }\n getTable() {\n return (this.parent.getHeaderContent().querySelector('.e-frozenheader .e-table'));\n }\n getNextCurrent(previous = [], swap, active, action) {\n let current3 = [];\n if (action === 'leftArrow' || action === 'shiftTab') {\n current3[0] = previous[0];\n current3[1] = active.matrix.columns + 1;\n }\n else if (action === 'upArrow' || action === 'shiftEnter') {\n current3[0] = this.matrix.matrix.length;\n current3[1] = previous[1];\n }\n return current3;\n }\n}\n/** @hidden */\nclass SearchBox {\n constructor(searchBox) {\n this.searchBox = searchBox;\n }\n searchFocus(args) {\n args.target.parentElement.classList.add('e-input-focus');\n }\n searchBlur(args) {\n args.target.parentElement.classList.remove('e-input-focus');\n }\n wireEvent() {\n if (this.searchBox) {\n EventHandler.add(this.searchBox, 'focus', this.searchFocus, this);\n EventHandler.add(this.searchBox, 'blur', this.searchBlur, this);\n }\n }\n unWireEvent() {\n if (this.searchBox) {\n EventHandler.remove(this.searchBox, 'focus', this.searchFocus);\n EventHandler.remove(this.searchBox, 'blur', this.searchBlur);\n }\n }\n}\n\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Configures the paging behavior of the Grid.\n */\nclass PageSettings extends ChildProperty {\n}\n__decorate$2([\n Property(12)\n], PageSettings.prototype, \"pageSize\", void 0);\n__decorate$2([\n Property(8)\n], PageSettings.prototype, \"pageCount\", void 0);\n__decorate$2([\n Property(1)\n], PageSettings.prototype, \"currentPage\", void 0);\n__decorate$2([\n Property()\n], PageSettings.prototype, \"totalRecordsCount\", void 0);\n__decorate$2([\n Property(false)\n], PageSettings.prototype, \"enableQueryString\", void 0);\n__decorate$2([\n Property(false)\n], PageSettings.prototype, \"pageSizes\", void 0);\n__decorate$2([\n Property(null)\n], PageSettings.prototype, \"template\", void 0);\n\nvar __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Configures the column chooser behavior of the Grid.\n */\nclass ColumnChooserSettings extends ChildProperty {\n}\n__decorate$3([\n Property('startsWith')\n], ColumnChooserSettings.prototype, \"operator\", void 0);\n\n/**\n * The `Selection` module is used to handle cell and row selection.\n */\nclass Selection {\n /**\n * Constructor for the Grid selection module\n * @hidden\n */\n constructor(parent, selectionSettings, locator) {\n //Internal letiables \n /**\n * @hidden\n */\n this.selectedRowIndexes = [];\n /**\n * @hidden\n */\n this.selectedRowCellIndexes = [];\n /**\n * @hidden\n */\n this.selectedRecords = [];\n /**\n * @hidden\n */\n this.preventFocus = false;\n this.checkBoxState = false;\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n this.enableSelectMultiTouch = false;\n this.clearRowCheck = false;\n this.selectRowCheck = false;\n this.selectedRowState = {};\n this.totalRecordsCount = 0;\n this.chkAllCollec = [];\n this.isCheckedOnAdd = false;\n this.persistSelectedData = [];\n this.isCancelDeSelect = false;\n this.isPreventCellSelect = false;\n this.disableUI = false;\n this.isPersisted = false;\n this.cmdKeyPressed = false;\n this.cellselected = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n /**\n * @hidden\n */\n this.autoFillRLselection = true;\n this.parent = parent;\n this.selectionSettings = selectionSettings;\n this.factory = locator.getService('rendererFactory');\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.wireEvents();\n }\n initializeSelection() {\n this.parent.log('selection_key_missing');\n this.render();\n }\n /**\n * The function used to trigger onActionBegin\n * @return {void}\n * @hidden\n */\n onActionBegin(args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n }\n fDataUpdate(args) {\n if (!this.isMultiSelection && (!isNullOrUndefined(args.cellIndex) || !isNullOrUndefined(args.rowIndex))) {\n let rowObj = this.getRowObj(isNullOrUndefined(args.rowIndex) ? isNullOrUndefined(args.cellIndex) ?\n this.currentIndex : args.cellIndex.rowIndex : args.rowIndex);\n args.foreignKeyData = rowObj.foreignKeyData;\n }\n return args;\n }\n /**\n * The function used to trigger onActionComplete\n * @return {void}\n * @hidden\n */\n onActionComplete(args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n this.isMultiSelection = false;\n }\n /**\n * For internal use only - Get the module name.\n * @private\n */\n getModuleName() {\n return 'selection';\n }\n /**\n * To destroy the selection\n * @return {void}\n * @hidden\n */\n destroy() {\n let gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.e-gridheader') && !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n this.hidePopUp();\n this.clearSelection();\n this.removeEventListener();\n this.unWireEvents();\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n }\n isEditing() {\n return (this.parent.editSettings.mode === 'Normal' || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule &&\n this.parent.editModule.formObj && !this.parent.editModule.formObj.validate())) &&\n this.parent.isEdit && !this.parent.isPersistSelection;\n }\n getSelectedMovableRow(index) {\n let gObj = this.parent;\n if (gObj.getFrozenColumns() && this.parent.getContent().querySelector('.e-movablecontent')) {\n return gObj.getMovableRowByIndex(index);\n }\n return null;\n }\n getCurrentBatchRecordChanges() {\n let gObj = this.parent;\n let added = 'addedRecords';\n let deleted = 'deletedRecords';\n if (gObj.editSettings.mode === 'Batch' && gObj.editModule) {\n let currentRecords = iterateExtend(this.parent.getCurrentViewRecords());\n currentRecords = gObj.editSettings.newRowPosition === 'Bottom' ?\n currentRecords.concat(this.parent.editModule.getBatchChanges()[added]) :\n this.parent.editModule.getBatchChanges()[added].concat(currentRecords);\n let deletedRecords = this.parent.editModule.getBatchChanges()[deleted];\n let primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n for (let i = 0; i < (deletedRecords.length); i++) {\n for (let j = 0; j < currentRecords.length; j++) {\n if (deletedRecords[i][primaryKey] === currentRecords[j][primaryKey]) {\n currentRecords.splice(j, 1);\n break;\n }\n }\n }\n return currentRecords;\n }\n else {\n return gObj.getCurrentViewRecords();\n }\n }\n /**\n * Selects a row by the given index.\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @return {void}\n */\n selectRow(index, isToggle) {\n if (this.selectedRowIndexes.length && this.selectionSettings.enableSimpleMultiRowSelection) {\n this.addRowsToSelection([index]);\n return;\n }\n let gObj = this.parent;\n let selectedRow = gObj.getRowByIndex(index);\n let selectedMovableRow = this.getSelectedMovableRow(index);\n let selectData;\n let isRemoved = false;\n if (gObj.enableVirtualization && index > -1) {\n this.parent.notify(selectVirtualRow, { selectedIndex: index });\n let frozenData = gObj.getFrozenColumns() ? gObj.contentModule.getRowObjectByIndex(index)\n : null;\n if (selectedRow && (gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')) || frozenData)) {\n selectData = frozenData ? frozenData : gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')).data;\n }\n else {\n let prevSelectedData = this.parent.getSelectedRecords();\n if (prevSelectedData.length > 0) {\n this.clearRowSelection();\n }\n return;\n }\n }\n else {\n selectData = this.getCurrentBatchRecordChanges()[index];\n }\n if (!this.isRowType() || !selectedRow || this.isEditing()) {\n // if (this.isEditing()) {\n // gObj.selectedRowIndex = index;\n // }\n return;\n }\n let isRowSelected = selectedRow.hasAttribute('aria-selected');\n this.activeTarget();\n isToggle = !isToggle ? isToggle :\n !this.selectedRowIndexes.length ? false :\n (this.selectedRowIndexes.length === 1 ? (index === this.selectedRowIndexes[0]) : false);\n let args;\n let can = 'cancel';\n if (!isToggle) {\n let isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n data: selectData, rowIndex: index, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest, row: selectedRow,\n previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n args = this.addMovableArgs(args, selectedMovableRow);\n }\n else {\n args = {\n data: selectData, rowIndex: index, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest, previousRowIndex: this.prevRowIndex,\n cancel: false, isInteracted: this.isInteracted, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n }\n this.parent.trigger(rowSelecting, this.fDataUpdate(args), this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can));\n }\n else {\n this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can)(args);\n }\n }\n rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can) {\n return (args) => {\n if (!isNullOrUndefined(args) && args[can] === true) {\n this.disableInteracted();\n return;\n }\n this.index = index;\n this.toggle = isToggle;\n this.data = selectData;\n this.removed = isRemoved;\n if (isRowSelected && this.selectionSettings.persistSelection && !(this.selectionSettings.checkboxMode === 'ResetOnRowClick')) {\n this.clearSelectedRow(index);\n isRemoved = true;\n this.removed = isRemoved;\n this.selectRowCallBack();\n }\n else if (!isRowSelected && this.selectionSettings.persistSelection &&\n this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n this.selectRowCallBack();\n }\n if (this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n this.clearSelection();\n }\n if (!this.selectionSettings.persistSelection || this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n this.selectRowCheck = true;\n this.clearRow();\n }\n };\n }\n selectRowCallBack() {\n let gObj = this.parent;\n let args;\n let index = this.index;\n let isToggle = this.toggle;\n let selectData = this.data;\n let isRemoved = this.removed;\n let selectedRow = gObj.getRowByIndex(index);\n let selectedMovableRow = this.getSelectedMovableRow(index);\n if (!isToggle && !isRemoved) {\n if (this.selectedRowIndexes.indexOf(index) <= -1) {\n this.updateRowSelection(selectedRow, index);\n if (gObj.getFrozenColumns()) {\n this.updateRowSelection(selectedMovableRow, index);\n }\n }\n this.selectRowIndex(index);\n }\n if (!isToggle) {\n let isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n data: selectData, rowIndex: index,\n row: selectedRow, previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, isInteracted: this.isInteracted,\n isHeaderCheckBoxClicked: this.isHeaderCheckboxClicked\n };\n args = this.addMovableArgs(args, selectedMovableRow);\n }\n else {\n args = {\n data: selectData, rowIndex: index,\n row: selectedRow, previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, isInteracted: this.isInteracted,\n isHeaderCheckBoxClicked: this.isHeaderCheckboxClicked\n };\n }\n this.onActionComplete(args, rowSelected);\n }\n if (isBlazor() && this.parent.isServerRendered && this.parent.enableVirtualization) {\n let interopAdaptor = 'interopAdaptor';\n let invokeMethodAsync = 'invokeMethodAsync';\n this.parent[interopAdaptor][invokeMethodAsync]('MaintainSelection', true, 'normal', [index]);\n }\n this.isInteracted = false;\n this.updateRowProps(index);\n }\n addMovableArgs(targetObj, mRow) {\n if (this.parent.getFrozenColumns()) {\n let mObj = { mRow: mRow, previousMovRow: this.parent.getMovableRows()[this.prevRowIndex] };\n targetObj = Object.assign({}, targetObj, mObj);\n }\n return targetObj;\n }\n /**\n * Selects a range of rows from start and end row indexes.\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n * @return {void}\n */\n selectRowsByRange(startIndex, endIndex) {\n this.selectRows(this.getCollectionFromIndexes(startIndex, endIndex));\n this.selectRowIndex(endIndex);\n }\n /**\n * Selects a collection of rows by index.\n * @param {number[]} rowIndexes - Specifies an array of row indexes.\n * @return {void}\n */\n selectRows(rowIndexes) {\n let gObj = this.parent;\n let rowIndex = !this.isSingleSel() ? rowIndexes[0] : rowIndexes[rowIndexes.length - 1];\n this.isMultiSelection = true;\n let selectedRows = [];\n let foreignKeyData$$1 = [];\n let selectedMovableRow = this.getSelectedMovableRow(rowIndex);\n let frzCols = gObj.getFrozenColumns();\n let can = 'cancel';\n let selectedData = [];\n if (!this.isRowType() || this.isEditing()) {\n return;\n }\n for (let i = 0, len = rowIndexes.length; i < len; i++) {\n let currentRow = this.parent.getDataRows()[rowIndexes[i]];\n let rowObj = this.getRowObj(currentRow);\n if (rowObj) {\n selectedData.push(rowObj.data);\n selectedRows.push(currentRow);\n foreignKeyData$$1.push(rowObj.foreignKeyData);\n }\n }\n let isHybrid = 'isHybrid';\n this.activeTarget();\n let args;\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n cancel: false,\n rowIndexes: rowIndexes, row: selectedRows, rowIndex: rowIndex, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n isInteracted: this.isInteracted, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n data: selectedData, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData$$1\n };\n args = this.addMovableArgs(args, selectedMovableRow);\n }\n else {\n args = {\n cancel: false,\n rowIndexes: rowIndexes, rowIndex: rowIndex, previousRowIndex: this.prevRowIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n data: selectedData, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData$$1\n };\n }\n this.parent.trigger(rowSelecting, this.fDataUpdate(args), (args) => {\n if (!isNullOrUndefined(args) && args[can] === true) {\n this.disableInteracted();\n return;\n }\n this.clearRow();\n this.selectRowIndex(rowIndexes.slice(-1)[0]);\n if (!this.isSingleSel()) {\n for (let rowIdx of rowIndexes) {\n this.updateRowSelection(gObj.getRowByIndex(rowIdx), rowIdx);\n if (frzCols) {\n this.updateRowSelection(gObj.getMovableRowByIndex(rowIdx), rowIdx);\n }\n this.updateRowProps(rowIndex);\n }\n }\n else {\n this.updateRowSelection(gObj.getRowByIndex(rowIndex), rowIndex);\n if (frzCols) {\n this.updateRowSelection(gObj.getMovableRowByIndex(rowIndex), rowIndex);\n }\n this.updateRowProps(rowIndex);\n }\n let isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n rowIndexes: rowIndexes, row: selectedRows, rowIndex: rowIndex, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n data: isBlazor() ? selectedData : this.getSelectedRecords(), isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData$$1\n };\n args = this.addMovableArgs(args, selectedMovableRow);\n }\n else {\n args = {\n rowIndexes: rowIndexes, rowIndex: rowIndex, previousRowIndex: this.prevRowIndex,\n row: selectedRows, prevRow: gObj.getRows()[this.prevRowIndex],\n data: isBlazor() ? selectedData : this.getSelectedRecords(), isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData$$1\n };\n }\n if (this.isRowSelected) {\n this.onActionComplete(args, rowSelected);\n }\n });\n }\n /**\n * Select rows with existing row selection by passing row indexes.\n * @param {number} startIndex - Specifies the row indexes.\n * @return {void}\n * @hidden\n */\n addRowsToSelection(rowIndexes) {\n let gObj = this.parent;\n let can = 'cancel';\n let target = this.target;\n this.isMultiSelection = true;\n let indexes = gObj.getSelectedRowIndexes().concat(rowIndexes);\n let selectedRow = !this.isSingleSel() ? gObj.getRowByIndex(rowIndexes[0]) :\n gObj.getRowByIndex(rowIndexes[rowIndexes.length - 1]);\n let selectedMovableRow = !this.isSingleSel() ? this.getSelectedMovableRow(rowIndexes[0]) :\n this.getSelectedMovableRow(rowIndexes[rowIndexes.length - 1]);\n let frzCols = gObj.getFrozenColumns();\n if (!this.isRowType() || this.isEditing()) {\n return;\n }\n let args;\n let checkboxColumn = this.parent.getColumns().filter((col) => col.type === 'checkbox');\n for (let rowIndex of rowIndexes) {\n let rowObj = this.getRowObj(rowIndex);\n let isUnSelected = this.selectedRowIndexes.indexOf(rowIndex) > -1;\n this.selectRowIndex(rowIndex);\n if (isUnSelected && ((checkboxColumn.length ? true : this.selectionSettings.enableToggle) || this.isMultiCtrlRequest)) {\n this.isAddRowsToSelection = true;\n this.rowDeselect(rowDeselecting, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target);\n if (this.isCancelDeSelect) {\n return;\n }\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(rowIndex), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedRow), 1);\n selectedRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedRow, false, null, 'e-selectionbackground', 'e-active');\n if (selectedMovableRow) {\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedMovableRow), 1);\n selectedMovableRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedMovableRow, false, null, 'e-selectionbackground', 'e-active');\n }\n this.rowDeselect(rowDeselected, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target, [selectedMovableRow]);\n this.isInteracted = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n }\n else {\n let isHybrid = 'isHybrid';\n this.activeTarget();\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n cancel: false,\n data: rowObj.data, rowIndex: rowIndex, row: selectedRow, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n foreignKeyData: rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n args = this.addMovableArgs(args, selectedMovableRow);\n }\n else {\n args = {\n cancel: false,\n data: rowObj.data, rowIndex: rowIndex, previousRowIndex: this.prevRowIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n foreignKeyData: rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n }\n this.parent.trigger(rowSelecting, this.fDataUpdate(args), (args) => {\n if (!isNullOrUndefined(args) && args[can] === true) {\n this.disableInteracted();\n return;\n }\n if (this.isSingleSel()) {\n this.clearRow();\n }\n this.updateRowSelection(selectedRow, rowIndex);\n if (frzCols) {\n this.updateRowSelection(selectedMovableRow, rowIndex);\n }\n });\n }\n if (!isUnSelected) {\n let isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n data: rowObj.data, rowIndex: rowIndex, row: selectedRow, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n foreignKeyData: rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n args = this.addMovableArgs(args, selectedMovableRow);\n }\n else {\n args = {\n data: rowObj.data, rowIndex: rowIndex, previousRowIndex: this.prevRowIndex,\n row: selectedRow, prevRow: gObj.getRows()[this.prevRowIndex],\n foreignKeyData: rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n }\n this.onActionComplete(args, rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(rowIndex);\n if (this.isSingleSel()) {\n break;\n }\n }\n }\n getCollectionFromIndexes(startIndex, endIndex) {\n let indexes = [];\n let { i, max } = (startIndex <= endIndex) ?\n { i: startIndex, max: endIndex } : { i: endIndex, max: startIndex };\n for (; i <= max; i++) {\n indexes.push(i);\n }\n if (startIndex > endIndex) {\n indexes.reverse();\n }\n return indexes;\n }\n clearRow() {\n this.clearRowCheck = true;\n this.clearRowSelection();\n }\n clearRowCallBack() {\n if (this.isCancelDeSelect && this.parent.checkAllRows !== 'Check') {\n return;\n }\n this.selectedRowIndexes = [];\n this.selectedRecords = [];\n this.selectRowIndex(-1);\n if (this.isSingleSel() && this.parent.isPersistSelection) {\n this.selectedRowState = {};\n }\n }\n clearSelectedRow(index) {\n if (this.target) {\n let selectedEle = this.target.parentElement;\n if (!this.disableUI) {\n selectedEle.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedEle, false, true, 'e-selectionbackground', 'e-active');\n }\n this.updatePersistCollection(selectedEle, false);\n this.updateCheckBoxes(selectedEle);\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(index), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(this.parent.getRowByIndex(index)), 1);\n }\n }\n updateRowProps(startIndex) {\n this.prevRowIndex = startIndex;\n this.isRowSelected = this.selectedRowIndexes.length && true;\n }\n updatePersistCollection(selectedRow, chkState) {\n if (this.parent.isPersistSelection && !isNullOrUndefined(selectedRow)) {\n let rowObj = this.getRowObj(selectedRow);\n let pKey = rowObj.data ? rowObj.data[this.primaryKey] : null;\n if (pKey === null) {\n return;\n }\n rowObj.isSelected = chkState;\n if (chkState) {\n this.selectedRowState[pKey] = chkState;\n if (!this.persistSelectedData.some((data) => data[this.primaryKey] === pKey)) {\n this.persistSelectedData.push(rowObj.data);\n }\n }\n else {\n this.updatePersistDelete(pKey);\n }\n }\n }\n updatePersistDelete(pKey) {\n delete (this.selectedRowState[pKey]);\n let index;\n let isPresent = this.persistSelectedData.some((data, i) => {\n index = i;\n return data[this.primaryKey] === pKey;\n });\n if (isPresent) {\n this.persistSelectedData.splice(index, 1);\n }\n }\n updateCheckBoxes(row, chkState, rowIndex) {\n if (!isNullOrUndefined(row)) {\n let chkBox = row.querySelector('.e-checkselect');\n if (!isNullOrUndefined(chkBox)) {\n removeAddCboxClasses(chkBox.nextElementSibling, chkState);\n if (isNullOrUndefined(this.checkedTarget) || (!isNullOrUndefined(this.checkedTarget)\n && !this.checkedTarget.classList.contains('e-checkselectall'))) {\n this.setCheckAllState(rowIndex);\n }\n }\n }\n }\n updateRowSelection(selectedRow, startIndex) {\n if (!selectedRow) {\n return;\n }\n this.selectedRowIndexes.push(startIndex);\n let len = this.selectedRowIndexes.length;\n if (this.parent.getFrozenColumns() && len > 1) {\n if ((this.selectedRowIndexes[len - 2] === this.selectedRowIndexes[len - 1])) {\n this.selectedRowIndexes.pop();\n }\n }\n this.selectedRecords.push(selectedRow);\n selectedRow.setAttribute('aria-selected', 'true');\n this.updatePersistCollection(selectedRow, true);\n this.updateCheckBoxes(selectedRow, true);\n this.addRemoveClassesForRow(selectedRow, true, null, 'e-selectionbackground', 'e-active');\n if (!this.preventFocus) {\n let target = this.focus.getPrevIndexes().cellIndex ?\n selectedRow.cells[this.focus.getPrevIndexes().cellIndex] :\n selectedRow.querySelector('.e-selectionbackground:not(.e-hide):not(.e-detailrowcollapse):not(.e-detailrowexpand)');\n if (this.parent.contextMenuModule && this.mouseButton === 2) {\n target = this.parent.contextMenuModule.cell;\n }\n if (!target) {\n return;\n }\n this.focus.onClick({ target }, true);\n }\n }\n /**\n * Deselects the currently selected rows and cells.\n * @return {void}\n */\n clearSelection() {\n if (!this.parent.isPersistSelection || (this.parent.isPersistSelection && !this.parent.isEdit) ||\n (!isNullOrUndefined(this.checkedTarget) && this.checkedTarget.classList.contains('e-checkselectall'))) {\n let span = this.parent.element.querySelector('.e-gridpopup').querySelector('span');\n if (span.classList.contains('e-rowselect')) {\n span.classList.remove('e-spanclicked');\n }\n if (this.parent.isPersistSelection) {\n this.persistSelectedData = [];\n this.selectedRowState = {};\n }\n this.clearRowSelection();\n this.clearCellSelection();\n this.prevRowIndex = undefined;\n this.enableSelectMultiTouch = false;\n this.isInteracted = false;\n }\n }\n /**\n * Deselects the currently selected rows.\n * @return {void}\n */\n clearRowSelection() {\n if (this.isRowSelected) {\n let gObj = this.parent;\n let rows = this.parent.getDataRows();\n let data = [];\n let row = [];\n let mRow = [];\n let rowIndex = [];\n let frzCols = gObj.getFrozenColumns();\n let foreignKeyData$$1 = [];\n let target = this.target;\n let currentViewData = this.parent.getCurrentViewRecords();\n for (let i = 0, len = this.selectedRowIndexes.length; i < len; i++) {\n let currentRow = this.parent.editSettings.mode === 'Batch' ?\n this.parent.getRows()[this.selectedRowIndexes[i]]\n : this.parent.getDataRows()[this.selectedRowIndexes[i]];\n let rowObj = this.getRowObj(currentRow);\n if (rowObj) {\n data.push(rowObj.data);\n row.push(currentRow);\n rowIndex.push(this.selectedRowIndexes[i]);\n foreignKeyData$$1.push(rowObj.foreignKeyData);\n }\n if (frzCols) {\n mRow.push(gObj.getMovableRows()[this.selectedRowIndexes[i]]);\n }\n }\n if (this.selectionSettings.persistSelection && this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n this.isInteracted = this.checkSelectAllClicked ? true : false;\n }\n this.rowDeselect(rowDeselecting, rowIndex, data, row, foreignKeyData$$1, target, mRow, () => {\n if (this.isCancelDeSelect && (this.isInteracted || this.checkSelectAllClicked)) {\n if (this.parent.isPersistSelection) {\n if (this.getCheckAllStatus(this.parent.element.querySelector('.e-checkselectall')) === 'Intermediate') {\n for (let i = 0; i < this.selectedRecords.length; i++) {\n this.updatePersistCollection(this.selectedRecords[i], true);\n }\n }\n else {\n this.parent.checkAllRows = 'Check';\n this.updatePersistSelectedData(true);\n }\n }\n if (this.clearRowCheck) {\n this.clearRowCallBack();\n this.clearRowCheck = false;\n if (this.selectRowCheck) {\n this.selectRowCallBack();\n this.selectRowCheck = false;\n }\n }\n return;\n }\n let element = [].slice.call(rows.filter((record) => record.hasAttribute('aria-selected')));\n for (let j = 0; j < element.length; j++) {\n if (!this.disableUI || isBlazor()) {\n element[j].removeAttribute('aria-selected');\n this.addRemoveClassesForRow(element[j], false, true, 'e-selectionbackground', 'e-active');\n }\n // tslint:disable-next-line:align\n this.updatePersistCollection(element[j], false);\n this.updateCheckBoxes(element[j]);\n }\n if (isBlazor() && this.parent.isServerRendered && this.parent.enableVirtualization) {\n this.getRenderer().setSelection(null, false, true);\n }\n for (let i = 0, len = this.selectedRowIndexes.length; i < len; i++) {\n let movableRow = this.getSelectedMovableRow(this.selectedRowIndexes[i]);\n if (movableRow) {\n if (!this.disableUI || isBlazor()) {\n movableRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(movableRow, false, true, 'e-selectionbackground', 'e-active');\n }\n this.updatePersistCollection(movableRow, false);\n }\n }\n this.selectedRowIndexes = [];\n this.selectedRecords = [];\n this.isRowSelected = false;\n this.selectRowIndex(-1);\n this.rowDeselect(rowDeselected, rowIndex, data, row, foreignKeyData$$1, target, mRow);\n if (this.clearRowCheck) {\n this.clearRowCallBack();\n this.clearRowCheck = false;\n if (this.selectRowCheck) {\n this.selectRowCallBack();\n this.selectRowCheck = false;\n }\n }\n });\n }\n else {\n if (this.clearRowCheck) {\n this.clearRowCallBack();\n this.clearRowCheck = false;\n if (this.selectRowCheck) {\n this.selectRowCallBack();\n this.selectRowCheck = false;\n }\n }\n }\n }\n rowDeselect(type, rowIndex, data, row, foreignKeyData$$1, target, mRow, rowDeselectCallBack) {\n if ((this.selectionSettings.persistSelection && this.isInteracted) || !this.selectionSettings.persistSelection) {\n let cancl = 'cancel';\n let rowDeselectObj = {\n rowIndex: rowIndex[0], data: this.selectionSettings.persistSelection && this.parent.checkAllRows === 'Uncheck'\n && this.selectionSettings.checkboxMode !== 'ResetOnRowClick' ?\n this.persistSelectedData : data, foreignKeyData: foreignKeyData$$1,\n cancel: false, isInteracted: this.isInteracted, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n if (type === 'rowDeselected') {\n delete rowDeselectObj.cancel;\n }\n let isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n let rowInString = 'row';\n let target = 'target';\n let rowidx = 'rowIndex';\n let rowidxex = 'rowIndexes';\n let data = 'data';\n let foreignKey = 'foreignKeyData';\n rowDeselectObj[rowInString] = row;\n rowDeselectObj[target] = this.actualTarget;\n let isHeaderCheckBxClick = this.actualTarget && !isNullOrUndefined(closest(this.actualTarget, 'thead'));\n if (isHeaderCheckBxClick || rowIndex.length > 1) {\n rowDeselectObj[rowidx] = rowIndex[0];\n rowDeselectObj[rowidxex] = rowIndex;\n }\n else if (rowIndex.length === 1) {\n rowDeselectObj[data] = rowDeselectObj[data][0];\n rowDeselectObj[rowInString] = rowDeselectObj[rowInString][0];\n rowDeselectObj[foreignKey] = rowDeselectObj[foreignKey][0];\n if (this.isAddRowsToSelection) {\n rowDeselectObj[rowidxex] = rowIndex;\n }\n }\n }\n else {\n let rowIndex = 'rowIndex';\n let data = 'data';\n rowDeselectObj[rowIndex] = rowDeselectObj[rowIndex][rowDeselectObj[rowIndex].length - 1];\n rowDeselectObj[data] = rowDeselectObj[data][rowDeselectObj[data].length - 1];\n }\n this.parent.trigger(type, (!isBlazor() || this.parent.isJsComponent) && this.parent.getFrozenColumns() !== 0 ? Object.assign({}, rowDeselectObj, { mRow: mRow }) : rowDeselectObj, (args) => {\n this.isCancelDeSelect = args[cancl];\n if (!this.isCancelDeSelect || (!this.isInteracted && !this.checkSelectAllClicked)) {\n this.updatePersistCollection(row[0], false);\n this.updateCheckBoxes(row[0], undefined, rowIndex[0]);\n }\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n });\n }\n else if (this.selectionSettings.persistSelection && !this.isInteracted) {\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n }\n }\n getRowObj(row = this.currentIndex) {\n if (isNullOrUndefined(row)) {\n return {};\n }\n if (typeof row === 'number') {\n row = this.parent.getRowByIndex(row);\n }\n if (row) {\n return this.parent.getRowObjectFromUID(row.getAttribute('data-uid')) || {};\n }\n return {};\n }\n getSelectedMovableCell(cellIndex) {\n let gObj = this.parent;\n let frzCols = gObj.getFrozenColumns();\n if (frzCols) {\n if (cellIndex.cellIndex >= frzCols) {\n return gObj.getMovableCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n return null;\n }\n return null;\n }\n /**\n * Selects a cell by the given index.\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @return {void}\n */\n selectCell(cellIndex, isToggle) {\n if (!this.isCellType()) {\n return;\n }\n let gObj = this.parent;\n let selectedCell = this.getSelectedMovableCell(cellIndex);\n let args;\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n this.currentIndex = cellIndex.rowIndex;\n let selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (!this.isCellType() || !selectedCell || this.isEditing()) {\n return;\n }\n let isCellSelected = selectedCell.classList.contains('e-cellselectionbackground');\n isToggle = !isToggle ? isToggle : (!isUndefined(this.prevCIdxs) &&\n cellIndex.rowIndex === this.prevCIdxs.rowIndex && cellIndex.cellIndex === this.prevCIdxs.cellIndex &&\n isCellSelected);\n if (!isToggle) {\n args = {\n data: selectedData, cellIndex: cellIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ?\n this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined,\n cancel: false\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n let currentCell = 'currentCell';\n args[currentCell] = selectedCell;\n let previousRowCellIndex = 'previousRowCellIndex';\n args[previousRowCellIndex] = this.prevECIdxs;\n }\n this.parent.trigger(cellSelecting, this.fDataUpdate(args), this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData));\n this.cellselected = true;\n }\n else {\n this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData)(args);\n }\n }\n successCallBack(cellSelectingArgs, isToggle, cellIndex, selectedCell, selectedData) {\n return (cellSelectingArgs) => {\n let cncl = 'cancel';\n let currentCell = 'currentCell';\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[cncl] === true) {\n return;\n }\n if (!isToggle) {\n cellSelectingArgs[currentCell] = cellSelectingArgs[currentCell] ? cellSelectingArgs[currentCell] : selectedCell;\n }\n this.clearCell();\n if (!isToggle) {\n this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isToggle) {\n let args;\n let isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n data: selectedData, cellIndex: cellIndex, currentCell: selectedCell,\n selectedRowCellIndex: this.selectedRowCellIndexes,\n previousRowCell: this.prevECIdxs ?\n this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n let previousRowCellIndex = 'previousRowCellIndex';\n args[previousRowCellIndex] = this.prevECIdxs;\n }\n else {\n args = { data: selectedData, cellIndex: cellIndex, selectedRowCellIndex: this.selectedRowCellIndexes };\n }\n this.updateCellProps(cellIndex, cellIndex);\n this.onActionComplete(args, cellSelected);\n }\n };\n }\n getCellIndex(rIdx, cIdx) {\n return (this.parent.getFrozenColumns() ? (cIdx >= this.parent.getFrozenColumns() ? this.parent.getMovableCellFromIndex(rIdx, cIdx)\n : this.parent.getCellFromIndex(rIdx, cIdx)) : this.parent.getCellFromIndex(rIdx, cIdx));\n }\n /**\n * Selects a range of cells from start and end indexes.\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n * @return {void}\n */\n selectCellsByRange(startIndex, endIndex) {\n if (!this.isCellType()) {\n return;\n }\n let gObj = this.parent;\n let selectedCell = this.getSelectedMovableCell(startIndex);\n let frzCols = gObj.getFrozenColumns();\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(startIndex.rowIndex, startIndex.cellIndex);\n }\n let min;\n let max;\n let stIndex = startIndex;\n let edIndex = endIndex = endIndex ? endIndex : startIndex;\n let cellIndexes;\n this.currentIndex = startIndex.rowIndex;\n let cncl = 'cancel';\n let selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n let args = {\n data: selectedData, cellIndex: startIndex, currentCell: selectedCell,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n if (!isBlazor()) {\n let previousRowCellIndex = 'previousRowCellIndex';\n args[previousRowCellIndex] = this.prevECIdxs;\n }\n this.parent.trigger(cellSelecting, this.fDataUpdate(args), (cellSelectingArgs) => {\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[cncl] === true) {\n return;\n }\n this.clearCell();\n if (startIndex.rowIndex > endIndex.rowIndex) {\n let temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (let i = startIndex.rowIndex; i <= endIndex.rowIndex; i++) {\n if (this.selectionSettings.cellSelectionMode.indexOf('Box') < 0) {\n min = i === startIndex.rowIndex ? (startIndex.cellIndex) : 0;\n max = i === endIndex.rowIndex ? (endIndex.cellIndex) : this.getLastColIndex(i);\n }\n else {\n min = startIndex.cellIndex;\n max = endIndex.cellIndex;\n }\n cellIndexes = [];\n for (let j = min < max ? min : max, len = min > max ? min : max; j <= len; j++) {\n if (frzCols) {\n if (j < frzCols) {\n selectedCell = gObj.getCellFromIndex(i, j);\n }\n else {\n selectedCell = gObj.getMovableCellFromIndex(i, j);\n }\n }\n else {\n selectedCell = gObj.getCellFromIndex(i, j);\n }\n if (!selectedCell) {\n continue;\n }\n cellIndexes.push(j);\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n }\n this.selectedRowCellIndexes.push({ rowIndex: i, cellIndexes: cellIndexes });\n }\n let cellSelectedArgs;\n let isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n cellSelectedArgs = {\n data: selectedData, cellIndex: edIndex, currentCell: gObj.getCellFromIndex(edIndex.rowIndex, edIndex.cellIndex),\n selectedRowCellIndex: this.selectedRowCellIndexes,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n let previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[previousRowCellIndex] = this.prevECIdxs;\n }\n else {\n cellSelectedArgs = { data: selectedData, cellIndex: edIndex, selectedRowCellIndex: this.selectedRowCellIndexes };\n }\n if (!this.isDragged) {\n this.onActionComplete(cellSelectedArgs, cellSelected);\n this.cellselected = true;\n }\n this.updateCellProps(stIndex, edIndex);\n });\n }\n /**\n * Selects a collection of cells by row and column indexes.\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @return {void}\n */\n selectCells(rowCellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n let gObj = this.parent;\n let selectedCell = this.getSelectedMovableCell(rowCellIndexes[0]);\n let frzCols = gObj.getFrozenColumns();\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[0].rowIndex, rowCellIndexes[0].cellIndexes[0]);\n }\n this.currentIndex = rowCellIndexes[0].rowIndex;\n let selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n let cellSelectArgs;\n let isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n cellSelectArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n let previousRowCellIndex = 'previousRowCellIndex';\n cellSelectArgs[previousRowCellIndex] = this.prevECIdxs;\n }\n else {\n cellSelectArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n }\n this.onActionBegin(cellSelectArgs, cellSelecting);\n for (let i = 0, len = rowCellIndexes.length; i < len; i++) {\n for (let j = 0, cellLen = rowCellIndexes[i].cellIndexes.length; j < cellLen; j++) {\n if (frzCols) {\n if (rowCellIndexes[i].cellIndexes[j] < frzCols) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[i].rowIndex, rowCellIndexes[i].cellIndexes[j]);\n }\n else {\n selectedCell = gObj.getMovableCellFromIndex(rowCellIndexes[i].rowIndex, rowCellIndexes[i].cellIndexes[j]);\n }\n }\n else {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[i].rowIndex, rowCellIndexes[i].cellIndexes[j]);\n }\n if (!selectedCell) {\n continue;\n }\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n this.addRowCellIndex({ rowIndex: rowCellIndexes[i].rowIndex, cellIndex: rowCellIndexes[i].cellIndexes[j] });\n }\n }\n this.updateCellProps({ rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] }, { rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] });\n let cellSelectedArgs;\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n cellSelectedArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, selectedRowCellIndex: this.selectedRowCellIndexes,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n let previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[previousRowCellIndex] = this.prevECIdxs;\n }\n else {\n cellSelectedArgs = { data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n selectedRowCellIndex: this.selectedRowCellIndexes };\n }\n this.onActionComplete(cellSelectedArgs, cellSelected);\n }\n /**\n * Select cells with existing cell selection by passing row and column index.\n * @param {IIndex} startIndex - Defines the collection of row and column index.\n * @return {void}\n * @hidden\n */\n addCellsToSelection(cellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n let gObj = this.parent;\n let selectedCell;\n let frzCols = gObj.getFrozenColumns();\n let index;\n this.currentIndex = cellIndexes[0].rowIndex;\n let cncl = 'cancel';\n let selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n let isHybrid = 'isHybrid';\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n this.hideAutoFill();\n let rowObj;\n if (frzCols && cellIndexes[0].cellIndex >= frzCols) {\n rowObj = gObj.getMovableRowsObject()[cellIndexes[0].rowIndex];\n }\n else {\n rowObj = this.getRowObj(cellIndexes[0].rowIndex);\n }\n let foreignKeyData$$1 = [];\n for (let cellIndex of cellIndexes) {\n for (let i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[i].rowIndex === cellIndex.rowIndex) {\n index = i;\n break;\n }\n }\n selectedCell = this.getSelectedMovableCell(cellIndex);\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n foreignKeyData$$1.push(rowObj.cells[frzCols && cellIndexes[0].cellIndex >= frzCols\n ? cellIndex.cellIndex - frzCols : cellIndex.cellIndex].foreignKeyData);\n let args;\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n cancel: false, data: selectedData, cellIndex: cellIndexes[0],\n isShiftPressed: this.isMultiShiftRequest,\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n previousRowCell: this.prevECIdxs ?\n gObj.getCellFromIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined,\n };\n let previousRowCellIndex = 'previousRowCellIndex';\n args[previousRowCellIndex] = this.prevECIdxs;\n }\n else {\n args = {\n cancel: false, data: selectedData, cellIndex: cellIndexes[0],\n isShiftPressed: this.isMultiShiftRequest, isCtrlPressed: this.isMultiCtrlRequest\n };\n }\n let isUnSelected = index > -1;\n if (isUnSelected) {\n let selectedCellIdx = this.selectedRowCellIndexes[index].cellIndexes;\n if (selectedCellIdx.indexOf(cellIndex.cellIndex) > -1) {\n this.cellDeselect(cellDeselecting, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData$$1);\n selectedCellIdx.splice(selectedCellIdx.indexOf(cellIndex.cellIndex), 1);\n if (selectedCellIdx.length === 0) {\n this.selectedRowCellIndexes.splice(index, 1);\n }\n selectedCell.classList.remove('e-cellselectionbackground');\n selectedCell.removeAttribute('aria-selected');\n this.cellDeselect(cellDeselected, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData$$1);\n }\n else {\n isUnSelected = false;\n this.onActionBegin(args, cellSelecting);\n this.addRowCellIndex({ rowIndex: cellIndex.rowIndex, cellIndex: cellIndex.cellIndex });\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n }\n }\n else {\n this.onActionBegin(args, cellSelecting);\n if (!isNullOrUndefined(args) && args[cncl] === true) {\n return;\n }\n this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isUnSelected) {\n let cellSelectedArgs;\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n cellSelectedArgs = {\n data: selectedData, cellIndex: cellIndexes[0], currentCell: selectedCell,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) :\n undefined, selectedRowCellIndex: this.selectedRowCellIndexes\n };\n let previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[previousRowCellIndex] = this.prevECIdxs;\n }\n else {\n cellSelectedArgs = { data: selectedData, cellIndex: cellIndexes[0], selectedRowCellIndex: this.selectedRowCellIndexes };\n }\n this.onActionComplete(cellSelectedArgs, cellSelected);\n this.cellselected = true;\n }\n this.updateCellProps(cellIndex, cellIndex);\n }\n }\n getColIndex(rowIndex, index) {\n let cells;\n let frzCols = this.parent.getFrozenColumns();\n if (frzCols) {\n if (index >= frzCols) {\n cells = this.parent.getMovableDataRows()[rowIndex] &&\n this.parent.getMovableDataRows()[rowIndex].querySelectorAll('td.e-rowcell');\n }\n }\n if (!cells) {\n cells = this.parent.getDataRows()[rowIndex] &&\n this.parent.getDataRows()[rowIndex].querySelectorAll('td.e-rowcell');\n }\n if (cells) {\n for (let m = 0; m < cells.length; m++) {\n let colIndex = parseInt(cells[m].getAttribute('aria-colindex'), 10);\n if (colIndex === index) {\n if (frzCols) {\n if (index >= frzCols) {\n m += frzCols;\n }\n }\n return m;\n }\n }\n }\n return -1;\n }\n getLastColIndex(rowIndex) {\n let cells = this.parent.getFrozenColumns() ? this.parent.getMovableDataRows()[rowIndex].querySelectorAll('td.e-rowcell')\n : this.parent.getDataRows()[rowIndex].querySelectorAll('td.e-rowcell');\n return parseInt(cells[cells.length - 1].getAttribute('aria-colindex'), 10);\n }\n clearCell() {\n this.clearCellSelection();\n }\n cellDeselect(type, cellIndexes, data, cells, foreignKeyData$$1) {\n let cancl = 'cancel';\n if (cells[0] && cells[0].classList.contains('e-gridchkbox')) {\n this.updateCheckBoxes(closest(cells[0], 'tr'));\n }\n let args = {\n cells: cells, data: data, cellIndexes: cellIndexes, foreignKeyData: foreignKeyData$$1, cancel: false\n };\n this.parent.trigger(type, args);\n this.isPreventCellSelect = args[cancl];\n }\n updateCellSelection(selectedCell, rowIndex, cellIndex) {\n if (!isNullOrUndefined(rowIndex)) {\n this.addRowCellIndex({ rowIndex: rowIndex, cellIndex: cellIndex });\n }\n selectedCell.classList.add('e-cellselectionbackground');\n if (selectedCell.classList.contains('e-gridchkbox')) {\n this.updateCheckBoxes(closest(selectedCell, 'tr'), true);\n }\n this.addAttribute(selectedCell);\n }\n addAttribute(cell) {\n this.target = cell;\n if (!isNullOrUndefined(cell)) {\n cell.setAttribute('aria-selected', 'true');\n if (!this.preventFocus) {\n this.focus.onClick({ target: cell }, true);\n }\n }\n }\n updateCellProps(startIndex, endIndex) {\n this.prevCIdxs = startIndex;\n this.prevECIdxs = endIndex;\n this.isCellSelected = this.selectedRowCellIndexes.length && true;\n }\n addRowCellIndex(rowCellIndex) {\n let isRowAvail;\n let index;\n for (let i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[i].rowIndex === rowCellIndex.rowIndex) {\n isRowAvail = true;\n index = i;\n break;\n }\n }\n if (isRowAvail) {\n if (this.selectedRowCellIndexes[index].cellIndexes.indexOf(rowCellIndex.cellIndex) < 0) {\n this.selectedRowCellIndexes[index].cellIndexes.push(rowCellIndex.cellIndex);\n }\n }\n else {\n this.selectedRowCellIndexes.push({ rowIndex: rowCellIndex.rowIndex, cellIndexes: [rowCellIndex.cellIndex] });\n }\n }\n /**\n * Deselects the currently selected cells.\n * @return {void}\n */\n clearCellSelection() {\n if (this.isCellSelected) {\n let gObj = this.parent;\n let selectedCells = this.getSelectedCellsElement();\n let rowCell = this.selectedRowCellIndexes;\n let data = [];\n let cells = [];\n let foreignKeyData$$1 = [];\n let currentViewData = this.getCurrentBatchRecordChanges();\n let frzCols = gObj.getFrozenColumns();\n this.hideAutoFill();\n for (let i = 0, len = rowCell.length; i < len; i++) {\n data.push(currentViewData[rowCell[i].rowIndex]);\n let rowObj = this.getRowObj(rowCell[i].rowIndex);\n for (let j = 0, cLen = rowCell[i].cellIndexes.length; j < cLen; j++) {\n if (frzCols) {\n if (rowCell[i].cellIndexes[j] < frzCols) {\n cells.push(gObj.getCellFromIndex(rowCell[i].rowIndex, rowCell[i].cellIndexes[j]));\n }\n else {\n cells.push(gObj.getMovableCellFromIndex(rowCell[i].rowIndex, rowCell[i].cellIndexes[j]));\n }\n }\n else {\n if (rowObj.cells) {\n foreignKeyData$$1.push(rowObj.cells[rowCell[i].cellIndexes[j]].foreignKeyData);\n }\n cells.push(gObj.getCellFromIndex(rowCell[i].rowIndex, rowCell[i].cellIndexes[j]));\n }\n }\n }\n this.cellDeselect(cellDeselecting, rowCell, data, cells, foreignKeyData$$1);\n if (this.isPreventCellSelect === true) {\n return;\n }\n for (let i = 0, len = selectedCells.length; i < len; i++) {\n selectedCells[i].classList.remove('e-cellselectionbackground');\n selectedCells[i].removeAttribute('aria-selected');\n }\n if (this.bdrElement) {\n this.showHideBorders('none');\n }\n this.selectedRowCellIndexes = [];\n this.isCellSelected = false;\n if (!this.isDragged && this.cellselected) {\n this.cellDeselect(cellDeselected, rowCell, data, cells, foreignKeyData$$1);\n }\n }\n }\n getSelectedCellsElement() {\n let gObj = this.parent;\n let rows = gObj.getDataRows();\n let mRows;\n if (gObj.getFrozenColumns()) {\n mRows = gObj.getMovableDataRows();\n rows = gObj.addMovableRows(rows, mRows);\n }\n let cells = [];\n for (let i = 0, len = rows.length; i < len; i++) {\n cells = cells.concat([].slice.call(rows[i].querySelectorAll('.e-cellselectionbackground')));\n }\n return cells;\n }\n mouseMoveHandler(e) {\n e.preventDefault();\n let gBRect = this.parent.element.getBoundingClientRect();\n let x1 = this.x;\n let y1 = this.y;\n let position = getPosition(e);\n let x2 = position.x - gBRect.left;\n let y2 = position.y - gBRect.top;\n let tmp;\n let target = closest(e.target, 'tr');\n this.isDragged = true;\n if (!this.isCellDrag) {\n if (!target) {\n target = closest(document.elementFromPoint(this.parent.element.offsetLeft + 2, e.clientY), 'tr');\n }\n if (x1 > x2) {\n tmp = x2;\n x2 = x1;\n x1 = tmp;\n }\n if (y1 > y2) {\n tmp = y2;\n y2 = y1;\n y1 = tmp;\n }\n this.element.style.left = x1 + 'px';\n this.element.style.top = y1 + 'px';\n this.element.style.width = x2 - x1 + 'px';\n this.element.style.height = y2 - y1 + 'px';\n }\n if (target && !e.ctrlKey && !e.shiftKey) {\n let rowIndex = parseInt(target.getAttribute('aria-rowindex'), 10);\n if (!this.isCellDrag) {\n this.hideAutoFill();\n this.selectRowsByRange(this.startDIndex, rowIndex);\n }\n else {\n let td = parentsUntil(e.target, 'e-rowcell');\n if (td) {\n this.startAFCell = this.startCell;\n this.endAFCell = parentsUntil(e.target, 'e-rowcell');\n this.selectLikeExcel(e, rowIndex, parseInt(td.getAttribute('aria-colindex'), 10));\n }\n }\n }\n }\n selectLikeExcel(e, rowIndex, cellIndex) {\n if (!this.isAutoFillSel) {\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.drawBorders();\n }\n else { //Autofill\n this.showAFBorders();\n this.selectLikeAutoFill(e);\n }\n }\n drawBorders() {\n if (this.selectionSettings.cellSelectionMode === 'BoxWithBorder' && this.selectedRowCellIndexes.length && !this.parent.isEdit) {\n this.parent.element.classList.add('e-enabledboxbdr');\n if (!this.bdrElement) {\n this.createBorders();\n }\n this.positionBorders();\n }\n else {\n this.showHideBorders('none');\n }\n }\n isLastCell(cell) {\n let cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[cells.length - 1] === cell;\n }\n isLastRow(cell) {\n let rows = [].slice.call(closest(cell, 'tbody').querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[rows.length - 1];\n }\n isFirstRow(cell) {\n let rows = [].slice.call(closest(cell, 'tbody').querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[0];\n }\n isFirstCell(cell) {\n let cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[0] === cell;\n }\n setBorders(parentEle, border, bdrStr) {\n let cells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground')).\n filter((ele) => ele.style.display === '');\n if (cells.length) {\n let start = cells[0];\n let end = cells[cells.length - 1];\n let stOff = start.getBoundingClientRect();\n let endOff = end.getBoundingClientRect();\n let parentOff = start.offsetParent.getBoundingClientRect();\n let rowHeight = this.isLastRow(end) && (bdrStr === '1' || bdrStr === '2') ? 2 : 0;\n let topOffSet = this.parent.frozenRows && (bdrStr === '1' || bdrStr === '2') &&\n this.isFirstRow(start) ? 1.5 : 0;\n let leftOffset = this.parent.getFrozenColumns() && (bdrStr === '2' || bdrStr === '4') &&\n this.isFirstCell(start) ? 1 : 0;\n if (this.parent.enableRtl) {\n border.style.right = parentOff.right - stOff.right - leftOffset + 'px';\n border.style.width = stOff.right - endOff.left + leftOffset + 1 + 'px';\n }\n else {\n border.style.left = stOff.left - parentOff.left - leftOffset + 'px';\n border.style.width = endOff.right - stOff.left + leftOffset + 1 + 'px';\n }\n border.style.top = stOff.top - parentOff.top - topOffSet + 'px';\n border.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) - rowHeight + topOffSet + 'px' :\n endOff.height + topOffSet - rowHeight + 1 + 'px';\n this.selectDirection += bdrStr;\n }\n else {\n border.style.display = 'none';\n }\n }\n positionBorders() {\n this.updateStartEndCells();\n if (!this.startCell || !this.bdrElement || !this.selectedRowCellIndexes.length) {\n return;\n }\n this.selectDirection = '';\n this.showHideBorders('');\n this.setBorders(this.parent.getContentTable(), this.bdrElement, '1');\n if (this.parent.getFrozenColumns()) {\n this.setBorders(this.parent.contentModule.getMovableContent(), this.mcBdrElement, '2');\n }\n if (this.parent.frozenRows) {\n this.setBorders(this.parent.getHeaderTable(), this.fhBdrElement, '3');\n if (this.parent.getFrozenColumns()) {\n this.setBorders(this.parent.headerModule.getMovableHeader(), this.mhBdrElement, '4');\n }\n }\n this.applyBorders(this.selectDirection);\n }\n applyBorders(str) {\n let rtl = this.parent.enableRtl;\n switch (str.length) {\n case 4:\n {\n this.bdrElement.style.borderWidth = rtl ? '0 2px 2px 0' : '0 0 2px 2px';\n this.mcBdrElement.style.borderWidth = rtl ? '0 0 2px 2px' : '0 2px 2px 0';\n this.fhBdrElement.style.borderWidth = rtl ? '2px 2px 0 0' : '2px 0 0 2px';\n this.mhBdrElement.style.borderWidth = rtl ? '2px 0 0 2px' : '2px 2px 0 0';\n }\n break;\n case 2:\n {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? '2px 2px 2px 0' : '2px 0 2px 2px' : '0 2px 2px 2px';\n if (this.parent.getFrozenColumns()) {\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? '2px 0 2px 2px' : '2px 2px 2px 0' : '0 2px 2px 2px';\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? '2px 2px 0 2px' : rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n if (this.parent.getFrozenColumns()) {\n this.mhBdrElement.style.borderWidth = str.includes('2') ? '2px 2px 0 2px' : rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n }\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = '2px';\n if (this.parent.getFrozenColumns()) {\n this.mcBdrElement.style.borderWidth = '2px';\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = '2px';\n if (this.parent.getFrozenColumns()) {\n this.mhBdrElement.style.borderWidth = '2px';\n }\n }\n break;\n }\n }\n createBorders() {\n if (!this.bdrElement) {\n this.bdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_bdr',\n styles: 'width: 2px; border-width: 0;'\n }));\n if (this.parent.getFrozenColumns()) {\n this.mcBdrElement = this.parent.contentModule.getMovableContent().appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_mcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_fhbdr', styles: 'height: 2px;' }));\n }\n if (this.parent.frozenRows && this.parent.getFrozenColumns()) {\n this.mhBdrElement = this.parent.headerModule.getMovableHeader().appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_mhbdr', styles: 'height: 2px;' }));\n }\n }\n }\n showHideBorders(display) {\n if (this.bdrElement) {\n this.bdrElement.style.display = display;\n if (this.parent.getFrozenColumns()) {\n this.mcBdrElement.style.display = display;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.display = display;\n }\n if (this.parent.frozenRows && this.parent.getFrozenColumns()) {\n this.mhBdrElement.style.display = display;\n }\n }\n }\n drawAFBorders() {\n if (!this.bdrAFBottom) {\n this.createAFBorders();\n }\n this.positionAFBorders();\n }\n positionAFBorders() {\n if (!this.startCell || !this.bdrAFLeft) {\n return;\n }\n let stOff = this.startAFCell.getBoundingClientRect();\n let endOff = this.endAFCell.getBoundingClientRect();\n let top = endOff.top - stOff.top > 0 ? 1 : 0;\n let firstCellTop = endOff.top - stOff.top >= 0 && (parentsUntil(this.startAFCell, 'e-movablecontent') ||\n parentsUntil(this.startAFCell, 'e-frozencontent')) && this.isFirstRow(this.startAFCell) ? 1.5 : 0;\n let firstCellLeft = (parentsUntil(this.startAFCell, 'e-movablecontent') ||\n parentsUntil(this.startAFCell, 'e-movableheader')) && this.isFirstCell(this.startAFCell) ? 1 : 0;\n let rowHeight = this.isLastRow(this.endAFCell) && (parentsUntil(this.endAFCell, 'e-movablecontent') ||\n parentsUntil(this.endAFCell, 'e-frozencontent')) ? 2 : 0;\n let parentOff = this.startAFCell.offsetParent.getBoundingClientRect();\n let parentRect = this.parent.element.getBoundingClientRect();\n let sTop = this.startAFCell.offsetParent.parentElement.scrollTop;\n let sLeft = this.startAFCell.offsetParent.parentElement.scrollLeft;\n let scrollTop = sTop - this.startAFCell.offsetTop;\n let scrollLeft = sLeft - this.startAFCell.offsetLeft;\n scrollTop = scrollTop > 0 ? Math.floor(scrollTop) - 1 : 0;\n scrollLeft = scrollLeft > 0 ? scrollLeft : 0;\n let left = stOff.left - parentRect.left;\n if (!this.parent.enableRtl) {\n this.bdrAFLeft.style.left = left - firstCellLeft + scrollLeft - 1 + 'px';\n this.bdrAFRight.style.left = endOff.left - parentRect.left - 2 + endOff.width + 'px';\n this.bdrAFTop.style.left = left + scrollLeft - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFRight.style.left, 10) - parseInt(this.bdrAFLeft.style.left, 10)\n - firstCellLeft + 1 + 'px';\n }\n else {\n let scrolloffSet = (parentsUntil(this.startAFCell, 'e-movablecontent') ||\n parentsUntil(this.startAFCell, 'e-movableheader')) ? stOff.right -\n this.startAFCell.offsetParent.parentElement.getBoundingClientRect().width -\n parentRect.left : 0;\n this.bdrAFLeft.style.right = parentRect.right - endOff.right - 2 + endOff.width + 'px';\n this.bdrAFRight.style.right = parentRect.right - stOff.right - firstCellLeft + scrolloffSet - 1 + 'px';\n this.bdrAFTop.style.left = endOff.left - parentRect.left - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFLeft.style.right, 10) - parseInt(this.bdrAFRight.style.right, 10)\n - firstCellLeft + 1 + 'px';\n }\n this.bdrAFLeft.style.top = stOff.top - parentRect.top - firstCellTop + scrollTop + 'px';\n this.bdrAFLeft.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) + firstCellTop - rowHeight - scrollTop + 'px' :\n endOff.height + firstCellTop - rowHeight - scrollTop + 'px';\n this.bdrAFRight.style.top = this.bdrAFLeft.style.top;\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n this.bdrAFTop.style.top = this.bdrAFRight.style.top;\n this.bdrAFBottom.style.left = this.bdrAFTop.style.left;\n this.bdrAFBottom.style.top = parseFloat(this.bdrAFLeft.style.top) + parseFloat(this.bdrAFLeft.style.height) - top - 1 + 'px';\n this.bdrAFBottom.style.width = this.bdrAFTop.style.width;\n }\n createAFBorders() {\n if (!this.bdrAFLeft) {\n this.bdrAFLeft = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafleft', styles: 'width: 2px;' }));\n this.bdrAFRight = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafright', styles: 'width: 2px;' }));\n this.bdrAFBottom = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafbottom', styles: 'height: 2px;' }));\n this.bdrAFTop = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdraftop', styles: 'height: 2px;' }));\n }\n }\n showAFBorders() {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = '';\n this.bdrAFRight.style.display = '';\n this.bdrAFBottom.style.display = '';\n this.bdrAFTop.style.display = '';\n }\n }\n hideAFBorders() {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = 'none';\n this.bdrAFRight.style.display = 'none';\n this.bdrAFBottom.style.display = 'none';\n this.bdrAFTop.style.display = 'none';\n }\n }\n updateValue(rIdx, cIdx, cell) {\n let args = this.createBeforeAutoFill(rIdx, cIdx, cell);\n if (!args.cancel) {\n let col = this.parent.getColumnByIndex(cIdx);\n if (this.parent.editModule && cell) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseInt(args.value, 10));\n }\n else {\n this.parent.editModule.updateCell(rIdx, col.field, args.value);\n }\n }\n }\n }\n createBeforeAutoFill(rowIndex, colIndex, cell) {\n let col = this.parent.getColumnByIndex(colIndex);\n let args = {\n column: col,\n value: cell.innerText\n };\n this.parent.trigger(beforeAutoFill, args);\n return args;\n }\n getAutoFillCells(rowIndex, startCellIdx) {\n let cells = [].slice.call(this.parent.getDataRows()[rowIndex].querySelectorAll('.e-cellselectionbackground'));\n if (this.parent.getFrozenColumns()) {\n cells = cells.concat([].slice.call(this.parent.getMovableDataRows()[rowIndex].querySelectorAll('.e-cellselectionbackground')));\n }\n return cells;\n }\n /* tslint:disable-next-line:max-func-body-length */\n selectLikeAutoFill(e, isApply) {\n let startrowIdx = parseInt(parentsUntil(this.startAFCell, 'e-row').getAttribute('aria-rowindex'), 10);\n let startCellIdx = parseInt(this.startAFCell.getAttribute('aria-colindex'), 10);\n let endrowIdx = parseInt(parentsUntil(this.endAFCell, 'e-row').getAttribute('aria-rowindex'), 10);\n let endCellIdx = parseInt(this.endAFCell.getAttribute('aria-colindex'), 10);\n let rowLen = this.selectedRowCellIndexes.length - 1;\n let colLen = this.selectedRowCellIndexes[0].cellIndexes.length - 1;\n switch (true) { //direction \n case !isApply && this.endAFCell.classList.contains('e-cellselectionbackground') &&\n !!parentsUntil(e.target, 'e-rowcell'):\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, startCellIdx);\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, startCellIdx + colLen);\n this.drawAFBorders();\n break;\n case this.autoFillRLselection && startCellIdx + colLen < endCellIdx && //right\n endCellIdx - startCellIdx - colLen + 1 > endrowIdx - startrowIdx - rowLen // right bottom\n && endCellIdx - startCellIdx - colLen + 1 > startrowIdx - endrowIdx: //right top\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, endCellIdx);\n endrowIdx = parseInt(parentsUntil(this.endAFCell, 'e-row').getAttribute('aria-rowindex'), 10);\n endCellIdx = parseInt(this.endAFCell.getAttribute('aria-colindex'), 10);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n let cellIdx = parseInt(this.endCell.getAttribute('aria-colindex'), 10);\n for (let i = startrowIdx; i <= endrowIdx; i++) {\n let cells = this.getAutoFillCells(i, startCellIdx);\n let c = 0;\n for (let j = cellIdx + 1; j <= endCellIdx; j++) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[c]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: this.startCellIndex }, { rowIndex: endrowIdx, cellIndex: endCellIdx });\n }\n break;\n case this.autoFillRLselection && startCellIdx > endCellIdx && // left\n startCellIdx - endCellIdx + 1 > endrowIdx - startrowIdx - rowLen && //left top\n startCellIdx - endCellIdx + 1 > startrowIdx - endrowIdx: // left bottom\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, endCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n for (let i = startrowIdx; i <= startrowIdx + rowLen; i++) {\n let cells = this.getAutoFillCells(i, startCellIdx);\n cells.reverse();\n let c = 0;\n for (let j = this.startCellIndex - 1; j >= endCellIdx; j--) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[c]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: endCellIdx }, { rowIndex: startrowIdx + rowLen, cellIndex: this.startCellIndex + colLen });\n }\n break;\n case startrowIdx > endrowIdx: //up\n this.startAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n let trIdx = parseInt(this.endCell.parentElement.getAttribute('aria-rowindex'), 10);\n let r = trIdx;\n for (let i = startrowIdx - 1; i >= endrowIdx; i--) {\n if (r === this.startIndex - 1) {\n r = trIdx;\n }\n let cells = this.getAutoFillCells(r, startCellIdx);\n let c = 0;\n r--;\n for (let j = this.startCellIndex; j <= this.startCellIndex + colLen; j++) {\n this.updateValue(i, j, cells[c]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: endrowIdx, cellIndex: startCellIdx + colLen }, { rowIndex: startrowIdx + rowLen, cellIndex: startCellIdx });\n }\n break;\n default: //down\n this.endAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx + colLen);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n let trIdx = parseInt(this.endCell.parentElement.getAttribute('aria-rowindex'), 10);\n let r = this.startIndex;\n for (let i = trIdx + 1; i <= endrowIdx; i++) {\n if (r === trIdx + 1) {\n r = this.startIndex;\n }\n let cells = this.getAutoFillCells(r, startCellIdx);\n r++;\n let c = 0;\n for (let m = this.startCellIndex; m <= this.startCellIndex + colLen; m++) {\n this.updateValue(i, m, cells[c]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: trIdx - rowLen, cellIndex: startCellIdx }, { rowIndex: endrowIdx, cellIndex: startCellIdx + colLen });\n }\n break;\n }\n }\n mouseUpHandler(e) {\n document.body.classList.remove('e-disableuserselect');\n if (this.element) {\n remove(this.element);\n }\n if (this.isDragged && this.selectedRowCellIndexes.length === 1 && this.selectedRowCellIndexes[0].cellIndexes.length === 1) {\n this.mUPTarget = parentsUntil(e.target, 'e-rowcell');\n }\n else {\n this.mUPTarget = null;\n }\n if (this.isDragged && !this.isAutoFillSel && this.selectionSettings.mode === 'Cell') {\n let target = e.target;\n let rowIndex = parseInt(target.parentElement.getAttribute('aria-rowindex'), 10);\n let cellIndex = parseInt(target.getAttribute('aria-colindex'), 10);\n this.isDragged = false;\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isDragged = false;\n this.updateAutoFillPosition();\n if (this.isAutoFillSel) {\n let lastCell = parentsUntil(e.target, 'e-rowcell');\n this.endAFCell = lastCell ? lastCell : this.endCell === this.endAFCell ? this.startAFCell : this.endAFCell;\n this.startAFCell = this.startCell;\n this.updateStartCellsIndex();\n this.selectLikeAutoFill(e, true);\n this.updateAutoFillPosition();\n this.hideAFBorders();\n this.positionBorders();\n this.isAutoFillSel = false;\n }\n EventHandler.remove(this.parent.getContent(), 'mousemove', this.mouseMoveHandler);\n if (this.parent.frozenRows) {\n EventHandler.remove(this.parent.getHeaderContent(), 'mousemove', this.mouseMoveHandler);\n }\n EventHandler.remove(document.body, 'mouseup', this.mouseUpHandler);\n }\n hideAutoFill() {\n if (this.autofill) {\n this.autofill.style.display = 'none';\n }\n }\n /**\n * @hidden\n */\n updateAutoFillPosition() {\n if (this.parent.enableAutoFill && !this.parent.isEdit &&\n this.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()\n && this.selectedRowCellIndexes.length) {\n let frzCols = this.parent.getFrozenColumns();\n let index = parseInt(this.target.getAttribute('aria-colindex'), 10);\n let rindex = parseInt(this.target.getAttribute('index'), 10);\n let rowIndex = this.selectedRowCellIndexes[this.selectedRowCellIndexes.length - 1].rowIndex;\n let cells = this.getAutoFillCells(rowIndex, index).filter((ele) => ele.style.display === '');\n let isFrozenCol;\n let isFrozenRow;\n if (frzCols && index >= frzCols) {\n isFrozenCol = true;\n }\n if (rindex < this.parent.frozenRows) {\n isFrozenRow = true;\n }\n if (!parentsUntil(this.target, 'e-table').querySelector('#' + this.parent.element.id + '_autofill')) {\n if (this.parent.element.querySelector('#' + this.parent.element.id + '_autofill')) {\n this.parent.element.querySelector('#' + this.parent.element.id + '_autofill').remove();\n }\n this.autofill = createElement('div', { className: 'e-autofill', id: this.parent.element.id + '_autofill' });\n this.autofill.style.display = 'none';\n !isFrozenRow ? !isFrozenCol ? this.parent.getContentTable().parentElement.appendChild(this.autofill) :\n this.parent.contentModule.getMovableContent().appendChild(this.autofill) :\n !isFrozenCol ? this.parent.getHeaderTable().parentElement.appendChild(this.autofill) :\n this.parent.headerModule.getMovableHeader().appendChild(this.autofill);\n }\n let cell = cells[cells.length - 1];\n if (cell && cell.offsetParent) {\n let clientRect = cell.getBoundingClientRect();\n let parentOff = cell.offsetParent.getBoundingClientRect();\n let colWidth = this.isLastCell(cell) ? 4 : 0;\n let rowHeight = this.isLastRow(cell) ? 3 : 0;\n if (!this.parent.enableRtl) {\n this.autofill.style.left = clientRect.left - parentOff.left + clientRect.width - 4 - colWidth + 'px';\n }\n else {\n this.autofill.style.right = parentOff.right - clientRect.right + clientRect.width - 4 - colWidth + 'px';\n }\n this.autofill.style.top = clientRect.top - parentOff.top + clientRect.height - 5 - rowHeight + 'px';\n }\n this.autofill.style.display = '';\n }\n else {\n this.hideAutoFill();\n }\n }\n mouseDownHandler(e) {\n this.mouseButton = e.button;\n let target = e.target;\n let gObj = this.parent;\n let isDrag;\n let gridElement = parentsUntil(target, 'e-grid');\n if (gridElement && gridElement.id !== gObj.element.id || parentsUntil(target, 'e-headercontent') && !this.parent.frozenRows ||\n parentsUntil(target, 'e-editedbatchcell') || parentsUntil(target, 'e-editedrow')) {\n return;\n }\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (parentsUntil(target, 'e-rowcell') && !e.shiftKey && !e.ctrlKey) {\n if (gObj.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()) {\n this.isCellDrag = true;\n isDrag = true;\n }\n else if (gObj.allowRowDragAndDrop && !gObj.isEdit) {\n if (!this.isRowType() || this.isSingleSel() || closest(target, 'td').classList.contains('e-selectionbackground')) {\n this.isDragged = false;\n return;\n }\n isDrag = true;\n this.element = this.parent.createElement('div', { className: 'e-griddragarea' });\n gObj.getContent().appendChild(this.element);\n }\n if (isDrag) {\n this.enableDrag(e, true);\n }\n }\n this.updateStartEndCells();\n if (target.classList.contains('e-autofill') || target.classList.contains('e-xlsel')) {\n this.isCellDrag = true;\n this.isAutoFillSel = true;\n this.enableDrag(e);\n }\n }\n updateStartEndCells() {\n let cells = [].slice.call(this.parent.element.querySelectorAll('.e-cellselectionbackground'));\n this.startCell = cells[0];\n this.endCell = cells[cells.length - 1];\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute('aria-rowindex'), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, 'e-rowcell').getAttribute('aria-colindex'), 10);\n }\n }\n updateStartCellsIndex() {\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute('aria-rowindex'), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, 'e-rowcell').getAttribute('aria-colindex'), 10);\n }\n }\n enableDrag(e, isUpdate) {\n let gObj = this.parent;\n if (isUpdate) {\n let tr = closest(e.target, 'tr');\n this.startDIndex = parseInt(tr.getAttribute('aria-rowindex'), 10);\n this.startDCellIndex = parseInt(parentsUntil(e.target, 'e-rowcell').getAttribute('aria-colindex'), 10);\n }\n document.body.classList.add('e-disableuserselect');\n let gBRect = gObj.element.getBoundingClientRect();\n let postion = getPosition(e);\n this.x = postion.x - gBRect.left;\n this.y = postion.y - gBRect.top;\n EventHandler.add(gObj.getContent(), 'mousemove', this.mouseMoveHandler, this);\n if (this.parent.frozenRows) {\n EventHandler.add(gObj.getHeaderContent(), 'mousemove', this.mouseMoveHandler, this);\n }\n EventHandler.add(document.body, 'mouseup', this.mouseUpHandler, this);\n }\n clearSelAfterRefresh(e) {\n let isInfiniteScroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfiniteScroll) {\n this.clearSelection();\n }\n }\n /**\n * @hidden\n */\n addEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(uiUpdate, this.enableAfterRender, this);\n this.parent.on(initialEnd, this.initializeSelection, this);\n this.parent.on(rowSelectionComplete, this.onActionComplete, this);\n this.parent.on(cellSelectionComplete, this.onActionComplete, this);\n this.parent.on(inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(cellFocused, this.onCellFocused, this);\n this.parent.on(beforeFragAppend, this.clearSelAfterRefresh, this);\n this.parent.on(columnPositionChanged, this.columnPositionChanged, this);\n this.parent.on(contentReady, this.initialEnd, this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.parent.addEventListener(actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(actionComplete, this.actionCompleteFunction);\n this.parent.on(rowsRemoved, this.rowsRemoved, this);\n this.parent.on(headerRefreshed, this.refreshHeader, this);\n this.addEventListener_checkbox();\n }\n /**\n * @hidden\n */\n removeEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(uiUpdate, this.enableAfterRender);\n this.parent.off(initialEnd, this.initializeSelection);\n this.parent.off(rowSelectionComplete, this.onActionComplete);\n this.parent.off(cellSelectionComplete, this.onActionComplete);\n this.parent.off(inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(cellFocused, this.onCellFocused);\n this.parent.off(beforeFragAppend, this.clearSelAfterRefresh);\n this.parent.off(columnPositionChanged, this.columnPositionChanged);\n this.parent.removeEventListener(actionBegin, this.actionBeginFunction);\n this.parent.removeEventListener(actionComplete, this.actionCompleteFunction);\n this.parent.off(rowsRemoved, this.rowsRemoved);\n this.parent.off(headerRefreshed, this.refreshHeader);\n this.removeEventListener_checkbox();\n }\n wireEvents() {\n this.isMacOS = navigator.userAgent.indexOf('Mac OS') !== -1;\n if (this.isMacOS) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.parent.element, 'keyup', this.keyUpHandler, this);\n }\n }\n unWireEvents() {\n if (this.isMacOS) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.parent.element, 'keyup', this.keyUpHandler);\n }\n }\n columnPositionChanged() {\n if (!this.parent.isPersistSelection) {\n this.clearSelection();\n }\n }\n refreshHeader() {\n this.setCheckAllState();\n }\n rowsRemoved(e) {\n for (let i = 0; i < e.records.length; i++) {\n delete (this.selectedRowState[e.records[i][this.primaryKey]]);\n --this.totalRecordsCount;\n }\n this.setCheckAllState();\n }\n ;\n beforeFragAppend(e) {\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection) {\n this.clearSelection();\n }\n }\n ;\n getCheckAllBox() {\n return this.parent.getHeaderContent().querySelector('.e-checkselectall');\n }\n enableAfterRender(e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.initPerisistSelection();\n }\n }\n render(e) {\n EventHandler.add(this.parent.getContent(), 'mousedown', this.mouseDownHandler, this);\n EventHandler.add(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler, this);\n }\n onPropertyChanged(e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n let gObj = this.parent;\n if (!isNullOrUndefined(e.properties.type) && this.selectionSettings.type === 'Single') {\n if (this.selectedRowCellIndexes.length > 1) {\n this.clearCellSelection();\n this.prevCIdxs = undefined;\n }\n if (this.selectedRowIndexes.length > 1) {\n this.clearRowSelection();\n this.prevRowIndex = undefined;\n }\n this.enableSelectMultiTouch = false;\n this.hidePopUp();\n }\n if (!isNullOrUndefined(e.properties.mode) ||\n !isNullOrUndefined(e.properties.cellSelectionMode)) {\n this.clearSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n }\n this.isPersisted = true;\n this.checkBoxSelectionChanged();\n this.isPersisted = false;\n this.initPerisistSelection();\n let checkboxColumn = this.parent.getColumns().filter((col) => col.type === 'checkbox');\n if (checkboxColumn.length) {\n gObj.isCheckBoxSelection = !(this.selectionSettings.checkboxMode === 'ResetOnRowClick');\n }\n this.drawBorders();\n }\n hidePopUp() {\n if (this.parent.element.querySelector('.e-gridpopup').querySelectorAll('.e-rowselect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n initialEnd() {\n this.parent.off(contentReady, this.initialEnd);\n this.selectRow(this.parent.selectedRowIndex);\n }\n checkBoxSelectionChanged() {\n this.parent.off(contentReady, this.checkBoxSelectionChanged);\n let gobj = this.parent;\n let checkboxColumn = gobj.getColumns().filter((col) => col.type === 'checkbox');\n if (checkboxColumn.length > 0) {\n gobj.isCheckBoxSelection = true;\n this.chkField = checkboxColumn[0].field;\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n if (isNullOrUndefined(this.totalRecordsCount)) {\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.isSingleSel()) {\n gobj.selectionSettings.type = 'Multiple';\n gobj.dataBind();\n }\n else {\n this.initPerisistSelection();\n }\n }\n if (!gobj.isCheckBoxSelection && !this.isPersisted) {\n this.chkField = null;\n this.initPerisistSelection();\n }\n }\n initPerisistSelection() {\n let gobj = this.parent;\n if (this.parent.selectionSettings.persistSelection && this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = true;\n this.ensureCheckboxFieldSelection();\n }\n else if (this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = false;\n this.ensureCheckboxFieldSelection();\n }\n else {\n gobj.isPersistSelection = false;\n this.selectedRowState = {};\n }\n }\n ensureCheckboxFieldSelection() {\n let gobj = this.parent;\n this.primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n if (!gobj.enableVirtualization && this.chkField\n && ((gobj.isPersistSelection && Object.keys(this.selectedRowState).length === 0) ||\n !gobj.isPersistSelection)) {\n let data = this.parent.getDataModule();\n let query = new Query().where(this.chkField, 'equal', true);\n if (!query.params) {\n query.params = this.parent.query.params;\n }\n let dataManager = data.getData({}, query);\n let proxy = this;\n this.parent.showSpinner();\n dataManager.then((e) => {\n proxy.dataSuccess(e.result);\n proxy.refreshPersistSelection();\n proxy.parent.hideSpinner();\n });\n }\n }\n dataSuccess(res) {\n for (let i = 0; i < res.length; i++) {\n if (isNullOrUndefined(this.selectedRowState[res[i][this.primaryKey]]) && res[i][this.chkField]) {\n this.selectedRowState[res[i][this.primaryKey]] = res[i][this.chkField];\n }\n }\n this.persistSelectedData = res;\n }\n setRowSelection(state) {\n if (!this.parent.getDataModule().isRemote() && !isBlazor()) {\n if (state) {\n if (this.parent.groupSettings.columns.length) {\n for (let data of this.getData().records) {\n this.selectedRowState[data[this.primaryKey]] = true;\n }\n }\n else {\n for (let data of this.getData()) {\n this.selectedRowState[data[this.primaryKey]] = true;\n }\n }\n }\n else {\n this.selectedRowState = {};\n }\n // (this.getData()).forEach(function (data) {\n // this.selectedRowState[data[this.primaryKey]] = true;\n // })\n }\n }\n getData() {\n return this.parent.getDataModule().dataManager.executeLocal(this.parent.getDataModule().generateQuery(true));\n }\n refreshPersistSelection() {\n let rows = this.parent.getRows();\n if (rows !== null && rows.length > 0 && (this.parent.isPersistSelection || this.chkField)) {\n let indexes = [];\n for (let j = 0; j < rows.length; j++) {\n let rowObj = this.getRowObj(rows[j]);\n let pKey = rowObj ? rowObj.data ? rowObj.data[this.primaryKey] : null : null;\n if (pKey === null) {\n return;\n }\n let checkState;\n let chkBox = rows[j].querySelector('.e-checkselect');\n if (this.selectedRowState[pKey] || (this.parent.checkAllRows === 'Check' && this.chkAllCollec.indexOf(pKey) < 0)\n || (this.parent.checkAllRows === 'Uncheck' && this.chkAllCollec.indexOf(pKey) > 0)\n || (this.parent.checkAllRows === 'Intermediate' && !isNullOrUndefined(this.chkField) && rowObj.data[this.chkField])) {\n indexes.push(parseInt(rows[j].getAttribute('aria-rowindex'), 10));\n checkState = true;\n }\n else {\n checkState = false;\n if (this.checkedTarget !== chkBox && this.parent.isCheckBoxSelection) {\n removeAddCboxClasses(chkBox.nextElementSibling, checkState);\n }\n }\n this.updatePersistCollection(rows[j], checkState);\n }\n this.isSingleSel() && indexes.length > 0 ? this.selectRow(indexes[0], true) : this.selectRows(indexes);\n }\n if (this.parent.isCheckBoxSelection && this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n }\n }\n actionBegin(e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n let editChkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n let row = closest(editChkBox, '.e-editedrow');\n if (row) {\n if (this.parent.editSettings.mode === 'Dialog') {\n row = this.parent.element.querySelector('.e-dlgeditrow');\n }\n let rowObj = this.getRowObj(row);\n if (!rowObj) {\n return;\n }\n this.selectedRowState[rowObj.data[this.primaryKey]] = rowObj.isSelected = editChkBox.checked;\n }\n else {\n this.isCheckedOnAdd = editChkBox.checked;\n }\n }\n }\n }\n actionComplete(e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n if (e.action === 'add' && this.isCheckedOnAdd) {\n let rowObj = this.parent.getRowObjectFromUID(this.parent.getRows()[e.selectedRow].getAttribute('data-uid'));\n this.selectedRowState[rowObj.data[this.primaryKey]] = rowObj.isSelected = this.isCheckedOnAdd;\n }\n this.refreshPersistSelection();\n }\n if (e.requestType === 'delete' && this.parent.isPersistSelection) {\n let records = [];\n if (!isBlazor()) {\n records = e.data;\n }\n else {\n records = this.getSelectedRecords();\n }\n let data = records.slice();\n for (let i = 0; i < data.length; i++) {\n if (!isNullOrUndefined(data[i][this.primaryKey])) {\n this.updatePersistDelete(data[i][this.primaryKey]);\n }\n }\n this.setCheckAllState();\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (e.requestType === 'paging') {\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n }\n }\n onDataBound() {\n if (!this.parent.enableVirtualization && this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n if (this.parent.enableVirtualization) {\n this.setCheckAllState();\n }\n if (this.parent.isCheckBoxSelection) {\n let totalRecords = this.parent.getRowsObject();\n let indexes = [];\n for (let i = 0; i < totalRecords.length; i++) {\n if (totalRecords[i].isSelected) {\n indexes.push(i);\n }\n }\n this.selectRows(indexes);\n }\n }\n updatePersistSelectedData(checkState) {\n if (this.parent.isPersistSelection) {\n let rows = this.parent.getRows();\n for (let i = 0; i < rows.length; i++) {\n this.updatePersistCollection(rows[i], checkState);\n }\n if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n this.persistSelectedData = this.parent.getDataModule().isRemote() ? this.persistSelectedData : [];\n }\n else if (this.parent.checkAllRows === 'Check') {\n this.setRowSelection(true);\n this.persistSelectedData = (!this.parent.getDataModule().isRemote() && !isBlazor()) ?\n this.parent.groupSettings.columns.length ? this.getData().records.slice() :\n this.getData().slice() : this.persistSelectedData;\n }\n }\n }\n checkSelectAllAction(checkState) {\n let cRenderer = this.getRenderer();\n let editForm = this.parent.element.querySelector('.e-gridform');\n this.checkedTarget = this.getCheckAllBox();\n if (checkState && this.getCurrentBatchRecordChanges().length) {\n this.parent.checkAllRows = 'Check';\n this.updatePersistSelectedData(checkState);\n if (isBlazor() && this.parent.enableVirtualization &&\n !isNullOrUndefined(this.parent.contentModule.currentInfo.endIndex)) {\n this.selectRowsByRange(this.parent.contentModule.currentInfo.startIndex, this.parent.contentModule.currentInfo.endIndex);\n }\n else {\n this.selectRowsByRange(cRenderer.getVirtualRowIndex(0), cRenderer.getVirtualRowIndex(this.getCurrentBatchRecordChanges().length - 1));\n }\n }\n else {\n this.parent.checkAllRows = 'Uncheck';\n this.updatePersistSelectedData(checkState);\n this.clearSelection();\n }\n this.chkAllCollec = [];\n if (!isNullOrUndefined(editForm)) {\n let editChkBox = editForm.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n removeAddCboxClasses(editChkBox.nextElementSibling, checkState);\n }\n }\n }\n checkSelectAll(checkBox) {\n let stateStr = this.getCheckAllStatus(checkBox);\n let state = stateStr === 'Check';\n this.isHeaderCheckboxClicked = true;\n if (stateStr === 'Intermediate') {\n state = this.getCurrentBatchRecordChanges().some((data) => data[this.primaryKey] in this.selectedRowState);\n }\n if (this.parent.isPersistSelection && this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n this.checkSelectAllAction(!state);\n if (isBlazor() && this.parent.isServerRendered && this.parent.enableVirtualization) {\n let interopAdaptor = 'interopAdaptor';\n let invokeMethodAsync = 'invokeMethodAsync';\n this.parent[interopAdaptor][invokeMethodAsync]('MaintainSelection', !state, 'checkbox', null);\n this.checkBoxState = !state;\n if (!state) {\n let values = 'values';\n let vgenerator = 'vgenerator';\n let rowCache = this.parent.contentModule[vgenerator].rowCache;\n Object[values](rowCache).forEach((x) => x.isSelected = true);\n for (let i = 0; i < Object.keys(rowCache).length; i++) {\n if (this.parent.selectionModule.selectedRowIndexes.indexOf(Number(Object.keys(rowCache)[i])) === -1) {\n this.parent.selectionModule.selectedRowIndexes.push(Number(Object.keys(rowCache)[i]));\n }\n }\n }\n }\n this.target = null;\n if (this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n }\n this.triggerChkChangeEvent(checkBox, !state);\n }\n getCheckAllStatus(ele) {\n let classes = ele ? ele.nextElementSibling.classList :\n this.getCheckAllBox().nextElementSibling.classList;\n let status;\n if (classes.contains('e-check')) {\n status = 'Check';\n }\n else if (classes.contains('e-uncheck')) {\n status = 'Uncheck';\n }\n else if (classes.contains('e-stop')) {\n status = 'Intermediate';\n }\n else {\n status = 'None';\n }\n return status;\n }\n checkSelect(checkBox) {\n let target = closest(this.checkedTarget, '.e-rowcell');\n let gObj = this.parent;\n this.isMultiCtrlRequest = true;\n let rIndex = 0;\n this.isHeaderCheckboxClicked = false;\n if (isGroupAdaptive(gObj)) {\n let uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map((m) => m.getAttribute('data-uid')).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute('aria-rowindex'), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.querySelectorAll('.e-addedrow').length > 0) {\n ++rIndex;\n }\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute('aria-colindex'), 10));\n this.moveIntoUncheckCollection(closest(target, '.e-row'));\n this.setCheckAllState();\n this.isMultiCtrlRequest = false;\n this.triggerChkChangeEvent(checkBox, checkBox.nextElementSibling.classList.contains('e-check'));\n }\n moveIntoUncheckCollection(row) {\n if (this.parent.checkAllRows === 'Check' || this.parent.checkAllRows === 'Uncheck') {\n let rowObj = this.getRowObj(row);\n let pKey = rowObj && rowObj.data ? rowObj.data[this.primaryKey] : null;\n if (!pKey) {\n return;\n }\n if (this.chkAllCollec.indexOf(pKey) < 0) {\n this.chkAllCollec.push(pKey);\n }\n else {\n this.chkAllCollec.splice(this.chkAllCollec.indexOf(pKey), 1);\n }\n }\n }\n triggerChkChangeEvent(checkBox, checkState) {\n this.parent.trigger(checkBoxChange, {\n checked: checkState, selectedRowIndexes: this.parent.getSelectedRowIndexes(),\n target: checkBox\n });\n if (!this.parent.isEdit) {\n this.checkedTarget = null;\n }\n }\n updateSelectedRowIndex(index) {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.getDataModule().isRemote()\n && !(isBlazor() && this.parent.isServerRendered)) {\n if (this.parent.checkAllRows === 'Check') {\n this.selectedRowIndexes = [];\n let dataLength = this.getData().length;\n for (let data = 0; data < dataLength; data++) {\n this.selectedRowIndexes.push(data);\n }\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.selectedRowIndexes = [];\n }\n else {\n if (index && this.parent.getRowByIndex(index).getAttribute('aria-selected') === 'false') {\n let selectedVal = this.selectedRowIndexes.indexOf(index);\n this.selectedRowIndexes.splice(selectedVal, 1);\n }\n }\n }\n }\n ;\n setCheckAllState(index, isInteraction) {\n if (this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n let checkToSelectAll;\n let isServerRenderedVirtualization = isBlazor() && this.parent.isServerRendered && this.parent.enableVirtualization;\n if (isServerRenderedVirtualization) {\n let values = 'values';\n let vgenerator = 'vgenerator';\n checkToSelectAll = !Object[values](this.parent.contentModule[vgenerator].rowCache).\n filter((x) => x.isSelected === undefined || x.isSelected === false).length &&\n Object[values](this.parent.contentModule[vgenerator].rowCache).\n filter((x) => x.isSelected).length === this.selectedRowIndexes.length;\n }\n let checkedLen = Object.keys(this.selectedRowState).length;\n if (!this.parent.isPersistSelection && !(isServerRenderedVirtualization)) {\n checkedLen = this.selectedRowIndexes.length;\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.getCheckAllBox()) {\n let spanEle = this.getCheckAllBox().nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n if (checkToSelectAll || checkedLen === this.totalRecordsCount && this.totalRecordsCount\n || ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && !this.parent.getDataModule().isRemote()\n && !(isBlazor() && this.parent.isServerRendered)\n && checkedLen === this.getData().length)) {\n addClass([spanEle], ['e-check']);\n if (isInteraction) {\n this.getRenderer().setSelection(null, true, true);\n }\n this.parent.checkAllRows = 'Check';\n }\n else if (isServerRenderedVirtualization && !this.selectedRowIndexes.length ||\n checkedLen === 0 && !isServerRenderedVirtualization || this.getCurrentBatchRecordChanges().length === 0) {\n addClass([spanEle], ['e-uncheck']);\n if (isInteraction) {\n this.getRenderer().setSelection(null, false, true);\n }\n this.parent.checkAllRows = 'Uncheck';\n if (checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n }\n else {\n addClass([spanEle], ['e-stop']);\n this.parent.checkAllRows = 'Intermediate';\n }\n if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && !this.parent.getDataModule().isRemote()) {\n this.updateSelectedRowIndex(index);\n }\n }\n }\n }\n keyDownHandler(e) {\n // Below are keyCode for command key in MAC OS. Safari/Chrome(91-Left command, 93-Right Command), Opera(17), FireFox(224)\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = true;\n }\n }\n keyUpHandler(e) {\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = false;\n }\n }\n clickHandler(e) {\n let target = e.target;\n this.actualTarget = target;\n if (parentsUntil(target, 'e-row') || parentsUntil(target, 'e-headerchkcelldiv')) {\n this.isInteracted = true;\n }\n this.isMultiCtrlRequest = e.ctrlKey || this.enableSelectMultiTouch ||\n (this.isMacOS && this.cmdKeyPressed);\n this.isMultiShiftRequest = e.shiftKey;\n this.popUpClickHandler(e);\n let chkSelect = false;\n this.preventFocus = true;\n let checkBox;\n let checkWrap = parentsUntil(target, 'e-checkbox-wrapper');\n this.checkSelectAllClicked = checkWrap && checkWrap.querySelectorAll('.e-checkselectall') ? true : false;\n if (checkWrap && checkWrap.querySelectorAll('.e-checkselect,.e-checkselectall').length > 0) {\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n chkSelect = true;\n }\n this.drawBorders();\n this.updateAutoFillPosition();\n target = parentsUntil(target, 'e-rowcell');\n if ((target && target.parentElement.classList.contains('e-row') && !this.parent.selectionSettings.checkboxOnly) || chkSelect) {\n if (this.parent.isCheckBoxSelection) {\n this.isMultiCtrlRequest = true;\n }\n this.target = target;\n if (!isNullOrUndefined(checkBox)) {\n this.checkedTarget = checkBox;\n if (checkBox.classList.contains('e-checkselectall')) {\n this.checkSelectAll(checkBox);\n }\n else {\n this.checkSelect(checkBox);\n }\n }\n else {\n let gObj = this.parent;\n let rIndex = 0;\n if (isGroupAdaptive(gObj)) {\n let uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map((m) => m.getAttribute('data-uid')).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute('aria-rowindex'), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.querySelectorAll('.e-addedrow').length > 0) {\n ++rIndex;\n }\n if (!this.mUPTarget || !this.mUPTarget.isEqualNode(target)) {\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute('aria-colindex'), 10));\n }\n this.parent.hoverFrozenRows(e);\n if (this.parent.isCheckBoxSelection) {\n this.moveIntoUncheckCollection(closest(target, '.e-row'));\n this.setCheckAllState();\n }\n }\n if (!this.parent.isCheckBoxSelection && Browser.isDevice && !this.isSingleSel()) {\n this.showPopup(e);\n }\n }\n this.isMultiCtrlRequest = false;\n this.isMultiShiftRequest = false;\n if (isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n this.preventFocus = false;\n }\n }\n popUpClickHandler(e) {\n let target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains('e-rowcell') ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-rowselect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSelectMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSelectMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n showPopup(e) {\n if (!this.selectionSettings.enableSimpleMultiRowSelection) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-rowselect e-icons e-icon-rowselect' +\n (!this.isSingleSel() && (this.selectedRecords.length > (this.parent.getFrozenColumns() ? 2 : 1)\n || this.selectedRowCellIndexes.length > 1) ? ' e-spanclicked' : ''));\n }\n }\n rowCellSelectionHandler(rowIndex, cellIndex) {\n let gObj = this.parent;\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n if (!this.isDragged) {\n this.selectRow(rowIndex, this.selectionSettings.enableToggle);\n }\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, this.selectionSettings.enableToggle);\n if (this.selectedRowCellIndexes.length) {\n this.updateAutoFillPosition();\n }\n this.drawBorders();\n }\n else if (this.isMultiShiftRequest) {\n if (this.parent.isCheckBoxSelection || (!this.parent.isCheckBoxSelection &&\n !closest(this.target, '.e-rowcell').classList.contains('e-gridchkbox'))) {\n this.selectRowsByRange(isUndefined(this.prevRowIndex) ? rowIndex : this.prevRowIndex, rowIndex);\n }\n else {\n this.addRowsToSelection([rowIndex]);\n }\n this.selectCellsByRange(isUndefined(this.prevCIdxs) ? { rowIndex: rowIndex, cellIndex: cellIndex } : this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.updateAutoFillPosition();\n this.drawBorders();\n }\n else {\n this.addRowsToSelection([rowIndex]);\n if (isBlazor() && this.parent.enableVirtualization && this.parent.isServerRendered) {\n let rowIndexes = this.parent.getSelectedRowIndexes();\n let interopAdaptor = 'interopAdaptor';\n let invokeMethodAsync = 'invokeMethodAsync';\n this.parent[interopAdaptor][invokeMethodAsync]('MaintainSelection', true, 'normal', rowIndexes);\n }\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n this.showHideBorders('none');\n }\n this.isDragged = false;\n }\n onCellFocused(e) {\n if (this.parent.frozenRows && e.container.isHeader && e.byKey) {\n if (e.keyArgs.action === 'upArrow') {\n if (this.parent.allowFiltering) {\n e.isJump = e.element.tagName === 'INPUT' ? true : false;\n }\n else {\n e.isJump = e.element.tagName === 'TH' ? true : false;\n }\n }\n else {\n if (e.keyArgs.action === 'downArrow') {\n let rIdx = Number(e.element.parentElement.getAttribute('aria-rowindex'));\n e.isJump = rIdx === 0 ? true : false;\n }\n else {\n if (e.keyArgs.action === 'ctrlHome') {\n e.isJump = true;\n }\n }\n }\n }\n let clear = this.parent.getFrozenColumns() ? (((e.container.isHeader && e.element.tagName !== 'TD' && e.isJump) ||\n ((e.container.isContent || e.element.tagName === 'TD') && !(e.container.isSelectable || e.element.tagName === 'TD')))\n && !(e.byKey && e.keyArgs.action === 'space')) : ((e.container.isHeader && e.isJump) ||\n (e.container.isContent && !e.container.isSelectable)) && !(e.byKey && e.keyArgs.action === 'space');\n let headerAction = (e.container.isHeader && e.element.tagName !== 'TD' && !closest(e.element, '.e-rowcell'))\n && !(e.byKey && e.keyArgs.action === 'space');\n if (!e.byKey || clear) {\n if (clear && !this.parent.isCheckBoxSelection) {\n this.clearSelection();\n }\n return;\n }\n let [rowIndex, cellIndex] = e.container.isContent ? e.container.indexes : e.indexes;\n let prev = this.focus.getPrevIndexes();\n if (this.parent.frozenRows) {\n if (e.container.isHeader && (e.element.tagName === 'TD' || closest(e.element, '.e-rowcell'))) {\n let thLen = this.parent.getHeaderTable().querySelector('thead').childElementCount;\n rowIndex -= thLen;\n prev.rowIndex = !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex - thLen : null;\n }\n else {\n rowIndex += this.parent.frozenRows;\n prev.rowIndex = prev.rowIndex === 0 || !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex + this.parent.frozenRows : null;\n }\n }\n if (this.parent.getFrozenColumns()) {\n let cIdx = Number(e.element.getAttribute('aria-colindex'));\n let selectedIndexes = this.parent.getSelectedRowCellIndexes();\n if (selectedIndexes.length && prev.cellIndex === 0) {\n prev.cellIndex = selectedIndexes[selectedIndexes.length - 1].cellIndexes[0];\n }\n prev.cellIndex = !isNullOrUndefined(prev.cellIndex) ? (prev.cellIndex === cellIndex ? cIdx : cIdx - 1) : null;\n cellIndex = cIdx;\n }\n if (headerAction || (['ctrlPlusA', 'escape'].indexOf(e.keyArgs.action) === -1 && e.keyArgs.action !== 'space' &&\n rowIndex === prev.rowIndex && cellIndex === prev.cellIndex)) {\n return;\n }\n this.preventFocus = true;\n switch (e.keyArgs.action) {\n case 'downArrow':\n case 'upArrow':\n case 'enter':\n case 'shiftEnter':\n this.target = e.element;\n this.applyDownUpKey(rowIndex, cellIndex);\n break;\n case 'rightArrow':\n case 'leftArrow':\n this.applyRightLeftKey(rowIndex, cellIndex);\n break;\n case 'shiftDown':\n case 'shiftUp':\n this.shiftDownKey(rowIndex, cellIndex);\n break;\n case 'shiftLeft':\n case 'shiftRight':\n this.applyShiftLeftRightKey(rowIndex, cellIndex);\n break;\n case 'home':\n case 'end':\n cellIndex = e.keyArgs.action === 'end' ? this.getLastColIndex(rowIndex) : 0;\n this.applyHomeEndKey(rowIndex, cellIndex);\n break;\n case 'ctrlHome':\n case 'ctrlEnd':\n this.applyCtrlHomeEndKey(rowIndex, cellIndex);\n break;\n case 'escape':\n this.clearSelection();\n break;\n case 'ctrlPlusA':\n this.ctrlPlusA();\n break;\n case 'space':\n this.applySpaceSelection(e.element);\n break;\n case 'tab':\n if (this.parent.editSettings.allowNextRowEdit) {\n this.selectRow(rowIndex);\n }\n break;\n }\n this.preventFocus = false;\n this.positionBorders();\n this.updateAutoFillPosition();\n }\n /**\n * Apply ctrl + A key selection\n * @return {void}\n * @hidden\n */\n ctrlPlusA() {\n if (this.isRowType() && !this.isSingleSel()) {\n this.selectRowsByRange(0, this.getCurrentBatchRecordChanges().length - 1);\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange({ rowIndex: 0, cellIndex: 0 }, { rowIndex: this.parent.getRows().length - 1, cellIndex: this.parent.getColumns().length - 1 });\n }\n }\n applySpaceSelection(target) {\n if (target.classList.contains('e-checkselectall')) {\n this.checkedTarget = target;\n this.checkSelectAll(this.checkedTarget);\n }\n else {\n if (target.classList.contains('e-checkselect')) {\n this.checkedTarget = target;\n this.checkSelect(this.checkedTarget);\n }\n }\n }\n applyDownUpKey(rowIndex, cellIndex) {\n let gObj = this.parent;\n if (this.parent.isCheckBoxSelection && this.parent.checkAllRows === 'Check' && !this.selectionSettings.persistSelection) {\n this.checkSelectAllAction(false);\n this.checkedTarget = null;\n }\n if (this.isRowType()) {\n if (this.parent.frozenRows) {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n else {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex, cellIndex }, true);\n }\n }\n applyUpDown(rowIndex) {\n if (rowIndex < 0) {\n return;\n }\n if (!this.target) {\n this.target = this.parent.getRows()[0].children[this.parent.groupSettings.columns.length || 0];\n }\n let cIndex = parseInt(this.target.getAttribute('aria-colindex'), 10);\n let frzCols = this.parent.getFrozenColumns();\n if (frzCols) {\n if (cIndex >= frzCols) {\n this.target =\n this.contentRenderer.getMovableRowByIndex(rowIndex).querySelectorAll('.e-rowcell')[cIndex - frzCols];\n }\n else {\n this.target = this.contentRenderer.getRowByIndex(rowIndex).querySelectorAll('.e-rowcell')[cIndex];\n }\n }\n else {\n this.target = this.contentRenderer.getRowByIndex(rowIndex).querySelectorAll('.e-rowcell')[cIndex];\n }\n this.addAttribute(this.target);\n }\n applyRightLeftKey(rowIndex, cellIndex) {\n let gObj = this.parent;\n if (this.isCellType()) {\n this.selectCell({ rowIndex, cellIndex }, true);\n this.addAttribute(this.target);\n }\n }\n applyHomeEndKey(rowIndex, cellIndex) {\n if (this.isCellType()) {\n this.selectCell({ rowIndex, cellIndex }, true);\n }\n else {\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n }\n /**\n * Apply shift+down key selection\n * @return {void}\n * @hidden\n */\n shiftDownKey(rowIndex, cellIndex) {\n let gObj = this.parent;\n this.isMultiShiftRequest = true;\n if (this.isRowType() && !this.isSingleSel()) {\n if (!isUndefined(this.prevRowIndex)) {\n this.selectRowsByRange(this.prevRowIndex, rowIndex);\n this.applyUpDown(rowIndex);\n }\n else {\n this.selectRow(0, true);\n }\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange(this.prevCIdxs || { rowIndex: 0, cellIndex: 0 }, { rowIndex, cellIndex });\n }\n this.isMultiShiftRequest = false;\n }\n applyShiftLeftRightKey(rowIndex, cellIndex) {\n let gObj = this.parent;\n this.isMultiShiftRequest = true;\n this.selectCellsByRange(this.prevCIdxs, { rowIndex, cellIndex });\n this.isMultiShiftRequest = false;\n }\n applyCtrlHomeEndKey(rowIndex, cellIndex) {\n if (this.isRowType()) {\n this.selectRow(rowIndex, true);\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex, cellIndex }, true);\n }\n }\n addRemoveClassesForRow(row, isAdd, clearAll, ...args) {\n if (row) {\n let cells = [].slice.call(row.querySelectorAll('.e-rowcell'));\n let detailIndentCell = row.querySelector('.e-detailrowcollapse') || row.querySelector('.e-detailrowexpand');\n let dragdropIndentCell = row.querySelector('.e-rowdragdrop');\n if (detailIndentCell) {\n cells.push(detailIndentCell);\n }\n if (dragdropIndentCell) {\n cells.push(dragdropIndentCell);\n }\n addRemoveActiveClasses(cells, isAdd, ...args);\n }\n this.getRenderer().setSelection(row ? row.getAttribute('data-uid') : null, isAdd, clearAll);\n }\n isRowType() {\n return this.selectionSettings.mode === 'Row' || this.selectionSettings.mode === 'Both';\n }\n isCellType() {\n return this.selectionSettings.mode === 'Cell' || this.selectionSettings.mode === 'Both';\n }\n isSingleSel() {\n return this.selectionSettings.type === 'Single';\n }\n getRenderer() {\n if (isNullOrUndefined(this.contentRenderer)) {\n this.contentRenderer = this.factory.getRenderer(RenderType.Content);\n }\n return this.contentRenderer;\n }\n /**\n * Gets the collection of selected records.\n * @return {Object[]}\n */\n getSelectedRecords() {\n let selectedData = [];\n if (!this.selectionSettings.persistSelection) {\n selectedData = this.parent.getRowsObject().filter((row) => row.isSelected)\n .map((m) => m.data);\n }\n else {\n selectedData = this.persistSelectedData;\n }\n return selectedData;\n }\n addEventListener_checkbox() {\n this.parent.on(dataReady, this.dataReady, this);\n this.onDataBoundFunction = this.onDataBound.bind(this);\n this.parent.addEventListener(dataBound, this.onDataBoundFunction);\n this.parent.on(contentReady, this.checkBoxSelectionChanged, this);\n this.parent.on(onEmpty, this.setCheckAllForEmptyGrid, this);\n this.actionCompleteFunc = this.actionCompleteHandler.bind(this);\n this.parent.addEventListener(actionComplete, this.actionCompleteFunc);\n this.parent.on(click, this.clickHandler, this);\n this.resizeEndFn = () => {\n this.updateAutoFillPosition();\n this.drawBorders();\n };\n this.resizeEndFn.bind(this);\n this.parent.addEventListener(resizeStop, this.resizeEndFn);\n }\n removeEventListener_checkbox() {\n this.parent.off(dataReady, this.dataReady);\n this.parent.removeEventListener(dataBound, this.onDataBoundFunction);\n this.parent.removeEventListener(actionComplete, this.actionCompleteFunc);\n this.parent.off(onEmpty, this.setCheckAllForEmptyGrid);\n this.parent.off(click, this.clickHandler);\n }\n setCheckAllForEmptyGrid() {\n let checkAllBox = this.getCheckAllBox();\n if (checkAllBox) {\n this.parent.isCheckBoxSelection = true;\n let spanEle = checkAllBox.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n }\n }\n dataReady(e) {\n this.isHeaderCheckboxClicked = false;\n let isInfinitecroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfinitecroll) {\n this.disableUI = true;\n this.clearSelection();\n this.setCheckAllState();\n this.disableUI = false;\n }\n }\n actionCompleteHandler(e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n }\n selectRowIndex(index) {\n this.parent.isSelectedRowIndexUpdating = true;\n this.parent.selectedRowIndex = index;\n }\n disableInteracted() {\n this.isInteracted = false;\n }\n activeTarget() {\n this.actualTarget = this.isInteracted ? this.actualTarget : null;\n }\n}\n\n/**\n * The `Search` module is used to handle search action.\n */\nclass Search {\n /**\n * Constructor for Grid search module.\n * @hidden\n */\n constructor(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * Searches Grid records by given key.\n *\n * > You can customize the default search action by using [`searchSettings`](grid/#searchsettings/).\n * @param {string} searchString - Defines the key.\n * @return {void}\n */\n search(searchString) {\n let gObj = this.parent;\n searchString = isNullOrUndefined(searchString) ? '' : searchString;\n if (isActionPrevent(gObj)) {\n gObj.notify(preventBatch, { instance: this, handler: this.search, arg1: searchString });\n return;\n }\n if (searchString !== gObj.searchSettings.key) {\n gObj.searchSettings.key = searchString.toString();\n gObj.dataBind();\n }\n else if (this.refreshSearch) {\n gObj.refresh();\n }\n }\n /**\n * @hidden\n */\n addEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(searchComplete, this.onSearchComplete, this);\n this.parent.on(destroy, this.destroy, this);\n this.actionCompleteFunc = this.onActionComplete.bind(this);\n this.parent.addEventListener(actionComplete, this.actionCompleteFunc);\n this.parent.on(cancelBegin, this.cancelBeginEvent, this);\n }\n /**\n * @hidden\n */\n removeEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(searchComplete, this.onSearchComplete);\n this.parent.off(destroy, this.destroy);\n this.parent.removeEventListener(actionComplete, this.actionCompleteFunc);\n this.parent.off(cancelBegin, this.cancelBeginEvent);\n }\n /**\n * To destroy the print\n * @return {void}\n * @hidden\n */\n destroy() {\n this.removeEventListener();\n }\n /**\n * @hidden\n */\n onPropertyChanged(e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (!isNullOrUndefined(e.properties.key)) {\n this.parent.notify(modelChanged, {\n requestType: 'searching', type: actionBegin, searchString: this.parent.searchSettings.key\n });\n }\n else {\n this.parent.notify(modelChanged, {\n requestType: 'searching', type: actionBegin\n });\n }\n }\n /**\n * The function used to trigger onActionComplete\n * @return {void}\n * @hidden\n */\n onSearchComplete(e) {\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\n this.parent.trigger(actionComplete, extend(e, {\n searchString: this.parent.searchSettings.key, requestType: 'searching', type: actionComplete\n }));\n }\n onActionComplete(e) {\n this.refreshSearch = e.requestType !== 'searching';\n }\n cancelBeginEvent(e) {\n if (e.requestType === 'searching') {\n this.parent.setProperties({ searchSettings: { key: '' } }, true);\n }\n }\n /**\n * For internal use only - Get the module name.\n * @private\n */\n getModuleName() {\n return 'search';\n }\n}\n\n/**\n * The `ShowHide` module is used to control column visibility.\n */\nclass ShowHide {\n /**\n * Constructor for the show hide module.\n * @hidden\n */\n constructor(parent) {\n this.parent = parent;\n }\n /**\n * Shows a column by column name.\n * @param {string|string[]} columnName - Defines a single or collection of column names to show.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @return {void}\n */\n show(columnName, showBy) {\n let keys = this.getToggleFields(columnName);\n let columns = this.getColumns(keys, showBy);\n this.parent.notify(tooltipDestroy, { module: 'edit' });\n for (let i = 0; i < columns.length; i++) {\n columns[i].visible = true;\n }\n this.setVisible(columns);\n }\n /**\n * Hides a column by column name.\n * @param {string|string[]} columnName - Defines a single or collection of column names to hide.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @return {void}\n */\n hide(columnName, hideBy) {\n let keys = this.getToggleFields(columnName);\n let columns = this.getColumns(keys, hideBy);\n this.parent.notify(tooltipDestroy, { module: 'edit' });\n for (let i = 0; i < columns.length; i++) {\n columns[i].visible = false;\n }\n this.setVisible(columns);\n }\n getToggleFields(key) {\n let finalized = [];\n if (typeof key === 'string') {\n finalized = [key];\n }\n else {\n finalized = key;\n }\n return finalized;\n }\n getColumns(keys, getKeyBy) {\n let columns = iterateArrayOrObject(keys, (key, index) => {\n return iterateArrayOrObject(this.parent.columnModel, (item, index) => {\n if (item[getKeyBy] === key) {\n return item;\n }\n return undefined;\n })[0];\n });\n return columns;\n }\n /**\n * Shows or hides columns by given column collection.\n * @private\n * @param {Column[]} columns - Specifies the columns.\n * @return {void}\n */\n setVisible(columns, changedStateColumns = []) {\n changedStateColumns = (changedStateColumns.length > 0) ? changedStateColumns :\n isBlazor() ? (JSON.parse(JSON.stringify(columns))) : columns;\n let args = {\n requestType: 'columnstate',\n cancel: false,\n columns: changedStateColumns\n };\n let cancel = 'cancel';\n this.parent.trigger(actionBegin, args, (showHideArgs) => {\n let currentViewCols = this.parent.getColumns();\n columns = isNullOrUndefined(columns) ? currentViewCols : columns;\n if (showHideArgs[cancel]) {\n this.parent.notify(resetColumns, { showHideArgs: showHideArgs });\n if (columns.length > 0) {\n columns[0].visible = true;\n }\n return;\n }\n if (this.parent.allowSelection && this.parent.getSelectedRecords().length) {\n this.parent.clearSelection();\n }\n if (this.parent.enableColumnVirtualization) {\n let colsInCurrentView = columns.filter((col1) => (currentViewCols.some((col2) => col1.field === col2.field)));\n if (colsInCurrentView.length) {\n this.parent.notify(columnVisibilityChanged, columns);\n }\n }\n else {\n this.parent.notify(columnVisibilityChanged, columns);\n }\n let params = {\n requestType: 'columnstate',\n columns: changedStateColumns\n };\n this.parent.trigger(actionComplete, params);\n if (this.parent.columnQueryMode !== 'All') {\n this.parent.refresh();\n }\n });\n }\n}\n\n/**\n * The `Scroll` module is used to handle scrolling behaviour.\n */\nclass Scroll {\n /**\n * Constructor for the Grid scrolling.\n * @hidden\n */\n constructor(parent) {\n this.lastScrollTop = 0;\n //To maintain scroll state on grid actions.\n this.previousValues = { top: 0, left: 0 };\n this.oneTimeReady = true;\n this.parent = parent;\n this.widthService = new ColumnWidthService(parent);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n * @private\n */\n getModuleName() {\n return 'scroll';\n }\n /**\n * @hidden\n */\n setWidth(uiupdate) {\n this.parent.element.style.width = formatUnit(this.parent.width);\n if (uiupdate) {\n this.widthService.setWidthToColumns();\n }\n if (this.parent.toolbarModule && this.parent.toolbarModule.toolbar &&\n this.parent.toolbarModule.toolbar.element) {\n this.parent.toolbarModule.toolbar.refreshOverflow();\n }\n }\n /**\n * @hidden\n */\n setHeight() {\n let mHdrHeight = 0;\n let content = this.parent.getContent().querySelector('.e-content');\n if (!this.parent.enableVirtualization && this.parent.frozenRows && this.parent.height !== 'auto') {\n let tbody = this.parent.getHeaderContent().querySelector('tbody');\n mHdrHeight = tbody ? tbody.offsetHeight : 0;\n content.style.height = formatUnit(this.parent.height - mHdrHeight);\n }\n else {\n content.style.height = formatUnit(this.parent.height);\n }\n this.ensureOverflow(content);\n }\n /**\n * @hidden\n */\n setPadding() {\n let content = this.parent.getHeaderContent();\n let scrollWidth = Scroll.getScrollBarWidth() - this.getThreshold();\n let cssProps = this.getCssProperties();\n content.querySelector('.e-headercontent').style[cssProps.border] = scrollWidth > 0 ? '1px' : '0px';\n content.style[cssProps.padding] = scrollWidth > 0 ? scrollWidth + 'px' : '0px';\n }\n /**\n * @hidden\n */\n removePadding(rtl) {\n let cssProps = this.getCssProperties(rtl);\n let hDiv = this.parent.getHeaderContent().querySelector('.e-headercontent');\n hDiv.style[cssProps.border] = '';\n hDiv.parentElement.style[cssProps.padding] = '';\n let footerDiv = this.parent.getFooterContent();\n if (footerDiv && footerDiv.classList.contains('e-footerpadding')) {\n footerDiv.classList.remove('e-footerpadding');\n }\n }\n /**\n * Refresh makes the Grid adoptable with the height of parent container.\n *\n * > The [`height`](grid/#height/) must be set to 100%.\n * @return\n */\n refresh() {\n if (this.parent.height !== '100%') {\n return;\n }\n let content = this.parent.getContent();\n this.parent.element.style.height = '100%';\n let height = this.widthService.getSiblingsHeight(content);\n content.style.height = 'calc(100% - ' + height + 'px)'; //Set the height to the '.e-gridcontent';\n }\n getThreshold() {\n /* Some browsers places the scroller outside the content,\n * hence the padding should be adjusted.*/\n let appName = Browser.info.name;\n if (appName === 'mozilla') {\n return 0.5;\n }\n return 1;\n }\n /**\n * @hidden\n */\n addEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(onEmpty, this.wireEvents, this);\n this.parent.on(contentReady, this.wireEvents, this);\n this.parent.on(uiUpdate, this.onPropertyChanged, this);\n this.parent.on(textWrapRefresh, this.wireEvents, this);\n this.parent.on(headerRefreshed, this.setScrollLeft, this);\n }\n /**\n * @hidden\n */\n removeEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(onEmpty, this.wireEvents);\n this.parent.off(contentReady, this.wireEvents);\n this.parent.off(uiUpdate, this.onPropertyChanged);\n this.parent.off(textWrapRefresh, this.wireEvents);\n this.parent.off(headerRefreshed, this.setScrollLeft);\n }\n setScrollLeft() {\n if (this.parent.frozenColumns) {\n this.parent.headerModule.getMovableHeader().scrollLeft = this.previousValues.left;\n }\n }\n onContentScroll(scrollTarget) {\n let element = scrollTarget;\n let isHeader = element.classList.contains('e-headercontent');\n return (e) => {\n if (this.content.querySelector('tbody') === null || this.parent.isPreventScrollEvent) {\n return;\n }\n if (!isNullOrUndefined(this.parent.infiniteScrollModule) && this.parent.enableInfiniteScrolling) {\n this.parent.notify(infiniteScrollHandler, e);\n }\n this.parent.notify(virtualScrollEdit, {});\n let target = e.target;\n let left = target.scrollLeft;\n let sLimit = target.scrollWidth;\n let isFooter = target.classList.contains('e-summarycontent');\n if (this.previousValues.left === left) {\n this.previousValues.top = !isHeader ? this.previousValues.top : target.scrollTop;\n return;\n }\n this.parent.notify(closeFilterDialog, e);\n element.scrollLeft = left;\n if (isFooter) {\n this.header.scrollLeft = left;\n }\n this.previousValues.left = left;\n this.parent.notify(scroll, { left: left });\n };\n }\n onFreezeContentScroll(scrollTarget) {\n let element = scrollTarget;\n return (e) => {\n if (this.content.querySelector('tbody') === null) {\n return;\n }\n let target = e.target;\n let top = target.scrollTop;\n if (this.previousValues.top === top) {\n return;\n }\n element.scrollTop = top;\n this.previousValues.top = top;\n if (this.parent.isDestroyed) {\n return;\n }\n };\n }\n onWheelScroll(scrollTarget) {\n let element = scrollTarget;\n return (e) => {\n if (this.content.querySelector('tbody') === null) {\n return;\n }\n let top = element.scrollTop + (e.deltaMode === 1 ? e.deltaY * 30 : e.deltaY);\n if (this.previousValues.top === top) {\n return;\n }\n e.preventDefault();\n this.parent.getContent().querySelector('.e-frozencontent').scrollTop = top;\n element.scrollTop = top;\n this.previousValues.top = top;\n };\n }\n onTouchScroll(scrollTarget) {\n let element = scrollTarget;\n return (e) => {\n if (e.pointerType === 'mouse') {\n return;\n }\n let cont;\n let mHdr;\n let pageXY = this.getPointXY(e);\n let top = element.scrollTop + (this.pageXY.y - pageXY.y);\n let left = element.scrollLeft + (this.pageXY.x - pageXY.x);\n if (this.parent.getHeaderContent().contains(e.target)) {\n mHdr = this.parent.getFrozenColumns() ?\n this.parent.getHeaderContent().querySelector('.e-movableheader') :\n this.parent.getHeaderContent().querySelector('.e-headercontent');\n if (this.previousValues.left === left || (left < 0 || (mHdr.scrollWidth - mHdr.clientWidth) < left)) {\n return;\n }\n e.preventDefault();\n mHdr.scrollLeft = left;\n element.scrollLeft = left;\n this.pageXY.x = pageXY.x;\n this.previousValues.left = left;\n }\n else {\n cont = this.parent.getContent().querySelector('.e-frozencontent');\n if (this.previousValues.top === top && (top < 0 || (cont.scrollHeight - cont.clientHeight) < top)\n || (top < 0 || (cont.scrollHeight - cont.clientHeight) < top)) {\n return;\n }\n e.preventDefault();\n cont.scrollTop = top;\n element.scrollTop = top;\n this.pageXY.y = pageXY.y;\n this.previousValues.top = top;\n }\n };\n }\n setPageXY() {\n return (e) => {\n if (e.pointerType === 'mouse') {\n return;\n }\n this.pageXY = this.getPointXY(e);\n };\n }\n getPointXY(e) {\n let pageXY = { x: 0, y: 0 };\n if (e.touches && e.touches.length) {\n pageXY.x = e.touches[0].pageX;\n pageXY.y = e.touches[0].pageY;\n }\n else {\n pageXY.x = e.pageX;\n pageXY.y = e.pageY;\n }\n return pageXY;\n }\n wireEvents() {\n if (this.oneTimeReady) {\n let frzCols = this.parent.getFrozenColumns();\n this.content = this.parent.getContent().querySelector('.e-content');\n this.header = this.parent.getHeaderContent().querySelector('.e-headercontent');\n let mCont = this.content.querySelector('.e-movablecontent');\n let fCont = this.content.querySelector('.e-frozencontent');\n let mHdr = this.header.querySelector('.e-movableheader');\n if (this.parent.frozenRows) {\n EventHandler.add(frzCols ? mHdr : this.header, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(frzCols ? mHdr : this.header, 'touchmove pointermove', this.onTouchScroll(frzCols ? mCont : this.content), this);\n }\n if (frzCols) {\n EventHandler.add(mCont, 'scroll', this.onContentScroll(mHdr), this);\n EventHandler.add(mCont, 'scroll', this.onFreezeContentScroll(fCont), this);\n EventHandler.add(fCont, 'scroll', this.onFreezeContentScroll(mCont), this);\n EventHandler.add(mHdr, 'scroll', this.onContentScroll(mCont), this);\n EventHandler.add(fCont, 'wheel', this.onWheelScroll(mCont), this);\n EventHandler.add(fCont, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(fCont, 'touchmove pointermove', this.onTouchScroll(mCont), this);\n }\n else {\n EventHandler.add(this.content, 'scroll', this.onContentScroll(this.header), this);\n EventHandler.add(this.header, 'scroll', this.onContentScroll(this.content), this);\n }\n if (this.parent.aggregates.length) {\n EventHandler.add(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll(this.content), this);\n }\n this.refresh();\n this.oneTimeReady = false;\n }\n let table = this.parent.getContentTable();\n let sLeft;\n let sHeight;\n let clientHeight;\n getUpdateUsingRaf(() => {\n sLeft = this.header.scrollLeft;\n sHeight = table.scrollHeight;\n clientHeight = this.parent.getContent().clientHeight;\n }, () => {\n if (!this.parent.enableVirtualization) {\n if (sHeight < clientHeight) {\n addClass(table.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n if (this.parent.getFrozenColumns()) {\n addClass(this.parent.getContent().querySelector('.e-movablecontent').querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n }\n }\n if ((this.parent.frozenRows > 0 || this.parent.frozenColumns > 0) && this.header.querySelector('.e-movableheader')) {\n this.header.querySelector('.e-movableheader').scrollLeft = this.previousValues.left;\n }\n else {\n this.header.scrollLeft = this.previousValues.left;\n }\n this.content.scrollLeft = this.previousValues.left;\n this.content.scrollTop = this.previousValues.top;\n }\n if (!this.parent.enableColumnVirtualization) {\n this.content.scrollLeft = sLeft;\n }\n if (this.parent.frozenColumns && this.header.querySelector('.e-movableheader')) {\n this.header.querySelector('.e-movableheader').scrollLeft =\n this.content.querySelector('.e-movablecontent').scrollLeft;\n }\n });\n this.parent.isPreventScrollEvent = false;\n }\n /**\n * @hidden\n */\n getCssProperties(rtl) {\n let css = {};\n let enableRtl = isNullOrUndefined(rtl) ? this.parent.enableRtl : rtl;\n css.border = enableRtl ? 'borderLeftWidth' : 'borderRightWidth';\n css.padding = enableRtl ? 'paddingLeft' : 'paddingRight';\n return css;\n }\n ensureOverflow(content) {\n if (this.parent.getFrozenColumns()) {\n content.querySelector('.e-movablecontent').style.overflowY = this.parent.height === 'auto' ? 'auto' : 'scroll';\n if (content.querySelector('.e-movablecontent').style.overflowY === 'scroll') {\n this.setPadding();\n }\n }\n else {\n content.style.overflowY = this.parent.height === 'auto' ? 'auto' : 'scroll';\n }\n }\n onPropertyChanged(e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n this.setPadding();\n this.oneTimeReady = true;\n if (this.parent.height === 'auto') {\n this.removePadding();\n }\n this.wireEvents();\n this.setHeight();\n let width = 'width';\n this.setWidth(!isNullOrUndefined(e.properties[width]));\n }\n /**\n * @hidden\n */\n destroy() {\n let gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.e-gridheader') && !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n this.removeEventListener();\n //Remove padding\n this.removePadding();\n let cont = this.parent.getContent().querySelector('.e-content');\n removeClass([this.parent.getHeaderContent().querySelector('.e-headercontent')], 'e-headercontent');\n removeClass([cont], 'e-content');\n //Remove height\n cont.style.height = '';\n //Remove width\n this.parent.element.style.width = '';\n //Remove Dom event\n EventHandler.remove(cont, 'scroll', this.onContentScroll);\n }\n /**\n * Function to get the scrollbar width of the browser.\n * @return {number}\n * @hidden\n */\n static getScrollBarWidth() {\n return getScrollBarWidth();\n }\n}\n\nvar __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Configures the Grid's aggregate column.\n */\nclass AggregateColumn extends ChildProperty {\n constructor() {\n super(...arguments);\n this.templateFn = {};\n }\n /**\n * @hidden\n */\n setFormatter(value) {\n this.formatFn = value;\n }\n /**\n * @hidden\n */\n getFormatter() {\n return this.formatFn;\n }\n /**\n * @hidden\n */\n setTemplate(helper = {}) {\n if (this.footerTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.Summary)] = { fn: compile(this.footerTemplate, helper),\n property: 'footerTemplate' };\n }\n if (this.groupFooterTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.GroupSummary)] = { fn: compile(this.groupFooterTemplate, helper),\n property: 'groupFooterTemplate' };\n }\n if (this.groupCaptionTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.CaptionSummary)] = { fn: compile(this.groupCaptionTemplate, helper),\n property: 'groupCaptionTemplate' };\n }\n }\n /**\n * @hidden\n */\n getTemplate(type) {\n return this.templateFn[getEnumValue(CellType, type)];\n }\n /**\n * @hidden\n */\n setPropertiesSilent(prop) {\n this.setProperties(prop, true);\n }\n}\n__decorate$4([\n Property()\n], AggregateColumn.prototype, \"type\", void 0);\n__decorate$4([\n Property()\n], AggregateColumn.prototype, \"field\", void 0);\n__decorate$4([\n Property()\n], AggregateColumn.prototype, \"columnName\", void 0);\n__decorate$4([\n Property()\n], AggregateColumn.prototype, \"format\", void 0);\n__decorate$4([\n Property()\n], AggregateColumn.prototype, \"footerTemplate\", void 0);\n__decorate$4([\n Property()\n], AggregateColumn.prototype, \"groupFooterTemplate\", void 0);\n__decorate$4([\n Property()\n], AggregateColumn.prototype, \"groupCaptionTemplate\", void 0);\n__decorate$4([\n Property()\n], AggregateColumn.prototype, \"customAggregate\", void 0);\n/**\n * Configures the aggregate rows.\n */\nclass AggregateRow extends ChildProperty {\n}\n__decorate$4([\n Collection([], AggregateColumn)\n], AggregateRow.prototype, \"columns\", void 0);\n\n/**\n * The `Clipboard` module is used to handle clipboard copy action.\n */\nclass Clipboard {\n /**\n * Constructor for the Grid clipboard module\n * @hidden\n */\n constructor(parent) {\n this.copyContent = '';\n this.isSelect = false;\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * @hidden\n */\n addEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(contentReady, this.initialEnd, this);\n this.parent.on(keyPressed, this.keyDownHandler, this);\n this.parent.on(click, this.clickHandler, this);\n EventHandler.add(this.parent.element, 'keydown', this.pasteHandler, this);\n }\n /**\n * @hidden\n */\n removeEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(keyPressed, this.keyDownHandler);\n this.parent.off(contentReady, this.initialEnd);\n this.parent.off(click, this.clickHandler);\n EventHandler.remove(this.parent.element, 'keydown', this.pasteHandler);\n }\n clickHandler(e) {\n let target = e.target;\n target = parentsUntil(target, 'e-rowcell');\n }\n pasteHandler(e) {\n let grid = this.parent;\n if (e.keyCode === 86 && e.ctrlKey && !grid.isEdit) {\n let target = closest(document.activeElement, '.e-rowcell');\n if (!target || !grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow') {\n return;\n }\n this.activeElement = document.activeElement;\n this.clipBoardTextArea.value = '';\n let x = window.scrollX;\n let y = window.scrollY;\n this.clipBoardTextArea.focus();\n setTimeout(() => {\n this.activeElement.focus();\n window.scrollTo(x, y);\n this.paste(this.clipBoardTextArea.value, this.parent.getSelectedRowCellIndexes()[0].rowIndex, this.parent.getSelectedRowCellIndexes()[0].cellIndexes[0]);\n }, 10);\n }\n }\n /**\n * Paste data from clipboard to selected cells.\n * @param {boolean} data - Specifies the date for paste.\n * @param {boolean} rowIndex - Specifies the row index.\n * @param {boolean} colIndex - Specifies the column index.\n */\n paste(data, rowIndex, colIndex) {\n let grid = this.parent;\n let cIdx = colIndex;\n let rIdx = rowIndex;\n let col;\n let value;\n let isAvail;\n if (!grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow') {\n return;\n }\n let rows = data.split('\\n');\n let cols;\n let dataRows = grid.getDataRows();\n let mRows;\n let isFrozen = this.parent.getFrozenColumns();\n if (isFrozen) {\n mRows = grid.getMovableDataRows();\n }\n for (let r = 0; r < rows.length; r++) {\n cols = rows[r].split('\\t');\n cIdx = colIndex;\n if ((r === rows.length - 1 && rows[r] === '') || isUndefined(grid.getRowByIndex(rIdx))) {\n cIdx++;\n break;\n }\n for (let c = 0; c < cols.length; c++) {\n isAvail = grid.getCellFromIndex(rIdx, cIdx);\n if (isFrozen) {\n let fTr = dataRows[rIdx];\n let mTr = mRows[rIdx];\n isAvail = !fTr.querySelector('[aria-colindex=\"' + cIdx + '\"]') ?\n mTr.querySelector('[aria-colindex=\"' + cIdx + '\"]') : true;\n }\n if (!isAvail) {\n cIdx++;\n break;\n }\n col = grid.getColumnByIndex(cIdx);\n value = col.getParser() ? col.getParser()(cols[c]) : cols[c];\n if (col.allowEditing && !col.isPrimaryKey && !col.template) {\n let args = {\n column: col,\n data: value,\n rowIndex: rIdx\n };\n this.parent.trigger(beforePaste, args);\n rIdx = args.rowIndex;\n if (!args.cancel) {\n if (grid.editModule) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseInt(args.data, 10));\n }\n else {\n grid.editModule.updateCell(rIdx, col.field, args.data);\n }\n }\n }\n }\n cIdx++;\n }\n rIdx++;\n }\n grid.selectionModule.selectCellsByRange({ rowIndex: rowIndex, cellIndex: colIndex }, { rowIndex: rIdx - 1, cellIndex: cIdx - 1 });\n let cell = this.parent.getCellFromIndex(rIdx - 1, cIdx - 1);\n if (cell) {\n classList(cell, ['e-focus', 'e-focused'], []);\n }\n }\n initialEnd() {\n this.parent.off(contentReady, this.initialEnd);\n this.clipBoardTextArea = this.parent.createElement('textarea', {\n className: 'e-clipboard',\n styles: 'opacity: 0',\n attrs: { tabindex: '-1', 'aria-label': 'clipboard' }\n });\n this.parent.element.appendChild(this.clipBoardTextArea);\n }\n keyDownHandler(e) {\n if (e.action === 'ctrlPlusC') {\n this.copy();\n }\n else if (e.action === 'ctrlShiftPlusH') {\n this.copy(true);\n }\n }\n setCopyData(withHeader) {\n if (window.getSelection().toString() === '') {\n let isFrozen = this.parent.getFrozenColumns();\n this.clipBoardTextArea.value = this.copyContent = '';\n let mRows;\n let rows = this.parent.getRows();\n if (isFrozen) {\n mRows = this.parent.getMovableDataRows();\n }\n if (this.parent.selectionSettings.mode !== 'Cell') {\n let selectedIndexes = this.parent.getSelectedRowIndexes().sort((a, b) => { return a - b; });\n if (withHeader) {\n let headerTextArray = [];\n for (let i = 0; i < this.parent.getVisibleColumns().length; i++) {\n headerTextArray[i] = this.parent.getVisibleColumns()[i].headerText;\n }\n this.getCopyData(headerTextArray, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (let i = 0; i < selectedIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n let cells = [].slice.call(rows[selectedIndexes[i]].querySelectorAll('.e-rowcell'));\n if (isFrozen) {\n cells.push(...[].slice.call(mRows[selectedIndexes[i]].querySelectorAll('.e-rowcell')));\n }\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n let obj = this.checkBoxSelection();\n if (obj.status) {\n if (withHeader) {\n let headers = [];\n for (let i = 0; i < obj.colIndexes.length; i++) {\n headers.push(this.parent.getColumnHeaderByIndex(obj.colIndexes[i]));\n }\n this.getCopyData(headers, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (let i = 0; i < obj.rowIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n let cells = [].slice.call(rows[obj.rowIndexes[i]].\n querySelectorAll('.e-cellselectionbackground'));\n if (isFrozen) {\n cells.push(...[].slice.call(mRows[obj.rowIndexes[i]].querySelectorAll('.e-cellselectionbackground')));\n }\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n this.getCopyData([].slice.call(this.parent.element.querySelectorAll('.e-cellselectionbackground')), true, '\\n', withHeader);\n }\n }\n let args = {\n data: this.copyContent,\n cancel: false,\n };\n this.parent.trigger(beforeCopy, args);\n if (args.cancel) {\n return;\n }\n this.clipBoardTextArea.value = this.copyContent = args.data;\n if (!Browser.userAgent.match(/ipad|ipod|iphone/i)) {\n this.clipBoardTextArea.select();\n }\n else {\n this.clipBoardTextArea.setSelectionRange(0, this.clipBoardTextArea.value.length);\n }\n this.isSelect = true;\n }\n }\n getCopyData(cells, isCell, splitKey, withHeader) {\n let isElement = typeof cells[0] !== 'string';\n for (let j = 0; j < cells.length; j++) {\n if (withHeader && isCell) {\n this.copyContent += this.parent.getColumns()[parseInt(cells[j].getAttribute('aria-colindex'), 10)].headerText + '\\n';\n }\n if (isElement) {\n if (!cells[j].classList.contains('e-hide')) {\n if (isBlazor()) {\n if ((!cells[j].classList.contains('e-gridchkbox')) &&\n Object.keys(cells[j].querySelectorAll('.e-check')).length) {\n this.copyContent += true;\n }\n else if ((!cells[j].classList.contains('e-gridchkbox')) &&\n Object.keys(cells[j].querySelectorAll('.e-uncheck')).length) {\n this.copyContent += false;\n }\n else {\n this.copyContent += cells[j].innerText;\n }\n }\n else {\n this.copyContent += cells[j].innerText;\n }\n }\n }\n else {\n this.copyContent += cells[j];\n }\n if (j < cells.length - 1) {\n this.copyContent += splitKey;\n }\n }\n }\n /**\n * Copy selected rows or cells data into clipboard.\n * @param {boolean} withHeader - Specifies whether the column header data need to be copied or not.\n */\n copy(withHeader) {\n if (document.queryCommandSupported('copy')) {\n this.setCopyData(withHeader);\n document.execCommand('copy');\n this.clipBoardTextArea.blur();\n }\n if (this.isSelect) {\n window.getSelection().removeAllRanges();\n this.isSelect = false;\n }\n }\n /**\n * For internal use only - Get the module name.\n * @private\n */\n getModuleName() {\n return 'clipboard';\n }\n /**\n * To destroy the clipboard\n * @return {void}\n * @hidden\n */\n destroy() {\n this.removeEventListener();\n if (this.clipBoardTextArea) {\n remove(this.clipBoardTextArea);\n }\n }\n checkBoxSelection() {\n let gridObj = this.parent;\n let obj = { status: false };\n if (gridObj.selectionSettings.mode === 'Cell') {\n let rowCellIndxes = gridObj.getSelectedRowCellIndexes();\n let str;\n let rowIndexes = [];\n let i;\n for (i = 0; i < rowCellIndxes.length; i++) {\n if (rowCellIndxes[i].cellIndexes.length) {\n rowIndexes.push(rowCellIndxes[i].rowIndex);\n }\n if (rowCellIndxes[i].cellIndexes.length) {\n if (!str) {\n str = JSON.stringify(rowCellIndxes[i].cellIndexes.sort());\n }\n if (str !== JSON.stringify(rowCellIndxes[i].cellIndexes.sort())) {\n break;\n }\n }\n }\n rowIndexes.sort((a, b) => { return a - b; });\n if (i === rowCellIndxes.length && rowIndexes[rowIndexes.length - 1] - rowIndexes[0] === rowIndexes.length - 1) {\n obj = { status: true, rowIndexes: rowIndexes, colIndexes: rowCellIndxes[0].cellIndexes };\n }\n }\n return obj;\n }\n}\n\nconst gridObserver = new Observer();\n/**\n * BlazorAction is used for performing Blazor related Grid Actions.\n * @hidden\n */\nclass BlazorAction {\n constructor(parent) {\n this.aria = new AriaService();\n this.actionArgs = {};\n this.virtualHeight = 0;\n this.parent = parent;\n this.addEventListener();\n }\n addEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('detailclick', this.onDetailRowClick, this);\n this.parent.on('add-delete-success', this.addDeleteSuccess, this);\n this.parent.on('editsuccess', this.editSuccess, this);\n this.parent.on('setvisibility', this.setColumnVisibility, this);\n this.parent.on('offset', this.setServerOffSet, this);\n this.parent.on('updateaction', this.modelChanged, this);\n this.parent.on(modelChanged, this.modelChanged, this);\n this.parent.on('group-expand-collapse', this.onGroupClick, this);\n this.parent.on('setcolumnstyles', this.setColVTableWidthAndTranslate, this);\n this.parent.on('refresh-virtual-indices', this.invokeServerDataBind, this);\n this.parent.on('contentcolgroup', this.contentColGroup, this);\n this.parent.on(dataSourceModified, this.dataSourceModified, this);\n }\n removeEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('detailclick', this.onDetailRowClick);\n this.parent.off('add-delete-success', this.addDeleteSuccess);\n this.parent.off('editsuccess', this.editSuccess);\n this.parent.off('setvisibility', this.setColumnVisibility);\n this.parent.off('offset', this.setServerOffSet);\n this.parent.off('updateaction', this.modelChanged);\n this.parent.off(modelChanged, this.modelChanged);\n this.parent.off('group-expand-collapse', this.onGroupClick);\n this.parent.off('setcolumnstyles', this.setColVTableWidthAndTranslate);\n this.parent.off('refresh-virtual-indices', this.invokeServerDataBind);\n this.parent.off('contentcolgroup', this.contentColGroup);\n this.parent.off(dataSourceModified, this.dataSourceModified);\n }\n getModuleName() { return 'blazor'; }\n ;\n modelChanged(args) {\n this.actionArgs = args;\n this.parent.currentAction = args;\n }\n addDeleteSuccess(args) {\n let editArgs;\n let action = 'action';\n let data = 'data';\n let index = 'index';\n editArgs = {\n requestType: args.requestType,\n data: args[data],\n action: args[action]\n };\n if (!isNullOrUndefined(args[index])) {\n editArgs[index] = args[index];\n }\n args.promise.then((e) => this.editSuccess(editArgs)).catch((e) => {\n if (isBlazor() && this.parent.isServerRendered) {\n let error = 'error';\n let message = 'message';\n if (!isNullOrUndefined(e[error]) && !isNullOrUndefined(e[error][message])) {\n e[error] = e[error][message];\n }\n }\n this.parent.trigger(actionFailure, ((isBlazor() && e instanceof Array) ? e[0] : e));\n this.parent.hideSpinner();\n this.parent.log('actionfailure', { error: e });\n });\n }\n editSuccess(args) {\n this.parent.renderModule.resetTemplates();\n this.invokeServerDataBind(args);\n }\n invokeServerDataBind(args) {\n this.actionArgs = args;\n this.parent.currentAction = args;\n this.parent.allowServerDataBinding = true;\n this.parent.serverDataBind();\n this.parent.allowServerDataBinding = false;\n }\n onDetailRowClick(target) {\n let gObj = this.parent;\n let adaptor = 'interopAdaptor';\n let rIndex = 'rowIndex';\n let invokeMethodAsync = 'invokeMethodAsync';\n let tr = target.parentElement;\n let uid = tr.getAttribute('data-uid');\n let rowObj = gObj.getRowObjectFromUID(uid);\n let args = {\n uid: uid, classList: target.classList[0], index: tr.getAttribute('aria-rowindex'),\n rowIndex: gObj.getRowsObject().indexOf(rowObj), colSpan: this.parent.getVisibleColumns().length\n };\n gObj[adaptor][invokeMethodAsync]('OnDetailClick', args);\n if (target.classList.contains('e-detailrowcollapse')) {\n let rows = gObj.getRowsObject();\n let rowData = rowObj.data;\n let gridRowId = this.parent.getRowUid('grid-row');\n let len = gObj.groupSettings.columns.length;\n let gridRow = new Row({\n isDataRow: true,\n isExpand: true,\n uid: gridRowId,\n isDetailRow: true,\n cells: [new Cell({ cellType: CellType.Indent }), new Cell({ isDataCell: true, visible: true })]\n });\n for (let i = 0; i < len; i++) {\n gridRow.cells.unshift(new Cell({ cellType: CellType.Indent }));\n }\n rows.splice(args[rIndex] + 1, 0, gridRow);\n gObj.trigger(detailDataBound, { data: rowData });\n gObj.notify(detailDataBound, { rows: gObj.getRowsObject() });\n rowObj.isExpand = true;\n this.aria.setExpand(target, true);\n }\n else {\n gObj.getRowsObject().splice(args[rIndex] + 1, 1);\n gObj.notify(detailDataBound, { rows: gObj.getRowsObject() });\n rowObj.isExpand = false;\n this.aria.setExpand(target, false);\n }\n }\n setColumnVisibility(columns) {\n let visible = {};\n let adaptor = 'interopAdaptor';\n let invokeMethodAsync = 'invokeMethodAsync';\n for (let i = 0; i < columns.length; i++) {\n visible[columns[i].uid] = columns[i].visible;\n }\n this.parent[adaptor][invokeMethodAsync]('setColumnVisibility', { visible: visible });\n }\n dataSuccess(args) {\n if (this.parent.enableVirtualization && Object.keys(this.actionArgs).length === 0) {\n this.actionArgs.requestType = 'virtualscroll';\n }\n let startIndex = 'startIndex';\n let endIndex = 'endIndex';\n this.actionArgs[startIndex] = args[startIndex];\n this.actionArgs[endIndex] = args[endIndex];\n if (this.parent.enableVirtualization) {\n this.virtualContentModule = this.parent.contentModule;\n if (this.virtualContentModule.activeKey === 'downArrow' || this.virtualContentModule.activeKey === 'upArrow') {\n let row = this.parent.getRowByIndex(this.virtualContentModule.blzRowIndex);\n if (row) {\n this.parent.selectRow(parseInt(row.getAttribute('aria-rowindex'), 10));\n // tslint:disable-next-line:no-any\n row.cells[0].focus({ preventScroll: true });\n }\n }\n this.virtualContentModule.blazorDataLoad = false;\n }\n if (args.foreignColumnsData) {\n let columns = this.parent.getColumns();\n for (let i = 0; i < columns.length; i++) {\n if (args.foreignColumnsData[columns[i].field]) {\n columns[i].columnData = args.foreignColumnsData[columns[i].field];\n }\n }\n }\n if (this.parent.allowGrouping && this.parent.groupSettings.columns) {\n let agg = [];\n let aggRows = this.parent.aggregates;\n for (let i = 0; i < aggRows.length; i++) {\n let aggRow = aggRows[i];\n for (let j = 0; j < aggRow.columns.length; j++) {\n let aggr = {};\n let type = aggRow.columns[j].type.toString();\n aggr = { type: type.toLowerCase(), field: aggRow.columns[j].field };\n agg.push(aggr);\n }\n }\n let data;\n let aggrds;\n let groupedCols = this.parent.groupSettings.columns;\n for (let k = 0; k < groupedCols.length; k++) {\n aggrds = data ? data : args.result;\n data = DataUtil.group(aggrds, groupedCols[k], agg, null, null);\n }\n args.result = data ? data : args.result;\n }\n let rowUid = 'rowUid';\n let offsetTime = 'offsetTime';\n let off = 'offset';\n this.parent[rowUid] = args[rowUid];\n args[off] = Math.sign(args[off]) === 1 ? -Math.abs(args[off]) : Math.abs(args[off]);\n this.parent[offsetTime] = args[off];\n if (this.parent[offsetTime] !== new Date().getTimezoneOffset() / 60) {\n if (this.parent.editSettings.mode !== 'Batch') {\n let action = 'action';\n let rowIndex = 'rowIndex';\n let index = 'index';\n if (this.actionArgs[action] === 'edit') {\n this.setClientOffSet(args, this.actionArgs[rowIndex]);\n }\n else if (this.actionArgs[action] === 'add') {\n this.setClientOffSet(args, this.actionArgs[index]);\n }\n }\n else if (this.parent.editSettings.mode === 'Batch') {\n let changes = 'changes';\n let changedRecords = 'changedRecords';\n let addedRecords = 'addedRecords';\n let keyField = this.parent.getPrimaryKeyFieldNames()[0];\n let batchChanges = this.actionArgs[changes] || { changedRecords: [], addedRecords: [] };\n for (let i = 0; i < batchChanges[changedRecords].length; i++) {\n for (let j = 0; j < args.result.length; j++) {\n if (batchChanges[changedRecords][i][keyField] === args.result[j][keyField]) {\n this.setClientOffSet(args, j);\n }\n }\n }\n for (let i = 0; i < batchChanges[addedRecords].length; i++) {\n for (let j = 0; j < args.result.length; j++) {\n if (batchChanges[addedRecords][i][keyField] === args.result[j][keyField]) {\n this.setClientOffSet(args, j);\n }\n }\n }\n }\n }\n this.parent.renderModule.dataManagerSuccess(args, this.actionArgs);\n this.parent.getMediaColumns();\n if (this.parent.enableVirtualization) {\n this.virtualContentModule = this.parent.contentModule;\n this.setColVTableWidthAndTranslate();\n if (this.parent.groupSettings.columns.length) {\n this.virtualContentModule.setVirtualHeight(this.virtualHeight);\n }\n }\n this.actionArgs = this.parent.currentAction = {};\n }\n removeDisplayNone() {\n let renderedContentRows = this.parent.getContentTable().querySelectorAll('tr');\n for (let i = 0; i < renderedContentRows.length; i++) {\n let renderedContentCells = renderedContentRows[i].querySelectorAll('td');\n for (let j = 0; j < renderedContentCells.length; j++) {\n renderedContentCells[j].style.display = '';\n }\n }\n }\n setVirtualTrackHeight(args) {\n this.virtualHeight = args.VisibleGroupedRowsCount * this.parent.getRowHeight();\n this.virtualContentModule.setVirtualHeight(this.virtualHeight);\n }\n setColVTableWidthAndTranslate(args) {\n if (this.parent.enableColumnVirtualization && this.virtualContentModule.prevInfo &&\n (JSON.stringify(this.virtualContentModule.currentInfo.columnIndexes) !==\n JSON.stringify(this.virtualContentModule.prevInfo.columnIndexes)) || ((args && args.refresh))) {\n let translateX = this.virtualContentModule.getColumnOffset(this.virtualContentModule.startColIndex - 1);\n let width = this.virtualContentModule.getColumnOffset(this.virtualContentModule.endColIndex - 1) - translateX + '';\n this.virtualContentModule.header.virtualEle.setWrapperWidth(width);\n this.virtualContentModule.virtualEle.setWrapperWidth(width);\n this.virtualContentModule.header.virtualEle.adjustTable(translateX, 0);\n this.parent.getContentTable().parentElement.style.width = width + 'px';\n }\n if (this.dataSourceChanged) {\n this.virtualContentModule.getPanel().firstElementChild.scrollTop = 0;\n this.virtualContentModule.getPanel().firstElementChild.scrollLeft = 0;\n if (this.virtualContentModule.header.virtualEle) {\n this.virtualContentModule.header.virtualEle.adjustTable(0, 0);\n }\n this.parent.getContentTable().parentElement.style.transform = 'translate(0px,0px)';\n this.virtualContentModule.refreshOffsets();\n this.virtualContentModule.refreshVirtualElement();\n this.dataSourceChanged = false;\n }\n }\n dataSourceModified() {\n this.dataSourceChanged = true;\n }\n setClientOffSet(args, index) {\n let timeZone = DataUtil.serverTimezoneOffset;\n DataUtil.serverTimezoneOffset = 0;\n args.result[index] = DataUtil.parse.parseJson(JSON.stringify(args.result[index]));\n DataUtil.serverTimezoneOffset = timeZone;\n }\n setServerOffSet(args) {\n let serverTimeZone = DataUtil.serverTimezoneOffset;\n let offsetTime = 'offsetTime';\n let data = 'data';\n let timeZone = new Date().getTimezoneOffset() / 60 * 2 + this.parent[offsetTime];\n DataUtil.serverTimezoneOffset = timeZone;\n args[data] = DataUtil.parse.parseJson(JSON.stringify(args[data]));\n DataUtil.serverTimezoneOffset = serverTimeZone;\n }\n onGroupClick(args) {\n let adaptor = 'interopAdaptor';\n let content = 'contentModule';\n let invokeMethodAsync = 'invokeMethodAsync';\n let exactTopIndex = 'exactTopIndex';\n args[exactTopIndex] = Math.round((this.parent.element.querySelector('.e-content').scrollTop) / this.parent.getRowHeight());\n let rowHeight = 'rowHeight';\n args[rowHeight] = this.parent.getRowHeight();\n this.parent[adaptor][invokeMethodAsync]('OnGroupExpandClick', args).then(() => {\n this.parent[content].rowElements = [].slice.call(this.parent.getContentTable().querySelectorAll('tr.e-row[data-uid]'));\n });\n }\n setPersistData(args) {\n let gObj = this.parent;\n gObj.mergePersistGridData(args);\n let bulkChanges = 'bulkChanges';\n if (gObj[bulkChanges].columns) {\n delete gObj[bulkChanges].columns;\n }\n gObj.headerModule.refreshUI();\n gObj.notify('persist-data-changed', {});\n gObj.notify(columnVisibilityChanged, gObj.getColumns());\n }\n ;\n resetPersistData(args) {\n let gObj = this.parent;\n let bulkChanges = 'bulkChanges';\n let parseArgs = JSON.parse(args);\n let persistArgs = { filterSettings: parseArgs.filterSettings,\n groupSettings: parseArgs.groupSettings, pageSettings: parseArgs.pageSettings, sortSettings: parseArgs.sortSettings,\n searchSettings: parseArgs.searchSettings, columns: parseArgs.columns };\n if (!persistArgs.sortSettings.columns) {\n persistArgs.sortSettings.columns = [];\n }\n if (!persistArgs.groupSettings.columns) {\n persistArgs.groupSettings.columns = [];\n }\n if (!persistArgs.pageSettings.currentPage) {\n gObj.pageSettings.currentPage = 1;\n }\n for (let i = 0; i < gObj.columns.length; i++) {\n if (gObj.groupSettings.columns.indexOf(gObj.columns[i].field) > -1) {\n gObj.columns[i].visible = true;\n }\n }\n gObj.mergePersistGridData(persistArgs);\n gObj.notify('persist-data-changed', {});\n if (gObj[bulkChanges].columns) {\n delete gObj[bulkChanges].columns;\n }\n gObj.headerModule.refreshUI();\n for (let i = 0; i < gObj.columns.length; i++) {\n gObj.columns[i].editType = gObj.columns[i].editType.toLowerCase();\n }\n gObj.setProperties({ filterSettings: { columns: [] } }, true);\n }\n contentColGroup() {\n let gObj = this.parent;\n let contentTable = gObj.getContent().querySelector('.e-table');\n contentTable.insertBefore(contentTable.querySelector(`#content-${gObj.element.id}colGroup`), contentTable.querySelector('tbody'));\n if (gObj.frozenRows) {\n let headerTable = gObj.getHeaderContent().querySelector('.e-table');\n headerTable.insertBefore(headerTable.querySelector(`#${gObj.element.id}colGroup`), headerTable.querySelector('tbody'));\n }\n if (gObj.getFrozenColumns() !== 0) {\n let movableContentTable = gObj.getContent().querySelector('.e-movablecontent').querySelector('.e-table');\n movableContentTable.insertBefore(movableContentTable.querySelector(`#${gObj.element.id}colGroup`), movableContentTable.querySelector('tbody'));\n if (gObj.frozenRows) {\n let movableHeaderTable = gObj.getHeaderContent().querySelector('.e-movableheader').querySelector('.e-table');\n movableHeaderTable.insertBefore(movableHeaderTable.querySelector(`#${gObj.element.id}colGroup`), movableHeaderTable.querySelector('tbody'));\n }\n }\n }\n dataFailure(args) {\n this.parent.renderModule.dataManagerFailure(args, this.actionArgs);\n this.actionArgs = this.parent.currentAction = {};\n }\n destroy() {\n this.removeEventListener();\n }\n}\n\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Grid_1;\n/**\n * Represents the field name and direction of sort column.\n */\nclass SortDescriptor extends ChildProperty {\n}\n__decorate$1([\n Property()\n], SortDescriptor.prototype, \"field\", void 0);\n__decorate$1([\n Property()\n], SortDescriptor.prototype, \"direction\", void 0);\n__decorate$1([\n Property(false)\n], SortDescriptor.prototype, \"isFromGroup\", void 0);\n/**\n * Configures the sorting behavior of Grid.\n */\nclass SortSettings extends ChildProperty {\n}\n__decorate$1([\n Collection([], SortDescriptor)\n], SortSettings.prototype, \"columns\", void 0);\n__decorate$1([\n Property(true)\n], SortSettings.prototype, \"allowUnsort\", void 0);\n/**\n * Represents the predicate for the filter column.\n */\nclass Predicate$1 extends ChildProperty {\n}\n__decorate$1([\n Property()\n], Predicate$1.prototype, \"field\", void 0);\n__decorate$1([\n Property()\n], Predicate$1.prototype, \"operator\", void 0);\n__decorate$1([\n Property()\n], Predicate$1.prototype, \"value\", void 0);\n__decorate$1([\n Property()\n], Predicate$1.prototype, \"matchCase\", void 0);\n__decorate$1([\n Property()\n], Predicate$1.prototype, \"ignoreAccent\", void 0);\n__decorate$1([\n Property()\n], Predicate$1.prototype, \"predicate\", void 0);\n__decorate$1([\n Property({})\n], Predicate$1.prototype, \"actualFilterValue\", void 0);\n__decorate$1([\n Property({})\n], Predicate$1.prototype, \"actualOperator\", void 0);\n__decorate$1([\n Property()\n], Predicate$1.prototype, \"type\", void 0);\n__decorate$1([\n Property()\n], Predicate$1.prototype, \"ejpredicate\", void 0);\n__decorate$1([\n Property()\n], Predicate$1.prototype, \"uid\", void 0);\n__decorate$1([\n Property()\n], Predicate$1.prototype, \"isForeignKey\", void 0);\n/**\n * Configures the infinite scroll behavior of Grid.\n */\nclass InfiniteScrollSettings extends ChildProperty {\n}\n__decorate$1([\n Property(false)\n], InfiniteScrollSettings.prototype, \"enableCache\", void 0);\n__decorate$1([\n Property(3)\n], InfiniteScrollSettings.prototype, \"maxBlocks\", void 0);\n__decorate$1([\n Property(3)\n], InfiniteScrollSettings.prototype, \"initialBlocks\", void 0);\n/**\n * Configures the filtering behavior of the Grid.\n */\nclass FilterSettings extends ChildProperty {\n}\n__decorate$1([\n Collection([], Predicate$1)\n], FilterSettings.prototype, \"columns\", void 0);\n__decorate$1([\n Property('FilterBar')\n], FilterSettings.prototype, \"type\", void 0);\n__decorate$1([\n Property()\n], FilterSettings.prototype, \"mode\", void 0);\n__decorate$1([\n Property(true)\n], FilterSettings.prototype, \"showFilterBarStatus\", void 0);\n__decorate$1([\n Property(1500)\n], FilterSettings.prototype, \"immediateModeDelay\", void 0);\n__decorate$1([\n Property()\n], FilterSettings.prototype, \"operators\", void 0);\n__decorate$1([\n Property(false)\n], FilterSettings.prototype, \"ignoreAccent\", void 0);\n__decorate$1([\n Property(false)\n], FilterSettings.prototype, \"enableCaseSensitivity\", void 0);\n__decorate$1([\n Property(false)\n], FilterSettings.prototype, \"showFilterBarOperator\", void 0);\n/**\n * Configures the selection behavior of the Grid.\n */\nclass SelectionSettings extends ChildProperty {\n}\n__decorate$1([\n Property('Row')\n], SelectionSettings.prototype, \"mode\", void 0);\n__decorate$1([\n Property('Flow')\n], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n__decorate$1([\n Property('Single')\n], SelectionSettings.prototype, \"type\", void 0);\n__decorate$1([\n Property(false)\n], SelectionSettings.prototype, \"checkboxOnly\", void 0);\n__decorate$1([\n Property(false)\n], SelectionSettings.prototype, \"persistSelection\", void 0);\n__decorate$1([\n Property('Default')\n], SelectionSettings.prototype, \"checkboxMode\", void 0);\n__decorate$1([\n Property(false)\n], SelectionSettings.prototype, \"enableSimpleMultiRowSelection\", void 0);\n__decorate$1([\n Property(true)\n], SelectionSettings.prototype, \"enableToggle\", void 0);\n/**\n * Configures the search behavior of the Grid.\n */\nclass SearchSettings extends ChildProperty {\n}\n__decorate$1([\n Property([])\n], SearchSettings.prototype, \"fields\", void 0);\n__decorate$1([\n Property('')\n], SearchSettings.prototype, \"key\", void 0);\n__decorate$1([\n Property('contains')\n], SearchSettings.prototype, \"operator\", void 0);\n__decorate$1([\n Property(true)\n], SearchSettings.prototype, \"ignoreCase\", void 0);\n__decorate$1([\n Property(false)\n], SearchSettings.prototype, \"ignoreAccent\", void 0);\n/**\n * Configures the row drop settings of the Grid.\n */\nclass RowDropSettings extends ChildProperty {\n}\n__decorate$1([\n Property()\n], RowDropSettings.prototype, \"targetID\", void 0);\n/**\n * Configures the text wrap settings of the Grid.\n */\nclass TextWrapSettings extends ChildProperty {\n}\n__decorate$1([\n Property('Both')\n], TextWrapSettings.prototype, \"wrapMode\", void 0);\n/**\n * Configures the group behavior of the Grid.\n */\nclass GroupSettings extends ChildProperty {\n}\n__decorate$1([\n Property(true)\n], GroupSettings.prototype, \"showDropArea\", void 0);\n__decorate$1([\n Property(false)\n], GroupSettings.prototype, \"allowReordering\", void 0);\n__decorate$1([\n Property(false)\n], GroupSettings.prototype, \"showToggleButton\", void 0);\n__decorate$1([\n Property(false)\n], GroupSettings.prototype, \"showGroupedColumn\", void 0);\n__decorate$1([\n Property(true)\n], GroupSettings.prototype, \"showUngroupButton\", void 0);\n__decorate$1([\n Property(false)\n], GroupSettings.prototype, \"disablePageWiseAggregates\", void 0);\n__decorate$1([\n Property([])\n], GroupSettings.prototype, \"columns\", void 0);\n__decorate$1([\n Property()\n], GroupSettings.prototype, \"captionTemplate\", void 0);\n/**\n * Configures the edit behavior of the Grid.\n */\nclass EditSettings extends ChildProperty {\n}\n__decorate$1([\n Property(false)\n], EditSettings.prototype, \"allowAdding\", void 0);\n__decorate$1([\n Property(false)\n], EditSettings.prototype, \"allowEditing\", void 0);\n__decorate$1([\n Property(false)\n], EditSettings.prototype, \"allowDeleting\", void 0);\n__decorate$1([\n Property('Normal')\n], EditSettings.prototype, \"mode\", void 0);\n__decorate$1([\n Property(true)\n], EditSettings.prototype, \"allowEditOnDblClick\", void 0);\n__decorate$1([\n Property(true)\n], EditSettings.prototype, \"showConfirmDialog\", void 0);\n__decorate$1([\n Property(false)\n], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n__decorate$1([\n Property('')\n], EditSettings.prototype, \"template\", void 0);\n__decorate$1([\n Property('')\n], EditSettings.prototype, \"headerTemplate\", void 0);\n__decorate$1([\n Property('')\n], EditSettings.prototype, \"footerTemplate\", void 0);\n__decorate$1([\n Property('Top')\n], EditSettings.prototype, \"newRowPosition\", void 0);\n__decorate$1([\n Property({})\n], EditSettings.prototype, \"dialog\", void 0);\n__decorate$1([\n Property(false)\n], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n/**\n * Represents the Grid component.\n * ```html\n *
    \n * \n * ```\n */\nlet Grid = Grid_1 = class Grid extends Component {\n /**\n * Constructor for creating the component\n * @hidden\n */\n constructor(options, element) {\n super(options, element);\n this.isPreventScrollEvent = false;\n this.inViewIndexes = [];\n this.media = {};\n this.componentRefresh = Component.prototype.refresh;\n /** @hidden */\n this.isVirtualAdaptive = false;\n /** @hidden */\n this.vRows = [];\n /** @hidden */\n this.vcRows = [];\n /** @hidden */\n this.vGroupOffsets = {};\n /** @hidden */\n this.rowUid = 0;\n /**\n * Gets the currently visible records of the Grid.\n */\n this.currentViewData = [];\n /** @hidden */\n this.lockcolPositionCount = 0;\n /** @hidden */\n this.prevPageMoving = false;\n /** @hidden */\n this.pageTemplateChange = false;\n /** @hidden */\n this.isAutoGen = false;\n this.mediaBindInstance = {};\n /** @hidden */\n this.commandDelIndex = undefined;\n // enable/disable logger for MVC & Core\n this.enableLogger = true;\n this.needsID = true;\n Grid_1.Inject(Selection);\n setValue('mergePersistData', this.mergePersistGridData, this);\n }\n /**\n * Get the properties to be maintained in the persisted state.\n * @return {string}\n */\n getPersistData() {\n let keyEntity = ['pageSettings', 'sortSettings',\n 'filterSettings', 'groupSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'scrollPosition'];\n let ignoreOnPersist = {\n pageSettings: ['template', 'pageSizes', 'enableQueryString', 'totalRecordsCount', 'pageCount'],\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent'],\n groupSettings: ['showDropArea', 'showToggleButton', 'showGroupedColumn', 'showUngroupButton',\n 'disablePageWiseAggregates', 'hideCaptionCount'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: [], scrollPosition: []\n };\n for (let i = 0; i < keyEntity.length; i++) {\n let currentObject = this[keyEntity[i]];\n for (let val of ignoreOnPersist[keyEntity[i]]) {\n delete currentObject[val];\n }\n }\n this.pageSettings.template = undefined;\n /* tslint:disable-next-line:no-any */\n if (this.isAngular) {\n /* tslint:disable:no-string-literal */\n delete this.groupSettings['properties']['captionTemplate'];\n }\n this.pageTemplateChange = !isNullOrUndefined(this.pagerTemplate);\n return this.addOnPersist(keyEntity);\n }\n /**\n * To provide the array of modules needed for component rendering\n * @return {ModuleDeclaration[]}\n * @hidden\n */\n requiredModules() {\n let modules = [];\n if (this.isDestroyed) {\n return modules;\n }\n if (this.allowFiltering) {\n modules.push({\n member: 'filter',\n args: [this, this.filterSettings, this.serviceLocator]\n });\n }\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport',\n args: [this, this.serviceLocator]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this]\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this, this.sortSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings]\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this, this.selectionSettings, this.serviceLocator]\n });\n }\n modules.push({\n member: 'resize',\n args: [this]\n });\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this]\n });\n }\n if (this.allowRowDragAndDrop) {\n modules.push({\n member: 'rowDragAndDrop',\n args: [this]\n });\n }\n if (this.allowGrouping) {\n modules.push({\n member: 'group',\n args: [this, this.groupSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.aggregates.length) {\n modules.push({ member: 'aggregate', args: [this, this.serviceLocator] });\n }\n if (this.isDetail()) {\n modules.push({\n member: 'detailRow',\n args: [this, this.serviceLocator]\n });\n }\n if (this.toolbar || this.toolbarTemplate) {\n modules.push({\n member: 'toolbar',\n args: [this, this.serviceLocator]\n });\n }\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n modules.push({\n member: 'virtualscroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.getFrozenColumns() || this.frozenRows) {\n modules.push({ member: 'freeze', args: [this, this.serviceLocator] });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this, this.serviceLocator]\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowDeleting || this.editSettings.allowEditing) {\n modules.push({\n member: 'edit',\n args: [this, this.serviceLocator]\n });\n }\n this.extendRequiredModules(modules);\n return modules;\n }\n extendRequiredModules(modules) {\n if (this.enableInfiniteScrolling) {\n modules.push({\n member: 'infiniteScroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'columnChooser',\n args: [this, this.serviceLocator]\n });\n }\n if (this.isForeignKeyEnabled(this.columns)) {\n modules.push({ member: 'foreignKey', args: [this, this.serviceLocator] });\n }\n if (this.enableLogger) {\n modules.push({ member: 'logger', args: [this] });\n }\n if (isBlazor()) {\n modules.push({ member: 'blazor', args: [this] });\n }\n }\n /**\n * For internal use only - Initialize the event handler;\n * @private\n */\n preRender() {\n this.serviceLocator = new ServiceLocator;\n this.initProperties();\n this.initializeServices();\n }\n initProperties() {\n /* tslint:disable */\n this.isInitial = true;\n this.sortedColumns = [];\n this.inViewIndexes = [];\n this.mediaCol = [];\n this.isInitialLoad = false;\n this.allowServerDataBinding = false;\n this.ignoreCollectionWatch = true;\n if (isBlazor() && this.enableVirtualization && this.allowGrouping) {\n let isExpanded = 'isExpanded';\n this[isExpanded] = false;\n }\n this.mergeCells = {};\n this.isEdit = false;\n this.checkAllRows = 'None';\n this.isCheckBoxSelection = false;\n this.isPersistSelection = false;\n this.componentRefresh = Component.prototype.refresh;\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith'\n };\n this.defaultLocale = {\n EmptyRecord: 'No records to display',\n True: 'true',\n False: 'false',\n InvalidFilterMessage: 'Invalid Filter Data',\n GroupDropArea: 'Drag a column header here to group its column',\n UnGroup: 'Click here to ungroup',\n UnGroupButton: 'Click here to ungroup',\n GroupDisable: 'Grouping is disabled for this column',\n FilterbarTitle: '\\'s filter bar cell',\n EmptyDataSourceError: 'DataSource must not be empty at initial load since columns are generated from dataSource in AutoGenerate Column Grid',\n // Toolbar Items\n Add: 'Add',\n Edit: 'Edit',\n Cancel: 'Cancel',\n Update: 'Update',\n Delete: 'Delete',\n Print: 'Print',\n Pdfexport: 'PDF Export',\n Excelexport: 'Excel Export',\n Wordexport: 'Word Export',\n Csvexport: 'CSV Export',\n Search: 'Search',\n Columnchooser: 'Columns',\n Save: 'Save',\n Item: 'item',\n Items: 'items',\n EditOperationAlert: 'No records selected for edit operation',\n DeleteOperationAlert: 'No records selected for delete operation',\n SaveButton: 'Save',\n OKButton: 'OK',\n CancelButton: 'Cancel',\n EditFormTitle: 'Details of ',\n AddFormTitle: 'Add New Record',\n BatchSaveConfirm: 'Are you sure you want to save changes?',\n BatchSaveLostChanges: 'Unsaved changes will be lost. Are you sure you want to continue?',\n ConfirmDelete: 'Are you sure you want to Delete Record?',\n CancelEdit: 'Are you sure you want to Cancel the changes?',\n ChooseColumns: 'Choose Column',\n SearchColumns: 'search columns',\n Matchs: 'No Matches Found',\n FilterButton: 'Filter',\n ClearButton: 'Clear',\n StartsWith: 'Starts With',\n EndsWith: 'Ends With',\n Contains: 'Contains',\n Equal: 'Equal',\n NotEqual: 'Not Equal',\n LessThan: 'Less Than',\n LessThanOrEqual: 'Less Than Or Equal',\n GreaterThan: 'Greater Than',\n GreaterThanOrEqual: 'Greater Than Or Equal',\n ChooseDate: 'Choose a Date',\n EnterValue: 'Enter the value',\n Copy: 'Copy',\n Group: 'Group by this column',\n Ungroup: 'Ungroup by this column',\n autoFitAll: 'Autofit all columns',\n autoFit: 'Autofit this column',\n AutoFitAll: 'Autofit all columns',\n AutoFit: 'Autofit this column',\n Export: 'Export',\n FirstPage: 'First Page',\n LastPage: 'Last Page',\n PreviousPage: 'Previous Page',\n NextPage: 'Next Page',\n SortAscending: 'Sort Ascending',\n SortDescending: 'Sort Descending',\n EditRecord: 'Edit Record',\n DeleteRecord: 'Delete Record',\n FilterMenu: 'Filter',\n SelectAll: 'Select All',\n Blanks: 'Blanks',\n FilterTrue: 'True',\n FilterFalse: 'False',\n NoResult: 'No Matches Found',\n ClearFilter: 'Clear Filter',\n NumberFilter: 'Number Filters',\n TextFilter: 'Text Filters',\n DateFilter: 'Date Filters',\n DateTimeFilter: 'DateTime Filters',\n MatchCase: 'Match Case',\n Between: 'Between',\n CustomFilter: 'Custom Filter',\n CustomFilterPlaceHolder: 'Enter the value',\n CustomFilterDatePlaceHolder: 'Choose a date',\n AND: 'AND',\n OR: 'OR',\n ShowRowsWhere: 'Show rows where:',\n FilterMenuDialogARIA: 'Filter menu dialog',\n ExcelFilterDialogARIA: 'Excel filter dialog',\n DialogEditARIA: 'Edit dialog',\n ColumnChooserDialogARIA: 'Column chooser dialog',\n ColumnMenuDialogARIA: 'Column menu dialog',\n CustomFilterDialogARIA: 'Customer filter dialog'\n };\n this.keyConfigs = {\n downArrow: 'downarrow',\n upArrow: 'uparrow',\n rightArrow: 'rightarrow',\n leftArrow: 'leftarrow',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftRight: 'shift+rightarrow',\n shiftLeft: 'shift+leftarrow',\n home: 'home',\n end: 'end',\n escape: 'escape',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n ctrlAltPageUp: 'ctrl+alt+pageup',\n ctrlAltPageDown: 'ctrl+alt+pagedown',\n altPageUp: 'alt+pageup',\n altPageDown: 'alt+pagedown',\n altDownArrow: 'alt+downarrow',\n altUpArrow: 'alt+uparrow',\n ctrlDownArrow: 'ctrl+downarrow',\n ctrlUpArrow: 'ctrl+uparrow',\n ctrlPlusA: 'ctrl+A',\n ctrlPlusP: 'ctrl+P',\n insert: 'insert',\n delete: 'delete',\n f2: 'f2',\n enter: 'enter',\n ctrlEnter: 'ctrl+enter',\n shiftEnter: 'shift+enter',\n tab: 'tab',\n shiftTab: 'shift+tab',\n space: 'space',\n ctrlPlusC: 'ctrl+C',\n ctrlShiftPlusH: 'ctrl+shift+H',\n ctrlSpace: 'ctrl+space',\n ctrlLeftArrow: 'ctrl+leftarrow',\n ctrlRightArrow: 'ctrl+rightarrow'\n };\n /* tslint:enable */\n }\n /**\n * For internal use only - To Initialize the component rendering.\n * @private\n */\n render() {\n this.log(['module_missing', 'promise_enabled', 'locale_missing', 'check_datasource_columns']);\n this.ariaService.setOptions(this.element, { role: 'grid' });\n if (isBlazor()) {\n this.renderComplete();\n }\n createSpinner({ target: this.element }, this.createElement);\n this.renderModule = new Render(this, this.serviceLocator);\n this.searchModule = new Search(this);\n this.scrollModule = new Scroll(this);\n this.notify(initialLoad, {});\n if (this.getDataModule().dataManager.dataSource.offline === true || this.getDataModule().dataManager.dataSource.url === undefined) {\n this.isVirtualAdaptive = true;\n }\n this.trigger(load);\n prepareColumns(this.columns, this.enableColumnVirtualization);\n if (this.enablePersistence) {\n this.notify(columnsPrepared, {});\n }\n if (!(isBlazor() && this.isServerRendered)) {\n this.getMediaColumns();\n setColumnIndex(this.columns);\n }\n this.checkLockColumns(this.columns);\n this.getColumns();\n this.processModel();\n this.gridRender();\n this.wireEvents();\n this.addListener();\n this.updateDefaultCursor();\n this.updateStackedFilter();\n this.showSpinner();\n this.notify(initialEnd, {});\n if (isBlazor() && this.isServerRendered) {\n gridObserver.notify(componentRendered, { id: this.element.id, grid: this });\n }\n }\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n */\n showSpinner() {\n showSpinner(this.element);\n }\n /**\n * Manually showed spinner needs to hide by `hideSpinnner`.\n */\n hideSpinner() {\n hideSpinner(this.element);\n }\n updateStackedFilter() {\n if (this.allowFiltering && this.filterSettings.type === 'FilterBar' &&\n this.getHeaderContent().querySelectorAll('.e-stackedheadercell').length) {\n this.getHeaderContent().classList.add('e-stackedfilter');\n }\n else {\n this.getHeaderContent().classList.remove('e-stackedfilter');\n }\n }\n getMediaColumns() {\n if (!this.enableColumnVirtualization) {\n let gcol = this.getColumns();\n this.getShowHideService = this.serviceLocator.getService('showHideService');\n if (!isNullOrUndefined(gcol)) {\n for (let index = 0; index < gcol.length; index++) {\n if (!isNullOrUndefined(gcol[index].hideAtMedia) && (isNullOrUndefined(gcol[index].visible) || gcol[index].visible)) {\n this.pushMediaColumn(gcol[index], index);\n }\n }\n }\n }\n }\n pushMediaColumn(col, index) {\n this.mediaCol.push(col);\n this.media[col.uid] = window.matchMedia(col.hideAtMedia);\n this.mediaQueryUpdate(index, this.media[col.uid]);\n this.mediaBindInstance[index] = this.mediaQueryUpdate.bind(this, index);\n this.media[col.uid].addListener(this.mediaBindInstance[index]);\n }\n /**\n * @hidden\n */\n updateMediaColumns(col) {\n if (!this.enableColumnVirtualization) {\n let index = this.getColumnIndexByUid(col.uid);\n for (let i = 0; i < this.mediaCol.length; i++) {\n if (col.uid === this.mediaCol[i].uid) {\n this.mediaCol.splice(i, 1);\n return;\n }\n }\n this.pushMediaColumn(col, index);\n }\n }\n /**\n * @hidden\n */\n mediaQueryUpdate(columnIndex, e) {\n let col = this.getColumns()[columnIndex];\n if (this.mediaCol.some((mediaColumn) => mediaColumn.uid === col.uid)) {\n col.visible = e.matches;\n if (this.isInitialLoad) {\n this.invokedFromMedia = true;\n if (col.visible) {\n this.showHider.show(col.headerText, 'headerText');\n }\n else {\n this.showHider.hide(col.headerText, 'headerText');\n }\n }\n }\n }\n refreshMediaCol() {\n this.isInitialLoad = true;\n let footerContent = this.element.querySelector('.e-gridfooter');\n if (this.aggregates.length && this.element.scrollHeight > this.height && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n let checkboxColumn = this.getColumns().filter((col) => col.type === 'checkbox');\n if (checkboxColumn.length && this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n this.isCheckBoxSelection = false;\n }\n }\n removeMediaListener() {\n for (let i = 0; i < this.mediaCol.length; i++) {\n this.media[this.mediaCol[i].uid].removeListener(this.mediaBindInstance[this.mediaCol[i].index]);\n }\n }\n /**\n * For internal use only - Initialize the event handler\n * @private\n */\n eventInitializer() {\n //eventInitializer\n }\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n * @method destroy\n * @return {void}\n */\n destroy() {\n let gridElement = this.element;\n if (!gridElement) {\n return;\n }\n let hasGridChild = gridElement.querySelector('.e-gridheader') &&\n gridElement.querySelector('.e-gridcontent') ? true : false;\n if (hasGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n this.removeMediaListener();\n this.notify(destroy, {});\n this.destroyDependentModules();\n if (hasGridChild) {\n super.destroy();\n }\n this.toolTipObj.destroy();\n let modules = ['renderModule', 'headerModule', 'contentModule', 'valueFormatterService',\n 'serviceLocator', 'ariaService', 'keyboardModule', 'widthService', 'searchModule', 'showHider',\n 'scrollModule', 'printModule', 'clipboardModule', 'focusModule'];\n for (let i = 0; i < modules.length; i++) {\n if (this[modules[i]]) {\n this[modules[i]] = null;\n }\n }\n if (!(isBlazor() && this.isServerRendered)) {\n this.element.innerHTML = '';\n }\n else {\n this.element.style.display = 'none';\n }\n classList(this.element, [], ['e-rtl', 'e-gridhover', 'e-responsive', 'e-default', 'e-device', 'e-grid-min-height']);\n }\n destroyDependentModules() {\n let gridElement = this.element;\n if (!gridElement || (!gridElement.querySelector('.e-gridheader') && !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n this.scrollModule.destroy();\n this.keyboardModule.destroy();\n this.focusModule.destroy();\n }\n /**\n * For internal use only - Get the module name.\n * @private\n */\n getModuleName() {\n return 'grid';\n }\n enableBoxSelection() {\n if (this.enableAutoFill) {\n this.selectionSettings.cellSelectionMode = 'BoxWithBorder';\n this.element.classList.add('e-afenabled');\n }\n else {\n this.element.classList.remove('e-afenabled');\n }\n }\n /**\n * Called internally if any of the property value changed.\n * @hidden\n */\n /* tslint:disable-next-line:max-line-length */\n // tslint:disable-next-line:max-func-body-length\n onPropertyChanged(newProp, oldProp) {\n let requireRefresh = false;\n let requireGridRefresh = false;\n let freezeRefresh$$1 = false;\n let checkCursor;\n let args = { requestType: 'refresh' };\n if (this.isDestroyed) {\n return;\n }\n this.log('module_missing');\n let properties = Object.keys(newProp);\n if (properties.indexOf('columns') > -1) {\n this.updateColumnObject();\n requireGridRefresh = true;\n }\n for (let prop of properties) {\n switch (prop) {\n case 'allowPaging':\n this.notify(uiUpdate, { module: 'pager', enable: this.allowPaging });\n requireRefresh = true;\n break;\n case 'pageSettings':\n if (this.pageTemplateChange) {\n this.pageTemplateChange = false;\n this.notify(inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n break;\n }\n this.notify(inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n if (isNullOrUndefined(newProp.pageSettings.currentPage) && isNullOrUndefined(newProp.pageSettings.pageSize)\n && isNullOrUndefined(newProp.pageSettings.totalRecordsCount)\n || !isNullOrUndefined(oldProp.pageSettings) &&\n ((newProp.pageSettings.currentPage !== oldProp.pageSettings.currentPage)\n && !this.enableColumnVirtualization && !this.enableVirtualization\n && this.pageSettings.totalRecordsCount <= this.pageSettings.pageSize)) {\n requireRefresh = true;\n }\n break;\n case 'allowSorting':\n this.notify(uiUpdate, { module: 'sort', enable: this.allowSorting });\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'allowFiltering':\n this.updateStackedFilter();\n this.notify(uiUpdate, { module: 'filter', enable: this.allowFiltering });\n requireRefresh = true;\n if (this.filterSettings.type !== 'FilterBar') {\n this.refreshHeader();\n }\n break;\n case 'height':\n case 'width':\n this.notify(uiUpdate, { module: 'scroll', properties: { width: newProp.width, height: newProp.height } });\n break;\n case 'allowReordering':\n this.headerModule.refreshUI();\n checkCursor = true;\n break;\n case 'allowRowDragAndDrop':\n this.notify(uiUpdate, { module: 'rowDragAndDrop', enable: this.allowRowDragAndDrop });\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'allowSelection':\n this.notify(uiUpdate, { module: 'selection', enable: this.allowSelection });\n break;\n case 'enableAutoFill':\n if (this.selectionModule) {\n this.enableBoxSelection();\n this.selectionModule.updateAutoFillPosition();\n }\n break;\n case 'rowTemplate':\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n requireRefresh = true;\n break;\n case 'detailTemplate':\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n requireRefresh = true;\n break;\n case 'allowGrouping':\n this.notify(uiUpdate, { module: 'group', enable: this.allowGrouping });\n this.headerModule.refreshUI();\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'enableInfiniteScrolling':\n case 'childGrid':\n requireRefresh = true;\n break;\n case 'toolbar':\n this.notify(uiUpdate, { module: 'toolbar' });\n break;\n case 'groupSettings':\n this.notify(inBoundModelChanged, {\n module: 'group', properties: newProp.groupSettings,\n oldProperties: oldProp.groupSettings\n });\n break;\n case 'aggregates':\n if (!this.aggregates.length && this.allowGrouping && this.groupSettings.columns.length) {\n requireRefresh = true;\n }\n this.notify(uiUpdate, { module: 'aggregate', properties: newProp });\n break;\n case 'frozenColumns':\n case 'frozenRows':\n case 'enableVirtualization':\n case 'currencyCode':\n case 'locale':\n this.log('frozen_rows_columns');\n freezeRefresh$$1 = true;\n requireGridRefresh = true;\n break;\n case 'query':\n if (!this.getDataModule().isQueryInvokedFromData) {\n requireRefresh = true;\n }\n this.getDataModule().isQueryInvokedFromData = false;\n break;\n default:\n this.extendedPropertyChange(prop, newProp, requireGridRefresh);\n }\n }\n if (checkCursor) {\n this.updateDefaultCursor();\n }\n if (requireGridRefresh) {\n if (freezeRefresh$$1 || this.frozenColumns || this.frozenRows) {\n if (!(isBlazor() && this.isServerRendered)) {\n this.freezeRefresh();\n }\n }\n else {\n this.refresh();\n }\n }\n else if (requireRefresh) {\n this.notify(modelChanged, args);\n requireRefresh = false;\n this.maintainSelection(newProp.selectedRowIndex);\n }\n }\n /* tslint:disable */\n extendedPropertyChange(prop, newProp, requireGridRefresh) {\n switch (prop) {\n case 'enableRtl':\n this.updateRTL();\n if (this.allowPaging) {\n this.element.querySelector('.e-gridpager').ej2_instances[0].enableRtl = newProp.enableRtl;\n this.element.querySelector('.e-gridpager').ej2_instances[0].dataBind();\n }\n if (this.height !== 'auto') {\n this.scrollModule.removePadding(!newProp.enableRtl);\n this.scrollModule.setPadding();\n }\n if (this.toolbar && this.toolbarModule) {\n this.toolbarModule.getToolbar().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.toolbarModule.getToolbar().ej2_instances[0].dataBind();\n }\n if (this.contextMenuItems && this.contextMenuModule) {\n this.contextMenuModule.getContextMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.contextMenuModule.getContextMenu().ej2_instances[0].dataBind();\n }\n if (this.showColumnMenu && this.columnMenuModule) {\n this.columnMenuModule.getColumnMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.columnMenuModule.getColumnMenu().ej2_instances[0].dataBind();\n }\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n this.refreshHeader();\n }\n this.notify(rtlUpdated, {});\n break;\n case 'enableAltRow':\n this.renderModule.refresh();\n break;\n case 'allowResizing':\n this.headerModule.refreshUI();\n this.updateResizeLines();\n break;\n case 'rowHeight':\n if (this.rowHeight) {\n addClass([this.element], 'e-grid-min-height');\n }\n else {\n removeClass([this.element], 'e-grid-min-height');\n }\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'gridLines':\n this.updateGridLines();\n break;\n case 'showColumnMenu':\n this.headerModule.refreshUI();\n this.notify(uiUpdate, { module: 'columnMenu', enable: true });\n break;\n case 'columnMenuItems':\n this.notify(uiUpdate, { module: 'columnMenu', enable: this.columnMenuItems });\n break;\n case 'contextMenuItems':\n this.notify(uiUpdate, { module: 'contextMenu', enable: this.contextMenuItems });\n break;\n case 'showColumnChooser':\n this.notify(uiUpdate, { module: 'columnChooser', enable: this.showColumnChooser });\n break;\n case 'filterSettings':\n this.updateStackedFilter();\n this.notify(inBoundModelChanged, { module: 'filter', properties: newProp.filterSettings });\n break;\n case 'searchSettings':\n this.notify(inBoundModelChanged, { module: 'search', properties: newProp.searchSettings });\n break;\n case 'sortSettings':\n this.notify(inBoundModelChanged, { module: 'sort' });\n break;\n case 'selectionSettings':\n this.notify(inBoundModelChanged, { module: 'selection', properties: newProp.selectionSettings });\n break;\n case 'editSettings':\n this.notify(inBoundModelChanged, { module: 'edit', properties: newProp.editSettings });\n break;\n case 'allowTextWrap':\n case 'textWrapSettings':\n if (this.allowTextWrap) {\n this.applyTextWrap();\n }\n else {\n this.removeTextWrap();\n }\n this.notify(freezeRender, { case: 'textwrap', isModeChg: (prop === 'textWrapSettings') });\n break;\n case 'dataSource':\n let pending = this.getDataModule().getState();\n if (Object.getPrototypeOf(newProp).deepWatch) {\n let pKeyField = this.getPrimaryKeyFieldNames()[0];\n for (let i = 0, props = Object.keys(newProp.dataSource); i < props.length; i++) {\n this.setRowData(getValue(pKeyField, this.dataSource[props[i]]), this.dataSource[props[i]]);\n }\n }\n else if (pending.isPending) {\n let gResult = !isNullOrUndefined(this.dataSource) ? this.dataSource.result : [];\n let names = (pending.group || []);\n for (let i = 0; i < names.length; i++) {\n gResult = DataUtil.group(gResult, names[i], pending.aggregates || []);\n }\n this.dataSource = {\n result: gResult, count: this.dataSource.count,\n aggregates: this.dataSource.aggregates\n };\n this.getDataModule().setState({});\n pending.resolver(this.dataSource);\n }\n else {\n this.getDataModule().setState({ isDataChanged: false });\n this.notify(dataSourceModified, {});\n if (!requireGridRefresh) {\n this.renderModule.refresh();\n }\n }\n this.scrollRefresh();\n break;\n case 'enableHover':\n let action = newProp.enableHover ? addClass : removeClass;\n action([this.element], 'e-gridhover');\n break;\n case 'selectedRowIndex':\n if (!this.isSelectedRowIndexUpdating) {\n this.selectRow(newProp.selectedRowIndex);\n }\n this.isSelectedRowIndexUpdating = false;\n break;\n }\n }\n maintainSelection(index) {\n if (index !== -1) {\n let fn = () => {\n this.selectRow(index);\n this.off(contentReady, fn);\n };\n this.on(contentReady, fn, this);\n }\n }\n /**\n * @private\n */\n setProperties(prop, muteOnChange) {\n super.setProperties(prop, muteOnChange);\n let filterSettings = 'filterSettings';\n if (prop[filterSettings] && this.filterModule && muteOnChange) {\n this.filterModule.refreshFilter();\n }\n }\n /**\n * @hidden\n */\n updateDefaultCursor() {\n let headerCells = [].slice.call(this.getHeaderContent().querySelectorAll('.e-headercell:not(.e-stackedheadercell)'));\n let stdHdrCell = [].slice.call(this.getHeaderContent().querySelectorAll('.e-stackedheadercell'));\n let cols = this.getColumns();\n if (this.enableColumnVirtualization && this.getFrozenColumns()) {\n let cells = this.contentModule.getHeaderCells();\n headerCells = cells.length ? cells : headerCells;\n }\n for (let i = 0; i < headerCells.length; i++) {\n let cell = headerCells[i];\n if (this.allowGrouping || this.allowReordering || this.allowSorting) {\n if (!cols[i].allowReordering || !cols[i].allowSorting || !cols[i].allowGrouping) {\n cell.classList.add('e-defaultcursor');\n }\n else {\n cell.classList.add('e-mousepointer');\n }\n }\n }\n for (let count = 0; count < stdHdrCell.length; count++) {\n if (this.allowReordering) {\n stdHdrCell[count].classList.add('e-mousepointer');\n }\n }\n }\n updateColumnModel(columns) {\n for (let i = 0, len = columns.length; i < len; i++) {\n if (columns[i].columns) {\n this.updateColumnModel(columns[i].columns);\n }\n else {\n this.columnModel.push(columns[i]);\n }\n }\n this.updateFrozenColumns();\n this.updateLockableColumns();\n }\n updateFrozenColumns() {\n let cols = this.columnModel;\n let count = 0;\n for (let i = 0, len = cols.length; i < len; i++) {\n if (cols[i].isFrozen) {\n cols.splice(this.frozenColumns + count, 0, cols.splice(i, 1)[0]);\n count++;\n }\n }\n }\n updateLockableColumns() {\n let cols = this.columnModel;\n let frozenCount = 0;\n let movableCount = 0;\n let frozenColumns = this.getFrozenColumns();\n for (let i = 0; i < cols.length; i++) {\n if (cols[i].lockColumn) {\n if (i < frozenColumns) {\n cols.splice(frozenCount, 0, cols.splice(i, 1)[0]);\n frozenCount++;\n }\n else {\n cols.splice(frozenColumns + movableCount, 0, cols.splice(i, 1)[0]);\n movableCount++;\n }\n }\n }\n }\n checkLockColumns(cols) {\n for (let i = 0; i < cols.length; i++) {\n if (cols[i].columns) {\n this.checkLockColumns(cols[i].columns);\n }\n else if (cols[i].lockColumn) {\n this.lockcolPositionCount++;\n }\n }\n }\n /**\n * Gets the columns from the Grid.\n * @return {Column[]}\n * @blazorType List\n */\n getColumns(isRefresh) {\n let inview = this.inViewIndexes.map((v) => v - this.groupSettings.columns.length).filter((v) => v > -1);\n let vLen = inview.length;\n if (!this.enableColumnVirtualization || isNullOrUndefined(this.columnModel) || this.columnModel.length === 0 || isRefresh) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n let columns = vLen === 0 ? this.columnModel :\n this.columnModel.slice(inview[0], inview[vLen - 1] + 1);\n if (this.contentModule && this.enableColumnVirtualization && this.getFrozenColumns() && inview.length\n && inview[0] > 0) {\n let frozenCols = this.contentModule.ensureFrozenCols(columns);\n columns = frozenCols;\n }\n return columns;\n }\n /**\n * @private\n */\n getStackedHeaderColumnByHeaderText(stackedHeader, col) {\n for (let i = 0; i < col.length; i++) {\n let individualColumn = col[i];\n if (individualColumn.field === stackedHeader || individualColumn.headerText === stackedHeader) {\n this.stackedColumn = individualColumn;\n break;\n }\n else if (individualColumn.columns) {\n this.getStackedHeaderColumnByHeaderText(stackedHeader, individualColumn.columns);\n }\n }\n return this.stackedColumn;\n }\n /**\n * @private\n */\n getColumnIndexesInView() {\n return this.inViewIndexes;\n }\n /**\n * @private\n */\n getQuery() {\n return this.query;\n }\n /**\n * @private\n */\n getLocaleConstants() {\n return this.defaultLocale;\n }\n /**\n * @private\n */\n setColumnIndexesInView(indexes) {\n this.inViewIndexes = indexes;\n }\n /**\n * Gets the visible columns from the Grid.\n * @return {Column[]}\n * @blazorType List\n */\n getVisibleColumns() {\n let cols = [];\n for (let col of this.columnModel) {\n if (col.visible) {\n cols.push(col);\n }\n }\n return cols;\n }\n /**\n * Gets the header div of the Grid.\n * @return {Element}\n */\n getHeaderContent() {\n return this.headerModule.getPanel();\n }\n /**\n * Sets the header div of the Grid to replace the old header.\n * @param {Element} element - Specifies the Grid header.\n * @return {void}\n */\n setGridHeaderContent(element) {\n this.headerModule.setPanel(element);\n }\n /**\n * Gets the content table of the Grid.\n * @return {Element}\n */\n getContentTable() {\n return this.contentModule.getTable();\n }\n /**\n * Sets the content table of the Grid to replace the old content table.\n * @param {Element} element - Specifies the Grid content table.\n * @return {void}\n */\n setGridContentTable(element) {\n this.contentModule.setTable(element);\n }\n /**\n * Gets the content div of the Grid.\n * @return {Element}\n */\n getContent() {\n return this.contentModule.getPanel();\n }\n /**\n * Sets the content div of the Grid to replace the old Grid content.\n * @param {Element} element - Specifies the Grid content.\n * @return {void}\n */\n setGridContent(element) {\n this.contentModule.setPanel(element);\n }\n /**\n * Gets the header table element of the Grid.\n * @return {Element}\n */\n getHeaderTable() {\n return this.headerModule.getTable();\n }\n /**\n * Sets the header table of the Grid to replace the old one.\n * @param {Element} element - Specifies the Grid header table.\n * @return {void}\n */\n setGridHeaderTable(element) {\n this.headerModule.setTable(element);\n }\n /**\n * Gets the footer div of the Grid.\n * @return {Element}\n */\n getFooterContent() {\n this.footerElement = this.element.getElementsByClassName('e-gridfooter')[0];\n return this.footerElement;\n }\n /**\n * Gets the footer table element of the Grid.\n * @return {Element}\n */\n getFooterContentTable() {\n this.footerElement = this.element.getElementsByClassName('e-gridfooter')[0];\n return this.footerElement.firstChild.firstChild;\n }\n /**\n * Gets the pager of the Grid.\n * @return {Element}\n */\n getPager() {\n return this.gridPager; //get element from pager\n }\n /**\n * Sets the pager of the Grid to replace the old pager.\n * @param {Element} element - Specifies the Grid pager.\n * @return {void}\n */\n setGridPager(element) {\n this.gridPager = element;\n }\n /**\n * Gets a row by index.\n * @param {number} index - Specifies the row index.\n * @return {Element}\n */\n getRowByIndex(index) {\n return this.contentModule.getRowByIndex(index);\n }\n /**\n * Gets a movable tables row by index.\n * @param {number} index - Specifies the row index.\n * @return {Element}\n */\n getMovableRowByIndex(index) {\n return this.contentModule.getMovableRowByIndex(index);\n }\n /**\n * Gets a frozen tables row by index.\n * @param {number} index - Specifies the row index.\n * @return {Element}\n */\n getFrozenRowByIndex(index) {\n return this.getFrozenDataRows()[index];\n }\n /**\n * Gets all the data rows of the Grid.\n * @return {Element[]}\n */\n getRows() {\n return this.contentModule.getRowElements();\n }\n /**\n * Get a row information based on cell\n * @param {Element}\n * @return RowInfo\n */\n getRowInfo(target) {\n let ele = target;\n let args = { target: target };\n if (!isNullOrUndefined(target) && isNullOrUndefined(parentsUntil(ele, 'e-detailrowcollapse')\n && isNullOrUndefined(parentsUntil(ele, 'e-recordplusexpand'))) && !this.isEdit) {\n let cell = closest(ele, '.e-rowcell');\n if (!cell) {\n let row = closest(ele, '.e-row');\n if (!isNullOrUndefined(row)) {\n let rowObj = this.getRowObjectFromUID(row.getAttribute('data-uid'));\n let rowIndex = parseInt(row.getAttribute('aria-rowindex'), 10);\n args = { row: row, rowData: rowObj.data, rowIndex: rowIndex };\n }\n return args;\n }\n let cellIndex = parseInt(cell.getAttribute('aria-colindex'), 10);\n if (!isNullOrUndefined(cell) && !isNaN(cellIndex)) {\n let row = closest(cell, '.e-row');\n let rowIndex = parseInt(row.getAttribute('aria-rowindex'), 10);\n let frzCols = this.getFrozenColumns();\n let isMovable = frzCols ? cellIndex >= frzCols : false;\n let rows = (isMovable ?\n this.contentModule.getMovableRows() : this.contentModule.getRows());\n let rowsObject = rows.filter((r) => r.uid === row.getAttribute('data-uid'));\n let rowData = {};\n let column;\n if (Object.keys(rowsObject).length) {\n rowData = rowsObject[0].data;\n column = rowsObject[0].cells[isMovable ? cellIndex - frzCols : cellIndex + this.getIndentCount()].column;\n }\n args = { cell: cell, cellIndex: cellIndex, row: row, rowIndex: rowIndex, rowData: rowData, column: column, target: target };\n }\n }\n return args;\n }\n /**\n * Gets the Grid's movable content rows from frozen grid.\n * @return {Element[]}\n */\n getMovableRows() {\n return this.contentModule.getMovableRowElements();\n }\n /**\n * Gets all the Grid's data rows.\n * @return {Element[]}\n */\n getDataRows() {\n if (isNullOrUndefined(this.getContentTable().querySelector('tbody'))) {\n return [];\n }\n let rows = [].slice.call(this.getContentTable().querySelector('tbody').children);\n if (this.frozenRows) {\n let freezeRows = [].slice.call(this.getHeaderTable().querySelector('tbody').children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n let dataRows = this.generateDataRows(rows);\n return dataRows;\n }\n /**\n * @hidden\n */\n addMovableRows(fRows, mrows) {\n for (let i = 0, len = mrows.length; i < len; i++) {\n fRows.push(mrows[i]);\n }\n return fRows;\n }\n generateDataRows(rows) {\n let dRows = [];\n for (let i = 0, len = rows.length; i < len; i++) {\n if (rows[i].classList.contains('e-row') && !rows[i].classList.contains('e-hiddenrow')) {\n if (this.isCollapseStateEnabled()) {\n dRows[parseInt(rows[i].getAttribute(\"aria-rowindex\"))] = rows[i];\n }\n else {\n dRows.push(rows[i]);\n }\n }\n }\n return dRows;\n }\n /**\n * Gets all the Grid's movable table data rows.\n * @return {Element[]}\n */\n getMovableDataRows() {\n let rows = [].slice.call(this.getContent().querySelector('.e-movablecontent').querySelector('tbody').children);\n if (this.frozenRows) {\n let freezeRows = [].slice.call(this.getHeaderContent().querySelector('.e-movableheader').querySelector('tbody').children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n let dataRows = this.generateDataRows(rows);\n return dataRows;\n }\n /**\n * Gets all the Grid's frozen table data rows.\n * @return {Element[]}\n */\n getFrozenDataRows() {\n let rows = [].slice.call(this.getContent().querySelector('.e-frozencontent').querySelector('tbody').children);\n if (this.frozenRows) {\n let freezeRows = [].slice.call(this.getHeaderContent().querySelector('.e-frozenheader').querySelector('tbody').children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n let dataRows = this.generateDataRows(rows);\n return dataRows;\n }\n /**\n * Updates particular cell value based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {string } field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n */\n setCellValue(key, field, value) {\n let cells = 'cells';\n let rowData = 'data';\n let rowIdx = 'index';\n let rowuID = 'uid';\n let fieldIdx;\n let col;\n let tr;\n let mTr;\n let pkName = this.getPrimaryKeyFieldNames()[0];\n let cell = new CellRenderer(this, this.serviceLocator);\n let selectedRow = {};\n let movableSelectedRow = {};\n let rowObjects = this.contentModule.getRows();\n let movableRowObjects = this.contentModule.getMovableRows();\n fieldIdx = this.getColumnIndexByField(field);\n if (this.groupSettings.columns.length) {\n fieldIdx = fieldIdx + this.groupSettings.columns.length;\n }\n if (this.childGrid || this.detailTemplate) {\n fieldIdx++;\n }\n if (this.isRowDragable()) {\n fieldIdx++;\n }\n col = this.getColumnByField(field);\n selectedRow = rowObjects.filter((r) => getValue(pkName, r.data) === key)[0];\n movableSelectedRow = movableRowObjects.filter((r) => getValue(pkName, r.data) === key)[0];\n tr = !isNullOrUndefined(selectedRow) ? this.element.querySelector('[data-uid=' + selectedRow[rowuID] + ']') : null;\n mTr = !isNullOrUndefined(movableSelectedRow) ? this.element.querySelector('[data-uid=' + movableSelectedRow[rowuID] + ']') : null;\n if (!isNullOrUndefined(tr)) {\n setValue(field, value, selectedRow[rowData]);\n let td = !isNullOrUndefined(tr[cells][fieldIdx]) ?\n tr[cells][fieldIdx] : mTr[cells][fieldIdx - this.frozenColumns];\n if (!isNullOrUndefined(td)) {\n let sRow = selectedRow[cells][fieldIdx];\n let mRow;\n if (this.frozenColumns) {\n mRow = movableSelectedRow[cells][fieldIdx - this.frozenColumns];\n }\n cell.refreshTD(td, !isNullOrUndefined(sRow) ? sRow : mRow, selectedRow[rowData], { index: selectedRow[rowIdx] });\n if (this.aggregates.length > 0) {\n this.notify(refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(groupAggregates, {});\n }\n }\n /* tslint:disable:no-string-literal */\n if (!isNullOrUndefined(movableSelectedRow) && !isNullOrUndefined(movableSelectedRow['changes'])) {\n movableSelectedRow['changes'][field] = value;\n }\n /* tslint:disable:no-string-literal */\n this.trigger(queryCellInfo, {\n cell: td, column: col, data: selectedRow[rowData]\n });\n }\n }\n else {\n return;\n }\n }\n /**\n * Updates and refresh the particular row values based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n */\n setRowData(key, rowData) {\n let rowuID = 'uid';\n let rowObjects = this.contentModule.getRows();\n let selectedRow;\n let pkName = this.getPrimaryKeyFieldNames()[0];\n let rowRenderer = new RowRenderer(this.serviceLocator, null, this);\n if (this.groupSettings.columns.length > 0 && this.aggregates.length > 0) {\n rowObjects = rowObjects.filter((row) => row.isDataRow);\n }\n selectedRow = rowObjects.filter((r) => getValue(pkName, r.data) === key)[0];\n if (!isNullOrUndefined(selectedRow) && this.element.querySelectorAll('[data-uid=' + selectedRow[rowuID] + ']').length) {\n selectedRow.changes = rowData;\n refreshForeignData(selectedRow, this.getForeignKeyColumns(), selectedRow.changes);\n rowRenderer.refresh(selectedRow, this.getColumns(), true);\n if (this.aggregates.length > 0) {\n this.notify(refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(groupAggregates, {});\n }\n }\n }\n else {\n return;\n }\n }\n /**\n * Gets a cell by row and column index.\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @return {Element}\n */\n getCellFromIndex(rowIndex, columnIndex) {\n let frzCols = this.getFrozenColumns();\n return frzCols && columnIndex >= frzCols ?\n this.getMovableDataRows()[rowIndex] && this.getMovableDataRows()[rowIndex].querySelectorAll('.e-rowcell')[columnIndex - frzCols] :\n this.getDataRows()[rowIndex] && this.getDataRows()[rowIndex].querySelectorAll('.e-rowcell')[columnIndex];\n }\n /**\n * Gets a movable table cell by row and column index.\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @return {Element}\n */\n getMovableCellFromIndex(rowIndex, columnIndex) {\n return this.getMovableDataRows()[rowIndex] &&\n this.getMovableDataRows()[rowIndex].querySelectorAll('.e-rowcell')[columnIndex - this.getFrozenColumns()];\n }\n /**\n * Gets a column header by column index.\n * @param {number} index - Specifies the column index.\n * @return {Element}\n */\n getColumnHeaderByIndex(index) {\n return this.getHeaderTable().querySelectorAll('.e-headercell')[index];\n }\n /**\n * @hidden\n */\n getRowObjectFromUID(uid) {\n let rows = this.contentModule.getRows();\n let row = this.rowObject(rows, uid);\n if (this.getFrozenColumns()) {\n if (!row) {\n row = this.rowObject(this.contentModule.getMovableRows(), uid);\n return row;\n }\n }\n if (isNullOrUndefined(row) && this.enableVirtualization && this.groupSettings.columns.length > 0) {\n row = this.rowObject(this.vRows, uid);\n return row;\n }\n return row;\n }\n rowObject(rows, uid) {\n for (let row of rows) {\n if (row.uid === uid) {\n return row;\n }\n }\n return null;\n }\n /**\n * @hidden\n */\n getRowsObject() {\n return this.contentModule.getRows();\n }\n /**\n * @hidden\n */\n getMovableRowsObject() {\n return this.contentModule.getMovableRows();\n }\n /**\n * Gets a column header by column name.\n * @param {string} field - Specifies the column name.\n * @return {Element}\n */\n getColumnHeaderByField(field) {\n let column = this.getColumnByField(field);\n return column ? this.getColumnHeaderByUid(column.uid) : undefined;\n }\n /**\n * Gets a column header by UID.\n * @param {string} field - Specifies the column uid.\n * @return {Element}\n */\n getColumnHeaderByUid(uid) {\n let element = this.getHeaderContent().querySelector('[e-mappinguid=' + uid + ']');\n return element ? element.parentElement : undefined;\n }\n /**\n * @hidden\n * @blazorType GridColumn\n */\n getColumnByIndex(index) {\n let column;\n this.getColumns().some((col, i) => {\n column = col;\n return i === index;\n });\n return column;\n }\n /**\n * Gets a Column by column name.\n * @param {string} field - Specifies the column name.\n * @return {Column}\n * @blazorType GridColumn\n */\n getColumnByField(field) {\n return iterateArrayOrObject(this.getColumns(), (item, index) => {\n if (item.field === field) {\n return item;\n }\n return undefined;\n })[0];\n }\n /**\n * Gets a column index by column name.\n * @param {string} field - Specifies the column name.\n * @return {number}\n */\n getColumnIndexByField(field) {\n let cols = this.getColumns();\n for (let i = 0; i < cols.length; i++) {\n if (cols[i].field === field) {\n return i;\n }\n }\n return -1;\n }\n /**\n * Gets a column by UID.\n * @param {string} uid - Specifies the column UID.\n * @return {Column}\n * @blazorType GridColumn\n */\n getColumnByUid(uid) {\n return iterateArrayOrObject([...this.getColumns(), ...this.getStackedColumns(this.columns)], (item, index) => {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n }\n /**\n * @hidden\n */\n getStackedColumns(columns, stackedColumn = []) {\n for (const column of columns) {\n if (column.columns) {\n stackedColumn.push(column);\n this.getStackedColumns(column.columns, stackedColumn);\n }\n }\n return stackedColumn;\n }\n /**\n * Gets a column index by UID.\n * @param {string} uid - Specifies the column UID.\n * @return {number}\n */\n getColumnIndexByUid(uid) {\n let index = iterateArrayOrObject(this.getColumns(), (item, index) => {\n if (item.uid === uid) {\n return index;\n }\n return undefined;\n })[0];\n return !isNullOrUndefined(index) ? index : -1;\n }\n /**\n * Gets UID by column name.\n * @param {string} field - Specifies the column name.\n * @return {string}\n */\n getUidByColumnField(field) {\n return iterateArrayOrObject(this.getColumns(), (item, index) => {\n if (item.field === field) {\n return item.uid;\n }\n return undefined;\n })[0];\n }\n /**\n * Gets TH index by column uid value.\n * @private\n * @param {string} uid - Specifies the column uid.\n * @return {number}\n */\n getNormalizedColumnIndex(uid) {\n let index = this.getColumnIndexByUid(uid);\n return index + this.getIndentCount();\n }\n /**\n * Gets indent cell count.\n * @private\n * @return {number}\n */\n getIndentCount() {\n let index = 0;\n if (this.allowGrouping) {\n index += this.groupSettings.columns.length;\n }\n if (this.isDetail()) {\n index++;\n }\n if (this.allowRowDragAndDrop && isNullOrUndefined(this.rowDropSettings.targetID)) {\n index++;\n }\n /**\n * TODO: index normalization based on the stacked header, grouping and detailTemplate\n * and frozen should be handled here\n */\n return index;\n }\n /**\n * Gets the collection of column fields.\n * @return {string[]}\n */\n getColumnFieldNames() {\n let columnNames = [];\n let column;\n for (let i = 0, len = this.getColumns().length; i < len; i++) {\n column = this.getColumns()[i];\n if (column.visible) {\n columnNames.push(column.field);\n }\n }\n return columnNames;\n }\n /**\n * Gets a compiled row template.\n * @return {Function}\n * @private\n */\n getRowTemplate() {\n return this.rowTemplateFn;\n }\n /**\n * Gets a compiled detail row template.\n * @private\n * @return {Function}\n */\n getDetailTemplate() {\n return this.detailTemplateFn;\n }\n /**\n * Gets a compiled detail row template.\n * @private\n * @return {Function}\n */\n getEditTemplate() {\n return this.editTemplateFn;\n }\n /**\n * Gets a compiled dialog edit header template.\n * @private\n * @return {Function}\n */\n getEditHeaderTemplate() {\n return this.editHeaderTemplateFn;\n }\n /**\n * Gets a compiled dialog edit footer template.\n * @private\n * @return {Function}\n */\n getEditFooterTemplate() {\n return this.editFooterTemplateFn;\n }\n /**\n * Get the names of the primary key columns of the Grid.\n * @return {string[]}\n */\n getPrimaryKeyFieldNames() {\n let keys = [];\n for (let k = 0; k < this.columnModel.length; k++) {\n if (this.columnModel[k].isPrimaryKey) {\n keys.push(this.columnModel[k].field);\n }\n }\n return keys;\n }\n /**\n * Refreshes the Grid header and content.\n */\n refresh() {\n this.headerModule.refreshUI();\n this.updateStackedFilter();\n this.renderModule.refresh();\n }\n /**\n * Refreshes the Grid header.\n */\n refreshHeader() {\n this.headerModule.refreshUI();\n }\n /**\n * Gets the collection of selected rows.\n * @return {Element[]}\n */\n getSelectedRows() {\n return this.selectionModule ? this.selectionModule.selectedRecords : [];\n }\n /**\n * Gets the collection of selected row indexes.\n * @return {number[]}\n */\n getSelectedRowIndexes() {\n return this.selectionModule ? this.selectionModule.selectedRowIndexes : [];\n }\n /**\n * Gets the collection of selected row and cell indexes.\n * @return {number[]}\n */\n getSelectedRowCellIndexes() {\n return this.selectionModule ? this.selectionModule.selectedRowCellIndexes : [];\n }\n /**\n * Gets the collection of selected records.\n * @return {Object[]}\n * @isGenericType true\n */\n getSelectedRecords() {\n return this.selectionModule ? this.selectionModule.getSelectedRecords() : [];\n }\n /**\n * Gets the data module.\n * @return {Data}\n */\n getDataModule() {\n return this.renderModule.data;\n }\n /**\n * Shows a column by its column name.\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @return {void}\n */\n showColumns(keys, showBy) {\n showBy = showBy ? showBy : 'headerText';\n this.showHider.show(keys, showBy);\n }\n /**\n * Hides a column by column name.\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @return {void}\n */\n hideColumns(keys, hideBy) {\n hideBy = hideBy ? hideBy : 'headerText';\n this.showHider.hide(keys, hideBy);\n }\n /**\n * @hidden\n */\n getFrozenColumns() {\n return this.frozenColumns + this.getFrozenCount(this.columns, 0);\n }\n /**\n * @hidden\n */\n getVisibleFrozenColumns() {\n return this.getVisibleFrozenColumnsCount() + this.getVisibleFrozenCount(this.columns, 0);\n }\n /**\n * Get the current Filter operator and field.\n * @return {Object}\n */\n getFilterUIInfo() {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n }\n getVisibleFrozenColumnsCount() {\n let visibleFrozenColumns = 0;\n let col = this.columns;\n for (let i = 0; i < this.frozenColumns; i++) {\n if (col[i].visible) {\n visibleFrozenColumns++;\n }\n }\n return visibleFrozenColumns;\n }\n getVisibleFrozenCount(cols, cnt) {\n for (let i = 0, len = cols.length; i < len; i++) {\n if (cols[i].columns) {\n cnt = this.getVisibleFrozenCount(cols[i].columns, cnt);\n }\n else {\n if (cols[i].isFrozen && cols[i].visible) {\n cnt++;\n }\n }\n }\n return cnt;\n }\n getFrozenCount(cols, cnt) {\n for (let i = 0, len = cols.length; i < len; i++) {\n if (cols[i].columns) {\n cnt = this.getFrozenCount(cols[i].columns, cnt);\n }\n else {\n if (cols[i].isFrozen) {\n cnt++;\n }\n }\n }\n return cnt;\n }\n /**\n * Navigates to the specified target page.\n * @param {number} pageNo - Defines the page number to navigate.\n * @return {void}\n */\n goToPage(pageNo) {\n if (this.pagerModule) {\n this.pagerModule.goToPage(pageNo);\n }\n }\n /**\n * Defines the text of external message.\n * @param {string} message - Defines the message to update.\n * @return {void}\n */\n updateExternalMessage(message) {\n if (this.pagerModule) {\n this.pagerModule.updateExternalMessage(message);\n }\n }\n /**\n * Sorts a column with the given options.\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n * @return {void}\n */\n sortColumn(columnName, direction, isMultiSort) {\n if (this.sortModule) {\n this.sortModule.sortColumn(columnName, direction, isMultiSort);\n }\n }\n /**\n * Clears all the sorted columns of the Grid.\n * @return {void}\n */\n clearSorting() {\n if (this.sortModule) {\n this.sortModule.clearSorting();\n }\n }\n /**\n * Remove sorted column by field name.\n * @param {string} field - Defines the column field name to remove sort.\n * @return {void}\n * @hidden\n */\n removeSortColumn(field) {\n if (this.sortModule) {\n this.sortModule.removeSortColumn(field);\n }\n }\n /**\n * Filters grid row by column name with the given options.\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, the grid filters the records with exact match. if false, it filters case\n * insensitive records (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true,\n * then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n * @return {void}\n */\n filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n if (this.filterModule) {\n this.filterModule.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n }\n }\n /**\n * Clears all the filtered rows of the Grid.\n * @return {void}\n */\n clearFiltering(fields) {\n if (this.filterModule) {\n this.filterModule.clearFiltering(fields);\n }\n }\n /**\n * Removes filtered column by field name.\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @return {void}\n * @hidden\n */\n removeFilteredColsByField(field, isClearFilterBar) {\n if (this.filterModule) {\n this.filterModule.removeFilteredColsByField(field, isClearFilterBar);\n }\n }\n /**\n * Selects a row by given index.\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @return {void}\n */\n selectRow(index, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectRow(index, isToggle);\n }\n }\n /**\n * Selects a collection of rows by indexes.\n * @param {number[]} rowIndexes - Specifies the row indexes.\n * @return {void}\n */\n selectRows(rowIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectRows(rowIndexes);\n }\n }\n /**\n * Deselects the current selected rows and cells.\n * @return {void}\n */\n clearSelection() {\n if (this.selectionModule) {\n this.selectionModule.clearSelection();\n }\n }\n /**\n * Selects a cell by the given index.\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @return {void}\n */\n selectCell(cellIndex, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectCell(cellIndex, isToggle);\n }\n }\n /**\n * Selects a range of cells from start and end indexes.\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n * @return {void}\n */\n selectCellsByRange(startIndex, endIndex) {\n this.selectionModule.selectCellsByRange(startIndex, endIndex);\n }\n /**\n * Searches Grid records using the given key.\n * You can customize the default search option by using the\n * [`searchSettings`](./#searchsettings/).\n * @param {string} searchString - Defines the key.\n * @return {void}\n */\n search(searchString) {\n if (this.searchModule) {\n this.searchModule.search(searchString);\n }\n }\n /**\n * By default, prints all the pages of the Grid and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./#printmode).\n * @return {void}\n */\n print() {\n if (this.printModule) {\n this.printModule.print();\n }\n }\n /**\n * Delete a record with Given options. If fieldname and data is not given then grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n * @param {string} fieldname - Defines the primary key field, 'Name of the column'.\n * @param {Object} data - Defines the JSON data of the record to be deleted.\n */\n deleteRecord(fieldname, data) {\n if (this.editModule) {\n this.editModule.deleteRecord(fieldname, data);\n }\n }\n /**\n * Starts edit the selected row. At least one row must be selected before invoking this method.\n * `editSettings.allowEditing` should be true.\n * @return {void}\n */\n startEdit() {\n if (this.editModule) {\n this.editModule.startEdit();\n }\n }\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n */\n endEdit() {\n if (this.editModule) {\n this.editModule.endEdit();\n }\n }\n /**\n * Cancels edited state.\n */\n closeEdit() {\n if (this.editModule) {\n this.editModule.closeEdit();\n }\n }\n /**\n * Adds a new record to the Grid. Without passing parameters, it adds empty rows.\n * > `editSettings.allowEditing` should be true.\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n */\n addRecord(data, index) {\n if (this.editModule) {\n this.editModule.addRecord(data, index);\n }\n }\n /**\n * Delete any visible row by TR element.\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n */\n deleteRow(tr) {\n if (this.editModule) {\n this.editModule.deleteRow(tr);\n }\n }\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n */\n editCell(index, field) {\n if (this.editModule) {\n this.editModule.editCell(index, field);\n }\n }\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n */\n saveCell() {\n if (this.editModule) {\n this.editModule.saveCell();\n }\n }\n /**\n * To update the specified cell by given value without changing into edited state.\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n */\n updateCell(rowIndex, field, value) {\n if (this.editModule) {\n this.editModule.updateCell(rowIndex, field, value);\n }\n }\n /**\n * To update the specified row by given values without changing into edited state.\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n */\n updateRow(index, data) {\n if (this.editModule) {\n this.editModule.updateRow(index, data);\n }\n }\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n * @return {Object}\n */\n getBatchChanges() {\n if (this.editModule) {\n return this.editModule.getBatchChanges();\n }\n return {};\n }\n /**\n * Enables or disables ToolBar items.\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @return {void}\n */\n enableToolbarItems(items, isEnable) {\n if (this.toolbarModule) {\n this.toolbarModule.enableItems(items, isEnable);\n }\n }\n /**\n * Copy the selected rows or cells data into clipboard.\n * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n */\n copy(withHeader) {\n if (this.clipboardModule) {\n this.clipboardModule.copy(withHeader);\n }\n }\n /**\n * @hidden\n */\n recalcIndentWidth() {\n if (!this.getHeaderTable().querySelector('.e-emptycell')) {\n return;\n }\n if ((!this.groupSettings.columns.length && !this.isDetail() && !this.isRowDragable()) ||\n this.getHeaderTable().querySelector('.e-emptycell').getAttribute('indentRefreshed') ||\n !this.getContentTable()) {\n return;\n }\n let indentWidth = this.getHeaderTable().querySelector('.e-emptycell').parentElement.offsetWidth;\n let headerCol = [].slice.call(this.getHeaderTable().querySelector('colgroup').childNodes);\n let contentCol = [].slice.call(this.getContentTable().querySelector('colgroup').childNodes);\n let perPixel = indentWidth / 30;\n let i = 0;\n let parentOffset = this.element.offsetWidth;\n let applyWidth = (index, width) => {\n if (ispercentageWidth(this)) {\n let newWidth = (width / parentOffset * 100).toFixed(1) + '%';\n headerCol[index].style.width = newWidth;\n contentCol[index].style.width = newWidth;\n }\n else {\n headerCol[index].style.width = width + 'px';\n contentCol[index].style.width = width + 'px';\n }\n this.notify(columnWidthChanged, { index: index, width: width });\n };\n if (perPixel >= 1) {\n indentWidth = (30 / perPixel);\n }\n if (this.enableColumnVirtualization || this.isAutoGen) {\n indentWidth = 30;\n }\n while (i < this.groupSettings.columns.length) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isDetail()) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isRowDragable()) {\n applyWidth(i, indentWidth);\n }\n this.isAutoGen = false;\n this.getHeaderTable().querySelector('.e-emptycell').setAttribute('indentRefreshed', 'true');\n }\n /**\n * @hidden\n */\n resetIndentWidth() {\n if (ispercentageWidth(this)) {\n this.getHeaderTable().querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.widthService.setWidthToColumns();\n this.recalcIndentWidth();\n }\n if ((this.width === 'auto' || typeof (this.width) === 'string' && this.width.indexOf('%') !== -1)\n && this.getColumns().filter((col) => col.width && col.minWidth).length > 0) {\n let tgridWidth = this.widthService.getTableWidth(this.getColumns());\n this.widthService.setMinwidthBycalculation(tgridWidth);\n }\n }\n /**\n * @hidden\n */\n isRowDragable() {\n return this.allowRowDragAndDrop && !this.rowDropSettings.targetID;\n }\n /**\n * Changes the Grid column positions by field names.\n * @param {string} fromFName - Defines the origin field name.\n * @param {string} toFName - Defines the destination field name.\n * @return {void}\n */\n reorderColumns(fromFName, toFName) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumns(fromFName, toFName);\n }\n }\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByIndex multiple times,\n * then you won't get the same results every time.\n * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n * @return {void}\n */\n reorderColumnByIndex(fromIndex, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByIndex(fromIndex, toIndex);\n }\n }\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByTargetIndex multiple times,\n * then you will get the same results every time.\n * @param {string} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n * @return {void}\n */\n reorderColumnByTargetIndex(fieldName, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByTargetIndex(fieldName, toIndex);\n }\n }\n /**\n * Changes the Grid Row position with given indexes.\n * @param {number} fromIndexes - Defines the origin Indexes.\n * @param {number} toIndex - Defines the destination Index.\n * @return {void}\n */\n reorderRows(fromIndexes, toIndex) {\n if (this.rowDragAndDropModule) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex);\n }\n }\n /**\n * @hidden\n */\n refreshDataSource(e, args) {\n this.notify('refreshdataSource', e);\n }\n /**\n * @hidden\n */\n disableRowDD(enable) {\n let headerTable = this.getHeaderTable();\n let contentTable = this.getContentTable();\n let headerRows = headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell');\n let rows = this.getRows();\n let disValue = enable ? 'none' : '';\n setStyleAttribute(headerTable.querySelector('colgroup').childNodes[0], { 'display': disValue });\n setStyleAttribute(contentTable.querySelector('colgroup').childNodes[0], { 'display': disValue });\n for (let i = 0; i < this.getRows().length; i++) {\n let ele = rows[i].firstElementChild;\n enable ? addClass([ele], 'e-hide') : removeClass([ele], ['e-hide']);\n }\n for (let j = 0; j < headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell').length; j++) {\n let ele = headerRows[j];\n enable ? addClass([ele], 'e-hide') : removeClass([ele], ['e-hide']);\n }\n }\n /**\n * Changes the column width to automatically fit its content to ensure that the width shows the content without wrapping/hiding.\n * > * This method ignores the hidden columns.\n * > * Uses the `autoFitColumns` method in the `dataBound` event to resize at initial rendering.\n * @param {string |string[]} fieldNames - Defines the column names.\n * @return {void}\n *\n *\n * ```typescript\n *
    \n * \n * ```\n *\n */\n autoFitColumns(fieldNames) {\n if (this.resizeModule) {\n this.resizeModule.autoFitColumns(fieldNames);\n }\n }\n /**\n * @hidden\n */\n createColumnchooser(x, y, target) {\n if (this.columnChooserModule) {\n this.columnChooserModule.renderColumnChooser(x, y, target);\n }\n }\n initializeServices() {\n this.serviceLocator.register('widthService', this.widthService = new ColumnWidthService(this));\n this.serviceLocator.register('cellRendererFactory', new CellRendererFactory);\n this.serviceLocator.register('rendererFactory', new RendererFactory);\n this.serviceLocator.register('localization', this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale));\n this.serviceLocator.register('valueFormatter', this.valueFormatterService = new ValueFormatter(this.locale));\n this.serviceLocator.register('showHideService', this.showHider = new ShowHide(this));\n this.serviceLocator.register('ariaService', this.ariaService = new AriaService());\n this.serviceLocator.register('focus', this.focusModule = new FocusStrategy(this));\n }\n processModel() {\n let gCols = this.groupSettings.columns;\n let sCols = this.sortSettings.columns;\n let flag;\n let j;\n if (this.allowGrouping) {\n for (let i = 0, len = gCols.length; i < len; i++) {\n j = 0;\n for (let sLen = sCols.length; j < sLen; j++) {\n if (sCols[j].field === gCols[i]) {\n flag = true;\n break;\n }\n }\n if (!flag) {\n sCols.push({ field: gCols[i], direction: 'Ascending', isFromGroup: true });\n }\n else {\n if (this.allowSorting) {\n this.sortedColumns.push(sCols[j].field);\n }\n else {\n sCols[j].direction = 'Ascending';\n }\n }\n if (!this.groupSettings.showGroupedColumn) {\n let column = this.enableColumnVirtualization ?\n this.columns.filter((c) => c.field === gCols[i])[0] : this.getColumnByField(gCols[i]);\n if (column) {\n column.visible = false;\n }\n else {\n this.log('initial_action', { moduleName: 'group', columnName: gCols[i] });\n }\n }\n }\n }\n if (!gCols.length) {\n for (let i = 0; i < sCols.length; i++) {\n this.sortedColumns.push(sCols[i].field);\n }\n }\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n this.editTemplateFn = templateCompiler(this.editSettings.template);\n this.editHeaderTemplateFn = templateCompiler(this.editSettings.headerTemplate);\n this.editFooterTemplateFn = templateCompiler(this.editSettings.footerTemplate);\n if (!isNullOrUndefined(this.parentDetails)) {\n let value = isNullOrUndefined(this.parentDetails.parentKeyFieldValue) ? 'undefined' :\n this.parentDetails.parentKeyFieldValue;\n this.query.where(this.queryString, 'equal', value, true);\n }\n this.initForeignColumn();\n }\n initForeignColumn() {\n if (this.isForeignKeyEnabled(this.getColumns())) {\n this.notify(initForeignKeyColumn, this.getForeignKeyColumns());\n }\n }\n gridRender() {\n this.updateRTL();\n if (this.enableHover) {\n this.element.classList.add('e-gridhover');\n }\n if (Browser.isDevice) {\n this.element.classList.add('e-device');\n }\n if (this.rowHeight) {\n this.element.classList.add('e-grid-min-height');\n }\n classList(this.element, ['e-responsive', 'e-default'], []);\n let rendererFactory = this.serviceLocator.getService('rendererFactory');\n this.headerModule = rendererFactory.getRenderer(RenderType.Header);\n this.contentModule = rendererFactory.getRenderer(RenderType.Content);\n this.printModule = new Print(this, this.scrollModule);\n this.clipboardModule = new Clipboard(this);\n this.renderModule.render();\n this.eventInitializer();\n this.createGridPopUpElement();\n this.widthService.setWidthToColumns();\n this.updateGridLines();\n this.applyTextWrap();\n this.createTooltip(); //for clip mode ellipsis\n this.enableBoxSelection();\n }\n dataReady() {\n this.scrollModule.setWidth();\n this.scrollModule.setHeight();\n if (this.height !== 'auto') {\n this.scrollModule.setPadding();\n }\n }\n updateRTL() {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n }\n createGridPopUpElement() {\n let popup = this.createElement('div', { className: 'e-gridpopup', styles: 'display:none;' });\n let content = this.createElement('div', { className: 'e-content', attrs: { tabIndex: '-1' } });\n append([content, this.createElement('div', { className: 'e-uptail e-tail' })], popup);\n content.appendChild(this.createElement('span'));\n append([content, this.createElement('div', { className: 'e-downtail e-tail' })], popup);\n this.element.appendChild(popup);\n }\n updateGridLines() {\n classList(this.element, [], ['e-verticallines', 'e-horizontallines', 'e-hidelines', 'e-bothlines']);\n switch (this.gridLines) {\n case 'Horizontal':\n this.element.classList.add('e-horizontallines');\n break;\n case 'Vertical':\n this.element.classList.add('e-verticallines');\n break;\n case 'None':\n this.element.classList.add('e-hidelines');\n break;\n case 'Both':\n this.element.classList.add('e-bothlines');\n break;\n }\n this.updateResizeLines();\n }\n updateResizeLines() {\n if (this.allowResizing &&\n !(this.gridLines === 'Vertical' || this.gridLines === 'Both')) {\n this.element.classList.add('e-resize-lines');\n }\n else {\n this.element.classList.remove('e-resize-lines');\n }\n }\n /**\n * The function is used to apply text wrap\n * @return {void}\n * @hidden\n */\n applyTextWrap() {\n if (this.allowTextWrap) {\n let headerRows = [].slice.call(this.element.querySelectorAll('.e-columnheader'));\n switch (this.textWrapSettings.wrapMode) {\n case 'Header':\n wrap(this.element, false);\n wrap(this.getContent(), false);\n wrap(headerRows, true);\n break;\n case 'Content':\n wrap(this.getContent(), true);\n wrap(this.element, false);\n wrap(headerRows, false);\n break;\n default:\n wrap(this.element, true);\n wrap(this.getContent(), false);\n wrap(headerRows, false);\n }\n }\n }\n /**\n * The function is used to remove text wrap\n * @return {void}\n * @hidden\n */\n removeTextWrap() {\n wrap(this.element, false);\n let headerRows = [].slice.call(this.element.querySelectorAll('.e-columnheader'));\n wrap(headerRows, false);\n wrap(this.getContent(), false);\n }\n /**\n * The function is used to add Tooltip to the grid cell that has ellipsiswithtooltip clip mode.\n * @return {void}\n * @hidden\n */\n createTooltip() {\n this.toolTipObj = new Tooltip({ opensOn: 'custom', content: '' }, this.element);\n }\n /** @hidden */\n freezeRefresh() {\n if (this.enableVirtualization) {\n this.pageSettings.currentPage = 1;\n }\n this.componentRefresh();\n }\n getTooltipStatus(element) {\n let width;\n let headerTable = this.getHeaderTable();\n let contentTable = this.getContentTable();\n let headerDivTag = 'e-gridheader';\n let htable = this.createTable(headerTable, headerDivTag, 'header');\n let ctable = this.createTable(headerTable, headerDivTag, 'content');\n let table = element.classList.contains('e-headercell') ? htable : ctable;\n let ele = element.classList.contains('e-headercell') ? 'th' : 'tr';\n table.querySelector(ele).className = element.className;\n table.querySelector(ele).innerHTML = element.innerHTML;\n width = table.querySelector(ele).getBoundingClientRect().width;\n document.body.removeChild(htable);\n document.body.removeChild(ctable);\n if (width > element.getBoundingClientRect().width) {\n return true;\n }\n return false;\n }\n mouseMoveHandler(e) {\n if (this.isEllipsisTooltip()) {\n let element = parentsUntil(e.target, 'e-ellipsistooltip');\n if (this.prevElement !== element || e.type === 'mouseout') {\n this.toolTipObj.close();\n }\n let tagName = e.target.tagName;\n let elemNames = ['A', 'BUTTON', 'INPUT'];\n if (element && e.type !== 'mouseout' && !(Browser.isDevice && elemNames.indexOf(tagName) !== -1)) {\n if (element.getAttribute('aria-describedby')) {\n return;\n }\n if (this.getTooltipStatus(element)) {\n if (element.getElementsByClassName('e-headertext').length) {\n this.toolTipObj.content = element.getElementsByClassName('e-headertext')[0].innerText;\n }\n else {\n this.toolTipObj.content = element.innerText;\n }\n this.prevElement = element;\n this.toolTipObj.open(element);\n }\n }\n }\n this.hoverFrozenRows(e);\n }\n /** @hidden */\n hoverFrozenRows(e) {\n if (this.getFrozenColumns()) {\n let row = parentsUntil(e.target, 'e-row');\n if ([].slice.call(this.element.querySelectorAll('.e-frozenhover')).length && e.type === 'mouseout') {\n let rows = [].slice.call(this.element.querySelectorAll('.e-frozenhover'));\n for (let i = 0; i < rows.length; i++) {\n rows[i].classList.remove('e-frozenhover');\n }\n }\n else if (row) {\n let rows = [].slice.call(this.element.querySelectorAll('tr[aria-rowindex=\"' + row.getAttribute('aria-rowindex') + '\"]'));\n rows.splice(rows.indexOf(row), 1);\n if (row.getAttribute('aria-selected') != 'true' && rows[0]) {\n rows[0].classList.add('e-frozenhover');\n }\n else if (rows[0]) {\n rows[0].classList.remove('e-frozenhover');\n }\n }\n }\n }\n isEllipsisTooltip() {\n let cols = this.getColumns();\n if (this.clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n for (let i = 0; i < cols.length; i++) {\n if (cols[i].clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n }\n return false;\n }\n scrollHandler() {\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n }\n /**\n * To create table for ellipsiswithtooltip\n * @hidden\n */\n createTable(table, tag, type) {\n let myTableDiv = this.createElement('div');\n myTableDiv.className = this.element.className;\n myTableDiv.style.cssText = 'display: inline-block;visibility:hidden;position:absolute';\n let mySubDiv = this.createElement('div');\n mySubDiv.className = tag;\n let myTable = this.createElement('table');\n myTable.className = table.className;\n myTable.style.cssText = 'table-layout: auto;width: auto';\n let ele = (type === 'header') ? 'th' : 'td';\n let myTr = this.createElement('tr');\n let mytd = this.createElement(ele);\n myTr.appendChild(mytd);\n myTable.appendChild(myTr);\n mySubDiv.appendChild(myTable);\n myTableDiv.appendChild(mySubDiv);\n document.body.appendChild(myTableDiv);\n return myTableDiv;\n }\n onKeyPressed(e) {\n if (e.action === 'tab' || e.action === 'shiftTab') {\n this.toolTipObj.close();\n }\n }\n /**\n * Binding events to the element while component creation.\n * @hidden\n */\n wireEvents() {\n EventHandler.add(this.element, 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'touchend', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'dblclick', this.dblClickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyPressHandler, this);\n EventHandler.add(window, 'resize', this.resetIndentWidth, this);\n if (this.allowKeyboard) {\n this.element.tabIndex = this.element.tabIndex === -1 ? 0 : this.element.tabIndex;\n }\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.getContent().firstElementChild, 'scroll', this.scrollHandler, this);\n EventHandler.add(this.element, 'mousemove', this.mouseMoveHandler, this);\n EventHandler.add(this.element, 'mouseout', this.mouseMoveHandler, this);\n EventHandler.add(this.getContent(), 'touchstart', this.tapEvent, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n }\n /**\n * Unbinding events from the element while component destroy.\n * @hidden\n */\n unwireEvents() {\n EventHandler.remove(this.element, 'click', this.mouseClickHandler);\n EventHandler.remove(this.element, 'touchend', this.mouseClickHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'dblclick', this.dblClickHandler);\n EventHandler.remove(this.getContent().firstElementChild, 'scroll', this.scrollHandler);\n EventHandler.remove(this.element, 'mousemove', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'mouseout', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'keydown', this.keyPressHandler);\n EventHandler.remove(this.getContent(), 'touchstart', this.tapEvent);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n EventHandler.remove(window, 'resize', this.resetIndentWidth);\n }\n /**\n * @hidden\n */\n addListener() {\n if (this.isDestroyed) {\n return;\n }\n this.on(dataReady, this.dataReady, this);\n this.on(contentReady, this.recalcIndentWidth, this);\n this.on(headerRefreshed, this.recalcIndentWidth, this);\n this.dataBoundFunction = this.refreshMediaCol.bind(this);\n this.addEventListener(dataBound, this.dataBoundFunction);\n this.on(keyPressed, this.onKeyPressed, this);\n this.on(contentReady, this.blazorTemplate, this);\n }\n /**\n * @hidden\n */\n removeListener() {\n if (this.isDestroyed) {\n return;\n }\n this.off(dataReady, this.dataReady);\n this.off(contentReady, this.recalcIndentWidth);\n this.off(headerRefreshed, this.recalcIndentWidth);\n this.removeEventListener(dataBound, this.dataBoundFunction);\n this.off(keyPressed, this.onKeyPressed);\n }\n blazorTemplate() {\n if (isBlazor()) {\n if (this.pageSettings.template) {\n updateBlazorTemplate(this.element.id + \"_template\", 'Template', this.pageSettings);\n }\n for (let i = 0; i < this.columnModel.length; i++) {\n if (this.columnModel[i].template) {\n updateBlazorTemplate(this.element.id + this.columnModel[i].uid, 'Template', this.columnModel[i], false);\n }\n if (this.columnModel[i].headerTemplate) {\n updateBlazorTemplate(this.element.id + this.columnModel[i].uid + 'headerTemplate', 'HeaderTemplate', this.columnModel[i], false);\n }\n if (this.filterSettings.type == 'FilterBar' && this.columnModel[i].filterTemplate) {\n let fieldName = this.columnModel[i].field;\n let tempID = this.element.id + this.columnModel[i].uid + 'filterTemplate';\n let filteredColumns = this.filterSettings.columns;\n for (let k = 0; k < filteredColumns.length; k++) {\n if (fieldName == filteredColumns[k].field) {\n blazorTemplates[tempID][0][fieldName] = filteredColumns[k].value;\n }\n }\n updateBlazorTemplate(this.element.id + this.columnModel[i].uid + 'filterTemplate', 'FilterTemplate', this.columnModel[i], false);\n }\n if (this.filterSettings.type != 'FilterBar' && this.columnModel[i].filterTemplate) {\n updateBlazorTemplate(this.element.id + this.columnModel[i].uid + 'filterTemplate', 'FilterTemplate', this.columnModel[i]);\n }\n }\n if (this.groupSettings.captionTemplate) {\n updateBlazorTemplate(this.element.id + 'captionTemplate', 'CaptionTemplate', this.groupSettings);\n }\n let guid = 'guid';\n for (let k = 0; k < this.aggregates.length; k++) {\n for (let j = 0; j < this.aggregates[k].columns.length; j++) {\n if (this.aggregates[k].columns[j].footerTemplate) {\n updateBlazorTemplate(this.element.id + this.aggregates[k].columns[j][guid] + 'footerTemplate', 'FooterTemplate', this.aggregates[k].columns[j]);\n }\n if (this.aggregates[k].columns[j].groupFooterTemplate) {\n updateBlazorTemplate(this.element.id + this.aggregates[k].columns[j][guid] + 'groupFooterTemplate', 'GroupFooterTemplate', this.aggregates[k].columns[j]);\n }\n if (this.aggregates[k].columns[j].groupCaptionTemplate) {\n updateBlazorTemplate(this.element.id + this.aggregates[k].columns[j][guid] + 'groupCaptionTemplate', 'GroupCaptionTemplate', this.aggregates[k].columns[j]);\n }\n }\n }\n }\n }\n /**\n * Get current visible data of grid.\n * @return {Object[]}\n * @isGenericType true\n */\n getCurrentViewRecords() {\n if (isGroupAdaptive(this)) {\n return isNullOrUndefined(this.currentViewData.records) ?\n this.currentViewData : this.currentViewData.records;\n }\n return (this.allowGrouping && this.groupSettings.columns.length && this.currentViewData.length && this.currentViewData.records) ?\n this.currentViewData.records : this.currentViewData;\n }\n mouseClickHandler(e) {\n if (this.isChildGrid(e) || (parentsUntil(e.target, 'e-gridpopup') && e.touches) ||\n this.element.querySelectorAll('.e-cloneproperties').length || this.checkEdit(e)) {\n return;\n }\n if (((!this.allowRowDragAndDrop && (parentsUntil(e.target, 'e-gridcontent') ||\n e.target.tagName === 'TD')) || (!(this.allowGrouping || this.allowReordering) &&\n parentsUntil(e.target, 'e-gridheader'))) && e.touches) {\n return;\n }\n if (parentsUntil(e.target, 'e-gridheader') && this.allowRowDragAndDrop) {\n e.preventDefault();\n }\n let args = this.getRowInfo(e.target);\n let cancel = 'cancel';\n args[cancel] = false;\n let isDataRow = false;\n let tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n let rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n isDataRow = rowObj ? rowObj.isDataRow : false;\n }\n if (isBlazor()) {\n let clonedColumn = extend({}, args.column);\n args = { rowData: args.rowData, rowIndex: args.rowIndex,\n cellIndex: args.cellIndex, column: clonedColumn };\n }\n if (isDataRow) {\n this.trigger(recordClick, args);\n }\n this.notify(click, e);\n }\n checkEdit(e) {\n let tr = parentsUntil(e.target, 'e-row');\n let isEdit = this.editSettings.mode !== 'Batch' &&\n this.isEdit && tr && (tr.classList.contains('e-editedrow') || tr.classList.contains('e-addedrow'));\n return !parentsUntil(e.target, 'e-unboundcelldiv') && (isEdit || (parentsUntil(e.target, 'e-rowcell') &&\n parentsUntil(e.target, 'e-rowcell').classList.contains('e-editedbatchcell')));\n }\n dblClickHandler(e) {\n let grid = parentsUntil(e.target, 'e-grid');\n if (isNullOrUndefined(grid) || grid.id !== this.element.id || closest(e.target, '.e-unboundcelldiv')) {\n return;\n }\n let dataRow = false;\n let tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n let rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n dataRow = rowObj ? rowObj.isDataRow : false;\n }\n let args = this.getRowInfo(e.target);\n args.target = e.target;\n if (dataRow) {\n this.trigger(recordDoubleClick, args);\n }\n this.notify(dblclick, e);\n }\n focusOutHandler(e) {\n if (this.isChildGrid(e)) {\n return;\n }\n if (!parentsUntil(e.target, 'e-grid')) {\n this.element.querySelector('.e-gridpopup').style.display = 'None';\n }\n let filterClear = this.element.querySelector('.e-cancel:not(.e-hide)');\n if (filterClear) {\n filterClear.classList.add('e-hide');\n }\n let relatedTarget = e.relatedTarget;\n let ariaOwns = relatedTarget ? relatedTarget.getAttribute('aria-owns') : null;\n if ((!relatedTarget || (!parentsUntil(relatedTarget, 'e-grid') &&\n (!isNullOrUndefined(ariaOwns) &&\n (ariaOwns)) !== e.target.getAttribute('aria-owns')))\n && !this.keyPress && this.isEdit && !Browser.isDevice) {\n if (this.editSettings.mode === 'Batch') {\n this.editModule.saveCell();\n this.notify(editNextValCell, {});\n }\n if (this.editSettings.mode === 'Normal') {\n this.editModule.editFormValidate();\n }\n }\n this.keyPress = false;\n }\n isChildGrid(e) {\n let gridElement = parentsUntil(e.target, 'e-grid');\n if (gridElement && gridElement.id !== this.element.id) {\n return true;\n }\n return false;\n }\n /**\n * @hidden\n */\n mergePersistGridData(persistedData) {\n let data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n let dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n if (this.enableVirtualization) {\n dataObj.pageSettings.currentPage = 1;\n }\n let keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (let key of keys) {\n if ((typeof this[key] === 'object') && !isNullOrUndefined(this[key])) {\n if (Array.isArray(this[key]) && key === 'columns') {\n if (!(isBlazor() && this.isServerRendered)) {\n setColumnIndex(this[key]);\n }\n this.mergeColumns(dataObj[key], this[key]);\n this[key] = dataObj[key];\n }\n else {\n extend(this[key], dataObj[key]);\n }\n }\n else {\n this[key] = dataObj[key];\n }\n }\n this.isProtectedOnChange = false;\n }\n }\n mergeColumns(storedColumn, columns) {\n let storedColumns = storedColumn;\n for (let i = 0; i < storedColumns.length; i++) {\n let localCol = columns.filter((tCol) => tCol.index === storedColumns[i].index)[0];\n if (!isNullOrUndefined(localCol)) {\n if (localCol.columns && localCol.columns.length) {\n this.mergeColumns(storedColumns[i].columns, localCol.columns);\n storedColumns[i] = extend(localCol, storedColumns[i], {}, true);\n }\n else {\n if (isBlazor()) {\n let guid = 'guid';\n storedColumns[i][guid] = localCol[guid];\n storedColumns[i].uid = localCol.uid;\n }\n storedColumns[i] = extend(localCol, storedColumns[i], {}, true);\n }\n }\n }\n }\n /**\n * @hidden\n */\n isDetail() {\n return !isNullOrUndefined(this.detailTemplate) || !isNullOrUndefined(this.childGrid);\n }\n isCommandColumn(columns) {\n return columns.some((col) => {\n if (col.columns) {\n return this.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n }\n isForeignKeyEnabled(columns) {\n return columns.some((col) => {\n if (col.columns) {\n return this.isForeignKeyEnabled(col.columns);\n }\n return !!(col.dataSource && col.foreignKeyValue);\n });\n }\n keyPressHandler(e) {\n let presskey = extend(e, { cancel: false, });\n this.trigger(\"keyPressed\", presskey);\n if (presskey.cancel === true) {\n e.stopImmediatePropagation();\n }\n }\n keyDownHandler(e) {\n if (e.altKey) {\n if (e.keyCode === 74) { //alt j\n this.focusModule.focusHeader();\n this.focusModule.addOutline();\n }\n if (e.keyCode === 87) { //alt w\n this.focusModule.focusContent();\n this.focusModule.addOutline();\n }\n }\n }\n keyActionHandler(e) {\n this.keyPress = e.action !== 'space';\n if (this.isChildGrid(e) ||\n (this.isEdit && e.action !== 'escape' && e.action !== 'enter' && e.action !== 'shiftEnter'\n && e.action !== 'tab' && e.action !== 'shiftTab')) {\n return;\n }\n if (this.allowKeyboard) {\n if (e.action === 'ctrlPlusP') {\n e.preventDefault();\n this.print();\n }\n this.notify(keyPressed, e);\n }\n }\n /**\n * @hidden\n */\n setInjectedModules(modules) {\n this.injectedModules = modules;\n }\n updateColumnObject() {\n prepareColumns(this.columns, this.enableColumnVirtualization);\n if (!(isBlazor() && this.isServerRendered)) {\n setColumnIndex(this.columns);\n }\n this.initForeignColumn();\n this.notify(autoCol, {});\n }\n /**\n * Gets the foreign columns from Grid.\n * @return {Column[]}\n * @blazorType List\n */\n getForeignKeyColumns() {\n return this.getColumns().filter((col) => {\n return col.isForeignColumn();\n });\n }\n /**\n * @hidden\n */\n getRowHeight() {\n return this.rowHeight ? this.rowHeight : getRowHeight(this.element);\n }\n /**\n * Refreshes the Grid column changes.\n */\n refreshColumns() {\n let fCnt = this.getContent().querySelector('.e-frozencontent');\n if ((this.getFrozenColumns() === 1 && !fCnt) || (this.getFrozenColumns() === 0 && fCnt)) {\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.freezeRefresh();\n }\n else {\n this.isPreventScrollEvent = true;\n this.updateColumnObject();\n this.checkLockColumns(this.getColumns());\n this.refresh();\n if (this.getFrozenColumns()) {\n let mTbl = this.contentModule.getMovableContent().querySelector('.e-table');\n remove(mTbl.querySelector('colgroup'));\n let colGroup = ((this.getHeaderContent()\n .querySelector('.e-movableheader').querySelector('colgroup')).cloneNode(true));\n mTbl.insertBefore(colGroup, mTbl.querySelector('tbody'));\n }\n }\n if (this.getFrozenColumns()) {\n this.headerModule.getMovableHeader().scrollLeft = this.contentModule.getMovableContent().scrollLeft;\n }\n }\n /**\n * Export Grid data to Excel file(.xlsx).\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @return {Promise}\n * @blazorType void\n */\n excelExport(excelExportProperties, isMultipleExport, \n /* tslint:disable-next-line:no-any */\n workbook, isBlob) {\n if (isBlazor()) {\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, false, isBlob);\n return null;\n }\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n }\n /**\n * Export Grid data to CSV file.\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @return {Promise}\n * @blazorType void\n */\n csvExport(excelExportProperties, \n /* tslint:disable-next-line:no-any */\n isMultipleExport, workbook, isBlob) {\n if (isBlazor()) {\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, true, isBlob);\n return null;\n }\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, true, isBlob) : null;\n }\n /**\n * Export Grid data to PDF document.\n * @param {pdfExportProperties} PdfExportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Define to enable multiple export.\n * @param {pdfDoc} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @return {Promise}\n * @blazorType void\n */\n pdfExport(pdfExportProperties, \n /* tslint:disable-next-line:no-any */\n isMultipleExport, pdfDoc, isBlob) {\n if (isBlazor()) {\n this.pdfExportModule.Map(this, pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n return null;\n }\n return this.pdfExportModule ? this.pdfExportModule.Map(this, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) : null;\n }\n /**\n * Groups a column by column name.\n * @param {string} columnName - Defines the column name to group.\n * @return {void}\n */\n groupColumn(columnName) {\n if (this.groupModule) {\n this.groupModule.groupColumn(columnName);\n }\n }\n /**\n * Expands all the grouped rows of the Grid.\n * @return {void}\n */\n groupExpandAll() {\n if (this.groupModule) {\n this.groupModule.expandAll();\n }\n }\n /**\n * Collapses all the grouped rows of the Grid.\n * @return {void}\n */\n groupCollapseAll() {\n if (this.groupModule) {\n this.groupModule.collapseAll();\n }\n }\n /**\n * Expands or collapses grouped rows by target element.\n * @param {Element} target - Defines the target element of the grouped row.\n * @return {void}\n */\n // public expandCollapseRows(target: Element): void {\n // if (this.groupModule) {\n // this.groupModule.expandCollapseRows(target);\n // }\n // }\n /**\n * Clears all the grouped columns of the Grid.\n * @return {void}\n */\n clearGrouping() {\n if (this.groupModule) {\n this.groupModule.clearGrouping();\n }\n }\n /**\n * Ungroups a column by column name.\n * @param {string} columnName - Defines the column name to ungroup.\n * @return {void}\n */\n ungroupColumn(columnName) {\n if (this.groupModule) {\n this.groupModule.ungroupColumn(columnName);\n }\n }\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n * @param {number} X - Defines the X axis.\n * @param {number} Y - Defines the Y axis.\n * @return {void}\n */\n openColumnChooser(x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\n }\n }\n scrollRefresh() {\n let refresh = () => {\n this.scrollModule.refresh();\n this.off(contentReady, refresh);\n };\n this.on(contentReady, refresh, this);\n }\n /**\n * Collapses a detail row with the given target.\n * @param {Element} target - Defines the expanded element to collapse.\n * @return {void}\n */\n // public detailCollapse(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.collapse(target);\n // }\n // }\n /**\n * Collapses all the detail rows of the Grid.\n * @return {void}\n */\n detailCollapseAll() {\n if (this.detailRowModule) {\n this.detailRowModule.collapseAll();\n }\n }\n /**\n * Expands a detail row with the given target.\n * @param {Element} target - Defines the collapsed element to expand.\n * @return {void}\n */\n // public detailExpand(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.expand(target);\n // }\n // }\n /**\n * Expands all the detail rows of the Grid.\n * @return {void}\n */\n detailExpandAll() {\n if (this.detailRowModule) {\n this.detailRowModule.expandAll();\n }\n }\n /**\n * Deselects the currently selected cells.\n * @return {void}\n */\n clearCellSelection() {\n if (this.selectionModule) {\n this.selectionModule.clearCellSelection();\n }\n }\n /**\n * Deselects the currently selected rows.\n * @return {void}\n */\n clearRowSelection() {\n if (this.selectionModule) {\n this.selectionModule.clearRowSelection();\n }\n }\n /**\n * Selects a collection of cells by row and column indexes.\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @return {void}\n */\n selectCells(rowCellIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectCells(rowCellIndexes);\n }\n }\n /**\n * Selects a range of rows from start and end row indexes.\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n * @return {void}\n */\n selectRowsByRange(startIndex, endIndex) {\n if (this.selectionModule) {\n this.selectionModule.selectRowsByRange(startIndex, endIndex);\n }\n }\n /**\n * @hidden\n */\n isContextMenuOpen() {\n return this.contextMenuModule && this.contextMenuModule.isOpen;\n }\n /**\n * @hidden\n */\n ensureModuleInjected(module) {\n return this.getInjectedModules().indexOf(module) >= 0;\n }\n /**\n * Destroys the given template reference.\n * @param {string[]} propertyNames - Defines the collection of template name.\n */\n //tslint:disable-next-line:no-any\n destroyTemplate(propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n }\n /**\n * @hidden\n * @private\n */\n log(type, args) {\n this.loggerModule ? this.loggerModule.log(type, args) : (() => 0)();\n }\n /**\n * @hidden\n */\n applyBiggerTheme(element) {\n if (this.element.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n }\n /**\n * @hidden\n */\n getPreviousRowData() {\n let previousRowData = this.getRowsObject()[this.getRows().length - 1].data;\n return previousRowData;\n }\n /**\n * Hides the scrollbar placeholder of Grid content when grid content is not overflown.\n * @return {void}\n */\n hideScroll() {\n let content = this.getContent().querySelector('.e-content');\n let cTable = content.querySelector('.e-movablecontent') ? content.querySelector('.e-movablecontent') : content;\n let fTable = content.querySelector('.e-frozencontent') ? content.querySelector('.e-frozencontent') : content;\n if (cTable.scrollHeight <= cTable.clientHeight && fTable.scrollHeight <= fTable.clientHeight) {\n this.scrollModule.removePadding();\n cTable.style.overflowY = 'auto';\n }\n if (this.frozenColumns && cTable.scrollWidth <= cTable.clientWidth) {\n cTable.style.overflowX = 'auto';\n cTable.style.overflowY = 'auto';\n this.notify(frozenHeight, 0);\n }\n }\n /**\n * Get row index by primary key or row data.\n * @param {string} value - Defines the primary key value.\n * @param {Object} value - Defines the row data.\n */\n getRowIndexByPrimaryKey(value) {\n let pkName = this.getPrimaryKeyFieldNames()[0];\n value = typeof value === 'object' ? value[pkName] : value;\n for (let i = 0; i < this.getRowsObject().length; i++) {\n if (this.getRowsObject()[i].data[pkName] === value) {\n return this.getRowsObject()[i].index;\n }\n }\n return -1;\n }\n ;\n /**\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n grabColumnByFieldFromAllCols(field) {\n let column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n let gCols = this.columnModel;\n for (let i = 0; i < gCols.length; i++) {\n if (field === gCols[i].field) {\n column = gCols[i];\n }\n }\n return column;\n }\n /**\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n grabColumnByUidFromAllCols(uid) {\n let column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n let gCols = this.columnModel;\n for (let i = 0; i < gCols.length; i++) {\n if (uid === gCols[i].uid) {\n column = gCols[i];\n }\n }\n return column;\n }\n /**\n * Get all filtered records from the Grid and it returns array of objects for the local dataSource, returns a promise object if the Grid has remote data.\n * @return {Object[] | Promise}\n * @deprecated\n */\n getFilteredRecords() {\n if (this.allowFiltering && this.filterSettings.columns.length) {\n let query = this.renderModule.data.generateQuery(true);\n if (this.dataSource && this.renderModule.data.isRemote() && this.dataSource instanceof DataManager) {\n return this.renderModule.data.getData(this.dataSource, query);\n }\n else {\n if (this.dataSource instanceof DataManager) {\n return this.dataSource.executeLocal(query);\n }\n else {\n return new DataManager(this.dataSource, query).executeLocal(query);\n }\n }\n }\n return [];\n }\n getUserAgent() {\n let userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad/.test(userAgent);\n }\n /**\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n tapEvent(e) {\n if (this.getUserAgent()) {\n if (!Global.timer) {\n Global.timer = setTimeout(() => {\n Global.timer = null;\n }, 300);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.dblClickHandler(e);\n this.notify(doubleTap, e);\n }\n }\n }\n /**\n * @hidden\n */\n getRowUid(prefix) {\n return `${prefix}${this.rowUid++}`;\n }\n /**\n * @hidden\n */\n getMovableVirtualContent() {\n return this.getContent().querySelector('.e-movablecontent');\n }\n /**\n * @hidden\n */\n getFrozenVirtualContent() {\n return this.getContent().querySelector('.e-frozencontent');\n }\n /**\n * @hidden\n */\n getMovableVirtualHeader() {\n return this.getHeaderContent().querySelector('.e-movableheader');\n }\n /**\n * @hidden\n */\n getFrozenVirtualHeader() {\n return this.getHeaderContent().querySelector('.e-frozenheader');\n }\n /**\n * @hidden\n */\n getRowElementByUID(uid) {\n let rowEle;\n let rows = [];\n if (this.getFrozenColumns()) {\n let fRows = [].slice.call(this.getFrozenVirtualContent().querySelector('tbody').children);\n let mRows = [].slice.call(this.getMovableVirtualContent().querySelector('tbody').children);\n if (this.frozenRows) {\n rows = [].slice.call(this.getFrozenVirtualHeader().querySelector('tbody').children);\n rows = rows.concat([].slice.call(this.getMovableVirtualHeader().querySelector('tbody').children));\n rows = rows.concat(fRows).concat(mRows);\n }\n else {\n rows = fRows.concat(mRows);\n }\n }\n else {\n let cntRows = [].slice.call(this.getContent().querySelector('tbody').children);\n if (this.frozenRows) {\n rows = [].slice.call(this.getHeaderContent().querySelector('tbody').children);\n rows = rows.concat(cntRows);\n }\n else {\n rows = cntRows;\n }\n }\n for (let row of rows) {\n if (row.getAttribute('data-uid') === uid) {\n rowEle = row;\n break;\n }\n }\n return rowEle;\n }\n /**\n * Gets the hidden columns from the Grid.\n * @return {Column[]}\n * @blazorType List\n */\n getHiddenColumns() {\n let cols = [];\n for (let col of this.columnModel) {\n if (col.visible === false) {\n cols.push(col);\n }\n }\n return cols;\n }\n /**\n * calculatePageSizeByParentHeight\n * @deprecated\n */\n calculatePageSizeByParentHeight(containerHeight) {\n if (this.allowPaging) {\n if ((this.allowTextWrap && this.textWrapSettings.wrapMode == 'Header') || (!this.allowTextWrap)) {\n var pagesize = 0;\n if (containerHeight.indexOf('%') != -1) {\n containerHeight = parseInt(containerHeight) / 100 * this.element.clientHeight;\n }\n var nonContentHeight = this.getNoncontentHeight() + this.getRowHeight();\n if (containerHeight > nonContentHeight) {\n var contentHeight = 0;\n contentHeight = containerHeight - this.getNoncontentHeight();\n pagesize = (contentHeight / this.getRowHeight());\n }\n if (pagesize > 0) {\n return Math.floor(pagesize);\n }\n }\n }\n return 0;\n }\n getNoncontentHeight() {\n var height = 0;\n if (!isNullOrUndefined(this.getHeaderContent().clientHeight)) {\n height += this.getHeaderContent().clientHeight;\n }\n if (this.toolbar && !isNullOrUndefined(this.element.querySelector('.e-toolbar').clientHeight)) {\n height += this.element.querySelector('.e-toolbar').clientHeight;\n }\n if (this.allowPaging && !isNullOrUndefined(this.element.querySelector('.e-gridpager').clientHeight)) {\n height += this.element.querySelector('.e-gridpager').clientHeight;\n }\n if (this.showColumnChooser && !isNullOrUndefined(this.element.querySelector(\".e-columnheader\").clientHeight)) {\n height += this.element.querySelector(\".e-columnheader\").clientHeight;\n }\n if (this.allowGrouping && this.groupSettings.showDropArea && !isNullOrUndefined(this.element.querySelector('.e-groupdroparea').clientHeight)) {\n height += this.element.querySelector('.e-groupdroparea').clientHeight;\n }\n if (this.aggregates.length > 0 && !isNullOrUndefined(this.element.querySelector('.e-summaryrow').clientHeight)) {\n for (let i = 0; i < this.element.querySelectorAll('.e-summaryrow').length; i++) {\n height += this.element.querySelectorAll('.e-summaryrow')[i].clientHeight;\n }\n }\n return height;\n }\n /**\n *To perform aggregate operation on a column.\n *@param {AggregateColumnModel} summaryCol - Pass Aggregate Column details.\n *@param {Object} summaryData - Pass JSON Array for which its field values to be calculated.\n *\n * @deprecated\n */\n getSummaryValues(summaryCol, summaryData) {\n return DataUtil.aggregates[summaryCol.type.toLowerCase()](summaryData, summaryCol.field);\n }\n /**\n * @hidden\n */\n isCollapseStateEnabled() {\n let isExpanded = 'isExpanded';\n return this[isExpanded] === false;\n }\n /**\n * @param {number} key - Defines the primary key value.\n * @param {Object} value - Defines the row data.\n * @deprecated\n */\n updateRowValue(key, rowData) {\n let args = {\n requestType: 'save', data: rowData,\n };\n this.showSpinner();\n this.notify(updateData, args);\n this.refresh();\n }\n /**\n * @hidden\n */\n setForeignKeyData() {\n this.dataBind();\n let colpending = this.getDataModule().getForeignKeyDataState();\n if (colpending.isPending) {\n this.getDataModule().setForeignKeyDataState({});\n colpending.resolver();\n }\n else {\n this.getDataModule().setForeignKeyDataState({ isDataChanged: false });\n if (this.contentModule || this.headerModule) {\n this.renderModule.render();\n }\n }\n }\n /**\n * @hidden\n */\n resetFilterDlgPosition(field) {\n let header = this.getColumnHeaderByField(field);\n if (header) {\n let target = header.querySelector('.e-filtermenudiv');\n let filterDlg = this.element.querySelector('.e-filter-popup');\n if (target && filterDlg) {\n let gClient = this.element.getBoundingClientRect();\n let fClient = target.getBoundingClientRect();\n if (filterDlg) {\n filterDlg.style.left = (fClient.right - gClient.left).toString() + 'px';\n }\n }\n }\n }\n};\n__decorate$1([\n Property()\n], Grid.prototype, \"parentDetails\", void 0);\n__decorate$1([\n Property([])\n], Grid.prototype, \"columns\", void 0);\n__decorate$1([\n Property(true)\n], Grid.prototype, \"enableAltRow\", void 0);\n__decorate$1([\n Property(true)\n], Grid.prototype, \"enableHover\", void 0);\n__decorate$1([\n Property(false)\n], Grid.prototype, \"enableAutoFill\", void 0);\n__decorate$1([\n Property(true)\n], Grid.prototype, \"allowKeyboard\", void 0);\n__decorate$1([\n Property(false)\n], Grid.prototype, \"allowTextWrap\", void 0);\n__decorate$1([\n Complex({}, TextWrapSettings)\n], Grid.prototype, \"textWrapSettings\", void 0);\n__decorate$1([\n Property(false)\n], Grid.prototype, \"allowPaging\", void 0);\n__decorate$1([\n Complex({}, PageSettings)\n], Grid.prototype, \"pageSettings\", void 0);\n__decorate$1([\n Property(false)\n], Grid.prototype, \"enableVirtualization\", void 0);\n__decorate$1([\n Property(false)\n], Grid.prototype, \"enableColumnVirtualization\", void 0);\n__decorate$1([\n Property(false)\n], Grid.prototype, \"enableInfiniteScrolling\", void 0);\n__decorate$1([\n Complex({}, SearchSettings)\n], Grid.prototype, \"searchSettings\", void 0);\n__decorate$1([\n Property(false)\n], Grid.prototype, \"allowSorting\", void 0);\n__decorate$1([\n Property('Ellipsis')\n], Grid.prototype, \"clipMode\", void 0);\n__decorate$1([\n Property(true)\n], Grid.prototype, \"allowMultiSorting\", void 0);\n__decorate$1([\n Property(false)\n], Grid.prototype, \"allowExcelExport\", void 0);\n__decorate$1([\n Property(false)\n], Grid.prototype, \"allowPdfExport\", void 0);\n__decorate$1([\n Complex({}, SortSettings)\n], Grid.prototype, \"sortSettings\", void 0);\n__decorate$1([\n Complex({}, InfiniteScrollSettings)\n], Grid.prototype, \"infiniteScrollSettings\", void 0);\n__decorate$1([\n Property(true)\n], Grid.prototype, \"allowSelection\", void 0);\n__decorate$1([\n Property(-1)\n], Grid.prototype, \"selectedRowIndex\", void 0);\n__decorate$1([\n Complex({}, SelectionSettings)\n], Grid.prototype, \"selectionSettings\", void 0);\n__decorate$1([\n Property(false)\n], Grid.prototype, \"allowFiltering\", void 0);\n__decorate$1([\n Property(false)\n], Grid.prototype, \"allowReordering\", void 0);\n__decorate$1([\n Property(false)\n], Grid.prototype, \"allowResizing\", void 0);\n__decorate$1([\n Property(false)\n], Grid.prototype, \"allowRowDragAndDrop\", void 0);\n__decorate$1([\n Complex({}, RowDropSettings)\n], Grid.prototype, \"rowDropSettings\", void 0);\n__decorate$1([\n Complex({}, FilterSettings)\n], Grid.prototype, \"filterSettings\", void 0);\n__decorate$1([\n Property(false)\n], Grid.prototype, \"allowGrouping\", void 0);\n__decorate$1([\n Property(false)\n], Grid.prototype, \"showColumnMenu\", void 0);\n__decorate$1([\n Complex({}, GroupSettings)\n], Grid.prototype, \"groupSettings\", void 0);\n__decorate$1([\n Complex({}, EditSettings)\n], Grid.prototype, \"editSettings\", void 0);\n__decorate$1([\n Collection([], AggregateRow)\n], Grid.prototype, \"aggregates\", void 0);\n__decorate$1([\n Property(false)\n], Grid.prototype, \"showColumnChooser\", void 0);\n__decorate$1([\n Complex({}, ColumnChooserSettings)\n], Grid.prototype, \"columnChooserSettings\", void 0);\n__decorate$1([\n Property(false)\n], Grid.prototype, \"enableHeaderFocus\", void 0);\n__decorate$1([\n Property('auto')\n], Grid.prototype, \"height\", void 0);\n__decorate$1([\n Property('auto')\n], Grid.prototype, \"width\", void 0);\n__decorate$1([\n Property('Default')\n], Grid.prototype, \"gridLines\", void 0);\n__decorate$1([\n Property()\n], Grid.prototype, \"rowTemplate\", void 0);\n__decorate$1([\n Property()\n], Grid.prototype, \"detailTemplate\", void 0);\n__decorate$1([\n Property()\n], Grid.prototype, \"childGrid\", void 0);\n__decorate$1([\n Property()\n], Grid.prototype, \"queryString\", void 0);\n__decorate$1([\n Property('AllPages')\n], Grid.prototype, \"printMode\", void 0);\n__decorate$1([\n Property('Expanded')\n], Grid.prototype, \"hierarchyPrintMode\", void 0);\n__decorate$1([\n Property([])\n], Grid.prototype, \"dataSource\", void 0);\n__decorate$1([\n Property(null)\n], Grid.prototype, \"rowHeight\", void 0);\n__decorate$1([\n Property()\n], Grid.prototype, \"query\", void 0);\n__decorate$1([\n Property('USD')\n], Grid.prototype, \"currencyCode\", void 0);\n__decorate$1([\n Property()\n], Grid.prototype, \"toolbar\", void 0);\n__decorate$1([\n Property()\n], Grid.prototype, \"contextMenuItems\", void 0);\n__decorate$1([\n Property()\n], Grid.prototype, \"columnMenuItems\", void 0);\n__decorate$1([\n Property()\n], Grid.prototype, \"toolbarTemplate\", void 0);\n__decorate$1([\n Property()\n], Grid.prototype, \"pagerTemplate\", void 0);\n__decorate$1([\n Property(0)\n], Grid.prototype, \"frozenRows\", void 0);\n__decorate$1([\n Property(0)\n], Grid.prototype, \"frozenColumns\", void 0);\n__decorate$1([\n Property('All')\n], Grid.prototype, \"columnQueryMode\", void 0);\n__decorate$1([\n Property({})\n], Grid.prototype, \"currentAction\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"created\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"destroyed\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"load\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"rowDataBound\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"queryCellInfo\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"headerCellInfo\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"actionBegin\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"actionComplete\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"actionFailure\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"dataBound\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"recordDoubleClick\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"recordClick\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"rowSelecting\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"rowSelected\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"rowDeselecting\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"rowDeselected\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"cellSelecting\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"cellSelected\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"cellDeselecting\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"cellDeselected\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"columnDragStart\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"columnDrag\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"columnDrop\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"printComplete\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"beforePrint\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"pdfQueryCellInfo\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"pdfAggregateQueryCellInfo\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"excelAggregateQueryCellInfo\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"exportDetailDataBound\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"excelQueryCellInfo\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"beforeExcelExport\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"excelExportComplete\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"beforePdfExport\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"pdfExportComplete\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"rowDragStartHelper\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"detailDataBound\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"rowDragStart\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"rowDrag\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"rowDrop\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"toolbarClick\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"beforeOpenColumnChooser\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"batchAdd\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"batchDelete\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"batchCancel\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"beforeBatchAdd\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"beforeBatchDelete\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"beforeBatchSave\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"beginEdit\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"commandClick\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"cellEdit\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"cellSave\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"cellSaved\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"resizeStart\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"resizing\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"resizeStop\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"keyPressed\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"beforeDataBound\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"contextMenuOpen\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"contextMenuClick\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"columnMenuOpen\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"columnMenuClick\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"checkBoxChange\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"beforeCopy\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"beforePaste\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"beforeAutoFill\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"columnDataStateChange\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"dataStateChange\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"dataSourceChanged\", void 0);\n__decorate$1([\n Event()\n], Grid.prototype, \"exportGroupCaption\", void 0);\nGrid = Grid_1 = __decorate$1([\n NotifyPropertyChanges\n], Grid);\n\n/**\n * @hidden\n */\nfunction getCloneProperties() {\n return ['aggregates', 'allowGrouping', 'allowFiltering', 'allowMultiSorting', 'allowReordering', 'allowSorting',\n 'allowTextWrap', 'childGrid', 'columns', 'currentViewData', 'dataSource', 'detailTemplate', 'enableAltRow',\n 'enableColumnVirtualization', 'filterSettings', 'gridLines',\n 'groupSettings', 'height', 'locale', 'pageSettings', 'printMode', 'query', 'queryString', 'enableRtl',\n 'rowHeight', 'rowTemplate', 'sortSettings', 'textWrapSettings', 'allowPaging', 'hierarchyPrintMode', 'searchSettings',\n 'queryCellInfo', 'beforeDataBound'];\n}\n/**\n *\n * The `Print` module is used to handle print action.\n */\nclass Print {\n /**\n * Constructor for the Grid print module\n * @hidden\n */\n constructor(parent, scrollModule) {\n this.isAsyncPrint = false;\n this.defered = new Deferred();\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(contentReady, this.isContentReady(), this);\n this.parent.addEventListener(actionBegin, this.actionBegin.bind(this));\n this.parent.on(onEmpty, this.onEmpty.bind(this));\n this.parent.on(hierarchyPrint, this.hierarchyPrint, this);\n this.scrollModule = scrollModule;\n }\n isContentReady() {\n if (this.isPrintGrid() && (this.parent.hierarchyPrintMode === 'None' || !this.parent.childGrid)) {\n return this.contentReady;\n }\n return () => {\n this.defered.promise.then(() => {\n this.contentReady();\n });\n if (this.isPrintGrid()) {\n this.hierarchyPrint();\n }\n };\n }\n hierarchyPrint() {\n this.removeColGroup(this.parent);\n let printGridObj = window.printGridObj;\n if (printGridObj && !printGridObj.element.querySelector('[aria-busy=true')) {\n printGridObj.printModule.defered.resolve();\n }\n }\n /**\n * By default, prints all the Grid pages and hides the pager.\n * > You can customize print options using the\n * [`printMode`](grid/#printmode-string/).\n * @return {void}\n */\n print() {\n this.renderPrintGrid();\n this.printWind = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWind.moveTo(0, 0);\n this.printWind.resizeTo(screen.availWidth, screen.availHeight);\n }\n onEmpty() {\n if (this.isPrintGrid()) {\n this.contentReady();\n }\n }\n actionBegin() {\n if (this.isPrintGrid()) {\n this.isAsyncPrint = true;\n }\n }\n renderPrintGrid() {\n let gObj = this.parent;\n let element = createElement('div', {\n id: this.parent.element.id + '_print', className: gObj.element.className + ' e-print-grid'\n });\n document.body.appendChild(element);\n let printGrid = new Grid(getPrintGridModel(gObj, gObj.hierarchyPrintMode));\n /* tslint:disable-next-line:no-any */\n if (this.parent.isAngular) {\n /* tslint:disable-next-line:no-any */\n printGrid.viewContainerRef = this.parent.viewContainerRef;\n }\n /* tslint:disable:no-empty */\n printGrid.load = () => { };\n printGrid.query = gObj.getQuery().clone();\n window.printGridObj = printGrid;\n printGrid.isPrinting = true;\n let modules = printGrid.getInjectedModules();\n let injectedModues = gObj.getInjectedModules();\n if (!modules || modules.length !== injectedModues.length) {\n printGrid.setInjectedModules(injectedModues);\n }\n gObj.notify(printGridInit, { element: element, printgrid: printGrid });\n this.parent.log('exporting_begin', this.getModuleName());\n printGrid.registeredTemplate = this.parent.registeredTemplate;\n printGrid.appendTo(element);\n printGrid.trigger = gObj.trigger;\n }\n contentReady() {\n if (this.isPrintGrid()) {\n let gObj = this.parent;\n if (this.isAsyncPrint) {\n this.printGrid();\n return;\n }\n let args = {\n requestType: 'print',\n element: gObj.element,\n selectedRows: gObj.getContentTable().querySelectorAll('tr[aria-selected=\"true\"]'),\n cancel: false,\n hierarchyPrintMode: gObj.hierarchyPrintMode\n };\n if (!this.isAsyncPrint) {\n gObj.trigger(beforePrint, args);\n }\n if (args.cancel) {\n detach(gObj.element);\n return;\n }\n if (!this.isAsyncPrint) {\n this.printGrid();\n }\n }\n }\n printGrid() {\n let gObj = this.parent;\n // Height adjustment on print grid\n if (gObj.height !== 'auto') { // if scroller enabled\n let cssProps = this.scrollModule.getCssProperties();\n let contentDiv = gObj.element.querySelector('.e-content');\n let headerDiv = gObj.element.querySelector('.e-gridheader');\n contentDiv.style.height = 'auto';\n contentDiv.style.overflowY = 'auto';\n headerDiv.style[cssProps.padding] = '';\n headerDiv.firstElementChild.style[cssProps.border] = '';\n }\n // Grid alignment adjustment on grouping\n if (gObj.allowGrouping) {\n if (!gObj.groupSettings.columns.length) {\n gObj.element.querySelector('.e-groupdroparea').style.display = 'none';\n }\n else {\n this.removeColGroup(gObj);\n }\n }\n // hide horizontal scroll\n for (let element of [].slice.call(gObj.element.querySelectorAll('.e-content'))) {\n element.style.overflowX = 'hidden';\n }\n // Hide the waiting popup\n let waitingPop = gObj.element.querySelectorAll('.e-spin-show');\n for (let element of [].slice.call(waitingPop)) {\n classList(element, ['e-spin-hide'], ['e-spin-show']);\n }\n this.printGridElement(gObj);\n gObj.isPrinting = false;\n delete window.printGridObj;\n let args = {\n element: gObj.element\n };\n gObj.trigger(printComplete, args);\n this.parent.log('exporting_complete', this.getModuleName());\n }\n printGridElement(gObj) {\n classList(gObj.element, ['e-print-grid-layout'], ['e-print-grid']);\n if (gObj.isPrinting) {\n detach(gObj.element);\n }\n this.printWind = print(gObj.element, this.printWind);\n }\n removeColGroup(gObj) {\n let depth = gObj.groupSettings.columns.length;\n let element = gObj.element;\n let id = '#' + gObj.element.id;\n if (!depth) {\n return;\n }\n let groupCaption = element.querySelectorAll(`${id}captioncell.e-groupcaption`);\n let colSpan = groupCaption[depth - 1].getAttribute('colspan');\n for (let i = 0; i < groupCaption.length; i++) {\n groupCaption[i].setAttribute('colspan', colSpan);\n }\n let colGroups = element.querySelectorAll(`colgroup${id}colGroup`);\n let contentColGroups = element.querySelector('.e-content').querySelectorAll('colgroup');\n this.hideColGroup(colGroups, depth);\n this.hideColGroup(contentColGroups, depth);\n }\n hideColGroup(colGroups, depth) {\n for (let i = 0; i < colGroups.length; i++) {\n for (let j = 0; j < depth; j++) {\n colGroups[i].children[j].style.display = 'none';\n }\n }\n }\n /**\n * To destroy the print\n * @hidden\n */\n isPrintGrid() {\n return this.parent.element.id.indexOf('_print') > 0 && this.parent.isPrinting;\n }\n /**\n * To destroy the print\n * @return {void}\n * @hidden\n */\n destroy() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(contentReady, this.contentReady.bind(this));\n this.parent.removeEventListener(actionBegin, this.actionBegin.bind(this));\n this.parent.off(onEmpty, this.onEmpty.bind(this));\n this.parent.off(hierarchyPrint, this.hierarchyPrint);\n }\n /**\n * For internal use only - Get the module name.\n * @private\n */\n getModuleName() {\n return 'print';\n }\n}\nPrint.printGridProp = [...getCloneProperties(), beforePrint, printComplete, load];\n\n//https://typescript.codeplex.com/discussions/401501\n/**\n * Function to check whether target object implement specific interface\n * @param {Object} target\n * @param {string} checkFor\n * @returns no\n * @hidden\n */\nfunction doesImplementInterface(target, checkFor) {\n /* tslint:disable:no-any */\n return target.prototype && checkFor in target.prototype;\n}\n/**\n * Function to get value from provided data\n * @param {string} field\n * @param {Object} data\n * @param {IColumn} column\n * @hidden\n */\nfunction valueAccessor(field, data, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, data);\n}\n/**\n * Defines the method used to apply custom header cell values from external function and display this on each header cell rendered.\n * @param {string} field\n * @param {IColumn} column\n * @hidden\n */\nfunction headerValueAccessor(field, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, column);\n}\n/**\n * The function used to update Dom using requestAnimationFrame.\n * @param {Function} fn - Function that contains the actual action\n * @return {Promise}\n * @hidden\n */\nfunction getUpdateUsingRaf(updateFunction, callBack) {\n requestAnimationFrame(() => {\n try {\n callBack(null, updateFunction());\n }\n catch (e) {\n callBack(e);\n }\n });\n}\n/**\n * @hidden\n */\nfunction isExportColumns(exportProperties) {\n return !isNullOrUndefined(exportProperties) &&\n !isNullOrUndefined(exportProperties.columns) && exportProperties.columns.length > 0;\n}\n/**\n * @hidden\n */\nfunction updateColumnTypeForExportColumns(exportProperties, gObj) {\n let exportColumns = exportProperties.columns;\n let gridColumns = gObj.columns;\n for (let i = 0; i < exportColumns.length; i++) {\n if (gridColumns.length - 1 >= i) {\n if (gridColumns[i].columns) {\n for (let j = 0; j < gridColumns[i].columns.length; j++) {\n exportColumns[i].columns[j].type = gridColumns[i].columns[j].type;\n }\n }\n else {\n exportColumns[i].type = gridColumns[i].type;\n }\n }\n }\n}\n/**\n * @hidden\n */\nfunction updatecloneRow(grid) {\n let nRows = [];\n let actualRows = grid.vRows;\n for (let i = 0; i < actualRows.length; i++) {\n if (actualRows[i].isDataRow) {\n nRows.push(actualRows[i]);\n }\n else if (!actualRows[i].isDataRow) {\n nRows.push(actualRows[i]);\n if (!actualRows[i].isExpand && actualRows[i].isCaptionRow) {\n i += getCollapsedRowsCount(actualRows[i], grid);\n }\n }\n }\n grid.vcRows = nRows;\n}\n/**\n * @hidden\n */\nlet count = 0;\nfunction getCollapsedRowsCount(val, grid) {\n count = 0;\n let gSummary = 'gSummary';\n let total = 'count';\n let gLen = grid.groupSettings.columns.length;\n let records = 'records';\n let items = 'items';\n let value = val[gSummary];\n let dataRowCnt = 0;\n let agrCnt = 'aggregatesCount';\n if (value === val.data[total]) {\n if (grid.groupSettings.columns.length && !isNullOrUndefined(val[agrCnt]) && val[agrCnt]) {\n if (grid.groupSettings.columns.length !== 1) {\n count += (val.indent !== 0 && (value) < 2) ? (val[gSummary] * ((gLen - val.indent) + (gLen - val.indent) * val[agrCnt])) :\n (val[gSummary] * ((gLen - val.indent) + (gLen - val.indent - 1) * val[agrCnt])) + val[agrCnt];\n }\n else if (grid.groupSettings.columns.length === 1) {\n count += (val[gSummary] * (gLen - val.indent)) + val[agrCnt];\n }\n }\n else if (grid.groupSettings.columns.length) {\n if (grid.groupSettings.columns.length !== 1) {\n count += val[gSummary] * (grid.groupSettings.columns.length - val.indent);\n }\n else {\n count += val[gSummary];\n }\n }\n return count;\n }\n else {\n for (let i = 0, len = val.data[items].length; i < len; i++) {\n let gLevel = val.data[items][i];\n count += gLevel[items].length + ((gLen !== grid.columns.length) &&\n !isNullOrUndefined(gLevel[items][records]) ? gLevel[items][records].length : 0);\n dataRowCnt += (!isNullOrUndefined(gLevel[items][records]) && !isNullOrUndefined(val[agrCnt])) ? gLevel[items][records].length :\n gLevel[items].length;\n if (gLevel[items].GroupGuid && gLevel[items].childLevels !== 0) {\n recursive(gLevel);\n }\n }\n count += val.data[items].length;\n if (!isNullOrUndefined(val[agrCnt])) {\n if (val[agrCnt] && count && dataRowCnt !== 0) {\n count += ((count - dataRowCnt) * val[agrCnt]) + val[agrCnt];\n }\n }\n }\n return count;\n}\n/**\n * @hidden\n */\nfunction recursive(row) {\n let items = 'items';\n let rCount = 'count';\n for (let j = 0, length = row[items].length; j < length; j++) {\n let nLevel = row[items][j];\n count += nLevel[rCount];\n if (nLevel[items].childLevels !== 0) {\n recursive(nLevel);\n }\n }\n}\n/**\n * @hidden\n */\nfunction iterateArrayOrObject(collection, predicate) {\n let result = [];\n for (let i = 0, len = collection.length; i < len; i++) {\n let pred = predicate(collection[i], i);\n if (!isNullOrUndefined(pred)) {\n result.push(pred);\n }\n }\n return result;\n}\n/** @hidden */\nfunction iterateExtend(array) {\n let obj = [];\n for (let i = 0; i < array.length; i++) {\n obj.push(extend({}, getActualProperties(array[i]), {}, true));\n }\n return obj;\n}\n/** @hidden */\nfunction templateCompiler(template) {\n if (template) {\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return undefined;\n}\n/** @hidden */\nfunction setStyleAndAttributes(node, customAttributes) {\n let copyAttr = {};\n let literals = ['style', 'class'];\n //Dont touch the original object - make a copy\n extend(copyAttr, customAttributes, {});\n if ('style' in copyAttr) {\n setStyleAttribute(node, copyAttr[literals[0]]);\n delete copyAttr[literals[0]];\n }\n if ('class' in copyAttr) {\n addClass([node], copyAttr[literals[1]]);\n delete copyAttr[literals[1]];\n }\n attributes(node, copyAttr);\n}\n/** @hidden */\nfunction extend$1(copied, first, second, exclude) {\n let moved = extend(copied, first, second);\n let values = Object.keys(moved);\n for (let i = 0; i < values.length; i++) {\n if (exclude && exclude.indexOf(values[i]) !== -1) {\n delete moved[values[i]];\n }\n }\n return moved;\n}\n/** @hidden */\nfunction setColumnIndex(columnModel, ind = 0) {\n for (let i = 0, len = columnModel.length; i < len; i++) {\n if (columnModel[i].columns) {\n columnModel[i].index = isNullOrUndefined(columnModel[i].index) ? ind : columnModel[i].index;\n ind++;\n ind = setColumnIndex(columnModel[i].columns, ind);\n }\n else {\n columnModel[i].index = isNullOrUndefined(columnModel[i].index) ? ind : columnModel[i].index;\n ind++;\n }\n }\n return ind;\n}\n/** @hidden */\nfunction prepareColumns(columns, autoWidth) {\n for (let c = 0, len = columns.length; c < len; c++) {\n let column;\n if (typeof columns[c] === 'string') {\n column = new Column({ field: columns[c] });\n }\n else if (!(columns[c] instanceof Column)) {\n if (!columns[c].columns) {\n column = new Column(columns[c]);\n }\n else {\n columns[c].columns = prepareColumns(columns[c].columns);\n column = new Column(columns[c]);\n }\n }\n else {\n column = columns[c];\n }\n if (column.type && column.type.toLowerCase() === 'checkbox') {\n column.allowReordering = false;\n }\n column.headerText = isNullOrUndefined(column.headerText) ? column.foreignKeyValue || column.field || '' : column.headerText;\n column.foreignKeyField = column.foreignKeyField || column.field;\n column.valueAccessor = (typeof column.valueAccessor === 'string' ? getValue(column.valueAccessor, window)\n : column.valueAccessor) || valueAccessor;\n column.width = autoWidth && isNullOrUndefined(column.width) ? 200 : column.width;\n if (isNullOrUndefined(column.visible)) {\n column.visible = true;\n }\n columns[c] = column;\n }\n return columns;\n}\n/** @hidden */\nfunction setCssInGridPopUp(popUp, e, className) {\n let popUpSpan = popUp.querySelector('span');\n let position = popUp.parentElement.getBoundingClientRect();\n let targetPosition = e.target.getBoundingClientRect();\n let isBottomTail;\n popUpSpan.className = className;\n popUp.style.display = '';\n isBottomTail = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY) > popUp.offsetHeight + 10;\n popUp.style.top = targetPosition.top - position.top +\n (isBottomTail ? -(popUp.offsetHeight + 10) : popUp.offsetHeight + 10) + 'px'; //10px for tail element\n popUp.style.left = getPopupLeftPosition(popUp, e, targetPosition, position.left) + 'px';\n if (isBottomTail) {\n popUp.querySelector('.e-downtail').style.display = '';\n popUp.querySelector('.e-uptail').style.display = 'none';\n }\n else {\n popUp.querySelector('.e-downtail').style.display = 'none';\n popUp.querySelector('.e-uptail').style.display = '';\n }\n}\n/** @hidden */\nfunction getPopupLeftPosition(popup, e, targetPosition, left) {\n let width = popup.offsetWidth / 2;\n let x = getPosition(e).x;\n if (x - targetPosition.left < width) {\n return targetPosition.left - left;\n }\n else if (targetPosition.right - x < width) {\n return targetPosition.right - left - width * 2;\n }\n else {\n return x - left - width;\n }\n}\n/** @hidden */\nfunction getActualProperties(obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n}\n/** @hidden */\nfunction parentsUntil(elem, selector, isID) {\n let parent = elem;\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n break;\n }\n parent = parent.parentElement;\n }\n return parent;\n}\n/** @hidden */\nfunction getElementIndex(element, elements) {\n let index = -1;\n for (let i = 0, len = elements.length; i < len; i++) {\n if (elements[i].isEqualNode(element)) {\n index = i;\n break;\n }\n }\n return index;\n}\n/** @hidden */\nfunction inArray(value, collection) {\n for (let i = 0, len = collection.length; i < len; i++) {\n if (collection[i] === value) {\n return i;\n }\n }\n return -1;\n}\n/** @hidden */\nfunction getActualPropFromColl(collection) {\n let coll = [];\n for (let i = 0, len = collection.length; i < len; i++) {\n if (collection[i].hasOwnProperty('properties')) {\n coll.push(collection[i].properties);\n }\n else {\n coll.push(collection[i]);\n }\n }\n return coll;\n}\n/** @hidden */\nfunction removeElement(target, selector) {\n let elements = [].slice.call(target.querySelectorAll(selector));\n for (let i = 0; i < elements.length; i++) {\n remove(elements[i]);\n }\n}\n/** @hidden */\nfunction getPosition(e) {\n let position = {};\n position.x = (isNullOrUndefined(e.clientX) ? e.changedTouches[0].clientX :\n e.clientX);\n position.y = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY);\n return position;\n}\nlet uid = 0;\n/** @hidden */\nfunction getUid(prefix) {\n return prefix + uid++;\n}\n/** @hidden */\nfunction appendChildren(elem, children) {\n for (let i = 0, len = children.length; i < len; i++) {\n if (len === children.length) {\n elem.appendChild(children[i]);\n }\n else {\n elem.appendChild(children[0]);\n }\n }\n return elem;\n}\n/** @hidden */\nfunction parents(elem, selector, isID) {\n let parent = elem;\n let parents = [];\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\n/** @hidden */\nfunction calculateAggregate(type, data, column, context) {\n if (type === 'Custom') {\n let temp = column.customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n return temp ? temp.call(context, data, column) : '';\n }\n return (column.field in data || data instanceof Array) ? DataUtil.aggregates[type.toLowerCase()](data, column.field) : null;\n}\n/** @hidden */\nlet scrollWidth = null;\n/** @hidden */\nfunction getScrollBarWidth() {\n if (scrollWidth !== null) {\n return scrollWidth;\n }\n let divNode = document.createElement('div');\n let value = 0;\n divNode.style.cssText = 'width:100px;height: 100px;overflow: scroll;position: absolute;top: -9999px;';\n document.body.appendChild(divNode);\n value = (divNode.offsetWidth - divNode.clientWidth) | 0;\n document.body.removeChild(divNode);\n return scrollWidth = value;\n}\n/** @hidden */\nlet rowHeight;\n/** @hidden */\nfunction getRowHeight(element) {\n if (rowHeight !== undefined) {\n return rowHeight;\n }\n let table = createElement('table', { className: 'e-table', styles: 'visibility: hidden' });\n table.innerHTML = 'A';\n element.appendChild(table);\n let rect = table.querySelector('td').getBoundingClientRect();\n element.removeChild(table);\n rowHeight = Math.ceil(rect.height);\n return rowHeight;\n}\n/** @hidden */\nfunction isComplexField(field) {\n return field.split('.').length > 1;\n}\n/** @hidden */\nfunction getComplexFieldID(field = '') {\n return field.replace(/\\./g, '___');\n}\n/** @hidden */\nfunction setComplexFieldID(field = '') {\n return field.replace(/___/g, '.');\n}\n/** @hidden */\nfunction isEditable(col, type, elem) {\n let row = parentsUntil(elem, 'e-row');\n let isOldRow = !row ? true : row && !row.classList.contains('e-insertedrow');\n if (type === 'beginEdit' && isOldRow) {\n if (col.isIdentity || col.isPrimaryKey || !col.allowEditing) {\n return false;\n }\n return true;\n }\n else if (type === 'add' && col.isIdentity) {\n return false;\n }\n else {\n if (isOldRow && !col.allowEditing && !col.isIdentity && !col.isPrimaryKey) {\n return false;\n }\n return true;\n }\n}\n/** @hidden */\nfunction isActionPrevent(inst) {\n let dlg = inst.element.querySelector('#' + inst.element.id + 'EditConfirm');\n return inst.editSettings.mode === 'Batch' &&\n (inst.element.querySelectorAll('.e-updatedtd').length) && inst.editSettings.showConfirmDialog &&\n (dlg ? dlg.classList.contains('e-popup-close') : true);\n}\n/** @hidden */\nfunction wrap(elem, action) {\n let clName = 'e-wrap';\n elem = elem instanceof Array ? elem : [elem];\n for (let i = 0; i < elem.length; i++) {\n action ? elem[i].classList.add(clName) : elem[i].classList.remove(clName);\n }\n}\n/** @hidden */\nfunction setFormatter(serviceLocator, column, isServerRendered) {\n let fmtr = serviceLocator.getService('valueFormatter');\n let format = 'format';\n let args;\n if (column.type === 'date' || column.type === 'datetime') {\n args = { type: column.type, skeleton: column.format };\n if (isBlazor() && isServerRendered) {\n let isServer = 'isServerRendered';\n args[isServer] = isServerRendered;\n }\n if ((typeof (column.format) === 'string') && column.format !== 'yMd') {\n args[format] = column.format;\n }\n }\n switch (column.type) {\n case 'date':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'datetime':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'number':\n column.setFormatter(fmtr.getFormatFunction({ format: column.format }));\n column.setParser(fmtr.getParserFunction({ format: column.format }));\n break;\n }\n}\n/** @hidden */\nfunction addRemoveActiveClasses(cells, add, ...args) {\n for (let i = 0, len = cells.length; i < len; i++) {\n if (add) {\n classList(cells[i], [...args], []);\n cells[i].setAttribute('aria-selected', 'true');\n }\n else {\n classList(cells[i], [], [...args]);\n cells[i].removeAttribute('aria-selected');\n }\n }\n}\n/** @hidden */\nfunction distinctStringValues(result) {\n let temp = {};\n let res = [];\n for (let i = 0; i < result.length; i++) {\n if (!(result[i] in temp)) {\n res.push(result[i].toString());\n temp[result[i]] = 1;\n }\n }\n return res;\n}\n/** @hidden */\nfunction getFilterMenuPostion(target, dialogObj, grid) {\n let elementVisible = dialogObj.element.style.display;\n dialogObj.element.style.display = 'block';\n let dlgWidth = dialogObj.width;\n let newpos;\n if (!grid.enableRtl) {\n newpos = calculateRelativeBasedPosition(target, dialogObj.element);\n dialogObj.element.style.display = elementVisible;\n dialogObj.element.style.top = (newpos.top + target.getBoundingClientRect().height) - 5 + 'px';\n let leftPos = ((newpos.left - dlgWidth) + target.clientWidth);\n if (leftPos < 1) {\n dialogObj.element.style.left = (dlgWidth + leftPos) - 16 + 'px'; // right calculation\n }\n else {\n dialogObj.element.style.left = leftPos + -4 + 'px';\n }\n }\n else {\n newpos = calculatePosition(target, 'left', 'bottom');\n dialogObj.element.style.top = (newpos.top + target.getBoundingClientRect().height) - 35 + 'px';\n dialogObj.element.style.display = elementVisible;\n let leftPos = ((newpos.left - dlgWidth) + target.clientWidth);\n if (leftPos < 1) {\n dialogObj.element.style.left = (dlgWidth + leftPos) + -16 + 'px';\n }\n else {\n dialogObj.element.style.left = leftPos - 16 + 'px';\n }\n }\n}\n/** @hidden */\nfunction getZIndexCalcualtion(args, dialogObj) {\n args.popup.element.style.zIndex = (dialogObj.zIndex + 1).toString();\n}\n/** @hidden */\nfunction toogleCheckbox(elem) {\n let span = elem.querySelector('.e-frame');\n span.classList.contains('e-check') ? classList(span, ['e-uncheck'], ['e-check']) :\n classList(span, ['e-check'], ['e-uncheck']);\n}\n/** @hidden */\nfunction createCboxWithWrap(uid, elem, className) {\n let div = createElement('div', { className: className });\n div.appendChild(elem);\n div.setAttribute('uid', uid);\n return div;\n}\n/** @hidden */\nfunction removeAddCboxClasses(elem, checked) {\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n if (checked) {\n elem.classList.add('e-check');\n }\n else {\n elem.classList.add('e-uncheck');\n }\n}\n/**\n * Refresh the Row model's foreign data.\n * @param row - Grid Row model object.\n * @param columns - Foreign columns array.\n * @param data - Updated Row data.\n * @hidden\n */\nfunction refreshForeignData(row, columns, data) {\n for (let i = 0; i < columns.length; i++) {\n setValue(columns[i].field, getForeignData(columns[i], data), row.foreignKeyData);\n }\n let cells = row.cells;\n for (let i = 0; i < cells.length; i++) {\n if (cells[i].isForeignKey) {\n setValue('foreignKeyData', getValue(cells[i].column.field, row.foreignKeyData), cells[i]);\n }\n }\n}\n/**\n * Get the foreign data for the corresponding cell value.\n * @param column - Foreign Key column\n * @param data - Row data.\n * @param lValue - cell value.\n * @param foreignData - foreign data source.\n * @hidden\n */\nfunction getForeignData(column, data, lValue, foreignKeyData) {\n let fField = column.foreignKeyField;\n let key = (!isNullOrUndefined(lValue) ? lValue : valueAccessor(column.field, data, column));\n key = isNullOrUndefined(key) ? '' : key;\n let query = new Query();\n let fdata = foreignKeyData || ((column.dataSource instanceof DataManager) && column.dataSource.dataSource.json.length ?\n column.dataSource.dataSource.json : column.columnData);\n if (key.getDay) {\n query.where(getDatePredicate({ field: fField, operator: 'equal', value: key, matchCase: false }));\n }\n else {\n query.where(fField, '==', key, false);\n }\n return new DataManager(fdata).executeLocal(query);\n}\n/**\n * To use to get the column's object by the foreign key value.\n * @param foreignKeyValue - Defines ForeignKeyValue.\n * @param columns - Array of column object.\n * @hidden\n */\nfunction getColumnByForeignKeyValue(foreignKeyValue, columns) {\n let column;\n return columns.some((col) => {\n column = col;\n return col.foreignKeyValue === foreignKeyValue;\n }) && column;\n}\n/**\n * @hidden\n * @param filterObject - Defines predicate model object\n */\nfunction getDatePredicate(filterObject, type) {\n let datePredicate;\n let prevDate;\n let nextDate;\n let prevObj = extend({}, getActualProperties(filterObject));\n let nextObj = extend({}, getActualProperties(filterObject));\n if (isNullOrUndefined(filterObject.value)) {\n datePredicate = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n return datePredicate;\n }\n let value = new Date(filterObject.value);\n if (filterObject.operator === 'equal' || filterObject.operator === 'notequal') {\n if (type === 'datetime') {\n prevDate = new Date(value.setSeconds(value.getSeconds() - 1));\n nextDate = new Date(value.setSeconds(value.getSeconds() + 2));\n filterObject.value = new Date(value.setSeconds(nextDate.getSeconds() - 1));\n }\n else {\n prevDate = new Date(value.setHours(0) - 1);\n nextDate = new Date(value.setHours(24));\n }\n prevObj.value = prevDate;\n nextObj.value = nextDate;\n if (filterObject.operator === 'equal') {\n prevObj.operator = 'greaterthan';\n nextObj.operator = 'lessthan';\n }\n else if (filterObject.operator === 'notequal') {\n prevObj.operator = 'lessthanorequal';\n nextObj.operator = 'greaterthanorequal';\n }\n let predicateSt = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n let predicateEnd = new Predicate(nextObj.field, nextObj.operator, nextObj.value, false);\n datePredicate = filterObject.operator === 'equal' ? predicateSt.and(predicateEnd) : predicateSt.or(predicateEnd);\n }\n else {\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n let predicates = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n datePredicate = predicates;\n }\n if (filterObject.setProperties) {\n filterObject.setProperties({ ejpredicate: datePredicate }, true);\n }\n else {\n filterObject.ejpredicate = datePredicate;\n }\n return datePredicate;\n}\n/**\n * @hidden\n */\nfunction renderMovable(ele, frzCols) {\n let mEle = ele.cloneNode(true);\n for (let i = 0; i < frzCols; i++) {\n mEle.removeChild(mEle.children[0]);\n }\n for (let i = frzCols, len = ele.childElementCount; i < len; i++) {\n ele.removeChild(ele.children[ele.childElementCount - 1]);\n }\n return mEle;\n}\n/**\n * @hidden\n */\nfunction isGroupAdaptive(grid) {\n return grid.enableVirtualization && grid.groupSettings.columns.length > 0 && grid.isVirtualAdaptive;\n}\n/**\n * @hidden\n */\nfunction getObject(field = '', object) {\n if (field) {\n let value = object;\n let splits = field.split('.');\n for (let i = 0; i < splits.length && !isNullOrUndefined(value); i++) {\n value = value[splits[i]];\n }\n return value;\n }\n}\n/**\n * @hidden\n */\nfunction getCustomDateFormat(format, colType) {\n let intl = new Internationalization();\n let formatvalue;\n let formatter = 'format';\n let type = 'type';\n if (colType === 'date') {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[type] ? format[type] : 'date', format: format[formatter] }, false) :\n isBlazor() ? intl.getDatePattern({ type: 'dateTime', format: format }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n else {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[type] ? format[type] : 'dateTime', format: format[formatter] }, false) :\n isBlazor() ? intl.getDatePattern({ type: 'dateTime', format: format }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n return formatvalue;\n}\n/**\n * @hidden\n */\nfunction getExpandedState(gObj, hierarchyPrintMode) {\n let rows = gObj.getRowsObject();\n let obj = {};\n for (const row of rows) {\n if (row.isExpand && !row.isDetailRow) {\n let index = gObj.allowPaging && gObj.printMode === 'AllPages' ? row.index +\n (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize : row.index;\n obj[index] = {};\n obj[index].isExpand = true;\n obj[index].gridModel = getPrintGridModel(row.childGrid, hierarchyPrintMode);\n obj[index].gridModel.query = gObj.childGrid.query;\n }\n }\n return obj;\n}\n/**\n * @hidden\n */\nfunction getPrintGridModel(gObj, hierarchyPrintMode = 'Expanded') {\n let printGridModel = {};\n if (!gObj) {\n return printGridModel;\n }\n for (let key of Print.printGridProp) {\n if (key === 'columns') {\n printGridModel[key] = getActualPropFromColl(gObj[key]);\n }\n else if (key === 'allowPaging') {\n printGridModel[key] = gObj.printMode === 'CurrentPage';\n }\n else {\n printGridModel[key] = getActualProperties(gObj[key]);\n }\n }\n if (gObj.childGrid && hierarchyPrintMode !== 'None') {\n printGridModel.expandedRows = getExpandedState(gObj, hierarchyPrintMode);\n }\n return printGridModel;\n}\n/**\n * @hidden\n */\nfunction extendObjWithFn(copied, first, second, deep) {\n let res = copied || {};\n let len = arguments.length;\n if (deep) {\n len = len - 1;\n }\n for (let i = 1; i < len; i++) {\n if (!arguments[i]) {\n continue;\n }\n let obj1 = arguments[i];\n let keys = Object.keys(Object.getPrototypeOf(obj1)).length ?\n Object.keys(obj1).concat(getPrototypesOfObj(obj1)) : Object.keys(obj1);\n for (let i = 0; i < keys.length; i++) {\n let source = res[keys[i]];\n let cpy = obj1[keys[i]];\n let cln;\n if (deep && (isObject(cpy) || Array.isArray(cpy))) {\n if (isObject(cpy)) {\n cln = source ? source : {};\n res[keys[i]] = extend({}, cln, cpy, deep);\n }\n else {\n cln = source ? source : [];\n res[keys[i]] = extend([], cln, cpy, deep);\n }\n }\n else {\n res[keys[i]] = cpy;\n }\n }\n }\n return res;\n}\n/**\n * @hidden\n */\nfunction getPrototypesOfObj(obj) {\n let keys = [];\n while (Object.getPrototypeOf(obj) && Object.keys(Object.getPrototypeOf(obj)).length) {\n keys = keys.concat(Object.keys(Object.getPrototypeOf(obj)));\n obj = Object.getPrototypeOf(obj);\n }\n return keys;\n}\n/**\n * @hidden\n */\nfunction measureColumnDepth(column) {\n let max = 0;\n for (let i = 0; i < column.length; i++) {\n let depth = checkDepth(column[i], 0);\n if (max < depth) {\n max = depth;\n }\n }\n return max + 1;\n}\n/**\n * @hidden\n */\nfunction checkDepth(col, index) {\n let max = index;\n let indices = [];\n if (col.columns) {\n index++;\n for (let i = 0; i < col.columns.length; i++) {\n indices[i] = checkDepth(col.columns[i], index);\n }\n for (let j = 0; j < indices.length; j++) {\n if (max < indices[j]) {\n max = indices[j];\n }\n }\n index = max;\n }\n return index;\n}\n/**\n * @hidden\n */\nfunction refreshFilteredColsUid(gObj, filteredCols) {\n for (let i = 0; i < filteredCols.length; i++) {\n filteredCols[i].uid = filteredCols[i].isForeignKey ?\n getColumnByForeignKeyValue(filteredCols[i].field, gObj.getForeignKeyColumns()).uid\n : gObj.getColumnByField(filteredCols[i].field).uid;\n }\n}\n/** @hidden */\nvar Global;\n(function (Global) {\n Global.timer = null;\n})(Global || (Global = {}));\n/**\n * @hidden\n */\nfunction getTransformValues(element) {\n let style = document.defaultView.getComputedStyle(element, null);\n let transformV = style.getPropertyValue('transform');\n let replacedTv = transformV.replace(/,/g, '');\n let translateX = parseFloat((replacedTv).split(' ')[4]);\n let translateY = parseFloat((replacedTv).split(' ')[5]);\n return { width: translateX, height: translateY };\n}\n/** @hidden */\nfunction applyBiggerTheme(rootElement, element) {\n if (rootElement.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n}\n/** @hidden */\nfunction alignFrozenEditForm(mTD, fTD) {\n if (mTD && fTD) {\n let mHeight = mTD.closest('.e-row').getBoundingClientRect().height;\n let fHeight = fTD.closest('.e-row').getBoundingClientRect().height;\n if (mHeight > fHeight) {\n fTD.style.height = mHeight + 'px';\n }\n else {\n mTD.style.height = fHeight + 'px';\n }\n }\n}\n/** @hidden */\nfunction ensureLastRow(row, gridObj) {\n let cntOffset = gridObj.getContent().firstElementChild.offsetHeight;\n return row && row.getBoundingClientRect().top > cntOffset;\n}\n/** @hidden */\nfunction ensureFirstRow(row, rowTop) {\n return row && row.getBoundingClientRect().top < rowTop;\n}\n/** @hidden */\nfunction getEditedDataIndex(gObj, data) {\n let keyField = gObj.getPrimaryKeyFieldNames()[0];\n let dataIndex;\n gObj.getCurrentViewRecords().filter((e, index) => {\n if (e[keyField] === data[keyField]) {\n dataIndex = index;\n }\n });\n return dataIndex;\n}\n/** @hidden */\nfunction eventPromise(args, query) {\n let state;\n state = this.getStateEventArgument(query);\n let def = new Deferred();\n state.dataSource = def.resolve;\n state.action = args;\n return { state: state, deffered: def };\n}\n/** @hidden */\nfunction getStateEventArgument(query) {\n let adaptr = new UrlAdaptor();\n let dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n let state = adaptr.processQuery(dm, query);\n let data = JSON.parse(state.data);\n return data;\n}\n/** @hidden */\nfunction ispercentageWidth(gObj) {\n let columns = gObj.getVisibleColumns();\n let percentageCol = 0;\n let undefinedWidthCol = 0;\n for (let i = 0; i < columns.length; i++) {\n if (isUndefined(columns[i].width)) {\n undefinedWidthCol++;\n }\n else if (columns[i].width.toString().indexOf('%') !== -1) {\n percentageCol++;\n }\n }\n return (gObj.width === 'auto' || typeof (gObj.width) === 'string' && gObj.width.indexOf('%') !== -1) && Browser.info.name !== 'chrome'\n && !gObj.groupSettings.showGroupedColumn && gObj.groupSettings.columns.length\n && percentageCol && !undefinedWidthCol;\n}\n\n/* tslint:disable-next-line:max-line-length */\n/**\n * @hidden\n * `CheckBoxFilterBase` module is used to handle filtering action.\n */\nclass CheckBoxFilterBase {\n /**\n * Constructor for checkbox filtering module\n * @hidden\n */\n constructor(parent) {\n this.existingPredicate = {};\n this.foreignKeyQuery = new Query();\n this.filterState = true;\n this.values = {};\n this.renderEmpty = false;\n this.parent = parent;\n this.id = this.parent.element.id;\n this.valueFormatter = new ValueFormatter(this.parent.locale);\n this.cBoxTrue = createCheckBox(this.parent.createElement, false, { checked: true, label: ' ' });\n this.cBoxFalse = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.cBoxTrue.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { type: 'checkbox' }\n }), this.cBoxTrue.firstChild);\n this.cBoxFalse.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { 'type': 'checkbox' }\n }), this.cBoxFalse.firstChild);\n this.cBoxFalse.querySelector('.e-frame').classList.add('e-uncheck');\n if (this.parent.enableRtl) {\n addClass([this.cBoxTrue, this.cBoxFalse], ['e-rtl']);\n }\n }\n /**\n * To destroy the filter bar.\n * @return {void}\n * @hidden\n */\n destroy() {\n this.closeDialog();\n }\n wireEvents() {\n EventHandler.add(this.dlg, 'click', this.clickHandler, this);\n this.searchHandler = debounce(this.searchBoxKeyUp, 200);\n EventHandler.add(this.dlg.querySelector('.e-searchinput'), 'keyup', this.searchHandler, this);\n }\n unWireEvents() {\n EventHandler.remove(this.dlg, 'click', this.clickHandler);\n let elem = this.dlg.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.remove(elem, 'keyup', this.searchHandler);\n }\n }\n foreignKeyFilter(args, fColl, mPredicate) {\n let fPredicate = {};\n let filterCollection = [];\n let query = this.foreignKeyQuery.clone();\n this.options.column.dataSource.\n executeQuery(query.where(mPredicate)).then((e) => {\n this.options.column.columnData = e.result;\n this.parent.notify(generateQuery, { predicate: fPredicate, column: this.options.column });\n args.ejpredicate = fPredicate.predicate.predicates;\n let fpred = fPredicate.predicate.predicates;\n for (let i = 0; i < fpred.length; i++) {\n filterCollection.push({\n field: fpred[i].field,\n predicate: 'or',\n matchCase: fpred[i].ignoreCase,\n ignoreAccent: fpred[i].ignoreAccent,\n operator: fpred[i].operator,\n value: fpred[i].value,\n type: this.options.type\n });\n }\n args.filterCollection = filterCollection.length ? filterCollection :\n fColl.filter((col) => col.field = this.options.field);\n this.options.handler(args);\n });\n }\n foreignFilter(args, value) {\n let operator = this.options.isRemote ?\n (this.options.column.type === 'string' ? 'contains' : 'equal') : (this.options.column.type ? 'contains' : 'equal');\n let initalPredicate = new Predicate(this.options.column.foreignKeyValue, operator, value, true, this.options.ignoreAccent);\n this.foreignKeyFilter(args, [args.filterCollection], initalPredicate);\n }\n searchBoxClick(e) {\n let target = e.target;\n if (target.classList.contains('e-searchclear')) {\n this.sInput.value = '';\n this.refreshCheckboxes();\n this.updateSearchIcon();\n this.sInput.focus();\n }\n }\n searchBoxKeyUp(e) {\n this.refreshCheckboxes();\n this.updateSearchIcon();\n }\n updateSearchIcon() {\n if (this.sInput.value.length) {\n classList(this.sIcon, ['e-chkcancel-icon'], ['e-search-icon']);\n }\n else {\n classList(this.sIcon, ['e-search-icon'], ['e-chkcancel-icon']);\n }\n }\n /**\n * Gets the localized label by locale keyword.\n * @param {string} key\n * @return {string}\n */\n getLocalizedLabel(key) {\n return this.localeObj.getConstant(key);\n }\n updateDataSource() {\n let dataSource = this.options.dataSource;\n let str = 'object';\n if (!(dataSource instanceof DataManager)) {\n for (let i = 0; i < dataSource.length; i++) {\n if (typeof dataSource !== str) {\n let obj = {};\n obj[this.options.field] = dataSource[i];\n dataSource[i] = obj;\n }\n }\n }\n }\n updateModel(options) {\n this.options = options;\n this.existingPredicate = options.actualPredicate || {};\n this.options.dataSource = options.dataSource;\n this.options.dataManager = options.dataManager ? options.dataManager : options.dataSource;\n this.updateDataSource();\n this.options.type = options.type;\n this.options.format = options.format || '';\n this.options.ignoreAccent = options.ignoreAccent || false;\n this.options.filteredColumns = options.filteredColumns || this.parent.filterSettings.columns;\n this.options.query = options.query || new Query();\n this.options.allowCaseSensitive = options.allowCaseSensitive || false;\n this.options.uid = options.column.uid;\n this.values = {};\n this.localeObj = options.localeObj;\n this.isFiltered = options.filteredColumns.length;\n }\n getAndSetChkElem(options) {\n this.dlg = this.parent.createElement('div', {\n id: this.id + this.options.type + '_excelDlg',\n className: 'e-checkboxfilter e-filter-popup'\n });\n this.sBox = this.parent.createElement('div', { className: 'e-searchcontainer' });\n if (!options.hideSearchbox) {\n this.sInput = this.parent.createElement('input', {\n id: this.id + '_SearchBox',\n className: 'e-searchinput'\n });\n this.sIcon = this.parent.createElement('span', {\n className: 'e-searchclear e-search-icon e-icons e-input-group-icon', attrs: {\n type: 'text', title: this.getLocalizedLabel('Search')\n }\n });\n this.searchBox = this.parent.createElement('span', { className: 'e-searchbox e-fields' });\n this.searchBox.appendChild(this.sInput);\n this.sBox.appendChild(this.searchBox);\n let inputargs = {\n element: this.sInput, floatLabelType: 'Never', properties: {\n placeholder: this.getLocalizedLabel('Search')\n }\n };\n Input.createInput(inputargs, this.parent.createElement);\n this.searchBox.querySelector('.e-input-group').appendChild(this.sIcon);\n }\n this.spinner = this.parent.createElement('div', { className: 'e-spinner' }); //for spinner\n this.cBox = this.parent.createElement('div', {\n id: this.id + this.options.type + '_CheckBoxList',\n className: 'e-checkboxlist e-fields'\n });\n this.spinner.appendChild(this.cBox);\n this.sBox.appendChild(this.spinner);\n return this.sBox;\n }\n showDialog(options) {\n let args = {\n requestType: filterBeforeOpen,\n columnName: this.options.field, columnType: this.options.type, cancel: false\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n let filterModel = 'filterModel';\n args[filterModel] = this;\n }\n this.parent.notify(cBoxFltrBegin, args);\n if (args.cancel) {\n return;\n }\n this.dialogObj = new Dialog({\n visible: false, content: this.sBox,\n close: this.closeDialog.bind(this),\n width: (!isNullOrUndefined(parentsUntil(options.target, 'e-bigger')))\n || this.parent.element.classList.contains('e-device') ? 260 : 255,\n target: this.parent.element, animationSettings: { effect: 'None' },\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: {\n content: this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton'),\n cssClass: 'e-primary', isPrimary: true\n }\n },\n {\n click: this.btnClick.bind(this),\n buttonModel: { cssClass: 'e-flat', content: this.getLocalizedLabel(this.isExcel ? 'CancelButton' : 'ClearButton') }\n }],\n created: this.dialogCreated.bind(this),\n open: this.dialogOpen.bind(this)\n });\n let isStringTemplate = 'isStringTemplate';\n this.dialogObj[isStringTemplate] = true;\n this.dlg.setAttribute('aria-label', this.getLocalizedLabel('ExcelFilterDialogARIA'));\n this.parent.element.appendChild(this.dlg);\n this.dialogObj.appendTo(this.dlg);\n this.dialogObj.element.style.maxHeight = this.options.height + 'px';\n this.dialogObj.show();\n this.wireEvents();\n createSpinner({ target: this.spinner }, this.parent.createElement);\n showSpinner(this.spinner);\n this.getAllData();\n }\n dialogCreated(e) {\n if (!Browser.isDevice) {\n getFilterMenuPostion(this.options.target, this.dialogObj, this.parent);\n }\n else {\n this.dialogObj.position = { X: 'center', Y: 'center' };\n }\n this.parent.notify(filterDialogCreated, e);\n }\n openDialog(options) {\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n }\n closeDialog() {\n if (this.dialogObj && !this.dialogObj.isDestroyed) {\n let filterTemplateCol = this.options.columns.filter((col) => col.getFilterItemTemplate());\n // tslint:disable-next-line:no-any\n let registeredTemplate = this.parent.registeredTemplate;\n if (filterTemplateCol.length && !isNullOrUndefined(registeredTemplate) && registeredTemplate.filterItemTemplate) {\n this.parent.destroyTemplate(['filterItemTemplate']);\n }\n this.parent.notify(filterMenuClose, { field: this.options.field });\n this.dialogObj.destroy();\n this.unWireEvents();\n remove(this.dlg);\n this.dlg = null;\n }\n }\n clearFilter() {\n /* tslint:disable-next-line:max-line-length */\n let args = { instance: this, handler: this.clearFilter, cancel: false };\n this.parent.notify(fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n this.options.handler({ action: 'clear-filter', field: this.options.field });\n }\n btnClick(e) {\n if (this.filterState) {\n if (e.target.tagName.toLowerCase() === 'input' && e.target.classList.contains('e-searchinput')) {\n let value = e.target.value;\n if (this.options.column.type === 'boolean') {\n if (value !== '' &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(value.toLowerCase()) !== -1) {\n value = true;\n }\n else if (value !== '' &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(value.toLowerCase()) !== -1) {\n value = false;\n }\n }\n let args = {\n action: 'filtering', filterCollection: {\n field: this.options.field,\n operator: this.options.isRemote ?\n (this.options.column.type === 'string' ? 'contains' : 'equal') :\n (this.options.column.type === 'date' || this.options.column.type === 'datetime' ||\n this.options.column.type === 'boolean' ? 'equal' : 'contains'),\n value: value, matchCase: false, type: this.options.column.type\n },\n field: this.options.field\n };\n value !== undefined && value !== null && value !== '' ? this.isForeignColumn(this.options.column) ?\n this.foreignFilter(args, value) : this.options.handler(args) : this.closeDialog();\n }\n else {\n if (e.keyCode === 13) {\n this.fltrBtnHandler();\n }\n else {\n let text = e.target.firstChild.textContent.toLowerCase();\n if (this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton').toLowerCase() === text) {\n this.fltrBtnHandler();\n }\n else if (this.getLocalizedLabel('ClearButton').toLowerCase() === text) {\n this.clearFilter();\n }\n }\n }\n this.closeDialog();\n }\n else if (!(e.target.tagName.toLowerCase() === 'input')) {\n this.clearFilter();\n this.closeDialog();\n }\n }\n fltrBtnHandler() {\n let checked = [].slice.call(this.cBox.querySelectorAll('.e-check:not(.e-selectall)'));\n let check = checked;\n let optr = 'equal';\n let searchInput = this.searchBox.querySelector('.e-searchinput');\n let caseSen = this.options.allowCaseSensitive;\n let defaults = {\n field: this.options.field, predicate: 'or', uid: this.options.uid,\n operator: optr, type: this.options.type, matchCase: caseSen, ignoreAccent: this.options.ignoreAccent\n };\n let isNotEqual = this.itemsCnt !== checked.length && this.itemsCnt - checked.length < checked.length;\n if (isNotEqual && searchInput.value === '') {\n optr = 'notequal';\n checked = [].slice.call(this.cBox.querySelectorAll('.e-uncheck:not(.e-selectall)'));\n defaults.predicate = 'and';\n defaults.operator = 'notequal';\n }\n let value;\n let val;\n let length;\n let fObj;\n let coll = [];\n if (checked.length !== this.itemsCnt || (searchInput.value && searchInput.value !== '')) {\n for (let i = 0; i < checked.length; i++) {\n value = this.values[parentsUntil(checked[i], 'e-ftrchk').getAttribute('uid')];\n fObj = extend({}, { value: value }, defaults);\n if (value && !value.toString().length) {\n fObj.operator = isNotEqual ? 'notequal' : 'equal';\n }\n if (value === '' || isNullOrUndefined(value)) {\n if (this.options.type === 'string') {\n coll.push({\n field: defaults.field, ignoreAccent: defaults.ignoreAccent, matchCase: defaults.matchCase,\n operator: defaults.operator, predicate: defaults.predicate, value: ''\n });\n }\n coll.push({\n field: defaults.field,\n matchCase: defaults.matchCase, operator: defaults.operator, predicate: defaults.predicate, value: null\n });\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: defaults.operator,\n predicate: defaults.predicate, value: undefined\n });\n }\n else {\n coll.push(fObj);\n }\n let args = {\n instance: this, handler: this.fltrBtnHandler, arg1: fObj.field, arg2: fObj.predicate, arg3: fObj.operator,\n arg4: fObj.matchCase, arg5: fObj.ignoreAccent, arg6: fObj.value, cancel: false\n };\n this.parent.notify(fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n }\n if (this.options.type === 'date' || this.options.type === 'datetime') {\n length = check.length - 1;\n val = this.values[parentsUntil(check[length], 'e-ftrchk').getAttribute('uid')];\n if (isNullOrUndefined(val) && isNotEqual) {\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: 'equal',\n predicate: 'and', value: null\n });\n }\n }\n this.initiateFilter(coll);\n }\n else {\n this.clearFilter();\n }\n }\n initiateFilter(fColl) {\n let firstVal = fColl[0];\n let predicate;\n if (!isNullOrUndefined(firstVal)) {\n predicate = firstVal.ejpredicate ? firstVal.ejpredicate :\n new Predicate(firstVal.field, firstVal.operator, firstVal.value, !firstVal.matchCase, firstVal.ignoreAccent);\n for (let j = 1; j < fColl.length; j++) {\n predicate = fColl[j].ejpredicate !== undefined ?\n predicate[fColl[j].predicate](fColl[j].ejpredicate) :\n predicate[fColl[j].predicate](fColl[j].field, fColl[j].operator, fColl[j].value, !fColl[j].matchCase, fColl[j].ignoreAccent);\n }\n let args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: Predicate.or(predicate)\n };\n this.options.handler(args);\n }\n }\n isForeignColumn(col) {\n return col.isForeignColumn ? col.isForeignColumn() : false;\n }\n refreshCheckboxes() {\n let val = this.sInput.value;\n let column = this.options.column;\n let query = this.isForeignColumn(column) ? this.foreignKeyQuery.clone() : this.options.query.clone();\n let foreignQuery = this.options.query.clone();\n let pred = query.queries.filter((e) => { return e && e.fn === 'onWhere'; })[0];\n query.queries = [];\n foreignQuery.queries = [];\n let parsed = (this.options.type !== 'string' && parseFloat(val)) ? parseFloat(val) : val;\n let operator = this.options.isRemote ?\n (this.options.type === 'string' ? 'contains' : 'equal') : (this.options.type ? 'contains' : 'equal');\n let matchCase = true;\n let ignoreAccent = this.options.ignoreAccent;\n let field = this.isForeignColumn(column) ? column.foreignKeyValue : column.field;\n parsed = (parsed === '' || parsed === undefined) ? undefined : parsed;\n let predicte;\n let moduleName = this.options.dataManager.adaptor.getModuleName;\n if (this.options.type === 'boolean') {\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? true : 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? false : 'false';\n }\n operator = 'equal';\n }\n if (this.options.type === 'date' || this.options.type === 'datetime') {\n parsed = this.valueFormatter.fromView(val, this.options.parserFn, this.options.type);\n }\n this.addDistinct(query);\n /* tslint:disable-next-line:max-line-length */\n let args = {\n requestType: filterSearchBegin,\n filterModel: this, columnName: field, column: column,\n operator: operator, matchCase: matchCase, ignoreAccent: ignoreAccent, filterChoiceCount: null,\n query: query, value: parsed\n };\n if (isBlazor() && !this.parent.isJsComponent) {\n let filterModel = 'filterModel';\n args[filterModel] = {};\n }\n this.parent.trigger(actionBegin, args, (filterargs) => {\n filterargs.operator = (isBlazor() && filterargs.excelSearchOperator !== 'none') ?\n filterargs.excelSearchOperator : filterargs.operator;\n predicte = new Predicate(field, filterargs.operator, parsed, filterargs.matchCase, filterargs.ignoreAccent);\n if (this.options.type === 'date' || this.options.type === 'datetime') {\n operator = 'equal';\n if (isNullOrUndefined(parsed) && val.length) {\n return;\n }\n let filterObj = {\n field: field, operator: operator, value: parsed, matchCase: matchCase,\n ignoreAccent: ignoreAccent\n };\n predicte = getDatePredicate(filterObj, this.options.type);\n }\n if (val.length) {\n predicte = !isNullOrUndefined(pred) ? predicte.and(pred.e) : predicte;\n query.where(predicte);\n }\n else if (!isNullOrUndefined(pred)) {\n query.where(pred.e);\n }\n filterargs.filterChoiceCount = !isNullOrUndefined(filterargs.filterChoiceCount) ? filterargs.filterChoiceCount : 1000;\n let fPredicate = {};\n showSpinner(this.spinner);\n this.renderEmpty = false;\n if (this.isForeignColumn(column) && val.length) {\n let colData = ('result' in column.dataSource) ? new DataManager(column.dataSource.result) :\n column.dataSource;\n // tslint:disable-next-line:no-any\n colData.executeQuery(query).then((e) => {\n let columnData = this.options.column.columnData;\n this.options.column.columnData = e.result;\n this.parent.notify(generateQuery, { predicate: fPredicate, column: column });\n if (fPredicate.predicate.predicates.length) {\n foreignQuery.where(fPredicate.predicate);\n }\n else {\n this.renderEmpty = true;\n }\n this.options.column.columnData = columnData;\n foreignQuery.take(filterargs.filterChoiceCount);\n this.search(filterargs, foreignQuery);\n });\n }\n else {\n query.take(filterargs.filterChoiceCount);\n this.search(filterargs, query);\n }\n });\n }\n search(args, query) {\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.filterEvent(args, query);\n }\n else {\n this.processSearch(query);\n }\n }\n getPredicateFromCols(columns) {\n let predicates = CheckBoxFilterBase.getPredicate(columns);\n let predicateList = [];\n let fPredicate = {};\n let isGrid = this.parent.getForeignKeyColumns !== undefined;\n let foreignColumn = isGrid ? this.parent.getForeignKeyColumns() : [];\n for (let prop of Object.keys(predicates)) {\n let col;\n if (isGrid && this.parent.getColumnByField(prop).isForeignColumn()) {\n col = getColumnByForeignKeyValue(prop, foreignColumn);\n }\n if (col) {\n this.parent.notify(generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(Predicate.or(fPredicate.predicate.predicates));\n }\n }\n else {\n predicateList.push(predicates[prop]);\n }\n }\n return predicateList.length && Predicate.and(predicateList);\n }\n getQuery() {\n return this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n }\n getAllData() {\n let query = this.getQuery();\n query.requiresCount(); //consider take query\n this.addDistinct(query);\n let args = {\n requestType: filterChoiceRequest, query: query, filterChoiceCount: null\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n let filterModel = 'filterModel';\n args[filterModel] = this;\n }\n this.parent.trigger(actionBegin, args, (args) => {\n args.filterChoiceCount = !isNullOrUndefined(args.filterChoiceCount) ? args.filterChoiceCount : 1000;\n query.take(args.filterChoiceCount);\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.filterEvent(args, query);\n }\n else {\n this.processDataOperation(query, true);\n }\n });\n }\n addDistinct(query) {\n let filteredColumn = DataUtil.distinct(this.options.filteredColumns, 'field');\n if (filteredColumn.indexOf(this.options.column.field) <= -1) {\n filteredColumn = filteredColumn.concat(this.options.column.field);\n }\n query.distinct(filteredColumn);\n return query;\n }\n filterEvent(args, query) {\n let defObj = eventPromise(args, query);\n this.parent.trigger(dataStateChange, defObj.state);\n let def = defObj.deffered;\n def.promise.then((e) => {\n this.dataSuccess(e);\n });\n }\n processDataOperation(query, isInitial) {\n this.options.dataSource = this.options.dataSource instanceof DataManager ?\n this.options.dataSource : new DataManager(this.options.dataSource);\n let allPromise = [];\n let runArray = [];\n if (this.isForeignColumn(this.options.column) && isInitial) {\n let colData = ('result' in this.options.column.dataSource) ?\n new DataManager(this.options.column.dataSource.result) :\n this.options.column.dataSource;\n this.foreignKeyQuery.params = query.params;\n allPromise.push(colData.executeQuery(this.foreignKeyQuery));\n runArray.push((data) => this.foreignKeyData = data);\n }\n allPromise.push(this.options.dataSource.executeQuery(query));\n runArray.push(this.dataSuccess.bind(this));\n let i = 0;\n Promise.all(allPromise).then((e) => {\n for (let j = 0; j < e.length; j++) {\n runArray[i++](e[j].result);\n }\n });\n }\n dataSuccess(e) {\n this.fullData = e;\n let query = new Query();\n if (this.parent.searchSettings && this.parent.searchSettings.key.length) {\n let sSettings = this.parent.searchSettings;\n let fields = sSettings.fields.length ? sSettings.fields : this.options.columns.map((f) => f.field);\n /* tslint:disable-next-line:max-line-length */\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n if ((this.options.filteredColumns.length)) {\n let cols = [];\n for (let i = 0; i < this.options.filteredColumns.length; i++) {\n let filterColumn = this.options.filteredColumns[i];\n if (this.options.uid) {\n filterColumn.uid = filterColumn.uid || this.parent.getColumnByField(filterColumn.field).uid;\n if (filterColumn.uid !== this.options.uid) {\n cols.push(this.options.filteredColumns[i]);\n }\n }\n else {\n if (filterColumn.field !== this.options.field) {\n cols.push(this.options.filteredColumns[i]);\n }\n }\n }\n let predicate = this.getPredicateFromCols(cols);\n if (predicate) {\n query.where(predicate);\n }\n }\n // query.select(this.options.field);\n let result = new DataManager(this.fullData).executeLocal(query);\n let col = this.options.column;\n this.filteredData = CheckBoxFilterBase.\n getDistinct(result, this.options.field, col, this.foreignKeyData).records || [];\n this.processDataSource(null, true, this.filteredData);\n this.sInput.focus();\n let args = {\n requestType: filterAfterOpen,\n columnName: this.options.field, columnType: this.options.type\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n let filterModel = 'filterModel';\n args[filterModel] = this;\n }\n this.parent.notify(cBoxFltrComplete, args);\n }\n processDataSource(query, isInitial, dataSource) {\n showSpinner(this.spinner);\n // query = query ? query : this.options.query.clone();\n // query.requiresCount();\n // let result: Object = new DataManager(dataSource as JSON[]).executeLocal(query);\n // let res: { result: Object[] } = result as { result: Object[] };\n this.updateResult();\n this.createFilterItems(dataSource, isInitial);\n }\n processSearch(query) {\n this.processDataOperation(query);\n }\n updateResult() {\n this.result = {};\n let predicate = this.getPredicateFromCols(this.options.filteredColumns);\n let query = new Query();\n if (predicate) {\n query.where(predicate);\n }\n let result = new DataManager(this.fullData).executeLocal(query);\n for (let res of result) {\n this.result[getObject(this.options.field, res)] = true;\n }\n }\n clickHandler(e) {\n let target = e.target;\n let elem = parentsUntil(target, 'e-checkbox-wrapper');\n if (parentsUntil(target, 'e-searchbox')) {\n this.searchBoxClick(e);\n }\n if (elem) {\n let selectAll = elem.querySelector('.e-selectall');\n if (selectAll) {\n this.updateAllCBoxes(!selectAll.classList.contains('e-check'));\n }\n else {\n toogleCheckbox(elem.parentElement);\n }\n this.updateIndeterminatenBtn();\n elem.querySelector('.e-chk-hidden').focus();\n }\n }\n updateAllCBoxes(checked) {\n let cBoxes = [].slice.call(this.cBox.querySelectorAll('.e-frame'));\n for (let cBox of cBoxes) {\n removeAddCboxClasses(cBox, checked);\n }\n }\n dialogOpen() {\n if (this.parent.element.classList.contains('e-device')) {\n this.dialogObj.element.querySelector('.e-input-group').classList.remove('e-input-focus');\n this.dialogObj.element.querySelector('.e-btn').focus();\n }\n }\n createCheckbox(value, checked, data) {\n let elem = checked ? this.cBoxTrue.cloneNode(true) :\n this.cBoxFalse.cloneNode(true);\n let label = elem.querySelector('.e-label');\n let dummyData = extendObjWithFn({}, data, { column: this.options.column, parent: this.parent });\n label.innerHTML = !isNullOrUndefined(value) && value.toString().length ? value :\n this.getLocalizedLabel('Blanks');\n addClass([label], ['e-checkboxfiltertext']);\n if (this.options.template && data[this.options.column.field] !== this.getLocalizedLabel('SelectAll')) {\n label.innerHTML = '';\n appendChildren(label, this.options.template(dummyData, this.parent, 'filterItemTemplate'));\n }\n return elem;\n }\n updateIndeterminatenBtn() {\n let cnt = this.cBox.children.length - 1;\n let className = [];\n let elem = this.cBox.querySelector('.e-selectall');\n let selected = this.cBox.querySelectorAll('.e-check:not(.e-selectall)').length;\n let btn = this.dialogObj.btnObj[0];\n btn.disabled = false;\n if (cnt === selected) {\n className = ['e-check'];\n }\n else if (selected) {\n className = ['e-stop'];\n }\n else {\n className = ['e-uncheck'];\n btn.disabled = true;\n }\n this.filterState = !btn.disabled;\n btn.dataBind();\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([elem], className);\n }\n createFilterItems(data, isInitial) {\n let cBoxes = this.parent.createElement('div');\n let btn = this.dialogObj.btnObj[0];\n let nullCounter = -1;\n for (let i = 0; i < data.length; i++) {\n let val = getValue('ejValue', data[i]);\n if (val === '' || isNullOrUndefined(val)) {\n nullCounter = nullCounter + 1;\n }\n }\n this.itemsCnt = nullCounter !== -1 ? data.length - nullCounter : data.length;\n if (data.length && !this.renderEmpty) {\n let selectAllValue = this.getLocalizedLabel('SelectAll');\n let checkBox = this.createCheckbox(selectAllValue, false, { [this.options.field]: selectAllValue });\n let selectAll = createCboxWithWrap(getUid('cbox'), checkBox, 'e-ftrchk');\n selectAll.querySelector('.e-frame').classList.add('e-selectall');\n cBoxes.appendChild(selectAll);\n let predicate = new Predicate('field', 'equal', this.options.field);\n if (this.options.foreignKeyValue) {\n predicate = predicate.or('field', 'equal', this.options.foreignKeyValue);\n }\n let isColFiltered = new DataManager(this.options.filteredColumns).executeLocal(new Query().where(predicate)).length;\n let isRndere;\n for (let i = 0; i < data.length; i++) {\n let uid = getUid('cbox');\n this.values[uid] = getValue('ejValue', data[i]);\n let value = getValue(this.options.field, data[i]);\n if (this.options.formatFn) {\n value = this.valueFormatter.toView(value, this.options.formatFn);\n }\n let args = { value: value, column: this.options.column, data: data[i] };\n this.parent.notify(filterCboxValue, args);\n value = args.value;\n if ((value === '' || isNullOrUndefined(value))) {\n if (isRndere) {\n continue;\n }\n isRndere = true;\n }\n let checkbox = this.createCheckbox(value, this.getCheckedState(isColFiltered, this.values[uid]), getValue('dataObj', data[i]));\n cBoxes.appendChild(createCboxWithWrap(uid, checkbox, 'e-ftrchk'));\n }\n this.cBox.innerHTML = '';\n appendChildren(this.cBox, [].slice.call(cBoxes.children));\n this.updateIndeterminatenBtn();\n btn.disabled = false;\n }\n else {\n cBoxes.appendChild(this.parent.createElement('span', { innerHTML: this.getLocalizedLabel('NoResult') }));\n this.cBox.innerHTML = '';\n appendChildren(this.cBox, [].slice.call(cBoxes.children));\n btn.disabled = true;\n }\n this.filterState = !btn.disabled;\n btn.dataBind();\n let args = { requestType: filterChoiceRequest, dataSource: this.renderEmpty ||\n (isBlazor() && this.parent.isServerRendered) ? [] : data };\n if (!isBlazor() || this.parent.isJsComponent) {\n let filterModel = 'filterModel';\n args[filterModel] = this;\n }\n this.parent.notify(cBoxFltrComplete, args);\n hideSpinner(this.spinner);\n }\n getCheckedState(isColFiltered, value) {\n if (!this.isFiltered || !isColFiltered) {\n return true;\n }\n else {\n return this.result[value];\n }\n }\n static getDistinct(json, field, column, foreignKeyData$$1) {\n let len = json.length;\n let result = [];\n let value;\n let ejValue = 'ejValue';\n let lookup = {};\n let isForeignKey = column && column.isForeignColumn ? column.isForeignColumn() : false;\n while (len--) {\n value = json[len];\n value = getObject(field, value); //local remote diff, check with mdu \n if (!(value in lookup)) {\n let obj = {};\n obj[ejValue] = value;\n lookup[value] = true;\n if (isForeignKey) {\n let foreignDataObj = getForeignData(column, {}, value, foreignKeyData$$1)[0];\n setValue(foreignKeyData, foreignDataObj, json[len]);\n value = getValue(column.foreignKeyValue, foreignDataObj);\n }\n setValue(field, isNullOrUndefined(value) ? null : value, obj);\n setValue('dataObj', json[len], obj);\n result.push(obj);\n }\n }\n return DataUtil.group(DataUtil.sort(result, field, DataUtil.fnAscending), 'ejValue');\n }\n static getPredicate(columns) {\n let cols = DataUtil.distinct(columns, 'field', true) || [];\n let collection = [];\n let pred = {};\n for (let i = 0; i < cols.length; i++) {\n collection = new DataManager(columns).executeLocal(new Query().where('field', 'equal', cols[i].field));\n if (collection.length !== 0) {\n pred[cols[i].field] = CheckBoxFilterBase.generatePredicate(collection);\n }\n }\n return pred;\n }\n static generatePredicate(cols) {\n let len = cols ? cols.length : 0;\n let predicate;\n let first;\n let operate = 'or';\n first = CheckBoxFilterBase.updateDateFilter(cols[0]);\n first.ignoreAccent = !isNullOrUndefined(first.ignoreAccent) ? first.ignoreAccent : false;\n if (first.type === 'date' || first.type === 'datetime') {\n predicate = getDatePredicate(first, first.type);\n }\n else {\n predicate = first.ejpredicate ? first.ejpredicate :\n new Predicate(first.field, first.operator, first.value, !CheckBoxFilterBase.getCaseValue(first), first.ignoreAccent);\n }\n for (let p = 1; p < len; p++) {\n cols[p] = CheckBoxFilterBase.updateDateFilter(cols[p]);\n if (len > 2 && p > 1 && cols[p].predicate === 'or') {\n if (cols[p].type === 'date' || cols[p].type === 'datetime') {\n predicate.predicates.push(getDatePredicate(cols[p], cols[p].type));\n }\n else {\n predicate.predicates.push(new Predicate(cols[p].field, cols[p].operator, cols[p].value, !CheckBoxFilterBase.getCaseValue(cols[p]), cols[p].ignoreAccent));\n }\n }\n else {\n if (cols[p].type === 'date' || cols[p].type === 'datetime') {\n if (cols[p].predicate === 'and' && cols[p].operator === 'equal') {\n predicate = predicate[operate](getDatePredicate(cols[p], cols[p].type), cols[p].type, cols[p].ignoreAccent);\n }\n else {\n predicate = predicate[(cols[p].predicate)](getDatePredicate(cols[p], cols[p].type), cols[p].type, cols[p].ignoreAccent);\n }\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n predicate = cols[p].ejpredicate ?\n predicate[cols[p].predicate](cols[p].ejpredicate) :\n predicate[(cols[p].predicate)](cols[p].field, cols[p].operator, cols[p].value, !CheckBoxFilterBase.getCaseValue(cols[p]), cols[p].ignoreAccent);\n }\n }\n }\n return predicate || null;\n }\n static getCaseValue(filter) {\n if (isNullOrUndefined(filter.matchCase)) {\n if (filter.type === 'string' || isNullOrUndefined(filter.type) && typeof (filter.value) === 'string') {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return filter.matchCase;\n }\n }\n static updateDateFilter(filter) {\n if ((filter.type === 'date' || filter.type === 'datetime' || filter.value instanceof Date)) {\n filter.type = filter.type || 'date';\n }\n return filter;\n }\n}\n\n/**\n * @hidden\n * `ExcelFilter` module is used to handle filtering action.\n */\nclass ExcelFilterBase extends CheckBoxFilterBase {\n /**\n * Constructor for excel filtering module\n * @hidden\n */\n constructor(parent, customFltrOperators) {\n super(parent);\n this.customFilterOperators = customFltrOperators;\n this.isExcel = true;\n }\n getCMenuDS(type, operator) {\n let options = {\n number: ['Equal', 'NotEqual', '', 'LessThan', 'LessThanOrEqual', 'GreaterThan',\n 'GreaterThanOrEqual', 'Between', '', 'CustomFilter'],\n string: ['Equal', 'NotEqual', '', 'StartsWith', 'EndsWith', '', 'Contains', '', 'CustomFilter'],\n };\n options.date = options.number;\n options.datetime = options.number;\n let model = [];\n for (let i = 0; i < options[type].length; i++) {\n if (options[type][i].length) {\n if (operator) {\n model.push({\n text: this.getLocalizedLabel(options[type][i]) + '...',\n iconCss: 'e-icons e-icon-check ' + (operator === options[type][i].toLowerCase() ? '' : 'e-emptyicon')\n });\n }\n else {\n model.push({\n text: this.getLocalizedLabel(options[type][i]) + '...'\n });\n }\n }\n else {\n model.push({ separator: true });\n }\n }\n return model;\n }\n /**\n * To destroy the filter bar.\n * @return {void}\n * @hidden\n */\n destroy() {\n if (this.dlg) {\n this.unwireExEvents();\n super.destroy();\n }\n if (this.cmenu && this.cmenu.parentElement) {\n remove(this.cmenu);\n }\n }\n createMenu(type, isFiltered, isCheckIcon) {\n let options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n this.menu = this.parent.createElement('div', { className: 'e-contextmenu-wrapper' });\n if (this.parent.enableRtl) {\n this.menu.classList.add('e-rtl');\n }\n else {\n this.menu.classList.remove('e-rtl');\n }\n let ul = this.parent.createElement('ul');\n let icon = isFiltered ? 'e-excl-filter-icon e-filtered' : 'e-excl-filter-icon';\n ul.appendChild(this.createMenuElem(this.getLocalizedLabel('ClearFilter'), isFiltered ? '' : 'e-disabled', icon));\n if (type !== 'boolean') {\n ul.appendChild(this.createMenuElem(this.getLocalizedLabel(options[type]), 'e-submenu', isCheckIcon && this.ensureTextFilter() ? 'e-icon-check' : icon + ' e-emptyicon', true));\n }\n this.menu.appendChild(ul);\n this.parent.notify(beforeFltrcMenuOpen, { element: this.menu });\n }\n createMenuElem(val, className, iconName, isSubMenu) {\n let li = this.parent.createElement('li', { className: className + ' e-menu-item' });\n li.innerHTML = val;\n li.insertBefore(this.parent.createElement('span', { className: 'e-menu-icon e-icons ' + iconName }), li.firstChild);\n if (isSubMenu) {\n li.appendChild(this.parent.createElement('span', { className: 'e-icons e-caret' }));\n }\n return li;\n }\n wireExEvents() {\n EventHandler.add(this.dlg, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.dlg, 'click', this.clickExHandler, this);\n }\n unwireExEvents() {\n EventHandler.remove(this.dlg, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.dlg, 'click', this.clickExHandler);\n }\n clickExHandler(e) {\n let menuItem = parentsUntil(e.target, 'e-menu-item');\n if (menuItem && this.getLocalizedLabel('ClearFilter') === menuItem.innerText.trim()) {\n this.clearFilter();\n this.closeDialog();\n }\n }\n destroyCMenu() {\n if (this.menuObj && !this.menuObj.isDestroyed) {\n this.menuObj.destroy();\n remove(this.cmenu);\n }\n }\n hoverHandler(e) {\n let target = e.target.querySelector('.e-contextmenu');\n let li = parentsUntil(e.target, 'e-menu-item');\n let focused = this.menu.querySelector('.e-focused');\n let isSubMenu;\n if (focused) {\n focused.classList.remove('e-focused');\n }\n if (li) {\n li.classList.add('e-focused');\n isSubMenu = li.classList.contains('e-submenu');\n }\n if (target) {\n return;\n }\n if (!isSubMenu) {\n let submenu = this.menu.querySelector('.e-submenu');\n if (!isNullOrUndefined(submenu)) {\n submenu.classList.remove('e-selected');\n }\n this.isCMenuOpen = false;\n this.destroyCMenu();\n }\n let selectedMenu = this.ensureTextFilter();\n if (!this.isCMenuOpen && isSubMenu) {\n li.classList.add('e-selected');\n this.isCMenuOpen = true;\n let menuOptions = {\n items: this.getCMenuDS(this.options.type, selectedMenu ? selectedMenu.replace(/\\s/g, '') : undefined),\n select: this.selectHandler.bind(this),\n onClose: this.destroyCMenu.bind(this),\n enableRtl: this.parent.enableRtl,\n beforeClose: this.preventClose\n };\n this.parent.element.appendChild(this.cmenu);\n this.menuObj = new ContextMenu(menuOptions, this.cmenu);\n let client = this.menu.querySelector('.e-submenu').getBoundingClientRect();\n let pos = { top: 0, left: 0 };\n if (Browser.isDevice) {\n let contextRect = this.getContextBounds(this.menuObj);\n pos.top = (window.innerHeight - contextRect.height) / 2;\n pos.left = (window.innerWidth - contextRect.width) / 2;\n this.closeDialog();\n }\n else {\n pos.top = Browser.isIE ? window.pageYOffset + client.top : window.scrollY + client.top;\n pos.left = this.getCMenuYPosition(this.dlg, this.menuObj);\n }\n this.menuObj.open(pos.top, pos.left, e.target);\n applyBiggerTheme(this.parent.element, this.menuObj.element.parentElement);\n }\n }\n ensureTextFilter() {\n let selectedMenu;\n let predicates = this.existingPredicate[this.options.field];\n if (predicates && predicates.length === 2) {\n if (predicates[0].operator === 'greaterthanorequal' && predicates[1].operator === 'lessthanorequal') {\n selectedMenu = 'between';\n }\n else {\n selectedMenu = 'customfilter';\n }\n }\n else {\n if (predicates && predicates.length === 1) {\n this.optrData = this.customFilterOperators[this.options.type + 'Operator'];\n selectedMenu = predicates[0].operator;\n }\n }\n return selectedMenu;\n }\n preventClose(args) {\n if (args.event instanceof MouseEvent && args.event.target.classList.contains('e-submenu')) {\n args.cancel = true;\n }\n }\n getContextBounds(context) {\n let elementVisible = this.menuObj.element.style.display;\n this.menuObj.element.style.display = 'block';\n return this.menuObj.element.getBoundingClientRect();\n }\n getCMenuYPosition(target, context) {\n let contextWidth = this.getContextBounds(context).width;\n let targetPosition = target.getBoundingClientRect();\n let leftPos = targetPosition.right + contextWidth - this.parent.element.clientWidth;\n let targetBorder = target.offsetWidth - target.clientWidth;\n targetBorder = targetBorder ? targetBorder + 1 : 0;\n return (leftPos < 1) ? (targetPosition.right + 1 - targetBorder) : (targetPosition.left - contextWidth - 1 + targetBorder);\n }\n openDialog(options) {\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n this.dialogObj.dataBind();\n let filterLength = (this.existingPredicate[options.field] && this.existingPredicate[options.field].length) ||\n this.options.filteredColumns.filter((col) => {\n return this.options.field === col.field;\n }).length;\n this.createMenu(options.type, filterLength > 0, (filterLength === 1 || filterLength === 2));\n this.dlg.insertBefore(this.menu, this.dlg.firstChild);\n this.dlg.classList.add('e-excelfilter');\n if (this.parent.enableRtl) {\n this.dlg.classList.add('e-rtl');\n }\n this.dlg.classList.remove('e-checkboxfilter');\n this.cmenu = this.parent.createElement('ul', { className: 'e-excel-menu' });\n this.wireExEvents();\n }\n closeDialog() {\n super.closeDialog();\n }\n selectHandler(e) {\n if (e.item) {\n this.menuItem = e.item;\n this.renderDialogue(e);\n }\n }\n renderDialogue(e) {\n let target = e.element;\n let column = this.options.field;\n let isComplex = !isNullOrUndefined(column) && isComplexField(column);\n let complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n let mainDiv = this.parent.createElement('div', {\n className: 'e-xlfl-maindiv',\n id: isComplex ? complexFieldName + '-xlflmenu' : column + '-xlflmenu'\n });\n this.dlgDiv = this.parent.createElement('div', {\n className: 'e-xlflmenu',\n id: isComplex ? complexFieldName + '-xlfldlg' : column + '-xlfldlg'\n });\n this.parent.element.appendChild(this.dlgDiv);\n this.dlgObj = new Dialog({\n header: this.getLocalizedLabel('CustomFilter'),\n isModal: true,\n overlayClick: this.removeDialog.bind(this),\n showCloseIcon: true,\n closeOnEscape: false,\n target: document.body,\n // target: this.parent.element,\n visible: false,\n enableRtl: this.parent.enableRtl,\n open: () => {\n let row = this.dlgObj.element.querySelector('table.e-xlfl-table>tr');\n if (this.options.column.filterTemplate) {\n if (isBlazor()) {\n row.querySelector('.e-xlfl-valuediv').children[0].focus();\n }\n else {\n row.querySelector('#' + this.options.column.field + '-xlfl-frstvalue').focus();\n }\n }\n else {\n row.cells[1].querySelector('input:not([type=hidden])').focus();\n }\n },\n close: this.removeDialog.bind(this),\n created: this.createdDialog.bind(this, target, column),\n buttons: [{\n click: this.filterBtnClick.bind(this, column),\n buttonModel: {\n content: this.getLocalizedLabel('OKButton'), isPrimary: true, cssClass: 'e-xlfl-okbtn'\n }\n },\n {\n click: this.removeDialog.bind(this),\n buttonModel: { content: this.getLocalizedLabel('CancelButton'), cssClass: 'e-xlfl-cancelbtn' }\n }],\n content: mainDiv,\n width: 430,\n animationSettings: { effect: 'None' },\n });\n let isStringTemplate = 'isStringTemplate';\n this.dlgObj[isStringTemplate] = true;\n this.dlgDiv.setAttribute('aria-label', this.getLocalizedLabel('CustomFilterDialogARIA'));\n this.dlgObj.appendTo(this.dlgDiv);\n }\n removeDialog() {\n if (isBlazor()) {\n let columns = this.options.columns || [];\n for (let i = 0; i < columns.length; i++) {\n if (columns[i].filterTemplate) {\n let tempID = this.parent.element.id + columns[i].uid + 'filterTemplate';\n updateBlazorTemplate(tempID, 'FilterTemplate', columns[i]);\n }\n }\n }\n this.removeObjects([this.dropOptr, this.datePicker, this.dateTimePicker, this.actObj, this.numericTxtObj, this.dlgObj]);\n remove(this.dlgDiv);\n }\n createdDialog(target, column) {\n this.renderCustomFilter(target, column);\n this.dlgObj.element.style.left = '0px';\n this.dlgObj.element.style.top = '0px';\n if (Browser.isDevice && window.innerWidth < 440) {\n this.dlgObj.element.style.width = '90%';\n }\n this.parent.notify(beforeCustomFilterOpen, { column: column, dialog: this.dialogObj });\n this.dlgObj.show();\n applyBiggerTheme(this.parent.element, this.dlgObj.element.parentElement);\n }\n renderCustomFilter(target, column) {\n let dlgConetntEle = this.dlgObj.element.querySelector('.e-xlfl-maindiv');\n /* tslint:disable-next-line:max-line-length */\n let dlgFields = this.parent.createElement('div', { innerHTML: this.getLocalizedLabel('ShowRowsWhere'), className: 'e-xlfl-dlgfields' });\n dlgConetntEle.appendChild(dlgFields);\n //column name\n let fieldSet = this.parent.createElement('div', { innerHTML: this.options.displayName, className: 'e-xlfl-fieldset' });\n dlgConetntEle.appendChild(fieldSet);\n this.renderFilterUI(column, dlgConetntEle);\n }\n filterBtnClick(col) {\n let isComplex = !isNullOrUndefined(col) && isComplexField(col);\n let complexFieldName = !isNullOrUndefined(col) && getComplexFieldID(col);\n let colValue = isComplex ? complexFieldName : col;\n let fValue = this.options.column.filterTemplate && isBlazor() ?\n this.dlgDiv.querySelector('.-xlfl-frstvalue').children[0].querySelector('.e-control').ej2_instances[0]\n : this.dlgDiv.querySelector('#' + colValue + '-xlfl-frstvalue').ej2_instances[0];\n let fOperator = this.dlgDiv.querySelector('#' + colValue + '-xlfl-frstoptr').ej2_instances[0];\n let sValue = this.options.column.filterTemplate && isBlazor() ?\n this.dlgDiv.querySelector('.-xlfl-secndvalue').children[0].querySelector('.e-control').ej2_instances[0]\n : this.dlgDiv.querySelector('#' + colValue + '-xlfl-secndvalue').ej2_instances[0];\n let sOperator = this.dlgDiv.querySelector('#' + colValue + '-xlfl-secndoptr').ej2_instances[0];\n let checkBoxValue;\n if (this.options.type === 'string') {\n let checkBox = this.dlgDiv.querySelector('#' + colValue + '-xlflmtcase').ej2_instances[0];\n checkBoxValue = checkBox.checked;\n }\n let andRadio = this.dlgDiv.querySelector('#' + colValue + 'e-xlfl-frstpredicate').ej2_instances[0];\n let orRadio = this.dlgDiv.querySelector('#' + colValue + 'e-xlfl-secndpredicate').ej2_instances[0];\n let predicate = (andRadio.checked ? 'and' : 'or');\n if (sValue.value === null) {\n predicate = 'or';\n }\n this.filterByColumn(this.options.field, fOperator.value, fValue.value, predicate, checkBoxValue, this.options.ignoreAccent, sOperator.value, sValue.value);\n this.removeDialog();\n }\n /**\n * @hidden\n * Filters grid row by column name with given options.\n * @param {string} fieldName - Defines the field name of the filter column.\n * @param {string} firstOperator - Defines the first operator by how to filter records.\n * @param {string | number | Date | boolean} firstValue - Defines the first value which is used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query with another by using AND or OR predicate.\n * @param {boolean} matchCase - If ignore case set to true, then filter records with exact match or else\n * filter records with case insensitive(uppercase and lowercase letters treated as same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true, then ignores the diacritic characters or accents when filtering.\n * @param {string} secondOperator - Defines the second operator by how to filter records.\n * @param {string | number | Date | boolean} secondValue - Defines the first value which is used to filter records.\n */\n filterByColumn(fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue) {\n let col = this.parent.getColumnByField ? this.parent.getColumnByField(fieldName) : this.options.column;\n let field = this.isForeignColumn(col) ? col.foreignKeyValue : fieldName;\n let fColl = [];\n let mPredicate;\n fColl.push({\n field: field,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: firstOperator,\n value: firstValue,\n type: this.options.type\n });\n let arg = {\n instance: this, handler: this.filterByColumn, arg1: fieldName, arg2: firstOperator, arg3: firstValue, arg4: predicate,\n arg5: matchCase, arg6: ignoreAccent, arg7: secondOperator, arg8: secondValue, cancel: false\n };\n this.parent.notify(fltrPrevent, arg);\n if (arg.cancel) {\n return;\n }\n mPredicate = new Predicate(field, firstOperator.toLowerCase(), firstValue, !matchCase, ignoreAccent);\n if (!isNullOrUndefined(secondValue) && !isNullOrUndefined(secondOperator)) {\n fColl.push({\n field: field,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: secondOperator,\n value: secondValue,\n type: this.options.type\n });\n /* tslint:disable-next-line:max-line-length */\n mPredicate = mPredicate[predicate](field, secondOperator.toLowerCase(), secondValue, !matchCase, ignoreAccent);\n }\n let args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: mPredicate, actualPredicate: fColl\n };\n if (this.isForeignColumn(col)) {\n this.foreignKeyFilter(args, fColl, mPredicate);\n }\n else {\n this.options.handler(args);\n }\n }\n /* tslint:disable-next-line:max-line-length */\n renderOperatorUI(column, table, elementID, predicates, isFirst) {\n let fieldElement = this.parent.createElement('tr', { className: 'e-xlfl-fields' });\n table.appendChild(fieldElement);\n let xlfloptr = this.parent.createElement('td', { className: 'e-xlfl-optr' });\n fieldElement.appendChild(xlfloptr);\n let optrDiv = this.parent.createElement('div', { className: 'e-xlfl-optrdiv' });\n let isComplex = !isNullOrUndefined(column) && isComplexField(column);\n let complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n let optrInput = this.parent\n .createElement('input', { id: isComplex ? complexFieldName + elementID : column + elementID });\n optrDiv.appendChild(optrInput);\n xlfloptr.appendChild(optrDiv);\n let optr = this.options.type + 'Operator';\n let dropDatasource = this.customFilterOperators[optr];\n this.optrData = dropDatasource;\n let selectedValue = this.dropSelectedVal(this.options.column, predicates, isFirst);\n //Trailing three dots are sliced.\n let menuText = '';\n if (this.menuItem) {\n menuText = this.menuItem.text.slice(0, -3);\n if (menuText !== this.getLocalizedLabel('CustomFilter')) {\n selectedValue = isFirst ? menuText : undefined;\n }\n if (menuText === this.getLocalizedLabel('Between')) {\n selectedValue = this.getLocalizedLabel(isFirst ? 'GreaterThanOrEqual' : 'LessThanOrEqual');\n }\n }\n let col = this.options.column;\n this.dropOptr = new DropDownList(extend$1({\n dataSource: dropDatasource,\n fields: { text: 'text', value: 'value' },\n text: selectedValue,\n open: this.dropDownOpen.bind(this),\n enableRtl: this.parent.enableRtl,\n change: this.dropDownValueChange.bind(this)\n }, col.filter.params));\n this.dropOptr.appendTo(optrInput);\n let operator = this.getSelectedValue(selectedValue);\n return { fieldElement, operator };\n }\n dropDownOpen(args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n }\n dropDownValueChange(args) {\n if (args.element.id.includes('-xlfl-frstoptr')) {\n this.firstOperator = args.value.toString();\n }\n else {\n this.secondOperator = args.value.toString();\n }\n }\n /**\n * @hidden\n */\n getFilterUIInfo() {\n return { firstOperator: this.firstOperator, secondOperator: this.secondOperator, field: this.options.field };\n }\n getSelectedValue(text) {\n let selectedField = new DataManager(this.optrData).executeLocal(new Query().where('text', 'equal', text));\n return !isNullOrUndefined(selectedField[0]) ? selectedField[0].value : '';\n }\n dropSelectedVal(col, predicates, isFirst) {\n let operator;\n if (predicates && predicates.length > 0) {\n operator = predicates.length === 2 ?\n (isFirst ? predicates[0].operator : predicates[1].operator) :\n (isFirst ? predicates[0].operator : undefined);\n }\n else if (isFirst && col.type === 'string' && !col.filter.operator) {\n operator = 'startswith';\n }\n else {\n operator = isFirst ? col.filter.operator || 'equal' : undefined;\n }\n return this.getSelectedText(operator);\n }\n getSelectedText(operator) {\n let selectedField = new DataManager(this.optrData).executeLocal(new Query().where('value', 'equal', operator));\n return !isNullOrUndefined(selectedField[0]) ? selectedField[0].text : '';\n }\n renderFilterUI(column, dlgConetntEle) {\n let predicates = this.existingPredicate[column];\n let table = this.parent.createElement('table', { className: 'e-xlfl-table' });\n dlgConetntEle.appendChild(table);\n let colGroup = this.parent.createElement('colGroup');\n colGroup.innerHTML = '';\n table.appendChild(colGroup);\n //Renders first dropdown\n /* tslint:disable-next-line:max-line-length */\n let optr = this.renderOperatorUI(column, table, '-xlfl-frstoptr', predicates, true);\n this.firstOperator = optr.operator;\n //Renders first value\n this.renderFlValueUI(column, optr, '-xlfl-frstvalue', predicates, true);\n let predicate = this.parent.createElement('tr', { className: 'e-xlfl-predicate' });\n table.appendChild(predicate);\n //Renders first radion button\n this.renderRadioButton(column, predicate, predicates);\n //Renders second dropdown\n optr = this.renderOperatorUI(column, table, '-xlfl-secndoptr', predicates, false);\n this.secondOperator = optr.operator;\n //Renders second text box\n this.renderFlValueUI(column, optr, '-xlfl-secndvalue', predicates, false);\n }\n renderRadioButton(column, tr, predicates) {\n let td = this.parent.createElement('td', { className: 'e-xlfl-radio', attrs: { 'colSpan': '2' } });\n tr.appendChild(td);\n let radioDiv = this.parent\n .createElement('div', { className: 'e-xlfl-radiodiv', attrs: { 'style': 'display: inline-block' } });\n let isComplex = !isNullOrUndefined(column) && isComplexField(column);\n let complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n /* tslint:disable-next-line:max-line-length */\n let frstpredicate = this.parent.createElement('input', { id: isComplex ? complexFieldName + 'e-xlfl-frstpredicate' : column + 'e-xlfl-frstpredicate', attrs: { 'type': 'radio' } });\n /* tslint:disable-next-line:max-line-length */\n let secndpredicate = this.parent.createElement('input', { id: isComplex ? complexFieldName + 'e-xlfl-secndpredicate' : column + 'e-xlfl-secndpredicate', attrs: { 'type': 'radio' } });\n //appends into div\n radioDiv.appendChild(frstpredicate);\n radioDiv.appendChild(secndpredicate);\n td.appendChild(radioDiv);\n if (this.options.type === 'string') {\n this.renderMatchCase(column, tr, td, '-xlflmtcase', predicates);\n }\n // Initialize AND RadioButton component.\n /* tslint:disable-next-line:max-line-length */\n let andRadio = new RadioButton({ label: this.getLocalizedLabel('AND'), name: 'default', cssClass: 'e-xlfl-radio-and', checked: true, enableRtl: this.parent.enableRtl });\n // Initialize OR RadioButton component.\n /* tslint:disable-next-line:max-line-length */\n let orRadio = new RadioButton({ label: this.getLocalizedLabel('OR'), name: 'default', cssClass: 'e-xlfl-radio-or', enableRtl: this.parent.enableRtl });\n let flValue = predicates && predicates.length === 2 ? predicates[1].predicate : 'and';\n if (flValue === 'and') {\n andRadio.checked = true;\n orRadio.checked = false;\n }\n else {\n orRadio.checked = true;\n andRadio.checked = false;\n }\n // Render initialized RadioButton.\n andRadio.appendTo(frstpredicate);\n orRadio.appendTo(secndpredicate);\n }\n /* tslint:disable-next-line:no-any */\n removeObjects(elements) {\n for (let obj of elements) {\n if (obj && !obj.isDestroyed) {\n obj.destroy();\n }\n }\n }\n /* tslint:disable-next-line:max-line-length */\n renderFlValueUI(column, optr, elementId, predicates, isFirst) {\n let value = this.parent.createElement('td', { className: 'e-xlfl-value' });\n optr.fieldElement.appendChild(value);\n let isComplex = !isNullOrUndefined(column) && isComplexField(column);\n let complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n let valueDiv = this.parent.createElement('div', { className: 'e-xlfl-valuediv' });\n let isFilteredCol = this.options.filteredColumns.some((col) => { return column === col.field; });\n let fltrPredicates = this.options.filteredColumns.filter((col) => col.field === column);\n if (this.options.column.filterTemplate) {\n let data = {};\n let columnObj = this.options.column;\n if (isFilteredCol && elementId) {\n data = this.getExcelFilterData(elementId, data, columnObj, predicates, fltrPredicates);\n }\n let tempID = this.parent.element.id + columnObj.uid + 'filterTemplate';\n let element = this.options.column.getFilterTemplate()(data, this.parent, 'filterTemplate', tempID);\n appendChildren(valueDiv, element);\n if (isBlazor()) {\n valueDiv.children[0].classList.add(elementId);\n if (this.dlgDiv.querySelectorAll('.e-xlfl-value').length > 1) {\n updateBlazorTemplate(tempID, 'FilterTemplate', columnObj);\n }\n }\n else {\n valueDiv.children[0].id = isComplex ? complexFieldName + elementId : column + elementId;\n }\n value.appendChild(valueDiv);\n }\n else {\n let valueInput = this.parent\n .createElement('input', { id: isComplex ? complexFieldName + elementId : column + elementId });\n valueDiv.appendChild(valueInput);\n value.appendChild(valueDiv);\n let flValue;\n let predicate;\n if (predicates && predicates.length > 0) {\n predicate = predicates.length === 2 ?\n (isFirst ? predicates[0] : predicates[1]) :\n (isFirst ? predicates[0] : undefined);\n flValue = (predicate && predicate.operator === optr.operator) ? predicate.value : undefined;\n }\n let types = {\n 'string': this.renderAutoComplete.bind(this),\n 'number': this.renderNumericTextBox.bind(this),\n 'date': this.renderDate.bind(this),\n 'datetime': this.renderDateTime.bind(this)\n };\n types[this.options.type](this.options, column, valueInput, flValue, this.parent.enableRtl);\n }\n }\n /* tslint:disable-next-line:max-line-length */\n getExcelFilterData(elementId, data, columnObj, predicates, fltrPredicates) {\n let predIndex = elementId === '-xlfl-frstvalue' ? 0 : 1;\n if (elementId === '-xlfl-frstvalue' || fltrPredicates.length > 1) {\n data = { column: predicates instanceof Array ? predicates[predIndex] : predicates };\n let indx = this.options.column.columnData && fltrPredicates.length > 1 ?\n (this.options.column.columnData.length === 1 ? 0 : 1) : predIndex;\n data[this.options.field] = columnObj.foreignKeyValue ? this.options.column.columnData[indx][columnObj.foreignKeyValue] :\n fltrPredicates[indx].value;\n if (this.options.foreignKeyValue) {\n data[this.options.foreignKeyValue] = this.options.column.columnData[indx][columnObj.foreignKeyValue];\n }\n }\n return data;\n }\n /* tslint:disable-next-line:max-line-length */\n renderMatchCase(column, tr, matchCase, elementId, predicates) {\n /* tslint:disable-next-line:max-line-length */\n let matchCaseDiv = this.parent.createElement('div', { className: 'e-xlfl-matchcasediv', attrs: { 'style': 'display: inline-block' } });\n let isComplex = !isNullOrUndefined(column) && isComplexField(column);\n let complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n let matchCaseInput = this.parent.createElement('input', { id: isComplex ? complexFieldName + elementId : column + elementId, attrs: { 'type': 'checkbox' } });\n matchCaseDiv.appendChild(matchCaseInput);\n matchCase.appendChild(matchCaseDiv);\n let flValue = predicates && predicates.length > 0 ?\n (predicates && predicates.length === 2 ? predicates[1].matchCase : predicates[0].matchCase) :\n false;\n // Initialize Match Case check box.\n let checkbox = new CheckBox({\n label: this.getLocalizedLabel('MatchCase'),\n enableRtl: this.parent.enableRtl, checked: flValue\n });\n // Render initialized CheckBox.\n checkbox.appendTo(matchCaseInput);\n }\n /* tslint:disable-next-line:max-line-length */\n renderDate(options, column, inputValue, fValue, isRtl) {\n let format = getCustomDateFormat(options.format, options.type);\n this.datePicker = new DatePicker(extend$1({\n format: format,\n cssClass: 'e-popup-flmenu',\n placeholder: this.getLocalizedLabel('CustomFilterDatePlaceHolder'),\n width: '100%',\n enableRtl: isRtl,\n value: new Date(fValue),\n locale: this.parent.locale,\n }, options.column.filter.params));\n this.datePicker.appendTo(inputValue);\n }\n /* tslint:disable-next-line:max-line-length */\n renderDateTime(options, column, inputValue, fValue, isRtl) {\n let format = getCustomDateFormat(options.format, options.type);\n this.dateTimePicker = new DateTimePicker(extend$1({\n format: format,\n cssClass: 'e-popup-flmenu',\n placeholder: this.getLocalizedLabel('CustomFilterDatePlaceHolder'),\n width: '100%',\n enableRtl: isRtl,\n value: new Date(fValue),\n locale: this.parent.locale,\n }, options.column.filter.params));\n this.dateTimePicker.appendTo(inputValue);\n }\n completeAction(e) {\n e.result = distinctStringValues(e.result);\n }\n /* tslint:disable-next-line:max-line-length */\n renderNumericTextBox(options, column, inputValue, fValue, isRtl) {\n this.numericTxtObj = new NumericTextBox(extend$1({\n format: options.format,\n placeholder: this.getLocalizedLabel('CustomFilterPlaceHolder'),\n enableRtl: isRtl,\n value: fValue,\n locale: this.parent.locale,\n }, options.column.filter.params));\n this.numericTxtObj.appendTo(inputValue);\n }\n /* tslint:disable-next-line:max-line-length */\n renderAutoComplete(options, column, inputValue, fValue, isRtl) {\n let colObj = this.options.column;\n let isForeignColumn = this.isForeignColumn(colObj);\n let dataSource = isForeignColumn ? colObj.dataSource : options.dataSource;\n let fields = { value: isForeignColumn ? colObj.foreignKeyValue : column };\n let actObj = new AutoComplete(extend$1({\n dataSource: dataSource instanceof DataManager ? dataSource : new DataManager(dataSource),\n fields: fields,\n query: this.getQuery(),\n sortOrder: 'Ascending',\n locale: this.parent.locale,\n cssClass: 'e-popup-flmenu',\n autofill: true,\n focus: () => {\n let isComplex = !isNullOrUndefined(column) && isComplexField(column);\n let complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n let columnvalue = isComplex ? complexFieldName : column;\n actObj.filterType = this.dlgDiv.querySelector('#' + columnvalue +\n (inputValue.id === (columnvalue + '-xlfl-frstvalue') ?\n '-xlfl-frstoptr' :\n '-xlfl-secndoptr')).ej2_instances[0].value;\n actObj.ignoreCase = options.type === 'string' ?\n !this.dlgDiv.querySelector('#' + columnvalue + '-xlflmtcase').ej2_instances[0].checked :\n true;\n actObj.filterType = !isNullOrUndefined(actObj.filterType) ? actObj.filterType :\n 'equal';\n },\n placeholder: this.getLocalizedLabel('CustomFilterPlaceHolder'),\n enableRtl: isRtl,\n actionComplete: (e) => {\n let isComplex = !isNullOrUndefined(column) && isComplexField(column);\n e.result = e.result.filter((obj, index, arr) => {\n return arr.map((mapObject) => {\n return isComplex ? this.performComplexDataOperation(actObj.fields.value, mapObject)\n : mapObject[actObj.fields.value];\n }).indexOf(isComplex ? this.performComplexDataOperation(actObj.fields.value, obj) :\n obj[this.actObj.fields.value]) === index;\n });\n },\n value: fValue\n }, colObj.filter.params));\n if (dataSource && 'result' in dataSource) {\n let defObj = eventPromise({ requestType: 'stringfilterrequest' }, this.getQuery());\n this.parent.trigger(dataStateChange, defObj.state);\n let def = defObj.deffered;\n def.promise.then((e) => {\n actObj.dataSource = new DataManager(e);\n });\n }\n actObj.appendTo(inputValue);\n this.actObj = actObj;\n }\n performComplexDataOperation(value, mapObject) {\n let returnObj;\n let length = value.split('.').length;\n let splits = value.split('.');\n let duplicateMap = mapObject;\n for (let i = 0; i < length; i++) {\n returnObj = duplicateMap[splits[i]];\n duplicateMap = returnObj;\n }\n return returnObj;\n }\n}\n\n/**\n * Common export\n */\n\n/**\n * Base export\n */\n\n/**\n *\n * The `Sort` module is used to handle sorting action.\n */\nclass Sort {\n /**\n * Constructor for Grid sorting module\n * @hidden\n */\n constructor(parent, sortSettings, sortedColumns, locator) {\n this.contentRefresh = true;\n this.isModelChanged = true;\n this.aria = new AriaService();\n this.currentTarget = null;\n this.parent = parent;\n this.sortSettings = sortSettings;\n this.sortedColumns = sortedColumns;\n this.focus = locator.getService('focus');\n this.addEventListener();\n }\n /**\n * The function used to update sortSettings\n * @return {void}\n * @hidden\n */\n updateModel() {\n let sortedColumn = { field: this.columnName, direction: this.direction };\n let index;\n let gCols = this.parent.groupSettings.columns;\n let flag = false;\n if (!this.isMultiSort) {\n if (!gCols.length) {\n this.sortSettings.columns = [sortedColumn];\n }\n else {\n let sortedCols = [];\n for (let i = 0, len = gCols.length; i < len; i++) {\n index = this.getSortedColsIndexByField(gCols[i], sortedCols);\n if (this.columnName === gCols[i]) {\n flag = true;\n sortedCols.push(sortedColumn);\n }\n else {\n let sCol = this.getSortColumnFromField(gCols[i]);\n sortedCols.push({ field: sCol.field, direction: sCol.direction, isFromGroup: sCol.isFromGroup });\n }\n }\n if (!flag) {\n sortedCols.push(sortedColumn);\n }\n this.sortSettings.columns = sortedCols;\n }\n }\n else {\n index = this.getSortedColsIndexByField(this.columnName);\n if (index > -1) {\n this.sortSettings.columns.splice(index, 1);\n }\n this.sortSettings.columns.push(sortedColumn);\n this.sortSettings.columns = this.sortSettings.columns;\n }\n this.parent.dataBind();\n this.lastSortedCol = this.columnName;\n }\n /**\n * The function used to trigger onActionComplete\n * @return {void}\n * @hidden\n */\n onActionComplete(e) {\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\n let args = !this.isRemove ? {\n columnName: this.columnName, direction: this.direction, requestType: 'sorting', type: actionComplete\n } : { requestType: 'sorting', type: actionComplete };\n this.isRemove = false;\n this.parent.trigger(actionComplete, extend(e, args));\n }\n /**\n * Sorts a column with the given options.\n * @param {string} columnName - Defines the column name to sort.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previously sorted columns are to be maintained.\n * @return {void}\n */\n sortColumn(columnName, direction, isMultiSort) {\n let gObj = this.parent;\n if (this.parent.getColumnByField(columnName).allowSorting === false || this.parent.isContextMenuOpen()) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: columnName });\n return;\n }\n if (!gObj.allowMultiSorting) {\n isMultiSort = gObj.allowMultiSorting;\n }\n if (this.isActionPrevent()) {\n gObj.notify(preventBatch, {\n instance: this, handler: this.sortColumn,\n arg1: columnName, arg2: direction, arg3: isMultiSort\n });\n return;\n }\n this.backupSettings();\n this.columnName = columnName;\n this.direction = direction;\n this.isMultiSort = isMultiSort;\n this.removeSortIcons();\n let column = gObj.getColumnHeaderByField(columnName);\n this.updateSortedCols(columnName, isMultiSort);\n this.updateModel();\n }\n backupSettings() {\n this.lastSortedCols = iterateExtend(this.sortSettings.columns);\n this.lastCols = this.sortedColumns;\n }\n restoreSettings() {\n this.isModelChanged = false;\n this.isMultiSort = true;\n this.parent.setProperties({ sortSettings: { columns: this.lastSortedCols } }, true);\n //this.parent.sortSettings.columns = this.lastSortedCols; \n this.sortedColumns = this.lastCols;\n this.isModelChanged = true;\n }\n updateSortedCols(columnName, isMultiSort) {\n if (!isMultiSort) {\n if (this.parent.allowGrouping) {\n for (let i = 0, len = this.sortedColumns.length; i < len; i++) {\n if (this.parent.groupSettings.columns.indexOf(this.sortedColumns[i]) < 0) {\n this.sortedColumns.splice(i, 1);\n len--;\n i--;\n }\n }\n }\n else {\n this.sortedColumns.splice(0, this.sortedColumns.length);\n }\n }\n if (this.sortedColumns.indexOf(columnName) < 0) {\n this.sortedColumns.push(columnName);\n }\n }\n /**\n * @hidden\n */\n onPropertyChanged(e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (this.contentRefresh) {\n let args = this.sortSettings.columns.length ? {\n columnName: this.columnName, direction: this.direction, requestType: 'sorting',\n type: actionBegin, target: this.currentTarget, cancel: false\n } : {\n requestType: 'sorting', type: actionBegin, cancel: false,\n target: this.currentTarget\n };\n this.parent.notify(modelChanged, args);\n }\n this.refreshSortSettings();\n this.removeSortIcons();\n this.addSortIcons();\n }\n refreshSortSettings() {\n this.sortedColumns.length = 0;\n let sortColumns = this.sortSettings.columns;\n for (let i = 0; i < sortColumns.length; i++) {\n if (!sortColumns[i].isFromGroup) {\n this.sortedColumns.push(sortColumns[i].field);\n }\n }\n }\n /**\n * Clears all the sorted columns of the Grid.\n * @return {void}\n */\n clearSorting() {\n let cols = getActualPropFromColl(this.sortSettings.columns);\n if (this.isActionPrevent()) {\n this.parent.notify(preventBatch, { instance: this, handler: this.clearSorting });\n return;\n }\n for (let i = 0, len = cols.length; i < len; i++) {\n this.removeSortColumn(cols[i].field);\n }\n if (isBlazor() && !this.parent.isJsComponent) {\n this.sortSettings.columns = this.sortSettings.columns;\n }\n }\n isActionPrevent() {\n return isActionPrevent(this.parent);\n }\n /**\n * Remove sorted column by field name.\n * @param {string} field - Defines the column field name to remove sort.\n * @return {void}\n * @hidden\n */\n removeSortColumn(field) {\n let gObj = this.parent;\n let cols = this.sortSettings.columns;\n if (cols.length === 0 && this.sortedColumns.indexOf(field) < 0) {\n return;\n }\n if (this.isActionPrevent()) {\n this.parent.notify(preventBatch, { instance: this, handler: this.removeSortColumn, arg1: field });\n return;\n }\n this.backupSettings();\n this.removeSortIcons();\n for (let i = 0, len = cols.length; i < len; i++) {\n if (cols[i].field === field) {\n if (gObj.allowGrouping && gObj.groupSettings.columns.indexOf(cols[i].field) > -1) {\n continue;\n }\n this.sortedColumns.splice(this.sortedColumns.indexOf(cols[i].field), 1);\n cols.splice(i, 1);\n this.isRemove = true;\n if (this.isModelChanged) {\n this.parent.notify(modelChanged, {\n requestType: 'sorting', type: actionBegin, target: this.currentTarget\n });\n }\n break;\n }\n }\n this.addSortIcons();\n }\n getSortedColsIndexByField(field, sortedColumns) {\n let cols = sortedColumns ? sortedColumns : this.sortSettings.columns;\n for (let i = 0, len = cols.length; i < len; i++) {\n if (cols[i].field === field) {\n return i;\n }\n }\n return -1;\n }\n /**\n * For internal use only - Get the module name.\n * @private\n */\n getModuleName() {\n return 'sort';\n }\n initialEnd() {\n this.parent.off(contentReady, this.initialEnd);\n let isServerRendered = 'isServerRendered';\n if (isBlazor() && this.parent[isServerRendered]) {\n return;\n }\n if (this.parent.getColumns().length && this.sortSettings.columns.length) {\n let gObj = this.parent;\n this.contentRefresh = false;\n this.isMultiSort = this.sortSettings.columns.length > 1;\n for (let col of gObj.sortSettings.columns.slice()) {\n if (this.sortedColumns.indexOf(col.field) > -1) {\n this.sortColumn(col.field, col.direction, true);\n }\n }\n this.isMultiSort = false;\n this.contentRefresh = true;\n }\n }\n /**\n * @hidden\n */\n addEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(contentReady, this.initialEnd, this);\n this.parent.on(sortComplete, this.onActionComplete, this);\n this.parent.on(inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(click, this.clickHandler, this);\n this.parent.on(headerRefreshed, this.refreshSortIcons, this);\n this.parent.on(keyPressed, this.keyPressed, this);\n this.parent.on(cancelBegin, this.cancelBeginEvent, this);\n }\n /**\n * @hidden\n */\n removeEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(sortComplete, this.onActionComplete);\n this.parent.off(inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(click, this.clickHandler);\n this.parent.off(headerRefreshed, this.refreshSortIcons);\n this.parent.off(keyPressed, this.keyPressed);\n this.parent.off(cancelBegin, this.cancelBeginEvent);\n }\n /**\n * To destroy the sorting\n * @return {void}\n * @hidden\n */\n destroy() {\n this.isModelChanged = false;\n let gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.e-gridheader') && !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n if (this.parent.element.querySelector('.e-gridpopup').querySelectorAll('.e-sortdirect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n // tslint:disable-next-line:no-any\n if (!this.parent.refreshing) {\n this.clearSorting();\n }\n this.isModelChanged = true;\n this.removeEventListener();\n }\n cancelBeginEvent(e) {\n if (e.requestType === 'sorting') {\n this.restoreSettings();\n this.refreshSortIcons();\n this.isMultiSort = true;\n }\n }\n clickHandler(e) {\n this.currentTarget = null;\n this.popUpClickHandler(e);\n let target = closest(e.target, '.e-headercell');\n if (target && !e.target.classList.contains('e-grptogglebtn') &&\n !(target.classList.contains('e-resized')) &&\n !e.target.classList.contains('e-rhandler') &&\n !e.target.classList.contains('e-columnmenu') &&\n !e.target.classList.contains('e-filtermenudiv') &&\n !parentsUntil(e.target, 'e-stackedheadercell')) {\n let gObj = this.parent;\n let colObj = gObj.getColumnByUid(target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n let direction = !target.querySelectorAll('.e-ascending').length ? 'Ascending' :\n 'Descending';\n if (colObj.type !== 'checkbox') {\n this.initiateSort(target, e, colObj);\n if (Browser.isDevice) {\n this.showPopUp(e);\n }\n }\n }\n if (target) {\n target.classList.remove('e-resized');\n }\n }\n keyPressed(e) {\n let ele = e.target;\n if (!this.parent.isEdit && (e.action === 'enter' || e.action === 'ctrlEnter' || e.action === 'shiftEnter')\n && closest(ele, '.e-headercell')) {\n let target = this.focus.getFocusedElement();\n if (isNullOrUndefined(target) || !target.classList.contains('e-headercell')\n || !target.querySelector('.e-headercelldiv')) {\n return;\n }\n let col = this.parent.getColumnByUid(target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n this.initiateSort(target, e, col);\n }\n }\n initiateSort(target, e, column) {\n let gObj = this.parent;\n let field = column.field;\n this.currentTarget = e.target;\n let direction = !target.querySelectorAll('.e-ascending').length ? 'Ascending' :\n 'Descending';\n if (e.shiftKey || (this.sortSettings.allowUnsort && target.querySelectorAll('.e-descending').length)\n && !(gObj.groupSettings.columns.indexOf(field) > -1)) {\n this.removeSortColumn(field);\n if (isBlazor() && !this.parent.isJsComponent) {\n this.sortSettings.columns = this.sortSettings.columns;\n }\n }\n else {\n this.sortColumn(field, direction, e.ctrlKey || this.enableSortMultiTouch ||\n (navigator.userAgent.indexOf('Mac OS') !== -1 && e.metaKey));\n }\n }\n showPopUp(e) {\n let target = closest(e.target, '.e-headercell');\n if (!isNullOrUndefined(target) || this.parent.isContextMenuOpen()) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-sortdirect e-icons e-icon-sortdirect' + (this.sortedColumns.length > 1 ? ' e-spanclicked' : ''));\n }\n }\n popUpClickHandler(e) {\n let target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains('e-rowcell') ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-sortdirect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSortMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSortMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n addSortIcons() {\n let gObj = this.parent;\n let header;\n let filterElement;\n let cols = this.sortSettings.columns;\n let fieldNames = this.parent.getColumns().map((c) => c.field);\n for (let i = 0, len = cols.length; i < len; i++) {\n header = gObj.getColumnHeaderByField(cols[i].field);\n if (fieldNames.indexOf(cols[i].field) === -1 || isNullOrUndefined(header)) {\n continue;\n }\n this.aria.setSort(header, cols[i].direction);\n if (this.isMultiSort && cols.length > 1) {\n header.querySelector('.e-headercelldiv').insertBefore(this.parent.createElement('span', { className: 'e-sortnumber', innerHTML: (i + 1).toString() }), header.querySelector('.e-headertext'));\n }\n filterElement = header.querySelector('.e-sortfilterdiv');\n if (cols[i].direction === 'Ascending') {\n classList(filterElement, ['e-ascending', 'e-icon-ascending'], []);\n }\n else {\n classList(filterElement, ['e-descending', 'e-icon-descending'], []);\n }\n }\n }\n removeSortIcons(position) {\n let gObj = this.parent;\n let header;\n let cols = this.sortSettings.columns;\n let fieldNames = this.parent.getColumns().map((c) => c.field);\n for (let i = position ? position : 0, len = !isNullOrUndefined(position) ? position + 1 : cols.length; i < len; i++) {\n header = gObj.getColumnHeaderByField(cols[i].field);\n if (isNullOrUndefined(header) || (gObj.allowGrouping && gObj.groupSettings.columns.indexOf(cols[i].field) > -1 &&\n !header.querySelector('.e-sortfilterdiv'))) {\n continue;\n }\n if (fieldNames.indexOf(cols[i].field) === -1) {\n continue;\n }\n this.aria.setSort(header, 'none');\n classList(header.querySelector('.e-sortfilterdiv'), [], ['e-descending', 'e-icon-descending', 'e-ascending', 'e-icon-ascending']);\n if (header.querySelector('.e-sortnumber')) {\n header.querySelector('.e-headercelldiv').removeChild(header.querySelector('.e-sortnumber'));\n }\n }\n }\n getSortColumnFromField(field) {\n for (let i = 0, len = this.sortSettings.columns.length; i < len; i++) {\n if (this.sortSettings.columns[i].field === field) {\n return this.sortSettings.columns[i];\n }\n }\n return false;\n }\n updateAriaAttr() {\n let fieldNames = this.parent.getColumns().map((c) => c.field);\n for (let col of this.sortedColumns) {\n if (fieldNames.indexOf(col) === -1) {\n continue;\n }\n let header = this.parent.getColumnHeaderByField(col);\n this.aria.setSort(header, this.getSortColumnFromField(col).direction);\n }\n }\n refreshSortIcons(params = { args: { isFrozen: false } }) {\n if (!params.args.isFrozen) {\n this.removeSortIcons();\n this.isMultiSort = true;\n this.removeSortIcons();\n this.addSortIcons();\n this.isMultiSort = false;\n this.updateAriaAttr();\n }\n }\n}\n\n/**\n * `NumericContainer` module handles rendering and refreshing numeric container.\n */\nclass NumericContainer {\n /**\n * Constructor for numericContainer module\n * @hidden\n */\n constructor(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render numericContainer\n * @hidden\n */\n render() {\n this.pagerElement = this.pagerModule.element;\n this.renderNumericContainer();\n this.refreshNumericLinks();\n this.wireEvents();\n }\n /**\n * Refreshes the numeric container of Pager.\n */\n refresh() {\n this.pagerModule.updateTotalPages();\n if (this.links.length) {\n this.updateLinksHtml();\n }\n this.updateStyles();\n }\n /**\n * The function is used to refresh refreshNumericLinks\n * @hidden\n */\n refreshNumericLinks() {\n let link;\n let pagerObj = this.pagerModule;\n let div = pagerObj.element.querySelector('.e-numericcontainer');\n let frag = document.createDocumentFragment();\n div.innerHTML = '';\n for (let i = 1; i <= pagerObj.pageCount; i++) {\n link = createElement('a', {\n className: 'e-link e-numericitem e-spacing e-pager-default',\n attrs: { role: 'link', tabindex: '-1', 'aria-label': 'Goto Page ' + i,\n href: 'javascript:void(0);', name: 'Goto page' + i }\n });\n if (pagerObj.currentPage === i) {\n classList(link, ['e-currentitem', 'e-active'], ['e-pager-default']);\n }\n frag.appendChild(link);\n }\n div.appendChild(frag);\n this.links = [].slice.call(div.childNodes);\n }\n /**\n * Binding events to the element while component creation\n * @hidden\n */\n wireEvents() {\n EventHandler.add(this.pagerElement, 'click', this.clickHandler, this);\n }\n /**\n * Unbinding events from the element while component destroy\n * @hidden\n */\n unwireEvents() {\n EventHandler.remove(this.pagerModule.element, 'click', this.clickHandler);\n }\n /**\n * To destroy the PagerMessage\n * @method destroy\n * @return {void}\n * @hidden\n */\n destroy() {\n this.unwireEvents();\n }\n renderNumericContainer() {\n this.element = createElement('div', {\n className: 'e-pagercontainer', attrs: { 'role': 'navigation' }\n });\n this.renderFirstNPrev(this.element);\n this.renderPrevPagerSet(this.element);\n this.element.appendChild(createElement('div', { className: 'e-numericcontainer' }));\n this.renderNextPagerSet(this.element);\n this.renderNextNLast(this.element);\n this.pagerModule.element.appendChild(this.element);\n }\n renderFirstNPrev(pagerContainer) {\n this.first = createElement('div', {\n className: 'e-first e-icons e-icon-first',\n attrs: {\n title: isBlazor() ? this.pagerModule.getLocalizedLabel('FirstPageTooltip') :\n this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('FirstPageTooltip') :\n this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n tabindex: '-1'\n }\n });\n this.prev = createElement('div', {\n className: 'e-prev e-icons e-icon-prev',\n attrs: {\n title: isBlazor() ? this.pagerModule.getLocalizedLabel('PreviousPageTooltip') :\n this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('PreviousPageTooltip') :\n this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n tabindex: '-1'\n }\n });\n append([this.first, this.prev], pagerContainer);\n }\n renderPrevPagerSet(pagerContainer) {\n let prevPager = createElement('div');\n this.PP = createElement('a', {\n className: 'e-link e-pp e-spacing', innerHTML: '...',\n attrs: {\n title: isBlazor() ? this.pagerModule.getLocalizedLabel('PreviousPagerTooltip') :\n this.pagerModule.getLocalizedLabel('previousPagerTooltip'), role: 'link',\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('PreviousPagerTooltip') :\n this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n tabindex: '-1',\n name: isBlazor() ? this.pagerModule.getLocalizedLabel('PreviousPagerTooltip') :\n this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n href: 'javascript:void(0);'\n }\n });\n prevPager.appendChild(this.PP);\n pagerContainer.appendChild(prevPager);\n }\n renderNextPagerSet(pagerContainer) {\n let nextPager = createElement('div');\n this.NP = createElement('a', {\n className: 'e-link e-np e-spacing',\n innerHTML: '...', attrs: {\n title: isBlazor() ? this.pagerModule.getLocalizedLabel('NextPagerTooltip') :\n this.pagerModule.getLocalizedLabel('nextPagerTooltip'), role: 'link',\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('NextPagerTooltip') :\n this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n tabindex: '-1',\n name: isBlazor() ? this.pagerModule.getLocalizedLabel('NextPagerTooltip') :\n this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n href: 'javascript:void(0);'\n }\n });\n nextPager.appendChild(this.NP);\n pagerContainer.appendChild(nextPager);\n }\n renderNextNLast(pagerContainer) {\n this.next = createElement('div', {\n className: 'e-next e-icons e-icon-next',\n attrs: {\n title: isBlazor() ? this.pagerModule.getLocalizedLabel('NextPageTooltip') :\n this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('NextPageTooltip') :\n this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n tabindex: '-1'\n }\n });\n this.last = createElement('div', {\n className: 'e-last e-icons e-icon-last',\n attrs: {\n title: isBlazor() ? this.pagerModule.getLocalizedLabel('LastPageTooltip') :\n this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('LastPageTooltip') :\n this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n tabindex: '-1'\n }\n });\n append([this.next, this.last], pagerContainer);\n }\n clickHandler(e) {\n let pagerObj = this.pagerModule;\n let target = e.target;\n pagerObj.previousPageNo = pagerObj.currentPage;\n if (!target.classList.contains('e-disable') && !isNullOrUndefined(target.getAttribute('index'))) {\n pagerObj.currentPage = parseInt(target.getAttribute('index'), 10);\n pagerObj.dataBind();\n }\n return false;\n }\n updateLinksHtml() {\n let pagerObj = this.pagerModule;\n let currentPageSet;\n let pageNo;\n pagerObj.currentPage = pagerObj.totalPages === 1 ? 1 : pagerObj.currentPage;\n if (pagerObj.currentPage > pagerObj.totalPages && pagerObj.totalPages) {\n pagerObj.currentPage = pagerObj.totalPages;\n }\n currentPageSet = parseInt((pagerObj.currentPage / pagerObj.pageCount).toString(), 10);\n if (pagerObj.currentPage % pagerObj.pageCount === 0 && currentPageSet > 0) {\n currentPageSet = currentPageSet - 1;\n }\n for (let i = 0; i < pagerObj.pageCount; i++) {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n if (pageNo <= pagerObj.totalPages) {\n this.links[i].style.display = '';\n this.links[i].setAttribute('index', pageNo.toString());\n this.links[i].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;\n if (pagerObj.currentPage !== pageNo) {\n this.links[i].classList.add('e-pager-default');\n }\n else {\n this.links[i].classList.remove('e-pager-default');\n }\n }\n else {\n this.links[i].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;\n this.links[i].style.display = 'none';\n }\n classList(this.links[i], [], ['e-currentitem', 'e-active']);\n }\n this.first.setAttribute('index', '1');\n this.last.setAttribute('index', pagerObj.totalPages.toString());\n this.prev.setAttribute('index', (pagerObj.currentPage - 1).toString());\n this.next.setAttribute('index', (pagerObj.currentPage + 1).toString());\n this.pagerElement.querySelector('.e-mfirst').setAttribute('index', '1');\n this.pagerElement.querySelector('.e-mlast').setAttribute('index', pagerObj.totalPages.toString());\n this.pagerElement.querySelector('.e-mprev').setAttribute('index', (pagerObj.currentPage - 1).toString());\n this.pagerElement.querySelector('.e-mnext').setAttribute('index', (pagerObj.currentPage + 1).toString());\n this.PP.setAttribute('index', (parseInt(this.links[0].getAttribute('index'), 10) - pagerObj.pageCount).toString());\n this.NP.setAttribute('index', (parseInt(this.links[this.links.length - 1].getAttribute('index'), 10) + 1).toString());\n }\n updateStyles() {\n this.updateFirstNPrevStyles();\n this.updatePrevPagerSetStyles();\n this.updateNextPagerSetStyles();\n this.updateNextNLastStyles();\n if (this.links.length) {\n classList(this.links[(this.pagerModule.currentPage - 1) % this.pagerModule.pageCount], ['e-currentitem', 'e-active'], []);\n }\n }\n updateFirstNPrevStyles() {\n let firstPage = ['e-firstpage', 'e-pager-default'];\n let firstPageDisabled = ['e-firstpagedisabled', 'e-disable'];\n let prevPage = ['e-prevpage', 'e-pager-default'];\n let prevPageDisabled = ['e-prevpagedisabled', 'e-disable'];\n if (this.pagerModule.totalPages > 0 && this.pagerModule.currentPage > 1) {\n classList(this.prev, prevPage, prevPageDisabled);\n classList(this.first, firstPage, firstPageDisabled);\n classList(this.pagerElement.querySelector('.e-mfirst'), firstPage, firstPageDisabled);\n classList(this.pagerElement.querySelector('.e-mprev'), prevPage, prevPageDisabled);\n }\n else {\n classList(this.prev, prevPageDisabled, prevPage);\n classList(this.first, firstPageDisabled, firstPage);\n classList(this.pagerElement.querySelector('.e-mprev'), prevPageDisabled, prevPage);\n classList(this.pagerElement.querySelector('.e-mfirst'), firstPageDisabled, firstPage);\n }\n }\n updatePrevPagerSetStyles() {\n if (this.pagerModule.currentPage > this.pagerModule.pageCount) {\n classList(this.PP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n else {\n classList(this.PP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n }\n updateNextPagerSetStyles() {\n let pagerObj = this.pagerModule;\n let firstPage = this.links[0].innerHTML.replace(pagerObj.customText, '');\n if (!firstPage.length || !this.links.length || (parseInt(firstPage, 10) + pagerObj.pageCount > pagerObj.totalPages)) {\n classList(this.NP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n else {\n classList(this.NP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n }\n updateNextNLastStyles() {\n let lastPage = ['e-lastpage', 'e-pager-default'];\n let lastPageDisabled = ['e-lastpagedisabled', 'e-disable'];\n let nextPage = ['e-nextpage', 'e-pager-default'];\n let nextPageDisabled = ['e-nextpagedisabled', 'e-disable'];\n let pagerObj = this.pagerModule;\n if (pagerObj.currentPage === pagerObj.totalPages || pagerObj.totalRecordsCount === 0) {\n classList(this.last, lastPageDisabled, lastPage);\n classList(this.next, nextPageDisabled, nextPage);\n classList(this.pagerElement.querySelector('.e-mlast'), lastPageDisabled, lastPage);\n classList(this.pagerElement.querySelector('.e-mnext'), nextPageDisabled, nextPage);\n }\n else {\n classList(this.last, lastPage, lastPageDisabled);\n classList(this.next, nextPage, nextPageDisabled);\n classList(this.pagerElement.querySelector('.e-mlast'), lastPage, lastPageDisabled);\n classList(this.pagerElement.querySelector('.e-mnext'), nextPage, nextPageDisabled);\n }\n }\n}\n\n/**\n * `PagerMessage` module is used to display pager information.\n */\nclass PagerMessage {\n /**\n * Constructor for externalMessage module\n * @hidden\n */\n constructor(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render pager message\n * @hidden\n */\n render() {\n let div = createElement('div', { className: 'e-parentmsgbar', attrs: { 'aria-label': 'Pager Information' } });\n this.pageNoMsgElem = createElement('span', { className: 'e-pagenomsg', styles: 'textalign:right' });\n this.pageCountMsgElem = createElement('span', { className: 'e-pagecountmsg', styles: 'textalign:right' });\n append([this.pageNoMsgElem, this.pageCountMsgElem], div);\n this.pagerModule.element.appendChild(div);\n this.refresh();\n }\n /**\n * Refreshes the pager information.\n */\n refresh() {\n let pagerObj = this.pagerModule;\n if (isBlazor()) {\n this.pageNoMsgElem.textContent = this.format(pagerObj.getLocalizedLabel('CurrentPageInfo'), [pagerObj.totalRecordsCount === 0 ? 0 :\n pagerObj.currentPage, pagerObj.totalPages || 0]) + ' ';\n this.pageCountMsgElem.textContent = this.format(pagerObj.getLocalizedLabel('TotalItemsInfo'), [pagerObj.totalRecordsCount || 0]);\n }\n else {\n this.pageNoMsgElem.textContent = this.format(pagerObj.getLocalizedLabel('currentPageInfo'), [pagerObj.totalRecordsCount === 0 ? 0 :\n pagerObj.currentPage, pagerObj.totalPages || 0]) + ' ';\n this.pageCountMsgElem.textContent = this.format(pagerObj.getLocalizedLabel(pagerObj.totalRecordsCount <= 1 ? 'totalItemInfo' : 'totalItemsInfo'), [pagerObj.totalRecordsCount || 0]);\n }\n this.pageNoMsgElem.parentElement.setAttribute('aria-label', this.pageNoMsgElem.textContent + this.pageCountMsgElem.textContent);\n }\n /**\n * Hides the Pager information.\n */\n hideMessage() {\n if (this.pageNoMsgElem) {\n this.pageNoMsgElem.style.display = 'none';\n }\n if (this.pageCountMsgElem) {\n this.pageCountMsgElem.style.display = 'none';\n }\n }\n /**\n * Shows the Pager information.\n */\n showMessage() {\n if (!this.pageNoMsgElem) {\n this.render();\n }\n this.pageNoMsgElem.style.display = '';\n this.pageCountMsgElem.style.display = '';\n }\n /**\n * To destroy the PagerMessage\n * @method destroy\n * @return {void}\n * @hidden\n */\n destroy() {\n //destroy\n }\n format(str, args) {\n let regx;\n for (let i = 0; i < args.length; i++) {\n regx = new RegExp('\\\\{' + (i) + '\\\\}', 'gm');\n str = str.replace(regx, args[i].toString());\n }\n return str;\n }\n}\n\nvar __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Represents the `Pager` component.\n * ```html\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nlet Pager = class Pager extends Component {\n /**\n * Constructor for creating the component.\n * @hidden\n */\n constructor(options, element) {\n super(options, element);\n }\n /**\n * To provide the array of modules needed for component rendering\n * @hidden\n */\n requiredModules() {\n let modules = [];\n if (this.enableExternalMessage) {\n modules.push({\n member: 'externalMessage',\n args: [this]\n });\n }\n if (this.checkpagesizes()) {\n modules.push({\n member: 'pagerdropdown',\n args: [this]\n });\n }\n return modules;\n }\n /**\n * Initialize the event handler\n * @hidden\n */\n preRender() {\n //preRender\n this.defaultConstants = {\n currentPageInfo: '{0} of {1} pages',\n totalItemsInfo: '({0} items)',\n totalItemInfo: '({0} item)',\n firstPageTooltip: 'Go to first page',\n lastPageTooltip: 'Go to last page',\n nextPageTooltip: 'Go to next page',\n previousPageTooltip: 'Go to previous page',\n nextPagerTooltip: 'Go to next pager',\n previousPagerTooltip: 'Go to previous pager',\n pagerDropDown: 'Items per page',\n pagerAllDropDown: 'Items',\n CurrentPageInfo: '{0} of {1} pages',\n TotalItemsInfo: '({0} items)',\n FirstPageTooltip: 'Go to first page',\n LastPageTooltip: 'Go to last page',\n NextPageTooltip: 'Go to next page',\n PreviousPageTooltip: 'Go to previous page',\n NextPagerTooltip: 'Go to next pager',\n PreviousPagerTooltip: 'Go to previous pager',\n PagerDropDown: 'Items per page',\n PagerAllDropDown: 'Items',\n All: 'All'\n };\n this.containerModule = new NumericContainer(this);\n this.pagerMessageModule = new PagerMessage(this);\n }\n /**\n * To Initialize the component rendering\n */\n render() {\n if (this.template) {\n this.pagerTemplate();\n }\n else {\n this.initLocalization();\n this.updateRTL();\n this.totalRecordsCount = this.totalRecordsCount || 0;\n this.renderFirstPrevDivForDevice();\n this.containerModule.render();\n if (this.enablePagerMessage) {\n this.pagerMessageModule.render();\n }\n this.renderNextLastDivForDevice();\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n this.pagerdropdownModule.render();\n }\n this.addAriaLabel();\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.render();\n }\n this.refresh();\n this.trigger('created', { 'currentPage': this.currentPage, 'totalRecordsCount': this.totalRecordsCount });\n }\n }\n /**\n * Get the properties to be maintained in the persisted state.\n * @hidden\n */\n getPersistData() {\n let keyEntity = ['currentPage', 'pageSize'];\n return this.addOnPersist(keyEntity);\n }\n /**\n * To destroy the Pager component.\n * @method destroy\n * @return {void}\n */\n destroy() {\n super.destroy();\n this.containerModule.destroy();\n this.pagerMessageModule.destroy();\n this.element.innerHTML = '';\n }\n /**\n * For internal use only - Get the module name.\n * @private\n */\n getModuleName() {\n return 'pager';\n }\n /**\n * Called internally if any of the property value changed.\n * @hidden\n */\n onPropertyChanged(newProp, oldProp) {\n if (this.isDestroyed) {\n return;\n }\n if (newProp.pageCount !== oldProp.pageCount) {\n this.containerModule.refreshNumericLinks();\n this.containerModule.refresh();\n }\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'currentPage':\n if (this.checkGoToPage(newProp.currentPage, oldProp.currentPage)) {\n this.currentPageChanged(newProp, oldProp);\n }\n break;\n case 'pageSize':\n case 'totalRecordsCount':\n case 'customText':\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n if (oldProp.pageSize !== newProp.pageSize) {\n this.currentPage = 1;\n }\n this.pagerdropdownModule.setDropDownValue('value', this.pageSize);\n }\n if (newProp.pageSize !== oldProp.pageSize) {\n this.pageSize = newProp.pageSize;\n this.currentPageChanged(newProp, oldProp);\n }\n else {\n this.refresh();\n }\n break;\n case 'pageSizes':\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n this.pagerdropdownModule.destroy();\n this.pagerdropdownModule.render();\n }\n this.refresh();\n break;\n case 'template':\n this.templateFn = this.compile(this.template);\n this.refresh();\n break;\n case 'locale':\n this.initLocalization();\n this.refresh();\n break;\n case 'enableExternalMessage':\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.render();\n }\n break;\n case 'externalMessage':\n if (this.externalMessageModule) {\n this.externalMessageModule.refresh();\n }\n break;\n case 'enableRtl':\n this.updateRTL();\n break;\n case 'enablePagerMessage':\n if (this.enablePagerMessage) {\n this.pagerMessageModule.showMessage();\n }\n else {\n this.pagerMessageModule.hideMessage();\n }\n break;\n }\n }\n }\n /**\n * Gets the localized label by locale keyword.\n * @param {string} key\n * @return {string}\n */\n getLocalizedLabel(key) {\n return this.localeObj.getConstant(key);\n }\n /**\n * Navigate to target page by given number.\n * @param {number} pageNo - Defines page number.\n * @return {void}\n */\n goToPage(pageNo) {\n if (this.checkGoToPage(pageNo)) {\n this.currentPage = pageNo;\n this.dataBind();\n }\n }\n /**\n * @hidden\n */\n setPageSize(pageSize) {\n this.pageSize = pageSize;\n this.dataBind();\n }\n checkpagesizes() {\n if (this.pageSizes === true || this.pageSizes.length) {\n return true;\n }\n return false;\n }\n checkGoToPage(newPageNo, oldPageNo) {\n if (newPageNo !== this.currentPage) {\n this.previousPageNo = this.currentPage;\n }\n if (!isNullOrUndefined(oldPageNo)) {\n this.previousPageNo = oldPageNo;\n }\n if (this.previousPageNo !== newPageNo && (newPageNo >= 1 && newPageNo <= this.totalPages)) {\n return true;\n }\n return false;\n }\n currentPageChanged(newProp, oldProp) {\n if (this.enableQueryString) {\n this.updateQueryString(this.currentPage);\n }\n if (newProp.currentPage !== oldProp.currentPage || newProp.pageSize !== oldProp.pageSize) {\n let args = {\n currentPage: this.currentPage,\n newProp: newProp, oldProp: oldProp, cancel: false\n };\n this.trigger('click', args);\n if (!args.cancel) {\n this.refresh();\n }\n }\n }\n pagerTemplate() {\n let result;\n this.element.classList.add('e-pagertemplate');\n this.compile(this.template);\n let data = {\n currentPage: this.currentPage, pageSize: this.pageSize, pageCount: this.pageCount,\n totalRecordsCount: this.totalRecordsCount, totalPages: this.totalPages\n };\n let tempId = this.element.parentElement.id + '_template';\n result = isBlazor() ? this.getPagerTemplate()(data, this, 'template', tempId, this.isStringTemplate) :\n this.getPagerTemplate()(data);\n appendChildren(this.element, result);\n }\n /** @hidden */\n updateTotalPages() {\n this.totalPages = (this.totalRecordsCount % this.pageSize === 0) ? (this.totalRecordsCount / this.pageSize) :\n (parseInt((this.totalRecordsCount / this.pageSize).toString(), 10) + 1);\n }\n /** @hidden */\n getPagerTemplate() {\n return this.templateFn;\n }\n compile(template) {\n if (template) {\n try {\n if (document.querySelectorAll(template).length) {\n this.templateFn = compile(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n this.templateFn = compile(template);\n }\n }\n return undefined;\n }\n /**\n * Refreshes page count, pager information and external message.\n * @return {void}\n */\n refresh() {\n if (this.template) {\n this.element.innerHTML = '';\n this.updateTotalPages();\n this.pagerTemplate();\n }\n else {\n this.updateRTL();\n this.containerModule.refresh();\n if (this.enablePagerMessage) {\n this.pagerMessageModule.refresh();\n }\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.refresh();\n }\n }\n }\n updateRTL() {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n }\n initLocalization() {\n this.localeObj = new L10n(this.getModuleName(), this.defaultConstants, this.locale);\n }\n updateQueryString(value) {\n let updatedUrl = this.getUpdatedURL(window.location.href, 'page', value.toString());\n window.history.pushState({ path: updatedUrl }, '', updatedUrl);\n }\n getUpdatedURL(uri, key, value) {\n let regx = new RegExp('([?|&])' + key + '=.*?(&|#|$)', 'i');\n if (uri.match(regx)) {\n return uri.replace(regx, '$1' + key + '=' + value + '$2');\n }\n else {\n let hash = '';\n if (uri.indexOf('#') !== -1) {\n hash = uri.replace(/.*#/, '#');\n uri = uri.replace(/#.*/, '');\n }\n return uri + (uri.indexOf('?') !== -1 ? '&' : '?') + key + '=' + value + hash;\n }\n }\n renderFirstPrevDivForDevice() {\n this.element.appendChild(createElement('div', {\n className: 'e-mfirst e-icons e-icon-first',\n attrs: { title: isBlazor() ? this.getLocalizedLabel('FirstPageTooltip') : this.getLocalizedLabel('firstPageTooltip'),\n tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mprev e-icons e-icon-prev',\n attrs: { title: isBlazor() ? this.getLocalizedLabel('PreviousPageTooltip') :\n this.getLocalizedLabel('previousPageTooltip'), tabindex: '-1' }\n }));\n }\n renderNextLastDivForDevice() {\n this.element.appendChild(createElement('div', {\n className: 'e-mnext e-icons e-icon-next',\n attrs: { title: isBlazor() ? this.getLocalizedLabel('NextPageTooltip') :\n this.getLocalizedLabel('nextPageTooltip'), tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mlast e-icons e-icon-last',\n attrs: { title: isBlazor() ? this.getLocalizedLabel('LastPageTooltip') :\n this.getLocalizedLabel('lastPageTooltip'), tabindex: '-1' }\n }));\n }\n addAriaLabel() {\n let classList$$1 = ['.e-mfirst', '.e-mprev', '.e-mnext', '.e-mlast'];\n if (!Browser.isDevice) {\n for (let i = 0; i < classList$$1.length; i++) {\n let element = this.element.querySelector(classList$$1[i]);\n element.setAttribute('aria-label', element.getAttribute('title'));\n }\n }\n }\n};\n__decorate$5([\n Property(false)\n], Pager.prototype, \"enableQueryString\", void 0);\n__decorate$5([\n Property(false)\n], Pager.prototype, \"enableExternalMessage\", void 0);\n__decorate$5([\n Property(true)\n], Pager.prototype, \"enablePagerMessage\", void 0);\n__decorate$5([\n Property(12)\n], Pager.prototype, \"pageSize\", void 0);\n__decorate$5([\n Property(10)\n], Pager.prototype, \"pageCount\", void 0);\n__decorate$5([\n Property(1)\n], Pager.prototype, \"currentPage\", void 0);\n__decorate$5([\n Property()\n], Pager.prototype, \"totalRecordsCount\", void 0);\n__decorate$5([\n Property()\n], Pager.prototype, \"externalMessage\", void 0);\n__decorate$5([\n Property(false)\n], Pager.prototype, \"pageSizes\", void 0);\n__decorate$5([\n Property()\n], Pager.prototype, \"template\", void 0);\n__decorate$5([\n Property('')\n], Pager.prototype, \"customText\", void 0);\n__decorate$5([\n Event()\n], Pager.prototype, \"click\", void 0);\n__decorate$5([\n Event()\n], Pager.prototype, \"dropDownChanged\", void 0);\n__decorate$5([\n Event()\n], Pager.prototype, \"created\", void 0);\nPager = __decorate$5([\n NotifyPropertyChanges\n], Pager);\n\n/**\n * `PagerDropDown` module handles selected pageSize from DropDownList.\n */\nclass PagerDropDown {\n /**\n * Constructor for pager module\n * @hidden\n */\n constructor(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n * @private\n * @hidden\n */\n getModuleName() {\n return 'pagerdropdown';\n }\n /**\n * The function is used to render pager dropdown\n * @hidden\n */\n render() {\n let pagerObj = this.pagerModule;\n this.pagerDropDownDiv = createElement('div', { className: 'e-pagesizes' });\n let dropDownDiv = createElement('div', { className: 'e-pagerdropdown' });\n let defaultTextDiv = createElement('div', { className: 'e-pagerconstant' });\n let input = createElement('input', { attrs: { type: 'text', tabindex: '1' } });\n this.pagerCons = createElement('span', { className: 'e-constant', innerHTML: isBlazor() ?\n this.pagerModule.getLocalizedLabel('PagerDropDown') :\n this.pagerModule.getLocalizedLabel('pagerDropDown') });\n dropDownDiv.appendChild(input);\n defaultTextDiv.appendChild(this.pagerCons);\n this.pagerDropDownDiv.appendChild(dropDownDiv);\n this.pagerDropDownDiv.appendChild(defaultTextDiv);\n this.pagerModule.element.appendChild(this.pagerDropDownDiv);\n let pageSizesModule = this.pagerModule.pageSizes;\n let pageSizesArray = (pageSizesModule.length ? this.convertValue(pageSizesModule) :\n [this.pagerModule.getLocalizedLabel('All'), '5', '10', '12', '20']);\n let defaultValue = this.pagerModule.pageSize;\n this.dropDownListObject = new DropDownList({\n dataSource: pageSizesArray,\n value: defaultValue.toString(),\n change: this.onChange.bind(this),\n cssClass: 'e-alldrop'\n });\n this.dropDownListObject.appendTo(input);\n if (pageSizesModule.length) {\n this.dropDownListObject.element.value = this.pagerModule.pageSize.toString();\n }\n pagerObj.pageSize = defaultValue;\n pagerObj.dataBind();\n pagerObj.trigger('dropDownChanged', { pageSize: defaultValue });\n this.addEventListener();\n }\n /**\n * For internal use only - Get the pagesize.\n * @private\n * @hidden\n */\n onChange(e) {\n if (this.dropDownListObject.value === this.pagerModule.getLocalizedLabel('All')) {\n this.pagerModule.pageSize = this.pagerModule.totalRecordsCount;\n this.pagerCons.innerHTML = isBlazor() ? this.pagerModule.getLocalizedLabel('PagerAllDropDown') :\n this.pagerModule.getLocalizedLabel('pagerAllDropDown');\n e.value = this.pagerModule.pageSize;\n if (document.getElementsByClassName('e-popup-open e-alldrop').length) {\n document.getElementsByClassName('e-popup-open e-alldrop')[0].style.display = 'none';\n }\n }\n else {\n this.pagerModule.pageSize = parseInt(this.dropDownListObject.value, 10);\n if (this.pagerCons.innerHTML !== this.pagerModule.getLocalizedLabel('pagerDropDown')) {\n this.pagerCons.innerHTML = isBlazor() ? this.pagerModule.getLocalizedLabel('PagerDropDown') :\n this.pagerModule.getLocalizedLabel('pagerDropDown');\n }\n }\n this.pagerModule.dataBind();\n this.pagerModule.trigger('dropDownChanged', { pageSize: parseInt(this.dropDownListObject.value, 10) });\n }\n beforeValueChange(prop) {\n if (typeof prop.newProp.value === 'number') {\n let val = prop.newProp.value.toString();\n prop.newProp.value = val;\n }\n }\n convertValue(pageSizeValue) {\n let item = pageSizeValue;\n for (let i = 0; i < item.length; i++) {\n item[i] = typeof item[i] === 'number' ? item[i].toString() : item[i];\n }\n return item;\n }\n setDropDownValue(prop, value) {\n if (this.dropDownListObject) {\n this.dropDownListObject[prop] = value;\n }\n }\n addEventListener() {\n this.dropDownListObject.on('beforeValueChange', this.beforeValueChange, this);\n }\n removeEventListener() {\n this.dropDownListObject.off('beforeValueChange', this.beforeValueChange);\n }\n /**\n * To destroy the Pagerdropdown\n * @method destroy\n * @return {void}\n * @hidden\n */\n destroy(args) {\n if (this.dropDownListObject && !this.dropDownListObject.isDestroyed) {\n this.removeEventListener();\n this.dropDownListObject.destroy();\n remove(this.pagerDropDownDiv);\n }\n }\n}\n\n/**\n * `ExternalMessage` module is used to display user provided message.\n */\nclass ExternalMessage {\n /**\n * Constructor for externalMessage module\n * @param {Pager} pagerModule?\n * @returns defaultType\n * @hidden\n */\n constructor(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n * @private\n */\n getModuleName() {\n return 'externalMessage';\n }\n /**\n * The function is used to render pager externalMessage\n * @hidden\n */\n render() {\n this.element = createElement('div', { className: 'e-pagerexternalmsg', attrs: { 'aria-label': 'Pager external message' } });\n this.pagerModule.element.appendChild(this.element);\n this.refresh();\n }\n /**\n * Refreshes the external message of Pager.\n */\n refresh() {\n if (this.pagerModule.externalMessage && this.pagerModule.externalMessage.toString().length) {\n this.showMessage();\n this.element.innerHTML = this.pagerModule.externalMessage;\n }\n else {\n this.hideMessage();\n }\n }\n /**\n * Hides the external message of Pager.\n */\n hideMessage() {\n if (!isNullOrUndefined(this.element)) {\n this.element.style.display = 'none';\n }\n }\n /**\n * Shows the external message of the Pager.\n */\n showMessage() {\n this.element.style.display = '';\n }\n /**\n * To destroy the PagerMessage\n * @method destroy\n * @return {void}\n * @hidden\n */\n destroy() {\n remove(this.element);\n }\n}\n\n/**\n * The `Page` module is used to render pager and handle paging action.\n */\nclass Page {\n /**\n * Constructor for the Grid paging module\n * @hidden\n */\n constructor(parent, pageSettings) {\n Pager.Inject(ExternalMessage, PagerDropDown);\n this.parent = parent;\n this.pageSettings = pageSettings;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n * @private\n */\n getModuleName() {\n return 'pager';\n }\n /**\n * The function used to render pager from grid pageSettings\n * @return {void}\n * @hidden\n */\n render() {\n let gObj = this.parent;\n let pagerObj;\n this.pagerDestroy();\n if (!isNullOrUndefined(this.parent.pagerTemplate)) {\n this.pageSettings.template = this.parent.pagerTemplate;\n this.parent.pageTemplateChange = true;\n }\n this.element = this.parent.createElement('div', { className: 'e-gridpager' });\n pagerObj = extend$1({}, extend({}, getActualProperties(this.pageSettings)), {\n click: this.clickHandler.bind(this),\n dropDownChanged: this.onSelect.bind(this),\n enableRtl: gObj.enableRtl, locale: gObj.locale,\n created: this.addAriaAttr.bind(this)\n }, ['parentObj', 'propName']);\n this.pagerObj = new Pager(pagerObj);\n this.pagerObj.allowServerDataBinding = false;\n }\n onSelect(e) {\n this.pageSettings.pageSize = e.pageSize;\n if (!this.isInitialLoad) {\n this.pageSettings.currentPage = 1;\n }\n }\n addAriaAttr() {\n if (!(this.pageSettings.template)) {\n let numericContainerNew = this.parent.createElement('div', { className: 'e-numericcontainer' });\n let pagerContainer = this.element.querySelector('.e-pagercontainer');\n let frag = document.createDocumentFragment();\n let numericContainer = this.element.querySelector('.e-numericcontainer');\n let links = numericContainer.querySelectorAll('a');\n for (let i = 0; i < links.length; i++) {\n if (this.parent.getContentTable()) {\n links[i].setAttribute('aria-owns', this.parent.getContentTable().id);\n }\n else {\n links[i].setAttribute('aria-owns', this.parent.element.getAttribute('id') + '_content_table');\n }\n let numericContainerDiv = this.parent.createElement('div');\n numericContainerDiv.appendChild(links[i]);\n frag.appendChild(numericContainerDiv);\n }\n numericContainerNew.appendChild(frag);\n pagerContainer.replaceChild(numericContainerNew, numericContainer);\n let classList$$1 = ['.e-mfirst', '.e-mprev', '.e-first', '.e-prev', '.e-next', '.e-last', '.e-mnext', '.e-mlast'];\n for (let j = 0; j < classList$$1.length; j++) {\n let element = this.element.querySelector(classList$$1[j]);\n if (this.parent.getContentTable()) {\n element.setAttribute('aria-owns', this.parent.getContentTable().id);\n }\n }\n }\n }\n dataReady(e) {\n this.updateModel(e);\n }\n /**\n * Refreshes the page count, pager information, and external message.\n * @return {void}\n */\n refresh() {\n this.pagerObj.refresh();\n }\n /**\n * Navigates to the target page according to the given number.\n * @param {number} pageNo - Defines the page number to navigate.\n * @return {void}\n */\n goToPage(pageNo) {\n this.pagerObj.goToPage(pageNo);\n }\n /**\n * @hidden\n */\n setPageSize(pageSize) {\n this.pagerObj.setPageSize(pageSize);\n }\n /**\n * The function used to update pageSettings model\n * @return {void}\n * @hidden\n */\n updateModel(e) {\n this.parent.pageSettings.totalRecordsCount = e.count;\n this.parent.dataBind();\n }\n /**\n * The function used to trigger onActionComplete\n * @return {void}\n * @hidden\n */\n onActionComplete(e) {\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\n this.parent.trigger(actionComplete, extend(e, {\n currentPage: this.parent.pageSettings.currentPage, requestType: 'paging',\n type: actionComplete\n }));\n }\n /**\n * @hidden\n */\n onPropertyChanged(e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n let newProp = e.properties;\n for (let prop of Object.keys(newProp)) {\n this.pagerObj[prop] = newProp[prop];\n }\n this.pagerObj.dataBind();\n }\n clickHandler(e) {\n let gObj = this.parent;\n if (this.isForceCancel || isActionPrevent(gObj) && !gObj.prevPageMoving) {\n if (!this.isForceCancel) {\n if (!isNullOrUndefined(e.newProp) && !isNullOrUndefined(e.newProp.pageSize)) {\n gObj.notify(preventBatch, { instance: this, handler: this.setPageSize, arg1: e.newProp.pageSize });\n this.pagerObj.pageSize = e.oldProp.pageSize;\n gObj.pageSettings.pageSize = e.newProp.pageSize;\n }\n else if (e.currentPage) {\n gObj.notify(preventBatch, { instance: this, handler: this.goToPage, arg1: e.currentPage });\n this.pagerObj.currentPage = gObj.pageSettings.currentPage === this.pagerObj.currentPage ?\n this.pagerObj.previousPageNo : gObj.pageSettings.currentPage;\n }\n this.isForceCancel = true;\n this.pagerObj.dataBind();\n }\n else {\n this.isForceCancel = false;\n }\n e.cancel = true;\n return;\n }\n gObj.pageSettings.pageSize = this.pagerObj.pageSize;\n gObj.prevPageMoving = false;\n let prevPage = this.pageSettings.currentPage;\n this.pageSettings.currentPage = e.currentPage;\n this.parent.notify(modelChanged, {\n requestType: 'paging',\n previousPage: prevPage,\n currentPage: e.currentPage,\n type: actionBegin\n });\n this.parent.requestTypeAction = 'paging';\n }\n keyPressHandler(e) {\n if (e.action in keyActions) {\n e.preventDefault();\n this.element.querySelector(keyActions[e.action]).click();\n }\n }\n /**\n * Defines the text of the external message.\n * @param {string} message - Defines the message to update.\n * @return {void}\n */\n updateExternalMessage(message) {\n if (!this.pagerObj.enableExternalMessage) {\n this.pagerObj.enableExternalMessage = true;\n this.pagerObj.dataBind();\n }\n this.pagerObj.externalMessage = message;\n this.pagerObj.dataBind();\n }\n appendToElement(e) {\n this.isInitialLoad = true;\n this.parent.element.appendChild(this.element);\n this.parent.setGridPager(this.element);\n this.pagerObj.appendTo(this.element);\n this.isInitialLoad = false;\n }\n enableAfterRender(e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.appendToElement();\n }\n }\n /**\n * @hidden\n */\n addEventListener() {\n this.handlers = {\n load: this.render,\n end: this.appendToElement,\n ready: this.dataReady,\n complete: this.onActionComplete,\n updateLayout: this.enableAfterRender,\n inboundChange: this.onPropertyChanged,\n keyPress: this.keyPressHandler\n };\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initialLoad, this.handlers.load, this);\n this.parent.on(initialEnd, this.handlers.end, this); //For initial rendering\n this.parent.on(dataReady, this.handlers.ready, this);\n this.parent.on(pageComplete, this.handlers.complete, this);\n this.parent.on(uiUpdate, this.handlers.updateLayout, this);\n this.parent.on(inBoundModelChanged, this.handlers.inboundChange, this);\n this.parent.on(keyPressed, this.handlers.keyPress, this);\n }\n /**\n * @hidden\n */\n removeEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(initialLoad, this.handlers.load);\n this.parent.off(initialEnd, this.handlers.end); //For initial rendering\n this.parent.off(dataReady, this.handlers.ready);\n this.parent.off(pageComplete, this.handlers.complete);\n this.parent.off(uiUpdate, this.handlers.updateLayout);\n this.parent.off(inBoundModelChanged, this.handlers.inboundChange);\n this.parent.off(keyPressed, this.handlers.keyPress);\n }\n /**\n * To destroy the pager\n * @return {void}\n * @hidden\n */\n destroy() {\n this.removeEventListener();\n this.pagerDestroy();\n }\n pagerDestroy() {\n if (this.pagerObj && !this.pagerObj.isDestroyed) {\n this.pagerObj.destroy();\n remove(this.element);\n }\n }\n}\n/**\n * @hidden\n */\nconst keyActions = {\n pageUp: '.e-prev',\n pageDown: '.e-next',\n ctrlAltPageDown: '.e-last',\n ctrlAltPageUp: '.e-first',\n altPageUp: '.e-pp',\n altPageDown: '.e-np'\n};\n\n/**\n * FilterCellRenderer class which responsible for building filter cell.\n * @hidden\n */\nclass FilterCellRenderer extends CellRenderer {\n constructor() {\n super(...arguments);\n this.element = this.parent.createElement('TH', { className: 'e-filterbarcell' });\n }\n /**\n * Function to return the wrapper for the TH content.\n * @returns string\n */\n getGui() {\n return this.parent.createElement('div');\n }\n /**\n * Function to render the cell content based on Column object.\n * @param {Cell} cell\n * @param {Object} data\n */\n render(cell, data) {\n let tr = this.parent.element.querySelector('.e-filterbar');\n let node = this.element.cloneNode();\n let innerDIV = this.getGui();\n let input;\n let column = cell.column;\n tr.appendChild(node);\n node.setAttribute('e-mappinguid', column.uid);\n if (column.filterTemplate) {\n let fltrData = {};\n if (data) {\n fltrData[column.field] = data[column.field];\n }\n let col = 'column';\n fltrData[col] = column;\n if (column.visible) {\n let tempID = this.parent.element.id + column.uid + 'filterTemplate';\n let element = column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID);\n appendChildren(node, element);\n }\n else {\n node.classList.add('e-hide');\n }\n }\n else {\n if (column.type !== 'checkbox') {\n if ((isNullOrUndefined(column.allowFiltering) || column.allowFiltering) && !isNullOrUndefined(column.filterBarTemplate)) {\n node.classList.add('e-fltrtemp');\n attributes(innerDIV, {\n 'class': 'e-fltrtempdiv'\n });\n if (isNullOrUndefined(column.filterBarTemplate.create)) {\n input = this.parent.createElement('input', {\n id: column.field + '_filterBarcell', className: 'e-filterUi_input e-filtertext e-fltrTemp',\n attrs: { type: 'search', title: column.headerText }\n });\n innerDIV.appendChild(input);\n }\n else {\n let args = { column: column, node: Element };\n let temp = column.filterBarTemplate.create;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n input = temp(args);\n if (typeof input === 'string') {\n let div = this.parent.createElement('div');\n div.innerHTML = input;\n input = div.firstChild;\n }\n attributes(innerDIV, {\n class: 'e-filterUi_input e-filtertext e-fltrTemp',\n title: column.headerText,\n id: column.field + '_filterBarcell',\n });\n innerDIV.appendChild(input);\n }\n }\n else {\n attributes(innerDIV, {\n 'class': 'e-filterdiv e-fltrinputdiv'\n });\n input = this.parent.createElement('input', {\n id: column.field + '_filterBarcell', className: 'e-filtertext',\n attrs: {\n type: 'search', title: column.headerText + cell.attributes.title,\n value: data[cell.column.field] ? data[cell.column.field] : '', role: 'search'\n }\n });\n innerDIV.appendChild(input);\n let args = {\n element: input, floatLabelType: 'Never',\n properties: {\n enableRtl: this.parent.enableRtl, showClearButton: true\n }\n };\n Input.createInput(args, this.parent.createElement);\n }\n //TODO: apply intial filtering\n if (column.allowFiltering === false || column.field === '' || isNullOrUndefined(column.field)) {\n input.setAttribute('disabled', 'true');\n input.classList.add('e-disable');\n }\n if (!column.visible) {\n node.classList.add('e-hide');\n }\n this.appendHtml(node, innerDIV);\n // render's the dropdownlist component if showFilterBarOperator sets to true\n if (this.parent.filterSettings.showFilterBarOperator && this.parent.filterSettings.type === 'FilterBar'\n && !this.parent.isPrinting && isNullOrUndefined(column.filterTemplate)) {\n this.operatorIconRender(innerDIV, column, cell);\n }\n if ((isNullOrUndefined(column.allowFiltering) || column.allowFiltering) && !isNullOrUndefined(column.filterBarTemplate)) {\n let templateWrite = column.filterBarTemplate.write;\n let args = { element: input, column: column };\n if (typeof templateWrite === 'string') {\n templateWrite = getValue(templateWrite, window);\n }\n templateWrite.call(this, args);\n }\n }\n }\n return node;\n }\n /**\n * Function to specifies how the result content to be placed in the cell.\n * @param {Element} node\n * @param {string|Element} innerHTML\n * @returns Element\n */\n appendHtml(node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n }\n operatorIconRender(innerDIV, column, cell) {\n let gObj = this.parent;\n let fbicon = this.parent.createElement('input', {\n className: ' e-filterbaroperator e-icons e-icon-filter',\n id: cell.column.uid\n });\n innerDIV.querySelector('span').appendChild(fbicon);\n let operators = 'equal';\n if (!isNullOrUndefined(gObj.filterModule.operators[column.field])) {\n operators = gObj.filterModule.operators[column.field];\n }\n this.dropOptr = new DropDownList({\n fields: { text: 'text', value: 'value' },\n popupHeight: 'auto',\n value: operators,\n width: '0px',\n enabled: column.allowFiltering,\n popupWidth: 'auto',\n enableRtl: this.parent.enableRtl,\n change: this.internalEvent.bind(this),\n beforeOpen: function () {\n let operator = gObj.filterModule.customOperators;\n this.dataSource = operator[gObj.getColumnByUid(this.element.id).type + 'Operator'];\n for (let i = 0; i < this.dataSource.length; i++) {\n if (column.filter && column.filter.operator && isNullOrUndefined(gObj.filterModule.operators[column.field]) &&\n this.dataSource[i].value === column.filter.operator) {\n this.value = column.filter.operator;\n }\n }\n },\n });\n this.dropOptr.appendTo(fbicon);\n let spanElmt = closest(this.dropOptr.element, 'span');\n spanElmt.classList.add('e-filterbardropdown');\n spanElmt.removeAttribute('tabindex');\n }\n internalEvent(e) {\n let gObj = this.parent;\n let col = gObj.getColumnByUid(e.element.getAttribute('id'));\n e.column = col;\n gObj.filterModule.operators[col.field] = e.value;\n gObj.notify(getFilterBarOperator, e);\n }\n}\n\n/**\n * `filter operators` render boolean column.\n * @hidden\n */\nclass FlMenuOptrUI {\n constructor(parent, customFltrOperators, serviceLocator, filterSettings) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.filterSettings = filterSettings;\n this.customFilterOperators = customFltrOperators;\n }\n /**\n * @hidden\n */\n renderOperatorUI(dlgConetntEle, target, column, dlgObj) {\n this.dialogObj = dlgObj;\n let optr = column.type + 'Operator';\n this.optrData = this.customOptr = (!isNullOrUndefined(this.parent.filterSettings.operators) &&\n !isNullOrUndefined(this.parent.filterSettings.operators[optr])) ?\n this.parent.filterSettings.operators[optr] : this.customFilterOperators[optr];\n let dropDatasource = this.customOptr;\n let selectedValue = this.dropSelectedVal(column, optr);\n let optrDiv = this.parent.createElement('div', { className: 'e-flm_optrdiv' });\n dlgConetntEle.appendChild(optrDiv);\n let optrInput = this.parent.createElement('input', { id: column.uid + '-floptr' });\n optrDiv.appendChild(optrInput);\n this.dropOptr = new DropDownList({\n dataSource: dropDatasource,\n fields: { text: 'text', value: 'value' },\n open: this.dropDownOpen.bind(this),\n cssClass: 'e-popup-flmenu',\n text: selectedValue\n });\n this.dropOptr.appendTo('#' + column.uid + '-floptr');\n }\n dropDownOpen(args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n }\n dropSelectedVal(col, optr) {\n let selValue = '';\n let columns = this.parent.filterSettings.columns;\n for (let column of columns) {\n if (col.field === column.field || (col.isForeignColumn() && col.foreignKeyValue === column.field)) {\n let selectedField = new DataManager(this.optrData).executeLocal(new Query().where('value', 'equal', column.operator));\n selValue = !isNullOrUndefined(selectedField[0]) ? selectedField[0].text : '';\n }\n }\n if (selValue === '') { // rewuired or not\n if (col.filter.operator) {\n let optrLen = Object.keys(this.optrData).length;\n for (let i = 0; i < optrLen; i++) {\n if (this.optrData[i].value === col.filter.operator) {\n selValue = this.optrData[i].text;\n }\n }\n }\n else {\n selValue = this.optrData[0].text;\n }\n }\n return selValue;\n }\n /**\n * @hidden\n */\n getFlOperator() {\n return this.dropOptr.value;\n }\n}\n\n/**\n * `string filterui` render string column.\n * @hidden\n */\nclass StringFilterUI {\n constructor(parent, serviceLocator, filterSettings) {\n this.parent = parent;\n this.serLocator = serviceLocator;\n this.filterSettings = filterSettings;\n }\n create(args) {\n this.instance = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'strui-' + args.column.uid });\n args.target.appendChild(this.instance);\n this.dialogObj = args.dialogObj;\n this.actObj = this.getAutoCompleteOptions(args);\n this.actObj.appendTo(this.instance);\n }\n getAutoCompleteOptions(args) {\n let isForeignColumn = args.column.isForeignColumn();\n let dataSource = isForeignColumn ? args.column.dataSource : this.parent.dataSource;\n let fields = { value: isForeignColumn ? args.column.foreignKeyValue : args.column.field };\n let autoComplete = new AutoComplete(extend({\n dataSource: dataSource instanceof DataManager ? dataSource : new DataManager(dataSource),\n fields: fields,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n query: this.parent.query.clone(),\n sortOrder: 'Ascending',\n open: this.openPopup.bind(this),\n cssClass: 'e-popup-flmenu',\n focus: () => {\n this.actObj.filterType = args.getOptrInstance.getFlOperator();\n },\n autofill: true,\n placeholder: args.localizeText.getConstant('EnterValue'),\n actionComplete: (e) => {\n e.result = e.result.filter((obj, index, arr) => {\n return arr.map((mapObj) => {\n return (getValue(this.actObj.fields.value, mapObj));\n }).indexOf(getValue((this.actObj.fields.value), obj)) === index;\n });\n }\n }, args.column.filter.params));\n if (dataSource && 'result' in dataSource) {\n let query = this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n let defObj = eventPromise({ requestType: 'stringfilterrequest' }, query);\n this.parent.trigger(dataStateChange, defObj.state);\n let def = defObj.deffered;\n def.promise.then((e) => {\n autoComplete.dataSource = new DataManager(e);\n });\n }\n return autoComplete;\n }\n write(args) {\n let columns = this.filterSettings.columns;\n if (args.filteredValue !== '' && !isNullOrUndefined(args.filteredValue)) {\n let struiObj = document.querySelector('#strui-' + args.column.uid).ej2_instances[0];\n struiObj.value = args.filteredValue;\n }\n }\n read(element, column, filterOptr, filterObj) {\n let actuiObj = document.querySelector('#strui-' + column.uid).ej2_instances[0];\n if (Browser.isDevice) {\n actuiObj.hidePopup();\n actuiObj.focusOut();\n }\n let filterValue = actuiObj.value;\n if (isNullOrUndefined(filterValue) || filterValue === '') {\n filterValue = null;\n }\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', this.parent.filterSettings.enableCaseSensitivity);\n }\n openPopup(args) {\n getZIndexCalcualtion(args, this.dialogObj);\n }\n}\n\n/**\n * `numberfilterui` render number column.\n * @hidden\n */\nclass NumberFilterUI {\n constructor(parent, serviceLocator, filterSettings) {\n this.filterSettings = filterSettings;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n }\n create(args) {\n this.instance = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'numberui-' + args.column.uid });\n args.target.appendChild(this.instance);\n this.numericTxtObj = new NumericTextBox(extend({\n format: typeof (args.column.format) === 'string' || isUndefined(args.column.format) ? args.column.format :\n args.column.format.format,\n locale: this.parent.locale,\n cssClass: 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('EnterValue'),\n enableRtl: this.parent.enableRtl,\n }, args.column.filter.params));\n this.numericTxtObj.appendTo(this.instance);\n }\n write(args) {\n let numberuiObj = document.querySelector('#numberui-' + args.column.uid).ej2_instances[0];\n numberuiObj.value = args.filteredValue;\n }\n read(element, column, filterOptr, filterObj) {\n let numberuiObj = document.querySelector('#numberui-' + column.uid).ej2_instances[0];\n let filterValue = numberuiObj.value;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', true);\n }\n}\n\n/**\n * `boolfilterui` render boolean column.\n * @hidden\n */\nclass BooleanFilterUI {\n constructor(parent, serviceLocator, filterSettings) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.filterSettings = filterSettings;\n }\n create(args) {\n let isForeignColumn = args.column.isForeignColumn();\n let dataSource = isForeignColumn ? args.column.dataSource : this.parent.dataSource;\n let fields = isForeignColumn ? args.column.foreignKeyValue : args.column.field;\n this.elem = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'bool-ui-' + args.column.uid });\n args.target.appendChild(this.elem);\n this.dialogObj = args.dialogObj;\n this.dropInstance = new DropDownList(extend({\n dataSource: dataSource instanceof DataManager ?\n dataSource : new DataManager(dataSource),\n query: new Query().select(fields),\n fields: { text: fields, value: fields },\n placeholder: args.localizeText.getConstant('SelectValue'),\n cssClass: 'e-popup-flmenu',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n open: this.openPopup.bind(this),\n actionComplete: (e) => {\n e.result = DataUtil.distinct(e.result, fields, true);\n }\n }, args.column.filter.params));\n this.dropInstance.appendTo(this.elem);\n }\n write(args) {\n let drpuiObj = document.querySelector('#bool-ui-' + args.column.uid).ej2_instances[0];\n if (!isNullOrUndefined(args.filteredValue)) {\n drpuiObj.text = args.filteredValue;\n }\n }\n read(element, column, filterOptr, filterObj) {\n let drpuiObj = document.querySelector('#bool-ui-' + column.uid).ej2_instances[0];\n let filterValue = drpuiObj.value;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', false);\n }\n openPopup(args) {\n getZIndexCalcualtion(args, this.dialogObj);\n }\n}\n\n/**\n * `datefilterui` render date column.\n * @hidden\n */\nclass DateFilterUI {\n constructor(parent, serviceLocator, filterSettings) {\n this.parent = parent;\n this.locator = serviceLocator;\n this.fltrSettings = filterSettings;\n }\n create(args) {\n let format = getCustomDateFormat(args.column.format, args.column.type);\n this.dialogObj = args.dialogObj;\n this.inputElem = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'dateui-' + args.column.uid });\n args.target.appendChild(this.inputElem);\n if (args.column.type === 'date') {\n this.datePickerObj = new DatePicker(extend({\n format: format,\n cssClass: 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('ChooseDate'),\n width: '100%',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n open: this.openPopup.bind(this),\n }, args.column.filter.params));\n }\n else if (args.column.type === 'datetime') {\n this.datePickerObj = new DateTimePicker(extend({\n format: format,\n cssClass: 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('ChooseDate'),\n width: '100%',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n open: this.openPopup.bind(this),\n }, args.column.filter.params));\n }\n this.datePickerObj.appendTo(this.inputElem);\n }\n write(args) {\n let columns = this.fltrSettings.columns;\n let dateuiObj = document.querySelector('#dateui-' + args.column.uid).ej2_instances[0];\n dateuiObj.value = !isNullOrUndefined(args.filteredValue) ? new Date(args.filteredValue) : null;\n }\n read(element, column, filterOptr, filterObj) {\n let dateuiObj = document.querySelector('#dateui-' + column.uid).ej2_instances[0];\n let filterValue = dateuiObj.value;\n filterValue = isNullOrUndefined(filterValue) ? null : filterValue;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', true);\n }\n openPopup(args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n }\n}\n\n/**\n * `filter menu` render boolean column.\n * @hidden\n */\nclass FilterMenuRenderer {\n constructor(parent, filterSettings, serviceLocator, customFltrOperators, fltrObj) {\n this.isDialogOpen = false;\n this.colTypes = {\n 'string': StringFilterUI, 'number': NumberFilterUI, 'date': DateFilterUI, 'boolean': BooleanFilterUI, 'datetime': DateFilterUI\n };\n this.parent = parent;\n this.filterSettings = filterSettings;\n this.serviceLocator = serviceLocator;\n this.customFilterOperators = customFltrOperators;\n this.filterObj = fltrObj;\n this.flMuiObj = new FlMenuOptrUI(this.parent, this.customFilterOperators, this.serviceLocator);\n this.l10n = this.serviceLocator.getService('localization');\n }\n openDialog(args) {\n this.col = this.parent.getColumnByField(args.field);\n if (isNullOrUndefined(this.col.filter) || (isNullOrUndefined(this.col.filter.type) || this.col.filter.type === 'Menu')) { ///\n this.renderDlgContent(args.target, this.col);\n }\n }\n closeDialog() {\n if (!this.dlgObj) {\n return;\n }\n if (isBlazor()) {\n let columns = this.parent.getColumns();\n for (let i = 0; i < columns.length; i++) {\n if (columns[i].filterTemplate) {\n let tempID = this.parent.element.id + columns[i].uid + 'filterTemplate';\n updateBlazorTemplate(tempID, 'FilterTemplate', columns[i]);\n }\n }\n }\n let elem = document.getElementById(this.dlgObj.element.id);\n if (this.dlgObj && !this.dlgObj.isDestroyed && elem) {\n this.parent.notify(filterMenuClose, { field: this.col.field });\n this.isDialogOpen = false;\n this.dlgObj.destroy();\n remove(elem);\n }\n }\n renderDlgContent(target, column) {\n let args = {\n requestType: filterBeforeOpen,\n columnName: column.field, columnType: column.type\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n let filterModel = 'filterModel';\n args[filterModel] = this;\n }\n this.parent.trigger(actionBegin, args);\n let mainDiv = this.parent.createElement('div', { className: 'e-flmenu-maindiv', id: column.uid + '-flmenu' });\n this.dlgDiv = this.parent.createElement('div', { className: 'e-flmenu', id: column.uid + '-flmdlg' });\n this.dlgDiv.setAttribute('aria-label', this.l10n.getConstant('FilterMenuDialogARIA'));\n this.parent.element.appendChild(this.dlgDiv);\n this.dlgObj = new Dialog({\n showCloseIcon: false,\n closeOnEscape: false,\n locale: this.parent.locale,\n visible: false,\n enableRtl: this.parent.enableRtl,\n created: this.dialogCreated.bind(this, target, column),\n position: this.parent.element.classList.contains('e-device') ? { X: 'center', Y: 'center' } : { X: '', Y: '' },\n target: this.parent.element.classList.contains('e-device') ? document.body : this.parent.element,\n buttons: [{\n click: this.filterBtnClick.bind(this, column),\n buttonModel: {\n content: this.l10n.getConstant('FilterButton'), isPrimary: true, cssClass: 'e-flmenu-okbtn'\n }\n },\n {\n click: this.clearBtnClick.bind(this, column),\n buttonModel: { content: this.l10n.getConstant('ClearButton'), cssClass: 'e-flmenu-cancelbtn' }\n }],\n content: mainDiv,\n width: (!isNullOrUndefined(parentsUntil(target, 'e-bigger'))) || this.parent.element.classList.contains('e-device') ? 260 : 250,\n animationSettings: { effect: 'None' },\n cssClass: 'e-filter-popup'\n });\n let isStringTemplate = 'isStringTemplate';\n this.dlgObj[isStringTemplate] = true;\n this.dlgObj.appendTo(this.dlgDiv);\n }\n dialogCreated(target, column) {\n if (!Browser.isDevice) {\n getFilterMenuPostion(target, this.dlgObj, this.parent);\n }\n this.renderFilterUI(target, column);\n this.parent.notify(filterDialogCreated, {});\n this.dlgObj.element.style.maxHeight = '350px';\n this.dlgObj.show();\n if (!column.filterTemplate) {\n this.writeMethod(column, this.dlgObj.element.querySelector('#' + column.uid + '-flmenu'));\n }\n let args = {\n requestType: filterAfterOpen,\n columnName: column.field, columnType: column.type\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n let filterModel = 'filterModel';\n args[filterModel] = this;\n }\n this.isDialogOpen = true;\n this.parent.trigger(actionComplete, args);\n }\n renderFilterUI(target, col) {\n let dlgConetntEle = this.dlgObj.element.querySelector('.e-flmenu-maindiv');\n this.parent.log('column_type_missing', { column: col });\n this.renderOperatorUI(dlgConetntEle, target, col);\n this.renderFlValueUI(dlgConetntEle, target, col);\n }\n renderOperatorUI(dlgConetntEle, target, column) {\n this.flMuiObj.renderOperatorUI(dlgConetntEle, target, column, this.dlgObj);\n }\n renderFlValueUI(dlgConetntEle, target, column) {\n let valueDiv = this.parent.createElement('div', { className: 'e-flmenu-valuediv' });\n let fObj = this.filterObj;\n dlgConetntEle.appendChild(valueDiv);\n let args = { target: valueDiv, column: column, getOptrInstance: this.flMuiObj, dialogObj: this.dlgObj };\n let instanceofFilterUI = new this.colTypes[column.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n if (column.filterTemplate) {\n let fltrData = {};\n let valueInString = 'value';\n fltrData[column.field] = fltrData[valueInString] = fObj.values[column.field];\n if (column.foreignKeyValue) {\n fltrData[column.foreignKeyValue] = fObj.values[column.field];\n fltrData[column.field] = undefined;\n }\n let col = 'column';\n fltrData[col] = column;\n let tempID = this.parent.element.id + column.uid + 'filterTemplate';\n let compElement = column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID);\n updateBlazorTemplate(tempID, 'FilterTemplate', column);\n appendChildren(valueDiv, compElement);\n }\n else {\n if (!isNullOrUndefined(column.filter) && !isNullOrUndefined(column.filter.ui)\n && !isNullOrUndefined(column.filter.ui.create)) {\n let temp = column.filter.ui.create;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n temp({\n column: column, target: valueDiv,\n getOptrInstance: this.flMuiObj, dialogObj: this.dlgObj\n });\n }\n else {\n instanceofFilterUI.create({\n column: column, target: valueDiv,\n getOptrInstance: this.flMuiObj, localizeText: this.l10n, dialogObj: this.dlgObj\n });\n }\n }\n }\n writeMethod(col, dlgContentEle) {\n let flValue;\n let target = dlgContentEle.querySelector('.e-flmenu-valinput');\n let instanceofFilterUI = new this.colTypes[col.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n let columns = this.filterSettings.columns;\n for (let column of columns) {\n if (col.uid === column.uid) {\n flValue = column.value;\n }\n }\n if (!isNullOrUndefined(col.filter) && !isNullOrUndefined(col.filter.ui)\n && !isNullOrUndefined(col.filter.ui.write)) {\n let temp = col.filter.ui.write;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n temp({ column: col, target: target, parent: this.parent, filteredValue: flValue });\n }\n else {\n instanceofFilterUI.write({ column: col, target: target, parent: this.parent, filteredValue: flValue });\n }\n }\n filterBtnClick(col) {\n let flValue;\n let flOptrValue;\n let targ = this.dlgObj.element.querySelector('.e-flmenu-valuediv input');\n flOptrValue = this.flMuiObj.getFlOperator();\n let instanceofFilterUI = new this.colTypes[col.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n if (col.filterTemplate) {\n let element = this.dlgDiv.querySelector('.e-flmenu-valuediv');\n let fltrValue;\n if (element.children[0].value) {\n fltrValue = element.children[0].value;\n }\n else {\n if (!isBlazor() && !isNullOrUndefined(element.children[0].ej2_instances)) {\n fltrValue = element.children[0].ej2_instances[0].value;\n }\n else {\n let eControl = element.querySelector('.e-control');\n fltrValue = col.type === 'boolean' ? eControl.checked :\n !isNullOrUndefined(eControl.ej2_instances) ?\n eControl.ej2_instances[0].value :\n eControl.value;\n }\n }\n this.filterObj.filterByColumn(col.field, flOptrValue, fltrValue);\n }\n else {\n if (!isNullOrUndefined(col.filter) &&\n !isNullOrUndefined(col.filter.ui) && !isNullOrUndefined(col.filter.ui.read)) {\n let temp = col.filter.ui.read;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n flValue = temp({ element: targ, column: col, operator: flOptrValue, fltrObj: this.filterObj });\n }\n else {\n instanceofFilterUI.read(targ, col, flOptrValue, this.filterObj);\n }\n }\n let iconClass = this.parent.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n let column = this.parent.element.querySelector('[e-mappinguid=\"' + col.uid + '\"]').parentElement;\n let flIcon = column.querySelector(iconClass);\n if (flIcon) {\n flIcon.classList.add('e-filtered');\n }\n this.closeDialog();\n }\n clearBtnClick(column) {\n this.filterObj.removeFilteredColsByField(column.field);\n if (isBlazor() && !this.parent.isJsComponent) {\n this.parent.setProperties({ filterSettings: { columns: this.filterSettings.columns } }, true);\n }\n this.closeDialog();\n let iconClass = this.parent.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n let col = this.parent.element.querySelector('[e-mappinguid=\"' + column.uid + '\"]').parentElement;\n let flIcon = col.querySelector(iconClass);\n if (flIcon) {\n flIcon.classList.remove('e-filtered');\n }\n }\n destroy() {\n this.closeDialog();\n }\n /**\n * @hidden\n */\n getFilterUIInfo() {\n return { field: this.col.field, operator: this.flMuiObj.getFlOperator() };\n }\n}\n\n/**\n * @hidden\n * `CheckBoxFilter` module is used to handle filtering action.\n */\nclass CheckBoxFilter {\n /**\n * Constructor for checkbox filtering module\n * @hidden\n */\n constructor(parent, filterSettings, serviceLocator) {\n this.parent = parent;\n this.isresetFocus = true;\n this.checkBoxBase = new CheckBoxFilterBase(parent);\n this.addEventListener();\n }\n /**\n * To destroy the check box filter.\n * @return {void}\n * @hidden\n */\n destroy() {\n this.removeEventListener();\n this.checkBoxBase.closeDialog();\n }\n openDialog(options) {\n this.checkBoxBase.openDialog(options);\n this.parent.log('column_type_missing', { column: options.column });\n }\n closeDialog() {\n this.removeEventListener();\n this.checkBoxBase.closeDialog();\n if (this.isresetFocus) {\n this.parent.notify(restoreFocus, {});\n }\n }\n /**\n * For internal use only - Get the module name.\n * @private\n */\n getModuleName() {\n return 'checkboxFilter';\n }\n actionBegin(args) {\n this.parent.trigger(actionBegin, args);\n }\n actionComplete(args) {\n this.parent.trigger(actionComplete, args);\n }\n actionPrevent(args) {\n if (isActionPrevent(this.parent)) {\n this.parent.notify(preventBatch, args);\n args.cancel = true;\n }\n }\n addEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(cBoxFltrBegin, this.actionBegin, this);\n this.parent.on(cBoxFltrComplete, this.actionComplete, this);\n this.parent.on(fltrPrevent, this.actionPrevent, this);\n }\n removeEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(cBoxFltrBegin, this.actionBegin);\n this.parent.off(cBoxFltrComplete, this.actionComplete);\n this.parent.off(fltrPrevent, this.actionPrevent);\n }\n}\n\n/**\n * @hidden\n * `ExcelFilter` module is used to handle filtering action.\n */\nclass ExcelFilter extends CheckBoxFilter {\n /**\n * Constructor for excelbox filtering module\n * @hidden\n */\n constructor(parent, filterSettings, serviceLocator, customFltrOperators) {\n super(parent, filterSettings, serviceLocator);\n this.parent = parent;\n this.isresetFocus = true;\n this.excelFilterBase = new ExcelFilterBase(parent, customFltrOperators);\n }\n /**\n * To destroy the excel filter.\n * @return {void}\n * @hidden\n */\n destroy() {\n this.excelFilterBase.closeDialog();\n }\n openDialog(options) {\n this.excelFilterBase.openDialog(options);\n }\n closeDialog() {\n this.excelFilterBase.closeDialog();\n if (this.isresetFocus) {\n this.parent.notify(restoreFocus, {});\n }\n }\n /* tslint:disable-next-line:max-line-length */\n filterByColumn(fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue) {\n /* tslint:disable-next-line:max-line-length */\n this.excelFilterBase.filterByColumn(fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue);\n }\n /**\n * @hidden\n */\n getFilterUIInfo() {\n return this.excelFilterBase.getFilterUIInfo();\n }\n /**\n * For internal use only - Get the module name.\n * @private\n */\n getModuleName() {\n return 'excelFilter';\n }\n}\n\n/**\n *\n * The `Filter` module is used to handle filtering action.\n */\nclass Filter {\n /**\n * Constructor for Grid filtering module\n * @hidden\n */\n constructor(parent, filterSettings, serviceLocator) {\n this.predicate = 'and';\n this.contentRefresh = true;\n this.filterByMethod = true;\n this.refresh = true;\n this.values = {};\n this.operators = {};\n this.cellText = {};\n this.nextFlMenuOpen = '';\n this.type = { 'Menu': FilterMenuRenderer, 'CheckBox': CheckBoxFilter, 'Excel': ExcelFilter };\n /** @hidden */\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith'\n };\n this.fltrDlgDetails = { field: '', isOpen: false };\n /** @hidden */\n this.skipNumberInput = ['=', ' ', '!'];\n this.skipStringInput = ['>', '<', '='];\n this.actualPredicate = {};\n this.parent = parent;\n this.filterSettings = filterSettings;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n /**\n * To render filter bar when filtering enabled.\n * @return {void}\n * @hidden\n */\n render(e) {\n if (DataUtil.getObject('args.isFrozen', e)) {\n return;\n }\n let gObj = this.parent;\n this.l10n = this.serviceLocator.getService('localization');\n this.getLocalizedCustomOperators();\n if (this.parent.filterSettings.type === 'FilterBar') {\n if (gObj.columns.length) {\n let fltrElem = this.parent.element.querySelector('.e-filterbar');\n if (fltrElem) {\n remove(fltrElem);\n }\n let rowRenderer = new RowRenderer(this.serviceLocator, CellType.Filter, gObj);\n let row;\n let cellrender = this.serviceLocator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Filter, new FilterCellRenderer(this.parent, this.serviceLocator));\n this.valueFormatter = this.serviceLocator.getService('valueFormatter');\n rowRenderer.element = this.parent.createElement('tr', { className: 'e-filterbar' });\n row = this.generateRow();\n row.data = this.values;\n this.parent.getHeaderContent().querySelector('thead').appendChild(rowRenderer.element);\n let rowdrag = this.parent.element.querySelector('.e-rowdragheader');\n this.element = rowRenderer.render(row, gObj.getColumns(), null, null, rowRenderer.element);\n let detail = this.element.querySelector('.e-detailheadercell');\n if (detail) {\n detail.className = 'e-filterbarcell e-mastercell';\n }\n if (rowdrag) {\n rowdrag.className = 'e-dragheadercell e-mastercell';\n }\n let gCells = [].slice.call(this.element.querySelectorAll('.e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n this.wireEvents();\n this.parent.notify(freezeRender, { case: 'filter' });\n }\n }\n }\n /**\n * To destroy the filter bar.\n * @return {void}\n * @hidden\n */\n destroy() {\n let gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.e-gridheader') && !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n if (this.filterModule) {\n this.filterModule.destroy();\n }\n // tslint:disable-next-line:no-any\n if (!this.parent.refreshing) {\n this.filterSettings.columns = [];\n }\n this.updateFilterMsg();\n this.removeEventListener();\n this.unWireEvents();\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n let dropdownlist = this.element.querySelectorAll('.e-filterbaroperator');\n for (let i = 0; i < dropdownlist.length; i++) {\n dropdownlist[i].ej2_instances[0].destroy();\n }\n }\n if (this.element) {\n remove(this.element);\n let filterBarElement = this.parent.getHeaderContent().querySelector('.e-filterbar');\n if (this.parent.getFrozenColumns() && filterBarElement) {\n remove(filterBarElement);\n }\n }\n }\n generateRow(index) {\n let options = {};\n let row = new Row(options);\n row.cells = this.generateCells();\n return row;\n }\n generateCells() {\n //TODO: generate dummy column for group, detail, stacked row here for filtering;\n let cells = [];\n if (this.parent.allowGrouping) {\n for (let c = 0, len = this.parent.groupSettings.columns.length; c < len; c++) {\n cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n cells.push(this.generateCell({}, CellType.DetailHeader));\n }\n if (this.parent.isRowDragable()) {\n cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n for (let dummy of this.parent.getColumns()) {\n cells.push(this.generateCell(dummy));\n }\n return cells;\n }\n generateCell(column, cellType) {\n let opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'rowId': '',\n 'column': column,\n 'cellType': cellType ? cellType : CellType.Filter,\n 'attributes': { title: this.l10n.getConstant('FilterbarTitle') }\n };\n return new Cell(opt);\n }\n /**\n * To update filterSettings when applying filter.\n * @return {void}\n * @hidden\n */\n updateModel() {\n let col = this.parent.getColumnByField(this.fieldName);\n let arrayVal = Array.isArray(this.value) ? this.value : [this.value];\n for (let i = 0, len = arrayVal.length; i < len; i++) {\n let field = col.isForeignColumn() ? col.foreignKeyValue : this.fieldName;\n this.currentFilterObject = {\n field: field, uid: col.uid, isForeignKey: col.isForeignColumn(), operator: this.operator,\n value: arrayVal[i], predicate: this.predicate,\n matchCase: this.matchCase, ignoreAccent: this.ignoreAccent, actualFilterValue: {}, actualOperator: {}\n };\n let index = this.getFilteredColsIndexByField(col);\n if (index > -1 && !Array.isArray(this.value)) {\n this.filterSettings.columns[index] = this.currentFilterObject;\n }\n else {\n this.filterSettings.columns.push(this.currentFilterObject);\n }\n }\n this.filterSettings.columns = this.filterSettings.columns;\n this.parent.dataBind();\n }\n getFilteredColsIndexByField(col) {\n let cols = this.filterSettings.columns;\n for (let i = 0, len = cols.length; i < len; i++) {\n if (cols[i].uid === col.uid || (col.isForeignColumn() && this.parent.getColumnByUid(col.uid).field === col.foreignKeyValue)) {\n return i;\n }\n }\n return -1;\n }\n /**\n * To trigger action complete event.\n * @return {void}\n * @hidden\n */\n onActionComplete(e) {\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\n let args = !this.isRemove ? {\n currentFilterObject: this.currentFilterObject,\n /* tslint:disable:no-string-literal */\n currentFilteringColumn: !isNullOrUndefined(this.column) ? this.column.field : undefined,\n /* tslint:enable:no-string-literal */\n columns: this.filterSettings.columns, requestType: 'filtering', type: actionComplete\n } : {\n requestType: 'filtering', type: actionComplete\n };\n this.parent.trigger(actionComplete, extend(e, args));\n this.isRemove = false;\n }\n wireEvents() {\n EventHandler.add(this.parent.getHeaderContent(), 'keyup', this.keyUpHandlerImmediate, this);\n }\n unWireEvents() {\n EventHandler.remove(this.parent.getHeaderContent(), 'keyup', this.keyUpHandlerImmediate);\n }\n enableAfterRender(e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.parent.getHeaderTable().classList.add('e-sortfilter');\n this.render();\n }\n }\n initialEnd() {\n this.parent.off(contentReady, this.initialEnd);\n if (this.parent.getColumns().length && this.filterSettings.columns.length) {\n let gObj = this.parent;\n this.contentRefresh = false;\n this.initialLoad = true;\n for (let col of gObj.filterSettings.columns) {\n this.filterByColumn(col.field, col.operator, col.value, col.predicate, col.matchCase, col.ignoreAccent, col.actualFilterValue, col.actualOperator);\n }\n this.initialLoad = false;\n this.updateFilterMsg();\n this.contentRefresh = true;\n }\n }\n /**\n * @hidden\n */\n addEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(uiUpdate, this.enableAfterRender, this);\n this.parent.on(filterComplete, this.onActionComplete, this);\n this.parent.on(inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(keyPressed, this.keyUpHandler, this);\n this.parent.on(columnPositionChanged, this.columnPositionChanged, this);\n this.parent.on(headerRefreshed, this.render, this);\n this.parent.on(contentReady, this.initialEnd, this);\n this.parent.on(filterMenuClose, this.filterMenuClose, this);\n EventHandler.add(document, 'click', this.clickHandler, this);\n this.parent.on(filterOpen, this.columnMenuFilter, this);\n this.parent.on(click, this.filterIconClickHandler, this);\n this.parent.on('persist-data-changed', this.initialEnd, this);\n this.parent.on(closeFilterDialog, this.clickHandler, this);\n }\n /**\n * @hidden\n */\n removeEventListener() {\n EventHandler.remove(document, 'click', this.clickHandler);\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(uiUpdate, this.enableAfterRender);\n this.parent.off(filterComplete, this.onActionComplete);\n this.parent.off(inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(keyPressed, this.keyUpHandler);\n this.parent.off(columnPositionChanged, this.columnPositionChanged);\n this.parent.off(headerRefreshed, this.render);\n this.parent.off(filterOpen, this.columnMenuFilter);\n this.parent.off(filterMenuClose, this.filterMenuClose);\n this.parent.off(click, this.filterIconClickHandler);\n this.parent.off(closeFilterDialog, this.clickHandler);\n }\n filterMenuClose(args) {\n this.fltrDlgDetails.isOpen = false;\n }\n /**\n * Filters the Grid row by fieldName, filterOperator, and filterValue.\n * @param {string} fieldName - Defines the field name of the filter column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value which is used to filter records.\n * @param {string} predicate - Defines the relationship of one filter query with another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, then the filter records\n * the exact match or
    filters records that are case insensitive (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true, then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n * @return {void}\n */\n filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n let gObj = this.parent;\n let filterCell;\n this.column = gObj.grabColumnByFieldFromAllCols(fieldName);\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n filterOperator = this.getOperatorName(fieldName);\n }\n if (!this.column) {\n return;\n }\n if (this.filterSettings.type === 'FilterBar') {\n filterCell = gObj.getHeaderContent().querySelector('[id=\\'' + this.column.field + '_filterBarcell\\']');\n }\n if (!isNullOrUndefined(this.column.allowFiltering) && !this.column.allowFiltering) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: this.column.headerText });\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(preventBatch, {\n instance: this, handler: this.filterByColumn, arg1: fieldName, arg2: filterOperator, arg3: filterValue, arg4: predicate,\n arg5: matchCase, arg6: ignoreAccent, arg7: actualFilterValue, arg8: actualOperator\n });\n return;\n }\n this.predicate = predicate ? predicate : Array.isArray(filterValue) ? 'or' : 'and';\n this.value = filterValue;\n this.matchCase = matchCase || false;\n this.ignoreAccent = this.ignoreAccent = !isNullOrUndefined(ignoreAccent) ? ignoreAccent : this.parent.filterSettings.ignoreAccent;\n this.fieldName = fieldName;\n this.operator = filterOperator;\n filterValue = !isNullOrUndefined(filterValue) && filterValue.toString();\n if (this.column.type === 'number' || this.column.type === 'date') {\n this.matchCase = true;\n }\n gObj.getColumnHeaderByField(fieldName).setAttribute('aria-filtered', 'true');\n if (filterCell && this.filterSettings.type === 'FilterBar') {\n if (filterValue.length < 1 || (!this.filterByMethod &&\n this.checkForSkipInput(this.column, filterValue))) {\n this.filterStatusMsg = filterValue.length < 1 ? '' : this.l10n.getConstant('InvalidFilterMessage');\n this.updateFilterMsg();\n return;\n }\n if (filterCell.value !== filterValue) {\n filterCell.value = filterValue;\n }\n }\n if (!isNullOrUndefined(this.column.format)) {\n this.applyColumnFormat(filterValue);\n if (this.initialLoad && this.filterSettings.type === 'FilterBar') {\n filterCell.value = this.values[this.column.field];\n }\n }\n else {\n this.values[this.column.field] = filterValue; //this line should be above updateModel\n }\n let predObj = {\n field: this.fieldName,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: this.operator,\n value: this.value,\n type: this.column.type\n };\n let filterColumn = this.parent.filterSettings.columns.filter((fColumn) => {\n return (fColumn.field === this.fieldName);\n });\n if (filterColumn.length > 1 && !isNullOrUndefined(this.actualPredicate[this.fieldName])) {\n this.actualPredicate[this.fieldName].push(predObj);\n }\n else {\n this.actualPredicate[this.fieldName] = [predObj];\n }\n this.addFilteredClass(this.fieldName);\n if (this.checkAlreadyColFiltered(this.column.field)) {\n return;\n }\n this.updateModel();\n }\n applyColumnFormat(filterValue) {\n let getFlvalue = (this.column.type === 'date' || this.column.type === 'datetime') ?\n new Date(filterValue) : parseFloat(filterValue);\n this.values[this.column.field] = this.setFormatForFlColumn(getFlvalue, this.column);\n }\n onPropertyChanged(e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n for (let prop of Object.keys(e.properties)) {\n switch (prop) {\n case 'columns':\n if (this.contentRefresh) {\n this.parent.notify(modelChanged, {\n currentFilterObject: this.currentFilterObject, currentFilteringColumn: this.column ?\n this.column.field : undefined, action: 'filter',\n columns: this.filterSettings.columns, requestType: 'filtering', type: actionBegin, cancel: false\n });\n this.refreshFilterSettings();\n this.updateFilterMsg();\n this.updateFilter();\n }\n break;\n case 'showFilterBarStatus':\n if (e.properties[prop]) {\n this.updateFilterMsg();\n }\n else if (this.parent.allowPaging) {\n this.parent.updateExternalMessage('');\n }\n break;\n case 'showFilterBarOperator':\n case 'type':\n this.parent.refreshHeader();\n this.refreshFilterSettings();\n break;\n }\n }\n }\n refreshFilterSettings() {\n if (this.filterSettings.type === 'FilterBar') {\n for (let i = 0; i < this.filterSettings.columns.length; i++) {\n this.column = this.parent.grabColumnByUidFromAllCols(this.filterSettings.columns[i].uid);\n let filterValue = this.filterSettings.columns[i].value;\n filterValue = !isNullOrUndefined(filterValue) && filterValue.toString();\n if (!isNullOrUndefined(this.column.format)) {\n this.applyColumnFormat(filterValue);\n }\n else {\n let key = this.filterSettings.columns[i].field;\n this.values[key] = this.filterSettings.columns[i].value;\n }\n let filterElement = this.getFilterBarElement(this.column.field);\n if (filterElement) {\n if (this.cellText[this.filterSettings.columns[i].field] !== ''\n && !isNullOrUndefined(this.cellText[this.filterSettings.columns[i].field])) {\n filterElement.value = this.cellText[this.column.field];\n }\n else {\n filterElement.value = this.filterSettings.columns[i].value;\n }\n }\n }\n if (this.filterSettings.columns.length === 0) {\n let col = this.parent.getColumns();\n for (let i = 0; i < col.length; i++) {\n let filterElement = this.getFilterBarElement(col[i].field);\n if (filterElement && filterElement.value !== '') {\n filterElement.value = '';\n delete this.values[col[i].field];\n }\n }\n }\n }\n }\n getFilterBarElement(col) {\n let selector = '[id=\\'' + col + '_filterBarcell\\']';\n let filterElement;\n if (selector && !isNullOrUndefined(this.element)) {\n filterElement = this.element.querySelector(selector);\n }\n return filterElement;\n }\n /**\n * @private\n */\n refreshFilter() {\n this.refreshFilterSettings();\n this.updateFilterMsg();\n }\n /**\n * Clears all the filtered rows of the Grid.\n * @return {void}\n */\n clearFiltering(fields) {\n let cols = getActualPropFromColl(this.filterSettings.columns);\n if (!isNullOrUndefined(fields)) {\n this.refresh = false;\n fields.forEach((field) => { this.removeFilteredColsByField(field, false); });\n this.parent.setProperties({ filterSettings: { columns: this.filterSettings.columns } }, true);\n this.parent.renderModule.refresh();\n this.refresh = true;\n return;\n }\n if (isActionPrevent(this.parent)) {\n this.parent.notify(preventBatch, { instance: this, handler: this.clearFiltering });\n return;\n }\n for (let i = 0; i < cols.length; i++) {\n cols[i].uid = cols[i].uid || this.parent.getColumnByField(cols[i].field).uid;\n }\n let colUid = cols.map((f) => f.uid);\n let filteredcols = colUid.filter((item, pos) => colUid.indexOf(item) === pos);\n this.refresh = false;\n for (let i = 0, len = filteredcols.length; i < len; i++) {\n this.removeFilteredColsByField(this.parent.getColumnByUid(filteredcols[i]).field, false);\n }\n if (isBlazor() && !this.parent.isJsComponent) {\n this.parent.setProperties({ filterSettings: { columns: this.filterSettings.columns } }, true);\n }\n this.refresh = true;\n if (filteredcols.length) {\n this.parent.renderModule.refresh();\n }\n if (this.parent.filterSettings.columns.length === 0 && this.parent.element.querySelector('.e-filtered')) {\n let fltrElement = [].slice.call(this.parent.element.querySelectorAll('.e-filtered'));\n for (let i = 0, len = fltrElement.length; i < len; i++) {\n fltrElement[0].removeAttribute('aria-filtered');\n fltrElement[0].classList.remove('e-filtered');\n }\n }\n this.isRemove = true;\n this.filterStatusMsg = '';\n this.updateFilterMsg();\n }\n checkAlreadyColFiltered(field) {\n let columns = this.filterSettings.columns;\n for (let col of columns) {\n if (col.field === field && col.value === this.value &&\n col.operator === this.operator && col.predicate === this.predicate) {\n return true;\n }\n }\n return false;\n }\n columnMenuFilter(args) {\n this.column = args.col;\n let ele = closest(args.target, '#' + args.id);\n if (args.isClose && !ele) {\n this.filterModule.closeDialog();\n }\n else if (ele) {\n this.filterDialogOpen(this.column, args.target);\n }\n }\n filterDialogOpen(col, target, left, top) {\n let gObj = this.parent;\n if (this.filterModule) {\n this.filterModule.closeDialog();\n }\n this.filterModule = new this.type[col.filter.type || this.parent.filterSettings.type](this.parent, gObj.filterSettings, this.serviceLocator, this.customOperators, this);\n let dataSource = col.filter.dataSource || gObj.dataSource && 'result' in gObj.dataSource ? gObj.dataSource :\n gObj.getDataModule().dataManager;\n this.filterModule.openDialog({\n type: col.type, field: col.field, displayName: col.headerText,\n dataSource: dataSource, format: col.format, height: 800, columns: gObj.getColumns(),\n filteredColumns: gObj.filterSettings.columns, target: target, dataManager: gObj.getDataModule().dataManager,\n formatFn: col.getFormatter(), ignoreAccent: gObj.filterSettings.ignoreAccent,\n parserFn: col.getParser(), query: gObj.query, template: col.getFilterItemTemplate(),\n hideSearchbox: isNullOrUndefined(col.filter.hideSearchbox) ? false : col.filter.hideSearchbox,\n handler: this.filterHandler.bind(this), localizedStrings: gObj.getLocaleConstants(),\n position: { X: left, Y: top }, column: col, foreignKeyValue: col.foreignKeyValue,\n actualPredicate: this.actualPredicate, localeObj: gObj.localeObj,\n isRemote: gObj.getDataModule().isRemote(), allowCaseSensitive: this.filterSettings.enableCaseSensitivity\n });\n }\n /**\n * Removes filtered column by field name.\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @return {void}\n * @hidden\n */\n removeFilteredColsByField(field, isClearFilterBar) {\n let fCell;\n let cols = this.filterSettings.columns;\n if (isActionPrevent(this.parent)) {\n let args = { instance: this, handler: this.removeFilteredColsByField, arg1: field, arg2: isClearFilterBar };\n this.parent.notify(preventBatch, args);\n return;\n }\n let colUid = cols.map((f) => f.uid);\n let filteredColsUid = colUid.filter((item, pos) => colUid.indexOf(item) === pos);\n for (let i = 0, len = filteredColsUid.length; i < len; i++) {\n cols[i].uid = cols[i].uid || this.parent.getColumnByField(cols[i].field).uid;\n let len = cols.length;\n let column = this.parent.grabColumnByUidFromAllCols(filteredColsUid[i]);\n if (column.field === field || (column.field === column.foreignKeyValue && column.isForeignColumn())) {\n let currentPred = this.filterSettings.columns.filter((e) => {\n return e.uid === column.uid;\n })[0];\n if (this.filterSettings.type === 'FilterBar' && !isClearFilterBar) {\n let selector = '[id=\\'' + column.field + '_filterBarcell\\']';\n fCell = this.parent.getHeaderContent().querySelector(selector);\n if (fCell) {\n fCell.value = '';\n delete this.values[field];\n }\n }\n while (len--) {\n if (cols[len].uid === column.uid) {\n cols.splice(len, 1);\n }\n }\n let fltrElement = this.parent.getColumnHeaderByField(column.field);\n fltrElement.removeAttribute('aria-filtered');\n if (this.filterSettings.type !== 'FilterBar') {\n let iconClass = this.parent.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n fltrElement.querySelector(iconClass).classList.remove('e-filtered');\n }\n this.isRemove = true;\n if (this.actualPredicate[field]) {\n delete this.actualPredicate[field];\n }\n if (this.values[field]) {\n delete this.values[field];\n }\n if (this.refresh) {\n if (isBlazor() && !this.parent.isJsComponent) {\n this.parent.setProperties({ filterSettings: { columns: this.filterSettings.columns } }, true);\n this.parent.notify(modelChanged, {\n requestType: 'filtering', type: actionBegin, currentFilterObject: {\n field: column.field, operator: this.operator, value: this.value, predicate: this.predicate,\n matchCase: this.matchCase, ignoreAccent: this.ignoreAccent, actualFilterValue: {}, actualOperator: {}\n }, currentFilterColumn: column\n });\n }\n else {\n this.parent.notify(modelChanged, {\n requestType: 'filtering', type: actionBegin, currentFilterObject: currentPred,\n currentFilterColumn: column, action: 'clearFilter'\n });\n }\n }\n break;\n }\n }\n this.updateFilterMsg();\n }\n /**\n * For internal use only - Get the module name.\n * @private\n */\n getModuleName() {\n return 'filter';\n }\n keyUpHandlerImmediate(e) {\n if (e.keyCode !== 13) {\n this.keyUpHandler(e);\n }\n }\n keyUpHandler(e) {\n let gObj = this.parent;\n let target = e.target;\n if (target && matches(target, '.e-filterbar input')) {\n let closeHeaderEle = closest(target, 'th.e-filterbarcell');\n this.column = gObj.getColumnByUid(closeHeaderEle.getAttribute('e-mappinguid'));\n if (!this.column) {\n return;\n }\n if (e.action === 'altDownArrow' && this.parent.filterSettings.showFilterBarOperator) {\n let dropDownListInput = closest(target, 'span').querySelector('.e-filterbaroperator');\n dropDownListInput.ej2_instances[0].showPopup();\n dropDownListInput.focus();\n }\n if ((this.filterSettings.mode === 'Immediate' || (e.keyCode === 13 &&\n !e.target.classList.contains('e-filterbaroperator')))\n && e.keyCode !== 9) {\n this.value = target.value.trim();\n this.processFilter(e);\n }\n }\n if (e.action === 'altDownArrow' && this.filterSettings.type !== 'FilterBar') {\n let element = gObj.focusModule.currentInfo.element;\n if (element && element.classList.contains('e-headercell')) {\n let column = gObj.getColumnByUid(element.firstElementChild.getAttribute('e-mappinguid'));\n this.openMenuByField(column.field);\n this.parent.focusModule.clearIndicator();\n }\n }\n if (e.action === 'escape' && this.filterSettings.type === 'Menu' && this.filterModule) {\n this.filterModule.closeDialog();\n gObj.notify(restoreFocus, {});\n }\n }\n updateCrossIcon(element) {\n if (element.value.length) {\n element.nextElementSibling.classList.remove('e-hide');\n }\n }\n updateFilterMsg() {\n if (this.filterSettings.type === 'FilterBar') {\n let gObj = this.parent;\n let getFormatFlValue;\n let columns = this.filterSettings.columns;\n let formater = this.serviceLocator.getService('valueFormatter');\n let column;\n if (!this.filterSettings.showFilterBarStatus) {\n return;\n }\n if (columns.length > 0 && this.filterStatusMsg !== this.l10n.getConstant('InvalidFilterMessage')) {\n this.filterStatusMsg = '';\n for (let index = 0; index < columns.length; index++) {\n column = gObj.grabColumnByUidFromAllCols(columns[index].uid) || gObj.grabColumnByFieldFromAllCols(columns[index].field);\n if (index) {\n this.filterStatusMsg += ' && ';\n }\n if (!isNullOrUndefined(column.format)) {\n let flValue = (column.type === 'date' || column.type === 'datetime') ?\n this.valueFormatter.fromView(this.values[column.field], column.getParser(), column.type) :\n this.values[column.field];\n if (!(column.type === 'date' || column.type === 'datetime')) {\n let formater = this.serviceLocator.getService('valueFormatter');\n getFormatFlValue = formater.toView(flValue, column.getParser()).toString();\n }\n else {\n getFormatFlValue = this.setFormatForFlColumn(flValue, column);\n }\n this.filterStatusMsg += column.headerText + ': ' + getFormatFlValue;\n }\n else {\n this.filterStatusMsg += column.headerText + ': ' + this.values[column.field];\n }\n }\n }\n if (gObj.allowPaging) {\n gObj.updateExternalMessage(this.filterStatusMsg);\n }\n //TODO: virtual paging \n this.filterStatusMsg = '';\n }\n }\n setFormatForFlColumn(value, column) {\n let formater = this.serviceLocator.getService('valueFormatter');\n return formater.toView(value, column.getFormatter()).toString();\n }\n checkForSkipInput(column, value) {\n let isSkip;\n if (column.type === 'number') {\n if (DataUtil.operatorSymbols[value] || this.skipNumberInput.indexOf(value) > -1) {\n isSkip = true;\n }\n }\n else if (column.type === 'string') {\n for (let val of value) {\n if (this.skipStringInput.indexOf(val) > -1) {\n isSkip = true;\n }\n }\n }\n return isSkip;\n }\n processFilter(e) {\n this.stopTimer();\n this.startTimer(e);\n }\n startTimer(e) {\n this.timer = window.setInterval(() => { this.onTimerTick(); }, e.keyCode === 13 ? 0 : this.filterSettings.immediateModeDelay);\n }\n stopTimer() {\n window.clearInterval(this.timer);\n }\n onTimerTick() {\n let selector = '[id=\\'' + this.column.field + '_filterBarcell\\']';\n let filterElement = this.element.querySelector(selector);\n if (!filterElement && this.parent.getFrozenColumns()) {\n filterElement = this.parent.getHeaderContent().querySelector(selector);\n }\n let filterValue;\n this.cellText[this.column.field] = filterElement.value;\n this.stopTimer();\n if (!isNullOrUndefined(this.column.filterBarTemplate)) {\n let templateRead = this.column.filterBarTemplate.read;\n if (typeof templateRead === 'string') {\n templateRead = getValue(templateRead, window);\n }\n if (!isNullOrUndefined(templateRead)) {\n this.value = templateRead.call(this, filterElement);\n }\n }\n else {\n filterValue = JSON.parse(JSON.stringify(filterElement.value));\n }\n if (isNullOrUndefined(this.value) || this.value === '') {\n this.removeFilteredColsByField(this.column.field);\n return;\n }\n this.validateFilterValue(this.value);\n this.filterByMethod = false;\n this.filterByColumn(this.column.field, this.operator, this.value, this.predicate, this.filterSettings.enableCaseSensitivity, this.ignoreAccent);\n this.filterByMethod = true;\n filterElement.value = filterValue;\n this.updateFilterMsg();\n }\n validateFilterValue(value) {\n let gObj = this.parent;\n let skipInput;\n let index;\n this.matchCase = this.filterSettings.enableCaseSensitivity;\n switch (this.column.type) {\n case 'number':\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.equal;\n }\n skipInput = ['>', '<', '=', '!'];\n for (let i = 0; i < value.length; i++) {\n if (skipInput.indexOf(value[i]) > -1) {\n index = i;\n break;\n }\n }\n this.getOperator(value.substring(index));\n if (index !== 0) {\n this.value = value.substring(0, index);\n }\n if (this.value !== '' && value.length >= 1) {\n this.value = this.valueFormatter.fromView(this.value, this.column.getParser(), this.column.type);\n }\n if (isNaN(this.value)) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n break;\n case 'date':\n case 'datetime':\n this.operator = this.filterOperators.equal;\n if (this.value !== '' && !(this.value instanceof Date)) {\n this.getOperator(value);\n this.value = this.valueFormatter.fromView(this.value, this.column.getParser(), this.column.type);\n if (isNullOrUndefined(this.value)) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n }\n break;\n case 'string':\n this.matchCase = false;\n if (value.charAt(0) === '*') {\n this.value = this.value.slice(1);\n this.operator = this.filterOperators.startsWith;\n }\n else if (value.charAt(value.length - 1) === '%') {\n this.value = this.value.slice(0, -1);\n this.operator = this.filterOperators.startsWith;\n }\n else if (value.charAt(0) === '%') {\n this.value = this.value.slice(1);\n this.operator = this.filterOperators.endsWith;\n }\n else {\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.startsWith;\n }\n }\n break;\n case 'boolean':\n if (value.toLowerCase() === 'true' || value === '1') {\n this.value = true;\n }\n else if (value.toLowerCase() === 'false' || value === '0') {\n this.value = false;\n }\n else if (value.length) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n this.operator = this.filterOperators.equal;\n break;\n default:\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.equal;\n }\n }\n }\n getOperator(value) {\n let singleOp = value.charAt(0);\n let multipleOp = value.slice(0, 2);\n let operators = extend({ '=': this.filterOperators.equal, '!': this.filterOperators.notEqual }, DataUtil.operatorSymbols);\n if (operators.hasOwnProperty(singleOp) || operators.hasOwnProperty(multipleOp)) {\n this.operator = operators[singleOp];\n this.value = value.substring(1);\n if (!this.operator) {\n this.operator = operators[multipleOp];\n this.value = value.substring(2);\n }\n }\n if (this.operator === this.filterOperators.lessThan || this.operator === this.filterOperators.greaterThan) {\n if (this.value.charAt(0) === '=') {\n this.operator = this.operator + 'orequal';\n this.value = this.value.substring(1);\n }\n }\n }\n columnPositionChanged(e) {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n return;\n }\n }\n getLocalizedCustomOperators() {\n let numOptr = [\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'greaterthan', text: this.l10n.getConstant('GreaterThan') },\n { value: 'greaterthanorequal', text: this.l10n.getConstant('GreaterThanOrEqual') },\n { value: 'lessthan', text: this.l10n.getConstant('LessThan') },\n { value: 'lessthanorequal', text: this.l10n.getConstant('LessThanOrEqual') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') }\n ];\n this.customOperators = {\n stringOperator: [\n { value: 'startswith', text: this.l10n.getConstant('StartsWith') },\n { value: 'endswith', text: this.l10n.getConstant('EndsWith') },\n { value: 'contains', text: this.l10n.getConstant('Contains') },\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') }\n ],\n numberOperator: numOptr,\n dateOperator: numOptr,\n datetimeOperator: numOptr,\n booleanOperator: [\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') }\n ]\n };\n }\n ;\n /** @hidden */\n openMenuByField(field) {\n let gObj = this.parent;\n let column = gObj.getColumnByField(field);\n let header = gObj.getColumnHeaderByField(field);\n let target = header.querySelector('.e-filtermenudiv');\n if (!target) {\n return;\n }\n let gClient = gObj.element.getBoundingClientRect();\n let fClient = target.getBoundingClientRect();\n this.filterDialogOpen(column, target, fClient.right - gClient.left, fClient.bottom - gClient.top);\n }\n filterIconClickHandler(e) {\n let target = e.target;\n if (target.classList.contains('e-filtermenudiv') && (this.parent.filterSettings.type === 'Menu' ||\n this.parent.filterSettings.type === 'CheckBox' || this.parent.filterSettings.type === 'Excel')) {\n let gObj = this.parent;\n let col = gObj.getColumnByUid(parentsUntil(target, 'e-headercell').firstElementChild.getAttribute('e-mappinguid'));\n this.column = col;\n if (this.fltrDlgDetails.field === col.field && this.fltrDlgDetails.isOpen) {\n return;\n }\n if (this.filterModule) {\n this.filterModule.closeDialog();\n }\n this.fltrDlgDetails = { field: col.field, isOpen: true };\n this.openMenuByField(col.field);\n }\n }\n clickHandler(e) {\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n if (parentsUntil(e.target, 'e-filterbarcell') &&\n e.target.classList.contains('e-input-group-icon')) {\n closest(e.target, 'div').querySelector('.e-filterbaroperator').focus();\n }\n if (e.target.classList.contains('e-list-item')) {\n let inputId = document.querySelector('.e-popup-open').getAttribute('id').replace('_popup', '');\n if (inputId.indexOf('grid-column') !== -1) {\n closest(document.getElementById(inputId), 'div').querySelector('.e-filtertext').focus();\n }\n }\n }\n if (this.filterSettings.mode === 'Immediate' || this.parent.filterSettings.type === 'Menu' ||\n this.parent.filterSettings.type === 'CheckBox' || this.parent.filterSettings.type === 'Excel') {\n let gObj = this.parent;\n let target = e.target;\n let datepickerEle = target.classList.contains('e-day'); // due to datepicker popup cause\n let dialog = parentsUntil(this.parent.element, 'e-dialog');\n let hasDialog = false;\n let popupEle = parentsUntil(target, 'e-popup');\n if (dialog && popupEle) {\n hasDialog = dialog.id === popupEle.id;\n }\n if (parentsUntil(target, 'e-filter-popup') || target.classList.contains('e-filtermenudiv')) {\n return;\n }\n else if (this.filterModule && (!parentsUntil(target, 'e-popup-wrapper')\n && (!closest(target, '.e-filter-item.e-menu-item'))) && !datepickerEle) {\n if ((hasDialog && (!parentsUntil(target, 'e-filter-popup'))\n && (!parentsUntil(target, 'e-popup-flmenu'))) || (!popupEle)) {\n this.filterModule.isresetFocus = parentsUntil(target, 'e-grid') &&\n parentsUntil(target, 'e-grid').id === this.parent.element.id;\n this.filterModule.closeDialog(target);\n }\n }\n if (this.filterSettings.mode === 'Immediate' && target.classList.contains('e-clear-icon')) {\n let targetText = target.previousElementSibling;\n this.removeFilteredColsByField(targetText.id.slice(0, -14)); //Length of _filterBarcell = 14\n }\n }\n }\n filterHandler(args) {\n let filterIconElement;\n this.actualPredicate[args.field] = args.actualPredicate;\n let dataManager = new DataManager(this.filterSettings.columns);\n let query = new Query().where('field', this.filterOperators.equal, args.field);\n let result = dataManager.executeLocal(query);\n for (let i = 0; i < result.length; i++) {\n let index = -1;\n for (let j = 0; j < this.filterSettings.columns.length; j++) {\n if (result[i].field === this.filterSettings.columns[j].field) {\n index = j;\n break;\n }\n }\n if (index !== -1) {\n this.filterSettings.columns.splice(index, 1);\n }\n }\n if (args.action === 'clear-filter' && isBlazor() && !this.parent.isJsComponent) {\n this.parent.setProperties({ filterSettings: { columns: this.filterSettings.columns } }, true);\n }\n if (this.values[args.field]) {\n delete this.values[args.field];\n }\n let iconClass = this.parent.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n filterIconElement = this.parent.getColumnHeaderByField(args.field).querySelector(iconClass);\n if (args.action === 'filtering') {\n this.filterSettings.columns = this.filterSettings.columns.concat(args.filterCollection);\n if (this.filterSettings.columns.length && filterIconElement) {\n filterIconElement.classList.add('e-filtered');\n }\n }\n else {\n if (filterIconElement) {\n filterIconElement.classList.remove('e-filtered');\n }\n args.requestType = 'filtering';\n this.parent.renderModule.refresh(args); //hot-fix onpropertychanged not working for object { array } \n }\n this.parent.dataBind();\n }\n updateFilter() {\n let cols = this.filterSettings.columns;\n this.actualPredicate = {};\n for (let i = 0; i < cols.length; i++) {\n this.column = this.parent.getColumnByField(cols[i].field) ||\n getColumnByForeignKeyValue(cols[i].field, this.parent.getForeignKeyColumns());\n let fieldName = cols[i].field;\n if (!this.parent.getColumnByField(cols[i].field)) {\n fieldName = getColumnByForeignKeyValue(cols[i].field, this.parent.getForeignKeyColumns()).field;\n }\n /* tslint:disable-next-line:max-line-length */\n this.refreshFilterIcon(fieldName, cols[i].operator, cols[i].value, cols[i].type, cols[i].predicate, cols[i].matchCase, cols[i].ignoreAccent, cols[i].uid);\n }\n }\n /* tslint:disable-next-line:max-line-length */\n refreshFilterIcon(fieldName, operator, value, type, predicate, matchCase, ignoreAccent, uid) {\n let obj;\n obj = {\n field: fieldName,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: operator,\n value: value,\n type: type\n };\n this.actualPredicate[fieldName] ? this.actualPredicate[fieldName].push(obj) : this.actualPredicate[fieldName] = [obj];\n let field = uid ? this.parent.grabColumnByUidFromAllCols(uid).field : fieldName;\n this.addFilteredClass(field);\n }\n addFilteredClass(fieldName) {\n let filterIconElement;\n if (this.parent.showColumnMenu) {\n filterIconElement = this.parent.getColumnHeaderByField(fieldName).querySelector('.e-columnmenu');\n }\n else if (this.parent.getColumnByField(fieldName)) {\n filterIconElement = this.parent.getColumnHeaderByField(fieldName).querySelector('.e-icon-filter');\n }\n if (filterIconElement) {\n filterIconElement.classList.add('e-filtered');\n }\n }\n /**\n * @hidden\n */\n getFilterUIInfo() {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n }\n /**\n * @hidden\n */\n getOperatorName(field) {\n return document.getElementById(this.parent.getColumnByField(field).uid).ej2_instances[0].value;\n }\n}\n\nconst resizeClassList = {\n root: 'e-rhandler',\n suppress: 'e-rsuppress',\n icon: 'e-ricon',\n helper: 'e-rhelper',\n header: 'th.e-headercell',\n cursor: 'e-rcursor'\n};\n/**\n * `Resize` module is used to handle Resize to fit for columns.\n * @hidden\n * @private\n */\nclass Resize {\n /**\n * Constructor for the Grid resize module\n * @hidden\n */\n constructor(parent) {\n this.tapped = false;\n this.isDblClk = true;\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.widthService = new ColumnWidthService(parent);\n this.addEventListener();\n }\n /**\n * Resize by field names.\n * @param {string|string[]} fName - Defines the field name.\n * @return {void}\n */\n autoFitColumns(fName) {\n let columnName = (fName === undefined || fName === null || fName.length <= 0) ?\n this.parent.getColumns().map((x) => x.field) : (typeof fName === 'string') ? [fName] : fName;\n this.findColumn(columnName);\n }\n autoFit() {\n let newarray = this.parent.getColumns().filter((c) => c.autoFit === true)\n .map((c) => c.field || c.headerText);\n if (newarray.length > 0) {\n this.autoFitColumns(newarray);\n }\n }\n /* tslint:disable-next-line:max-func-body-length */\n resizeColumn(fName, index, id) {\n let gObj = this.parent;\n let tWidth = 0;\n let headerTable;\n let contentTable;\n let footerTable;\n let headerDivTag = 'e-gridheader';\n let contentDivTag = 'e-gridcontent';\n let footerDivTag = 'e-gridfooter';\n let indentWidth = 0;\n let uid = id ? id : this.parent.getUidByColumnField(fName);\n let columnIndex = this.parent.getNormalizedColumnIndex(uid);\n let headerTextClone;\n let contentTextClone;\n let footerTextClone;\n let columnIndexByField = this.parent.getColumnIndexByField(fName);\n let frzCols = gObj.getFrozenColumns();\n if (!isNullOrUndefined(gObj.getFooterContent())) {\n footerTable = gObj.getFooterContentTable();\n }\n if (frzCols) {\n if (index < frzCols) {\n headerTable = gObj.getHeaderTable();\n contentTable = gObj.getContentTable();\n headerTextClone = headerTable.querySelector('[e-mappinguid=\"' + uid + '\"]').parentElement.cloneNode(true);\n contentTextClone = contentTable.querySelectorAll(`td:nth-child(${columnIndex + 1})`);\n if (footerTable) {\n footerTextClone = footerTable.querySelectorAll(`td:nth-child(${columnIndex + 1})`);\n }\n }\n else {\n headerTable = gObj.getHeaderContent().querySelector('.e-movableheader').children[0];\n contentTable = gObj.getContent().querySelector('.e-movablecontent').children[0];\n headerTextClone = headerTable.querySelector('[e-mappinguid=\"' + uid + '\"]').parentElement.cloneNode(true);\n contentTextClone = contentTable.querySelectorAll(`td:nth-child(${(columnIndex - frzCols) + 1})`);\n if (footerTable) {\n footerTable = gObj.getFooterContent().querySelector('.e-movablefootercontent').children[0];\n footerTextClone = footerTable.querySelectorAll(`td:nth-child(${(columnIndex - frzCols) + 1})`);\n }\n }\n }\n else {\n headerTable = gObj.getHeaderTable();\n contentTable = gObj.getContentTable();\n headerTextClone = headerTable.querySelector('[e-mappinguid=\"' + uid + '\"]').parentElement.cloneNode(true);\n contentTextClone = contentTable.querySelectorAll(`td:nth-child(${columnIndex + 1}):not(.e-groupcaption)`);\n if (footerTable) {\n footerTextClone = footerTable.querySelectorAll(`td:nth-child(${columnIndex + 1}):not(.e-groupcaption)`);\n }\n }\n let indentWidthClone = headerTable.querySelector('tr').querySelectorAll('.e-grouptopleftcell');\n if (indentWidthClone.length > 0) {\n for (let i = 0; i < indentWidthClone.length; i++) {\n indentWidth += indentWidthClone[i].offsetWidth;\n }\n }\n let detailsElement = contentTable.querySelector('.e-detailrowcollapse') ||\n contentTable.querySelector('.e-detailrowexpand');\n if ((this.parent.detailTemplate || this.parent.childGrid) && detailsElement) {\n indentWidth += detailsElement.offsetWidth;\n }\n let headerText = [headerTextClone];\n let contentText = [];\n let footerText = [];\n if (footerTable) {\n for (let i = 0; i < footerTextClone.length; i++) {\n footerText[i] = footerTextClone[i].cloneNode(true);\n }\n }\n for (let i = 0; i < contentTextClone.length; i++) {\n contentText[i] = contentTextClone[i].cloneNode(true);\n }\n let wHeader = this.createTable(headerTable, headerText, headerDivTag);\n let wContent = this.createTable(contentTable, contentText, contentDivTag);\n let wFooter = null;\n if (footerText.length) {\n wFooter = this.createTable(footerTable, footerText, footerDivTag);\n }\n let columnbyindex = gObj.getColumns()[columnIndexByField];\n let result;\n let width = columnbyindex.width = formatUnit(Math.max(wHeader, wContent, wFooter));\n let colMaxWidth = columnbyindex.maxWidth && parseFloat(columnbyindex.maxWidth.toString());\n if (parseInt(width, 10) > colMaxWidth) {\n columnbyindex.width = colMaxWidth;\n }\n this.widthService.setColumnWidth(gObj.getColumns()[columnIndexByField]);\n result = gObj.getColumns().some((x) => x.width === null || x.width === undefined || x.width.length <= 0);\n if (result === false) {\n let element = gObj.getColumns();\n for (let i = 0; i < element.length; i++) {\n if (element[i].visible) {\n tWidth = tWidth + parseFloat(element[i].width);\n }\n }\n }\n let calcTableWidth = tWidth + indentWidth;\n if (tWidth > 0 && !gObj.getFrozenColumns()) {\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.widthService.setColumnWidth(new Column({ width: '30px' }));\n }\n headerTable.style.width = formatUnit(calcTableWidth);\n contentTable.style.width = formatUnit(calcTableWidth);\n if (!isNullOrUndefined(footerTable)) {\n footerTable.style.width = formatUnit(calcTableWidth);\n }\n }\n let tableWidth = headerTable.offsetWidth;\n let contentwidth = (gObj.getContent().scrollWidth);\n if (contentwidth > tableWidth) {\n headerTable.classList.add('e-tableborder');\n contentTable.classList.add('e-tableborder');\n }\n else {\n headerTable.classList.remove('e-tableborder');\n contentTable.classList.remove('e-tableborder');\n }\n if (!isNullOrUndefined(footerTable)) {\n footerTable.classList.add('e-tableborder');\n }\n }\n /**\n * To destroy the resize\n * @return {void}\n * @hidden\n */\n destroy() {\n let gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.e-gridheader') && !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n this.widthService = null;\n this.unwireEvents();\n this.removeEventListener();\n }\n /**\n * For internal use only - Get the module name.\n * @private\n */\n getModuleName() {\n return 'resize';\n }\n findColumn(fName) {\n for (let i = 0; i < fName.length; i++) {\n let fieldName = fName[i];\n let columnIndex = this.parent.getColumnIndexByField(fieldName);\n let column = this.parent.getColumns()[columnIndex];\n if (columnIndex > -1 && !isNullOrUndefined(column) && column.visible === true) {\n this.resizeColumn(fieldName, columnIndex);\n }\n }\n }\n /**\n * To create table for autofit\n * @hidden\n */\n createTable(table, text, tag) {\n let myTableDiv = this.parent.createElement('div');\n myTableDiv.className = this.parent.element.className;\n myTableDiv.style.cssText = 'display: inline-block;visibility:hidden;position:absolute';\n let mySubDiv = this.parent.createElement('div');\n mySubDiv.className = tag;\n let myTable = this.parent.createElement('table');\n myTable.className = table.className;\n myTable.classList.add('e-resizetable');\n myTable.style.cssText = 'table-layout: auto;width: auto';\n let myTr = this.parent.createElement('tr');\n for (let i = 0; i < text.length; i++) {\n let tr = myTr.cloneNode();\n tr.className = table.querySelector('tr').className;\n tr.appendChild(text[i]);\n myTable.appendChild(tr);\n }\n mySubDiv.appendChild(myTable);\n myTableDiv.appendChild(mySubDiv);\n document.body.appendChild(myTableDiv);\n let offsetWidthValue = myTable.getBoundingClientRect().width;\n document.body.removeChild(myTableDiv);\n return Math.ceil(offsetWidthValue);\n }\n /**\n * @hidden\n */\n addEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(headerRefreshed, this.refreshHeight, this);\n this.parent.on(initialEnd, this.wireEvents, this);\n this.parent.on(contentReady, this.autoFit, this);\n }\n /**\n * @hidden\n */\n removeEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(headerRefreshed, this.refreshHeight);\n this.parent.off(initialEnd, this.wireEvents);\n }\n /**\n * @hidden\n */\n render() {\n this.unwireEvents();\n this.wireEvents();\n this.setHandlerHeight();\n }\n refreshHeight() {\n let element = this.getResizeHandlers();\n for (let i = 0; i < element.length; i++) {\n if (element[i].parentElement.offsetHeight > 0) {\n element[i].style.height = element[i].parentElement.offsetHeight + 'px';\n }\n }\n this.setHandlerHeight();\n }\n wireEvents() {\n EventHandler.add(this.parent.getHeaderContent(), Browser.touchStartEvent, this.resizeStart, this);\n EventHandler.add(this.parent.getHeaderContent(), dblclick, this.callAutoFit, this);\n }\n unwireEvents() {\n EventHandler.remove(this.parent.getHeaderContent(), Browser.touchStartEvent, this.resizeStart);\n EventHandler.remove(this.parent.getHeaderContent(), dblclick, this.callAutoFit);\n }\n getResizeHandlers() {\n return this.parent.getFrozenColumns() ?\n [].slice.call(this.parent.getHeaderContent().querySelectorAll('.' + resizeClassList.root))\n : [].slice.call(this.parent.getHeaderTable().querySelectorAll('.' + resizeClassList.root));\n }\n setHandlerHeight() {\n let element = [].slice.call(this.parent.getHeaderTable().querySelectorAll('.' + resizeClassList.suppress));\n for (let i = 0; i < element.length; i++) {\n element[i].style.height = element[i].parentElement.offsetHeight + 'px';\n }\n }\n callAutoFit(e) {\n if (e.target.classList.contains('e-rhandler')) {\n let col = this.getTargetColumn(e);\n if (col.columns) {\n return;\n }\n this.resizeColumn(col.field, this.parent.getNormalizedColumnIndex(col.uid), col.uid);\n let header = closest(e.target, resizeClassList.header);\n header.classList.add('e-resized');\n }\n }\n resizeStart(e) {\n if (e.target.classList.contains('e-rhandler')) {\n if (!this.helper) {\n if (this.getScrollBarWidth() === 0) {\n for (let col of this.refreshColumnWidth()) {\n this.widthService.setColumnWidth(col);\n }\n this.widthService.setWidthToTable();\n }\n this.refreshStackedColumnWidth();\n this.element = e.target;\n if (this.parent.getVisibleFrozenColumns()) {\n let mtbody = this.parent.getContent().querySelector('.e-movablecontent').querySelector('tbody');\n let ftbody = this.parent.getContent().querySelector('.e-frozencontent').querySelector('tbody');\n let mtr = mtbody.querySelectorAll('tr');\n let ftr = ftbody.querySelectorAll('tr');\n for (let i = 0; i < mtr.length; i++) {\n if (this.parent.rowHeight) {\n mtr[i].style.height = this.parent.rowHeight + 'px';\n ftr[i].style.height = this.parent.rowHeight + 'px';\n }\n else {\n mtr[i].style.removeProperty('height');\n ftr[i].style.removeProperty('height');\n }\n }\n }\n this.parentElementWidth = this.parent.element.getBoundingClientRect().width;\n this.appendHelper();\n this.column = this.getTargetColumn(e);\n this.pageX = this.getPointX(e);\n if (this.parent.enableRtl) {\n this.minMove = parseFloat(this.column.width.toString())\n - (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0);\n }\n else {\n this.minMove = (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0)\n - parseFloat(isNullOrUndefined(this.column.width) ? '' : this.column.width.toString());\n }\n this.minMove += this.pageX;\n }\n if (Browser.isDevice && !this.helper.classList.contains(resizeClassList.icon)) {\n this.helper.classList.add(resizeClassList.icon);\n EventHandler.add(document, Browser.touchStartEvent, this.removeHelper, this);\n EventHandler.add(this.helper, Browser.touchStartEvent, this.resizeStart, this);\n }\n else {\n let args;\n if (!isBlazor() || this.parent.isJsComponent) {\n args = { e: e, column: this.column };\n }\n else {\n let clonedColumn = extend({}, this.column);\n args = { column: clonedColumn };\n }\n this.parent.trigger(resizeStart, args, (args) => {\n if (args.cancel || this.parent.isEdit) {\n this.cancelResizeAction();\n return;\n }\n EventHandler.add(document, Browser.touchEndEvent, this.resizeEnd, this);\n EventHandler.add(this.parent.element, Browser.touchMoveEvent, this.resizing, this);\n this.updateCursor('add');\n });\n }\n }\n }\n cancelResizeAction(removeEvents) {\n if (removeEvents) {\n EventHandler.remove(this.parent.element, Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(document, Browser.touchEndEvent, this.resizeEnd);\n this.updateCursor('remove');\n }\n if (Browser.isDevice) {\n EventHandler.remove(document, Browser.touchStartEvent, this.removeHelper);\n EventHandler.remove(this.helper, Browser.touchStartEvent, this.resizeStart);\n }\n detach(this.helper);\n this.refresh();\n }\n getWidth(width, minWidth, maxWidth) {\n if (minWidth && width < minWidth) {\n return minWidth;\n }\n else if ((maxWidth && width > maxWidth)) {\n return maxWidth;\n }\n else {\n return width;\n }\n }\n updateResizeEleHeight() {\n let elements = [].slice.call(this.parent.getHeaderContent().querySelectorAll('.e-rhandler'));\n for (let i = 0; i < elements.length; i++) {\n elements[i].style.height = this.element.parentElement.offsetHeight + 'px';\n }\n }\n getColData(column, mousemove) {\n return {\n width: parseFloat(isNullOrUndefined(this.widthService.getWidth(column)) || this.widthService.getWidth(column) === 'auto' ? '0'\n : this.widthService.getWidth(column).toString()) + mousemove,\n minWidth: column.minWidth ? parseFloat(column.minWidth.toString()) : null,\n maxWidth: column.maxWidth ? parseFloat(column.maxWidth.toString()) : null\n };\n }\n resizing(e) {\n if (isNullOrUndefined(this.column)) {\n return;\n }\n let offsetWidth = 0;\n if (isNullOrUndefined(this.column)) {\n offsetWidth = parentsUntil(this.element, 'th').offsetWidth;\n }\n if (this.parent.allowTextWrap) {\n this.updateResizeEleHeight();\n this.setHelperHeight();\n }\n let pageX = this.getPointX(e);\n let mousemove = this.parent.enableRtl ? -(pageX - this.pageX) : (pageX - this.pageX);\n let colData = this.getColData(this.column, mousemove);\n if (!colData.width) {\n colData.width = closest(this.element, 'th').offsetWidth;\n }\n let width = this.getWidth(colData.width, colData.minWidth, colData.maxWidth);\n this.parent.log('resize_min_max', { column: this.column, width });\n if ((!this.parent.enableRtl && this.minMove >= pageX) || (this.parent.enableRtl && this.minMove <= pageX)) {\n width = this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 10;\n this.pageX = pageX = this.minMove;\n }\n if (width !== parseFloat(isNullOrUndefined(this.column.width) || this.column.width === 'auto' ?\n offsetWidth.toString() : this.column.width.toString())) {\n this.pageX = pageX;\n this.column.width = formatUnit(width);\n let args = {\n e: e,\n column: this.column\n };\n this.parent.trigger(onResize, args);\n if (args.cancel) {\n this.cancelResizeAction(true);\n return;\n }\n let columns = [this.column];\n let finalColumns = [this.column];\n if (this.column.columns) {\n columns = this.getSubColumns(this.column, []);\n columns = this.calulateColumnsWidth(columns, false, mousemove);\n finalColumns = this.calulateColumnsWidth(columns, true, mousemove);\n }\n for (const col of finalColumns) {\n this.widthService.setColumnWidth(col, null, 'resize');\n }\n this.updateHelper();\n }\n this.isDblClk = false;\n }\n calulateColumnsWidth(columns, isUpdate, mousemove) {\n let finalColumns = [];\n for (const col of columns) {\n let totalWidth = 0;\n for (let i = 0; i < columns.length; i++) {\n totalWidth += parseFloat(columns[i].width.toString());\n }\n let colData = this.getColData(col, (parseFloat(col.width)) * mousemove / totalWidth);\n let colWidth = this.getWidth(colData.width, colData.minWidth, colData.maxWidth);\n if ((colWidth !== parseFloat(col.width.toString()))) {\n if (isUpdate) {\n col.width = formatUnit(colWidth < 1 ? 1 : colWidth);\n }\n finalColumns.push(col);\n }\n }\n return finalColumns;\n }\n getSubColumns(column, subColumns) {\n for (const col of column.columns) {\n if (col.visible !== false && col.allowResizing) {\n if (col.columns) {\n this.getSubColumns(col, subColumns);\n }\n else {\n subColumns.push(col);\n }\n }\n }\n return subColumns;\n }\n resizeEnd(e) {\n if (!this.helper || this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(this.parent.element, Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(document, Browser.touchEndEvent, this.resizeEnd);\n this.updateCursor('remove');\n detach(this.helper);\n let args;\n if (!isBlazor() || this.parent.isJsComponent) {\n args = { e: e, column: this.column };\n }\n else {\n let clonedColumn = extend({}, this.column);\n args = { column: clonedColumn };\n }\n let content = this.parent.getContent().querySelector('.e-content');\n let cTable = content.querySelector('.e-movablecontent') ? content.querySelector('.e-movablecontent') : content;\n if (cTable.scrollHeight > cTable.clientHeight) {\n this.parent.scrollModule.setPadding();\n cTable.style.overflowY = 'scroll';\n }\n this.parent.trigger(resizeStop, args);\n closest(this.element, '.e-headercell').classList.add('e-resized');\n if (parentsUntil(this.element, 'e-frozenheader')) {\n this.isFrozenColResized = true;\n }\n else {\n this.isFrozenColResized = false;\n }\n if (this.parent.getFrozenColumns()) {\n this.parent.notify(freezeRender, { case: 'textwrap' });\n }\n if (this.parent.allowTextWrap) {\n this.updateResizeEleHeight();\n this.parent.notify(textWrapRefresh, { case: 'textwrap' });\n }\n this.refresh();\n this.doubleTapEvent(e);\n this.isDblClk = true;\n }\n getPointX(e) {\n if (e.touches && e.touches.length) {\n return e.touches[0].pageX;\n }\n else {\n return e.pageX;\n }\n }\n refreshColumnWidth() {\n let columns = this.parent.getColumns();\n for (let ele of [].slice.apply(this.parent.getHeaderTable().querySelectorAll('th.e-headercell'))) {\n for (let column of columns) {\n if (ele.querySelector('[e-mappinguid]') &&\n ele.querySelector('[e-mappinguid]').getAttribute('e-mappinguid') === column.uid && column.visible) {\n column.width = ele.getBoundingClientRect().width;\n break;\n }\n }\n }\n return columns;\n }\n refreshStackedColumnWidth() {\n for (const stackedColumn of this.parent.getStackedColumns(this.parent.columns)) {\n stackedColumn.width = this.getStackedWidth(stackedColumn, 0);\n }\n }\n getStackedWidth(column, width) {\n for (const col of column.columns) {\n if (col.visible !== false) {\n if (col.columns) {\n this.getStackedWidth(col, width);\n }\n else {\n width += col.width;\n }\n }\n }\n return width;\n }\n getTargetColumn(e) {\n let cell = closest(e.target, resizeClassList.header);\n cell = cell.querySelector('.e-headercelldiv') || cell.querySelector('.e-stackedheadercelldiv');\n let uid = cell.getAttribute('e-mappinguid');\n return this.parent.getColumnByUid(uid);\n }\n updateCursor(action) {\n let headerRows = [].slice.call(this.parent.getHeaderContent().querySelectorAll('th'));\n headerRows.push(this.parent.element);\n for (let row of headerRows) {\n row.classList[action](resizeClassList.cursor);\n }\n }\n refresh() {\n this.column = null;\n this.pageX = null;\n this.element = null;\n this.helper = null;\n }\n appendHelper() {\n this.helper = this.parent.createElement('div', {\n className: resizeClassList.helper\n });\n this.parent.element.appendChild(this.helper);\n this.setHelperHeight();\n }\n setHelperHeight() {\n let height = this.parent.getContent().offsetHeight - this.getScrollBarWidth();\n let rect = closest(this.element, resizeClassList.header);\n let tr = [].slice.call(this.parent.getHeaderContent().querySelectorAll('tr'));\n let frzCols = this.parent.getFrozenColumns();\n if (frzCols) {\n if (rect.parentElement.children.length !== frzCols) {\n tr.splice(0, tr.length / 2);\n }\n else {\n tr.splice(tr.length / 2, tr.length / 2);\n }\n }\n for (let i = tr.indexOf(rect.parentElement); i < tr.length; i++) {\n height += tr[i].offsetHeight;\n }\n let pos = this.calcPos(rect);\n pos.left += (this.parent.enableRtl ? 0 - 1 : rect.offsetWidth - 2);\n this.helper.style.cssText = 'height: ' + height + 'px; top: ' + pos.top + 'px; left:' + Math.floor(pos.left) + 'px;';\n }\n getScrollBarWidth(height) {\n let ele = this.parent.getFrozenColumns() ? this.parent.getContent().querySelector('.e-movablecontent')\n : this.parent.getContent().firstChild;\n return (ele.scrollHeight > ele.clientHeight && height) ||\n ele.scrollWidth > ele.clientWidth ? getScrollBarWidth() : 0;\n }\n removeHelper(e) {\n let cls = e.target.classList;\n if (!(cls.contains(resizeClassList.root) || cls.contains(resizeClassList.icon)) && this.helper) {\n EventHandler.remove(document, Browser.touchStartEvent, this.removeHelper);\n EventHandler.remove(this.helper, Browser.touchStartEvent, this.resizeStart);\n detach(this.helper);\n this.refresh();\n }\n }\n updateHelper() {\n let rect = closest(this.element, resizeClassList.header);\n let left = Math.floor(this.calcPos(rect).left + (this.parent.enableRtl ? 0 - 1 : rect.offsetWidth - 2));\n let borderWidth = 2; // to maintain the helper inside of grid element.\n if (left > this.parentElementWidth) {\n left = this.parentElementWidth - borderWidth;\n }\n if (this.parent.getFrozenColumns()) {\n let table = closest(rect, '.e-table');\n let fLeft = table.offsetLeft;\n if (left < fLeft) {\n left = fLeft;\n }\n }\n this.helper.style.left = left + 'px';\n }\n calcPos(elem) {\n let parentOffset = {\n top: 0,\n left: 0\n };\n let offset = elem.getBoundingClientRect();\n let doc = elem.ownerDocument;\n let offsetParent = parentsUntil(elem, 'e-grid') || doc.documentElement;\n while (offsetParent &&\n (offsetParent === doc.body || offsetParent === doc.documentElement) &&\n offsetParent.style.position === 'static') {\n offsetParent = offsetParent.parentNode;\n }\n if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {\n parentOffset = offsetParent.getBoundingClientRect();\n }\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left\n };\n }\n doubleTapEvent(e) {\n if (this.getUserAgent() && this.isDblClk) {\n if (!this.tapped) {\n this.tapped = setTimeout(this.timeoutHandler(), 300);\n }\n else {\n clearTimeout(this.tapped);\n this.callAutoFit(e);\n this.tapped = null;\n }\n }\n }\n getUserAgent() {\n let userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad/.test(userAgent);\n }\n timeoutHandler() {\n this.tapped = null;\n }\n}\n\n/**\n *\n * The `Reorder` module is used for reordering columns.\n */\nclass Reorder {\n /**\n * Constructor for the Grid reorder module\n * @hidden\n */\n constructor(parent) {\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(headerDrop, this.headerDrop, this);\n this.parent.on(uiUpdate, this.enableAfterRender, this);\n this.parent.on(reorderComplete, this.onActionComplete, this);\n this.parent.on(columnDrag, this.drag, this);\n this.parent.on(columnDragStart, this.dragStart, this);\n this.parent.on(columnDragStop, this.dragStop, this);\n this.parent.on(headerDrop, this.headerDrop, this);\n this.parent.on(headerRefreshed, this.createReorderElement, this);\n this.parent.on(keyPressed, this.keyPressHandler, this);\n }\n chkDropPosition(srcElem, destElem) {\n let col = this.parent.getColumnByUid(destElem.firstElementChild.getAttribute('e-mappinguid'));\n let bool = col ? !col.lockColumn : true;\n return ((srcElem.parentElement.isEqualNode(destElem.parentElement) || this.parent.enableColumnVirtualization)\n || (this.parent.getFrozenColumns()\n && Array.prototype.indexOf.call(closest(srcElem, 'thead').children, srcElem.parentElement)\n === Array.prototype.indexOf.call(closest(destElem, 'thead').children, destElem.parentElement)))\n && this.targetParentContainerIndex(srcElem, destElem) > -1 && bool;\n }\n chkDropAllCols(srcElem, destElem) {\n let isFound;\n let headers = this.getHeaderCells();\n let header;\n while (!isFound && headers.length > 0) {\n header = headers.pop();\n isFound = srcElem !== header && this.targetParentContainerIndex(srcElem, destElem) > -1;\n }\n return isFound;\n }\n findColParent(col, cols, parent) {\n parent = parent;\n for (let i = 0, len = cols.length; i < len; i++) {\n if (col === cols[i]) {\n return true;\n }\n else if (cols[i].columns) {\n let cnt = parent.length;\n parent.push(cols[i]);\n if (!this.findColParent(col, cols[i].columns, parent)) {\n parent.splice(cnt, parent.length - cnt);\n }\n else {\n return true;\n }\n }\n }\n return false;\n }\n getColumnsModel(cols) {\n let columnModel = [];\n let subCols = [];\n for (let i = 0, len = cols.length; i < len; i++) {\n columnModel.push(cols[i]);\n if (cols[i].columns) {\n subCols = subCols.concat(cols[i].columns);\n }\n }\n if (subCols.length) {\n columnModel = columnModel.concat(this.getColumnsModel(subCols));\n }\n return columnModel;\n }\n headerDrop(e) {\n let gObj = this.parent;\n let dropElement = this.element.querySelector('.e-headercelldiv') || this.element.querySelector('.e-stackedheadercelldiv');\n let uId = dropElement.getAttribute('e-mappinguid');\n let column = gObj.getColumnByUid(uId);\n if (!closest(e.target, 'th') || (!isNullOrUndefined(column) && (!column.allowReordering || column.lockColumn))) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), column });\n return;\n }\n let destElem = closest(e.target, '.e-headercell');\n let destElemDiv = destElem.querySelector('.e-headercelldiv') || destElem.querySelector('.e-stackedheadercelldiv');\n let destElemUid = destElemDiv.getAttribute('e-mappinguid');\n if (!isNullOrUndefined(destElemUid)) {\n let destColumn = gObj.getColumnByUid(destElemUid);\n if (isNullOrUndefined(destColumn) || !destColumn.allowReordering || destColumn.lockColumn) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), column, destColumn });\n return;\n }\n }\n if (destElem && !(!this.chkDropPosition(this.element, destElem) || !this.chkDropAllCols(this.element, destElem))) {\n if (this.parent.enableColumnVirtualization) {\n let columns = this.parent.columns;\n let sourceUid = this.element.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n let col = this.parent.columns.filter((col) => col.uid === sourceUid);\n let colMatchIndex = null;\n let column = col[0];\n let destUid = destElem.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n let bool = columns.some((col, index) => {\n if (col.uid === destUid) {\n colMatchIndex = index;\n return col.uid === destUid;\n }\n return false;\n });\n if (!isNullOrUndefined(colMatchIndex)) {\n this.moveColumns(colMatchIndex, column);\n }\n }\n else {\n let newIndex = this.targetParentContainerIndex(this.element, destElem);\n let uid = this.element.firstElementChild.getAttribute('e-mappinguid');\n this.destElement = destElem;\n if (uid) {\n this.moveColumns(newIndex, this.parent.getColumnByUid(uid));\n }\n else {\n let headers = this.getHeaderCells();\n let oldIdx = getElementIndex(this.element, headers);\n let columns = this.getColumnsModel(this.parent.columns);\n let column = columns[oldIdx];\n this.moveColumns(newIndex, column);\n }\n }\n }\n }\n isActionPrevent(gObj) {\n return isActionPrevent(gObj);\n }\n moveColumns(destIndex, column, reorderByColumn, preventRefresh) {\n let gObj = this.parent;\n if (this.isActionPrevent(gObj)) {\n gObj.notify(preventBatch, { instance: this, handler: this.moveColumns, arg1: destIndex, arg2: column });\n return;\n }\n let parent = this.getColParent(column, this.parent.columns);\n let cols = parent ? parent.columns : this.parent.columns;\n let srcIdx = inArray(column, cols);\n if (((this.parent.getFrozenColumns() && parent) || this.parent.lockcolPositionCount) && !reorderByColumn) {\n for (let i = 0; i < cols.length; i++) {\n if (cols[i].field === column.field) {\n srcIdx = i;\n break;\n }\n }\n let col = this.parent.getColumnByUid(this.destElement.firstElementChild.getAttribute('e-mappinguid'));\n if (col) {\n for (let i = 0; i < cols.length; i++) {\n if (cols[i].field === col.field) {\n destIndex = i;\n break;\n }\n }\n }\n else {\n for (let i = 0; i < cols.length; i++) {\n if (cols[i].headerText === this.destElement.innerText.trim()) {\n destIndex = i;\n }\n }\n }\n }\n if (!gObj.allowReordering || srcIdx === destIndex || srcIdx === -1 || destIndex === -1) {\n return;\n }\n cols.splice(destIndex, 0, cols.splice(srcIdx, 1)[0]);\n gObj.getColumns(true);\n gObj.notify(columnPositionChanged, { fromIndex: destIndex, toIndex: srcIdx });\n if (preventRefresh !== false) {\n gObj.notify(modelChanged, {\n type: actionBegin, requestType: 'reorder', fromIndex: destIndex, toIndex: srcIdx, toColumnUid: column.uid\n });\n }\n }\n targetParentContainerIndex(srcElem, destElem) {\n let headers = this.getHeaderCells();\n let cols = this.parent.columns;\n let flatColumns = this.getColumnsModel(cols);\n let parent = this.getColParent(flatColumns[getElementIndex(srcElem, headers)], cols);\n cols = parent ? parent.columns : cols;\n return inArray(flatColumns[getElementIndex(destElem, headers)], cols);\n }\n getHeaderCells() {\n let frozenColumns = this.parent.getFrozenColumns();\n if (frozenColumns || this.parent.lockcolPositionCount) {\n let fTh;\n let mTh;\n let fHeaders = [];\n let fRows = [].slice.call(this.parent.getHeaderTable().querySelectorAll('.e-columnheader'));\n if (frozenColumns) {\n let mRows = [].slice.call(this.parent.getHeaderContent()\n .querySelector('.e-movableheader').querySelectorAll('.e-columnheader'));\n for (let i = 0; i < fRows.length; i++) {\n fTh = [].slice.call(fRows[i].getElementsByClassName('e-headercell'));\n mTh = [].slice.call(mRows[i].getElementsByClassName('e-headercell'));\n let isAvail;\n for (let k = 0; k < fTh.length; k++) {\n for (let j = 0; j < mTh.length; j++) {\n if (mTh[j].innerText === fTh[k].innerText) {\n isAvail = true;\n break;\n }\n }\n if (!isAvail) {\n fHeaders = fHeaders.concat([fTh[k]]);\n }\n }\n for (let j = 0; j < mTh.length; j++) {\n fHeaders.push(mTh[j]);\n }\n }\n }\n else {\n for (let i = 0; i < fRows.length; i++) {\n mTh = [].slice.call(fRows[i].getElementsByClassName('e-headercell'));\n for (let k = 0; k < mTh.length; k++) {\n let isAvail;\n for (let j = k + 1; j < mTh.length; j++) {\n if (mTh[j].innerText === mTh[k].innerText) {\n isAvail = true;\n break;\n }\n }\n if (!isAvail) {\n fHeaders = fHeaders.concat([mTh[k]]);\n }\n }\n }\n }\n return fHeaders;\n }\n else {\n return [].slice.call(this.parent.element.getElementsByClassName('e-headercell'));\n }\n }\n getColParent(column, columns) {\n let parents$$1 = [];\n this.findColParent(column, columns, parents$$1);\n return parents$$1[parents$$1.length - 1];\n }\n reorderSingleColumn(fromFName, toFName) {\n let fColumn = this.parent.enableColumnVirtualization ?\n this.parent.columns.filter((col) => col.field === fromFName)[0]\n : this.parent.getColumnByField(fromFName);\n let toColumn = this.parent.enableColumnVirtualization ?\n this.parent.columns.filter((col) => col.field === toFName)[0]\n : this.parent.getColumnByField(toFName);\n if ((!isNullOrUndefined(fColumn) && (!fColumn.allowReordering || fColumn.lockColumn)) ||\n (!isNullOrUndefined(toColumn) && (!toColumn.allowReordering || fColumn.lockColumn))) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), column: fColumn, destColumn: toColumn });\n return;\n }\n let column = toColumn;\n let parent = this.getColParent(column, this.parent.columns);\n let columns = parent ? parent.columns : this.parent.columns;\n let destIndex = inArray(column, columns);\n if (destIndex > -1) {\n this.moveColumns(destIndex, fColumn, true);\n }\n }\n reorderMultipleColumns(fromFNames, toFName) {\n let toIndex = this.parent.getColumnIndexByField(toFName);\n let toColumn = this.parent.getColumnByField(toFName);\n if (toIndex < 0 || (!isNullOrUndefined(toColumn) && (!toColumn.allowReordering || toColumn.lockColumn))) {\n return;\n }\n for (let i = 0; i < fromFNames.length; i++) {\n let column = this.parent.getColumnByField(fromFNames[i]);\n if (!isNullOrUndefined(column) && (!column.allowReordering || column.lockColumn)) {\n return;\n }\n }\n for (let i = 0; i < fromFNames.length; i++) {\n let column = this.parent.getColumnByIndex(toIndex);\n let parent = this.getColParent(column, this.parent.columns);\n let columns = parent ? parent.columns : this.parent.columns;\n let destIndex = inArray(column, columns);\n if (destIndex > -1) {\n this.moveColumns(destIndex, this.parent.getColumnByField(fromFNames[i]), true, !(isBlazor() && !this.parent.isJsComponent));\n }\n if (this.parent.getColumnIndexByField(fromFNames[i + 1]) >= destIndex) {\n toIndex++; //R to L\n }\n }\n if (isBlazor() && !this.parent.isJsComponent) {\n let cols = this.parent.getColumns();\n this.parent.notify(modelChanged, {\n fromColumnUid: fromFNames.map((name) => cols.filter((col) => col.field === name)[0].uid),\n toColumnUid: toColumn.uid,\n isMultipleReorder: true,\n requestType: 'reorder',\n type: 'actionBegin'\n });\n }\n }\n moveTargetColumn(column, toIndex) {\n if (toIndex > -1) {\n this.moveColumns(toIndex, column, true);\n }\n }\n reorderSingleColumnByTarget(fieldName, toIndex) {\n let column = this.parent.getColumnByField(fieldName);\n this.moveTargetColumn(column, toIndex);\n }\n reorderMultipleColumnByTarget(fieldName, toIndex) {\n for (let i = 0; i < fieldName.length; i++) {\n this.reorderSingleColumnByTarget(fieldName[i], toIndex);\n }\n }\n /**\n * Changes the position of the Grid columns by field names.\n * @param {string | string[]} fromFName - Defines the origin field names.\n * @param {string} toFName - Defines the destination field name.\n * @return {void}\n */\n reorderColumns(fromFName, toFName) {\n if (typeof fromFName === 'string') {\n this.reorderSingleColumn(fromFName, toFName);\n this.fromCol = fromFName;\n }\n else {\n this.reorderMultipleColumns(fromFName, toFName);\n this.fromCol = fromFName[0];\n }\n }\n /**\n * Changes the position of the Grid columns by field index.\n * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n * @return {void}\n */\n reorderColumnByIndex(fromIndex, toIndex) {\n let column = this.parent.getColumnByIndex(fromIndex);\n this.moveTargetColumn(column, toIndex);\n }\n /**\n * Changes the position of the Grid columns by field index.\n * @param {string | string[]} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n * @return {void}\n */\n reorderColumnByTargetIndex(fieldName, toIndex) {\n typeof fieldName === 'string' ? this.reorderSingleColumnByTarget(fieldName, toIndex) :\n this.reorderMultipleColumnByTarget(fieldName, toIndex);\n }\n enableAfterRender(e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.createReorderElement();\n }\n }\n createReorderElement(e) {\n if (e && e.args.isXaxis) {\n this.setDisplay('none');\n }\n let header = this.parent.element.querySelector('.e-headercontent');\n this.upArrow = header.appendChild(this.parent\n .createElement('div', { className: 'e-icons e-icon-reorderuparrow e-reorderuparrow', attrs: { style: 'display:none' } }));\n this.downArrow = header.appendChild(this.parent\n .createElement('div', { className: 'e-icons e-icon-reorderdownarrow e-reorderdownarrow', attrs: { style: 'display:none' } }));\n }\n /**\n * The function used to trigger onActionComplete\n * @return {void}\n * @hidden\n */\n onActionComplete(e) {\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\n this.parent.trigger(actionComplete, extend(e, { type: actionComplete }));\n let target = this.fromCol && this.parent.getColumnHeaderByField(this.fromCol);\n if (target) {\n this.parent.focusModule.onClick({ target }, true);\n }\n }\n /**\n * To destroy the reorder\n * @return {void}\n * @hidden\n */\n destroy() {\n let gridElement = this.parent.element;\n if (this.parent.isDestroyed || !gridElement || (!gridElement.querySelector('.e-gridheader') &&\n !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n remove(this.upArrow);\n remove(this.downArrow);\n this.parent.off(headerDrop, this.headerDrop);\n this.parent.off(uiUpdate, this.enableAfterRender);\n this.parent.off(reorderComplete, this.onActionComplete);\n this.parent.off(columnDrag, this.drag);\n this.parent.off(columnDragStart, this.dragStart);\n this.parent.off(columnDragStop, this.dragStop);\n this.parent.off(headerRefreshed, this.createReorderElement);\n this.parent.off(keyPressed, this.keyPressHandler);\n //call ejdrag and drop destroy\n }\n keyPressHandler(e) {\n let gObj = this.parent;\n switch (e.action) {\n case 'ctrlLeftArrow':\n case 'ctrlRightArrow':\n let element = gObj.focusModule.currentInfo.element;\n if (element && element.classList.contains('e-headercell')) {\n let column = gObj.getColumnByUid(element.firstElementChild.getAttribute('e-mappinguid'));\n let visibleCols = gObj.getVisibleColumns();\n let index = visibleCols.indexOf(column);\n let toCol = e.action === 'ctrlLeftArrow' ? visibleCols[index - 1] : visibleCols[index + 1];\n if (toCol && toCol.field && column.field) {\n this.reorderColumns(column.field, toCol.field);\n }\n }\n break;\n }\n }\n drag(e) {\n let gObj = this.parent;\n let target = e.target;\n if (!e.column.allowReordering || e.column.lockColumn) {\n return;\n }\n let closest$$1 = closest(target, '.e-headercell:not(.e-stackedHeaderCell)');\n let cloneElement = gObj.element.querySelector('.e-cloneproperties');\n let content = gObj.getFrozenColumns() ? gObj.getMovableVirtualContent() : gObj.getContent().firstElementChild;\n let isLeft = this.x > getPosition(e.event).x + content.scrollLeft;\n removeClass(gObj.getHeaderTable().querySelectorAll('.e-reorderindicate'), ['e-reorderindicate']);\n this.setDisplay('none');\n this.stopTimer();\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n this.updateScrollPostion(e.event);\n if (closest$$1 && !closest$$1.isEqualNode(this.element)) {\n target = closest$$1;\n //consider stacked, detail header cell \n if (!(!this.chkDropPosition(this.element, target) || !this.chkDropAllCols(this.element, target))) {\n this.updateArrowPosition(target, isLeft);\n classList(target, ['e-allowDrop', 'e-reorderindicate'], []);\n }\n else if (!(gObj.allowGrouping && parentsUntil(e.target, 'e-groupdroparea'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n }\n gObj.trigger(columnDrag, { target: target, draggableType: 'headercell', column: e.column });\n }\n updateScrollPostion(e) {\n let frzCols = this.parent.getFrozenColumns();\n let x = getPosition(e).x;\n let cliRect = this.parent.element.getBoundingClientRect();\n let cliRectBaseLeft = frzCols ? this.parent.element.querySelector('.e-movableheader')\n .getBoundingClientRect().left : cliRect.left;\n let cliRectBaseRight = cliRect.right;\n let scrollElem = frzCols ? this.parent.getContent().querySelector('.e-movablecontent')\n : this.parent.getContent().firstElementChild;\n if (x > cliRectBaseLeft && x < cliRectBaseLeft + 35) {\n this.timer = window.setInterval(() => { this.setScrollLeft(scrollElem, true); }, 50);\n }\n else if (x < cliRectBaseRight && x > cliRectBaseRight - 35) {\n this.timer = window.setInterval(() => { this.setScrollLeft(scrollElem, false); }, 50);\n }\n }\n setScrollLeft(scrollElem, isLeft) {\n let scrollLeft = scrollElem.scrollLeft;\n scrollElem.scrollLeft = scrollElem.scrollLeft + (isLeft ? -5 : 5);\n if (scrollLeft !== scrollElem.scrollLeft) {\n this.setDisplay('none');\n }\n }\n stopTimer() {\n window.clearInterval(this.timer);\n }\n updateArrowPosition(target, isLeft) {\n let cliRect = target.getBoundingClientRect();\n let cliRectBase = this.parent.element.getBoundingClientRect();\n if ((isLeft && cliRect.left < cliRectBase.left) || (!isLeft && cliRect.right > cliRectBase.right)) {\n return;\n }\n if (this.parent.getFrozenColumns() && target.classList.contains('e-headercell')) {\n let col = this.parent.getColumnByUid(target.firstElementChild.getAttribute('e-mappinguid'));\n let fhdrWidth = Math.round(this.parent.getFrozenVirtualHeader().getBoundingClientRect().right);\n let mhdrRight = Math.round(this.parent.getMovableVirtualHeader().getBoundingClientRect().right);\n if (col && this.parent.getNormalizedColumnIndex(col.uid) >= this.parent.getFrozenColumns()\n && ((isLeft && Math.round(cliRect.left) < fhdrWidth) || (!isLeft && mhdrRight < cliRect.right))) {\n return;\n }\n }\n this.upArrow.style.top = cliRect.top + cliRect.height - cliRectBase.top + 'px';\n this.downArrow.style.top = cliRect.top - cliRectBase.top - 4 + 'px';\n this.upArrow.style.left = this.downArrow.style.left = (isLeft ? cliRect.left : cliRect.right) - cliRectBase.left - 4 + 'px';\n this.setDisplay('');\n }\n dragStart(e) {\n let gObj = this.parent;\n let target = e.target;\n this.element = target.classList.contains('e-headercell') ? target :\n parentsUntil(target, 'e-headercell');\n if (!e.column.allowReordering || e.column.lockColumn) {\n return;\n }\n let content = gObj.getFrozenColumns() ? gObj.getMovableVirtualContent() : gObj.getContent().firstElementChild;\n this.x = getPosition(e.event).x + content.scrollLeft;\n gObj.trigger(columnDragStart, {\n target: target, draggableType: 'headercell', column: e.column\n });\n }\n dragStop(e) {\n let gObj = this.parent;\n this.setDisplay('none');\n this.stopTimer();\n if (!e.cancel) {\n gObj.trigger(columnDrop, { target: e.target, draggableType: 'headercell', column: e.column });\n }\n removeClass(gObj.getHeaderTable().querySelectorAll('.e-reorderindicate'), ['e-reorderindicate']);\n }\n setDisplay(display) {\n this.upArrow.style.display = display;\n this.downArrow.style.display = display;\n }\n /**\n * For internal use only - Get the module name.\n * @private\n */\n getModuleName() {\n return 'reorder';\n }\n}\n\n/**\n *\n * Reorder module is used to handle row reordering.\n * @hidden\n */\nclass RowDD {\n /**\n * Constructor for the Grid print module\n * @hidden\n */\n constructor(parent) {\n this.selectedRows = [];\n this.isOverflowBorder = true;\n this.selectedRowColls = [];\n this.isRefresh = true;\n /* tslint:disable-next-line:max-line-length */\n // tslint:disable-next-line:max-func-body-length\n this.helper = (e) => {\n let gObj = this.parent;\n let target = this.draggable.currentStateTarget;\n let visualElement = this.parent.createElement('div', {\n className: 'e-cloneproperties e-draganddrop e-grid e-dragclone',\n styles: 'height:\"auto\", z-index:2, width:' + gObj.element.offsetWidth\n });\n let table = this.parent.createElement('table', { styles: 'width:' + gObj.element.offsetWidth });\n let tbody = this.parent.createElement('tbody');\n if (document.getElementsByClassName('e-griddragarea').length ||\n (gObj.rowDropSettings.targetID && (!e.sender.target.classList.contains('e-selectionbackground')\n && gObj.selectionSettings.type !== 'Single')) ||\n (!gObj.rowDropSettings.targetID && !parentsUntil(e.sender.target, 'e-rowdragdrop'))) {\n return false;\n }\n if (gObj.rowDropSettings.targetID &&\n gObj.selectionSettings.mode === 'Row' && gObj.selectionSettings.type === 'Single') {\n gObj.selectRow(parseInt(this.draggable.currentStateTarget.parentElement.getAttribute('aria-rowindex'), 10));\n }\n this.startedRow = closest(target, 'tr').cloneNode(true);\n this.processArgs(target);\n let args = {\n selectedRow: this.rows, dragelement: target,\n cloneElement: visualElement, cancel: false, data: this.rowData\n };\n let selectedRows = gObj.getSelectedRows();\n gObj.trigger(rowDragStartHelper, args);\n let cancel = 'cancel';\n if (args[cancel]) {\n return false;\n }\n removeElement(this.startedRow, '.e-indentcell');\n removeElement(this.startedRow, '.e-detailrowcollapse');\n removeElement(this.startedRow, '.e-detailrowexpand');\n this.removeCell(this.startedRow, 'e-gridchkbox');\n let exp = new RegExp('e-active', 'g'); //high contrast issue\n this.startedRow.innerHTML = this.startedRow.innerHTML.replace(exp, '');\n tbody.appendChild(this.startedRow);\n if (gObj.getSelectedRows().length > 1 && this.startedRow.hasAttribute('aria-selected')) {\n let dropCountEle = this.parent.createElement('span', {\n className: 'e-dropitemscount', innerHTML: '' + selectedRows.length,\n });\n visualElement.appendChild(dropCountEle);\n }\n let ele = closest(target, 'tr').querySelector('.e-icon-rowdragicon');\n if (ele) {\n ele.classList.add('e-dragstartrow');\n }\n table.appendChild(tbody);\n visualElement.appendChild(table);\n gObj.element.appendChild(visualElement);\n return visualElement;\n };\n this.dragStart = (e) => {\n let gObj = this.parent;\n if (document.getElementsByClassName('e-griddragarea').length) {\n return;\n }\n let target = e.target;\n const spanCssEle = this.parent.element.querySelector('.e-dropitemscount');\n if (this.parent.getSelectedRecords().length > 1 && spanCssEle) {\n spanCssEle.style.left = this.parent.element.querySelector('.e-cloneproperties table')\n .offsetWidth - 5 + 'px';\n }\n this.processArgs(target);\n gObj.trigger(rowDragStart, {\n rows: (isBlazor()) ? null : this.rows, target: (isBlazor()) ? null : e.target,\n draggableType: 'rows', fromIndex: parseInt(this.rows[0].getAttribute('aria-rowindex'), 10),\n data: (Object.keys(this.rowData[0]).length > 0) ? this.rowData : this.currentViewData()\n });\n if (isBlazor()) {\n e.bindEvents(e.dragElement);\n }\n this.dragStartData = this.rowData;\n let dropElem = document.getElementById(gObj.rowDropSettings.targetID);\n if (gObj.rowDropSettings.targetID && dropElem && dropElem.ej2_instances &&\n dropElem.ej2_instances[0].getModuleName() === 'grid') {\n dropElem.ej2_instances[0].getContent().classList.add('e-allowRowDrop');\n }\n };\n this.drag = (e) => {\n let gObj = this.parent;\n let cloneElement = this.parent.element.querySelector('.e-cloneproperties');\n let target = this.getElementFromPosition(cloneElement, e.event);\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur', 'e-movecur']);\n this.isOverflowBorder = true;\n this.hoverState = gObj.enableHover;\n let trElement = parentsUntil(target, 'e-grid') ? closest(e.target, 'tr') : null;\n gObj.enableHover = false;\n if (!e.target) {\n return;\n }\n this.processArgs(target);\n let args = {\n rows: this.rows, target: target, draggableType: 'rows',\n data: this.rowData, originalEvent: e, cancel: false\n };\n gObj.trigger(rowDrag, args);\n this.stopTimer();\n if (args.cancel) {\n return;\n }\n gObj.element.classList.add('e-rowdrag');\n this.dragTarget = trElement && parentsUntil(target, 'e-grid').id === cloneElement.parentElement.id ?\n trElement.rowIndex : parseInt(this.startedRow.getAttribute('aria-rowindex'), 10);\n if (gObj.rowDropSettings.targetID) {\n if (!parentsUntil(target, 'e-gridcontent') ||\n parentsUntil(cloneElement.parentElement, 'e-grid').id === parentsUntil(target, 'e-grid').id) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n else {\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n }\n }\n else {\n let elem = parentsUntil(target, 'e-grid');\n if (elem && elem.id === cloneElement.parentElement.id) {\n classList(cloneElement, ['e-movecur'], ['e-defaultcur']);\n }\n else {\n classList(cloneElement, ['e-notallowedcur'], ['e-movecur']);\n }\n }\n if (!gObj.rowDropSettings.targetID &&\n (!gObj.groupSettings.columns.length || e.target.classList.contains('e-selectionbackground'))) {\n if (parentsUntil(target, 'e-grid')) {\n this.updateScrollPostion(e.event, target);\n }\n if (this.isOverflowBorder && parseInt(this.startedRow.getAttribute('aria-rowindex'), 10) !== this.dragTarget) {\n this.moveDragRows(e, this.startedRow, trElement);\n }\n else {\n if (trElement && this.parent.getRowByIndex(this.parent.getCurrentViewRecords().length - 1).getAttribute('data-uid') ===\n trElement.getAttribute('data-uid')) {\n let bottomborder = this.parent.createElement('div', { className: 'e-lastrow-dragborder' });\n let gridcontentEle = this.parent.getContent();\n bottomborder.style.width = this.parent.element.offsetWidth - this.getScrollWidth() + 'px';\n if (!gridcontentEle.querySelectorAll('.e-lastrow-dragborder').length) {\n gridcontentEle.classList.add('e-grid-relative');\n gridcontentEle.appendChild(bottomborder);\n bottomborder.style.bottom = this.getScrollWidth() + 'px';\n }\n }\n this.removeBorder(trElement);\n }\n }\n };\n this.dragStop = (e) => {\n if (isActionPrevent(this.parent)) {\n this.parent.notify(preventBatch, {\n instance: this, handler: this.processDragStop, arg1: e\n });\n }\n else {\n this.processDragStop(e);\n }\n };\n this.processDragStop = (e) => {\n let gObj = this.parent;\n if (this.parent.isDestroyed) {\n return;\n }\n let targetEle = this.getElementFromPosition(e.helper, e.event);\n let target = targetEle && !targetEle.classList.contains('e-dlg-overlay') ?\n targetEle : e.target;\n let cloneElement = this.parent.element.querySelector('.e-cloneproperties');\n gObj.element.classList.remove('e-rowdrag');\n let dropElement = document.getElementById(gObj.rowDropSettings.targetID);\n if (gObj.rowDropSettings.targetID && dropElement && dropElement.ej2_instances &&\n dropElement.ej2_instances[0].getModuleName() === 'grid') {\n dropElement.ej2_instances[0].getContent().classList.remove('e-allowRowDrop');\n }\n if (gObj.isRowDragable()) {\n this.stopTimer();\n gObj.enableHover = this.hoverState;\n this.parent.getContent().classList.remove('e-grid-relative');\n this.removeBorder(targetEle);\n let stRow = gObj.element.querySelector('.e-dragstartrow');\n if (stRow) {\n stRow.classList.remove('e-dragstartrow');\n }\n }\n this.processArgs(target);\n let args = {\n target: (isBlazor()) ? null : target, draggableType: 'rows',\n cancel: false,\n fromIndex: parseInt(this.rows[0].getAttribute('aria-rowindex'), 10),\n dropIndex: this.dragTarget, rows: (isBlazor()) ? null : this.rows,\n data: (Object.keys(this.dragStartData[0]).length > 0) ? this.dragStartData : this.currentViewData()\n };\n gObj.trigger(rowDrop, args, () => {\n if (!parentsUntil(target, 'e-gridcontent') || args.cancel) {\n this.dragTarget = null;\n remove(e.helper);\n return;\n }\n this.isRefresh = false;\n let selectedIndexes = this.parent.getSelectedRowIndexes();\n if (gObj.isRowDragable()) {\n if (!isBlazor()) {\n if (!this.parent.rowDropSettings.targetID &&\n this.startedRow.querySelector('td.e-selectionbackground') && selectedIndexes.length > 1 &&\n selectedIndexes.length !== this.parent.getCurrentViewRecords().length) {\n this.reorderRows(selectedIndexes, args.dropIndex);\n }\n else {\n this.reorderRows([parseInt(this.startedRow.getAttribute('aria-rowindex'), 10)], this.dragTarget);\n }\n }\n else {\n let draggedData = this.parent.getSelectedRecords().length ?\n this.parent.getSelectedRecords() : this.currentViewData();\n let changeRecords = {\n addedRecords: [],\n deletedRecords: draggedData,\n changedRecords: []\n };\n let toIdx = this.dragTarget ? this.dragTarget : args.dropIndex;\n let dragDropDestinationIndex = 'dragDropDestinationIndex';\n let query = new Query;\n query[dragDropDestinationIndex] = toIdx;\n this.saveChange(changeRecords, query);\n changeRecords.deletedRecords = [];\n changeRecords.addedRecords = draggedData;\n this.saveChange(changeRecords, query);\n }\n this.dragTarget = null;\n if (!gObj.rowDropSettings.targetID) {\n remove(e.helper);\n gObj.refresh();\n }\n }\n this.isRefresh = true;\n });\n };\n this.removeCell = (targetRow, className) => {\n return [].slice.call(targetRow.querySelectorAll('td')).filter((cell) => {\n if (cell.classList.contains(className)) {\n targetRow.deleteCell(cell.cellIndex);\n }\n });\n };\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initialEnd, this.initializeDrag, this);\n this.parent.on(columnDrop, this.columnDrop, this);\n this.onDataBoundFn = this.onDataBound.bind(this);\n this.parent.addEventListener(dataBound, this.onDataBoundFn);\n this.parent.on(uiUpdate, this.enableAfterRender, this);\n }\n currentViewData() {\n let selectedIndexes = this.parent.getSelectedRowIndexes();\n let currentVdata = [];\n let fromIdx = parseInt(this.startedRow.getAttribute('aria-rowindex'), 10);\n for (let i = 0, n = selectedIndexes.length; i < n; i++) {\n let currentV = 'currentViewData';\n currentVdata[i] = this.parent[currentV][selectedIndexes[i]];\n }\n if (!this.parent.rowDropSettings.targetID && selectedIndexes.length === 0) {\n currentVdata[0] = this.parent.currentViewData[fromIdx];\n }\n return currentVdata;\n }\n saveChange(changeRecords, query) {\n this.parent.getDataModule().saveChanges(changeRecords, this.parent.getPrimaryKeyFieldNames()[0], {}, query)\n .then(() => {\n this.parent.notify(modelChanged, {\n type: actionBegin, requestType: 'rowdraganddrop'\n });\n }).catch((e) => {\n let error = 'error';\n let message = 'message';\n if (!isNullOrUndefined(e[error]) && !isNullOrUndefined(e[error][message])) {\n e[error] = e[error][message];\n }\n this.parent.trigger(actionFailure, e);\n });\n }\n reorderRows(fromIndexes, toIndex) {\n let selectedIndexes = this.parent.getSelectedRowIndexes();\n let selectedRecords = [];\n let draggedRecords = [];\n let currentViewData = this.parent.renderModule.data.dataManager.dataSource.json;\n let dropIdx = toIndex;\n let actualIdx = fromIndexes[0];\n for (let i = 0, len = fromIndexes.length; i < len; i++) {\n draggedRecords[i] = currentViewData[fromIndexes[i]];\n }\n for (let i = 0, len = selectedIndexes.length; i < len; i++) {\n selectedRecords[i] = currentViewData[selectedIndexes[i]];\n }\n for (let i = 0, len = draggedRecords.length; i < len; i++) {\n if (i !== 0) {\n for (let j = 0, len1 = currentViewData.length; j < len1; j++) {\n if (JSON.stringify(this.parent.renderModule.data.dataManager.dataSource.json[j]) ===\n JSON.stringify(draggedRecords[i])) {\n actualIdx = j;\n break;\n }\n }\n for (let j = 0, len1 = currentViewData.length; j < len1; j++) {\n if (JSON.stringify(this.parent.renderModule.data.dataManager.dataSource.json[j]) === JSON.stringify(draggedRecords[i - 1])) {\n if (actualIdx > j) {\n dropIdx = j + 1;\n }\n break;\n }\n }\n }\n this.reorderRow(actualIdx, dropIdx);\n }\n if (this.isRefresh) {\n this.parent.notify(modelChanged, {\n type: actionBegin, requestType: 'rowdraganddrop'\n });\n }\n for (let i = 0, len = selectedRecords.length; i < len; i++) {\n for (let j = 0, len1 = currentViewData.length; j < len1; j++) {\n if (JSON.stringify(this.parent.renderModule.data.dataManager.dataSource.json[j]) === JSON.stringify(selectedRecords[i])) {\n selectedIndexes[i] = j;\n break;\n }\n }\n }\n this.selectedRowColls = selectedIndexes;\n }\n stopTimer() {\n window.clearInterval(this.timer);\n }\n initializeDrag() {\n let gObj = this.parent;\n this.draggable = new Draggable(gObj.getContent(), {\n dragTarget: '.e-rowcelldrag, .e-rowdragdrop, .e-rowcell',\n distance: 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop\n });\n }\n updateScrollPostion(e, target) {\n let frzCols = this.parent.getFrozenColumns();\n let y = getPosition(e).y;\n let cliRect = this.parent.getContent().getBoundingClientRect();\n let rowHeight = this.parent.getRowHeight() - 15;\n let scrollElem = frzCols ? this.parent.getContent().querySelector('.e-movablecontent')\n : this.parent.getContent().firstElementChild;\n if (cliRect.top + rowHeight >= y) {\n let scrollPixel = -(this.parent.getRowHeight());\n this.isOverflowBorder = false;\n this.timer = window.setInterval(() => { this.setScrollDown(scrollElem, scrollPixel, true); }, 200);\n }\n else if (cliRect.top + this.parent.getContent().clientHeight - rowHeight - 33 <= y) {\n let scrollPixel = (this.parent.getRowHeight());\n this.isOverflowBorder = false;\n this.timer = window.setInterval(() => { this.setScrollDown(scrollElem, scrollPixel, true); }, 200);\n }\n }\n setScrollDown(scrollElem, scrollPixel, isLeft) {\n scrollElem.scrollTop = scrollElem.scrollTop + scrollPixel;\n }\n moveDragRows(e, startedRow, targetRow) {\n let cloneElement = this.parent.element.querySelector('.e-cloneproperties');\n let element = closest(e.target, 'tr');\n if (parentsUntil(element, 'e-gridcontent') && parentsUntil(cloneElement.parentElement, 'e-grid').id ===\n parentsUntil(element, 'e-grid').id) {\n let targetElement = element ?\n element : this.startedRow;\n this.setBorder(targetElement, e.event, startedRow, targetRow);\n }\n }\n setBorder(element, event, startedRow, targetRow) {\n let node = this.parent.element;\n let cloneElement = this.parent.element.querySelector('.e-cloneproperties');\n this.removeFirstRowBorder(element);\n this.removeLastRowBorder(element);\n if (parentsUntil(element, 'e-gridcontent') && parentsUntil(cloneElement.parentElement, 'e-grid').id ===\n parentsUntil(element, 'e-grid').id) {\n removeClass(node.querySelectorAll('.e-rowcell,.e-rowdragdrop'), ['e-dragborder']);\n let rowElement = [];\n if (targetRow && targetRow.rowIndex === 0) {\n let div = this.parent.createElement('div', { className: 'e-firstrow-dragborder' });\n let gridheaderEle = this.parent.getHeaderContent();\n gridheaderEle.classList.add('e-grid-relative');\n div.style.width = node.offsetWidth - this.getScrollWidth() + 'px';\n if (!gridheaderEle.querySelectorAll('.e-firstrow-dragborder').length) {\n gridheaderEle.appendChild(div);\n }\n }\n else if (targetRow && parseInt(startedRow.getAttribute('aria-rowindex'), 10) > targetRow.rowIndex) {\n element = this.parent.getRowByIndex(targetRow.rowIndex - 1);\n rowElement = [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'));\n }\n else {\n rowElement = [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'));\n }\n if (rowElement.length > 0) {\n addRemoveActiveClasses(rowElement, true, 'e-dragborder');\n }\n }\n }\n getScrollWidth() {\n let scrollElem = this.parent.getContent().firstElementChild;\n return scrollElem.scrollWidth > scrollElem.offsetWidth ? Scroll.getScrollBarWidth() : 0;\n }\n removeFirstRowBorder(element) {\n if (this.parent.element.getElementsByClassName('e-firstrow-dragborder').length > 0 && element &&\n element.rowIndex !== 0) {\n this.parent.element.getElementsByClassName('e-firstrow-dragborder')[0].remove();\n }\n }\n removeLastRowBorder(element) {\n let islastRowIndex = element &&\n this.parent.getRowByIndex(this.parent.getCurrentViewRecords().length - 1).getAttribute('data-uid') !==\n element.getAttribute('data-uid');\n if (this.parent.element.getElementsByClassName('e-lastrow-dragborder').length > 0 && element && islastRowIndex) {\n this.parent.element.getElementsByClassName('e-lastrow-dragborder')[0].remove();\n }\n }\n removeBorder(element) {\n this.removeFirstRowBorder(element);\n this.removeLastRowBorder(element);\n element = this.parent.getRows().filter((row) => row.querySelector('td.e-dragborder'))[0];\n if (element) {\n let rowElement = [].slice.call(element.querySelectorAll('.e-dragborder'));\n addRemoveActiveClasses(rowElement, false, 'e-dragborder');\n }\n }\n getElementFromPosition(element, event) {\n let target;\n let position = getPosition(event);\n element.style.display = 'none';\n target = document.elementFromPoint(position.x, position.y);\n element.style.display = '';\n return target;\n }\n onDataBound(e) {\n if (this.selectedRowColls.length > 0) {\n this.parent.selectRows(this.selectedRowColls);\n this.selectedRowColls = [];\n }\n }\n getTargetIdx(targetRow) {\n return targetRow ? parseInt(targetRow.getAttribute('aria-rowindex'), 10) : 0;\n }\n singleRowDrop(e) {\n let targetRow = closest(e.target, 'tr');\n let currentIndex;\n let srcControl;\n srcControl = e.droppedElement.parentElement.ej2_instances[0];\n currentIndex = targetRow ? targetRow.rowIndex : srcControl.currentViewData.length - 1;\n this.reorderRow(this.startedRowIndex, currentIndex);\n }\n columnDrop(e) {\n let gObj = this.parent;\n let draggObj = e.droppedElement.parentElement.ej2_instances[0];\n if (e.droppedElement.getAttribute('action') !== 'grouping') {\n let targetRow = closest(e.target, 'tr');\n let srcControl;\n let currentIndex;\n if ((e.droppedElement.querySelector('tr').getAttribute('single-dragrow') !== 'true' &&\n e.droppedElement.parentElement.id === gObj.element.id)\n || (e.droppedElement.querySelector('tr').getAttribute('single-dragrow') === 'true' &&\n e.droppedElement.parentElement.id !== gObj.element.id)) {\n return;\n }\n if (e.droppedElement.parentElement.id !== gObj.element.id) {\n srcControl = e.droppedElement.parentElement.ej2_instances[0];\n }\n else if (this.isSingleRowDragDrop || e.droppedElement.querySelector('tr').getAttribute('single-dragrow') === 'true') {\n this.singleRowDrop(e);\n return;\n }\n if (srcControl.element.id !== gObj.element.id && srcControl.rowDropSettings.targetID !== gObj.element.id) {\n return;\n }\n let records = srcControl.getSelectedRecords();\n let targetIndex = currentIndex = this.getTargetIdx(targetRow);\n if (isNaN(targetIndex)) {\n targetIndex = currentIndex = 0;\n }\n if (gObj.allowPaging) {\n targetIndex = targetIndex + (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize;\n }\n //Todo: drag and drop mapper & BatchChanges\n if (!isBlazor()) {\n gObj.notify(rowsAdded, { toIndex: targetIndex, records: records });\n gObj.notify(modelChanged, {\n type: actionBegin, requestType: 'rowdraganddrop'\n });\n let selectedRows = srcControl.getSelectedRowIndexes();\n let skip = srcControl.allowPaging ?\n (srcControl.pageSettings.currentPage * srcControl.pageSettings.pageSize) - srcControl.pageSettings.pageSize : 0;\n this.selectedRows = [];\n for (let i = 0, len = records.length; i < len; i++) {\n this.selectedRows.push(skip + selectedRows[i]);\n }\n srcControl.notify(rowsRemoved, { indexes: this.selectedRows, records: records });\n srcControl.notify(modelChanged, {\n type: actionBegin, requestType: 'rowdraganddrop'\n });\n }\n else {\n let currentVdata = [];\n let selectedIndex = srcControl.getSelectedRowIndexes();\n for (let i = 0; i < selectedIndex.length; i++) {\n currentVdata[i] = srcControl.currentViewData[selectedIndex[i]];\n }\n records = currentVdata;\n let changes = {\n addedRecords: records,\n deletedRecords: [],\n changedRecords: []\n };\n let dragDropDestinationIndex = 'dragDropDestinationIndex';\n let query = new Query;\n query[dragDropDestinationIndex] = targetIndex;\n gObj.getDataModule().saveChanges(changes, gObj.getPrimaryKeyFieldNames()[0], {}, query)\n .then(() => {\n gObj.notify(modelChanged, {\n type: actionBegin, requestType: 'rowdraganddrop'\n });\n }).catch((e) => {\n let message = 'message';\n let error = 'error';\n if (!isNullOrUndefined(e[error]) && !isNullOrUndefined(e[error][message])) {\n e[error] = e[error][message];\n }\n gObj.trigger(actionFailure, e);\n });\n changes.deletedRecords = records;\n changes.addedRecords = [];\n srcControl.getDataModule().saveChanges(changes, srcControl.getPrimaryKeyFieldNames()[0], {}, query)\n .then(() => {\n srcControl.notify(modelChanged, {\n type: actionBegin, requestType: 'rowdraganddrop'\n });\n }).catch((e) => {\n let error = 'error';\n let msg = 'message';\n if (!isNullOrUndefined(e[error]) && !isNullOrUndefined(e[error][msg])) {\n e[error] = e[error][msg];\n }\n srcControl.trigger(actionFailure, e);\n });\n }\n }\n }\n reorderRow(fromIndexes, toIndex) {\n let gObj = this.parent;\n if (!gObj.sortSettings.columns.length && !gObj.groupSettings.columns.length && !gObj.filterSettings.columns.length) {\n //Todo: drag and drop mapper & BatchChanges \n let skip = gObj.allowPaging ?\n (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize : 0;\n toIndex = toIndex + skip;\n this.selectedRows = gObj.getSelectedRowIndexes();\n gObj.notify(rowPositionChanged, {\n fromIndex: fromIndexes + skip,\n toIndex: toIndex\n });\n }\n }\n enableAfterRender(e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.initializeDrag();\n }\n }\n /**\n * To destroy the print\n * @return {void}\n * @hidden\n */\n destroy() {\n let gridElement = this.parent.element;\n if (this.parent.isDestroyed || !gridElement || (!gridElement.querySelector('.e-gridheader') &&\n !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n this.draggable.destroy();\n this.parent.off(initialEnd, this.initializeDrag);\n this.parent.off(columnDrop, this.columnDrop);\n this.parent.removeEventListener(dataBound, this.onDataBoundFn);\n this.parent.off(uiUpdate, this.enableAfterRender);\n //destory ejdrag and drop\n }\n /**\n * For internal use only - Get the module name.\n * @private\n */\n getModuleName() {\n return 'rowDragAndDrop';\n }\n processArgs(target) {\n let gObj = this.parent;\n if ((gObj.getSelectedRecords().length > 0 && this.startedRow.cells[0].classList.contains('e-selectionbackground') === false)\n || gObj.getSelectedRecords().length === 0) {\n this.rows = [this.startedRow];\n this.rowData = [this.parent.getRowInfo((this.startedRow).querySelector('.e-rowcell')).rowData];\n }\n else {\n this.rows = gObj.getSelectedRows();\n this.rowData = gObj.getSelectedRecords();\n }\n }\n}\n\n/**\n *\n * The `Group` module is used to handle group action.\n */\nclass Group {\n /**\n * Constructor for Grid group module\n * @hidden\n */\n constructor(parent, groupSettings, sortedColumns, serviceLocator) {\n //Internal variables\n this.sortRequired = true;\n this.isAppliedGroup = false;\n this.isAppliedUnGroup = false;\n this.reorderingColumns = [];\n this.visualElement = createElement('div', {\n className: 'e-cloneproperties e-dragclone e-gdclone',\n styles: 'line-height:23px', attrs: { action: 'grouping' }\n });\n this.helper = (e) => {\n let gObj = this.parent;\n let target = e.sender.target;\n let element = target.classList.contains('e-groupheadercell') ? target :\n parentsUntil(target, 'e-groupheadercell');\n if (!element || (!target.classList.contains('e-drag') && this.groupSettings.allowReordering)) {\n return false;\n }\n this.column = gObj.getColumnByField(element.firstElementChild.getAttribute('ej-mappingname'));\n this.visualElement.textContent = element.textContent;\n this.visualElement.style.width = element.offsetWidth + 2 + 'px';\n this.visualElement.style.height = element.offsetHeight + 2 + 'px';\n this.visualElement.setAttribute('e-mappinguid', this.column.uid);\n gObj.element.appendChild(this.visualElement);\n return this.visualElement;\n };\n this.dragStart = (e) => {\n this.parent.element.classList.add('e-ungroupdrag');\n if (isBlazor()) {\n e.bindEvents(e.dragElement);\n }\n };\n this.drag = (e) => {\n if (this.groupSettings.allowReordering) {\n this.animateDropper(e);\n }\n let target = e.target;\n let cloneElement = this.parent.element.querySelector('.e-cloneproperties');\n this.parent.trigger(columnDrag, { target: target, draggableType: 'headercell', column: this.column });\n if (!this.groupSettings.allowReordering) {\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n if (!(parentsUntil(target, 'e-gridcontent') || parentsUntil(target, 'e-headercell'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n }\n };\n this.dragStop = (e) => {\n this.parent.element.classList.remove('e-ungroupdrag');\n let preventDrop = !(parentsUntil(e.target, 'e-gridcontent') || parentsUntil(e.target, 'e-gridheader'));\n if (this.groupSettings.allowReordering && preventDrop) {\n remove(e.helper);\n if (parentsUntil(e.target, 'e-groupdroparea')) {\n this.rearrangeGroup(e);\n }\n else if (!(parentsUntil(e.target, 'e-grid'))) {\n let field = this.parent.getColumnByUid(e.helper.getAttribute('e-mappinguid')).field;\n if (this.groupSettings.columns.indexOf(field) !== -1) {\n this.ungroupColumn(field);\n }\n }\n return;\n }\n else if (preventDrop) {\n remove(e.helper);\n return;\n }\n };\n this.animateDropper = (e) => {\n let uid = this.parent.element.querySelector('.e-cloneproperties').getAttribute('e-mappinguid');\n let dragField = this.parent.getColumnByUid(uid).field;\n let parent = parentsUntil(e.target, 'e-groupdroparea');\n let dropTarget = parentsUntil(e.target, 'e-group-animator');\n // tslint:disable-next-line\n let grouped = [].slice.call(this.element.querySelectorAll('.e-groupheadercell'))\n .map((e) => e.querySelector('div').getAttribute('ej-mappingname'));\n let cols = JSON.parse(JSON.stringify(grouped));\n if (dropTarget || parent) {\n if (dropTarget) {\n let dropField = dropTarget.querySelector('div[ej-mappingname]').getAttribute('ej-mappingname');\n let dropIndex = +(dropTarget.getAttribute('index'));\n if (dropField !== dragField) {\n let dragIndex = cols.indexOf(dragField);\n if (dragIndex !== -1) {\n cols.splice(dragIndex, 1);\n }\n let flag = dropIndex !== -1 && dragIndex === dropIndex;\n cols.splice(dropIndex + (flag ? 1 : 0), 0, dragField);\n }\n }\n else if (parent && cols.indexOf(dragField) === -1) {\n cols.push(dragField);\n }\n this.element.innerHTML = '';\n if (cols.length && !this.element.classList.contains('e-grouped')) {\n this.element.classList.add('e-grouped');\n }\n this.reorderingColumns = cols;\n for (let c = 0; c < cols.length; c++) {\n this.addColToGroupDrop(cols[c]);\n }\n }\n else {\n this.addLabel();\n this.removeColFromGroupDrop(dragField);\n }\n };\n this.drop = (e) => {\n let gObj = this.parent;\n let column = gObj.getColumnByUid(e.droppedElement.getAttribute('e-mappinguid'));\n this.element.classList.remove('e-hover');\n remove(e.droppedElement);\n this.aria.setDropTarget(this.parent.element.querySelector('.e-groupdroparea'), false);\n this.aria.setGrabbed(this.parent.getHeaderTable().querySelector('[aria-grabbed=true]'), false);\n if (isNullOrUndefined(column) || column.allowGrouping === false ||\n parentsUntil(gObj.getColumnHeaderByUid(column.uid), 'e-grid').getAttribute('id') !==\n gObj.element.getAttribute('id')) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: column.headerText });\n return;\n }\n this.groupColumn(column.field);\n };\n this.contentRefresh = true;\n this.aria = new AriaService();\n this.parent = parent;\n this.groupSettings = groupSettings;\n this.serviceLocator = serviceLocator;\n this.sortedColumns = sortedColumns;\n this.focus = serviceLocator.getService('focus');\n this.addEventListener();\n this.groupGenerator = new GroupModelGenerator(this.parent);\n }\n addLabel() {\n if (!this.element.querySelectorAll('.e-group-animator').length) {\n let dragLabel = this.l10n.getConstant('GroupDropArea');\n this.element.innerHTML = dragLabel;\n this.element.classList.remove('e-grouped');\n }\n }\n rearrangeGroup(e) {\n this.sortRequired = false;\n this.updateModel();\n }\n columnDrag(e) {\n if (this.groupSettings.allowReordering) {\n this.animateDropper(e);\n }\n let gObj = this.parent;\n let cloneElement = this.parent.element.querySelector('.e-cloneproperties');\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n if (!parentsUntil(e.target, 'e-groupdroparea') &&\n !(this.parent.allowReordering && parentsUntil(e.target, 'e-headercell'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n e.target.classList.contains('e-groupdroparea') ? this.element.classList.add('e-hover') : this.element.classList.remove('e-hover');\n }\n columnDragStart(e) {\n if (e.target.classList.contains('e-stackedheadercell')) {\n return;\n }\n let gObj = this.parent;\n let dropArea = this.parent.element.querySelector('.e-groupdroparea');\n this.aria.setDropTarget(dropArea, e.column.allowGrouping);\n let element = e.target.classList.contains('e-headercell') ? e.target : parentsUntil(e.target, 'e-headercell');\n this.aria.setGrabbed(element, true, !e.column.allowGrouping);\n }\n columnDrop(e) {\n let gObj = this.parent;\n if (e.droppedElement.getAttribute('action') === 'grouping') {\n let column = gObj.getColumnByUid(e.droppedElement.getAttribute('e-mappinguid'));\n if (isNullOrUndefined(column) || column.allowGrouping === false ||\n parentsUntil(gObj.getColumnHeaderByUid(column.uid), 'e-grid').getAttribute('id') !==\n gObj.element.getAttribute('id')) {\n return;\n }\n this.ungroupColumn(column.field);\n }\n }\n /**\n * @hidden\n */\n addEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(uiUpdate, this.enableAfterRender, this);\n this.parent.on(groupComplete, this.onActionComplete, this);\n this.parent.on(ungroupComplete, this.onActionComplete, this);\n this.parent.on(inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(click, this.clickHandler, this);\n this.parent.on(columnDrag, this.columnDrag, this);\n this.parent.on(columnDragStart, this.columnDragStart, this);\n this.parent.on(headerDrop, this.columnDrop, this);\n this.parent.on(columnDrop, this.columnDrop, this);\n this.parent.on(headerRefreshed, this.refreshSortIcons, this);\n this.parent.on(sortComplete, this.refreshSortIcons, this);\n this.parent.on(keyPressed, this.keyPressHandler, this);\n this.parent.on(contentReady, this.initialEnd, this);\n this.parent.on(onEmpty, this.initialEnd, this);\n this.parent.on(initialEnd, this.render, this);\n this.parent.on(groupAggregates, this.onGroupAggregates, this);\n this.parent.on('blazor-action-begin', this.blazorActionBegin, this);\n this.parent.on('group-expand-collapse', this.updateExpand, this);\n this.parent.on('persist-data-changed', this.initialEnd, this);\n }\n /**\n * @hidden\n */\n removeEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(initialEnd, this.render);\n this.parent.off(uiUpdate, this.enableAfterRender);\n this.parent.off(groupComplete, this.onActionComplete);\n this.parent.off(ungroupComplete, this.onActionComplete);\n this.parent.off(inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(click, this.clickHandler);\n this.parent.off(columnDrag, this.columnDrag);\n this.parent.off(columnDragStart, this.columnDragStart);\n this.parent.off(columnDrop, this.columnDrop);\n this.parent.off(headerDrop, this.columnDrop);\n this.parent.off(headerRefreshed, this.refreshSortIcons);\n this.parent.off(sortComplete, this.refreshSortIcons);\n this.parent.off(keyPressed, this.keyPressHandler);\n this.parent.off(groupAggregates, this.onGroupAggregates);\n this.parent.off('blazor-action-begin', this.blazorActionBegin);\n this.parent.off('group-expand-collapse', this.updateExpand);\n }\n blazorActionBegin() {\n if (this.parent.allowGrouping && !this.parent.isCollapseStateEnabled()) {\n this.expandAll();\n }\n }\n initialEnd() {\n let gObj = this.parent;\n this.parent.off(contentReady, this.initialEnd);\n this.parent.off(onEmpty, this.initialEnd);\n if (isBlazor() && gObj.isServerRendered) {\n for (let i = 0; i < gObj.columns.length; i++) {\n this.removeColFromGroupDrop(gObj.columns[i].field);\n }\n this.updateGroupDropArea();\n }\n if (this.parent.getColumns().length && this.groupSettings.columns.length) {\n this.contentRefresh = false;\n for (let col of gObj.groupSettings.columns) {\n this.groupColumn(col);\n }\n this.contentRefresh = true;\n }\n }\n keyPressHandler(e) {\n let gObj = this.parent;\n if (e.action !== 'ctrlSpace' && (!this.groupSettings.columns.length ||\n ['altDownArrow', 'altUpArrow', 'ctrlDownArrow', 'ctrlUpArrow', 'enter'].indexOf(e.action) === -1)) {\n return;\n }\n e.preventDefault();\n switch (e.action) {\n case 'altDownArrow':\n case 'altUpArrow':\n let selected = gObj.allowSelection ? gObj.getSelectedRowIndexes() : [];\n if (selected.length) {\n let rows = gObj.getContentTable().querySelector('tbody').children;\n let dataRow = gObj.getDataRows()[selected[selected.length - 1]];\n let grpRow;\n for (let i = dataRow.rowIndex; i >= 0; i--) {\n if (!rows[i].classList.contains('e-row') && !rows[i].classList.contains('e-detailrow')) {\n grpRow = rows[i];\n break;\n }\n }\n this.expandCollapseRows(grpRow.querySelector(e.action === 'altUpArrow' ?\n '.e-recordplusexpand' : '.e-recordpluscollapse'));\n }\n break;\n case 'ctrlDownArrow':\n this.expandAll();\n break;\n case 'ctrlUpArrow':\n this.collapseAll();\n break;\n case 'enter':\n if (this.parent.isEdit || (closest(e.target, '#' + this.parent.element.id + '_searchbar') !== null)) {\n return;\n }\n let element = this.focus.getFocusedElement();\n let row = element ? element.parentElement.querySelector('[class^=\"e-record\"]') : null;\n if (!row) {\n break;\n }\n this.expandCollapseRows(row);\n break;\n case 'ctrlSpace':\n let elem = gObj.focusModule.currentInfo.element;\n if (elem && elem.classList.contains('e-headercell')) {\n let column = gObj.getColumnByUid(elem.firstElementChild.getAttribute('e-mappinguid'));\n column.field && gObj.groupSettings.columns.indexOf(column.field) < 0 ?\n this.groupColumn(column.field) : this.ungroupColumn(column.field);\n }\n break;\n }\n }\n clickHandler(e) {\n this.expandCollapseRows(e.target);\n this.applySortFromTarget(e.target);\n this.unGroupFromTarget(e.target);\n this.toogleGroupFromHeader(e.target);\n }\n unGroupFromTarget(target) {\n if (target.classList.contains('e-ungroupbutton')) {\n this.ungroupColumn(target.parentElement.getAttribute('ej-mappingname'));\n }\n }\n toogleGroupFromHeader(target) {\n if (this.groupSettings.showToggleButton) {\n if (target.classList.contains('e-grptogglebtn')) {\n if (target.classList.contains('e-toggleungroup')) {\n this.ungroupColumn(this.parent.getColumnByUid(target.parentElement.getAttribute('e-mappinguid')).field);\n }\n else {\n this.groupColumn(this.parent.getColumnByUid(target.parentElement.getAttribute('e-mappinguid')).field);\n }\n }\n else {\n if (target.classList.contains('e-toggleungroup')) {\n this.ungroupColumn(target.parentElement.getAttribute('ej-mappingname'));\n }\n }\n }\n }\n applySortFromTarget(target) {\n let gObj = this.parent;\n let gHeader = closest(target, '.e-groupheadercell');\n if (gObj.allowSorting && gHeader && !target.classList.contains('e-ungroupbutton') &&\n !target.classList.contains('e-toggleungroup')) {\n let field = gHeader.firstElementChild.getAttribute('ej-mappingname');\n if (gObj.getColumnHeaderByField(field).querySelectorAll('.e-ascending').length) {\n gObj.sortColumn(field, 'Descending', true);\n }\n else {\n gObj.sortColumn(field, 'Ascending', true);\n }\n }\n }\n /**\n * Expands or collapses grouped rows by target element.\n * @param {Element} target - Defines the target element of the grouped row.\n * @return {void}\n */\n expandCollapseRows(target) {\n let trgt = parentsUntil(target, 'e-recordplusexpand') ||\n parentsUntil(target, 'e-recordpluscollapse');\n if (trgt) {\n let cellIdx = trgt.cellIndex;\n let rowIdx = trgt.parentElement.rowIndex;\n let rowNodes = this.parent.getContentTable().querySelector('tbody').children;\n let rows = [].slice.call(rowNodes).slice(rowIdx + 1, rowNodes.length);\n let isHide;\n let expandElem;\n let dataManager;\n let query;\n let toExpand = [];\n let gObj = this.parent;\n let indent = trgt.parentElement.querySelectorAll('.e-indentcell').length;\n let expand = false;\n if (isBlazor() && this.parent.isCollapseStateEnabled()) {\n this.parent.notify('group-expand-collapse', { uid: trgt.parentElement.getAttribute('data-uid'),\n isExpand: trgt.classList.contains('e-recordpluscollapse') });\n return;\n }\n if (trgt.classList.contains('e-recordpluscollapse')) {\n addClass([trgt], 'e-recordplusexpand');\n removeClass([trgt], 'e-recordpluscollapse');\n trgt.firstElementChild.className = 'e-icons e-gdiagonaldown e-icon-gdownarrow';\n expand = true;\n if (isGroupAdaptive(gObj)) {\n this.updateVirtualRows(gObj, target, expand, query, dataManager);\n }\n }\n else {\n isHide = true;\n removeClass([trgt], 'e-recordplusexpand');\n addClass([trgt], 'e-recordpluscollapse');\n trgt.firstElementChild.className = 'e-icons e-gnextforward e-icon-grightarrow';\n if (isGroupAdaptive(gObj)) {\n this.updateVirtualRows(gObj, target, !isHide, query, dataManager);\n }\n }\n this.aria.setExpand(trgt, expand);\n if (!isGroupAdaptive(gObj)) {\n for (let i = 0, len = rows.length; i < len; i++) {\n if (rows[i].querySelectorAll('td')[cellIdx] &&\n rows[i].querySelectorAll('td')[cellIdx].classList.contains('e-indentcell') && rows) {\n if (isHide) {\n rows[i].style.display = 'none';\n }\n else {\n if (rows[i].querySelectorAll('.e-indentcell').length === indent + 1) {\n rows[i].style.display = '';\n expandElem = rows[i].querySelector('.e-recordplusexpand');\n if (expandElem) {\n toExpand.push(expandElem);\n }\n if (rows[i].classList.contains('e-detailrow')) {\n if (rows[i - 1].querySelectorAll('.e-detailrowcollapse').length) {\n rows[i].style.display = 'none';\n }\n }\n }\n }\n }\n else {\n break;\n }\n }\n }\n for (let i = 0, len = toExpand.length; i < len; i++) {\n removeClass([toExpand[i]], 'e-recordplusexpand');\n addClass([toExpand[i]], 'e-recordpluscollapse');\n toExpand[i].firstElementChild.className = 'e-icons e-gnextforward e-icon-grightarrow';\n this.expandCollapseRows(toExpand[i]);\n }\n }\n }\n updateVirtualRows(gObj, target, isExpand, query, dataManager) {\n let rObj = gObj.getRowObjectFromUID(target.closest('tr').getAttribute('data-uid'));\n rObj.isExpand = isExpand;\n updatecloneRow(gObj);\n query = gObj.getDataModule().generateQuery(false);\n query.queries = gObj.getDataModule().aggregateQuery(gObj.getQuery().clone()).queries;\n let args = { requestType: 'virtualscroll', rowObject: rObj };\n dataManager = gObj.getDataModule().getData(args, query.requiresCount());\n dataManager.then((e) => gObj.renderModule.dataManagerSuccess(e, args));\n }\n expandCollapse(isExpand) {\n if (isBlazor() && this.parent.isCollapseStateEnabled()) {\n this.parent.notify('group-expand-collapse', { isExpand: isExpand });\n return;\n }\n if (!isExpand) {\n this.parent.notify(initialCollapse, isExpand);\n }\n let rowNodes = this.parent.getContentTable().querySelector('tbody').children;\n let row;\n for (let i = 0, len = rowNodes.length; i < len; i++) {\n if (rowNodes[i].querySelectorAll('.e-recordplusexpand, .e-recordpluscollapse').length) {\n row = rowNodes[i].querySelector(isExpand ? '.e-recordpluscollapse' : '.e-recordplusexpand');\n if (row) {\n row.className = isExpand ? 'e-recordplusexpand' : 'e-recordpluscollapse';\n row.firstElementChild.className = isExpand ? 'e-icons e-gdiagonaldown e-icon-gdownarrow' :\n 'e-icons e-gnextforward e-icon-grightarrow';\n }\n if (!(rowNodes[i].firstElementChild.classList.contains('e-recordplusexpand') ||\n rowNodes[i].firstElementChild.classList.contains('e-recordpluscollapse'))) {\n rowNodes[i].style.display = isExpand ? '' : 'none';\n }\n }\n else {\n rowNodes[i].style.display = isExpand ? '' : 'none';\n }\n }\n }\n /**\n * Expands all the grouped rows of the Grid.\n * @return {void}\n */\n expandAll() {\n this.expandCollapse(true);\n }\n /**\n * Collapses all the grouped rows of the Grid.\n * @return {void}\n */\n collapseAll() {\n this.expandCollapse(false);\n }\n /**\n * The function is used to render grouping\n * @return {Element}\n * @hidden\n */\n render() {\n this.l10n = this.serviceLocator.getService('localization');\n this.renderGroupDropArea();\n this.initDragAndDrop();\n this.refreshToggleBtn();\n }\n renderGroupDropArea() {\n let groupElem = this.parent.element.querySelector('.e-groupdroparea');\n if (groupElem) {\n remove(groupElem);\n }\n this.element = this.parent.createElement('div', { className: 'e-groupdroparea', attrs: { 'tabindex': '-1' } });\n if (this.groupSettings.allowReordering) {\n this.element.classList.add('e-group-animate');\n }\n this.updateGroupDropArea();\n this.parent.element.insertBefore(this.element, this.parent.element.firstChild);\n if (!this.groupSettings.showDropArea) {\n this.element.style.display = 'none';\n }\n }\n updateGroupDropArea(clear) {\n if (this.groupSettings.showDropArea && !this.groupSettings.columns.length) {\n let dragLabel = this.l10n.getConstant('GroupDropArea');\n this.element.innerHTML = dragLabel;\n this.element.classList.remove('e-grouped');\n }\n else {\n if ((this.element.innerHTML === this.l10n.getConstant('GroupDropArea') && (this.groupSettings.columns.length === 1\n || !this.isAppliedGroup && !this.isAppliedUnGroup)) || clear) {\n this.element.innerHTML = '';\n }\n this.element.classList.add('e-grouped');\n }\n }\n initDragAndDrop() {\n this.initializeGHeaderDrop();\n this.initializeGHeaderDrag();\n }\n initializeGHeaderDrag() {\n let drag = new Draggable(this.element, {\n dragTarget: this.groupSettings.allowReordering ? '.e-drag' : '.e-groupheadercell',\n distance: this.groupSettings.allowReordering ? -10 : 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop\n });\n }\n initializeGHeaderDrop() {\n let gObj = this.parent;\n let drop = new Droppable(this.element, {\n accept: '.e-dragclone',\n drop: this.drop\n });\n }\n /**\n * Groups a column by column name.\n * @param {string} columnName - Defines the column name to group.\n * @return {void}\n */\n groupColumn(columnName) {\n let gObj = this.parent;\n let column = gObj.getColumnByField(columnName);\n if (isNullOrUndefined(column) || column.allowGrouping === false ||\n (this.contentRefresh && this.groupSettings.columns.indexOf(columnName) > -1)) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: column.headerText });\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(preventBatch, { instance: this, handler: this.groupColumn, arg1: columnName });\n return;\n }\n column.visible = gObj.groupSettings.showGroupedColumn;\n this.colName = columnName;\n this.isAppliedGroup = true;\n if (this.contentRefresh) {\n this.updateModel();\n }\n else {\n this.addColToGroupDrop(columnName);\n }\n this.updateGroupDropArea();\n this.isAppliedGroup = false;\n }\n /**\n * Ungroups a column by column name.\n * @param {string} columnName - Defines the column name to ungroup.\n * @return {void}\n */\n ungroupColumn(columnName) {\n let gObj = this.parent;\n let column = this.parent.enableColumnVirtualization ?\n this.parent.columns.filter((c) => c.field === columnName)[0] : gObj.getColumnByField(columnName);\n if (isNullOrUndefined(column) || column.allowGrouping === false || this.groupSettings.columns.indexOf(columnName) < 0) {\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(preventBatch, { instance: this, handler: this.ungroupColumn, arg1: columnName });\n return;\n }\n column.visible = true;\n if (isBlazor() && gObj.isServerRendered) {\n let setVisible = [];\n setVisible[0] = column;\n this.parent.notify('setvisibility', setVisible);\n }\n this.colName = column.field;\n let columns = JSON.parse(JSON.stringify(this.groupSettings.columns));\n columns.splice(columns.indexOf(this.colName), 1);\n if (this.sortedColumns.indexOf(columnName) < 0) {\n for (let i = 0, len = gObj.sortSettings.columns.length; i < len; i++) {\n if (columnName === gObj.sortSettings.columns[i].field) {\n gObj.sortSettings.columns.splice(i, 1);\n break;\n }\n }\n }\n let isServerRendered = 'isServerRendered';\n if (isBlazor() && this.parent[isServerRendered]) {\n gObj.sortSettings.columns = gObj.sortSettings.columns;\n }\n if (this.groupSettings.allowReordering) {\n this.reorderingColumns = columns;\n }\n this.groupSettings.columns = columns;\n if (gObj.allowGrouping) {\n this.isAppliedUnGroup = true;\n this.parent.dataBind();\n }\n }\n /**\n * The function used to update groupSettings\n * @return {void}\n * @hidden\n */\n updateModel() {\n let gObj = this.parent;\n let columns = JSON.parse(JSON.stringify(this.groupSettings.columns));\n columns = this.reorderingColumns.length ? JSON.parse(JSON.stringify(this.reorderingColumns)) : columns;\n if (this.sortRequired) {\n if (columns.indexOf(this.colName) === -1) {\n columns.push(this.colName);\n }\n this.groupAddSortingQuery(this.colName);\n }\n this.sortRequired = true;\n this.parent.groupSettings.columns = columns;\n this.parent.dataBind();\n }\n /**\n * The function used to trigger onActionComplete\n * @return {void}\n * @hidden\n */\n onActionComplete(e) {\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\n let gObj = this.parent;\n if (e.requestType === 'grouping') {\n this.addColToGroupDrop(this.colName);\n }\n else {\n this.removeColFromGroupDrop(this.colName);\n }\n let args = this.groupSettings.columns.indexOf(this.colName) > -1 ? {\n columnName: this.colName, requestType: 'grouping', type: actionComplete\n } : { requestType: 'ungrouping', type: actionComplete };\n this.parent.trigger(actionComplete, extend(e, args));\n this.colName = null;\n }\n groupAddSortingQuery(colName) {\n let i = 0;\n while (i < this.parent.sortSettings.columns.length) {\n if (this.parent.sortSettings.columns[i].field === colName) {\n break;\n }\n i++;\n }\n if (this.parent.sortSettings.columns.length === i) {\n this.parent.sortSettings.columns.push({ field: colName, direction: 'Ascending', isFromGroup: true });\n let isServerRendered = 'isServerRendered';\n if (isBlazor() && this.parent[isServerRendered]) {\n this.parent.sortSettings.columns = this.parent.sortSettings.columns;\n }\n }\n else if (!this.parent.allowSorting) {\n this.parent.sortSettings.columns[i].direction = 'Ascending';\n }\n }\n createElement(field) {\n let gObj = this.parent;\n let direction = 'Ascending';\n let animator = this.parent.createElement('div', { className: 'e-grid-icon e-group-animator' });\n let groupedColumn = this.parent.createElement('div', { className: 'e-grid-icon e-groupheadercell' });\n let childDiv = this.parent.createElement('div', { attrs: { 'ej-mappingname': field } });\n let column = this.parent.getColumnByField(field);\n //Todo headerTemplateID for grouped column, disableHtmlEncode \n let headerCell = gObj.getColumnHeaderByUid(column.uid);\n // if (!isNullOrUndefined(column.headerTemplate)) {\n // if (column.headerTemplate.indexOf('#') !== -1) {\n // childDiv.innerHTML = document.querySelector(column.headerTemplate).innerHTML.trim();\n // } else {\n // childDiv.innerHTML = column.headerTemplate;\n // }\n // childDiv.firstElementChild.classList.add('e-grouptext');\n // } else {\n if (this.groupSettings.allowReordering) {\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-drag e-icons e-icon-drag', innerHTML: ' ',\n attrs: { title: 'Drag', tabindex: '-1', 'aria-label': 'Drag the grouped column' }\n }));\n }\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-grouptext', innerHTML: column.headerText,\n attrs: { tabindex: '-1', 'aria-label': 'sort the grouped column' }\n }));\n // }\n if (this.groupSettings.showToggleButton) {\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-togglegroupbutton e-icons e-icon-ungroup e-toggleungroup', innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': 'ungroup button' }\n }));\n }\n if (headerCell.querySelectorAll('.e-ascending,.e-descending').length) {\n direction = headerCell.querySelector('.e-ascending') ? 'Ascending' : 'Descending';\n }\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-groupsort e-icons ' +\n ('e-' + direction.toLowerCase() + ' e-icon-' + direction.toLowerCase()), innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': 'sort the grouped column' }\n }));\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-ungroupbutton e-icons e-icon-hide', innerHTML: ' ',\n attrs: { title: isBlazor() ? this.l10n.getConstant('UnGroupButton') : this.l10n.getConstant('UnGroup'),\n tabindex: '-1', 'aria-label': 'ungroup the grouped column' },\n styles: this.groupSettings.showUngroupButton ? '' : 'display:none'\n }));\n groupedColumn.appendChild(childDiv);\n let index = this.groupSettings.columns.indexOf(field);\n if (this.groupSettings.allowReordering) {\n animator.appendChild(groupedColumn);\n animator.appendChild(this.createSeparator());\n groupedColumn = animator;\n }\n return groupedColumn;\n }\n addColToGroupDrop(field) {\n if (this.groupSettings.allowReordering\n && this.parent.element.querySelector('.e-groupdroparea div[ej-mappingname=' + field + ']')) {\n return;\n }\n let column = this.parent.getColumnByField(field);\n if (isNullOrUndefined(column)) {\n return;\n }\n let groupedColumn = this.createElement(field);\n if (this.groupSettings.allowReordering) {\n let index = this.element.querySelectorAll('.e-group-animator').length;\n groupedColumn.setAttribute('index', index.toString());\n }\n this.element.appendChild(groupedColumn);\n //Todo: rtl \n }\n createSeparator() {\n return this.parent.createElement('span', {\n className: 'e-nextgroup e-icons e-icon-next', innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': 'Separator for the grouped columns' },\n styles: this.groupSettings.showUngroupButton ? '' : 'display:none'\n });\n }\n refreshToggleBtn(isRemove) {\n if (this.groupSettings.showToggleButton) {\n let headers = [].slice.call(this.parent.getHeaderTable().getElementsByClassName('e-headercelldiv'));\n for (let i = 0, len = headers.length; i < len; i++) {\n if (!((headers[i].classList.contains('e-emptycell')) || (headers[i].classList.contains('e-headerchkcelldiv')))) {\n let column = this.parent.getColumnByUid(headers[i].getAttribute('e-mappinguid'));\n if (!this.parent.showColumnMenu || (this.parent.showColumnMenu && !column.showColumnMenu)) {\n if (headers[i].querySelectorAll('.e-grptogglebtn').length) {\n remove(headers[i].querySelectorAll('.e-grptogglebtn')[0]);\n }\n if (!isRemove) {\n headers[i].appendChild(this.parent.createElement('span', {\n className: 'e-grptogglebtn e-icons ' +\n (this.groupSettings.columns.indexOf(column.field) > -1 ? 'e-toggleungroup e-icon-ungroup'\n : 'e-togglegroup e-icon-group'), attrs: { tabindex: '-1', 'aria-label': 'Group button' }\n }));\n }\n }\n }\n }\n }\n }\n removeColFromGroupDrop(field) {\n if (!isNullOrUndefined(this.getGHeaderCell(field))) {\n let elem = this.getGHeaderCell(field);\n if (this.groupSettings.allowReordering) {\n let parent = parentsUntil(elem, 'e-group-animator');\n remove(parent);\n }\n else {\n remove(elem);\n }\n this.updateGroupDropArea();\n }\n this.isAppliedUnGroup = false;\n }\n onPropertyChanged(e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n for (let prop of Object.keys(e.properties)) {\n switch (prop) {\n case 'columns':\n let args;\n if (this.contentRefresh) {\n if (!this.isAppliedUnGroup) {\n if (!this.isAppliedGroup) {\n this.updateGroupDropArea(true);\n for (let i = 0; i < this.groupSettings.columns.length; i++) {\n this.colName = this.groupSettings.columns[i];\n let col = this.parent.getColumnByField(this.colName);\n col.visible = this.parent.groupSettings.showGroupedColumn;\n this.groupAddSortingQuery(this.colName);\n if (i < this.groupSettings.columns.length - 1) {\n this.addColToGroupDrop(this.groupSettings.columns[i]);\n }\n }\n }\n args = {\n columnName: this.colName, requestType: e.properties[prop].length ? 'grouping' : 'ungrouping',\n type: actionBegin\n };\n }\n else {\n args = { requestType: 'ungrouping', type: actionBegin };\n }\n if (!this.groupSettings.showGroupedColumn) {\n let columns = e.oldProperties[prop];\n for (let i = 0; i < columns.length; i++) {\n if (e.properties[prop].indexOf(columns[i]) === -1) {\n this.parent.getColumnByField(columns[i]).visible = true;\n }\n }\n }\n let requestType = 'requestType';\n if (isBlazor() && this.parent.isServerRendered && this.parent.isCollapseStateEnabled() &&\n args[requestType] === 'grouping') {\n this.parent.refreshHeader();\n }\n this.parent.notify(modelChanged, args);\n }\n break;\n case 'showDropArea':\n this.updateGroupDropArea();\n this.groupSettings.showDropArea ? this.element.style.display = '' : this.element.style.display = 'none';\n break;\n case 'showGroupedColumn':\n this.updateGroupedColumn(this.groupSettings.showGroupedColumn);\n this.parent.notify(modelChanged, { requestType: 'refresh' });\n break;\n case 'showUngroupButton':\n this.updateButtonVisibility(this.groupSettings.showUngroupButton, 'e-ungroupbutton');\n break;\n case 'showToggleButton':\n this.updateButtonVisibility(this.groupSettings.showToggleButton, 'e-togglegroupbutton ');\n this.parent.refreshHeader();\n break;\n }\n }\n }\n updateGroupedColumn(isVisible) {\n for (let i = 0; i < this.groupSettings.columns.length; i++) {\n this.parent.getColumnByField(this.groupSettings.columns[i]).visible = isVisible;\n }\n }\n updateButtonVisibility(isVisible, className) {\n let gHeader = [].slice.call(this.element.querySelectorAll('.' + className));\n for (let i = 0; i < gHeader.length; i++) {\n gHeader[i].style.display = isVisible ? '' : 'none';\n }\n }\n enableAfterRender(e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n }\n }\n /**\n * To destroy the reorder\n * @return {void}\n * @hidden\n */\n destroy() {\n let gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.e-gridheader') && !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n // tslint:disable-next-line:no-any\n if (!this.parent.isDestroyed && !this.parent.refreshing) {\n this.clearGrouping();\n }\n this.removeEventListener();\n this.refreshToggleBtn(true);\n remove(this.element);\n //call ejdrag and drop destroy\n }\n /**\n * Clears all the grouped columns of the Grid.\n * @return {void}\n */\n clearGrouping() {\n let cols = JSON.parse(JSON.stringify(this.groupSettings.columns));\n this.contentRefresh = false;\n for (let i = 0, len = cols.length; i < len; i++) {\n if (i === (len - 1)) {\n this.contentRefresh = true;\n }\n this.ungroupColumn(cols[i]);\n }\n this.contentRefresh = true;\n }\n /**\n * For internal use only - Get the module name.\n * @private\n */\n getModuleName() {\n return 'group';\n }\n refreshSortIcons(e) {\n let gObj = this.parent;\n let header;\n let cols = gObj.sortSettings.columns;\n let gCols = gObj.groupSettings.columns;\n let fieldNames = this.parent.getColumns().map((c) => c.field);\n this.refreshToggleBtn();\n for (let i = 0, len = cols.length; i < len; i++) {\n if (fieldNames.indexOf(cols[i].field) === -1) {\n continue;\n }\n header = gObj.getColumnHeaderByField(cols[i].field);\n if (!gObj.allowSorting && (this.sortedColumns.indexOf(cols[i].field) > -1 ||\n this.groupSettings.columns.indexOf(cols[i].field) > -1)) {\n classList(header.querySelector('.e-sortfilterdiv'), ['e-ascending', 'e-icon-ascending'], []);\n if (cols.length > 1) {\n header.querySelector('.e-headercelldiv').appendChild(this.parent.createElement('span', { className: 'e-sortnumber', innerHTML: (i + 1).toString() }));\n }\n }\n else if (this.getGHeaderCell(cols[i].field) && this.getGHeaderCell(cols[i].field).querySelectorAll('.e-groupsort').length) {\n if (cols[i].direction === 'Ascending') {\n classList(this.getGHeaderCell(cols[i].field).querySelector('.e-groupsort'), ['e-ascending', 'e-icon-ascending'], ['e-descending', 'e-icon-descending']);\n }\n else {\n classList(this.getGHeaderCell(cols[i].field).querySelector('.e-groupsort'), ['e-descending', 'e-icon-descending'], ['e-ascending', 'e-icon-ascending']);\n }\n }\n }\n for (let i = 0, len = gCols.length; i < len; i++) {\n if (fieldNames.indexOf(gCols[i]) === -1) {\n continue;\n }\n gObj.getColumnHeaderByField(gCols[i]).setAttribute('aria-grouped', 'true');\n }\n }\n getGHeaderCell(field) {\n if (this.element && this.element.querySelector('[ej-mappingname=\"' + field + '\"]')) {\n return this.element.querySelector('[ej-mappingname=\"' + field + '\"]').parentElement;\n }\n return null;\n }\n onGroupAggregates(editedData) {\n let aggregates = this.iterateGroupAggregates(editedData);\n let rowData = this.groupGenerator.generateRows(aggregates, {});\n let summaryRows = this.parent.getRowsObject().filter((row) => !row.isDataRow);\n let updateSummaryRows = rowData.filter((data) => !data.isDataRow);\n for (let i = 0; i < updateSummaryRows.length; i++) {\n let row = updateSummaryRows[i];\n let cells = row.cells.filter((cell) => cell.isDataCell);\n let args = { cells: cells, data: row.data, dataUid: summaryRows[i] ? summaryRows[i].uid : '' };\n this.parent.notify(refreshAggregateCell, args);\n }\n }\n iterateGroupAggregates(editedData) {\n let updatedData = editedData instanceof Array ? editedData : [];\n let rows = this.parent.getRowsObject();\n let initData = this.parent.getCurrentViewRecords();\n let deletedCols = [];\n let changeds = rows.map((row) => {\n if (row.edit === 'delete') {\n deletedCols.push(row.data);\n }\n return row.changes instanceof Object ? row.changes : row.data;\n });\n let field = this.parent.getPrimaryKeyFieldNames()[0];\n changeds = updatedData.length === 0 ? changeds : updatedData;\n let mergeData = initData.map((item) => {\n let pKeyVal = DataUtil.getObject(field, item);\n let value;\n let hasVal = changeds.some((cItem) => {\n value = cItem;\n return pKeyVal === DataUtil.getObject(field, cItem);\n });\n return hasVal ? value : item;\n });\n let eData = editedData;\n if (!(eData.type && eData.type === 'cancel') && deletedCols.length > 0) {\n for (let i = 0; i < deletedCols.length; i++) {\n let index = mergeData.indexOf(deletedCols[i]);\n mergeData.splice(index, 1);\n }\n }\n let aggregates = [];\n let aggregateRows = this.parent.aggregates;\n for (let j = 0; j < aggregateRows.length; j++) {\n let row = aggregateRows[j];\n for (let k = 0; k < row.columns.length; k++) {\n let aggr = {};\n let type = row.columns[k].type.toString();\n aggr = { type: type.toLowerCase(), field: row.columns[k].field };\n aggregates.push(aggr);\n }\n }\n let result;\n let aggrds;\n let groupedCols = this.parent.groupSettings.columns;\n for (let l = 0; l < groupedCols.length; l++) {\n aggrds = result ? result : mergeData;\n result = DataUtil.group(aggrds, groupedCols[l], aggregates, null, null);\n }\n return result;\n }\n updateExpand(args) {\n let uid = args.uid;\n let isExpand = args.isExpand;\n let rows = this.parent.getRowsObject();\n for (let i = 0; i < rows.length; i++) {\n let row = rows[i];\n if (row.uid === uid || isNullOrUndefined(uid)) {\n row.isExpand = isExpand;\n for (let j = i + 1; j < rows.length; j++) {\n let childRow = rows[j];\n let closestParent;\n if (childRow.parentUid !== row.uid) {\n closestParent = rows.filter((x) => x.uid === childRow.parentUid)[0];\n }\n if (childRow.parentUid === row.uid) {\n childRow.visible = row.isExpand;\n }\n else if (!isNullOrUndefined(closestParent) && childRow.parentUid === closestParent.uid) {\n if (closestParent.isExpand && closestParent.visible === true) {\n childRow.visible = true;\n }\n else if (closestParent.isExpand && closestParent.visible === false) {\n childRow.visible = false;\n }\n }\n if (isNullOrUndefined(uid)) {\n break;\n }\n }\n }\n }\n this.parent.notify(contentReady, { rows: rows, args: { isFrozen: false, rows: rows } });\n }\n}\n\n/**\n * The `DetailRow` module is used to handle detail template and hierarchy Grid operations.\n */\nclass DetailRow {\n /**\n * Constructor for the Grid detail template module\n * @hidden\n */\n constructor(parent, locator) {\n //Internal variables\n this.aria = new AriaService();\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.focus = locator.getService('focus');\n this.parent.on(click, this.clickHandler, this);\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(keyPressed, this.keyPressHandler, this);\n this.parent.on(expandChildGrid, this.expand, this);\n this.parent.on(columnVisibilityChanged, this.refreshColSpan, this);\n }\n clickHandler(e) {\n this.toogleExpandcollapse(closest(e.target, 'td'));\n }\n // tslint:disable-next-line:max-func-body-length\n toogleExpandcollapse(target) {\n let gObj = this.parent;\n let table = this.parent.getContentTable();\n let lastrowIdx = this.parent.getCurrentViewRecords().length - 1;\n let parent = 'parentDetails';\n let isServerRendered = 'isServerRendered';\n let childGrid;\n let isExpanded = target && target.classList.contains('e-detailrowcollapse');\n if (!(target && (target.classList.contains('e-detailrowcollapse') || target.classList.contains('e-detailrowexpand')))) {\n return;\n }\n if (isBlazor() && this.parent[isServerRendered]) {\n this.parent.notify('detailclick', target);\n return;\n }\n let tr = target.parentElement;\n let uid = tr.getAttribute('data-uid');\n let rowObj = gObj.getRowObjectFromUID(uid);\n let nextRow = this.parent.getContentTable().querySelector('tbody').children[tr.rowIndex + 1];\n if (target.classList.contains('e-detailrowcollapse')) {\n let data = rowObj.data;\n if (this.isDetailRow(nextRow)) {\n nextRow.style.display = '';\n gObj.notify(detailStateChange, { data: data,\n childGrid: gObj.childGrid, detailElement: target, isExpanded: isExpanded });\n }\n else if (gObj.getDetailTemplate() || gObj.childGrid) {\n let rowId = getUid('grid-row');\n let detailRow = this.parent.createElement('tr', { className: 'e-detailrow', attrs: { 'data-uid': rowId } });\n let detailCell = this.parent.createElement('td', { className: 'e-detailcell' });\n let colSpan = this.parent.getVisibleColumns().length;\n if (this.parent.allowRowDragAndDrop) {\n colSpan++;\n }\n detailCell.setAttribute('colspan', colSpan.toString());\n let row = new Row({\n isDataRow: true,\n isExpand: true,\n uid: rowId,\n isDetailRow: true,\n cells: [new Cell({ cellType: CellType.Indent }), new Cell({ isDataCell: true, visible: true })]\n });\n for (let i = 0, len = gObj.groupSettings.columns.length; i < len; i++) {\n detailRow.appendChild(this.parent.createElement('td', { className: 'e-indentcell' }));\n row.cells.unshift(new Cell({ cellType: CellType.Indent }));\n }\n detailRow.appendChild(this.parent.createElement('td', { className: 'e-detailindentcell' }));\n detailRow.appendChild(detailCell);\n tr.parentNode.insertBefore(detailRow, tr.nextSibling);\n if (gObj.detailTemplate) {\n let detailTemplateID = gObj.element.id + 'detailTemplate';\n appendChildren(detailCell, gObj.getDetailTemplate()(data, gObj, 'detailTemplate', detailTemplateID));\n if (isBlazor()) {\n updateBlazorTemplate(detailTemplateID, 'DetailTemplate', gObj, false);\n }\n }\n else {\n childGrid = new Grid(this.getGridModel(gObj, rowObj, gObj.printMode));\n if (childGrid.query) {\n childGrid.query = childGrid.query.clone();\n }\n childGrid[parent] = {\n parentID: gObj.element.id,\n parentPrimaryKeys: gObj.getPrimaryKeyFieldNames(),\n parentKeyField: gObj.childGrid.queryString,\n parentKeyFieldValue: data[gObj.childGrid.queryString],\n parentRowData: data\n };\n if (gObj.isPrinting) {\n childGrid.isPrinting = true;\n childGrid.on(contentReady, this.promiseResolve(childGrid), this);\n childGrid.on(onEmpty, this.promiseResolve(childGrid), this);\n }\n rowObj.childGrid = childGrid;\n let modules = childGrid.getInjectedModules();\n let injectedModues = gObj.getInjectedModules();\n if (!modules || modules.length !== injectedModues.length) {\n childGrid.setInjectedModules(injectedModues);\n }\n let gridElem = this.parent.createElement('div', {\n id: 'child' + parents(tr, 'e-grid').length +\n '_grid' + tr.rowIndex + getUid('')\n });\n detailCell.appendChild(gridElem);\n childGrid.appendTo(gridElem);\n }\n detailRow.appendChild(detailCell);\n if (tr.nextSibling) {\n tr.parentNode.insertBefore(detailRow, tr.nextSibling);\n }\n else {\n tr.parentNode.appendChild(detailRow);\n }\n gObj.getRows().splice(tr.rowIndex + 1, 0, detailRow);\n gObj.getRowsObject().splice(rowObj.index + 1, 0, row);\n gObj.trigger(detailDataBound, { detailElement: detailCell, data: data, childGrid: childGrid });\n gObj.notify(detailDataBound, { rows: gObj.getRowsObject() });\n }\n classList(target, ['e-detailrowexpand'], ['e-detailrowcollapse']);\n classList(target.firstElementChild, ['e-dtdiagonaldown', 'e-icon-gdownarrow'], ['e-dtdiagonalright', 'e-icon-grightarrow']);\n rowObj.isExpand = true;\n if (target.classList.contains('e-lastrowcell') && this.parent.getContent().clientHeight > table.scrollHeight) {\n removeClass(target.parentElement.querySelectorAll('td'), 'e-lastrowcell');\n let detailrowIdx = table.querySelector('tbody').querySelectorAll('.e-detailrow').length - 1;\n addClass(table.querySelector('tbody').querySelectorAll('.e-detailrow')[detailrowIdx].childNodes, ['e-lastrowcell']);\n this.lastrowcell = true;\n }\n this.aria.setExpand(target, true);\n }\n else {\n if (this.isDetailRow(nextRow)) {\n nextRow.style.display = 'none';\n gObj.notify(detailStateChange, { data: rowObj.data,\n childGrid: gObj.childGrid, detailElement: target, isExpanded: isExpanded });\n }\n classList(target, ['e-detailrowcollapse'], ['e-detailrowexpand']);\n classList(target.firstElementChild, ['e-dtdiagonalright', 'e-icon-grightarrow'], ['e-dtdiagonaldown', 'e-icon-gdownarrow']);\n if (parseInt(tr.getAttribute('aria-rowindex'), 10) === lastrowIdx && this.lastrowcell) {\n addClass(target.parentElement.querySelectorAll('td'), 'e-lastrowcell');\n this.lastrowcell = false;\n }\n rowObj.isExpand = false;\n this.aria.setExpand(target, false);\n }\n }\n /**\n * @hidden\n * @param gObj\n * @param rowObj\n */\n getGridModel(gObj, rowObj, printMode) {\n let gridModel;\n if (gObj.isPrinting && rowObj.isExpand && gObj.expandedRows &&\n gObj.expandedRows[rowObj.index] && gObj.expandedRows[rowObj.index].gridModel) {\n gObj.expandedRows[rowObj.index].gridModel.hierarchyPrintMode = gObj.childGrid.hierarchyPrintMode;\n gridModel = gObj.expandedRows[rowObj.index].gridModel;\n }\n else {\n if (gObj.isPrinting && gObj.childGrid.allowPaging) {\n gObj.childGrid.allowPaging = printMode === 'CurrentPage';\n gridModel = gObj.childGrid;\n }\n else {\n gridModel = gObj.childGrid;\n }\n }\n return gridModel;\n }\n promiseResolve(grid) {\n return () => {\n grid.off(contentReady, this.promiseResolve);\n grid.off(onEmpty, this.promiseResolve);\n grid.notify(hierarchyPrint, {});\n };\n }\n isDetailRow(row) {\n return row && row.classList.contains('e-detailrow');\n }\n destroy() {\n let gridElement = this.parent.element;\n if (this.parent.isDestroyed || !gridElement || (!gridElement.querySelector('.e-gridheader') &&\n !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n this.parent.off(click, this.clickHandler);\n this.parent.off(destroy, this.destroy);\n this.parent.off(keyPressed, this.keyPressHandler);\n this.parent.off(expandChildGrid, this.expand);\n this.parent.off(columnVisibilityChanged, this.refreshColSpan);\n }\n getTDfromIndex(index, className) {\n let tr = this.parent.getDataRows()[index];\n if (tr && tr.querySelector(className)) {\n return tr.querySelector(className);\n }\n return null;\n }\n /**\n * Expands a detail row with the given target.\n * @param {Element} target - Defines the collapsed element to expand.\n * @return {void}\n */\n expand(target) {\n if (!isNaN(target)) {\n target = this.getTDfromIndex(target, '.e-detailrowcollapse');\n }\n if (target && target.classList.contains('e-detailrowcollapse')) {\n this.toogleExpandcollapse(target);\n }\n }\n /**\n * Collapses a detail row with the given target.\n * @param {Element} target - Defines the expanded element to collapse.\n * @return {void}\n */\n collapse(target) {\n if (!isNaN(target)) {\n target = this.getTDfromIndex(target, '.e-detailrowexpand');\n }\n if (target && target.classList.contains('e-detailrowexpand')) {\n this.toogleExpandcollapse(target);\n }\n }\n /**\n * Expands all the detail rows of the Grid.\n * @return {void}\n */\n expandAll() {\n this.expandCollapse(true);\n this.parent.trigger(actionComplete, { requestType: 'expandAllComplete', type: actionComplete, moduleObj: this });\n }\n /**\n * Collapses all the detail rows of the Grid.\n * @return {void}\n */\n collapseAll() {\n this.expandCollapse(false);\n this.parent.trigger(actionComplete, { requestType: 'collapseAllComplete', type: actionComplete, moduleObj: this });\n }\n expandCollapse(isExpand) {\n let td;\n let rows = this.parent.getDataRows();\n for (let i = 0, len = rows.length; i < len; i++) {\n td = rows[i].querySelector('.e-detailrowcollapse, .e-detailrowexpand');\n isExpand ? this.expand(td) : this.collapse(td);\n }\n }\n keyPressHandler(e) {\n let gObj = this.parent;\n switch (e.action) {\n case 'ctrlDownArrow':\n this.expandAll();\n break;\n case 'ctrlUpArrow':\n this.collapseAll();\n break;\n case 'altUpArrow':\n case 'altDownArrow':\n let selected = gObj.allowSelection ? gObj.getSelectedRowIndexes() : [];\n if (selected.length) {\n let dataRow = gObj.getDataRows()[selected[selected.length - 1]];\n let td = dataRow.querySelector('.e-detailrowcollapse, .e-detailrowexpand');\n e.action === 'altDownArrow' ? this.expand(td) : this.collapse(td);\n }\n break;\n case 'enter':\n if (this.parent.isEdit) {\n return;\n }\n let element = this.focus.getFocusedElement();\n if (!e.target.classList.contains('e-detailrowcollapse') &&\n !e.target.classList.contains('e-detailrowexpand')) {\n break;\n }\n this.toogleExpandcollapse(element);\n break;\n }\n }\n refreshColSpan() {\n let detailrows = this.parent.contentModule.getTable().querySelectorAll('tr.e-detailrow');\n let colSpan = this.parent.getVisibleColumns().length;\n for (let i = 0; i < detailrows.length; i++) {\n detailrows[i].querySelector('.e-detailcell').setAttribute('colspan', colSpan + '');\n }\n }\n /**\n * For internal use only - Get the module name.\n * @private\n */\n getModuleName() {\n return 'detailRow';\n }\n}\n\n/**\n * The `Toolbar` module is used to handle ToolBar actions.\n * @hidden\n */\nclass Toolbar$1 {\n constructor(parent, serviceLocator) {\n this.predefinedItems = {};\n this.items = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print', 'Search',\n 'ColumnChooser', 'PdfExport', 'ExcelExport', 'CsvExport', 'WordExport'];\n this.parent = parent;\n this.gridID = parent.element.id;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n render() {\n this.l10n = this.serviceLocator.getService('localization');\n let preItems = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print',\n 'PdfExport', 'ExcelExport', 'WordExport', 'CsvExport'];\n for (let item of preItems) {\n let itemStr = item.toLowerCase();\n let localeName = itemStr[0].toUpperCase() + itemStr.slice(1);\n this.predefinedItems[item] = {\n id: this.gridID + '_' + itemStr, prefixIcon: 'e-' + itemStr,\n text: this.l10n.getConstant(localeName), tooltipText: this.l10n.getConstant(localeName)\n };\n }\n this.predefinedItems.Search = {\n id: this.gridID + '_search',\n tooltipText: this.l10n.getConstant('Search'), align: 'Right', cssClass: 'e-search-wrapper',\n type: 'Input'\n };\n this.predefinedItems.ColumnChooser = {\n id: this.gridID + '_' + 'columnchooser', cssClass: 'e-cc e-ccdiv e-cc-toolbar', suffixIcon: 'e-' + 'columnchooser-btn',\n text: this.l10n.getConstant('Columnchooser'), tooltipText: this.l10n.getConstant('Columnchooser'), align: 'Right',\n };\n this.createToolbar();\n }\n /**\n * Gets the toolbar of the Grid.\n * @return {Element}\n * @hidden\n */\n getToolbar() {\n return this.toolbar.element;\n }\n /**\n * Destroys the ToolBar.\n * @method destroy\n * @return {void}\n */\n destroy() {\n if (this.toolbar && !this.toolbar.isDestroyed) {\n if (!this.toolbar.element) {\n this.parent.destroyTemplate(['toolbarTemplate']);\n }\n else {\n this.toolbar.destroy();\n }\n this.unWireEvent();\n this.removeEventListener();\n remove(this.element);\n }\n }\n bindSearchEvents() {\n this.searchElement = this.element.querySelector('#' + this.gridID + '_searchbar');\n this.wireEvent();\n this.refreshToolbarItems();\n if (this.parent.searchSettings) {\n this.updateSearchBox();\n }\n }\n toolbarCreated() {\n if (this.element.querySelector('.e-search-wrapper')) {\n this.element.querySelector('.e-search-wrapper').innerHTML = '
    \\\n \\\n \\\n
    ';\n }\n this.bindSearchEvents();\n }\n createToolbar() {\n let items = this.getItems();\n this.toolbar = new Toolbar({\n items: items,\n clicked: this.toolbarClickHandler.bind(this),\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n created: this.toolbarCreated.bind(this)\n });\n let isStringTemplate = 'isStringTemplate';\n this.toolbar[isStringTemplate] = true;\n let viewStr = 'viewContainerRef';\n let registerTemp = 'registeredTemplate';\n if (this.parent[viewStr]) {\n this.toolbar[registerTemp] = {};\n this.toolbar[viewStr] = this.parent[viewStr];\n }\n this.element = this.parent.createElement('div', { id: this.gridID + '_toolbarItems' });\n if (this.parent.toolbarTemplate) {\n if (!isBlazor() && typeof (this.parent.toolbarTemplate) === 'string') {\n this.toolbar.appendTo(this.parent.toolbarTemplate);\n this.element = this.toolbar.element;\n }\n else {\n if (isBlazor()) {\n let tempID = this.parent.element.id + 'toolbarTemplate';\n let item = appendChildren(this.element, templateCompiler(this.parent.toolbarTemplate)({}, this.parent, 'toolbarTemplate', tempID));\n let items = this.getItem(item);\n this.toolbar.items.push(items);\n this.toolbar.appendTo(this.element);\n updateBlazorTemplate(this.parent.element.id + 'toolbarTemplate', 'ToolbarTemplate', this.parent);\n }\n else {\n appendChildren(this.element, templateCompiler(this.parent.toolbarTemplate)({}, this.parent, 'toolbarTemplate'));\n }\n }\n }\n else {\n this.toolbar.appendTo(this.element);\n }\n this.parent.element.insertBefore(this.element, this.parent.getHeaderContent());\n }\n refreshToolbarItems(args) {\n let gObj = this.parent;\n let enableItems = [];\n let disableItems = [];\n let edit = gObj.editSettings;\n let hasData = gObj.currentViewData && gObj.currentViewData.length;\n edit.allowAdding ? enableItems.push(this.gridID + '_add') : disableItems.push(this.gridID + '_add');\n edit.allowEditing && hasData ? enableItems.push(this.gridID + '_edit') : disableItems.push(this.gridID + '_edit');\n edit.allowDeleting && hasData ? enableItems.push(this.gridID + '_delete') : disableItems.push(this.gridID + '_delete');\n if (gObj.editSettings.mode === 'Batch') {\n if (gObj.element.querySelectorAll('.e-updatedtd').length && (edit.allowAdding || edit.allowEditing)) {\n enableItems.push(this.gridID + '_update');\n enableItems.push(this.gridID + '_cancel');\n }\n else {\n disableItems.push(this.gridID + '_update');\n disableItems.push(this.gridID + '_cancel');\n }\n }\n else {\n if (gObj.isEdit && (edit.allowAdding || edit.allowEditing)) {\n enableItems = [this.gridID + '_update', this.gridID + '_cancel'];\n disableItems = [this.gridID + '_add', this.gridID + '_edit', this.gridID + '_delete'];\n }\n else {\n disableItems.push(this.gridID + '_update');\n disableItems.push(this.gridID + '_cancel');\n }\n }\n this.enableItems(enableItems, true);\n this.enableItems(disableItems, false);\n }\n getItems() {\n let items = [];\n let toolbarItems = this.parent.toolbar || [];\n if (typeof (this.parent.toolbar) === 'string') {\n return [];\n }\n for (let item of toolbarItems) {\n switch (typeof item) {\n case 'number':\n items.push(this.getItemObject(this.items[item]));\n break;\n case 'string':\n items.push(this.getItemObject(item));\n break;\n default:\n items.push(this.getItem(item));\n }\n }\n return items;\n }\n getItem(itemObject) {\n let item = this.predefinedItems[itemObject.text];\n return item ? extend(item, item, itemObject) : itemObject;\n }\n getItemObject(itemName) {\n return this.predefinedItems[itemName] || { text: itemName, id: this.gridID + '_' + itemName };\n }\n /**\n * Enables or disables ToolBar items.\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @return {void}\n * @hidden\n */\n enableItems(items, isEnable) {\n for (let item of items) {\n let element = this.element.querySelector('#' + item);\n if (element) {\n this.toolbar.enableItems(element.parentElement, isEnable);\n }\n }\n }\n toolbarClickHandler(args) {\n let gObj = this.parent;\n let gID = this.gridID;\n extend(args, { cancel: false });\n let newArgs = !isBlazor() || this.parent.isJsComponent ? args : { item: args.item, cancel: args.cancel, name: args.name };\n let originalEvent = args.originalEvent;\n gObj.trigger(toolbarClick, newArgs, (toolbarargs) => {\n toolbarargs.originalEvent = toolbarargs.originalEvent ? toolbarargs.originalEvent : originalEvent;\n if (!toolbarargs.cancel) {\n switch (!isNullOrUndefined(toolbarargs.item) && toolbarargs.item.id) {\n case gID + '_print':\n gObj.print();\n break;\n case gID + '_edit':\n gObj.startEdit();\n break;\n case gID + '_update':\n gObj.endEdit();\n break;\n case gID + '_cancel':\n gObj.closeEdit();\n break;\n case gID + '_add':\n gObj.addRecord();\n break;\n case gID + '_delete':\n gObj.deleteRecord();\n break;\n case gID + '_search':\n if (toolbarargs.originalEvent.target.id === gID + '_searchbutton') {\n this.search();\n }\n break;\n case gID + '_columnchooser':\n let tarElement = this.parent.element.querySelector('.e-ccdiv');\n let y = tarElement.getBoundingClientRect().top;\n let x = tarElement.getBoundingClientRect().left;\n let targetEle = toolbarargs.originalEvent.target;\n y = tarElement.getBoundingClientRect().top + tarElement.offsetTop;\n gObj.createColumnchooser(x, y, targetEle);\n break;\n case 'copy':\n if (isBlazor()) {\n gObj.copy();\n }\n break;\n case 'copyheader':\n case 'copyHeader':\n if (isBlazor()) {\n gObj.copy(true);\n }\n break;\n }\n }\n });\n }\n modelChanged(e) {\n if (e.module === 'edit') {\n this.refreshToolbarItems();\n }\n }\n onPropertyChanged(e) {\n if (e.module !== this.getModuleName() || !this.parent.toolbar) {\n return;\n }\n if (this.element) {\n remove(this.element);\n }\n this.render();\n }\n keyUpHandler(e) {\n if (e.keyCode === 13) {\n this.search();\n }\n }\n search() {\n this.parent.search(this.searchElement.value);\n }\n updateSearchBox() {\n if (this.searchElement) {\n this.searchElement.value = this.parent.searchSettings.key;\n }\n }\n wireEvent() {\n if (this.searchElement) {\n this.searchBoxObj = new SearchBox(this.searchElement);\n EventHandler.add(this.searchElement, 'keyup', this.keyUpHandler, this);\n this.searchBoxObj.wireEvent();\n }\n }\n unWireEvent() {\n if (this.searchElement) {\n EventHandler.remove(this.searchElement, 'keyup', this.keyUpHandler);\n this.searchBoxObj.unWireEvent();\n }\n }\n addEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initialEnd, this.render, this);\n this.parent.on(uiUpdate, this.onPropertyChanged, this);\n this.parent.on(inBoundModelChanged, this.updateSearchBox.bind(this));\n this.parent.on(modelChanged, this.refreshToolbarItems, this);\n this.parent.on(toolbarRefresh, this.refreshToolbarItems, this);\n this.parent.on(inBoundModelChanged, this.modelChanged, this);\n this.parent.on(dataBound, this.refreshToolbarItems, this);\n }\n removeEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(initialEnd, this.render);\n this.parent.off(uiUpdate, this.onPropertyChanged);\n this.parent.off(inBoundModelChanged, this.updateSearchBox);\n this.parent.off(modelChanged, this.refreshToolbarItems);\n this.parent.off(toolbarRefresh, this.refreshToolbarItems);\n this.parent.off(inBoundModelChanged, this.modelChanged);\n this.parent.off(dataBound, this.refreshToolbarItems);\n }\n /**\n * For internal use only - Get the module name.\n */\n getModuleName() {\n return 'toolbar';\n }\n}\n\n/**\n * Footer module is used to render grid content\n * @hidden\n */\nclass FooterRenderer extends ContentRender {\n constructor(gridModule, serviceLocator) {\n super(gridModule, serviceLocator);\n this.aggregates = {};\n this.parent = gridModule;\n this.locator = serviceLocator;\n this.modelGenerator = new SummaryModelGenerator(this.parent);\n this.addEventListener();\n }\n /**\n * The function is used to render grid footer div\n */\n renderPanel() {\n let div = this.parent.createElement('div', { className: 'e-gridfooter' });\n let innerDiv = this.parent.createElement('div', { className: 'e-summarycontent' });\n let movableContent = innerDiv;\n if (this.parent.getFrozenColumns()) {\n let fDiv = this.parent.createElement('div', { className: 'e-frozenfootercontent' });\n let mDiv = this.parent.createElement('div', { className: 'e-movablefootercontent' });\n innerDiv.appendChild(fDiv);\n innerDiv.appendChild(mDiv);\n this.frozenContent = fDiv;\n this.movableContent = mDiv;\n movableContent = mDiv;\n }\n if (Browser.isDevice) {\n movableContent.style.overflowX = 'scroll';\n }\n div.appendChild(innerDiv);\n this.setPanel(div);\n if (this.parent.getPager() != null) {\n this.parent.element.insertBefore(div, this.parent.getPager());\n }\n else {\n this.parent.element.appendChild(div);\n }\n }\n /**\n * The function is used to render grid footer table\n */\n renderTable() {\n let contentDiv = this.getPanel();\n let innerDiv = this.createContentTable('_footer_table');\n let table = innerDiv.querySelector('.e-table');\n let tFoot = this.parent.createElement('tfoot');\n table.appendChild(tFoot);\n if (this.parent.getFrozenColumns()) {\n let freezeTable = table.cloneNode(true);\n this.frozenContent.appendChild(freezeTable);\n this.freezeTable = freezeTable;\n this.movableContent.appendChild(table);\n remove(table.querySelector('colgroup'));\n let colGroup = ((this.parent.getHeaderContent().querySelector('.e-movableheader').querySelector('colgroup')).cloneNode(true));\n table.insertBefore(colGroup, table.querySelector('tbody'));\n this.setColGroup(colGroup);\n }\n this.setTable(table);\n }\n renderSummaryContent(e, table, cStart, cEnd) {\n let input = this.parent.dataSource instanceof Array ? this.parent.dataSource : this.parent.currentViewData;\n let summaries = this.modelGenerator.getData();\n let dummies = isNullOrUndefined(cStart) ? this.modelGenerator.getColumns() :\n this.modelGenerator.getColumns(cStart, cEnd);\n let rows = isNullOrUndefined(cStart) ? this.modelGenerator.generateRows(input, e || this.aggregates) :\n this.modelGenerator.generateRows(input, e || this.aggregates, cStart, cEnd);\n let fragment = document.createDocumentFragment();\n let rowrenderer = new RowRenderer(this.locator, null, this.parent);\n rowrenderer.element = this.parent.createElement('TR', { className: 'e-summaryrow' });\n for (let srow = 0, len = summaries.length; srow < len; srow++) {\n let row = rows[srow];\n if (!row) {\n continue;\n }\n let tr = rowrenderer.render(row, dummies);\n fragment.appendChild(tr);\n }\n table.tFoot.appendChild(fragment);\n this.aggregates = !isNullOrUndefined(e) ? e : this.aggregates;\n }\n refresh(e) {\n if (this.parent.getFrozenColumns()) {\n remove(this.getPanel());\n this.renderPanel();\n this.renderTable();\n this.freezeTable.tFoot.innerHTML = '';\n this.renderSummaryContent(e, this.freezeTable, 0, this.parent.getFrozenColumns());\n }\n this.getTable().tFoot.innerHTML = '';\n this.renderSummaryContent(e, this.getTable(), this.parent.getFrozenColumns());\n // check freeze content have no row case\n if (this.parent.getFrozenColumns()) {\n let frozenCnt = [].slice.call(this.parent.element.querySelector('.e-frozenfootercontent')\n .querySelectorAll('.e-summaryrow'));\n let movableCnt = [].slice.call(this.parent.element.querySelector('.e-movablefootercontent')\n .querySelectorAll('.e-summaryrow'));\n for (let i = 0; i < frozenCnt.length; i++) {\n let frozenHeight$$1 = frozenCnt[i].getBoundingClientRect().height;\n let movableHeight = movableCnt[i].getBoundingClientRect().height;\n if (frozenHeight$$1 < movableHeight) {\n frozenCnt[i].classList.remove('e-hide');\n frozenCnt[i].style.height = movableHeight + 'px';\n }\n else if (frozenHeight$$1 > movableHeight) {\n movableCnt[i].classList.remove('e-hide');\n movableCnt[i].style.height = frozenHeight$$1 + 'px';\n }\n }\n let frozenDiv = this.frozenContent;\n if (!frozenDiv.offsetHeight) {\n frozenDiv.style.height = this.getTable().offsetHeight + 'px';\n }\n if (this.parent.allowResizing) {\n this.updateFooterTableWidth(this.getTable());\n }\n }\n this.onScroll();\n }\n refreshCol() {\n // frozen table \n let mheaderCol;\n let fheaderCol = mheaderCol = this.parent.element.querySelector('.e-gridheader').querySelector('colgroup').cloneNode(true);\n if (this.parent.getFrozenColumns()) {\n let isXaxis = this.parent.enableColumnVirtualization && this.parent.contentModule.isXaxis();\n if (isXaxis) {\n mheaderCol = this.parent.getMovableVirtualHeader().querySelector('colgroup').cloneNode(true);\n }\n else {\n mheaderCol = renderMovable(fheaderCol, this.parent.getFrozenColumns());\n this.freezeTable.replaceChild(fheaderCol, this.freezeTable.querySelector('colGroup'));\n }\n }\n this.getTable().replaceChild(mheaderCol, this.getColGroup());\n this.setColGroup(mheaderCol);\n }\n onWidthChange(args) {\n this.getColFromIndex(args.index).style.width = formatUnit(args.width);\n if (this.parent.allowResizing && args.module === 'resize') {\n this.updateFooterTableWidth(this.getTable());\n }\n }\n onScroll(e = {\n left: this.parent.getFrozenColumns() ? this.parent.getContent().querySelector('.e-movablecontent').scrollLeft :\n this.parent.getContent().firstChild.scrollLeft\n }) {\n this.getTable().parentElement.scrollLeft = e.left;\n }\n getColFromIndex(index) {\n let fCol = this.parent.getFrozenColumns();\n if (fCol && fCol > index) {\n return this.freezeTable.querySelector('colGroup').children[index];\n }\n return this.getColGroup().children[index - fCol];\n }\n columnVisibilityChanged() {\n this.refresh();\n }\n addEventListener() {\n this.parent.on(colGroupRefresh, this.refreshCol, this);\n this.parent.on(columnWidthChanged, this.onWidthChange, this);\n this.parent.on(scroll, this.onScroll, this);\n this.parent.on(columnVisibilityChanged, this.columnVisibilityChanged, this);\n this.parent.on(refreshFooterRenderer, this.refreshFooterRenderer, this);\n }\n removeEventListener() {\n this.parent.off(colGroupRefresh, this.refreshCol);\n this.parent.off(columnWidthChanged, this.onWidthChange);\n this.parent.off(scroll, this.onScroll);\n this.parent.off(columnVisibilityChanged, this.columnVisibilityChanged);\n this.parent.off(refreshFooterRenderer, this.refreshFooterRenderer);\n }\n updateFooterTableWidth(tFoot) {\n let tHead = this.parent.getHeaderTable();\n if (tHead && tFoot) {\n tFoot.style.width = tHead.style.width;\n }\n }\n refreshFooterRenderer(editedData) {\n let aggregates = this.onAggregates(editedData);\n this.refresh(aggregates);\n }\n getIndexByKey(data, ds) {\n let key = this.parent.getPrimaryKeyFieldNames()[0];\n for (let i = 0; i < ds.length; i++) {\n if (ds[i][key] === data[key]) {\n return i;\n }\n }\n return -1;\n }\n onAggregates(editedData) {\n editedData = editedData instanceof Array ? editedData : [];\n let field = this.parent.getPrimaryKeyFieldNames()[0];\n let dataSource = [];\n let isModified = false;\n let batchChanges = {};\n let gridData = 'dataSource';\n let changedRecords = 'changedRecords';\n let addedRecords = 'addedRecords';\n let deletedRecords = 'deletedRecords';\n let currentViewData = this.parent.dataSource instanceof Array ?\n this.parent.dataSource : this.parent.dataSource[gridData].json.length\n ? this.parent.dataSource[gridData].json : this.parent.getCurrentViewRecords();\n if (this.parent.editModule) {\n batchChanges = this.parent.editModule.getBatchChanges();\n }\n if (Object.keys(batchChanges).length) {\n for (let i = 0; i < currentViewData.length; i++) {\n isModified = false;\n if (batchChanges[changedRecords].length && this.getIndexByKey(currentViewData[i], batchChanges[changedRecords]) > -1) {\n isModified = true;\n dataSource.push(batchChanges[changedRecords][this.getIndexByKey(currentViewData[i], batchChanges[changedRecords])]);\n }\n if (batchChanges[deletedRecords].length && this.getIndexByKey(currentViewData[i], batchChanges[deletedRecords]) > -1) {\n isModified = true;\n }\n else if (!isModified) {\n dataSource.push(currentViewData[i]);\n }\n }\n if (batchChanges[addedRecords].length) {\n for (let i = 0; i < batchChanges[addedRecords].length; i++) {\n dataSource.push(batchChanges[addedRecords][i]);\n }\n }\n }\n else {\n if (editedData.length) {\n let data = iterateExtend(currentViewData);\n dataSource = data.map((item) => {\n let idVal = DataUtil.getObject(field, item);\n let value;\n let hasVal = editedData.some((cItem) => {\n value = cItem;\n return idVal === DataUtil.getObject(field, cItem);\n });\n return hasVal ? value : item;\n });\n }\n else {\n dataSource = currentViewData;\n }\n }\n let eData = editedData;\n if ((eData.type && eData.type === 'cancel')) {\n dataSource = currentViewData;\n }\n let aggregate = {};\n let agrVal;\n let aggregateRows = this.parent.aggregates;\n for (let i = 0; i < aggregateRows.length; i++) {\n for (let j = 0; j < aggregateRows[i].columns.length; j++) {\n let data = [];\n let type = aggregateRows[i].columns[j].type.toString();\n data = dataSource;\n agrVal = calculateAggregate(type, data, aggregateRows[i].columns[j], this.parent);\n aggregate[aggregateRows[i].columns[j].field + ' - ' + type.toLowerCase()] = agrVal;\n }\n }\n let result = {\n result: dataSource,\n count: dataSource.length,\n aggregates: aggregate\n };\n return result;\n }\n}\n\n/**\n * SummaryCellRenderer class which responsible for building summary cell content.\n * @hidden\n */\nclass SummaryCellRenderer extends CellRenderer {\n constructor() {\n super(...arguments);\n this.element = this.parent\n .createElement('TD', { className: 'e-summarycell', attrs: { role: 'gridcell', tabindex: '-1' } });\n }\n getValue(field, data, column) {\n let key;\n key = !isNullOrUndefined(column.type) ?\n column.field + ' - ' + (typeof column.type === 'string' ? column.type.toLowerCase() : '') : column.columnName;\n return data[column.columnName] ? data[column.columnName][key] : '';\n }\n evaluate(node, cell, data, attributes$$1) {\n let column = cell.column;\n this.parent.on(refreshAggregateCell, this.refreshWithAggregate(node, cell), this);\n if (!(column.footerTemplate || column.groupFooterTemplate || column.groupCaptionTemplate)) {\n return true;\n }\n let tempObj = column.getTemplate(cell.cellType);\n let tempID = '';\n let gColumn = this.parent.getColumnByField(data[column.columnName].field);\n if (!isNullOrUndefined(gColumn)) {\n data[column.columnName].headerText = gColumn.headerText;\n if (gColumn.isForeignColumn()) {\n let fData = gColumn.columnData.filter((e) => {\n return e[data[column.columnName].field] === data[column.columnName].key;\n })[0];\n data[column.columnName].foreignKey = fData[gColumn.foreignKeyValue];\n }\n }\n if (isBlazor()) {\n let guid = 'guid';\n tempID = this.parent.element.id + column[guid] + tempObj.property;\n }\n appendChildren(node, tempObj.fn(data[column.columnName], this.parent, tempObj.property, tempID));\n return false;\n }\n refreshWithAggregate(node, cell) {\n let cellNode = cell;\n return (args) => {\n let cell = cellNode;\n let field = cell.column.columnName ? cell.column.columnName : null;\n let curCell = (!isNullOrUndefined(field) ? args.cells.filter((cell) => cell.column.columnName === field)[0] : null);\n if (node.parentElement && node.parentElement.getAttribute('data-uid') === args.dataUid && field &&\n field === curCell.column.columnName) {\n this.refreshTD(node, curCell, args.data);\n }\n };\n }\n}\n\n/**\n * Summary Action controller.\n */\nclass Aggregate {\n constructor(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.addEventListener();\n }\n getModuleName() {\n return 'aggregate';\n }\n initiateRender() {\n let cellFac = this.locator.getService('cellRendererFactory');\n let instance = new SummaryCellRenderer(this.parent, this.locator);\n let type = [CellType.Summary, CellType.CaptionSummary, CellType.GroupSummary];\n for (let i = 0; i < type.length; i++) {\n cellFac.addCellRenderer(type[i], instance);\n }\n this.footerRenderer = new FooterRenderer(this.parent, this.locator);\n this.footerRenderer.renderPanel();\n this.footerRenderer.renderTable();\n let footerContent = this.footerRenderer.getPanel();\n if (this.parent.element.scrollHeight > this.parent.element.querySelector('.e-content').scrollHeight && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n this.locator.register('footerRenderer', this.footerRenderer);\n let fn = () => {\n this.prepareSummaryInfo();\n this.parent.off(dataReady, fn);\n };\n this.parent.on(dataReady, fn, this);\n this.parent.on(dataReady, this.footerRenderer.refresh, this.footerRenderer);\n }\n /**\n * @hidden\n */\n prepareSummaryInfo() {\n summaryIterator(this.parent.aggregates, (column) => {\n let dataColumn = this.parent.getColumnByField(column.field) || {};\n let type = dataColumn.type;\n let cFormat = 'customFormat';\n if (!isNullOrUndefined(column[cFormat])) {\n column.setPropertiesSilent({ format: column[cFormat] });\n }\n if (typeof (column.format) === 'object') {\n let valueFormatter = new ValueFormatter();\n column.setFormatter(valueFormatter.getFormatFunction(extend({}, column.format)));\n }\n else if (typeof (column.format) === 'string') {\n let fmtr = this.locator.getService('valueFormatter');\n column.setFormatter(fmtr.getFormatFunction({ format: column.format }));\n }\n column.setPropertiesSilent({ columnName: column.columnName || column.field });\n });\n if (isBlazor() && this.parent.isServerRendered) {\n let bulkChanges = 'bulkChanges';\n let aggregates = 'aggregates';\n let prop = Object.keys(this.parent[bulkChanges]);\n for (let i = 0; i < prop.length; i++) {\n if (prop[i].startsWith(aggregates)) {\n delete this.parent[bulkChanges][prop[i]];\n }\n }\n }\n }\n onPropertyChanged(e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (isNullOrUndefined(this.footerRenderer)) {\n this.initiateRender();\n }\n this.prepareSummaryInfo();\n this.footerRenderer.refresh();\n let cModel = new CaptionSummaryModelGenerator(this.parent);\n let gModel = new GroupSummaryModelGenerator(this.parent);\n if (gModel.getData().length !== 0 || !cModel.isEmpty()) {\n this.parent.notify(modelChanged, {});\n }\n }\n addEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initialEnd, this.initiateRender, this);\n this.parent.on(uiUpdate, this.onPropertyChanged, this);\n this.parent.on(refreshAggregates, this.refresh, this);\n }\n removeEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.footerRenderer.removeEventListener();\n this.parent.off(initialEnd, this.initiateRender);\n this.parent.off(dataReady, this.footerRenderer.refresh);\n this.parent.off(uiUpdate, this.onPropertyChanged);\n this.parent.off(refreshAggregates, this.refresh);\n }\n destroy() {\n this.removeEventListener();\n remove(this.parent.element.querySelector('.e-gridfooter'));\n }\n refresh(data) {\n let editedData = data instanceof Array ? data : [data];\n this.parent.notify(refreshFooterRenderer, editedData);\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(groupAggregates, editedData);\n }\n }\n}\n/**\n * @private\n */\nfunction summaryIterator(aggregates, callback) {\n for (let i = 0; i < aggregates.length; i++) {\n for (let j = 0; j < aggregates[i].columns.length; j++) {\n callback(aggregates[i].columns[j], aggregates[i]);\n }\n }\n}\n\n/**\n * InterSectionObserver - class watch whether it enters the viewport.\n * @hidden\n */\nclass InterSectionObserver {\n constructor(element, options) {\n this.fromWheel = false;\n this.touchMove = false;\n this.options = {};\n this.sentinelInfo = {\n 'up': {\n check: (rect, info) => {\n let top = rect.top - this.containerRect.top;\n info.entered = top >= 0;\n return top + (this.options.pageHeight / 2) >= 0;\n },\n axis: 'Y'\n },\n 'down': {\n check: (rect, info) => {\n let cHeight = this.options.container.clientHeight;\n let top = rect.bottom;\n info.entered = rect.bottom <= this.containerRect.bottom;\n return top - (this.options.pageHeight / 2) <= this.options.pageHeight / 2;\n }, axis: 'Y'\n },\n 'right': {\n check: (rect, info) => {\n let right = rect.right;\n info.entered = right < this.containerRect.right;\n return right - this.containerRect.width <= this.containerRect.right;\n }, axis: 'X'\n },\n 'left': {\n check: (rect, info) => {\n let left = rect.left;\n info.entered = left > 0;\n return left + this.containerRect.width >= this.containerRect.left;\n }, axis: 'X'\n }\n };\n this.element = element;\n this.options = options;\n }\n observe(callback, onEnterCallback) {\n this.containerRect = this.options.container.getBoundingClientRect();\n EventHandler.add(this.options.container, 'wheel', () => this.fromWheel = true, this);\n EventHandler.add(this.options.container, 'scroll', this.virtualScrollHandler(callback, onEnterCallback), this);\n }\n check(direction) {\n let info = this.sentinelInfo[direction];\n return info.check(this.element.getBoundingClientRect(), info);\n }\n virtualScrollHandler(callback, onEnterCallback) {\n let delay = Browser.info.name === 'chrome' ? 200 : 100;\n let prevTop = 0;\n let prevLeft = 0;\n let debounced100 = debounce(callback, delay);\n let debounced50 = debounce(callback, 50);\n return (e) => {\n let top = e.target.scrollTop;\n let left = e.target.scrollLeft;\n let direction = prevTop < top ? 'down' : 'up';\n direction = prevLeft === left ? direction : prevLeft < left ? 'right' : 'left';\n prevTop = top;\n prevLeft = left;\n let current = this.sentinelInfo[direction];\n if (this.options.axes.indexOf(current.axis) === -1) {\n return;\n }\n let check = this.check(direction);\n if (current.entered) {\n onEnterCallback(this.element, current, direction, { top: top, left: left }, this.fromWheel, check);\n }\n if (check) {\n let fn = debounced100;\n //this.fromWheel ? this.options.debounceEvent ? debounced100 : callback : debounced100;\n if (current.axis === 'X') {\n fn = debounced50;\n }\n fn({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n }\n this.fromWheel = false;\n };\n }\n setPageHeight(value) {\n this.options.pageHeight = value;\n }\n}\n\n/**\n * Content module is used to render grid content\n */\nclass VirtualRowModelGenerator {\n constructor(parent) {\n this.cOffsets = {};\n this.cache = {};\n this.rowCache = {};\n this.data = {};\n this.groups = {};\n this.parent = parent;\n this.model = this.parent.pageSettings;\n this.rowModelGenerator = this.parent.allowGrouping ? new GroupModelGenerator(this.parent) : new RowModelGenerator(this.parent);\n }\n generateRows(data, notifyArgs) {\n let info = notifyArgs.virtualInfo = notifyArgs.virtualInfo || this.getData();\n let xAxis = info.sentinelInfo && info.sentinelInfo.axis === 'X';\n let page = !xAxis && info.loadNext && !info.loadSelf ? info.nextInfo.page : info.page;\n let result = [];\n let center = ~~(this.model.pageSize / 2);\n let indexes = this.getBlockIndexes(page);\n let loadedBlocks = [];\n this.checkAndResetCache(notifyArgs.requestType);\n if (isGroupAdaptive(this.parent) && this.parent.vcRows.length) {\n return result = this.parent.vcRows;\n }\n if (this.parent.enableColumnVirtualization) {\n for (let i = 0; i < info.blockIndexes.length; i++) {\n if (this.isBlockAvailable(info.blockIndexes[i])) {\n this.cache[info.blockIndexes[i]] = this.rowModelGenerator.refreshRows(this.cache[info.blockIndexes[i]]);\n }\n }\n }\n if (isBlazor() && this.parent.isServerRendered) {\n let virtualStartIdx = 'virtualStartIndex';\n let startIndex = 'startIndex';\n let endIndex = 'endIndex';\n if (!notifyArgs[virtualStartIdx] && Object.keys(this.rowCache).length === 0) {\n for (let i = 0; i < data.length; i++) {\n let args = [];\n args.push(data[i]);\n this.rowCache[i] = this.rowModelGenerator.generateRows(args, { startIndex: i })[0];\n }\n let j = 0;\n for (let i = 0; i < this.parent.pageSettings.pageSize; i++) {\n result[j] = this.rowCache[i];\n j++;\n }\n }\n else if (notifyArgs[virtualStartIdx]) {\n let virtualStartIndex = notifyArgs[startIndex];\n let cacheindex = [];\n for (let i = 0; i < Object.keys(this.rowCache).length; i++) {\n cacheindex.push(Number(Object.keys(this.rowCache)[i]));\n }\n for (let i = 0; i < data.length; i++) {\n let args = [];\n let check = cacheindex.indexOf(virtualStartIndex);\n args.push(data[i]);\n if (check === -1) {\n this.rowCache[virtualStartIndex] = this.rowModelGenerator.generateRows(args, { startIndex: virtualStartIndex })[0];\n }\n virtualStartIndex++;\n }\n }\n if (!isNullOrUndefined(notifyArgs[virtualStartIdx])) {\n let j = 0;\n for (let i = notifyArgs[startIndex]; i < notifyArgs[endIndex]; i++) {\n result[j] = this.rowCache[i];\n j++;\n }\n }\n }\n else {\n let values = info.blockIndexes;\n for (let i = 0; i < values.length; i++) {\n if (!this.isBlockAvailable(values[i])) {\n let rows = this.rowModelGenerator.generateRows(data, {\n virtualInfo: info, startIndex: this.getStartIndex(values[i], data)\n });\n if (isGroupAdaptive(this.parent) && !this.parent.vcRows.length) {\n this.parent.vRows = rows;\n this.parent.vcRows = rows;\n }\n let median;\n if (isGroupAdaptive(this.parent)) {\n median = this.model.pageSize / 2;\n if (!this.isBlockAvailable(indexes[0])) {\n this.cache[indexes[0]] = rows.slice(0, median);\n }\n if (!this.isBlockAvailable(indexes[1])) {\n this.cache[indexes[1]] = rows.slice(median, this.model.pageSize);\n }\n }\n else {\n median = ~~Math.max(rows.length, this.model.pageSize) / 2;\n if (!this.isBlockAvailable(indexes[0])) {\n this.cache[indexes[0]] = rows.slice(0, median);\n }\n if (!this.isBlockAvailable(indexes[1])) {\n this.cache[indexes[1]] = rows.slice(median);\n }\n }\n }\n if (this.parent.groupSettings.columns.length && !xAxis && this.cache[values[i]]) {\n this.cache[values[i]] = this.updateGroupRow(this.cache[values[i]], values[i]);\n }\n result.push(...this.cache[values[i]]);\n if (this.isBlockAvailable(values[i])) {\n loadedBlocks.push(values[i]);\n }\n }\n info.blockIndexes = loadedBlocks;\n }\n if (!isBlazor() || (isBlazor() && !this.parent.isServerRendered)) {\n let grouping = 'records';\n if (this.parent.allowGrouping) {\n this.parent.currentViewData[grouping] = result.map((m) => m.data);\n }\n else {\n this.parent.currentViewData = result.map((m) => m.data);\n }\n }\n return result;\n }\n getBlockIndexes(page) {\n return [page + (page - 1), page * 2];\n }\n getPage(block) {\n return block % 2 === 0 ? block / 2 : (block + 1) / 2;\n }\n isBlockAvailable(value) {\n return value in this.cache;\n }\n getData() {\n return {\n page: this.model.currentPage,\n blockIndexes: this.getBlockIndexes(this.model.currentPage),\n direction: 'down',\n columnIndexes: this.parent.getColumnIndexesInView()\n };\n }\n getStartIndex(blk, data, full = true) {\n let page = this.getPage(blk);\n let even = blk % 2 === 0;\n let index = (page - 1) * this.model.pageSize;\n return full || !even ? index : index + ~~(this.model.pageSize / 2);\n }\n getColumnIndexes(content = this.parent.getHeaderContent().querySelector('.e-headercontent')) {\n if (this.parent.getFrozenColumns()) {\n content = content.querySelector('.e-movableheader');\n }\n let indexes = [];\n let sLeft = content.scrollLeft | 0;\n let keys = Object.keys(this.cOffsets);\n let cWidth = content.getBoundingClientRect().width;\n sLeft = Math.min(this.cOffsets[keys.length - 1] - cWidth, sLeft);\n let calWidth = Browser.isDevice ? 2 * cWidth : cWidth / 2;\n let left = sLeft + cWidth + (sLeft === 0 ? calWidth : 0);\n keys.some((offset, indx, input) => {\n let iOffset = Number(offset);\n let offsetVal = this.cOffsets[offset];\n let border = sLeft - calWidth <= offsetVal && left + calWidth >= offsetVal;\n if (border) {\n indexes.push(iOffset);\n }\n return left + calWidth < offsetVal;\n });\n if (isBlazor() && this.parent.isServerRendered) {\n this.parent.contentModule.startColIndex = indexes[0];\n this.parent.contentModule.endColIndex = indexes[indexes.length - 1];\n }\n this.addFrozenIndex(indexes);\n return indexes;\n }\n addFrozenIndex(indexes) {\n if (this.parent.getFrozenColumns() && this.parent.enableColumnVirtualization && indexes[0] === 0) {\n for (let i = 0; i < this.parent.getFrozenColumns(); i++) {\n indexes.push(indexes[indexes.length - 1] + 1);\n }\n }\n }\n checkAndResetCache(action) {\n let actions = ['paging', 'refresh', 'sorting', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder',\n 'save', 'delete'];\n if (this.parent.getFrozenColumns() && this.parent.frozenRows && this.parent.enableColumnVirtualization && action === 'reorder') {\n actions.splice(actions.indexOf(action), 1);\n }\n let clear = actions.some((value) => action === value);\n if (clear) {\n this.cache = {};\n this.data = {};\n this.groups = {};\n }\n return clear;\n }\n refreshColOffsets() {\n let col = 0;\n this.cOffsets = {};\n let gLen = this.parent.groupSettings.columns.length;\n let cols = this.parent.columns;\n let cLen = cols.length;\n let isVisible = (column) => column.visible &&\n (!this.parent.groupSettings.showGroupedColumn ? this.parent.groupSettings.columns.indexOf(column.field) < 0 : column.visible);\n let c = this.parent.groupSettings.columns;\n for (let i = 0; i < c.length; i++) {\n this.cOffsets[i] = (this.cOffsets[i - 1] | 0) + 30;\n }\n let blocks = Array.apply(null, Array(cLen)).map(() => col++);\n for (let j = 0; j < blocks.length; j++) {\n blocks[j] = blocks[j] + gLen;\n this.cOffsets[blocks[j]] = (this.cOffsets[blocks[j] - 1] | 0) + (isVisible(cols[j]) ? parseInt(cols[j].width, 10) : 0);\n }\n }\n updateGroupRow(current, block) {\n let currentFirst = current[0];\n let rows = [];\n let keys = Object.keys(this.cache);\n for (let i = 0; i < keys.length; i++) {\n if (Number(keys[i]) < block) {\n rows = [...rows, ...this.cache[keys[i]]];\n }\n }\n if ((currentFirst && currentFirst.isDataRow) || block % 2 === 0) {\n return current;\n }\n return this.iterateGroup(current, rows);\n }\n iterateGroup(current, rows) {\n let currentFirst = current[0];\n let offset = 0;\n if (currentFirst && currentFirst.isDataRow) {\n return current;\n }\n let isPresent = current.some((row) => {\n return rows.some((oRow, index) => {\n let res = oRow && oRow.data.field !== undefined && oRow.data.field === row.data.field &&\n oRow.data.key === row.data.key;\n if (res) {\n offset = index;\n }\n return res;\n });\n });\n if (isPresent) {\n current.shift();\n current = this.iterateGroup(current, rows.slice(offset));\n }\n return current;\n }\n getRows() {\n let rows = [];\n let isBlazorServerRendered = isBlazor() && this.parent.isServerRendered ? true : false;\n let keys = isBlazorServerRendered ? Object.keys(this.rowCache) : Object.keys(this.cache);\n for (let i = 0; i < keys.length; i++) {\n rows = isBlazorServerRendered ? [...rows, ...this.rowCache[keys[i]]] : [...rows, ...this.cache[keys[i]]];\n }\n return rows;\n }\n}\n\n/**\n * VirtualContentRenderer\n * @hidden\n */\nclass VirtualContentRenderer extends ContentRender {\n constructor(parent, locator) {\n super(parent, locator);\n this.prevHeight = 0;\n /** @hidden */\n this.startIndex = 0;\n this.preStartIndex = 0;\n this.preventEvent = false;\n this.actions = ['filtering', 'searching', 'grouping', 'ungrouping'];\n this.offsets = {};\n this.tmpOffsets = {};\n /** @hidden */\n this.virtualEle = new VirtualElementHandler();\n this.offsetKeys = [];\n this.isFocused = false;\n this.isSelection = false;\n this.isBottom = false;\n this.rndrCount = 0;\n this.empty = undefined;\n this.isCancel = false;\n this.requestTypes = ['beginEdit', 'cancel', 'delete', 'add', 'save'];\n this.isNormaledit = this.parent.editSettings.mode === 'Normal';\n this.virtualData = {};\n this.emptyRowData = {};\n this.vfColIndex = [];\n this.locator = locator;\n this.eventListener('on');\n this.parent.on(columnVisibilityChanged, this.setVisible, this);\n this.vgenerator = this.generator;\n }\n renderTable() {\n this.header = this.locator.getService('rendererFactory').getRenderer(RenderType.Header);\n super.renderTable();\n this.virtualEle.table = this.getTable();\n this.virtualEle.content = this.content = this.getPanel().querySelector('.e-content');\n let minHeight = this.parent.height;\n if (this.parent.getFrozenColumns() && this.parent.height.toString().indexOf('%') < 0) {\n minHeight = parseInt(this.parent.height, 10) - getScrollBarWidth();\n }\n this.virtualEle.renderWrapper(minHeight);\n this.virtualEle.renderPlaceHolder();\n if (!this.parent.getFrozenColumns()) {\n this.virtualEle.wrapper.style.position = 'absolute';\n }\n let debounceEvent = (this.parent.dataSource instanceof DataManager && !this.parent.dataSource.dataSource.offline);\n let content = this.parent.getFrozenColumns() ? this.parent.getMovableVirtualContent() : this.content;\n let opt = {\n container: content, pageHeight: this.getBlockHeight() * 2, debounceEvent: debounceEvent,\n axes: this.parent.enableColumnVirtualization ? ['X', 'Y'] : ['Y']\n };\n this.observer = new InterSectionObserver(this.virtualEle.wrapper, opt);\n }\n renderEmpty(tbody) {\n this.getTable().appendChild(tbody);\n this.virtualEle.adjustTable(0, 0);\n }\n refreshMvTbalTransform() {\n let mCont = this.parent.getMovableVirtualContent();\n let fCont = this.parent.getFrozenVirtualContent();\n let mContTV = getTransformValues(mCont.firstElementChild);\n let fContTV = getTransformValues(fCont.firstElementChild);\n let top = mCont.scrollTop;\n if (top > 0 && mContTV.height !== fContTV.height) {\n mCont.firstElementChild.style.transform = `translate(${mContTV.width}px, ${fContTV.height}px)`;\n }\n }\n scrollListener(scrollArgs) {\n this.scrollAfterEdit();\n if (this.parent.enablePersistence) {\n this.parent.scrollPosition = scrollArgs.offset;\n }\n if (this.preventEvent || this.parent.isDestroyed) {\n this.preventEvent = false;\n return;\n }\n if (isNullOrUndefined(document.activeElement)) {\n this.isFocused = false;\n }\n else {\n this.isFocused = this.content === closest(document.activeElement, '.e-content') || this.content === document.activeElement;\n }\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns() && scrollArgs.sentinel.axis === 'X') {\n this.refreshMvTbalTransform();\n }\n let info = scrollArgs.sentinel;\n let pStartIndex = this.preStartIndex;\n let previousColIndexes = this.parent.getColumnIndexesInView();\n let viewInfo = this.currentInfo = this.getInfoFromView(scrollArgs.direction, info, scrollArgs.offset);\n if (isBlazor() && this.parent.isServerRendered && this.parent.enableColumnVirtualization &&\n (JSON.stringify(previousColIndexes) !== JSON.stringify(viewInfo.columnIndexes))) {\n this.parent.refreshHeader();\n let translateX = this.getColumnOffset(this.startColIndex - 1);\n let width = this.getColumnOffset(this.endColIndex - 1) - translateX + '';\n this.parent.notify('refresh-virtual-indices', { requestType: 'virtualscroll', startColumnIndex: viewInfo.columnIndexes[0],\n endColumnIndex: viewInfo.columnIndexes[viewInfo.columnIndexes.length - 1], axis: 'X',\n VTablewidth: width, translateX: this.getColumnOffset(viewInfo.columnIndexes[0] - 1) });\n this.parent.notify('setcolumnstyles', {});\n }\n if (isGroupAdaptive(this.parent) && !isBlazor()) {\n if ((info.axis === 'Y' && viewInfo.blockIndexes && this.prevInfo.blockIndexes.toString() === viewInfo.blockIndexes.toString())\n && scrollArgs.direction === 'up' && viewInfo.blockIndexes[viewInfo.blockIndexes.length - 1] !== 2) {\n return;\n }\n else {\n viewInfo.event = 'refresh-virtual-block';\n if (!isNullOrUndefined(viewInfo.offsets)) {\n viewInfo.offsets.top = this.content.scrollTop;\n }\n this.parent.notify(viewInfo.event, { requestType: 'virtualscroll', virtualInfo: viewInfo, focusElement: scrollArgs.focusElement });\n return;\n }\n }\n if (!isBlazor() || (isBlazor() && !this.parent.isServerRendered)) {\n if (this.prevInfo && ((info.axis === 'Y' && this.prevInfo.blockIndexes.toString() === viewInfo.blockIndexes.toString())\n || (info.axis === 'X' && this.prevInfo.columnIndexes.toString() === viewInfo.columnIndexes.toString()))) {\n if (Browser.isIE) {\n this.parent.hideSpinner();\n }\n this.requestType = this.requestType === 'virtualscroll' ? this.empty : this.requestType;\n this.restoreEdit();\n return;\n }\n }\n this.parent.setColumnIndexesInView(this.parent.enableColumnVirtualization ? viewInfo.columnIndexes : []);\n if (!isBlazor() || (isBlazor() && !this.parent.isServerRendered)) {\n this.parent.pageSettings.currentPage = viewInfo.loadNext && !viewInfo.loadSelf ? viewInfo.nextInfo.page : viewInfo.page;\n }\n else if (isBlazor() && this.parent.isServerRendered && this.preStartIndex !== pStartIndex &&\n this.parent.pageSettings.currentPage === viewInfo.currentPage) {\n this.parent.notify('refresh-virtual-indices', { requestType: 'virtualscroll', virtualStartIndex: viewInfo.startIndex,\n virtualEndIndex: viewInfo.endIndex, axis: 'Y', RHeight: this.parent.getRowHeight() });\n }\n if (this.parent.getFrozenColumns() && this.parent.enableColumnVirtualization) {\n let lastPage = Math.ceil(this.getTotalBlocks() / 2);\n if (this.parent.pageSettings.currentPage === lastPage && scrollArgs.sentinel.axis === 'Y') {\n this.rndrCount++;\n }\n if (scrollArgs.sentinel.axis === 'Y') {\n if (this.parent.pageSettings.currentPage === lastPage && this.rndrCount > 1) {\n this.rndrCount = 0;\n return;\n }\n else if (this.parent.pageSettings.currentPage !== lastPage && this.parent.pageSettings.currentPage !== lastPage - 1) {\n this.rndrCount = 0;\n }\n }\n }\n if (!isBlazor() || (isBlazor() && !this.parent.isServerRendered)) {\n this.requestType = 'virtualscroll';\n this.parent.notify(viewInfo.event, { requestType: 'virtualscroll', virtualInfo: viewInfo,\n focusElement: scrollArgs.focusElement });\n }\n else if (this.preStartIndex !== pStartIndex && this.parent.pageSettings.currentPage !== viewInfo.currentPage) {\n this.parent.pageSettings.currentPage = viewInfo.currentPage;\n this.parent.notify(viewInfo.event, { requestType: 'virtualscroll', virtualStartIndex: viewInfo.startIndex,\n virtualEndIndex: viewInfo.endIndex, axis: 'Y', RHeight: this.parent.getRowHeight() });\n }\n }\n block(blk) {\n return this.vgenerator.isBlockAvailable(blk);\n }\n getInfoFromView(direction, info, e) {\n let isBlockAdded = false;\n let tempBlocks = [];\n let infoType = { direction: direction, sentinelInfo: info, offsets: e,\n startIndex: this.preStartIndex, endIndex: this.preEndIndex };\n let vHeight = this.parent.height.toString().indexOf('%') < 0 ? this.content.getBoundingClientRect().height :\n this.parent.element.getBoundingClientRect().height;\n infoType.page = this.getPageFromTop(e.top, infoType);\n infoType.blockIndexes = tempBlocks = this.vgenerator.getBlockIndexes(infoType.page);\n infoType.loadSelf = !this.vgenerator.isBlockAvailable(tempBlocks[infoType.block]);\n let blocks = this.ensureBlocks(infoType);\n if (this.activeKey === 'upArrow' && infoType.blockIndexes.toString() !== blocks.toString()) {\n // To avoid dupilcate row index problem in key focus support\n let newBlock = blocks[blocks.length - 1];\n if (infoType.blockIndexes.indexOf(newBlock) === -1) {\n isBlockAdded = true;\n }\n }\n infoType.blockIndexes = blocks;\n infoType.loadNext = !blocks.filter((val) => tempBlocks.indexOf(val) === -1)\n .every(this.block.bind(this));\n infoType.event = (infoType.loadNext || infoType.loadSelf) ? modelChanged : refreshVirtualBlock;\n infoType.nextInfo = infoType.loadNext ? { page: Math.max(1, infoType.page + (direction === 'down' ? 1 : -1)) } : {};\n if (isBlockAdded) {\n infoType.blockIndexes = [infoType.blockIndexes[0] - 1, infoType.blockIndexes[0], infoType.blockIndexes[0] + 1];\n }\n if (this.activeKey === 'downArrow') {\n let firstBlock = Math.ceil(this.rowIndex / this.getBlockSize());\n if (firstBlock !== 1 && (infoType.blockIndexes[1] !== firstBlock || infoType.blockIndexes.length < 3)) {\n infoType.blockIndexes = [firstBlock - 1, firstBlock, firstBlock + 1];\n }\n }\n infoType.columnIndexes = info.axis === 'X' ? this.vgenerator.getColumnIndexes() : this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization && info.axis === 'X') {\n infoType.event = refreshVirtualBlock;\n }\n if (isBlazor() && this.parent.isServerRendered) {\n let rowHeight = this.parent.getRowHeight();\n let exactTopIndex = e.top / rowHeight;\n let noOfInViewIndexes = vHeight / rowHeight;\n let exactEndIndex = exactTopIndex + noOfInViewIndexes;\n let pageSizeBy4 = this.parent.pageSettings.pageSize / 4;\n if (infoType.direction === 'down') {\n let sIndex = Math.round(exactEndIndex) - Math.round((pageSizeBy4));\n if (isNullOrUndefined(infoType.startIndex) || (exactEndIndex >\n (infoType.startIndex + Math.round((this.parent.pageSettings.pageSize / 2 + pageSizeBy4)))\n && infoType.endIndex !== this.count)) {\n infoType.startIndex = sIndex >= 0 ? Math.round(sIndex) : 0;\n infoType.startIndex = infoType.startIndex > exactTopIndex ? Math.floor(exactTopIndex) : infoType.startIndex;\n let eIndex = infoType.startIndex + this.parent.pageSettings.pageSize;\n infoType.startIndex = eIndex < exactEndIndex ? (Math.ceil(exactEndIndex) - this.parent.pageSettings.pageSize)\n : infoType.startIndex;\n infoType.endIndex = eIndex < this.count ? eIndex : this.count;\n infoType.startIndex = eIndex >= this.count ?\n infoType.endIndex - this.parent.pageSettings.pageSize : infoType.startIndex;\n infoType.currentPage = Math.ceil(infoType.endIndex / this.parent.pageSettings.pageSize);\n this.setKeyboardNavIndex();\n }\n }\n else if (infoType.direction === 'up') {\n if (infoType.startIndex && infoType.endIndex) {\n let loadAtIndex = Math.round(((infoType.startIndex * rowHeight) + (pageSizeBy4 * rowHeight)) / rowHeight);\n if (exactTopIndex < loadAtIndex) {\n let idxAddedToExactTop = (pageSizeBy4) > noOfInViewIndexes ? pageSizeBy4 :\n (noOfInViewIndexes + noOfInViewIndexes / 4);\n let eIndex = Math.round(exactTopIndex + idxAddedToExactTop);\n infoType.endIndex = eIndex < this.count ? eIndex : this.count;\n let sIndex = infoType.endIndex - this.parent.pageSettings.pageSize;\n infoType.startIndex = sIndex > 0 ? sIndex : 0;\n infoType.endIndex = sIndex < 0 ? this.parent.pageSettings.pageSize : infoType.endIndex;\n infoType.currentPage = Math.ceil(infoType.startIndex / this.parent.pageSettings.pageSize);\n this.setKeyboardNavIndex();\n }\n }\n }\n this.preStartIndex = this.startIndex = infoType.startIndex;\n this.preEndIndex = infoType.endIndex;\n infoType.event = (infoType.currentPage !== this.parent.pageSettings.currentPage) ? modelChanged : refreshVirtualBlock;\n }\n return infoType;\n }\n setKeyboardNavIndex() {\n this.blazorDataLoad = true;\n if (this.activeKey === 'downArrow' || this.activeKey === 'upArrow') {\n this.blzRowIndex = this.activeKey === 'downArrow' ? this.rowIndex + 1 : this.rowIndex - 1;\n document.activeElement.blur();\n }\n }\n ensureBlocks(info) {\n let index = info.blockIndexes[info.block];\n let mIdx;\n let old = index;\n let max = Math.max;\n let indexes = info.direction === 'down' ? [max(index, 1), ++index, ++index] : [max(index - 1, 1), index, index + 1];\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()) {\n if (info.sentinelInfo.axis === 'X' || (info.sentinelInfo.axis === 'Y' && (info.page === this.prevInfo.page))) {\n indexes = this.prevInfo.blockIndexes;\n }\n }\n indexes = indexes.filter((val, ind) => indexes.indexOf(val) === ind);\n if (this.prevInfo.blockIndexes.toString() === indexes.toString()) {\n return indexes;\n }\n if (info.loadSelf || (info.direction === 'down' && this.isEndBlock(old))) {\n indexes = this.vgenerator.getBlockIndexes(info.page);\n }\n indexes.some((val, ind) => {\n let result = val === (isGroupAdaptive(this.parent) ? this.getGroupedTotalBlocks() : this.getTotalBlocks());\n if (result) {\n mIdx = ind;\n }\n return result;\n });\n if (mIdx !== undefined) {\n indexes = indexes.slice(0, mIdx + 1);\n if (info.block === 0 && indexes.length === 1 && this.vgenerator.isBlockAvailable(indexes[0] - 1)) {\n indexes = [indexes[0] - 1, indexes[0]];\n }\n }\n return indexes;\n }\n /**\n * @hidden\n */\n vfTblTransform(info, left, top, e, cOffset, translate) {\n let lastPage = Math.ceil(this.getTotalBlocks() / 2);\n let isLastPage = lastPage === this.parent.pageSettings.currentPage && this.parent.enableColumnVirtualization;\n let wrappers = [].slice.call(this.parent.getContent().querySelectorAll('.e-virtualtable'));\n for (let i = 0; i < wrappers.length; i++) {\n if (i === 0 && e.requestType === 'virtualscroll' && info.sentinelInfo.axis === 'X') {\n continue;\n }\n if (lastPage !== this.parent.pageSettings.currentPage && this.parent.enableColumnVirtualization\n && (left > 0 || (top > 0 && left === 0))) {\n continue;\n }\n let cOff = isLastPage && i === 0 ? 0 : cOffset;\n this.virtualEle.wrapper = wrappers[i];\n this.virtualEle.adjustTable(cOff, translate);\n }\n }\n // tslint:disable-next-line:max-func-body-length\n appendContent(target, newChild, e) {\n // currentInfo value will be used if there are multiple dom updates happened due to mousewheel\n let colVFtable = this.parent.enableColumnVirtualization && this.parent.getFrozenColumns() !== 0;\n this.checkFirstBlockColIndexes(e);\n let info = e.virtualInfo.sentinelInfo && e.virtualInfo.sentinelInfo.axis === 'Y' && this.currentInfo.page &&\n this.currentInfo.page !== e.virtualInfo.page ? this.currentInfo : e.virtualInfo;\n this.prevInfo = this.prevInfo || e.virtualInfo;\n let cBlock = (info.columnIndexes[0]) - 1;\n if (colVFtable && info.columnIndexes[0] === this.parent.getFrozenColumns()) {\n cBlock = (info.columnIndexes[0] - this.parent.getFrozenColumns()) - 1;\n }\n let cOffset = this.getColumnOffset(cBlock);\n let width;\n let blocks = info.blockIndexes;\n if (this.parent.groupSettings.columns.length) {\n this.refreshOffsets();\n }\n if (this.parent.height === '100%') {\n this.parent.element.style.height = '100%';\n }\n let vHeight = this.parent.height.toString().indexOf('%') < 0 ? this.content.getBoundingClientRect().height :\n this.parent.element.getBoundingClientRect().height;\n let translate = 0;\n if (this.parent.getFrozenColumns()) {\n let mCont = this.parent.getMovableVirtualContent();\n let left = mCont.scrollLeft;\n let top = mCont.scrollTop;\n translate = this.getTranslateY(mCont.scrollTop, vHeight, info);\n this.vfTblTransform(info, left, top, e, cOffset, translate);\n }\n else {\n if (!this.requestTypes.some((value) => value === this.requestType)) {\n translate = this.getTranslateY(this.content.scrollTop, vHeight, info);\n this.virtualEle.adjustTable(cOffset, translate);\n }\n }\n if (this.parent.enableColumnVirtualization && !this.parent.getFrozenColumns()) {\n this.header.virtualEle.adjustTable(cOffset, 0);\n }\n if (this.parent.enableColumnVirtualization) {\n let cIndex = info.columnIndexes;\n width = this.getColumnOffset(cIndex[cIndex.length - 1]) - this.getColumnOffset(cIndex[0] - 1) + '';\n this.header.virtualEle.setWrapperWidth(width);\n }\n this.virtualEle.setWrapperWidth(width, Browser.isIE || Browser.info.name === 'edge');\n if (!isNullOrUndefined(target.parentNode)) {\n remove(target);\n }\n let tbody;\n if (this.parent.getFrozenColumns() && !e.renderMovableContent) {\n tbody = this.parent.getFrozenVirtualContent().querySelector('tbody');\n }\n else if (this.parent.getFrozenColumns() && e.renderMovableContent) {\n tbody = this.parent.getMovableVirtualContent().querySelector('tbody');\n }\n else {\n tbody = this.parent.element.querySelector('.e-content').querySelector('tbody');\n }\n if (tbody) {\n remove(tbody);\n target = null;\n }\n target = this.parent.createElement('tbody');\n target.appendChild(newChild);\n if (this.parent.frozenRows && e.requestType === 'virtualscroll' && this.parent.pageSettings.currentPage === 1) {\n for (let i = 0; i < this.parent.frozenRows; i++) {\n target.children[0].remove();\n }\n }\n if (this.parent.getFrozenColumns()) {\n if (!e.renderMovableContent) {\n this.parent.getFrozenVirtualContent().querySelector('.e-table').appendChild(target);\n }\n else {\n this.parent.getMovableVirtualContent().querySelector('.e-table').appendChild(target);\n this.requestType = this.requestType === 'virtualscroll' ? this.empty : this.requestType;\n }\n if (this.vfColIndex.length) {\n e.virtualInfo.columnIndexes = info.columnIndexes = extend([], this.vfColIndex);\n this.vfColIndex = e.renderMovableContent ? [] : this.vfColIndex;\n }\n }\n else {\n this.getTable().appendChild(target);\n this.requestType = this.requestType === 'virtualscroll' ? this.empty : this.requestType;\n }\n if (this.parent.groupSettings.columns.length) {\n if (!isGroupAdaptive(this.parent) && info.direction === 'up') {\n let blk = this.offsets[this.getTotalBlocks()] - this.prevHeight;\n this.preventEvent = true;\n let sTop = this.content.scrollTop;\n this.content.scrollTop = sTop + blk;\n }\n this.setVirtualHeight();\n this.observer.setPageHeight(this.getOffset(blocks[blocks.length - 1]) - this.getOffset(blocks[0] - 1));\n }\n this.prevInfo = info;\n if (this.isFocused && this.activeKey !== 'downArrow' && this.activeKey !== 'upArrow') {\n this.content.focus();\n }\n let lastPage = Math.ceil(this.getTotalBlocks() / 2);\n if (this.isBottom) {\n this.isBottom = false;\n this.parent.getContent().firstElementChild.scrollTop = this.offsets[this.offsetKeys.length - 1];\n }\n if ((this.parent.pageSettings.currentPage === lastPage) && blocks.length === 1) {\n this.isBottom = true;\n this.parent.getContent().firstElementChild.scrollTop = this.offsets[this.offsetKeys.length - 2];\n }\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()\n && e.requestType === 'virtualscroll' && e.virtualInfo.sentinelInfo.axis === 'X') {\n this.refreshMvTbalTransform();\n }\n if (e.requestType === 'virtualscroll' && e.virtualInfo.sentinelInfo.axis === 'X') {\n this.parent.notify(autoCol, {});\n }\n this.focusCell(e);\n this.restoreEdit();\n this.restoreAdd();\n }\n checkFirstBlockColIndexes(e) {\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns() && e.virtualInfo.columnIndexes[0] === 0) {\n let indexes = [];\n if (!e.renderMovableContent && e.virtualInfo.columnIndexes.length > this.parent.getFrozenColumns()) {\n this.vfColIndex = e.virtualInfo.columnIndexes;\n for (let i = 0; i < this.parent.getFrozenColumns(); i++) {\n indexes.push(i);\n }\n e.virtualInfo.columnIndexes = indexes;\n }\n else if (e.renderMovableContent) {\n if (!this.vfColIndex.length) {\n this.vfColIndex = extend([], e.virtualInfo.columnIndexes);\n }\n e.virtualInfo.columnIndexes = extend([], this.vfColIndex);\n e.virtualInfo.columnIndexes.splice(0, this.parent.getFrozenColumns());\n }\n }\n }\n focusCell(e) {\n if (this.activeKey !== 'upArrow' && this.activeKey !== 'downArrow') {\n return;\n }\n let row = this.parent.getRowByIndex(this.rowIndex);\n // tslint:disable-next-line:no-any\n let cell = row.cells[this.cellIndex];\n cell.focus({ preventScroll: true });\n this.parent.selectRow(parseInt(row.getAttribute('aria-rowindex'), 10));\n this.activeKey = this.empty;\n }\n restoreEdit() {\n if (this.isNormaledit) {\n if (this.parent.editSettings.allowEditing && this.parent.editModule && !isNullOrUndefined(this.editedRowIndex)) {\n let row = this.getRowByIndex(this.editedRowIndex);\n if (Object.keys(this.virtualData).length && row && !this.content.querySelector('.e-editedrow')) {\n let top = row.getBoundingClientRect().top;\n if (top < this.content.offsetHeight && top > this.parent.getRowHeight()) {\n this.parent.isEdit = false;\n this.parent.editModule.startEdit(row);\n }\n }\n if (row && this.content.querySelector('.e-editedrow') && !Object.keys(this.virtualData).length) {\n let rowData = extend({}, this.getRowObjectByIndex(this.editedRowIndex));\n this.virtualData = this.getVirtualEditedData(rowData);\n }\n }\n this.restoreAdd();\n }\n }\n getVirtualEditedData(rowData) {\n let editForm = this.content.querySelector('.e-gridform');\n return this.parent.editModule.getCurrentEditedData(editForm, rowData);\n }\n restoreAdd() {\n if (this.isNormaledit && this.isAdd && !this.content.querySelector('.e-addedrow')) {\n let isTop = this.parent.editSettings.newRowPosition === 'Top' && this.content.scrollTop < this.parent.getRowHeight();\n let isBottom = this.parent.editSettings.newRowPosition === 'Bottom'\n && this.parent.pageSettings.currentPage === this.maxPage;\n if (isTop || isBottom) {\n this.parent.isEdit = false;\n this.parent.addRecord();\n }\n }\n }\n onDataReady(e) {\n if (!isNullOrUndefined(e.count)) {\n this.count = e.count;\n this.maxPage = Math.ceil(e.count / this.parent.pageSettings.pageSize);\n }\n this.vgenerator.checkAndResetCache(e.requestType);\n if (['refresh', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder', undefined]\n .some((value) => { return e.requestType === value; })) {\n this.refreshOffsets();\n }\n if (this.parent.getFrozenColumns() && this.parent.enableColumnVirtualization) {\n let hdrTbls = [].slice.call(this.parent.getHeaderContent().querySelectorAll('.e-table'));\n this.header.virtualEle.table = hdrTbls[1];\n }\n this.setVirtualHeight();\n this.resetScrollPosition(e.requestType);\n }\n /** @hidden */\n setVirtualHeight(height) {\n let width = this.parent.enableColumnVirtualization ?\n this.getColumnOffset(this.parent.columns.length + this.parent.groupSettings.columns.length - 1) + 'px' : '100%';\n if (this.parent.getFrozenColumns()) {\n let virtualHeightTemp = (this.parent.pageSettings.currentPage === 1 && Object.keys(this.offsets).length <= 2) ?\n this.offsets[1] : this.offsets[this.getTotalBlocks() - 2];\n let scrollableElementHeight = this.parent.getMovableVirtualContent().clientHeight;\n virtualHeightTemp = virtualHeightTemp > scrollableElementHeight ? virtualHeightTemp : 0;\n let fTblWidth = this.parent.enableColumnVirtualization ? 'auto' : width;\n this.virtualEle.placeholder = this.parent.getFrozenVirtualContent().querySelector('.e-virtualtrack');\n // To overcome the white space issue in last page (instead of position absolute)\n this.virtualEle.setVirtualHeight(virtualHeightTemp, fTblWidth);\n this.virtualEle.placeholder = this.parent.getMovableVirtualContent().querySelector('.e-virtualtrack');\n // To overcome the white space issue in last page (instead of position absolute)\n this.virtualEle.setVirtualHeight(virtualHeightTemp, width);\n }\n else {\n let virtualHeight = (isBlazor() && this.parent.isServerRendered && this.parent.groupSettings.columns.length && height)\n ? height : (this.offsets[isGroupAdaptive(this.parent) ? this.getGroupedTotalBlocks() : this.getTotalBlocks()]);\n this.virtualEle.setVirtualHeight(virtualHeight, width);\n }\n if (this.parent.enableColumnVirtualization) {\n this.header.virtualEle.setVirtualHeight(1, width);\n }\n }\n getPageFromTop(sTop, info) {\n let total = (isGroupAdaptive(this.parent)) ? this.getGroupedTotalBlocks() : this.getTotalBlocks();\n let page = 0;\n let extra = this.offsets[total] - this.prevHeight;\n this.offsetKeys.some((offset) => {\n let iOffset = Number(offset);\n let border = sTop <= this.offsets[offset] || (iOffset === total && sTop > this.offsets[offset]);\n if (border) {\n if (this.offsetKeys.length % 2 !== 0 && iOffset.toString() === this.offsetKeys[this.offsetKeys.length - 2]\n && sTop <= this.offsets[this.offsetKeys.length - 1]) {\n iOffset = iOffset + 1;\n }\n info.block = iOffset % 2 === 0 ? 1 : 0;\n page = Math.max(1, Math.min(this.vgenerator.getPage(iOffset), this.maxPage));\n }\n return border;\n });\n return page;\n }\n getTranslateY(sTop, cHeight, info, isOnenter) {\n if (info === undefined) {\n info = { page: this.getPageFromTop(sTop, {}) };\n info.blockIndexes = this.vgenerator.getBlockIndexes(info.page);\n }\n let block = (info.blockIndexes[0] || 1) - 1;\n let translate = this.getOffset(block);\n let endTranslate = this.getOffset(info.blockIndexes[info.blockIndexes.length - 1]);\n if (isOnenter) {\n info = this.prevInfo;\n }\n let result = translate > sTop ?\n this.getOffset(block - 1) : endTranslate < (sTop + cHeight) ? this.getOffset(block + 1) : translate;\n let blockHeight = this.offsets[info.blockIndexes[info.blockIndexes.length - 1]] -\n this.tmpOffsets[info.blockIndexes[0]];\n if (result + blockHeight > this.offsets[isGroupAdaptive(this.parent) ? this.getGroupedTotalBlocks() : this.getTotalBlocks()]) {\n result -= (result + blockHeight) - this.offsets[this.getTotalBlocks()];\n }\n return result;\n }\n getOffset(block) {\n return Math.min(this.offsets[block] | 0, this.offsets[this.maxBlock] | 0);\n }\n onEntered() {\n return (element, current, direction, e, isWheel, check) => {\n if (Browser.isIE && !isWheel && check && !this.preventEvent) {\n this.parent.showSpinner();\n }\n let xAxis = current.axis === 'X';\n let top = this.prevInfo.offsets ? this.prevInfo.offsets.top : null;\n let height = this.content.getBoundingClientRect().height;\n let x = this.getColumnOffset(xAxis ? this.vgenerator.getColumnIndexes()[0] - 1 : this.prevInfo.columnIndexes[0] - 1);\n let y = this.getTranslateY(e.top, height, xAxis && top === e.top ? this.prevInfo : undefined, true);\n if (isBlazor() && this.parent.isServerRendered && this.currentInfo && this.currentInfo.startIndex && xAxis) {\n y = this.currentInfo.startIndex * this.parent.getRowHeight();\n }\n this.virtualEle.adjustTable(x, Math.min(y, this.offsets[this.maxBlock]));\n if (isBlazor() && this.parent.isServerRendered && xAxis) {\n this.parent.notify('setcolumnstyles', { refresh: true });\n }\n if (this.parent.getFrozenColumns() && !xAxis) {\n let left = this.parent.getMovableVirtualContent().scrollLeft;\n if (this.parent.enableColumnVirtualization && left > 0) {\n let fvTable = this.parent.getFrozenVirtualContent().querySelector('.e-virtualtable');\n fvTable.style.transform = `translate(${0}px, ${Math.min(y, this.offsets[this.maxBlock])}px)`;\n }\n else {\n let fvTable = this.parent.getFrozenVirtualContent().querySelector('.e-virtualtable');\n fvTable.style.transform = `translate(${x}px, ${Math.min(y, this.offsets[this.maxBlock])}px)`;\n }\n }\n if (this.parent.enableColumnVirtualization && (!isBlazor() || (isBlazor() && !this.parent.isServerRendered))) {\n this.header.virtualEle.adjustTable(x, 0);\n }\n };\n }\n dataBound() {\n if (this.isSelection && this.activeKey !== 'upArrow' && this.activeKey !== 'downArrow') {\n this.parent.selectRow(this.selectedRowIndex);\n }\n else if (!isBlazor()) {\n this.activeKey = this.empty;\n }\n }\n rowSelected() {\n this.isSelection = false;\n }\n eventListener(action) {\n this.parent[action](dataReady, this.onDataReady, this);\n this.parent.addEventListener(dataBound, this.dataBound.bind(this));\n this.parent.addEventListener(actionBegin, this.actionBegin.bind(this));\n this.parent.addEventListener(actionComplete, this.actionComplete.bind(this));\n this.parent.addEventListener(rowSelected, this.rowSelected.bind(this));\n this.parent[action](refreshVirtualBlock, this.refreshContentRows, this);\n this.parent[action](selectVirtualRow, this.selectVirtualRow, this);\n this.parent[action](virtaulCellFocus, this.virtualCellFocus, this);\n this.parent[action](virtualScrollEditActionBegin, this.editActionBegin, this);\n this.parent[action](virtualScrollAddActionBegin, this.addActionBegin, this);\n this.parent[action](virtualScrollEdit, this.restoreEdit, this);\n this.parent[action](virtualScrollEditSuccess, this.editSuccess, this);\n this.parent[action](refreshVirtualCache, this.refreshCache, this);\n this.parent[action](editReset, this.resetIsedit, this);\n this.parent[action](getVirtualData, this.getVirtualData, this);\n this.parent[action](virtualScrollEditCancel, this.editCancel, this);\n let event = this.actions;\n for (let i = 0; i < event.length; i++) {\n this.parent[action](`${event[i]}-begin`, this.onActionBegin, this);\n }\n let fn = () => {\n this.observer.observe((scrollArgs) => this.scrollListener(scrollArgs), this.onEntered());\n let gObj = this.parent;\n if (gObj.enablePersistence && gObj.scrollPosition) {\n this.content.scrollTop = gObj.scrollPosition.top;\n let scrollValues = { direction: 'down', sentinel: this.observer.sentinelInfo.down,\n offset: gObj.scrollPosition, focusElement: gObj.element };\n this.scrollListener(scrollValues);\n if (gObj.enableColumnVirtualization) {\n this.content.scrollLeft = gObj.scrollPosition.left;\n }\n }\n this.parent.off(contentReady, fn);\n };\n this.parent.on(contentReady, fn, this);\n }\n getVirtualData(data) {\n data.virtualData = this.virtualData;\n data.isAdd = this.isAdd;\n data.isCancel = this.isCancel;\n }\n editCancel(args) {\n let dataIndex = getEditedDataIndex(this.parent, args.data);\n if (!isNullOrUndefined(dataIndex)) {\n args.data = this.parent.getCurrentViewRecords()[dataIndex];\n }\n }\n editSuccess(args) {\n if (this.isNormaledit) {\n if (!this.isAdd && args.data) {\n this.updateCurrentViewData(args.data);\n }\n this.isAdd = false;\n }\n }\n updateCurrentViewData(data) {\n let dataIndex = getEditedDataIndex(this.parent, data);\n if (!isNullOrUndefined(dataIndex)) {\n this.parent.getCurrentViewRecords()[dataIndex] = data;\n }\n }\n actionBegin(args) {\n if (args.requestType !== 'virtualscroll') {\n this.requestType = args.requestType;\n }\n }\n virtualCellFocus(e) {\n // To decide the action (select or scroll), when using arrow keys for cell focus\n let ele = document.activeElement;\n if (ele.classList.contains('e-rowcell')\n && e && (e.action === 'upArrow' || e.action === 'downArrow')) {\n let rowIndex = parseInt(ele.parentElement.getAttribute('aria-rowindex'), 10);\n if (e && (e.action === 'downArrow' || e.action === 'upArrow')) {\n let scrollEle = this.parent.getContent().firstElementChild;\n e.action === 'downArrow' ? rowIndex += 1 : rowIndex -= 1;\n this.rowIndex = rowIndex;\n this.cellIndex = parseInt(ele.getAttribute('aria-colindex'), 10);\n let row = this.parent.getRowByIndex(rowIndex);\n let page = this.parent.pageSettings.currentPage;\n let visibleRowCount = Math.floor(scrollEle.offsetHeight / this.parent.getRowHeight()) - 1;\n let emptyRow = false;\n if (isNullOrUndefined(row)) {\n emptyRow = true;\n if ((e.action === 'downArrow' && page === this.maxPage - 1) || (e.action === 'upArrow' && page === 1)) {\n emptyRow = false;\n }\n }\n if (emptyRow || (ensureLastRow(row, this.parent) && e.action === 'downArrow')\n || (ensureFirstRow(row, this.parent.getRowHeight() * 2) && e.action === 'upArrow')) {\n this.activeKey = e.action;\n scrollEle.scrollTop = e.action === 'downArrow' ?\n (rowIndex - visibleRowCount) * this.parent.getRowHeight() : rowIndex * this.parent.getRowHeight();\n }\n else {\n this.activeKey = this.empty;\n }\n if (!isBlazor() || (isBlazor() && !this.blazorDataLoad)) {\n this.parent.selectRow(rowIndex);\n }\n }\n }\n }\n editActionBegin(e) {\n this.editedRowIndex = e.index;\n let rowData = extend({}, this.getRowObjectByIndex(e.index));\n e.data = Object.keys(this.virtualData).length ? this.virtualData : rowData;\n }\n refreshCache(data) {\n let block = Math.ceil((this.editedRowIndex + 1) / this.getBlockSize());\n let index = this.editedRowIndex - ((block - 1) * this.getBlockSize());\n this.vgenerator.cache[block][index].data = data;\n }\n actionComplete(args) {\n if (args.requestType === 'delete' || args.requestType === 'save' || args.requestType === 'cancel') {\n this.refreshOffsets();\n this.refreshVirtualElement();\n if (this.isNormaledit) {\n if (args.requestType === 'cancel') {\n this.isCancel = true;\n }\n this.isAdd = false;\n this.editedRowIndex = this.empty;\n this.virtualData = {};\n this.parent.editModule.previousVirtualData = {};\n }\n }\n if (this.parent.enableColumnVirtualization && args.requestType === 'filterafteropen'\n && this.currentInfo.columnIndexes && this.currentInfo.columnIndexes[0] > 0) {\n this.parent.resetFilterDlgPosition(args.columnName);\n }\n }\n resetIsedit() {\n if (this.parent.enableVirtualization && this.isNormaledit) {\n if ((this.parent.editSettings.allowEditing && Object.keys(this.virtualData).length)\n || (this.parent.editSettings.allowAdding && this.isAdd)) {\n this.parent.isEdit = true;\n }\n }\n }\n scrollAfterEdit() {\n if (this.parent.editModule && this.parent.editSettings.allowEditing && this.isNormaledit) {\n if (this.content.querySelector('.e-gridform')) {\n let editForm = this.content.querySelector('.e-editedrow');\n let addForm = this.content.querySelector('.e-addedrow');\n if (editForm || addForm) {\n let rowData = editForm ? extend({}, this.getRowObjectByIndex(this.editedRowIndex))\n : extend({}, this.emptyRowData);\n this.virtualData = this.getVirtualEditedData(rowData);\n }\n }\n }\n }\n createEmptyRowdata() {\n this.parent.getColumns().filter((e) => {\n this.emptyRowData[e.field] = this.empty;\n });\n }\n addActionBegin(args) {\n if (this.isNormaledit) {\n if (!Object.keys(this.emptyRowData).length) {\n this.createEmptyRowdata();\n }\n this.isAdd = true;\n let page = this.parent.pageSettings.currentPage;\n if (page > 1 && this.parent.editSettings.newRowPosition === 'Top') {\n this.isAdd = true;\n this.onActionBegin();\n args.startEdit = false;\n this.content.scrollTop = 0;\n }\n if (page < this.maxPage - 1 && this.parent.editSettings.newRowPosition === 'Bottom') {\n this.isAdd = true;\n this.parent.setProperties({ pageSettings: { currentPage: this.maxPage - 1 } }, true);\n args.startEdit = false;\n this.content.scrollTop = this.offsets[this.offsetKeys.length];\n }\n }\n }\n /** @hidden */\n getRowObjectByIndex(index) {\n let data = this.getRowCollection(index, false, true);\n return data;\n }\n getBlockSize() {\n return this.parent.pageSettings.pageSize >> 1;\n }\n getBlockHeight() {\n return this.getBlockSize() * this.parent.getRowHeight();\n }\n isEndBlock(index) {\n let totalBlocks = this.getTotalBlocks();\n return index >= totalBlocks || index === totalBlocks - 1;\n }\n getGroupedTotalBlocks() {\n let rows = this.parent.vcRows;\n return Math.floor((rows.length / this.getBlockSize()) < 1 ? 1 : rows.length / this.getBlockSize());\n }\n getTotalBlocks() {\n return Math.ceil(this.count / this.getBlockSize());\n }\n getColumnOffset(block) {\n return this.vgenerator.cOffsets[block] | 0;\n }\n getModelGenerator() {\n return new VirtualRowModelGenerator(this.parent);\n }\n resetScrollPosition(action) {\n if (this.actions.some((value) => value === action)) {\n let content = this.parent.getFrozenColumns() ? this.parent.getMovableVirtualContent() : this.content;\n this.preventEvent = content.scrollTop !== 0;\n content.scrollTop = 0;\n }\n if (action !== 'virtualscroll') {\n this.isAdd = false;\n }\n }\n onActionBegin(e) {\n //Update property silently..\n this.parent.setProperties({ pageSettings: { currentPage: 1 } }, true);\n }\n getRows() {\n return this.vgenerator.getRows();\n }\n getRowByIndex(index) {\n if (isGroupAdaptive(this.parent)) {\n return this.parent.getDataRows()[index];\n }\n return this.getRowCollection(index, false);\n }\n getMovableVirtualRowByIndex(index) {\n return this.getRowCollection(index, true);\n }\n getRowCollection(index, isMovable, isRowObject) {\n let prev = this.prevInfo.blockIndexes;\n let startIdx = (!isBlazor() || (isBlazor() && !this.parent.isServerRendered)) ?\n (prev[0] - 1) * this.getBlockSize() : this.startIndex;\n let rowCollection = isMovable ? this.parent.getMovableDataRows() : this.parent.getDataRows();\n let collection = isRowObject ? this.parent.getCurrentViewRecords() : rowCollection;\n let selectedRow = collection[index - startIdx];\n if (!isRowObject && this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n selectedRow = index <= this.parent.frozenRows ? rowCollection[index]\n : rowCollection[(index - startIdx) + this.parent.frozenRows];\n }\n return selectedRow;\n }\n getVirtualRowIndex(index) {\n let prev = this.prevInfo.blockIndexes;\n let startIdx = (prev[0] - 1) * this.getBlockSize();\n return startIdx + index;\n }\n /** @hidden */\n refreshOffsets() {\n let gObj = this.parent;\n let row = 0;\n let bSize = this.getBlockSize();\n let total = isGroupAdaptive(this.parent) ? this.getGroupedTotalBlocks() : this.getTotalBlocks();\n this.prevHeight = this.offsets[total];\n this.maxBlock = total % 2 === 0 ? total - 2 : total - 1;\n this.offsets = {};\n //Row offset update\n let blocks = Array.apply(null, Array(total)).map(() => ++row);\n for (let i = 0; i < blocks.length; i++) {\n let tmp = (this.vgenerator.cache[blocks[i]] || []).length;\n let rem = !isGroupAdaptive(this.parent) ? this.count % bSize : (gObj.vcRows.length % bSize);\n let size = !isGroupAdaptive(this.parent) && blocks[i] in this.vgenerator.cache ?\n tmp * this.parent.getRowHeight() : rem && blocks[i] === total ? rem * this.parent.getRowHeight() :\n this.getBlockHeight();\n // let size: number = this.parent.groupSettings.columns.length && block in this.vgenerator.cache ?\n // tmp * getRowHeight() : this.getBlockHeight();\n this.offsets[blocks[i]] = (this.offsets[blocks[i] - 1] | 0) + size;\n this.tmpOffsets[blocks[i]] = this.offsets[blocks[i] - 1] | 0;\n }\n this.offsetKeys = Object.keys(this.offsets);\n if (isGroupAdaptive(this.parent)) {\n this.parent.vGroupOffsets = this.offsets;\n }\n //Column offset update\n if (this.parent.enableColumnVirtualization) {\n this.vgenerator.refreshColOffsets();\n }\n }\n refreshVirtualElement() {\n this.vgenerator.refreshColOffsets();\n this.setVirtualHeight();\n }\n setVisible(columns) {\n let gObj = this.parent;\n let frozenCols = this.parent.getFrozenColumns();\n let fcntColGrp;\n let mcntColGrp;\n if (frozenCols) {\n fcntColGrp = [].slice.call(this.parent.getFrozenVirtualContent().querySelectorAll('col'));\n mcntColGrp = [].slice.call(this.parent.getMovableVirtualContent().querySelectorAll('col'));\n }\n if (isBlazor() && gObj.isServerRendered) {\n this.parent.notify('setvisibility', columns);\n }\n let rows = [];\n rows = this.getRows();\n let testRow;\n rows.some((r) => { if (r.isDataRow) {\n testRow = r;\n } return r.isDataRow; });\n let needFullRefresh = true;\n if (!gObj.groupSettings.columns.length && testRow) {\n needFullRefresh = false;\n }\n let tr = gObj.getDataRows();\n for (let c = 0, clen = columns.length; c < clen; c++) {\n let column = columns[c];\n let idx = gObj.getNormalizedColumnIndex(column.uid);\n let displayVal = column.visible === true ? '' : 'none';\n let colGrp;\n if (fcntColGrp && mcntColGrp) {\n if (idx >= frozenCols) {\n colGrp = mcntColGrp;\n tr = this.parent.getMovableRows();\n idx = idx - frozenCols;\n }\n else {\n colGrp = fcntColGrp;\n }\n }\n else {\n colGrp = this.getColGroup().children;\n }\n if (idx !== -1 && testRow && idx < testRow.cells.length) {\n setStyleAttribute(colGrp[idx], { 'display': displayVal });\n }\n if (!needFullRefresh) {\n let width;\n if (column.visible) {\n width = this.virtualEle.wrapper.offsetWidth + parseInt(column.width.toString(), 10);\n }\n else {\n width = this.virtualEle.wrapper.offsetWidth - parseInt(column.width.toString(), 10);\n }\n if (width > gObj.width) {\n this.setDisplayNone(tr, idx, displayVal, rows);\n if (this.parent.enableColumnVirtualization) {\n this.virtualEle.setWrapperWidth(width + '');\n }\n this.refreshVirtualElement();\n }\n else {\n needFullRefresh = true;\n }\n }\n if (!this.parent.invokedFromMedia && column.hideAtMedia) {\n this.parent.updateMediaColumns(column);\n }\n this.parent.invokedFromMedia = false;\n }\n if (isBlazor() && this.parent.isServerRendered && needFullRefresh) {\n let inViewIdx = this.parent.inViewIndexes;\n let translateX = this.getColumnOffset(inViewIdx[0] - 1);\n let width = this.getColumnOffset(inViewIdx[inViewIdx.length - 1]) - translateX + '';\n this.parent.notify('refresh-virtual-indices', { requestType: 'virtualScrollRefresh',\n startColumnIndex: inViewIdx[0], endColumnIndex: inViewIdx[inViewIdx.length - 1], axis: 'X',\n VTablewidth: width, translateX: translateX });\n this.parent.notify('setcolumnstyles', {});\n }\n if (needFullRefresh || frozenCols) {\n this.refreshContentRows({ requestType: 'refresh' });\n }\n else {\n this.parent.notify(partialRefresh, { rows: rows, args: { isFrozen: false, rows: rows } });\n }\n }\n selectVirtualRow(args) {\n if (this.activeKey !== 'upArrow' && this.activeKey !== 'downArrow'\n && !this.requestTypes.some((value) => value === this.requestType) && !this.parent.selectionModule.isInteracted) {\n let ele = this.parent.getFrozenColumns() ? this.parent.getMovableVirtualContent()\n : this.parent.getContent().firstElementChild;\n let selectedRow = this.parent.getRowByIndex(args.selectedIndex);\n let rowHeight = this.parent.getRowHeight();\n let eleOffsHeight = ele.offsetHeight;\n if (!selectedRow || this.isRowInView(args.selectedIndex, selectedRow, ele, eleOffsHeight, rowHeight)) {\n this.isSelection = true;\n this.selectedRowIndex = args.selectedIndex;\n let scrollTop = (args.selectedIndex + 1) * rowHeight;\n if (!isNullOrUndefined(scrollTop)) {\n ele.scrollTop = scrollTop;\n }\n }\n }\n this.requestType = this.empty;\n }\n isRowInView(index, selectedRow, ele, eleOffsHeight, rowHeight) {\n if (isBlazor()) {\n let exactTopIndex = ele.scrollTop / rowHeight;\n let exactEndIndex = exactTopIndex + (eleOffsHeight / rowHeight);\n return (index < exactTopIndex || index > exactEndIndex);\n }\n else {\n if (this.parent.frozenRows && index < this.parent.frozenRows) {\n return false;\n }\n let rectTop = selectedRow ? selectedRow.getBoundingClientRect().top : 0;\n return (rectTop < rowHeight || rectTop > eleOffsHeight);\n }\n }\n}\n/**\n * @hidden\n */\nclass VirtualHeaderRenderer extends HeaderRender {\n constructor(parent, locator) {\n super(parent, locator);\n this.virtualEle = new VirtualElementHandler();\n this.gen = new VirtualRowModelGenerator(this.parent);\n this.parent.on(columnVisibilityChanged, this.setVisible, this);\n this.parent.on(refreshVirtualBlock, (e) => e.virtualInfo.sentinelInfo.axis === 'X' ? this.refreshUI() : null, this);\n }\n renderTable() {\n this.gen.refreshColOffsets();\n this.parent.setColumnIndexesInView(this.gen.getColumnIndexes(this.getPanel().querySelector('.e-headercontent')));\n if (isBlazor() && this.parent.isServerRendered) {\n this.parent.notify('refresh-virtual-indices', {\n startColumnIndex: this.parent.contentModule.startColIndex,\n endColumnIndex: this.parent.contentModule.endColIndex, axis: 'X'\n });\n }\n super.renderTable();\n this.virtualEle.table = this.getTable();\n this.virtualEle.content = this.getPanel().querySelector('.e-headercontent');\n if (!this.parent.getFrozenColumns()) {\n this.virtualEle.content.style.position = 'relative';\n }\n this.virtualEle.renderWrapper();\n this.virtualEle.renderPlaceHolder('absolute');\n }\n appendContent(table) {\n this.virtualEle.wrapper.appendChild(table);\n }\n refreshUI() {\n this.setFrozenTable(this.parent.getMovableVirtualContent());\n this.gen.refreshColOffsets();\n this.parent.setColumnIndexesInView(this.gen.getColumnIndexes(this.getPanel().querySelector('.e-headercontent')));\n super.refreshUI();\n this.setFrozenTable(this.parent.getFrozenVirtualContent());\n }\n setVisible(columns) {\n let gObj = this.parent;\n let displayVal;\n let idx;\n let needFullRefresh;\n let frozenCols = this.parent.getFrozenColumns();\n let fhdrColGrp;\n let mhdrColGrp;\n if (frozenCols) {\n fhdrColGrp = [].slice.call(this.parent.getFrozenVirtualHeader().querySelectorAll('col'));\n mhdrColGrp = [].slice.call(this.parent.getMovableVirtualHeader().querySelectorAll('col'));\n }\n for (let c = 0, clen = columns.length; c < clen; c++) {\n let column = columns[c];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n let colGrp;\n if (fhdrColGrp && mhdrColGrp) {\n if (idx >= frozenCols) {\n colGrp = mhdrColGrp;\n idx = idx - frozenCols;\n }\n else {\n colGrp = fhdrColGrp;\n }\n }\n else {\n colGrp = this.getColGroup().children;\n }\n setStyleAttribute(colGrp[idx], { 'display': displayVal });\n if (gObj.enableColumnVirtualization && !gObj.groupSettings.columns.length) {\n let tablewidth;\n if (column.visible) {\n tablewidth = this.virtualEle.wrapper.offsetWidth + parseInt(column.width.toString(), 10);\n }\n else {\n tablewidth = this.virtualEle.wrapper.offsetWidth - parseInt(column.width.toString(), 10);\n }\n if (tablewidth > gObj.width) {\n this.setDisplayNone(column, displayVal);\n this.virtualEle.setWrapperWidth(tablewidth + '');\n this.gen.refreshColOffsets();\n }\n else {\n needFullRefresh = true;\n }\n }\n else {\n needFullRefresh = true;\n }\n if (needFullRefresh && !frozenCols) {\n this.refreshUI();\n }\n }\n if (frozenCols) {\n this.parent.notify(columnPositionChanged, {});\n }\n }\n setFrozenTable(content) {\n if (this.parent.getFrozenColumns() && this.parent.enableColumnVirtualization\n && this.parent.contentModule.isXaxis()) {\n this.parent.contentModule\n .setTable(content.querySelector('.e-table'));\n }\n }\n setDisplayNone(col, displayVal) {\n let frozenCols = this.parent.getFrozenColumns();\n let table = this.getTable();\n if (frozenCols && col.index >= frozenCols) {\n table = this.parent.getMovableVirtualHeader().querySelector('.e-table');\n }\n for (let ele of [].slice.apply(table.querySelectorAll('th.e-headercell'))) {\n if (ele.querySelector('[e-mappinguid]') &&\n ele.querySelector('[e-mappinguid]').getAttribute('e-mappinguid') === col.uid) {\n setStyleAttribute(ele, { 'display': displayVal });\n if (displayVal === '') {\n removeClass([ele], 'e-hide');\n }\n break;\n }\n }\n }\n}\n/**\n * @hidden\n */\nclass VirtualElementHandler {\n renderWrapper(height) {\n if (isBlazor()) {\n this.wrapper = this.content.querySelector('.e-virtualtable') ? this.content.querySelector('.e-virtualtable') :\n createElement('div', { className: 'e-virtualtable' });\n this.wrapper.setAttribute('styles', `min-height:${formatUnit(height)}`);\n }\n else {\n this.wrapper = createElement('div', { className: 'e-virtualtable', styles: `min-height:${formatUnit(height)}` });\n }\n this.wrapper.appendChild(this.table);\n this.content.appendChild(this.wrapper);\n }\n renderPlaceHolder(position = 'relative') {\n if (isBlazor()) {\n this.placeholder = this.content.querySelector('.e-virtualtrack') ? this.content.querySelector('.e-virtualtrack') :\n createElement('div', { className: 'e-virtualtrack' });\n this.placeholder.setAttribute('styles', `position:${position}`);\n }\n else {\n this.placeholder = createElement('div', { className: 'e-virtualtrack', styles: `position:${position}` });\n }\n this.content.appendChild(this.placeholder);\n }\n adjustTable(xValue, yValue) {\n this.wrapper.style.transform = `translate(${xValue}px, ${yValue}px)`;\n }\n setWrapperWidth(width, full) {\n this.wrapper.style.width = width ? `${width}px` : full ? '100%' : '';\n }\n setVirtualHeight(height, width) {\n this.placeholder.style.height = `${height}px`;\n this.placeholder.style.width = width;\n }\n setFreezeWrapperWidth(wrapper, width, full) {\n wrapper.style.width = width ? `${width}px` : full ? '100%' : '';\n }\n}\n\n/**\n * Virtual Scrolling class\n */\nclass VirtualScroll {\n constructor(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.addEventListener();\n }\n getModuleName() {\n return 'virtualscroll';\n }\n instantiateRenderer() {\n this.parent.log(['limitation', 'virtual_height'], 'virtualization');\n let renderer = this.locator.getService('rendererFactory');\n if (!this.parent.getFrozenColumns()) {\n if (this.parent.enableColumnVirtualization) {\n renderer.addRenderer(RenderType.Header, new VirtualHeaderRenderer(this.parent, this.locator));\n }\n renderer.addRenderer(RenderType.Content, new VirtualContentRenderer(this.parent, this.locator));\n }\n this.ensurePageSize();\n }\n ensurePageSize() {\n let rowHeight = this.parent.getRowHeight();\n let vHeight = this.parent.height.toString().indexOf('%') < 0 ? this.parent.height :\n this.parent.element.getBoundingClientRect().height;\n this.blockSize = ~~(vHeight / rowHeight);\n let height = this.blockSize * 2;\n let size = this.parent.pageSettings.pageSize;\n this.parent.setProperties({ pageSettings: { pageSize: size < height ? height : size } }, true);\n if (isBlazor() && this.parent.isServerRendered) {\n this.parent.notify('refresh-virtual-indices', {});\n }\n }\n addEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initialLoad, this.instantiateRenderer, this);\n this.parent.on(columnWidthChanged, this.refreshVirtualElement, this);\n }\n removeEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(initialLoad, this.instantiateRenderer);\n this.parent.off(columnWidthChanged, this.refreshVirtualElement);\n }\n refreshVirtualElement(args) {\n if (this.parent.enableColumnVirtualization && args.module === 'resize') {\n let renderer = this.locator.getService('rendererFactory');\n renderer.getRenderer(RenderType.Content).refreshVirtualElement();\n }\n }\n destroy() {\n this.removeEventListener();\n }\n}\n\n/**\n * Edit render module is used to render grid edit row.\n * @hidden\n */\nclass InlineEditRender {\n /**\n * Constructor for render module\n */\n constructor(parent) {\n this.parent = parent;\n }\n addNew(elements, args) {\n this.isEdit = false;\n let mTbody;\n let tbody;\n if (this.parent.frozenRows && this.parent.editSettings.newRowPosition === 'Top') {\n tbody = this.parent.getHeaderContent().querySelector('tbody');\n }\n else {\n tbody = this.parent.getContentTable().querySelector('tbody');\n }\n args.row = this.parent.createElement('tr', { className: 'e-row e-addedrow' });\n if (tbody.querySelector('.e-emptyrow')) {\n tbody.querySelector('.e-emptyrow').remove();\n if (this.parent.getFrozenColumns()) {\n let moveTbody = this.parent.getContent().querySelector('.e-movablecontent').querySelector('tbody');\n moveTbody.firstElementChild.remove();\n }\n }\n this.parent.editSettings.newRowPosition === 'Top' ? tbody.insertBefore(args.row, tbody.firstChild) : tbody.appendChild(args.row);\n args.row.appendChild(this.getEditElement(elements, false, undefined, args, true));\n this.parent.editModule.checkLastRow(args.row, args);\n if (this.parent.getFrozenColumns()) {\n let mEle = this.renderMovableform(args.row, args);\n if (this.parent.frozenRows && this.parent.editSettings.newRowPosition === 'Top') {\n mTbody = this.parent.getHeaderContent().querySelector('.e-movableheader').querySelector('tbody');\n }\n else {\n mTbody = this.parent.getContent().querySelector('.e-movablecontent').querySelector('tbody');\n }\n this.parent.editSettings.newRowPosition === 'Top' ? mTbody.insertBefore(mEle, mTbody.firstChild) : mTbody.appendChild(mEle);\n args.row.querySelector('.e-normaledit').setAttribute('colspan', this.parent.getVisibleFrozenColumns() + '');\n mEle.setAttribute('colspan', '' + (this.parent.getVisibleColumns().length - this.parent.getVisibleFrozenColumns()));\n if (this.parent.height === 'auto') {\n this.parent.notify(frozenHeight, {});\n }\n }\n }\n renderMovableform(ele, args) {\n let mEle = ele.cloneNode(true);\n let form = args.movableForm = mEle.querySelector('form');\n if (this.parent.editSettings.template) {\n form.innerHTML = '';\n this.appendChildren(form, args.rowData, false);\n return mEle;\n }\n this.renderMovable(ele, mEle);\n mEle.querySelector('colgroup').innerHTML = this.parent.getHeaderContent()\n .querySelector('.e-movableheader').querySelector('colgroup').innerHTML;\n return mEle;\n }\n updateFreezeEdit(row, td) {\n td = td.concat([].slice.call(this.getFreezeRow(row).querySelectorAll('td.e-rowcell')));\n return td;\n }\n getFreezeRow(row) {\n if (this.parent.getFrozenColumns()) {\n let idx = parseInt(row.getAttribute('aria-rowindex'), 10);\n let fCont = this.parent.getContent().querySelector('.e-frozencontent').querySelector('tbody');\n let mCont = this.parent.getContent().querySelector('.e-movablecontent').querySelector('tbody');\n let fHdr = this.parent.getHeaderContent().querySelector('.e-frozenheader').querySelector('tbody');\n let mHdr = this.parent.getHeaderContent().querySelector('.e-movableheader').querySelector('tbody');\n if (this.parent.frozenRows && idx >= this.parent.frozenRows) {\n idx -= this.parent.frozenRows;\n }\n if (fCont.contains(row)) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n return this.parent.getMovableRowByIndex(idx);\n }\n return mCont.children[idx];\n }\n else if (mCont.contains(row)) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n return this.parent.getRowByIndex(idx);\n }\n return fCont.children[idx];\n }\n else if (fHdr.contains(row)) {\n return mHdr.children[idx];\n }\n else if (mHdr.contains(row)) {\n return fHdr.children[idx];\n }\n }\n return row;\n }\n update(elements, args) {\n this.isEdit = true;\n let cloneRow = 'cloneRow';\n if (closest(args.row, '.e-movablecontent')) {\n args.row = this.getFreezeRow(args.row);\n if (isBlazor() && this.parent.isServerRendered) {\n args[cloneRow] = args.row.cloneNode(true);\n }\n }\n if (isBlazor() && this.parent.isServerRendered) {\n args.row.parentNode.insertBefore(args[cloneRow], args.row);\n args.row.classList.add('e-hiddenrow');\n let tdElement = [].slice.call(args[cloneRow].querySelectorAll('td.e-rowcell'));\n args[cloneRow].innerHTML = '';\n tdElement = this.updateFreezeEdit(args[cloneRow], tdElement);\n args[cloneRow].appendChild(this.getEditElement(elements, true, tdElement, args, true));\n args[cloneRow].classList.add('e-editedrow');\n this.refreshFreezeEdit(args[cloneRow], args);\n }\n else {\n let tdElement = [].slice.call(args.row.querySelectorAll('td.e-rowcell'));\n args.row.innerHTML = '';\n tdElement = this.updateFreezeEdit(args.row, tdElement);\n args.row.appendChild(this.getEditElement(elements, true, tdElement, args, true));\n args.row.classList.add('e-editedrow');\n this.parent.editModule.checkLastRow(args.row, args);\n this.refreshFreezeEdit(args.row, args);\n }\n }\n refreshFreezeEdit(row, args) {\n let td = row.firstChild;\n let fCls;\n let cont;\n let frozen = 'frozen';\n let cloneFrozen = 'cloneFrozen';\n let idx = parseInt(row.getAttribute('aria-rowindex'), 10);\n if (this.parent.getFrozenColumns()) {\n if (idx < this.parent.frozenRows) {\n cont = this.parent.getHeaderContent();\n fCls = '.e-frozenheader';\n }\n else {\n cont = this.parent.getContent();\n fCls = '.e-frozencontent';\n }\n let mTd = td.cloneNode(true);\n let form = args.movableForm = mTd.querySelector('form');\n if (this.parent.editSettings.template) {\n form.innerHTML = '';\n this.appendChildren(form, args.rowData, false);\n }\n let fRows;\n if (cont.querySelector(fCls).contains(row)) {\n fRows = this.parent.getMovableRowByIndex(idx);\n if (isBlazor() && this.parent.isServerRendered) {\n args[frozen] = fRows;\n args[cloneFrozen] = fRows.cloneNode(true);\n fRows.classList.add('e-hiddenrow');\n fRows.parentNode.insertBefore(args[cloneFrozen], fRows);\n this.updateFrozenCont(args[cloneFrozen], td, mTd);\n }\n else {\n this.updateFrozenCont(fRows, td, mTd);\n }\n }\n else {\n fRows = this.parent.getRowByIndex(idx);\n if (isBlazor() && this.parent.isServerRendered) {\n args[frozen] = fRows;\n args[cloneFrozen] = fRows.cloneNode(true);\n fRows.parentNode.insertBefore(args[cloneFrozen], fRows);\n fRows.classList.add('e-hiddenrow');\n this.updateFrozenCont(args[cloneFrozen], mTd, td);\n }\n else {\n this.updateFrozenCont(fRows, mTd, td);\n }\n }\n if (isBlazor() && this.parent.isServerRendered) {\n args[cloneFrozen].appendChild(mTd);\n args[cloneFrozen].classList.add('e-editedrow');\n }\n else {\n fRows.appendChild(mTd);\n fRows.classList.add('e-editedrow');\n }\n alignFrozenEditForm(args.movableForm.querySelector('td:not(.e-hide)'), args.form.querySelector('td:not(.e-hide)'));\n }\n }\n updateFrozenCont(row, ele, mEle) {\n row.innerHTML = '';\n if (!this.parent.editSettings.template) {\n this.renderMovable(ele, mEle);\n mEle.querySelector('colgroup').innerHTML = this.parent.getHeaderContent()\n .querySelector('.e-movableheader').querySelector('colgroup').innerHTML;\n }\n ele.setAttribute('colspan', this.parent.getVisibleFrozenColumns() + '');\n mEle.setAttribute('colspan', this.parent.getVisibleColumns().length - this.parent.getVisibleFrozenColumns() + '');\n }\n renderMovable(ele, mEle) {\n let frzCols = this.parent.getFrozenColumns();\n mEle.querySelector('tr').innerHTML = '';\n for (let i = frzCols; i < this.parent.getColumns().length; i++) {\n mEle.querySelector('tr').appendChild(ele.querySelector('tr').removeChild(ele.querySelector('tr').children[frzCols]));\n }\n }\n getEditElement(elements, isEdit, tdElement, args, isFrozen) {\n let gObj = this.parent;\n let gLen = 0;\n let isDetail = !isNullOrUndefined(gObj.detailTemplate) || !isNullOrUndefined(gObj.childGrid) ? 1 : 0;\n if (gObj.allowGrouping) {\n gLen = gObj.groupSettings.columns.length;\n }\n let td = this.parent.createElement('td', {\n className: 'e-editcell e-normaledit',\n attrs: { colspan: (gObj.getVisibleColumns().length - gObj.getVisibleFrozenColumns() + this.parent.getIndentCount()).toString() }\n });\n let form = args.form =\n this.parent.createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n if (this.parent.editSettings.template) {\n this.appendChildren(form, args.rowData, isFrozen);\n td.appendChild(form);\n return td;\n }\n let table = this.parent.createElement('table', { className: 'e-table e-inline-edit', attrs: { cellspacing: '0.25' } });\n table.appendChild(gObj.getContentTable().querySelector('colgroup').cloneNode(true));\n let tbody = this.parent.createElement('tbody');\n let tr = this.parent.createElement('tr');\n let i = 0;\n if (isDetail) {\n tr.insertBefore(this.parent.createElement('td', { className: 'e-detailrowcollapse' }), tr.firstChild);\n }\n if (gObj.isRowDragable()) {\n tr.appendChild(this.parent.createElement('td', { className: 'e-dragindentcell' }));\n }\n while (i < gLen) {\n tr.appendChild(this.parent.createElement('td', { className: 'e-indentcell' }));\n i++;\n }\n let m = 0;\n i = 0;\n while ((isEdit && m < tdElement.length && i < gObj.getColumns().length) || i < gObj.getColumns().length) {\n let span = isEdit ? tdElement[m].getAttribute('colspan') : null;\n let col = gObj.getColumns()[i];\n let td = this.parent.createElement('td', {\n className: 'e-rowcell', attrs: { style: 'text-align:' + (col.textAlign ? col.textAlign : ''), 'colspan': span ? span : '' }\n });\n if (col.visible) {\n td.appendChild(elements[col.uid]);\n if (col.editType === 'booleanedit') {\n td.classList.add('e-boolcell');\n }\n else if (col.commands || col.commandsTemplate) {\n addClass([td], 'e-unboundcell');\n }\n }\n else {\n td.classList.add('e-hide');\n }\n tr.appendChild(td);\n i = span ? i + parseInt(span, 10) : i + 1;\n m++;\n }\n tbody.appendChild(tr);\n table.appendChild(tbody);\n form.appendChild(table);\n td.appendChild(form);\n return td;\n }\n removeEventListener() {\n //To destroy the renderer\n }\n appendChildren(form, data, isFrozen) {\n let dummyData = extend({}, data, { isAdd: !this.isEdit, isFrozen: isFrozen }, true);\n let editTemplateID = this.parent.element.id + 'editSettingsTemplate';\n appendChildren(form, this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID));\n let setRules = () => {\n let cols = this.parent.getColumns();\n for (let i = 0; i < cols.length; i++) {\n if (cols[i].validationRules) {\n this.parent.editModule.formObj.rules[cols[i].field] =\n cols[i].validationRules;\n }\n }\n };\n updateBlazorTemplate(editTemplateID, 'Template', this.parent.editSettings, true, setRules);\n }\n}\n\n/**\n * Edit render module is used to render grid edit row.\n * @hidden\n */\nclass BatchEditRender {\n /**\n * Constructor for render module\n */\n constructor(parent) {\n this.parent = parent;\n }\n update(elements, args) {\n if (isBlazor() && this.parent.isServerRendered) {\n let cloneCell = 'cloneCell';\n args[cloneCell].innerHTML = '';\n args[cloneCell].appendChild(this.getEditElement(elements, args));\n args[cloneCell].classList.remove('e-ellipsistooltip');\n args[cloneCell].classList.add('e-editedbatchcell');\n classList(args.row, ['e-editedrow', 'e-batchrow'], []);\n }\n else {\n args.cell.innerHTML = '';\n args.cell.appendChild(this.getEditElement(elements, args));\n args.cell.classList.remove('e-ellipsistooltip');\n args.cell.classList.add('e-editedbatchcell');\n classList(args.row, ['e-editedrow', 'e-batchrow'], []);\n }\n }\n getEditElement(elements, args) {\n let gObj = this.parent;\n let form = this.parent\n .createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n form.appendChild(elements[args.columnObject.uid]);\n if (args.columnObject.editType === 'booleanedit') {\n args.cell.classList.add('e-boolcell');\n }\n if (!args.columnObject.editType) {\n args.cell.classList.add('e-inputbox');\n }\n return form;\n }\n removeEventListener() {\n //To destroy the renderer\n }\n}\n\n/**\n * Edit render module is used to render grid edit row.\n * @hidden\n */\nclass DialogEditRender {\n /**\n * Constructor for render module\n */\n constructor(parent, serviceLocator) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(dialogDestroy, this.destroy, this);\n this.parent.on(destroy, this.destroy, this);\n }\n setLocaleObj() {\n this.l10n = this.serviceLocator.getService('localization');\n }\n addNew(elements, args) {\n this.isEdit = false;\n this.createDialog(elements, args);\n }\n update(elements, args) {\n this.isEdit = true;\n this.createDialog(elements, args);\n }\n createDialog(elements, args) {\n let gObj = this.parent;\n this.dialog = this.parent.createElement('div', { id: gObj.element.id + '_dialogEdit_wrapper', styles: 'width: auto' });\n this.dialog.setAttribute('aria-label', 'Dialog edit');\n gObj.element.appendChild(this.dialog);\n this.setLocaleObj();\n // let position: PositionDataModel = this.parent.element.getBoundingClientRect().height < 400 ?\n // { X: 'center', Y: 'top' } : { X: 'center', Y: 'center' };\n this.dialogObj = new Dialog(extend({\n header: gObj.editSettings.headerTemplate ? this.getDialogEditTemplateElement('HeaderTemplate', args) :\n this.isEdit ? this.l10n.getConstant('EditFormTitle') + args.primaryKeyValue[0] :\n this.l10n.getConstant('AddFormTitle'), isModal: true, visible: true, cssClass: 'e-edit-dialog',\n content: this.getEditElement(elements, args),\n showCloseIcon: true,\n allowDragging: true,\n // position: position,\n close: this.dialogClose.bind(this),\n closeOnEscape: true, width: gObj.editSettings.template ? 'auto' : '330px',\n target: args.target ? args.target : document.body, animationSettings: { effect: 'None' },\n footerTemplate: gObj.editSettings.footerTemplate ? this.getDialogEditTemplateElement('FooterTemplate', args) : null,\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: { content: this.l10n.getConstant('SaveButton'), cssClass: 'e-primary', isPrimary: true }\n },\n { click: this.btnClick.bind(this), buttonModel: { cssClass: 'e-flat', content: this.l10n.getConstant('CancelButton') } }]\n }, gObj.editSettings.dialog ? (gObj.editSettings.dialog.params || {}) : {}));\n if (!isBlazor()) {\n args.dialog = this.dialogObj;\n }\n else {\n this.dialogObj.locale = this.parent.locale;\n }\n let isStringTemplate = 'isStringTemplate';\n this.dialogObj[isStringTemplate] = true;\n this.dialogObj.appendTo(this.dialog);\n applyBiggerTheme(this.parent.element, this.dialogObj.element.parentElement);\n }\n btnClick(e) {\n if (this.l10n.getConstant('CancelButton').toLowerCase() === e.target.innerText.trim().toLowerCase()) {\n this.dialogClose();\n }\n else {\n this.parent.endEdit();\n }\n }\n dialogClose() {\n this.parent.closeEdit();\n }\n destroy(args) {\n let dialogEditTemplates = ['template', 'headerTemplate', 'footerTemplate'];\n for (let i = 0; i < dialogEditTemplates.length; i++) {\n if (this.parent.editSettings[dialogEditTemplates[i]]) {\n let templateName = dialogEditTemplates[i].charAt(0).toUpperCase() + dialogEditTemplates[i].slice(1);\n let editTemplateID = this.parent.element.id + 'editSettings' + templateName;\n updateBlazorTemplate(editTemplateID, templateName, this.parent.editSettings);\n }\n }\n this.parent.notify(destroyForm, {});\n this.parent.isEdit = false;\n this.parent.notify(toolbarRefresh, {});\n if (this.dialog && !this.dialogObj.isDestroyed) {\n this.dialogObj.destroy();\n remove(this.dialog);\n }\n }\n getDialogEditTemplateElement(dialogTemp, args) {\n let tempDiv = this.parent.createElement('div', { className: 'e-dialog' + dialogTemp });\n let dummyData = extend({}, args.rowData, { isAdd: !this.isEdit }, true);\n let templateID = this.parent.element.id + 'editSettings' + dialogTemp;\n appendChildren(tempDiv, this.parent.getEditHeaderTemplate()(dummyData, this.parent, 'editSettings' + dialogTemp, templateID));\n updateBlazorTemplate(templateID, dialogTemp, this.parent.editSettings);\n return tempDiv;\n }\n getEditElement(elements, args) {\n let gObj = this.parent;\n let div = this.parent.createElement('div', { className: this.isEdit ? 'e-editedrow' : 'e-insertedrow' });\n let form = args.form =\n this.parent.createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n if (this.parent.editSettings.template) {\n let editTemplateID = this.parent.element.id + 'editSettingsTemplate';\n let dummyData = extend({}, args.rowData, { isAdd: !this.isEdit }, true);\n appendChildren(form, this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID));\n let setRules = () => {\n let columns = this.parent.getColumns();\n for (let i = 0; i < columns.length; i++) {\n if (columns[i].validationRules) {\n this.parent.editModule.formObj.rules[columns[i].field] =\n columns[i].validationRules;\n }\n }\n };\n updateBlazorTemplate(editTemplateID, 'Template', this.parent.editSettings, true, setRules);\n div.appendChild(form);\n return div;\n }\n let table = this.parent.createElement('table', { className: 'e-table', attrs: { cellspacing: '6px' } });\n let tbody = this.parent.createElement('tbody');\n let cols = gObj.getColumns();\n for (let i = 0; i < cols.length; i++) {\n if (this.parent.editModule.checkColumnIsGrouped(cols[i]) || cols[i].commands || cols[i].commandsTemplate) {\n continue;\n }\n let tr = this.parent.createElement('tr');\n let dataCell = this.parent.createElement('td', {\n className: 'e-rowcell', attrs: {\n style: 'text-align:' + (this.parent.enableRtl ? 'right' : 'left') + ';width:190px'\n }\n });\n let label = this.parent.createElement('label', { innerHTML: cols[i].field });\n elements[cols[i].uid].classList.remove('e-input');\n dataCell.appendChild(elements[cols[i].uid]);\n tr.appendChild(dataCell);\n tbody.appendChild(tr);\n }\n table.appendChild(tbody);\n form.appendChild(table);\n div.appendChild(form);\n return div;\n }\n removeEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(dialogDestroy, this.destroy);\n this.parent.off(destroy, this.destroy);\n }\n}\n\n/**\n * Edit render module is used to render grid edit row.\n * @hidden\n */\nclass EditRender {\n /**\n * Constructor for render module\n */\n constructor(parent, serviceLocator) {\n //Internal variables \n this.editType = {\n 'Inline': InlineEditRender,\n 'Normal': InlineEditRender, 'Batch': BatchEditRender, 'Dialog': DialogEditRender\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.renderer = new this.editType[this.parent.editSettings.mode](parent, serviceLocator);\n this.focus = serviceLocator.getService('focus');\n }\n addNew(args) {\n this.renderer.addNew(this.getEditElements(args), args);\n this.convertWidget(args);\n }\n update(args) {\n this.renderer.update(this.getEditElements(args), args);\n this.parent.notify(beforeStartEdit, args);\n this.convertWidget(args);\n }\n convertWidget(args) {\n let gObj = this.parent;\n let isFocused;\n let cell;\n let value;\n let fForm;\n let frzCols = gObj.getFrozenColumns();\n let form = gObj.editSettings.mode === 'Dialog' ?\n document.querySelector('#' + gObj.element.id + '_dialogEdit_wrapper').querySelector('.e-gridform') :\n gObj.element.querySelector('.e-gridform');\n if (frzCols && gObj.editSettings.mode === 'Normal') {\n let rowIndex = parseInt(args.row.getAttribute('aria-rowindex'), 10);\n if (gObj.frozenRows && ((args.requestType === 'add' && gObj.editSettings.newRowPosition === 'Top')\n || rowIndex < gObj.frozenRows)) {\n fForm = gObj.element.querySelector('.e-movableheader').querySelector('.e-gridform');\n }\n else {\n fForm = gObj.element.querySelector('.e-movablecontent').querySelector('.e-gridform');\n }\n }\n let cols = gObj.editSettings.mode !== 'Batch' ? gObj.getColumns() : [gObj.getColumnByField(args.columnName)];\n for (let col of cols) {\n if (this.parent.editSettings.template && !isNullOrUndefined(col.field)) {\n let cellArgs = extend({}, args);\n cellArgs.element = form.querySelector('[name=' + getComplexFieldID(col.field) + ']');\n if (isNullOrUndefined(cellArgs.element) && frzCols) {\n cellArgs.element = fForm.querySelector('[name=' + getComplexFieldID(col.field) + ']');\n }\n if (typeof col.edit.write === 'string') {\n getObject(col.edit.write, window)(cellArgs);\n }\n else {\n col.edit.write(cellArgs);\n }\n continue;\n }\n if (this.parent.editModule.checkColumnIsGrouped(col) || col.commands) {\n continue;\n }\n value = (col.valueAccessor(col.field, args.rowData, col));\n if (frzCols && cols.indexOf(col) >= frzCols && gObj.editSettings.mode === 'Normal') {\n cell = fForm.querySelector('[e-mappinguid=' + col.uid + ']');\n }\n else {\n cell = form.querySelector('[e-mappinguid=' + col.uid + ']');\n }\n let temp = col.edit.write;\n if (!isNullOrUndefined(cell)) {\n if (typeof temp === 'string') {\n temp = getObject(temp, window);\n temp({\n rowData: args.rowData, element: cell, column: col, requestType: args.requestType, row: args.row,\n foreignKeyData: col.isForeignColumn() && getObject(col.field, args.foreignKeyData)\n });\n }\n else {\n col.edit.write({\n rowData: args.rowData, element: cell, column: col, requestType: args.requestType, row: args.row,\n foreignKeyData: col.isForeignColumn() && getObject(col.field, args.foreignKeyData)\n });\n }\n if (!isFocused && !cell.getAttribute('disabled')) {\n this.focusElement(cell, args.type);\n isFocused = true;\n }\n }\n }\n if (frzCols !== 0 && !this.parent.allowTextWrap && ((args.requestType === 'add') || args.requestType === 'beginEdit')\n && this.parent.editSettings.mode !== 'Dialog' && !isNullOrUndefined(form) && !isNullOrUndefined(fForm)) {\n let mTdElement = (fForm.querySelector('tr').children[0]);\n let fTdElement = (form.querySelector('tr').children[0]);\n if (fTdElement.offsetHeight > mTdElement.offsetHeight) {\n mTdElement.style.height = fTdElement.offsetHeight + 'px';\n }\n else {\n fTdElement.style.height = mTdElement.offsetHeight + 'px';\n }\n }\n }\n focusElement(elem, type) {\n let chkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(chkBox)) {\n chkBox.nextElementSibling.classList.add('e-focus');\n }\n if (this.parent.editSettings.mode === 'Batch') {\n this.focus.onClick({ target: closest(elem, 'td') }, true);\n }\n else {\n let isFocus = this.parent.enableVirtualization && this.parent.editSettings.mode === 'Normal' ? false : true;\n if (isFocus || (this.parent.enableVirtualization && this.parent.editSettings.newRowPosition === 'Bottom'\n && parentsUntil(elem, 'e-addedrow'))) {\n elem.focus();\n }\n else {\n // tslint:disable-next-line:no-any\n elem.focus({ preventScroll: true });\n }\n }\n if (elem.classList.contains('e-defaultcell')) {\n elem.setSelectionRange(elem.value.length, elem.value.length);\n }\n }\n getEditElements(args) {\n let gObj = this.parent;\n let elements = {};\n let cols = gObj.editSettings.mode !== 'Batch' ? gObj.getColumns() : [gObj.getColumnByField(args.columnName)];\n if (this.parent.editSettings.template) {\n return {};\n }\n for (let i = 0, len = cols.length; i < len; i++) {\n let col = cols[i];\n if (this.parent.editModule.checkColumnIsGrouped(col)) {\n continue;\n }\n if (col.commands || col.commandsTemplate) {\n let cells;\n let cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n let model = new RowModelGenerator(this.parent);\n let cellRenderer = cellRendererFact.getCellRenderer(CellType.CommandColumn);\n cells = model.generateRows(args.rowData)[0].cells;\n let cell = cells.filter((cell) => cell.rowID);\n let td = cellRenderer.render(cell[i], args.rowData, { 'index': args.row ? args.row.getAttribute('aria-rowindex') : 0 });\n let div = td.firstElementChild;\n div.setAttribute('textAlign', td.getAttribute('textAlign'));\n elements[col.uid] = div;\n continue;\n }\n let value = (col.valueAccessor(col.field, args.rowData, col));\n let tArgs = { column: col, value: value, type: args.requestType, data: args.rowData };\n let temp = col.edit.create;\n let input;\n if (col.editTemplate) {\n input = this.parent.createElement('span', { attrs: { 'e-mappinguid': col.uid } });\n let tempID = this.parent.element.id + col.uid + 'editTemplate';\n let tempData = extend({}, {}, args.rowData, true);\n let template = col.getEditTemplate()(tempData, this.parent, 'editTemplate', tempID);\n /* tslint:disable-next-line:no-any */\n this.parent.isReact && this.parent.editSettings.mode === 'Batch' ?\n setTimeout(() => { appendChildren(input, template); }) : appendChildren(input, template);\n if (isBlazor()) {\n let setRules = (ruleColumn) => {\n let column = ruleColumn;\n let func = () => {\n this.parent.editModule.formObj.rules[column.field] = column.validationRules;\n };\n return func;\n };\n updateBlazorTemplate(tempID, 'EditTemplate', col, true, setRules(col));\n }\n }\n else {\n if (typeof temp === 'string') {\n temp = getObject(temp, window);\n input = temp(tArgs);\n }\n else {\n input = col.edit.create(tArgs);\n }\n if (typeof input === 'string') {\n let div = this.parent.createElement('div');\n div.innerHTML = input;\n input = div.firstChild;\n }\n let isInput = input.tagName !== 'input' && input.querySelectorAll('input').length;\n let complexFieldName = getComplexFieldID(col.field);\n attributes(isInput ? input.querySelector('input') : input, {\n name: complexFieldName, 'e-mappinguid': col.uid,\n id: gObj.element.id + complexFieldName\n });\n classList(input, ['e-input', 'e-field'], []);\n if (col.textAlign === 'Right') {\n input.classList.add('e-ralign');\n }\n if ((col.isPrimaryKey || col.isIdentity) && args.requestType === 'beginEdit' ||\n (col.isIdentity && args.requestType === 'add')) { // already disabled in cell plugins\n input.setAttribute('disabled', '');\n }\n }\n elements[col.uid] = input;\n }\n return elements;\n }\n destroy() {\n this.renderer.removeEventListener();\n }\n}\n\n/**\n * `BooleanEditCell` is used to handle boolean cell type editing.\n * @hidden\n */\nclass BooleanEditCell {\n constructor(parent) {\n this.activeClasses = ['e-selectionbackground', 'e-active'];\n this.parent = parent;\n }\n create(args) {\n let col = args.column;\n let classNames = 'e-field e-boolcell';\n if (col.type === 'checkbox') {\n classNames = 'e-field e-boolcell e-edit-checkselect';\n }\n let complexFieldName = getComplexFieldID(args.column.field);\n return this.parent.createElement('input', {\n className: classNames, attrs: {\n type: 'checkbox', value: args.value, 'e-mappinguid': col.uid,\n id: this.parent.element.id + complexFieldName,\n name: complexFieldName\n }\n });\n }\n read(element) {\n return element.checked;\n }\n write(args) {\n let selectChkBox;\n let chkState;\n let isAddRow = args.requestType === 'add' || args.row.classList.contains('e-addedrow');\n if (!isNullOrUndefined(args.row)) {\n selectChkBox = args.row.querySelector('.e-edit-checkselect');\n }\n if (getObject(args.column.field, args.rowData)) {\n chkState = JSON.parse(getObject(args.column.field, args.rowData).toString().toLowerCase());\n }\n if (!isNullOrUndefined(selectChkBox) && args.column.type === 'checkbox') {\n this.editType = this.parent.editSettings.mode;\n this.editRow = args.row;\n if (args.requestType !== 'add') {\n let row = this.parent.getRowObjectFromUID(args.row.getAttribute('data-uid'));\n chkState = row ? row.isSelected : false;\n }\n addRemoveActiveClasses([].slice.call(args.row.querySelectorAll('.e-rowcell')), chkState, ...this.activeClasses);\n }\n this.obj = new CheckBox(extend({\n label: this.parent.editSettings.mode !== 'Dialog' ? ' ' : args.column.headerText,\n checked: chkState,\n disabled: !isEditable(args.column, args.requestType, args.element), enableRtl: this.parent.enableRtl,\n change: this.checkBoxChange.bind(this)\n }, args.column.edit.params));\n if (isBlazor()) {\n this.obj.locale = this.parent.locale;\n }\n this.obj.appendTo(args.element);\n }\n checkBoxChange(args) {\n if (this.editRow && this.editType !== 'Dialog') {\n let add = false;\n if (!args.checked) {\n this.editRow.removeAttribute('aria-selected');\n }\n else {\n add = true;\n this.editRow.setAttribute('aria-selected', add.toString());\n }\n addRemoveActiveClasses([].slice.call(this.editRow.querySelectorAll('.e-rowcell')), add, ...this.activeClasses);\n }\n }\n destroy() {\n if (this.obj) {\n this.obj.destroy();\n }\n }\n}\n\n/**\n * `DropDownEditCell` is used to handle dropdown cell type editing.\n * @hidden\n */\nclass DropDownEditCell {\n constructor(parent) {\n //constructor\n this.parent = parent;\n this.flag = false;\n }\n create(args) {\n //create\n let complexFieldName = getComplexFieldID(args.column.field);\n return this.parent.createElement('input', {\n className: 'e-field', attrs: {\n id: this.parent.element.id + complexFieldName,\n name: complexFieldName, type: 'text', 'e-mappinguid': args.column.uid,\n }\n });\n }\n write(args) {\n this.column = args.column;\n let isInline = this.parent.editSettings.mode !== 'Dialog';\n let pred = new Predicate(args.column.field, 'notequal', null, true, false);\n this.obj = new DropDownList(extend({\n dataSource: this.parent.dataSource instanceof DataManager ?\n this.parent.dataSource : new DataManager(this.parent.dataSource),\n query: new Query().where(pred).select(args.column.field), enabled: isEditable(args.column, args.requestType, args.element),\n fields: { value: args.column.field },\n value: getObject(args.column.field, args.rowData),\n enableRtl: this.parent.enableRtl, actionComplete: this.ddActionComplete.bind(this),\n created: this.dropdownCreated.bind(this),\n placeholder: isInline ? '' : args.column.headerText, popupHeight: '200px',\n floatLabelType: isInline ? 'Never' : 'Always', open: this.dropDownOpen.bind(this),\n sortOrder: 'Ascending'\n }, args.column.edit.params));\n this.obj.query.params = this.parent.query.params;\n if (isBlazor()) {\n this.obj.locale = this.parent.locale;\n }\n this.obj.appendTo(args.element);\n /* tslint:disable-next-line:no-any */\n args.element.setAttribute('name', getComplexFieldID(args.column.field));\n }\n read(element) {\n return element.ej2_instances[0].value;\n }\n dropdownCreated(e) {\n this.flag = true;\n }\n ddActionComplete(e) {\n e.result = DataUtil.distinct(e.result, this.obj.fields.value, true);\n if (this.flag && this.column.dataSource) {\n if ('result' in this.column.dataSource) {\n this.column.dataSource.result = e.result;\n }\n else if (this.column.dataSource instanceof DataManager) {\n this.column.dataSource.dataSource.json = e.result;\n }\n }\n this.flag = false;\n }\n dropDownOpen(args) {\n let dlgElement = parentsUntil(this.obj.element, 'e-dialog');\n if (this.parent.editSettings.mode === 'Dialog' && !isNullOrUndefined(dlgElement)) {\n let dlgObj = document.querySelector('#' + dlgElement.id).ej2_instances[0];\n args.popup.element.style.zIndex = (dlgObj.zIndex + 1).toString();\n }\n }\n destroy() {\n if (this.obj) {\n this.obj.destroy();\n }\n }\n}\n\n/**\n * `NumericEditCell` is used to handle numeric cell type editing.\n * @hidden\n */\nclass NumericEditCell {\n constructor(parent) {\n this.parent = parent;\n }\n keyEventHandler(args) {\n if (args.keyCode === 13 || args.keyCode === 9) {\n let evt = document.createEvent('HTMLEvents');\n evt.initEvent('change', false, true);\n /* tslint:disable-next-line:no-any */\n this.dispatchEvent(evt);\n }\n }\n create(args) {\n let complexFieldName = getComplexFieldID(args.column.field);\n this.instances = new Internationalization(this.parent.locale);\n return this.parent.createElement('input', {\n className: 'e-field', attrs: {\n id: this.parent.element.id + complexFieldName,\n name: complexFieldName, 'e-mappinguid': args.column.uid\n }\n });\n }\n read(element) {\n return this.obj.value;\n }\n write(args) {\n let col = args.column;\n let isInline = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new NumericTextBox(extend({\n value: parseFloat(getObject(args.column.field, args.rowData)),\n enableRtl: this.parent.enableRtl,\n placeholder: isInline ? '' : args.column.headerText,\n enabled: isEditable(args.column, args.requestType, args.element),\n floatLabelType: this.parent.editSettings.mode !== 'Dialog' ? 'Never' : 'Always',\n locale: this.parent.locale,\n }, col.edit.params));\n args.element.setAttribute('name', getComplexFieldID(args.column.field));\n this.obj.appendTo(args.element);\n this.obj.element.addEventListener('keydown', this.keyEventHandler);\n }\n destroy() {\n if (this.obj && !this.obj.isDestroyed) {\n this.obj.element.removeEventListener('keydown', this.keyEventHandler);\n this.obj.destroy();\n }\n }\n}\n\n/**\n * `DefaultEditCell` is used to handle default cell type editing.\n * @hidden\n */\nclass DefaultEditCell {\n constructor(parent) {\n this.parent = parent;\n }\n create(args) {\n let col = args.column;\n let input = this.parent.createElement('input', {\n className: 'e-field e-input e-defaultcell', attrs: {\n type: 'text', value: !isNullOrUndefined(args.value) ? args.value : '', 'e-mappinguid': col.uid,\n id: this.parent.element.id + getComplexFieldID(col.field), name: getComplexFieldID(col.field),\n style: 'text-align:' + col.textAlign,\n }\n });\n return input;\n }\n read(element) {\n return element.value;\n }\n write(args) {\n let col = args.column;\n let isInline = this.parent.editSettings.mode !== 'Dialog';\n let inputargs = {\n element: args.element, floatLabelType: this.parent.editSettings.mode !== 'Dialog' ? 'Never' : 'Always',\n properties: {\n enableRtl: this.parent.enableRtl, enabled: isEditable(args.column, args.requestType, args.element),\n placeholder: isInline ? '' : args.column.headerText\n }\n };\n Input.createInput(inputargs, this.parent.createElement);\n }\n}\n\n/**\n * `NormalEdit` module is used to handle normal('inline, dialog, external') editing actions.\n * @hidden\n */\nclass NormalEdit {\n constructor(parent, serviceLocator, renderer) {\n this.args = {};\n this.currentVirtualData = {};\n this.parent = parent;\n this.renderer = renderer;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n clickHandler(e) {\n let target = e.target;\n let gObj = this.parent;\n if ((((parentsUntil(target, 'e-gridcontent') &&\n parentsUntil(parentsUntil(target, 'e-gridcontent'), 'e-grid').id === gObj.element.id)) || (gObj.frozenRows\n && parentsUntil(target, 'e-headercontent'))) && !parentsUntil(target, 'e-unboundcelldiv')) {\n this.rowIndex = parentsUntil(target, 'e-rowcell') ? parseInt(target.parentElement.getAttribute('aria-rowindex'), 10) : -1;\n if (gObj.isEdit) {\n gObj.editModule.endEdit();\n }\n }\n }\n dblClickHandler(e) {\n if (parentsUntil(e.target, 'e-rowcell') && this.parent.editSettings.allowEditOnDblClick) {\n this.parent.editModule.startEdit(parentsUntil(e.target, 'e-row'));\n }\n }\n /**\n * The function used to trigger editComplete\n * @return {void}\n * @hidden\n */\n editComplete(e) {\n this.parent.isEdit = false;\n let action = 'action';\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\n switch (e.requestType) {\n case 'save':\n if (!(this.parent.isCheckBoxSelection || this.parent.selectionSettings.type === 'Multiple')\n || (!this.parent.isPersistSelection)) {\n if (e[action] !== 'edit') {\n this.parent.selectRow(0);\n }\n }\n this.parent.trigger(actionComplete, extend(e, {\n requestType: 'save',\n type: actionComplete\n }));\n break;\n case 'delete':\n if (isBlazor() && !this.parent.isJsComponent) {\n let d = 'data';\n e[d] = e[d][0];\n }\n this.parent.trigger(actionComplete, extend(e, {\n requestType: 'delete',\n type: actionComplete\n }));\n this.parent.selectRow(this.editRowIndex);\n break;\n }\n }\n startEdit(tr) {\n let gObj = this.parent;\n let primaryKeys = gObj.getPrimaryKeyFieldNames();\n let primaryKeyValues = [];\n this.rowIndex = this.editRowIndex = parseInt(tr.getAttribute('aria-rowindex'), 10);\n if (gObj.enableVirtualization || gObj.enableInfiniteScrolling) {\n let selector = '.e-row[aria-rowindex=\"' + this.rowIndex + '\"]';\n let virtualRow = this.parent.element.querySelector(selector);\n if (!virtualRow) {\n return;\n }\n }\n if (isBlazor()) {\n let cols = this.parent.getColumns();\n for (let i = 0; i < cols.length; i++) {\n let col = cols[i];\n if (col.template) {\n resetBlazorTemplate(gObj.element.id + col.uid, 'Template', this.rowIndex);\n }\n }\n }\n if (isGroupAdaptive(gObj)) {\n let rObj = gObj.getRowObjectFromUID(tr.getAttribute('data-uid'));\n this.previousData = rObj.data;\n }\n else if (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) {\n let e = { data: this.previousData, index: this.rowIndex };\n this.parent.notify(virtualScrollEditActionBegin, e);\n this.previousData = e.data;\n }\n else {\n this.previousData = gObj.getCurrentViewRecords()[this.rowIndex];\n }\n for (let i = 0; i < primaryKeys.length; i++) {\n primaryKeyValues.push(getObject(primaryKeys[i], this.previousData));\n }\n this.uid = tr.getAttribute('data-uid');\n let rowObj = gObj.getRowObjectFromUID(this.uid);\n let args = {\n primaryKey: primaryKeys, primaryKeyValue: primaryKeyValues, requestType: 'beginEdit',\n rowData: this.previousData, rowIndex: this.rowIndex, type: 'edit', cancel: false,\n foreignKeyData: rowObj && rowObj.foreignKeyData, target: undefined\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n args.row = tr;\n }\n gObj.trigger(beginEdit, args, (begineditargs) => {\n begineditargs.type = 'actionBegin';\n gObj.trigger(actionBegin, begineditargs, (editargs) => {\n if (!editargs.cancel) {\n let cloneRow = 'cloneRow';\n let frozen = 'frozen';\n let cloneFrozen = 'cloneFrozen';\n gObj.isEdit = true;\n editargs.row = editargs.row ? editargs.row : tr;\n if (isBlazor() && gObj.isServerRendered) {\n this.originalRow = editargs.row;\n this.cloneRow = editargs.row.cloneNode(true);\n editargs[cloneRow] = this.cloneRow;\n }\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.clearSelection();\n }\n if (gObj.editSettings.mode === 'Dialog' && gObj.selectionModule) {\n gObj.selectionModule.preventFocus = true;\n editargs.row.classList.add('e-dlgeditrow');\n }\n this.renderer.update(editargs);\n if (isBlazor()) {\n editargs.form = null;\n this.cloneFrozen = editargs[cloneFrozen];\n this.frozen = editargs[frozen];\n this.cloneRow = editargs[cloneRow];\n this.originalRow = editargs.row;\n }\n this.uid = tr.getAttribute('data-uid');\n gObj.editModule.applyFormValidation();\n editargs.type = 'actionComplete';\n gObj.trigger(actionComplete, editargs);\n this.args = editargs;\n if (this.parent.allowTextWrap) {\n this.parent.notify(freezeRender, { case: 'textwrap' });\n }\n if (isBlazor()) {\n this.parent.notify(toolbarRefresh, {});\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n this.parent.notify('start-edit', {});\n }\n }\n });\n });\n }\n updateRow(index, data) {\n let gObj = this.parent;\n this.editRowIndex = index;\n let args = {\n requestType: 'save', action: 'edit', type: actionBegin, data: data, cancel: false,\n previousData: gObj.getCurrentViewRecords()[index],\n row: gObj.getRowByIndex(index)\n };\n gObj.showSpinner();\n gObj.notify(updateData, args);\n if (args.promise) {\n args.promise.then(() => gObj.refresh()).catch((e) => this.edFail(e));\n }\n else {\n gObj.refresh();\n }\n }\n editFormValidate() {\n let gObj = this.parent;\n let form1 = gObj.editModule.formObj.validate();\n let form2 = gObj.editModule.mFormObj ? gObj.editModule.mFormObj.validate() : true;\n return (form1 && form2);\n }\n endEdit() {\n let gObj = this.parent;\n if (!this.parent.isEdit || !this.editFormValidate()) {\n return;\n }\n let editedData = extend({}, {}, this.previousData, true);\n let args = extend(this.args, {\n requestType: 'save', type: actionBegin, data: editedData, cancel: false,\n previousData: this.previousData, selectedRow: gObj.selectedRowIndex, foreignKeyData: {}\n });\n let isDlg = gObj.editSettings.mode === 'Dialog';\n let dlgWrapper = document.querySelector('#' + gObj.element.id + '_dialogEdit_wrapper');\n let dlgForm = isDlg ? dlgWrapper.querySelector('.e-gridform') : gObj.element.querySelector('.e-gridform');\n let data = { virtualData: {}, isAdd: false };\n this.parent.notify(getVirtualData, data);\n if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && this.parent.editSettings.mode === 'Normal' && !dlgForm) {\n if (this.parent.isEdit) {\n this.currentVirtualData = editedData = args.data = data.virtualData;\n }\n }\n else {\n editedData = gObj.editModule.getCurrentEditedData(dlgForm, editedData);\n }\n if (gObj.getFrozenColumns() && gObj.editSettings.mode === 'Normal') {\n let mForm = gObj.element.querySelector('.e-movableheader').querySelector('.e-gridform');\n if (gObj.frozenRows && mForm) {\n editedData = gObj.editModule.getCurrentEditedData(mForm, editedData);\n }\n else {\n let form = gObj.element.querySelector('.e-movablecontent').querySelector('.e-gridform');\n if (form) {\n editedData = gObj.editModule.getCurrentEditedData(form, editedData);\n }\n }\n }\n if (isBlazor()) {\n let form = 'form';\n let movableForm = 'movableForm';\n args[form] = null;\n args[movableForm] = null;\n args.row = {};\n }\n let eleLength = [].slice.call(gObj.element.querySelectorAll('.e-editedrow')).length;\n if (!data.isAdd && Object.keys(this.currentVirtualData).length && !eleLength) {\n eleLength = 1;\n }\n if (isDlg ? dlgWrapper.querySelectorAll('.e-editedrow').length : eleLength) {\n args.action = 'edit';\n gObj.trigger(actionBegin, args, (endEditArgs) => {\n if (endEditArgs.cancel) {\n return;\n }\n gObj.showSpinner();\n gObj.notify(updateData, endEditArgs);\n });\n }\n else {\n args.action = 'add';\n args.selectedRow = 0;\n args.index = this.addedRowIndex;\n gObj.notify(virtualScrollEditSuccess, {});\n gObj.notify(modelChanged, args);\n this.addedRowIndex = null;\n if (args.cancel) {\n return;\n }\n }\n }\n destroyElements() {\n let gObj = this.parent;\n gObj.editModule.destroyWidgets();\n gObj.editModule.destroyForm();\n this.parent.notify(dialogDestroy, {});\n }\n editHandler(args) {\n if (args.promise) {\n args.promise.then((e) => this.edSucc(e, args)).catch((e) => this.edFail(e));\n }\n else {\n this.editSuccess(args.data, args);\n }\n }\n edSucc(e, args) {\n this.editSuccess(e, args);\n }\n edFail(e) {\n if (isBlazor() && this.parent.isServerRendered) {\n let error = 'error';\n let message = 'message';\n if (!isNullOrUndefined(e[error]) && !isNullOrUndefined(e[error][message])) {\n e[error] = e[error][message];\n }\n }\n this.editFailure(e);\n }\n updateCurrentViewData(data) {\n if (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling) {\n this.parent.getCurrentViewRecords()[this.editRowIndex] = data;\n }\n }\n requestSuccess(args) {\n if (this.parent.editModule.formObj && !this.parent.editModule.formObj.isDestroyed) {\n this.destroyElements();\n this.stopEditStatus();\n if (this.parent.editSettings.mode === 'Dialog' && args.action !== 'add') {\n this.parent.element.querySelector('.e-dlgeditrow').classList.remove('e-dlgeditrow');\n }\n }\n }\n editSuccess(e, args) {\n if (!isNullOrUndefined(e) && !(e instanceof Array)) {\n let rowData = 'rowData';\n args.data = extend({}, extend({}, args[rowData], args.data), e);\n }\n let editArgs;\n this.requestSuccess(args);\n this.parent.trigger(beforeDataBound, args);\n args.type = actionComplete;\n this.parent.isEdit = false;\n if (isBlazor() && this.parent.isServerRendered) {\n this.closeForm();\n let rowIndex = 'rowIndex';\n let action = 'action';\n let data = 'data';\n editArgs = { requestType: args.requestType,\n rowIndex: args[rowIndex], action: args[action], data: args[data] };\n this.parent.notify('editsuccess', editArgs);\n }\n else {\n this.refreshRow(args.data);\n }\n this.parent.notify(virtualScrollEditSuccess, args);\n this.parent.editModule.checkLastRow(args.row);\n this.parent.editModule.isLastRow = false;\n this.updateCurrentViewData(args.data);\n this.blazorTemplate();\n if (!(isBlazor() && this.parent.isServerRendered)) {\n this.editRowIndex = null;\n this.parent.trigger(actionComplete, args);\n }\n if (isBlazor()) {\n this.parent.notify(toolbarRefresh, {});\n }\n if (!(this.parent.isCheckBoxSelection || this.parent.selectionSettings.type === 'Multiple')\n || (!this.parent.isPersistSelection)) {\n if (this.parent.editSettings.mode !== 'Dialog') {\n if (isBlazor() && this.parent.isServerRendered) {\n let rowIndex = 'editRowIndex';\n editArgs[rowIndex] = this.rowIndex > -1 ? this.rowIndex : this.editRowIndex;\n }\n else {\n this.parent.selectRow(this.rowIndex > -1 ? this.rowIndex : this.editRowIndex);\n }\n }\n }\n this.parent.hideSpinner();\n }\n closeForm() {\n if (!this.cloneRow && this.parent.isEdit) {\n this.stopEditStatus();\n }\n if (this.cloneRow) {\n this.cloneRow.remove();\n this.cloneRow = null;\n this.originalRow.classList.remove('e-hiddenrow');\n }\n if (this.parent.getFrozenColumns() && this.cloneFrozen) {\n this.cloneFrozen.remove();\n this.frozen.classList.remove('e-hiddenrow');\n }\n }\n blazorTemplate() {\n let cols = this.parent.getColumns();\n if (this.parent.editSettings.template && this.parent.editSettings.mode === 'Normal') {\n updateBlazorTemplate(this.parent.element.id + 'editSettingsTemplate', 'Template', this.parent.editSettings);\n }\n for (let i = 0; i < cols.length; i++) {\n let col = cols[i];\n if (col.template) {\n updateBlazorTemplate(this.parent.element.id + col.uid, 'Template', col, false);\n }\n if (col.editTemplate) {\n updateBlazorTemplate(this.parent.element.id + col.uid + 'editTemplate', 'EditTemplate', col);\n }\n }\n }\n editFailure(e) {\n this.parent.trigger(actionFailure, ((isBlazor() && e instanceof Array) ? e[0] : e));\n this.parent.hideSpinner();\n this.parent.log('actionfailure', { error: e });\n }\n needRefresh() {\n let refresh = true;\n let editedRow = this.parent.element.querySelector('.e-gridform');\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && this.parent.editSettings.mode === 'Normal' && !editedRow) {\n refresh = false;\n }\n return refresh;\n }\n refreshRow(data) {\n let frzCols = this.parent.getFrozenColumns();\n let row = new RowRenderer(this.serviceLocator, null, this.parent);\n let rowObj = this.parent.getRowObjectFromUID(this.uid);\n if (rowObj) {\n rowObj.changes = data;\n this.parent.notify(refreshVirtualCache, data);\n refreshForeignData(rowObj, this.parent.getForeignKeyColumns(), rowObj.changes);\n if (this.needRefresh()) {\n row.refresh(rowObj, this.parent.getColumns(), true);\n }\n if (frzCols) {\n let uid;\n let tr = this.parent.element.querySelector('[data-uid=' + rowObj.uid + ']');\n if ((parentsUntil(tr, 'e-frozencontent')) || (parentsUntil(tr, 'e-frozenheader'))) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n uid = this.parent.getMovableRowByIndex(rowObj.index).getAttribute('data-uid');\n }\n else {\n uid = this.parent.getMovableRows()[rowObj.index].getAttribute('data-uid');\n }\n }\n else {\n if (this.parent.infiniteScrollSettings.enableCache) {\n uid = this.parent.getRowByIndex(rowObj.index).getAttribute('data-uid');\n }\n else {\n uid = this.parent.getRows()[rowObj.index].getAttribute('data-uid');\n }\n }\n rowObj = this.parent.getRowObjectFromUID(uid);\n rowObj.changes = data;\n row.refresh(rowObj, this.parent.columns, true);\n this.parent.editModule.checkLastRow(tr);\n }\n }\n }\n closeEdit() {\n if (!this.parent.isEdit) {\n return;\n }\n let gObj = this.parent;\n let args = extend(this.args, {\n requestType: 'cancel', type: actionBegin, cancel: false, data: this.previousData, selectedRow: gObj.selectedRowIndex\n });\n gObj.notify(virtualScrollEditCancel, args);\n this.blazorTemplate();\n if (isBlazor()) {\n let form = 'form';\n args[form] = null;\n }\n gObj.trigger(actionBegin, args, (closeEditArgs) => {\n if (closeEditArgs.cancel) {\n return;\n }\n if (this.parent.editSettings.mode === 'Dialog') {\n this.parent.notify(dialogDestroy, {});\n }\n gObj.isEdit = false;\n this.stopEditStatus();\n closeEditArgs.type = actionComplete;\n if (gObj.editSettings.mode !== 'Dialog') {\n if (isBlazor() && gObj.isServerRendered) {\n this.closeForm();\n }\n else {\n this.refreshRow(closeEditArgs.data);\n }\n }\n if (!gObj.getContentTable().querySelector('tr.e-emptyrow') &&\n !gObj.getContentTable().querySelector('tr.e-row')) {\n gObj.renderModule.emptyRow();\n }\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.selectRow(this.rowIndex);\n }\n gObj.trigger(actionComplete, closeEditArgs);\n if (isBlazor()) {\n this.parent.notify(toolbarRefresh, {});\n this.parent.notify('close-edit', {});\n }\n });\n }\n addRecord(data, index) {\n let gObj = this.parent;\n this.addedRowIndex = index = !isNullOrUndefined(index) ? index : 0;\n if (data) {\n gObj.notify(modelChanged, {\n requestType: 'save', type: actionBegin, data: data, selectedRow: 0, action: 'add', index: index\n });\n return;\n }\n if (gObj.isEdit) {\n return;\n }\n this.previousData = {};\n this.uid = '';\n let cols = (gObj.columnModel);\n for (let i = 0; i < cols.length; i++) {\n if (cols[i].field) {\n DataUtil.setValue(cols[i].field, cols[i].defaultValue, this.previousData);\n }\n }\n let args = {\n cancel: false, foreignKeyData: {},\n requestType: 'add', data: this.previousData, type: actionBegin, index: index,\n rowData: this.previousData, target: undefined\n };\n let rowData = { virtualData: {} };\n this.parent.notify(getVirtualData, rowData);\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && Object.keys(rowData.virtualData).length) {\n args.data = args.rowData = rowData.virtualData;\n }\n if (isBlazor()) {\n let form = 'form';\n args[form] = null;\n }\n gObj.trigger(actionBegin, args, (addArgs) => {\n if (addArgs.cancel) {\n return;\n }\n gObj.isEdit = true;\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.clearSelection();\n }\n this.renderer.addNew(addArgs);\n gObj.editModule.applyFormValidation();\n addArgs.type = actionComplete;\n addArgs.row = gObj.element.querySelector('.e-addedrow');\n gObj.trigger(actionComplete, addArgs);\n if (isBlazor()) {\n this.parent.notify(toolbarRefresh, {});\n this.parent.notify('start-add', {});\n }\n this.args = addArgs;\n });\n }\n deleteRecord(fieldname, data) {\n this.editRowIndex = this.parent.selectedRowIndex;\n if (data) {\n data = (data instanceof Array) ? data : [data];\n let gObj = this.parent;\n let dataLen = Object.keys(data).length;\n fieldname = fieldname || this.parent.getPrimaryKeyFieldNames()[0];\n for (let i = 0; i < dataLen; i++) {\n let tmpRecord;\n let contained = gObj.currentViewData.some((record) => {\n tmpRecord = record;\n return data[i] === getObject(fieldname, record) || data[i] === record;\n });\n data[i] = contained ? tmpRecord : { [fieldname]: data[i] };\n }\n }\n let args = {\n requestType: 'delete', type: actionBegin, foreignKeyData: {},\n data: data ? data : this.parent.getSelectedRecords(), tr: this.parent.getSelectedRows(), cancel: false\n };\n if (!isNullOrUndefined(this.parent.commandDelIndex)) {\n args.data[0] =\n this.parent.getRowObjectFromUID(this.parent.getRowByIndex(this.parent.commandDelIndex).getAttribute('data-uid')).data;\n }\n if (this.parent.enableVirtualization && args.data.length > 1) {\n let uid = this.parent.getSelectedRows()[0].getAttribute('data-uid');\n args.data = [this.parent.getRowObjectFromUID(uid).data];\n }\n let dataInString = 'data';\n if (isBlazor() && !this.parent.isJsComponent) {\n args[dataInString] = args[dataInString][0];\n }\n this.parent.notify(modelChanged, args);\n }\n stopEditStatus() {\n let gObj = this.parent;\n let elem = gObj.element.querySelector('.e-addedrow');\n let mElem;\n let editMElem;\n if (gObj.getFrozenColumns()) {\n mElem = gObj.element.querySelectorAll('.e-addedrow')[1];\n editMElem = gObj.element.querySelectorAll('.e-editedrow')[1];\n if (mElem) {\n remove(mElem);\n }\n if (editMElem) {\n editMElem.classList.remove('e-editedrow');\n }\n }\n if (elem) {\n remove(elem);\n }\n elem = gObj.element.querySelector('.e-editedrow');\n if (elem) {\n elem.classList.remove('e-editedrow');\n }\n }\n /**\n * @hidden\n */\n addEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(crudAction, this.editHandler, this);\n this.parent.on(doubleTap, this.dblClickHandler, this);\n this.parent.on(click, this.clickHandler, this);\n this.parent.on(recordAdded, this.requestSuccess, this);\n this.parent.on(dblclick, this.dblClickHandler, this);\n this.parent.on(deleteComplete, this.editComplete, this);\n this.parent.on(saveComplete, this.editComplete, this);\n this.parent.on('closeinline', this.closeForm, this);\n }\n /**\n * @hidden\n */\n removeEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(crudAction, this.editHandler);\n this.parent.off(doubleTap, this.dblClickHandler);\n this.parent.off(click, this.clickHandler);\n this.parent.off(recordAdded, this.requestSuccess);\n this.parent.off(dblclick, this.dblClickHandler);\n this.parent.off(deleteComplete, this.editComplete);\n this.parent.off(saveComplete, this.editComplete);\n this.parent.off('closeinline', this.closeForm);\n }\n /**\n * @hidden\n */\n destroy() {\n this.removeEventListener();\n this.renderer.destroy();\n }\n}\n\n/**\n * `InlineEdit` module is used to handle inline editing actions.\n * @hidden\n */\nclass InlineEdit extends NormalEdit {\n constructor(parent, serviceLocator, renderer) {\n super(parent, serviceLocator);\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.renderer = renderer;\n }\n closeEdit() {\n super.closeEdit();\n }\n addRecord(data, index) {\n super.addRecord(data, index);\n }\n endEdit() {\n super.endEdit();\n }\n updateRow(index, data) {\n super.updateRow(index, data);\n }\n deleteRecord(fieldname, data) {\n super.deleteRecord(fieldname, data);\n }\n startEdit(tr) {\n super.startEdit(tr);\n }\n}\n\n/**\n * `BatchEdit` module is used to handle batch editing actions.\n * @hidden\n */\nclass BatchEdit {\n constructor(parent, serviceLocator, renderer) {\n this.cellDetails = {};\n this.originalCell = {};\n this.cloneCell = {};\n this.editNext = false;\n this.preventSaveCell = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.renderer = renderer;\n this.focus = serviceLocator.getService('focus');\n this.addEventListener();\n }\n /**\n * @hidden\n */\n addEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(click, this.clickHandler, this);\n this.parent.on(dblclick, this.dblClickHandler, this);\n this.parent.on(beforeCellFocused, this.onBeforeCellFocused, this);\n this.parent.on(cellFocused, this.onCellFocused, this);\n this.dataBoundFunction = this.dataBound.bind(this);\n this.batchCancelFunction = this.batchCancel.bind(this);\n this.parent.addEventListener(dataBound, this.dataBoundFunction);\n this.parent.addEventListener(batchCancel, this.batchCancelFunction);\n this.parent.on(doubleTap, this.dblClickHandler, this);\n this.parent.on(keyPressed, this.keyDownHandler, this);\n this.parent.on(editNextValCell, this.editNextValCell, this);\n this.parent.on('closebatch', this.closeForm, this);\n }\n /**\n * @hidden\n */\n removeEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(click, this.clickHandler);\n this.parent.off(dblclick, this.dblClickHandler);\n this.parent.off(beforeCellFocused, this.onBeforeCellFocused);\n this.parent.off(cellFocused, this.onCellFocused);\n this.parent.removeEventListener(dataBound, this.dataBoundFunction);\n this.parent.removeEventListener(batchCancel, this.batchCancelFunction);\n this.parent.off(doubleTap, this.dblClickHandler);\n this.parent.off(keyPressed, this.keyDownHandler);\n this.parent.off(editNextValCell, this.editNextValCell);\n this.parent.off('closebatch', this.closeForm);\n }\n batchCancel(args) {\n this.parent.focusModule.restoreFocus();\n }\n dataBound() {\n this.parent.notify(toolbarRefresh, {});\n }\n /**\n * @hidden\n */\n destroy() {\n this.removeEventListener();\n }\n clickHandler(e) {\n if (!parentsUntil(e.target, this.parent.element.id + '_add', true)) {\n if (this.parent.isEdit) {\n this.saveCell();\n this.editNextValCell();\n }\n if (parentsUntil(e.target, 'e-rowcell') && !this.parent.isEdit) {\n this.setCellIdx(e.target);\n }\n }\n }\n dblClickHandler(e) {\n let target = parentsUntil(e.target, 'e-rowcell');\n let tr = parentsUntil(e.target, 'e-row');\n if (target && tr && !isNaN(parseInt(target.getAttribute('aria-colindex'), 10))\n && !target.parentElement.classList.contains('e-editedrow')) {\n this.editCell(parseInt(tr.getAttribute('aria-rowindex'), 10), this.parent.getColumns()[parseInt(target.getAttribute('aria-colindex'), 10)].field, this.isAddRow(parseInt(tr.getAttribute('aria-rowindex'), 10)));\n }\n }\n onBeforeCellFocused(e) {\n if (this.parent.isEdit && this.validateFormObj() &&\n (e.byClick || (['tab', 'shiftTab', 'enter', 'shiftEnter'].indexOf(e.keyArgs.action) > -1))) {\n e.cancel = true;\n if (e.byClick) {\n e.clickArgs.preventDefault();\n }\n else {\n e.keyArgs.preventDefault();\n }\n }\n }\n onCellFocused(e) {\n let frzCols = this.parent.getFrozenColumns();\n let mCont = this.parent.getContent().querySelector('.e-movablecontent');\n let mHdr = this.parent.getHeaderContent().querySelector('.e-movableheader');\n let clear = (!e.container.isContent || !e.container.isDataCell) && !(this.parent.frozenRows && e.container.isHeader);\n if (!e.byKey || clear) {\n if (this.parent.isEdit && clear) {\n this.saveCell();\n }\n return;\n }\n let [rowIndex, cellIndex] = e.container.indexes;\n if (frzCols && (mCont.contains(e.element) || (this.parent.frozenRows && mHdr.contains(e.element)))) {\n cellIndex += frzCols;\n }\n if (this.parent.frozenRows && e.container.isContent) {\n rowIndex += this.parent.frozenRows;\n }\n let isEdit = this.parent.isEdit;\n if (!this.parent.element.querySelectorAll('.e-popup-open').length) {\n isEdit = isEdit && !this.validateFormObj();\n switch (e.keyArgs.action) {\n case 'tab':\n case 'shiftTab':\n let col = this.parent.getColumns()[e.indexes[1]];\n if (col && !this.parent.isEdit) {\n this.editCell(e.indexes[0], col.field);\n }\n if (isEdit || this.parent.isLastCellPrimaryKey) {\n this.editCellFromIndex(rowIndex, cellIndex);\n }\n break;\n case 'enter':\n case 'shiftEnter':\n e.keyArgs.preventDefault();\n if (isEdit) {\n this.editCell(rowIndex, this.cellDetails.column.field);\n }\n break;\n case 'f2':\n this.editCellFromIndex(rowIndex, cellIndex);\n this.focus.focus();\n break;\n }\n }\n }\n isAddRow(index) {\n return this.parent.getDataRows()[index].classList.contains('e-insertedrow');\n }\n editCellFromIndex(rowIdx, cellIdx) {\n this.cellDetails.rowIndex = rowIdx;\n this.cellDetails.cellIndex = cellIdx;\n this.editCell(rowIdx, this.parent.getColumns()[cellIdx].field, this.isAddRow(rowIdx));\n }\n // tslint:disable-next-line:max-func-body-length\n closeEdit() {\n let gObj = this.parent;\n let rows = this.parent.getRowsObject();\n let argument = { cancel: false, batchChanges: this.getBatchChanges() };\n gObj.notify(beforeBatchCancel, argument);\n if (argument.cancel) {\n return;\n }\n if (gObj.frozenColumns && rows.length < this.parent.currentViewData.length * 2 && !(isBlazor() && gObj.isServerRendered)) {\n rows.push.apply(rows, this.parent.getMovableRowsObject());\n }\n let cols = this.parent.getColumns();\n if (isBlazor()) {\n for (let i = 0; i < cols.length; i++) {\n let col = cols[i];\n if (col.template) {\n updateBlazorTemplate(this.parent.element.id + col.uid, 'Template', col, false);\n }\n }\n }\n let rowRenderer = new RowRenderer(this.serviceLocator, null, this.parent);\n let tr;\n let mTr;\n let movObj;\n if (gObj.isEdit) {\n this.saveCell(true);\n }\n this.isAdded = false;\n gObj.clearSelection();\n for (let i = 0; i < rows.length; i++) {\n if (rows[i].isDirty) {\n if (gObj.frozenColumns) {\n movObj = gObj.getMovableRowsObject()[rows[i].index];\n movObj.isDirty = true;\n }\n tr = gObj.getContentTable().querySelector('[data-uid=' + rows[i].uid + ']');\n if (gObj.frozenRows && !tr) {\n tr = gObj.getHeaderContent().querySelector('[data-uid=' + rows[i].uid + ']');\n }\n if (gObj.frozenColumns) {\n if (gObj.frozenRows) {\n mTr = gObj.getHeaderContent().querySelector('.e-movableheader')\n .querySelector('[data-uid=' + rows[i].uid + ']');\n if (!mTr) {\n mTr = gObj.getContent().querySelector('.e-movablecontent')\n .querySelector('[data-uid=' + rows[i].uid + ']');\n }\n }\n else {\n mTr = gObj.getContent().querySelector('.e-movablecontent')\n .querySelector('[data-uid=' + rows[i].uid + ']');\n }\n }\n if (tr || mTr) {\n if (tr && tr.classList.contains('e-insertedrow') || mTr && mTr.classList.contains('e-insertedrow')) {\n if (tr) {\n remove(tr);\n }\n if (mTr && (gObj.frozenColumns || gObj.frozenRows)) {\n remove(mTr);\n }\n this.removeRowObjectFromUID(rows[i].uid);\n i--;\n }\n else {\n refreshForeignData(rows[i], this.parent.getForeignKeyColumns(), rows[i].data);\n delete rows[i].changes;\n delete rows[i].edit;\n rows[i].isDirty = false;\n let ftr = mTr ? mTr : tr;\n if (isBlazor() && gObj.isServerRendered) {\n if (gObj.getFrozenColumns()) {\n this.removeHideAndSelection(mTr);\n }\n this.removeHideAndSelection(tr);\n this.closeForm();\n }\n else {\n classList(ftr, [], ['e-hiddenrow', 'e-updatedtd']);\n rowRenderer.refresh(rows[i], gObj.getColumns(), false);\n }\n }\n if (this.parent.aggregates.length > 0) {\n let type = 'type';\n let editType = [];\n editType[type] = 'cancel';\n this.parent.notify(refreshFooterRenderer, editType);\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(groupAggregates, editType);\n }\n }\n }\n }\n }\n if (isBlazor() && gObj.isServerRendered) {\n gObj.selectRow(gObj.selectionModule.prevRowIndex);\n }\n if (!gObj.getContentTable().querySelector('tr.e-row')) {\n gObj.renderModule.renderEmptyRow();\n }\n let args = {\n requestType: 'batchCancel', rows: this.parent.getRowsObject()\n };\n gObj.notify(batchCancel, {\n rows: this.parent.getRowsObject().length ? this.parent.getRowsObject() :\n [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })]\n });\n gObj.selectRow(this.cellDetails.rowIndex);\n this.refreshRowIdx();\n gObj.notify(toolbarRefresh, {});\n this.parent.notify(tooltipDestroy, {});\n args = { requestType: 'batchCancel', rows: this.parent.getRowsObject() };\n gObj.trigger(batchCancel, args);\n if (gObj.frozenColumns) {\n rows.splice(this.parent.getMovableRowsObject().length, rows.length);\n }\n }\n removeHideAndSelection(tr) {\n if (tr.classList.contains('e-hiddenrow')) {\n tr.removeAttribute('aria-selected');\n let tdElements = [].slice.call(tr.querySelectorAll('.e-selectionbackground'));\n for (let i = 0; i < tdElements.length; i++) {\n removeClass([tdElements[i]], ['e-selectionbackground', 'e-active']);\n }\n }\n classList(tr, [], ['e-hiddenrow', 'e-updatedtd']);\n }\n deleteRecord(fieldname, data) {\n this.saveCell();\n if (this.validateFormObj()) {\n this.saveCell(true);\n }\n this.isAdded = false;\n this.bulkDelete(fieldname, data);\n if (this.parent.aggregates.length > 0) {\n this.parent.notify(refreshFooterRenderer, {});\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(groupAggregates, {});\n }\n }\n }\n addRecord(data) {\n this.bulkAddRow(data);\n }\n endEdit(data) {\n if (this.parent.isEdit && this.validateFormObj()) {\n return;\n }\n this.batchSave();\n }\n closeForm() {\n for (let i = 0; i < Object.keys(this.originalCell).length; i++) {\n for (let j = 0; j < Object.keys(this.cloneCell).length; j++) {\n if (Object.keys(this.originalCell)[i] === Object.keys(this.cloneCell)[j]) {\n this.cloneCell[Object.keys(this.cloneCell)[j]].replaceWith(this.originalCell[Object.keys(this.originalCell)[i]]);\n if (this.originalCell[Object.keys(this.originalCell)[i]].classList.contains('e-selectionbackground')) {\n this.originalCell[Object.keys(this.originalCell)[i]]\n .classList.remove('e-selectionbackground', 'e-cellselectionbackground', 'e-active');\n }\n }\n }\n }\n this.cloneCell = {};\n this.originalCell = {};\n }\n validateFormObj() {\n return this.parent.editModule.formObj && !this.parent.editModule.formObj.validate();\n }\n batchSave() {\n let gObj = this.parent;\n let deletedRecords = 'deletedRecords';\n if (gObj.isCheckBoxSelection) {\n let checkAllBox = gObj.element.querySelector('.e-checkselectall').parentElement;\n if (checkAllBox.classList.contains('e-checkbox-disabled') &&\n gObj.pageSettings.totalRecordsCount > gObj.currentViewData.length) {\n removeClass([checkAllBox], ['e-checkbox-disabled']);\n }\n }\n let cols = this.parent.getColumns();\n if (isBlazor()) {\n for (let i = 0; i < cols.length; i++) {\n let col = cols[i];\n if (col.template) {\n blazorTemplates[this.parent.element.id + col.uid] = [];\n resetBlazorTemplate(this.parent.element.id + col.uid, 'Template');\n }\n }\n }\n this.saveCell();\n if (gObj.isEdit || this.editNextValCell() || gObj.isEdit) {\n return;\n }\n let changes = this.getBatchChanges();\n if (this.parent.selectionSettings.type === 'Multiple' && changes[deletedRecords].length &&\n this.parent.selectionSettings.persistSelection) {\n changes[deletedRecords] = this.removeSelectedData;\n this.removeSelectedData = [];\n }\n let original = {\n changedRecords: this.parent.getRowsObject()\n .filter((row) => row.isDirty && ['add', 'delete'].indexOf(row.edit) === -1)\n .map((row) => row.data)\n };\n let args = { batchChanges: changes, cancel: false };\n gObj.trigger(beforeBatchSave, args, (beforeBatchSaveArgs) => {\n if (beforeBatchSaveArgs.cancel) {\n return;\n }\n if (isBlazor() && this.parent.isServerRendered) {\n let content = this.parent.getContent();\n this.closeForm();\n removeClass(content.querySelectorAll('.e-updatedtd'), ['e-updatedtd']);\n if (content.querySelector('.e-insertedrow, .e-hiddenrow')) {\n removeClass(content.querySelectorAll('.e-hiddenrow'), ['e-hiddenrow']);\n let insertedRow = [].slice.call(content.querySelectorAll('.e-insertedrow'));\n for (let i = 0; i < insertedRow.length; i++) {\n insertedRow[i].remove();\n }\n }\n this.refreshRowIdx();\n }\n gObj.showSpinner();\n gObj.notify(bulkSave, { changes: changes, original: original });\n });\n }\n getBatchChanges() {\n let changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n let rows = this.parent.getRowsObject();\n for (let row of rows) {\n if (row.isDirty) {\n switch (row.edit) {\n case 'add':\n changes.addedRecords.push(row.changes);\n break;\n case 'delete':\n changes.deletedRecords.push(row.data);\n break;\n default:\n changes.changedRecords.push(row.changes);\n }\n }\n }\n return changes;\n }\n /**\n * @hidden\n */\n removeRowObjectFromUID(uid) {\n let rows = this.parent.getRowsObject();\n let i = 0;\n for (let len = rows.length; i < len; i++) {\n if (rows[i].uid === uid) {\n break;\n }\n }\n rows.splice(i, 1);\n }\n /**\n * @hidden\n */\n addRowObject(row) {\n let isTop = this.parent.editSettings.newRowPosition === 'Top';\n let frozenColumnsCount = this.parent.getFrozenColumns();\n if (frozenColumnsCount) {\n let mRow = this.parent.getMovableRowsObject();\n let mEle = row.clone();\n mEle.cells = mEle.cells.slice(frozenColumnsCount);\n row.cells = row.cells.slice(0, frozenColumnsCount);\n isTop ? mRow.unshift(mEle) : mRow.push(mEle);\n }\n isTop ? this.parent.getRowsObject().unshift(row) :\n this.parent.getRowsObject().push(row);\n }\n // tslint:disable-next-line:max-func-body-length\n bulkDelete(fieldname, data) {\n this.removeSelectedData = [];\n let gObj = this.parent;\n let index = gObj.selectedRowIndex;\n let selectedRows = gObj.getSelectedRows();\n let args = {\n primaryKey: this.parent.getPrimaryKeyFieldNames(),\n rowIndex: index,\n rowData: data ? data : gObj.getSelectedRecords()[0],\n cancel: false\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n if (data) {\n args.row = gObj.editModule.deleteRowUid ? gObj.getRowElementByUID(gObj.editModule.deleteRowUid)\n : gObj.getRows()[gObj.getCurrentViewRecords().indexOf(data)];\n }\n else {\n args.row = data ? gObj.getRows()[index] : selectedRows[0];\n }\n if (!args.row) {\n return;\n }\n }\n gObj.trigger(beforeBatchDelete, args, (beforeBatchDeleteArgs) => {\n if (beforeBatchDeleteArgs.cancel) {\n return;\n }\n this.removeSelectedData = gObj.getSelectedRecords();\n gObj.clearSelection();\n beforeBatchDeleteArgs.row = beforeBatchDeleteArgs.row ?\n beforeBatchDeleteArgs.row : data ? gObj.getRows()[index] : selectedRows[0];\n if (this.parent.getFrozenColumns()) {\n if (data) {\n index = parseInt(beforeBatchDeleteArgs.row.getAttribute('aria-rowindex'), 10);\n selectedRows = [beforeBatchDeleteArgs.row];\n if (parentsUntil(beforeBatchDeleteArgs.row, 'e-frozencontent')\n || parentsUntil(beforeBatchDeleteArgs.row, 'e-frozenheader')) {\n selectedRows = selectedRows.concat(gObj.getMovableRowByIndex(index));\n }\n else if (parentsUntil(beforeBatchDeleteArgs.row, 'e-movablecontent')\n || (parentsUntil(beforeBatchDeleteArgs.row, 'e-movableheader'))) {\n selectedRows = selectedRows.concat(gObj.getFrozenRowByIndex(index));\n }\n }\n for (let i = 0; i < selectedRows.length; i++) {\n let uid = selectedRows[i].getAttribute('data-uid');\n if (selectedRows[i].classList.contains('e-insertedrow')) {\n this.removeRowObjectFromUID(uid);\n remove(selectedRows[i]);\n }\n else {\n let rowObj = gObj.getRowObjectFromUID(uid);\n rowObj.isDirty = true;\n rowObj.edit = 'delete';\n classList(selectedRows[i], ['e-hiddenrow', 'e-updatedtd'], []);\n if (gObj.frozenRows && index < gObj.frozenRows && gObj.getMovableDataRows().length >= gObj.frozenRows) {\n gObj.getHeaderContent().querySelector('.e-movableheader').querySelector('tbody')\n .appendChild(gObj.getMovableRowByIndex(gObj.frozenRows - 1));\n gObj.getHeaderContent().querySelector('.e-frozenheader').querySelector('tbody')\n .appendChild(gObj.getRowByIndex(gObj.frozenRows - 1));\n }\n if (gObj.frozenRows && index < gObj.frozenRows && gObj.getDataRows().length >= gObj.frozenRows) {\n gObj.getHeaderContent().querySelector('tbody').appendChild(gObj.getRowByIndex(gObj.frozenRows - 1));\n }\n }\n delete selectedRows[i];\n }\n let fCont = gObj.getContent().querySelector('.e-frozencontent');\n let mCont = gObj.getContent().querySelector('.e-movablecontent');\n fCont.style.height = mCont.offsetHeight - getScrollBarWidth() + 'px';\n }\n else if (!this.parent.getFrozenColumns() && (selectedRows.length === 1 || data)) {\n let uid = beforeBatchDeleteArgs.row.getAttribute('data-uid');\n uid = data && this.parent.editModule.deleteRowUid ? uid = this.parent.editModule.deleteRowUid : uid;\n if (beforeBatchDeleteArgs.row.classList.contains('e-insertedrow')) {\n this.removeRowObjectFromUID(uid);\n remove(beforeBatchDeleteArgs.row);\n }\n else {\n let rowObj = gObj.getRowObjectFromUID(uid);\n rowObj.isDirty = true;\n rowObj.edit = 'delete';\n classList(beforeBatchDeleteArgs.row, ['e-hiddenrow', 'e-updatedtd'], []);\n }\n delete beforeBatchDeleteArgs.row;\n }\n else {\n for (let i = 0; i < selectedRows.length; i++) {\n let uniqueid = selectedRows[i].getAttribute('data-uid');\n if (selectedRows[i].classList.contains('e-insertedrow')) {\n this.removeRowObjectFromUID(uniqueid);\n remove(selectedRows[i]);\n }\n else {\n classList(selectedRows[i], ['e-hiddenrow', 'e-updatedtd'], []);\n let selectedRow = gObj.getRowObjectFromUID(uniqueid);\n selectedRow.isDirty = true;\n selectedRow.edit = 'delete';\n delete selectedRows[i];\n }\n }\n }\n this.refreshRowIdx();\n if (data) {\n gObj.editModule.deleteRowUid = undefined;\n if (gObj.getSelectedRows().length) {\n index = parseInt(gObj.getSelectedRows()[0].getAttribute('aria-rowindex'), 10);\n }\n }\n gObj.selectRow(index);\n gObj.trigger(batchDelete, beforeBatchDeleteArgs);\n gObj.notify(batchDelete, { rows: this.parent.getRowsObject() });\n gObj.notify(toolbarRefresh, {});\n });\n }\n refreshRowIdx() {\n let rows = [];\n let mRows = [];\n let nonMovableRows = [];\n let frzCols = this.parent.getFrozenColumns();\n if (this.parent.frozenRows) {\n rows = [].slice.call(this.parent.getHeaderTable().querySelector('tbody').children);\n if (frzCols) {\n mRows = [].slice.call(this.parent.getHeaderContent().querySelector('.e-movableheader').querySelector('tbody').children);\n for (let i = 0; i < mRows.length; i++) {\n nonMovableRows[i] = this.parent.createElement('tr', { className: 'emptynonmv' });\n }\n }\n }\n if (frzCols) {\n mRows = mRows.concat([].slice.call(this.parent.getContentTable().querySelector('tbody').children));\n nonMovableRows = nonMovableRows.concat([].slice.call(this.parent.element.querySelector('.e-movablecontent').querySelector('tbody').children));\n }\n rows = rows.concat([].slice.call(this.parent.getContentTable().querySelector('tbody').children));\n for (let i = 0, j = 0, len = rows.length; i < len; i++) {\n if (rows[i].classList.contains('e-row') && !rows[i].classList.contains('e-hiddenrow')) {\n rows[i].setAttribute('aria-rowindex', j.toString());\n if (frzCols) {\n mRows[i].setAttribute('aria-rowindex', j.toString());\n if (nonMovableRows[i].classList.contains('e-row')) {\n nonMovableRows[i].setAttribute('aria-rowindex', j.toString());\n }\n }\n j++;\n }\n else {\n rows[i].removeAttribute('aria-rowindex');\n if (frzCols) {\n mRows[i].removeAttribute('aria-rowindex');\n }\n }\n }\n }\n getIndexFromData(data) {\n return inArray(data, this.parent.getCurrentViewRecords());\n }\n bulkAddRow(data) {\n let gObj = this.parent;\n if (!gObj.editSettings.allowAdding) {\n return;\n }\n if (gObj.isEdit) {\n this.saveCell();\n this.parent.notify(editNextValCell, {});\n }\n if (gObj.isEdit) {\n return;\n }\n this.parent.element.classList.add('e-editing');\n let defaultData = data ? data : this.getDefaultData();\n let args = {\n defaultData: defaultData,\n primaryKey: gObj.getPrimaryKeyFieldNames(),\n cancel: false\n };\n gObj.trigger(beforeBatchAdd, args, (beforeBatchAddArgs) => {\n if (beforeBatchAddArgs.cancel) {\n return;\n }\n this.isAdded = true;\n gObj.clearSelection();\n let mTr;\n let mTbody;\n let row = new RowRenderer(this.serviceLocator, null, this.parent);\n let model = new RowModelGenerator(this.parent);\n let modelData = model.generateRows([beforeBatchAddArgs.defaultData]);\n let tr = row.render(modelData[0], gObj.getColumns());\n let col;\n let index;\n for (let i = 0; i < this.parent.groupSettings.columns.length; i++) {\n tr.insertBefore(this.parent.createElement('td', { className: 'e-indentcell' }), tr.firstChild);\n modelData[0].cells.unshift(new Cell({ cellType: CellType.Indent }));\n }\n let tbody = gObj.getContentTable().querySelector('tbody');\n tr.classList.add('e-insertedrow');\n if (tbody.querySelector('.e-emptyrow')) {\n tbody.querySelector('.e-emptyrow').remove();\n if (this.parent.getFrozenColumns()) {\n let moveTbody = this.parent.getContent().querySelector('.e-movablecontent').querySelector('tbody');\n moveTbody.firstElementChild.remove();\n }\n }\n if (gObj.getFrozenColumns()) {\n mTr = this.renderMovable(tr);\n if (gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top') {\n mTbody = gObj.getHeaderContent().querySelector('.e-movableheader').querySelector('tbody');\n }\n else {\n mTbody = gObj.getContent().querySelector('.e-movablecontent').querySelector('tbody');\n }\n this.parent.editSettings.newRowPosition === 'Top' ? mTbody.insertBefore(mTr, mTbody.firstChild) : mTbody.appendChild(mTr);\n addClass(mTr.querySelectorAll('.e-rowcell'), ['e-updatedtd']);\n if (this.parent.height === 'auto') {\n this.parent.notify(frozenHeight, {});\n }\n }\n if (gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top') {\n tbody = gObj.getHeaderContent().querySelector('tbody');\n }\n else {\n tbody = gObj.getContent().querySelector('tbody');\n }\n this.parent.editSettings.newRowPosition === 'Top' ? tbody.insertBefore(tr, tbody.firstChild) : tbody.appendChild(tr);\n addClass(tr.querySelectorAll('.e-rowcell'), ['e-updatedtd']);\n modelData[0].isDirty = true;\n modelData[0].changes = extend({}, {}, modelData[0].data, true);\n modelData[0].edit = 'add';\n this.addRowObject(modelData[0]);\n this.refreshRowIdx();\n this.focus.forgetPrevious();\n gObj.notify(batchAdd, { rows: this.parent.getRowsObject(), args: { isFrozen: this.parent.getFrozenColumns() } });\n let changes = this.getBatchChanges();\n let addedRecords = 'addedRecords';\n let dRecords = 'deletedRecords';\n let btmIdx = this.parent.getCurrentViewRecords().length + changes[addedRecords].length - changes[dRecords].length - 1;\n this.parent.editSettings.newRowPosition === 'Top' ? gObj.selectRow(0) : gObj.selectRow(btmIdx);\n if (!data) {\n index = this.findNextEditableCell(0, true);\n col = gObj.getColumns()[index];\n this.parent.editSettings.newRowPosition === 'Top' ? this.editCell(0, col.field, true) :\n this.editCell(btmIdx, col.field, true);\n }\n if (this.parent.aggregates.length > 0 && (data || changes[addedRecords].length)) {\n this.parent.notify(refreshFooterRenderer, {});\n }\n let args1 = {\n defaultData: beforeBatchAddArgs.defaultData, row: tr,\n columnObject: col, columnIndex: index, primaryKey: beforeBatchAddArgs.primaryKey, cell: tr.cells[index]\n };\n gObj.trigger(batchAdd, args1);\n if (gObj.getFrozenColumns()) {\n alignFrozenEditForm(mTr.querySelector('td:not(.e-hide)'), tr.querySelector('td:not(.e-hide)'));\n }\n if (isBlazor()) {\n this.parent.notify(toolbarRefresh, {});\n this.parent.notify('start-add', {});\n }\n });\n }\n renderMovable(ele) {\n let mEle = ele.cloneNode(true);\n for (let i = 0; i < this.parent.getFrozenColumns(); i++) {\n mEle.removeChild(mEle.children[0]);\n }\n for (let i = this.parent.getFrozenColumns(), len = ele.childElementCount; i < len; i++) {\n ele.removeChild(ele.children[ele.childElementCount - 1]);\n }\n return mEle;\n }\n findNextEditableCell(columnIndex, isAdd, isValOnly) {\n let cols = this.parent.getColumns();\n let endIndex = cols.length;\n let validation;\n for (let i = columnIndex; i < endIndex; i++) {\n validation = isValOnly ? isNullOrUndefined(cols[i].validationRules) : false;\n if (!isAdd && this.checkNPCell(cols[i])) {\n return i;\n }\n else if (isAdd && !cols[i].template && cols[i].visible && cols[i].allowEditing &&\n !(cols[i].isIdentity && cols[i].isPrimaryKey) && !validation) {\n return i;\n }\n }\n return -1;\n }\n checkNPCell(col) {\n return !col.template && col.visible && !col.isPrimaryKey && !col.isIdentity && col.allowEditing;\n }\n getDefaultData() {\n let gObj = this.parent;\n let data = {};\n let dValues = { 'number': 0, 'string': null, 'boolean': false, 'date': null, 'datetime': null };\n for (let col of (gObj.columnModel)) {\n if (col.field) {\n setValue(col.field, col.defaultValue ? col.defaultValue : dValues[col.type], data);\n }\n }\n return data;\n }\n setCellIdx(target) {\n let gLen = 0;\n if (this.parent.allowGrouping) {\n gLen = this.parent.groupSettings.columns.length;\n }\n this.cellDetails.cellIndex = target.cellIndex - gLen;\n this.cellDetails.rowIndex = parseInt(target.getAttribute('index'), 10);\n }\n editCell(index, field, isAdd) {\n let gObj = this.parent;\n let col = gObj.getColumnByField(field);\n this.index = index;\n this.field = field;\n this.isAdd = isAdd;\n let checkEdit = gObj.isEdit && !(this.cellDetails.column.field === field\n && (this.cellDetails.rowIndex === index && this.parent.getDataRows().length - 1 !== index));\n if (isBlazor() && col.template && !isAdd) {\n resetBlazorTemplate(this.parent.element.id + col.uid, 'Template', index);\n }\n if (gObj.editSettings.allowEditing) {\n if (!checkEdit && col.allowEditing) {\n this.editCellExtend(index, field, isAdd);\n }\n else if (checkEdit) {\n this.editNext = true;\n this.saveCell();\n }\n }\n }\n editCellExtend(index, field, isAdd) {\n let gObj = this.parent;\n let col = gObj.getColumnByField(field);\n let keys = gObj.getPrimaryKeyFieldNames();\n if (gObj.isEdit) {\n return;\n }\n let row;\n let rowData;\n let mRowData;\n let colIdx = gObj.getColumnIndexByField(field);\n let frzCols = gObj.getFrozenColumns();\n if (frzCols && colIdx >= frzCols) {\n row = gObj.getMovableDataRows()[index];\n mRowData = this.parent.getRowObjectFromUID(this.parent.getMovableDataRows()[index].getAttribute('data-uid'));\n rowData = mRowData.changes ? extend({}, {}, mRowData.changes, true) : extend({}, {}, this.getDataByIndex(index), true);\n }\n else {\n row = gObj.getDataRows()[index];\n rowData = extend({}, {}, this.getDataByIndex(index), true);\n }\n if ((keys[0] === col.field && !row.classList.contains('e-insertedrow')) || col.columns ||\n (col.isPrimaryKey && col.isIdentity)) {\n this.parent.isLastCellPrimaryKey = true;\n return;\n }\n this.parent.isLastCellPrimaryKey = false;\n this.parent.element.classList.add('e-editing');\n let rowObj = gObj.getRowObjectFromUID(row.getAttribute('data-uid'));\n let cells = [].slice.apply(row.cells);\n let args = {\n columnName: col.field, isForeignKey: !isNullOrUndefined(col.foreignKeyValue),\n primaryKey: keys, rowData: rowData,\n validationRules: extend({}, col.validationRules ? col.validationRules : {}),\n value: getObject(col.field, rowData),\n type: !isAdd ? 'edit' : 'add', cancel: false,\n foreignKeyData: rowObj && rowObj.foreignKeyData\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n args.cell = cells[this.getColIndex(cells, this.getCellIdx(col.uid))];\n args.row = row;\n args.columnObject = col;\n if (!args.cell) {\n return;\n }\n }\n gObj.trigger(cellEdit, args, (cellEditArgs) => {\n if (cellEditArgs.cancel) {\n return;\n }\n cellEditArgs.cell = cellEditArgs.cell ? cellEditArgs.cell : cells[this.getColIndex(cells, this.getCellIdx(col.uid))];\n cellEditArgs.row = cellEditArgs.row ? cellEditArgs.row : row;\n cellEditArgs.columnObject = cellEditArgs.columnObject ? cellEditArgs.columnObject : col;\n cellEditArgs.columnObject.index = isNullOrUndefined(cellEditArgs.columnObject.index) ? 0 : cellEditArgs.columnObject.index;\n this.cellDetails = {\n rowData: rowData, column: col, value: cellEditArgs.value, isForeignKey: cellEditArgs.isForeignKey, rowIndex: index,\n cellIndex: parseInt(cellEditArgs.cell.getAttribute('aria-colindex'), 10),\n foreignKeyData: cellEditArgs.foreignKeyData\n };\n if (cellEditArgs.cell.classList.contains('e-updatedtd')) {\n this.isColored = true;\n cellEditArgs.cell.classList.remove('e-updatedtd');\n }\n if (isBlazor() && gObj.isServerRendered) {\n let cell = 'cells';\n let cloneCell = 'cloneCell';\n let indent = cellEditArgs.row.querySelectorAll('.e-indentcell, .e-detailrowcollapse, .e-detailrowexpand, .e-rowdragdrop').length;\n this.cloneCell[`${this.cellDetails.rowIndex}${cellEditArgs.columnObject.index}`] =\n cellEditArgs[cloneCell] = cellEditArgs.cell.cloneNode(true);\n if ((parentsUntil(cellEditArgs.cell, 'e-movableheader') || parentsUntil(cellEditArgs.cell, 'e-movablecontent'))) {\n cellEditArgs.row.insertCell(cellEditArgs.columnObject.index - gObj.getFrozenColumns());\n cellEditArgs.row.replaceChild(cellEditArgs[cloneCell], cellEditArgs.row[cell][cellEditArgs.columnObject.index - gObj.getFrozenColumns()]);\n }\n else {\n cellEditArgs.row.insertCell(cellEditArgs.columnObject.index + indent);\n cellEditArgs.row.replaceChild(cellEditArgs[cloneCell], cellEditArgs.row[cell][cellEditArgs.columnObject.index + indent]);\n }\n this.originalCell[`${this.cellDetails.rowIndex}${cellEditArgs.columnObject.index}`] =\n cellEditArgs.cell.parentElement.removeChild(cellEditArgs.cell);\n removeClass([this.cloneCell[`${this.cellDetails.rowIndex}${cellEditArgs.columnObject.index}`]], ['e-focus', 'e-focused']);\n }\n gObj.isEdit = true;\n gObj.clearSelection();\n if (!gObj.isCheckBoxSelection || !gObj.isPersistSelection) {\n gObj.selectRow(this.cellDetails.rowIndex, true);\n }\n this.renderer.update(cellEditArgs);\n this.parent.notify(batchEditFormRendered, cellEditArgs);\n this.form = gObj.element.querySelector('#' + gObj.element.id + 'EditForm');\n gObj.editModule.applyFormValidation([col]);\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n });\n }\n updateCell(rowIndex, field, value) {\n let col = this.parent.getColumnByField(field);\n let index = this.parent.getColumnIndexByField(field);\n if (col && !col.isPrimaryKey) {\n let td = this.parent.getDataRows()[rowIndex].querySelectorAll('.e-rowcell')[index];\n if (this.parent.getFrozenColumns()) {\n let cells = [].slice.call(this.parent.getDataRows()[rowIndex].querySelectorAll('.e-rowcell')).concat([].slice.call(this.parent.getMovableDataRows()[rowIndex].querySelectorAll('.e-rowcell')));\n td = cells[index];\n }\n let rowObj = this.parent.getRowObjectFromUID(td.parentElement.getAttribute('data-uid'));\n this.refreshTD(td, col, rowObj, value);\n this.parent.trigger(queryCellInfo, {\n cell: td, column: col, data: rowObj.changes\n });\n }\n }\n setChanges(rowObj, field, value, td) {\n let currentRowObj;\n if (!this.parent.getFrozenColumns()) {\n if (!rowObj.changes) {\n rowObj.changes = extend({}, {}, rowObj.data, true);\n }\n if (!isNullOrUndefined(field)) {\n DataUtil.setValue(field, value, rowObj.changes);\n }\n if (rowObj.data[field] !== value) {\n rowObj.isDirty = true;\n }\n }\n else {\n let rowEle = this.parent.getRowElementByUID(rowObj.uid);\n let rowIndex = parseInt(rowEle.getAttribute('aria-rowindex'), 10);\n currentRowObj = this.parent.getRowsObject()[rowIndex];\n if (!currentRowObj.changes) {\n currentRowObj.changes = extend({}, {}, rowObj.data, true);\n }\n if (!isNullOrUndefined(field)) {\n setValue(field, value, currentRowObj.changes);\n }\n let movableRowObject;\n if (isBlazor() && this.parent.isServerRendered && (parentsUntil(td, 'e-movableheader') ||\n parentsUntil(td, 'e-movablecontent'))) {\n let movRowEle = this.parent.getMovableRowByIndex(this.cellDetails.rowIndex);\n let movRowIndex = parseInt(movRowEle.getAttribute('aria-rowindex'), 10);\n movableRowObject = this.parent.getMovableRowsObject()[movRowIndex];\n }\n else {\n movableRowObject = this.parent.getMovableRowsObject()[rowIndex];\n }\n movableRowObject.changes = extend({}, {}, currentRowObj.changes, true);\n if (rowObj.data[field] !== value) {\n movableRowObject.isDirty = true;\n currentRowObj.isDirty = true;\n }\n }\n }\n updateRow(index, data) {\n let keys = Object.keys(data);\n for (let col of keys) {\n this.updateCell(index, col, data[col]);\n }\n }\n getCellIdx(uid) {\n let cIdx = this.parent.getColumnIndexByUid(uid) + this.parent.groupSettings.columns.length;\n if (!isNullOrUndefined(this.parent.detailTemplate) || !isNullOrUndefined(this.parent.childGrid)) {\n cIdx++;\n }\n if (this.parent.isRowDragable()) {\n cIdx++;\n }\n return cIdx;\n }\n refreshTD(td, column, rowObj, value) {\n let cell = new CellRenderer(this.parent, this.serviceLocator);\n let rowcell;\n value = column.type === 'number' && !isNullOrUndefined(value) ? parseFloat(value) : value;\n this.setChanges(rowObj, column.field, value, td);\n let frzCols = this.parent.getFrozenColumns();\n refreshForeignData(rowObj, this.parent.getForeignKeyColumns(), rowObj.changes);\n if (frzCols && this.getCellIdx(column.uid) >= frzCols && this.parent.getColumns().length === rowObj.cells.length) {\n rowcell = rowObj.cells.slice(frzCols, rowObj.cells.length);\n }\n else {\n rowcell = rowObj.cells;\n }\n cell.refreshTD(td, rowcell[this.getCellIdx(column.uid) - (this.getCellIdx(column.uid) >= frzCols ? frzCols : 0)], rowObj.changes, { 'index': this.getCellIdx(column.uid) });\n td.classList.add('e-updatedtd');\n this.parent.notify(toolbarRefresh, {});\n }\n getColIndex(cells, index) {\n let cIdx = 0;\n if (this.parent.allowGrouping && this.parent.groupSettings.columns) {\n cIdx = this.parent.groupSettings.columns.length;\n }\n if (!isNullOrUndefined(this.parent.detailTemplate) || !isNullOrUndefined(this.parent.childGrid)) {\n cIdx++;\n }\n if (this.parent.isRowDragable()) {\n cIdx++;\n }\n for (let m = 0; m < cells.length; m++) {\n let colIndex = parseInt(cells[m].getAttribute('aria-colindex'), 10);\n if (colIndex === index - cIdx) {\n return m;\n }\n }\n return -1;\n }\n editNextValCell() {\n let gObj = this.parent;\n let changes = this.getBatchChanges();\n let addedRecords = 'addedRecords';\n let dRecords = 'deletedRecords';\n let btmIdx = (this.parent.getCurrentViewRecords().length + changes[addedRecords].length - changes[dRecords].length) - 1;\n if (this.isAdded && !gObj.isEdit) {\n for (let i = this.cellDetails.cellIndex; i < gObj.getColumns().length; i++) {\n if (gObj.isEdit) {\n return;\n }\n let index = this.findNextEditableCell(this.cellDetails.cellIndex + 1, true, true);\n let col = gObj.getColumns()[index];\n if (col) {\n this.parent.editSettings.newRowPosition === 'Bottom' ? this.editCell(btmIdx, col.field, true) :\n this.editCell(0, col.field, true);\n this.saveCell();\n }\n }\n if (!gObj.isEdit) {\n this.isAdded = false;\n }\n }\n }\n escapeCellEdit() {\n let args = this.generateCellArgs();\n args.value = args.previousValue;\n this.successCallBack(args, args.cell.parentElement, args.column, true)(args);\n }\n generateCellArgs() {\n let gObj = this.parent;\n this.parent.element.classList.remove('e-editing');\n let column = this.cellDetails.column;\n let obj = {};\n obj[column.field] = getObject(column.field, this.cellDetails.rowData);\n let editedData = gObj.editModule.getCurrentEditedData(this.form, obj);\n let cloneEditedData = extend({}, editedData);\n editedData = extend({}, editedData, this.cellDetails.rowData);\n let value = getObject(column.field, cloneEditedData);\n if (!isNullOrUndefined(column.field) && !isUndefined(value)) {\n setValue(column.field, value, editedData);\n }\n let args = {\n columnName: column.field,\n value: getObject(column.field, editedData),\n rowData: this.cellDetails.rowData,\n column: column,\n previousValue: this.cellDetails.value,\n isForeignKey: this.cellDetails.isForeignKey,\n cancel: false\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n args.cell = this.form.parentElement;\n args.columnObject = column;\n }\n return args;\n }\n saveCell(isForceSave) {\n if (this.preventSaveCell) {\n return;\n }\n let gObj = this.parent;\n if (!isForceSave && (!gObj.isEdit || this.validateFormObj())) {\n return;\n }\n this.preventSaveCell = true;\n let args = this.generateCellArgs();\n let tr = isBlazor() ? parentsUntil(this.form, 'e-row') : args.cell.parentElement;\n let col = isBlazor() ? this.cellDetails.column : args.column;\n if (isBlazor()) {\n delete args.column;\n }\n if (!isForceSave) {\n gObj.trigger(cellSave, args, this.successCallBack(args, tr, col));\n gObj.notify(batchForm, { formObj: this.form });\n }\n else {\n this.successCallBack(args, tr, col)(args);\n }\n }\n successCallBack(cellSaveArgs, tr, column, isEscapeCellEdit) {\n return (cellSaveArgs) => {\n let gObj = this.parent;\n cellSaveArgs.cell = cellSaveArgs.cell ? cellSaveArgs.cell : this.form.parentElement;\n cellSaveArgs.columnObject = cellSaveArgs.columnObject ? cellSaveArgs.columnObject : column;\n cellSaveArgs.columnObject.index = isNullOrUndefined(cellSaveArgs.columnObject.index) ? 0 : cellSaveArgs.columnObject.index;\n if (cellSaveArgs.cancel) {\n this.preventSaveCell = false;\n if (this.editNext) {\n this.editNext = false;\n if (this.cellDetails.rowIndex === this.index && this.cellDetails.column.field === this.field) {\n return;\n }\n this.editCellExtend(this.index, this.field, this.isAdd);\n }\n return;\n }\n gObj.editModule.destroyWidgets([column]);\n gObj.isEdit = false;\n gObj.editModule.destroyForm();\n if (isBlazor() && column.template && !cellSaveArgs.cell.parentElement.classList.contains('e-insertedrow')) {\n updateBlazorTemplate(gObj.element.id + column.uid, 'Template', column, false);\n }\n this.parent.notify(tooltipDestroy, {});\n if (isBlazor() && gObj.isServerRendered && (parentsUntil(cellSaveArgs.cell, 'e-movableheader') ||\n parentsUntil(cellSaveArgs.cell, 'e-movablecontent'))) {\n this.refreshTD(cellSaveArgs.cell, column, gObj.getMovableRowsObject()[this.cellDetails.rowIndex], cellSaveArgs.value);\n }\n else {\n let rowObj = parentsUntil(cellSaveArgs.cell, 'e-movablecontent') ?\n gObj.getMovableRowsObject()[this.cellDetails.rowIndex] : gObj.getRowObjectFromUID(tr.getAttribute('data-uid'));\n this.refreshTD(cellSaveArgs.cell, column, rowObj, cellSaveArgs.value);\n }\n removeClass([tr], ['e-editedrow', 'e-batchrow']);\n removeClass([cellSaveArgs.cell], ['e-editedbatchcell', 'e-boolcell']);\n if (!isNullOrUndefined(cellSaveArgs.value) && cellSaveArgs.value.toString() ===\n (!isNullOrUndefined(this.cellDetails.value) ? this.cellDetails.value : '').toString() && !this.isColored\n || (isNullOrUndefined(cellSaveArgs.value) && isNullOrUndefined(this.cellDetails.value) &&\n !cellSaveArgs.cell.parentElement.classList.contains('e-insertedrow'))) {\n cellSaveArgs.cell.classList.remove('e-updatedtd');\n if (isBlazor() && gObj.isServerRendered && (!isNullOrUndefined(cellSaveArgs.value) ? cellSaveArgs.value : '').toString() ===\n (!isNullOrUndefined(this.cellDetails.value) ? this.cellDetails.value : '').toString()) {\n if (this.cloneCell[`${parseInt(tr.getAttribute('aria-rowindex'), 10)}${cellSaveArgs.columnObject.index}`].\n classList.contains('e-selectionbackground')) {\n this.originalCell[`${parseInt(tr.getAttribute('aria-rowindex'), 10)}${cellSaveArgs.columnObject.index}`].\n classList.add('e-selectionbackground', 'e-active');\n }\n else {\n this.originalCell[`${parseInt(tr.getAttribute('aria-rowindex'), 10)}${cellSaveArgs.columnObject.index}`].\n classList.remove('e-selectionbackground', 'e-active');\n }\n this.cloneCell[`${parseInt(tr.getAttribute('aria-rowindex'), 10)}${cellSaveArgs.columnObject.index}`]\n .replaceWith(this.originalCell[`${parseInt(tr.getAttribute('aria-rowindex'), 10)}${cellSaveArgs.columnObject.index}`]);\n }\n }\n if (isNullOrUndefined(isEscapeCellEdit)) {\n gObj.trigger(cellSaved, cellSaveArgs);\n }\n gObj.notify(toolbarRefresh, {});\n this.isColored = false;\n if (this.parent.aggregates.length > 0) {\n this.parent.notify(refreshFooterRenderer, {});\n if (this.parent.groupSettings.columns.length > 0 && !this.isAddRow(this.cellDetails.rowIndex)) {\n this.parent.notify(groupAggregates, {});\n }\n }\n this.preventSaveCell = false;\n if (this.editNext) {\n this.editNext = false;\n if (this.cellDetails.rowIndex === this.index && this.cellDetails.column.field === this.field) {\n return;\n }\n let col = gObj.getColumnByField(this.field);\n if (col && col.allowEditing) {\n this.editCellExtend(this.index, this.field, this.isAdd);\n }\n }\n if (isEscapeCellEdit) {\n gObj.notify(restoreFocus, {});\n }\n };\n }\n getDataByIndex(index) {\n let row = this.parent.getRowObjectFromUID(this.parent.getDataRows()[index].getAttribute('data-uid'));\n return row.changes ? row.changes : row.data;\n }\n keyDownHandler(e) {\n if ((e.action === 'tab' || e.action === 'shiftTab') && this.parent.isEdit) {\n let gObj = this.parent;\n let changes = this.getBatchChanges();\n let addedRecords = 'addedRecords';\n let dRecords = 'deletedRecords';\n let btmIdx = (this.parent.getCurrentViewRecords().length + changes[addedRecords].length - changes[dRecords].length) - 1;\n let rowcell = parentsUntil(e.target, 'e-rowcell');\n if (rowcell) {\n let cell = rowcell.querySelector('.e-field');\n if (cell) {\n let visibleColumns = this.parent.getVisibleColumns();\n let columnIndex = e.action === 'tab' ? visibleColumns.length - 1 : 0;\n if (visibleColumns[columnIndex].field === cell.getAttribute('id').slice(this.parent.element.id.length)) {\n if (this.cellDetails.rowIndex === btmIdx && e.action === 'tab') {\n if (gObj.editSettings.newRowPosition === 'Top') {\n gObj.editSettings.newRowPosition = 'Bottom';\n this.addRecord();\n gObj.editSettings.newRowPosition = 'Top';\n }\n else {\n this.addRecord();\n }\n }\n else {\n this.saveCell();\n }\n }\n }\n }\n }\n }\n /**\n * @hidden\n */\n addCancelWhilePaging() {\n if (this.validateFormObj()) {\n this.parent.notify(destroyForm, {});\n this.parent.isEdit = false;\n this.isColored = false;\n }\n }\n}\n\n/**\n * `DialogEdit` module is used to handle dialog editing actions.\n * @hidden\n */\nclass DialogEdit extends NormalEdit {\n constructor(parent, serviceLocator, renderer) {\n //constructor\n super(parent, serviceLocator);\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.renderer = renderer;\n }\n closeEdit() {\n //closeEdit\n super.closeEdit();\n }\n addRecord(data, index) {\n //addRecord\n super.addRecord(data, index);\n }\n endEdit() {\n //endEdit\n super.endEdit();\n }\n updateRow(index, data) {\n super.updateRow(index, data);\n }\n deleteRecord(fieldname, data) {\n //deleteRecord\n super.deleteRecord(fieldname, data);\n }\n startEdit(tr) {\n super.startEdit(tr);\n }\n}\n\n/**\n * `DatePickerEditCell` is used to handle datepicker cell type editing.\n * @hidden\n */\nclass DatePickerEditCell {\n constructor(parent) {\n this.parent = parent;\n }\n create(args) {\n /* tslint:disable-next-line:no-any */\n let complexFieldName = getComplexFieldID(args.column.field);\n return this.parent.createElement('input', {\n className: 'e-field', attrs: {\n id: this.parent.element.id + complexFieldName,\n name: complexFieldName, type: 'text', 'e-mappinguid': args.column.uid\n }\n });\n }\n read(element) {\n return element.ej2_instances[0].value;\n }\n write(args) {\n if (args.column.editType === 'datepickeredit') {\n this.obj = new DatePicker(extend(dateanddatetimerender(args, this.parent.editSettings.mode, this.parent.enableRtl), args.column.edit.params));\n }\n else if (args.column.editType === 'datetimepickeredit') {\n this.obj = new DateTimePicker(extend(dateanddatetimerender(args, this.parent.editSettings.mode, this.parent.enableRtl), args.column.edit.params));\n }\n if (isBlazor()) {\n this.obj.locale = this.parent.locale;\n }\n this.obj.appendTo(args.element);\n }\n destroy() {\n if (this.obj) {\n this.obj.destroy();\n }\n }\n}\nfunction dateanddatetimerender(args, mode, rtl) {\n let isInline = mode !== 'Dialog';\n let format = getCustomDateFormat(args.column.format, args.column.type);\n let value = getObject(args.column.field, args.rowData);\n value = value ? new Date(value) : null;\n return {\n floatLabelType: isInline ? 'Never' : 'Always',\n value: value,\n format: format,\n placeholder: isInline ?\n '' : args.column.headerText, enableRtl: rtl,\n enabled: isEditable(args.column, args.requestType, args.element),\n };\n}\n\n/**\n * `TemplateEditCell` is used to handle template cell.\n * @hidden\n */\nclass TemplateEditCell {\n constructor(parent) {\n this.parent = parent;\n }\n read(element, value) {\n return value;\n }\n write() {\n //\n }\n destroy() {\n //\n }\n}\n\n/**\n * The `Edit` module is used to handle editing actions.\n */\nclass Edit {\n /**\n * Constructor for the Grid editing module\n * @hidden\n */\n constructor(parent, serviceLocator) {\n this.editType = { 'Inline': InlineEdit, 'Normal': InlineEdit, 'Batch': BatchEdit, 'Dialog': DialogEdit };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.l10n = this.serviceLocator.getService('localization');\n this.addEventListener();\n this.updateEditObj();\n this.createAlertDlg();\n this.createConfirmDlg();\n }\n updateColTypeObj() {\n let cols = this.parent.columnModel;\n for (let i = 0; i < cols.length; i++) {\n if (this.parent.editSettings.template || cols[i].editTemplate) {\n let templteCell = 'templateedit';\n cols[i].edit = extend(new Edit.editCellType[templteCell](this.parent), cols[i].edit || {});\n }\n else {\n cols[i].edit = extend(new Edit.editCellType[cols[i].editType && Edit.editCellType[cols[i].editType] ?\n cols[i].editType : 'defaultedit'](this.parent, this.serviceLocator), cols[i].edit || {});\n }\n }\n this.parent.log('primary_column_missing');\n }\n /**\n * For internal use only - Get the module name.\n * @private\n */\n getModuleName() {\n return 'edit';\n }\n /**\n * @hidden\n */\n onPropertyChanged(e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n let gObj = this.parent;\n let newProp = e.properties;\n for (let prop of Object.keys(e.properties)) {\n switch (prop) {\n case 'allowAdding':\n case 'allowDeleting':\n case 'allowEditing':\n if (gObj.editSettings.allowAdding || gObj.editSettings.allowEditing || gObj.editSettings.allowDeleting) {\n this.initialEnd();\n }\n break;\n case 'mode':\n this.updateEditObj();\n gObj.isEdit = false;\n gObj.refresh();\n break;\n }\n }\n }\n updateEditObj() {\n if (this.editModule) {\n this.editModule.destroy();\n }\n this.renderer = new EditRender(this.parent, this.serviceLocator);\n this.editModule = new this.editType[this.parent.editSettings.mode](this.parent, this.serviceLocator, this.renderer);\n }\n initialEnd() {\n this.updateColTypeObj();\n }\n /**\n * Edits any bound record in the Grid by TR element.\n * @param {HTMLTableRowElement} tr - Defines the table row to be edited.\n */\n startEdit(tr) {\n let gObj = this.parent;\n if (!gObj.editSettings.allowEditing || gObj.isEdit || gObj.editSettings.mode === 'Batch') {\n return;\n }\n this.parent.element.classList.add('e-editing');\n if (!gObj.getSelectedRows().length) {\n if (!tr) {\n this.showDialog('EditOperationAlert', this.alertDObj);\n return;\n }\n }\n else if (!tr) {\n tr = gObj.getSelectedRows()[0];\n }\n this.isLastRow = tr.rowIndex === this.parent.getContent().querySelector('tr:last-child').rowIndex;\n if (tr.style.display === 'none') {\n return;\n }\n this.editModule.startEdit(tr);\n if (!isBlazor()) {\n this.refreshToolbar();\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n this.parent.notify('start-edit', {});\n }\n }\n /**\n * @hidden\n */\n checkLastRow(tr, args) {\n let checkLastRow = this.isLastRow;\n if (this.parent.height !== 'auto' && this.parent.editSettings.newRowPosition === 'Bottom' && args &&\n args.requestType === 'add' && this.parent.height > this.parent.getContentTable().scrollHeight) {\n addClass(tr.querySelectorAll('.e-rowcell'), 'e-lastrowadded');\n }\n else if (checkLastRow && tr && tr.classList) {\n addClass(tr.querySelectorAll('.e-rowcell'), 'e-lastrowcell');\n }\n }\n /**\n * Cancels edited state.\n */\n closeEdit() {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.showConfirmDialog\n && this.parent.element.querySelectorAll('.e-updatedtd').length) {\n this.showDialog('CancelEdit', this.dialogObj);\n return;\n }\n this.parent.element.classList.remove('e-editing');\n this.editModule.closeEdit();\n if (!isBlazor()) {\n this.refreshToolbar();\n this.parent.notify('close-edit', {});\n }\n }\n refreshToolbar() {\n this.parent.notify(toolbarRefresh, {});\n }\n /**\n * To adds a new row at the top with the given data. When data is not passed, it will add empty rows.\n * > `editSettings.allowEditing` should be true.\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n */\n addRecord(data, index) {\n if (!this.parent.editSettings.allowAdding) {\n return;\n }\n let args = { startEdit: true };\n if (!data) {\n this.parent.notify(virtualScrollAddActionBegin, args);\n }\n if (args.startEdit) {\n this.parent.element.classList.add('e-editing');\n this.editModule.addRecord(data, index);\n if (!isBlazor()) {\n this.refreshToolbar();\n this.parent.notify('start-add', {});\n }\n }\n }\n /**\n * Deletes a record with the given options. If fieldname and data are not given, the Grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n * @param {string} fieldname - Defines the primary key field name of the column.\n * @param {Object} data - Defines the JSON data record to be deleted.\n */\n deleteRecord(fieldname, data) {\n let gObj = this.parent;\n if (!gObj.editSettings.allowDeleting) {\n return;\n }\n if (!data) {\n if (!gObj.getSelectedRecords().length && isNullOrUndefined(gObj.commandDelIndex)) {\n this.showDialog('DeleteOperationAlert', this.alertDObj);\n return;\n }\n }\n if (gObj.editSettings.showDeleteConfirmDialog) {\n this.showDialog('ConfirmDelete', this.dialogObj);\n return;\n }\n this.editModule.deleteRecord(fieldname, data);\n }\n /**\n * Deletes a visible row by TR element.\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n */\n deleteRow(tr) {\n this.deleteRowUid = tr.getAttribute('data-uid');\n let rowObj = this.parent.getRowObjectFromUID(this.deleteRowUid);\n if (!isNullOrUndefined(rowObj)) {\n this.deleteRecord(null, rowObj.data);\n }\n }\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n */\n endEdit() {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.showConfirmDialog &&\n (isNullOrUndefined(this.formObj) || this.formObj.validate())) {\n this.parent.editModule.saveCell();\n this.parent.notify(editNextValCell, {});\n if (isNullOrUndefined(this.formObj) || this.formObj.validate()) {\n this.showDialog('BatchSaveConfirm', this.dialogObj);\n return;\n }\n }\n this.endEditing();\n }\n /**\n * To update the specified cell by given value without changing into edited state.\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n */\n updateCell(rowIndex, field, value) {\n this.editModule.updateCell(rowIndex, field, value);\n }\n /**\n * To update the specified row by given values without changing into edited state.\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n */\n updateRow(index, data) {\n this.editModule.updateRow(index, data);\n }\n /**\n * Resets added, edited, and deleted records in the batch mode.\n */\n batchCancel() {\n this.closeEdit();\n }\n /**\n * Bulk saves added, edited, and deleted records in the batch mode.\n */\n batchSave() {\n this.endEdit();\n }\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n */\n editCell(index, field) {\n this.editModule.editCell(index, field);\n }\n /**\n * Checks the status of validation at the time of editing. If validation is passed, it returns true.\n * @return {boolean}\n */\n editFormValidate() {\n if (this.formObj) {\n return this.formObj.validate();\n }\n return false;\n }\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n * @return {Object}\n */\n getBatchChanges() {\n return this.editModule.getBatchChanges ? this.editModule.getBatchChanges() : {};\n }\n /**\n * Gets the current value of the edited component.\n */\n getCurrentEditCellData() {\n let obj = this.getCurrentEditedData(this.formObj.element, {});\n return obj[Object.keys(obj)[0]];\n }\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n */\n saveCell() {\n this.editModule.saveCell();\n }\n endEditing() {\n this.parent.element.classList.remove('e-editing');\n this.editModule.endEdit();\n this.refreshToolbar();\n }\n showDialog(content, obj) {\n obj.content = '
    ' + this.l10n.getConstant(content) + '
    ';\n obj.dataBind();\n obj.show();\n }\n getValueFromType(col, value) {\n let val = value;\n switch (col.type) {\n case 'number':\n val = !isNaN(parseFloat(value)) ? parseFloat(value) : null;\n break;\n case 'boolean':\n if (col.editType !== 'booleanedit') {\n val = value === this.l10n.getConstant('True') || value === true ? true : false;\n }\n break;\n case 'date':\n case 'datetime':\n if (col.editType !== 'datepickeredit' && col.editType !== 'datetimepickeredit'\n && value && value.length) {\n val = new Date(value);\n }\n else if (value === '') {\n val = null;\n }\n break;\n }\n return val;\n }\n destroyToolTip() {\n let elements = [].slice.call(this.parent.element.querySelectorAll('.e-griderror'));\n for (let elem of elements) {\n remove(elem);\n }\n this.parent.getContent().firstElementChild.style.position = 'relative';\n }\n createConfirmDlg() {\n this.dialogObj = this.dlgWidget([\n {\n click: this.dlgOk.bind(this),\n buttonModel: { content: this.l10n.getConstant('OKButton'), cssClass: 'e-primary', isPrimary: true }\n },\n {\n click: this.dlgCancel.bind(this),\n buttonModel: { cssClass: 'e-flat', content: this.l10n.getConstant('CancelButton') }\n }\n ], 'EditConfirm');\n }\n createAlertDlg() {\n this.alertDObj = this.dlgWidget([\n {\n click: this.alertClick.bind(this), buttonModel: { content: this.l10n.getConstant('OKButton'), cssClass: 'e-flat', isPrimary: true }\n }\n ], 'EditAlert');\n }\n alertClick() {\n this.alertDObj.hide();\n }\n dlgWidget(btnOptions, name) {\n let div = this.parent.createElement('div', { id: this.parent.element.id + name });\n this.parent.element.appendChild(div);\n let options = {\n showCloseIcon: false,\n isModal: true,\n visible: false,\n closeOnEscape: true,\n target: this.parent.element,\n width: '320px',\n animationSettings: { effect: 'None' }\n };\n options.buttons = btnOptions;\n let obj = new Dialog(options);\n let isStringTemplate = 'isStringTemplate';\n obj[isStringTemplate] = true;\n obj.appendTo(div);\n return obj;\n }\n dlgCancel() {\n this.parent.focusModule.clearIndicator();\n this.parent.focusModule.restoreFocus();\n this.dialogObj.hide();\n }\n dlgOk(e) {\n switch (this.dialogObj.element.querySelector('.e-dlg-content').firstElementChild.innerText) {\n case this.l10n.getConstant('ConfirmDelete'):\n this.editModule.deleteRecord();\n break;\n case this.l10n.getConstant('CancelEdit'):\n this.editModule.closeEdit();\n break;\n case this.l10n.getConstant('BatchSaveConfirm'):\n this.endEditing();\n break;\n case this.l10n.getConstant('BatchSaveLostChanges'):\n if (this.parent.editSettings.mode === 'Batch') {\n this.editModule.addCancelWhilePaging();\n if (isBlazor() && this.parent.isServerRendered) {\n this.editModule.closeEdit();\n }\n }\n this.executeAction();\n break;\n }\n this.dlgCancel();\n }\n /**\n * @hidden\n */\n addEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(initialEnd, this.initialEnd, this);\n this.parent.on(keyPressed, this.keyPressHandler, this);\n this.parent.on(autoCol, this.updateColTypeObj, this);\n this.parent.on(tooltipDestroy, this.destroyToolTip, this);\n this.parent.on(preventBatch, this.preventBatch, this);\n this.parent.on(destroyForm, this.destroyForm, this);\n this.actionBeginFunction = this.onActionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.parent.addEventListener(actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(actionComplete, this.actionCompleteFunction);\n }\n /**\n * @hidden\n */\n removeEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(initialEnd, this.initialEnd);\n this.parent.off(keyPressed, this.keyPressHandler);\n this.parent.off(autoCol, this.updateColTypeObj);\n this.parent.off(tooltipDestroy, this.destroyToolTip);\n this.parent.off(preventBatch, this.preventBatch);\n this.parent.off(destroyForm, this.destroyForm);\n this.parent.removeEventListener(actionComplete, this.actionCompleteFunction);\n this.parent.removeEventListener(actionBegin, this.actionBeginFunction);\n }\n actionComplete(e) {\n let actions = ['add', 'beginEdit', 'save', 'delete', 'cancel'];\n if (actions.indexOf(e.requestType) < 0) {\n this.parent.isEdit = false;\n }\n if (e.requestType === 'batchsave') {\n this.parent.focusModule.restoreFocus();\n }\n this.refreshToolbar();\n }\n /**\n * @hidden\n */\n getCurrentEditedData(form, editedData) {\n let gObj = this.parent;\n if (gObj.editSettings.template) {\n let elements = [].slice.call(form.elements);\n for (let k = 0; k < elements.length; k++) {\n if ((elements[k].hasAttribute('name') && (elements[k].className !== 'e-multi-hidden')) ||\n elements[k].classList.contains('e-multiselect')) {\n let field = (elements[k].hasAttribute('name')) ? setComplexFieldID(elements[k].getAttribute('name')) :\n setComplexFieldID(elements[k].getAttribute('id'));\n let column = gObj.getColumnByField(field) || { field: field, type: elements[k].getAttribute('type') };\n let value;\n if (column.type === 'checkbox' || column.type === 'boolean') {\n value = elements[k].checked;\n }\n else if (elements[k].value) {\n value = elements[k].value;\n if (elements[k].ej2_instances &&\n elements[k].ej2_instances.length &&\n !isNullOrUndefined(elements[k].ej2_instances[0].value)) {\n elements[k].blur();\n value = elements[k].ej2_instances[0].value;\n if ((column.type === 'date' || column.type === 'dateTime' || column.type === 'datetime') &&\n (elements[k].ej2_instances[0].isServerRendered)) {\n value = elements[k].value;\n }\n }\n }\n else if (elements[k].ej2_instances) {\n value = elements[k].ej2_instances[0].value;\n }\n if (column.edit && typeof column.edit.read === 'string') {\n value = getValue(column.edit.read, window)(elements[k], value);\n }\n else if (column.edit && column.edit.read) {\n value = column.edit.read(elements[k], value);\n }\n value = gObj.editModule.getValueFromType(column, value);\n DataUtil.setValue(column.field, value, editedData);\n }\n }\n return editedData;\n }\n let col = gObj.columnModel.filter((col) => col.editTemplate);\n for (let j = 0; j < col.length; j++) {\n if (form[getComplexFieldID(col[j].field)]) {\n let inputElements = [].slice.call(form[getComplexFieldID(col[j].field)]);\n inputElements = inputElements.length ? inputElements : [form[getComplexFieldID(col[j].field)]];\n let temp = inputElements.filter((e) => !isNullOrUndefined((e.ej2_instances)));\n if (temp.length === 0) {\n temp = inputElements.filter((e) => e.hasAttribute('name'));\n }\n for (let k = 0; k < temp.length; k++) {\n let value = this.getValue(col[j], temp[k], editedData);\n DataUtil.setValue(col[j].field, value, editedData);\n }\n }\n }\n let inputs = [].slice.call(form.querySelectorAll('.e-field'));\n for (let i = 0, len = inputs.length; i < len; i++) {\n let col = gObj.getColumnByUid(inputs[i].getAttribute('e-mappinguid'));\n if (col && col.field) {\n let value = this.getValue(col, inputs[i], editedData);\n DataUtil.setValue(col.field, value, editedData);\n }\n }\n return editedData;\n }\n getValue(col, input, editedData) {\n let value = input.ej2_instances &&\n !(isBlazor() && input.ej2_instances[0].isServerRendered\n && (col.type === 'date' || col.type === 'datetime')) ?\n input.ej2_instances[0].value : input.value;\n let gObj = this.parent;\n let temp = col.edit.read;\n if (col.type === 'checkbox' || col.type === 'boolean') {\n value = input.checked;\n }\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n value = gObj.editModule.getValueFromType(col, (temp)(input, value));\n }\n else {\n value = gObj.editModule.getValueFromType(col, col.edit.read(input, value));\n }\n if (isNullOrUndefined(editedData[col.field]) && value === '') {\n value = editedData[col.field];\n }\n return value;\n }\n /**\n * @hidden\n */\n onActionBegin(e) {\n if (e.requestType === 'columnstate' && this.parent.isEdit\n && this.parent.editSettings.mode !== 'Batch') {\n this.closeEdit();\n }\n else {\n let restrictedRequestTypes = ['filterafteropen', 'filterbeforeopen', 'filterchoicerequest', 'save', 'infiniteScroll'];\n if (this.parent.editSettings.mode !== 'Batch' && this.formObj && !this.formObj.isDestroyed\n && restrictedRequestTypes.indexOf(e.requestType) === -1 && !e.cancel) {\n this.destroyWidgets();\n this.destroyForm();\n }\n }\n }\n /**\n * @hidden\n */\n destroyWidgets(cols) {\n let gObj = this.parent;\n if (gObj.editSettings.template) {\n this.parent.destroyTemplate(['editSettingsTemplate']);\n }\n cols = cols ? cols : this.parent.getVisibleColumns();\n if (cols.some((column) => !isNullOrUndefined(column.editTemplate))) {\n this.parent.destroyTemplate(['editTemplate']);\n }\n for (let col of cols) {\n let temp = col.edit.destroy;\n if (isBlazor() && col.editTemplate) {\n resetBlazorTemplate(this.parent.element.id + col.uid + 'editTemplate', 'EditTemplate');\n updateBlazorTemplate(this.parent.element.id + col.uid + 'editTemplate', 'EditTemplate', col, false);\n }\n if (col.edit.destroy) {\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n temp();\n }\n else {\n col.edit.destroy();\n }\n }\n }\n let elements = [].slice.call(this.formObj.element.elements);\n for (let i = 0; i < elements.length; i++) {\n if (elements[i].hasAttribute('name')) {\n if (elements[i].ej2_instances &&\n elements[i].ej2_instances.length &&\n !elements[i].ej2_instances[0].isDestroyed) {\n elements[i].ej2_instances[0].destroy();\n }\n }\n }\n }\n /**\n * @hidden\n */\n destroyForm() {\n this.destroyToolTip();\n if (this.formObj && !this.formObj.isDestroyed) {\n this.formObj.destroy();\n }\n this.destroyToolTip();\n }\n /**\n * To destroy the editing.\n * @return {void}\n * @hidden\n */\n destroy() {\n let gridElement = this.parent.element;\n if (!gridElement) {\n return;\n }\n let hasGridChild = gridElement.querySelector('.e-gridheader') &&\n gridElement.querySelector('.e-gridcontent') ? true : false;\n if (hasGridChild) {\n this.destroyForm();\n }\n this.removeEventListener();\n let elem = this.dialogObj.element;\n if (elem.childElementCount > 0) {\n this.dialogObj.destroy();\n remove(elem);\n }\n elem = this.alertDObj.element;\n if (elem.childElementCount > 0) {\n this.alertDObj.destroy();\n remove(elem);\n }\n if (!hasGridChild) {\n return;\n }\n if (this.editModule) {\n this.editModule.destroy();\n }\n }\n keyPressHandler(e) {\n switch (e.action) {\n case 'insert':\n this.addRecord();\n break;\n case 'delete':\n if ((e.target.tagName !== 'INPUT' || e.target.classList.contains('e-checkselect'))\n && !document.querySelector('.e-popup-open')) {\n this.deleteRecord();\n }\n break;\n case 'f2':\n this.startEdit();\n break;\n case 'enter':\n if (!parentsUntil(e.target, 'e-unboundcelldiv') && this.parent.editSettings.mode !== 'Batch' &&\n (parentsUntil(e.target, 'e-gridcontent') || (this.parent.frozenRows\n && parentsUntil(e.target, 'e-headercontent')))\n && !document.querySelectorAll('.e-popup-open').length) {\n e.preventDefault();\n this.endEdit();\n }\n break;\n case 'escape':\n if (this.parent.isEdit) {\n if (this.parent.editSettings.mode === 'Batch') {\n this.editModule.escapeCellEdit();\n }\n else {\n this.closeEdit();\n }\n }\n break;\n }\n }\n preventBatch(args) {\n this.preventObj = args;\n this.showDialog('BatchSaveLostChanges', this.dialogObj);\n }\n executeAction() {\n this.preventObj.handler.call(this.preventObj.instance, this.preventObj.arg1, this.preventObj.arg2, this.preventObj.arg3, this.preventObj.arg4, this.preventObj.arg5, this.preventObj.arg6, this.preventObj.arg7, this.preventObj.arg8);\n }\n /**\n * @hidden\n */\n applyFormValidation(cols) {\n let gObj = this.parent;\n let frzCols = gObj.getFrozenColumns();\n let form = this.parent.editSettings.mode !== 'Dialog' ?\n gObj.element.querySelector('.e-gridform') :\n document.querySelector('#' + gObj.element.id + '_dialogEdit_wrapper').querySelector('.e-gridform');\n let mForm = gObj.element.querySelectorAll('.e-gridform')[1];\n let rules = {};\n let mRules = {};\n cols = cols ? cols : gObj.getColumns();\n for (let i = 0; i < cols.length; i++) {\n if (!cols[i].visible) {\n continue;\n }\n if (isBlazor() && cols[i].editTemplate) {\n continue;\n }\n if (i < frzCols && cols[i].validationRules) {\n rules[getComplexFieldID(cols[i].field)] = cols[i].validationRules;\n }\n else if (i >= frzCols && cols[i].validationRules) {\n mRules[getComplexFieldID(cols[i].field)] = cols[i].validationRules;\n }\n }\n if (frzCols && this.parent.editSettings.mode !== 'Dialog') {\n this.parent.editModule.mFormObj = this.createFormObj(mForm, mRules);\n }\n else {\n rules = extend(rules, mRules);\n }\n if (isBlazor() && this.parent.editSettings.template) {\n this.parent.editModule.formObj = this.createFormObj(form, {});\n }\n else {\n this.parent.editModule.formObj = this.createFormObj(form, rules);\n }\n }\n createFormObj(form, rules) {\n return new FormValidator(form, {\n rules: rules,\n locale: this.parent.locale,\n validationComplete: (args) => {\n this.validationComplete(args);\n },\n customPlacement: (inputElement, error) => {\n let uid = inputElement.getAttribute('e-mappinguid');\n let args = {\n column: this.parent.getColumnByUid(uid),\n error: error,\n inputElement: inputElement,\n value: inputElement.value,\n };\n this.valErrorPlacement(inputElement, error);\n this.parent.notify(valCustomPlacement, args);\n }\n });\n }\n valErrorPlacement(inputElement, error) {\n if (this.parent.isEdit) {\n let id = error.getAttribute('for');\n let elem = this.getElemTable(inputElement).querySelector('#' + id + '_Error');\n if (!elem) {\n this.createTooltip(inputElement, error, id, '');\n }\n else {\n elem.querySelector('.e-tip-content').innerHTML = error.outerHTML;\n }\n }\n }\n getElemTable(inputElement) {\n let isFHdr;\n if (this.parent.editSettings.mode !== 'Dialog') {\n isFHdr = (this.parent.frozenRows && this.parent.frozenRows\n > (parseInt(closest(inputElement, '.e-row').getAttribute('aria-rowindex'), 10) || 0));\n }\n return this.parent.editSettings.mode !== 'Dialog' ? isFHdr ? this.parent.getHeaderTable() : this.parent.getContentTable() :\n document.querySelector('#' + this.parent.element.id + '_dialogEdit_wrapper');\n }\n validationComplete(args) {\n if (this.parent.isEdit) {\n let elem = this.getElemTable(args.element).querySelector('#' + args.inputName + '_Error');\n if (elem) {\n if (args.status === 'failure') {\n elem.style.display = '';\n }\n else {\n elem.style.display = 'none';\n }\n }\n }\n }\n // tslint:disable-next-line:max-func-body-length\n createTooltip(element, error, name, display) {\n let gcontent = this.parent.getContent().firstElementChild;\n if (this.parent.getFrozenColumns()) {\n gcontent = this.parent.getMovableVirtualContent();\n }\n let isScroll = gcontent.scrollHeight > gcontent.clientHeight || gcontent.scrollWidth > gcontent.clientWidth;\n let isInline = this.parent.editSettings.mode !== 'Dialog';\n let td = closest(element, '.e-rowcell');\n let row = closest(element, '.e-row');\n let fCont = this.parent.getContent().querySelector('.e-frozencontent');\n let isFHdr;\n let isFHdrLastRow = false;\n let validationForBottomRowPos;\n let isBatchModeLastRow = false;\n let viewPortRowCount = Math.round(this.parent.getContent().clientHeight / this.parent.getRowHeight()) - 1;\n let rows = !fCont ? [].slice.call(this.parent.getContent().querySelectorAll('.e-row'))\n : [].slice.call(this.parent.getFrozenVirtualContent().querySelectorAll('.e-row'));\n if (this.parent.editSettings.mode === 'Batch') {\n if (viewPortRowCount > 1 && rows.length >= viewPortRowCount\n && rows[rows.length - 1].getAttribute('aria-rowindex') === row.getAttribute('aria-rowindex')) {\n isBatchModeLastRow = true;\n }\n }\n if (isInline) {\n if (this.parent.frozenRows) {\n let fHeraderRows = this.parent.getFrozenColumns() ?\n this.parent.getFrozenVirtualHeader().querySelector('tbody').children\n : this.parent.getHeaderTable().querySelector('tbody').children;\n isFHdr = fHeraderRows.length > (parseInt(row.getAttribute('aria-rowindex'), 10) || 0);\n isFHdrLastRow = isFHdr && parseInt(row.getAttribute('aria-rowindex'), 10) === fHeraderRows.length - 1;\n }\n if (isFHdrLastRow || (viewPortRowCount > 1 && rows.length >= viewPortRowCount\n && ((this.parent.editSettings.newRowPosition === 'Bottom' && (this.editModule.args\n && this.editModule.args.requestType === 'add')) || (td.classList.contains('e-lastrowcell')\n && !row.classList.contains('e-addedrow')))) || isBatchModeLastRow) {\n validationForBottomRowPos = true;\n }\n }\n let table = isInline ?\n (isFHdr ? this.parent.getHeaderTable() : this.parent.getContentTable()) :\n document.querySelector('#' + this.parent.element.id + '_dialogEdit_wrapper').querySelector('.e-dlg-content');\n let client = table.getBoundingClientRect();\n let left = isInline ?\n this.parent.element.getBoundingClientRect().left : client.left;\n let input = closest(element, 'td');\n let inputClient = input ? input.getBoundingClientRect() : element.parentElement.getBoundingClientRect();\n let div = this.parent.createElement('div', {\n className: 'e-tooltip-wrap e-lib e-control e-popup e-griderror',\n id: name + '_Error',\n styles: 'display:' + display + ';top:' +\n ((isFHdr ? inputClient.top + inputClient.height : inputClient.bottom - client.top\n - (this.parent.getFrozenColumns() ? fCont.scrollTop : 0)) + table.scrollTop + 9) + 'px;left:' +\n (inputClient.left - left + table.scrollLeft + inputClient.width / 2) + 'px;' +\n 'max-width:' + inputClient.width + 'px;text-align:center;'\n });\n if (isInline && client.left < left) {\n div.style.left = parseInt(div.style.left, 10) - client.left + left + 'px';\n }\n let content = this.parent.createElement('div', { className: 'e-tip-content' });\n content.appendChild(error);\n let arrow;\n if (validationForBottomRowPos) {\n arrow = this.parent.createElement('div', { className: 'e-arrow-tip e-tip-bottom' });\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-outer e-tip-bottom' }));\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-inner e-tip-bottom' }));\n }\n else {\n arrow = this.parent.createElement('div', { className: 'e-arrow-tip e-tip-top' });\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-outer e-tip-top' }));\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-inner e-tip-top' }));\n }\n div.appendChild(content);\n div.appendChild(arrow);\n if ((this.parent.getFrozenColumns() || this.parent.frozenRows) && this.parent.editSettings.mode !== 'Dialog') {\n let getEditCell = this.parent.editSettings.mode === 'Normal' ?\n closest(element, '.e-editcell') : closest(element, '.e-table');\n getEditCell.style.position = 'relative';\n div.style.position = 'absolute';\n if (this.parent.editSettings.mode === 'Batch' ||\n (closest(element, '.e-frozencontent') || closest(element, '.e-frozenheader'))\n || (this.parent.frozenRows && !this.parent.getFrozenColumns())) {\n this.formObj.element.appendChild(div);\n }\n else {\n this.mFormObj.element.appendChild(div);\n }\n }\n else {\n this.formObj.element.appendChild(div);\n }\n if (!validationForBottomRowPos && isInline && gcontent.getBoundingClientRect().bottom < inputClient.bottom + inputClient.height) {\n gcontent.scrollTop = gcontent.scrollTop + div.offsetHeight + arrow.scrollHeight;\n }\n let lineHeight = parseInt(document.defaultView.getComputedStyle(div, null).getPropertyValue('font-size'), 10);\n if (div.getBoundingClientRect().width < inputClient.width &&\n div.querySelector('label').getBoundingClientRect().height / (lineHeight * 1.2) >= 2) {\n div.style.width = div.style.maxWidth;\n }\n if ((this.parent.getFrozenColumns() || this.parent.frozenRows)\n && (this.parent.editSettings.mode === 'Normal' || this.parent.editSettings.mode === 'Batch')) {\n div.style.left = input.offsetLeft + (input.offsetWidth / 2 - div.offsetWidth / 2) + 'px';\n }\n else {\n div.style.left = (parseInt(div.style.left, 10) - div.offsetWidth / 2) + 'px';\n }\n if (isInline && !isScroll && !this.parent.allowPaging || this.parent.getFrozenColumns() || this.parent.frozenRows) {\n gcontent.style.position = 'static';\n let pos = calculateRelativeBasedPosition(input, div);\n div.style.top = pos.top + inputClient.height + 9 + 'px';\n }\n if (validationForBottomRowPos) {\n if (isScroll && !this.parent.getFrozenColumns() && this.parent.height !== 'auto' && !this.parent.frozenRows\n && !this.parent.enableVirtualization) {\n let scrollWidth = gcontent.scrollWidth > gcontent.offsetWidth ? getScrollBarWidth() : 0;\n div.style.bottom = (this.parent.height - gcontent.querySelector('table').offsetHeight\n - scrollWidth) + inputClient.height + 9 + 'px';\n }\n else {\n div.style.bottom = inputClient.height + 9 + 'px';\n }\n if (rows.length < viewPortRowCount && this.parent.editSettings.newRowPosition === 'Bottom' && (this.editModule.args\n && this.editModule.args.requestType === 'add')) {\n let rowsCount = this.parent.frozenRows ? this.parent.frozenRows + (rows.length - 1) : rows.length - 1;\n let rowsHeight = rowsCount * this.parent.getRowHeight();\n let position = this.parent.getContent().clientHeight - rowsHeight;\n div.style.bottom = position + 9 + 'px';\n }\n div.style.top = null;\n }\n }\n /**\n * @hidden\n */\n checkColumnIsGrouped(col) {\n return !col.visible && !(this.parent.groupSettings.columns.indexOf(col.field) > -1);\n }\n /**\n * @hidden\n */\n static AddEditors(editors) {\n Edit.editCellType = extend(Edit.editCellType, editors);\n }\n}\nEdit.editCellType = {\n 'dropdownedit': DropDownEditCell, 'numericedit': NumericEditCell,\n 'datepickeredit': DatePickerEditCell, 'datetimepickeredit': DatePickerEditCell,\n 'booleanedit': BooleanEditCell, 'defaultedit': DefaultEditCell,\n 'templateedit': TemplateEditCell\n};\n\n/**\n * The `ColumnChooser` module is used to show or hide columns dynamically.\n */\nclass ColumnChooser {\n /**\n * Constructor for the Grid ColumnChooser module\n * @hidden\n */\n constructor(parent, serviceLocator) {\n this.showColumn = [];\n this.hideColumn = [];\n this.changedColumns = [];\n this.unchangedColumns = [];\n this.isDlgOpen = false;\n this.dlghide = false;\n this.initialOpenDlg = true;\n this.stateChangeColumns = [];\n this.changedStateColumns = [];\n this.isInitialOpen = false;\n this.isCustomizeOpenCC = false;\n this.searchOperator = 'startswith';\n this.prevShowedCols = [];\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n this.cBoxTrue = createCheckBox(this.parent.createElement, true, { checked: true, label: ' ' });\n this.cBoxFalse = createCheckBox(this.parent.createElement, true, { checked: false, label: ' ' });\n this.cBoxTrue.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden e-cc e-cc-chbox', attrs: { type: 'checkbox' }\n }), this.cBoxTrue.firstChild);\n this.cBoxFalse.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden e-cc e-cc-chbox', attrs: { 'type': 'checkbox' }\n }), this.cBoxFalse.firstChild);\n this.cBoxFalse.querySelector('.e-frame').classList.add('e-uncheck');\n if (this.parent.enableRtl) {\n addClass([this.cBoxTrue, this.cBoxFalse], ['e-rtl']);\n }\n }\n destroy() {\n let gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.e-gridheader') && !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n this.removeEventListener();\n this.unWireEvents();\n if (!isNullOrUndefined(this.dlgObj) && this.dlgObj.element && !this.dlgObj.isDestroyed) {\n this.dlgObj.destroy();\n }\n }\n rtlUpdate() {\n if (this.parent.enableRtl) {\n addClass(this.innerDiv.querySelectorAll('.e-checkbox-wrapper'), ['e-rtl']);\n }\n else {\n removeClass(this.innerDiv.querySelectorAll('.e-checkbox-wrapper'), ['e-rtl']);\n }\n }\n /**\n * @hidden\n */\n addEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.add(document, 'click', this.clickHandler, this);\n this.parent.on(uiUpdate, this.enableAfterRenderEle, this);\n this.parent.on(initialEnd, this.render, this);\n this.parent.addEventListener(dataBound, this.hideDialog.bind(this));\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(rtlUpdated, this.rtlUpdate, this);\n this.parent.on(keyPressed, this.keyUpHandler, this);\n this.parent.on(resetColumns, this.onResetColumns, this);\n }\n /**\n * @hidden\n */\n removeEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(document, 'click', this.clickHandler);\n this.parent.off(initialEnd, this.render);\n this.parent.off(destroy, this.destroy);\n this.parent.off(uiUpdate, this.enableAfterRenderEle);\n this.parent.off(rtlUpdated, this.rtlUpdate);\n this.parent.on(keyPressed, this.keyUpHandler, this);\n this.parent.off(resetColumns, this.onResetColumns);\n }\n render() {\n this.l10n = this.serviceLocator.getService('localization');\n this.renderDlgContent();\n this.getShowHideService = this.serviceLocator.getService('showHideService');\n }\n clickHandler(e) {\n let targetElement = e.target;\n if (!this.isCustomizeOpenCC) {\n if (!isNullOrUndefined(closest(targetElement, '.e-cc')) || !isNullOrUndefined(closest(targetElement, '.e-cc-toolbar'))) {\n if (targetElement.classList.contains('e-columnchooser-btn') || targetElement.classList.contains('e-cc-toolbar')) {\n if ((this.initialOpenDlg && this.dlgObj.visible) || !this.isDlgOpen) {\n this.isDlgOpen = true;\n return;\n }\n }\n else if (targetElement.classList.contains('e-cc-cancel')) {\n targetElement.parentElement.querySelector('.e-ccsearch').value = '';\n this.columnChooserSearch('');\n this.removeCancelIcon();\n this.refreshCheckboxButton();\n }\n }\n else {\n if (!isNullOrUndefined(this.dlgObj) && this.dlgObj.visible && !targetElement.classList.contains('e-toolbar-items')) {\n this.dlgObj.hide();\n this.clearActions();\n this.refreshCheckboxState();\n // this.unWireEvents();\n this.isDlgOpen = false;\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.targetdlg = e.target;\n }\n }\n if (this.isCustomizeOpenCC && e.target.classList.contains('e-cc-cancel')) {\n this.refreshCheckboxState();\n }\n this.rtlUpdate();\n }\n hideDialog() {\n if (!isNullOrUndefined(this.dlgObj) && this.dlgObj.visible) {\n this.dlgObj.hide();\n // this.unWireEvents();\n this.isDlgOpen = false;\n }\n }\n /**\n * To render columnChooser when showColumnChooser enabled.\n * @return {void}\n * @hidden\n */\n renderColumnChooser(x, y, target) {\n if (!this.dlgObj.visible && (this.parent.detailTemplate || this.parent.childGrid)) {\n this.hideOpenedDialog();\n }\n if (!this.dlgObj.visible) {\n let args = this.beforeOpenColumnChooserEvent();\n if (args.cancel) {\n return;\n }\n if (target) {\n this.targetdlg = target;\n }\n this.refreshCheckboxState();\n this.dlgObj.dataBind();\n this.dlgObj.element.style.maxHeight = '430px';\n let elementVisible = this.dlgObj.element.style.display;\n this.dlgObj.element.style.display = 'block';\n let newpos = calculateRelativeBasedPosition(closest(target, '.e-toolbar-item'), this.dlgObj.element);\n this.dlgObj.element.style.display = elementVisible;\n this.dlgObj.element.style.top = newpos.top + closest(target, '.e-cc-toolbar').getBoundingClientRect().height + 'px';\n let dlgWidth = 250;\n if (!isNullOrUndefined(closest(target, '.e-bigger'))) {\n this.dlgObj.width = 258;\n }\n if (Browser.isDevice) {\n this.dlgObj.target = document.body;\n this.dlgObj.position = { X: 'center', Y: 'center' };\n this.dlgObj.refreshPosition();\n this.dlgObj.open = this.mOpenDlg.bind(this);\n }\n else {\n if (this.parent.enableRtl) {\n this.dlgObj.element.style.left = target.offsetLeft + 'px';\n }\n else {\n this.dlgObj.element.style.left = ((newpos.left - dlgWidth) + closest(target, '.e-cc-toolbar').clientWidth) + 2 + 'px';\n }\n }\n this.removeCancelIcon();\n this.dlgObj.show();\n this.parent.notify(columnChooserOpened, { dialog: this.dlgObj });\n }\n else {\n // this.unWireEvents();\n this.hideDialog();\n this.addcancelIcon();\n this.clearActions();\n this.refreshCheckboxState();\n }\n this.rtlUpdate();\n }\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n * @param {number} X - Defines the X axis.\n * @param {number} Y - Defines the Y axis.\n * @return {void}\n */\n openColumnChooser(X, Y) {\n this.isCustomizeOpenCC = true;\n if (this.dlgObj.visible) {\n this.hideDialog();\n return;\n }\n let args = this.beforeOpenColumnChooserEvent();\n if (args.cancel) {\n return;\n }\n if (!this.isInitialOpen) {\n this.dlgObj.content = this.renderChooserList();\n this.updateIntermediateBtn();\n }\n else {\n this.refreshCheckboxState();\n }\n this.dlgObj.dataBind();\n this.dlgObj.position = { X: 'center', Y: 'center' };\n if (isNullOrUndefined(X)) {\n this.dlgObj.position = { X: 'center', Y: 'center' };\n this.dlgObj.refreshPosition();\n }\n else {\n this.dlgObj.element.style.top = '';\n this.dlgObj.element.style.left = '';\n this.dlgObj.element.style.top = Y + 'px';\n this.dlgObj.element.style.left = X + 'px';\n }\n this.dlgObj.beforeOpen = this.customDialogOpen.bind(this);\n this.dlgObj.show();\n this.isInitialOpen = true;\n this.dlgObj.beforeClose = this.customDialogClose.bind(this);\n }\n enableAfterRenderEle(e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n }\n }\n keyUpHandler(e) {\n if (e.action === 'escape') {\n this.hideDialog();\n }\n }\n customDialogOpen() {\n let searchElement = this.dlgObj.content.querySelector('input.e-ccsearch');\n EventHandler.add(searchElement, 'keyup', this.columnChooserManualSearch, this);\n }\n customDialogClose() {\n let searchElement = this.dlgObj.content.querySelector('input.e-ccsearch');\n EventHandler.remove(searchElement, 'keyup', this.columnChooserManualSearch);\n }\n getColumns() {\n let columns = this.parent.getColumns().filter((column) => (column.type !== 'checkbox'\n && column.showInColumnChooser === true) || (column.type === 'checkbox' && column.field !== undefined));\n return columns;\n }\n renderDlgContent() {\n let y;\n this.dlgDiv = this.parent.createElement('div', { className: 'e-ccdlg e-cc', id: this.parent.element.id + '_ccdlg' });\n this.dlgDiv.setAttribute('aria-label', this.l10n.getConstant('ColumnChooserDialogARIA'));\n this.parent.element.appendChild(this.dlgDiv);\n let xpos = this.parent.element.getBoundingClientRect().width - 250;\n let dialoPos = this.parent.enableRtl ? 'left' : 'right';\n let tarElement = this.parent.element.querySelector('.e-ccdiv');\n if (!isNullOrUndefined(tarElement)) {\n y = tarElement.getBoundingClientRect().top;\n }\n this.dlgObj = new Dialog({\n header: this.l10n.getConstant('ChooseColumns'),\n showCloseIcon: false,\n closeOnEscape: false,\n locale: this.parent.locale,\n visible: false,\n enableRtl: this.parent.enableRtl,\n target: document.getElementById(this.parent.element.id),\n buttons: [{\n click: this.confirmDlgBtnClick.bind(this),\n buttonModel: {\n content: this.l10n.getConstant('OKButton'), isPrimary: true,\n cssClass: 'e-cc e-cc_okbtn',\n }\n },\n {\n click: this.clearBtnClick.bind(this),\n buttonModel: { cssClass: 'e-flat e-cc e-cc-cnbtn', content: this.l10n.getConstant('CancelButton') }\n }],\n content: this.renderChooserList(),\n width: 250,\n cssClass: 'e-cc',\n animationSettings: { effect: 'None' },\n });\n let isStringTemplate = 'isStringTemplate';\n this.dlgObj[isStringTemplate] = true;\n this.dlgObj.appendTo(this.dlgDiv);\n this.wireEvents();\n }\n renderChooserList() {\n this.mainDiv = this.parent.createElement('div', { className: 'e-main-div e-cc' });\n let searchDiv = this.parent.createElement('div', { className: 'e-cc-searchdiv e-cc e-input-group' });\n let ccsearchele = this.parent.createElement('input', {\n className: 'e-ccsearch e-cc e-input',\n attrs: { placeholder: this.l10n.getConstant('Search') }\n });\n let ccsearchicon = this.parent.createElement('span', {\n className: 'e-ccsearch-icon e-icons e-cc e-input-group-icon',\n attrs: { title: this.l10n.getConstant('Search') }\n });\n let conDiv = this.parent.createElement('div', { className: 'e-cc-contentdiv' });\n this.innerDiv = this.parent.createElement('div', { className: 'e-innerdiv e-cc' });\n searchDiv.appendChild(ccsearchele);\n searchDiv.appendChild(ccsearchicon);\n this.searchBoxObj = new SearchBox(ccsearchele);\n let innerDivContent = this.refreshCheckboxList(this.parent.getColumns());\n this.innerDiv.appendChild(innerDivContent);\n conDiv.appendChild(this.innerDiv);\n this.mainDiv.appendChild(searchDiv);\n this.mainDiv.appendChild(conDiv);\n return this.mainDiv;\n }\n confirmDlgBtnClick(args) {\n this.stateChangeColumns = [];\n this.changedStateColumns = [];\n this.changedColumns = (this.changedColumns.length > 0) ? this.changedColumns : this.unchangedColumns;\n this.changedColumnState(this.changedColumns);\n let uncheckedLength = this.ulElement.querySelector('.e-uncheck') &&\n this.ulElement.querySelectorAll('.e-uncheck:not(.e-selectall)').length;\n if (!isNullOrUndefined(args)) {\n if (uncheckedLength < this.parent.getColumns().length) {\n if (this.hideColumn.length) {\n this.columnStateChange(this.hideColumn, false);\n }\n if (this.showColumn.length) {\n this.columnStateChange(this.showColumn, true);\n }\n this.getShowHideService.setVisible(this.stateChangeColumns, this.changedStateColumns);\n this.clearActions();\n this.parent.notify(tooltipDestroy, { module: 'edit' });\n if (this.parent.getCurrentViewRecords().length === 0) {\n let emptyRowCell = this.parent.element.querySelector('.e-emptyrow').querySelector('td');\n emptyRowCell.setAttribute('colSpan', this.parent.getVisibleColumns().length.toString());\n }\n }\n }\n }\n onResetColumns(e) {\n if (e.requestType === 'columnstate') {\n this.showColumn = [];\n this.hideColumn = [];\n this.hideDialog();\n return;\n }\n }\n resetColumnState() {\n this.showColumn = [];\n this.hideColumn = [];\n this.hideDialog();\n }\n changedColumnState(changedColumns) {\n for (let index = 0; index < changedColumns.length; index++) {\n let colUid = changedColumns[index];\n let currentCol = this.parent.getColumnByUid(colUid);\n isBlazor() ? this.changedStateColumns.push(JSON.parse(JSON.stringify(currentCol))) : this.changedStateColumns.push(currentCol);\n }\n }\n columnStateChange(stateColumns, state) {\n for (let index = 0; index < stateColumns.length; index++) {\n let colUid = stateColumns[index];\n let currentCol = this.parent.getColumnByUid(colUid);\n if (currentCol.type !== 'checkbox') {\n currentCol.visible = state;\n }\n isBlazor() ? this.stateChangeColumns.push(JSON.parse(JSON.stringify(currentCol))) : this.stateChangeColumns.push(currentCol);\n }\n }\n clearActions() {\n this.hideColumn = [];\n this.showColumn = [];\n // this.unWireEvents();\n this.hideDialog();\n this.addcancelIcon();\n }\n clearBtnClick() {\n this.clearActions();\n this.parent.notify(columnChooserCancelBtnClick, { dialog: this.dlgObj });\n }\n checkstatecolumn(isChecked, coluid, selectAll = false) {\n if (isChecked) {\n if (this.hideColumn.indexOf(coluid) !== -1) {\n this.hideColumn.splice(this.hideColumn.indexOf(coluid), 1);\n }\n if (this.showColumn.indexOf(coluid) === -1) {\n this.showColumn.push(coluid);\n }\n }\n else {\n if (this.showColumn.indexOf(coluid) !== -1) {\n this.showColumn.splice(this.showColumn.indexOf(coluid), 1);\n }\n if (this.hideColumn.indexOf(coluid) === -1) {\n this.hideColumn.push(coluid);\n }\n }\n if (selectAll) {\n if (!isChecked) {\n this.changedColumns.push(coluid);\n }\n else {\n this.unchangedColumns.push(coluid);\n }\n }\n else if (this.changedColumns.indexOf(coluid) !== -1) {\n this.changedColumns.splice(this.changedColumns.indexOf(coluid), 1);\n }\n else {\n this.changedColumns.push(coluid);\n }\n }\n columnChooserSearch(searchVal) {\n let clearSearch = false;\n let fltrCol;\n let okButton;\n let buttonEle = this.dlgDiv.querySelector('.e-footer-content');\n let selectedCbox = this.ulElement.querySelector('.e-check') &&\n this.ulElement.querySelectorAll('.e-check:not(.e-selectall)').length;\n this.isInitialOpen = true;\n if (buttonEle) {\n okButton = buttonEle.querySelector('.e-btn').ej2_instances[0];\n }\n if (searchVal === '') {\n this.removeCancelIcon();\n fltrCol = this.getColumns();\n clearSearch = true;\n }\n else {\n fltrCol = new DataManager(this.getColumns()).executeLocal(new Query()\n .where('headerText', this.searchOperator, searchVal, true));\n }\n if (fltrCol.length) {\n this.innerDiv.innerHTML = ' ';\n this.innerDiv.classList.remove('e-ccnmdiv');\n this.innerDiv.appendChild(this.refreshCheckboxList(fltrCol, searchVal));\n if (!clearSearch) {\n this.addcancelIcon();\n this.refreshCheckboxButton();\n }\n else {\n if (okButton && selectedCbox) {\n okButton.disabled = false;\n }\n }\n }\n else {\n let nMatchele = this.parent.createElement('span', { className: 'e-cc e-nmatch' });\n nMatchele.innerHTML = this.l10n.getConstant('Matchs');\n this.innerDiv.innerHTML = ' ';\n this.innerDiv.appendChild(nMatchele);\n this.innerDiv.classList.add('e-ccnmdiv');\n if (okButton) {\n okButton.disabled = true;\n }\n }\n this.flag = true;\n this.stopTimer();\n }\n wireEvents() {\n EventHandler.add(this.dlgObj.element, 'click', this.checkBoxClickHandler, this);\n EventHandler.add(this.searchBoxObj.searchBox, 'keyup', this.columnChooserManualSearch, this);\n this.searchBoxObj.wireEvent();\n }\n unWireEvents() {\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.dlgObj.element) {\n EventHandler.remove(this.dlgObj.element, 'click', this.checkBoxClickHandler);\n }\n EventHandler.remove(this.searchBoxObj.searchBox, 'keyup', this.columnChooserManualSearch);\n this.searchBoxObj.unWireEvent();\n }\n checkBoxClickHandler(e) {\n let checkstate;\n let elem = parentsUntil(e.target, 'e-checkbox-wrapper');\n if (elem) {\n let selectAll = elem.querySelector('.e-selectall');\n if (selectAll) {\n this.updateSelectAll(!elem.querySelector('.e-check'));\n }\n else {\n toogleCheckbox(elem.parentElement);\n }\n elem.querySelector('.e-chk-hidden').focus();\n if (elem.querySelector('.e-check')) {\n checkstate = true;\n }\n else if (elem.querySelector('.e-uncheck')) {\n checkstate = false;\n }\n else {\n return;\n }\n this.updateIntermediateBtn();\n let columnUid = parentsUntil(elem, 'e-ccheck').getAttribute('uid');\n let column = this.parent.getColumns();\n if (columnUid === 'grid-selectAll') {\n this.changedColumns = [];\n this.unchangedColumns = [];\n for (let i = 0; i < column.length; i++) {\n if (column[i].showInColumnChooser) {\n this.checkstatecolumn(checkstate, column[i].uid, true);\n }\n }\n }\n else {\n this.checkstatecolumn(checkstate, columnUid);\n }\n this.refreshCheckboxButton();\n }\n }\n updateIntermediateBtn() {\n let cnt = this.ulElement.children.length - 1;\n let className = [];\n let elem = this.ulElement.children[0].querySelector('.e-frame');\n let selected = this.ulElement.querySelectorAll('.e-check:not(.e-selectall)').length;\n let btn = this.dlgObj.btnObj[0];\n btn.disabled = false;\n if (cnt === selected) {\n className = ['e-check'];\n }\n else if (selected) {\n className = ['e-stop'];\n }\n else {\n className = ['e-uncheck'];\n btn.disabled = true;\n }\n btn.dataBind();\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([elem], className);\n }\n updateSelectAll(checked) {\n let cBoxes = [].slice.call(this.ulElement.querySelectorAll('.e-frame'));\n for (let cBox of cBoxes) {\n removeAddCboxClasses(cBox, checked);\n }\n }\n refreshCheckboxButton() {\n let searchValue = this.dlgObj.element.querySelector('.e-cc.e-input').value;\n let visibleCols = this.parent.getVisibleColumns();\n for (let i = 0; i < visibleCols.length; i++) {\n let columnUID = visibleCols[i].uid;\n if (this.prevShowedCols.indexOf(columnUID) === -1) {\n this.prevShowedCols.push(columnUID);\n }\n }\n let selected;\n for (let i = 0; i < this.hideColumn.length; i++) {\n let index = this.prevShowedCols.indexOf(this.hideColumn[i]);\n if (index !== -1) {\n this.prevShowedCols.splice(index, 1);\n }\n }\n selected = this.showColumn.length !== 0 ? 1 : this.prevShowedCols.length;\n let btn = this.dlgDiv.querySelector('.e-footer-content').querySelector('.e-btn').ej2_instances[0];\n btn.disabled = false;\n let srchShowCols = [];\n let searchData = this.parent.element.querySelectorAll('.e-cc-chbox');\n for (let i = 0, itemsLen = searchData.length; i < itemsLen; i++) {\n let element = searchData[i];\n let columnUID = parentsUntil(element, 'e-ccheck').getAttribute('uid');\n srchShowCols.push(columnUID);\n }\n let hideCols = this.showColumn.filter((column) => srchShowCols.indexOf(column) !== -1);\n if (selected === 0 && hideCols.length === 0) {\n btn.disabled = true;\n }\n btn.dataBind();\n }\n refreshCheckboxList(gdCol, searchVal) {\n this.ulElement = this.parent.createElement('ul', { className: 'e-ccul-ele e-cc' });\n let selectAllValue = this.l10n.getConstant('SelectAll');\n let cclist = this.parent.createElement('li', { className: 'e-cclist e-cc e-cc-selectall' });\n let selectAll = this.createCheckBox(selectAllValue, false, 'grid-selectAll');\n if (gdCol.length) {\n selectAll.querySelector('.e-checkbox-wrapper').firstElementChild.classList.add('e-selectall');\n selectAll.querySelector('.e-frame').classList.add('e-selectall');\n this.checkState(selectAll.querySelector('.e-icons'), true);\n cclist.appendChild(selectAll);\n this.ulElement.appendChild(cclist);\n }\n for (let i = 0; i < gdCol.length; i++) {\n let columns = gdCol[i];\n this.renderCheckbox(columns);\n }\n return this.ulElement;\n }\n refreshCheckboxState() {\n this.dlgObj.element.querySelector('.e-cc.e-input').value = '';\n this.columnChooserSearch('');\n let gridObject = this.parent;\n let currentCheckBoxColls = this.dlgObj.element.querySelectorAll('.e-cc-chbox:not(.e-selectall)');\n for (let i = 0, itemLen = currentCheckBoxColls.length; i < itemLen; i++) {\n let element = currentCheckBoxColls[i];\n let columnUID;\n if (this.parent.childGrid || this.parent.detailTemplate) {\n columnUID = parentsUntil(this.dlgObj.element.querySelectorAll('.e-cc-chbox:not(.e-selectall)')[i], 'e-ccheck').getAttribute('uid');\n }\n else {\n columnUID = parentsUntil(element, 'e-ccheck').getAttribute('uid');\n }\n let column = gridObject.getColumnByUid(columnUID);\n let uncheck = element.parentElement.querySelectorAll('.e-uncheck');\n if (column.visible && !uncheck.length) {\n element.checked = true;\n this.checkState(element.parentElement.querySelector('.e-icons'), true);\n }\n else {\n element.checked = false;\n this.checkState(element.parentElement.querySelector('.e-icons'), false);\n }\n }\n }\n checkState(element, state) {\n state ? classList(element, ['e-check'], ['e-uncheck']) : classList(element, ['e-uncheck'], ['e-check']);\n }\n createCheckBox(label, checked, uid) {\n let cbox = checked ? this.cBoxTrue.cloneNode(true) : this.cBoxFalse.cloneNode(true);\n cbox.querySelector('.e-label').innerHTML = label;\n return createCboxWithWrap(uid, cbox, 'e-ccheck');\n }\n renderCheckbox(column) {\n let cclist;\n let hideColState;\n let showColState;\n if (column.showInColumnChooser) {\n cclist = this.parent.createElement('li', { className: 'e-cclist e-cc', styles: 'list-style:None', id: 'e-ccli_' + column.uid });\n hideColState = this.hideColumn.indexOf(column.uid) === -1 ? false : true;\n showColState = this.showColumn.indexOf(column.uid) === -1 ? false : true;\n let cccheckboxlist = this.createCheckBox(column.headerText, (column.visible && !hideColState) || showColState, column.uid);\n cclist.appendChild(cccheckboxlist);\n this.ulElement.appendChild(cclist);\n }\n if (this.isInitialOpen) {\n this.updateIntermediateBtn();\n }\n }\n columnChooserManualSearch(e) {\n this.addcancelIcon();\n this.searchValue = e.target.value;\n this.stopTimer();\n this.startTimer(e);\n }\n startTimer(e) {\n let proxy = this;\n let interval = !proxy.flag && e.keyCode !== 13 ? 500 : 0;\n this.timer = window.setInterval(() => { proxy.columnChooserSearch(proxy.searchValue); }, interval);\n }\n stopTimer() {\n window.clearInterval(this.timer);\n }\n addcancelIcon() {\n this.dlgDiv.querySelector('.e-cc.e-ccsearch-icon').classList.add('e-cc-cancel');\n }\n removeCancelIcon() {\n this.dlgDiv.querySelector('.e-cc.e-ccsearch-icon').classList.remove('e-cc-cancel');\n }\n mOpenDlg() {\n if (Browser.isDevice) {\n this.dlgObj.element.querySelector('.e-cc-searchdiv').classList.remove('e-input-focus');\n this.dlgObj.element.querySelectorAll('.e-cc-chbox')[0].focus();\n }\n }\n // internally use\n getModuleName() {\n return 'columnChooser';\n }\n hideOpenedDialog() {\n let openCC = [].slice.call(document.getElementsByClassName('e-ccdlg')).filter((dlgEle) => dlgEle.classList.contains('e-popup-open'));\n for (let i = 0, dlgLen = openCC.length; i < dlgLen; i++) {\n if (openCC[i].classList.contains('e-dialog') || this.parent.element.id + '_ccdlg' !== openCC[i].id) {\n openCC[i].ej2_instances[0].hide();\n }\n }\n }\n beforeOpenColumnChooserEvent() {\n if (isBlazor() && this.parent.isServerRendered && this.parent.columnChooserSettings.operator === 'none') {\n this.parent.columnChooserSettings.operator = 'startsWith';\n }\n let args1 = {\n requestType: 'beforeOpenColumnChooser', element: this.parent.element,\n columns: this.getColumns(), cancel: false,\n searchOperator: this.parent.columnChooserSettings.operator\n };\n if (isBlazor() && !this.parent.isJsComponent) {\n args1 = {\n requestType: 'beforeOpenColumnChooser', cancel: false,\n searchOperator: this.parent.columnChooserSettings.operator\n };\n }\n this.parent.trigger(beforeOpenColumnChooser, args1);\n this.searchOperator = args1.searchOperator;\n return args1;\n }\n}\n\n/**\n * @hidden\n * `ExportHelper` for `PdfExport` & `ExcelExport`\n */\nclass ExportHelper {\n constructor(parent) {\n this.hideColumnInclude = false;\n this.foreignKeyData = {};\n this.parent = parent;\n }\n static getQuery(parent, data) {\n return data.isRemote() ?\n data.generateQuery(true).requiresCount().take(parent.pageSettings.totalRecordsCount) :\n data.generateQuery(true).requiresCount();\n }\n getFData(value, column) {\n let foreignKeyData = getForeignData(column, {}, value, this.foreignKeyData[column.field])[0];\n return foreignKeyData;\n }\n getGridRowModel(columns, dataSource, gObj, startIndex = 0) {\n let rows = [];\n let length = dataSource.length;\n if (length) {\n for (let i = 0; i < length; i++, startIndex++) {\n let options = { isExpand: false };\n options.data = dataSource[i];\n options.index = startIndex;\n if (gObj.childGrid) {\n if (gObj.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (gObj.hierarchyPrintMode === 'Expanded' &&\n this.parent.expandedRows && this.parent.expandedRows[startIndex]) {\n options.isExpand = gObj.expandedRows[startIndex].isExpand;\n }\n }\n let row = new Row(options);\n row.cells = this.generateCells(columns, gObj);\n rows.push(row);\n }\n this.processColumns(rows);\n }\n return rows;\n }\n generateCells(columns, gObj) {\n let cells = [];\n if (gObj.childGridLevel) {\n let len = gObj.childGridLevel;\n for (let i = 0; len > i; i++) {\n cells.push(this.generateCell({}, CellType.Indent));\n }\n }\n for (const col of columns) {\n cells.push(this.generateCell(col, CellType.Data));\n }\n return cells;\n }\n getColumnData(gridObj) {\n let columnPromise = [];\n let promise;\n let fColumns = gridObj.getForeignKeyColumns();\n if (fColumns.length) {\n for (let i = 0; i < fColumns.length; i++) {\n let colData = ('result' in fColumns[i].dataSource) ?\n new DataManager(fColumns[i].dataSource.result) :\n fColumns[i].dataSource;\n columnPromise.push(colData.executeQuery(new Query()));\n }\n promise = Promise.all(columnPromise).then((e) => {\n for (let j = 0; j < fColumns.length; j++) {\n this.foreignKeyData[fColumns[j].field] = e[j].result;\n }\n // tslint:disable-next-line:no-any\n });\n }\n return promise;\n }\n getHeaders(columns, isHideColumnInclude) {\n if (isHideColumnInclude) {\n this.hideColumnInclude = true;\n }\n else {\n this.hideColumnInclude = false;\n }\n this.colDepth = measureColumnDepth(columns);\n let rows = [];\n for (let i = 0; i < this.colDepth; i++) {\n rows[i] = new Row({});\n rows[i].cells = [];\n }\n rows = this.processColumns(rows);\n rows = this.processHeaderCells(rows, columns);\n return { rows, columns: this.generateActualColumns(columns) };\n }\n getConvertedWidth(input) {\n let value = parseFloat(input);\n return (input.indexOf('%') !== -1) ? (this.parent.element.getBoundingClientRect().width * value / 100) : value;\n }\n generateActualColumns(columns, actualColumns = []) {\n for (const column of columns) {\n if (column.commands) {\n continue;\n }\n if (!column.columns) {\n if (column.visible || this.hideColumnInclude) {\n actualColumns.push(column);\n }\n }\n else {\n if (column.visible || this.hideColumnInclude) {\n let colSpan = this.getCellCount(column, 0);\n if (colSpan !== 0) {\n this.generateActualColumns(column.columns, actualColumns);\n }\n }\n }\n }\n return actualColumns;\n }\n processHeaderCells(rows, cols) {\n let columns = cols;\n for (let i = 0; i < columns.length; i++) {\n if (!columns[i].commands) {\n rows = this.appendGridCells(columns[i], rows, 0);\n }\n }\n return rows;\n }\n appendGridCells(cols, gridRows, index) {\n if (!cols.columns && (cols.visible !== false || this.hideColumnInclude) && !cols.commands) {\n gridRows[index].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, index));\n }\n else if (cols.columns) {\n let colSpan = this.getCellCount(cols, 0);\n if (colSpan) {\n gridRows[index].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols, colSpan: colSpan\n }));\n }\n let isIgnoreFirstCell;\n for (let i = 0, len = cols.columns.length; i < len; i++) {\n if (cols.columns[i].visible && !isIgnoreFirstCell) {\n isIgnoreFirstCell = true;\n }\n gridRows = this.appendGridCells(cols.columns[i], gridRows, index + 1);\n }\n }\n return gridRows;\n }\n generateCell(gridColumn, cellType, rowSpan, rowIndex) {\n let option = {\n 'visible': gridColumn.visible,\n 'isDataCell': cellType === CellType.Data,\n 'column': gridColumn,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'index': rowIndex\n };\n if (!option.rowSpan || option.rowSpan < 2) {\n delete option.rowSpan;\n }\n return new Cell(option);\n }\n processColumns(rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n let gridObj = this.parent;\n let columnIndexes = [];\n if (gridObj.enableColumnVirtualization) {\n columnIndexes = gridObj.getColumnIndexesInView();\n }\n for (let i = 0, len = rows.length; i < len; i++) {\n if (gridObj.allowGrouping) {\n for (let j = 0, len = gridObj.groupSettings.columns.length; j < len; j++) {\n if (gridObj.enableColumnVirtualization && columnIndexes.indexOf(j) === -1) {\n continue;\n }\n rows[i].cells.splice(0, 0, this.generateCell({}, CellType.HeaderIndent));\n }\n }\n }\n return rows;\n }\n getCellCount(column, count) {\n if (column.columns) {\n for (let i = 0; i < column.columns.length; i++) {\n count = this.getCellCount(column.columns[i], count);\n }\n }\n else {\n if (column.visible || this.hideColumnInclude) {\n count++;\n }\n }\n return count;\n }\n checkAndExport(gridPool, globalResolve) {\n let bool = Object.keys(gridPool).some((key) => {\n return !gridPool[key];\n });\n if (!bool) {\n globalResolve();\n }\n }\n failureHandler(gridPool, childGridObj, resolve) {\n return () => {\n gridPool[childGridObj.id] = true;\n this.checkAndExport(gridPool, resolve);\n };\n }\n // tslint:disable-next-line:no-any\n createChildGrid(gObj, row, exportType, gridPool) {\n let childGridObj = new Grid(this.parent.detailRowModule.getGridModel(gObj, row, exportType));\n gObj.isPrinting = false;\n let parent = 'parentDetails';\n childGridObj[parent] = {\n parentID: gObj.element.id,\n parentPrimaryKeys: gObj.getPrimaryKeyFieldNames(),\n parentKeyField: gObj.childGrid.queryString,\n parentKeyFieldValue: getValue(childGridObj.queryString, row.data),\n parentRowData: row.data\n };\n let exportId = getUid('child-grid');\n let element = createElement('div', {\n id: exportId, styles: 'display: none'\n });\n document.body.appendChild(element);\n childGridObj.id = exportId;\n gridPool[exportId] = false;\n return { childGrid: childGridObj, element };\n }\n getGridExportColumns(columns) {\n let actualGridColumns = [];\n for (let i = 0, gridColumns = columns; i < gridColumns.length; i++) {\n if (gridColumns[i].type !== 'checkbox') {\n actualGridColumns.push(gridColumns[i]);\n }\n }\n return actualGridColumns;\n }\n}\n/**\n * @hidden\n * `ExportValueFormatter` for `PdfExport` & `ExcelExport`\n */\nclass ExportValueFormatter {\n constructor(culture) {\n this.valueFormatter = new ValueFormatter(culture);\n this.internationalization = new Internationalization(culture);\n }\n /* tslint:disable-next-line:no-any */\n returnFormattedValue(args, customFormat) {\n if (!isNullOrUndefined(args.value) && args.value) {\n return this.valueFormatter.getFormatFunction(customFormat)(args.value);\n }\n else {\n return '';\n }\n }\n /* tslint:disable-next-line:no-any */\n formatCellValue(args, isServerBlaz) {\n if (args.isForeignKey) {\n args.value = getValue(args.column.foreignKeyValue, getForeignData(args.column, {}, args.value)[0]);\n }\n if (args.column.type === 'number' && args.column.format !== undefined && args.column.format !== '') {\n return args.value ? this.internationalization.getNumberFormat({ format: args.column.format })(args.value) : '';\n }\n else if (args.column.type === 'boolean') {\n return args.value ? 'true' : 'false';\n /* tslint:disable-next-line:max-line-length */\n }\n else if ((args.column.type === 'date' || args.column.type === 'datetime' || args.column.type === 'time') && args.column.format !== undefined) {\n if (typeof args.value === 'string') {\n args.value = new Date(args.value);\n }\n if (typeof args.column.format === 'string') {\n let format;\n let cFormat = args.column.format;\n if (args.column.type === 'date') {\n format = isServerBlaz ? { type: 'date', format: cFormat } : { type: 'date', skeleton: cFormat };\n }\n else if (args.column.type === 'time') {\n format = isServerBlaz ? { type: 'time', format: cFormat } : { type: 'time', skeleton: cFormat };\n }\n else {\n format = isServerBlaz ? { type: 'dateTime', format: cFormat } : { type: 'dateTime', skeleton: cFormat };\n }\n return this.returnFormattedValue(args, format);\n }\n else {\n if (args.column.format instanceof Object && args.column.format.type === undefined) {\n return (args.value.toString());\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n let customFormat;\n if (args.column.type === 'date') {\n /* tslint:disable-next-line:max-line-length */\n customFormat = { type: args.column.format.type, format: args.column.format.format, skeleton: args.column.format.skeleton };\n }\n else if (args.column.type === 'time') {\n customFormat = { type: 'time', format: args.column.format.format, skeleton: args.column.format.skeleton };\n }\n else {\n customFormat = { type: 'dateTime', format: args.column.format.format, skeleton: args.column.format.skeleton };\n }\n return this.returnFormattedValue(args, customFormat);\n }\n }\n }\n else {\n if ((!isNullOrUndefined(args.column.type) && !isNullOrUndefined(args.value)) || !isNullOrUndefined(args.value)) {\n return (args.value).toString();\n }\n else {\n return '';\n }\n }\n }\n}\n\n/**\n * @hidden\n * `ExcelExport` module is used to handle the Excel export action.\n */\nclass ExcelExport {\n /**\n * Constructor for the Grid Excel Export module.\n * @hidden\n */\n constructor(parent, locator) {\n /* tslint:disable-next-line:no-any */\n this.book = {};\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.rowLength = 1;\n this.expType = 'AppendToSheet';\n this.includeHiddenColumn = false;\n this.isCsvExport = false;\n this.isElementIdChanged = false;\n this.foreignKeyData = {};\n this.gridPool = {};\n this.parent = parent;\n this.helper = new ExportHelper(parent);\n this.locator = locator;\n this.l10n = this.locator.getService('localization');\n }\n /**\n * For internal use only - Get the module name.\n */\n getModuleName() {\n return 'ExcelExport';\n }\n init(gObj) {\n if (gObj.element !== null && gObj.element.id === '') {\n gObj.element.id = new Date().toISOString();\n this.isElementIdChanged = true;\n }\n this.parent = gObj;\n if (this.parent.isDestroyed) {\n return;\n }\n this.isExporting = undefined;\n this.book = {};\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.rowLength = 1;\n this.footer = undefined;\n this.expType = 'AppendToSheet';\n this.includeHiddenColumn = false;\n this.exportValueFormatter = new ExportValueFormatter(gObj.locale);\n gObj.id = getUid('main-grid');\n this.gridPool[gObj.id] = false;\n }\n /**\n * Export Grid to Excel file.\n * @param {exportProperties} exportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Defines is multiple Grid's are exported.\n * @param {workbook} workbook - Defined the Workbook if multiple Grid is exported.\n * @param {isCsv} isCsv - true if export to CSV.\n * @return {Promise}\n */\n /* tslint:disable-next-line:max-line-length */\n /* tslint:disable-next-line:no-any */\n Map(grid, exportProperties, isMultipleExport, workbook, isCsv, isBlob) {\n let gObj = grid;\n let cancel = 'cancel';\n let isBlb = 'isBlob';\n let csv = 'isCsv';\n let workbk = 'workbook';\n let isMultiEx = 'isMultipleExport';\n this.gridPool = {};\n if (grid.childGrid && !(!isNullOrUndefined(exportProperties) && exportProperties.hierarchyExportMode === 'None')) {\n grid.expandedRows = getPrintGridModel(grid).expandedRows;\n }\n let args = {\n requestType: 'beforeExcelExport', gridObject: gObj, cancel: false,\n isMultipleExport: isMultipleExport, workbook: workbook, isCsv: isCsv, isBlob: isBlob\n };\n gObj.trigger(beforeExcelExport, args);\n if (args[cancel]) {\n return new Promise((resolve, reject) => {\n return resolve();\n });\n }\n this.parent.log('exporting_begin', this.getModuleName());\n this.data = new Data(gObj);\n this.isExporting = true;\n this.isBlob = args[isBlb];\n if (args[csv]) {\n this.isCsvExport = args[csv];\n }\n else {\n this.isCsvExport = false;\n }\n if (isExportColumns(exportProperties)) {\n updateColumnTypeForExportColumns(exportProperties, gObj);\n }\n return this.processRecords(gObj, exportProperties, args[isMultiEx], args[workbk]);\n }\n exportingSuccess(resolve) {\n this.isExporting = false;\n this.parent.trigger(excelExportComplete, this.isBlob ? { promise: this.blobPromise } : {});\n this.parent.log('exporting_complete', this.getModuleName());\n resolve(this.book);\n }\n /* tslint:disable-next-line:no-any */\n processRecords(gObj, exportProperties, isMultipleExport, workbook) {\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.dataSource)) {\n if (!(exportProperties.dataSource instanceof DataManager)) {\n exportProperties.dataSource = new DataManager(exportProperties.dataSource);\n }\n let query = exportProperties.query ? exportProperties.query : new Query();\n if (isNullOrUndefined(query.isCountRequired) || gObj.aggregates) {\n query.isCountRequired = true;\n }\n return new Promise((resolve, reject) => {\n let dataManager = exportProperties.dataSource.executeQuery(query);\n dataManager.then((r) => {\n this.init(gObj);\n this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, r).then(() => {\n this.exportingSuccess(resolve);\n });\n });\n });\n }\n else if (!isNullOrUndefined(exportProperties) && exportProperties.exportType === 'CurrentPage') {\n return new Promise((resolve, reject) => {\n this.init(gObj);\n this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, this.parent.getCurrentViewRecords());\n this.exportingSuccess(resolve);\n });\n }\n else {\n let allPromise = [];\n allPromise.push(this.data.getData({}, ExportHelper.getQuery(gObj, this.data)));\n allPromise.push(this.helper.getColumnData(gObj));\n return new Promise((resolve, reject) => {\n Promise.all(allPromise).then((e) => {\n this.init(gObj);\n this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, e[0]).then(() => {\n this.exportingSuccess(resolve);\n });\n }).catch((e) => {\n reject(this.book);\n this.parent.trigger(actionFailure, e);\n });\n });\n }\n }\n /* tslint:disable-next-line:max-func-body-length */\n processInnerRecords(gObj, exportProperties, \n /* tslint:disable-next-line:no-any */\n isMultipleExport, workbook, r) {\n this.groupedColLength = gObj.groupSettings.columns.length;\n let blankRows = 5;\n let separator;\n let rows = [];\n let isExportPropertiesPresent = !isNullOrUndefined(exportProperties);\n if (isExportPropertiesPresent && !isNullOrUndefined(exportProperties.multipleExport)) {\n /* tslint:disable-next-line:max-line-length */\n this.expType = (!isNullOrUndefined(exportProperties.multipleExport.type) ? exportProperties.multipleExport.type : 'AppendToSheet');\n if (!isNullOrUndefined(exportProperties.multipleExport.blankRows)) {\n blankRows = exportProperties.multipleExport.blankRows;\n }\n }\n if (isNullOrUndefined(workbook)) {\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n }\n else if (this.expType === 'NewSheet') {\n this.workSheet = workbook.worksheets;\n this.rows = [];\n this.columns = [];\n this.styles = workbook.styles;\n }\n else {\n this.workSheet = [];\n this.rows = workbook.worksheets[0].rows;\n this.columns = workbook.worksheets[0].columns;\n this.styles = workbook.styles;\n this.rowLength = (this.rows[this.rows.length - 1].index + blankRows);\n this.rowLength++;\n }\n if (isExportPropertiesPresent) {\n if (!isNullOrUndefined(isMultipleExport)) {\n if (!isNullOrUndefined(exportProperties.header) && (isMultipleExport || this.expType === 'NewSheet')) {\n this.processExcelHeader(JSON.parse(JSON.stringify(exportProperties.header)));\n }\n if (!isNullOrUndefined(exportProperties.footer)) {\n if (this.expType === 'AppendToSheet') {\n if (!isMultipleExport) {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n else {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n }\n else {\n if (!isNullOrUndefined(exportProperties.header)) {\n this.processExcelHeader(JSON.parse(JSON.stringify(exportProperties.header)));\n }\n if (!isNullOrUndefined(exportProperties.footer)) {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n }\n this.includeHiddenColumn = (isExportPropertiesPresent ? exportProperties.includeHiddenColumn : false);\n return new Promise((resolve, reject) => {\n gObj.childGridLevel = 0;\n rows = this.processGridExport(gObj, exportProperties, r);\n this.globalResolve = resolve;\n this.gridPool[gObj.id] = true;\n this.helper.checkAndExport(this.gridPool, this.globalResolve);\n }).then(() => {\n let organisedRows = [];\n this.organiseRows(rows, rows[0].index, organisedRows);\n this.rows = this.rows.concat(organisedRows);\n //footer template add\n if (!isNullOrUndefined(this.footer)) {\n if ((this.expType === 'AppendToSheet' && !isMultipleExport) || (this.expType === 'NewSheet')) {\n this.processExcelFooter(this.footer);\n }\n }\n let sheet = {};\n if (this.columns.length > 0) {\n sheet.columns = this.columns;\n }\n /* tslint:disable-next-line:no-any */\n sheet.rows = this.rows;\n this.workSheet.push(sheet);\n this.book.worksheets = this.workSheet;\n this.book.styles = this.styles;\n gObj.notify('finalPageSetup', this.book);\n if (!isMultipleExport) {\n if (this.isCsvExport) {\n if (isBlazor() && gObj.isServerRendered) {\n this.book.isServerRendered = gObj.isServerRendered;\n }\n if (isExportPropertiesPresent && !isNullOrUndefined(exportProperties.separator)\n && exportProperties.separator !== ',') {\n separator = exportProperties.separator;\n }\n /* tslint:disable-next-line:max-line-length */\n let book = new Workbook(this.book, 'csv', gObj.locale, gObj.currencyCode, separator);\n if (!this.isBlob) {\n if (isExportPropertiesPresent && exportProperties.fileName) {\n book.save(exportProperties.fileName);\n }\n else {\n book.save('Export.csv');\n }\n }\n else {\n this.blobPromise = book.saveAsBlob('text/csv');\n }\n }\n else {\n let book = new Workbook(this.book, 'xlsx', gObj.locale, gObj.currencyCode);\n if (!this.isBlob) {\n if (isExportPropertiesPresent && exportProperties.fileName) {\n book.save(exportProperties.fileName);\n }\n else {\n book.save('Export.xlsx');\n }\n }\n else {\n this.blobPromise = book.saveAsBlob('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');\n }\n }\n if (this.isElementIdChanged) {\n gObj.element.id = '';\n }\n delete gObj.expandedRows;\n }\n return workbook;\n });\n }\n organiseRows(rows, initialIndex, organisedRows) {\n if (!rows.length) {\n return initialIndex;\n }\n for (let i = 0; i < rows.length; i++) {\n let row = rows[i];\n let childRows = row.childRows;\n if (childRows) {\n row.index = initialIndex++;\n delete row.childRows;\n organisedRows.push(row);\n initialIndex = this.organiseRows(childRows, initialIndex, organisedRows);\n }\n else {\n row.index = initialIndex++;\n organisedRows.push(row);\n }\n }\n return initialIndex;\n }\n processGridExport(gObj, exportProperties, r) {\n let excelRows = [];\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.theme)) {\n this.theme = exportProperties.theme;\n }\n if (gObj.childGrid && !isNullOrUndefined(exportProperties)) {\n gObj.hierarchyPrintMode = exportProperties.hierarchyExportMode || 'Expanded';\n }\n let helper = new ExportHelper(gObj);\n let gColumns = isExportColumns(exportProperties) ?\n prepareColumns(exportProperties.columns, gObj.enableColumnVirtualization) :\n helper.getGridExportColumns(gObj.columns);\n let headerRow = helper.getHeaders(gColumns, this.includeHiddenColumn);\n let groupIndent = gObj.groupSettings.columns.length;\n excelRows = this.processHeaderContent(gObj, headerRow, groupIndent, excelRows);\n /* tslint:disable-next-line:max-line-length */\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.dataSource) && !(exportProperties.dataSource instanceof DataManager)) {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, exportProperties.dataSource, excelRows, helper);\n }\n else if (!isNullOrUndefined(exportProperties) && exportProperties.exportType === 'CurrentPage') {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, gObj.currentViewData, excelRows, helper);\n }\n else {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, undefined, excelRows, helper);\n }\n gObj.notify(exportDataBound, { excelRows: excelRows, type: 'excel' });\n return excelRows;\n }\n processRecordContent(gObj, returnType, headerRow, exportProperties, currentViewRecords, excelRow, helper) {\n let record;\n if (!isNullOrUndefined(currentViewRecords) && currentViewRecords.length) {\n record = currentViewRecords;\n }\n else {\n record = returnType.result;\n }\n if (!isNullOrUndefined(record.level)) {\n this.processGroupedRows(gObj, record, headerRow, record.level, 0, exportProperties, excelRow, helper);\n }\n else {\n this.processRecordRows(gObj, record, headerRow, 0, 0, exportProperties, excelRow, helper);\n }\n if (!isNullOrUndefined(returnType.aggregates)) {\n if (!isNullOrUndefined(currentViewRecords)) {\n this.processAggregates(gObj, returnType.result, excelRow, currentViewRecords);\n }\n else {\n let result = returnType.result.GroupGuid ?\n returnType.result.records : returnType.result;\n this.processAggregates(gObj, result, excelRow, null, null, null, headerRow.columns);\n }\n }\n return excelRow;\n }\n /* tslint:disable-next-line:no-any */\n processGroupedRows(gObj, dataSource, headerRow, level, startIndex, excelExportProperties, excelRows, helper) {\n for (let item of dataSource) {\n let cells = [];\n let index = 1;\n /* tslint:disable-next-line:no-any */\n let cell = {};\n cell.index = index + level;\n let col = gObj.getColumnByField(item.field);\n /* tslint:disable-next-line:no-any */\n let args = {\n value: item.key,\n column: col,\n style: undefined,\n isForeignKey: col.isForeignColumn(),\n };\n let value = gObj.getColumnByField(item.field).headerText +\n ': ' + (!col.enableGroupByFormat ? this.exportValueFormatter.formatCellValue(args) : item.key) + ' - ';\n if (item.count > 1) {\n value += item.count + ' items';\n }\n else {\n value += item.count + ' item';\n }\n let cArgs = { captionText: value, type: this.isCsvExport ? 'CSV' : 'Excel' };\n this.parent.trigger(exportGroupCaption, cArgs);\n cell.value = cArgs.captionText;\n cell.style = this.getCaptionThemeStyle(this.theme);\n let captionModelGen = new CaptionSummaryModelGenerator(gObj);\n let groupCaptionSummaryRows = captionModelGen.generateRows(item);\n this.fillAggregates(gObj, groupCaptionSummaryRows, dataSource.level + dataSource.childLevels, excelRows, this.rowLength);\n cells.push(cell);\n if (excelRows[excelRows.length - 1].cells.length > 0) {\n let lIndex = dataSource.level + dataSource.childLevels + groupCaptionSummaryRows[0].cells.length;\n let hIndex = 0;\n for (let tCell of excelRows[excelRows.length - 1].cells) {\n if (tCell.index < lIndex) {\n lIndex = tCell.index;\n }\n if (tCell.index > hIndex) {\n hIndex = tCell.index;\n }\n if (cells[cells.length - 1].index !== tCell.index) {\n cells.push(tCell);\n }\n }\n if ((lIndex - cell.index) > 1) {\n cell.colSpan = lIndex - cell.index;\n }\n while (hIndex < (headerRow.columns.length + level + dataSource.childLevels)) {\n /* tslint:disable-next-line:no-any */\n let sCell = {};\n sCell.index = (hIndex + 1);\n sCell.style = this.getCaptionThemeStyle(this.theme);\n cells.push(sCell);\n hIndex++;\n }\n }\n else {\n let span = 0;\n //Calculation for column span when group caption dont have aggregates\n for (let col of headerRow.columns) {\n if (col.visible) {\n span++;\n }\n }\n cell.colSpan = (dataSource.childLevels + span);\n }\n excelRows[excelRows.length - 1].cells = cells;\n this.rowLength++;\n if (this.groupedColLength < 8 && level > 1) {\n let grouping = { outlineLevel: level - 1, isCollapsed: true };\n excelRows[excelRows.length - 1].grouping = grouping;\n }\n if (!isNullOrUndefined(dataSource.childLevels) && dataSource.childLevels > 0) {\n this.processGroupedRows(gObj, item.items, headerRow, item.items.level, startIndex, excelExportProperties, excelRows, helper);\n }\n else {\n startIndex = this.processRecordRows(gObj, item.items, headerRow, (level), startIndex, excelExportProperties, excelRows, helper);\n this.processAggregates(gObj, item, excelRows, undefined, (level), true);\n }\n }\n }\n processRecordRows(gObj, record, headerRow, level, startIndex, excelExportProperties, excelRows, helper) {\n let index = 1;\n let cells = [];\n let columns = headerRow.columns;\n let rows = helper.getGridRowModel(columns, record, gObj, startIndex);\n for (const row of rows) {\n cells = [];\n startIndex++;\n index = 1;\n for (let c = 0, len = row.cells.length; c < len; c++) {\n let gCell = row.cells[c];\n if (gCell.cellType !== CellType.Data) {\n continue;\n }\n let column = gCell.column;\n let field = column.field;\n let cellValue = !isNullOrUndefined(field) ? column.valueAccessor(field, row.data, column) : '';\n let value = !isNullOrUndefined(cellValue) ? cellValue : '';\n let fkData;\n if (column.isForeignColumn && column.isForeignColumn()) {\n fkData = helper.getFData(value, column);\n value = getValue(column.foreignKeyValue, fkData);\n }\n if (!isNullOrUndefined(value)) {\n let cell = {};\n /* tslint:disable-next-line:no-any */\n let excelCellArgs = {\n data: row.data, column: column, foreignKeyData: fkData,\n value: value, style: undefined, colSpan: 1, cell: cell\n };\n gObj.trigger(excelQueryCellInfo, excelCellArgs);\n cell = excelCellArgs.cell;\n cell.index = index + level + gObj.childGridLevel;\n cell.value = excelCellArgs.value;\n if (excelCellArgs.data === '' && gObj.childGridLevel && index === 1) {\n let style = {};\n style.hAlign = 'left';\n excelCellArgs = { style: style };\n cell.colSpan = gObj.getVisibleColumns().length;\n cell.value = this.l10n.getConstant('EmptyRecord');\n }\n if (excelCellArgs.colSpan > 1) {\n cell.colSpan = excelCellArgs.colSpan;\n }\n if (!isNullOrUndefined(excelCellArgs.style)) {\n let styleIndex = this.getColumnStyle(gObj, index + level);\n cell.style = this.mergeOptions(this.styles[styleIndex], excelCellArgs.style);\n }\n else {\n cell.style = { name: gObj.element.id + 'column' + (index + level) };\n }\n cells.push(cell);\n }\n index++;\n }\n let excelRow = { index: this.rowLength++, cells: cells };\n if (this.groupedColLength < 8 && level > 0) {\n excelRow.grouping = { outlineLevel: level, isCollapsed: true };\n excelRows.push(excelRow);\n }\n else {\n excelRows.push(excelRow);\n }\n if (!isNullOrUndefined(gObj.childGrid)) {\n gObj.isPrinting = true;\n let exportType = (!isNullOrUndefined(excelExportProperties) && excelExportProperties.exportType) ?\n excelExportProperties.exportType : 'AllPages';\n let returnVal = this.helper.createChildGrid(gObj, row, exportType, this.gridPool);\n let childGridObj = returnVal.childGrid;\n let element = returnVal.element;\n childGridObj.actionFailure =\n helper.failureHandler(this.gridPool, childGridObj, this.globalResolve);\n childGridObj.childGridLevel = gObj.childGridLevel + 1;\n let args = { childGrid: childGridObj, row, exportProperties: excelExportProperties };\n this.parent.trigger(exportDetailDataBound, args);\n childGridObj.beforeDataBound = this.childGridCell(excelRow, childGridObj, excelExportProperties, row);\n childGridObj.appendTo(element);\n }\n gObj.notify(exportRowDataBound, { rowObj: row, type: 'excel', excelRows: excelRows });\n }\n return startIndex;\n }\n childGridCell(excelRow, childGridObj, excelExportProps, gRow) {\n return (result) => {\n childGridObj.beforeDataBound = null;\n result.cancel = true;\n if (result.result.length === 0) {\n result.result = [''];\n }\n excelRow.childRows = this.processGridExport(childGridObj, excelExportProps, result);\n let intent = this.parent.groupSettings.columns.length;\n let rows = excelRow.childRows;\n for (let i = 0; i < rows.length; i++) {\n rows[i].grouping = { outlineLevel: intent + childGridObj.childGridLevel,\n isCollapsed: !gRow.isExpand, isHidden: !gRow.isExpand };\n }\n childGridObj.destroy();\n detach(childGridObj.element);\n this.gridPool[childGridObj.id] = true;\n this.helper.checkAndExport(this.gridPool, this.globalResolve);\n return excelRow;\n };\n }\n // tslint:disable-next-line:max-line-length\n processAggregates(gObj, rec, excelRows, currentViewRecords, indent, byGroup, columns) {\n let summaryModel = new SummaryModelGenerator(gObj);\n if (gObj.aggregates.length && this.parent !== gObj) {\n gObj.aggregateModule.prepareSummaryInfo();\n }\n let data = undefined;\n if (!isNullOrUndefined(currentViewRecords)) {\n data = currentViewRecords;\n }\n else {\n data = rec;\n }\n if (indent === undefined) {\n indent = 0;\n }\n if (gObj.groupSettings.columns.length > 0 && byGroup) {\n let groupSummaryModel = new GroupSummaryModelGenerator(gObj);\n let groupSummaryRows = groupSummaryModel.generateRows(data, { level: data.level });\n if (groupSummaryRows.length > 0) {\n excelRows = this.fillAggregates(gObj, groupSummaryRows, indent, excelRows);\n }\n }\n else {\n indent = gObj.groupSettings.columns.length > 0 && !byGroup ? gObj.groupSettings.columns.length : indent;\n let sRows = summaryModel.generateRows(data, rec.aggregates, null, null, columns);\n if (sRows.length > 0 && !byGroup) {\n excelRows = this.fillAggregates(gObj, sRows, indent, excelRows);\n }\n }\n return excelRows;\n }\n // tslint:disable-next-line:max-line-length\n fillAggregates(gObj, rows, indent, excelRows, customIndex) {\n for (let row of rows) {\n let cells = [];\n let index = 0;\n for (let cell of row.cells) {\n /* tslint:disable-next-line:no-any */\n let eCell = {};\n if (cell.cellType === CellType.DetailFooterIntent) {\n continue;\n }\n if ((cell.visible || this.includeHiddenColumn)) {\n index++;\n if (cell.isDataCell) {\n let footerTemplate = !isNullOrUndefined(cell.column.footerTemplate);\n let groupFooterTemplate = !isNullOrUndefined(cell.column.groupFooterTemplate);\n let groupCaptionTemplate = !isNullOrUndefined(cell.column.groupCaptionTemplate);\n eCell.index = index + indent + gObj.childGridLevel;\n if (footerTemplate) {\n eCell.value = this.getAggreateValue(CellType.Summary, cell.column.footerTemplate, cell, row);\n }\n else if (groupFooterTemplate) {\n eCell.value = this.getAggreateValue(CellType.GroupSummary, cell.column.groupFooterTemplate, cell, row);\n }\n else if (groupCaptionTemplate) {\n eCell.value = this.getAggreateValue(CellType.CaptionSummary, cell.column.groupCaptionTemplate, cell, row);\n }\n else {\n for (let key of Object.keys(row.data[cell.column.field])) {\n if (key === cell.column.type) {\n if (!isNullOrUndefined(row.data[cell.column.field].Sum)) {\n eCell.value = row.data[cell.column.field][`${cell.column.field} - sum`];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Average)) {\n eCell.value = row.data[cell.column.field][`${cell.column.field} - average`];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Max)) {\n eCell.value = row.data[cell.column.field][`${cell.column.field} - max`];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Min)) {\n eCell.value = row.data[cell.column.field][`${cell.column.field} - min`];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Count)) {\n eCell.value = row.data[cell.column.field][`${cell.column.field} - count`];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].TrueCount)) {\n eCell.value = row.data[cell.column.field][`${cell.column.field} - truecount`];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].FalseCount)) {\n eCell.value = row.data[cell.column.field][`${cell.column.field} - falsecount`];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Custom)) {\n eCell.value = row.data[cell.column.field].Custom;\n }\n }\n }\n }\n eCell.style = this.getCaptionThemeStyle(this.theme); //{ name: gObj.element.id + 'column' + index };\n this.aggregateStyle(cell.column, eCell.style, cell.column.field);\n let gridCellStyle = cell.attributes.style;\n if (gridCellStyle.textAlign) {\n eCell.style.hAlign = gridCellStyle.textAlign.toLowerCase();\n }\n let args = {\n row: row,\n type: footerTemplate ? AggregateTemplateType.Footer : groupFooterTemplate ?\n AggregateTemplateType.GroupFooter : AggregateTemplateType.GroupCaption,\n style: eCell\n };\n this.parent.trigger(excelAggregateQueryCellInfo, args);\n cells.push(eCell);\n }\n else {\n if (customIndex === undefined) {\n eCell.index = index + indent + gObj.childGridLevel;\n eCell.style = this.getCaptionThemeStyle(this.theme); //{ name: gObj.element.id + 'column' + index };\n cells.push(eCell);\n }\n }\n }\n }\n if (!isNullOrUndefined(customIndex)) {\n excelRows.push({ index: customIndex, cells: cells });\n }\n else {\n let row = {};\n if (this.groupedColLength < 8 && this.groupedColLength > 0) {\n let dummyOutlineLevel = 'outlineLevel';\n let dummyGrouping = 'grouping';\n let level = excelRows[excelRows.length - 1][dummyGrouping][dummyOutlineLevel];\n let grouping = { outlineLevel: level, isCollapsed: true };\n row = { index: this.rowLength++, cells: cells, grouping };\n }\n else {\n row = { index: this.rowLength++, cells: cells };\n }\n excelRows.push(row);\n }\n }\n return excelRows;\n }\n aggregateStyle(col, style, field) {\n let column = this.parent.getColumnByField(field);\n if (typeof col.format === 'object') {\n let format = col.format;\n style.numberFormat = !isNullOrUndefined(format.format) ? format.format : format.skeleton;\n if (!isNullOrUndefined(format.type)) {\n style.type = format.type.toLowerCase();\n }\n }\n else {\n style.numberFormat = col.format;\n }\n if (!isNullOrUndefined(column) && isNullOrUndefined(style.type)) {\n style.type = column.type.toLowerCase();\n }\n }\n getAggreateValue(cellType, template, cell, row) {\n let templateFn = {};\n templateFn[getEnumValue(CellType, cell.cellType)] = compile(template);\n /* tslint:disable-next-line:max-line-length */\n let txt = (templateFn[getEnumValue(CellType, cell.cellType)](row.data[cell.column.field ? cell.column.field : cell.column.columnName]));\n return txt[0].textContent;\n }\n mergeOptions(JSON1, JSON2) {\n let result = {};\n let attrname = Object.keys(JSON1);\n for (let index = 0; index < attrname.length; index++) {\n if (attrname[index] !== 'name') {\n result[attrname[index]] = JSON1[attrname[index]];\n }\n }\n attrname = Object.keys(JSON2);\n for (let index = 0; index < attrname.length; index++) {\n if (attrname[index] !== 'name') {\n result[attrname[index]] = JSON2[attrname[index]];\n }\n }\n return result;\n }\n getColumnStyle(gObj, columnIndex) {\n let index = 0;\n for (let style of this.styles) {\n if (style.name === gObj.element.id + 'column' + columnIndex) {\n return index;\n }\n index++;\n }\n return undefined;\n }\n processHeaderContent(gObj, headerRow, indent, excelRows) {\n let rowIndex = 1;\n let gridRows = headerRow.rows;\n // Column collection with respect to the records in the grid\n let gridColumns = headerRow.columns;\n let spannedCells = [];\n if (indent > 0) {\n let index = 0;\n while (index !== indent) {\n this.columns.push({ index: index + 1, width: 30 });\n index++;\n }\n }\n for (let row = 0; row < gridRows.length; row++) {\n let currentCellIndex = 1 + indent;\n let cells = [];\n for (let column = 0; column < gridRows[row].cells.length; column++) {\n /* tslint:disable-next-line:no-any */\n let style = {};\n let cell = {};\n let gridCell = gridRows[row].cells[column];\n if (gridCell.cellType === CellType.HeaderIndent || gridCell.cellType === CellType.DetailHeader) {\n continue;\n }\n let result = { contains: true, index: 1 };\n while (result.contains) {\n result = this.getIndex(spannedCells, rowIndex, currentCellIndex);\n currentCellIndex = result.index;\n if (!result.contains) {\n cell.index = result.index + gObj.childGridLevel;\n break;\n }\n }\n if (!isNullOrUndefined(gridCell.rowSpan) && gridCell.rowSpan !== 1) {\n cell.rowSpan = gridCell.rowSpan;\n for (let i = rowIndex; i < gridCell.rowSpan + rowIndex; i++) {\n let spannedCell = { rowIndex: 0, columnIndex: 0 };\n spannedCell.rowIndex = i;\n spannedCell.columnIndex = currentCellIndex;\n spannedCells.push(spannedCell);\n }\n }\n if (!isNullOrUndefined(gridCell.colSpan) && gridCell.colSpan !== 1) {\n cell.colSpan = gridCell.colSpan;\n currentCellIndex = currentCellIndex + cell.colSpan - 1;\n }\n cell.value = gridCell.column.headerText;\n style = this.getHeaderThemeStyle(this.theme);\n if (!isNullOrUndefined(gridCell.column.textAlign)) {\n style.hAlign = gridCell.column.textAlign.toLowerCase();\n }\n if (!isNullOrUndefined(gridCell.column.headerTextAlign)) {\n style.hAlign = gridCell.column.headerTextAlign.toLowerCase();\n }\n let excelHeaderCellArgs = { cell: cell, gridCell: gridCell, style: style };\n gObj.trigger(excelHeaderQueryCellInfo, excelHeaderCellArgs);\n cell.style = excelHeaderCellArgs.style;\n cells.push(cell);\n currentCellIndex++;\n }\n excelRows.push({ index: this.rowLength++, cells: cells });\n }\n for (let col = 0; col < gridColumns.length; col++) {\n this.parseStyles(gObj, gridColumns[col], this.getRecordThemeStyle(this.theme), indent + col + 1);\n }\n return excelRows;\n }\n getHeaderThemeStyle(theme) {\n let style = {};\n style.fontSize = 12;\n style.borders = { color: '#E0E0E0' };\n style.bold = true;\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.header)) {\n style = this.updateThemeStyle(theme.header, style);\n }\n return style;\n }\n updateThemeStyle(themestyle, style) {\n return extend(style, themestyle);\n }\n getCaptionThemeStyle(theme) {\n let style = {};\n style.fontSize = 13;\n style.backColor = '#F6F6F6';\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.caption)) {\n style = this.updateThemeStyle(theme.caption, style);\n }\n return style;\n }\n getRecordThemeStyle(theme) {\n let style = {};\n style.fontSize = 13;\n style.borders = { color: '#E0E0E0' };\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.record)) {\n style = this.updateThemeStyle(theme.record, style);\n }\n return style;\n }\n processExcelHeader(header) {\n if (!isNullOrUndefined(header.rows) && (this.expType === 'NewSheet' || this.rowLength === 1)) {\n let noRows;\n if (header.headerRows === undefined) {\n this.rowLength = header.rows.length;\n }\n else {\n this.rowLength = header.headerRows;\n }\n if (this.rowLength < header.rows.length) {\n noRows = this.rowLength;\n }\n else {\n noRows = header.rows.length;\n }\n this.rowLength++;\n for (let row = 0; row < noRows; row++) {\n let json = header.rows[row];\n //Row index\n if (!(json.index !== null && !isNullOrUndefined(json.index))) {\n json.index = (row + 1);\n }\n this.updatedCellIndex(json);\n }\n }\n }\n updatedCellIndex(json) {\n let cellsLength = json.cells.length;\n for (let cellId = 0; cellId < cellsLength; cellId++) {\n let jsonCell = json.cells[cellId];\n //cell index\n if (!(jsonCell.index !== null && !isNullOrUndefined(jsonCell.index))) {\n jsonCell.index = (cellId + 1);\n }\n }\n this.rows.push(json);\n }\n processExcelFooter(footer) {\n if (!isNullOrUndefined(footer.rows)) {\n let noRows;\n if (footer.footerRows === undefined) {\n this.rowLength += footer.rows.length;\n }\n else {\n if (footer.footerRows > footer.rows.length) {\n this.rowLength += (footer.footerRows - footer.rows.length);\n noRows = footer.rows.length;\n }\n else {\n noRows = footer.footerRows;\n }\n }\n for (let row = 0; row < noRows; row++) {\n let json = footer.rows[row];\n //Row index\n if (json.index === null || json.index === undefined) {\n json.index = this.rowLength++;\n }\n else {\n json.index += this.rowLength;\n }\n this.updatedCellIndex(json);\n }\n }\n }\n getIndex(spannedCells, rowIndex, columnIndex) {\n for (let spannedCell of spannedCells) {\n if ((spannedCell.rowIndex === rowIndex) && (spannedCell.columnIndex === columnIndex)) {\n columnIndex = columnIndex + 1;\n return { contains: true, index: columnIndex };\n }\n }\n return { contains: false, index: columnIndex };\n }\n parseStyles(gObj, col, style, index) {\n if (!isNullOrUndefined(col.format)) {\n if (typeof col.format === 'object') {\n let format = col.format;\n style.numberFormat = !isNullOrUndefined(format.format) ? format.format : format.skeleton;\n if (!isNullOrUndefined(format.type)) {\n style.type = format.type.toLowerCase();\n }\n }\n else {\n style.numberFormat = col.format;\n style.type = col.type;\n }\n }\n if (!isNullOrUndefined(col.textAlign)) {\n style.hAlign = col.textAlign.toLowerCase();\n }\n if (Object.keys(style).length > 0) {\n style.name = gObj.element.id + 'column' + index;\n this.styles.push(style);\n }\n if (!isNullOrUndefined(col.width)) {\n this.columns.push({ index: index + gObj.childGridLevel, width: typeof col.width === 'number' ?\n col.width : this.helper.getConvertedWidth(col.width) });\n }\n }\n /**\n * To destroy the excel export\n * @return {void}\n * @hidden\n */\n destroy() {\n //destroy for exporting\n }\n}\n\n/**\n * `PDF Export` module is used to handle the exportToPDF action.\n * @hidden\n */\nclass PdfExport {\n /**\n * Constructor for the Grid PDF Export module\n * @hidden\n */\n constructor(parent) {\n this.hideColumnInclude = false;\n this.currentViewData = false;\n this.customDataSource = false;\n this.isGrouping = false;\n this.headerOnPages = [];\n this.drawPosition = { xPosition: 0, yPosition: 0 };\n this.parent = parent;\n this.helper = new ExportHelper(parent);\n this.gridPool = {};\n }\n /**\n * For internal use only - Get the module name.\n */\n getModuleName() {\n return 'PdfExport';\n }\n init(parent) {\n this.exportValueFormatter = new ExportValueFormatter(parent.locale);\n this.pdfDocument = undefined;\n this.hideColumnInclude = false;\n this.currentViewData = false;\n this.parent = parent;\n this.isGrouping = false;\n this.isExporting = true;\n parent.id = getUid('main-grid');\n this.gridPool[parent.id] = false;\n this.pdfPageSettings = new PdfPageSettings();\n }\n exportWithData(parent, pdfDoc, resolve, returnType, pdfExportProperties, isMultipleExport, reject) {\n this.init(parent);\n if (!isNullOrUndefined(pdfDoc)) {\n this.pdfDocument = pdfDoc;\n }\n else {\n this.pdfDocument = new PdfDocument();\n }\n this.processExport(parent, returnType, pdfExportProperties, isMultipleExport).then(() => {\n this.isExporting = false;\n parent.trigger(pdfExportComplete, this.isBlob ? { promise: this.blobPromise } : {});\n this.parent.log('exporting_complete', this.getModuleName());\n resolve(this.pdfDocument);\n }).catch((e) => {\n reject(this.pdfDocument);\n this.parent.trigger(actionFailure, e);\n });\n }\n /**\n * Used to map the input data\n * @return {void}\n */\n Map(parent, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n this.data = new Data(this.parent);\n this.isBlob = isBlob;\n this.gridPool = {};\n if (parent.childGrid && !(!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.hierarchyExportMode === 'None')) {\n parent.expandedRows = getPrintGridModel(parent).expandedRows;\n }\n let args = {\n requestType: 'beforePdfExport', cancel: false,\n headerPageNumbers: [], gridDrawPosition: { xPosition: 0, yPosition: 0 }\n };\n if (!isBlazor()) {\n let gridObject = 'gridObject';\n args[gridObject] = parent;\n }\n let can = 'cancel';\n let header = 'headerPageNumbers';\n let drawPos = 'gridDrawPosition';\n parent.trigger(beforePdfExport, args);\n if (args[can] === true) {\n return new Promise((resolve, reject) => {\n return resolve();\n });\n }\n if (isExportColumns(pdfExportProperties)) {\n updateColumnTypeForExportColumns(pdfExportProperties, parent);\n }\n this.headerOnPages = args[header];\n this.drawPosition = args[drawPos];\n this.parent.log('exporting_begin', this.getModuleName());\n if (!isNullOrUndefined(pdfExportProperties) && !isNullOrUndefined(pdfExportProperties.dataSource)) {\n if (!(pdfExportProperties.dataSource instanceof DataManager)) {\n pdfExportProperties.dataSource = new DataManager(pdfExportProperties.dataSource);\n }\n return new Promise((resolve, reject) => {\n pdfExportProperties.dataSource.executeQuery(new Query()).then((returnType) => {\n this.exportWithData(parent, pdfDoc, resolve, returnType, pdfExportProperties, isMultipleExport, reject);\n });\n });\n }\n else if (!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.exportType === 'CurrentPage') {\n return new Promise((resolve, reject) => {\n this.exportWithData(parent, pdfDoc, resolve, this.parent.getCurrentViewRecords(), pdfExportProperties, isMultipleExport, reject);\n });\n }\n else {\n let allPromise = [];\n allPromise.push(this.data.getData({}, ExportHelper.getQuery(parent, this.data)));\n allPromise.push(this.helper.getColumnData(parent));\n return new Promise((resolve, reject) => {\n Promise.all(allPromise).then((e) => {\n this.init(parent);\n if (!isNullOrUndefined(pdfDoc)) {\n this.pdfDocument = pdfDoc;\n }\n else {\n this.pdfDocument = new PdfDocument();\n }\n this.processExport(parent, e[0], pdfExportProperties, isMultipleExport).then(() => {\n this.isExporting = false;\n parent.trigger(pdfExportComplete, this.isBlob ? { promise: this.blobPromise } : {});\n this.parent.log('exporting_complete', this.getModuleName());\n resolve(this.pdfDocument);\n }).catch((e) => {\n reject(this.pdfDocument);\n this.parent.trigger(actionFailure, e);\n });\n });\n });\n }\n }\n processExport(gObj, returnType, pdfExportProperties, isMultipleExport) {\n let section = this.pdfDocument.sections.add();\n let pdfGrid;\n this.processSectionExportProperties(section, pdfExportProperties);\n let pdfPage = section.pages.add();\n return new Promise((resolve, reject) => {\n pdfGrid = this.processGridExport(gObj, returnType, pdfExportProperties);\n this.globalResolve = resolve;\n this.gridPool[gObj.id] = true;\n this.helper.checkAndExport(this.gridPool, this.globalResolve);\n }).then(() => {\n // draw the grid\n let xPosition = 'xPosition';\n let yPosition = 'yPosition';\n pdfGrid.draw(pdfPage, this.drawPosition[xPosition], this.drawPosition[yPosition]);\n this.drawHeader(pdfExportProperties);\n if (!isMultipleExport) {\n // save the PDF\n if (!this.isBlob) {\n if (!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.fileName) {\n this.pdfDocument.save(pdfExportProperties.fileName);\n }\n else {\n this.pdfDocument.save('Export.pdf');\n }\n }\n else {\n this.blobPromise = this.pdfDocument.save();\n }\n this.pdfDocument.destroy();\n delete gObj.expandedRows;\n }\n return this.pdfDocument;\n });\n }\n processSectionExportProperties(section, pdfExportProperties) {\n if (!isNullOrUndefined(pdfExportProperties) && (!isNullOrUndefined(pdfExportProperties.pageOrientation)\n || !isNullOrUndefined(pdfExportProperties.pageSize))) {\n this.pdfPageSettings.orientation = (pdfExportProperties.pageOrientation === 'Landscape') ?\n PdfPageOrientation.Landscape : PdfPageOrientation.Portrait;\n this.pdfPageSettings.size = this.getPageSize(pdfExportProperties.pageSize);\n section.setPageSettings(this.pdfPageSettings);\n }\n return section;\n }\n processGridExport(gObj, returnType, pdfExportProperties) {\n let allowHorizontalOverflow = true;\n if (!isNullOrUndefined(pdfExportProperties)) {\n this.gridTheme = pdfExportProperties.theme;\n if (isBlazor() && !isNullOrUndefined(this.gridTheme)) {\n this.getGridPdfFont(this.gridTheme);\n }\n allowHorizontalOverflow = isNullOrUndefined(pdfExportProperties.allowHorizontalOverflow) ?\n true : pdfExportProperties.allowHorizontalOverflow;\n }\n let helper = new ExportHelper(gObj);\n let dataSource = this.processExportProperties(pdfExportProperties, returnType.result);\n let columns = isExportColumns(pdfExportProperties) ?\n prepareColumns(pdfExportProperties.columns, gObj.enableColumnVirtualization) :\n helper.getGridExportColumns(gObj.columns);\n columns = columns.filter((columns) => { return isNullOrUndefined(columns.commands); });\n let isGrouping = false;\n if (gObj.groupSettings.columns.length) {\n isGrouping = true;\n }\n if (gObj.childGrid && !isNullOrUndefined(pdfExportProperties)) {\n gObj.hierarchyPrintMode = pdfExportProperties.hierarchyExportMode || 'Expanded';\n }\n // create a grid\n let pdfGrid = new PdfGrid();\n // get header theme style\n let headerThemeStyle = this.getHeaderThemeStyle();\n let border = headerThemeStyle.border;\n let headerFont = headerThemeStyle.font;\n let headerBrush = headerThemeStyle.brush;\n let returnValue = helper.getHeaders(columns, this.hideColumnInclude);\n // Column collection with respect to the records in the grid\n let gridColumns = returnValue.columns;\n // process grid header content\n pdfGrid = this.processGridHeaders(gObj.groupSettings.columns.length, pdfGrid, returnValue.rows, gridColumns, border, headerFont, headerBrush, gObj, allowHorizontalOverflow, columns);\n // set alignment, width and type of the values of the column\n this.setColumnProperties(gridColumns, pdfGrid, helper, gObj, allowHorizontalOverflow);\n let captionThemeStyle = this.getSummaryCaptionThemeStyle();\n if (!isNullOrUndefined(dataSource) && dataSource.length) {\n if (isGrouping) {\n if (!isNullOrUndefined(captionThemeStyle.border)) {\n border = captionThemeStyle.border;\n }\n this.processGroupedRecords(pdfGrid, dataSource, gridColumns, gObj, border, 0, captionThemeStyle.font, captionThemeStyle.\n brush, captionThemeStyle.backgroundBrush, returnType, pdfExportProperties, helper, 0);\n }\n else {\n this.processRecord(border, gridColumns, gObj, dataSource, pdfGrid, 0, pdfExportProperties, helper, 0);\n }\n if (!isNullOrUndefined(returnType.aggregates)) {\n let summaryModel = new SummaryModelGenerator(gObj);\n let sRows;\n if (gObj.aggregates.length && this.parent !== gObj) {\n gObj.aggregateModule.prepareSummaryInfo();\n }\n if (this.customDataSource) {\n sRows = summaryModel.generateRows(dataSource, returnType.aggregates);\n }\n else if (this.currentViewData) {\n sRows = summaryModel.generateRows(this.parent.getCurrentViewRecords(), returnType.aggregates);\n }\n else if (isGrouping) {\n sRows = summaryModel.generateRows(dataSource.records, returnType.aggregates);\n }\n else {\n sRows = summaryModel.generateRows(returnType.result, returnType.aggregates, null, null, columns);\n }\n this.processAggregates(sRows, pdfGrid, border, captionThemeStyle.font, captionThemeStyle.brush, captionThemeStyle.backgroundBrush, false);\n }\n }\n else {\n let row = pdfGrid.rows.addRow();\n row.style.setBorder(border);\n }\n return pdfGrid;\n }\n getSummaryCaptionThemeStyle() {\n if (!isNullOrUndefined(this.gridTheme) && !isNullOrUndefined(this.gridTheme.caption)) {\n let fontSize = !isNullOrUndefined(this.gridTheme.caption.fontSize) ? this.gridTheme.caption.fontSize : 9.75;\n let fontFamily = !isNullOrUndefined(this.gridTheme.caption.fontName) ?\n this.getFontFamily(this.gridTheme.caption.fontName) : PdfFontFamily.Helvetica;\n let fontStyle = this.getFontStyle(this.gridTheme.caption);\n let pdfColor = new PdfColor(0, 0, 0);\n if (!isNullOrUndefined(this.gridTheme.caption.fontColor)) {\n let penBrushColor = this.hexToRgb(this.gridTheme.caption.fontColor);\n pdfColor = new PdfColor(penBrushColor.r, penBrushColor.g, penBrushColor.b);\n }\n let borderCaption = this.gridTheme.caption.border ? this.getBorderStyle(this.gridTheme.caption.border) : null;\n let font = new PdfStandardFont(fontFamily, fontSize, fontStyle);\n if (!isNullOrUndefined(this.gridTheme.caption.font)) {\n font = this.gridTheme.caption.font;\n }\n return { font: font, brush: new PdfSolidBrush(pdfColor), backgroundBrush: new PdfSolidBrush(new PdfColor(246, 246, 246)),\n border: borderCaption };\n }\n else {\n //Material theme\n return { font: new PdfStandardFont(PdfFontFamily.Helvetica, 9.75), brush: new PdfSolidBrush(new PdfColor(0, 0, 0)),\n backgroundBrush: new PdfSolidBrush(new PdfColor(246, 246, 246)) };\n }\n }\n getGridPdfFont(args) {\n let fontFamily = 'fontFamily';\n let fontSize = 'fontSize';\n let fontStyle = 'fontStyle';\n let isTrueType = 'isTrueType';\n let style = 0;\n if (args.header && args.header.font) {\n let headerFont = args.header.font[fontFamily];\n let headerSize = args.header.font[fontSize];\n let headerStyle = args.header.font[fontStyle];\n style = (isNullOrUndefined(PdfFontStyle[headerStyle]) ? 0 : PdfFontStyle[headerStyle]);\n if (args.header.font[isTrueType]) {\n args.header.font = new PdfTrueTypeFont(headerFont, headerSize, style);\n }\n else {\n let fontFamily = !isNullOrUndefined(headerFont) ?\n this.getFontFamily(headerFont) : PdfFontFamily.Helvetica;\n args.header.font = new PdfStandardFont(fontFamily, headerSize, style);\n }\n }\n if (args.caption && args.caption.font) {\n let captionFont = args.caption.font[fontFamily];\n let captionSize = args.caption.font[fontSize];\n let captionStyle = args.caption.font[fontStyle];\n style = (isNullOrUndefined(PdfFontStyle[captionStyle]) ? 0 : PdfFontStyle[captionStyle]);\n if (args.caption.font[isTrueType]) {\n args.caption.font = new PdfTrueTypeFont(captionFont, captionSize, style);\n }\n else {\n let fontFamily = !isNullOrUndefined(captionFont) ?\n this.getFontFamily(captionFont) : PdfFontFamily.Helvetica;\n args.caption.font = new PdfStandardFont(fontFamily, captionSize, style);\n }\n }\n if (args.record && args.record.font) {\n let recordFont = args.record.font[fontFamily];\n let recordSize = args.record.font[fontSize];\n let recordStyle = args.record.font[fontStyle];\n style = (isNullOrUndefined(PdfFontStyle[recordStyle]) ? 0 : PdfFontStyle[recordStyle]);\n if (args.record.font[isTrueType]) {\n args.record.font = new PdfTrueTypeFont(recordFont, recordSize, style);\n }\n else {\n let fontFamily = !isNullOrUndefined(recordFont) ?\n this.getFontFamily(recordFont) : PdfFontFamily.Helvetica;\n args.record.font = new PdfStandardFont(fontFamily, recordSize, style);\n }\n }\n }\n getHeaderThemeStyle() {\n let border = new PdfBorders();\n if (!isNullOrUndefined(this.gridTheme) && !isNullOrUndefined(this.gridTheme.header)) {\n let fontFamily = !isNullOrUndefined(this.gridTheme.header.fontName) ?\n this.getFontFamily(this.gridTheme.header.fontName) : PdfFontFamily.Helvetica;\n let fontStyle = this.getFontStyle(this.gridTheme.header);\n let fontSize = !isNullOrUndefined(this.gridTheme.header.fontSize) ? this.gridTheme.header.fontSize : 10.5;\n let pdfColor = new PdfColor();\n if (!isNullOrUndefined(this.gridTheme.header.fontColor)) {\n let penBrushColor = this.hexToRgb(this.gridTheme.header.fontColor);\n pdfColor = new PdfColor(penBrushColor.r, penBrushColor.g, penBrushColor.b);\n }\n let font = new PdfStandardFont(fontFamily, fontSize, fontStyle);\n if (!isNullOrUndefined(this.gridTheme.header.font)) {\n font = this.gridTheme.header.font;\n }\n return { border: this.getBorderStyle(this.gridTheme.header.border), font: font, brush: new PdfSolidBrush(pdfColor) };\n }\n else {\n //Material theme\n border.all = new PdfPen(new PdfColor(234, 234, 234));\n return { border: border, font: new PdfStandardFont(PdfFontFamily.Helvetica, 10.5),\n brush: new PdfSolidBrush(new PdfColor(102, 102, 102)) };\n }\n }\n /* tslint:disable-next-line:no-any */\n processGroupedRecords(pdfGrid, dataSource, gridColumns, gObj, border, level, font, brush, backgroundBrush, returnType, pdfExportProperties, helper, index) {\n let groupIndex = level;\n for (let dataSourceItems of dataSource) {\n let row = pdfGrid.rows.addRow();\n let col = gObj.getColumnByField(dataSourceItems.field);\n /* tslint:disable-next-line:no-any */\n let args = {\n value: dataSourceItems.key,\n column: col,\n style: undefined,\n isForeignKey: col.isForeignColumn(),\n };\n /* tslint:disable-next-line:max-line-length */\n let value = this.parent.getColumnByField(dataSourceItems.field).headerText + ': ' + (!col.enableGroupByFormat ? this.exportValueFormatter.formatCellValue(args) : dataSourceItems.key) + ' - ' + dataSourceItems.count + (dataSource.count > 1 ? ' items' : ' item');\n let cArgs = { captionText: value, type: 'PDF' };\n this.parent.trigger(exportGroupCaption, cArgs, (cArgs) => {\n row.cells.getCell(groupIndex).value = cArgs.captionText;\n row.cells.getCell(groupIndex + 1).style.stringFormat = new PdfStringFormat(PdfTextAlignment.Left);\n row.style.setBorder(border);\n row.style.setFont(font);\n row.style.setTextBrush(brush);\n row.style.setBackgroundBrush(backgroundBrush);\n let sRows;\n let captionSummaryModel = new CaptionSummaryModelGenerator(gObj);\n if (!isNullOrUndefined(dataSourceItems.items.records)) {\n sRows = captionSummaryModel.generateRows(dataSourceItems.items.records, dataSourceItems);\n }\n else {\n sRows = captionSummaryModel.generateRows(dataSourceItems.items, dataSourceItems);\n }\n if (!isNullOrUndefined(sRows) && sRows.length === 0) {\n row.cells.getCell(groupIndex + 1).columnSpan = pdfGrid.columns.count - (groupIndex + 1);\n }\n if (!isNullOrUndefined(dataSource.childLevels) && dataSource.childLevels > 0) {\n this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, true, row, groupIndex);\n this.processGroupedRecords(pdfGrid, dataSourceItems.items, gridColumns, gObj, border, (groupIndex + 1), font, brush, backgroundBrush, returnType, pdfExportProperties, helper, index);\n let groupSummaryModel = new GroupSummaryModelGenerator(gObj);\n sRows = groupSummaryModel.generateRows(dataSourceItems.items.records, dataSourceItems);\n this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, false);\n }\n else {\n this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, true, row, groupIndex);\n index = this.processRecord(border, gridColumns, gObj, dataSourceItems.items, pdfGrid, (groupIndex + 1), pdfExportProperties, helper, index);\n let groupSummaryModel = new GroupSummaryModelGenerator(gObj);\n sRows = groupSummaryModel.generateRows(dataSourceItems.items, dataSourceItems);\n let isGroupedFooter = true;\n this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, false, null, null, isGroupedFooter);\n }\n });\n }\n }\n processGridHeaders(childLevels, pdfGrid, rows, gridColumn, border, headerFont, headerBrush, grid, allowHorizontalOverflow, eCols) {\n let columnCount = gridColumn.length + childLevels;\n let depth = measureColumnDepth(eCols);\n let cols = eCols;\n let index = 0;\n if (this.parent.allowGrouping) {\n index = this.parent.groupSettings.columns.length;\n }\n pdfGrid.columns.add(columnCount);\n pdfGrid.headers.add(rows.length);\n let applyTextAndSpan = (rowIdx, colIdx, col, rowSpan, colSpan) => {\n let gridHeader = pdfGrid.headers.getHeader(rowIdx);\n let pdfCell = gridHeader.cells.getCell(colIdx);\n let cell = rows[rowIdx].cells[colIdx];\n if (!isNullOrUndefined(col.headerTextAlign)) {\n pdfCell.style.stringFormat = this.getHorizontalAlignment(col.headerTextAlign);\n }\n if (rowSpan > 0) {\n pdfCell.rowSpan = rowSpan;\n pdfCell.style.stringFormat = this.getVerticalAlignment('Bottom', pdfCell.style.stringFormat, col.textAlign);\n }\n if (colSpan > 0) {\n pdfCell.columnSpan = colSpan;\n }\n gridHeader.style.setBorder(border);\n gridHeader.style.setFont(headerFont);\n gridHeader.style.setTextBrush(headerBrush);\n pdfCell.value = col.headerText;\n if (!isNullOrUndefined(cell) && (cell.cellType === CellType.HeaderIndent || cell.cellType === CellType.DetailHeader)) {\n pdfCell.value = '';\n pdfCell.width = 20;\n }\n let args = {\n cell: pdfCell,\n gridCell: cell,\n style: pdfCell.style\n };\n this.parent.trigger(pdfHeaderQueryCellInfo, args);\n };\n let recuHeader = (cols, depth, spanCnt, colIndex, rowIndex, isRoot) => {\n let cidx = 0;\n for (let i = 0; i < cols.length; i++) {\n if (isRoot) {\n cidx = cidx + spanCnt + (i === 0 ? 0 : -1);\n colIndex = cidx;\n spanCnt = 0;\n }\n if (cols[i].columns && cols[i].columns.length) {\n let newSpanCnt = recuHeader(cols[i].columns, depth - 1, 0, i + colIndex, rowIndex + 1, false);\n applyTextAndSpan(rowIndex, i + colIndex, cols[i], 0, newSpanCnt);\n spanCnt = spanCnt + newSpanCnt;\n colIndex = colIndex + newSpanCnt - 1;\n }\n else if (cols[i].visible || this.hideColumnInclude) {\n spanCnt++;\n applyTextAndSpan(rowIndex, i + colIndex + index, cols[i], depth, 0);\n }\n }\n return spanCnt;\n };\n recuHeader(cols, depth, 0, 0, 0, true);\n if (pdfGrid.columns.count >= 6 && allowHorizontalOverflow) {\n pdfGrid.style.allowHorizontalOverflow = true;\n }\n return pdfGrid;\n }\n processExportProperties(pdfExportProperties, dataSource) {\n if (!isNullOrUndefined(pdfExportProperties)) {\n if (!isNullOrUndefined(pdfExportProperties.theme)) {\n this.gridTheme = pdfExportProperties.theme;\n }\n let clientSize = this.pdfPageSettings.size;\n this.drawHeader(pdfExportProperties);\n if (!isNullOrUndefined(pdfExportProperties.footer)) {\n /* tslint:disable-next-line:no-any */\n let footer = pdfExportProperties.footer;\n let position = new PointF(0, ((clientSize.width - 80) - (footer.fromBottom * 0.75)));\n let size = new SizeF((clientSize.width - 80), (footer.height * 0.75));\n let bounds = new RectangleF(position, size);\n this.pdfDocument.template.bottom = this.drawPageTemplate(new PdfPageTemplateElement(bounds), footer);\n }\n if (!isNullOrUndefined(pdfExportProperties.includeHiddenColumn) && !this.isGrouping) {\n this.hideColumnInclude = pdfExportProperties.includeHiddenColumn;\n }\n if (!isNullOrUndefined(pdfExportProperties.dataSource)) {\n if (!(pdfExportProperties.dataSource instanceof DataManager)) {\n dataSource = pdfExportProperties.dataSource;\n }\n this.customDataSource = true;\n this.currentViewData = false;\n }\n else if (!isNullOrUndefined(pdfExportProperties.exportType)) {\n if (pdfExportProperties.exportType === 'CurrentPage') {\n dataSource = this.parent.currentViewData;\n this.currentViewData = true;\n this.customDataSource = false;\n }\n else {\n this.currentViewData = false;\n this.customDataSource = false;\n }\n }\n else {\n this.currentViewData = false;\n this.customDataSource = false;\n }\n }\n else {\n this.currentViewData = false;\n this.customDataSource = false;\n }\n return dataSource;\n }\n drawHeader(pdfExportProperties) {\n let clientSize = this.pdfPageSettings.size;\n if (!isNullOrUndefined(pdfExportProperties) && !isNullOrUndefined(pdfExportProperties.header)) {\n /* tslint:disable-next-line:no-any */\n let header = pdfExportProperties.header;\n let position = new PointF(0, header.fromTop);\n let size = new SizeF((clientSize.width - 80), (header.height * 0.75));\n let bounds = new RectangleF(position, size);\n if (!this.headerOnPages.length) {\n this.pdfDocument.template.top = this.drawPageTemplate(new PdfPageTemplateElement(bounds), header);\n }\n else {\n let headerTemplate = this.drawPageTemplate(new PdfPageTemplateElement(bounds), header);\n this.headerOnPages.filter((index) => {\n if (index - 1 >= 0 && index - 1 < this.pdfDocument.pages.count - 1) {\n this.pdfDocument.pages.getPageByIndex(index - 1).graphics\n .drawPdfTemplate(headerTemplate.template, new PointF(0, 0));\n }\n });\n }\n }\n }\n drawPageTemplate(template, element) {\n for (let content of element.contents) {\n this.processContentValidation(content);\n switch (content.type) {\n case 'Text':\n /* tslint:disable-next-line:max-line-length */\n if (content.value === '' || content.value === undefined || content.value === null || typeof content.value !== 'string') {\n throw new Error('please enter the valid input value in text content...');\n }\n this.drawText(template, content);\n break;\n case 'PageNumber':\n this.drawPageNumber(template, content);\n break;\n case 'Image':\n if (content.src === undefined || content.src === null || content.src === '') {\n throw new Error('please enter the valid base64 string in image content...');\n }\n this.drawImage(template, content);\n break;\n case 'Line':\n this.drawLine(template, content);\n break;\n default:\n throw new Error('Please set valid content type...');\n }\n }\n return template;\n }\n processContentValidation(content) {\n if (content.type === undefined || content.type === null) {\n throw new Error('please set valid content type...');\n }\n else {\n if (content.type === 'Line') {\n if (content.points === undefined || content.points === null) {\n throw new Error('please enter valid points in ' + content.type + ' content...');\n }\n else {\n if (content.points.x1 === undefined || content.points.x1 === null || typeof content.points.x1 !== 'number') {\n throw new Error('please enter valid x1 co-ordinate in ' + content.type + ' points...');\n }\n if (content.points.y1 === undefined || content.points.y1 === null || typeof content.points.y1 !== 'number') {\n throw new Error('please enter valid y1 co-ordinate in ' + content.type + ' points...');\n }\n if (content.points.x2 === undefined || content.points.x2 === null || typeof content.points.x2 !== 'number') {\n throw new Error('please enter valid x2 co-ordinate in ' + content.type + ' points...');\n }\n if (content.points.y2 === undefined || content.points.y2 === null || typeof content.points.y2 !== 'number') {\n throw new Error('please enter valid y2 co-ordinate in ' + content.type + ' points...');\n }\n }\n }\n else {\n if (content.position === undefined || content.position === null) {\n throw new Error('please enter valid position in ' + content.type + ' content...');\n }\n else {\n if (content.position.x === undefined || content.position.x === null || typeof content.position.x !== 'number') {\n throw new Error('please enter valid x co-ordinate in ' + content.type + ' position...');\n }\n if (content.position.y === undefined || content.position.y === null || typeof content.position.y !== 'number') {\n throw new Error('please enter valid y co-ordinate in ' + content.type + ' position...');\n }\n }\n }\n }\n }\n /* tslint:disable-next-line:no-any */\n drawText(pageTemplate, content) {\n let font = this.getFont(content);\n let brush = this.getBrushFromContent(content);\n let pen = null;\n if (!isNullOrUndefined(content.style.textPenColor)) {\n let penColor = this.hexToRgb(content.style.textPenColor);\n pen = new PdfPen(new PdfColor(penColor.r, penColor.g, penColor.b));\n }\n if (brush == null && pen == null) {\n brush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n }\n let value = content.value.toString();\n let x = content.position.x * 0.75;\n let y = content.position.y * 0.75;\n let format = new PdfStringFormat();\n let result = this.setContentFormat(content, format);\n if (result !== null && !isNullOrUndefined(result.format) && !isNullOrUndefined(result.size)) {\n pageTemplate.graphics.drawString(value, font, pen, brush, x, y, result.size.width, result.size.height, result.format);\n }\n else {\n pageTemplate.graphics.drawString(value, font, pen, brush, x, y, format);\n }\n }\n /* tslint:disable-next-line:no-any */\n drawPageNumber(documentHeader, content) {\n let font = this.getFont(content);\n let brush = null;\n if (!isNullOrUndefined(content.style.textBrushColor)) {\n /* tslint:disable-next-line:max-line-length */\n let brushColor = this.hexToRgb(content.style.textBrushColor);\n brush = new PdfSolidBrush(new PdfColor(brushColor.r, brushColor.g, brushColor.b));\n }\n else {\n brush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n }\n let pageNumber = new PdfPageNumberField(font, brush);\n pageNumber.numberStyle = this.getPageNumberStyle(content.pageNumberType);\n let compositeField;\n let format;\n if (!isNullOrUndefined(content.format)) {\n if (content.format.indexOf('$total') !== -1 && content.format.indexOf('$current') !== -1) {\n let pageCount = new PdfPageCountField(font);\n pageCount.numberStyle = this.getPageNumberStyle(content.pageNumberType);\n if (content.format.indexOf('$total') > content.format.indexOf('$current')) {\n format = content.format.replace('$current', '0');\n format = format.replace('$total', '1');\n }\n else {\n format = content.format.replace('$current', '1');\n format = format.replace('$total', '0');\n }\n compositeField = new PdfCompositeField(font, brush, format, pageNumber, pageCount);\n }\n else if (content.format.indexOf('$current') !== -1 && content.format.indexOf('$total') === -1) {\n format = content.format.replace('$current', '0');\n compositeField = new PdfCompositeField(font, brush, format, pageNumber);\n }\n else {\n let pageCount = new PdfPageCountField(font);\n format = content.format.replace('$total', '0');\n compositeField = new PdfCompositeField(font, brush, format, pageCount);\n }\n }\n else {\n format = '{0}';\n compositeField = new PdfCompositeField(font, brush, format, pageNumber);\n }\n let x = content.position.x * 0.75;\n let y = content.position.y * 0.75;\n let result = this.setContentFormat(content, compositeField.stringFormat);\n if (result !== null && !isNullOrUndefined(result.format) && !isNullOrUndefined(result.size)) {\n compositeField.stringFormat = result.format;\n compositeField.bounds = new RectangleF(x, y, result.size.width, result.size.height);\n }\n compositeField.draw(documentHeader.graphics, x, y);\n }\n /* tslint:disable-next-line:no-any */\n drawImage(documentHeader, content) {\n let x = content.position.x * 0.75;\n let y = content.position.y * 0.75;\n let width = (!isNullOrUndefined(content.size)) ? (content.size.width * 0.75) : undefined;\n let height = (!isNullOrUndefined(content.size)) ? (content.size.height * 0.75) : undefined;\n let image = new PdfBitmap(content.src);\n if (!isNullOrUndefined(width)) {\n documentHeader.graphics.drawImage(image, x, y, width, height);\n }\n else {\n documentHeader.graphics.drawImage(image, x, y);\n }\n }\n /* tslint:disable-next-line:no-any */\n drawLine(documentHeader, content) {\n let x1 = content.points.x1 * 0.75;\n let y1 = content.points.y1 * 0.75;\n let x2 = content.points.x2 * 0.75;\n let y2 = content.points.y2 * 0.75;\n let pen = this.getPenFromContent(content);\n if (!isNullOrUndefined(content.style) && content.style !== null) {\n if (!isNullOrUndefined(content.style.penSize) && content.style.penSize !== null && typeof content.style.penSize === 'number') {\n pen.width = content.style.penSize * 0.75;\n }\n pen.dashStyle = this.getDashStyle(content.style.dashStyle);\n }\n documentHeader.graphics.drawLine(pen, x1, y1, x2, y2);\n }\n /* tslint:disable-next-line:no-any */ /* tslint:disable-next-line:max-line-length */\n processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, isCaption, captionRow, groupIndex, isGroupedFooter) {\n for (let row of sRows) {\n let leastCaptionSummaryIndex = -1;\n let index = 0;\n let isEmpty = true;\n /* tslint:disable-next-line:no-any */\n let value = [];\n for (let i = 0; i < pdfGrid.columns.count; i++) {\n let cell = row.cells[index];\n if (cell.cellType === CellType.DetailFooterIntent) {\n i--;\n index++;\n continue;\n }\n if (!this.hideColumnInclude) {\n while (cell.visible === undefined) {\n if (cell.cellType === CellType.DetailFooterIntent) {\n continue;\n }\n if (!isNullOrUndefined(captionRow)) {\n if (!isNullOrUndefined(captionRow.cells.getCell(i).value)) {\n /* tslint:disable-next-line:max-line-length */\n let args = { row: row, type: AggregateTemplateType.GroupCaption, style: captionRow.cells };\n this.parent.trigger(pdfAggregateQueryCellInfo, args);\n value.push('');\n value.push(captionRow.cells.getCell(i).value);\n isEmpty = false;\n if (!isCaption) {\n i += 1;\n }\n }\n else {\n value.push('');\n }\n }\n else {\n value.push('');\n }\n i += 1;\n index = index + 1;\n cell = row.cells[index];\n }\n while (!isNullOrUndefined(cell.visible) && !cell.visible) {\n index = index + 1;\n cell = row.cells[index];\n }\n }\n if (cell.isDataCell) {\n let templateFn = {};\n /* tslint:disable-next-line:max-line-length */\n if (!isNullOrUndefined(cell.column.footerTemplate) || !isNullOrUndefined(cell.column.groupCaptionTemplate) || !isNullOrUndefined(cell.column.groupFooterTemplate)) {\n /* tslint:disable-next-line:no-any */\n let result = this.getTemplateFunction(templateFn, i, leastCaptionSummaryIndex, cell);\n templateFn = result.templateFunction;\n leastCaptionSummaryIndex = result.leastCaptionSummaryIndex;\n /* tslint:disable-next-line:max-line-length */\n let txt = (templateFn[getEnumValue(CellType, cell.cellType)](row.data[cell.column.field ? cell.column.field : cell.column.columnName]));\n value.push(txt[0].textContent);\n isEmpty = false;\n }\n else {\n /* tslint:disable-next-line:no-any */\n let result = this.getSummaryWithoutTemplate(row.data[cell.column.field]);\n if (!isNullOrUndefined(result)) {\n value.push(result);\n }\n }\n }\n else {\n value.push('');\n }\n if (isEmpty && value[i] !== '' && !isNullOrUndefined(value[i]) && value[i] !== null) {\n isEmpty = false;\n }\n index += 1;\n }\n if (isCaption) {\n for (let i = (this.parent.groupSettings.columns.length) + 1; i < value.length - 1; i++) {\n value[i] = value[i + 1];\n }\n }\n if (!isEmpty) {\n if (!isCaption) {\n let gridRow = pdfGrid.rows.addRow();\n gridRow.style.setBorder(border);\n gridRow.style.setFont(font);\n gridRow.style.setTextBrush(brush);\n gridRow.style.setBackgroundBrush(backgroundBrush);\n /* tslint:disable-next-line:max-line-length */\n let args = { row: row, type: isGroupedFooter ? AggregateTemplateType.GroupFooter : AggregateTemplateType.Footer, style: gridRow.cells };\n this.parent.trigger(pdfAggregateQueryCellInfo, args);\n for (let i = 0; i < pdfGrid.columns.count; i++) {\n gridRow.cells.getCell(i).value = value[i].toString();\n }\n }\n else {\n for (let i = 0; i < pdfGrid.columns.count; i++) {\n captionRow.cells.getCell(i).value = value[i].toString();\n if (i === (groupIndex + 1) && leastCaptionSummaryIndex !== -1 && leastCaptionSummaryIndex !== 1) {\n captionRow.cells.getCell(i).columnSpan = leastCaptionSummaryIndex - (groupIndex + 1);\n }\n else if (i === (groupIndex + 1) && leastCaptionSummaryIndex === -1) {\n captionRow.cells.getCell(i).columnSpan = pdfGrid.columns.count - (groupIndex + 1);\n }\n }\n }\n }\n }\n }\n /* tslint:disable-next-line:no-any */\n getTemplateFunction(templateFn, index, leastCaptionSummaryIndex, cell) {\n if (!isNullOrUndefined(cell.column.footerTemplate) && cell.cellType === CellType.Summary) {\n templateFn[getEnumValue(CellType, CellType.Summary)] = compile(cell.column.footerTemplate);\n }\n else if (!isNullOrUndefined(cell.column.groupCaptionTemplate)) {\n if (leastCaptionSummaryIndex === -1) {\n leastCaptionSummaryIndex = index;\n }\n templateFn[getEnumValue(CellType, CellType.CaptionSummary)] = compile(cell.column.groupCaptionTemplate);\n }\n else {\n templateFn[getEnumValue(CellType, CellType.GroupSummary)] = compile(cell.column.groupFooterTemplate);\n }\n return { templateFunction: templateFn, leastCaptionSummaryIndex: leastCaptionSummaryIndex };\n }\n /* tslint:disable-next-line:no-any */\n getSummaryWithoutTemplate(data) {\n if (!isNullOrUndefined(data.Sum)) {\n return data.Sum;\n }\n else if (!isNullOrUndefined(data.Average)) {\n return data.Average;\n }\n else if (!isNullOrUndefined(data.Max)) {\n return data.Max;\n }\n else if (!isNullOrUndefined(data.Min)) {\n return data.Min;\n }\n else if (!isNullOrUndefined(data.Count)) {\n return data.Count;\n }\n else if (!isNullOrUndefined(data.TrueCount)) {\n return data.TrueCount;\n }\n else if (!isNullOrUndefined(data.FalseCount)) {\n return data.FalseCount;\n }\n else if (!isNullOrUndefined(data.Custom)) {\n return data.Custom;\n }\n }\n /**\n * Set alignment, width and type of the values of the column\n */\n setColumnProperties(gridColumns, pdfGrid, helper, gObj, allowHorizontalOverflow) {\n let startIndex = gObj.groupSettings.columns.length;\n for (let i = 0; i < startIndex; i++) {\n pdfGrid.columns.getColumn(i).width = 20;\n }\n for (let i = 0; i < gridColumns.length; i++) {\n if (!isNullOrUndefined(gridColumns[i].textAlign)) {\n pdfGrid.columns.getColumn(i + startIndex).format = this.getHorizontalAlignment(gridColumns[i].textAlign);\n }\n // Need to add width consideration with % value\n if (pdfGrid.style.allowHorizontalOverflow && !isNullOrUndefined(gridColumns[i].width) && allowHorizontalOverflow) {\n pdfGrid.columns.getColumn(i + startIndex).width = typeof gridColumns[i].width === 'number' ?\n gridColumns[i].width * 0.75 : helper.getConvertedWidth(gridColumns[i].width) * 0.75;\n }\n }\n }\n /**\n * set default style properties of each rows in exporting grid\n * @private\n */\n setRecordThemeStyle(row, border) {\n if (!isNullOrUndefined(this.gridTheme) && !isNullOrUndefined(this.gridTheme.record)) {\n let fontFamily = !isNullOrUndefined(this.gridTheme.record.fontName) ?\n this.getFontFamily(this.gridTheme.record.fontName) : PdfFontFamily.Helvetica;\n let fontSize = !isNullOrUndefined(this.gridTheme.record.fontSize) ? this.gridTheme.record.fontSize : 9.75;\n let fontStyle = this.getFontStyle(this.gridTheme.record);\n let font = new PdfStandardFont(fontFamily, fontSize, fontStyle);\n if (!isNullOrUndefined(this.gridTheme.record.font)) {\n font = this.gridTheme.record.font;\n }\n row.style.setFont(font);\n let pdfColor = new PdfColor();\n if (!isNullOrUndefined(this.gridTheme.record.fontColor)) {\n let penBrushColor = this.hexToRgb(this.gridTheme.record.fontColor);\n pdfColor = new PdfColor(penBrushColor.r, penBrushColor.g, penBrushColor.b);\n }\n row.style.setTextBrush(new PdfSolidBrush(pdfColor));\n }\n else {\n row.style.setTextBrush(new PdfSolidBrush(new PdfColor(0, 0, 0)));\n }\n let borderRecord = this.gridTheme && this.gridTheme.record &&\n this.gridTheme.record.border ? this.getBorderStyle(this.gridTheme.record.border) : border;\n row.style.setBorder(borderRecord);\n return row;\n }\n /**\n * generate the formatted cell values\n * @private\n */\n processRecord(border, columns, gObj, dataSource, pdfGrid, startIndex, pdfExportProperties, helper, rowIndex) {\n let rows = helper.getGridRowModel(columns, dataSource, gObj, rowIndex);\n for (const row of rows) {\n rowIndex++;\n // create a new row and set default style properties\n let gridRow = this.setRecordThemeStyle(pdfGrid.rows.addRow(), border);\n let cellLength = row.cells.length;\n for (let j = 0; j < cellLength; j++) {\n let gridCell = row.cells[j];\n if (gridCell.cellType !== CellType.Data) {\n continue;\n }\n let column = gridCell.column;\n let field = column.field;\n let cellValue = !isNullOrUndefined(field) ? column.valueAccessor(field, row.data, column) : '';\n let value = !isNullOrUndefined(cellValue) ? cellValue : '';\n let foreignKeyData$$1;\n if (column.isForeignColumn && column.isForeignColumn()) {\n foreignKeyData$$1 = helper.getFData(value, column);\n value = getValue(column.foreignKeyValue, foreignKeyData$$1);\n }\n let data = row.data;\n let cell = gridRow.cells.getCell(j);\n let args = {\n data: data,\n value: value,\n column: column,\n style: undefined,\n colSpan: 1,\n cell: cell\n };\n args.value = this.exportValueFormatter.formatCellValue(args, gObj.isServerRendered);\n this.parent.trigger(pdfQueryCellInfo, args);\n cell.value = args.value;\n if (!isNullOrUndefined(args.style)) {\n this.processCellStyle(cell, args);\n }\n if (args.colSpan > 1) {\n if ((j + 1 + args.colSpan) > gridRow.cells.count) {\n args.colSpan = gridRow.cells.count - (j + 1);\n }\n cell.columnSpan = args.colSpan;\n for (let i = 1; i < cell.columnSpan; i++) {\n let spanCell = gridRow.cells.getCell(j + i);\n spanCell.value = '';\n }\n j += (args.colSpan - 1);\n }\n }\n if (row.isExpand) {\n let gridRow = this.setRecordThemeStyle(pdfGrid.rows.addRow(), border);\n let cell = gridRow.cells.getCell(startIndex);\n cell.columnSpan = gridRow.cells.count - (startIndex);\n cell.style.cellPadding = new PdfPaddings(10, 10, 10, 10);\n gObj.isPrinting = true;\n let exportType = (!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.exportType) ?\n pdfExportProperties.exportType : 'AllPages';\n let returnValue = this.helper.createChildGrid(gObj, row, exportType, this.gridPool);\n let childGridObj = returnValue.childGrid;\n let element = returnValue.element;\n childGridObj.actionFailure =\n helper.failureHandler(this.gridPool, childGridObj, this.globalResolve);\n let args = { childGrid: childGridObj, row, cell, exportProperties: pdfExportProperties };\n this.parent.trigger(exportDetailDataBound, args);\n childGridObj.beforeDataBound = this.childGridCell(cell, childGridObj, pdfExportProperties);\n childGridObj.appendTo(element);\n }\n this.parent.notify(exportRowDataBound, { type: 'pdf', rowObj: row });\n }\n return rowIndex;\n }\n childGridCell(cell, childGridObj, pdfExportProperties) {\n return (result) => {\n childGridObj.beforeDataBound = null;\n result.cancel = true;\n cell.value = this.processGridExport(childGridObj, result, pdfExportProperties);\n childGridObj.destroy();\n detach(childGridObj.element);\n this.gridPool[childGridObj.id] = true;\n this.helper.checkAndExport(this.gridPool, this.globalResolve);\n return cell;\n };\n }\n processCellStyle(cell, args) {\n if (!isNullOrUndefined(args.style.backgroundColor)) {\n let backColor = this.hexToRgb(args.style.backgroundColor);\n cell.style.backgroundBrush = new PdfSolidBrush(new PdfColor(backColor.r, backColor.g, backColor.b));\n }\n if (!isNullOrUndefined(args.style.textAlignment)) {\n cell.style.stringFormat = this.getHorizontalAlignment(args.style.textAlignment);\n }\n if (!isNullOrUndefined(args.style.cellPadding)) {\n cell.style.cellPadding = args.style.cellPadding;\n }\n if (!isNullOrUndefined(args.style.verticalAlignment)) {\n cell.style.stringFormat = this.getVerticalAlignment(args.style.verticalAlignment, cell.style.stringFormat);\n }\n if (!isNullOrUndefined(args.style.textBrushColor)) {\n let textBrushColor = this.hexToRgb(args.style.textBrushColor);\n cell.style.textBrush = new PdfSolidBrush(new PdfColor(textBrushColor.r, textBrushColor.g, textBrushColor.b));\n }\n if (!isNullOrUndefined(args.style.textPenColor)) {\n let textPenColor = this.hexToRgb(args.style.textPenColor);\n cell.style.textPen = new PdfPen(new PdfColor(textPenColor.r, textPenColor.g, textPenColor.b));\n }\n if (!isNullOrUndefined(args.style.fontFamily) || !isNullOrUndefined(args.style.fontSize) || !isNullOrUndefined(args.style.bold) ||\n !isNullOrUndefined(args.style.italic) || !isNullOrUndefined(args.style.underline) || !isNullOrUndefined(args.style.strikeout)) {\n cell.style.font = this.getFont(args);\n }\n if (!isNullOrUndefined(args.style.border)) {\n let border = new PdfBorders();\n let borderWidth = args.style.border.width;\n // set border width\n let width = (!isNullOrUndefined(borderWidth) && typeof borderWidth === 'number') ? (borderWidth * 0.75) : (undefined);\n // set border color\n let color = new PdfColor(196, 196, 196);\n if (!isNullOrUndefined(args.style.border.color)) {\n let borderColor = this.hexToRgb(args.style.border.color);\n color = new PdfColor(borderColor.r, borderColor.g, borderColor.b);\n }\n let pen = new PdfPen(color, width);\n // set border dashStyle 'Solid , Dash, Dot, DashDot, DashDotDot'\n if (!isNullOrUndefined(args.style.border.dashStyle)) {\n pen.dashStyle = this.getDashStyle(args.style.border.dashStyle);\n }\n border.all = pen;\n cell.style.borders = border;\n }\n if (!isNullOrUndefined(args.style.paragraphIndent)) {\n cell.style.stringFormat = new PdfStringFormat();\n cell.style.stringFormat.paragraphIndent = args.style.paragraphIndent;\n }\n }\n /**\n * set text alignment of each columns in exporting grid\n * @private\n */\n getHorizontalAlignment(textAlign, format) {\n if (format === undefined) {\n format = new PdfStringFormat();\n }\n switch (textAlign) {\n case 'Right':\n format.alignment = PdfTextAlignment.Right;\n break;\n case 'Center':\n format.alignment = PdfTextAlignment.Center;\n break;\n case 'Justify':\n format.alignment = PdfTextAlignment.Justify;\n break;\n case 'Left':\n format.alignment = PdfTextAlignment.Left;\n break;\n }\n return format;\n }\n /**\n * set vertical alignment of each columns in exporting grid\n * @private\n */\n getVerticalAlignment(verticalAlign, format, textAlign) {\n if (format === undefined) {\n format = new PdfStringFormat();\n format = this.getHorizontalAlignment(textAlign, format);\n }\n switch (verticalAlign) {\n case 'Bottom':\n format.lineAlignment = PdfVerticalAlignment.Bottom;\n break;\n case 'Middle':\n format.lineAlignment = PdfVerticalAlignment.Middle;\n break;\n case 'Top':\n format.lineAlignment = PdfVerticalAlignment.Top;\n break;\n }\n return format;\n }\n getFontFamily(fontFamily) {\n switch (fontFamily) {\n case 'TimesRoman':\n return 2;\n case 'Courier':\n return 1;\n case 'Symbol':\n return 3;\n case 'ZapfDingbats':\n return 4;\n default:\n return 0;\n }\n }\n /* tslint:disable-next-line:no-any */\n getFont(content) {\n if (content.font) {\n return content.font;\n }\n let fontSize = (!isNullOrUndefined(content.style.fontSize)) ? (content.style.fontSize * 0.75) : 9.75;\n let fontFamily = (!isNullOrUndefined(content.style.fontFamily)) ?\n (this.getFontFamily(content.style.fontFamily)) : PdfFontFamily.TimesRoman;\n let fontStyle = PdfFontStyle.Regular;\n if (!isNullOrUndefined(content.style.bold) && content.style.bold) {\n fontStyle |= PdfFontStyle.Bold;\n }\n if (!isNullOrUndefined(content.style.italic) && content.style.italic) {\n fontStyle |= PdfFontStyle.Italic;\n }\n if (!isNullOrUndefined(content.style.underline) && content.style.underline) {\n fontStyle |= PdfFontStyle.Underline;\n }\n if (!isNullOrUndefined(content.style.strikeout) && content.style.strikeout) {\n fontStyle |= PdfFontStyle.Strikeout;\n }\n return new PdfStandardFont(fontFamily, fontSize, fontStyle);\n }\n getPageNumberStyle(pageNumberType) {\n switch (pageNumberType) {\n case 'LowerLatin':\n return 2;\n case 'LowerRoman':\n return 3;\n case 'UpperLatin':\n return 4;\n case 'UpperRoman':\n return 5;\n default:\n return 1;\n }\n }\n setContentFormat(content, format) {\n if (!isNullOrUndefined(content.size)) {\n let width = content.size.width * 0.75;\n let height = content.size.height * 0.75;\n format = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle);\n if (!isNullOrUndefined(content.style.hAlign)) {\n switch (content.style.hAlign) {\n case 'Right':\n format.alignment = PdfTextAlignment.Right;\n break;\n case 'Center':\n format.alignment = PdfTextAlignment.Center;\n break;\n case 'Justify':\n format.alignment = PdfTextAlignment.Justify;\n break;\n default:\n format.alignment = PdfTextAlignment.Left;\n }\n }\n if (!isNullOrUndefined(content.style.vAlign)) {\n format = this.getVerticalAlignment(content.style.vAlign, format);\n }\n return { format: format, size: new SizeF(width, height) };\n }\n return null;\n }\n getPageSize(pageSize) {\n switch (pageSize) {\n case 'Letter':\n return new SizeF(612, 792);\n case 'Note':\n return new SizeF(540, 720);\n case 'Legal':\n return new SizeF(612, 1008);\n case 'A0':\n return new SizeF(2380, 3368);\n case 'A1':\n return new SizeF(1684, 2380);\n case 'A2':\n return new SizeF(1190, 1684);\n case 'A3':\n return new SizeF(842, 1190);\n case 'A5':\n return new SizeF(421, 595);\n case 'A6':\n return new SizeF(297, 421);\n case 'A7':\n return new SizeF(210, 297);\n case 'A8':\n return new SizeF(148, 210);\n case 'A9':\n return new SizeF(105, 148);\n // case 'A10':\n // return new SizeF(74, 105);\n case 'B0':\n return new SizeF(2836, 4008);\n case 'B1':\n return new SizeF(2004, 2836);\n case 'B2':\n return new SizeF(1418, 2004);\n case 'B3':\n return new SizeF(1002, 1418);\n case 'B4':\n return new SizeF(709, 1002);\n case 'B5':\n return new SizeF(501, 709);\n case 'Archa':\n return new SizeF(648, 864);\n case 'Archb':\n return new SizeF(864, 1296);\n case 'Archc':\n return new SizeF(1296, 1728);\n case 'Archd':\n return new SizeF(1728, 2592);\n case 'Arche':\n return new SizeF(2592, 3456);\n case 'Flsa':\n return new SizeF(612, 936);\n case 'HalfLetter':\n return new SizeF(396, 612);\n case 'Letter11x17':\n return new SizeF(792, 1224);\n case 'Ledger':\n return new SizeF(1224, 792);\n default:\n return new SizeF(595, 842);\n }\n }\n getDashStyle(dashStyle) {\n switch (dashStyle) {\n case 'Dash':\n return 1;\n case 'Dot':\n return 2;\n case 'DashDot':\n return 3;\n case 'DashDotDot':\n return 4;\n default:\n return 0;\n }\n }\n getPenFromContent(content) {\n let pen = new PdfPen(new PdfColor(0, 0, 0));\n if (!isNullOrUndefined(content.style) && content.style !== null && !isNullOrUndefined(content.style.penColor)) {\n let penColor = this.hexToRgb(content.style.penColor);\n pen = new PdfPen(new PdfColor(penColor.r, penColor.g, penColor.b));\n }\n return pen;\n }\n getBrushFromContent(content) {\n let brush = null;\n if (!isNullOrUndefined(content.style.textBrushColor)) {\n /* tslint:disable-next-line:max-line-length */\n let brushColor = this.hexToRgb(content.style.textBrushColor);\n brush = new PdfSolidBrush(new PdfColor(brushColor.r, brushColor.g, brushColor.b));\n }\n return brush;\n }\n hexToRgb(hex) {\n if (hex === null || hex === '' || hex.length !== 7) {\n throw new Error('please set valid hex value for color...');\n }\n hex = hex.substring(1);\n let bigint = parseInt(hex, 16);\n let r = (bigint >> 16) & 255;\n let g = (bigint >> 8) & 255;\n let b = bigint & 255;\n return { r: r, g: g, b: b };\n }\n getFontStyle(theme) {\n let fontStyle = PdfFontStyle.Regular;\n if (!isNullOrUndefined(theme) && theme.bold) {\n fontStyle |= PdfFontStyle.Bold;\n }\n if (!isNullOrUndefined(theme) && theme.italic) {\n fontStyle |= PdfFontStyle.Italic;\n }\n if (!isNullOrUndefined(theme) && theme.underline) {\n fontStyle |= PdfFontStyle.Underline;\n }\n if (!isNullOrUndefined(theme) && theme.strikeout) {\n fontStyle |= PdfFontStyle.Strikeout;\n }\n return fontStyle;\n }\n getBorderStyle(border) {\n let borders = new PdfBorders();\n if (!isNullOrUndefined(border)) {\n let borderWidth = border.width;\n // set border width\n let width = (!isNullOrUndefined(borderWidth) && typeof borderWidth === 'number') ? borderWidth * 0.75 : undefined;\n // set border color\n let color = new PdfColor(196, 196, 196);\n if (!isNullOrUndefined(border.color)) {\n let borderColor = this.hexToRgb(border.color);\n color = new PdfColor(borderColor.r, borderColor.g, borderColor.b);\n }\n let pen = new PdfPen(color, width);\n // set border dashStyle 'Solid , Dash, Dot, DashDot, DashDotDot'\n if (!isNullOrUndefined(border.dashStyle)) {\n pen.dashStyle = this.getDashStyle(border.dashStyle);\n }\n borders.all = pen;\n }\n else {\n borders.all = new PdfPen(new PdfColor(234, 234, 234));\n }\n return borders;\n }\n /**\n * To destroy the pdf export\n * @return {void}\n * @hidden\n */\n destroy() {\n //destroy for exporting\n }\n}\n\n/**\n * `CommandColumn` used to render command column in grid\n * @hidden\n */\nclass CommandColumnRenderer extends CellRenderer {\n constructor(parent, locator) {\n super(parent, locator);\n this.buttonElement = this.parent.createElement('button', {});\n this.unbounDiv = this.parent.createElement('div', { className: 'e-unboundcelldiv', styles: 'display: inline-block' });\n this.element = this.parent.createElement('TD', {\n className: 'e-rowcell e-unboundcell', attrs: {\n role: 'gridcell', tabindex: '-1'\n }\n });\n }\n /**\n * Function to render the cell content based on Column object.\n * @param {Column} column\n * @param {Object} data\n * @param {{[x:string]:Object}} attributes?\n * @param {Element}\n */\n render(cell, data, attributes$$1) {\n let node = this.element.cloneNode();\n let uid = 'uid';\n node.appendChild(this.unbounDiv.cloneNode());\n node.setAttribute('aria-label', 'is Command column column header ' + cell.column.headerText);\n if (cell.column.commandsTemplate) {\n appendChildren(node.firstElementChild, cell.column.getColumnTemplate()(data));\n }\n else {\n for (let command of cell.commands) {\n node = this.renderButton(node, command, attributes$$1.index, command[uid]);\n }\n }\n this.setAttributes(node, cell, attributes$$1);\n if (this.parent.isEdit) {\n addClass(node.querySelectorAll('.e-edit-delete'), 'e-hide');\n removeClass(node.querySelectorAll('.e-save-cancel'), 'e-hide');\n }\n else {\n addClass(node.querySelectorAll('.e-save-cancel'), 'e-hide');\n removeClass(node.querySelectorAll('.e-edit-delete'), 'e-hide');\n }\n return node;\n }\n renderButton(node, buttonOption, index, uid) {\n let button = this.buttonElement.cloneNode();\n attributes(button, {\n 'id': this.parent.element.id + (buttonOption.type || '') + '_' + index + '_' + uid, 'type': 'button',\n title: !isNullOrUndefined(buttonOption.title) ? buttonOption.title :\n buttonOption.buttonOption.content || this.localizer.getConstant(buttonOption.type) || buttonOption.type,\n 'data-uid': uid\n });\n button.onclick = buttonOption.buttonOption.click;\n let buttonObj = new Button(buttonOption.buttonOption, button);\n buttonObj.commandType = buttonOption.type;\n node.firstElementChild.appendChild(buttonObj.element);\n switch (buttonOption.type) {\n case 'Edit':\n case 'Delete':\n addClass([button], ['e-edit-delete', 'e-' + buttonOption.type.toLowerCase() + 'button']);\n break;\n case 'Cancel':\n case 'Save':\n addClass([button], ['e-save-cancel', 'e-' + buttonOption.type.toLowerCase() + 'button']);\n break;\n }\n return node;\n }\n}\n\n/**\n * `CommandColumn` used to handle the command column actions.\n * @hidden\n */\nclass CommandColumn {\n constructor(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.initiateRender();\n this.addEventListener();\n }\n initiateRender() {\n let cellFac = this.locator.getService('cellRendererFactory');\n cellFac.addCellRenderer(CellType.CommandColumn, new CommandColumnRenderer(this.parent, this.locator));\n }\n commandClickHandler(e) {\n let gObj = this.parent;\n let gID = gObj.element.id;\n let target = closest(e.target, 'button');\n if (!target || !closest(e.target, '.e-unboundcell')) {\n return;\n }\n let buttonObj = target.ej2_instances[0];\n let type = buttonObj.commandType;\n let uid = target.getAttribute('data-uid');\n let commandColumn;\n let row = gObj.getRowObjectFromUID(closest(target, '.e-row').getAttribute('data-uid'));\n let cols = this.parent.columnModel;\n for (let i = 0; i < cols.length; i++) {\n if (cols[i].commands) {\n let commandCols = cols[i].commands;\n for (let j = 0; j < commandCols.length; j++) {\n let idInString = 'uid';\n let typeInString = 'type';\n if (isBlazor() && !gObj.isJsComponent && commandCols[j][idInString] === uid) {\n commandColumn = commandCols[j];\n type = commandCols[j][typeInString];\n }\n else if (commandCols[j][idInString] === uid && commandCols[j][typeInString] === type) {\n commandColumn = commandCols[j];\n }\n }\n }\n }\n let args = {\n cancel: false,\n target: target,\n commandColumn: commandColumn,\n rowData: isNullOrUndefined(row) ? undefined : row.data\n };\n this.parent.trigger(commandClick, args, (commandclickargs) => {\n if (buttonObj.disabled || !gObj.editModule || commandclickargs.cancel) {\n return;\n }\n switch (type) {\n case 'Edit':\n gObj.editModule.endEdit();\n gObj.editModule.startEdit(closest(target, 'tr'));\n break;\n case 'Cancel':\n gObj.editModule.closeEdit();\n break;\n case 'Save':\n gObj.editModule.endEdit();\n break;\n case 'Delete':\n if (gObj.editSettings.mode !== 'Batch') {\n gObj.editModule.endEdit();\n }\n gObj.commandDelIndex = parseInt(closest(target, 'tr').getAttribute('aria-rowindex'), 10);\n gObj.clearSelection();\n //for toogle issue when dbl click\n gObj.selectRow(gObj.commandDelIndex, false);\n gObj.editModule.deleteRecord();\n gObj.commandDelIndex = undefined;\n break;\n }\n });\n }\n /**\n * For internal use only - Get the module name.\n */\n getModuleName() {\n return 'commandColumn';\n }\n /**\n * To destroy CommandColumn.\n * @method destroy\n * @return {void}\n */\n destroy() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n }\n removeEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(click, this.commandClickHandler);\n this.parent.off(keyPressed, this.keyPressHandler);\n this.parent.off(initialEnd, this.load);\n }\n addEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(click, this.commandClickHandler, this);\n this.parent.on(keyPressed, this.keyPressHandler, this);\n this.parent.on(initialEnd, this.load, this);\n }\n keyPressHandler(e) {\n if (e.action === 'enter' && closest(e.target, '.e-unboundcelldiv')) {\n this.commandClickHandler(e);\n e.preventDefault();\n }\n }\n load() {\n if (isBlazor() && !this.parent.isJsComponent) {\n return;\n }\n let uid = 'uid';\n let col = this.parent.columnModel;\n for (let i = 0; i < col.length; i++) {\n if (col[i].commands) {\n let commandCol = col[i].commands;\n for (let j = 0; j < commandCol.length; j++) {\n commandCol[j][uid] = getUid('gridcommand');\n }\n }\n }\n }\n}\n\nconst menuClass = {\n header: '.e-gridheader',\n content: '.e-gridcontent',\n edit: '.e-inline-edit',\n batchEdit: '.e-editedbatchcell',\n editIcon: 'e-edit',\n pager: '.e-gridpager',\n delete: 'e-delete',\n save: 'e-save',\n cancel: 'e-cancel',\n copy: 'e-copy',\n pdf: 'e-pdfexport',\n group: 'e-icon-group',\n ungroup: 'e-icon-ungroup',\n csv: 'e-csvexport',\n excel: 'e-excelexport',\n fPage: 'e-icon-first',\n nPage: 'e-icon-next',\n lPage: 'e-icon-last',\n pPage: 'e-icon-prev',\n ascending: 'e-icon-ascending',\n descending: 'e-icon-descending',\n groupHeader: 'e-groupdroparea',\n touchPop: 'e-gridpopup'\n};\n/**\n * The `ContextMenu` module is used to handle context menu actions.\n */\nclass ContextMenu$1 {\n constructor(parent, serviceLocator) {\n this.defaultItems = {};\n this.disableItems = [];\n this.hiddenItems = [];\n this.localeText = this.setLocaleKey();\n this.parent = parent;\n this.gridID = parent.element.id;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n /**\n * @hidden\n */\n addEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(uiUpdate, this.enableAfterRenderMenu, this);\n this.parent.on(initialLoad, this.render, this);\n }\n /**\n * @hidden\n */\n removeEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(initialLoad, this.render);\n this.parent.off(uiUpdate, this.enableAfterRenderMenu);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler.bind(this));\n }\n keyDownHandler(e) {\n if (e.code === 'Tab' || e.which === 9) {\n this.contextMenu.close();\n }\n if (e.code === 'Escape') {\n this.contextMenu.close();\n this.parent.notify(restoreFocus, {});\n }\n }\n render() {\n this.parent.element.classList.add('e-noselect');\n this.l10n = this.serviceLocator.getService('localization');\n this.element = this.parent.createElement('ul', { id: this.gridID + '_cmenu' });\n EventHandler.add(this.element, 'keydown', this.keyDownHandler.bind(this));\n this.parent.element.appendChild(this.element);\n let target = '#' + this.gridID;\n this.contextMenu = new ContextMenu({\n items: this.getMenuItems(),\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n locale: this.parent.locale,\n target: target,\n select: this.contextMenuItemClick.bind(this),\n beforeOpen: this.contextMenuBeforeOpen.bind(this),\n onOpen: this.contextMenuOpen.bind(this),\n onClose: this.contextMenuOnClose.bind(this),\n cssClass: 'e-grid-menu'\n });\n this.contextMenu.appendTo(this.element);\n }\n enableAfterRenderMenu(e) {\n if (e.module === this.getModuleName() && e.enable) {\n if (this.contextMenu) {\n this.contextMenu.destroy();\n remove(this.element);\n this.parent.element.classList.remove('e-noselect');\n }\n this.render();\n }\n }\n getMenuItems() {\n let menuItems = [];\n let exportItems = [];\n for (let item of this.parent.contextMenuItems) {\n if (typeof item === 'string' && this.getDefaultItems().indexOf(item) !== -1) {\n if (item.toLocaleLowerCase().indexOf('export') !== -1) {\n exportItems.push(this.buildDefaultItems(item));\n }\n else {\n menuItems.push(this.buildDefaultItems(item));\n }\n }\n else if (typeof item !== 'string') {\n menuItems.push(item);\n }\n }\n if (exportItems.length > 0) {\n let exportGroup = this.buildDefaultItems('export');\n exportGroup.items = exportItems;\n menuItems.push(exportGroup);\n }\n return menuItems;\n }\n getLastPage() {\n let totalpage = Math.floor(this.parent.pageSettings.totalRecordsCount / this.parent.pageSettings.pageSize);\n if (this.parent.pageSettings.totalRecordsCount % this.parent.pageSettings.pageSize) {\n totalpage += 1;\n }\n return totalpage;\n }\n contextMenuOpen() {\n this.isOpen = true;\n }\n /**\n * @hidden\n */\n contextMenuItemClick(args) {\n let item = this.getKeyFromId(args.item.id);\n switch (item) {\n case 'AutoFitAll':\n this.parent.autoFitColumns([]);\n break;\n case 'AutoFit':\n this.parent.autoFitColumns(this.targetColumn.field);\n break;\n case 'Group':\n this.parent.groupColumn(this.targetColumn.field);\n break;\n case 'Ungroup':\n this.parent.ungroupColumn(this.targetColumn.field);\n break;\n case 'Edit':\n if (this.parent.editModule) {\n if (this.parent.editSettings.mode === 'Batch') {\n if (this.row && this.cell && !isNaN(parseInt(this.cell.getAttribute('aria-colindex'), 10))) {\n this.parent.editModule.editCell(parseInt(this.row.getAttribute('aria-rowindex'), 10), this.parent.getColumns()[parseInt(this.cell.getAttribute('aria-colindex'), 10)].field);\n }\n }\n else {\n this.parent.editModule.endEdit();\n this.parent.editModule.startEdit(this.row);\n }\n }\n break;\n case 'Delete':\n if (this.parent.editModule) {\n if (this.parent.editSettings.mode !== 'Batch') {\n this.parent.editModule.endEdit();\n }\n if (this.parent.getSelectedRecords().length === 1) {\n this.parent.editModule.deleteRow(this.row);\n }\n else {\n this.parent.deleteRecord();\n }\n }\n break;\n case 'Save':\n if (this.parent.editModule) {\n this.parent.editModule.endEdit();\n }\n break;\n case 'Cancel':\n if (this.parent.editModule) {\n this.parent.editModule.closeEdit();\n }\n break;\n case 'Copy':\n this.parent.copy();\n break;\n case 'PdfExport':\n this.parent.pdfExport();\n break;\n case 'ExcelExport':\n this.parent.excelExport();\n break;\n case 'CsvExport':\n this.parent.csvExport();\n break;\n case 'SortAscending':\n this.isOpen = false;\n this.parent.sortColumn(this.targetColumn.field, 'Ascending');\n break;\n case 'SortDescending':\n this.isOpen = false;\n this.parent.sortColumn(this.targetColumn.field, 'Descending');\n break;\n case 'FirstPage':\n this.parent.goToPage(1);\n break;\n case 'PrevPage':\n this.parent.goToPage(this.parent.pageSettings.currentPage - 1);\n break;\n case 'LastPage':\n this.parent.goToPage(this.getLastPage());\n break;\n case 'NextPage':\n this.parent.goToPage(this.parent.pageSettings.currentPage + 1);\n break;\n }\n args.column = this.targetColumn;\n args.rowInfo = this.targetRowdata;\n if (isBlazor()) {\n let contextMenuClickArgs = args.rowInfo.row ?\n {\n element: args.element, item: args.item, event: args.event, column: this.targetColumn, rowInfo: {\n rowData: this.targetRowdata.rowData, rowIndex: this.targetRowdata.rowIndex, cellIndex: this.targetRowdata.cellIndex\n }\n }\n : this.targetColumn ? { element: args.element, item: args.item, event: args.event, column: this.targetColumn }\n : { element: args.element, item: args.item, event: args.event };\n this.parent.trigger(contextMenuClick, contextMenuClickArgs);\n }\n else {\n this.parent.trigger(contextMenuClick, args);\n }\n }\n contextMenuOnClose(args) {\n let parent = 'parentObj';\n if (args.items.length > 0 && args.items[0][parent] instanceof ContextMenu) {\n this.updateItemStatus();\n }\n }\n getLocaleText(item) {\n return this.l10n.getConstant(this.localeText[item]);\n }\n updateItemStatus() {\n this.contextMenu.showItems(this.hiddenItems);\n this.contextMenu.enableItems(this.disableItems);\n this.hiddenItems = [];\n this.disableItems = [];\n this.isOpen = false;\n }\n contextMenuBeforeOpen(args) {\n let changedRecords = 'changedRecords';\n let addedRecords = 'addedRecords';\n let deletedRecords = 'deletedRecords';\n let closestGrid = closest(args.event.target, '.e-grid');\n if (args.event && closestGrid && closestGrid !== this.parent.element) {\n args.cancel = true;\n }\n else if (args.event && (closest(args.event.target, '.' + menuClass.groupHeader)\n || closest(args.event.target, '.' + menuClass.touchPop) ||\n closest(args.event.target, '.e-summarycell') ||\n closest(args.event.target, '.e-groupcaption') ||\n closest(args.event.target, '.e-filterbarcell'))) {\n args.cancel = true;\n }\n else {\n this.targetColumn = this.getColumn(args.event);\n this.targetRowdata = this.parent.getRowInfo(args.event.target);\n if ((isNullOrUndefined(args.parentItem)) && this.targetColumn) {\n if (this.targetRowdata.cell) {\n this.selectRow(args.event, (this.targetRowdata.cell.classList.contains('e-selectionbackground')\n && this.parent.selectionSettings.type === 'Multiple') ? false : true);\n }\n }\n let hideSepItems = [];\n let showSepItems = [];\n for (let item of args.items) {\n let key = this.getKeyFromId(item.id);\n let dItem = this.defaultItems[key];\n if (this.getDefaultItems().indexOf(key) !== -1) {\n if (this.ensureDisabledStatus(key)) {\n this.disableItems.push(item.text);\n }\n if (args.event && (this.ensureTarget(args.event.target, menuClass.edit) ||\n this.ensureTarget(args.event.target, menuClass.batchEdit))) {\n if (key !== 'Save' && key !== 'Cancel') {\n this.hiddenItems.push(item.text);\n }\n }\n else if (this.parent.editModule && this.parent.editSettings.mode === 'Batch' &&\n ((closest(args.event.target, '.e-gridform')) ||\n this.parent.editModule.getBatchChanges()[changedRecords].length ||\n this.parent.editModule.getBatchChanges()[addedRecords].length ||\n this.parent.editModule.getBatchChanges()[deletedRecords].length) && (key === 'Save' || key === 'Cancel')) {\n continue;\n }\n else if (isNullOrUndefined(args.parentItem) && args.event\n && !this.ensureTarget(args.event.target, dItem.target)) {\n this.hiddenItems.push(item.text);\n }\n }\n else if (item.target && args.event &&\n !this.ensureTarget(args.event.target, item.target)) {\n if (item.separator) {\n hideSepItems.push(item.id);\n }\n else {\n this.hiddenItems.push(item.text);\n }\n }\n else if (this.ensureTarget(args.event.target, item.target) && item.separator) {\n showSepItems.push(item.id);\n }\n }\n if (showSepItems.length > 0) {\n this.contextMenu.showItems(showSepItems, true);\n }\n this.contextMenu.enableItems(this.disableItems, false);\n this.contextMenu.hideItems(this.hiddenItems);\n if (hideSepItems.length > 0) {\n this.contextMenu.hideItems(hideSepItems, true);\n }\n this.eventArgs = args.event;\n args.column = this.targetColumn;\n args.rowInfo = this.targetRowdata;\n this.parent.trigger(contextMenuOpen, args);\n if (args.cancel || (this.hiddenItems.length === args.items.length && !args.parentItem)) {\n this.updateItemStatus();\n args.cancel = true;\n }\n }\n applyBiggerTheme(this.parent.element, this.contextMenu.element.parentElement);\n }\n ensureTarget(targetElement, selector) {\n let target = targetElement;\n if (this.ensureFrozenHeader(targetElement) && (selector === menuClass.header || selector === menuClass.content)) {\n target = closest(targetElement, selector === menuClass.header ? 'thead' : 'tbody');\n }\n else if (selector === menuClass.content || selector === menuClass.header) {\n target = parentsUntil(closest(targetElement, '.e-table'), selector.substr(1, selector.length));\n }\n else {\n target = closest(targetElement, selector);\n }\n return target && parentsUntil(target, 'e-grid') === this.parent.element;\n }\n ensureFrozenHeader(targetElement) {\n return (this.parent.getFrozenColumns() || this.parent.frozenRows)\n && closest(targetElement, menuClass.header) ? true : false;\n }\n ensureDisabledStatus(item) {\n let status = false;\n switch (item) {\n case 'AutoFitAll':\n case 'AutoFit':\n status = !(this.parent.ensureModuleInjected(Resize) && !this.parent.isEdit)\n || (this.targetColumn && !this.targetColumn.field && item === 'AutoFit');\n break;\n case 'Group':\n if (!this.parent.allowGrouping || (this.parent.ensureModuleInjected(Group) && this.targetColumn\n && this.parent.groupSettings.columns.indexOf(this.targetColumn.field) >= 0) ||\n (this.targetColumn && !this.targetColumn.field)) {\n status = true;\n }\n break;\n case 'Ungroup':\n if (!this.parent.allowGrouping || !this.parent.ensureModuleInjected(Group)\n || (this.parent.ensureModuleInjected(Group) && this.targetColumn\n && this.parent.groupSettings.columns.indexOf(this.targetColumn.field) < 0)) {\n status = true;\n }\n break;\n case 'Edit':\n case 'Delete':\n case 'Save':\n case 'Cancel':\n if (!this.parent.editModule || (this.parent.getDataRows().length === 0)) {\n status = true;\n }\n break;\n case 'Copy':\n if (this.parent.getSelectedRowIndexes().length === 0 ||\n this.parent.getCurrentViewRecords().length === 0) {\n status = true;\n }\n break;\n case 'export':\n if ((!this.parent.allowExcelExport || !this.parent.excelExport) ||\n !this.parent.ensureModuleInjected(PdfExport) && !this.parent.ensureModuleInjected(ExcelExport)) {\n status = true;\n }\n break;\n case 'PdfExport':\n if (!(this.parent.allowPdfExport) || !this.parent.ensureModuleInjected(PdfExport)) {\n status = true;\n }\n break;\n case 'ExcelExport':\n case 'CsvExport':\n if (!(this.parent.allowExcelExport) || !this.parent.ensureModuleInjected(ExcelExport)) {\n status = true;\n }\n break;\n case 'SortAscending':\n case 'SortDescending':\n if ((!this.parent.allowSorting) || !this.parent.ensureModuleInjected(Sort) ||\n (this.targetColumn && !this.targetColumn.field)) {\n status = true;\n }\n else if (this.parent.ensureModuleInjected(Sort) && this.parent.sortSettings.columns.length > 0 && this.targetColumn) {\n let sortColumns = this.parent.sortSettings.columns;\n for (let i = 0; i < sortColumns.length; i++) {\n if (sortColumns[i].field === this.targetColumn.field\n && sortColumns[i].direction.toLowerCase() === item.toLowerCase().replace('sort', '').toLocaleLowerCase()) {\n status = true;\n }\n }\n }\n break;\n case 'FirstPage':\n case 'PrevPage':\n if (!this.parent.allowPaging || !this.parent.ensureModuleInjected(Page) ||\n this.parent.getCurrentViewRecords().length === 0 ||\n (this.parent.ensureModuleInjected(Page) && this.parent.pageSettings.currentPage === 1)) {\n status = true;\n }\n break;\n case 'LastPage':\n case 'NextPage':\n if (!this.parent.allowPaging || !this.parent.ensureModuleInjected(Page) ||\n this.parent.getCurrentViewRecords().length === 0 ||\n (this.parent.ensureModuleInjected(Page) && this.parent.pageSettings.currentPage === this.getLastPage())) {\n status = true;\n }\n break;\n }\n return status;\n }\n /**\n * Gets the context menu element from the Grid.\n * @return {Element}\n */\n getContextMenu() {\n return this.element;\n }\n /**\n * Destroys the context menu component in the Grid.\n * @method destroy\n * @return {void}\n * @hidden\n */\n destroy() {\n let gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.e-gridheader') && !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n this.contextMenu.destroy();\n remove(this.element);\n this.removeEventListener();\n this.parent.element.classList.remove('e-noselect');\n }\n getModuleName() {\n return 'contextMenu';\n }\n generateID(item) {\n return this.gridID + '_cmenu_' + item;\n }\n getKeyFromId(id) {\n return id.replace(this.gridID + '_cmenu_', '');\n }\n buildDefaultItems(item) {\n let menuItem;\n switch (item) {\n case 'AutoFitAll':\n case 'AutoFit':\n menuItem = { target: menuClass.header };\n break;\n case 'Group':\n menuItem = { target: menuClass.header, iconCss: menuClass.group };\n break;\n case 'Ungroup':\n menuItem = { target: menuClass.header, iconCss: menuClass.ungroup };\n break;\n case 'Edit':\n menuItem = { target: menuClass.content, iconCss: menuClass.editIcon };\n break;\n case 'Delete':\n menuItem = { target: menuClass.content, iconCss: menuClass.delete };\n break;\n case 'Save':\n menuItem = { target: menuClass.edit, iconCss: menuClass.save };\n break;\n case 'Cancel':\n menuItem = { target: menuClass.edit, iconCss: menuClass.cancel };\n break;\n case 'Copy':\n menuItem = { target: menuClass.content, iconCss: menuClass.copy };\n break;\n case 'export':\n menuItem = { target: menuClass.content };\n break;\n case 'PdfExport':\n menuItem = { target: menuClass.content, iconCss: menuClass.pdf };\n break;\n case 'ExcelExport':\n menuItem = { target: menuClass.content, iconCss: menuClass.excel };\n break;\n case 'CsvExport':\n menuItem = { target: menuClass.content, iconCss: menuClass.csv };\n break;\n case 'SortAscending':\n menuItem = { target: menuClass.header, iconCss: menuClass.ascending };\n break;\n case 'SortDescending':\n menuItem = { target: menuClass.header, iconCss: menuClass.descending };\n break;\n case 'FirstPage':\n menuItem = { target: menuClass.pager, iconCss: menuClass.fPage };\n break;\n case 'PrevPage':\n menuItem = { target: menuClass.pager, iconCss: menuClass.pPage };\n break;\n case 'LastPage':\n menuItem = { target: menuClass.pager, iconCss: menuClass.lPage };\n break;\n case 'NextPage':\n menuItem = { target: menuClass.pager, iconCss: menuClass.nPage };\n break;\n }\n this.defaultItems[item] = {\n text: this.getLocaleText(item), id: this.generateID(item),\n target: menuItem.target, iconCss: menuItem.iconCss ? 'e-icons ' + menuItem.iconCss : ''\n };\n return this.defaultItems[item];\n }\n getDefaultItems() {\n return ['AutoFitAll', 'AutoFit',\n 'Group', 'Ungroup', 'Edit', 'Delete', 'Save', 'Cancel', 'Copy', 'export',\n 'PdfExport', 'ExcelExport', 'CsvExport', 'SortAscending', 'SortDescending',\n 'FirstPage', 'PrevPage', 'LastPage', 'NextPage'];\n }\n setLocaleKey() {\n let localeKeys = {\n 'AutoFitAll': 'autoFitAll',\n 'AutoFit': 'autoFit',\n 'Copy': 'Copy',\n 'Group': 'Group',\n 'Ungroup': 'Ungroup',\n 'Edit': 'EditRecord',\n 'Delete': 'DeleteRecord',\n 'Save': 'Save',\n 'Cancel': 'CancelButton',\n 'PdfExport': 'Pdfexport',\n 'ExcelExport': 'Excelexport',\n 'CsvExport': 'Csvexport',\n 'export': 'Export',\n 'SortAscending': 'SortAscending',\n 'SortDescending': 'SortDescending',\n 'FirstPage': 'FirstPage',\n 'LastPage': 'LastPage',\n 'PrevPage': 'PreviousPage',\n 'NextPage': 'NextPage'\n };\n if (isBlazor()) {\n let autoFitAll = 'AutoFitAll';\n localeKeys[autoFitAll] = 'AutoFitAll';\n let autoFit = 'AutoFit';\n localeKeys[autoFit] = 'AutoFit';\n }\n return localeKeys;\n }\n getColumn(e) {\n let cell = closest(e.target, 'th.e-headercell');\n if (cell) {\n let uid = cell.querySelector('.e-headercelldiv, .e-stackedheadercelldiv').getAttribute('e-mappinguid');\n return this.parent.getColumnByUid(uid);\n }\n else {\n let ele = (this.parent.getRowInfo(e.target).column);\n return ele || null;\n }\n }\n selectRow(e, isSelectable) {\n this.cell = e.target;\n this.row = closest(e.target, 'tr.e-row') || this.row;\n if (this.row && isSelectable && !parentsUntil(e.target, 'e-gridpager')) {\n this.parent.selectRow(parseInt(this.row.getAttribute('aria-rowindex'), 10));\n }\n }\n}\n\n/**\n * FreezeRowModelGenerator is used to generate grid data rows with freeze row and column.\n * @hidden\n */\nclass FreezeRowModelGenerator {\n constructor(parent) {\n this.isFrzLoad = 1;\n this.parent = parent;\n this.rowModelGenerator = new RowModelGenerator(this.parent);\n }\n generateRows(data, notifyArgs, virtualRows) {\n let frzCols = this.parent.getFrozenColumns();\n if (this.isFrzLoad % 2 !== 0 && notifyArgs.requestType === 'virtualscroll' && notifyArgs.virtualInfo.sentinelInfo.axis === 'X') {\n this.isFrzLoad++;\n return null;\n }\n let row = this.parent.enableVirtualization ? virtualRows\n : this.rowModelGenerator.generateRows(data, notifyArgs);\n if (isBlazor() && !this.parent.isJsComponent) {\n return row;\n }\n for (let i = 0, len = row.length; i < len; i++) {\n if (this.isFrzLoad % 2 === 0) {\n row[i].cells = row[i].cells.slice(frzCols, row[i].cells.length);\n }\n else {\n row[i].isFreezeRow = true;\n row[i].cells = row[i].cells.slice(0, frzCols);\n }\n }\n this.isFrzLoad++;\n return row;\n }\n}\n\n/**\n * Freeze module is used to render grid content with frozen rows and columns\n * @hidden\n */\nclass FreezeContentRender extends ContentRender {\n constructor(parent, locator) {\n super(parent, locator);\n }\n renderPanel() {\n super.renderPanel();\n let fDiv = this.parent.element.querySelector('.e-frozencontent');\n let mDiv = this.parent.element.querySelector('.e-movablecontent');\n if (isNullOrUndefined(fDiv)) {\n fDiv = this.parent.createElement('div', { className: 'e-frozencontent' });\n mDiv = this.parent.createElement('div', { className: 'e-movablecontent' });\n this.getPanel().querySelector('.e-content').appendChild(fDiv);\n this.getPanel().querySelector('.e-content').appendChild(mDiv);\n }\n this.setFrozenContent(fDiv);\n this.setMovableContent(mDiv);\n }\n renderEmpty(tbody) {\n if (isBlazor() && !this.parent.isJsComponent) {\n return;\n }\n super.renderEmpty(tbody);\n this.getMovableContent().querySelector('tbody').innerHTML = '';\n addClass([this.getMovableContent().querySelector('tbody').querySelector('tr')], ['e-emptyrow']);\n this.getFrozenContent().querySelector('.e-emptyrow').querySelector('td').colSpan = this.parent.getFrozenColumns();\n this.getFrozenContent().style.borderRightWidth = '0px';\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector('.e-frozenheader').querySelector('tbody').innerHTML = '';\n this.parent.getHeaderContent().querySelector('.e-movableheader').querySelector('tbody').innerHTML = '';\n }\n }\n setFrozenContent(ele) {\n this.frozenContent = ele;\n }\n setMovableContent(ele) {\n this.movableContent = ele;\n }\n getFrozenContent() {\n return this.frozenContent;\n }\n getMovableContent() {\n return this.movableContent;\n }\n getModelGenerator() {\n return new FreezeRowModelGenerator(this.parent);\n }\n renderTable() {\n let mTbl;\n if (this.getFrozenContent().querySelector('.e-table') == null) {\n super.renderTable();\n this.getFrozenContent().appendChild(this.getTable());\n mTbl = this.getTable().cloneNode(true);\n this.getMovableContent().appendChild(mTbl);\n }\n else {\n this.setTable(this.getFrozenContent().querySelector('.e-table'));\n this.setColGroup(this.parent.element.querySelector('.e-gridheader').querySelector('colgroup').cloneNode(true));\n this.getFrozenContent().querySelector('.e-table').appendChild(this.getColGroup());\n mTbl = this.getMovableContent().querySelector('.e-table');\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().classList.add('e-frozenhdrcont');\n }\n }\n if (this.getMovableContent().querySelector('colgroup')) {\n remove(this.getMovableContent().querySelector('colgroup'));\n }\n let colGroup = ((this.parent.getHeaderContent().querySelector('.e-movableheader').querySelector('colgroup')).cloneNode(true));\n mTbl.insertBefore(colGroup, mTbl.querySelector('tbody'));\n }\n}\nclass FreezeRender extends HeaderRender {\n constructor(parent, locator) {\n super(parent, locator);\n this.addEventListener();\n }\n addEventListener() {\n this.parent.on(freezeRender, this.refreshFreeze, this);\n this.parent.on(frozenHeight, this.setFrozenHeight, this);\n this.parent.on(uiUpdate, this.enableAfterRender, this);\n }\n removeEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(frozenHeight, this.setFrozenHeight);\n this.parent.off(uiUpdate, this.enableAfterRender);\n }\n renderTable() {\n if (!isBlazor()) {\n super.renderTable();\n }\n else {\n this.setTable(this.createTable(this.getFrozenHeader().querySelector('.e-table')));\n this.parent.notify(headerRefreshed, { rows: this.rows, args: { isFrozen: true } });\n this.createTable(this.getMovableHeader().querySelector('.e-table'));\n }\n this.rfshMovable();\n this.updateColgroup();\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n this.parent.notify(headerRefreshed, { rows: this.rows, args: { isFrozen: false } });\n }\n renderPanel() {\n let fDiv = this.parent.element.querySelector('.e-frozenheader');\n let mDiv = this.parent.element.querySelector('.e-movableheader');\n super.renderPanel();\n if (isNullOrUndefined(fDiv)) {\n fDiv = this.parent.createElement('div', { className: 'e-frozenheader' });\n mDiv = this.parent.createElement('div', { className: 'e-movableheader' });\n this.getPanel().querySelector('.e-headercontent').appendChild(fDiv);\n this.getPanel().querySelector('.e-headercontent').appendChild(mDiv);\n }\n this.setFrozenHeader(fDiv);\n this.setMovableHeader(mDiv);\n }\n refreshUI() {\n if (!(isBlazor() && this.parent.isServerRendered) || this.parent.frozenRows === 0) {\n let tbody = this.getMovableHeader().querySelector('tbody');\n remove(this.getMovableHeader().querySelector('table'));\n super.refreshUI();\n this.rfshMovable();\n this.getMovableHeader().querySelector('tbody').innerHTML = tbody.innerHTML;\n }\n else {\n if (this.parent.getFrozenColumns() && this.freezeReorder) {\n super.refreshUI();\n this.freezeReorder = false;\n super.refreshUI();\n }\n this.rfshMovable();\n }\n if (!isBlazor() || this.parent.frozenRows === 0) {\n this.updateColgroup();\n }\n if (!this.parent.enableVirtualization) {\n this.widthService.setWidthToTable();\n }\n if (this.parent.allowTextWrap && this.parent.textWrapSettings.wrapMode === 'Header') {\n wrap([].slice.call(this.movableHeader.querySelectorAll('tr.e-columnheader')), true);\n }\n this.parent.updateDefaultCursor();\n if (!isBlazor() || this.parent.frozenRows === 0) {\n renderMovable(this.parent.getContentTable().querySelector('colgroup'), this.parent.getFrozenColumns());\n }\n this.initializeHeaderDrag();\n this.parent.notify(headerRefreshed, { rows: this.rows, args: { isFrozen: false } });\n }\n rfshMovable() {\n if (this.parent.enableColumnVirtualization) {\n this.parent.getFrozenVirtualHeader().querySelector('.e-virtualtable').appendChild(this.getTable());\n this.parent.getMovableVirtualHeader().querySelector('.e-virtualtable').appendChild(this.createTable());\n }\n else {\n if (!isBlazor() || this.parent.frozenRows === 0) {\n this.getFrozenHeader().appendChild(this.getTable());\n this.getMovableHeader().appendChild(this.createTable());\n }\n }\n this.refreshStackedHdrHgt();\n this.addMovableFirstCls();\n }\n addMovableFirstCls() {\n if (this.parent.getVisibleFrozenColumns()) {\n let movablefirstcell = this.parent.element.querySelector('.e-movableheader').querySelector('thead').querySelectorAll('.e-columnheader');\n let len = this.parent.element.querySelector('.e-movableheader').querySelector('thead').querySelectorAll('.e-columnheader').length;\n for (let i = 0; i < len; i++) {\n let cells = 'cells';\n let element = movablefirstcell[i][cells][0];\n if (element) {\n addClass([element], ['e-movablefirst']);\n if (movablefirstcell[i][cells][0].rowSpan > 1) {\n i = i + (movablefirstcell[i][cells][0].rowSpan - 1);\n }\n }\n }\n }\n }\n refreshFreeze(obj) {\n if (obj.case === 'filter') {\n let filterRow = this.getTable().querySelector('.e-filterbar');\n if (this.parent.allowFiltering && filterRow && this.getMovableHeader().querySelector('thead')) {\n this.getMovableHeader().querySelector('thead')\n .appendChild(this.filterRenderer(filterRow, this.parent.getFrozenColumns()));\n let elements = [].slice.call(this.getMovableHeader().\n querySelectorAll('thead .e-filterbarcell .e-input'));\n for (let elem of elements) {\n let args = {\n element: elem, floatLabelType: 'Never',\n properties: {\n enableRtl: this.parent.enableRtl, showClearButton: true\n }\n };\n Input.bindInitialEvent(args);\n }\n }\n }\n else if (obj.case === 'textwrap' || obj.case === 'refreshHeight') {\n let fRows;\n let mRows;\n let fHdr = this.getFrozenHeader();\n let mHdr = this.getMovableHeader();\n let cont = this.parent.getContent();\n let wrapMode = this.parent.textWrapSettings.wrapMode;\n let hdrClassList = this.parent.getHeaderContent().querySelector('.e-headercontent').classList;\n if (obj.case === 'textwrap') {\n if (wrapMode !== 'Header' || obj.isModeChg) {\n fRows = cont.querySelector('.e-frozencontent').querySelectorAll('tr');\n mRows = cont.querySelector('.e-movablecontent').querySelectorAll('tr');\n this.setWrapHeight(fRows, mRows, obj.isModeChg, true);\n }\n if (wrapMode === 'Content' && this.parent.allowTextWrap) {\n hdrClassList.add('e-wrap');\n }\n else {\n hdrClassList.remove('e-wrap');\n }\n if (wrapMode === 'Both' || obj.isModeChg) {\n fRows = fHdr.querySelectorAll('tr');\n mRows = mHdr.querySelectorAll('tr');\n }\n else {\n fRows = fHdr.querySelector(wrapMode === 'Content' ?\n 'tbody' : 'thead').querySelectorAll('tr');\n mRows = mHdr.querySelector(wrapMode === 'Content' ?\n 'tbody' : 'thead').querySelectorAll('tr');\n }\n if (!this.parent.getHeaderContent().querySelectorAll('.e-stackedheadercell').length) {\n this.setWrapHeight(fRows, mRows, obj.isModeChg, false, this.colDepth > 1);\n }\n this.refreshStackedHdrHgt();\n }\n else if (obj.case === 'refreshHeight') {\n this.setWrapHeight(cont.querySelector('.e-frozencontent').querySelectorAll('tr'), cont.querySelector('.e-movablecontent').querySelectorAll('tr'), obj.isModeChg);\n if (!this.parent.getHeaderContent().querySelectorAll('.e-stackedheadercell').length) {\n this.setWrapHeight(fHdr.querySelectorAll('tr'), mHdr.querySelectorAll('tr'), obj.isModeChg);\n }\n }\n }\n }\n enableAfterRender(e) {\n if (e.module === 'scroll') {\n this.setFrozenHeight();\n }\n }\n updateResizeHandler() {\n let elements = [].slice.call(this.parent.getHeaderContent().querySelectorAll('.e-rhandler'));\n for (let i = 0; i < elements.length; i++) {\n elements[i].style.height = elements[i].parentElement.offsetHeight + 'px';\n }\n }\n setWrapHeight(fRows, mRows, isModeChg, isContReset, isStackedHdr) {\n let fRowHgt;\n let mRowHgt;\n let isWrap = this.parent.allowTextWrap;\n let wrapMode = this.parent.textWrapSettings.wrapMode;\n let tHead = this.parent.getHeaderContent().querySelector('thead');\n let tBody = this.parent.getHeaderContent().querySelector('tbody');\n let height = [];\n let width = [];\n for (let i = 0, len = fRows.length; i < len; i++) { //separate loop for performance issue \n if (!isNullOrUndefined(fRows[i]) && !isNullOrUndefined(mRows[i])) {\n height[i] = fRows[i].getBoundingClientRect().height; //https://pagebuildersandwich.com/increased-plugins-performance-200/\n width[i] = mRows[i].getBoundingClientRect().height;\n }\n }\n for (let i = 0, len = fRows.length; i < len; i++) {\n if (isModeChg && ((wrapMode === 'Header' && isContReset) || ((wrapMode === 'Content' && tHead.contains(fRows[i]))\n || (wrapMode === 'Header' && tBody.contains(fRows[i])))) || isStackedHdr) {\n fRows[i].style.height = null;\n mRows[i].style.height = null;\n }\n fRowHgt = height[i];\n mRowHgt = width[i];\n if (!isNullOrUndefined(fRows[i]) && fRows[i].childElementCount && ((isWrap && fRowHgt < mRowHgt) ||\n (!isWrap && fRowHgt < mRowHgt) || (this.parent.allowResizing && this.parent.resizeModule &&\n this.parent.resizeModule.isFrozenColResized === false))) {\n fRows[i].style.height = mRowHgt + 'px';\n }\n if (mRows && !isNullOrUndefined(mRows[i]) && mRows[i].childElementCount && ((isWrap && fRowHgt > mRowHgt) ||\n (!isWrap && fRowHgt > mRowHgt) || (this.parent.allowResizing && this.parent.resizeModule &&\n this.parent.resizeModule.isFrozenColResized === true))) {\n mRows[i].style.height = fRowHgt + 'px';\n }\n }\n if (isWrap) {\n this.setFrozenHeight();\n }\n }\n setFrozenHeight(height = getScrollBarWidth()) {\n let movableContentHeight = this.parent.element.querySelector('.e-movablecontent').getBoundingClientRect().height;\n let movableContent = this.parent.element.querySelector('.e-movablecontent');\n let frozenContent = this.parent.element.querySelector('.e-frozencontent');\n let contentScrollWidth = this.parent.getContent().scrollWidth;\n let contentTableScrollWidth = this.parent.element.querySelector('.e-movablecontent table').scrollWidth +\n this.parent.getContentTable().scrollWidth;\n if (movableContent.scrollWidth - movableContent.clientWidth) {\n frozenContent.style.height = movableContentHeight -\n height + 'px';\n frozenContent.style.borderBottom = '';\n }\n else {\n frozenContent.style.height = movableContentHeight + 'px';\n if (((frozenContent.scrollHeight <= frozenContent.clientHeight) ||\n (movableContent.scrollHeight <= movableContent.clientHeight))\n && contentScrollWidth === contentTableScrollWidth) {\n this.parent.scrollModule.removePadding();\n }\n frozenContent.style.borderBottom = '0px';\n }\n }\n refreshStackedHdrHgt() {\n let fRowSpan;\n let mRowSpan;\n let fTr = this.getFrozenHeader().querySelectorAll('.e-columnheader');\n let mTr = this.getMovableHeader().querySelectorAll('.e-columnheader');\n for (let i = 0, len = fTr.length; i < len; i++) {\n fRowSpan = this.getRowSpan(fTr[i]);\n mRowSpan = this.getRowSpan(mTr[i]);\n if (fRowSpan.min > 1) {\n this.updateStackedHdrRowHgt(i, fRowSpan.max, fTr[i], mTr);\n }\n else if (mRowSpan.min > 1) {\n this.updateStackedHdrRowHgt(i, mRowSpan.max, mTr[i], fTr);\n }\n }\n if (this.parent.allowResizing) {\n this.updateResizeHandler();\n }\n }\n getRowSpan(row) {\n let rSpan;\n let minRowSpan;\n let maxRowSpan;\n for (let i = 0, len = row.childElementCount; i < len; i++) {\n if (i === 0) {\n minRowSpan = row.children[0].rowSpan;\n }\n rSpan = row.children[i].rowSpan;\n minRowSpan = Math.min(rSpan, minRowSpan);\n maxRowSpan = Math.max(rSpan, minRowSpan);\n }\n return { min: minRowSpan, max: maxRowSpan };\n }\n updateStackedHdrRowHgt(idx, maxRowSpan, row, rows) {\n let height = 0;\n for (let i = 0; i < maxRowSpan; i++) {\n height += rows[idx + i].style.height ?\n parseInt(rows[idx + i].style.height, 10) : rows[idx + i].offsetHeight;\n }\n row.style.height = height + 'px';\n }\n setFrozenHeader(ele) {\n this.frozenHeader = ele;\n }\n setMovableHeader(ele) {\n this.movableHeader = ele;\n }\n getFrozenHeader() {\n return this.frozenHeader;\n }\n getMovableHeader() {\n return this.movableHeader;\n }\n /**\n * @hidden\n */\n updateColgroup() {\n let mTable = this.getMovableHeader().querySelector('table');\n remove(this.getMovableHeader().querySelector('colgroup'));\n mTable.insertBefore(renderMovable(this.getFrozenHeader().querySelector('colgroup'), this.parent.getFrozenColumns()), mTable.querySelector('thead'));\n }\n filterRenderer(ele, frozenColumn) {\n let clone = ele.cloneNode(true);\n clone.innerHTML = '';\n for (let i = frozenColumn; i < this.parent.getColumns().length; i++) {\n clone.appendChild(ele.removeChild(ele.children[frozenColumn]));\n }\n return clone;\n }\n}\n\n/**\n * VirtualFreezeRenderer is used to render the virtual table within the frozen table\n * @hidden\n */\nclass VirtualFreezeRenderer extends FreezeContentRender {\n constructor(parent, locator) {\n super(parent, locator);\n this.frzeeLoad = 1;\n this.serviceLoc = locator;\n }\n /**\n * @hidden\n */\n renderTable() {\n this.freezeRowGenerator = new FreezeRowModelGenerator(this.parent);\n this.virtualRenderer = new VirtualContentRenderer(this.parent, this.serviceLoc);\n this.virtualRenderer.setPanel(this.parent.getContent());\n this.virtualRenderer.renderTable();\n let virtualTable = this.parent.getContent().querySelector('.e-virtualtable');\n let virtualTrack = this.parent.getContent().querySelector('.e-virtualtrack');\n virtualTrack.style.position = '';\n this.getFrozenContent().appendChild(virtualTable);\n this.getFrozenContent().appendChild(virtualTrack);\n let mTbl = virtualTable.cloneNode(true);\n let mTblT = virtualTrack.cloneNode(true);\n this.getMovableContent().appendChild(mTbl);\n this.getMovableContent().appendChild(mTblT);\n remove(this.getMovableContent().querySelector('colgroup'));\n let colGroup = this.parent.getMovableVirtualHeader().querySelector('colgroup')\n .cloneNode(true);\n mTbl.firstElementChild.insertBefore(colGroup, mTbl.firstElementChild.querySelector('tbody'));\n this.setTable(this.parent.element.querySelector('.e-frozencontent').querySelector('.e-table'));\n }\n /**\n * @hidden\n */\n appendContent(target, newChild, e) {\n this.virtualRenderer.appendContent(target, newChild, e);\n }\n /**\n * @hidden\n */\n generateRows(data, notifyArgs) {\n let virtualRows = this.virtualRenderer.vgenerator.generateRows(data, notifyArgs);\n let arr = [];\n arr = virtualRows.map((row) => extend({}, row));\n if (!this.firstPageRecords) {\n this.firstPageRecords = data;\n }\n let rows = this.freezeRowGenerator.generateRows(data, notifyArgs, arr);\n return rows;\n }\n /**\n * @hidden\n */\n getRowByIndex(index) {\n return this.virtualRenderer.getRowByIndex(index);\n }\n /**\n * @hidden\n */\n getMovableRowByIndex(index) {\n return this.virtualRenderer.getMovableVirtualRowByIndex(index);\n }\n /**\n * @hidden\n */\n getMovableRows() {\n return this.virtualRenderer.vgenerator.getRows();\n }\n /**\n * @hidden\n */\n getRows() {\n return this.getMovableRows();\n }\n /**\n * @hidden\n */\n getColGroup() {\n let mCol = this.parent.getMovableVirtualContent().querySelector('colgroup');\n let fCol = this.parent.getFrozenVirtualContent().querySelector('colgroup');\n let colGroup = this.isXaxis() ? mCol : fCol;\n return colGroup;\n }\n /**\n * @hidden\n */\n getReorderedFrozenRows(args) {\n let rows;\n let bIndex = args.virtualInfo.blockIndexes;\n let colIndex = args.virtualInfo.columnIndexes;\n let page = args.virtualInfo.page;\n args.virtualInfo.blockIndexes = [1, 2];\n args.virtualInfo.page = 1;\n if (!args.renderMovableContent) {\n args.virtualInfo.columnIndexes = [];\n }\n let virtualRows = this.virtualRenderer.vgenerator.generateRows(this.firstPageRecords, args);\n rows = this.splitReorderedRows(virtualRows);\n args.virtualInfo.blockIndexes = bIndex;\n args.virtualInfo.columnIndexes = colIndex;\n args.virtualInfo.page = page;\n return rows.splice(0, this.parent.frozenRows);\n }\n splitReorderedRows(rows) {\n let frzCols = this.parent.getFrozenColumns();\n for (let i = 0, len = rows.length; i < len; i++) {\n if (this.frzeeLoad % 2 === 0) {\n rows[i].cells = rows[i].cells.slice(frzCols, rows[i].cells.length);\n }\n else {\n rows[i].isFreezeRow = true;\n rows[i].cells = rows[i].cells.slice(0, frzCols);\n }\n }\n this.frzeeLoad++;\n return rows;\n }\n isXaxis() {\n let value = false;\n if (this.virtualRenderer) {\n value = this.virtualRenderer.requestType === 'virtualscroll'\n && this.virtualRenderer.currentInfo.sentinelInfo.axis === 'X';\n }\n return value;\n }\n getHeaderCells() {\n let content = this.isXaxis() ? this.parent.getMovableVirtualHeader() : this.parent.getHeaderContent();\n return content ? [].slice.call(content.querySelectorAll('.e-headercell:not(.e-stackedheadercell)')) : [];\n }\n getVirtualFreezeHeader() {\n let headerTable;\n if (this.isXaxis()) {\n headerTable = this.parent.getMovableVirtualHeader().querySelector('.e-table');\n }\n else {\n headerTable = this.parent.getFrozenVirtualHeader().querySelector('.e-table');\n }\n return headerTable;\n }\n ensureFrozenCols(columns) {\n let frozenCols = this.parent.columns.slice(0, this.parent.getFrozenColumns());\n columns = frozenCols.concat(columns);\n return columns;\n }\n /**\n * @hidden\n */\n getRowObjectByIndex(index) {\n return this.virtualRenderer.getRowObjectByIndex(index);\n }\n}\nclass VirtualFreezeHdrRenderer extends FreezeRender {\n constructor(parent, locator) {\n super(parent, locator);\n this.serviceLoc = locator;\n }\n /**\n * @hidden\n */\n renderTable() {\n this.virtualHdrRenderer = new VirtualHeaderRenderer(this.parent, this.serviceLoc);\n this.virtualEle = this.virtualHdrRenderer.virtualEle;\n this.virtualHdrRenderer.setPanel(this.parent.getHeaderContent());\n this.virtualHdrRenderer.renderTable();\n this.rfhMovable();\n this.updateColgroup();\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n this.setTable(this.parent.element.querySelector('.e-frozenheader').querySelector('.e-table'));\n this.parent.notify(headerRefreshed, { rows: this.rows, args: { isFrozen: false } });\n }\n rfhMovable() {\n let fvTbl = this.parent.getHeaderContent().querySelector('.e-virtualtable');\n let fvTck = this.parent.getHeaderContent().querySelector('.e-virtualtrack');\n this.getFrozenHeader().appendChild(fvTbl);\n this.getFrozenHeader().appendChild(fvTck);\n this.virtualHdrRenderer.virtualEle.table = this.createTable();\n this.virtualHdrRenderer.virtualEle.renderWrapper();\n this.virtualHdrRenderer.virtualEle.renderPlaceHolder();\n let mvTbl = [].slice.call(this.parent.getHeaderContent().querySelectorAll('.e-virtualtable'));\n let mvTck = [].slice.call(this.parent.getHeaderContent().querySelectorAll('.e-virtualtrack'));\n this.getMovableHeader().appendChild(mvTbl[1]);\n this.getMovableHeader().appendChild(mvTck[1]);\n }\n /**\n * @hidden\n */\n getTable() {\n return this.virtualHdrRenderer.getTable();\n }\n}\n\n/**\n * `Freeze` module is used to handle Frozen rows and columns.\n * @hidden\n */\nclass Freeze {\n constructor(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.addEventListener();\n }\n getModuleName() {\n return 'freeze';\n }\n addEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initialLoad, this.instantiateRenderer, this);\n }\n instantiateRenderer() {\n this.parent.log('limitation', this.getModuleName());\n let renderer = this.locator.getService('rendererFactory');\n if (this.parent.getFrozenColumns()) {\n this.parent.enableColumnVirtualization ?\n renderer.addRenderer(RenderType.Header, new VirtualFreezeHdrRenderer(this.parent, this.locator))\n : renderer.addRenderer(RenderType.Header, new FreezeRender(this.parent, this.locator));\n this.parent.enableVirtualization ?\n renderer.addRenderer(RenderType.Content, new VirtualFreezeRenderer(this.parent, this.locator))\n : renderer.addRenderer(RenderType.Content, new FreezeContentRender(this.parent, this.locator));\n }\n }\n removeEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(initialLoad, this.instantiateRenderer);\n }\n destroy() {\n this.removeEventListener();\n }\n}\n\n/**\n * 'column menu module used to handle column menu actions'\n * @hidden\n */\nclass ColumnMenu {\n constructor(parent, serviceLocator) {\n this.defaultItems = {};\n this.localeText = this.setLocaleKey();\n this.disableItems = [];\n this.hiddenItems = [];\n this.isOpen = false;\n // default class names\n this.GROUP = 'e-icon-group';\n this.UNGROUP = 'e-icon-ungroup';\n this.ASCENDING = 'e-icon-ascending';\n this.DESCENDING = 'e-icon-descending';\n this.ROOT = 'e-columnmenu';\n this.FILTER = 'e-icon-filter';\n this.POP = 'e-filter-popup';\n this.WRAP = 'e-col-menu';\n this.CHOOSER = '_chooser_';\n this.parent = parent;\n this.gridID = parent.element.id;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n wireEvents() {\n let elements = this.getColumnMenuHandlers();\n for (let i = 0; i < elements.length; i++) {\n EventHandler.add(elements[i], 'mousedown', this.columnMenuHandlerDown, this);\n }\n }\n unwireEvents() {\n let elements = this.getColumnMenuHandlers();\n for (let i = 0; i < elements.length; i++) {\n EventHandler.remove(elements[i], 'mousedown', this.columnMenuHandlerDown);\n }\n }\n /**\n * To destroy the resize\n * @return {void}\n * @hidden\n */\n destroy() {\n let gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.e-gridheader') && !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n this.columnMenu.destroy();\n this.removeEventListener();\n this.unwireFilterEvents();\n this.unwireEvents();\n remove(this.element);\n }\n columnMenuHandlerClick(e) {\n if (e.target.classList.contains('e-columnmenu')) {\n this.columnMenu.items = this.getItems();\n this.columnMenu.dataBind();\n if ((this.isOpen && this.headerCell !== this.getHeaderCell(e)) || document.querySelector('.e-grid-menu .e-menu-parent.e-ul')) {\n this.columnMenu.close();\n this.openColumnMenu(e);\n }\n else if (!this.isOpen) {\n this.openColumnMenu(e);\n }\n else {\n this.columnMenu.close();\n }\n }\n }\n /** @hidden */\n openColumnMenuByField(field) {\n this.openColumnMenu({ target: this.parent.getColumnHeaderByField(field).querySelector('.e-columnmenu') });\n }\n openColumnMenu(e) {\n let pos = { top: 0, left: 0 };\n this.element.style.cssText = 'display:block;visibility:hidden';\n let elePos = this.element.getBoundingClientRect();\n this.element.style.cssText = 'display:none;visibility:visible';\n this.headerCell = this.getHeaderCell(e);\n if (Browser.isDevice) {\n pos.top = ((window.innerHeight / 2) - (elePos.height / 2));\n pos.left = ((window.innerWidth / 2) - (elePos.width / 2));\n }\n else {\n if (this.parent.enableRtl) {\n pos = calculatePosition(this.headerCell, 'left', 'bottom');\n }\n else {\n pos = calculatePosition(this.headerCell, 'right', 'bottom');\n pos.left -= elePos.width;\n }\n }\n this.columnMenu.open(pos.top, pos.left);\n if (e.preventDefault) {\n e.preventDefault();\n }\n applyBiggerTheme(this.parent.element, this.columnMenu.element.parentElement);\n }\n columnMenuHandlerDown(e) {\n this.isOpen = !(this.element.style.display === 'none' || this.element.style.display === '');\n }\n getColumnMenuHandlers() {\n return [].slice.call(this.parent.getHeaderTable().querySelectorAll('.' + this.ROOT));\n }\n /**\n * @hidden\n */\n addEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(headerRefreshed, this.wireEvents, this);\n this.parent.on(uiUpdate, this.enableAfterRenderMenu, this);\n this.parent.on(initialEnd, this.render, this);\n if (this.isFilterItemAdded()) {\n this.parent.on(filterDialogCreated, this.filterPosition, this);\n }\n this.parent.on(click, this.columnMenuHandlerClick, this);\n this.parent.on(keyPressed, this.keyPressHandler, this);\n }\n /**\n * @hidden\n */\n removeEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(headerRefreshed, this.unwireEvents);\n this.parent.off(uiUpdate, this.enableAfterRenderMenu);\n this.parent.off(initialEnd, this.render);\n if (this.isFilterItemAdded()) {\n this.parent.off(filterDialogCreated, this.filterPosition);\n }\n this.parent.off(click, this.columnMenuHandlerClick);\n this.parent.off(keyPressed, this.keyPressHandler);\n }\n keyPressHandler(e) {\n let gObj = this.parent;\n if (e.action === 'altDownArrow') {\n let element = gObj.focusModule.currentInfo.element;\n if (element && element.classList.contains('e-headercell')) {\n let column = gObj.getColumnByUid(element.firstElementChild.getAttribute('e-mappinguid'));\n this.openColumnMenuByField(column.field);\n }\n }\n }\n enableAfterRenderMenu(e) {\n if (e.module === this.getModuleName() && e.enable) {\n if (this.columnMenu) {\n this.columnMenu.destroy();\n remove(this.element);\n }\n this.render();\n }\n }\n render() {\n this.l10n = this.serviceLocator.getService('localization');\n this.element = this.parent.createElement('ul', { id: this.gridID + '_columnmenu', className: 'e-colmenu' });\n this.element.setAttribute('aria-label', this.l10n.getConstant('ColumnMenuDialogARIA'));\n this.parent.element.appendChild(this.element);\n this.columnMenu = new ContextMenu({\n cssClass: 'e-grid-menu',\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n locale: this.parent.locale,\n items: this.getItems(),\n select: this.columnMenuItemClick.bind(this),\n beforeOpen: this.columnMenuBeforeOpen.bind(this),\n onOpen: this.columnMenuOnOpen.bind(this),\n onClose: this.columnMenuOnClose.bind(this),\n beforeItemRender: this.beforeMenuItemRender.bind(this),\n beforeClose: this.columnMenuBeforeClose.bind(this)\n });\n this.columnMenu.appendTo(this.element);\n this.wireFilterEvents();\n }\n wireFilterEvents() {\n if (!Browser.isDevice && this.isFilterItemAdded()) {\n EventHandler.add(this.element, 'mouseover', this.appendFilter, this);\n }\n }\n unwireFilterEvents() {\n if (!Browser.isDevice && this.isFilterItemAdded()) {\n EventHandler.remove(this.element, 'mouseover', this.appendFilter);\n }\n }\n beforeMenuItemRender(args) {\n if (this.isChooserItem(args.item)) {\n let field = this.getKeyFromId(args.item.id, this.CHOOSER);\n let column = this.parent.columnModel.filter((col) => col.field === field);\n let check = createCheckBox(this.parent.createElement, false, {\n label: args.item.text,\n checked: column[0].visible\n });\n if (this.parent.enableRtl) {\n check.classList.add('e-rtl');\n }\n args.element.innerHTML = '';\n args.element.appendChild(check);\n }\n else if (args.item.id && this.getKeyFromId(args.item.id) === 'Filter') {\n args.element.appendChild(this.parent.createElement('span', { className: 'e-icons e-caret' }));\n args.element.className += 'e-filter-item e-menu-caret-icon';\n }\n }\n columnMenuBeforeClose(args) {\n let colChooser = args.event ? closest(args.event.target, '.e-menu-item') : null;\n if (!isNullOrUndefined(args.parentItem) &&\n this.getKeyFromId(args.parentItem.id) === 'ColumnChooser' &&\n colChooser && this.isChooserItem(colChooser)) {\n args.cancel = true;\n }\n else if (args.event && (closest(args.event.target, '.' + this.POP)\n || (args.event.currentTarget && args.event.currentTarget.activeElement &&\n parentsUntil(args.event.currentTarget.activeElement, 'e-filter-popup'))\n || parentsUntil(args.event.target, 'e-popup') ||\n (parentsUntil(args.event.target, 'e-popup-wrapper'))) && !Browser.isDevice) {\n args.cancel = true;\n }\n }\n isChooserItem(item) {\n return item.id && item.id.indexOf('_colmenu_') >= 0 &&\n this.getKeyFromId(item.id, this.CHOOSER).indexOf('_colmenu_') === -1;\n }\n columnMenuBeforeOpen(args) {\n args.column = this.targetColumn = this.getColumn();\n this.parent.trigger(columnMenuOpen, args);\n for (let item of args.items) {\n let key = this.getKeyFromId(item.id);\n let dItem = this.defaultItems[key];\n if (this.getDefaultItems().indexOf(key) !== -1 && this.ensureDisabledStatus(key) && !dItem.hide) {\n this.disableItems.push(item.text);\n }\n if (item.hide) {\n this.hiddenItems.push(item.text);\n }\n }\n this.columnMenu.enableItems(this.disableItems, false);\n this.columnMenu.hideItems(this.hiddenItems);\n }\n columnMenuOnOpen(args) {\n if (args.element.className === 'e-menu-parent e-ul ') {\n if (args.element.offsetHeight > window.innerHeight) {\n args.element.style.maxHeight = (window.innerHeight) * 0.8 + 'px';\n args.element.style.overflowY = 'auto';\n }\n else if (this.parent.element.offsetHeight > window.innerHeight) {\n args.element.style.maxHeight = (window.innerHeight) * 0.8 + 'px';\n args.element.style.overflowY = 'auto';\n }\n }\n }\n ensureDisabledStatus(item) {\n let status = false;\n switch (item) {\n case 'Group':\n if (!this.parent.allowGrouping || (this.parent.ensureModuleInjected(Group) && this.targetColumn\n && this.parent.groupSettings.columns.indexOf(this.targetColumn.field) >= 0 ||\n this.targetColumn && !this.targetColumn.allowGrouping)) {\n status = true;\n }\n break;\n case 'AutoFitAll':\n case 'AutoFit':\n status = !this.parent.ensureModuleInjected(Resize);\n break;\n case 'Ungroup':\n if (!this.parent.ensureModuleInjected(Group) || (this.parent.ensureModuleInjected(Group) && this.targetColumn\n && this.parent.groupSettings.columns.indexOf(this.targetColumn.field) < 0)) {\n status = true;\n }\n break;\n case 'SortDescending':\n case 'SortAscending':\n if (this.parent.allowSorting && this.parent.ensureModuleInjected(Sort)\n && this.parent.sortSettings.columns.length > 0 && this.targetColumn && this.targetColumn.allowSorting) {\n let sortColumns = this.parent.sortSettings.columns;\n for (let i = 0; i < sortColumns.length; i++) {\n if (sortColumns[i].field === this.targetColumn.field\n && sortColumns[i].direction.toLocaleLowerCase() === item.toLocaleLowerCase().replace('sort', '')) {\n status = true;\n }\n }\n }\n else if (!this.parent.allowSorting || !this.parent.ensureModuleInjected(Sort) ||\n this.parent.allowSorting && this.targetColumn && !this.targetColumn.allowSorting) {\n status = true;\n }\n break;\n case 'Filter':\n if (this.parent.allowFiltering && (this.parent.filterSettings.type !== 'FilterBar')\n && this.parent.ensureModuleInjected(Filter) && this.targetColumn && this.targetColumn.allowFiltering) {\n status = false;\n }\n else if (this.parent.ensureModuleInjected(Filter) && this.parent.allowFiltering\n && this.targetColumn && (!this.targetColumn.allowFiltering || this.parent.filterSettings.type === 'FilterBar')) {\n status = true;\n }\n }\n return status;\n }\n columnMenuItemClick(args) {\n let item = this.isChooserItem(args.item) ? 'ColumnChooser' : this.getKeyFromId(args.item.id);\n switch (item) {\n case 'AutoFit':\n this.parent.autoFitColumns(this.targetColumn.field);\n break;\n case 'AutoFitAll':\n this.parent.autoFitColumns([]);\n break;\n case 'Ungroup':\n this.parent.ungroupColumn(this.targetColumn.field);\n break;\n case 'Group':\n this.parent.groupColumn(this.targetColumn.field);\n break;\n case 'SortAscending':\n this.parent.sortColumn(this.targetColumn.field, 'Ascending');\n break;\n case 'SortDescending':\n this.parent.sortColumn(this.targetColumn.field, 'Descending');\n break;\n case 'ColumnChooser':\n let key = this.getKeyFromId(args.item.id, this.CHOOSER);\n let checkbox = args.element.querySelector('.e-checkbox-wrapper .e-frame');\n if (checkbox && checkbox.classList.contains('e-check')) {\n checkbox.classList.remove('e-check');\n this.parent.hideColumns(key, 'field');\n }\n else if (checkbox) {\n this.parent.showColumns(key, 'field');\n checkbox.classList.add('e-check');\n }\n break;\n case 'Filter':\n this.getFilter(args.element, args.item.id);\n break;\n }\n args.column = this.targetColumn;\n this.parent.trigger(columnMenuClick, args);\n }\n columnMenuOnClose(args) {\n let parent = 'parentObj';\n if (args.items.length > 0 && args.items[0][parent] instanceof ContextMenu) {\n this.columnMenu.enableItems(this.disableItems, false);\n this.disableItems = [];\n this.columnMenu.showItems(this.hiddenItems);\n this.hiddenItems = [];\n if (this.isFilterPopupOpen()) {\n this.getFilter(args.element, args.element.id, true);\n }\n }\n if (!this.parent.getFrozenColumns()) {\n this.parent.notify(restoreFocus, {});\n }\n }\n getDefaultItems() {\n return ['AutoFitAll', 'AutoFit', 'SortAscending', 'SortDescending', 'Group', 'Ungroup', 'ColumnChooser', 'Filter'];\n }\n getItems() {\n let items = [];\n let defultItems = this.parent.columnMenuItems ? this.parent.columnMenuItems : this.getDefault();\n for (let item of defultItems) {\n if (typeof item === 'string') {\n if (item === 'ColumnChooser') {\n let col = this.getDefaultItem(item);\n col.items = this.createChooserItems();\n items.push(col);\n }\n else {\n items.push(this.getDefaultItem(item));\n }\n }\n else {\n items.push(item);\n }\n }\n return items;\n }\n getDefaultItem(item) {\n let menuItem = {};\n switch (item) {\n case 'SortAscending':\n menuItem = { iconCss: this.ASCENDING };\n break;\n case 'SortDescending':\n menuItem = { iconCss: this.DESCENDING };\n break;\n case 'Group':\n menuItem = { iconCss: this.GROUP };\n break;\n case 'Ungroup':\n menuItem = { iconCss: this.UNGROUP };\n break;\n case 'Filter':\n menuItem = { iconCss: this.FILTER };\n break;\n }\n this.defaultItems[item] = {\n text: this.getLocaleText(item), id: this.generateID(item),\n iconCss: menuItem.iconCss ? 'e-icons ' + menuItem.iconCss : null\n };\n return this.defaultItems[item];\n }\n getLocaleText(item) {\n return this.l10n.getConstant(this.localeText[item]);\n }\n generateID(item, append$$1) {\n return this.gridID + '_colmenu_' + (append$$1 ? append$$1 + item : item);\n }\n getKeyFromId(id, append$$1) {\n return id.indexOf('_colmenu_') > 0 &&\n id.replace(this.gridID + '_colmenu_' + (append$$1 ? append$$1 : ''), '');\n }\n /**\n * @hidden\n */\n getColumnMenu() {\n return this.element;\n }\n getModuleName() {\n return 'columnMenu';\n }\n setLocaleKey() {\n let localeKeys = {\n 'AutoFitAll': 'autoFitAll',\n 'AutoFit': 'autoFit',\n 'Group': 'Group',\n 'Ungroup': 'Ungroup',\n 'SortAscending': 'SortAscending',\n 'SortDescending': 'SortDescending',\n 'ColumnChooser': 'Columnchooser',\n 'Filter': 'FilterMenu'\n };\n if (isBlazor()) {\n let autoFitAll = 'AutoFitAll';\n localeKeys[autoFitAll] = 'AutoFitAll';\n let autoFit = 'AutoFit';\n localeKeys[autoFit] = 'AutoFit';\n }\n return localeKeys;\n }\n getHeaderCell(e) {\n return closest(e.target, 'th.e-headercell');\n }\n getColumn() {\n if (this.headerCell) {\n let uid = this.headerCell.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n return this.parent.getColumnByUid(uid);\n }\n return null;\n }\n createChooserItems() {\n let items = [];\n for (let col of this.parent.columnModel) {\n if (col.showInColumnChooser && col.field) {\n items.push({ id: this.generateID(col.field, this.CHOOSER), text: col.headerText ? col.headerText : col.field });\n }\n }\n return items;\n }\n appendFilter(e) {\n let filter = 'Filter';\n if (!this.defaultItems[filter]) {\n return;\n }\n else {\n let key = this.defaultItems[filter].id;\n if (closest(e.target, '#' + key) && !this.isFilterPopupOpen()) {\n this.getFilter(e.target, key);\n }\n else if (!closest(e.target, '#' + key) && this.isFilterPopupOpen()) {\n this.getFilter(e.target, key, true);\n }\n }\n }\n getFilter(target, id, isClose) {\n let filterPopup = this.getFilterPop();\n if (filterPopup) {\n filterPopup.style.display = !Browser.isDevice && isClose ? 'none' : 'block';\n }\n else {\n this.parent.notify(filterOpen, {\n col: this.targetColumn, target: target, isClose: isClose, id: id\n });\n }\n }\n setPosition(li, ul) {\n let gridPos = this.parent.element.getBoundingClientRect();\n let liPos = li.getBoundingClientRect();\n let left = liPos.left - gridPos.left;\n let top = liPos.top - gridPos.top;\n if (gridPos.height < top) {\n top = top - ul.offsetHeight + liPos.height;\n }\n else if (gridPos.height < top + ul.offsetHeight) {\n top = gridPos.height - ul.offsetHeight;\n }\n if (window.innerHeight < ul.offsetHeight + top + gridPos.top) {\n top = window.innerHeight - ul.offsetHeight - gridPos.top;\n }\n left += (this.parent.enableRtl ? -ul.offsetWidth : liPos.width);\n if (gridPos.width <= left + ul.offsetWidth) {\n left -= liPos.width + ul.offsetWidth;\n }\n else if (left < 0) {\n left += ul.offsetWidth + liPos.width;\n }\n ul.style.top = top + 'px';\n ul.style.left = left + 'px';\n }\n filterPosition(e) {\n let filterPopup = this.getFilterPop();\n filterPopup.classList.add(this.WRAP);\n if (!Browser.isDevice) {\n let disp = filterPopup.style.display;\n filterPopup.style.cssText += 'display:block;visibility:hidden';\n let li = this.element.querySelector('.' + this.FILTER);\n if (li) {\n this.setPosition(li.parentElement, filterPopup);\n filterPopup.style.cssText += 'display:' + disp + ';visibility:visible';\n }\n }\n }\n getDefault() {\n let items = [];\n if (this.parent.ensureModuleInjected(Resize)) {\n items.push('AutoFitAll');\n items.push('AutoFit');\n }\n if (this.parent.allowGrouping && this.parent.ensureModuleInjected(Group)) {\n items.push('Group');\n items.push('Ungroup');\n }\n if (this.parent.allowSorting && this.parent.ensureModuleInjected(Sort)) {\n items.push('SortAscending');\n items.push('SortDescending');\n }\n items.push('ColumnChooser');\n if (this.parent.allowFiltering && (this.parent.filterSettings.type !== 'FilterBar') &&\n this.parent.ensureModuleInjected(Filter)) {\n items.push('Filter');\n }\n return items;\n }\n isFilterPopupOpen() {\n let filterPopup = this.getFilterPop();\n return filterPopup && filterPopup.style.display !== 'none';\n }\n getFilterPop() {\n if (Browser.isDevice && this.targetColumn !== null && this.parent.filterSettings.type === 'Menu') {\n return document.getElementById(this.targetColumn.uid + '-flmdlg');\n }\n return this.parent.element.querySelector('.' + this.POP);\n }\n isFilterItemAdded() {\n return (this.parent.columnMenuItems &&\n this.parent.columnMenuItems.indexOf('Filter') >= 0) || !this.parent.columnMenuItems;\n }\n}\n\n/**\n * `ForeignKey` module is used to handle foreign key column's actions.\n */\nclass ForeignKey extends Data {\n constructor(parent, serviceLocator) {\n super(parent, serviceLocator);\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.initEvent();\n }\n initEvent() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initForeignKeyColumn, this.initForeignKeyColumns, this);\n this.parent.on(getForeignKeyData, this.getForeignKeyData, this);\n this.parent.on(generateQuery, this.generateQueryFormData, this);\n }\n initForeignKeyColumns(columns) {\n for (let i = 0; i < columns.length; i++) {\n columns[i].dataSource = (columns[i].dataSource instanceof DataManager ? columns[i].dataSource :\n (isNullOrUndefined(columns[i].dataSource) ? new DataManager() : 'result' in columns[i].dataSource ? columns[i].dataSource :\n new DataManager(columns[i].dataSource)));\n }\n }\n eventfPromise(args, query, key, column) {\n let state = this.getStateEventArgument(query);\n let def = new Deferred();\n let deff = new Deferred();\n state.action = args.action;\n let dataModule = this.parent.getDataModule();\n if (!isNullOrUndefined(args.action) && args.action.requestType && dataModule.foreignKeyDataState.isDataChanged !== false) {\n dataModule.setForeignKeyDataState({\n isPending: true, resolver: deff.resolve\n });\n deff.promise.then(() => {\n def.resolve(column.dataSource);\n });\n state.setColumnData = this.parent.setForeignKeyData.bind(this.parent);\n this.parent.trigger(columnDataStateChange, state);\n }\n else {\n dataModule.setForeignKeyDataState({});\n def.resolve(key);\n }\n return def;\n }\n getForeignKeyData(args) {\n let foreignColumns = args.column ? [args.column] : this.parent.getForeignKeyColumns();\n let allPromise = [];\n for (let i = 0; i < foreignColumns.length; i++) {\n let promise;\n let query = args.isComplex ? this.genarateColumnQuery(foreignColumns[i]) :\n this.genarateQuery(foreignColumns[i], args.result.result, false, true);\n query.params = this.parent.query.params;\n let dataSource = foreignColumns[i].dataSource;\n if (dataSource && 'result' in dataSource) {\n let def = this.eventfPromise(args, query, dataSource, foreignColumns[i]);\n promise = def.promise;\n }\n else if (!dataSource.ready || dataSource.dataSource.offline) {\n promise = dataSource.executeQuery(query);\n }\n else {\n promise = dataSource.ready.then(() => {\n return dataSource.executeQuery(query);\n });\n }\n allPromise.push(promise);\n }\n Promise.all(allPromise).then((responses) => {\n for (let i = 0; i < responses.length; i++) {\n foreignColumns[i].columnData = responses[i].result;\n if (foreignColumns[i].editType === 'dropdownedit' && 'result' in foreignColumns[i].dataSource) {\n foreignColumns[i].edit.params = extend(foreignColumns[i].edit.params, {\n dataSource: responses[i].result,\n query: new Query(), fields: {\n value: foreignColumns[i].foreignKeyField || foreignColumns[i].field,\n text: foreignColumns[i].foreignKeyValue\n }\n });\n }\n }\n args.promise.resolve(args.result);\n }).catch((e) => {\n this.parent.log(['actionfailure', 'foreign_key_failure']);\n if (args.promise && args.promise.reject) {\n args.promise.reject(e);\n }\n return e;\n });\n }\n generateQueryFormData(args) {\n args.predicate.predicate = this.genarateQuery(args.column, args.column.columnData, true);\n }\n genarateQuery(column, e, fromData, needQuery) {\n let gObj = this.parent;\n let predicates = [];\n let predicate;\n let query = new Query();\n let field = fromData ? column.foreignKeyField : column.field;\n if (gObj.allowPaging || gObj.enableVirtualization || fromData) {\n e = new DataManager(((gObj.allowGrouping && gObj.groupSettings.columns.length && !fromData) ?\n e.records : e)).executeLocal(new Query().select(field));\n let filteredValue = DataUtil.distinct(e, field, false);\n field = fromData ? column.field : column.foreignKeyField;\n for (let i = 0; i < filteredValue.length; i++) {\n if (filteredValue[i] && filteredValue[i].getDay) {\n predicates.push(getDatePredicate({ field: field, operator: 'equal', value: filteredValue[i], matchCase: false }));\n }\n else {\n predicates.push(new Predicate(field, 'equal', filteredValue[i], false));\n }\n }\n }\n if (needQuery) {\n return predicates.length ? query.where(Predicate.or(predicates)) : query;\n }\n predicate = (predicates.length ? Predicate.or(predicates) : { predicates: [] });\n return predicate;\n }\n genarateColumnQuery(column) {\n let gObj = this.parent;\n let query = new Query();\n let queryColumn = this.isFiltered(column);\n if (queryColumn.isTrue) {\n query = this.filterQuery(query, queryColumn.column, true);\n }\n if (gObj.searchSettings.key.length) {\n let sSettings = gObj.searchSettings;\n if (column.dataSource instanceof DataManager && (column.dataSource.adaptor.getModuleName &&\n column.dataSource.adaptor.getModuleName() === 'ODataV4Adaptor')) {\n query = this.searchQuery(query, column, true);\n }\n else {\n query.search(sSettings.key, column.foreignKeyValue, sSettings.operator, sSettings.ignoreCase);\n }\n }\n return query;\n }\n isFiltered(column) {\n let filterColumn = this.parent.filterSettings.columns.filter((fColumn) => {\n return (fColumn.field === column.foreignKeyValue && fColumn.uid === column.uid);\n });\n return {\n column: filterColumn, isTrue: !!filterColumn.length\n };\n }\n getModuleName() {\n return 'foreignKey';\n }\n destroy() {\n this.destroyEvent();\n }\n destroyEvent() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(initForeignKeyColumn, this.initForeignKeyColumns);\n this.parent.off(getForeignKeyData, this.getForeignKeyData);\n this.parent.off(generateQuery, this.generateQueryFormData);\n }\n}\n\n/**\n *\n * `Logger` class\n */\nconst BASE_DOC_URL = 'https://ej2.syncfusion.com/documentation/grid';\nconst DOC_URL = 'https://ej2.syncfusion.com/documentation/';\nconst WARNING = '[EJ2Grid.Warning]';\nconst ERROR = '[EJ2Grid.Error]';\nconst INFO = '[EJ2Grid.Info]';\nclass Logger {\n constructor(parent) {\n this.parent = parent;\n this.parent.on('initial-end', this.patchadaptor, this);\n }\n getModuleName() {\n return 'logger';\n }\n log(types, args) {\n if (!(types instanceof Array)) {\n types = [types];\n }\n let type = types;\n for (let i = 0; i < type.length; i++) {\n let item = detailLists[type[i]];\n let cOp = item.check(args, this.parent);\n if (cOp.success) {\n console[item.logType](item.generateMessage(args, this.parent, cOp.options));\n }\n }\n }\n patchadaptor() {\n let adaptor = this.parent.getDataModule().dataManager.adaptor;\n let original = adaptor.beforeSend;\n if (original) {\n adaptor.beforeSend = (dm, request, settings) => {\n original.call(adaptor, dm, request, settings);\n };\n }\n }\n destroy() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('initial-end', this.patchadaptor);\n }\n}\nconst detailLists = {\n module_missing: {\n type: 'module_missing',\n logType: 'warn',\n check(args, parent) {\n let injected = parent.getInjectedModules().map((m) => m.prototype.getModuleName());\n /* tslint:disable-next-line:no-any */\n let modules = parent.requiredModules().map((m) => m.member)\n .filter((name) => injected.indexOf(name) === -1);\n return { success: modules.filter((m) => m !== 'resize').length > 0, options: modules };\n },\n generateMessage(args, parent, modules) {\n modules = modules.filter((m) => m !== 'resize')\n .reduce((prev, cur) => prev + `* ${cur}\\n`, '');\n return WARNING + ': MODULES MISSING\\n' + 'The following modules are not injected:.\\n' +\n `${modules}` +\n `Refer to ${BASE_DOC_URL}/module.html for documentation on importing feature modules.`;\n }\n },\n promise_enabled: {\n type: 'promise_enabled',\n logType: 'error',\n check(args, parent) {\n return { success: typeof Promise === 'undefined' };\n },\n generateMessage(args, parent) {\n return ERROR + ': PROMISE UNDEFINED\\n' +\n 'Promise object is not present in the global environment,' +\n 'please use polyfil to support Promise object in your environment.\\n' +\n `Refer to ${DOC_URL}/base/browser.html?#required-polyfills for more information.`;\n }\n },\n primary_column_missing: {\n type: 'primary_column_missing',\n logType: 'warn',\n check(args, parent) {\n return { success: parent.getColumns().filter((column) => column.isPrimaryKey).length === 0 };\n },\n generateMessage(args, parent) {\n return WARNING + ': PRIMARY KEY MISSING\\n' + 'Editing is enabled but primary key column is not specified.\\n' +\n `Refer to ${BASE_DOC_URL}/api-column.html?#isprimarykey for documentation on providing primary key columns.`;\n }\n },\n selection_key_missing: {\n type: 'selection_key_missing',\n logType: 'warn',\n check(args, parent) {\n return { success: parent.selectionSettings.persistSelection &&\n parent.getColumns().filter((column) => column.isPrimaryKey).length === 0 };\n },\n generateMessage(args, parent) {\n return WARNING + ': PRIMARY KEY MISSING\\n' +\n 'selectionSettings.persistSelection property is enabled. It requires one primary key column to persist selection.\\n' +\n `Refer to ${BASE_DOC_URL}/api-column.html?#isprimarykey for documentation on providing primary key columns.`;\n }\n },\n actionfailure: {\n type: 'actionfailure',\n logType: 'error',\n check(args, parent) {\n return { success: true };\n },\n generateMessage(args, parent) {\n let message = '';\n let formatError = formatErrorHandler(args, parent);\n let ajaxError = ajaxErrorHandler(args, parent);\n if (ajaxError !== '') {\n message = ajaxError;\n }\n else if (formatError !== '') {\n message = formatError;\n }\n else {\n message = args.error;\n }\n return WARNING + ': ' + message;\n }\n },\n locale_missing: {\n type: 'locale_missing',\n logType: 'warn',\n check(args, parent) {\n let lObj = DataUtil.getObject(`locale.${parent.locale}.grid`, L10n);\n return { success: parent.locale !== 'en-US' && isNullOrUndefined(lObj) };\n },\n generateMessage(args, parent) {\n return WARNING + ': LOCALE CONFIG MISSING\\n' + `Locale configuration for '${parent.locale}' is not provided.\\n` +\n `Refer to ${BASE_DOC_URL}/globalization-and-localization.html?#localization \n for documentation on setting locale configuration.`;\n }\n },\n limitation: {\n type: 'limitation',\n logType: 'warn',\n check(args, parent) {\n let name = args;\n let opt;\n switch (name) {\n case 'freeze':\n opt = {\n success: parent.allowGrouping || !isUndefined(parent.detailTemplate) || !isUndefined(parent.childGrid)\n || !isUndefined(parent.rowTemplate) || parent.enableVirtualization,\n options: { name: 'freeze' }\n };\n break;\n case 'virtualization':\n opt = {\n success: !isUndefined(parent.detailTemplate) || !isUndefined(parent.childGrid) || parent.frozenRows !== 0\n || parent.frozenColumns !== 0,\n options: { name: 'virtualization' }\n };\n break;\n default:\n opt = { success: false };\n break;\n }\n return opt;\n },\n generateMessage(args, parent, options) {\n let name = options.name;\n let opt;\n switch (name) {\n case 'freeze':\n opt = 'Frozen rows and columns do not support the following features:\\n' +\n '* Virtualization\\n' +\n '* Row Template\\n' +\n '* Details Template\\n' +\n '* Hierarchy Grid\\n' +\n '* Grouping';\n break;\n case 'virtualization':\n opt = 'Virtualization does not support the following features.\\n' +\n '* Freeze rows and columns.\\n' +\n '* Details Template.\\n' +\n '* Hierarchy Grid.\\n';\n break;\n default:\n opt = '';\n break;\n }\n return WARNING + `: ${name.toUpperCase()} LIMITATIONS\\n` + opt;\n }\n },\n check_datasource_columns: {\n type: 'check_datasource_columns',\n logType: 'warn',\n check(args, parent) {\n return { success: !(parent.columns.length ||\n (parent.dataSource instanceof DataManager) || parent.dataSource.length) };\n },\n generateMessage(args, parent) {\n return WARNING + ': GRID CONFIG MISSING\\n' + 'dataSource and columns are not provided in the grid. ' +\n 'At least one of either must be provided for grid configuration.\\n' +\n `Refer to ${BASE_DOC_URL}/columns.html for documentation on configuring the grid data and columns.`;\n }\n },\n virtual_height: {\n type: 'virtual_height',\n logType: 'error',\n check(args, parent) {\n return { success: isNullOrUndefined(parent.height) || parent.height === 'auto' };\n },\n generateMessage(args, parent) {\n return ERROR + ': GRID HEIGHT MISSING \\n' + 'height property is required to use virtualization.\\n' +\n `Refer to ${BASE_DOC_URL}/virtual.html for documentation on configuring the virtual grid.`;\n }\n },\n grid_remote_edit: {\n type: 'grid_remote_edit',\n logType: 'error',\n check(args, parent) {\n return { success: Array.isArray(args) || Array.isArray(args.result) };\n },\n generateMessage(args, parent) {\n return ERROR + ': RETRUN VALUE MISSING \\n' +\n 'Remote service returns invalid data. \\n' +\n `Refer to ${BASE_DOC_URL}/edit.html for documentation on configuring editing with remote data.`;\n }\n },\n grid_sort_comparer: {\n type: 'grid_sort_comparer',\n logType: 'warn',\n check(args, parent) {\n return { success: parent.getDataModule().isRemote() };\n },\n generateMessage(args, parent) {\n return WARNING + ': SORT COMPARER NOT WORKING \\n' + 'Sort comparer will not work with remote data.' +\n `Refer to ${BASE_DOC_URL}/sorting/#custom-sort-comparer for documentation on using the sort comparer.`;\n }\n },\n resize_min_max: {\n type: 'resize_min_max',\n logType: 'info',\n check(args, parent) {\n return { success: (args.column.minWidth && args.column.minWidth >= args.width) ||\n (args.column.maxWidth && args.column.maxWidth <= args.width) };\n },\n generateMessage(args, parent) {\n return INFO + ': RESIZING COLUMN REACHED MIN OR MAX \\n' + 'The column resizing width is at its min or max.';\n }\n },\n action_disabled_column: {\n type: 'action_disabled_column',\n logType: 'info',\n check(args, parent) {\n let success = true;\n let fn;\n switch (args.moduleName) {\n case 'reorder':\n if (isNullOrUndefined(args.destColumn)) {\n fn = `reordering action is disabled for the ${args.column.headerText} column`;\n }\n else {\n fn = `reordering action is disabled for the ${args.column.allowReordering ?\n args.destColumn.headerText : args.column.headerText} column`;\n }\n break;\n case 'group':\n fn = `grouping action is disabled for the ${args.columnName} column.`;\n break;\n case 'filter':\n fn = `filtering action is disabled for the ${args.columnName} column.`;\n break;\n case 'sort':\n fn = `sorting action is disabled for the ${args.columnName} column.`;\n break;\n }\n return { success: success, options: { fn } };\n },\n generateMessage(args, parent, options) {\n return INFO + `: ACTION DISABLED \\n ${options.fn}`;\n }\n },\n exporting_begin: {\n type: 'exporting_begin',\n logType: 'info',\n check(args, parent) {\n return { success: true, options: { args } };\n },\n generateMessage(args, parent, options) {\n return INFO + `: EXPORTNIG INPROGRESS \\n Grid ${options.args}ing is in progress`;\n }\n },\n exporting_complete: {\n type: 'exporting_complete',\n logType: 'info',\n check(args, parent) {\n return { success: true, options: { args } };\n },\n generateMessage(args, parent, options) {\n return INFO + `: EXPORTNIG COMPLETED \\n Grid ${options.args}ing is complete`;\n }\n },\n foreign_key_failure: {\n type: 'foreign_key_failure',\n logType: 'error',\n check(args, parent) {\n return { success: true };\n },\n generateMessage(args, parent) {\n return ERROR + ': FOREIGNKEY CONFIG \\n Grid foreign key column needs a valid data source/service.' +\n `Refer to ${BASE_DOC_URL}/columns/#foreign-key-column for documentation on configuring foreign key columns.`;\n }\n },\n initial_action: {\n type: 'initial_action',\n logType: 'error',\n check(args, parent) {\n let success = true;\n let fn;\n switch (args.moduleName) {\n case 'group':\n fn = `The ${args.columnName} column is not available in the grid's column model.` +\n 'Please provide a valid field name to group the column';\n break;\n case 'filter':\n fn = `The ${args.columnName} column is not available in the grid's column model.` +\n 'Please provide a valid field name to filter the column.';\n break;\n case 'sort':\n fn = `The ${args.columnName} column is not available in the grid's column model.` +\n 'Please provide a valid field name to sort the column.';\n break;\n }\n return { success: success, options: { fn } };\n },\n generateMessage(args, parent, options) {\n return ERROR + `: INITIAL ACTION FAILURE \\n ${options.fn}`;\n }\n },\n frozen_rows_columns: {\n type: 'frozen_rows_columns',\n logType: 'error',\n check(args, parent) {\n return { success: parent.getColumns().length <= parent.frozenColumns || parent.frozenRows >= parent.currentViewData.length };\n },\n generateMessage(args, parent, options) {\n return ERROR + `: OUT OF RANGE ERROR-\\n ${parent.getColumns().length <= parent.frozenColumns ? 'FROZEN COLUMNS,' : ''}` +\n `${parent.frozenRows >= parent.currentViewData.length ? 'FROZEN ROWS' : ''} invalid`;\n }\n },\n column_type_missing: {\n type: 'column_type_missing',\n logType: 'error',\n check(args, parent) {\n return { success: isNullOrUndefined(args.column.type), options: args.column.headerText };\n },\n generateMessage(args, parent, options) {\n return ERROR + `: COLUMN TYPE MISSING-\\n ${options} column type was invalid or not defined.` +\n `Please go through below help link: ${DOC_URL}/grid/columns/#column-type`;\n }\n },\n datasource_syntax_mismatch: {\n type: 'datasource_syntax_mismatch',\n logType: 'warn',\n check(args, parent) {\n return { success: (args.dataState.dataSource instanceof DataManager || args.dataState.dataSource instanceof Array) &&\n !(isNullOrUndefined(args.dataState.dataStateChange)) };\n },\n generateMessage(args, parent, options) {\n return WARNING + ': DATASOURCE SYNTAX WARNING\\n' +\n 'DataSource should be in the form of {result: Object[], count: number}' +\n 'when dataStateChangeEvent used';\n }\n }\n};\nlet formatErrorHandler = (args, parent) => {\n let error = args.error;\n if (error.indexOf && error.indexOf('Format options') !== 0) {\n return '';\n }\n return 'INVALID FORMAT\\n' +\n 'For more information, refer to the following documentation links:\\n' +\n `Number format: ${DOC_URL}/base/intl.html?#supported-format-string.\\n` +\n `Date format: ${DOC_URL}/base/intl.html?#manipulating-datetime.\\n` +\n `Message: ${error}`;\n};\nlet ajaxErrorHandler = (args, parent) => {\n let error = DataUtil.getObject('error.error', args);\n if (isNullOrUndefined(error)) {\n return '';\n }\n let jsonResult = '';\n try {\n jsonResult = JSON.parse(error.responseText);\n }\n catch (_a) {\n jsonResult = '';\n }\n return 'XMLHTTPREQUEST FAILED\\n' +\n `Url: ${error.responseURL}\\n` +\n `Status: ${error.status} - ${error.statusText}\\n` +\n `${jsonResult !== '' ? 'Message: ' + jsonResult : ''}`;\n};\n\n/**\n * Infinite Scrolling class\n */\nclass InfiniteScroll {\n /**\n * Constructor for the Grid infinite scrolling.\n * @hidden\n */\n constructor(parent, serviceLocator) {\n this.infiniteCache = {};\n this.infiniteFrozenCache = {};\n this.isDownScroll = false;\n this.isUpScroll = false;\n this.isScroll = true;\n this.enableContinuousScroll = false;\n this.initialRender = true;\n this.isRemove = false;\n this.isInitialCollapse = false;\n this.prevScrollTop = 0;\n this.actions = ['filtering', 'searching', 'grouping', 'ungrouping', 'reorder', 'sorting'];\n this.keys = ['downArrow', 'upArrow', 'PageUp', 'PageDown'];\n this.rowTop = 0;\n this.isInitialMovableRender = true;\n this.virtualInfiniteData = {};\n this.isCancel = false;\n this.emptyRowData = {};\n this.isNormaledit = false;\n this.isInfiniteScroll = false;\n this.isLastPage = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.isNormaledit = this.parent.editSettings.mode === 'Normal';\n this.addEventListener();\n this.rowModelGenerator = this.parent.getFrozenColumns() ? new FreezeRowModelGenerator(this.parent)\n : new RowModelGenerator(this.parent);\n }\n getModuleName() {\n return 'infiniteScroll';\n }\n /**\n * @hidden\n */\n addEventListener() {\n this.parent.on(dataReady, this.onDataReady, this);\n this.parent.on(dataSourceModified, this.dataSourceModified, this);\n this.parent.on(infinitePageQuery, this.infinitePageQuery, this);\n this.parent.on(infiniteScrollHandler, this.infiniteScrollHandler, this);\n this.parent.on(beforeCellFocused, this.infiniteCellFocus, this);\n this.parent.on(appendInfiniteContent, this.appendInfiniteRows, this);\n this.parent.on(removeInfiniteRows, this.removeInfiniteCacheRows, this);\n this.parent.on(resetInfiniteBlocks, this.resetInfiniteBlocks, this);\n this.parent.on(setInfiniteCache, this.setCache, this);\n this.parent.on(initialCollapse, this.ensureIntialCollapse, this);\n this.parent.on(keyPressed, this.infiniteCellFocus, this);\n this.parent.on(infiniteShowHide, this.setDisplayNone, this);\n this.parent.on(virtualScrollEditActionBegin, this.editActionBegin, this);\n this.parent.on(getVirtualData, this.getVirtualInfiniteData, this);\n this.parent.on(editReset, this.resetInfiniteEdit, this);\n this.parent.on(virtualScrollEditSuccess, this.infiniteEditSuccess, this);\n this.parent.on(refreshVirtualCache, this.refreshInfiniteCache, this);\n this.parent.on(infiniteEditHandler, this.infiniteEditHandler, this);\n this.parent.on(virtualScrollAddActionBegin, this.infiniteAddActionBegin, this);\n this.parent.on(modelChanged, this.modelChanged, this);\n this.parent.addEventListener(actionBegin, this.actionBegin.bind(this));\n this.parent.addEventListener(actionComplete, this.actionComplete.bind(this));\n }\n /**\n * @hidden\n */\n removeEventListener() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(dataReady, this.onDataReady);\n this.parent.off(dataSourceModified, this.dataSourceModified);\n this.parent.off(infinitePageQuery, this.infinitePageQuery);\n this.parent.off(infiniteScrollHandler, this.infiniteScrollHandler);\n this.parent.off(beforeCellFocused, this.infiniteCellFocus);\n this.parent.off(appendInfiniteContent, this.appendInfiniteRows);\n this.parent.off(removeInfiniteRows, this.removeInfiniteCacheRows);\n this.parent.off(resetInfiniteBlocks, this.resetInfiniteBlocks);\n this.parent.off(setInfiniteCache, this.setCache);\n this.parent.off(initialCollapse, this.ensureIntialCollapse);\n this.parent.off(keyPressed, this.infiniteCellFocus);\n this.parent.off(infiniteShowHide, this.setDisplayNone);\n this.parent.off(virtualScrollEditActionBegin, this.editActionBegin);\n this.parent.off(getVirtualData, this.getVirtualInfiniteData);\n this.parent.off(editReset, this.resetInfiniteEdit);\n this.parent.off(virtualScrollEditSuccess, this.infiniteEditSuccess);\n this.parent.off(refreshVirtualCache, this.refreshInfiniteCache);\n this.parent.off(infiniteEditHandler, this.infiniteEditHandler);\n this.parent.off(virtualScrollAddActionBegin, this.infiniteAddActionBegin);\n this.parent.off(modelChanged, this.modelChanged);\n this.parent.removeEventListener(actionBegin, this.actionBegin.bind(this));\n this.parent.removeEventListener(actionComplete, this.actionComplete.bind(this));\n }\n modelChanged(args) {\n if (args.requestType !== 'infiniteScroll' && (args.requestType === 'delete' || this.requestType === 'add')) {\n let rows = this.parent.getRows();\n this.firstIndex = parseInt(rows[0].getAttribute('aria-rowindex'), 10);\n this.firstBlock = Math.ceil((this.firstIndex + 1) / this.parent.pageSettings.pageSize);\n this.lastIndex = parseInt(rows[rows.length - 1].getAttribute('aria-rowindex'), 10);\n if (args.requestType === 'delete') {\n let rowObj = this.parent.getRowsObject();\n args.startIndex = this.parent.infiniteScrollSettings.enableCache\n ? (this.firstBlock - 1) * this.parent.pageSettings.pageSize : rowObj[rowObj.length - 1].index;\n }\n else {\n args.startIndex = this.firstIndex;\n }\n if (!this.parent.infiniteScrollSettings.enableCache\n && this.parent.pageSettings.currentPage === this.maxPage && args.requestType === 'delete') {\n this.isLastPage = true;\n this.lastIndex = this.lastIndex - 1;\n }\n }\n }\n infiniteAddActionBegin(args) {\n if (this.isNormaledit) {\n this.isAdd = true;\n if (this.parent.infiniteScrollSettings.enableCache) {\n if (!Object.keys(this.emptyRowData).length) {\n this.createEmptyRowdata();\n }\n if (this.parent.pageSettings.currentPage > 1) {\n args.startEdit = false;\n this.resetInfiniteBlocks({}, true);\n this.makeRequest({ currentPage: 1 });\n }\n }\n }\n }\n infiniteEditHandler(args) {\n if (!this.parent.infiniteScrollSettings.enableCache && (args.e.requestType === 'delete'\n || (args.e.requestType === 'save' && this.requestType === 'add'))) {\n let frozenCols = this.parent.getFrozenColumns();\n let rowElms = this.parent.getRows();\n let rows = this.parent.getRowsObject();\n if (this.ensureRowAvailability(rows, args.result[0])) {\n this.resetRowIndex(rows, args.e, rowElms, this.requestType === 'add');\n if (frozenCols) {\n let rows = this.parent.getMovableRowsObject();\n this.resetRowIndex(rows, args.e, this.parent.getMovableDataRows(), this.requestType === 'add');\n }\n if (!this.isLastPage) {\n this.createRow(rows, args);\n }\n else {\n this.isLastPage = false;\n this.parent.pageSettings.currentPage = this.maxPage;\n if (this.parent.selectionModule.index < this.parent.frozenRows) {\n remove(rowElms[this.parent.frozenRows - 1]);\n this.createRow([rows[this.parent.frozenRows - 1]], args, false, true);\n if (frozenCols) {\n let movableRows = this.parent.getMovableDataRows();\n remove(movableRows[this.parent.frozenRows]);\n this.createRow([this.parent.getMovableRowsObject()[this.parent.frozenRows - 1]], args, true, true);\n }\n this.setRowElements();\n }\n }\n }\n this.parent.hideSpinner();\n this.requestType === 'delete' ? this.parent.notify(deleteComplete, args.e)\n : this.parent.notify(saveComplete, args.e);\n }\n }\n createRow(rows, args, isMovable, isFrozenRows) {\n let row = !isFrozenRows ? this.generateRows(args.result, args.e) : rows;\n let rowRenderer = new RowRenderer(this.serviceLocator, null, this.parent);\n let tbody = !this.parent.getFrozenColumns() ? this.parent.getContent().querySelector('tbody') : isMovable\n ? this.parent.getMovableVirtualContent().querySelector('tbody') : this.parent.getFrozenVirtualContent().querySelector('tbody');\n if (this.parent.frozenRows) {\n tbody = isFrozenRows && this.requestType !== 'add' || !isFrozenRows && this.requestType === 'add'\n ? !this.parent.getFrozenColumns() ? this.parent.getHeaderContent().querySelector('tbody')\n : isMovable ? this.parent.getMovableVirtualHeader().querySelector('tbody')\n : this.parent.getFrozenVirtualHeader().querySelector('tbody') : tbody;\n }\n for (let i = row.length - 1; i >= 0; i--) {\n if (this.requestType === 'delete') {\n tbody.appendChild(rowRenderer.render(row[i], this.parent.getColumns()));\n }\n else {\n tbody.insertBefore(rowRenderer.render(row[i], this.parent.getColumns()), tbody.firstElementChild);\n }\n }\n if (!isFrozenRows && this.parent.frozenRows\n && (this.parent.selectionModule.index < this.parent.frozenRows || this.requestType === 'add')) {\n let rowElems = isMovable ? this.parent.getMovableDataRows() : this.parent.getRows();\n let index = isMovable && this.requestType === 'add' ? this.parent.frozenRows : this.parent.frozenRows - 1;\n remove(rowElems[index]);\n this.createRow([rows[this.parent.frozenRows - 1]], args, isMovable, true);\n }\n if (!this.parent.infiniteScrollSettings.enableCache && !isFrozenRows) {\n if (!this.parent.getFrozenColumns() || isMovable) {\n this.setRowElements();\n this.parent.contentModule.visibleRows = this.requestType === 'add'\n ? row.concat(rows) : rows.concat(row);\n }\n else {\n this.parent.contentModule.visibleFrozenRows = this.requestType === 'add'\n ? row.concat(rows) : rows.concat(row);\n this.createRow(this.parent.getMovableRowsObject(), args, true);\n }\n }\n }\n ensureRowAvailability(rows, data) {\n let resume = true;\n if (this.parent.frozenRows && !this.parent.infiniteScrollSettings.enableCache\n && this.parent.sortSettings.columns && this.requestType === 'add') {\n let key = this.parent.getPrimaryKeyFieldNames()[0];\n for (let i = 0; i < rows.length; i++) {\n if (rows[i].data[key] === data[key]) {\n resume = false;\n break;\n }\n }\n }\n return resume;\n }\n generateRows(data, args) {\n return this.rowModelGenerator.generateRows(data, args);\n }\n resetRowIndex(rows, args, rowElms, isAdd) {\n let keyField = this.parent.getPrimaryKeyFieldNames()[0];\n let isRemove = !(rowElms.length % this.parent.pageSettings.pageSize);\n if (isAdd) {\n if (isRemove) {\n remove(rowElms[rows.length - 1]);\n rowElms.splice(rows.length - 1, 1);\n rows.splice(rows.length - 1, 1);\n }\n }\n else {\n rows.filter((e, index) => {\n if (e.data[keyField] === args.data[0][keyField]) {\n rows.splice(index, 1);\n remove(rowElms[index]);\n rowElms.splice(index, 1);\n }\n });\n }\n let startIndex = isAdd ? 1 : 0;\n for (let i = 0; i < rows.length; i++) {\n rows[i].index = startIndex;\n rowElms[i].setAttribute('aria-rowindex', startIndex.toString());\n this.resetCellIndex(rowElms[i].cells, startIndex);\n startIndex++;\n }\n if (!rows.length) {\n this.renderEmptyRow();\n }\n }\n renderEmptyRow() {\n this.parent.renderModule.emptyRow(true);\n }\n resetCellIndex(cells, index) {\n for (let i = 0; i < cells.length; i++) {\n cells[i].setAttribute('index', index.toString());\n }\n }\n setDisplayNone(args) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n let frozenCols = this.parent.getFrozenColumns();\n let keys = frozenCols ? Object.keys(this.infiniteFrozenCache) : Object.keys(this.infiniteCache);\n for (let i = 1; i <= keys.length; i++) {\n let cache = frozenCols ? args.isFreeze ? this.infiniteFrozenCache[i][0]\n : this.infiniteFrozenCache[i][1] : this.infiniteCache[i];\n cache.filter((e) => {\n e.cells[args.index].visible = args.visible === '';\n });\n }\n this.resetContentModuleCache(frozenCols ? this.infiniteFrozenCache : this.infiniteCache);\n }\n }\n refreshInfiniteCache(data) {\n this.getEditedRowObject().data = data;\n }\n getEditedRowObject() {\n let rowObjects = this.parent.getRowsObject();\n let editedrow;\n for (let i = 0; i < rowObjects.length; i++) {\n if (rowObjects[i].index === this.editRowIndex) {\n editedrow = rowObjects[i];\n }\n }\n return editedrow;\n }\n infiniteEditSuccess(args) {\n if (this.isNormaledit) {\n if (!this.isAdd && args.data) {\n this.updateCurrentViewRecords(args.data);\n }\n this.isAdd = false;\n }\n }\n updateCurrentViewRecords(data) {\n let index = getEditedDataIndex(this.parent, data);\n if (!isNullOrUndefined(index)) {\n this.parent.getCurrentViewRecords()[index] = data;\n }\n }\n actionBegin(args) {\n if (args.requestType === 'add' || args.requestType === 'delete') {\n this.requestType = args.requestType;\n }\n }\n actionComplete(args) {\n if (args.requestType === 'delete' || args.requestType === 'save' || args.requestType === 'cancel') {\n this.requestType = this.empty;\n this.isCancel = args.requestType === 'cancel' || args.requestType === 'save';\n this.isAdd = this.isEdit = false;\n if (this.isNormaledit) {\n this.editRowIndex = this.empty;\n this.virtualInfiniteData = {};\n this.parent.editModule.previousVirtualData = {};\n }\n }\n }\n resetInfiniteEdit() {\n if (this.parent.enableInfiniteScrolling && this.isNormaledit) {\n if ((this.parent.editSettings.allowEditing && this.isEdit) || (this.parent.editSettings.allowAdding && this.isAdd)) {\n this.parent.isEdit = true;\n }\n }\n }\n getVirtualInfiniteData(data) {\n data.virtualData = this.virtualInfiniteData;\n data.isAdd = this.isAdd;\n data.isCancel = this.isCancel;\n }\n editActionBegin(e) {\n this.isEdit = true;\n this.editRowIndex = e.index;\n let rowObject = extend({}, this.getEditedRowObject().data);\n e.data = Object.keys(this.virtualInfiniteData).length ? this.virtualInfiniteData : rowObject;\n }\n dataSourceModified() {\n this.resetInfiniteBlocks({ requestType: this.empty }, true);\n }\n onDataReady(e) {\n if (!isNullOrUndefined(e.count)) {\n this.maxPage = Math.ceil(e.count / this.parent.pageSettings.pageSize);\n }\n }\n ensureIntialCollapse(isExpand) {\n this.isInitialCollapse = !isExpand;\n }\n infiniteScrollHandler(e) {\n this.restoreInfiniteEdit();\n this.restoreInfiniteAdd();\n let targetEle = e.target;\n let isInfinite = targetEle.classList.contains('e-content')\n || targetEle.classList.contains('e-movablecontent');\n if (isInfinite && this.parent.enableInfiniteScrolling) {\n let scrollEle = this.parent.getFrozenColumns() ? this.parent.getMovableVirtualContent()\n : this.parent.getContent().firstElementChild;\n this.prevScrollTop = scrollEle.scrollTop;\n let rows = this.parent.getRows();\n let index = parseInt(rows[rows.length - 1].getAttribute('aria-rowindex'), 10) + 1;\n let prevPage = this.parent.pageSettings.currentPage;\n let args;\n let offset = targetEle.scrollHeight - targetEle.scrollTop;\n let round = Math.round(targetEle.scrollHeight - targetEle.scrollTop);\n let floor = offset < targetEle.clientHeight ? Math.ceil(offset) : Math.floor(offset);\n let isBottom = (floor === targetEle.clientHeight || round === targetEle.clientHeight);\n if (this.isScroll && isBottom && (this.parent.pageSettings.currentPage <= this.maxPage - 1 || this.enableContinuousScroll)) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n this.isUpScroll = false;\n this.isDownScroll = true;\n setTimeout(() => {\n this.isScroll = true;\n }, 600);\n }\n let rows = [].slice.call(scrollEle.querySelectorAll('.e-row:not(.e-addedrow)'));\n let row = rows[rows.length - 1];\n let rowIndex = parseInt(row.getAttribute('aria-rowindex'), 10);\n this.parent.pageSettings.currentPage = Math.ceil(rowIndex / this.parent.pageSettings.pageSize) + 1;\n args = {\n requestType: 'infiniteScroll',\n currentPage: this.parent.pageSettings.currentPage,\n prevPage: prevPage,\n startIndex: index,\n direction: 'down'\n };\n this.makeRequest(args);\n }\n if (this.isScroll && this.parent.infiniteScrollSettings.enableCache && targetEle.scrollTop === 0\n && this.parent.pageSettings.currentPage !== 1) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n this.isDownScroll = false;\n this.isUpScroll = true;\n setTimeout(() => {\n this.isScroll = true;\n }, 600);\n }\n let row = [].slice.call(scrollEle.querySelectorAll('.e-row'));\n let rowIndex = parseInt(row[this.parent.pageSettings.pageSize - 1].getAttribute('aria-rowindex'), 10);\n let startIndex = parseInt(row[0].getAttribute('aria-rowindex'), 10) - this.parent.pageSettings.pageSize;\n this.parent.pageSettings.currentPage = Math.ceil(rowIndex / this.parent.pageSettings.pageSize) - 1;\n if (this.parent.pageSettings.currentPage) {\n args = {\n requestType: 'infiniteScroll',\n currentPage: this.parent.pageSettings.currentPage,\n prevPage: prevPage,\n startIndex: startIndex,\n direction: 'up'\n };\n this.makeRequest(args);\n }\n }\n if (this.parent.infiniteScrollSettings.enableCache && !this.isScroll && isNullOrUndefined(args)) {\n if (this.isDownScroll || this.isUpScroll) {\n scrollEle.scrollTop = this.top;\n }\n }\n }\n }\n makeRequest(args) {\n if (this.parent.pageSettings.currentPage !== args.prevPage) {\n if (this.parent.pageSettings.currentPage <= this.maxPage) {\n this.isInfiniteScroll = true;\n if (isNullOrUndefined(this.infiniteCache[args.currentPage])) {\n setTimeout(() => {\n this.getVirtualInfiniteEditedData();\n this.parent.notify('model-changed', args);\n }, 100);\n }\n else {\n setTimeout(() => {\n this.getVirtualInfiniteEditedData();\n this.parent.notify(refreshInfiniteModeBlocks, args);\n }, 100);\n }\n }\n else {\n this.parent.pageSettings.currentPage = this.maxPage;\n }\n }\n }\n infinitePageQuery(query) {\n if (this.initialRender) {\n this.initialRender = false;\n this.intialPageQuery(query);\n }\n else {\n if (!this.isInfiniteScroll && (this.requestType === 'delete' || this.requestType === 'add')) {\n this.editPageQuery(query);\n }\n else {\n query.page(this.parent.pageSettings.currentPage, this.parent.pageSettings.pageSize);\n }\n }\n }\n editPageQuery(query) {\n let initialBlocks = this.parent.infiniteScrollSettings.initialBlocks;\n let isCache = this.parent.infiniteScrollSettings.enableCache;\n if (isCache) {\n this.infiniteCache = {};\n this.infiniteFrozenCache = {};\n query.skip(this.firstIndex);\n query.take(initialBlocks * this.parent.pageSettings.pageSize);\n }\n else {\n if (this.parent.editSettings.mode === 'Dialog') {\n this.parent.clearSelection();\n }\n let index = this.requestType === 'delete' ? this.lastIndex : this.firstIndex;\n query.skip(index);\n query.take(1);\n }\n }\n intialPageQuery(query) {\n if (this.parent.infiniteScrollSettings.enableCache\n && this.parent.infiniteScrollSettings.initialBlocks > this.parent.infiniteScrollSettings.maxBlocks) {\n this.parent.infiniteScrollSettings.initialBlocks = this.parent.infiniteScrollSettings.maxBlocks;\n }\n let pageSize = this.parent.pageSettings.pageSize * this.parent.infiniteScrollSettings.initialBlocks;\n query.page(1, pageSize);\n }\n infiniteCellFocus(e) {\n if (e.byKey && (e.keyArgs.action === 'upArrow' || e.keyArgs.action === 'downArrow')) {\n this.pressedKey = e.keyArgs.action;\n let ele = document.activeElement;\n let rowIndex = parseInt(ele.parentElement.getAttribute('aria-rowindex'), 10);\n let scrollEle = this.parent.getContent().firstElementChild;\n this.rowIndex = e.keyArgs.action === 'downArrow' ? rowIndex + 1 : rowIndex - 1;\n this.cellIndex = parseInt(ele.getAttribute('aria-colindex'), 10);\n let row = this.parent.getRowByIndex(rowIndex);\n let visibleRowCount = Math.floor(scrollEle.offsetHeight / this.parent.getRowHeight());\n if (!row || ensureLastRow(row, this.parent) || ensureFirstRow(row, this.rowTop)) {\n let height = row ? row.getBoundingClientRect().height : this.parent.getRowHeight();\n if (!this.parent.infiniteScrollSettings.enableCache) {\n if (e.keyArgs.action === 'downArrow' && (ensureLastRow(row, this.parent) || !row)) {\n let nTop = (this.rowIndex - visibleRowCount) * height;\n let oTop = scrollEle.scrollTop + this.parent.getRowHeight();\n scrollEle.scrollTop = nTop < oTop ? oTop : nTop;\n }\n if (e.keyArgs.action === 'upArrow' && ensureFirstRow(row, this.rowTop)) {\n scrollEle.scrollTop = this.rowIndex * height;\n }\n }\n }\n else {\n this.pressedKey = this.empty;\n }\n }\n else if (e.key === 'PageDown' || e.key === 'PageUp') {\n this.pressedKey = e.key;\n }\n }\n createEmptyRowdata() {\n this.parent.getColumns().filter((e) => {\n this.emptyRowData[e.field] = this.empty;\n });\n }\n getVirtualInfiniteEditedData() {\n let editForm = this.parent.element.querySelector('.e-editedrow');\n let addForm = this.parent.element.querySelector('.e-addedrow');\n let gridForm = this.parent.element.querySelector('.e-gridform');\n if (this.parent.infiniteScrollSettings.enableCache && (editForm || addForm)) {\n let rowData = editForm ? extend({}, this.getEditedRowObject().data)\n : extend({}, this.emptyRowData);\n this.virtualInfiniteData = this.parent.editModule.getCurrentEditedData(gridForm, rowData);\n if (this.parent.getFrozenColumns()) {\n this.virtualInfiniteData = this.parent.editModule\n .getCurrentEditedData(this.parent.getMovableVirtualContent().querySelector('.e-gridform'), rowData);\n }\n }\n }\n restoreInfiniteEdit() {\n let content = this.parent.getFrozenColumns() ? this.parent.getMovableVirtualContent()\n : this.parent.getContent().firstElementChild;\n let frozenEdit = this.parent.frozenRows ? this.editRowIndex >= this.parent.frozenRows : true;\n if (this.isNormaledit && this.parent.infiniteScrollSettings.enableCache && frozenEdit) {\n if (this.parent.editSettings.allowEditing && !isNullOrUndefined(this.editRowIndex)) {\n let row = this.parent.getRowByIndex(this.editRowIndex);\n if (Object.keys(this.virtualInfiniteData).length && row && !this.parent.getContent().querySelector('.e-editedrow')) {\n let top = row.getBoundingClientRect().top;\n if (top < content.offsetHeight && top > this.parent.getRowHeight()) {\n this.parent.isEdit = false;\n this.parent.editModule.startEdit(row);\n }\n }\n }\n }\n }\n restoreInfiniteAdd() {\n let content = this.parent.getFrozenColumns() ? this.parent.getMovableVirtualContent()\n : this.parent.getContent().firstElementChild;\n if (this.parent.getRowByIndex(0) && this.isNormaledit && this.parent.infiniteScrollSettings.enableCache\n && this.isAdd && !content.querySelector('.e-addedrow')) {\n let isTop = content.scrollTop < this.parent.getRowHeight();\n if (isTop) {\n this.parent.isEdit = false;\n this.parent.addRecord();\n }\n }\n }\n appendInfiniteRows(e) {\n let target = document.activeElement;\n let frozenCols = this.parent.getFrozenColumns();\n let scrollEle = frozenCols ? this.parent.getMovableVirtualContent()\n : this.parent.getContent().firstElementChild;\n let isInfiniteScroll = this.parent.enableInfiniteScrolling && e.args.requestType === 'infiniteScroll';\n if ((isInfiniteScroll && !e.args.isFrozen) || !isInfiniteScroll) {\n if (isInfiniteScroll && e.args.direction === 'up') {\n e.tbody.insertBefore(e.frag, e.tbody.firstElementChild);\n }\n else {\n e.tbody.appendChild(e.frag);\n }\n }\n if (!frozenCols) {\n this.parent.contentModule.getTable().appendChild(e.tbody);\n }\n else {\n if (isInfiniteScroll) {\n if (e.args.isFrozen) {\n this.frozenFrag = e.frag;\n }\n else {\n let tbody = this.parent.getFrozenVirtualContent().querySelector('tbody');\n e.args.direction === 'up' ? tbody.insertBefore(this.frozenFrag, tbody.firstElementChild)\n : tbody.appendChild(this.frozenFrag);\n this.parent.getMovableVirtualContent().querySelector('.e-table').appendChild(e.tbody);\n }\n }\n else {\n let table = e.args.isFrozen ? this.parent.getFrozenVirtualContent().querySelector('.e-table')\n : this.parent.getMovableVirtualContent().querySelector('.e-table');\n table.appendChild(e.tbody);\n }\n }\n if (!e.args.isFrozen) {\n this.rowTop = !this.rowTop ? this.parent.getRows()[0].getBoundingClientRect().top : this.rowTop;\n if (isInfiniteScroll) {\n if (this.parent.infiniteScrollSettings.enableCache && this.isRemove) {\n scrollEle.scrollTop = this.top;\n if (frozenCols) {\n this.parent.getFrozenVirtualContent().scrollTop = this.top;\n }\n }\n this.setRowElements();\n this.selectNewRow(e.tbody, e.args.startIndex);\n this.pressedKey = undefined;\n }\n this.restoreInfiniteAdd();\n }\n this.isInfiniteScroll = false;\n }\n setRowElements() {\n if (this.parent.getFrozenColumns()) {\n this.parent.contentModule.rowElements =\n [].slice.call(this.parent.element.querySelectorAll('.e-movableheader .e-row, .e-movablecontent .e-row'));\n this.parent.contentModule.freezeRowElements =\n [].slice.call(this.parent.element.querySelectorAll('.e-frozenheader .e-row, .e-frozencontent .e-row'));\n }\n else {\n this.parent.contentModule.rowElements =\n [].slice.call(this.parent.element.querySelectorAll('.e-row:not(.e-addedrow)'));\n }\n }\n selectNewRow(tbody, startIndex) {\n let row = this.parent.getRowByIndex(this.rowIndex);\n if (this.keys.some((value) => value === this.pressedKey)) {\n if (this.pressedKey === 'downArrow' || (this.parent.infiniteScrollSettings.enableCache && this.pressedKey === 'upArrow')) {\n setTimeout(() => {\n // tslint:disable-next-line:no-any\n let target = row.cells[0];\n target.focus({ preventScroll: true });\n this.parent.selectRow(this.rowIndex);\n this.parent.getContent().firstElementChild.scrollTop += this.parent.getRowHeight();\n }, 0);\n }\n if (this.pressedKey === 'PageDown') {\n let row = this.parent.getRowByIndex(startIndex);\n if (row) {\n row.cells[0].focus();\n }\n }\n if (this.pressedKey === 'PageUp') {\n tbody.querySelector('.e-row').cells[0].focus();\n }\n }\n }\n removeInfiniteCacheRows(e) {\n let isInfiniteScroll = this.parent.enableInfiniteScrolling && e.args.requestType === 'infiniteScroll';\n if (!e.args.isFrozen && isInfiniteScroll && this.parent.infiniteScrollSettings.enableCache && this.isRemove) {\n let rows = [].slice.call(this.parent.getContentTable().querySelectorAll('.e-row'));\n if (e.args.direction === 'down') {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n let captionRows = [].slice.call(this.parent.getContentTable().querySelectorAll('tr'));\n this.removeCaptionRows(captionRows, e.args);\n }\n let addRowCount = this.parent.element.querySelector('.e-addedrow') ? 0 : 1;\n this.removeTopRows(rows, this.parent.pageSettings.pageSize - addRowCount);\n }\n if (e.args.direction === 'up') {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n let captionRows = [].slice.call(this.parent.getContentTable().querySelectorAll('tr'));\n this.removeCaptionRows(captionRows, e.args);\n }\n else {\n this.removeBottomRows(rows, rows.length - 1, e.args);\n }\n }\n this.isScroll = false;\n this.top = this.calculateScrollTop(e.args);\n }\n }\n calculateScrollTop(args) {\n let top = 0;\n let scrollCnt = this.parent.getFrozenColumns() ? this.parent.getMovableVirtualContent()\n : this.parent.getContent().firstElementChild;\n if (args.direction === 'down') {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length && !this.isInitialCollapse) {\n top = this.captionRowHeight();\n }\n let captionRows = [].slice.call(this.parent.getContent().firstElementChild.querySelectorAll('tr:not(.e-row)'));\n let captionCount = 0;\n if (this.isInitialCollapse && !isNullOrUndefined(captionRows)) {\n captionCount = Math.round((captionRows.length - 1) / this.parent.groupSettings.columns.length);\n }\n let value = captionCount ? captionCount\n : this.parent.pageSettings.pageSize * (this.parent.infiniteScrollSettings.maxBlocks - 1);\n let currentViewRowCount = 0;\n let i = 0;\n while (currentViewRowCount < scrollCnt.clientHeight) {\n i++;\n currentViewRowCount = i * this.parent.getRowHeight();\n }\n i = i - 1;\n top += (value - i) * this.parent.getRowHeight();\n }\n if (args.direction === 'up') {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length && !this.isInitialCollapse) {\n top = this.infiniteCache[this.parent.pageSettings.currentPage].length * this.parent.getRowHeight();\n }\n else if (this.isInitialCollapse) {\n let groupedData = this.infiniteCache[this.parent.pageSettings.currentPage];\n let count = 0;\n for (let i = 0; i < groupedData.length; i++) {\n if (groupedData[i].isCaptionRow) {\n count++;\n }\n }\n top += Math.round(count / this.parent.groupSettings.columns.length) * this.parent.getRowHeight();\n }\n else {\n top += (this.parent.pageSettings.pageSize * this.parent.getRowHeight() + getScrollBarWidth());\n }\n }\n return top;\n }\n captionRowHeight() {\n let rows = [].slice.call(this.parent.getContent().querySelectorAll('tr:not(.e-row)'));\n return rows.length * this.parent.getRowHeight();\n }\n removeTopRows(rows, maxIndx) {\n let frozeCols = this.parent.getFrozenColumns();\n let movableRows = frozeCols ?\n [].slice.call(this.parent.getMovableVirtualContent().querySelectorAll('.e-row')) : null;\n for (let i = 0; i <= maxIndx; i++) {\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage === this.parent.infiniteScrollSettings.maxBlocks + 1\n && i > (maxIndx - this.parent.frozenRows)) {\n continue;\n }\n remove(rows[i]);\n if (movableRows) {\n remove(movableRows[i]);\n }\n }\n }\n removeBottomRows(rows, maxIndx, args) {\n let cnt = 0;\n let frozeCols = this.parent.getFrozenColumns();\n let movableRows = frozeCols ?\n [].slice.call(this.parent.getMovableVirtualContent().querySelectorAll('.e-row')) : null;\n let pageSize = this.parent.pageSettings.pageSize;\n if (!frozeCols && this.infiniteCache[args.prevPage].length < pageSize) {\n cnt = this.parent.pageSettings.pageSize - this.infiniteCache[args.prevPage].length;\n }\n if (frozeCols && this.infiniteFrozenCache[args.prevPage][1].length < pageSize) {\n cnt = this.parent.pageSettings.pageSize - this.infiniteFrozenCache[args.prevPage][1].length;\n }\n for (let i = maxIndx; cnt < pageSize; i--) {\n cnt++;\n remove(rows[i]);\n if (movableRows) {\n remove(movableRows[i]);\n }\n }\n }\n removeCaptionRows(rows, args) {\n if (args.direction === 'down') {\n let lastRow = this.parent.getRows()[this.parent.pageSettings.pageSize];\n let lastRowIndex = parseInt(lastRow.getAttribute('aria-rowindex'), 10) - 1;\n let k = 0;\n for (let i = 0; k < lastRowIndex; i++) {\n if (!rows[i].classList.contains('e-row')) {\n remove(rows[i]);\n }\n else {\n k = parseInt(rows[i].getAttribute('aria-rowindex'), 10);\n }\n }\n }\n if (args.direction === 'up') {\n let rowElements = [].slice.call(this.parent.getContent().querySelectorAll('.e-row'));\n let lastIndex = parseInt(rowElements[rowElements.length - 1].getAttribute('aria-rowindex'), 10);\n let page = Math.ceil(lastIndex / this.parent.pageSettings.pageSize);\n let startIndex = 0;\n for (let i = this.parent.pageSettings.currentPage + 1; i < page; i++) {\n startIndex += this.infiniteCache[i].length;\n }\n for (let i = startIndex; i < rows.length; i++) {\n remove(rows[i]);\n }\n }\n }\n resetInfiniteBlocks(args, isDataModified) {\n let isInfiniteScroll = this.parent.enableInfiniteScrolling && args.requestType !== 'infiniteScroll';\n if (!this.initialRender && !isNullOrUndefined(this.parent.infiniteScrollModule) && isInfiniteScroll) {\n if (this.actions.some((value) => value === args.requestType) || isDataModified) {\n let scrollEle = this.parent.getFrozenColumns() ? this.parent.getMovableVirtualContent()\n : this.parent.getContent().firstElementChild;\n this.initialRender = true;\n scrollEle.scrollTop = 0;\n this.parent.pageSettings.currentPage = 1;\n this.infiniteCache = this.infiniteFrozenCache = {};\n this.resetContentModuleCache({});\n this.isRemove = false;\n this.top = 0;\n this.isInitialMovableRender = true;\n this.isInitialCollapse = false;\n this.parent.contentModule.isRemove = this.isRemove;\n this.parent.contentModule.isAddRows = this.isRemove;\n this.parent.contentModule.visibleRows = [];\n this.parent.contentModule.visibleFrozenRows = [];\n }\n }\n }\n setCache(e) {\n if (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) {\n let frozeCols = this.parent.getFrozenColumns();\n let idx = e.args.isFrozen ? 1 : 0;\n let isEdit = e.args.requestType !== 'infiniteScroll'\n && (this.requestType === 'delete' || this.requestType === 'add');\n let currentPage = this.parent.pageSettings.currentPage;\n if ((frozeCols && this.isInitialMovableRender) || (!frozeCols && !Object.keys(this.infiniteCache).length) || isEdit) {\n this.isInitialMovableRender = !e.args.isFrozen;\n this.setInitialCache(e.modelData, e.args, isEdit);\n }\n if (!frozeCols && isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage])) {\n this.infiniteCache[this.parent.pageSettings.currentPage] = e.modelData;\n this.resetContentModuleCache(this.infiniteCache);\n }\n if (frozeCols) {\n if ((idx === 0 && isNullOrUndefined(this.infiniteFrozenCache[currentPage]))\n || !this.infiniteFrozenCache[currentPage][idx].length) {\n this.createFrozenCache(currentPage);\n this.infiniteFrozenCache[currentPage][idx] = e.modelData;\n if (idx === 1) {\n this.resetContentModuleCache(this.infiniteFrozenCache);\n }\n }\n }\n if (e.isInfiniteScroll && !this.isRemove) {\n this.isRemove = (currentPage - 1) % this.parent.infiniteScrollSettings.maxBlocks === 0;\n this.parent.contentModule.isRemove = this.isRemove;\n }\n }\n }\n setInitialCache(data, args, isEdit) {\n let frozenCols = this.parent.getFrozenColumns();\n let idx = args.isFrozen ? 1 : 0;\n let k = !isEdit ? 1 : this.firstBlock;\n for (let i = 1; i <= this.parent.infiniteScrollSettings.initialBlocks; i++) {\n let startIndex = (i - 1) * this.parent.pageSettings.pageSize;\n let endIndex = i * this.parent.pageSettings.pageSize;\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n this.setInitialGroupCache(data, k, startIndex, endIndex);\n }\n else {\n if (frozenCols) {\n this.createFrozenCache(k);\n this.infiniteFrozenCache[k][idx] = data.slice(startIndex, endIndex);\n this.resetContentModuleCache(this.infiniteFrozenCache);\n }\n else {\n this.infiniteCache[k] = data.slice(startIndex, endIndex);\n this.resetContentModuleCache(this.infiniteCache);\n }\n }\n k++;\n }\n }\n createFrozenCache(index) {\n if (!this.infiniteFrozenCache[index]) {\n this.infiniteFrozenCache[index] = [[], []];\n }\n }\n setInitialGroupCache(data, index, sIndex, eIndex) {\n let pageData = [];\n let startIndex = 0;\n for (let i = 1; i <= Object.keys(this.infiniteCache).length; i++) {\n startIndex += this.infiniteCache[i].length;\n }\n let k = sIndex;\n for (let i = startIndex; i < data.length && k < eIndex; i++) {\n if (data[i].index < eIndex || data[i].isCaptionRow) {\n k = data[i].isCaptionRow ? k : data[i].index;\n pageData.push(data[i]);\n }\n if (data[i].index >= eIndex || data[i].index === eIndex - 1) {\n break;\n }\n }\n this.infiniteCache[index] = pageData;\n this.resetContentModuleCache(this.infiniteCache);\n }\n resetContentModuleCache(data) {\n this.parent.contentModule\n .infiniteCache = data;\n }\n /**\n * @hidden\n */\n destroy() {\n this.removeEventListener();\n }\n}\n\n/**\n * Action export\n */\n\n/**\n * Models\n */\n\n/**\n * `AutoCompleteEditCell` is used to handle autocomplete cell type editing.\n * @hidden\n */\nclass AutoCompleteEditCell {\n constructor(parent) {\n //constructor\n this.parentObj = parent;\n }\n create(args) {\n //create \n let complexFieldName = getComplexFieldID(args.column.field);\n return this.parentObj.createElement('input', {\n className: 'e-field', attrs: {\n id: this.parentObj.element.id + complexFieldName,\n name: complexFieldName, type: 'text', 'e-mappinguid': args.column.uid,\n }\n });\n }\n write(args) {\n this.column = args.column;\n let isInlineEdit = this.parentObj.editSettings.mode !== 'Dialog';\n this.object = new AutoComplete(extend({\n dataSource: this.parentObj.dataSource instanceof DataManager ?\n this.parentObj.dataSource : new DataManager(this.parentObj.dataSource),\n query: new Query().select(args.column.field), enabled: isEditable(args.column, args.requestType, args.element),\n fields: { value: args.column.field },\n value: getObject(args.column.field, args.rowData),\n // enableRtl: this.parentObject.enableRtl,\n actionComplete: this.selectedValues.bind(this),\n placeholder: isInlineEdit ? '' : args.column.headerText,\n floatLabelType: isInlineEdit ? 'Never' : 'Always'\n }, args.column.edit.params));\n if (isBlazor()) {\n this.object.locale = this.parentObj.locale;\n }\n this.object.appendTo(args.element);\n /* tslint:disable-next-line:no-any */\n args.element.setAttribute('name', getComplexFieldID(args.column.field));\n }\n read(element) {\n return element.ej2_instances[0].value;\n }\n selectedValues(valObj) {\n valObj.result = DataUtil.distinct(valObj.result, this.object.fields.value, true);\n if (this.column.dataSource) {\n this.column.dataSource.dataSource.json = valObj.result;\n }\n }\n destroy() {\n if (this.object) {\n this.object.destroy();\n }\n }\n}\n\n/**\n * `ComboBoxEditCell` is used to handle ComboBoxEdit cell type editing.\n * @hidden\n */\nclass ComboboxEditCell {\n constructor(parentObject) {\n //constructor\n this.parent = parentObject;\n }\n create(args) {\n //create\n let fieldName = getComplexFieldID(args.column.field);\n return this.parent.createElement('input', {\n className: 'e-field', attrs: {\n id: this.parent.element.id + fieldName,\n name: fieldName, type: 'text', 'e-mappinguid': args.column.uid,\n }\n });\n }\n write(args) {\n this.column = args.column;\n let isInlineMode = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new ComboBox(extend({\n dataSource: this.parent.dataSource instanceof DataManager ?\n this.parent.dataSource : new DataManager(this.parent.dataSource),\n query: new Query().select(args.column.field),\n fields: { value: args.column.field },\n value: getObject(args.column.field, args.rowData),\n enableRtl: this.parent.enableRtl, actionComplete: this.finalValue.bind(this),\n placeholder: isInlineMode ? '' : args.column.headerText,\n floatLabelType: isInlineMode ? 'Never' : 'Always',\n enabled: isEditable(args.column, args.requestType, args.element),\n }, args.column.edit.params));\n this.obj.appendTo(args.element);\n }\n read(inputEle) {\n return inputEle.ej2_instances[0].value;\n }\n finalValue(val) {\n val.result = DataUtil.distinct(val.result, this.obj.fields.value, true);\n if (this.column.dataSource) {\n this.column.dataSource.dataSource.json = val.result;\n }\n }\n destroy() {\n if (this.obj) {\n this.obj.destroy();\n }\n }\n}\n\n/**\n * `MultiSelectEditCell` is used to handle multiselect dropdown cell type editing.\n * @hidden\n */\nclass MultiSelectEditCell {\n constructor(parentObj) {\n //constructor\n this.parent = parentObj;\n }\n create(args) {\n //create\n let colName = getComplexFieldID(args.column.field);\n return this.parent.createElement('input', {\n className: 'e-field', attrs: {\n id: this.parent.element.id + colName,\n name: colName, type: 'text', 'e-mappinguid': args.column.uid,\n }\n });\n }\n read(element) {\n return element.ej2_instances[0].value;\n }\n write(args) {\n this.column = args.column;\n let isInline = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new MultiSelect(extend({\n fields: { text: args.column.field, value: args.column.field },\n value: getValue(args.column.field, args.rowData),\n enableRtl: this.parent.enableRtl,\n placeholder: isInline ? '' : args.column.headerText, popupHeight: '200px',\n floatLabelType: isInline ? 'Never' : 'Always'\n }, args.column.edit.params));\n this.obj.appendTo(args.element);\n args.element.setAttribute('name', getComplexFieldID(args.column.field));\n }\n destroy() {\n if (this.obj) {\n this.obj.destroy();\n }\n }\n}\n\n/**\n * `TimePickerEditCell` is used to handle Timepicker cell type editing.\n * @hidden\n */\nclass TimePickerEditCell {\n constructor(grid) {\n this.parent = grid;\n }\n create(args) {\n /* tslint:disable-next-line:no-any */\n let complexField = getComplexFieldID(args.column.field);\n return this.parent.createElement('input', {\n className: 'e-field', attrs: {\n id: this.parent.element.id + complexField,\n name: complexField, type: 'text', 'e-mappinguid': args.column.uid\n }\n });\n }\n read(element) {\n return element.ej2_instances[0].value;\n }\n write(args) {\n let isInlineEdit = this.parent.editSettings.mode !== 'Dialog';\n let rowDataValue = getObject(args.column.field, args.rowData);\n rowDataValue = rowDataValue ? new Date(rowDataValue) : null;\n this.obj = new TimePicker(extend({\n floatLabelType: isInlineEdit ? 'Never' : 'Always',\n value: rowDataValue,\n placeholder: isInlineEdit ?\n '' : args.column.headerText, enableRtl: this.parent.enableRtl,\n enabled: isEditable(args.column, args.requestType, args.element),\n }, args.column.edit.params));\n this.obj.appendTo(args.element);\n }\n destroy() {\n if (this.obj) {\n this.obj.destroy();\n }\n }\n}\n\n/**\n * `ToggleEditCell` is used to handle boolean cell type editing.\n * @hidden\n */\nclass ToggleEditCell {\n constructor(parentObject) {\n this.activeClasses = ['e-selectionbackground', 'e-active'];\n this.parent = parentObject;\n }\n create(args) {\n let col = args.column;\n let classNames = 'e-field e-boolcell';\n if (col.type === 'checkbox') {\n classNames = 'e-field e-boolcell e-edit-checkselect';\n }\n let complexField = getComplexFieldID(args.column.field);\n return this.parent.createElement('input', {\n className: classNames, attrs: {\n type: 'checkbox', value: args.value, 'e-mappinguid': col.uid,\n id: this.parent.element.id + complexField,\n name: complexField\n }\n });\n }\n read(element) {\n return element.checked;\n }\n write(args) {\n let chkBoxElement;\n let checkState;\n // let isAddRow : boolean = args.requestType === 'add' || args.row.classList.contains('e-addedrow');\n if (!isNullOrUndefined(args.row)) {\n chkBoxElement = args.row.querySelector('.e-edit-checkselect');\n }\n if (getObject(args.column.field, args.rowData)) {\n checkState = JSON.parse(getObject(args.column.field, args.rowData).toString().toLowerCase());\n }\n if (!isNullOrUndefined(chkBoxElement)) {\n this.editType = this.parent.editSettings.mode;\n this.editRow = args.row;\n if (args.requestType !== 'add') {\n let row = this.parent.getRowObjectFromUID(args.row.getAttribute('data-uid'));\n checkState = row ? row.isSelected : false;\n }\n addRemoveActiveClasses([].slice.call(args.row.querySelectorAll('.e-rowcell')), checkState, ...this.activeClasses);\n }\n this.obj = new Switch(extend({\n label: this.parent.editSettings.mode !== 'Dialog' ? ' ' : args.column.headerText,\n checked: checkState,\n disabled: !isEditable(args.column, args.requestType, args.element), enableRtl: this.parent.enableRtl,\n change: this.switchModeChange.bind(this)\n }, args.column.edit.params));\n this.obj.appendTo(args.element);\n }\n switchModeChange(args) {\n if (this.editRow && this.editType !== 'Dialog') {\n let addClass$$1 = false;\n if (!args.checked) {\n this.editRow.removeAttribute('aria-selected');\n }\n else {\n addClass$$1 = true;\n this.editRow.setAttribute('aria-selected', addClass$$1.toString());\n }\n addRemoveActiveClasses([].slice.call(this.editRow.querySelectorAll('.e-rowcell')), addClass$$1, ...this.activeClasses);\n }\n }\n destroy() {\n if (this.obj) {\n this.obj.destroy();\n }\n }\n}\n\n/**\n * `MaskedTextBoxCellEdit` is used to handle masked input cell type editing.\n * @hidden\n */\nclass MaskedTextBoxCellEdit {\n constructor(parentInstance) {\n //constructor\n this.parent = parentInstance;\n }\n create(args) {\n //create\n let columnField = getComplexFieldID(args.column.field);\n return this.parent.createElement('input', {\n className: 'e-field', attrs: {\n id: this.parent.element.id + columnField,\n name: columnField, type: 'text', 'e-mappinguid': args.column.uid,\n }\n });\n }\n write(args) {\n this.column = args.column;\n let isInlineEdit = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new MaskedTextBox(extend({\n fields: { value: args.column.field },\n value: getObject(args.column.field, args.rowData),\n floatLabelType: isInlineEdit ? 'Never' : 'Always',\n mask: '000-000-0000',\n enabled: isEditable(args.column, args.requestType, args.element),\n }, args.column.edit.params));\n this.obj.appendTo(args.element);\n }\n read(element) {\n return element.ej2_instances[0].value;\n }\n destroy() {\n if (this.obj) {\n this.obj.destroy();\n }\n }\n}\n\n/**\n * Models\n */\n\n/**\n * Services\n */\n\n/**\n * Grid component exported items\n */\n\n/**\n * Pager component exported items\n */\n\n/**\n * Export Grid components\n */\n\nexport { CheckBoxFilterBase, ExcelFilterBase, SortDescriptor, SortSettings, Predicate$1 as Predicate, InfiniteScrollSettings, FilterSettings, SelectionSettings, SearchSettings, RowDropSettings, TextWrapSettings, GroupSettings, EditSettings, Grid, CellType, RenderType, ToolbarItem, AggregateTemplateType, doesImplementInterface, valueAccessor, headerValueAccessor, getUpdateUsingRaf, isExportColumns, updateColumnTypeForExportColumns, updatecloneRow, getCollapsedRowsCount, recursive, iterateArrayOrObject, iterateExtend, templateCompiler, setStyleAndAttributes, extend$1 as extend, setColumnIndex, prepareColumns, setCssInGridPopUp, getActualProperties, parentsUntil, getElementIndex, inArray, getActualPropFromColl, removeElement, getPosition, getUid, appendChildren, parents, calculateAggregate, getScrollBarWidth, getRowHeight, isComplexField, getComplexFieldID, setComplexFieldID, isEditable, isActionPrevent, wrap, setFormatter, addRemoveActiveClasses, distinctStringValues, getFilterMenuPostion, getZIndexCalcualtion, toogleCheckbox, createCboxWithWrap, removeAddCboxClasses, refreshForeignData, getForeignData, getColumnByForeignKeyValue, getDatePredicate, renderMovable, isGroupAdaptive, getObject, getCustomDateFormat, getExpandedState, getPrintGridModel, extendObjWithFn, measureColumnDepth, checkDepth, refreshFilteredColsUid, Global, getTransformValues, applyBiggerTheme, alignFrozenEditForm, ensureLastRow, ensureFirstRow, getEditedDataIndex, eventPromise, getStateEventArgument, ispercentageWidth, created, destroyed, load, rowDataBound, queryCellInfo, headerCellInfo, actionBegin, actionComplete, actionFailure, dataBound, rowSelecting, rowSelected, rowDeselecting, rowDeselected, cellSelecting, cellSelected, cellDeselecting, cellDeselected, columnDragStart, columnDrag, columnDrop, rowDragStartHelper, rowDragStart, rowDrag, rowDrop, beforePrint, printComplete, detailDataBound, toolbarClick, batchAdd, batchCancel, batchDelete, beforeBatchAdd, beforeBatchDelete, beforeBatchSave, beginEdit, cellEdit, cellSave, cellSaved, endAdd, endDelete, endEdit, recordDoubleClick, recordClick, beforeDataBound, beforeOpenColumnChooser, resizeStart, onResize, resizeStop, checkBoxChange, beforeCopy, beforePaste, beforeAutoFill, filterChoiceRequest, filterAfterOpen, filterBeforeOpen, filterSearchBegin, commandClick, exportGroupCaption, initialLoad, initialEnd, dataReady, contentReady, uiUpdate, onEmpty, inBoundModelChanged, modelChanged, colGroupRefresh, headerRefreshed, pageBegin, pageComplete, sortBegin, sortComplete, filterBegin, filterComplete, searchBegin, searchComplete, reorderBegin, reorderComplete, rowDragAndDropBegin, rowDragAndDropComplete, groupBegin, groupComplete, ungroupBegin, ungroupComplete, groupAggregates, refreshFooterRenderer, refreshAggregateCell, refreshAggregates, rowSelectionBegin, rowSelectionComplete, columnSelectionBegin, columnSelectionComplete, cellSelectionBegin, cellSelectionComplete, beforeCellFocused, cellFocused, keyPressed, click, destroy, columnVisibilityChanged, scroll, columnWidthChanged, columnPositionChanged, rowDragAndDrop, rowsAdded, rowsRemoved, columnDragStop, headerDrop, dataSourceModified, refreshComplete, refreshVirtualBlock, dblclick, toolbarRefresh, bulkSave, autoCol, tooltipDestroy, updateData, editBegin, editComplete, addBegin, addComplete, saveComplete, deleteBegin, deleteComplete, preventBatch, dialogDestroy, crudAction, addDeleteAction, destroyForm, doubleTap, beforeExcelExport, excelExportComplete, excelQueryCellInfo, excelHeaderQueryCellInfo, exportDetailDataBound, beforePdfExport, pdfExportComplete, pdfQueryCellInfo, pdfHeaderQueryCellInfo, accessPredicate, contextMenuClick, freezeRender, freezeRefresh, contextMenuOpen, columnMenuClick, columnMenuOpen, filterOpen, filterDialogCreated, filterMenuClose, initForeignKeyColumn, getForeignKeyData, generateQuery, showEmptyGrid, foreignKeyData, columnDataStateChange, dataStateChange, dataSourceChanged, rtlUpdated, beforeFragAppend, frozenHeight, textWrapRefresh, recordAdded, cancelBegin, editNextValCell, hierarchyPrint, expandChildGrid, printGridInit, exportRowDataBound, exportDataBound, rowPositionChanged, columnChooserOpened, batchForm, beforeStartEdit, beforeBatchCancel, batchEditFormRendered, partialRefresh, beforeCustomFilterOpen, selectVirtualRow, columnsPrepared, cBoxFltrBegin, cBoxFltrComplete, fltrPrevent, beforeFltrcMenuOpen, valCustomPlacement, filterCboxValue, componentRendered, restoreFocus, detailStateChange, detailIndentCellInfo, virtaulKeyHandler, virtaulCellFocus, virtualScrollEditActionBegin, virtualScrollEditSuccess, virtualScrollEditCancel, virtualScrollEdit, refreshVirtualCache, editReset, virtualScrollAddActionBegin, getVirtualData, refreshInfiniteModeBlocks, resetInfiniteBlocks, infiniteScrollHandler, infinitePageQuery, infiniteShowHide, appendInfiniteContent, removeInfiniteRows, setInfiniteCache, infiniteEditHandler, initialCollapse, getAggregateQuery, closeFilterDialog, columnChooserCancelBtnClick, getFilterBarOperator, resetColumns, pdfAggregateQueryCellInfo, excelAggregateQueryCellInfo, Data, Sort, Page, Selection, Filter, Search, Scroll, resizeClassList, Resize, Reorder, RowDD, Group, getCloneProperties, Print, DetailRow, Toolbar$1 as Toolbar, Aggregate, summaryIterator, VirtualScroll, Edit, BatchEdit, InlineEdit, NormalEdit, DialogEdit, ColumnChooser, ExcelExport, PdfExport, ExportHelper, ExportValueFormatter, Clipboard, CommandColumn, CheckBoxFilter, menuClass, ContextMenu$1 as ContextMenu, Freeze, ColumnMenu, ExcelFilter, ForeignKey, Logger, detailLists, gridObserver, BlazorAction, InfiniteScroll, Column, CommandColumnModel, Row, Cell, HeaderRender, ContentRender, RowRenderer, CellRenderer, HeaderCellRenderer, FilterCellRenderer, StackedHeaderCellRenderer, Render, IndentCellRenderer, GroupCaptionCellRenderer, GroupCaptionEmptyCellRenderer, BatchEditRender, DialogEditRender, InlineEditRender, EditRender, BooleanEditCell, DefaultEditCell, DropDownEditCell, NumericEditCell, DatePickerEditCell, CommandColumnRenderer, FreezeContentRender, FreezeRender, StringFilterUI, NumberFilterUI, DateFilterUI, BooleanFilterUI, FlMenuOptrUI, AutoCompleteEditCell, ComboboxEditCell, MultiSelectEditCell, TimePickerEditCell, ToggleEditCell, MaskedTextBoxCellEdit, VirtualContentRenderer, VirtualHeaderRenderer, VirtualElementHandler, CellRendererFactory, ServiceLocator, RowModelGenerator, GroupModelGenerator, FreezeRowModelGenerator, ValueFormatter, VirtualRowModelGenerator, InterSectionObserver, Pager, ExternalMessage, NumericContainer, PagerMessage, PagerDropDown };\n//# sourceMappingURL=ej2-grids.es2015.js.map\n","import { Ajax, Animation, Base, Browser, ChildProperty, Collection, Complex, Component, Event, EventHandler, Internationalization, KeyboardEvents, L10n, NotifyPropertyChanges, Property, SanitizeHtmlHelper, addClass, append, attributes, classList, closest, compile, createElement, detach, extend, formatUnit, getInstance, getNumericObject, getUniqueID, getValue, isBlazor, isNullOrUndefined, merge, onIntlChange, remove, removeClass, resetBlazorTemplate, rippleEffect, select, selectAll, setStyleAttribute, setValue, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { Popup, Tooltip, createSpinner, getZindexPartial, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { Deferred, SplitButton, getModel } from '@syncfusion/ej2-splitbuttons';\n\nconst CLASSNAMES = {\n RTL: 'e-rtl',\n DISABLE: 'e-disabled',\n INPUT: 'e-input',\n TEXTAREA: 'e-multi-line-input',\n INPUTGROUP: 'e-input-group',\n FLOATINPUT: 'e-float-input',\n FLOATLINE: 'e-float-line',\n FLOATTEXT: 'e-float-text',\n CLEARICON: 'e-clear-icon',\n CLEARICONHIDE: 'e-clear-icon-hide',\n LABELTOP: 'e-label-top',\n LABELBOTTOM: 'e-label-bottom',\n NOFLOATLABEL: 'e-no-float-label',\n INPUTCUSTOMTAG: 'e-input-custom-tag',\n FLOATCUSTOMTAG: 'e-float-custom-tag'\n};\n/**\n * Base for Input creation through util methods.\n */\nvar Input;\n(function (Input) {\n let floatType;\n /**\n * Create a wrapper to input element with multiple span elements and set the basic properties to input based components.\n * ```\n * E.g : Input.createInput({ element: element, floatLabelType : \"Auto\", properties: { placeholder: 'Search' } });\n * ```\n * @param args\n */\n function createInput(args, internalCreateElement) {\n let makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n let inputObject = { container: null, buttons: [], clearButton: null };\n floatType = args.floatLabelType;\n if (isNullOrUndefined(args.floatLabelType) || args.floatLabelType === 'Never') {\n inputObject.container = createInputContainer(args, CLASSNAMES.INPUTGROUP, CLASSNAMES.INPUTCUSTOMTAG, 'span', makeElement);\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n addClass([args.element], CLASSNAMES.INPUT);\n inputObject.container.appendChild(args.element);\n }\n else {\n createFloatingInput(args, inputObject, makeElement);\n }\n bindInitialEvent(args);\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.showClearButton) &&\n args.properties.showClearButton && args.element.tagName !== 'TEXTAREA') {\n setClearButton(args.properties.showClearButton, args.element, inputObject, true, makeElement);\n inputObject.clearButton.setAttribute('role', 'button');\n if (inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n addClass([inputObject.container], CLASSNAMES.INPUTGROUP);\n }\n }\n if (!isNullOrUndefined(args.buttons) && args.element.tagName !== 'TEXTAREA') {\n for (let i = 0; i < args.buttons.length; i++) {\n inputObject.buttons.push(appendSpan(args.buttons[i], inputObject.container, makeElement));\n }\n }\n if (!isNullOrUndefined(args.element) && args.element.tagName === 'TEXTAREA') {\n addClass([inputObject.container], CLASSNAMES.TEXTAREA);\n }\n inputObject = setPropertyValue(args, inputObject);\n return inputObject;\n }\n Input.createInput = createInput;\n function bindInitialEvent(args) {\n checkInputValue(args.floatLabelType, args.element);\n args.element.addEventListener('focus', function () {\n let parent = getParentNode(this);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline')\n || parent.classList.contains('e-filled')) {\n parent.classList.add('e-input-focus');\n }\n });\n args.element.addEventListener('blur', function () {\n let parent = getParentNode(this);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline')\n || parent.classList.contains('e-filled')) {\n parent.classList.remove('e-input-focus');\n }\n });\n args.element.addEventListener('input', () => {\n checkInputValue(floatType, args.element);\n });\n }\n Input.bindInitialEvent = bindInitialEvent;\n function checkInputValue(floatLabelType, inputElement) {\n let inputValue = inputElement.value;\n if (inputValue !== '' && !isNullOrUndefined(inputValue)) {\n inputElement.parentElement.classList.add('e-valid-input');\n }\n else if (floatLabelType !== 'Always' && inputElement.parentElement) {\n inputElement.parentElement.classList.remove('e-valid-input');\n }\n }\n function _focusFn() {\n let label = getParentNode(this).getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function _blurFn() {\n let parent = getParentNode(this);\n if ((parent.getElementsByTagName('textarea')[0]) ? parent.getElementsByTagName('textarea')[0].value === '' :\n parent.getElementsByTagName('input')[0].value === '') {\n let label = parent.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function wireFloatingEvents(element) {\n element.addEventListener('focus', _focusFn);\n element.addEventListener('blur', _blurFn);\n }\n Input.wireFloatingEvents = wireFloatingEvents;\n function unwireFloatingEvents(element) {\n element.removeEventListener('focus', _focusFn);\n element.removeEventListener('blur', _blurFn);\n }\n function createFloatingInput(args, inputObject, internalCreateElement) {\n let makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n let floatLinelement;\n let floatLabelElement;\n if (args.floatLabelType === 'Auto') {\n wireFloatingEvents(args.element);\n }\n if (isNullOrUndefined(inputObject.container)) {\n inputObject.container = createInputContainer(args, CLASSNAMES.FLOATINPUT, CLASSNAMES.FLOATCUSTOMTAG, 'div', makeElement);\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n }\n else {\n if (!isNullOrUndefined(args.customTag)) {\n inputObject.container.classList.add(CLASSNAMES.FLOATCUSTOMTAG);\n }\n inputObject.container.classList.add(CLASSNAMES.FLOATINPUT);\n }\n floatLinelement = makeElement('span', { className: CLASSNAMES.FLOATLINE });\n floatLabelElement = makeElement('label', { className: CLASSNAMES.FLOATTEXT });\n if (!isNullOrUndefined(args.element.id) && args.element.id !== '') {\n floatLabelElement.id = 'label_' + args.element.id.replace(/ /g, '_');\n attributes(args.element, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(args.element.placeholder) && args.element.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.element.placeholder);\n args.element.removeAttribute('placeholder');\n }\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.placeholder) &&\n args.properties.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.properties.placeholder);\n }\n if (!floatLabelElement.innerText) {\n inputObject.container.classList.add(CLASSNAMES.NOFLOATLABEL);\n }\n if (inputObject.container.classList.contains('e-float-icon-left')) {\n let inputWrap = inputObject.container.querySelector('.e-input-in-wrap');\n inputWrap.appendChild(args.element);\n inputWrap.appendChild(floatLinelement);\n inputWrap.appendChild(floatLabelElement);\n }\n else {\n inputObject.container.appendChild(args.element);\n inputObject.container.appendChild(floatLinelement);\n inputObject.container.appendChild(floatLabelElement);\n }\n updateLabelState(args.element.value, floatLabelElement);\n if (args.floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([floatLabelElement], CLASSNAMES.LABELBOTTOM);\n }\n addClass([floatLabelElement], CLASSNAMES.LABELTOP);\n }\n if (args.floatLabelType === 'Auto') {\n args.element.addEventListener('input', (event) => {\n updateLabelState(args.element.value, floatLabelElement);\n });\n args.element.addEventListener('blur', (event) => {\n updateLabelState(args.element.value, floatLabelElement);\n });\n }\n if (!isNullOrUndefined(args.element.getAttribute('id'))) {\n floatLabelElement.setAttribute('for', args.element.getAttribute('id'));\n }\n }\n function checkFloatLabelType(type, container) {\n if (type === 'Always' && container.classList.contains('e-outline')) {\n container.classList.add('e-valid-input');\n }\n }\n function setPropertyValue(args, inputObject) {\n if (!isNullOrUndefined(args.properties)) {\n for (let prop of Object.keys(args.properties)) {\n switch (prop) {\n case 'cssClass':\n setCssClass(args.properties.cssClass, [inputObject.container]);\n checkFloatLabelType(args.floatLabelType, inputObject.container);\n break;\n case 'enabled':\n setEnabled(args.properties.enabled, args.element, args.floatLabelType, inputObject.container);\n break;\n case 'enableRtl':\n setEnableRtl(args.properties.enableRtl, [inputObject.container]);\n break;\n case 'placeholder':\n setPlaceholder(args.properties.placeholder, args.element);\n break;\n case 'readonly':\n setReadonly(args.properties.readonly, args.element);\n break;\n }\n }\n }\n return inputObject;\n }\n function updateIconState(value, button) {\n if (value) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n function updateLabelState(value, label) {\n if (value) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n else {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n function getParentNode(element) {\n let parentNode = isNullOrUndefined(element.parentNode) ? element\n : element.parentNode;\n if (parentNode && parentNode.classList.contains('e-input-in-wrap')) {\n parentNode = parentNode.parentNode;\n }\n return parentNode;\n }\n /**\n * To create clear button.\n */\n function createClearButton(element, inputObject, initial, internalCreateElement) {\n let makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n let button = makeElement('span', { className: CLASSNAMES.CLEARICON });\n let container = inputObject.container;\n if (!isNullOrUndefined(initial)) {\n container.appendChild(button);\n }\n else {\n let baseElement = inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT) ?\n inputObject.container.querySelector('.' + CLASSNAMES.FLOATTEXT) : element;\n baseElement.insertAdjacentElement('afterend', button);\n }\n if (!isNullOrUndefined(container) &&\n container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n addClass([container], CLASSNAMES.INPUTGROUP);\n }\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n wireClearBtnEvents(element, button, container);\n button.setAttribute('aria-label', 'close');\n return button;\n }\n function wireClearBtnEvents(element, button, container) {\n button.addEventListener('click', (event) => {\n if (!(element.classList.contains(CLASSNAMES.DISABLE) || element.readOnly)) {\n event.preventDefault();\n if (element !== document.activeElement) {\n element.focus();\n }\n element.value = '';\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n });\n element.addEventListener('input', (event) => {\n updateIconState(element.value, button);\n });\n element.addEventListener('focus', (event) => {\n updateIconState(element.value, button);\n });\n element.addEventListener('blur', (event) => {\n setTimeout(() => { addClass([button], CLASSNAMES.CLEARICONHIDE); }, 200);\n });\n }\n Input.wireClearBtnEvents = wireClearBtnEvents;\n function validateLabel(element, floatLabelType) {\n let parent = getParentNode(element);\n if (parent.classList.contains(CLASSNAMES.FLOATINPUT) && floatLabelType === 'Auto') {\n let label = getParentNode(element).getElementsByClassName('e-float-text')[0];\n updateLabelState(element.value, label);\n }\n }\n /**\n * To create input box contianer.\n */\n function createInputContainer(args, className, tagClass, tag, internalCreateElement) {\n let makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n let container;\n if (!isNullOrUndefined(args.customTag)) {\n container = makeElement(args.customTag, { className: className });\n container.classList.add(tagClass);\n }\n else {\n container = makeElement(tag, { className: className });\n }\n container.classList.add('e-control-wrapper');\n return container;\n }\n function encodePlaceHolder(placeholder) {\n let result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n let spanEle = document.createElement('span');\n spanEle.innerHTML = '';\n let hiddenInput = (spanEle.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n }\n /**\n * Sets the value to the input element.\n * ```\n * E.g : Input.setValue('content', element, \"Auto\", true );\n * ```\n * @param value - Specify the value of the input element.\n * @param element - The element on which the specified value is updated.\n * @param floatLabelType - Specify the float label type of the input element.\n * @param clearButton - Boolean value to specify whether the clear icon is enabled / disabled on the input.\n */\n function setValue$$1(value, element, floatLabelType, clearButton) {\n element.value = value;\n if ((!isNullOrUndefined(floatLabelType)) && floatLabelType === 'Auto') {\n validateLabel(element, floatLabelType);\n }\n if (!isNullOrUndefined(clearButton) && clearButton) {\n let parentElement = getParentNode(element);\n if (!isNullOrUndefined(parentElement)) {\n let button = parentElement.getElementsByClassName(CLASSNAMES.CLEARICON)[0];\n if (element.value && parentElement.classList.contains('e-input-focus')) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n }\n checkInputValue(floatLabelType, element);\n }\n Input.setValue = setValue$$1;\n /**\n * Sets the single or multiple cssClass to wrapper of input element.\n * ```\n * E.g : Input.setCssClass('e-custom-class', [element]);\n * ```\n * @param cssClass - Css class names which are needed to add.\n * @param elements - The elements which are needed to add / remove classes.\n * @param oldClass - Css class names which are needed to remove. If old classes are need to remove, can give this optional parameter.\n */\n function setCssClass(cssClass, elements, oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(cssClass) && cssClass !== '') {\n addClass(elements, cssClass.split(' '));\n }\n }\n Input.setCssClass = setCssClass;\n /**\n * Set the width to the wrapper of input element.\n * ```\n * E.g : Input.setWidth('200px', container);\n * ```\n * @param width - Width value which is need to add.\n * @param container - The element on which the width is need to add.\n */\n function setWidth(width, container) {\n if (typeof width === 'number') {\n container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n Input.setWidth = setWidth;\n /**\n * Set the placeholder attribute to the input element.\n * ```\n * E.g : Input.setPlaceholder('Search here', element);\n * ```\n * @param placeholder - Placeholder value which is need to add.\n * @param element - The element on which the placeholder is need to add.\n */\n function setPlaceholder(placeholder, element) {\n let parentElement;\n placeholder = encodePlaceHolder(placeholder);\n parentElement = getParentNode(element);\n if (parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = placeholder;\n parentElement.classList.remove(CLASSNAMES.NOFLOATLABEL);\n element.removeAttribute('placeholder');\n }\n else {\n parentElement.classList.add(CLASSNAMES.NOFLOATLABEL);\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n }\n else {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n attributes(element, { 'placeholder': placeholder, 'aria-placeholder': placeholder });\n }\n else {\n element.removeAttribute('placeholder');\n element.removeAttribute('aria-placeholder');\n }\n }\n }\n Input.setPlaceholder = setPlaceholder;\n /**\n * Set the read only attribute to the input element\n * ```\n * E.g : Input.setReadonly(true, element);\n * ```\n * @param isReadonly\n * - Boolean value to specify whether to set read only. Setting \"True\" value enables read only.\n * @param element\n * - The element which is need to enable read only.\n */\n function setReadonly(isReadonly, element, floatLabelType) {\n if (isReadonly) {\n attributes(element, { readonly: '' });\n }\n else {\n element.removeAttribute('readonly');\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setReadonly = setReadonly;\n /**\n * Displays the element direction from right to left when its enabled.\n * ```\n * E.g : Input.setEnableRtl(true, [inputObj.container]);\n * ```\n * @param isRtl\n * - Boolean value to specify whether to set RTL. Setting \"True\" value enables the RTL mode.\n * @param elements\n * - The elements that are needed to enable/disable RTL.\n */\n function setEnableRtl(isRtl, elements) {\n if (isRtl) {\n addClass(elements, CLASSNAMES.RTL);\n }\n else {\n removeClass(elements, CLASSNAMES.RTL);\n }\n }\n Input.setEnableRtl = setEnableRtl;\n /**\n * Enables or disables the given input element.\n * ```\n * E.g : Input.setEnabled(false, element);\n * ```\n * @param isEnable\n * - Boolean value to specify whether to enable or disable.\n * @param element\n * - Element to be enabled or disabled.\n */\n function setEnabled(isEnable, element, floatLabelType, inputContainer) {\n let disabledAttrs = { 'disabled': 'disabled', 'aria-disabled': 'true' };\n let considerWrapper = isNullOrUndefined(inputContainer) ? false : true;\n if (isEnable) {\n element.classList.remove(CLASSNAMES.DISABLE);\n removeAttributes(disabledAttrs, element);\n if (considerWrapper) {\n removeClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n else {\n element.classList.add(CLASSNAMES.DISABLE);\n addAttributes(disabledAttrs, element);\n if (considerWrapper) {\n addClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setEnabled = setEnabled;\n function setClearButton(isClear, element, inputObject, initial, internalCreateElement) {\n let makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (isClear) {\n inputObject.clearButton = createClearButton(element, inputObject, initial, makeElement);\n }\n else {\n inputObject.clearButton.remove();\n inputObject.clearButton = null;\n }\n }\n Input.setClearButton = setClearButton;\n /**\n * Removing the multiple attributes from the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.removeAttributes({ 'disabled': 'disabled', 'aria-disabled': 'true' }, element);\n * ```\n * @param attrs\n * - Array of attributes which are need to removed from the element.\n * @param element\n * - Element on which the attributes are needed to be removed.\n */\n function removeAttributes(attrs, element) {\n for (let key of Object.keys(attrs)) {\n let parentElement;\n parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n else {\n element.removeAttribute(key);\n }\n }\n }\n Input.removeAttributes = removeAttributes;\n /**\n * Adding the multiple attributes to the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.addAttributes({ 'id': 'inputpopup' }, element);\n * ```\n * @param attrs\n * - Array of attributes which is added to element.\n * @param element\n * - Element on which the attributes are needed to be added.\n */\n function addAttributes(attrs, element) {\n for (let key of Object.keys(attrs)) {\n let parentElement;\n parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = attrs[key];\n }\n else {\n element.setAttribute(key, attrs[key]);\n }\n }\n }\n Input.addAttributes = addAttributes;\n function removeFloating(input) {\n let container = input.container;\n if (!isNullOrUndefined(container) && container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n let inputEle = container.querySelector('textarea') ? container.querySelector('textarea') :\n container.querySelector('input');\n let placeholder = container.querySelector('.' + CLASSNAMES.FLOATTEXT).textContent;\n let clearButton = container.querySelector('.e-clear-icon') !== null;\n detach(container.querySelector('.' + CLASSNAMES.FLOATLINE));\n detach(container.querySelector('.' + CLASSNAMES.FLOATTEXT));\n classList(container, [CLASSNAMES.INPUTGROUP], [CLASSNAMES.FLOATINPUT]);\n unwireFloatingEvents(inputEle);\n attributes(inputEle, { 'placeholder': placeholder });\n inputEle.classList.add(CLASSNAMES.INPUT);\n if (!clearButton && inputEle.tagName === 'INPUT') {\n inputEle.removeAttribute('required');\n }\n }\n }\n Input.removeFloating = removeFloating;\n function addFloating(input, type, placeholder, internalCreateElement) {\n let makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n let container = closest(input, '.' + CLASSNAMES.INPUTGROUP);\n floatType = type;\n if (type !== 'Never') {\n let customTag = container.tagName;\n customTag = customTag !== 'DIV' && customTag !== 'SPAN' ? customTag : null;\n let args = { element: input, floatLabelType: type, customTag: customTag, properties: { placeholder: placeholder } };\n let iconEle = container.querySelector('.e-clear-icon');\n let inputObj = { container: container };\n input.classList.remove(CLASSNAMES.INPUT);\n createFloatingInput(args, inputObj, makeElement);\n let isPrependIcon = container.classList.contains('e-float-icon-left');\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n let inputWrap = container.querySelector('.e-input-in-wrap');\n iconEle = inputWrap.querySelector('.e-input-group-icon');\n }\n else {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n }\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n if (isNullOrUndefined(iconEle)) {\n container.classList.remove(CLASSNAMES.INPUTGROUP);\n }\n }\n else {\n let floatLine = container.querySelector('.' + CLASSNAMES.FLOATLINE);\n let floatText = container.querySelector('.' + CLASSNAMES.FLOATTEXT);\n let wrapper = isPrependIcon ? container.querySelector('.e-input-in-wrap') : container;\n wrapper.insertBefore(input, iconEle);\n wrapper.insertBefore(floatLine, iconEle);\n wrapper.insertBefore(floatText, iconEle);\n }\n }\n checkFloatLabelType(type, input.parentElement);\n }\n Input.addFloating = addFloating;\n /**\n * Enable or Disable the ripple effect on the icons inside the Input. Ripple effect is only applicable for material theme.\n * ```\n * E.g : Input.setRipple(true, [inputObjects]);\n * ```\n * @param isRipple\n * - Boolean value to specify whether to enable the ripple effect.\n * @param inputObject\n * - Specify the collection of input objects.\n */\n function setRipple(isRipple, inputObj) {\n for (let i = 0; i < inputObj.length; i++) {\n _internalRipple(isRipple, inputObj[i].container);\n }\n }\n Input.setRipple = setRipple;\n function _internalRipple(isRipple, container, button) {\n let argsButton = [];\n argsButton.push(button);\n let buttons = isNullOrUndefined(button) ?\n container.querySelectorAll('.e-input-group-icon') : argsButton;\n if (isRipple && buttons.length > 0) {\n for (let index = 0; index < buttons.length; index++) {\n buttons[index].addEventListener('mousedown', _onMouseDownRipple, false);\n buttons[index].addEventListener('mouseup', _onMouseUpRipple, false);\n }\n }\n else if (buttons.length > 0) {\n for (let index = 0; index < buttons.length; index++) {\n buttons[index].removeEventListener('mousedown', _onMouseDownRipple, this);\n buttons[index].removeEventListener('mouseup', _onMouseUpRipple, this);\n }\n }\n }\n function _onMouseRipple(container, button) {\n if (!container.classList.contains('e-disabled') && !container.querySelector('input').readOnly) {\n button.classList.add('e-input-btn-ripple');\n }\n }\n function _onMouseDownRipple() {\n let ele = this;\n let parentEle = this.parentElement;\n while (!parentEle.classList.contains('e-input-group')) {\n parentEle = parentEle.parentElement;\n }\n _onMouseRipple(parentEle, ele);\n }\n function _onMouseUpRipple() {\n let ele = this;\n setTimeout(() => { ele.classList.remove('e-input-btn-ripple'); }, 500);\n }\n function createIconEle(iconClass, makeElement) {\n let button = makeElement('span', { className: iconClass });\n button.classList.add('e-input-group-icon');\n return button;\n }\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.addIcon('append', 'e-icon-spin', inputObj.container, inputElement);\n * ```\n * @param position - Specify the icon placement on the input.Possible values are append and prepend.\n * @param iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param container - The container on which created span element is going to append.\n * @param inputElement - The inputElement on which created span element is going to prepend.\n */\n // tslint:disable\n function addIcon(position, icons, container, input, internalCreate) {\n // tslint:enable\n let result = typeof (icons) === 'string' ? icons.split(',')\n : icons;\n if (position.toLowerCase() === 'append') {\n for (let icon of result) {\n appendSpan(icon, container, internalCreate);\n }\n }\n else {\n for (let icon of result) {\n prependSpan(icon, container, input, internalCreate);\n }\n }\n }\n Input.addIcon = addIcon;\n /**\n * Creates a new span element with the given icons added and prepend it in input element.\n * ```\n * E.g : Input.prependSpan('e-icon-spin', inputObj.container, inputElement);\n * ```\n * @param iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param container - The container on which created span element is going to append.\n * @param inputElement - The inputElement on which created span element is going to prepend.\n */\n // tslint:disable\n function prependSpan(iconClass, container, inputElement, internalCreateElement) {\n // tslint:enable\n let makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n let button = createIconEle(iconClass, makeElement);\n container.classList.add('e-float-icon-left');\n let innerWrapper = container.querySelector('.e-input-in-wrap');\n if (isNullOrUndefined(innerWrapper)) {\n innerWrapper = makeElement('span', { className: 'e-input-in-wrap' });\n inputElement.parentNode.insertBefore(innerWrapper, inputElement);\n let result = container.querySelectorAll(inputElement.tagName + ' ~ *');\n innerWrapper.appendChild(inputElement);\n for (let i = 0; i < result.length; i++) {\n innerWrapper.appendChild(result[i]);\n }\n }\n innerWrapper.parentNode.insertBefore(button, innerWrapper);\n if (!container.classList.contains(CLASSNAMES.INPUTGROUP)) {\n container.classList.add(CLASSNAMES.INPUTGROUP);\n }\n _internalRipple(true, container, button);\n return button;\n }\n Input.prependSpan = prependSpan;\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.appendSpan('e-icon-spin', inputObj.container);\n * ```\n * @param iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param container - The container on which created span element is going to append.\n */\n function appendSpan(iconClass, container, internalCreateElement) {\n let makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n let button = createIconEle(iconClass, makeElement);\n if (!container.classList.contains(CLASSNAMES.INPUTGROUP)) {\n container.classList.add(CLASSNAMES.INPUTGROUP);\n }\n let wrap = (container.classList.contains('e-float-icon-left')) ? container.querySelector('.e-input-in-wrap') :\n container;\n wrap.appendChild(button);\n _internalRipple(true, container, button);\n return button;\n }\n Input.appendSpan = appendSpan;\n})(Input || (Input = {}));\n\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst ROOT = 'e-control-wrapper e-numeric';\nconst SPINICON = 'e-input-group-icon';\nconst SPINUP = 'e-spin-up';\nconst SPINDOWN = 'e-spin-down';\nconst ERROR = 'e-error';\nconst INCREMENT = 'increment';\nconst DECREMENT = 'decrement';\nconst INTREGEXP = new RegExp('^(-)?(\\\\d*)$');\nconst DECIMALSEPARATOR = '.';\nconst COMPONENT = 'e-numerictextbox';\nconst CONTROL = 'e-control';\nconst NUMERIC_FOCUS = 'e-input-focus';\nconst HIDDENELEMENT = 'e-numeric-hidden';\nconst wrapperAttributes = ['title', 'style', 'class'];\n/**\n * Represents the NumericTextBox component that allows the user to enter only numeric values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nlet NumericTextBox = class NumericTextBox extends Component {\n constructor(options, element) {\n super(options, element);\n this.isVue = false;\n this.preventChange = false;\n this.numericOptions = options;\n }\n preRender() {\n this.isPrevFocused = false;\n this.decimalSeparator = '.';\n this.intRegExp = new RegExp('/^(-)?(\\d*)$/');\n this.isCalled = false;\n let ejInstance = getValue('ej2_instances', this.element);\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [CONTROL, COMPONENT, 'e-lib']);\n this.angularTagName = null;\n this.formEle = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.angularTagName = this.element.tagName;\n let input = this.createElement('input');\n let index = 0;\n for (index; index < this.element.attributes.length; index++) {\n let attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id') {\n input.setAttribute(this.element.attributes[index].nodeName, this.element.attributes[index].nodeValue);\n input.innerHTML = this.element.innerHTML;\n }\n }\n if (this.element.hasAttribute('name')) {\n this.element.removeAttribute('name');\n }\n this.element.classList.remove('e-control', 'e-numerictextbox');\n this.element.appendChild(input);\n this.element = input;\n setValue('ej2_instances', ejInstance, this.element);\n }\n if (!(isBlazor() && this.isServerRendered)) {\n attributes(this.element, { 'role': 'spinbutton', 'tabindex': '0', 'autocomplete': 'off', 'aria-live': 'assertive' });\n let localeText = {\n incrementTitle: 'Increment value', decrementTitle: 'Decrement value', placeholder: this.placeholder\n };\n this.l10n = new L10n('numerictextbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n }\n this.isValidState = true;\n this.inputStyle = null;\n this.inputName = null;\n this.cultureInfo = {};\n this.initCultureInfo();\n this.initCultureFunc();\n this.prevValue = this.value;\n if (!(isBlazor() && this.isServerRendered)) {\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if (this.formEle) {\n this.inputEleValue = this.value;\n }\n }\n this.validateMinMax();\n this.validateStep();\n if (this.placeholder === null && !(isBlazor() && this.isServerRendered)) {\n this.updatePlaceholder();\n }\n }\n /**\n * To Initialize the control rendering\n * @private\n */\n render() {\n if (this.element.tagName.toLowerCase() === 'input') {\n if (!(isBlazor() && this.isServerRendered)) {\n this.createWrapper();\n if (this.showSpinButton) {\n this.spinBtnCreation();\n }\n this.setElementWidth(this.width);\n if (!this.container.classList.contains('e-input-group')) {\n this.container.classList.add('e-input-group');\n }\n this.changeValue(this.value === null || isNaN(this.value) ?\n null : this.strictMode ? this.trimValue(this.value) : this.value);\n }\n else {\n this.container = this.element.parentElement;\n this.inputWrapper = { container: this.container };\n this.hiddenInput = this.container.querySelector('input[type=\"hidden\"]');\n if (this.showClearButton) {\n this.inputWrapper.clearButton = this.container.querySelector('.e-clear-icon');\n Input.wireClearBtnEvents(this.element, this.inputWrapper.clearButton, this.inputWrapper.container);\n }\n if (this.showSpinButton) {\n this.spinDown = this.container.querySelector('.' + SPINDOWN);\n this.spinUp = this.container.querySelector('.' + SPINUP);\n this.wireSpinBtnEvents();\n }\n Input.bindInitialEvent({\n element: this.element, buttons: null, customTag: null, floatLabelType: this.floatLabelType, properties: this.properties\n });\n }\n this.wireEvents();\n if (!(isBlazor() && this.isServerRendered)) {\n if (this.value !== null && !isNaN(this.value)) {\n if (this.decimals) {\n this.setProperties({ value: this.roundNumber(this.value, this.decimals) }, true);\n }\n }\n if (this.element.getAttribute('value') || this.value) {\n this.element.setAttribute('value', this.element.value);\n this.hiddenInput.setAttribute('value', this.hiddenInput.value);\n }\n }\n this.elementPrevValue = this.element.value;\n this.renderComplete();\n }\n }\n checkAttributes(isDynamic) {\n let attributes$$1 = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'step', 'disabled', 'readonly', 'style', 'name', 'placeholder'];\n for (let prop of attributes$$1) {\n if (!isNullOrUndefined(this.element.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['enabled'] === undefined)) || isDynamic) {\n let enabled = this.element.getAttribute(prop) === 'disabled' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['readonly'] === undefined)) || isDynamic) {\n let readonly = this.element.getAttribute(prop) === 'readonly' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'value':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['value'] === undefined)) || isDynamic) {\n let setNumber = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n this.setProperties(setValue(prop, setNumber, {}), !isDynamic);\n }\n break;\n case 'min':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['min'] === undefined)) || isDynamic) {\n let minValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (minValue !== null && !isNaN(minValue)) {\n this.setProperties(setValue(prop, minValue, {}), !isDynamic);\n }\n }\n break;\n case 'max':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['max'] === undefined)) || isDynamic) {\n let maxValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (maxValue !== null && !isNaN(maxValue)) {\n this.setProperties(setValue(prop, maxValue, {}), !isDynamic);\n }\n }\n break;\n case 'step':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['step'] === undefined)) || isDynamic) {\n let stepValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (stepValue !== null && !isNaN(stepValue)) {\n this.setProperties(setValue(prop, stepValue, {}), !isDynamic);\n }\n }\n break;\n case 'style':\n this.inputStyle = this.element.getAttribute(prop);\n break;\n case 'name':\n this.inputName = this.element.getAttribute(prop);\n break;\n default:\n let value = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if ((value !== null && !isNaN(value)) || (prop === 'value')) {\n this.setProperties(setValue(prop, value, {}), true);\n }\n break;\n }\n }\n }\n }\n updatePlaceholder() {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n }\n initCultureFunc() {\n this.instance = new Internationalization(this.locale);\n }\n initCultureInfo() {\n this.cultureInfo.format = this.format;\n if (getValue('currency', this) !== null) {\n setValue('currency', this.currency, this.cultureInfo);\n this.setProperties({ currencyCode: this.currency }, true);\n }\n }\n /* Wrapper creation */\n createWrapper() {\n let updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getNumericValidClassList(this.cssClass);\n }\n let inputObj = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValue,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton,\n enabled: this.enabled\n }\n }, this.createElement);\n this.inputWrapper = inputObj;\n this.container = inputObj.container;\n this.container.setAttribute('class', ROOT + ' ' + this.container.getAttribute('class'));\n this.updateHTMLAttrToWrapper();\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n this.hiddenInput = (this.createElement('input', { attrs: { type: 'text',\n 'validateHidden': 'true', 'class': HIDDENELEMENT } }));\n this.inputName = this.inputName !== null ? this.inputName : this.element.id;\n this.element.removeAttribute('name');\n attributes(this.hiddenInput, { 'name': this.inputName });\n this.container.insertBefore(this.hiddenInput, this.container.childNodes[1]);\n this.updateDataAttribute(false);\n if (this.inputStyle !== null) {\n attributes(this.container, { 'style': this.inputStyle });\n }\n }\n updateDataAttribute(isDynamic) {\n let attr = {};\n if (!isDynamic) {\n for (let a = 0; a < this.element.attributes.length; a++) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n else {\n attr = this.htmlAttributes;\n }\n for (let key of Object.keys(attr)) {\n if (key.indexOf('data') === 0) {\n this.hiddenInput.setAttribute(key, attr[key]);\n }\n }\n }\n updateHTMLAttrToElement() {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (let pro of Object.keys(this.htmlAttributes)) {\n if (wrapperAttributes.indexOf(pro) < 0) {\n this.element.setAttribute(pro, this.htmlAttributes[pro]);\n }\n }\n }\n }\n updateCssClass(newClass, oldClass) {\n Input.setCssClass(this.getNumericValidClassList(newClass), [this.container], this.getNumericValidClassList(oldClass));\n }\n getNumericValidClassList(numericClassName) {\n let result = numericClassName;\n if (!isNullOrUndefined(numericClassName) && numericClassName !== '') {\n result = (numericClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n }\n updateHTMLAttrToWrapper() {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (let pro of Object.keys(this.htmlAttributes)) {\n if (wrapperAttributes.indexOf(pro) > -1) {\n if (pro === 'class') {\n let updatedClassValue = this.getNumericValidClassList(this.htmlAttributes[pro]);\n if (updatedClassValue !== '') {\n addClass([this.container], updatedClassValue.split(' '));\n }\n }\n else if (pro === 'style') {\n let numericStyle = this.container.getAttribute(pro);\n numericStyle = !isNullOrUndefined(numericStyle) ? (numericStyle + this.htmlAttributes[pro]) :\n this.htmlAttributes[pro];\n this.container.setAttribute(pro, numericStyle);\n }\n else {\n this.container.setAttribute(pro, this.htmlAttributes[pro]);\n }\n }\n }\n }\n }\n setElementWidth(width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n }\n /* Spinner creation */\n spinBtnCreation() {\n this.spinDown = Input.appendSpan(SPINICON + ' ' + SPINDOWN, this.container, this.createElement);\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle'),\n 'aria-label': this.l10n.getConstant('decrementTitle')\n });\n this.spinUp = Input.appendSpan(SPINICON + ' ' + SPINUP, this.container, this.createElement);\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle'),\n 'aria-label': this.l10n.getConstant('incrementTitle')\n });\n this.wireSpinBtnEvents();\n }\n validateMinMax() {\n if (!(typeof (this.min) === 'number' && !isNaN(this.min))) {\n this.setProperties({ min: -(Number.MAX_VALUE) }, true);\n }\n if (!(typeof (this.max) === 'number' && !isNaN(this.max))) {\n this.setProperties({ max: Number.MAX_VALUE }, true);\n }\n if (this.decimals !== null) {\n if (this.min !== -(Number.MAX_VALUE)) {\n this.setProperties({ min: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.min)) }, true);\n }\n if (this.max !== (Number.MAX_VALUE)) {\n this.setProperties({ max: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.max)) }, true);\n }\n }\n this.setProperties({ min: this.min > this.max ? this.max : this.min }, true);\n attributes(this.element, { 'aria-valuemin': this.min.toString(), 'aria-valuemax': this.max.toString() });\n }\n formattedValue(decimals, value) {\n return this.instance.getNumberFormat({\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals, useGrouping: false\n })(value);\n }\n validateStep() {\n if (this.decimals !== null) {\n this.setProperties({ step: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.step)) }, true);\n }\n }\n action(operation, event) {\n this.isInteract = true;\n let value = this.isFocused ? this.instance.getNumberParser({ format: 'n' })(this.element.value) : this.value;\n this.changeValue(this.performAction(value, this.step, operation));\n this.raiseChangeEvent(event);\n }\n checkErrorClass() {\n if (this.isValidState) {\n removeClass([this.container], ERROR);\n }\n else {\n addClass([this.container], ERROR);\n }\n attributes(this.element, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n }\n bindClearEvent() {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n }\n resetHandler(e) {\n e.preventDefault();\n if (!(this.inputWrapper.clearButton.classList.contains('e-clear-icon-hide'))) {\n this.clear(e);\n }\n this.isInteract = true;\n this.raiseChangeEvent(e);\n }\n clear(event) {\n this.setProperties({ value: null }, true);\n this.setElementValue('');\n this.hiddenInput.value = '';\n let formElement = closest(this.element, 'form');\n if (formElement) {\n let element = this.element.nextElementSibling;\n let keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n }\n resetFormHandler() {\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.updateValue(null);\n }\n else {\n this.updateValue(this.inputEleValue);\n }\n }\n setSpinButton() {\n if (!isNullOrUndefined(this.spinDown)) {\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle'),\n 'aria-label': this.l10n.getConstant('decrementTitle')\n });\n }\n if (!isNullOrUndefined(this.spinUp)) {\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle'),\n 'aria-label': this.l10n.getConstant('incrementTitle')\n });\n }\n }\n wireEvents() {\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'input', this.inputHandler, this);\n EventHandler.add(this.element, 'keypress', this.keyPressHandler, this);\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'paste', this.pasteHandler, this);\n if (this.enabled) {\n this.bindClearEvent();\n if (this.formEle) {\n EventHandler.add(this.formEle, 'reset', this.resetFormHandler, this);\n }\n }\n }\n wireSpinBtnEvents() {\n /* bind spin button events */\n EventHandler.add(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n }\n unwireEvents() {\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'blur', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'input', this.inputHandler);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.element, 'keypress', this.keyPressHandler);\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'paste', this.pasteHandler);\n if (this.formEle) {\n EventHandler.remove(this.formEle, 'reset', this.resetFormHandler);\n }\n }\n unwireSpinBtnEvents() {\n /* unbind spin button events */\n EventHandler.remove(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n }\n changeHandler(event) {\n event.stopPropagation();\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n let parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n }\n raiseChangeEvent(event) {\n if (this.prevValue !== this.value) {\n let eventArgs = {};\n this.changeEventArgs = { value: this.value, previousValue: this.prevValue, isInteracted: this.isInteract,\n isInteraction: this.isInteract, event: event };\n if (event) {\n this.changeEventArgs.event = event;\n }\n if (this.changeEventArgs.event === undefined) {\n this.changeEventArgs.isInteracted = false;\n this.changeEventArgs.isInteraction = false;\n }\n merge(eventArgs, this.changeEventArgs);\n this.prevValue = this.value;\n this.isInteract = false;\n this.elementPrevValue = this.element.value;\n this.preventChange = false;\n this.trigger('change', eventArgs);\n }\n }\n pasteHandler() {\n if (!this.enabled || this.readonly) {\n return;\n }\n let beforeUpdate = this.element.value;\n setTimeout(() => {\n if (!this.numericRegex().test(this.element.value)) {\n this.setElementValue(beforeUpdate);\n }\n });\n }\n preventHandler() {\n let iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n setTimeout(() => {\n if (this.element.selectionStart > 0) {\n let currentPos = this.element.selectionStart;\n let prevPos = this.element.selectionStart - 1;\n let start = 0;\n let ignoreKeyCode;\n let valArray = this.element.value.split('');\n let numericObject = getNumericObject(this.locale);\n let decimalSeparator = getValue('decimal', numericObject);\n ignoreKeyCode = decimalSeparator.charCodeAt(0);\n if (this.element.value[prevPos] === ' ' && this.element.selectionStart > 0 && !iOS) {\n if (isNullOrUndefined(this.prevVal)) {\n this.element.value = this.element.value.trim();\n }\n else if (prevPos !== 0) {\n this.element.value = this.prevVal;\n }\n else if (prevPos === 0) {\n this.element.value = this.element.value.trim();\n }\n this.element.setSelectionRange(prevPos, prevPos);\n }\n else if (isNaN(parseFloat(this.element.value[this.element.selectionStart - 1])) &&\n this.element.value[this.element.selectionStart - 1].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(this.element.value[this.element.selectionStart - 1]) !==\n valArray.lastIndexOf(this.element.value[this.element.selectionStart - 1]) &&\n this.element.value[this.element.selectionStart - 1].charCodeAt(0) === ignoreKeyCode) ||\n this.element.value[this.element.selectionStart - 1].charCodeAt(0) !== ignoreKeyCode) {\n this.element.value = this.element.value.substring(0, prevPos) +\n this.element.value.substring(currentPos, this.element.value.length);\n this.element.setSelectionRange(prevPos, prevPos);\n if (isNaN(parseFloat(this.element.value[this.element.selectionStart - 1])) && this.element.selectionStart > 0\n && this.element.value.length) {\n this.preventHandler();\n }\n }\n }\n else if (isNaN(parseFloat(this.element.value[this.element.selectionStart - 2])) && this.element.selectionStart > 1 &&\n this.element.value[this.element.selectionStart - 2].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(this.element.value[this.element.selectionStart - 2]) !==\n valArray.lastIndexOf(this.element.value[this.element.selectionStart - 2]) &&\n this.element.value[this.element.selectionStart - 2].charCodeAt(0) === ignoreKeyCode) ||\n this.element.value[this.element.selectionStart - 2].charCodeAt(0) !== ignoreKeyCode) {\n this.element.setSelectionRange(prevPos, prevPos);\n this.nextEle = this.element.value[this.element.selectionStart];\n this.cursorPosChanged = true;\n this.preventHandler();\n }\n }\n if (this.cursorPosChanged === true && this.element.value[this.element.selectionStart] === this.nextEle &&\n isNaN(parseFloat(this.element.value[this.element.selectionStart - 1]))) {\n this.element.setSelectionRange(this.element.selectionStart + 1, this.element.selectionStart + 1);\n this.cursorPosChanged = false;\n this.nextEle = null;\n }\n if (this.element.value.trim() === '') {\n this.element.setSelectionRange(start, start);\n }\n if (this.element.selectionStart > 0) {\n if ((this.element.value[this.element.selectionStart - 1].charCodeAt(0) === 45) && this.element.selectionStart > 1) {\n if (isNullOrUndefined(this.prevVal)) {\n this.element.value = this.element.value;\n }\n else {\n this.element.value = this.prevVal;\n }\n this.element.setSelectionRange(this.element.selectionStart, this.element.selectionStart);\n }\n }\n this.prevVal = this.element.value;\n }\n });\n }\n keyUpHandler(event) {\n if (!this.enabled || this.readonly) {\n return;\n }\n let iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n if (!iOS && Browser.isDevice) {\n this.preventHandler();\n }\n let parseValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parseValue = parseValue === null || isNaN(parseValue) ? null : parseValue;\n this.hiddenInput.value = parseValue || parseValue === 0 ? parseValue.toString() : null;\n let formElement = closest(this.element, 'form');\n if (formElement) {\n let element = this.element.nextElementSibling;\n let keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n }\n ;\n inputHandler(event) {\n if (!this.enabled || this.readonly) {\n return;\n }\n let iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n let fireFox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n if ((fireFox || iOS) && Browser.isDevice) {\n this.preventHandler();\n }\n if (this.isVue) {\n let current = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n let previous = this.instance.getNumberParser({ format: 'n' })(this.elementPrevValue);\n let eventArgs = {\n event: event,\n value: (current === null || isNaN(current) ? null : current),\n previousValue: (previous === null || isNaN(previous) ? null : previous)\n };\n this.preventChange = true;\n this.elementPrevValue = this.element.value;\n this.trigger('input', eventArgs);\n }\n }\n ;\n keyDownHandler(event) {\n if (!this.readonly) {\n switch (event.keyCode) {\n case 38:\n event.preventDefault();\n this.action(INCREMENT, event);\n break;\n case 40:\n event.preventDefault();\n this.action(DECREMENT, event);\n break;\n default: break;\n }\n }\n }\n ;\n performAction(value, step, operation) {\n if (value === null || isNaN(value)) {\n value = 0;\n }\n let updatedValue = operation === INCREMENT ? value + step : value - step;\n updatedValue = this.correctRounding(value, step, updatedValue);\n return this.strictMode ? this.trimValue(updatedValue) : updatedValue;\n }\n ;\n correctRounding(value, step, result) {\n let floatExp = new RegExp('[,.](.*)');\n let valueText = value.toString();\n let stepText = step.toString();\n let floatValue = floatExp.test(value.toString());\n let floatStep = floatExp.test(step.toString());\n if (floatValue || floatStep) {\n let valueCount = floatValue ? floatExp.exec(value.toString())[0].length : 0;\n let stepCount = floatStep ? floatExp.exec(step.toString())[0].length : 0;\n let max = Math.max(valueCount, stepCount);\n return value = this.roundValue(result, max);\n }\n return result;\n }\n ;\n roundValue(result, precision) {\n precision = precision || 0;\n let divide = Math.pow(10, precision);\n return result *= divide, result = Math.round(result) / divide;\n }\n ;\n updateValue(value, event) {\n if (event) {\n this.isInteract = true;\n }\n if (value !== null && !isNaN(value)) {\n if (this.decimals) {\n value = this.roundNumber(value, this.decimals);\n }\n }\n this.changeValue(value === null || isNaN(value) ? null : this.strictMode ? this.trimValue(value) : value);\n if ((!this.isVue) || (this.isVue && !this.preventChange)) {\n this.raiseChangeEvent(event);\n }\n }\n updateCurrency(prop, propVal) {\n setValue(prop, propVal, this.cultureInfo);\n this.updateValue(this.value);\n }\n changeValue(value) {\n if (!(value || value === 0)) {\n value = null;\n this.setProperties({ value: value }, true);\n }\n else {\n let numberOfDecimals;\n numberOfDecimals = this.getNumberOfDecimals(value);\n this.setProperties({ value: this.roundNumber(value, numberOfDecimals) }, true);\n }\n this.modifyText();\n if (!this.strictMode) {\n this.validateState();\n }\n }\n ;\n modifyText() {\n if (this.value || this.value === 0) {\n let value = this.formatNumber();\n let elementValue = this.isFocused ? value : this.instance.getNumberFormat(this.cultureInfo)(this.value);\n this.setElementValue(elementValue);\n attributes(this.element, { 'aria-valuenow': value });\n this.hiddenInput.value = this.value.toString();\n if (this.value !== null && this.serverDecimalSeparator) {\n this.hiddenInput.value = this.hiddenInput.value.replace('.', this.serverDecimalSeparator);\n }\n }\n else {\n this.setElementValue('');\n this.element.removeAttribute('aria-valuenow');\n this.hiddenInput.value = null;\n }\n }\n ;\n setElementValue(val, element) {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, this.showClearButton);\n }\n validateState() {\n this.isValidState = true;\n if (this.value || this.value === 0) {\n this.isValidState = !(this.value > this.max || this.value < this.min);\n }\n this.checkErrorClass();\n }\n getNumberOfDecimals(value) {\n let numberOfDecimals;\n let EXPREGEXP = new RegExp('[eE][\\-+]?([0-9]+)');\n let valueString = value.toString();\n if (EXPREGEXP.test(valueString)) {\n let result = EXPREGEXP.exec(valueString);\n if (!isNullOrUndefined(result)) {\n valueString = value.toFixed(Math.min(parseInt(result[1], 10), 20));\n }\n }\n let decimalPart = valueString.split('.')[1];\n numberOfDecimals = !decimalPart || !decimalPart.length ? 0 : decimalPart.length;\n if (this.decimals !== null) {\n numberOfDecimals = numberOfDecimals < this.decimals ? numberOfDecimals : this.decimals;\n }\n return numberOfDecimals;\n }\n formatNumber() {\n let numberOfDecimals;\n numberOfDecimals = this.getNumberOfDecimals(this.value);\n return this.instance.getNumberFormat({\n maximumFractionDigits: numberOfDecimals,\n minimumFractionDigits: numberOfDecimals, useGrouping: false\n })(this.value);\n }\n ;\n trimValue(value) {\n if (value > this.max) {\n return this.max;\n }\n if (value < this.min) {\n return this.min;\n }\n return value;\n }\n ;\n roundNumber(value, precision) {\n let result = value;\n let decimals = precision || 0;\n let result1 = result.toString().split('e');\n result = Math.round(Number(result1[0] + 'e' + (result1[1] ? (Number(result1[1]) + decimals) : decimals)));\n let result2 = result.toString().split('e');\n result = Number(result2[0] + 'e' + (result2[1] ? (Number(result2[1]) - decimals) : -decimals));\n return Number(result.toFixed(decimals));\n }\n ;\n cancelEvent(event) {\n event.preventDefault();\n return false;\n }\n keyPressHandler(event) {\n if (!this.enabled || this.readonly) {\n return true;\n }\n if (!Browser.isDevice && Browser.info.version === '11.0' && event.keyCode === 13) {\n let parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n return true;\n }\n if (event.which === 0 || event.metaKey || event.ctrlKey || event.keyCode === 8 || event.keyCode === 13) {\n return true;\n }\n let currentChar = String.fromCharCode(event.which);\n let text = this.element.value;\n text = text.substring(0, this.element.selectionStart) + currentChar + text.substring(this.element.selectionEnd);\n if (!this.numericRegex().test(text)) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n else {\n return true;\n }\n }\n ;\n numericRegex() {\n let numericObject = getNumericObject(this.locale);\n let decimalSeparator = getValue('decimal', numericObject);\n let fractionRule = '*';\n if (decimalSeparator === DECIMALSEPARATOR) {\n decimalSeparator = '\\\\' + decimalSeparator;\n }\n if (this.decimals === 0 && this.validateDecimalOnType) {\n return INTREGEXP;\n }\n if (this.decimals && this.validateDecimalOnType) {\n fractionRule = '{0,' + this.decimals + '}';\n }\n return new RegExp('^(-)?(((\\\\d+(' + decimalSeparator + '\\\\d' + fractionRule +\n ')?)|(' + decimalSeparator + '\\\\d' + fractionRule + ')))?$');\n }\n ;\n mouseWheel(event) {\n event.preventDefault();\n let delta;\n let rawEvent = event;\n if (rawEvent.wheelDelta) {\n delta = rawEvent.wheelDelta / 120;\n }\n else if (rawEvent.detail) {\n delta = -rawEvent.detail / 3;\n }\n if (delta > 0) {\n this.action(INCREMENT, event);\n }\n else if (delta < 0) {\n this.action(DECREMENT, event);\n }\n this.cancelEvent(event);\n }\n focusHandler(event) {\n this.focusEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('focus', this.focusEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n this.isFocused = true;\n removeClass([this.container], ERROR);\n this.prevValue = this.value;\n if ((this.value || this.value === 0)) {\n let formatValue = this.formatNumber();\n this.setElementValue(formatValue);\n if (!this.isPrevFocused) {\n if (!Browser.isDevice && Browser.info.version === '11.0') {\n this.element.setSelectionRange(0, formatValue.length);\n }\n else {\n let delay = (Browser.isDevice && Browser.isIos) ? 600 : 0;\n setTimeout(() => {\n this.element.setSelectionRange(0, formatValue.length);\n }, delay);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.add(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel, this);\n }\n }\n ;\n focusOutHandler(event) {\n this.blurEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('blur', this.blurEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isPrevFocused) {\n event.preventDefault();\n if (Browser.isDevice) {\n let value = this.element.value;\n this.element.focus();\n this.isPrevFocused = false;\n let ele = this.element;\n setTimeout(() => {\n this.setElementValue(value, ele);\n }, 200);\n }\n }\n else {\n this.isFocused = false;\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n let parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput);\n if (!Browser.isDevice) {\n EventHandler.remove(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel);\n }\n }\n let formElement = closest(this.element, 'form');\n if (formElement) {\n let element = this.element.nextElementSibling;\n let focusEvent = document.createEvent('FocusEvent');\n focusEvent.initEvent('focusout', false, true);\n element.dispatchEvent(focusEvent);\n }\n }\n ;\n mouseDownOnSpinner(event) {\n if (this.isFocused) {\n this.isPrevFocused = true;\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n let result = this.getElementData(event);\n let target = event.currentTarget;\n let action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.add(target, 'mouseleave', this.mouseUpClick, this);\n this.timeOut = setInterval(() => { this.isCalled = true; this.action(action, event); }, 150);\n EventHandler.add(document, 'mouseup', this.mouseUpClick, this);\n }\n touchMoveOnSpinner(event) {\n let target = document.elementFromPoint(event.clientX, event.clientY);\n if (!(target.classList.contains(SPINICON))) {\n clearInterval(this.timeOut);\n }\n }\n mouseUpOnSpinner(event) {\n if (this.isPrevFocused) {\n this.element.focus();\n if (!Browser.isDevice) {\n this.isPrevFocused = false;\n }\n }\n if (!Browser.isDevice) {\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n let target = event.currentTarget;\n let action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.remove(target, 'mouseleave', this.mouseUpClick);\n if (!this.isCalled) {\n this.action(action, event);\n }\n this.isCalled = false;\n EventHandler.remove(document, 'mouseup', this.mouseUpClick);\n let formElement = closest(this.element, 'form');\n if (formElement) {\n let element = this.element.nextElementSibling;\n let keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n }\n getElementData(event) {\n if ((event.which && event.which === 3) || (event.button && event.button === 2)\n || !this.enabled || this.readonly) {\n return false;\n }\n clearInterval(this.timeOut);\n return true;\n }\n floatLabelTypeUpdate() {\n Input.removeFloating(this.inputWrapper);\n let hiddenInput = this.hiddenInput;\n this.hiddenInput.remove();\n Input.addFloating(this.element, this.floatLabelType, this.placeholder, this.createElement);\n this.container.insertBefore(hiddenInput, this.container.childNodes[1]);\n }\n mouseUpClick(event) {\n event.stopPropagation();\n clearInterval(this.timeOut);\n this.isCalled = false;\n EventHandler.remove(this.spinUp, 'mouseleave', this.mouseUpClick);\n EventHandler.remove(this.spinDown, 'mouseleave', this.mouseUpClick);\n }\n /**\n * Increments the NumericTextBox value with the specified step value.\n * @param {number} step - Specifies the value used to increment the NumericTextBox value.\n * if its not given then numeric value will be incremented based on the step property value.\n */\n increment(step = this.step) {\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, INCREMENT));\n this.raiseChangeEvent();\n }\n /**\n * Decrements the NumericTextBox value with specified step value.\n * @param {number} step - Specifies the value used to decrement the NumericTextBox value.\n * if its not given then numeric value will be decremented based on the step property value.\n */\n decrement(step = this.step) {\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, DECREMENT));\n this.raiseChangeEvent();\n }\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n * @method destroy\n * @return {void}\n */\n destroy() {\n this.unwireEvents();\n if (!(isBlazor() && this.isServerRendered)) {\n detach(this.hiddenInput);\n if (this.showSpinButton) {\n this.unwireSpinBtnEvents();\n detach(this.spinUp);\n detach(this.spinDown);\n }\n let attrArray = ['aria-labelledby', 'role', 'autocomplete', 'aria-readonly',\n 'autocorrect', 'aria-disabled', 'aria-placeholder', 'autocapitalize',\n 'spellcheck', 'aria-autocomplete', 'tabindex', 'aria-valuemin',\n 'aria-valuemax', 'aria-live', 'aria-valuenow', 'aria-invalid'];\n for (let i = 0; i < attrArray.length; i++) {\n this.element.removeAttribute(attrArray[i]);\n }\n this.element.classList.remove('e-input');\n this.container.insertAdjacentElement('afterend', this.element);\n detach(this.container);\n super.destroy();\n }\n }\n /**\n * Returns the value of NumericTextBox with the format applied to the NumericTextBox.\n */\n getText() {\n return this.element.value;\n }\n /**\n * Sets the focus to widget for interaction.\n * @returns void\n */\n focusIn() {\n if (document.activeElement !== this.element && this.enabled) {\n this.element.focus();\n addClass([this.container], [NUMERIC_FOCUS]);\n }\n }\n /**\n * Remove the focus from widget, if the widget is in focus state.\n * @returns void\n */\n focusOut() {\n if (document.activeElement === this.element && this.enabled) {\n this.element.blur();\n removeClass([this.container], [NUMERIC_FOCUS]);\n }\n }\n /**\n * Gets the properties to be maintained in the persisted state.\n * @return {string}\n */\n getPersistData() {\n let keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n }\n /**\n * Calls internally if any of the property value is changed.\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element);\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.container]);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n else {\n this.element.removeAttribute('aria-readonly');\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.updateDataAttribute(true);\n this.checkAttributes(true);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.element);\n break;\n case 'step':\n this.step = newProp.step;\n this.validateStep();\n break;\n case 'showSpinButton':\n this.updateSpinButton(newProp);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n this.floatLabelTypeUpdate();\n break;\n case 'value':\n this.updateValue(newProp.value);\n if (this.isVue && this.preventChange) {\n this.preventChange = false;\n }\n break;\n case 'min':\n case 'max':\n setValue(prop, getValue(prop, newProp), this);\n this.validateMinMax();\n this.updateValue(this.value);\n break;\n case 'strictMode':\n this.strictMode = newProp.strictMode;\n this.updateValue(this.value);\n this.validateState();\n break;\n case 'locale':\n this.initCultureFunc();\n this.l10n.setLocale(this.locale);\n this.setSpinButton();\n this.updatePlaceholder();\n Input.setPlaceholder(this.placeholder, this.element);\n this.updateValue(this.value);\n break;\n case 'currency':\n let propVal = getValue(prop, newProp);\n this.setProperties({ currencyCode: propVal }, true);\n this.updateCurrency(prop, propVal);\n break;\n case 'currencyCode':\n let propValue = getValue(prop, newProp);\n this.setProperties({ currency: propValue }, true);\n this.updateCurrency('currency', propValue);\n break;\n case 'format':\n setValue(prop, getValue(prop, newProp), this);\n this.initCultureInfo();\n this.updateValue(this.value);\n break;\n case 'decimals':\n this.decimals = newProp.decimals;\n this.updateValue(this.value);\n }\n }\n }\n updateClearButton(newProp) {\n if (isBlazor()) {\n if (this.showClearButton) {\n this.inputWrapper.clearButton = this.container.querySelector('.e-clear-icon');\n Input.wireClearBtnEvents(this.element, this.inputWrapper.clearButton, this.inputWrapper.container);\n }\n }\n else {\n Input.setClearButton(newProp.showClearButton, this.element, this.inputWrapper, undefined, this.createElement);\n this.bindClearEvent();\n }\n }\n updateSpinButton(newProp) {\n if (isBlazor()) {\n if (this.showSpinButton) {\n this.spinDown = this.container.querySelector('.' + SPINDOWN);\n this.spinUp = this.container.querySelector('.' + SPINUP);\n this.wireSpinBtnEvents();\n }\n }\n else {\n if (newProp.showSpinButton) {\n this.spinBtnCreation();\n }\n else {\n detach(this.spinUp);\n detach(this.spinDown);\n }\n }\n }\n /**\n * Gets the component name\n * @private\n */\n getModuleName() {\n return 'numerictextbox';\n }\n};\n__decorate([\n Property('')\n], NumericTextBox.prototype, \"cssClass\", void 0);\n__decorate([\n Property(null)\n], NumericTextBox.prototype, \"value\", void 0);\n__decorate([\n Property(-(Number.MAX_VALUE))\n], NumericTextBox.prototype, \"min\", void 0);\n__decorate([\n Property(Number.MAX_VALUE)\n], NumericTextBox.prototype, \"max\", void 0);\n__decorate([\n Property(1)\n], NumericTextBox.prototype, \"step\", void 0);\n__decorate([\n Property(null)\n], NumericTextBox.prototype, \"width\", void 0);\n__decorate([\n Property(null)\n], NumericTextBox.prototype, \"placeholder\", void 0);\n__decorate([\n Property({})\n], NumericTextBox.prototype, \"htmlAttributes\", void 0);\n__decorate([\n Property(true)\n], NumericTextBox.prototype, \"showSpinButton\", void 0);\n__decorate([\n Property(false)\n], NumericTextBox.prototype, \"readonly\", void 0);\n__decorate([\n Property(true)\n], NumericTextBox.prototype, \"enabled\", void 0);\n__decorate([\n Property(false)\n], NumericTextBox.prototype, \"showClearButton\", void 0);\n__decorate([\n Property(false)\n], NumericTextBox.prototype, \"enablePersistence\", void 0);\n__decorate([\n Property('n2')\n], NumericTextBox.prototype, \"format\", void 0);\n__decorate([\n Property(null)\n], NumericTextBox.prototype, \"decimals\", void 0);\n__decorate([\n Property(null)\n], NumericTextBox.prototype, \"currency\", void 0);\n__decorate([\n Property(null)\n], NumericTextBox.prototype, \"currencyCode\", void 0);\n__decorate([\n Property(true)\n], NumericTextBox.prototype, \"strictMode\", void 0);\n__decorate([\n Property(false)\n], NumericTextBox.prototype, \"validateDecimalOnType\", void 0);\n__decorate([\n Property('Never')\n], NumericTextBox.prototype, \"floatLabelType\", void 0);\n__decorate([\n Event()\n], NumericTextBox.prototype, \"created\", void 0);\n__decorate([\n Event()\n], NumericTextBox.prototype, \"destroyed\", void 0);\n__decorate([\n Event()\n], NumericTextBox.prototype, \"change\", void 0);\n__decorate([\n Event()\n], NumericTextBox.prototype, \"focus\", void 0);\n__decorate([\n Event()\n], NumericTextBox.prototype, \"blur\", void 0);\nNumericTextBox = __decorate([\n NotifyPropertyChanges\n], NumericTextBox);\n\n/**\n * NumericTextBox modules\n */\n\n/**\n * MaskedTextBox base module\n */\nconst ERROR$1 = 'e-error';\nconst INPUTGROUP = 'e-input-group';\nconst FLOATINPUT = 'e-float-input';\nconst UTILMASK = 'e-utility-mask';\nconst TOPLABEL = 'e-label-top';\nconst BOTTOMLABEL = 'e-label-bottom';\n/**\n * @hidden\n * Built-in masking elements collection.\n */\nlet regularExpressions = {\n '0': '[0-9]',\n '9': '[0-9 ]',\n '#': '[0-9 +-]',\n 'L': '[A-Za-z]',\n '?': '[A-Za-z ]',\n '&': '[^\\x7f ]+',\n 'C': '[^\\x7f]+',\n 'A': '[A-Za-z0-9]',\n 'a': '[A-Za-z0-9 ]',\n};\n/**\n * @hidden\n * Generate required masking elements to the MaskedTextBox from user mask input.\n */\nfunction createMask() {\n attributes(this.element, {\n 'role': 'textbox', 'autocomplete': 'off', 'autocorrect': 'off', 'autocapitalize': 'off',\n 'spellcheck': 'false', 'aria-live': 'assertive', 'aria-valuenow': ''\n });\n if (this.mask) {\n let splitMask = this.mask.split(']');\n for (let i = 0; i < splitMask.length; i++) {\n if (splitMask[i][splitMask[i].length - 1] === '\\\\') {\n splitMask[i] = splitMask[i] + ']';\n let splitInnerMask = splitMask[i].split('[');\n for (let j = 0; j < splitInnerMask.length; j++) {\n if (splitInnerMask[j][splitInnerMask[j].length - 1] === '\\\\') {\n splitInnerMask[j] = splitInnerMask[j] + '[';\n }\n pushIntoRegExpCollec.call(this, splitInnerMask[j]);\n }\n }\n else {\n let splitInnerMask = splitMask[i].split('[');\n if (splitInnerMask.length > 1) {\n let chkSpace = false;\n for (let j = 0; j < splitInnerMask.length; j++) {\n if (splitInnerMask[j] === '\\\\') {\n this.customRegExpCollec.push('[');\n this.hiddenMask += splitInnerMask[j] + '[';\n }\n else if (splitInnerMask[j] === '') {\n chkSpace = true;\n }\n else if ((splitInnerMask[j] !== '' && chkSpace) || j === splitInnerMask.length - 1) {\n this.customRegExpCollec.push('[' + splitInnerMask[j] + ']');\n this.hiddenMask += this.promptChar;\n chkSpace = false;\n }\n else {\n pushIntoRegExpCollec.call(this, splitInnerMask[j]);\n }\n }\n }\n else {\n pushIntoRegExpCollec.call(this, splitInnerMask[0]);\n }\n }\n }\n this.escapeMaskValue = this.hiddenMask;\n this.promptMask = this.hiddenMask.replace(/[09?LCAa#&]/g, this.promptChar);\n if (!isNullOrUndefined(this.customCharacters)) {\n for (let i = 0; i < this.promptMask.length; i++) {\n if (!isNullOrUndefined(this.customCharacters[this.promptMask[i]])) {\n this.promptMask = this.promptMask.replace(new RegExp(this.promptMask[i], 'g'), this.promptChar);\n }\n }\n }\n let escapeNumber = 0;\n if (this.hiddenMask.match(new RegExp(/\\\\/))) {\n for (let i = 0; i < this.hiddenMask.length; i++) {\n let j = 0;\n if (i >= 1) {\n j = i;\n }\n escapeNumber = this.hiddenMask.length - this.promptMask.length;\n j = j - escapeNumber;\n if ((i > 0 && this.hiddenMask[i - 1] !== '\\\\') && (this.hiddenMask[i] === '>' ||\n this.hiddenMask[i] === '<' || this.hiddenMask[i] === '|')) {\n this.promptMask = this.promptMask.substring(0, j) +\n this.promptMask.substring((i + 1) - escapeNumber, this.promptMask.length);\n this.escapeMaskValue = this.escapeMaskValue.substring(0, j) +\n this.escapeMaskValue.substring((i + 1) - escapeNumber, this.escapeMaskValue.length);\n }\n if (this.hiddenMask[i] === '\\\\') {\n this.promptMask = this.promptMask.substring(0, j) + this.hiddenMask[i + 1] +\n this.promptMask.substring((i + 2) - escapeNumber, this.promptMask.length);\n this.escapeMaskValue = this.escapeMaskValue.substring(0, j) + this.escapeMaskValue[i + 1] +\n this.escapeMaskValue.substring((i + 2) - escapeNumber, this.escapeMaskValue.length);\n }\n }\n }\n else {\n this.promptMask = this.promptMask.replace(/[>|<]/g, '');\n this.escapeMaskValue = this.hiddenMask.replace(/[>|<]/g, '');\n }\n attributes(this.element, { 'aria-invalid': 'false' });\n }\n}\n/**\n * @hidden\n * Apply mask ability with masking elements to the MaskedTextBox.\n */\nfunction applyMask() {\n setElementValue.call(this, this.promptMask);\n setMaskValue.call(this, this.value);\n}\n/**\n * @hidden\n * To wire required events to the MaskedTextBox.\n */\nfunction wireEvents() {\n EventHandler.add(this.element, 'keydown', maskInputKeyDownHandler, this);\n EventHandler.add(this.element, 'keypress', maskInputKeyPressHandler, this);\n EventHandler.add(this.element, 'keyup', maskInputKeyUpHandler, this);\n EventHandler.add(this.element, 'input', maskInputHandler, this);\n EventHandler.add(this.element, 'focus', maskInputFocusHandler, this);\n EventHandler.add(this.element, 'blur', maskInputBlurHandler, this);\n EventHandler.add(this.element, 'paste', maskInputPasteHandler, this);\n EventHandler.add(this.element, 'cut', maskInputCutHandler, this);\n EventHandler.add(this.element, 'drop', maskInputDropHandler, this);\n if (this.enabled) {\n bindClearEvent.call(this);\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', resetFormHandler, this);\n }\n }\n}\n/**\n * @hidden\n * To unwire events attached to the MaskedTextBox.\n */\nfunction unwireEvents() {\n EventHandler.remove(this.element, 'keydown', maskInputKeyDownHandler);\n EventHandler.remove(this.element, 'keypress', maskInputKeyPressHandler);\n EventHandler.remove(this.element, 'keyup', maskInputKeyUpHandler);\n EventHandler.remove(this.element, 'input', maskInputHandler);\n EventHandler.remove(this.element, 'focus', maskInputFocusHandler);\n EventHandler.remove(this.element, 'blur', maskInputBlurHandler);\n EventHandler.remove(this.element, 'paste', maskInputPasteHandler);\n EventHandler.remove(this.element, 'cut', maskInputCutHandler);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', resetFormHandler);\n }\n}\n/**\n * @hidden\n * To bind required events to the MaskedTextBox clearButton.\n */\nfunction bindClearEvent() {\n if (this.showClearButton) {\n EventHandler.add(this.inputObj.clearButton, 'mousedown touchstart', resetHandler, this);\n }\n}\nfunction resetHandler(e) {\n e.preventDefault();\n if (!this.inputObj.clearButton.classList.contains('e-clear-icon-hide')) {\n clear.call(this, e);\n this.value = '';\n }\n}\nfunction clear(event) {\n let value = this.element.value;\n setElementValue.call(this, this.promptMask);\n this.redoCollec.unshift({\n value: this.promptMask, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n triggerMaskChangeEvent.call(this, event, value);\n this.element.setSelectionRange(0, 0);\n}\nfunction resetFormHandler() {\n if (this.element.tagName === 'EJS-MASKEDTEXTBOX') {\n setElementValue.call(this, this.promptMask);\n }\n else {\n this.value = this.initInputValue;\n }\n}\n/**\n * @hidden\n * To get masked value from the MaskedTextBox.\n */\nfunction unstrippedValue(element) {\n return element.value;\n}\n/**\n * @hidden\n * To extract raw value from the MaskedTextBox.\n */\nfunction strippedValue(element, maskValues) {\n let value = '';\n let k = 0;\n let checkMask = false;\n let maskValue = (!isNullOrUndefined(maskValues)) ? maskValues : (!isNullOrUndefined(element) &&\n !isNullOrUndefined(this)) ? element.value : maskValues;\n if (maskValue !== this.promptMask) {\n for (let i = 0; i < this.customRegExpCollec.length; i++) {\n if (checkMask) {\n checkMask = false;\n }\n if (this.customRegExpCollec[k] === '>' || this.customRegExpCollec[k] === '<' ||\n this.customRegExpCollec[k] === '|' || this.customRegExpCollec[k] === '\\\\') {\n --i;\n checkMask = true;\n }\n if (!checkMask) {\n if ((maskValue[i] !== this.promptChar) && (!isNullOrUndefined(this.customRegExpCollec[k]) &&\n ((this._callPasteHandler || !isNullOrUndefined(this.regExpCollec[this.customRegExpCollec[k]])) ||\n (this.customRegExpCollec[k].length > 2 && this.customRegExpCollec[k][0] === '[' &&\n this.customRegExpCollec[k][this.customRegExpCollec[k].length - 1] === ']') ||\n (!isNullOrUndefined(this.customCharacters) &&\n (!isNullOrUndefined(this.customCharacters[this.customRegExpCollec[k]]))))) && (maskValue !== '')) {\n value += maskValue[i];\n }\n }\n ++k;\n }\n }\n if (this.mask === null || this.mask === '' && this.value !== undefined) {\n value = maskValue;\n }\n return value;\n}\nfunction pushIntoRegExpCollec(value) {\n for (let k = 0; k < value.length; k++) {\n this.hiddenMask += value[k];\n if (value[k] !== '\\\\') {\n this.customRegExpCollec.push(value[k]);\n }\n }\n}\nfunction maskInputFocusHandler(event) {\n let eventArgs = {\n selectionStart: 0,\n event: event,\n value: this.value,\n maskedValue: this.element.value,\n container: this.inputObj.container,\n selectionEnd: (this.promptMask.length > 0) ? this.promptMask.length : this.element.value.length,\n };\n this.trigger('focus', eventArgs, (eventArgs) => {\n if (this.mask) {\n this.isFocus = true;\n if (this.element.value === '') {\n setElementValue.call(this, this.promptMask);\n }\n else {\n setElementValue.call(this, this.element.value);\n }\n if (!Browser.isDevice && Browser.info.version === '11.0') {\n this.element.setSelectionRange(eventArgs.selectionStart, eventArgs.selectionEnd);\n }\n else {\n let delay = (Browser.isDevice && Browser.isIos) ? 450 : 0;\n setTimeout(() => {\n this.element.setSelectionRange(eventArgs.selectionStart, eventArgs.selectionEnd);\n }, delay);\n }\n }\n });\n}\nfunction maskInputBlurHandler(event) {\n this.blurEventArgs = {\n event: event,\n value: this.value,\n maskedValue: this.element.value,\n container: this.inputObj.container\n };\n this.trigger('blur', this.blurEventArgs);\n if (this.mask) {\n this.isFocus = false;\n if (this.placeholder && this.element.value === this.promptMask && this.floatLabelType !== 'Always') {\n setElementValue.call(this, '');\n let labelElement = this.element.parentNode.querySelector('.e-float-text');\n if (this.floatLabelType === 'Auto' && !isNullOrUndefined(labelElement) && labelElement.classList.contains(TOPLABEL)) {\n removeClass([labelElement], TOPLABEL);\n }\n }\n }\n}\nfunction maskInputPasteHandler(event) {\n if (this.mask && !this.readonly) {\n let sIndex = this.element.selectionStart;\n let eIndex = this.element.selectionEnd;\n let oldValue = this.element.value;\n setElementValue.call(this, '');\n this._callPasteHandler = true;\n setTimeout(() => {\n let value = this.element.value.replace(/ /g, '');\n if (this.redoCollec.length > 0 && this.redoCollec[0].value === this.element.value) {\n value = strippedValue.call(this, this.element);\n }\n setElementValue.call(this, oldValue);\n this.element.selectionStart = sIndex;\n this.element.selectionEnd = eIndex;\n let i = 0;\n this.maskKeyPress = true;\n do {\n validateValue.call(this, value[i], false, null);\n ++i;\n } while (i < value.length);\n this.maskKeyPress = false;\n this._callPasteHandler = false;\n if (this.element.value === oldValue) {\n let i = 0;\n this.maskKeyPress = true;\n do {\n validateValue.call(this, value[i], false, null);\n ++i;\n } while (i < value.length);\n this.maskKeyPress = false;\n }\n else {\n triggerMaskChangeEvent.call(this, event, oldValue);\n }\n }, 1);\n }\n}\nfunction maskInputCutHandler(event) {\n if (this.mask && !this.readonly) {\n let preValue = this.element.value;\n let sIndex = this.element.selectionStart;\n let eIndex = this.element.selectionEnd;\n this.undoCollec.push({ value: this.element.value, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd });\n let value = this.element.value.substring(0, sIndex) + this.promptMask.substring(sIndex, eIndex) +\n this.element.value.substring(eIndex);\n setTimeout(() => {\n setElementValue.call(this, value);\n this.element.selectionStart = this.element.selectionEnd = sIndex;\n if (this.element.value !== preValue) {\n triggerMaskChangeEvent.call(this, event, null);\n }\n }, 0);\n }\n}\nfunction maskInputDropHandler(event) {\n event.preventDefault();\n}\nfunction maskInputHandler(event) {\n if (Browser.isIE === true && this.element.value === '' && this.floatLabelType === 'Never') {\n return;\n }\n let eventArgs = { ctrlKey: false, keyCode: 229 };\n // tslint:disable-next-line\n extend(event, eventArgs);\n if (this.mask) {\n if (this.element.value === '') {\n this.redoCollec.unshift({\n value: this.promptMask, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n }\n if (this.element.value.length === 1) {\n this.element.value = this.element.value + this.promptMask;\n this.element.setSelectionRange(1, 1);\n }\n if (!this._callPasteHandler) {\n removeMaskInputValues.call(this, event);\n }\n if (this.element.value.length > this.promptMask.length) {\n let startIndex = this.element.selectionStart;\n let addedValues = this.element.value.length - this.promptMask.length;\n let value = this.element.value.substring(startIndex - addedValues, startIndex);\n this.maskKeyPress = false;\n let i = 0;\n do {\n validateValue.call(this, value[i], event.ctrlKey, event);\n ++i;\n } while (i < value.length);\n if (this.element.value !== this.preEleVal) {\n triggerMaskChangeEvent.call(this, event, null);\n }\n }\n let val = strippedValue.call(this, this.element);\n this.prevValue = val;\n this.value = val;\n if (val === '') {\n setElementValue.call(this, this.promptMask);\n this.element.setSelectionRange(0, 0);\n }\n }\n}\nfunction maskInputKeyDownHandler(event) {\n if (this.mask && !this.readonly) {\n if (event.keyCode !== 229) {\n if (event.ctrlKey && (event.keyCode === 89 || event.keyCode === 90)) {\n event.preventDefault();\n }\n removeMaskInputValues.call(this, event);\n }\n let startValue = this.element.value;\n if (event.ctrlKey && (event.keyCode === 89 || event.keyCode === 90)) {\n let collec;\n if (event.keyCode === 90 && this.undoCollec.length > 0 && startValue !== this.undoCollec[this.undoCollec.length - 1].value) {\n collec = this.undoCollec[this.undoCollec.length - 1];\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n setElementValue.call(this, collec.value);\n this.element.selectionStart = collec.startIndex;\n this.element.selectionEnd = collec.endIndex;\n this.undoCollec.splice(this.undoCollec.length - 1, 1);\n }\n else if (event.keyCode === 89 && this.redoCollec.length > 0 && startValue !== this.redoCollec[0].value) {\n collec = this.redoCollec[0];\n this.undoCollec.push({\n value: this.element.value, startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n setElementValue.call(this, collec.value);\n this.element.selectionStart = collec.startIndex;\n this.element.selectionEnd = collec.endIndex;\n this.redoCollec.splice(0, 1);\n }\n }\n }\n}\nfunction mobileRemoveFunction() {\n let collec;\n let sIndex = this.element.selectionStart;\n let eIndex = this.element.selectionEnd;\n if (this.redoCollec.length > 0) {\n collec = this.redoCollec[0];\n setElementValue.call(this, collec.value);\n if ((collec.startIndex - sIndex) === 1) {\n this.element.selectionStart = collec.startIndex;\n this.element.selectionEnd = collec.endIndex;\n }\n else {\n this.element.selectionStart = sIndex + 1;\n this.element.selectionEnd = eIndex + 1;\n }\n }\n else {\n setElementValue.call(this, this.promptMask);\n this.element.selectionStart = this.element.selectionEnd = sIndex;\n }\n}\nfunction autoFillMaskInputValues(isRemove, oldEventVal, event) {\n if (event.type === 'input') {\n isRemove = false;\n oldEventVal = this.element.value;\n setElementValue.call(this, this.promptMask);\n setMaskValue.call(this, oldEventVal);\n }\n return isRemove;\n}\nfunction removeMaskInputValues(event) {\n let isRemove = false;\n let oldEventVal;\n let isDeleted = false;\n if (this.element.value.length < this.promptMask.length) {\n isRemove = true;\n oldEventVal = this.element.value;\n isRemove = autoFillMaskInputValues.call(this, isRemove, oldEventVal, event);\n mobileRemoveFunction.call(this);\n }\n if (this.element.value.length >= this.promptMask.length && event.type === 'input') {\n isRemove = autoFillMaskInputValues.call(this, isRemove, oldEventVal, event);\n }\n let initStartIndex = this.element.selectionStart;\n let initEndIndex = this.element.selectionEnd;\n let startIndex = this.element.selectionStart;\n let endIndex = this.element.selectionEnd;\n let maskValue = this.hiddenMask.replace(/[>|\\\\<]/g, '');\n let curMask = maskValue[startIndex - 1];\n let parentElement = this.element.parentNode;\n if (isRemove || event.keyCode === 8 || event.keyCode === 46) {\n this.undoCollec.push({ value: this.element.value, startIndex: this.element.selectionStart, endIndex: endIndex });\n let multipleDel = false;\n let preValue = this.element.value;\n if (startIndex > 0 || ((event.keyCode === 8 || event.keyCode === 46) && startIndex < this.element.value.length\n && ((this.element.selectionEnd - startIndex) !== this.element.value.length))) {\n let index = startIndex;\n if (startIndex !== endIndex) {\n startIndex = endIndex;\n if (event.keyCode === 46) {\n multipleDel = true;\n }\n }\n else if (event.keyCode === 46) {\n ++index;\n }\n else {\n --index;\n }\n for (let k = startIndex; (event.keyCode === 8 || isRemove || multipleDel) ? k > index : k < index; (event.keyCode === 8 || isRemove || multipleDel) ? k-- : k++) {\n for (let i = startIndex; (event.keyCode === 8 || isRemove || multipleDel) ? i > 0 : i < this.element.value.length; (event.keyCode === 8 || isRemove || multipleDel) ? i-- : i++) {\n let sIndex;\n if (((event.keyCode === 8 || multipleDel) && ((initStartIndex !== initEndIndex && initStartIndex !== startIndex) ||\n (initStartIndex === initEndIndex))) || isRemove) {\n curMask = maskValue[i - 1];\n sIndex = startIndex - 1;\n }\n else {\n curMask = maskValue[i];\n sIndex = startIndex;\n ++startIndex;\n }\n let oldValue = this.element.value[sIndex];\n if ((isNullOrUndefined(this.regExpCollec[curMask]) && (!isNullOrUndefined(this.customCharacters)\n && isNullOrUndefined(this.customCharacters[curMask]))\n && ((this.hiddenMask[sIndex] !== this.promptChar && this.customRegExpCollec[sIndex][0] !== '['\n && this.customRegExpCollec[sIndex][this.customRegExpCollec[sIndex].length - 1] !== ']')))\n || (this.promptMask[sIndex] !== this.promptChar && isNullOrUndefined(this.customCharacters))) {\n this.element.selectionStart = this.element.selectionEnd = sIndex;\n event.preventDefault();\n if (event.keyCode === 46 && !multipleDel) {\n ++this.element.selectionStart;\n }\n }\n else {\n let value = this.element.value;\n let prompt = this.promptChar;\n let elementValue = value.substring(0, sIndex) + prompt + value.substring(startIndex, value.length);\n setElementValue.call(this, elementValue);\n event.preventDefault();\n this.element.selectionStart = this.element.selectionEnd = sIndex;\n isDeleted = true;\n }\n startIndex = this.element.selectionStart;\n if ((!isDeleted && event.keyCode === 8) || multipleDel || (!isDeleted && !(event.keyCode === 46))) {\n sIndex = startIndex - 1;\n }\n else {\n sIndex = startIndex;\n isDeleted = false;\n }\n oldValue = this.element.value[sIndex];\n if (((initStartIndex !== initEndIndex) && (this.element.selectionStart === initStartIndex))\n || (this.promptMask[sIndex] === this.promptChar) || ((oldValue !== this.promptMask[sIndex]) &&\n (this.promptMask[sIndex] !== this.promptChar) && !isNullOrUndefined(this.customCharacters))) {\n break;\n }\n }\n }\n }\n if (this.element.selectionStart === 0 && (this.element.selectionEnd === this.element.value.length)) {\n setElementValue.call(this, this.promptMask);\n event.preventDefault();\n this.element.selectionStart = this.element.selectionEnd = startIndex;\n }\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n if (this.element.value !== preValue) {\n triggerMaskChangeEvent.call(this, event, oldEventVal);\n }\n }\n}\nfunction maskInputKeyPressHandler(event) {\n if (this.mask && !this.readonly) {\n let oldValue = this.element.value;\n if ((!event.ctrlKey) || (event.ctrlKey && event.code !== 'KeyA' && event.code !== 'KeyY'\n && event.code !== 'KeyZ' && event.code !== 'KeyX' && event.code !== 'KeyC' && event.code !== 'KeyV')) {\n this.maskKeyPress = true;\n let key = event.key;\n if (key === 'Spacebar') {\n key = String.fromCharCode(event.keyCode);\n }\n if (!key) {\n this.isIosInvalid = true;\n validateValue.call(this, String.fromCharCode(event.keyCode), event.ctrlKey, event);\n event.preventDefault();\n this.isIosInvalid = false;\n }\n else if (key && key.length === 1) {\n validateValue.call(this, key, event.ctrlKey, event);\n event.preventDefault();\n }\n if (event.keyCode === 32 && key === ' ' && this.promptChar === ' ') {\n this.element.selectionStart = this.element.selectionEnd = this.element.selectionStart - key.length;\n }\n }\n if (this.element.value !== oldValue) {\n triggerMaskChangeEvent.call(this, event, oldValue);\n }\n }\n}\nfunction triggerMaskChangeEvent(event, oldValue) {\n let prevOnChange = this.isProtectedOnChange;\n if (!isNullOrUndefined(this.changeEventArgs) && !this.isInitial) {\n let eventArgs = {};\n this.changeEventArgs = { value: this.element.value, maskedValue: this.element.value, isInteraction: false, isInteracted: false };\n if (this.mask) {\n this.changeEventArgs.value = strippedValue.call(this, this.element);\n }\n if (!isNullOrUndefined(event)) {\n this.changeEventArgs.isInteracted = true;\n this.changeEventArgs.isInteraction = true;\n this.changeEventArgs.event = event;\n }\n this.isProtectedOnChange = true;\n this.value = this.changeEventArgs.value;\n this.isProtectedOnChange = prevOnChange;\n merge(eventArgs, this.changeEventArgs);\n this.trigger('change', eventArgs);\n }\n this.preEleVal = this.element.value;\n this.prevValue = strippedValue.call(this, this.element);\n attributes(this.element, { 'aria-valuenow': this.element.value });\n}\nfunction maskInputKeyUpHandler(event) {\n if (this.mask && !this.readonly) {\n let collec;\n if (!this.maskKeyPress && event.keyCode === 229) {\n let oldEventVal;\n if (this.element.value.length === 1) {\n this.element.value = this.element.value + this.promptMask;\n this.element.setSelectionRange(1, 1);\n }\n if (this.element.value.length > this.promptMask.length) {\n let startIndex = this.element.selectionStart;\n let addedValues = this.element.value.length - this.promptMask.length;\n let val = this.element.value.substring(startIndex - addedValues, startIndex);\n if (this.undoCollec.length > 0) {\n collec = this.undoCollec[this.undoCollec.length - 1];\n let startIndex = this.element.selectionStart;\n oldEventVal = collec.value;\n let oldVal = collec.value.substring(startIndex - addedValues, startIndex);\n collec = this.redoCollec[0];\n val = val.trim();\n let isSpace = Browser.isAndroid && val === '';\n if (!isSpace && oldVal !== val && collec.value.substring(startIndex - addedValues, startIndex) !== val) {\n validateValue.call(this, val, event.ctrlKey, event);\n }\n else if (isSpace) {\n preventUnsupportedValues.call(this, event, startIndex - 1, this.element.selectionEnd - 1, val, event.ctrlKey, false);\n }\n }\n else {\n oldEventVal = this.promptMask;\n validateValue.call(this, val, event.ctrlKey, event);\n }\n this.maskKeyPress = false;\n triggerMaskChangeEvent.call(this, event, oldEventVal);\n }\n }\n else {\n removeMaskError.call(this);\n }\n let val = strippedValue.call(this, this.element);\n if (!((this.element.selectionStart === 0) && (this.promptMask === this.element.value) && val === '')\n || (val === '' && this.value !== val)) {\n this.prevValue = val;\n this.value = val;\n }\n }\n else {\n triggerMaskChangeEvent.call(this, event);\n }\n if (this.element.selectionStart === 0 && this.element.selectionEnd === 0) {\n // tslint:disable-next-line\n let temp = this.element;\n setTimeout(() => {\n temp.setSelectionRange(0, 0);\n }, 0);\n }\n}\nfunction mobileSwipeCheck(key) {\n if (key.length > 1 && ((this.promptMask.length + key.length) < this.element.value.length)) {\n let elementValue = this.redoCollec[0].value.substring(0, this.redoCollec[0].startIndex) + key +\n this.redoCollec[0].value.substring(this.redoCollec[0].startIndex, this.redoCollec[0].value.length);\n setElementValue.call(this, elementValue);\n this.element.selectionStart = this.element.selectionEnd = this.redoCollec[0].startIndex + key.length;\n }\n this.element.selectionStart = this.element.selectionStart - key.length;\n this.element.selectionEnd = this.element.selectionEnd - key.length;\n}\nfunction mobileValidation(key) {\n if (!this.maskKeyPress) {\n mobileSwipeCheck.call(this, key);\n }\n}\nfunction validateValue(key, isCtrlKey, event) {\n mobileValidation.call(this, key);\n if (isNullOrUndefined(this) || isNullOrUndefined(key)) {\n return;\n }\n let startIndex = this.element.selectionStart;\n let initStartIndex = startIndex;\n let endIndex = this.element.selectionEnd;\n let curMask;\n let allowText = false;\n let value = this.element.value;\n let eventOldVal;\n let prevSupport = false;\n let isEqualVal = false;\n for (let k = 0; k < key.length; k++) {\n let keyValue = key[k];\n startIndex = this.element.selectionStart;\n endIndex = this.element.selectionEnd;\n if (!this.maskKeyPress && initStartIndex === startIndex) {\n startIndex = startIndex + k;\n }\n if ((!this.maskKeyPress || startIndex < this.promptMask.length)) {\n for (let i = startIndex; i < this.promptMask.length; i++) {\n let maskValue = this.escapeMaskValue;\n curMask = maskValue[startIndex];\n if (this.hiddenMask[startIndex] === '\\\\' && this.hiddenMask[startIndex + 1] === key) {\n isEqualVal = true;\n }\n if ((isNullOrUndefined(this.regExpCollec[curMask]) && (isNullOrUndefined(this.customCharacters)\n || (!isNullOrUndefined(this.customCharacters) && isNullOrUndefined(this.customCharacters[curMask])))\n && ((this.hiddenMask[startIndex] !== this.promptChar && this.customRegExpCollec[startIndex][0] !== '['\n && this.customRegExpCollec[startIndex][this.customRegExpCollec[startIndex].length - 1] !== ']')))\n || ((this.promptMask[startIndex] !== this.promptChar) && isNullOrUndefined(this.customCharacters))\n || (this.promptChar === curMask && this.escapeMaskValue === this.mask)) {\n this.element.selectionStart = this.element.selectionEnd = startIndex + 1;\n startIndex = this.element.selectionStart;\n curMask = this.hiddenMask[startIndex];\n }\n }\n if (!isNullOrUndefined(this.customCharacters) && !isNullOrUndefined(this.customCharacters[curMask])) {\n let customValStr = this.customCharacters[curMask];\n let customValArr = customValStr.split(',');\n for (let i = 0; i < customValArr.length; i++) {\n if (keyValue.match(new RegExp('[' + customValArr[i] + ']'))) {\n allowText = true;\n break;\n }\n }\n }\n else if (!isNullOrUndefined(this.regExpCollec[curMask]) && keyValue.match(new RegExp(this.regExpCollec[curMask]))\n && this.promptMask[startIndex] === this.promptChar) {\n allowText = true;\n }\n else if (this.promptMask[startIndex] === this.promptChar && this.customRegExpCollec[startIndex][0] === '['\n && this.customRegExpCollec[startIndex][this.customRegExpCollec[startIndex].length - 1] === ']'\n && keyValue.match(new RegExp(this.customRegExpCollec[startIndex]))) {\n allowText = true;\n }\n if ((!this.maskKeyPress || startIndex < this.hiddenMask.length) && allowText) {\n if (k === 0) {\n if (this.maskKeyPress) {\n this.undoCollec.push({ value: value, startIndex: startIndex, endIndex: startIndex });\n }\n else {\n let sIndex = this.element.selectionStart;\n let eIndex = this.element.selectionEnd;\n if (this.redoCollec.length > 0) {\n eventOldVal = this.redoCollec[0].value;\n setElementValue.call(this, eventOldVal);\n this.undoCollec.push(this.redoCollec[0]);\n }\n else {\n this.undoCollec.push({ value: this.promptMask, startIndex: startIndex, endIndex: startIndex });\n eventOldVal = this.promptMask;\n setElementValue.call(this, eventOldVal);\n }\n this.element.selectionStart = sIndex;\n this.element.selectionEnd = eIndex;\n }\n }\n startIndex = this.element.selectionStart;\n applySupportedValues.call(this, event, startIndex, keyValue, eventOldVal, isEqualVal);\n prevSupport = true;\n if (k === key.length - 1) {\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n }\n allowText = false;\n }\n else {\n startIndex = this.element.selectionStart;\n preventUnsupportedValues.call(this, event, startIndex, initStartIndex, key, isCtrlKey, prevSupport);\n }\n if (k === key.length - 1 && !allowText) {\n if (!Browser.isAndroid || (Browser.isAndroid && startIndex < this.promptMask.length)) {\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n }\n }\n }\n else {\n if (key.length === 1 && !isCtrlKey && !isNullOrUndefined(event)) {\n addMaskErrorClass.call(this);\n }\n }\n }\n}\nfunction applySupportedValues(event, startIndex, keyValue, eventOldVal, isEqualVal) {\n if (this.hiddenMask.length > this.promptMask.length) {\n keyValue = changeToLowerUpperCase.call(this, keyValue, this.element.value);\n }\n if (!isEqualVal) {\n let value = this.element.value;\n let elementValue = value.substring(0, startIndex) + keyValue + value.substring(startIndex + 1, value.length);\n setElementValue.call(this, elementValue);\n this.element.selectionStart = this.element.selectionEnd = startIndex + 1;\n }\n}\nfunction preventUnsupportedValues(event, sIdx, idx, key, ctrl, chkSupport) {\n if (!this.maskKeyPress) {\n let eventOldVal;\n let value = this.element.value;\n if (sIdx >= this.promptMask.length) {\n setElementValue.call(this, value.substring(0, sIdx));\n }\n else {\n if (idx === sIdx) {\n setElementValue.call(this, value.substring(0, sIdx) + value.substring(sIdx + 1, value.length));\n }\n else {\n if (this.promptMask.length === this.element.value.length) {\n setElementValue.call(this, value.substring(0, sIdx) + value.substring(sIdx, value.length));\n }\n else {\n setElementValue.call(this, value.substring(0, idx) + value.substring(idx + 1, value.length));\n }\n }\n this.element.selectionStart = this.element.selectionEnd = (chkSupport ||\n this.element.value[idx] !== this.promptChar) ? sIdx : idx;\n }\n eventOldVal = this.element.value;\n addMaskErrorClass.call(this);\n }\n if (key.length === 1 && !ctrl && !isNullOrUndefined(event)) {\n addMaskErrorClass.call(this);\n }\n}\nfunction addMaskErrorClass() {\n let parentElement = this.element.parentNode;\n let timer = 200;\n if (parentElement.classList.contains(INPUTGROUP) || parentElement.classList.contains(FLOATINPUT)) {\n addClass([parentElement], ERROR$1);\n }\n else {\n addClass([this.element], ERROR$1);\n }\n if (this.isIosInvalid === true) {\n timer = 400;\n }\n attributes(this.element, { 'aria-invalid': 'true' });\n setTimeout(() => {\n if (!this.maskKeyPress) {\n removeMaskError.call(this);\n }\n }, timer);\n}\nfunction removeMaskError() {\n let parentElement = this.element.parentNode;\n if (!isNullOrUndefined(parentElement)) {\n removeClass([parentElement], ERROR$1);\n }\n removeClass([this.element], ERROR$1);\n attributes(this.element, { 'aria-invalid': 'false' });\n}\n/**\n * @hidden\n * Validates user input using masking elements '<' , '>' and '|'.\n */\nfunction changeToLowerUpperCase(key, value) {\n let promptMask;\n let i;\n let curVal = value;\n let caseCount = 0;\n for (i = 0; i < this.hiddenMask.length; i++) {\n if (this.hiddenMask[i] === '\\\\') {\n promptMask = curVal.substring(0, i) + '\\\\' + curVal.substring(i, curVal.length);\n }\n if (this.hiddenMask[i] === '>' || this.hiddenMask[i] === '<' || this.hiddenMask[i] === '|') {\n if (this.hiddenMask[i] !== curVal[i]) {\n promptMask = curVal.substring(0, i) + this.hiddenMask[i] + curVal.substring(i, curVal.length);\n }\n ++caseCount;\n }\n if (promptMask) {\n if (((promptMask[i] === this.promptChar) && (i > this.element.selectionStart)) ||\n (this.element.value.indexOf(this.promptChar) < 0 && (this.element.selectionStart + caseCount) === i)) {\n caseCount = 0;\n break;\n }\n curVal = promptMask;\n }\n }\n while (i >= 0 && promptMask) {\n if (i === 0 || promptMask[i - 1] !== '\\\\') {\n let val = this.element.value;\n if (promptMask[i] === '>') {\n key = key.toUpperCase();\n break;\n }\n else if (promptMask[i] === '<') {\n key = key.toLowerCase();\n break;\n }\n else if (promptMask[i] === '|') {\n break;\n }\n }\n --i;\n }\n return key;\n}\n/**\n * @hidden\n * To set updated values in the MaskedTextBox.\n */\nfunction setMaskValue(val) {\n if (this.mask && val !== undefined && (this.prevValue === undefined || this.prevValue !== val)) {\n this.maskKeyPress = true;\n setElementValue.call(this, this.promptMask);\n if (val !== '' && !(val === null && this.floatLabelType === 'Never' && this.placeholder)) {\n this.element.selectionStart = 0;\n this.element.selectionEnd = 0;\n }\n if (val !== null) {\n for (let i = 0; i < val.length; i++) {\n validateValue.call(this, val[i], false, null);\n }\n }\n let newVal = strippedValue.call(this, this.element);\n this.prevValue = newVal;\n this.value = newVal;\n triggerMaskChangeEvent.call(this, null, null);\n this.maskKeyPress = false;\n let labelElement = this.element.parentNode.querySelector('.e-float-text');\n if (this.element.value === this.promptMask && this.floatLabelType === 'Auto' && this.placeholder &&\n !isNullOrUndefined(labelElement) && labelElement.classList.contains(TOPLABEL) && !this.isFocus) {\n removeClass([labelElement], TOPLABEL);\n addClass([labelElement], BOTTOMLABEL);\n setElementValue.call(this, '');\n }\n }\n if (this.mask === null || this.mask === '' && this.value !== undefined) {\n setElementValue.call(this, this.value);\n }\n}\n/**\n * @hidden\n * To set updated values in the input element.\n */\nfunction setElementValue(val, element) {\n if (!this.isFocus && this.floatLabelType === 'Auto' && this.placeholder && isNullOrUndefined(this.value)) {\n val = '';\n }\n let value = strippedValue.call(this, (element ? element : this.element), val);\n if (value === null || value === '') {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, false);\n if (this.showClearButton) {\n this.inputObj.clearButton.classList.add('e-clear-icon-hide');\n }\n }\n else {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, this.showClearButton);\n }\n}\n/**\n * @hidden\n * Provide mask support to input textbox through utility method.\n */\nfunction maskInput(args) {\n let inputEle = getMaskInput(args);\n applyMask.call(inputEle);\n let val = strippedValue.call(this, this.element);\n this.prevValue = val;\n this.value = val;\n if (args.mask) {\n unwireEvents.call(inputEle);\n wireEvents.call(inputEle);\n }\n}\nfunction getMaskInput(args) {\n addClass([args.element], UTILMASK);\n let inputEle = {\n element: args.element,\n mask: args.mask,\n promptMask: '',\n hiddenMask: '',\n escapeMaskValue: '',\n promptChar: args.promptChar ? (args.promptChar.length > 1) ? args.promptChar = args.promptChar[0]\n : args.promptChar : '_',\n value: args.value ? args.value : null,\n regExpCollec: regularExpressions,\n customRegExpCollec: [],\n customCharacters: args.customCharacters,\n undoCollec: [],\n redoCollec: [],\n maskKeyPress: false,\n prevValue: ''\n };\n createMask.call(inputEle);\n return inputEle;\n}\n/**\n * @hidden\n * Gets raw value of the textbox which has been masked through utility method.\n */\nfunction getVal(args) {\n return strippedValue.call(getUtilMaskEle(args), args.element);\n}\n/**\n * @hidden\n * Gets masked value of the textbox which has been masked through utility method.\n */\nfunction getMaskedVal(args) {\n return unstrippedValue.call(getUtilMaskEle(args), args.element);\n}\nfunction getUtilMaskEle(args) {\n let inputEle;\n if (!isNullOrUndefined(args) && args.element.classList.contains(UTILMASK)) {\n inputEle = getMaskInput(args);\n }\n return inputEle;\n}\n/**\n * @hidden\n * Arguments to perform undo and redo functionalities.\n */\nclass MaskUndo {\n}\n\n/**\n * MaskedTextbox base modules\n */\n\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst ROOT$1 = 'e-control-wrapper e-mask';\nconst INPUT = 'e-input';\nconst COMPONENT$1 = 'e-maskedtextbox';\nconst CONTROL$1 = 'e-control';\nconst MASKINPUT_FOCUS = 'e-input-focus';\nconst wrapperAttr = ['title', 'style', 'class'];\n/**\n * The MaskedTextBox allows the user to enter the valid input only based on the provided mask.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nlet MaskedTextBox = class MaskedTextBox extends Component {\n constructor(options, element) {\n super(options, element);\n this.initInputValue = '';\n this.maskOptions = options;\n }\n /**\n * Gets the component name\n * @private\n */\n getModuleName() {\n return 'maskedtextbox';\n }\n /**\n * Initializes the event handler\n * @private\n */\n preRender() {\n this.promptMask = '';\n this.hiddenMask = '';\n this.escapeMaskValue = '';\n this.regExpCollec = regularExpressions;\n this.customRegExpCollec = [];\n this.undoCollec = [];\n this.redoCollec = [];\n this.changeEventArgs = {};\n this.focusEventArgs = {};\n this.blurEventArgs = {};\n this.maskKeyPress = false;\n this.isFocus = false;\n this.isInitial = false;\n this.isIosInvalid = false;\n let ejInstance = getValue('ej2_instances', this.element);\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [CONTROL$1, COMPONENT$1, 'e-lib']);\n this.angularTagName = null;\n this.formElement = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-MASKEDTEXTBOX') {\n this.angularTagName = this.element.tagName;\n let input = this.createElement('input');\n for (let i = 0; i < this.element.attributes.length; i++) {\n input.setAttribute(this.element.attributes[i].nodeName, this.element.attributes[i].nodeValue);\n input.innerHTML = this.element.innerHTML;\n }\n if (this.element.hasAttribute('id')) {\n this.element.removeAttribute('id');\n }\n this.element.classList.remove('e-control', 'e-maskedtextbox');\n this.element.classList.add('e-mask-container');\n this.element.appendChild(input);\n this.element = input;\n setValue('ej2_instances', ejInstance, this.element);\n }\n this.updateHTMLAttrToElement();\n this.checkHtmlAttributes(false);\n if (this.formElement) {\n this.initInputValue = this.value;\n }\n }\n /**\n * Gets the properties to be maintained in the persisted state.\n * @return {string}\n */\n getPersistData() {\n let keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n }\n /**\n * Initializes the component rendering.\n * @private\n */\n render() {\n if (this.element.tagName.toLowerCase() === 'input') {\n if (this.floatLabelType === 'Never') {\n addClass([this.element], INPUT);\n }\n this.createWrapper();\n this.updateHTMLAttrToWrapper();\n if (this.element.name === '') {\n this.element.setAttribute('name', this.element.id);\n }\n this.isInitial = true;\n this.resetMaskedTextBox();\n this.isInitial = false;\n this.setMaskPlaceholder(true, false);\n this.setWidth(this.width);\n this.preEleVal = this.element.value;\n if (!Browser.isDevice && (Browser.info.version === '11.0' || Browser.info.name === 'edge')) {\n this.element.blur();\n }\n if (Browser.isDevice && Browser.isIos) {\n this.element.blur();\n }\n if (this.element.getAttribute('value') || this.value) {\n this.element.setAttribute('value', this.element.value);\n }\n this.renderComplete();\n }\n }\n updateHTMLAttrToElement() {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (let key of Object.keys(this.htmlAttributes)) {\n if (wrapperAttr.indexOf(key) < 0) {\n this.element.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n updateCssClass(newClass, oldClass) {\n Input.setCssClass(this.getValidClassList(newClass), [this.inputObj.container], this.getValidClassList(oldClass));\n }\n getValidClassList(maskClassName) {\n let result = maskClassName;\n if (!isNullOrUndefined(maskClassName) && maskClassName !== '') {\n result = (maskClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n }\n updateHTMLAttrToWrapper() {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (let key of Object.keys(this.htmlAttributes)) {\n if (wrapperAttr.indexOf(key) > -1) {\n if (key === 'class') {\n let updatedClassValues = (this.htmlAttributes[key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.inputObj.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n let maskStyle = this.inputObj.container.getAttribute(key);\n maskStyle = !isNullOrUndefined(maskStyle) ? (maskStyle + this.htmlAttributes[key]) :\n this.htmlAttributes[key];\n this.inputObj.container.setAttribute(key, maskStyle);\n }\n else {\n this.inputObj.container.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n }\n resetMaskedTextBox() {\n this.promptMask = '';\n this.hiddenMask = '';\n this.escapeMaskValue = '';\n this.customRegExpCollec = [];\n this.undoCollec = [];\n this.redoCollec = [];\n if (this.promptChar.length > 1) {\n this.promptChar = this.promptChar[0];\n }\n createMask.call(this);\n applyMask.call(this);\n if (this.mask === null || this.mask === '' && this.value !== undefined) {\n setElementValue.call(this, this.value);\n }\n let val = strippedValue.call(this, this.element);\n this.prevValue = val;\n this.value = val;\n if (!this.isInitial) {\n unwireEvents.call(this);\n }\n wireEvents.call(this);\n }\n setMaskPlaceholder(setVal, dynamicPlaceholder) {\n if (dynamicPlaceholder || this.placeholder) {\n Input.setPlaceholder(this.placeholder, this.element);\n if (this.element.value === this.promptMask && setVal && this.floatLabelType !== 'Always') {\n setElementValue.call(this, '');\n }\n if (this.floatLabelType === 'Never') {\n maskInputBlurHandler.call(this);\n }\n }\n }\n setWidth(width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputObj.container.style.width = formatUnit(width);\n this.element.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n let elementWidth = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n this.inputObj.container.style.width = elementWidth;\n this.element.style.width = elementWidth;\n }\n }\n }\n checkHtmlAttributes(isDynamic) {\n let attributes$$1 = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes)\n : ['placeholder', 'disabled', 'value', 'readonly'];\n for (let key of attributes$$1) {\n if (!isNullOrUndefined(this.element.getAttribute(key))) {\n switch (key) {\n case 'placeholder':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'disabled':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['enabled'] === undefined)) || isDynamic) {\n let enabled = this.element.getAttribute(key) === 'disabled' || this.element.getAttribute(key) === '' ||\n this.element.getAttribute(key) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'value':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['value'] === undefined)) || isDynamic) {\n this.setProperties({ value: this.element.value }, !isDynamic);\n }\n break;\n case 'readonly':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['readonly'] === undefined)) || isDynamic) {\n let readonly = this.element.getAttribute(key) === 'readonly' || this.element.getAttribute(key) === ''\n || this.element.getAttribute(key) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n }\n }\n }\n }\n createWrapper() {\n let updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = this.getValidClassList(this.cssClass);\n }\n this.inputObj = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n enableRtl: this.enableRtl,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n readonly: this.readonly,\n placeholder: this.placeholder,\n showClearButton: this.showClearButton\n }\n }, this.createElement);\n this.inputObj.container.setAttribute('class', ROOT$1 + ' ' + this.inputObj.container.getAttribute('class'));\n }\n /**\n * Calls internally if any of the property value is changed.\n * @hidden\n */\n onPropertyChanged(newProp, oldProp) {\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'value':\n setMaskValue.call(this, this.value);\n if (this.placeholder) {\n this.setMaskPlaceholder(false, false);\n }\n break;\n case 'placeholder':\n this.setMaskPlaceholder(true, true);\n break;\n case 'width':\n this.setWidth(newProp.width);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element, this.floatLabelType, this.inputObj.container);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.inputObj.container]);\n break;\n case 'customCharacters':\n this.customCharacters = newProp.customCharacters;\n this.resetMaskedTextBox();\n break;\n case 'showClearButton':\n Input.setClearButton(newProp.showClearButton, this.element, this.inputObj, undefined, this.createElement);\n bindClearEvent.call(this);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputObj);\n Input.addFloating(this.element, this.floatLabelType, this.placeholder, this.createElement);\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.checkHtmlAttributes(true);\n break;\n case 'mask':\n let strippedValue$$1 = this.value;\n this.mask = newProp.mask;\n this.updateValue(strippedValue$$1);\n break;\n case 'promptChar':\n if (newProp.promptChar.length > 1) {\n newProp.promptChar = newProp.promptChar[0];\n }\n if (newProp.promptChar) {\n this.promptChar = newProp.promptChar;\n }\n else {\n this.promptChar = '_';\n }\n let value = this.element.value.replace(new RegExp('[' + oldProp.promptChar + ']', 'g'), this.promptChar);\n if (this.promptMask === this.element.value) {\n value = this.promptMask.replace(new RegExp('[' + oldProp.promptChar + ']', 'g'), this.promptChar);\n }\n this.promptMask = this.promptMask.replace(new RegExp('[' + oldProp.promptChar + ']', 'g'), this.promptChar);\n this.undoCollec = this.redoCollec = [];\n setElementValue.call(this, value);\n break;\n }\n }\n }\n updateValue(strippedVal) {\n this.resetMaskedTextBox();\n setMaskValue.call(this, strippedVal);\n }\n /**\n * Gets the value of the MaskedTextBox with the masked format.\n * By using `value` property, you can get the raw value of maskedtextbox without literals and prompt characters.\n * @return {string}\n */\n getMaskedValue() {\n return unstrippedValue.call(this, this.element);\n }\n /**\n * Sets the focus to widget for interaction.\n * @returns void\n */\n focusIn() {\n if (document.activeElement !== this.element && this.enabled) {\n this.element.focus();\n addClass([this.inputObj.container], [MASKINPUT_FOCUS]);\n }\n }\n /**\n * Remove the focus from widget, if the widget is in focus state.\n * @returns void\n */\n focusOut() {\n if (document.activeElement === this.element && this.enabled) {\n this.element.blur();\n removeClass([this.inputObj.container], [MASKINPUT_FOCUS]);\n }\n }\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n * @method destroy\n * @return {void}\n */\n destroy() {\n unwireEvents.call(this);\n let attrArray = ['aria-labelledby', 'role', 'autocomplete', 'aria-readonly',\n 'autocorrect', 'aria-disabled', 'aria-placeholder', 'autocapitalize',\n 'spellcheck', 'aria-autocomplete',\n 'aria-live', 'aria-valuenow', 'aria-invalid'];\n for (let i = 0; i < attrArray.length; i++) {\n this.element.removeAttribute(attrArray[i]);\n }\n this.element.classList.remove('e-input');\n this.inputObj.container.insertAdjacentElement('afterend', this.element);\n detach(this.inputObj.container);\n super.destroy();\n }\n};\n__decorate$1([\n Property(null)\n], MaskedTextBox.prototype, \"cssClass\", void 0);\n__decorate$1([\n Property(null)\n], MaskedTextBox.prototype, \"width\", void 0);\n__decorate$1([\n Property(null)\n], MaskedTextBox.prototype, \"placeholder\", void 0);\n__decorate$1([\n Property('Never')\n], MaskedTextBox.prototype, \"floatLabelType\", void 0);\n__decorate$1([\n Property({})\n], MaskedTextBox.prototype, \"htmlAttributes\", void 0);\n__decorate$1([\n Property(true)\n], MaskedTextBox.prototype, \"enabled\", void 0);\n__decorate$1([\n Property(false)\n], MaskedTextBox.prototype, \"readonly\", void 0);\n__decorate$1([\n Property(false)\n], MaskedTextBox.prototype, \"showClearButton\", void 0);\n__decorate$1([\n Property(false)\n], MaskedTextBox.prototype, \"enablePersistence\", void 0);\n__decorate$1([\n Property(null)\n], MaskedTextBox.prototype, \"mask\", void 0);\n__decorate$1([\n Property('_')\n], MaskedTextBox.prototype, \"promptChar\", void 0);\n__decorate$1([\n Property(null)\n], MaskedTextBox.prototype, \"value\", void 0);\n__decorate$1([\n Property(null)\n], MaskedTextBox.prototype, \"customCharacters\", void 0);\n__decorate$1([\n Event()\n], MaskedTextBox.prototype, \"created\", void 0);\n__decorate$1([\n Event()\n], MaskedTextBox.prototype, \"destroyed\", void 0);\n__decorate$1([\n Event()\n], MaskedTextBox.prototype, \"change\", void 0);\n__decorate$1([\n Event()\n], MaskedTextBox.prototype, \"focus\", void 0);\n__decorate$1([\n Event()\n], MaskedTextBox.prototype, \"blur\", void 0);\nMaskedTextBox = __decorate$1([\n NotifyPropertyChanges\n], MaskedTextBox);\n\n/**\n * MaskedTextbox modules\n */\n\n/**\n * MaskedTextbox modules\n */\n\n/**\n * Input box Component\n */\n\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Configures the ticks data of the Slider.\n */\nclass TicksData extends ChildProperty {\n}\n__decorate$2([\n Property('None')\n], TicksData.prototype, \"placement\", void 0);\n__decorate$2([\n Property(10)\n], TicksData.prototype, \"largeStep\", void 0);\n__decorate$2([\n Property(1)\n], TicksData.prototype, \"smallStep\", void 0);\n__decorate$2([\n Property(false)\n], TicksData.prototype, \"showSmallTicks\", void 0);\n__decorate$2([\n Property(null)\n], TicksData.prototype, \"format\", void 0);\n/**\n * It illustrates the color track data in slider.\n * {% codeBlock src='slider/colorrange/index.md' %}{% endcodeBlock %}\n */\nclass ColorRangeData extends ChildProperty {\n}\n__decorate$2([\n Property(null)\n], ColorRangeData.prototype, \"color\", void 0);\n__decorate$2([\n Property(null)\n], ColorRangeData.prototype, \"start\", void 0);\n__decorate$2([\n Property(null)\n], ColorRangeData.prototype, \"end\", void 0);\n/**\n * It illustrates the limit data in slider.\n * {% codeBlock src='slider/limits/index.md' %}{% endcodeBlock %}\n */\nclass LimitData extends ChildProperty {\n}\n__decorate$2([\n Property(false)\n], LimitData.prototype, \"enabled\", void 0);\n__decorate$2([\n Property(null)\n], LimitData.prototype, \"minStart\", void 0);\n__decorate$2([\n Property(null)\n], LimitData.prototype, \"minEnd\", void 0);\n__decorate$2([\n Property(null)\n], LimitData.prototype, \"maxStart\", void 0);\n__decorate$2([\n Property(null)\n], LimitData.prototype, \"maxEnd\", void 0);\n__decorate$2([\n Property(false)\n], LimitData.prototype, \"startHandleFixed\", void 0);\n__decorate$2([\n Property(false)\n], LimitData.prototype, \"endHandleFixed\", void 0);\n/**\n * It illustrates the tooltip data in slider.\n */\nclass TooltipData extends ChildProperty {\n}\n__decorate$2([\n Property('')\n], TooltipData.prototype, \"cssClass\", void 0);\n__decorate$2([\n Property('Before')\n], TooltipData.prototype, \"placement\", void 0);\n__decorate$2([\n Property('Focus')\n], TooltipData.prototype, \"showOn\", void 0);\n__decorate$2([\n Property(false)\n], TooltipData.prototype, \"isVisible\", void 0);\n__decorate$2([\n Property(null)\n], TooltipData.prototype, \"format\", void 0);\nconst bootstrapTooltipOffset = 6;\nconst bootstrap4TooltipOffset = 3;\nconst classNames = {\n root: 'e-slider',\n rtl: 'e-rtl',\n sliderHiddenInput: 'e-slider-input',\n controlWrapper: 'e-control-wrapper',\n sliderHandle: 'e-handle',\n rangeBar: 'e-range',\n sliderButton: 'e-slider-button',\n firstButton: 'e-first-button',\n secondButton: 'e-second-button',\n scale: 'e-scale',\n tick: 'e-tick',\n large: 'e-large',\n tickValue: 'e-tick-value',\n sliderTooltip: 'e-slider-tooltip',\n sliderHover: 'e-slider-hover',\n sliderFirstHandle: 'e-handle-first',\n sliderSecondHandle: 'e-handle-second',\n sliderDisabled: 'e-disabled',\n sliderContainer: 'e-slider-container',\n horizontalTooltipBefore: 'e-slider-horizontal-before',\n horizontalTooltipAfter: 'e-slider-horizontal-after',\n verticalTooltipBefore: 'e-slider-vertical-before',\n verticalTooltipAfter: 'e-slider-vertical-after',\n materialTooltip: 'e-material-tooltip',\n materialTooltipOpen: 'e-material-tooltip-open',\n materialTooltipActive: 'e-tooltip-active',\n materialSlider: 'e-material-slider',\n sliderTrack: 'e-slider-track',\n sliderHorizantalColor: 'e-slider-horizantal-color',\n sliderVerticalColor: 'e-slider-vertical-color',\n sliderHandleFocused: 'e-handle-focused',\n verticalSlider: 'e-vertical',\n horizontalSlider: 'e-horizontal',\n sliderHandleStart: 'e-handle-start',\n sliderTooltipStart: 'e-material-tooltip-start',\n sliderTabHandle: 'e-tab-handle',\n sliderButtonIcon: 'e-button-icon',\n sliderSmallSize: 'e-small-size',\n sliderTickPosition: 'e-tick-pos',\n sliderFirstTick: 'e-first-tick',\n sliderLastTick: 'e-last-tick',\n sliderButtonClass: 'e-slider-btn',\n sliderTooltipWrapper: 'e-tooltip-wrap',\n sliderTabTrack: 'e-tab-track',\n sliderTabRange: 'e-tab-range',\n sliderActiveHandle: 'e-handle-active',\n sliderMaterialHandle: 'e-material-handle',\n sliderMaterialRange: 'e-material-range',\n sliderMaterialDefault: 'e-material-default',\n materialTooltipShow: 'e-material-tooltip-show',\n materialTooltipHide: 'e-material-tooltip-hide',\n readonly: 'e-read-only',\n limits: 'e-limits',\n limitBarDefault: 'e-limit-bar',\n limitBarFirst: 'e-limit-first',\n limitBarSecond: 'e-limit-second',\n dragHorizontal: 'e-drag-horizontal',\n dragVertical: 'e-drag-vertical'\n};\n/**\n * The Slider component allows the user to select a value or range\n * of values in-between a min and max range, by dragging the handle over the slider bar.\n * ```html\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nlet Slider = class Slider extends Component {\n constructor(options, element) {\n super(options, element);\n this.horDir = 'left';\n this.verDir = 'bottom';\n this.transition = {\n handle: 'left .4s cubic-bezier(.25, .8, .25, 1), right .4s cubic-bezier(.25, .8, .25, 1), ' +\n 'top .4s cubic-bezier(.25, .8, .25, 1) , bottom .4s cubic-bezier(.25, .8, .25, 1)',\n rangeBar: 'all .4s cubic-bezier(.25, .8, .25, 1)'\n };\n this.transitionOnMaterialTooltip = {\n handle: 'left 1ms ease-out, right 1ms ease-out, bottom 1ms ease-out, top 1ms ease-out',\n rangeBar: 'left 1ms ease-out, right 1ms ease-out, bottom 1ms ease-out, width 1ms ease-out, height 1ms ease-out'\n };\n this.scaleTransform = 'transform .4s cubic-bezier(.25, .8, .25, 1)';\n this.customAriaText = null;\n this.drag = true;\n }\n preRender() {\n let localeText = { incrementTitle: 'Increase', decrementTitle: 'Decrease' };\n this.l10n = new L10n('slider', localeText, this.locale);\n this.isElementFocused = false;\n this.tickElementCollection = [];\n this.tooltipFormatInfo = {};\n this.ticksFormatInfo = {};\n this.initCultureInfo();\n this.initCultureFunc();\n this.formChecker();\n }\n formChecker() {\n const formElement = closest(this.element, 'form');\n if (formElement) {\n this.isForm = true;\n // this condition needs to be checked, if the slider is going to be refreshed by `refresh()`\n // then we need to revert the slider `value` back to `formResetValue` to preserve the initial value\n if (!isNullOrUndefined(this.formResetValue)) {\n this.setProperties({ 'value': this.formResetValue }, true);\n }\n this.formResetValue = this.value;\n if (this.type === 'Range' &&\n (isNullOrUndefined(this.formResetValue) || typeof (this.formResetValue) !== 'object')) {\n this.formResetValue = [parseFloat(formatUnit(this.min)), parseFloat(formatUnit(this.max))];\n }\n else if (isNullOrUndefined(this.formResetValue)) {\n this.formResetValue = parseFloat(formatUnit(this.min));\n }\n this.formElement = formElement;\n }\n else {\n this.isForm = false;\n }\n }\n initCultureFunc() {\n this.internationalization = new Internationalization(this.locale);\n }\n initCultureInfo() {\n this.tooltipFormatInfo.format = (!isNullOrUndefined(this.tooltip.format)) ? this.tooltip.format : null;\n this.ticksFormatInfo.format = (!isNullOrUndefined(this.ticks.format)) ? this.ticks.format : null;\n }\n formatString(value, formatInfo) {\n let formatValue = null;\n let formatString = null;\n if ((value || value === 0)) {\n formatValue = this.formatNumber(value);\n let numberOfDecimals = this.numberOfDecimals(value);\n formatString = this.internationalization.getNumberFormat(formatInfo)(this.makeRoundNumber(value, numberOfDecimals));\n }\n return { elementVal: formatValue, formatString: formatString };\n }\n ;\n formatNumber(value) {\n let numberOfDecimals = this.numberOfDecimals(value);\n return this.internationalization.getNumberFormat({\n maximumFractionDigits: numberOfDecimals,\n minimumFractionDigits: numberOfDecimals, useGrouping: false\n })(value);\n }\n ;\n numberOfDecimals(value) {\n let decimalPart = value.toString().split('.')[1];\n let numberOfDecimals = !decimalPart || !decimalPart.length ? 0 : decimalPart.length;\n return numberOfDecimals;\n }\n makeRoundNumber(value, precision) {\n let decimals = precision || 0;\n return Number(value.toFixed(decimals));\n }\n ;\n fractionalToInteger(value) {\n value = (this.numberOfDecimals(value) === 0) ? Number(value).toFixed(this.noOfDecimals) : value;\n let tens = 1;\n for (let i = 0; i < this.noOfDecimals; i++) {\n tens *= 10;\n }\n value = Number((value * tens).toFixed(0));\n return value;\n }\n /**\n * To Initialize the control rendering\n * @private\n */\n render() {\n if (!isBlazor() || !this.isServerRendered) {\n this.initialize();\n }\n this.initRender();\n this.wireEvents();\n this.setZindex();\n this.renderComplete();\n }\n initialize() {\n addClass([this.element], classNames.root);\n this.setCSSClass();\n }\n setElementWidth(width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.sliderContainer.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.sliderContainer.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n }\n setCSSClass(oldCSSClass) {\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n }\n setEnabled() {\n if (!this.enabled) {\n addClass([this.sliderContainer], [classNames.sliderDisabled]);\n if (this.tooltip.isVisible && this.tooltipElement && this.tooltip.showOn === 'Always') {\n this.tooltipElement.classList.add(classNames.sliderDisabled);\n }\n this.unwireEvents();\n }\n else {\n removeClass([this.sliderContainer], [classNames.sliderDisabled]);\n if (this.tooltip.isVisible && this.tooltipElement && this.tooltip.showOn === 'Always') {\n this.tooltipElement.classList.remove(classNames.sliderDisabled);\n }\n this.wireEvents();\n }\n }\n getTheme(container) {\n let theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n }\n /**\n * Initialize the rendering\n * @private\n */\n initRender() {\n if (isBlazor() && this.isServerRendered) {\n this.sliderContainer = this.element.parentElement;\n this.sliderTrack = this.element.querySelector('.e-slider-track');\n this.hiddenInput = this.element.parentElement.querySelector('.e-slider-input');\n }\n else {\n this.sliderContainer = this.createElement('div', { className: classNames.sliderContainer + ' ' + classNames.controlWrapper });\n this.element.parentNode.insertBefore(this.sliderContainer, this.element);\n this.sliderContainer.appendChild(this.element);\n this.sliderTrack = this.createElement('div', { className: classNames.sliderTrack });\n this.element.appendChild(this.sliderTrack);\n }\n this.setElementWidth(this.width);\n this.element.tabIndex = -1;\n this.getThemeInitialization();\n this.setHandler();\n this.createRangeBar();\n if (this.limits.enabled) {\n this.createLimitBar();\n }\n if (!isBlazor() || !this.isServerRendered) {\n this.setOrientClass();\n this.hiddenInput = (this.createElement('input', {\n attrs: {\n type: 'hidden', value: (isNullOrUndefined(this.value) ? this.min.toString() : this.value.toString()),\n name: this.element.getAttribute('name') || this.element.getAttribute('id') ||\n '_' + (Math.random() * 1000).toFixed(0) + 'slider', class: classNames.sliderHiddenInput\n }\n }));\n this.hiddenInput.tabIndex = -1;\n this.sliderContainer.appendChild(this.hiddenInput);\n }\n if (this.showButtons) {\n this.setButtons();\n }\n this.setEnableRTL();\n if (this.type === 'Range') {\n this.rangeValueUpdate();\n }\n else {\n this.value = isNullOrUndefined(this.value) ? parseFloat(formatUnit(this.min.toString())) : this.value;\n }\n this.previousVal = this.type !== 'Range' ? this.checkHandleValue(parseFloat(formatUnit(this.value.toString()))) :\n [this.checkHandleValue(parseFloat(formatUnit(this.value[0].toString()))),\n this.checkHandleValue(parseFloat(formatUnit(this.value[1].toString())))];\n this.previousChanged = this.previousVal;\n if (!isNullOrUndefined(this.element.hasAttribute('name'))) {\n this.element.removeAttribute('name');\n }\n this.setValue();\n if (this.limits.enabled) {\n this.setLimitBar();\n }\n if (this.ticks.placement !== 'None') {\n this.renderScale();\n }\n if (this.tooltip.isVisible) {\n this.renderTooltip();\n }\n if (!isBlazor() || !this.isServerRendered) {\n if (!this.enabled) {\n addClass([this.sliderContainer], [classNames.sliderDisabled]);\n }\n else {\n removeClass([this.sliderContainer], [classNames.sliderDisabled]);\n }\n if (this.readonly) {\n addClass([this.sliderContainer], [classNames.readonly]);\n }\n else {\n removeClass([this.sliderContainer], [classNames.readonly]);\n }\n }\n }\n getThemeInitialization() {\n this.isMaterial = this.getTheme(this.sliderContainer) === 'material'\n || this.getTheme(this.sliderContainer) === 'material-dark';\n this.isBootstrap = this.getTheme(this.sliderContainer) === 'bootstrap'\n || this.getTheme(this.sliderContainer) === 'bootstrap-dark';\n this.isBootstrap4 = this.getTheme(this.sliderContainer) === 'bootstrap4';\n this.isMaterialTooltip = this.isMaterial && this.type !== 'Range' && this.tooltip.isVisible;\n }\n createRangeBar() {\n if (this.type !== 'Default') {\n this.rangeBar = (this.createElement('div', { attrs: { class: classNames.rangeBar } }));\n this.element.appendChild(this.rangeBar);\n if (this.drag && this.type === 'Range') {\n if (this.orientation === 'Horizontal') {\n this.rangeBar.classList.add(classNames.dragHorizontal);\n }\n else {\n this.rangeBar.classList.add(classNames.dragVertical);\n }\n }\n }\n }\n createLimitBar() {\n if (isBlazor() && this.isServerRendered) {\n this.limitBarFirst = this.element.querySelectorAll('.e-limits')[0];\n if (this.type === 'Range') {\n this.limitBarSecond = this.element.querySelectorAll('.e-limit-second')[0];\n }\n }\n else {\n let firstElementClassName = this.type !== 'Range' ? classNames.limitBarDefault :\n classNames.limitBarFirst;\n firstElementClassName += ' ' + classNames.limits;\n this.limitBarFirst = (this.createElement('div', {\n attrs: { class: firstElementClassName }\n }));\n this.element.appendChild(this.limitBarFirst);\n if (this.type === 'Range') {\n this.limitBarSecond = (this.createElement('div', {\n attrs: {\n class: classNames.limitBarSecond + ' ' + classNames.limits\n }\n }));\n this.element.appendChild(this.limitBarSecond);\n }\n }\n }\n setOrientClass() {\n if (this.orientation !== 'Vertical') {\n this.sliderContainer.classList.remove(classNames.verticalSlider);\n this.sliderContainer.classList.add(classNames.horizontalSlider);\n this.firstHandle.setAttribute('aria-orientation', 'horizontal');\n if (this.type === 'Range') {\n this.secondHandle.setAttribute('aria-orientation', 'horizontal');\n }\n }\n else {\n this.sliderContainer.classList.remove(classNames.horizontalSlider);\n this.sliderContainer.classList.add(classNames.verticalSlider);\n this.firstHandle.setAttribute('aria-orientation', 'vertical');\n if (this.type === 'Range') {\n this.secondHandle.setAttribute('aria-orientation', 'vertical');\n }\n }\n }\n setAriaAttributes(element) {\n let min = this.min;\n let max = this.max;\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n min = this.customValues[0];\n max = this.customValues[this.customValues.length - 1];\n }\n if (this.type !== 'Range') {\n attributes(element, {\n 'aria-valuemin': min.toString(), 'aria-valuemax': max.toString()\n });\n }\n else {\n let range = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 ?\n [[min.toString(), (this.customValues[this.value[1]]).toString()],\n [(this.customValues[this.value[0]]).toString(), max.toString()]] :\n [[min.toString(), this.value[1].toString()], [this.value[0].toString(), max.toString()]];\n range.forEach((range, index) => {\n let element = index === 0 ? this.firstHandle : this.secondHandle;\n if (element) {\n attributes(element, {\n 'aria-valuemin': range[0], 'aria-valuemax': range[1]\n });\n }\n });\n }\n }\n createSecondHandle() {\n if (isBlazor() && this.isServerRendered) {\n this.secondHandle = this.element.querySelector('.e-handle-second');\n }\n else {\n this.secondHandle = this.createElement('div', {\n attrs: {\n class: classNames.sliderHandle, 'role': 'slider', tabIndex: '0'\n }\n });\n this.secondHandle.classList.add(classNames.sliderSecondHandle);\n this.element.appendChild(this.secondHandle);\n }\n }\n createFirstHandle() {\n if (isBlazor() && this.isServerRendered) {\n this.firstHandle = this.element.querySelector('.e-handle-first');\n }\n else {\n this.firstHandle = this.createElement('div', {\n attrs: {\n class: classNames.sliderHandle, 'role': 'slider', tabIndex: '0'\n }\n });\n this.firstHandle.classList.add(classNames.sliderFirstHandle);\n this.element.appendChild(this.firstHandle);\n }\n if (this.isMaterialTooltip) {\n this.materialHandle = this.createElement('div', {\n attrs: {\n class: classNames.sliderHandle + ' ' +\n classNames.sliderMaterialHandle\n }\n });\n this.element.appendChild(this.materialHandle);\n }\n }\n wireFirstHandleEvt(destroy) {\n if (!destroy) {\n EventHandler.add(this.firstHandle, 'mousedown touchstart', this.handleFocus, this);\n EventHandler.add(this.firstHandle, 'transitionend', this.transitionEnd, this);\n EventHandler.add(this.firstHandle, 'mouseenter touchenter', this.handleOver, this);\n EventHandler.add(this.firstHandle, 'mouseleave touchend', this.handleLeave, this);\n }\n else {\n EventHandler.remove(this.firstHandle, 'mousedown touchstart', this.handleFocus);\n EventHandler.remove(this.firstHandle, 'transitionend', this.transitionEnd);\n EventHandler.remove(this.firstHandle, 'mouseenter touchenter', this.handleOver);\n EventHandler.remove(this.firstHandle, 'mouseleave touchend', this.handleLeave);\n }\n }\n wireSecondHandleEvt(destroy) {\n if (!destroy) {\n EventHandler.add(this.secondHandle, 'mousedown touchstart', this.handleFocus, this);\n EventHandler.add(this.secondHandle, 'transitionend', this.transitionEnd, this);\n EventHandler.add(this.secondHandle, 'mouseenter touchenter', this.handleOver, this);\n EventHandler.add(this.secondHandle, 'mouseleave touchend', this.handleLeave, this);\n }\n else {\n EventHandler.remove(this.secondHandle, 'mousedown touchstart', this.handleFocus);\n EventHandler.remove(this.secondHandle, 'transitionend', this.transitionEnd);\n EventHandler.remove(this.secondHandle, 'mouseenter touchenter', this.handleOver);\n EventHandler.remove(this.secondHandle, 'mouseleave touchend', this.handleLeave);\n }\n }\n handleStart() {\n if (this.type !== 'Range') {\n this.firstHandle.classList[this.handlePos1 === 0 ? 'add' : 'remove'](classNames.sliderHandleStart);\n if (this.isMaterialTooltip) {\n this.materialHandle.classList[this.handlePos1 === 0 ? 'add' : 'remove'](classNames.sliderHandleStart);\n if (this.tooltipElement) {\n this.tooltipElement.classList[this.handlePos1 === 0 ? 'add' : 'remove'](classNames.sliderTooltipStart);\n }\n }\n }\n }\n transitionEnd(e) {\n if (e.propertyName !== 'transform') {\n this.handleStart();\n this.getHandle().style.transition = 'none';\n if (this.type !== 'Default') {\n this.rangeBar.style.transition = 'none';\n }\n if (this.isMaterial && this.tooltip.isVisible && this.type === 'Default') {\n this.tooltipElement.style.transition = this.transition.handle;\n }\n this.tooltipToggle(this.getHandle());\n this.closeTooltip();\n }\n }\n handleFocusOut() {\n if (this.firstHandle.classList.contains(classNames.sliderHandleFocused)) {\n this.firstHandle.classList.remove(classNames.sliderHandleFocused);\n }\n if (this.type === 'Range') {\n if (this.secondHandle.classList.contains(classNames.sliderHandleFocused)) {\n this.secondHandle.classList.remove(classNames.sliderHandleFocused);\n }\n }\n }\n handleFocus(e) {\n this.focusSliderElement();\n this.sliderBarClick(e);\n if (e.currentTarget === this.firstHandle) {\n this.firstHandle.classList.add(classNames.sliderHandleFocused);\n }\n else {\n this.secondHandle.classList.add(classNames.sliderHandleFocused);\n }\n EventHandler.add(document, 'mousemove touchmove', this.sliderBarMove, this);\n EventHandler.add(document, 'mouseup touchend', this.sliderBarUp, this);\n }\n handleOver(e) {\n if (this.tooltip.isVisible && this.tooltip.showOn === 'Hover') {\n this.tooltipToggle(e.currentTarget);\n }\n }\n handleLeave(e) {\n if (this.tooltip.isVisible && this.tooltip.showOn === 'Hover' &&\n !e.currentTarget.classList.contains(classNames.sliderHandleFocused) &&\n !e.currentTarget.classList.contains(classNames.sliderTabHandle)) {\n this.closeTooltip();\n }\n }\n setHandler() {\n if (this.min > this.max) {\n this.min = this.max;\n }\n this.createFirstHandle();\n if (this.type === 'Range') {\n this.createSecondHandle();\n }\n }\n setEnableRTL() {\n if (!isBlazor() || !this.isServerRendered) {\n this.enableRtl && this.orientation !== 'Vertical' ? addClass([this.sliderContainer], classNames.rtl) :\n removeClass([this.sliderContainer], classNames.rtl);\n let preDir = (this.orientation !== 'Vertical') ? this.horDir : this.verDir;\n if (this.enableRtl) {\n this.horDir = 'right';\n this.verDir = 'bottom';\n }\n else {\n this.horDir = 'left';\n this.verDir = 'bottom';\n }\n let currDir = (this.orientation !== 'Vertical') ? this.horDir : this.verDir;\n if (preDir !== currDir) {\n if (this.orientation === 'Horizontal') {\n setStyleAttribute(this.firstHandle, { 'right': '', 'left': 'auto' });\n if (this.type === 'Range') {\n setStyleAttribute(this.secondHandle, { 'top': '', 'left': 'auto' });\n }\n }\n }\n }\n this.setBarColor();\n }\n tooltipValue() {\n let text;\n let args = {\n value: this.value,\n text: ''\n };\n if (isBlazor() && this.isServerRendered) {\n args.text = this.formatContent(this.tooltipFormatInfo, false);\n }\n else {\n this.setTooltipContent();\n args.text = text = this.tooltipObj.content;\n }\n this.trigger('tooltipChange', args, (observedArgs) => {\n this.addTooltipClass(observedArgs.text);\n if (text !== observedArgs.text) {\n this.customAriaText = observedArgs.text;\n this.tooltipObj.content = observedArgs.text;\n this.setAriaAttrValue(this.firstHandle);\n if (this.type === 'Range') {\n this.setAriaAttrValue(this.secondHandle);\n }\n }\n });\n }\n setTooltipContent() {\n let content;\n content = this.formatContent(this.tooltipFormatInfo, false);\n this.tooltipObj.content = content;\n }\n formatContent(formatInfo, ariaContent) {\n let content = '';\n let handle1 = this.handleVal1;\n let handle2 = this.handleVal2;\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n handle1 = this.customValues[this.handleVal1];\n handle2 = this.customValues[this.handleVal2];\n }\n if (!ariaContent) {\n if (this.type === 'Range') {\n if (this.enableRtl && this.orientation !== 'Vertical') {\n content = (!isNullOrUndefined(formatInfo.format)) ? (this.formatString(handle2, formatInfo)\n .formatString + ' - ' + this.formatString(handle1, formatInfo).formatString) :\n (handle2.toString() + ' - ' + handle1.toString());\n }\n else {\n content = (!isNullOrUndefined(formatInfo.format)) ? (this.formatString(handle1, formatInfo)\n .formatString + ' - ' + this.formatString(handle2, formatInfo).formatString) :\n (handle1.toString() + ' - ' + handle2.toString());\n }\n }\n else {\n if (!isNullOrUndefined(handle1)) {\n content = (!isNullOrUndefined(formatInfo.format)) ?\n this.formatString(handle1, formatInfo).formatString : handle1.toString();\n }\n }\n return content;\n }\n else {\n if (this.type === 'Range') {\n if (this.enableRtl && this.orientation !== 'Vertical') {\n content = (!isNullOrUndefined(this.tooltip) && !isNullOrUndefined(this.tooltip.format)) ?\n (this.formatString(handle2, formatInfo).elementVal + ' - ' +\n this.formatString(handle1, formatInfo).elementVal) :\n (handle2.toString() + ' - ' + handle1.toString());\n }\n else {\n content = (!isNullOrUndefined(this.tooltip) && !isNullOrUndefined(this.tooltip.format)) ?\n (this.formatString(handle1, formatInfo).elementVal + ' - ' +\n this.formatString(handle2, formatInfo).elementVal) :\n (handle1.toString() + ' - ' + handle2.toString());\n }\n }\n else {\n if (!isNullOrUndefined(handle1)) {\n content = (!isNullOrUndefined(this.tooltip) && !isNullOrUndefined(this.tooltip.format)) ?\n this.formatString(handle1, formatInfo).elementVal : handle1.toString();\n }\n }\n return content;\n }\n }\n addTooltipClass(content) {\n if (this.isMaterialTooltip) {\n let count = content.toString().length;\n if (!this.tooltipElement) {\n let cssClass = count > 4 ? classNames.sliderMaterialRange : classNames.sliderMaterialDefault;\n this.tooltipObj.cssClass = classNames.sliderTooltip + ' ' + cssClass;\n }\n else {\n let cssClass = count > 4 ?\n { oldCss: classNames.sliderMaterialDefault, newCss: classNames.sliderMaterialRange } :\n { oldCss: classNames.sliderMaterialRange, newCss: classNames.sliderMaterialDefault };\n this.tooltipElement.classList.remove(cssClass.oldCss);\n if (!this.tooltipElement.classList.contains(cssClass.newCss)) {\n this.tooltipElement.classList.add(cssClass.newCss);\n this.tooltipElement.style.transform = count > 4 ? 'scale(1)' :\n this.getTooltipTransformProperties(this.previousTooltipClass).rotate;\n }\n }\n }\n }\n tooltipPlacement() {\n return this.orientation === 'Horizontal' ? (this.tooltip.placement === 'Before' ? 'TopCenter' : 'BottomCenter') :\n (this.tooltip.placement === 'Before' ? 'LeftCenter' : 'RightCenter');\n }\n tooltipBeforeOpen(args) {\n this.tooltipElement = args.element;\n if (this.tooltip.cssClass) {\n addClass([this.tooltipElement], this.tooltip.cssClass.split(' ').filter((css) => css));\n }\n args.target.removeAttribute('aria-describedby');\n if (this.isMaterialTooltip) {\n this.tooltipElement.firstElementChild.classList.add(classNames.materialTooltipHide);\n this.handleStart();\n this.setTooltipTransform();\n }\n }\n tooltipCollision(position) {\n if (this.isBootstrap || this.isBootstrap4 || (this.isMaterial && !this.isMaterialTooltip)) {\n const tooltipOffsetValue = this.isBootstrap4 ? bootstrap4TooltipOffset : bootstrapTooltipOffset;\n switch (position) {\n case 'TopCenter':\n this.tooltipObj.setProperties({ 'offsetY': -(tooltipOffsetValue) }, false);\n break;\n case 'BottomCenter':\n this.tooltipObj.setProperties({ 'offsetY': tooltipOffsetValue }, false);\n break;\n case 'LeftCenter':\n this.tooltipObj.setProperties({ 'offsetX': -(tooltipOffsetValue) }, false);\n break;\n case 'RightCenter':\n this.tooltipObj.setProperties({ 'offsetX': tooltipOffsetValue }, false);\n break;\n }\n }\n }\n materialTooltipEventCallBack(event) {\n this.sliderBarClick(event);\n EventHandler.add(document, 'mousemove touchmove', this.sliderBarMove, this);\n EventHandler.add(document, 'mouseup touchend', this.sliderBarUp, this);\n }\n wireMaterialTooltipEvent(destroy) {\n if (this.isMaterialTooltip) {\n if (!destroy) {\n EventHandler.add(this.tooltipElement, 'mousedown touchstart', this.materialTooltipEventCallBack, this);\n }\n else {\n EventHandler.remove(this.tooltipElement, 'mousedown touchstart', this.materialTooltipEventCallBack);\n }\n }\n }\n tooltipPositionCalculation(position) {\n let cssClass;\n switch (position) {\n case 'TopCenter':\n cssClass = classNames.horizontalTooltipBefore;\n break;\n case 'BottomCenter':\n cssClass = classNames.horizontalTooltipAfter;\n break;\n case 'LeftCenter':\n cssClass = classNames.verticalTooltipBefore;\n break;\n case 'RightCenter':\n cssClass = classNames.verticalTooltipAfter;\n break;\n }\n return cssClass;\n }\n getTooltipTransformProperties(className) {\n let transformProperties;\n if (this.tooltipElement) {\n let position = this.orientation === 'Horizontal' ?\n ((this.tooltipElement.clientHeight + 14) - (this.tooltipElement.clientHeight / 2)) :\n ((this.tooltipElement.clientWidth + 14) - (this.tooltipElement.clientWidth / 2));\n transformProperties = this.orientation === 'Horizontal' ?\n (className === classNames.horizontalTooltipBefore ? { rotate: 'rotate(45deg)', translate: `translateY(${position}px)` } :\n { rotate: 'rotate(225deg)', translate: `translateY(${-(position)}px)` }) :\n (className === classNames.verticalTooltipBefore ? { rotate: 'rotate(-45deg)', translate: `translateX(${position}px)` } :\n { rotate: 'rotate(-225deg)', translate: `translateX(${(-position)}px)` });\n }\n return transformProperties;\n }\n openMaterialTooltip() {\n if (this.isMaterialTooltip) {\n this.refreshTooltip(this.firstHandle);\n let tooltipContentElement = this.tooltipElement.firstElementChild;\n tooltipContentElement.classList.remove(classNames.materialTooltipHide);\n tooltipContentElement.classList.add(classNames.materialTooltipShow);\n this.firstHandle.style.cursor = 'default';\n this.tooltipElement.style.transition = this.scaleTransform;\n this.tooltipElement.classList.add(classNames.materialTooltipOpen);\n this.materialHandle.style.transform = 'scale(0)';\n if (tooltipContentElement.innerText.length > 4) {\n this.tooltipElement.style.transform = 'scale(1)';\n }\n else {\n this.tooltipElement.style.transform = this.getTooltipTransformProperties(this.previousTooltipClass).rotate;\n }\n if (this.type === 'Default') {\n setTimeout(() => { this.tooltipElement.style.transition = this.transition.handle; }, 2500);\n }\n else {\n setTimeout(() => { this.tooltipElement.style.transition = 'none'; }, 2500);\n }\n }\n }\n closeMaterialTooltip() {\n if (this.isMaterialTooltip) {\n let tooltipContentElement = this.tooltipElement.firstElementChild;\n this.tooltipElement.style.transition = this.scaleTransform;\n tooltipContentElement.classList.remove(classNames.materialTooltipShow);\n tooltipContentElement.classList.add(classNames.materialTooltipHide);\n this.firstHandle.style.cursor = '-webkit-grab';\n this.firstHandle.style.cursor = 'grab';\n if (this.materialHandle) {\n this.materialHandle.style.transform = 'scale(1)';\n }\n this.tooltipElement.classList.remove(classNames.materialTooltipOpen);\n this.setTooltipTransform();\n this.tooltipTarget = undefined;\n setTimeout(() => { this.tooltipElement.style.transition = 'none'; }, 2500);\n }\n }\n checkTooltipPosition(args) {\n if (this.tooltipCollidedPosition === undefined ||\n this.tooltipCollidedPosition !== args.collidedPosition) {\n if (this.isMaterialTooltip) {\n let tooltipClass = this.tooltipPositionCalculation(args.collidedPosition);\n if (tooltipClass !== undefined) {\n args.element.classList.remove(this.previousTooltipClass);\n args.element.classList.add(tooltipClass);\n this.previousTooltipClass = tooltipClass;\n }\n if (args.element.style.transform && args.element.classList.contains(classNames.materialTooltipOpen) &&\n args.element.firstElementChild.innerText.length <= 4) {\n args.element.style.transform = this.getTooltipTransformProperties(this.previousTooltipClass).rotate;\n }\n }\n this.tooltipCollidedPosition = args.collidedPosition;\n }\n if (this.isMaterialTooltip && this.tooltipElement && this.tooltipElement.style.transform.indexOf('translate') !== -1) {\n this.setTooltipTransform();\n }\n }\n setTooltipTransform() {\n let transformProperties = this.getTooltipTransformProperties(this.previousTooltipClass);\n if (this.tooltipElement.firstElementChild.innerText.length > 4) {\n this.tooltipElement.style.transform = `${transformProperties.translate} scale(0.01)`;\n }\n else {\n this.tooltipElement.style.transform = `${transformProperties.translate} ${transformProperties.rotate} scale(0.01)`;\n }\n }\n renderTooltip() {\n this.tooltipObj = new Tooltip({\n showTipPointer: this.isBootstrap || this.isMaterial || this.isBootstrap4,\n cssClass: classNames.sliderTooltip,\n height: this.isMaterial ? 30 : 'auto',\n animation: { open: { effect: 'None' }, close: { effect: 'FadeOut', duration: 500 } },\n opensOn: 'Custom',\n beforeOpen: this.tooltipBeforeOpen.bind(this),\n beforeCollision: this.checkTooltipPosition.bind(this),\n beforeClose: this.tooltipBeforeClose.bind(this),\n enableHtmlSanitizer: this.enableHtmlSanitizer\n });\n this.tooltipObj.appendTo(this.firstHandle);\n this.initializeTooltipProps();\n }\n initializeTooltipProps() {\n let tooltipShowOn = this.isMaterialTooltip ? 'Always' : (this.tooltip.showOn === 'Auto' ? 'Hover' : this.tooltip.showOn);\n this.setProperties({ tooltip: { showOn: tooltipShowOn } }, true);\n this.tooltipObj.position = this.tooltipPlacement();\n this.tooltipCollision(this.tooltipObj.position);\n [this.firstHandle, this.rangeBar, this.secondHandle].forEach((handle) => {\n if (!isNullOrUndefined(handle)) {\n handle.style.transition = 'none';\n }\n });\n if (this.isMaterialTooltip) {\n this.sliderContainer.classList.add(classNames.materialSlider);\n if (!isBlazor()) {\n this.tooltipValue();\n }\n this.tooltipObj.animation.close.effect = 'None';\n this.tooltipObj.open(this.firstHandle);\n }\n }\n tooltipBeforeClose() {\n this.tooltipElement = undefined;\n this.tooltipCollidedPosition = undefined;\n }\n setButtons() {\n if (isBlazor() && this.isServerRendered) {\n this.firstBtn = this.element.parentElement.querySelector('.e-slider-button.e-first-button');\n this.secondBtn = this.element.parentElement.querySelector('.e-slider-button.e-second-button');\n }\n else {\n this.firstBtn = this.createElement('div', { className: classNames.sliderButton + ' ' + classNames.firstButton });\n this.firstBtn.appendChild(this.createElement('span', { className: classNames.sliderButtonIcon }));\n this.firstBtn.tabIndex = -1;\n this.secondBtn = this.createElement('div', { className: classNames.sliderButton + ' ' + classNames.secondButton });\n this.secondBtn.appendChild(this.createElement('span', { className: classNames.sliderButtonIcon }));\n this.secondBtn.tabIndex = -1;\n this.sliderContainer.classList.add(classNames.sliderButtonClass);\n this.sliderContainer.appendChild(this.firstBtn);\n this.sliderContainer.appendChild(this.secondBtn);\n this.sliderContainer.appendChild(this.element);\n this.buttonTitle();\n }\n }\n buttonTitle() {\n let enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n this.l10n.setLocale(this.locale);\n let decrementTitle = this.l10n.getConstant('decrementTitle');\n let incrementTitle = this.l10n.getConstant('incrementTitle');\n attributes(enabledRTL ? this.secondBtn : this.firstBtn, { 'aria-label': decrementTitle, title: decrementTitle });\n attributes(enabledRTL ? this.firstBtn : this.secondBtn, { 'aria-label': incrementTitle, title: incrementTitle });\n }\n buttonFocusOut() {\n if (this.isMaterial) {\n this.getHandle().classList.remove('e-large-thumb-size');\n }\n }\n repeatButton(args) {\n let hVal = this.handleValueUpdate();\n let enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n let value;\n if (args.target.parentElement.classList.contains(classNames.firstButton)\n || args.target.classList.contains(classNames.firstButton)) {\n enabledRTL ? (value = this.add(hVal, parseFloat(this.step.toString()), true)) :\n (value = this.add(hVal, parseFloat(this.step.toString()), false));\n }\n else if (args.target.parentElement.classList.contains(classNames.secondButton)\n || (args.target.classList.contains(classNames.secondButton))) {\n enabledRTL ? (value = this.add(hVal, parseFloat(this.step.toString()), false)) :\n (value = this.add(hVal, parseFloat(this.step.toString()), true));\n }\n if (this.limits.enabled) {\n value = this.getLimitCorrectedValues(value);\n }\n if (value >= this.min && value <= this.max) {\n this.changeHandleValue(value);\n this.tooltipToggle(this.getHandle());\n }\n }\n repeatHandlerMouse(args) {\n args.preventDefault();\n if (args.type === ('mousedown') || args.type === ('touchstart')) {\n this.buttonClick(args);\n this.repeatInterval = setInterval(this.repeatButton.bind(this), 180, args);\n }\n }\n materialChange() {\n if (!this.getHandle().classList.contains('e-large-thumb-size')) {\n this.getHandle().classList.add('e-large-thumb-size');\n }\n }\n repeatHandlerUp(e) {\n this.changeEvent('changed', e);\n this.closeTooltip();\n clearInterval(this.repeatInterval);\n this.getHandle().focus();\n }\n customTickCounter(bigNum) {\n let tickCount = 4;\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n if (bigNum > 4) {\n tickCount = 3;\n }\n if (bigNum > 7) {\n tickCount = 2;\n }\n if (bigNum > 14) {\n tickCount = 1;\n }\n if (bigNum > 28) {\n tickCount = 0;\n }\n }\n return tickCount;\n }\n // tslint:disable-next-line:max-func-body-length\n renderScale() {\n let liElementPosition = 0;\n let orien = this.orientation === 'Vertical' ? 'v' : 'h';\n this.noOfDecimals = this.numberOfDecimals(this.step);\n if (isBlazor() && this.isServerRendered) {\n this.ul = this.element.querySelector('ul');\n }\n else {\n this.ul = this.createElement('ul', {\n className: classNames.scale + ' ' + 'e-' + orien + '-scale ' + classNames.tick + '-' + this.ticks.placement.toLowerCase(),\n attrs: { role: 'presentation', tabIndex: '-1', 'aria-hidden': 'true' }\n });\n }\n this.ul.style.zIndex = '-1';\n if (Browser.isAndroid && orien === 'h') {\n this.ul.classList.add(classNames.sliderTickPosition);\n }\n let smallStep = this.ticks.smallStep;\n if (!this.ticks.showSmallTicks) {\n this.ticks.largeStep > 0 ? (smallStep = this.ticks.largeStep) :\n (smallStep = (parseFloat(formatUnit(this.max))) - (parseFloat(formatUnit(this.min))));\n }\n else if (smallStep <= 0) {\n smallStep = parseFloat(formatUnit(this.step));\n }\n let min = this.fractionalToInteger(this.min);\n let max = this.fractionalToInteger(this.max);\n let steps = this.fractionalToInteger(smallStep);\n let bigNum = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 && this.customValues.length - 1;\n let customStep = this.customTickCounter(bigNum);\n let count = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 ?\n (bigNum * customStep) + bigNum : Math.abs((max - min) / steps);\n if (!isBlazor() || !this.isServerRendered) {\n this.element.appendChild(this.ul);\n }\n let li;\n let start = parseFloat(this.min.toString());\n if (orien === 'v') {\n start = parseFloat(this.max.toString());\n }\n let left = 0;\n let islargeTick;\n let tickWidth = 100 / count;\n if (tickWidth === Infinity) {\n tickWidth = 5;\n }\n for (let i = 0, y = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 ?\n this.customValues.length - 1 : 0, k = 0; i <= count; i++) {\n li = (this.createElement('li', {\n attrs: {\n class: classNames.tick, role: 'presentation', tabIndex: '-1',\n 'aria-hidden': 'true'\n }\n }));\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n islargeTick = i % (customStep + 1) === 0;\n if (islargeTick) {\n if (orien === 'h') {\n start = this.customValues[k];\n k++;\n }\n else {\n start = this.customValues[y];\n y--;\n }\n li.setAttribute('title', start.toString());\n }\n }\n else {\n li.setAttribute('title', start.toString());\n if (this.numberOfDecimals(this.max) === 0 && this.numberOfDecimals(this.min) === 0 &&\n this.numberOfDecimals(this.step) === 0) {\n if (orien === 'h') {\n islargeTick = ((start - parseFloat(this.min.toString())) % this.ticks.largeStep === 0) ? true : false;\n }\n else {\n islargeTick = (Math.abs(start - parseFloat(this.max.toString())) % this.ticks.largeStep === 0) ? true : false;\n }\n }\n else {\n let largestep = this.fractionalToInteger(this.ticks.largeStep);\n let startValue = this.fractionalToInteger(start);\n if (orien === 'h') {\n islargeTick = ((startValue - min) % largestep === 0) ? true : false;\n }\n else {\n islargeTick = (Math.abs(startValue - parseFloat(max.toString())) % largestep === 0) ? true : false;\n }\n }\n }\n if (islargeTick) {\n li.classList.add(classNames.large);\n }\n (orien === 'h') ? (li.style.width = tickWidth + '%') : (li.style.height = tickWidth + '%');\n let repeat = islargeTick ? (this.ticks.placement === 'Both' ? 2 : 1) : 0;\n if (islargeTick) {\n for (let j = 0; j < repeat; j++) {\n this.createTick(li, start, tickWidth);\n }\n if (isBlazor() && this.isServerRendered && isNullOrUndefined(this.customValues)) {\n this.updateTicksValues(start, this.ul.children[liElementPosition]);\n liElementPosition++;\n }\n }\n else if (isNullOrUndefined(this.customValues)) {\n this.formatTicksValue(li, start);\n if (isBlazor() && this.isServerRendered && isNullOrUndefined(this.customValues)) {\n this.updateTicksValues(start, this.ul.children[liElementPosition]);\n liElementPosition++;\n }\n }\n if (!isBlazor() || !this.isServerRendered) {\n this.ul.appendChild(li);\n }\n this.tickElementCollection.push(li);\n let decimalPoints;\n if (isNullOrUndefined(this.customValues)) {\n if (this.numberOfDecimals(smallStep) > this.numberOfDecimals(start)) {\n decimalPoints = this.numberOfDecimals(smallStep);\n }\n else {\n decimalPoints = this.numberOfDecimals(start);\n }\n if (orien === 'h') {\n start = this.makeRoundNumber(start + smallStep, decimalPoints);\n }\n else {\n start = this.makeRoundNumber(start - smallStep, decimalPoints);\n }\n left = this.makeRoundNumber(left + smallStep, decimalPoints);\n }\n }\n this.ticksAlignment(orien, tickWidth);\n }\n updateTicksValues(start, liElement) {\n if (liElement.childElementCount > 0) {\n for (let i = 0; i < liElement.childElementCount; i++) {\n this.blazortTicksValue(liElement, start, liElement.children[i]);\n }\n }\n else {\n this.blazortTicksValue(liElement, start, null);\n }\n }\n blazortTicksValue(li, start, span) {\n const tickText = this.formatNumber(start);\n const text = !isNullOrUndefined(this.ticks) && !isNullOrUndefined(this.ticks.format) ?\n this.formatString(start, this.ticksFormatInfo).formatString : tickText;\n let eventArgs = { value: start, text: text, tickElement: li };\n this.trigger('renderingTicks', eventArgs, (observedArgs) => {\n li.setAttribute('title', observedArgs.text.toString());\n if (span) {\n if (this.enableHtmlSanitizer) {\n span.innerHTML = SanitizeHtmlHelper.sanitize(observedArgs.text.toString());\n }\n else {\n span.innerHTML = observedArgs.text.toString();\n }\n }\n });\n }\n ticksAlignment(orien, tickWidth, triggerEvent = true) {\n this.firstChild = this.ul.firstElementChild;\n this.lastChild = this.ul.lastElementChild;\n this.firstChild.classList.add(classNames.sliderFirstTick);\n this.lastChild.classList.add(classNames.sliderLastTick);\n this.sliderContainer.classList.add(classNames.scale + '-' + this.ticks.placement.toLowerCase());\n if (orien === 'h') {\n this.firstChild.style.width = tickWidth / 2 + '%';\n this.lastChild.style.width = tickWidth / 2 + '%';\n }\n else {\n this.firstChild.style.height = tickWidth / 2 + '%';\n this.lastChild.style.height = tickWidth / 2 + '%';\n }\n let eventArgs = { ticksWrapper: this.ul, tickElements: this.tickElementCollection };\n if (triggerEvent) {\n this.trigger('renderedTicks', eventArgs);\n }\n this.scaleAlignment();\n }\n createTick(li, start, tickWidth) {\n let span = this.createElement('span', {\n className: classNames.tickValue + ' ' + classNames.tick + '-' + this.ticks.placement.toLowerCase(),\n attrs: { role: 'presentation', tabIndex: '-1', 'aria-hidden': 'true' }\n });\n li.appendChild(span);\n if (isNullOrUndefined(this.customValues)) {\n this.formatTicksValue(li, start, span, tickWidth);\n }\n else {\n if (this.enableHtmlSanitizer) {\n span.innerHTML = SanitizeHtmlHelper.sanitize(start.toString());\n }\n else {\n span.innerHTML = start.toString();\n }\n }\n }\n formatTicksValue(li, start, spanElement, tickWidth) {\n const tickText = this.formatNumber(start);\n const text = !isNullOrUndefined(this.ticks) && !isNullOrUndefined(this.ticks.format) ?\n this.formatString(start, this.ticksFormatInfo).formatString : tickText;\n const eventArgs = { value: start, text: text, tickElement: li };\n this.trigger('renderingTicks', eventArgs, (observedArgs) => {\n li.setAttribute('title', observedArgs.text.toString());\n if (spanElement) {\n if (this.enableHtmlSanitizer) {\n spanElement.innerHTML = SanitizeHtmlHelper.sanitize(observedArgs.text.toString());\n }\n else {\n spanElement.innerHTML = observedArgs.text.toString();\n }\n }\n if (!isNullOrUndefined(this.renderingTicks) && isBlazor()) {\n const orien = this.orientation === 'Horizontal' ? 'h' : 'v';\n this.ticksAlignment(orien, tickWidth, false);\n }\n });\n }\n scaleAlignment() {\n this.tickValuePosition();\n let orien = this.orientation === 'Vertical' ? 'v' : 'h';\n if (this.orientation === 'Vertical') {\n (this.element.getBoundingClientRect().width <= 15) ?\n this.sliderContainer.classList.add(classNames.sliderSmallSize) :\n this.sliderContainer.classList.remove(classNames.sliderSmallSize);\n }\n else {\n (this.element.getBoundingClientRect().height <= 15) ?\n this.sliderContainer.classList.add(classNames.sliderSmallSize) :\n this.sliderContainer.classList.remove(classNames.sliderSmallSize);\n }\n }\n tickValuePosition() {\n this.firstChild = this.element.querySelector('ul').children[0];\n let first = this.firstChild.getBoundingClientRect();\n let firstChild;\n let otherChild;\n let smallStep = this.ticks.smallStep;\n let count = Math.abs((parseFloat(formatUnit(this.max))) - (parseFloat(formatUnit(this.min)))) / smallStep;\n if (this.firstChild.children.length > 0) {\n firstChild = this.firstChild.children[0].getBoundingClientRect();\n }\n let tickElements = [this.sliderContainer.querySelectorAll('.' + classNames.tick + '.' +\n classNames.large + ' .' + classNames.tickValue)];\n let other;\n if (this.ticks.placement === 'Both') {\n other = [].slice.call(tickElements[0], 2);\n }\n else {\n other = [].slice.call(tickElements[0], 1);\n }\n let tickWidth = this.orientation === 'Vertical' ?\n (first.height * 2) : (first.width * 2);\n for (let i = 0; i < this.firstChild.children.length; i++) {\n if (this.orientation === 'Vertical') {\n if (!isBlazor() || !this.isServerRendered) {\n this.firstChild.children[i].style.top = -(firstChild.height / 2) + 'px';\n }\n }\n else {\n if (!this.enableRtl) {\n this.firstChild.children[i].style.left = -(firstChild.width / 2) + 'px';\n }\n else {\n this.firstChild.children[i].style.left = (tickWidth -\n this.firstChild.children[i].getBoundingClientRect().width) / 2 + 'px';\n }\n }\n }\n for (let i = 0; i < other.length; i++) {\n otherChild = other[i].getBoundingClientRect();\n if (this.orientation === 'Vertical') {\n if (!isBlazor() || !this.isServerRendered) {\n setStyleAttribute(other[i], { top: (tickWidth - otherChild.height) / 2 + 'px' });\n }\n }\n else {\n setStyleAttribute(other[i], { left: (tickWidth - otherChild.width) / 2 + 'px' });\n }\n }\n if (this.enableRtl && this.lastChild.children.length && count !== 0) {\n this.lastChild.children[0].style.left = -(this.lastChild.getBoundingClientRect().width / 2) + 'px';\n if (this.ticks.placement === 'Both') {\n if (!isBlazor()) {\n this.lastChild.children[1].style.left = -(this.lastChild.getBoundingClientRect().width / 2) + 'px';\n }\n }\n }\n if (count === 0) {\n if (this.orientation === 'Horizontal') {\n if (!this.enableRtl) {\n this.firstChild.classList.remove(classNames.sliderLastTick);\n if (!isBlazor()) {\n this.firstChild.style.left = this.firstHandle.style.left;\n }\n }\n else {\n this.firstChild.classList.remove(classNames.sliderLastTick);\n this.firstChild.style.right = this.firstHandle.style.right;\n if (!isBlazor()) {\n this.firstChild.children[0].style.left =\n (this.firstChild.getBoundingClientRect().width / 2) + 2 + 'px';\n if (this.ticks.placement === 'Both') {\n this.firstChild.children[1].style.left =\n (this.firstChild.getBoundingClientRect().width / 2) + 2 + 'px';\n }\n }\n }\n }\n if (!isBlazor() || !this.isServerRendered) {\n if (this.orientation === 'Vertical') {\n this.firstChild.classList.remove(classNames.sliderLastTick);\n }\n }\n }\n if (isBlazor() && this.isServerRendered) {\n let args;\n if (this.firstChild != null) {\n if (this.orientation === 'Horizontal') {\n args = { firstTickPostion: this.firstChild.children[0].style.left };\n }\n else {\n args = { firstTickPostion: -(firstChild.height / 2) + 'px' };\n }\n }\n if (other[0] != null) {\n if (this.orientation === 'Horizontal') {\n args = { otherTicksPosition: other[0].style.left };\n }\n else {\n args = { otherTicksPosition: (tickWidth - otherChild.height) / 2 + 'px' };\n }\n }\n if (this.firstChild != null && other[0] != null) {\n if (this.orientation === 'Horizontal') {\n args = {\n firstTickPostion: this.firstChild.children[0].style.left,\n otherTicksPosition: other[0].style.left\n };\n }\n else {\n args = {\n firstTickPostion: -(firstChild.height / 2) + 'px',\n otherTicksPosition: (tickWidth - otherChild.height) / 2 + 'px'\n };\n }\n }\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('SliderTicksData', args);\n // tslint:enable\n }\n }\n setAriaAttrValue(element) {\n let ariaValueText;\n let isTickFormatted = ((!isNullOrUndefined(this.ticks) && !isNullOrUndefined(this.ticks.format))) ? true : false;\n let text = !isTickFormatted ?\n this.formatContent(this.ticksFormatInfo, false) : this.formatContent(this.tooltipFormatInfo, false);\n let valuenow = isTickFormatted ? this.formatContent(this.ticksFormatInfo, true) :\n this.formatContent(this.tooltipFormatInfo, true);\n text = (!this.customAriaText) ? (text) : (this.customAriaText);\n if (text.split(' - ').length === 2) {\n ariaValueText = text.split(' - ');\n }\n else {\n ariaValueText = [text, text];\n }\n this.setAriaAttributes(element);\n if (this.type !== 'Range') {\n attributes(element, { 'aria-valuenow': valuenow, 'aria-valuetext': text });\n }\n else {\n (!this.enableRtl) ? ((element === this.firstHandle) ?\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[0], 'aria-valuetext': ariaValueText[0] }) :\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[1], 'aria-valuetext': ariaValueText[1] })) :\n ((element === this.firstHandle) ?\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[1], 'aria-valuetext': ariaValueText[1] }) :\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[0], 'aria-valuetext': ariaValueText[0] }));\n }\n }\n handleValueUpdate() {\n let hVal;\n if (this.type === 'Range') {\n if (this.activeHandle === 1) {\n hVal = this.handleVal1;\n }\n else {\n hVal = this.handleVal2;\n }\n }\n else {\n hVal = this.handleVal1;\n }\n return hVal;\n }\n getLimitCorrectedValues(value) {\n if (this.type === 'MinRange' || this.type === 'Default') {\n value = (this.getLimitValueAndPosition(value, this.limits.minStart, this.limits.minEnd))[0];\n }\n else {\n if (this.activeHandle === 1) {\n value = (this.getLimitValueAndPosition(value, this.limits.minStart, this.limits.minEnd))[0];\n }\n else {\n value = (this.getLimitValueAndPosition(value, this.limits.maxStart, this.limits.maxEnd))[0];\n }\n }\n return value;\n }\n focusSliderElement() {\n if (!this.isElementFocused) {\n this.element.focus();\n this.isElementFocused = true;\n }\n }\n buttonClick(args) {\n this.focusSliderElement();\n let value;\n let enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n let hVal = this.handleValueUpdate();\n if ((args.keyCode === 40) || (args.keyCode === 37)\n || args.currentTarget.classList.contains(classNames.firstButton)) {\n enabledRTL ? (value = this.add(hVal, parseFloat(this.step.toString()), true)) :\n (value = this.add(hVal, parseFloat(this.step.toString()), false));\n }\n else if ((args.keyCode === 38) || (args.keyCode === 39) ||\n args.currentTarget.classList.contains(classNames.secondButton)) {\n enabledRTL ? (value = this.add(hVal, parseFloat(this.step.toString()), false)) :\n (value = this.add(hVal, parseFloat(this.step.toString()), true));\n }\n else if ((args.keyCode === 33\n || args.currentTarget.classList.contains(classNames.firstButton))) {\n enabledRTL ? (value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), false)) :\n (value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), true));\n }\n else if ((args.keyCode === 34) ||\n args.currentTarget.classList.contains(classNames.secondButton)) {\n enabledRTL ? (value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), true)) :\n (value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), false));\n }\n else if ((args.keyCode === 36)) {\n value = parseFloat(this.min.toString());\n }\n else if ((args.keyCode === 35)) {\n value = parseFloat(this.max.toString());\n }\n if (this.limits.enabled) {\n value = this.getLimitCorrectedValues(value);\n }\n this.changeHandleValue(value);\n if (this.isMaterial && !this.tooltip.isVisible &&\n !this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.materialChange();\n }\n this.tooltipToggle(this.getHandle());\n this.getHandle().focus();\n if (args.currentTarget.classList.contains(classNames.firstButton)) {\n EventHandler.add(this.firstBtn, 'mouseup touchend', this.buttonUp, this);\n }\n if (args.currentTarget.classList.contains(classNames.secondButton)) {\n EventHandler.add(this.secondBtn, 'mouseup touchend', this.buttonUp, this);\n }\n }\n tooltipToggle(target) {\n if (this.isMaterialTooltip) {\n !this.tooltipElement.classList.contains(classNames.materialTooltipOpen) ?\n this.openMaterialTooltip() : this.refreshTooltip(this.firstHandle);\n }\n else {\n !this.tooltipElement ? this.openTooltip(target) : this.refreshTooltip(target);\n }\n }\n buttonUp(args) {\n if (args.currentTarget.classList.contains(classNames.firstButton)) {\n EventHandler.remove(this.firstBtn, 'mouseup touchend', this.buttonUp);\n }\n if (args.currentTarget.classList.contains(classNames.secondButton)) {\n EventHandler.remove(this.secondBtn, 'mouseup touchend', this.buttonUp);\n }\n }\n setRangeBar() {\n if (this.orientation === 'Horizontal') {\n if (this.type === 'MinRange') {\n this.enableRtl ? (this.rangeBar.style.right = '0px') : (this.rangeBar.style.left = '0px');\n setStyleAttribute(this.rangeBar, { 'width': isNullOrUndefined(this.handlePos1) ? 0 : this.handlePos1 + 'px' });\n }\n else {\n this.enableRtl ? (this.rangeBar.style.right =\n this.handlePos1 + 'px') : (this.rangeBar.style.left = this.handlePos1 + 'px');\n setStyleAttribute(this.rangeBar, { 'width': this.handlePos2 - this.handlePos1 + 'px' });\n }\n }\n else {\n if (this.type === 'MinRange') {\n this.rangeBar.style.bottom = '0px';\n setStyleAttribute(this.rangeBar, { 'height': isNullOrUndefined(this.handlePos1) ? 0 : this.handlePos1 + 'px' });\n }\n else {\n this.rangeBar.style.bottom = this.handlePos1 + 'px';\n setStyleAttribute(this.rangeBar, { 'height': this.handlePos2 - this.handlePos1 + 'px' });\n }\n }\n }\n checkValidValueAndPos(value) {\n value = this.checkHandleValue(value);\n value = this.checkHandlePosition(value);\n return value;\n }\n setLimitBarPositions(fromMinPostion, fromMaxpostion, toMinPostion, toMaxpostion) {\n if (this.orientation === 'Horizontal') {\n if (!this.enableRtl) {\n this.limitBarFirst.style.left = fromMinPostion + 'px';\n this.limitBarFirst.style.width = (fromMaxpostion - fromMinPostion) + 'px';\n }\n else {\n this.limitBarFirst.style.right = fromMinPostion + 'px';\n this.limitBarFirst.style.width = (fromMaxpostion - fromMinPostion) + 'px';\n }\n }\n else {\n this.limitBarFirst.style.bottom = fromMinPostion + 'px';\n this.limitBarFirst.style.height = (fromMaxpostion - fromMinPostion) + 'px';\n }\n if (this.type === 'Range') {\n if (this.orientation === 'Horizontal') {\n if (!this.enableRtl) {\n this.limitBarSecond.style.left = toMinPostion + 'px';\n this.limitBarSecond.style.width = (toMaxpostion - toMinPostion) + 'px';\n }\n else {\n this.limitBarSecond.style.right = toMinPostion + 'px';\n this.limitBarSecond.style.width = (toMaxpostion - toMinPostion) + 'px';\n }\n }\n else {\n this.limitBarSecond.style.bottom = toMinPostion + 'px';\n this.limitBarSecond.style.height = (toMaxpostion - toMinPostion) + 'px';\n }\n }\n }\n setLimitBar() {\n if (this.type === 'Default' || this.type === 'MinRange') {\n let fromPosition = (this.getLimitValueAndPosition(this.limits.minStart, this.limits.minStart, this.limits.minEnd, true))[0];\n fromPosition = this.checkValidValueAndPos(fromPosition);\n let toPosition = (this.getLimitValueAndPosition(this.limits.minEnd, this.limits.minStart, this.limits.minEnd, true))[0];\n toPosition = this.checkValidValueAndPos(toPosition);\n this.setLimitBarPositions(fromPosition, toPosition);\n }\n else if (this.type === 'Range') {\n let fromMinPostion = (this.getLimitValueAndPosition(this.limits.minStart, this.limits.minStart, this.limits.minEnd, true))[0];\n fromMinPostion = this.checkValidValueAndPos(fromMinPostion);\n let fromMaxpostion = (this.getLimitValueAndPosition(this.limits.minEnd, this.limits.minStart, this.limits.minEnd, true))[0];\n fromMaxpostion = this.checkValidValueAndPos(fromMaxpostion);\n let toMinPostion = (this.getLimitValueAndPosition(this.limits.maxStart, this.limits.maxStart, this.limits.maxEnd, true))[0];\n toMinPostion = this.checkValidValueAndPos(toMinPostion);\n let toMaxpostion = (this.getLimitValueAndPosition(this.limits.maxEnd, this.limits.maxStart, this.limits.maxEnd, true))[0];\n toMaxpostion = this.checkValidValueAndPos(toMaxpostion);\n this.setLimitBarPositions(fromMinPostion, fromMaxpostion, toMinPostion, toMaxpostion);\n }\n }\n getLimitValueAndPosition(currentValue, minValue, maxValue, limitBar) {\n if (isNullOrUndefined(minValue)) {\n minValue = this.min;\n if (isNullOrUndefined(currentValue) && limitBar) {\n currentValue = minValue;\n }\n }\n if (isNullOrUndefined(maxValue)) {\n maxValue = this.max;\n if (isNullOrUndefined(currentValue) && limitBar) {\n currentValue = maxValue;\n }\n }\n if (currentValue < minValue) {\n currentValue = minValue;\n }\n if (currentValue > maxValue) {\n currentValue = maxValue;\n }\n return [currentValue, this.checkHandlePosition(currentValue)];\n }\n setValue() {\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n this.min = 0;\n this.max = this.customValues.length - 1;\n this.setBarColor();\n }\n this.setAriaAttributes(this.firstHandle);\n this.handleVal1 = isNullOrUndefined(this.value) ? this.checkHandleValue(parseFloat(this.min.toString())) :\n this.checkHandleValue(parseFloat(this.value.toString()));\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n this.preHandlePos1 = this.handlePos1;\n isNullOrUndefined(this.activeHandle) ? (this.type === 'Range' ? this.activeHandle = 2 : this.activeHandle = 1) :\n this.activeHandle = this.activeHandle;\n if (this.type === 'Default' || this.type === 'MinRange') {\n if (this.limits.enabled) {\n let values = this.getLimitValueAndPosition(this.handleVal1, this.limits.minStart, this.limits.minEnd);\n this.handleVal1 = values[0];\n this.handlePos1 = values[1];\n this.preHandlePos1 = this.handlePos1;\n }\n this.setHandlePosition(null);\n this.handleStart();\n this.value = this.handleVal1;\n this.setAriaAttrValue(this.firstHandle);\n this.changeEvent('changed', null);\n }\n else {\n this.validateRangeValue();\n }\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n if (this.limits.enabled) {\n this.setLimitBar();\n }\n }\n rangeValueUpdate() {\n if (this.value === null || typeof (this.value) !== 'object') {\n this.value = [parseFloat(formatUnit(this.min)), parseFloat(formatUnit(this.max))];\n }\n }\n validateRangeValue() {\n this.rangeValueUpdate();\n this.setRangeValue();\n }\n modifyZindex() {\n if (this.type === 'Range') {\n if (this.activeHandle === 1) {\n this.firstHandle.style.zIndex = (this.zIndex + 4) + '';\n this.secondHandle.style.zIndex = (this.zIndex + 3) + '';\n }\n else {\n this.firstHandle.style.zIndex = (this.zIndex + 3) + '';\n this.secondHandle.style.zIndex = (this.zIndex + 4) + '';\n }\n }\n else if (this.isMaterialTooltip && this.tooltipElement) {\n this.tooltipElement.style.zIndex = getZindexPartial(this.element) + '';\n }\n }\n setHandlePosition(event) {\n let handle;\n let pos = (this.activeHandle === 1) ? this.handlePos1 : this.handlePos2;\n if (this.isMaterialTooltip) {\n handle = [this.firstHandle, this.materialHandle];\n }\n else {\n handle = [this.getHandle()];\n }\n this.handleStart();\n handle.forEach((handle) => {\n if (this.orientation === 'Horizontal') {\n this.enableRtl ? (handle.style.right =\n `${pos}px`) : (handle.style.left = `${pos}px`);\n }\n else {\n handle.style.bottom = `${pos}px`;\n }\n if (isBlazor() && this.isServerRendered) {\n handle.style.removeProperty('visibility');\n }\n });\n this.changeEvent('change', event);\n }\n getHandle() {\n return (this.activeHandle === 1) ? this.firstHandle : this.secondHandle;\n }\n setRangeValue() {\n this.updateRangeValue();\n this.activeHandle = 1;\n this.setHandlePosition(null);\n this.activeHandle = 2;\n this.setHandlePosition(null);\n this.activeHandle = 1;\n }\n changeEvent(eventName, e) {\n let previous = eventName === 'change' ? this.previousVal : this.previousChanged;\n if (this.type !== 'Range') {\n this.setProperties({ 'value': this.handleVal1 }, true);\n if (previous !== this.value) {\n this.trigger(eventName, this.changeEventArgs(eventName, e));\n this.setPreviousVal(eventName, this.value);\n }\n this.setAriaAttrValue(this.firstHandle);\n }\n else {\n let value = this.value = [this.handleVal1, this.handleVal2];\n this.setProperties({ 'value': value }, true);\n if (previous.length === this.value.length\n && this.value[0] !== previous[0] || this.value[1] !== previous[1]) {\n this.trigger(eventName, this.changeEventArgs(eventName, e));\n this.setPreviousVal(eventName, this.value);\n }\n this.setAriaAttrValue(this.getHandle());\n }\n this.hiddenInput.value = this.value.toString();\n }\n changeEventArgs(eventName, e) {\n let eventArgs;\n if (this.tooltip.isVisible && this.tooltipObj) {\n if (!isBlazor() || !this.isServerRendered) {\n this.tooltipValue();\n }\n eventArgs = {\n value: this.value,\n previousValue: eventName === 'change' ? this.previousVal : this.previousChanged,\n action: eventName, text: this.tooltipObj.content, isInteracted: isNullOrUndefined(e) ? false : true\n };\n }\n else {\n eventArgs = {\n value: this.value,\n previousValue: eventName === 'change' ? this.previousVal : this.previousChanged,\n action: eventName, text: isNullOrUndefined(this.ticksFormatInfo.format) ? this.value.toString() :\n (this.type !== 'Range' ? this.formatString(this.value, this.ticksFormatInfo).formatString :\n (this.formatString(this.value[0], this.ticksFormatInfo).formatString + ' - ' +\n this.formatString(this.value[1], this.ticksFormatInfo).formatString)),\n isInteracted: isNullOrUndefined(e) ? false : true\n };\n }\n return eventArgs;\n }\n setPreviousVal(eventName, value) {\n if (eventName === 'change') {\n this.previousVal = value;\n }\n else {\n this.previousChanged = value;\n }\n }\n updateRangeValue() {\n let values = this.value.toString().split(',').map(Number);\n if ((this.enableRtl && this.orientation !== 'Vertical') || this.rtl) {\n this.value = [values[1], values[0]];\n }\n else {\n this.value = [values[0], values[1]];\n }\n if (this.enableRtl && this.orientation !== 'Vertical') {\n this.handleVal1 = this.checkHandleValue(this.value[1]);\n this.handleVal2 = this.checkHandleValue(this.value[0]);\n }\n else {\n this.handleVal1 = this.checkHandleValue(this.value[0]);\n this.handleVal2 = this.checkHandleValue(this.value[1]);\n }\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n if (this.handlePos1 > this.handlePos2) {\n this.handlePos1 = this.handlePos2;\n this.handleVal1 = this.handleVal2;\n }\n this.preHandlePos1 = this.handlePos1;\n this.preHandlePos2 = this.handlePos2;\n if (this.limits.enabled) {\n this.activeHandle = 1;\n let values = this.getLimitValueAndPosition(this.handleVal1, this.limits.minStart, this.limits.minEnd);\n this.handleVal1 = values[0];\n this.handlePos1 = values[1];\n this.preHandlePos1 = this.handlePos1;\n this.activeHandle = 2;\n values = this.getLimitValueAndPosition(this.handleVal2, this.limits.maxStart, this.limits.maxEnd);\n this.handleVal2 = values[0];\n this.handlePos2 = values[1];\n this.preHandlePos2 = this.handlePos2;\n }\n }\n checkHandlePosition(value) {\n let pos;\n value = (100 *\n (value - (parseFloat(formatUnit(this.min))))) / ((parseFloat(formatUnit(this.max))) - (parseFloat(formatUnit(this.min))));\n if (this.orientation === 'Horizontal') {\n pos = this.element.getBoundingClientRect().width * (value / 100);\n }\n else {\n pos = this.element.getBoundingClientRect().height * (value / 100);\n }\n if (((parseFloat(formatUnit(this.max))) === (parseFloat(formatUnit(this.min))))) {\n if (this.orientation === 'Horizontal') {\n pos = this.element.getBoundingClientRect().width;\n }\n else {\n pos = this.element.getBoundingClientRect().height;\n }\n }\n return pos;\n }\n checkHandleValue(value) {\n if (this.min > this.max) {\n this.min = this.max;\n }\n if (this.min === this.max) {\n return (parseFloat(formatUnit(this.max)));\n }\n let handle = this.tempStartEnd();\n if (value < handle.start) {\n value = handle.start;\n }\n else if (value > handle.end) {\n value = handle.end;\n }\n return value;\n }\n /**\n * It is used to reposition slider.\n * @returns void\n */\n reposition() {\n this.firstHandle.style.transition = 'none';\n if (this.type !== 'Default') {\n this.rangeBar.style.transition = 'none';\n }\n if (this.type === 'Range') {\n this.secondHandle.style.transition = 'none';\n }\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n if (this.handleVal2) {\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n }\n if (this.orientation === 'Horizontal') {\n this.enableRtl ? this.firstHandle.style.right =\n `${this.handlePos1}px` : this.firstHandle.style.left = `${this.handlePos1}px`;\n if (this.isMaterialTooltip) {\n this.enableRtl ? this.materialHandle.style.right =\n `${this.handlePos1}px` : this.materialHandle.style.left = `${this.handlePos1}px`;\n }\n if (this.type === 'MinRange') {\n this.enableRtl ? (this.rangeBar.style.right = '0px') : (this.rangeBar.style.left = '0px');\n setStyleAttribute(this.rangeBar, { 'width': isNullOrUndefined(this.handlePos1) ? 0 : this.handlePos1 + 'px' });\n }\n else if (this.type === 'Range') {\n this.enableRtl ? this.secondHandle.style.right =\n `${this.handlePos2}px` : this.secondHandle.style.left = `${this.handlePos2}px`;\n this.enableRtl ? (this.rangeBar.style.right =\n this.handlePos1 + 'px') : (this.rangeBar.style.left = this.handlePos1 + 'px');\n setStyleAttribute(this.rangeBar, { 'width': this.handlePos2 - this.handlePos1 + 'px' });\n }\n }\n else {\n this.firstHandle.style.bottom = `${this.handlePos1}px`;\n if (this.isMaterialTooltip) {\n this.materialHandle.style.bottom = `${this.handlePos1}px`;\n }\n if (this.type === 'MinRange') {\n this.rangeBar.style.bottom = '0px';\n setStyleAttribute(this.rangeBar, { 'height': isNullOrUndefined(this.handlePos1) ? 0 : this.handlePos1 + 'px' });\n }\n else if (this.type === 'Range') {\n this.secondHandle.style.bottom = `${this.handlePos2}px`;\n this.rangeBar.style.bottom = this.handlePos1 + 'px';\n setStyleAttribute(this.rangeBar, { 'height': this.handlePos2 - this.handlePos1 + 'px' });\n }\n }\n if (this.limits.enabled) {\n this.setLimitBar();\n }\n if (this.ticks.placement !== 'None' && this.ul) {\n if (!isBlazor()) {\n this.removeElement(this.ul);\n this.ul = undefined;\n }\n this.renderScale();\n if (isBlazor()) {\n this.tickValuePosition();\n }\n }\n this.handleStart();\n if (!this.tooltip.isVisible) {\n setTimeout(() => {\n this.firstHandle.style.transition = this.scaleTransform;\n if (this.type === 'Range') {\n this.secondHandle.style.transition = this.scaleTransform;\n }\n });\n }\n if (!isBlazor() || !this.isServerRendered) {\n this.refreshTooltip(this.tooltipTarget);\n }\n this.setBarColor();\n }\n changeHandleValue(value) {\n let position = null;\n if (this.activeHandle === 1) {\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n this.handleVal1 = this.checkHandleValue(value);\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n if (this.type === 'Range' && this.handlePos1 > this.handlePos2) {\n this.handlePos1 = this.handlePos2;\n this.handleVal1 = this.handleVal2;\n }\n if (this.handlePos1 !== this.preHandlePos1) {\n position = this.preHandlePos1 = this.handlePos1;\n }\n }\n this.modifyZindex();\n }\n else {\n if (!(this.limits.enabled && this.limits.endHandleFixed)) {\n this.handleVal2 = this.checkHandleValue(value);\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n if (this.type === 'Range' && this.handlePos2 < this.handlePos1) {\n this.handlePos2 = this.handlePos1;\n this.handleVal2 = this.handleVal1;\n }\n if (this.handlePos2 !== this.preHandlePos2) {\n position = this.preHandlePos2 = this.handlePos2;\n }\n }\n this.modifyZindex();\n }\n if (position !== null) {\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n this.setHandlePosition(null);\n }\n }\n tempStartEnd() {\n if (this.min > this.max) {\n return {\n start: this.max,\n end: this.min\n };\n }\n else {\n return {\n start: this.min,\n end: this.max\n };\n }\n }\n xyToPosition(position) {\n let pos;\n if (this.min === this.max) {\n return 100;\n }\n if (this.orientation === 'Horizontal') {\n let left = position.x - this.element.getBoundingClientRect().left;\n let num = this.element.offsetWidth / 100;\n this.val = (left / num);\n }\n else {\n let top = position.y - this.element.getBoundingClientRect().top;\n let num = this.element.offsetHeight / 100;\n this.val = 100 - (top / num);\n }\n let val = this.stepValueCalculation(this.val);\n if (val < 0) {\n val = 0;\n }\n else if (val > 100) {\n val = 100;\n }\n if (this.enableRtl && this.orientation !== 'Vertical') {\n val = 100 - val;\n }\n if (this.orientation === 'Horizontal') {\n pos = this.element.getBoundingClientRect().width * (val / 100);\n }\n else {\n pos = this.element.getBoundingClientRect().height * (val / 100);\n }\n return pos;\n }\n stepValueCalculation(value) {\n if (this.step === 0) {\n this.step = 1;\n }\n let percentStep = (parseFloat(formatUnit(this.step))) / ((parseFloat(formatUnit(this.max)) - parseFloat(formatUnit(this.min))) / 100);\n let remain = value % Math.abs(percentStep);\n if (remain !== 0) {\n if ((percentStep / 2) > remain) {\n value -= remain;\n }\n else {\n value += Math.abs(percentStep) - remain;\n }\n }\n return value;\n }\n add(a, b, addition) {\n let precision;\n let x = Math.pow(10, precision || 3);\n let val;\n if (addition) {\n val = (Math.round(a * x) + Math.round(b * x)) / x;\n }\n else {\n val = (Math.round(a * x) - Math.round(b * x)) / x;\n }\n return val;\n }\n positionToValue(pos) {\n let val;\n let diff = parseFloat(formatUnit(this.max)) - parseFloat(formatUnit(this.min));\n if (this.orientation === 'Horizontal') {\n val = (pos / this.element.getBoundingClientRect().width) * diff;\n }\n else {\n val = (pos / this.element.getBoundingClientRect().height) * diff;\n }\n let total = this.add(val, parseFloat(this.min.toString()), true);\n return (total);\n }\n sliderBarClick(evt) {\n evt.preventDefault();\n let pos;\n if (evt.type === 'mousedown' || evt.type === 'mouseup' || evt.type === 'click') {\n pos = { x: evt.clientX, y: evt.clientY };\n }\n else if (evt.type === 'touchend' || evt.type === 'touchstart') {\n pos = { x: evt.changedTouches[0].clientX, y: evt.changedTouches[0].clientY };\n }\n let handlepos = this.xyToPosition(pos);\n let handleVal = this.positionToValue(handlepos);\n if (this.type === 'Range' && (this.handlePos2 - handlepos) < (handlepos - this.handlePos1)) {\n this.activeHandle = 2;\n if (!(this.limits.enabled && this.limits.endHandleFixed)) {\n if (this.limits.enabled) {\n let value = this.getLimitValueAndPosition(handleVal, this.limits.maxStart, this.limits.maxEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.secondHandle.classList.add(classNames.sliderActiveHandle);\n this.handlePos2 = this.preHandlePos2 = handlepos;\n this.handleVal2 = handleVal;\n }\n this.modifyZindex();\n this.secondHandle.focus();\n }\n else {\n this.activeHandle = 1;\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n if (this.limits.enabled) {\n let value = this.getLimitValueAndPosition(handleVal, this.limits.minStart, this.limits.minEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.firstHandle.classList.add(classNames.sliderActiveHandle);\n this.handlePos1 = this.preHandlePos1 = handlepos;\n this.handleVal1 = handleVal;\n }\n this.modifyZindex();\n this.firstHandle.focus();\n }\n if (this.isMaterialTooltip) {\n this.tooltipElement.classList.add(classNames.materialTooltipActive);\n }\n let focusedElement = this.element.querySelector('.' + classNames.sliderTabHandle);\n if (focusedElement && this.getHandle() !== focusedElement) {\n focusedElement.classList.remove(classNames.sliderTabHandle);\n }\n let handle = this.activeHandle === 1 ? this.firstHandle : this.secondHandle;\n if (evt.target === handle) {\n if (this.isMaterial && !this.tooltip.isVisible &&\n !this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.materialChange();\n }\n this.tooltipToggle(this.getHandle());\n return;\n }\n if (!this.checkRepeatedValue(handleVal)) {\n return;\n }\n let transition = this.isMaterial && this.tooltip.isVisible ?\n this.transitionOnMaterialTooltip : this.transition;\n this.getHandle().style.transition = transition.handle;\n if (this.type !== 'Default') {\n this.rangeBar.style.transition = transition.rangeBar;\n }\n this.setHandlePosition(evt);\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n }\n handleValueAdjust(handleValue, assignValue, handleNumber) {\n if (handleNumber === 1) {\n this.handleVal1 = assignValue;\n this.handleVal2 = this.handleVal1 + this.minDiff;\n }\n else if (handleNumber === 2) {\n this.handleVal2 = assignValue;\n this.handleVal1 = this.handleVal2 - this.minDiff;\n }\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n }\n dragRangeBarMove(event) {\n if (event.type !== 'touchmove') {\n event.preventDefault();\n }\n this.rangeBarDragged = true;\n let pos;\n this.rangeBar.style.transition = 'none';\n this.firstHandle.style.transition = 'none';\n this.secondHandle.style.transition = 'none';\n let xPostion;\n let yPostion;\n if (event.type === 'mousemove') {\n [xPostion, yPostion] = [event.clientX, event.clientY];\n }\n else {\n [xPostion, yPostion] = [event.changedTouches[0].clientX, event.changedTouches[0].clientY];\n }\n if (!(this.limits.enabled && this.limits.startHandleFixed) && !(this.limits.enabled && this.limits.endHandleFixed)) {\n if (!this.enableRtl) {\n pos = { x: xPostion - this.firstPartRemain, y: yPostion + this.secondPartRemain };\n }\n else {\n pos = { x: xPostion + this.secondPartRemain, y: yPostion + this.secondPartRemain };\n }\n this.handlePos1 = this.xyToPosition(pos);\n this.handleVal1 = this.positionToValue(this.handlePos1);\n if (!this.enableRtl) {\n pos = { x: xPostion + this.secondPartRemain, y: yPostion - this.firstPartRemain };\n }\n else {\n pos = { x: xPostion - this.firstPartRemain, y: yPostion - this.firstPartRemain };\n }\n this.handlePos2 = this.xyToPosition(pos);\n this.handleVal2 = this.positionToValue(this.handlePos2);\n if (this.limits.enabled) {\n let value = this.getLimitValueAndPosition(this.handleVal1, this.limits.minStart, this.limits.minEnd);\n this.handleVal1 = value[0];\n this.handlePos1 = value[1];\n if (this.handleVal1 === this.limits.minEnd) {\n this.handleValueAdjust(this.handleVal1, this.limits.minEnd, 1);\n }\n if (this.handleVal1 === this.limits.minStart) {\n this.handleValueAdjust(this.handleVal1, this.limits.minStart, 1);\n }\n value = this.getLimitValueAndPosition(this.handleVal2, this.limits.maxStart, this.limits.maxEnd);\n this.handleVal2 = value[0];\n this.handlePos2 = value[1];\n if (this.handleVal2 === this.limits.maxStart) {\n this.handleValueAdjust(this.handleVal2, this.limits.maxStart, 2);\n }\n if (this.handleVal2 === this.limits.maxEnd) {\n this.handleValueAdjust(this.handleVal2, this.limits.maxEnd, 2);\n }\n }\n if (this.handleVal2 === this.max) {\n this.handleValueAdjust(this.handleVal2, this.max, 2);\n }\n if (this.handleVal1 === this.min) {\n this.handleValueAdjust(this.handleVal1, this.min, 1);\n }\n }\n this.activeHandle = 1;\n this.setHandlePosition(event);\n this.activeHandle = 2;\n this.setHandlePosition(event);\n this.tooltipToggle(this.rangeBar);\n this.setRangeBar();\n }\n sliderBarUp(event) {\n this.changeEvent('changed', event);\n this.handleFocusOut();\n this.firstHandle.classList.remove(classNames.sliderActiveHandle);\n if (this.type === 'Range') {\n this.secondHandle.classList.remove(classNames.sliderActiveHandle);\n }\n this.closeTooltip();\n if (this.isMaterial) {\n this.getHandle().classList.remove('e-large-thumb-size');\n if (this.isMaterialTooltip) {\n this.tooltipElement.classList.remove(classNames.materialTooltipActive);\n }\n }\n EventHandler.remove(document, 'mousemove touchmove', this.sliderBarMove);\n EventHandler.remove(document, 'mouseup touchend', this.sliderBarUp);\n }\n sliderBarMove(evt) {\n if (evt.type !== 'touchmove') {\n evt.preventDefault();\n }\n let pos;\n if (evt.type === 'mousemove') {\n pos = { x: evt.clientX, y: evt.clientY };\n }\n else {\n pos = { x: evt.changedTouches[0].clientX, y: evt.changedTouches[0].clientY };\n }\n let handlepos = this.xyToPosition(pos);\n let handleVal = this.positionToValue(handlepos);\n handlepos = Math.round(handlepos);\n if (this.type !== 'Range' && this.activeHandle === 1) {\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n if (this.limits.enabled) {\n let valueAndPostion = this.getLimitValueAndPosition(handleVal, this.limits.minStart, this.limits.minEnd);\n handlepos = valueAndPostion[1];\n handleVal = valueAndPostion[0];\n }\n this.handlePos1 = handlepos;\n this.handleVal1 = handleVal;\n }\n this.firstHandle.classList.add(classNames.sliderActiveHandle);\n }\n if (this.type === 'Range') {\n if (this.activeHandle === 1) {\n this.firstHandle.classList.add(classNames.sliderActiveHandle);\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n if (handlepos > this.handlePos2) {\n handlepos = this.handlePos2;\n handleVal = this.handleVal2;\n }\n if (handlepos !== this.preHandlePos1) {\n if (this.limits.enabled) {\n let value = this.getLimitValueAndPosition(handleVal, this.limits.minStart, this.limits.minEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.handlePos1 = this.preHandlePos1 = handlepos;\n this.handleVal1 = handleVal;\n this.activeHandle = 1;\n }\n }\n }\n else if (this.activeHandle === 2) {\n this.secondHandle.classList.add(classNames.sliderActiveHandle);\n if (!(this.limits.enabled && this.limits.endHandleFixed)) {\n if (handlepos < this.handlePos1) {\n handlepos = this.handlePos1;\n handleVal = this.handleVal1;\n }\n if (handlepos !== this.preHandlePos2) {\n if (this.limits.enabled) {\n let value = this.getLimitValueAndPosition(handleVal, this.limits.maxStart, this.limits.maxEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.handlePos2 = this.preHandlePos2 = handlepos;\n this.handleVal2 = handleVal;\n this.activeHandle = 2;\n }\n }\n }\n }\n if (!this.checkRepeatedValue(handleVal)) {\n return;\n }\n this.getHandle().style.transition = this.scaleTransform;\n if (this.type !== 'Default') {\n this.rangeBar.style.transition = 'none';\n }\n this.setHandlePosition(evt);\n if (this.isMaterial && !this.tooltip.isVisible &&\n !this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.materialChange();\n }\n this.tooltipToggle(this.getHandle());\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n }\n dragRangeBarUp(event) {\n if (!this.rangeBarDragged) {\n this.focusSliderElement();\n this.sliderBarClick(event);\n }\n this.changeEvent('changed', event);\n this.closeTooltip();\n EventHandler.remove(document, 'mousemove touchmove', this.dragRangeBarMove);\n EventHandler.remove(document, 'mouseup touchend', this.dragRangeBarUp);\n this.rangeBarDragged = false;\n }\n checkRepeatedValue(currentValue) {\n if (this.type === 'Range') {\n let previousVal = this.enableRtl && this.orientation !== 'Vertical' ? (this.activeHandle === 1 ?\n this.previousVal[1] : this.previousVal[0]) :\n (this.activeHandle === 1 ? this.previousVal[0] : this.previousVal[1]);\n if (currentValue === previousVal) {\n return 0;\n }\n }\n else {\n if (currentValue === this.previousVal) {\n return 0;\n }\n }\n return 1;\n }\n refreshTooltip(target) {\n if (this.tooltip.isVisible && this.tooltipObj) {\n this.tooltipValue();\n if (target) {\n this.tooltipObj.refresh(target);\n this.tooltipTarget = target;\n }\n }\n }\n openTooltip(target) {\n if (this.tooltip.isVisible && this.tooltipObj && !this.isMaterialTooltip) {\n this.tooltipValue();\n this.tooltipObj.open(target);\n this.tooltipTarget = target;\n }\n }\n closeTooltip() {\n if (this.tooltip.isVisible && this.tooltipObj && this.tooltip.showOn !== 'Always' && !this.isMaterialTooltip) {\n this.tooltipValue();\n this.tooltipObj.close();\n this.tooltipTarget = undefined;\n }\n }\n keyDown(event) {\n switch (event.keyCode) {\n case 37:\n case 38:\n case 39:\n case 40:\n case 33:\n case 34:\n case 36:\n case 35:\n event.preventDefault();\n this.buttonClick(event);\n break;\n }\n }\n wireButtonEvt(destroy) {\n if (!destroy) {\n EventHandler.add(this.firstBtn, 'mouseleave touchleave', this.buttonFocusOut, this);\n EventHandler.add(this.secondBtn, 'mouseleave touchleave', this.buttonFocusOut, this);\n EventHandler.add(this.firstBtn, 'mousedown touchstart', this.repeatHandlerMouse, this);\n EventHandler.add(this.firstBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp, this);\n EventHandler.add(this.secondBtn, 'mousedown touchstart', this.repeatHandlerMouse, this);\n EventHandler.add(this.secondBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp, this);\n EventHandler.add(this.firstBtn, 'focusout', this.sliderFocusOut, this);\n EventHandler.add(this.secondBtn, 'focusout', this.sliderFocusOut, this);\n }\n else {\n EventHandler.remove(this.firstBtn, 'mouseleave touchleave', this.buttonFocusOut);\n EventHandler.remove(this.secondBtn, 'mouseleave touchleave', this.buttonFocusOut);\n EventHandler.remove(this.firstBtn, 'mousedown touchstart', this.repeatHandlerMouse);\n EventHandler.remove(this.firstBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp);\n EventHandler.remove(this.secondBtn, 'mousedown touchstart', this.repeatHandlerMouse);\n EventHandler.remove(this.secondBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp);\n EventHandler.remove(this.firstBtn, 'focusout', this.sliderFocusOut);\n EventHandler.remove(this.secondBtn, 'focusout', this.sliderFocusOut);\n }\n }\n rangeBarMousedown(event) {\n event.preventDefault();\n this.focusSliderElement();\n if (this.type === 'Range' && this.drag && event.target === this.rangeBar) {\n let xPostion;\n let yPostion;\n if (event.type === 'mousedown') {\n [xPostion, yPostion] = [event.clientX, event.clientY];\n }\n else if (event.type === 'touchstart') {\n [xPostion, yPostion] = [event.changedTouches[0].clientX, event.changedTouches[0].clientY];\n }\n if (this.orientation === 'Horizontal') {\n this.firstPartRemain = xPostion - this.rangeBar.getBoundingClientRect().left;\n this.secondPartRemain = this.rangeBar.getBoundingClientRect().right - xPostion;\n }\n else {\n this.firstPartRemain = yPostion - this.rangeBar.getBoundingClientRect().top;\n this.secondPartRemain = this.rangeBar.getBoundingClientRect().bottom - yPostion;\n }\n this.minDiff = this.handleVal2 - this.handleVal1;\n this.tooltipToggle(this.rangeBar);\n let focusedElement = this.element.querySelector('.' + classNames.sliderTabHandle);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.sliderTabHandle);\n }\n EventHandler.add(document, 'mousemove touchmove', this.dragRangeBarMove, this);\n EventHandler.add(document, 'mouseup touchend', this.dragRangeBarUp, this);\n }\n }\n elementClick(event) {\n event.preventDefault();\n this.focusSliderElement();\n this.sliderBarClick(event);\n }\n wireEvents() {\n this.onresize = this.reposition.bind(this);\n window.addEventListener('resize', this.onresize);\n if (this.enabled && !this.readonly) {\n EventHandler.add(this.element, 'click', this.elementClick, this);\n if (this.type === 'Range' && this.drag) {\n EventHandler.add(this.rangeBar, 'mousedown touchstart', this.rangeBarMousedown, this);\n }\n EventHandler.add(this.sliderContainer, 'keydown', this.keyDown, this);\n EventHandler.add(this.sliderContainer, 'keyup', this.keyUp, this);\n EventHandler.add(this.element, 'focusout', this.sliderFocusOut, this);\n EventHandler.add(this.sliderContainer, 'mouseover mouseout touchstart touchend', this.hover, this);\n this.wireFirstHandleEvt(false);\n if (this.type === 'Range') {\n this.wireSecondHandleEvt(false);\n }\n if (this.showButtons) {\n this.wireButtonEvt(false);\n }\n this.wireMaterialTooltipEvent(false);\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n }\n }\n unwireEvents() {\n EventHandler.remove(this.element, 'click', this.elementClick);\n if (this.type === 'Range' && this.drag) {\n EventHandler.remove(this.rangeBar, 'mousedown touchstart', this.rangeBarMousedown);\n }\n EventHandler.remove(this.sliderContainer, 'keydown', this.keyDown);\n EventHandler.remove(this.sliderContainer, 'keyup', this.keyUp);\n EventHandler.remove(this.element, 'focusout', this.sliderFocusOut);\n EventHandler.remove(this.sliderContainer, 'mouseover mouseout touchstart touchend', this.hover);\n this.wireFirstHandleEvt(true);\n if (this.type === 'Range') {\n this.wireSecondHandleEvt(true);\n }\n if (this.showButtons) {\n this.wireButtonEvt(true);\n }\n this.wireMaterialTooltipEvent(true);\n EventHandler.remove(this.element, 'reset', this.formResetHandler);\n }\n formResetHandler() {\n this.setProperties({ 'value': this.formResetValue }, true);\n this.setValue();\n }\n keyUp(event) {\n if (event.keyCode === 9 && event.target.classList.contains(classNames.sliderHandle)) {\n this.focusSliderElement();\n if (!event.target.classList.contains(classNames.sliderTabHandle)) {\n if (this.element.querySelector('.' + classNames.sliderTabHandle)) {\n this.element.querySelector('.' + classNames.sliderTabHandle).classList.remove(classNames.sliderTabHandle);\n }\n event.target.classList.add(classNames.sliderTabHandle);\n let parentElement = event.target.parentElement;\n if (parentElement === this.element) {\n parentElement.querySelector('.' + classNames.sliderTrack).classList.add(classNames.sliderTabTrack);\n if (this.type === 'Range' || this.type === 'MinRange') {\n parentElement.querySelector('.' + classNames.rangeBar).classList.add(classNames.sliderTabRange);\n }\n }\n if (this.type === 'Range') {\n (event.target.previousSibling).classList.contains(classNames.sliderHandle) ?\n this.activeHandle = 2 : this.activeHandle = 1;\n }\n this.getHandle().focus();\n this.tooltipToggle(this.getHandle());\n }\n }\n this.closeTooltip();\n this.changeEvent('changed', event);\n }\n hover(event) {\n if (!isNullOrUndefined(event)) {\n if (event.type === 'mouseover' || event.type === 'touchmove' || event.type === 'mousemove' ||\n event.type === 'pointermove' || event.type === 'touchstart') {\n this.sliderContainer.classList.add(classNames.sliderHover);\n }\n else {\n this.sliderContainer.classList.remove(classNames.sliderHover);\n }\n }\n }\n sliderFocusOut(event) {\n if (event.relatedTarget !== this.secondHandle && event.relatedTarget !== this.firstHandle &&\n event.relatedTarget !== this.element && event.relatedTarget !== this.firstBtn && event.relatedTarget !== this.secondBtn) {\n this.closeMaterialTooltip();\n if (this.element.querySelector('.' + classNames.sliderTabHandle)) {\n this.element.querySelector('.' + classNames.sliderTabHandle).classList.remove(classNames.sliderTabHandle);\n }\n if (this.element.querySelector('.' + classNames.sliderTabTrack)) {\n this.element.querySelector('.' + classNames.sliderTabTrack).classList.remove(classNames.sliderTabTrack);\n if ((this.type === 'Range' || this.type === 'MinRange') &&\n this.element.querySelector('.' + classNames.sliderTabRange)) {\n this.element.querySelector('.' + classNames.sliderTabRange).classList.remove(classNames.sliderTabRange);\n }\n }\n this.hiddenInput.focus();\n this.hiddenInput.blur();\n this.isElementFocused = false;\n }\n }\n removeElement(element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n changeSliderType(type, args) {\n if (this.isMaterialTooltip && this.materialHandle) {\n this.sliderContainer.classList.remove(classNames.materialSlider);\n this.removeElement(this.materialHandle);\n this.materialHandle = undefined;\n }\n this.removeElement(this.firstHandle);\n this.firstHandle = undefined;\n if (type !== 'Default') {\n if (type === 'Range') {\n this.removeElement(this.secondHandle);\n this.secondHandle = undefined;\n }\n this.removeElement(this.rangeBar);\n this.rangeBar = undefined;\n }\n if (this.tooltip.isVisible && !isNullOrUndefined(this.tooltipObj)) {\n this.tooltipObj.destroy();\n this.tooltipElement = undefined;\n this.tooltipCollidedPosition = undefined;\n }\n if (this.limits.enabled) {\n if (type === 'MinRange' || type === 'Default') {\n if (!isNullOrUndefined(this.limitBarFirst)) {\n this.removeElement(this.limitBarFirst);\n this.limitBarFirst = undefined;\n }\n }\n else {\n if (!isNullOrUndefined(this.limitBarSecond)) {\n this.removeElement(this.limitBarSecond);\n this.limitBarSecond = undefined;\n }\n }\n }\n this.activeHandle = 1;\n this.getThemeInitialization();\n if (this.type === 'Range') {\n this.rangeValueUpdate();\n }\n this.createRangeBar();\n if (this.limits.enabled) {\n this.createLimitBar();\n }\n this.setHandler();\n this.setOrientClass();\n this.wireFirstHandleEvt(false);\n if (this.type === 'Range') {\n this.wireSecondHandleEvt(false);\n }\n this.setValue();\n if (this.tooltip.isVisible) {\n this.renderTooltip();\n this.wireMaterialTooltipEvent(false);\n }\n this.setBarColor();\n if ((!isBlazor() && !this.isServerRendered) || args !== 'tooltip') {\n this.updateConfig();\n }\n }\n changeRtl() {\n if (!this.enableRtl && this.type === 'Range') {\n this.value = [this.handleVal2, this.handleVal1];\n }\n this.updateConfig();\n if (this.tooltip.isVisible) {\n this.tooltipObj.refresh(this.firstHandle);\n }\n if (this.showButtons) {\n let enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n attributes(enabledRTL ? this.secondBtn : this.firstBtn, { 'aria-label': 'Decrease', title: 'Decrease' });\n attributes(enabledRTL ? this.firstBtn : this.secondBtn, { 'aria-label': 'Increase', title: 'Increase' });\n }\n }\n changeOrientation() {\n this.changeSliderType(this.type, 'null');\n }\n updateConfig() {\n this.setEnableRTL();\n this.setValue();\n if (this.tooltip.isVisible) {\n if (!isBlazor()) {\n this.refreshTooltip(this.tooltipTarget);\n }\n }\n if (this.ticks.placement !== 'None') {\n if (this.ul) {\n this.removeElement(this.ul);\n this.ul = undefined;\n this.renderScale();\n }\n }\n this.limitsPropertyChange();\n }\n limitsPropertyChange() {\n if (this.limits.enabled) {\n if (isNullOrUndefined(this.limitBarFirst) && this.type !== 'Range') {\n this.createLimitBar();\n }\n if (isNullOrUndefined(this.limitBarFirst) && isNullOrUndefined(this.limitBarSecond) && this.type === 'Range') {\n this.createLimitBar();\n }\n this.setLimitBar();\n this.setValue();\n }\n else {\n if (!isNullOrUndefined(this.limitBarFirst)) {\n detach(this.limitBarFirst);\n }\n if (!isNullOrUndefined(this.limitBarSecond)) {\n detach(this.limitBarSecond);\n }\n }\n }\n /**\n * Get the properties to be maintained in the persisted state.\n * @private\n */\n getPersistData() {\n let keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n }\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it removes the attributes and classes.\n * @method destroy\n * @return {void}\n */\n destroy() {\n super.destroy();\n this.unwireEvents();\n window.removeEventListener('resize', this.onresize);\n removeClass([this.sliderContainer], [classNames.sliderDisabled]);\n this.firstHandle.removeAttribute('aria-orientation');\n if (this.type === 'Range') {\n this.secondHandle.removeAttribute('aria-orientation');\n }\n if (!isBlazor() && !this.isServerRendered) {\n this.sliderContainer.parentNode.insertBefore(this.element, this.sliderContainer);\n detach(this.sliderContainer);\n }\n if (this.tooltip.isVisible) {\n this.tooltipObj.destroy();\n }\n if (!isBlazor() && !this.isServerRendered) {\n this.element.innerHTML = '';\n }\n }\n /**\n * Calls internally if any of the property value is changed.\n * @private\n */\n // tslint:disable-next-line\n onPropertyChanged(newProp, oldProp) {\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'value':\n if (newProp && oldProp) {\n let value = isNullOrUndefined(newProp.value) ?\n (this.type === 'Range' ? [this.min, this.max] : this.min) : newProp.value;\n this.setProperties({ 'value': value }, true);\n if (!isNullOrUndefined(oldProp.value) && oldProp.value.toString() !== value.toString()) {\n this.setValue();\n if (!isBlazor() || !this.isServerRendered) {\n this.refreshTooltip(this.tooltipTarget);\n }\n if (this.type === 'Range') {\n if (isNullOrUndefined(newProp.value) || oldProp.value[1] === value[1]) {\n this.activeHandle = 1;\n }\n else {\n this.activeHandle = 2;\n }\n }\n }\n }\n break;\n case 'min':\n case 'step':\n case 'max':\n if (isBlazor() && this.isServerRendered) {\n this.isServerRendered = false;\n }\n this.setMinMaxValue();\n if (isBlazor() && !this.isServerRendered) {\n this.isServerRendered = true;\n }\n break;\n case 'tooltip':\n if (isBlazor() && this.isServerRendered) {\n this.isServerRendered = false;\n }\n if (!isNullOrUndefined(newProp.tooltip) && !isNullOrUndefined(oldProp.tooltip)) {\n this.setTooltip(prop);\n }\n if (isBlazor() && !this.isServerRendered) {\n this.isServerRendered = true;\n }\n break;\n case 'type':\n if (isBlazor() && this.isServerRendered) {\n this.isServerRendered = false;\n }\n if (!isNullOrUndefined(oldProp) && Object.keys(oldProp).length\n && !isNullOrUndefined(oldProp.type)) {\n this.changeSliderType(oldProp.type, prop);\n this.setZindex();\n }\n if (isBlazor() && !this.isServerRendered) {\n this.isServerRendered = true;\n }\n break;\n case 'enableRtl':\n if (isBlazor() && this.isServerRendered) {\n if (this.isMaterialTooltip) {\n this.sliderContainer.classList.add(classNames.materialSlider);\n }\n this.isServerRendered = false;\n }\n if (oldProp.enableRtl !== newProp.enableRtl && this.orientation !== 'Vertical') {\n this.rtl = oldProp.enableRtl;\n this.changeRtl();\n }\n if (isBlazor() && !this.isServerRendered) {\n this.isServerRendered = true;\n }\n break;\n case 'limits':\n this.limitsPropertyChange();\n break;\n case 'orientation':\n if (isBlazor() && this.isServerRendered) {\n this.isServerRendered = false;\n }\n this.changeOrientation();\n if (isBlazor() && !this.isServerRendered) {\n this.isServerRendered = true;\n }\n break;\n case 'ticks':\n if (!isNullOrUndefined(this.sliderContainer.querySelector('.' + classNames.scale))) {\n if (!isBlazor() || !this.isServerRendered) {\n detach(this.ul);\n }\n Array.prototype.forEach.call(this.sliderContainer.classList, (className) => {\n if (className.match(/e-scale-/)) {\n this.sliderContainer.classList.remove(className);\n }\n });\n }\n if (this.ticks.placement !== 'None') {\n this.renderScale();\n this.setZindex();\n }\n break;\n case 'locale':\n if (this.showButtons) {\n this.buttonTitle();\n }\n break;\n case 'showButtons':\n if (newProp.showButtons) {\n this.setButtons();\n this.reposition();\n if (this.enabled && !this.readonly) {\n this.wireButtonEvt(false);\n }\n }\n else {\n if (!isBlazor() || !this.isServerRendered) {\n if (this.firstBtn && this.secondBtn) {\n this.sliderContainer.removeChild(this.firstBtn);\n this.sliderContainer.removeChild(this.secondBtn);\n this.sliderContainer.classList.remove(classNames.sliderButtonClass);\n this.firstBtn = undefined;\n this.secondBtn = undefined;\n this.reposition();\n }\n }\n }\n if (isBlazor() && this.isServerRendered) {\n if (this.isMaterialTooltip) {\n this.sliderContainer.classList.add(classNames.materialSlider);\n }\n }\n break;\n case 'enabled':\n this.setEnabled();\n if (isBlazor() && this.isServerRendered) {\n if (this.isMaterialTooltip) {\n this.sliderContainer.classList.add(classNames.materialSlider);\n }\n }\n break;\n case 'readonly':\n this.setReadOnly();\n if (isBlazor() && this.isServerRendered) {\n if (this.isMaterialTooltip) {\n this.sliderContainer.classList.add(classNames.materialSlider);\n }\n }\n break;\n case 'customValues':\n if (isBlazor() && this.isServerRendered) {\n this.isServerRendered = false;\n }\n this.setValue();\n this.reposition();\n if (isBlazor() && !this.isServerRendered) {\n this.isServerRendered = true;\n }\n break;\n case 'colorRange':\n if (isBlazor() && this.isServerRendered) {\n this.isServerRendered = false;\n }\n this.reposition();\n if (isBlazor() && !this.isServerRendered) {\n this.isServerRendered = true;\n }\n break;\n case 'width':\n this.setElementWidth(newProp.width);\n this.setMinMaxValue();\n if (this.limits) {\n this.limitsPropertyChange();\n }\n break;\n }\n }\n }\n setReadOnly() {\n if (this.readonly) {\n this.unwireEvents();\n this.sliderContainer.classList.add(classNames.readonly);\n }\n else {\n this.wireEvents();\n this.sliderContainer.classList.remove(classNames.readonly);\n }\n }\n setMinMaxValue() {\n this.setValue();\n if (!isBlazor()) {\n this.refreshTooltip(this.tooltipTarget);\n }\n if (!isNullOrUndefined(this.sliderContainer.querySelector('.' + classNames.scale))) {\n if (this.ul) {\n detach(this.ul);\n Array.prototype.forEach.call(this.sliderContainer.classList, (className) => {\n if (className.match(/e-scale-/)) {\n this.sliderContainer.classList.remove(className);\n }\n });\n }\n }\n if (this.ticks.placement !== 'None') {\n this.renderScale();\n this.setZindex();\n }\n }\n setZindex() {\n this.zIndex = 6;\n if (!isNullOrUndefined(this.ticks) && this.ticks.placement !== 'None') {\n this.ul.style.zIndex = (this.zIndex + -7) + '';\n this.element.style.zIndex = (this.zIndex + 2) + '';\n }\n if (!this.isMaterial && !isNullOrUndefined(this.ticks) && this.ticks.placement === 'Both') {\n this.element.style.zIndex = (this.zIndex + 2) + '';\n }\n this.firstHandle.style.zIndex = (this.zIndex + 3) + '';\n if (this.type === 'Range') {\n this.secondHandle.style.zIndex = (this.zIndex + 4) + '';\n }\n }\n setTooltip(args) {\n this.changeSliderType(this.type, args);\n }\n setBarColor() {\n let trackPosition;\n let trackClassName;\n let child = this.sliderTrack.lastElementChild;\n while (child) {\n this.sliderTrack.removeChild(child);\n child = this.sliderTrack.lastElementChild;\n }\n for (let i = 0; i < this.colorRange.length; i++) {\n if (!isNullOrUndefined(this.colorRange[i].start) && !isNullOrUndefined(this.colorRange[i].end)) {\n if (this.colorRange[i].end > this.colorRange[i].start) {\n if (this.colorRange[i].start < this.min) {\n this.colorRange[i].start = this.min;\n }\n if (this.colorRange[i].end > this.max) {\n this.colorRange[i].end = this.max;\n }\n let startingPosition = this.checkHandlePosition(this.colorRange[i].start);\n let endPosition = this.checkHandlePosition(this.colorRange[i].end);\n let trackContainer = this.createElement('div');\n trackContainer.style.backgroundColor = this.colorRange[i].color;\n trackContainer.style.border = '1px solid ' + this.colorRange[i].color;\n if (this.orientation === 'Horizontal') {\n trackClassName = classNames.sliderHorizantalColor;\n if (this.enableRtl) {\n if (isNullOrUndefined(this.customValues)) {\n trackPosition = this.checkHandlePosition(this.max) - this.checkHandlePosition(this.colorRange[i].end);\n }\n else {\n trackPosition = this.checkHandlePosition(this.customValues.length - this.colorRange[i].end - 1);\n }\n }\n else {\n trackPosition = this.checkHandlePosition(this.colorRange[i].start);\n }\n trackContainer.style.width = endPosition - startingPosition + 'px';\n trackContainer.style.left = trackPosition + 'px';\n }\n else {\n trackClassName = classNames.sliderVerticalColor;\n trackPosition = this.checkHandlePosition(this.colorRange[i].start);\n trackContainer.style.height = endPosition - startingPosition + 'px';\n trackContainer.style.bottom = trackPosition + 'px';\n }\n trackContainer.classList.add(trackClassName);\n this.sliderTrack.appendChild(trackContainer);\n }\n }\n }\n }\n /**\n * Gets the component name\n * @private\n */\n getModuleName() {\n return 'slider';\n }\n};\n__decorate$2([\n Property(null)\n], Slider.prototype, \"value\", void 0);\n__decorate$2([\n Property(null)\n], Slider.prototype, \"customValues\", void 0);\n__decorate$2([\n Property(1)\n], Slider.prototype, \"step\", void 0);\n__decorate$2([\n Property(null)\n], Slider.prototype, \"width\", void 0);\n__decorate$2([\n Property(0)\n], Slider.prototype, \"min\", void 0);\n__decorate$2([\n Property(100)\n], Slider.prototype, \"max\", void 0);\n__decorate$2([\n Property(false)\n], Slider.prototype, \"readonly\", void 0);\n__decorate$2([\n Property('Default')\n], Slider.prototype, \"type\", void 0);\n__decorate$2([\n Collection([{}], ColorRangeData)\n], Slider.prototype, \"colorRange\", void 0);\n__decorate$2([\n Complex({}, TicksData)\n], Slider.prototype, \"ticks\", void 0);\n__decorate$2([\n Complex({}, LimitData)\n], Slider.prototype, \"limits\", void 0);\n__decorate$2([\n Property(true)\n], Slider.prototype, \"enabled\", void 0);\n__decorate$2([\n Complex({}, TooltipData)\n], Slider.prototype, \"tooltip\", void 0);\n__decorate$2([\n Property(false)\n], Slider.prototype, \"showButtons\", void 0);\n__decorate$2([\n Property(true)\n], Slider.prototype, \"enableAnimation\", void 0);\n__decorate$2([\n Property('Horizontal')\n], Slider.prototype, \"orientation\", void 0);\n__decorate$2([\n Property('')\n], Slider.prototype, \"cssClass\", void 0);\n__decorate$2([\n Property(false)\n], Slider.prototype, \"enableHtmlSanitizer\", void 0);\n__decorate$2([\n Event()\n], Slider.prototype, \"created\", void 0);\n__decorate$2([\n Event()\n], Slider.prototype, \"change\", void 0);\n__decorate$2([\n Event()\n], Slider.prototype, \"changed\", void 0);\n__decorate$2([\n Event()\n], Slider.prototype, \"renderingTicks\", void 0);\n__decorate$2([\n Event()\n], Slider.prototype, \"renderedTicks\", void 0);\n__decorate$2([\n Event()\n], Slider.prototype, \"tooltipChange\", void 0);\nSlider = __decorate$2([\n NotifyPropertyChanges\n], Slider);\n\n/**\n * Slider modules\n */\n\nvar __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar FormValidator_1;\n/**\n * global declarations\n */\n// tslint:disable-next-line:no-any\nlet regex = {\n EMAIL: new RegExp('^[A-Za-z0-9._%+-]{1,}@[A-Za-z0-9._%+-]{1,}([.]{1}[a-zA-Z0-9]{2,}' +\n '|[.]{1}[a-zA-Z0-9]{2,4}[.]{1}[a-zA-Z0-9]{2,4})$'),\n URL: /^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/m,\n DATE_ISO: new RegExp('^([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$'),\n DIGITS: new RegExp('^[0-9]*$'),\n PHONE: new RegExp('^[+]?[0-9]{9,13}$'),\n CREDITCARD: new RegExp('^\\\\d{13,16}$')\n};\n/**\n * ErrorOption values\n * @private\n */\nvar ErrorOption;\n(function (ErrorOption) {\n /**\n * Defines the error message.\n */\n ErrorOption[ErrorOption[\"Message\"] = 0] = \"Message\";\n /**\n * Defines the error element type.\n */\n ErrorOption[ErrorOption[\"Label\"] = 1] = \"Label\";\n})(ErrorOption || (ErrorOption = {}));\n/**\n * FormValidator class enables you to validate the form fields based on your defined rules\n * ```html\n *
    \n * \n * \n *
    \n * \n * ```\n */\nlet FormValidator = FormValidator_1 = class FormValidator extends Base {\n // Initializes the FormValidator \n constructor(element, options) {\n super(options, element);\n this.validated = [];\n this.errorRules = [];\n this.allowSubmit = false;\n this.required = 'required';\n this.infoElement = null;\n this.inputElement = null;\n this.selectQuery = 'input:not([type=reset]):not([type=button]), select, textarea';\n // tslint:disable-next-line:no-any\n this.localyMessage = {};\n /**\n * Specifies the default messages for validation rules.\n * @default { List of validation message }\n */\n this.defaultMessages = {\n required: 'This field is required.',\n email: 'Please enter a valid email address.',\n url: 'Please enter a valid URL.',\n date: 'Please enter a valid date.',\n dateIso: 'Please enter a valid date ( ISO ).',\n creditcard: 'Please enter valid card number',\n number: 'Please enter a valid number.',\n digits: 'Please enter only digits.',\n maxLength: 'Please enter no more than {0} characters.',\n minLength: 'Please enter at least {0} characters.',\n rangeLength: 'Please enter a value between {0} and {1} characters long.',\n range: 'Please enter a value between {0} and {1}.',\n max: 'Please enter a value less than or equal to {0}.',\n min: 'Please enter a value greater than or equal to {0}.',\n regex: 'Please enter a correct value.',\n tel: 'Please enter a valid phone number.',\n pattern: 'Please enter a correct pattern value.',\n equalTo: 'Please enter the valid match text',\n };\n if (typeof this.rules === 'undefined') {\n this.rules = {};\n }\n this.l10n = new L10n('formValidator', this.defaultMessages, this.locale);\n if (this.locale) {\n this.localeFunc();\n }\n onIntlChange.on('notifyExternalChange', this.afterLocalization, this);\n element = typeof element === 'string' ? select(element, document) : element;\n // Set novalidate to prevent default HTML5 form validation\n if (this.element != null) {\n this.element.setAttribute('novalidate', '');\n this.inputElements = selectAll(this.selectQuery, this.element);\n this.createHTML5Rules();\n this.wireEvents();\n }\n else {\n return undefined;\n }\n }\n // tslint:enable\n /**\n * Add validation rules to the corresponding input element based on `name` attribute.\n * @param {string} name `name` of form field.\n * @param {Object} rules Validation rules for the corresponding element.\n * @return {void}\n */\n addRules(name, rules) {\n if (name) {\n if (this.rules.hasOwnProperty(name)) {\n extend(this.rules[name], rules, {});\n }\n else {\n this.rules[name] = rules;\n }\n }\n }\n /**\n * Remove validation to the corresponding field based on name attribute.\n * When no parameter is passed, remove all the validations in the form.\n * @param {string} name Input name attribute value.\n * @param {string[]} rules List of validation rules need to be remove from the corresponding element.\n * @return {void}\n */\n removeRules(name, rules) {\n if (!name && !rules) {\n this.rules = {};\n }\n else if (this.rules[name] && !rules) {\n delete this.rules[name];\n }\n else if (!isNullOrUndefined(this.rules[name] && rules)) {\n for (let i = 0; i < rules.length; i++) {\n delete this.rules[name][rules[i]];\n }\n }\n else {\n return;\n }\n }\n /**\n * Validate the current form values using defined rules.\n * Returns `true` when the form is valid otherwise `false`\n * @param {string} selected - Optional parameter to validate specified element.\n * @return {boolean}\n */\n validate(selected) {\n let rules = Object.keys(this.rules);\n if (selected && rules.length) {\n this.validateRules(selected);\n //filter the selected element it don't have any valid input element\n return rules.indexOf(selected) !== -1 && this.errorRules.filter((data) => {\n return data.name === selected;\n }).length === 0;\n }\n else {\n this.errorRules = [];\n for (let name of rules) {\n this.validateRules(name);\n }\n return this.errorRules.length === 0;\n }\n }\n /**\n * Reset the value of all the fields in form.\n * @return {void}\n */\n reset() {\n this.element.reset();\n this.clearForm();\n }\n /**\n * Get input element by name.\n * @param {string} name - Input element name attribute value.\n * @return {HTMLInputElement}\n */\n getInputElement(name) {\n this.inputElement = (select('[name=\"' + name + '\"]', this.element));\n return this.inputElement;\n }\n /**\n * Destroy the form validator object and error elements.\n * @return {void}\n */\n destroy() {\n this.reset();\n this.unwireEvents();\n this.rules = {};\n let elements = selectAll('.' + this.errorClass + ', .' + this.validClass, this.element);\n for (let element of elements) {\n detach(element);\n }\n super.destroy();\n onIntlChange.off('notifyExternalChange', this.afterLocalization);\n }\n /**\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'locale':\n this.localeFunc();\n break;\n }\n }\n }\n ;\n /**\n * @private\n */\n localeFunc() {\n for (let key of Object.keys(this.defaultMessages)) {\n this.l10n.setLocale(this.locale);\n let value = this.l10n.getConstant(key);\n this.localyMessage[key] = value;\n }\n }\n /**\n * @private\n */\n getModuleName() {\n return 'formValidator';\n }\n /**\n * @private\n */\n // tslint:disable-next-line:no-any\n afterLocalization(args) {\n this.locale = args.locale;\n this.localeFunc();\n }\n /**\n * Allows you to refresh the form validator base events to the elements inside the form.\n * @return {void}\n */\n refresh() {\n this.unwireEvents();\n this.inputElements = selectAll(this.selectQuery, this.element);\n this.wireEvents();\n }\n clearForm() {\n this.errorRules = [];\n this.validated = [];\n let elements = selectAll(this.selectQuery, this.element);\n for (let element of elements) {\n let input = element;\n input.removeAttribute('aria-invalid');\n input.classList.remove(this.errorClass);\n if (input.name.length > 0) {\n this.getInputElement(input.name);\n this.getErrorElement(input.name);\n this.hideMessage(input.name);\n }\n input.classList.remove(this.validClass);\n }\n }\n createHTML5Rules() {\n let defRules = ['required', 'validateHidden', 'regex', 'rangeLength', 'maxLength', 'minLength', 'dateIso', 'digits',\n 'pattern', 'data-val-required', 'type', 'data-validation', 'min', 'max', 'range', 'equalTo', 'data-val-minlength-min',\n 'data-val-equalto-other', 'data-val-maxlength-max', 'data-val-range-min', 'data-val-regex-pattern', 'data-val-length-max',\n 'data-val-creditcard', 'data-val-phone'];\n let acceptedTypes = ['hidden', 'email', 'url', 'date', 'number', 'tel'];\n for (let input of (this.inputElements)) {\n // Default attribute rules \n let allRule = {};\n for (let rule of defRules) {\n if (input.getAttribute(rule) !== null) {\n switch (rule) {\n case 'required':\n this.defRule(input, allRule, rule, input.required);\n break;\n case 'data-validation':\n rule = input.getAttribute(rule);\n this.defRule(input, allRule, rule, true);\n break;\n case 'type':\n if (acceptedTypes.indexOf(input.type) !== -1) {\n this.defRule(input, allRule, input.type, true);\n }\n break;\n case 'rangeLength':\n case 'range':\n this.defRule(input, allRule, rule, JSON.parse(input.getAttribute(rule)));\n break;\n case 'equalTo':\n let id = input.getAttribute(rule);\n this.defRule(input, allRule, rule, id);\n break;\n default:\n if (input.getAttribute('data-val') === 'true') {\n this.annotationRule(input, allRule, rule, input.getAttribute(rule));\n }\n else {\n this.defRule(input, allRule, rule, input.getAttribute(rule));\n }\n }\n }\n }\n //adding pattern type validation\n if (Object.keys(allRule).length !== 0) {\n this.addRules(input.name, allRule);\n }\n }\n }\n annotationRule(input, ruleCon, ruleName, value) {\n let annotationRule = ruleName.split('-');\n let rulesList = ['required', 'creditcard', 'phone', 'maxlength', 'minlength', 'range', 'regex', 'equalto'];\n let ruleFirstName = annotationRule[annotationRule.length - 1];\n let ruleSecondName = annotationRule[annotationRule.length - 2];\n if (rulesList.indexOf(ruleFirstName) !== -1) {\n switch (ruleFirstName) {\n case 'required':\n this.defRule(input, ruleCon, 'required', value);\n break;\n case 'creditcard':\n this.defRule(input, ruleCon, 'creditcard', value);\n break;\n case 'phone':\n this.defRule(input, ruleCon, 'tel', value);\n break;\n }\n }\n else if (rulesList.indexOf(ruleSecondName) !== -1) {\n switch (ruleSecondName) {\n case 'maxlength':\n this.defRule(input, ruleCon, 'maxLength', value);\n break;\n case 'minlength':\n this.defRule(input, ruleCon, 'minLength', value);\n break;\n case 'range':\n let minvalue = input.getAttribute('data-val-range-min');\n let maxvalue = input.getAttribute('data-val-range-max');\n this.defRule(input, ruleCon, 'range', [minvalue, maxvalue]);\n break;\n case 'equalto':\n let id = input.getAttribute(ruleName).split('.');\n this.defRule(input, ruleCon, 'equalTo', id[id.length - 1]);\n break;\n case 'regex':\n this.defRule(input, ruleCon, 'regex', value);\n break;\n }\n }\n }\n defRule(input, ruleCon, ruleName, value) {\n let message = input.getAttribute('data-' + ruleName + '-message');\n let annotationMessage = input.getAttribute('data-val-' + ruleName);\n let customMessage;\n if (this.rules[input.name] && ruleName !== 'validateHidden' && ruleName !== 'hidden') {\n this.getInputElement(input.name);\n customMessage = this.getErrorMessage(this.rules[input.name][ruleName], ruleName);\n }\n if (message) {\n value = [value, message];\n }\n else if (annotationMessage) {\n value = [value, annotationMessage];\n }\n else if (customMessage) {\n value = [value, customMessage];\n }\n ruleCon[ruleName] = value;\n }\n // Wire events to the form elements\n wireEvents() {\n for (let input of (this.inputElements)) {\n if (FormValidator_1.isCheckable(input)) {\n EventHandler.add(input, 'click', this.clickHandler, this);\n }\n else if (input.tagName === 'SELECT') {\n EventHandler.add(input, 'change', this.changeHandler, this);\n }\n else {\n EventHandler.add(input, 'focusout', this.focusOutHandler, this);\n EventHandler.add(input, 'keyup', this.keyUpHandler, this);\n }\n }\n EventHandler.add(this.element, 'submit', this.submitHandler, this);\n EventHandler.add(this.element, 'reset', this.resetHandler, this);\n }\n // UnWire events to the form elements\n unwireEvents() {\n for (let input of (this.inputElements)) {\n EventHandler.clearEvents(input);\n }\n EventHandler.remove(this.element, 'submit', this.submitHandler);\n EventHandler.remove(this.element, 'reset', this.resetHandler);\n }\n // Handle input element focusout event\n focusOutHandler(e) {\n this.trigger('focusout', e);\n //FormValidator.triggerCallback(this.focusout, e);\n let element = e.target;\n if (this.rules[element.name]) {\n if (this.rules[element.name][this.required] || element.value.length > 0) {\n this.validate(element.name);\n }\n else if (this.validated.indexOf(element.name) === -1) {\n this.validated.push(element.name);\n }\n }\n }\n // Handle input element keyup event\n keyUpHandler(e) {\n this.trigger('keyup', e);\n let element = e.target;\n // List of keys need to prevent while validation\n let excludeKeys = [16, 17, 18, 20, 35, 36, 37, 38, 39, 40, 45, 144, 225];\n if (e.which === 9 && (!this.rules[element.name] || (this.rules[element.name] && !this.rules[element.name][this.required]))) {\n return;\n }\n if (this.validated.indexOf(element.name) !== -1 && this.rules[element.name] && excludeKeys.indexOf(e.which) === -1) {\n this.validate(element.name);\n }\n }\n // Handle input click event\n clickHandler(e) {\n this.trigger('click', e);\n let element = e.target;\n // If element type is not submit allow validation\n if (element.type !== 'submit') {\n this.validate(element.name);\n }\n else if (element.getAttribute('formnovalidate') !== null) {\n // Prevent form validation, if submit button has formnovalidate attribute\n this.allowSubmit = true;\n }\n }\n // Handle input change event\n changeHandler(e) {\n this.trigger('change', e);\n let element = e.target;\n this.validate(element.name);\n }\n // Handle form submit event\n submitHandler(e) {\n this.trigger('submit', e);\n //FormValidator.triggerCallback(this.submit, e);\n // Prevent form submit if validation failed\n if (!this.allowSubmit && !this.validate()) {\n e.preventDefault();\n }\n else {\n this.allowSubmit = false;\n }\n }\n // Handle form reset\n resetHandler() {\n this.clearForm();\n }\n // Validate each rule based on input element name\n validateRules(name) {\n if (!this.rules[name]) {\n return;\n }\n let rules = Object.keys(this.rules[name]);\n let hiddenType = false;\n let validateHiddenType = false;\n let vhPos = rules.indexOf('validateHidden');\n let hPos = rules.indexOf('hidden');\n this.getInputElement(name);\n if (hPos !== -1) {\n hiddenType = true;\n }\n if (vhPos !== -1) {\n validateHiddenType = true;\n }\n if (!hiddenType || (hiddenType && validateHiddenType)) {\n if (vhPos !== -1) {\n rules.splice(vhPos, 1);\n }\n if (hPos !== -1) {\n rules.splice((hPos - 1), 1);\n }\n this.getErrorElement(name);\n for (let rule of rules) {\n let errorMessage = this.getErrorMessage(this.rules[name][rule], rule);\n let errorRule = { name: name, message: errorMessage };\n let eventArgs = {\n inputName: name,\n element: this.inputElement,\n message: errorMessage\n };\n if (!this.isValid(name, rule) && !this.inputElement.classList.contains(this.ignore)) {\n this.removeErrorRules(name);\n this.errorRules.push(errorRule);\n // Set aria attributes to invalid elements\n this.inputElement.setAttribute('aria-invalid', 'true');\n this.inputElement.setAttribute('aria-describedby', this.inputElement.id + '-info');\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n if (!this.infoElement) {\n this.createErrorElement(name, errorRule.message, this.inputElement);\n }\n else {\n this.showMessage(errorRule);\n }\n eventArgs.errorElement = this.infoElement;\n eventArgs.status = 'failure';\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n this.optionalValidationStatus(name, eventArgs);\n this.trigger('validationComplete', eventArgs);\n // Set aria-required to required rule elements\n if (rule === 'required') {\n this.inputElement.setAttribute('aria-required', 'true');\n }\n break;\n }\n else {\n this.hideMessage(name);\n eventArgs.status = 'success';\n this.trigger('validationComplete', eventArgs);\n }\n }\n }\n else {\n return;\n }\n }\n // Update the optional validation status\n optionalValidationStatus(name, refer) {\n if (!this.rules[name][this.required] && !this.inputElement.value.length && !isNullOrUndefined(this.infoElement)) {\n this.infoElement.innerHTML = this.inputElement.value;\n this.infoElement.setAttribute('aria-invalid', 'false');\n refer.status = '';\n this.hideMessage(name);\n }\n }\n // Check the input element whether it's value satisfy the validation rule or not\n isValid(name, rule) {\n let params = this.rules[name][rule];\n let param = (params instanceof Array && typeof params[1] === 'string') ? params[0] : params;\n let currentRule = this.rules[name][rule];\n let args = { value: this.inputElement.value, param: param, element: this.inputElement, formElement: this.element };\n this.trigger('validationBegin', args);\n if (currentRule && typeof currentRule[0] === 'function') {\n let fn = currentRule[0];\n return fn.call(this, { element: this.inputElement, value: this.inputElement.value });\n }\n else if (FormValidator_1.isCheckable(this.inputElement)) {\n if (rule !== 'required') {\n return true;\n }\n return selectAll('input[name=' + name + ']:checked', this.element).length > 0;\n }\n else {\n return FormValidator_1.checkValidator[rule](args);\n }\n }\n // Return default error message or custom error message \n getErrorMessage(ruleValue, rule) {\n let message = this.inputElement.getAttribute('data-' + rule + '-message') ?\n this.inputElement.getAttribute('data-' + rule + '-message') :\n (ruleValue instanceof Array && typeof ruleValue[1] === 'string') ? ruleValue[1] :\n (Object.keys(this.localyMessage).length !== 0) ? this.localyMessage[rule] : this.defaultMessages[rule];\n let formats = message.match(/{(\\d)}/g);\n if (!isNullOrUndefined(formats)) {\n for (let i = 0; i < formats.length; i++) {\n let value = ruleValue instanceof Array ? ruleValue[i] : ruleValue;\n message = message.replace(formats[i], value);\n }\n }\n return message;\n }\n // Create error element based on name and error message\n createErrorElement(name, message, input) {\n let errorElement = createElement(this.errorElement, {\n className: this.errorClass,\n innerHTML: message,\n attrs: { for: name }\n });\n // Create message design if errorOption is message\n if (this.errorOption === ErrorOption.Message) {\n errorElement.classList.remove(this.errorClass);\n errorElement.classList.add('e-message');\n errorElement = createElement(this.errorContainer, { className: this.errorClass, innerHTML: errorElement.outerHTML });\n }\n errorElement.id = this.inputElement.name + '-info';\n // Append error message into MVC error message element\n if (this.element.querySelector('[data-valmsg-for=\"' + input.id + '\"]')) {\n this.element.querySelector('[data-valmsg-for=\"' + input.id + '\"]').appendChild(errorElement);\n }\n else if (input.hasAttribute('data-msg-containerid') === true) {\n // Append error message into custom div element\n let containerId = input.getAttribute('data-msg-containerid');\n let divElement = this.element.querySelector('#' + containerId);\n divElement.appendChild(errorElement);\n }\n else if (this.customPlacement != null) {\n // Call custom placement function if customPlacement is not null\n this.customPlacement.call(this, this.inputElement, errorElement);\n }\n else {\n this.inputElement.parentNode.insertBefore(errorElement, this.inputElement.nextSibling);\n }\n errorElement.style.display = 'block';\n this.getErrorElement(name);\n this.validated.push(name);\n this.checkRequired(name);\n }\n // Get error element by name\n getErrorElement(name) {\n this.infoElement = select(this.errorElement + '.' + this.errorClass, this.inputElement.parentElement);\n if (!this.infoElement) {\n this.infoElement = select(this.errorElement + '.' + this.errorClass + '[for=\"' + name + '\"]', this.element);\n }\n return this.infoElement;\n }\n // Remove existing rule from errorRules object\n removeErrorRules(name) {\n for (let i = 0; i < this.errorRules.length; i++) {\n let rule = this.errorRules[i];\n if (rule.name === name) {\n this.errorRules.splice(i, 1);\n }\n }\n }\n // Show error message to the input element\n showMessage(errorRule) {\n this.infoElement.style.display = 'block';\n this.infoElement.innerHTML = errorRule.message;\n this.checkRequired(errorRule.name);\n }\n // Hide error message based on input name\n hideMessage(name) {\n if (this.infoElement) {\n this.infoElement.style.display = 'none';\n this.removeErrorRules(name);\n this.inputElement.classList.add(this.validClass);\n this.inputElement.classList.remove(this.errorClass);\n this.inputElement.setAttribute('aria-invalid', 'false');\n }\n }\n // Check whether the input element have required rule and its value is not empty\n checkRequired(name) {\n if (!this.rules[name][this.required] && !this.inputElement.value.length && !isNullOrUndefined(this.infoElement)) {\n this.infoElement.innerHTML = this.inputElement.value;\n this.infoElement.setAttribute('aria-invalid', 'false');\n this.hideMessage(name);\n }\n }\n // Return boolean result if the input have chekcable or submit types\n static isCheckable(input) {\n let inputType = input.getAttribute('type');\n return inputType && (inputType === 'checkbox' || inputType === 'radio' || inputType === 'submit');\n }\n};\n// List of function to validate the rules\nFormValidator.checkValidator = {\n required: (option) => {\n return !isNaN(Date.parse(option.value)) ? !isNaN(new Date(option.value).getTime()) : option.value.toString().length > 0;\n },\n email: (option) => {\n return regex.EMAIL.test(option.value);\n },\n url: (option) => {\n return regex.URL.test(option.value);\n },\n dateIso: (option) => {\n return regex.DATE_ISO.test(option.value);\n },\n tel: (option) => {\n return regex.PHONE.test(option.value);\n },\n creditcard: (option) => {\n return regex.CREDITCARD.test(option.value);\n },\n number: (option) => {\n return !isNaN(Number(option.value)) && option.value.indexOf(' ') === -1;\n },\n digits: (option) => {\n return regex.DIGITS.test(option.value);\n },\n maxLength: (option) => {\n return option.value.length <= option.param;\n },\n minLength: (option) => {\n return option.value.length >= option.param;\n },\n rangeLength: (option) => {\n let param = option.param;\n return option.value.length >= param[0] && option.value.length <= param[1];\n },\n range: (option) => {\n let param = option.param;\n return !isNaN(Number(option.value)) && Number(option.value) >= param[0] && Number(option.value) <= param[1];\n },\n date: (option) => {\n return !isNaN(new Date(option.value).getTime());\n },\n max: (option) => {\n if (!isNaN(Number(option.value))) {\n // Maximum rule validation for number\n return +option.value <= option.param;\n }\n // Maximum rule validation for date\n return new Date(option.value).getTime() <= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n },\n min: (option) => {\n if (!isNaN(Number(option.value))) {\n // Minimum rule validation for number\n return +option.value >= option.param;\n }\n else if ((option.value).indexOf(',') !== -1) {\n let uNum = (option.value).replace(/,/g, '');\n return parseFloat(uNum) >= option.param;\n }\n else {\n // Minimum rule validation for date\n return new Date(option.value).getTime() >= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n }\n },\n regex: (option) => {\n return new RegExp(option.param).test(option.value);\n },\n equalTo: (option) => {\n let compareTo = option.formElement.querySelector('#' + option.param);\n option.param = compareTo.value;\n return option.param === option.value;\n },\n};\n__decorate$3([\n Property('')\n], FormValidator.prototype, \"locale\", void 0);\n__decorate$3([\n Property('e-hidden')\n], FormValidator.prototype, \"ignore\", void 0);\n__decorate$3([\n Property()\n], FormValidator.prototype, \"rules\", void 0);\n__decorate$3([\n Property('e-error')\n], FormValidator.prototype, \"errorClass\", void 0);\n__decorate$3([\n Property('e-valid')\n], FormValidator.prototype, \"validClass\", void 0);\n__decorate$3([\n Property('label')\n], FormValidator.prototype, \"errorElement\", void 0);\n__decorate$3([\n Property('div')\n], FormValidator.prototype, \"errorContainer\", void 0);\n__decorate$3([\n Property(ErrorOption.Label)\n], FormValidator.prototype, \"errorOption\", void 0);\n__decorate$3([\n Event()\n], FormValidator.prototype, \"focusout\", void 0);\n__decorate$3([\n Event()\n], FormValidator.prototype, \"keyup\", void 0);\n__decorate$3([\n Event()\n], FormValidator.prototype, \"click\", void 0);\n__decorate$3([\n Event()\n], FormValidator.prototype, \"change\", void 0);\n__decorate$3([\n Event()\n], FormValidator.prototype, \"submit\", void 0);\n__decorate$3([\n Event()\n], FormValidator.prototype, \"validationBegin\", void 0);\n__decorate$3([\n Event()\n], FormValidator.prototype, \"validationComplete\", void 0);\n__decorate$3([\n Event()\n], FormValidator.prototype, \"customPlacement\", void 0);\nFormValidator = FormValidator_1 = __decorate$3([\n NotifyPropertyChanges\n], FormValidator);\n\n/**\n * Input box Component\n */\n\nvar __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst CONTROL_WRAPPER = 'e-upload e-control-wrapper';\nconst INPUT_WRAPPER = 'e-file-select';\nconst DROP_AREA = 'e-file-drop';\nconst DROP_WRAPPER = 'e-file-select-wrap';\nconst LIST_PARENT = 'e-upload-files';\nconst FILE = 'e-upload-file-list';\nconst STATUS = 'e-file-status';\nconst ACTION_BUTTONS = 'e-upload-actions';\nconst UPLOAD_BUTTONS = 'e-file-upload-btn e-css e-btn e-flat e-primary';\nconst CLEAR_BUTTONS = 'e-file-clear-btn e-css e-btn e-flat';\nconst FILE_NAME = 'e-file-name';\nconst FILE_TYPE = 'e-file-type';\nconst FILE_SIZE = 'e-file-size';\nconst REMOVE_ICON = 'e-file-remove-btn';\nconst DELETE_ICON = 'e-file-delete-btn';\nconst SPINNER_PANE = 'e-spinner-pane';\nconst ABORT_ICON = 'e-file-abort-btn';\nconst RETRY_ICON = 'e-file-reload-btn';\nconst DRAG_HOVER = 'e-upload-drag-hover';\nconst PROGRESS_WRAPPER = 'e-upload-progress-wrap';\nconst PROGRESSBAR = 'e-upload-progress-bar';\nconst PROGRESSBAR_TEXT = 'e-progress-bar-text';\nconst UPLOAD_INPROGRESS = 'e-upload-progress';\nconst UPLOAD_SUCCESS = 'e-upload-success';\nconst UPLOAD_FAILED = 'e-upload-fails';\nconst TEXT_CONTAINER = 'e-file-container';\nconst VALIDATION_FAILS = 'e-validation-fails';\nconst RTL = 'e-rtl';\nconst DISABLED = 'e-disabled';\nconst RTL_CONTAINER = 'e-rtl-container';\nconst ICON_FOCUSED = 'e-clear-icon-focus';\nconst PROGRESS_INNER_WRAPPER = 'e-progress-inner-wrap';\nconst PAUSE_UPLOAD = 'e-file-pause-btn';\nconst RESUME_UPLOAD = 'e-file-play-btn';\nconst RESTRICT_RETRY = 'e-restrict-retry';\nconst wrapperAttr$1 = ['title', 'style', 'class'];\nconst FORM_UPLOAD = 'e-form-upload';\nconst HIDDEN_INPUT = 'e-hidden-file-input';\nconst INVALID_FILE = 'e-file-invalid';\nconst INFORMATION = 'e-file-information';\nclass FilesProp extends ChildProperty {\n}\n__decorate$4([\n Property('')\n], FilesProp.prototype, \"name\", void 0);\n__decorate$4([\n Property(null)\n], FilesProp.prototype, \"size\", void 0);\n__decorate$4([\n Property('')\n], FilesProp.prototype, \"type\", void 0);\nclass ButtonsProps extends ChildProperty {\n}\n__decorate$4([\n Property('Browse...')\n], ButtonsProps.prototype, \"browse\", void 0);\n__decorate$4([\n Property('Upload')\n], ButtonsProps.prototype, \"upload\", void 0);\n__decorate$4([\n Property('Clear')\n], ButtonsProps.prototype, \"clear\", void 0);\nclass AsyncSettings extends ChildProperty {\n}\n__decorate$4([\n Property('')\n], AsyncSettings.prototype, \"saveUrl\", void 0);\n__decorate$4([\n Property('')\n], AsyncSettings.prototype, \"removeUrl\", void 0);\n__decorate$4([\n Property(0)\n], AsyncSettings.prototype, \"chunkSize\", void 0);\n__decorate$4([\n Property(3)\n], AsyncSettings.prototype, \"retryCount\", void 0);\n__decorate$4([\n Property(500)\n], AsyncSettings.prototype, \"retryAfterDelay\", void 0);\n/**\n * The uploader component allows to upload images, documents, and other files from local to server.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nlet Uploader = class Uploader extends Component {\n /**\n * Triggers when change the Uploader value.\n */\n constructor(options, element) {\n super(options, element);\n this.initialAttr = { accept: null, multiple: false, disabled: false };\n this.uploadedFilesData = [];\n this.base64String = [];\n this.isForm = false;\n this.allTypes = false;\n this.pausedData = [];\n this.uploadMetaData = [];\n this.tabIndex = '0';\n this.btnTabIndex = '0';\n this.disableKeyboardNavigation = false;\n this.count = -1;\n this.actionCompleteCount = 0;\n this.flag = true;\n this.selectedFiles = [];\n this.uploaderName = 'UploadFiles';\n this.fileStreams = [];\n this.newFileRef = 0;\n this.isFirstFileOnSelection = false;\n /**\n * Get the file item(li) which are shown in file list.\n * @private\n */\n this.fileList = [];\n /**\n * Get the data of files which are shown in file list.\n * @private\n */\n this.filesData = [];\n this.uploaderOptions = options;\n }\n /**\n * Calls internally if any of the property value is changed.\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'allowedExtensions':\n this.setExtensions(this.allowedExtensions);\n this.clearAll();\n break;\n case 'enabled':\n this.setControlStatus();\n break;\n case 'multiple':\n this.setMultipleSelection();\n break;\n case 'enableRtl':\n this.setRTL();\n this.reRenderFileList();\n break;\n case 'buttons':\n this.buttons.browse = isNullOrUndefined(this.buttons.browse) ? '' : this.buttons.browse;\n this.buttons.clear = isNullOrUndefined(this.buttons.clear) ? '' : this.buttons.clear;\n this.buttons.upload = isNullOrUndefined(this.buttons.upload) ? '' : this.buttons.upload;\n this.renderButtonTemplates();\n break;\n case 'dropArea':\n this.unBindDropEvents();\n this.updateDropArea();\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.checkHTMLAttributes(true);\n break;\n case 'files':\n this.renderPreLoadFiles();\n break;\n case 'directoryUpload':\n this.updateDirectoryAttributes();\n break;\n case 'template':\n if (!this.isServerBlazor) {\n this.clearAll();\n }\n break;\n case 'minFileSize':\n case 'maxFileSize':\n case 'autoUpload':\n this.clearAll();\n break;\n case 'sequentialUpload':\n this.clearAll();\n break;\n case 'locale':\n this.l10n.setLocale(this.locale);\n this.setLocalizedTexts();\n this.preLocaleObj = getValue('currentLocale', this.l10n);\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n }\n }\n }\n setLocalizedTexts() {\n if (isNullOrUndefined(this.template)) {\n if (typeof (this.buttons.browse) === 'string') {\n this.browseButton.innerText = (this.buttons.browse === 'Browse...') ?\n this.localizedTexts('Browse') : this.buttons.browse;\n this.browseButton.setAttribute('title', this.browseButton.innerText);\n if (this.uploadWrapper && !isNullOrUndefined(this.uploadWrapper.querySelector('.' + DROP_AREA))) {\n this.uploadWrapper.querySelector('.' + DROP_AREA).innerHTML = this.localizedTexts('dropFilesHint');\n }\n }\n this.updateFileList();\n }\n }\n getKeyValue(val) {\n let keyValue;\n for (let key of Object.keys(this.preLocaleObj)) {\n if (this.preLocaleObj[key] === val) {\n keyValue = key;\n }\n }\n return keyValue;\n }\n updateFileList() {\n let element;\n /* istanbul ignore next */\n if (this.fileList.length > 0 && !isNullOrUndefined(this.uploadWrapper.querySelector('.' + LIST_PARENT))) {\n for (let i = 0; i < this.fileList.length; i++) {\n element = this.fileList[i].querySelector('.e-file-status');\n element.innerHTML = this.localizedTexts(this.getKeyValue(this.filesData[i].status));\n this.filesData[i].status = this.localizedTexts(this.getKeyValue(this.filesData[i].status));\n if (this.fileList[i].classList.contains(UPLOAD_SUCCESS)) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('delete'));\n }\n if (this.fileList[i].querySelector('.e-file-play-btn')) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('resume'));\n }\n if (this.fileList[i].querySelector('.e-file-remove-btn')) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('remove'));\n }\n if (this.fileList[i].querySelector('.e-file-reload-btn')) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('retry'));\n }\n if (!this.autoUpload) {\n this.uploadButton.innerText = (this.buttons.upload === 'Upload') ?\n this.localizedTexts('Upload') : this.buttons.upload;\n this.uploadButton.setAttribute('title', this.localizedTexts('Upload'));\n this.clearButton.innerText = (this.buttons.clear === 'Clear') ?\n this.localizedTexts('Clear') : this.buttons.clear;\n this.clearButton.setAttribute('title', this.localizedTexts('Clear'));\n }\n }\n }\n }\n reRenderFileList() {\n if (this.listParent) {\n detach(this.listParent);\n this.listParent = null;\n this.fileList = [];\n this.createFileList(this.filesData);\n if (this.actionButtons) {\n this.removeActionButtons();\n this.renderActionButtons();\n this.checkActionButtonStatus();\n }\n }\n }\n preRender() {\n this.localeText = { Browse: 'Browse...', Clear: 'Clear', Upload: 'Upload',\n dropFilesHint: 'Or drop files here', invalidMaxFileSize: 'File size is too large',\n invalidMinFileSize: 'File size is too small', invalidFileType: 'File type is not allowed',\n uploadFailedMessage: 'File failed to upload', uploadSuccessMessage: 'File uploaded successfully',\n removedSuccessMessage: 'File removed successfully', removedFailedMessage: 'Unable to remove file', inProgress: 'Uploading',\n readyToUploadMessage: 'Ready to upload', abort: 'Abort', remove: 'Remove', cancel: 'Cancel', delete: 'Delete file',\n pauseUpload: 'File upload paused', pause: 'Pause', resume: 'Resume', retry: 'Retry',\n fileUploadCancel: 'File upload canceled', invalidFileSelection: 'Invalid files selected', totalFiles: 'Total files',\n size: 'Size'\n };\n this.l10n = new L10n('uploader', this.localeText, this.locale);\n this.preLocaleObj = getValue('currentLocale', this.l10n);\n this.isServerBlazor = (isBlazor() && this.isServerRendered) ? true : false;\n this.isBlazorTemplate = this.isServerBlazor && this.template !== '' && !isNullOrUndefined(this.template) ? true : false;\n this.isBlazorSaveUrl = (this.isServerRendered &&\n (this.asyncSettings.saveUrl === '' || isNullOrUndefined(this.asyncSettings.saveUrl))) ? true : false;\n if (this.isBlazorSaveUrl && this.sequentialUpload) {\n this.sequentialUpload = false;\n }\n if (!this.isBlazorSaveUrl) {\n this.formRendered();\n }\n if (!this.isServerBlazor) {\n this.updateHTMLAttrToElement();\n this.checkHTMLAttributes(false);\n // tslint:disable-next-line\n let ejInstance = getValue('ej2_instances', this.element);\n /* istanbul ignore next */\n if (this.element.tagName === 'EJS-UPLOADER') {\n let inputElement = this.createElement('input', { attrs: { type: 'file' } });\n let index = 0;\n for (index; index < this.element.attributes.length; index++) {\n inputElement.setAttribute(this.element.attributes[index].nodeName, this.element.attributes[index].nodeValue);\n inputElement.innerHTML = this.element.innerHTML;\n }\n if (!inputElement.hasAttribute('name')) {\n inputElement.setAttribute('name', 'UploadFiles');\n }\n this.element.appendChild(inputElement);\n this.element = inputElement;\n setValue('ej2_instances', ejInstance, this.element);\n }\n /* istanbul ignore next */\n if (ejInstance[0].isPureReactComponent) {\n if (!isNullOrUndefined(ejInstance[0].props.name)) {\n this.element.setAttribute('name', ejInstance[0].props.name);\n }\n else if (!isNullOrUndefined(ejInstance[0].props.id) && isNullOrUndefined(ejInstance[0].props.name)) {\n this.element.setAttribute('name', ejInstance[0].props.id);\n }\n else {\n this.element.setAttribute('name', 'UploadFiles');\n }\n }\n if (isNullOrUndefined(this.element.getAttribute('name'))) {\n this.element.setAttribute('name', this.element.getAttribute('id'));\n }\n if (!this.element.hasAttribute('type')) {\n this.element.setAttribute('type', 'file');\n }\n this.updateDirectoryAttributes();\n }\n this.keyConfigs = {\n enter: 'enter'\n };\n if (this.element.hasAttribute('tabindex')) {\n this.tabIndex = this.element.getAttribute('tabindex');\n }\n this.browserName = Browser.info.name;\n this.uploaderName = this.element.getAttribute('name');\n }\n formRendered() {\n let parentEle = closest(this.element, 'form');\n if (!isNullOrUndefined(parentEle)) {\n for (; parentEle && parentEle !== document.documentElement; parentEle = parentEle.parentElement) {\n if (parentEle.tagName === 'FORM') {\n this.isForm = true;\n this.formElement = parentEle;\n parentEle.setAttribute('enctype', 'multipart/form-data');\n parentEle.setAttribute('encoding', 'multipart/form-data');\n }\n }\n }\n }\n getPersistData() {\n return this.addOnPersist(['filesData']);\n }\n /**\n * Return the module name of the component.\n */\n getModuleName() {\n return 'uploader';\n }\n updateDirectoryAttributes() {\n if (this.directoryUpload) {\n this.element.setAttribute('directory', 'true');\n this.element.setAttribute('webkitdirectory', 'true');\n }\n else {\n this.element.removeAttribute('directory');\n this.element.removeAttribute('webkitdirectory');\n }\n }\n /**\n * To Initialize the control rendering\n * @private\n */\n render() {\n if (!this.isServerBlazor) {\n this.renderBrowseButton();\n this.initializeUpload();\n this.updateHTMLAttrToWrapper();\n this.wireEvents();\n this.setMultipleSelection();\n this.setExtensions(this.allowedExtensions);\n this.setRTL();\n this.renderPreLoadFiles();\n this.setControlStatus();\n this.setCSSClass();\n }\n else {\n this.dropAreaWrapper = closest(this.element, '.' + DROP_WRAPPER);\n this.uploadWrapper = closest(this.element, '.e-upload.e-control-wrapper');\n this.browseButton = this.dropAreaWrapper.querySelector('button.e-upload-browse-btn');\n this.setDropArea();\n this.renderPreLoadFiles();\n this.wireEvents();\n }\n this.renderComplete();\n }\n renderBrowseButton() {\n this.browseButton = this.createElement('button', { className: 'e-css e-btn', attrs: { 'type': 'button' } });\n this.browseButton.setAttribute('tabindex', this.tabIndex);\n if (typeof (this.buttons.browse) === 'string') {\n this.browseButton.textContent = (this.buttons.browse === 'Browse...') ?\n this.localizedTexts('Browse') : this.buttons.browse;\n this.browseButton.setAttribute('title', this.browseButton.innerText);\n }\n else {\n this.browseButton.appendChild(this.buttons.browse);\n }\n this.element.setAttribute('aria-label', 'Uploader');\n }\n renderActionButtons() {\n this.element.setAttribute('tabindex', '-1');\n if (!(this.isBlazorSaveUrl || this.isBlazorTemplate)) {\n this.actionButtons = this.createElement('div', { className: ACTION_BUTTONS });\n this.uploadButton = this.createElement('button', { className: UPLOAD_BUTTONS,\n attrs: { 'type': 'button', 'tabindex': this.btnTabIndex } });\n this.clearButton = this.createElement('button', { className: CLEAR_BUTTONS,\n attrs: { 'type': 'button', 'tabindex': this.btnTabIndex } });\n this.actionButtons.appendChild(this.clearButton);\n this.actionButtons.appendChild(this.uploadButton);\n this.renderButtonTemplates();\n this.uploadWrapper.appendChild(this.actionButtons);\n this.browseButton.blur();\n this.uploadButton.focus();\n this.wireActionButtonEvents();\n }\n }\n /* istanbul ignore next */\n serverActionButtonsEventBind(element) {\n if (element && !this.isForm) {\n this.browseButton.blur();\n this.actionButtons = element;\n this.uploadButton = this.actionButtons.querySelector('.e-file-upload-btn');\n this.clearButton = this.actionButtons.querySelector('.e-file-clear-btn');\n this.uploadButton.focus();\n this.unwireActionButtonEvents();\n this.wireActionButtonEvents();\n this.checkActionButtonStatus();\n }\n }\n /* istanbul ignore next */\n serverUlElement(element) {\n if (element) {\n if (this.isBlazorSaveUrl || this.isBlazorTemplate) {\n this.listParent = element;\n this.fileList = [].slice.call(this.listParent.querySelectorAll('li'));\n this.serverRemoveIconBindEvent();\n if (!this.isForm) {\n this.checkAutoUpload(this.filesData);\n }\n }\n }\n }\n wireActionButtonEvents() {\n EventHandler.add(this.uploadButton, 'click', this.uploadButtonClick, this);\n EventHandler.add(this.clearButton, 'click', this.clearButtonClick, this);\n }\n unwireActionButtonEvents() {\n EventHandler.remove(this.uploadButton, 'click', this.uploadButtonClick);\n EventHandler.remove(this.clearButton, 'click', this.clearButtonClick);\n }\n removeActionButtons() {\n if (this.actionButtons) {\n this.unwireActionButtonEvents();\n if (!(this.isBlazorSaveUrl || this.isBlazorTemplate)) {\n detach(this.actionButtons);\n }\n this.actionButtons = null;\n }\n }\n renderButtonTemplates() {\n if (typeof (this.buttons.browse) === 'string') {\n this.browseButton.textContent = (this.buttons.browse === 'Browse...') ?\n this.localizedTexts('Browse') : this.buttons.browse;\n this.browseButton.setAttribute('title', this.browseButton.textContent);\n }\n else {\n this.browseButton.innerHTML = '';\n this.browseButton.appendChild(this.buttons.browse);\n }\n if (this.uploadButton) {\n let uploadText;\n uploadText = isNullOrUndefined(this.buttons.upload) ? 'Upload' : this.buttons.upload;\n this.buttons.upload = uploadText;\n if (typeof (this.buttons.upload) === 'string') {\n this.uploadButton.textContent = (this.buttons.upload === 'Upload') ?\n this.localizedTexts('Upload') : this.buttons.upload;\n this.uploadButton.setAttribute('title', this.uploadButton.textContent);\n }\n else {\n this.uploadButton.innerHTML = '';\n this.uploadButton.appendChild(this.buttons.upload);\n }\n }\n if (this.clearButton) {\n let clearText;\n clearText = isNullOrUndefined(this.buttons.clear) ? 'Clear' : this.buttons.clear;\n this.buttons.clear = clearText;\n if (typeof (this.buttons.clear) === 'string') {\n this.clearButton.textContent = (this.buttons.clear === 'Clear') ?\n this.localizedTexts('Clear') : this.buttons.clear;\n this.clearButton.setAttribute('title', this.clearButton.textContent);\n }\n else {\n this.clearButton.innerHTML = '';\n this.clearButton.appendChild(this.buttons.clear);\n }\n }\n }\n initializeUpload() {\n this.element.setAttribute('tabindex', '-1');\n let inputWrapper = this.createElement('span', { className: INPUT_WRAPPER });\n this.element.parentElement.insertBefore(inputWrapper, this.element);\n this.dropAreaWrapper = this.createElement('div', { className: DROP_WRAPPER });\n this.element.parentElement.insertBefore(this.dropAreaWrapper, this.element);\n inputWrapper.appendChild(this.element);\n this.dropAreaWrapper.appendChild(this.browseButton);\n this.dropAreaWrapper.appendChild(inputWrapper);\n this.uploadWrapper = this.createElement('div', { className: CONTROL_WRAPPER });\n this.dropAreaWrapper.parentElement.insertBefore(this.uploadWrapper, this.dropAreaWrapper);\n this.uploadWrapper.appendChild(this.dropAreaWrapper);\n this.setDropArea();\n }\n renderPreLoadFiles() {\n if (this.files.length) {\n if (this.enablePersistence && this.filesData.length) {\n this.createFileList(this.filesData);\n return;\n }\n if (isNullOrUndefined(this.files[0].size)) {\n return;\n }\n let files = [].slice.call(this.files);\n let filesData = [];\n if (!this.multiple) {\n this.clearData();\n files = [files[0]];\n }\n for (let data of files) {\n let fileData = {\n name: data.name + '.' + data.type.split('.')[data.type.split('.').length - 1],\n rawFile: '',\n size: data.size,\n status: this.localizedTexts('uploadSuccessMessage'),\n type: data.type,\n validationMessages: { minSize: '', maxSize: '' },\n statusCode: '2'\n };\n filesData.push(fileData);\n this.filesData.push(fileData);\n }\n this.createFileList(filesData);\n if (!this.autoUpload && this.listParent && !this.actionButtons && (!this.isForm || this.allowUpload()) && this.showFileList) {\n this.renderActionButtons();\n }\n this.checkActionButtonStatus();\n if (this.sequentialUpload) {\n this.count = this.filesData.length - 1;\n }\n }\n }\n checkActionButtonStatus() {\n if (this.actionButtons) {\n let length = this.uploadWrapper.querySelectorAll('.' + VALIDATION_FAILS).length +\n this.uploadWrapper.querySelectorAll('.e-upload-fails:not(.e-upload-progress)').length +\n this.uploadWrapper.querySelectorAll('span.' + UPLOAD_SUCCESS).length +\n this.uploadWrapper.querySelectorAll('span.' + UPLOAD_INPROGRESS).length;\n if (length > 0 && length === this.uploadWrapper.querySelectorAll('li').length) {\n this.uploadButton.setAttribute('disabled', 'disabled');\n }\n else {\n this.uploadButton.removeAttribute('disabled');\n }\n }\n }\n setDropArea() {\n let dropTextArea = this.dropAreaWrapper.querySelector('.e-file-drop');\n if (this.dropArea) {\n this.dropZoneElement = (typeof (this.dropArea) !== 'string') ? this.dropArea :\n document.querySelector(this.dropArea);\n let element = this.element;\n let enableDropText = false;\n while (element.parentNode) {\n element = element.parentNode;\n if (element === this.dropZoneElement) {\n enableDropText = true;\n if (!dropTextArea) {\n this.createDropTextHint();\n }\n else if (!this.isServerBlazor) {\n dropTextArea.innerHTML = this.localizedTexts('dropFilesHint');\n }\n }\n }\n if (!enableDropText && dropTextArea) {\n dropTextArea.remove();\n }\n }\n else if (!isNullOrUndefined(this.uploaderOptions) && this.uploaderOptions.dropArea === undefined) {\n this.createDropTextHint();\n this.dropZoneElement = this.uploadWrapper;\n this.setProperties({ dropArea: this.uploadWrapper }, true);\n }\n this.bindDropEvents();\n }\n updateDropArea() {\n if (this.dropArea) {\n this.setDropArea();\n }\n else {\n this.dropZoneElement = null;\n let dropTextArea = this.dropAreaWrapper.querySelector('.e-file-drop');\n if (dropTextArea) {\n dropTextArea.remove();\n }\n }\n }\n createDropTextHint() {\n if (!this.isServerBlazor) {\n let fileDropArea = this.createElement('span', { className: DROP_AREA });\n fileDropArea.innerHTML = this.localizedTexts('dropFilesHint');\n this.dropAreaWrapper.appendChild(fileDropArea);\n }\n }\n updateHTMLAttrToElement() {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (let pro of Object.keys(this.htmlAttributes)) {\n if (wrapperAttr$1.indexOf(pro) < 0) {\n this.element.setAttribute(pro, this.htmlAttributes[pro]);\n }\n }\n }\n }\n updateHTMLAttrToWrapper() {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (let pro of Object.keys(this.htmlAttributes)) {\n if (wrapperAttr$1.indexOf(pro) > -1) {\n if (pro === 'class') {\n let updatedClassValues = (this.htmlAttributes[pro].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.uploadWrapper], updatedClassValues.split(' '));\n }\n }\n else if (pro === 'style') {\n let uploadStyle = this.uploadWrapper.getAttribute(pro);\n uploadStyle = !isNullOrUndefined(uploadStyle) ? (uploadStyle + this.htmlAttributes[pro]) :\n this.htmlAttributes[pro];\n this.uploadWrapper.setAttribute(pro, uploadStyle);\n }\n else {\n this.uploadWrapper.setAttribute(pro, this.htmlAttributes[pro]);\n }\n }\n }\n }\n }\n setMultipleSelection() {\n if (this.multiple && !this.element.hasAttribute('multiple')) {\n let newAttr = document.createAttribute('multiple');\n newAttr.value = 'multiple';\n this.element.setAttributeNode(newAttr);\n }\n else if (!this.multiple) {\n this.element.removeAttribute('multiple');\n }\n }\n checkAutoUpload(fileData) {\n if (this.autoUpload) {\n if (this.sequentialUpload) {\n /* istanbul ignore next */\n this.sequenceUpload(fileData);\n }\n else {\n this.upload(fileData);\n }\n this.removeActionButtons();\n }\n else if (!this.actionButtons) {\n this.renderActionButtons();\n }\n this.checkActionButtonStatus();\n }\n sequenceUpload(fileData) {\n if (this.filesData.length - fileData.length === 0 ||\n this.filesData[(this.filesData.length - fileData.length - 1)].statusCode !== '1') {\n ++this.count;\n let isFileListCreated = this.showFileList ? false : true;\n if (typeof this.filesData[this.count] === 'object') {\n this.isFirstFileOnSelection = false;\n this.upload(this.filesData[this.count], isFileListCreated);\n if (this.filesData[this.count].statusCode === '0') {\n this.sequenceUpload(fileData);\n }\n }\n else {\n --this.count;\n }\n }\n }\n setCSSClass(oldCSSClass) {\n let updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(this.cssClass) && updatedCssClassValue !== '') {\n addClass([this.uploadWrapper], updatedCssClassValue.split(updatedCssClassValue.indexOf(',') > -1 ? ',' : ' '));\n }\n let updatedOldCssClass = oldCSSClass;\n if (!isNullOrUndefined(oldCSSClass)) {\n updatedOldCssClass = (oldCSSClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(oldCSSClass) && updatedOldCssClass !== '') {\n removeClass([this.uploadWrapper], updatedOldCssClass.split(' '));\n }\n }\n wireEvents() {\n EventHandler.add(this.browseButton, 'click', this.browseButtonClick, this);\n EventHandler.add(this.element, 'change', this.onSelectFiles, this);\n EventHandler.add(document, 'click', this.removeFocus, this);\n this.keyboardModule = new KeyboardEvents(this.uploadWrapper, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown',\n });\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.resetForm, this);\n }\n }\n unWireEvents() {\n EventHandler.remove(this.browseButton, 'click', this.browseButtonClick);\n EventHandler.remove(this.element, 'change', this.onSelectFiles);\n EventHandler.remove(document, 'click', this.removeFocus);\n if (this.isForm) {\n EventHandler.remove(this.formElement, 'reset', this.resetForm);\n }\n this.keyboardModule.destroy();\n }\n resetForm() {\n this.clearAll();\n }\n keyActionHandler(e) {\n let targetElement = e.target;\n switch (e.action) {\n case 'enter':\n if (e.target === this.clearButton) {\n this.clearButtonClick();\n }\n else if (e.target === this.uploadButton) {\n this.uploadButtonClick();\n }\n else if (e.target === this.browseButton) {\n this.browseButtonClick();\n }\n else if (targetElement.classList.contains(PAUSE_UPLOAD)) {\n let metaData = this.getCurrentMetaData(null, e);\n metaData.file.statusCode = '4';\n metaData.file.status = this.localizedTexts('pauseUpload');\n this.abortUpload(metaData, false);\n }\n else if (targetElement.classList.contains(RESUME_UPLOAD)) {\n this.resumeUpload(this.getCurrentMetaData(null, e), e);\n }\n else if (targetElement.classList.contains(RETRY_ICON)) {\n let metaData = this.getCurrentMetaData(null, e);\n if (!isNullOrUndefined(metaData)) {\n metaData.file.statusCode = '1';\n metaData.file.status = this.localizedTexts('readyToUploadMessage');\n this.chunkUpload(metaData.file);\n }\n else {\n let target = e.target.parentElement;\n let fileData = this.filesData[this.fileList.indexOf(target)];\n this.retry(fileData);\n }\n }\n else {\n this.removeFiles(e);\n if (!targetElement.classList.contains(ABORT_ICON)) {\n this.browseButton.focus();\n }\n }\n e.preventDefault();\n e.stopPropagation();\n break;\n }\n }\n getCurrentMetaData(fileInfo, e) {\n let fileData;\n let targetMetaData;\n if (isNullOrUndefined(fileInfo)) {\n let target = e.target.parentElement;\n fileData = this.filesData[this.fileList.indexOf(target)];\n }\n else {\n fileData = fileInfo;\n }\n for (let i = 0; i < this.uploadMetaData.length; i++) {\n if (this.uploadMetaData[i].file.name === fileData.name) {\n targetMetaData = this.uploadMetaData[i];\n }\n }\n return targetMetaData;\n }\n removeFocus() {\n if (this.uploadWrapper && this.listParent && this.listParent.querySelector('.' + ICON_FOCUSED)) {\n document.activeElement.blur();\n this.listParent.querySelector('.' + ICON_FOCUSED).classList.remove(ICON_FOCUSED);\n }\n }\n browseButtonClick() {\n this.element.click();\n }\n uploadButtonClick() {\n if (this.sequentialUpload) {\n this.sequenceUpload(this.filesData);\n }\n else {\n this.upload(this.filesData);\n }\n }\n clearButtonClick() {\n this.clearAll();\n /* istanbul ignore next */\n if (this.sequentialUpload) {\n this.count = -1;\n }\n this.actionCompleteCount = 0;\n }\n bindDropEvents() {\n if (this.dropZoneElement) {\n EventHandler.add(this.dropZoneElement, 'drop', this.dropElement, this);\n EventHandler.add(this.dropZoneElement, 'dragover', this.dragHover, this);\n EventHandler.add(this.dropZoneElement, 'dragleave', this.onDragLeave, this);\n EventHandler.add(this.dropZoneElement, 'paste', this.onPasteFile, this);\n }\n }\n unBindDropEvents() {\n if (this.dropZoneElement) {\n EventHandler.remove(this.dropZoneElement, 'drop', this.dropElement);\n EventHandler.remove(this.dropZoneElement, 'dragover', this.dragHover);\n EventHandler.remove(this.dropZoneElement, 'dragleave', this.onDragLeave);\n }\n }\n onDragLeave(e) {\n this.dropZoneElement.classList.remove(DRAG_HOVER);\n }\n dragHover(e) {\n if (!this.enabled) {\n return;\n }\n this.dropZoneElement.classList.add(DRAG_HOVER);\n if (this.dropEffect !== 'Default') {\n e.dataTransfer.dropEffect = this.dropEffect.toLowerCase();\n }\n e.preventDefault();\n e.stopPropagation();\n }\n /* istanbul ignore next */\n dropElement(e) {\n this.dropZoneElement.classList.remove(DRAG_HOVER);\n this.onSelectFiles(e);\n e.preventDefault();\n e.stopPropagation();\n }\n /* istanbul ignore next */\n onPasteFile(event) {\n let item = event.clipboardData.items;\n if (item.length !== 1) {\n return;\n }\n let pasteFile = [].slice.call(item)[0];\n if ((pasteFile.kind === 'file') && pasteFile.type.match('^image/')) {\n this.renderSelectedFiles(event, [pasteFile.getAsFile()], false, true);\n }\n }\n getSelectedFiles(index) {\n let data = [];\n let liElement = this.fileList[index];\n let allFiles = this.getFilesData();\n let nameElements = +liElement.getAttribute('data-files-count');\n let startIndex = 0;\n for (let i = 0; i < index; i++) {\n startIndex += (+this.fileList[i].getAttribute('data-files-count'));\n }\n for (let j = startIndex; j < (startIndex + nameElements); j++) {\n data.push(allFiles[j]);\n }\n return data;\n }\n removeFiles(args) {\n if (!this.enabled) {\n return;\n }\n let selectedElement = args.target.parentElement;\n if (this.isBlazorSaveUrl) {\n this.fileList = [].slice.call(this.uploadWrapper.querySelectorAll('li'));\n }\n let index = this.fileList.indexOf(selectedElement);\n let liElement = this.fileList[index];\n let formUpload = this.isFormUpload();\n let fileData = formUpload ? this.getSelectedFiles(index) : this.getFilesInArray(this.filesData[index]);\n if (isNullOrUndefined(fileData)) {\n return;\n }\n if (args.target.classList.contains(ABORT_ICON) && !formUpload) {\n fileData[0].statusCode = '5';\n if (!isNullOrUndefined(liElement)) {\n let spinnerTarget = liElement.querySelector('.' + ABORT_ICON);\n createSpinner({ target: spinnerTarget, width: '20px' });\n showSpinner(spinnerTarget);\n }\n if (this.sequentialUpload) {\n /* istanbul ignore next */\n this.uploadSequential();\n }\n if (!(liElement.classList.contains(RESTRICT_RETRY))) {\n this.checkActionComplete(true);\n }\n }\n else if (!closest(args.target, '.' + SPINNER_PANE)) {\n this.remove(fileData, false, false, true, args);\n }\n this.element.value = '';\n this.checkActionButtonStatus();\n }\n removeFilesData(file, customTemplate) {\n let index;\n if (customTemplate) {\n if (!this.showFileList) {\n index = this.filesData.indexOf(file);\n this.filesData.splice(index, 1);\n }\n return;\n }\n let selectedElement = this.getLiElement(file);\n if (isNullOrUndefined(selectedElement)) {\n return;\n }\n if (!this.isBlazorSaveUrl) {\n detach(selectedElement);\n }\n index = this.fileList.indexOf(selectedElement);\n this.fileList.splice(index, 1);\n this.filesData.splice(index, 1);\n if (!this.isBlazorSaveUrl) {\n if (this.fileList.length === 0 && !isNullOrUndefined(this.listParent)) {\n detach(this.listParent);\n this.listParent = null;\n this.removeActionButtons();\n }\n if (this.sequentialUpload) {\n /* istanbul ignore next */\n if (index <= this.count) {\n --this.count;\n }\n }\n }\n else {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('removeFileData', index);\n }\n }\n removeUploadedFile(file, eventArgs, removeDirectly, custom) {\n let selectedFiles = file;\n let ajax = new Ajax(this.asyncSettings.removeUrl, 'POST', true, null);\n ajax.emitError = false;\n let formData = new FormData();\n ajax.beforeSend = (e) => {\n eventArgs.currentRequest = ajax.httpRequest;\n if (isBlazor()) {\n if (this.currentRequestHeader) {\n this.updateCustomheader(ajax.httpRequest, this.currentRequestHeader);\n }\n if (this.customFormDatas) {\n this.updateFormData(formData, this.customFormDatas);\n }\n }\n if (!removeDirectly) {\n this.trigger('removing', eventArgs, (eventArgs) => {\n if (eventArgs.cancel) {\n e.cancel = true;\n }\n else {\n this.removingEventCallback(eventArgs, formData, selectedFiles, file);\n }\n });\n }\n else {\n this.removingEventCallback(eventArgs, formData, selectedFiles, file);\n }\n };\n if (this.isServerBlazor) {\n let name = this.element.getAttribute('name');\n if (!isNullOrUndefined(selectedFiles.rawFile) && selectedFiles.rawFile !== '') {\n formData.append(name, selectedFiles.rawFile, selectedFiles.name);\n }\n else {\n formData.append(name, selectedFiles.name);\n }\n }\n ajax.onLoad = (e) => { this.removeCompleted(e, selectedFiles, custom); return {}; };\n /* istanbul ignore next */\n ajax.onError = (e) => { this.removeFailed(e, selectedFiles, custom); return {}; };\n ajax.send(formData);\n }\n removingEventCallback(eventArgs, formData, selectedFiles, file) {\n /* istanbul ignore next */\n let name = this.element.getAttribute('name');\n let liElement = this.getLiElement(file);\n if (!isNullOrUndefined(liElement) && (!isNullOrUndefined(liElement.querySelector('.' + DELETE_ICON)) ||\n !isNullOrUndefined(liElement.querySelector('.' + REMOVE_ICON)))) {\n let spinnerTarget;\n spinnerTarget = liElement.querySelector('.' + DELETE_ICON) ? liElement.querySelector('.' + DELETE_ICON) :\n liElement.querySelector('.' + REMOVE_ICON);\n createSpinner({ target: spinnerTarget, width: '20px' });\n showSpinner(spinnerTarget);\n }\n if (!this.isServerBlazor) {\n if (eventArgs.postRawFile && !isNullOrUndefined(selectedFiles.rawFile) && selectedFiles.rawFile !== '') {\n formData.append(name, selectedFiles.rawFile, selectedFiles.name);\n }\n else {\n formData.append(name, selectedFiles.name);\n }\n this.updateFormData(formData, eventArgs.customFormData);\n }\n }\n /* istanbul ignore next */\n updateFormData(formData, customData) {\n if (customData.length > 0 && customData[0]) {\n for (let i = 0; i < customData.length; i++) {\n let data = customData[i];\n // tslint:disable-next-line\n let value = Object.keys(data).map(function (e) {\n return data[e];\n });\n formData.append(Object.keys(data)[0], value);\n }\n }\n }\n /* istanbul ignore next */\n updateCustomheader(request, currentRequest) {\n if (currentRequest.length > 0 && currentRequest[0]) {\n for (let i = 0; i < currentRequest.length; i++) {\n let data = currentRequest[i];\n // tslint:disable-next-line\n let value = Object.keys(data).map(function (e) {\n return data[e];\n });\n request.setRequestHeader(Object.keys(data)[0], value);\n }\n }\n }\n removeCompleted(e, files, customTemplate) {\n let response = e && e.currentTarget ? this.getResponse(e) : null;\n let args = {\n e, response: response, operation: 'remove', file: this.updateStatus(files, this.localizedTexts('removedSuccessMessage'), '2')\n };\n this.trigger('success', args);\n this.removeFilesData(files, customTemplate);\n let index = this.uploadedFilesData.indexOf(files);\n this.uploadedFilesData.splice(index, 1);\n this.trigger('change', { files: this.uploadedFilesData });\n }\n removeFailed(e, files, customTemplate) {\n let response = e && e.currentTarget ? this.getResponse(e) : null;\n let args = {\n e, response: response, operation: 'remove', file: this.updateStatus(files, this.localizedTexts('removedFailedMessage'), '0')\n };\n if (!customTemplate) {\n let index = this.filesData.indexOf(files);\n let rootElement = this.fileList[index];\n if (rootElement) {\n let statusElement = rootElement.querySelector('.' + STATUS);\n rootElement.classList.remove(UPLOAD_SUCCESS);\n statusElement.classList.remove(UPLOAD_SUCCESS);\n rootElement.classList.add(UPLOAD_FAILED);\n statusElement.classList.add(UPLOAD_FAILED);\n }\n this.checkActionButtonStatus();\n }\n this.trigger('failure', args);\n let liElement = this.getLiElement(files);\n /* istanbul ignore next */\n if (!isNullOrUndefined(liElement) && !isNullOrUndefined(liElement.querySelector('.' + DELETE_ICON))) {\n let spinnerTarget = liElement.querySelector('.' + DELETE_ICON);\n hideSpinner(spinnerTarget);\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n }\n /* istanbul ignore next */\n getFilesFromFolder(event) {\n this.filesEntries = [];\n let items;\n items = this.multiple ? event.dataTransfer.items : [event.dataTransfer.items[0]];\n let validDirectoryUpload = this.checkDirectoryUpload(items);\n if (!validDirectoryUpload) {\n return;\n }\n for (let i = 0; i < items.length; i++) {\n // tslint:disable-next-line\n let item = items[i].webkitGetAsEntry();\n if (item.isFile) {\n let files = [];\n // tslint:disable-next-line\n (item).file((fileObj) => {\n let path = item.fullPath;\n files.push({ 'path': path, 'file': fileObj });\n });\n this.renderSelectedFiles(event, files, true);\n }\n else if (item.isDirectory) {\n this.traverseFileTree(item, event);\n }\n }\n }\n /* istanbul ignore next */\n checkDirectoryUpload(items) {\n for (let i = 0; items && i < items.length; i++) {\n // tslint:disable-next-line\n let item = items[i].webkitGetAsEntry();\n if (item.isDirectory) {\n return true;\n }\n }\n return false;\n }\n // tslint:disable\n /* istanbul ignore next */\n traverseFileTree(item, event) {\n if (item.isFile) {\n this.filesEntries.push(item);\n }\n else if (item.isDirectory) {\n // tslint:disable-next-line\n let directoryReader = item.createReader();\n // tslint:disable-next-line\n this.readFileFromDirectory(directoryReader, event);\n }\n }\n // tslint:disable\n /* istanbul ignore next */\n readFileFromDirectory(directoryReader, event) {\n // tslint:disable-next-line\n directoryReader.readEntries((entries) => {\n for (let i = 0; i < entries.length; i++) {\n this.traverseFileTree(entries[i]);\n // tslint:disable-next-line\n }\n \n this.pushFilesEntries(event);\n if (entries.length) {\n this.readFileFromDirectory(directoryReader);\n }\n });\n }\n pushFilesEntries(event) {\n let files = [];\n for (let i = 0; i < this.filesEntries.length; i++) {\n // tslint:disable-next-line\n this.filesEntries[i].file((fileObj) => {\n if (this.filesEntries) {\n let path = this.filesEntries[i].fullPath;\n files.push({ 'path': path, 'file': fileObj });\n if (i === this.filesEntries.length - 1) {\n this.filesEntries = [];\n this.renderSelectedFiles(event, files, true);\n }\n }\n });\n }\n }\n // tslint:enable\n onSelectFiles(args) {\n if (!this.enabled) {\n return;\n }\n let targetFiles;\n /* istanbul ignore next */\n if (args.type === 'drop') {\n if (this.directoryUpload) {\n this.getFilesFromFolder(args);\n }\n else {\n let files = this.sortFilesList = args.dataTransfer.files;\n if (this.browserName !== 'msie' && this.browserName !== 'edge') {\n this.element.files = files;\n }\n targetFiles = this.multiple ? this.sortFileList(files) : [files[0]];\n this.renderSelectedFiles(args, targetFiles);\n }\n }\n else {\n targetFiles = [].slice.call(args.target.files);\n this.renderSelectedFiles(args, targetFiles);\n }\n }\n /* istanbul ignore next */\n getBase64(file) {\n return new Promise((resolve, reject) => {\n let fileReader = new FileReader();\n fileReader.readAsDataURL(file);\n fileReader.onload = () => resolve(fileReader.result);\n fileReader.onerror = (error) => reject(error);\n });\n }\n /* istanbul ignore next */\n /* tslint:ignore */\n renderSelectedFiles(args, \n // tslint:disable-next-line\n targetFiles, directory, paste) {\n this.base64String = [];\n // tslint:disable-next-line\n let eventArgs = {\n event: args,\n cancel: false,\n filesData: [],\n isModified: false,\n modifiedFilesData: [],\n progressInterval: '',\n isCanceled: false,\n currentRequest: null,\n customFormData: null\n };\n /* istanbul ignore next */\n if (targetFiles.length < 1) {\n eventArgs.isCanceled = true;\n this.trigger('selected', eventArgs);\n return;\n }\n this.flag = true;\n let fileData = [];\n if (!this.multiple) {\n this.clearData(true);\n targetFiles = [targetFiles[0]];\n }\n for (let i = 0; i < targetFiles.length; i++) {\n let file = directory ? targetFiles[i].file : targetFiles[i];\n this.updateInitialFileDetails(args, targetFiles, file, i, fileData, directory, paste);\n }\n eventArgs.filesData = fileData;\n if (this.allowedExtensions.indexOf('*') > -1) {\n this.allTypes = true;\n }\n if (!this.allTypes) {\n fileData = this.checkExtension(fileData);\n }\n this.trigger('selected', eventArgs, (eventArgs) => {\n this._internalRenderSelect(eventArgs, fileData);\n });\n }\n updateInitialFileDetails(args, \n // tslint:disable-next-line\n targetFiles, file, i, fileData, directory, paste) {\n let fileName = directory ? targetFiles[i].path.substring(1, targetFiles[i].path.length) : paste ?\n getUniqueID(file.name.substring(0, file.name.lastIndexOf('.'))) + '.' + this.getFileType(file.name) :\n this.directoryUpload ? targetFiles[i].webkitRelativePath : file.name;\n let fileDetails = {\n name: fileName,\n rawFile: file,\n size: file.size,\n status: this.localizedTexts('readyToUploadMessage'),\n type: this.getFileType(file.name),\n validationMessages: this.validatedFileSize(file.size),\n statusCode: '1',\n id: getUniqueID(file.name.substring(0, file.name.lastIndexOf('.'))) + '.' + this.getFileType(file.name)\n };\n /* istanbul ignore next */\n if (paste) {\n fileDetails.fileSource = 'paste';\n }\n fileDetails.status = fileDetails.validationMessages.minSize !== '' ? this.localizedTexts('invalidMinFileSize') :\n fileDetails.validationMessages.maxSize !== '' ? this.localizedTexts('invalidMaxFileSize') : fileDetails.status;\n if (fileDetails.validationMessages.minSize !== '' || fileDetails.validationMessages.maxSize !== '') {\n fileDetails.statusCode = '0';\n }\n fileData.push(fileDetails);\n }\n _internalRenderSelect(eventArgs, fileData) {\n if (!eventArgs.cancel) {\n /* istanbul ignore next */\n if (isBlazor()) {\n this.currentRequestHeader = eventArgs.currentRequest;\n this.customFormDatas = eventArgs.customFormData;\n }\n this.selectedFiles = fileData;\n this.btnTabIndex = this.disableKeyboardNavigation ? '-1' : '0';\n if (this.showFileList) {\n if (eventArgs.isModified && eventArgs.modifiedFilesData.length > 0) {\n for (let j = 0; j < eventArgs.modifiedFilesData.length; j++) {\n for (let k = 0; k < fileData.length; k++) {\n if (eventArgs.modifiedFilesData[j].id === fileData[k].id) {\n eventArgs.modifiedFilesData[j].rawFile = fileData[k].rawFile;\n }\n }\n }\n let dataFiles = this.allTypes ? eventArgs.modifiedFilesData :\n this.checkExtension(eventArgs.modifiedFilesData);\n this.updateSortedFileList(dataFiles);\n this.filesData = dataFiles;\n if (!this.isForm || this.allowUpload()) {\n this.checkAutoUpload(dataFiles);\n }\n }\n else {\n this.createFileList(fileData, true);\n if (!(this.isBlazorSaveUrl || this.isBlazorTemplate)) {\n this.filesData = this.filesData.concat(fileData);\n }\n if (!this.isForm || this.allowUpload()) {\n if (!(this.isBlazorSaveUrl || this.isBlazorTemplate)) {\n this.checkAutoUpload(fileData);\n }\n }\n }\n if (!isNullOrUndefined(eventArgs.progressInterval) && eventArgs.progressInterval !== '') {\n this.progressInterval = eventArgs.progressInterval;\n }\n }\n else {\n this.filesData = this.filesData.concat(fileData);\n if (this.isBlazorSaveUrl) {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('updateServerFileData', this.filesData, this.isForm);\n }\n if (this.autoUpload) {\n this.upload(this.filesData, true);\n }\n }\n this.raiseActionComplete();\n this.isFirstFileOnSelection = true;\n }\n }\n allowUpload() {\n let allowFormUpload = false;\n if (this.isForm && (!isNullOrUndefined(this.asyncSettings.saveUrl) && this.asyncSettings.saveUrl !== '')) {\n allowFormUpload = true;\n }\n return allowFormUpload;\n }\n isFormUpload() {\n let isFormUpload = false;\n if (this.isForm && ((isNullOrUndefined(this.asyncSettings.saveUrl) || this.asyncSettings.saveUrl === '')\n && (isNullOrUndefined(this.asyncSettings.removeUrl) || this.asyncSettings.removeUrl === ''))) {\n isFormUpload = true;\n }\n return isFormUpload;\n }\n clearData(singleUpload) {\n if (!isNullOrUndefined(this.listParent) && !(this.isBlazorSaveUrl || this.isBlazorTemplate)) {\n detach(this.listParent);\n this.listParent = null;\n }\n if (this.browserName !== 'msie' && !singleUpload) {\n this.element.value = '';\n }\n this.fileList = [];\n this.filesData = [];\n if (this.isBlazorSaveUrl || this.isBlazorTemplate) {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('clearAll');\n }\n else {\n this.removeActionButtons();\n }\n }\n updateSortedFileList(filesData) {\n let previousListClone = this.createElement('div', { id: 'clonewrapper' });\n let added = -1;\n let removedList;\n if (this.listParent) {\n for (let i = 0; i < this.listParent.querySelectorAll('li').length; i++) {\n let liElement = this.listParent.querySelectorAll('li')[i];\n previousListClone.appendChild(liElement.cloneNode(true));\n }\n removedList = this.listParent.querySelectorAll('li');\n for (let item of removedList) {\n detach(item);\n }\n this.removeActionButtons();\n let oldList = [].slice.call(previousListClone.childNodes);\n detach(this.listParent);\n this.listParent = null;\n this.fileList = [];\n this.createParentUL();\n for (let index = 0; index < filesData.length; index++) {\n for (let j = 0; j < this.filesData.length; j++) {\n if (this.filesData[j].name === filesData[index].name) {\n this.listParent.appendChild(oldList[j]);\n EventHandler.add(oldList[j].querySelector('.e-icons'), 'click', this.removeFiles, this);\n this.fileList.push(oldList[j]);\n added = index;\n }\n }\n if (added !== index) {\n this.createFileList([filesData[index]]);\n }\n }\n }\n else {\n this.createFileList(filesData);\n }\n }\n isBlank(str) {\n return (!str || /^\\s*$/.test(str));\n }\n checkExtension(files) {\n let dropFiles = files;\n if (!this.isBlank(this.allowedExtensions)) {\n let allowedExtensions = [];\n let extensions = this.allowedExtensions.split(',');\n for (let extension of extensions) {\n allowedExtensions.push(extension.trim().toLocaleLowerCase());\n }\n for (let i = 0; i < files.length; i++) {\n if (allowedExtensions.indexOf(('.' + files[i].type).toLocaleLowerCase()) === -1) {\n files[i].status = this.localizedTexts('invalidFileType');\n files[i].statusCode = '0';\n }\n }\n }\n return dropFiles;\n }\n validatedFileSize(fileSize) {\n let minSizeError = '';\n let maxSizeError = '';\n if (fileSize < this.minFileSize) {\n minSizeError = this.localizedTexts('invalidMinFileSize');\n }\n else if (fileSize > this.maxFileSize) {\n maxSizeError = this.localizedTexts('invalidMaxFileSize');\n }\n else {\n minSizeError = '';\n maxSizeError = '';\n }\n let errorMessage = { minSize: minSizeError, maxSize: maxSizeError };\n return errorMessage;\n }\n isPreLoadFile(fileData) {\n let isPreload = false;\n for (let i = 0; i < this.files.length; i++) {\n if (this.files[i].name === fileData.name.slice(0, fileData.name.lastIndexOf('.')) && this.files[i].type === fileData.type) {\n isPreload = true;\n }\n }\n return isPreload;\n }\n createCustomfileList(fileData) {\n this.createParentUL();\n resetBlazorTemplate(this.element.id + 'Template', 'Template');\n for (let listItem of fileData) {\n let liElement = this.createElement('li', { className: FILE, attrs: { 'data-file-name': listItem.name } });\n this.uploadTemplateFn = this.templateComplier(this.template);\n let fromElements = [].slice.call(this.uploadTemplateFn(listItem, null, null, this.element.id + 'Template', this.isStringTemplate));\n let index = fileData.indexOf(listItem);\n append(fromElements, liElement);\n let eventArgs = {\n element: liElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n let eventsArgs = {\n element: liElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(liElement);\n this.fileList.push(liElement);\n }\n updateBlazorTemplate(this.element.id + 'Template', 'Template', this, false);\n }\n createParentUL() {\n if (isNullOrUndefined(this.listParent)) {\n this.listParent = this.createElement('ul', { className: LIST_PARENT });\n this.uploadWrapper.appendChild(this.listParent);\n }\n }\n formFileList(fileData, files) {\n let fileList = this.createElement('li', { className: FILE });\n fileList.setAttribute('data-files-count', fileData.length + '');\n let fileContainer = this.createElement('span', { className: TEXT_CONTAINER });\n let statusMessage;\n for (let listItem of fileData) {\n let fileNameEle = this.createElement('span', { className: FILE_NAME });\n fileNameEle.innerHTML = this.getFileNameOnly(listItem.name);\n let fileTypeEle = this.createElement('span', { className: FILE_TYPE });\n fileTypeEle.innerHTML = '.' + this.getFileType(listItem.name);\n if (!this.enableRtl) {\n fileContainer.appendChild(fileNameEle);\n fileContainer.appendChild(fileTypeEle);\n }\n else {\n let rtlContainer = this.createElement('span', { className: RTL_CONTAINER });\n rtlContainer.appendChild(fileTypeEle);\n rtlContainer.appendChild(fileNameEle);\n fileContainer.appendChild(rtlContainer);\n }\n this.truncateName(fileNameEle);\n statusMessage = this.formValidateFileInfo(listItem, fileList);\n }\n fileList.appendChild(fileContainer);\n this.setListToFileInfo(fileData, fileList);\n let index = this.listParent.querySelectorAll('li').length;\n let infoEle = this.createElement('span');\n if (fileList.classList.contains(INVALID_FILE)) {\n infoEle.classList.add(STATUS);\n infoEle.classList.add(INVALID_FILE);\n infoEle.innerText = fileData.length > 1 ? this.localizedTexts('invalidFileSelection') : statusMessage;\n }\n else {\n infoEle.classList.add(fileData.length > 1 ? INFORMATION : FILE_SIZE);\n infoEle.innerText = fileData.length > 1 ? this.localizedTexts('totalFiles') + ': ' + fileData.length + ' , '\n + this.localizedTexts('size') + ': ' +\n this.bytesToSize(this.getFileSize(fileData)) : this.bytesToSize(fileData[0].size);\n this.createFormInput(fileData);\n }\n fileContainer.appendChild(infoEle);\n if (isNullOrUndefined(fileList.querySelector('.e-icons'))) {\n let iconElement = this.createElement('span', { className: 'e-icons', attrs: { 'tabindex': this.btnTabIndex } });\n /* istanbul ignore next */\n if (this.browserName === 'msie') {\n iconElement.classList.add('e-msie');\n }\n iconElement.setAttribute('title', this.localizedTexts('remove'));\n fileList.appendChild(fileContainer);\n fileList.appendChild(iconElement);\n EventHandler.add(iconElement, 'click', this.removeFiles, this);\n iconElement.classList.add(REMOVE_ICON);\n }\n let eventArgs = {\n element: fileList,\n fileInfo: this.mergeFileInfo(fileData, fileList),\n index: index,\n isPreload: this.isPreLoadFile(this.mergeFileInfo(fileData, fileList))\n };\n let eventsArgs = {\n element: fileList,\n fileInfo: this.mergeFileInfo(fileData, fileList),\n index: index,\n isPreload: this.isPreLoadFile(this.mergeFileInfo(fileData, fileList))\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(fileList);\n this.fileList.push(fileList);\n }\n formValidateFileInfo(listItem, fileList) {\n let statusMessage = listItem.status;\n let validationMessages = this.validatedFileSize(listItem.size);\n if (validationMessages.minSize !== '' || validationMessages.maxSize !== '') {\n this.addInvalidClass(fileList);\n statusMessage = validationMessages.minSize !== '' ? this.localizedTexts('invalidMinFileSize') :\n validationMessages.maxSize !== '' ? this.localizedTexts('invalidMaxFileSize') : statusMessage;\n }\n let typeValidationMessage = this.checkExtension(this.getFilesInArray(listItem))[0].status;\n if (typeValidationMessage === this.localizedTexts('invalidFileType')) {\n this.addInvalidClass(fileList);\n statusMessage = typeValidationMessage;\n }\n return statusMessage;\n }\n addInvalidClass(fileList) {\n fileList.classList.add(INVALID_FILE);\n }\n createFormInput(fileData) {\n let inputElement = this.element.cloneNode(true);\n inputElement.classList.add(HIDDEN_INPUT);\n for (let listItem of fileData) {\n listItem.input = inputElement;\n }\n inputElement.setAttribute('name', this.uploaderName);\n this.uploadWrapper.querySelector('.' + INPUT_WRAPPER).appendChild(inputElement);\n if (this.browserName !== 'msie' && this.browserName !== 'edge') {\n this.element.value = '';\n }\n }\n getFileSize(fileData) {\n let fileSize = 0;\n for (let file of fileData) {\n fileSize += file.size;\n }\n return fileSize;\n }\n mergeFileInfo(fileData, fileList) {\n let result = {\n name: '',\n rawFile: '',\n size: 0,\n status: '',\n type: '',\n validationMessages: { minSize: '', maxSize: '' },\n statusCode: '1',\n list: fileList\n };\n let fileNames = [];\n let type = '';\n for (let listItem of fileData) {\n fileNames.push(listItem.name);\n type = listItem.type;\n }\n result.name = fileNames.join(', ');\n result.size = this.getFileSize(fileData);\n result.type = type;\n result.status = this.statusForFormUpload(fileData, fileList);\n return result;\n }\n statusForFormUpload(fileData, fileList) {\n let isValid = true;\n let statusMessage;\n for (let listItem of fileData) {\n statusMessage = listItem.status;\n let validationMessages = this.validatedFileSize(listItem.size);\n if (validationMessages.minSize !== '' || validationMessages.maxSize !== '') {\n isValid = false;\n statusMessage = validationMessages.minSize !== '' ? this.localizedTexts('invalidMinFileSize') :\n validationMessages.maxSize !== '' ? this.localizedTexts('invalidMaxFileSize') : statusMessage;\n }\n let typeValidationMessage = this.checkExtension(this.getFilesInArray(listItem))[0].status;\n if (typeValidationMessage === this.localizedTexts('invalidFileType')) {\n isValid = false;\n statusMessage = typeValidationMessage;\n }\n }\n if (!isValid) {\n fileList.classList.add(INVALID_FILE);\n statusMessage = fileData.length > 1 ? this.localizedTexts('invalidFileSelection') : statusMessage;\n }\n else {\n statusMessage = this.localizedTexts('totalFiles') + ': ' + fileData.length + ' , '\n + this.localizedTexts('size') + ': ' +\n this.bytesToSize(this.getFileSize(fileData));\n }\n return statusMessage;\n }\n formCustomFileList(fileData, files) {\n this.createParentUL();\n resetBlazorTemplate(this.element.id + 'Template', 'Template');\n let fileList = this.createElement('li', { className: FILE });\n fileList.setAttribute('data-files-count', fileData.length + '');\n this.setListToFileInfo(fileData, fileList);\n let result = this.mergeFileInfo(fileData, fileList);\n fileList.setAttribute('data-file-name', result.name);\n this.uploadTemplateFn = this.templateComplier(this.template);\n let fromElements = [].slice.call(this.uploadTemplateFn(result, null, null, this.element.id + 'Template', this.isStringTemplate));\n let index = this.listParent.querySelectorAll('li').length;\n append(fromElements, fileList);\n if (!fileList.classList.contains(INVALID_FILE)) {\n this.createFormInput(fileData);\n }\n let eventArgs = {\n element: fileList,\n fileInfo: result,\n index: index,\n isPreload: this.isPreLoadFile(result)\n };\n let eventsArgs = {\n element: fileList,\n fileInfo: result,\n index: index,\n isPreload: this.isPreLoadFile(result)\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(fileList);\n this.fileList.push(fileList);\n updateBlazorTemplate(this.element.id + 'Template', 'Template', this, false);\n }\n /**\n * Create the file list for specified files data.\n * @param { FileInfo[] } fileData - specifies the files data for file list creation.\n * @returns void\n */\n createFileList(fileData, isSelectedFile) {\n if (this.isBlazorSaveUrl || this.isBlazorTemplate) {\n let fileListData = (isSelectedFile) ? this.filesData = this.filesData.concat(fileData) : fileData;\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('createFileList', fileListData, this.isForm);\n }\n else {\n this.createParentUL();\n if (this.template !== '' && !isNullOrUndefined(this.template)) {\n if (this.isFormUpload()) {\n this.uploadWrapper.classList.add(FORM_UPLOAD);\n this.formCustomFileList(fileData, this.element.files);\n }\n else {\n this.createCustomfileList(fileData);\n }\n }\n else if (this.isFormUpload()) {\n this.uploadWrapper.classList.add(FORM_UPLOAD);\n this.formFileList(fileData, this.element.files);\n }\n else {\n for (let listItem of fileData) {\n let liElement = this.createElement('li', {\n className: FILE,\n attrs: { 'data-file-name': listItem.name, 'data-files-count': '1' }\n });\n let textContainer = this.createElement('span', { className: TEXT_CONTAINER });\n let textElement = this.createElement('span', { className: FILE_NAME, attrs: { 'title': listItem.name } });\n textElement.innerHTML = this.getFileNameOnly(listItem.name);\n let fileExtension = this.createElement('span', { className: FILE_TYPE });\n fileExtension.innerHTML = '.' + this.getFileType(listItem.name);\n if (!this.enableRtl) {\n textContainer.appendChild(textElement);\n textContainer.appendChild(fileExtension);\n }\n else {\n let rtlContainer = this.createElement('span', { className: RTL_CONTAINER });\n rtlContainer.appendChild(fileExtension);\n rtlContainer.appendChild(textElement);\n textContainer.appendChild(rtlContainer);\n }\n let fileSize = this.createElement('span', { className: FILE_SIZE });\n fileSize.innerHTML = this.bytesToSize(listItem.size);\n textContainer.appendChild(fileSize);\n let statusElement = this.createElement('span', { className: STATUS });\n textContainer.appendChild(statusElement);\n statusElement.innerHTML = listItem.status;\n liElement.appendChild(textContainer);\n let iconElement = this.createElement('span', { className: ' e-icons',\n attrs: { 'tabindex': this.btnTabIndex } });\n /* istanbul ignore next */\n if (this.browserName === 'msie') {\n iconElement.classList.add('e-msie');\n }\n iconElement.setAttribute('title', this.localizedTexts('remove'));\n liElement.appendChild(iconElement);\n EventHandler.add(iconElement, 'click', this.removeFiles, this);\n if (listItem.statusCode === '2') {\n statusElement.classList.add(UPLOAD_SUCCESS);\n iconElement.classList.add(DELETE_ICON);\n iconElement.setAttribute('title', this.localizedTexts('delete'));\n }\n else if (listItem.statusCode !== '1') {\n statusElement.classList.remove(UPLOAD_SUCCESS);\n statusElement.classList.add(VALIDATION_FAILS);\n }\n if (this.autoUpload && listItem.statusCode === '1' && this.asyncSettings.saveUrl !== '') {\n statusElement.innerHTML = '';\n }\n if (!iconElement.classList.contains(DELETE_ICON)) {\n iconElement.classList.add(REMOVE_ICON);\n }\n let index = fileData.indexOf(listItem);\n let eventArgs = {\n element: liElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n let eventsArgs = {\n element: liElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(liElement);\n this.fileList.push(liElement);\n this.truncateName(textElement);\n let preventActionComplete = this.flag;\n if (this.isPreLoadFile(listItem)) {\n this.flag = false;\n this.checkActionComplete(true);\n this.flag = preventActionComplete;\n }\n }\n }\n }\n }\n getSlicedName(nameElement) {\n let text;\n text = nameElement.textContent;\n nameElement.dataset.tail = text.slice(text.length - 10);\n }\n setListToFileInfo(fileData, fileList) {\n for (let listItem of fileData) {\n listItem.list = fileList;\n }\n }\n truncateName(name) {\n let nameElement = name;\n if (this.browserName !== 'edge' && nameElement.offsetWidth < nameElement.scrollWidth) {\n this.getSlicedName(nameElement);\n /* istanbul ignore next */\n }\n else if (nameElement.offsetWidth + 1 < nameElement.scrollWidth) {\n this.getSlicedName(nameElement);\n }\n }\n getFileType(name) {\n let extension;\n let index = name.lastIndexOf('.');\n if (index >= 0) {\n extension = name.substring(index + 1);\n }\n return extension ? extension : '';\n }\n getFileNameOnly(name) {\n let type = this.getFileType(name);\n let names = name.split('.' + type);\n return type = names[0];\n }\n setInitialAttributes() {\n if (this.initialAttr.accept) {\n this.element.setAttribute('accept', this.initialAttr.accept);\n }\n if (this.initialAttr.disabled) {\n this.element.setAttribute('disabled', 'disabled');\n }\n if (this.initialAttr.multiple) {\n let newAttr = document.createAttribute('multiple');\n this.element.setAttributeNode(newAttr);\n }\n }\n filterfileList(files) {\n let filterFiles = [];\n let li;\n for (let i = 0; i < files.length; i++) {\n li = this.getLiElement(files[i]);\n if (!li.classList.contains(UPLOAD_SUCCESS)) {\n filterFiles.push(files[i]);\n }\n }\n return filterFiles;\n }\n updateStatus(files, status, statusCode, updateLiStatus = true) {\n if (!(status === '' || isNullOrUndefined(status)) && !(statusCode === '' || isNullOrUndefined(statusCode))) {\n if (this.isBlazorSaveUrl) {\n for (let i = 0; i < this.filesData.length; i++) {\n if (this.filesData[i].name === files.name) {\n this.filesData[i].status = status;\n this.filesData[i].statusCode = statusCode;\n }\n }\n }\n else {\n files.status = status;\n files.statusCode = statusCode;\n }\n }\n if (updateLiStatus) {\n let li = this.getLiElement(files);\n if (!isNullOrUndefined(li)) {\n if (!isNullOrUndefined(li.querySelector('.' + STATUS)) && !((status === '' || isNullOrUndefined(status)))) {\n li.querySelector('.' + STATUS).textContent = status;\n }\n }\n }\n return files;\n }\n getLiElement(files) {\n let index;\n for (let i = 0; i < this.filesData.length; i++) {\n if (this.filesData[i].name === files.name) {\n index = i;\n }\n }\n return this.fileList[index];\n }\n createProgressBar(liElement) {\n let progressbarWrapper = this.createElement('span', { className: PROGRESS_WRAPPER });\n let progressBar = this.createElement('progressbar', { className: PROGRESSBAR, attrs: { value: '0', max: '100' } });\n let progressbarInnerWrapper = this.createElement('span', { className: PROGRESS_INNER_WRAPPER });\n progressBar.setAttribute('style', 'width: 0%');\n let progressbarText = this.createElement('span', { className: PROGRESSBAR_TEXT });\n progressbarText.textContent = '0%';\n progressbarInnerWrapper.appendChild(progressBar);\n progressbarWrapper.appendChild(progressbarInnerWrapper);\n progressbarWrapper.appendChild(progressbarText);\n liElement.querySelector('.' + TEXT_CONTAINER).appendChild(progressbarWrapper);\n }\n /* istanbul ignore next */\n updateProgressbar(e, li) {\n if (!isNaN(Math.round((e.loaded / e.total) * 100)) && !isNullOrUndefined(li.querySelector('.' + PROGRESSBAR))) {\n if (!isNullOrUndefined(this.progressInterval) && this.progressInterval !== '') {\n let value = (Math.round((e.loaded / e.total) * 100)) % parseInt(this.progressInterval, 10);\n if (value === 0 || value === 100) {\n this.changeProgressValue(li, Math.round((e.loaded / e.total) * 100).toString() + '%');\n }\n }\n else {\n this.changeProgressValue(li, Math.round((e.loaded / e.total) * 100).toString() + '%');\n }\n }\n }\n changeProgressValue(li, progressValue) {\n li.querySelector('.' + PROGRESSBAR).setAttribute('style', 'width:' + progressValue);\n li.querySelector('.' + PROGRESSBAR_TEXT).textContent = progressValue;\n }\n uploadInProgress(e, files, customUI, request) {\n let li = this.getLiElement(files);\n if (isNullOrUndefined(li) && (!customUI)) {\n return;\n }\n if (!isNullOrUndefined(li)) {\n /* istanbul ignore next */\n if (files.statusCode === '5') {\n this.cancelUploadingFile(files, e, request, li);\n }\n if (!(li.querySelectorAll('.' + PROGRESS_WRAPPER).length > 0) && li.querySelector('.' + STATUS)) {\n li.querySelector('.' + STATUS).classList.add(UPLOAD_INPROGRESS);\n this.createProgressBar(li);\n this.updateProgressBarClasses(li, UPLOAD_INPROGRESS);\n li.querySelector('.' + STATUS).classList.remove(UPLOAD_FAILED);\n }\n this.updateProgressbar(e, li);\n let iconEle = li.querySelector('.' + REMOVE_ICON);\n if (!isNullOrUndefined(iconEle)) {\n iconEle.classList.add(ABORT_ICON, UPLOAD_INPROGRESS);\n iconEle.setAttribute('title', this.localizedTexts('abort'));\n iconEle.classList.remove(REMOVE_ICON);\n }\n }\n else {\n this.cancelUploadingFile(files, e, request);\n }\n let args = { e, operation: 'upload', file: this.updateStatus(files, this.localizedTexts('inProgress'), '3') };\n this.trigger('progress', args);\n }\n /* istanbul ignore next */\n cancelUploadingFile(files, e, request, li) {\n if (files.statusCode === '5') {\n let eventArgs = {\n event: e,\n fileData: files,\n cancel: false\n };\n this.trigger('canceling', eventArgs, (eventArgs) => {\n if (eventArgs.cancel) {\n files.statusCode = '3';\n if (!isNullOrUndefined(li)) {\n let spinnerTarget = li.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(spinnerTarget)) {\n hideSpinner(spinnerTarget);\n detach(li.querySelector('.e-spinner-pane'));\n }\n }\n }\n else {\n request.emitError = false;\n request.httpRequest.abort();\n let formData = new FormData();\n if (files.statusCode === '5') {\n let name = this.element.getAttribute('name');\n formData.append(name, files.name);\n formData.append('cancel-uploading', files.name);\n let ajax = new Ajax(this.asyncSettings.removeUrl, 'POST', true, null);\n ajax.emitError = false;\n ajax.onLoad = (e) => { this.removecanceledFile(e, files); return {}; };\n ajax.send(formData);\n }\n }\n });\n }\n }\n removecanceledFile(e, file) {\n let liElement = this.getLiElement(file);\n if (liElement.querySelector('.' + RETRY_ICON) || isNullOrUndefined(liElement.querySelector('.' + ABORT_ICON))) {\n return;\n }\n this.updateStatus(file, this.localizedTexts('fileUploadCancel'), '5');\n this.renderFailureState(e, file, liElement);\n let spinnerTarget = liElement.querySelector('.' + REMOVE_ICON);\n if (!isNullOrUndefined(liElement)) {\n hideSpinner(spinnerTarget);\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n let requestResponse = e && e.currentTarget ? this.getResponse(e) : null;\n let args = { event: e, response: requestResponse, operation: 'cancel', file: file };\n this.trigger('success', args);\n }\n renderFailureState(e, file, liElement) {\n this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n this.removeProgressbar(liElement, 'failure');\n if (!isNullOrUndefined(liElement.querySelector('.e-file-status'))) {\n liElement.querySelector('.e-file-status').classList.add(UPLOAD_FAILED);\n }\n let deleteIcon = liElement.querySelector('.' + ABORT_ICON);\n if (isNullOrUndefined(deleteIcon)) {\n return;\n }\n deleteIcon.classList.remove(ABORT_ICON, UPLOAD_INPROGRESS);\n deleteIcon.classList.add(REMOVE_ICON);\n deleteIcon.setAttribute('title', this.localizedTexts('remove'));\n this.pauseButton = this.createElement('span', { className: 'e-icons e-file-reload-btn', attrs: { 'tabindex': this.btnTabIndex } });\n deleteIcon.parentElement.insertBefore(this.pauseButton, deleteIcon);\n this.pauseButton.setAttribute('title', this.localizedTexts('retry'));\n let retryElement = liElement.querySelector('.' + RETRY_ICON);\n /* istanbul ignore next */\n retryElement.addEventListener('click', (e) => { this.reloadcanceledFile(e, file, liElement, false); }, false);\n }\n reloadcanceledFile(e, file, liElement, custom) {\n file.statusCode = '1';\n file.status = this.localizedTexts('readyToUploadMessage');\n if (!custom) {\n liElement.querySelector('.' + STATUS).classList.remove(UPLOAD_FAILED);\n if (!isNullOrUndefined(liElement.querySelector('.' + RETRY_ICON))) {\n detach(liElement.querySelector('.' + RETRY_ICON));\n }\n this.pauseButton = null;\n }\n /* istanbul ignore next */\n liElement.classList.add(RESTRICT_RETRY);\n this.upload([file]);\n }\n /* istanbul ignore next */\n uploadComplete(e, file, customUI) {\n let status = e.target;\n if (status.readyState === 4 && status.status >= 200 && status.status <= 299) {\n let li = this.getLiElement(file);\n if (isNullOrUndefined(li) && (!customUI || isNullOrUndefined(customUI))) {\n return;\n }\n if (!isNullOrUndefined(li)) {\n this.updateProgressBarClasses(li, UPLOAD_SUCCESS);\n this.removeProgressbar(li, 'success');\n let iconEle = li.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(iconEle)) {\n iconEle.classList.add(DELETE_ICON);\n iconEle.setAttribute('title', this.localizedTexts('delete'));\n iconEle.classList.remove(ABORT_ICON);\n iconEle.classList.remove(UPLOAD_INPROGRESS);\n }\n }\n this.raiseSuccessEvent(e, file);\n }\n else {\n this.uploadFailed(e, file);\n }\n }\n getResponse(e) {\n // tslint:disable-next-line\n let target = e.currentTarget;\n let response = {\n readyState: target.readyState,\n statusCode: target.status,\n statusText: target.statusText,\n headers: target.getAllResponseHeaders(),\n withCredentials: target.withCredentials\n };\n return response;\n }\n /* istanbul ignore next */\n serverRemoveIconBindEvent() {\n if (this.uploadWrapper && this.isBlazorSaveUrl) {\n let iconElement = [].slice.call(this.uploadWrapper.querySelectorAll('ul li'));\n for (let i = 0; i < iconElement.length; i++) {\n let removeIconEle = (iconElement[i]) ? iconElement[i].querySelector('.e-icons') : null;\n if (removeIconEle) {\n EventHandler.remove(removeIconEle, 'click', this.removeFiles);\n EventHandler.add(removeIconEle, 'click', this.removeFiles, this);\n }\n }\n }\n }\n raiseSuccessEvent(e, file) {\n let response = e && e.currentTarget ? this.getResponse(e) : null;\n let statusMessage = this.localizedTexts('uploadSuccessMessage');\n let args = {\n e, response: response, operation: 'upload', file: this.updateStatus(file, statusMessage, '2', false), statusText: statusMessage\n };\n if (!this.isBlazorSaveUrl) {\n let liElement = this.getLiElement(file);\n if (!isNullOrUndefined(liElement)) {\n let spinnerEle = liElement.querySelector('.' + SPINNER_PANE);\n if (!isNullOrUndefined(spinnerEle)) {\n hideSpinner(liElement);\n detach(spinnerEle);\n }\n }\n }\n this.trigger('success', args, (args) => {\n // tslint:disable-next-line\n this.updateStatus(file, args.statusText, '2');\n this.uploadedFilesData.push(file);\n if (!this.isBlazorSaveUrl) {\n this.trigger('change', { file: this.uploadedFilesData });\n }\n this.checkActionButtonStatus();\n if (this.fileList.length > 0) {\n if ((!(this.getLiElement(file)).classList.contains(RESTRICT_RETRY))) {\n this.uploadSequential();\n this.checkActionComplete(true);\n }\n else {\n /* istanbul ignore next */\n (this.getLiElement(file)).classList.remove(RESTRICT_RETRY);\n }\n }\n });\n }\n uploadFailed(e, file) {\n let li = this.getLiElement(file);\n let response = e && e.currentTarget ? this.getResponse(e) : null;\n let statusMessage = this.localizedTexts('uploadFailedMessage');\n let args = {\n e, response: response, operation: 'upload', file: this.updateStatus(file, statusMessage, '0', false), statusText: statusMessage\n };\n if (!isNullOrUndefined(li)) {\n this.renderFailureState(e, file, li);\n }\n this.trigger('failure', args, (args) => {\n // tslint:disable-next-line\n this.updateStatus(file, args.statusText, '0');\n this.checkActionButtonStatus();\n this.uploadSequential();\n this.checkActionComplete(true);\n });\n }\n uploadSequential() {\n if (this.sequentialUpload) {\n if (this.autoUpload) {\n /* istanbul ignore next */\n this.checkAutoUpload(this.filesData);\n }\n else {\n this.uploadButtonClick();\n }\n }\n }\n checkActionComplete(increment) {\n increment ? ++this.actionCompleteCount : --this.actionCompleteCount;\n this.raiseActionComplete();\n }\n raiseActionComplete() {\n if ((this.filesData.length === this.actionCompleteCount) && this.flag) {\n this.flag = false;\n let eventArgs = {\n fileData: []\n };\n eventArgs.fileData = this.getSelectedFileStatus(this.selectedFiles);\n this.trigger('actionComplete', eventArgs);\n }\n }\n getSelectedFileStatus(selectedFiles) {\n let matchFiles = [];\n let matchFilesIndex = 0;\n for (let selectFileIndex = 0; selectFileIndex < selectedFiles.length; selectFileIndex++) {\n let selectedFileData = selectedFiles[selectFileIndex];\n for (let fileDataIndex = 0; fileDataIndex < this.filesData.length; fileDataIndex++) {\n if (this.filesData[fileDataIndex].name === selectedFileData.name) {\n matchFiles[matchFilesIndex] = this.filesData[fileDataIndex];\n ++matchFilesIndex;\n }\n }\n }\n return matchFiles;\n }\n updateProgressBarClasses(li, className) {\n let progressBar = li.querySelector('.' + PROGRESSBAR);\n if (!isNullOrUndefined(progressBar)) {\n progressBar.classList.add(className);\n }\n }\n removeProgressbar(li, callType) {\n if (!isNullOrUndefined(li.querySelector('.' + PROGRESS_WRAPPER))) {\n this.progressAnimation = new Animation({ duration: 1250 });\n this.progressAnimation.animate(li.querySelector('.' + PROGRESS_WRAPPER), { name: 'FadeOut' });\n this.progressAnimation.animate(li.querySelector('.' + PROGRESSBAR_TEXT), { name: 'FadeOut' });\n setTimeout(() => { this.animateProgressBar(li, callType); }, 750);\n }\n }\n /* istanbul ignore next */\n animateProgressBar(li, callType) {\n if (callType === 'success') {\n li.classList.add(UPLOAD_SUCCESS);\n if (!isNullOrUndefined(li.querySelector('.' + STATUS))) {\n li.querySelector('.' + STATUS).classList.remove(UPLOAD_INPROGRESS);\n this.progressAnimation.animate(li.querySelector('.' + STATUS), { name: 'FadeIn' });\n li.querySelector('.' + STATUS).classList.add(UPLOAD_SUCCESS);\n }\n }\n else {\n if (!isNullOrUndefined(li.querySelector('.' + STATUS))) {\n li.querySelector('.' + STATUS).classList.remove(UPLOAD_INPROGRESS);\n this.progressAnimation.animate(li.querySelector('.' + STATUS), { name: 'FadeIn' });\n li.querySelector('.' + STATUS).classList.add(UPLOAD_FAILED);\n }\n }\n if (li.querySelector('.' + PROGRESS_WRAPPER)) {\n detach(li.querySelector('.' + PROGRESS_WRAPPER));\n }\n }\n setExtensions(extensions) {\n if (extensions !== '' && !isNullOrUndefined(extensions)) {\n this.element.setAttribute('accept', extensions);\n }\n else {\n this.element.removeAttribute('accept');\n }\n }\n templateComplier(uploadTemplate) {\n if (uploadTemplate) {\n try {\n if (document.querySelectorAll(uploadTemplate).length) {\n return compile(document.querySelector(uploadTemplate).innerHTML.trim());\n }\n }\n catch (exception) {\n return compile(uploadTemplate);\n }\n }\n return undefined;\n }\n setRTL() {\n this.enableRtl ? addClass([this.uploadWrapper], RTL) : removeClass([this.uploadWrapper], RTL);\n }\n localizedTexts(localeText) {\n this.l10n.setLocale(this.locale);\n return this.l10n.getConstant(localeText);\n }\n setControlStatus() {\n if (!this.enabled) {\n this.uploadWrapper.classList.add(DISABLED);\n this.element.setAttribute('disabled', 'disabled');\n this.browseButton.setAttribute('disabled', 'disabled');\n if (!isNullOrUndefined(this.clearButton)) {\n this.clearButton.setAttribute('disabled', 'disabled');\n }\n if (!isNullOrUndefined(this.uploadButton)) {\n this.uploadButton.setAttribute('disabled', 'disabled');\n }\n }\n else {\n if (this.uploadWrapper.classList.contains(DISABLED)) {\n this.uploadWrapper.classList.remove(DISABLED);\n }\n if (!isNullOrUndefined(this.browseButton) && this.element.hasAttribute('disabled')) {\n this.element.removeAttribute('disabled');\n this.browseButton.removeAttribute('disabled');\n }\n if (!isNullOrUndefined(this.clearButton) && this.clearButton.hasAttribute('disabled')) {\n this.clearButton.removeAttribute('disabled');\n }\n if (!isNullOrUndefined(this.uploadButton) && this.uploadButton.hasAttribute('disabled')) {\n this.uploadButton.hasAttribute('disabled');\n }\n }\n }\n checkHTMLAttributes(isDynamic) {\n let attributes$$1 = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['accept', 'multiple', 'disabled'];\n for (let prop of attributes$$1) {\n if (!isNullOrUndefined(this.element.getAttribute(prop))) {\n switch (prop) {\n case 'accept':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.uploaderOptions) || (this.uploaderOptions['allowedExtensions'] === undefined))\n || isDynamic) {\n this.setProperties({ allowedExtensions: this.element.getAttribute('accept') }, !isDynamic);\n this.initialAttr.accept = this.allowedExtensions;\n }\n break;\n case 'multiple':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.uploaderOptions) || (this.uploaderOptions['multiple'] === undefined)) || isDynamic) {\n let isMutiple = this.element.getAttribute(prop) === 'multiple' ||\n this.element.getAttribute(prop) === '' || this.element.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ multiple: isMutiple }, !isDynamic);\n this.initialAttr.multiple = true;\n }\n break;\n case 'disabled':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.uploaderOptions) || (this.uploaderOptions['enabled'] === undefined)) || isDynamic) {\n let isDisabled = this.element.getAttribute(prop) === 'disabled' ||\n this.element.getAttribute(prop) === '' || this.element.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: isDisabled }, !isDynamic);\n this.initialAttr.disabled = true;\n }\n }\n }\n }\n }\n chunkUpload(file, custom, fileIndex) {\n let start = 0;\n let end = Math.min(this.asyncSettings.chunkSize, file.size);\n let index = 0;\n let blob = file.rawFile.slice(start, end);\n let metaData = { chunkIndex: index, blob: blob, file: file, start: start, end: end, retryCount: 0, request: null };\n this.sendRequest(file, metaData, custom, fileIndex);\n }\n sendRequest(file, metaData, custom, fileIndex) {\n let formData = new FormData();\n let blob = file.rawFile.slice(metaData.start, metaData.end);\n formData.append('chunkFile', blob, file.name);\n formData.append(this.uploaderName, blob, file.name);\n formData.append('chunk-index', metaData.chunkIndex.toString());\n formData.append('chunkIndex', metaData.chunkIndex.toString());\n let totalChunk = Math.max(Math.ceil(file.size / this.asyncSettings.chunkSize), 1);\n formData.append('total-chunk', totalChunk.toString());\n formData.append('totalChunk', totalChunk.toString());\n let ajax = new Ajax({ url: this.asyncSettings.saveUrl, type: 'POST', async: true, contentType: null });\n ajax.emitError = false;\n ajax.onLoad = (e) => { this.chunkUploadComplete(e, metaData, custom); return {}; };\n ajax.onUploadProgress = (e) => {\n this.chunkUploadInProgress(e, metaData, custom);\n return {};\n };\n let eventArgs = {\n fileData: file,\n customFormData: [],\n cancel: false,\n chunkSize: this.asyncSettings.chunkSize === 0 ? null : this.asyncSettings.chunkSize\n };\n ajax.beforeSend = (e) => {\n eventArgs.currentRequest = ajax.httpRequest;\n eventArgs.currentChunkIndex = metaData.chunkIndex;\n /* istanbul ignore next */\n if (isBlazor()) {\n if (this.currentRequestHeader) {\n this.updateCustomheader(ajax.httpRequest, this.currentRequestHeader);\n }\n if (this.customFormDatas) {\n this.updateFormData(formData, this.customFormDatas);\n }\n }\n if (eventArgs.currentChunkIndex === 0) {\n // This event is currently not required but to avoid breaking changes for previous customer, we have included.\n this.trigger('uploading', eventArgs, (eventArgs) => {\n this.uploadingEventCallback(formData, eventArgs, e, file);\n });\n }\n else {\n this.trigger('chunkUploading', eventArgs, (eventArgs) => {\n this.uploadingEventCallback(formData, eventArgs, e, file);\n });\n }\n };\n /* istanbul ignore next */\n ajax.onError = (e) => { this.chunkUploadFailed(e, metaData, custom); return {}; };\n ajax.send(formData);\n metaData.request = ajax;\n }\n uploadingEventCallback(formData, eventArgs, e, file) {\n if (eventArgs.cancel) {\n this.eventCancelByArgs(e, eventArgs, file);\n }\n else {\n this.updateFormData(formData, eventArgs.customFormData);\n }\n }\n eventCancelByArgs(e, eventArgs, file) {\n e.cancel = true;\n if (eventArgs.fileData.statusCode === '5') {\n return;\n }\n let liElement = this.getLiElement(eventArgs.fileData);\n liElement.querySelector('.' + STATUS).innerHTML = this.localizedTexts('fileUploadCancel');\n liElement.querySelector('.' + STATUS).classList.add(UPLOAD_FAILED);\n eventArgs.fileData.statusCode = '5';\n eventArgs.fileData.status = this.localizedTexts('fileUploadCancel');\n this.pauseButton = this.createElement('span', { className: 'e-icons e-file-reload-btn', attrs: { 'tabindex': this.btnTabIndex } });\n let removeIcon = liElement.querySelector('.' + REMOVE_ICON);\n removeIcon.parentElement.insertBefore(this.pauseButton, removeIcon);\n this.pauseButton.setAttribute('title', this.localizedTexts('retry'));\n /* istanbul ignore next */\n this.pauseButton.addEventListener('click', (e) => { this.reloadcanceledFile(e, file, liElement); }, false);\n this.checkActionButtonStatus();\n }\n checkChunkUpload() {\n return (this.asyncSettings.chunkSize <= 0 || isNullOrUndefined(this.asyncSettings.chunkSize)) ? false : true;\n }\n chunkUploadComplete(e, metaData, custom) {\n let response = e.target;\n let liElement;\n if (response.readyState === 4 && response.status >= 200 && response.status < 300) {\n let requestResponse = e && e.currentTarget ? this.getResponse(e) : null;\n let totalChunk = Math.max(Math.ceil(metaData.file.size / this.asyncSettings.chunkSize), 1);\n let eventArgs = {\n event: e,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n totalChunk: totalChunk,\n chunkSize: this.asyncSettings.chunkSize,\n response: requestResponse\n };\n this.trigger('chunkSuccess', eventArgs);\n if (isNullOrUndefined(custom) || !custom) {\n liElement = this.getLiElement(metaData.file);\n }\n this.updateMetaData(metaData);\n if (metaData.end === metaData.file.size) {\n metaData.file.statusCode = '3';\n }\n if (metaData.file.statusCode === '5') {\n let eventArgs = { event: e, fileData: metaData.file, cancel: false };\n this.trigger('canceling', eventArgs, (eventArgs) => {\n /* istanbul ignore next */\n if (eventArgs.cancel) {\n metaData.file.statusCode = '3';\n let spinnerTarget = liElement.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(liElement) && !isNullOrUndefined(spinnerTarget)) {\n hideSpinner(spinnerTarget);\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n this.sendNextRequest(metaData);\n }\n else {\n metaData.request.emitError = false;\n response.abort();\n let formData = new FormData();\n let name = this.element.getAttribute('name');\n formData.append(name, metaData.file.name);\n formData.append('cancel-uploading', metaData.file.name);\n formData.append('cancelUploading', metaData.file.name);\n let ajax = new Ajax(this.asyncSettings.removeUrl, 'POST', true, null);\n ajax.emitError = false;\n ajax.onLoad = (e) => { this.removeChunkFile(e, metaData, custom); return {}; };\n ajax.send(formData);\n }\n });\n }\n else {\n if ((totalChunk - 1) === metaData.chunkIndex && totalChunk > metaData.chunkIndex) {\n let index = this.pausedData.indexOf(metaData);\n if (index >= 0) {\n this.pausedData.splice(index, 1);\n }\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom) && liElement) {\n if (liElement) {\n detach(liElement.querySelector('.' + PAUSE_UPLOAD));\n }\n this.removeChunkProgressBar(metaData);\n }\n this.raiseSuccessEvent(e, metaData.file);\n return;\n }\n this.sendNextRequest(metaData);\n }\n }\n else {\n this.chunkUploadFailed(e, metaData);\n }\n }\n sendNextRequest(metaData) {\n metaData.start = metaData.end;\n metaData.end += this.asyncSettings.chunkSize;\n metaData.end = Math.min(metaData.end, metaData.file.size);\n metaData.chunkIndex += 1;\n this.sendRequest(metaData.file, metaData);\n }\n removeChunkFile(e, metaData, custom) {\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) && !custom)) {\n let liElement = this.getLiElement(metaData.file);\n let deleteIcon = liElement.querySelector('.' + ABORT_ICON);\n let spinnerTarget = deleteIcon;\n this.updateStatus(metaData.file, this.localizedTexts('fileUploadCancel'), '5');\n this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n this.removeProgressbar(liElement, 'failure');\n deleteIcon.classList.remove(ABORT_ICON);\n deleteIcon.classList.add(REMOVE_ICON);\n deleteIcon.setAttribute('title', this.localizedTexts('remove'));\n let pauseIcon = liElement.querySelector('.' + PAUSE_UPLOAD);\n pauseIcon.classList.add(RETRY_ICON);\n pauseIcon.classList.remove(PAUSE_UPLOAD);\n pauseIcon.setAttribute('title', this.localizedTexts('retry'));\n if (!isNullOrUndefined(liElement) && !isNullOrUndefined(deleteIcon)) {\n hideSpinner(spinnerTarget);\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n }\n }\n pauseUpload(metaData, e, custom) {\n metaData.file.statusCode = '4';\n metaData.file.status = this.localizedTexts('pause');\n this.updateMetaData(metaData);\n let eventArgs = {\n event: e ? e : null,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n chunkCount: Math.round(metaData.file.size / this.asyncSettings.chunkSize),\n chunkSize: this.asyncSettings.chunkSize\n };\n this.abortUpload(metaData, custom, eventArgs);\n }\n abortUpload(metaData, custom, eventArgs) {\n metaData.request.emitError = false;\n metaData.request.httpRequest.abort();\n let liElement = this.getLiElement(metaData.file);\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom)) {\n let targetElement = liElement.querySelector('.' + PAUSE_UPLOAD);\n targetElement.classList.remove(PAUSE_UPLOAD);\n targetElement.classList.add(RESUME_UPLOAD);\n targetElement.setAttribute('title', this.localizedTexts('resume'));\n targetElement.nextElementSibling.classList.add(REMOVE_ICON);\n targetElement.nextElementSibling.classList.remove(ABORT_ICON);\n targetElement.nextElementSibling.setAttribute('title', this.localizedTexts('remove'));\n }\n for (let i = 0; i < this.pausedData.length; i++) {\n if (this.pausedData[i].file.name === metaData.file.name) {\n this.pausedData.splice(i, 1);\n }\n }\n this.pausedData.push(metaData);\n this.trigger('pausing', eventArgs);\n }\n resumeUpload(metaData, e, custom) {\n let liElement = this.getLiElement(metaData.file);\n let targetElement;\n if (!isNullOrUndefined(liElement)) {\n targetElement = liElement.querySelector('.' + RESUME_UPLOAD);\n }\n if (!isNullOrUndefined(targetElement) && (isNullOrUndefined(custom) || !custom)) {\n targetElement.classList.remove(RESUME_UPLOAD);\n targetElement.classList.add(PAUSE_UPLOAD);\n targetElement.setAttribute('title', this.localizedTexts('pause'));\n targetElement.nextElementSibling.classList.remove(REMOVE_ICON);\n targetElement.nextElementSibling.classList.add(ABORT_ICON);\n targetElement.nextElementSibling.setAttribute('title', this.localizedTexts('abort'));\n }\n metaData.file.status = this.localizedTexts('inProgress');\n metaData.file.statusCode = '3';\n this.updateMetaData(metaData);\n let eventArgs = {\n event: e ? e : null,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n chunkCount: Math.round(metaData.file.size / this.asyncSettings.chunkSize),\n chunkSize: this.asyncSettings.chunkSize\n };\n this.trigger('resuming', eventArgs);\n for (let i = 0; i < this.pausedData.length; i++) {\n if (this.pausedData[i].end === this.pausedData[i].file.size) {\n this.chunkUploadComplete(e, metaData, custom);\n }\n else {\n if (this.pausedData[i].file.name === metaData.file.name) {\n this.pausedData[i].start = this.pausedData[i].end;\n this.pausedData[i].end = this.pausedData[i].end + this.asyncSettings.chunkSize;\n this.pausedData[i].end = Math.min(this.pausedData[i].end, this.pausedData[i].file.size);\n this.pausedData[i].chunkIndex = this.pausedData[i].chunkIndex + 1;\n this.sendRequest(this.pausedData[i].file, this.pausedData[i], custom);\n }\n }\n }\n }\n updateMetaData(metaData) {\n if (this.uploadMetaData.indexOf(metaData) === -1) {\n this.uploadMetaData.push(metaData);\n }\n else {\n this.uploadMetaData.splice(this.uploadMetaData.indexOf(metaData), 1);\n this.uploadMetaData.push(metaData);\n }\n }\n removeChunkProgressBar(metaData) {\n let liElement = this.getLiElement(metaData.file);\n if (!isNullOrUndefined(liElement)) {\n this.updateProgressBarClasses(liElement, UPLOAD_SUCCESS);\n this.removeProgressbar(liElement, 'success');\n let cancelButton = liElement.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(cancelButton)) {\n cancelButton.classList.add(DELETE_ICON);\n cancelButton.setAttribute('title', this.localizedTexts('delete'));\n cancelButton.classList.remove(ABORT_ICON, UPLOAD_INPROGRESS);\n }\n }\n }\n chunkUploadFailed(e, metaData, custom) {\n let chunkCount = Math.max(Math.ceil(metaData.file.size / this.asyncSettings.chunkSize), 1);\n let liElement;\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom)) {\n liElement = this.getLiElement(metaData.file);\n }\n let requestResponse = e && e.currentTarget ? this.getResponse(e) : null;\n let eventArgs = {\n event: e,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n totalChunk: chunkCount,\n chunkSize: this.asyncSettings.chunkSize,\n cancel: false,\n response: requestResponse\n };\n this.trigger('chunkFailure', eventArgs, (eventArgs) => {\n // To prevent triggering of failure event\n // tslint:disable-next-line\n if (!eventArgs.cancel) {\n if (metaData.retryCount < this.asyncSettings.retryCount) {\n setTimeout(() => { this.retryRequest(liElement, metaData, custom); }, this.asyncSettings.retryAfterDelay);\n }\n else {\n if (!isNullOrUndefined(liElement)) {\n let pauseButton = liElement.querySelector('.' + PAUSE_UPLOAD) ?\n liElement.querySelector('.' + PAUSE_UPLOAD) : liElement.querySelector('.' + RESUME_UPLOAD);\n if (!isNullOrUndefined(pauseButton)) {\n pauseButton.classList.add(RETRY_ICON);\n pauseButton.classList.remove(PAUSE_UPLOAD, RESUME_UPLOAD);\n }\n this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n this.removeProgressbar(liElement, 'failure');\n liElement.querySelector('.e-icons').classList.remove(UPLOAD_INPROGRESS);\n let iconElement = liElement.querySelector('.' + ABORT_ICON) ?\n liElement.querySelector('.' + ABORT_ICON) : liElement.querySelector('.' + REMOVE_ICON);\n iconElement.classList.remove(ABORT_ICON);\n if (!isNullOrUndefined(liElement.querySelector('.' + PAUSE_UPLOAD))) {\n detach(liElement.querySelector('.' + PAUSE_UPLOAD));\n }\n if (metaData.start > 0) {\n iconElement.classList.add(DELETE_ICON);\n iconElement.setAttribute('title', this.localizedTexts('delete'));\n }\n else {\n iconElement.classList.add(REMOVE_ICON);\n iconElement.setAttribute('title', this.localizedTexts('remove'));\n }\n }\n metaData.retryCount = 0;\n let file = metaData.file;\n let failureMessage = this.localizedTexts('uploadFailedMessage');\n let args = {\n e, response: requestResponse,\n operation: 'upload',\n file: this.updateStatus(file, failureMessage, '0', false),\n statusText: failureMessage\n };\n this.trigger('failure', args, (args) => {\n // tslint:disable-next-line\n this.updateStatus(file, args.statusText, '0');\n this.uploadSequential();\n this.checkActionComplete(true);\n });\n }\n }\n });\n }\n retryRequest(liElement, metaData, custom) {\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom) && liElement) {\n this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n }\n metaData.retryCount += 1;\n this.sendRequest(metaData.file, metaData);\n }\n checkPausePlayAction(e) {\n let targetElement = e.target;\n let selectedElement = e.target.parentElement;\n let index = this.fileList.indexOf(selectedElement);\n let fileData = this.filesData[index];\n let metaData = this.getCurrentMetaData(fileData);\n if (targetElement.classList.contains(PAUSE_UPLOAD)) {\n /* istanbul ignore next */\n this.pauseUpload(metaData, e);\n }\n else if (targetElement.classList.contains(RESUME_UPLOAD)) {\n /* istanbul ignore next */\n this.resumeUpload(metaData, e);\n }\n else if (targetElement.classList.contains(RETRY_ICON)) {\n if (metaData.file.status === this.localizedTexts('fileUploadCancel')) {\n this.retryUpload(metaData, false);\n }\n else {\n this.retryUpload(metaData, true);\n }\n }\n }\n retryUpload(metaData, fromcanceledStage) {\n if (fromcanceledStage) {\n metaData.end = metaData.end + this.asyncSettings.chunkSize;\n metaData.start = metaData.start + this.asyncSettings.chunkSize;\n this.sendRequest(metaData.file, metaData);\n }\n else {\n metaData.file.statusCode = '1';\n metaData.file.status = this.localizedTexts('readyToUploadMessage');\n this.chunkUpload(metaData.file);\n }\n /* istanbul ignore next */\n (this.getLiElement(metaData.file)).classList.add(RESTRICT_RETRY);\n }\n chunkUploadInProgress(e, metaData, custom) {\n if (metaData.file.statusCode === '4') {\n return;\n }\n if (metaData.file.statusCode !== '4' && metaData.file.statusCode !== '5') {\n metaData.file.statusCode = '3';\n metaData.file.status = this.localizedTexts('inProgress');\n }\n this.updateMetaData(metaData);\n let liElement = this.getLiElement(metaData.file);\n if (isNullOrUndefined(liElement)) {\n return;\n }\n let retryElement = liElement.querySelector('.' + RETRY_ICON);\n if (!isNullOrUndefined(retryElement)) {\n retryElement.classList.add(PAUSE_UPLOAD);\n retryElement.setAttribute('title', this.localizedTexts('pause'));\n retryElement.classList.remove(RETRY_ICON);\n }\n if (!isNullOrUndefined(liElement)) {\n if (!(liElement.querySelectorAll('.' + PROGRESS_WRAPPER).length > 0)) {\n let statusElement = liElement.querySelector('.' + STATUS);\n if (isNullOrUndefined(this.template)) {\n statusElement.classList.add(UPLOAD_INPROGRESS);\n statusElement.classList.remove(UPLOAD_FAILED);\n this.createProgressBar(liElement);\n this.updateProgressBarClasses(liElement, UPLOAD_INPROGRESS);\n }\n let clearIcon = liElement.querySelector('.' + REMOVE_ICON) ? liElement.querySelector('.' + REMOVE_ICON) :\n liElement.querySelector('.' + DELETE_ICON);\n if (!isNullOrUndefined(clearIcon)) {\n clearIcon.classList.add(ABORT_ICON);\n clearIcon.setAttribute('title', this.localizedTexts('abort'));\n clearIcon.classList.remove(REMOVE_ICON);\n }\n }\n if (!isNaN(Math.round((e.loaded / e.total) * 100)) && isNullOrUndefined(this.template) && metaData.file.statusCode !== '4') {\n let loadedSize = (metaData.chunkIndex * this.asyncSettings.chunkSize);\n let value = Math.min((((loadedSize + e.loaded) / metaData.file.size) * 100), 100);\n this.changeProgressValue(liElement, Math.round(value).toString() + '%');\n }\n if (metaData.chunkIndex === 0) {\n this.checkActionButtonStatus();\n }\n }\n if (isNullOrUndefined(liElement.querySelector('.' + PAUSE_UPLOAD)) && isNullOrUndefined(this.template)) {\n this.pauseButton = this.createElement('span', { className: 'e-icons e-file-pause-btn', attrs: { 'tabindex': this.btnTabIndex } });\n if (this.browserName === 'msie') {\n this.pauseButton.classList.add('e-msie');\n }\n let abortIcon = liElement.querySelector('.' + ABORT_ICON);\n abortIcon.parentElement.insertBefore(this.pauseButton, abortIcon);\n this.pauseButton.setAttribute('title', this.localizedTexts('pause'));\n this.pauseButton.addEventListener('click', (e) => { this.checkPausePlayAction(e); }, false);\n }\n }\n /**\n * It is used to convert bytes value into kilobytes or megabytes depending on the size based\n * on [binary prefix](https://en.wikipedia.org/wiki/Binary_prefix).\n * @param { number } bytes - specifies the file size in bytes.\n * @returns string\n */\n bytesToSize(bytes) {\n let i = -1;\n if (!bytes) {\n return '0.0 KB';\n }\n do {\n bytes = bytes / 1024;\n i++;\n } while (bytes > 99);\n if (i >= 2) {\n bytes = bytes * 1024;\n i = 1;\n }\n return Math.max(bytes, 0).toFixed(1) + ' ' + ['KB', 'MB'][i];\n }\n /**\n * Allows you to sort the file data alphabetically based on its file name clearly.\n * @param { FileList } filesData - specifies the files data for upload.\n * @returns File[]\n */\n /* istanbul ignore next */\n sortFileList(filesData) {\n filesData = filesData ? filesData : this.sortFilesList;\n let files = filesData;\n let fileNames = [];\n for (let i = 0; i < files.length; i++) {\n fileNames.push(files[i].name);\n }\n let sortedFileNames = fileNames.sort();\n let sortedFilesData = [];\n for (let name of sortedFileNames) {\n for (let i = 0; i < files.length; i++) {\n if (name === files[i].name) {\n sortedFilesData.push(files[i]);\n }\n }\n }\n return sortedFilesData;\n }\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n * @method destroy\n * @return {void}.\n */\n destroy() {\n this.element.value = null;\n if (!(this.isBlazorSaveUrl || this.isBlazorTemplate)) {\n this.clearAll();\n }\n this.unWireEvents();\n this.unBindDropEvents();\n if (this.multiple) {\n this.element.removeAttribute('multiple');\n }\n if (!this.enabled) {\n this.element.removeAttribute('disabled');\n }\n this.element.removeAttribute('accept');\n this.setInitialAttributes();\n let attributes$$1 = ['aria-label', 'directory', 'webkitdirectory', 'tabindex'];\n for (let key of attributes$$1) {\n this.element.removeAttribute(key);\n }\n if (!this.isServerBlazor) {\n if (!isNullOrUndefined(this.uploadWrapper)) {\n this.uploadWrapper.parentElement.appendChild(this.element);\n detach(this.uploadWrapper);\n }\n this.uploadWrapper = null;\n super.destroy();\n }\n else {\n this.uploadWrapper = null;\n }\n }\n /**\n * Allows you to call the upload process manually by calling save URL action.\n * To process the selected files (added in upload queue), pass an empty argument otherwise\n * upload the specific file based on its argument.\n * @param { FileInfo | FileInfo[] } files - specifies the files data for upload.\n * @returns void\n */\n upload(files, custom) {\n files = files ? files : this.filesData;\n if (this.sequentialUpload && this.isFirstFileOnSelection) {\n this.sequenceUpload(files);\n }\n else {\n let uploadFiles = this.getFilesInArray(files);\n let eventArgs = {\n customFormData: [],\n currentRequest: null,\n cancel: false\n };\n this.trigger('beforeUpload', eventArgs, (eventArgs) => {\n if (!eventArgs.cancel) {\n if (isBlazor()) {\n this.currentRequestHeader = eventArgs.currentRequest ? eventArgs.currentRequest : this.currentRequestHeader;\n this.customFormDatas = (eventArgs.customFormData && eventArgs.customFormData.length > 0) ?\n eventArgs.customFormData : this.customFormDatas;\n }\n this.uploadFiles(uploadFiles, custom);\n }\n });\n }\n }\n getFilesInArray(files) {\n let uploadFiles = [];\n if (files instanceof Array) {\n uploadFiles = files;\n }\n else {\n uploadFiles.push(files);\n }\n return uploadFiles;\n }\n /* istanbul ignore next */\n serverReadFileBase64(fileIndex, position, totalCount) {\n return new Promise((resolve, reject) => {\n let file = this.fileStreams[fileIndex].rawFile;\n try {\n let reader = new FileReader();\n // tslint:disable-next-line\n reader.onload = ((args) => {\n return () => {\n try {\n let contents = args.result;\n let data = contents ? contents.split(';base64,')[1] : null;\n resolve(data);\n }\n catch (e) {\n reject(e);\n }\n };\n })(reader);\n reader.readAsDataURL(file.slice(position, position + totalCount));\n }\n catch (e) {\n reject(e);\n }\n });\n }\n /* istanbul ignore next */\n uploadFileCount(ele) {\n let files = this.filesData;\n if (!files || files.length === 0) {\n return -1;\n }\n let result = files.length;\n return result;\n }\n /* istanbul ignore next */\n getFileRead(index, ele) {\n let files = this.filesData;\n if (!files || files.length === 0) {\n return -1;\n }\n let file = files[index];\n let fileCount = this.newFileRef++;\n this.fileStreams[fileCount] = file;\n return fileCount;\n }\n /* istanbul ignore next */\n getFileInfo(index, ele) {\n let files = this.filesData;\n if (!files || files.length === 0) {\n return null;\n }\n let file = files[index];\n if (!file) {\n return null;\n }\n return this.filesData[index];\n }\n uploadFiles(files, custom) {\n let selectedFiles = [];\n if (this.asyncSettings.saveUrl === '' || isNullOrUndefined(this.asyncSettings.saveUrl)) {\n if (this.isServerBlazor) {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('GetFileDetails', files);\n }\n return;\n }\n if (!custom || isNullOrUndefined(custom)) {\n if (!this.multiple) {\n let file = [];\n file.push(files[0]);\n selectedFiles = this.filterfileList(file);\n }\n else {\n selectedFiles = this.filterfileList(files);\n }\n }\n else {\n selectedFiles = files;\n }\n for (let i = 0; i < selectedFiles.length; i++) {\n if (this.isServerBlazor && !this.checkChunkUpload()) {\n /* istanbul ignore next */\n /* tslint:disable */\n if (selectedFiles[i] && selectedFiles[i].rawFile instanceof File) {\n this.getBase64(selectedFiles[i].rawFile).then((data) => {\n this.base64String.push(data);\n this.uploadFilesRequest(selectedFiles, i, custom);\n });\n }\n /* tslint:disable */\n }\n else {\n this.uploadFilesRequest(selectedFiles, i, custom);\n }\n }\n }\n uploadFilesRequest(selectedFiles, i, custom) {\n let cloneFiles = [];\n let chunkEnabled = this.checkChunkUpload();\n let ajax = new Ajax(this.asyncSettings.saveUrl, 'POST', true, null);\n ajax.emitError = false;\n let getFileData;\n /* istanbul ignore next */\n if (this.isServerBlazor) {\n getFileData = selectedFiles.slice(0);\n cloneFiles.push(getFileData[i].rawFile);\n }\n let eventArgs = {\n fileData: (this.isServerBlazor) ? getFileData[i] : selectedFiles[i],\n customFormData: [],\n cancel: false\n };\n let formData = new FormData();\n ajax.beforeSend = (e) => {\n eventArgs.currentRequest = ajax.httpRequest;\n /* istanbul ignore next */\n if (isBlazor()) {\n eventArgs.fileData.rawFile = !chunkEnabled ? this.base64String[i] : eventArgs.fileData.rawFile;\n if (this.currentRequestHeader) {\n this.updateCustomheader(ajax.httpRequest, this.currentRequestHeader);\n }\n if (this.customFormDatas) {\n this.updateFormData(formData, this.customFormDatas);\n }\n }\n this.trigger('uploading', eventArgs, (eventArgs) => {\n /* istanbul ignore next */\n if (this.isServerBlazor && !chunkEnabled) {\n selectedFiles[i].rawFile = eventArgs.fileData.rawFile = cloneFiles[i];\n }\n if (eventArgs.cancel) {\n this.eventCancelByArgs(e, eventArgs, selectedFiles[i]);\n }\n this.updateFormData(formData, eventArgs.customFormData);\n });\n };\n if (selectedFiles[i].statusCode === '1') {\n let name = this.element.getAttribute('name');\n formData.append(name, selectedFiles[i].rawFile, selectedFiles[i].name);\n if (chunkEnabled && selectedFiles[i].size > this.asyncSettings.chunkSize) {\n this.chunkUpload(selectedFiles[i], custom, i);\n }\n else {\n ajax.onLoad = (e) => {\n if (eventArgs.cancel && this.isServerBlazor) {\n return {};\n }\n else {\n this.uploadComplete(e, selectedFiles[i], custom);\n return {};\n }\n };\n ajax.onUploadProgress = (e) => {\n if (eventArgs.cancel && this.isServerBlazor) {\n return {};\n }\n else {\n this.uploadInProgress(e, selectedFiles[i], custom, ajax);\n return {};\n }\n };\n /* istanbul ignore next */\n ajax.onError = (e) => { this.uploadFailed(e, selectedFiles[i]); return {}; };\n ajax.send(formData);\n }\n }\n }\n spliceFiles(liIndex) {\n let liElement = this.fileList[liIndex];\n let allFiles = this.getFilesData();\n let nameElements = +liElement.getAttribute('data-files-count');\n let startIndex = 0;\n for (let i = 0; i < liIndex; i++) {\n startIndex += (+this.fileList[i].getAttribute('data-files-count'));\n }\n let endIndex = (startIndex + nameElements) - 1;\n for (let j = endIndex; j >= startIndex; j--) {\n allFiles.splice(j, 1);\n }\n }\n /**\n * Remove the uploaded file from server manually by calling the remove URL action.\n * If you pass an empty argument to this method, the complete file list can be cleared,\n * otherwise remove the specific file based on its argument (“file_data”).\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to remove from file list/server.\n * @param { boolean } customTemplate - Set true if the component rendering with customize template.\n * @param { boolean } removeDirectly - Set true if files remove without removing event.\n * @param { boolean } postRawFile - Set false, to post file name only to the remove action.\n * @returns void\n */\n remove(fileData, customTemplate, removeDirectly, postRawFile, args) {\n if (isNullOrUndefined(postRawFile)) {\n postRawFile = true;\n }\n let eventArgs = {\n event: args,\n cancel: false,\n filesData: [],\n customFormData: [],\n postRawFile: postRawFile,\n currentRequest: null\n };\n let beforeEventArgs = {\n cancel: false,\n customFormData: [],\n currentRequest: null\n };\n this.trigger('beforeRemove', beforeEventArgs, (beforeEventArgs) => {\n if (!beforeEventArgs.cancel) {\n if (isBlazor()) {\n this.currentRequestHeader = beforeEventArgs.currentRequest;\n this.customFormDatas = beforeEventArgs.customFormData;\n }\n let index;\n if (this.isFormUpload() && !this.isBlazorSaveUrl) {\n eventArgs.filesData = fileData;\n this.trigger('removing', eventArgs, (eventArgs) => {\n if (!eventArgs.cancel) {\n let removingFiles = this.getFilesInArray(fileData);\n let isLiRemoved = false;\n let liIndex;\n for (let data of removingFiles) {\n if (!isLiRemoved) {\n liIndex = this.fileList.indexOf(data.list);\n }\n if (liIndex > -1) {\n let inputElement = !isNullOrUndefined(data.input) ? data.input : null;\n if (inputElement) {\n detach(inputElement);\n }\n this.spliceFiles(liIndex);\n detach(this.fileList[liIndex]);\n this.fileList.splice(liIndex, 1);\n isLiRemoved = true;\n liIndex = -1;\n }\n }\n }\n });\n }\n else if (this.isForm && (isNullOrUndefined(this.asyncSettings.removeUrl) || this.asyncSettings.removeUrl === '')\n && !this.isBlazorSaveUrl) {\n eventArgs.filesData = this.getFilesData();\n this.trigger('removing', eventArgs, (eventArgs) => {\n if (!eventArgs.cancel) {\n this.clearAll();\n }\n });\n }\n else {\n let removeFiles = [];\n fileData = !isNullOrUndefined(fileData) ? fileData : this.filesData;\n if (fileData instanceof Array) {\n removeFiles = fileData;\n }\n else {\n removeFiles.push(fileData);\n }\n eventArgs.filesData = removeFiles;\n let removeUrl = this.asyncSettings.removeUrl;\n let validUrl = (removeUrl === '' || isNullOrUndefined(removeUrl)) ? false : true;\n for (let files of removeFiles) {\n index = this.filesData.indexOf(files);\n if ((files.statusCode === '2' || files.statusCode === '4') && validUrl) {\n this.removeUploadedFile(files, eventArgs, removeDirectly, customTemplate);\n }\n else {\n if (!removeDirectly) {\n this.trigger('removing', eventArgs, (eventArgs) => {\n if (!eventArgs.cancel) {\n this.removeFilesData(files, customTemplate);\n }\n });\n }\n else {\n this.removeFilesData(files, customTemplate);\n }\n }\n if (args && !args.target.classList.contains(REMOVE_ICON)) {\n this.checkActionComplete(false);\n }\n }\n }\n }\n });\n }\n /**\n * Clear all the file entries from list that can be uploaded files or added in upload queue.\n * @returns void\n */\n clearAll() {\n if (isNullOrUndefined(this.listParent) && !(this.isBlazorSaveUrl || this.isBlazorTemplate)) {\n if (this.browserName !== 'msie') {\n this.element.value = '';\n }\n this.filesData = [];\n return;\n }\n let eventArgs = {\n cancel: false,\n filesData: this.filesData\n };\n this.trigger('clearing', eventArgs, (eventArgs) => {\n if (!eventArgs.cancel) {\n this.clearData();\n this.actionCompleteCount = 0;\n this.count = -1;\n }\n });\n }\n /**\n * Get the data of files which are shown in file list.\n * @param { number } index - specifies the file list item(li) index.\n * @returns FileInfo[]\n */\n getFilesData(index) {\n if (!this.isServerBlazor) {\n if (isNullOrUndefined(index)) {\n return this.filesData;\n }\n else {\n return this.getSelectedFiles(index);\n }\n }\n else {\n for (let i = 0; i < this.filesData.length; i++) {\n this.filesData[i].rawFile = this.base64String[i];\n }\n return this.filesData;\n }\n }\n /**\n * Pauses the in-progress chunked upload based on the file data.\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to pause from uploading.\n * @param { boolean } custom - Set true if used custom UI.\n * @returns void\n */\n pause(fileData, custom) {\n fileData = fileData ? fileData : this.filesData;\n let fileDataFiles = this.getFilesInArray(fileData);\n this.pauseUploading(fileDataFiles, custom);\n }\n pauseUploading(fileData, custom) {\n let files = this.getFiles(fileData);\n for (let i = 0; i < files.length; i++) {\n if (files[i].statusCode === '3') {\n this.pauseUpload(this.getCurrentMetaData(files[i], null), null, custom);\n }\n }\n }\n getFiles(fileData) {\n let files = [];\n if (!isNullOrUndefined(fileData) && !(fileData instanceof Array)) {\n files.push(fileData);\n }\n else {\n files = fileData;\n }\n return files;\n }\n /**\n * Resumes the chunked upload that is previously paused based on the file data.\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to resume the paused file.\n * @param { boolean } custom - Set true if used custom UI.\n * @returns void\n */\n resume(fileData, custom) {\n fileData = fileData ? fileData : this.filesData;\n let fileDataFiles = this.getFilesInArray(fileData);\n this.resumeFiles(fileDataFiles, custom);\n }\n resumeFiles(fileData, custom) {\n let files = this.getFiles(fileData);\n for (let i = 0; i < files.length; i++) {\n if (files[i].statusCode === '4') {\n this.resumeUpload(this.getCurrentMetaData(files[i], null), null, custom);\n }\n }\n }\n /**\n * Retries the canceled or failed file upload based on the file data.\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to retry the canceled or failed file.\n * @param { boolean } fromcanceledStage - Set true to retry from canceled stage and set false to retry from initial stage.\n * @returns void\n */\n retry(fileData, fromcanceledStage, custom) {\n fileData = fileData ? fileData : this.filesData;\n let fileDataFiles = this.getFilesInArray(fileData);\n this.retryFailedFiles(fileDataFiles, fromcanceledStage, custom);\n }\n retryFailedFiles(fileData, fromcanceledStage, custom) {\n let files = this.getFiles(fileData);\n for (let i = 0; i < files.length; i++) {\n if (files[i].statusCode === '5' || files[i].statusCode === '0') {\n if (this.asyncSettings.chunkSize > 0) {\n this.retryUpload(this.getCurrentMetaData(files[i], null), fromcanceledStage);\n }\n else {\n let liElement;\n if (!custom) {\n liElement = this.fileList[this.filesData.indexOf(files[i])];\n }\n this.reloadcanceledFile(null, files[i], liElement, custom);\n }\n }\n }\n }\n /**\n * Stops the in-progress chunked upload based on the file data.\n * When the file upload is canceled, the partially uploaded file is removed from server.\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to cancel the progressing file.\n * @returns void\n */\n cancel(fileData) {\n fileData = fileData ? fileData : this.filesData;\n let cancelingFiles = this.getFilesInArray(fileData);\n this.cancelUpload(cancelingFiles);\n }\n cancelUpload(fileData) {\n let files = this.getFiles(fileData);\n if (this.asyncSettings.chunkSize > 0) {\n for (let i = 0; i < files.length; i++) {\n if (files[i].statusCode === '3') {\n let metaData = this.getCurrentMetaData(files[i], null);\n metaData.file.statusCode = '5';\n metaData.file.status = this.localizedTexts('fileUploadCancel');\n this.updateMetaData(metaData);\n this.showHideUploadSpinner(files[i]);\n }\n }\n }\n else {\n for (let i = 0; i < files.length; i++) {\n if (files[i].statusCode === '3') {\n files[i].statusCode = '5';\n files[i].status = this.localizedTexts('fileUploadCancel');\n this.showHideUploadSpinner(files[i]);\n }\n }\n }\n }\n showHideUploadSpinner(files) {\n let liElement = this.getLiElement(files);\n if (!isNullOrUndefined(liElement) && isNullOrUndefined(this.template)) {\n let spinnerTarget = liElement.querySelector('.' + ABORT_ICON);\n createSpinner({ target: spinnerTarget, width: '20px' });\n showSpinner(spinnerTarget);\n }\n }\n};\n__decorate$4([\n Complex({ saveUrl: '', removeUrl: '' }, AsyncSettings)\n], Uploader.prototype, \"asyncSettings\", void 0);\n__decorate$4([\n Property(false)\n], Uploader.prototype, \"sequentialUpload\", void 0);\n__decorate$4([\n Property({})\n], Uploader.prototype, \"htmlAttributes\", void 0);\n__decorate$4([\n Property('')\n], Uploader.prototype, \"cssClass\", void 0);\n__decorate$4([\n Property(true)\n], Uploader.prototype, \"enabled\", void 0);\n__decorate$4([\n Property(null)\n], Uploader.prototype, \"template\", void 0);\n__decorate$4([\n Property(true)\n], Uploader.prototype, \"multiple\", void 0);\n__decorate$4([\n Property(true)\n], Uploader.prototype, \"autoUpload\", void 0);\n__decorate$4([\n Complex({}, ButtonsProps)\n], Uploader.prototype, \"buttons\", void 0);\n__decorate$4([\n Property('')\n], Uploader.prototype, \"allowedExtensions\", void 0);\n__decorate$4([\n Property(0)\n], Uploader.prototype, \"minFileSize\", void 0);\n__decorate$4([\n Property(30000000)\n], Uploader.prototype, \"maxFileSize\", void 0);\n__decorate$4([\n Property(null)\n], Uploader.prototype, \"dropArea\", void 0);\n__decorate$4([\n Collection([{}], FilesProp)\n], Uploader.prototype, \"files\", void 0);\n__decorate$4([\n Property(true)\n], Uploader.prototype, \"showFileList\", void 0);\n__decorate$4([\n Property(false)\n], Uploader.prototype, \"directoryUpload\", void 0);\n__decorate$4([\n Property('Default')\n], Uploader.prototype, \"dropEffect\", void 0);\n__decorate$4([\n Event()\n], Uploader.prototype, \"created\", void 0);\n__decorate$4([\n Event()\n], Uploader.prototype, \"actionComplete\", void 0);\n__decorate$4([\n Event()\n], Uploader.prototype, \"rendering\", void 0);\n__decorate$4([\n Event()\n], Uploader.prototype, \"beforeUpload\", void 0);\n__decorate$4([\n Event()\n], Uploader.prototype, \"fileListRendering\", void 0);\n__decorate$4([\n Event()\n], Uploader.prototype, \"selected\", void 0);\n__decorate$4([\n Event()\n], Uploader.prototype, \"uploading\", void 0);\n__decorate$4([\n Event()\n], Uploader.prototype, \"success\", void 0);\n__decorate$4([\n Event()\n], Uploader.prototype, \"failure\", void 0);\n__decorate$4([\n Event()\n], Uploader.prototype, \"removing\", void 0);\n__decorate$4([\n Event()\n], Uploader.prototype, \"beforeRemove\", void 0);\n__decorate$4([\n Event()\n], Uploader.prototype, \"clearing\", void 0);\n__decorate$4([\n Event()\n], Uploader.prototype, \"progress\", void 0);\n__decorate$4([\n Event()\n], Uploader.prototype, \"change\", void 0);\n__decorate$4([\n Event()\n], Uploader.prototype, \"chunkSuccess\", void 0);\n__decorate$4([\n Event()\n], Uploader.prototype, \"chunkFailure\", void 0);\n__decorate$4([\n Event()\n], Uploader.prototype, \"chunkUploading\", void 0);\n__decorate$4([\n Event()\n], Uploader.prototype, \"canceling\", void 0);\n__decorate$4([\n Event()\n], Uploader.prototype, \"pausing\", void 0);\n__decorate$4([\n Event()\n], Uploader.prototype, \"resuming\", void 0);\nUploader = __decorate$4([\n NotifyPropertyChanges\n], Uploader);\n\n/**\n * Uploader modules\n */\n\nvar __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst APPLY = 'e-apply';\nconst CANCEL = 'e-cancel';\nconst CURRENT = 'e-current';\nconst CONTAINER = 'e-container';\nconst CTRLBTN = 'e-ctrl-btn';\nconst CTRLSWITCH = 'e-switch-ctrl-btn';\nconst DISABLED$1 = 'e-disabled';\nconst FORMATSWITCH = 'e-value-switch-btn';\nconst HANDLER = 'e-handler';\nconst HEX = 'e-hex';\nconst HIDEHEX = 'e-hide-hex-value';\nconst HIDEOPACITY = 'e-hide-opacity';\nconst HIDERGBA = 'e-hide-switchable-value';\nconst HIDEVALUE = 'e-hide-value';\nconst HIDEVALUESWITCH = 'e-hide-valueswitcher';\nconst HSVAREA = 'e-hsv-color';\nconst HSVCONTAINER = 'e-hsv-container';\nconst INPUTWRAPPER = 'e-selected-value';\nconst MODESWITCH = 'e-mode-switch-btn';\nconst NOCOLOR = 'e-nocolor-item';\nconst OPACITY = 'e-opacity-value';\nconst PALETTES = 'e-palette';\nconst PALETTECONTENT = 'e-color-palette';\nconst PICKERCONTENT = 'e-color-picker';\nconst PREVIEW = 'e-preview-container';\nconst PREVIOUS = 'e-previous';\nconst RTL$1 = 'e-rtl';\nconst SHOWVALUE = 'e-show-value';\nconst SELECT = 'e-selected';\nconst SPLITPREVIEW = 'e-split-preview';\nconst TILE = 'e-tile';\nconst presets = {\n default: ['#000000', '#f44336', '#e91e63', '#9c27b0', '#673ab7', '#2196f3', '#03a9f4', '#00bcd4', '#009688', '#ffeb3b',\n '#ffffff', '#ffebee', '#fce4ec', '#f3e5f5', '#ede7f6', '#e3f2fd', '#e1f5fe', '#e0f7fa', '#e0f2f1', '#fffde7',\n '#f2f2f2', '#ffcdd2', '#f8bbd0', '#e1bee7', '#d1c4e9', '#bbdefb', '#b3e5fc', '#b2ebf2', '#b2dfdb', '#fff9c4',\n '#e6e6e6', '#ef9a9a', '#f48fb1', '#ce93d8', '#b39ddb', '#90caf9', '#81d4fa', '#80deea', '#80cbc4', '#fff59d',\n '#cccccc', '#e57373', '#f06292', '#ba68c8', '#9575cd', '#64b5f6', '#4fc3f7', '#4dd0e1', '#4db6ac', '#fff176',\n '#b3b3b3', '#ef5350', '#ec407a', '#ab47bc', '#7e57c2', '#42a5f5', '#29b6f6', '#26c6da', '#26a69a', '#ffee58',\n '#999999', '#e53935', '#d81b60', '#8e24aa', '#5e35b1', '#1e88e5', '#039be5', '#00acc1', '#00897b', '#fdd835',\n '#808080', '#d32f2f', '#c2185b', '#7b1fa2', '#512da8', '#1976d2', '#0288d1', '#0097a7', '#00796b', '#fbc02d',\n '#666666', '#c62828', '#ad1457', '#6a1b9a', '#4527a0', '#1565c0', '#0277bd', '#00838f', '#00695c', '#f9a825',\n '#4d4d4d', '#b71c1c', '#880e4f', '#4a148c', '#311b92', '#0d47a1', '#01579b', '#006064', '#004d40', '#f57f17']\n};\n/**\n * ColorPicker component is a user interface to select and adjust color values. It provides supports for various\n * color specification like Red Green Blue, Hue Saturation Value and Hex codes.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nlet ColorPicker = class ColorPicker extends Component {\n constructor(options, element) {\n super(options, element);\n }\n preRender() {\n let ele = this.element;\n this.formElement = closest(this.element, 'form');\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n let localeText = { Apply: 'Apply', Cancel: 'Cancel', ModeSwitcher: 'Switch Mode' };\n this.l10n = new L10n('colorpicker', localeText, this.locale);\n if (ele.getAttribute('ejs-for') && !ele.getAttribute('name')) {\n ele.setAttribute('name', ele.id);\n }\n }\n /**\n * To Initialize the component rendering\n * @private\n */\n render() {\n this.initWrapper();\n if (this.inline) {\n this.createWidget();\n }\n else {\n this.createSplitBtn();\n }\n if (!this.enableOpacity) {\n addClass([this.container.parentElement], HIDEOPACITY);\n }\n this.renderComplete();\n }\n initWrapper() {\n let wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n this.element.parentNode.insertBefore(wrapper, this.element);\n wrapper.appendChild(this.element);\n attributes(this.element, { 'tabindex': '-1', 'spellcheck': 'false' });\n this.container = this.createElement('div', { className: CONTAINER });\n this.getWrapper().appendChild(this.container);\n let value = this.value ? this.roundValue(this.value).toLowerCase() : '#008000ff';\n if (this.noColor && this.mode === 'Palette' && this.value === '') {\n value = '';\n }\n let slicedValue = value.slice(0, 7);\n if (isNullOrUndefined(this.initialInputValue)) {\n this.initialInputValue = slicedValue;\n }\n this.element.value = slicedValue;\n if (this.enableOpacity) {\n this.setProperties({ 'value': value }, true);\n }\n else {\n this.setProperties({ 'value': slicedValue }, true);\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL$1);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.split(' '));\n }\n this.tileRipple = rippleEffect(this.container, { selector: '.' + TILE });\n this.ctrlBtnRipple = rippleEffect(this.container, { selector: '.e-btn' });\n }\n getWrapper() {\n return this.element.parentElement;\n }\n createWidget() {\n if (this.mode === 'Palette') {\n this.createPalette();\n if (!this.inline) {\n this.firstPaletteFocus();\n }\n }\n else {\n this.createPicker();\n if (!this.inline) {\n this.getDragHandler().focus();\n }\n }\n this.isRgb = true;\n this.createInput();\n this.createCtrlBtn();\n if (!this.disabled) {\n this.wireEvents();\n }\n if (this.inline && this.disabled) {\n this.toggleDisabled(true);\n }\n if (Browser.isDevice) {\n this.refreshPopupPos();\n }\n }\n createSplitBtn() {\n let splitButton = this.createElement('button', { className: 'e-split-colorpicker' });\n this.getWrapper().appendChild(splitButton);\n this.splitBtn = new SplitButton({\n iconCss: 'e-selected-color',\n target: this.container,\n disabled: this.disabled,\n enableRtl: this.enableRtl,\n open: this.onOpen.bind(this),\n click: (args) => {\n this.trigger('change', {\n currentValue: { hex: this.value.slice(0, 7), rgba: this.convertToRgbString(this.hexToRgb(this.value)) },\n previousValue: { hex: null, rgba: null }, value: this.value\n });\n }\n });\n this.splitBtn.createElement = this.createElement;\n this.splitBtn.appendTo(splitButton);\n let preview = this.createElement('span', { className: SPLITPREVIEW });\n select('.e-selected-color', splitButton).appendChild(preview);\n preview.style.backgroundColor = this.convertToRgbString(this.hexToRgb(this.value));\n let popupEle = this.getPopupEle();\n addClass([popupEle], 'e-colorpicker-popup');\n if (this.cssClass) {\n addClass([popupEle], this.cssClass.split(' '));\n }\n if (Browser.isDevice) {\n let popupInst = this.getPopupInst();\n popupInst.relateTo = document.body;\n popupInst.position = { X: 'center', Y: 'center' };\n popupInst.targetType = 'container';\n popupInst.collision = { X: 'fit', Y: 'fit' };\n popupInst.offsetY = 4;\n popupEle.style.zIndex = getZindexPartial(this.splitBtn.element).toString();\n }\n this.bindCallBackEvent();\n }\n onOpen(args) {\n this.trigger('open', { element: this.container });\n }\n getPopupInst() {\n return getInstance(this.getPopupEle(), Popup);\n }\n bindCallBackEvent() {\n this.splitBtn.beforeOpen = (args) => {\n let callBackPromise = new Deferred();\n this.trigger('beforeOpen', args, (observeOpenArgs) => {\n if (!observeOpenArgs.cancel) {\n let popupEle = this.getPopupEle();\n popupEle.style.top = formatUnit(0 + pageYOffset);\n popupEle.style.left = formatUnit(0 + pageXOffset);\n popupEle.style.display = 'block';\n this.createWidget();\n popupEle.style.display = '';\n if (Browser.isDevice) {\n this.modal = this.createElement('div');\n this.modal.className = 'e-' + this.getModuleName() + ' e-modal';\n this.modal.style.display = 'none';\n document.body.insertBefore(this.modal, popupEle);\n document.body.className += ' e-colorpicker-overflow';\n this.modal.style.display = 'block';\n this.modal.style.zIndex = (Number(popupEle.style.zIndex) - 1).toString();\n }\n }\n args.cancel = observeOpenArgs.cancel;\n callBackPromise.resolve(observeOpenArgs);\n });\n return callBackPromise;\n };\n this.splitBtn.beforeClose = (args) => {\n let callBackPromise = new Deferred();\n if (!isNullOrUndefined(args.event)) {\n let beforeCloseArgs = { element: this.container, event: args.event, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, (observedCloseArgs) => {\n if (Browser.isDevice && args.event.target === this.modal) {\n observedCloseArgs.cancel = true;\n }\n if (!observedCloseArgs.cancel) {\n this.onPopupClose();\n }\n args.cancel = observedCloseArgs.cancel;\n callBackPromise.resolve(observedCloseArgs);\n });\n }\n else {\n callBackPromise.resolve(args);\n }\n return callBackPromise;\n };\n }\n onPopupClose() {\n this.unWireEvents();\n this.destroyOtherComp();\n this.container.style.width = '';\n select('.' + SPLITPREVIEW, this.splitBtn.element).style.backgroundColor\n = this.convertToRgbString(this.hexToRgb(this.value));\n this.container.innerHTML = '';\n removeClass([this.container], [PICKERCONTENT, PALETTECONTENT]);\n if (Browser.isDevice && this.modal) {\n removeClass([document.body], 'e-colorpicker-overflow');\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n }\n createPalette() {\n classList(this.container, [PALETTECONTENT], [PICKERCONTENT]);\n if (this.presetColors) {\n let paletteGroup = this.createElement('div', { className: 'e-custom-palette' });\n this.appendElement(paletteGroup);\n let keys = Object.keys(this.presetColors);\n if (keys.length === 1) {\n this.appendPalette(this.presetColors[keys[0]], keys[0], paletteGroup);\n }\n else {\n for (let i = 0, len = keys.length; i < len; i++) {\n this.appendPalette(this.presetColors[keys[i]], keys[i], paletteGroup);\n }\n }\n if (selectAll('.e-row', paletteGroup).length > 10) {\n addClass([paletteGroup], 'e-palette-group');\n }\n }\n else {\n this.appendPalette(presets.default, 'default');\n }\n if (this.mode === 'Palette' && !this.modeSwitcher && this.noColor) {\n this.setNoColor();\n }\n let width = parseInt(getComputedStyle(this.container).borderBottomWidth, 10);\n this.container.style.width = formatUnit(this.container.children[0].offsetWidth + width + width);\n this.rgb = this.hexToRgb(this.roundValue(this.value));\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n }\n firstPaletteFocus() {\n if (!select('.' + SELECT, this.container.children[0])) {\n selectAll('.' + PALETTES, this.container)[0].focus();\n }\n }\n appendPalette(colors, key, refEle) {\n let palette = this.createElement('div', { className: PALETTES, attrs: { 'tabindex': '0' } });\n if (refEle) {\n refEle.appendChild(palette);\n }\n else {\n this.appendElement(palette);\n }\n let row;\n let tile;\n let roundedColor;\n for (let i = 0, len = colors.length; i < len; i++) {\n if (i === 0 || i % this.columns === 0) {\n row = this.createElement('div', {\n className: 'e-row', attrs: { 'role': 'row' }\n });\n palette.appendChild(row);\n }\n roundedColor = this.roundValue(colors[i]).toLowerCase();\n tile = this.createElement('span', {\n className: TILE, attrs: { 'role': 'gridcell', 'aria-label': roundedColor, 'aria-selected': 'false' }\n });\n this.trigger('beforeTileRender', { element: tile, presetName: key, value: colors[i] });\n row.appendChild(tile);\n if (this.value === roundedColor) {\n this.addTileSelection(tile);\n palette.focus();\n }\n tile.style.backgroundColor = this.convertToRgbString(this.hexToRgb(roundedColor));\n }\n }\n setNoColor() {\n let noColorEle = this.container.querySelector('.e-row').children[0];\n noColorEle.classList.add(NOCOLOR);\n if (!this.value) {\n noColorEle.classList.add(SELECT);\n closest(noColorEle, '.' + PALETTES).focus();\n }\n ['aria-selected', 'aria-label'].forEach((attr) => { noColorEle.removeAttribute(attr); });\n noColorEle.style.backgroundColor = '';\n }\n appendElement(ele, insertPos = 0) {\n let refEle = this.container.children[insertPos];\n refEle ? this.container.insertBefore(ele, refEle) : this.container.appendChild(ele);\n }\n addTileSelection(ele) {\n ele.classList.add(SELECT);\n ele.setAttribute('aria-selected', 'true');\n }\n createPicker() {\n classList(this.container, [PICKERCONTENT], [PALETTECONTENT]);\n let hsvContainer = this.createElement('div', { className: HSVCONTAINER });\n this.appendElement(hsvContainer);\n hsvContainer.appendChild(this.createElement('div', { className: HSVAREA }));\n let dragHandler = this.createElement('span', { className: HANDLER, attrs: { 'tabindex': '0' } });\n hsvContainer.appendChild(dragHandler);\n this.rgb = this.hexToRgb(this.value);\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n this.setHsvContainerBg();\n this.setHandlerPosition();\n this.createSlider();\n this.createDragTooltip();\n }\n setHsvContainerBg(h = this.hsv[0]) {\n this.getHsvContainer().style.backgroundColor = this.convertToRgbString(this.hsvToRgb(h, 100, 100, 1));\n }\n getHsvContainer() {\n return select('.' + HSVCONTAINER, this.container);\n }\n setHandlerPosition() {\n let dragHandler = this.getDragHandler();\n let hsvArea = select('.' + HSVAREA, this.container);\n if (this.enableRtl) {\n dragHandler.style.left = formatUnit(hsvArea.offsetWidth * Math.abs(100 - this.hsv[1]) / 100);\n }\n else {\n dragHandler.style.left = formatUnit(hsvArea.offsetWidth * this.hsv[1] / 100);\n }\n dragHandler.style.top = formatUnit(hsvArea.offsetHeight * (100 - this.hsv[2]) / 100);\n }\n createSlider() {\n let sliderPreviewWrapper = this.createElement('div', { className: 'e-slider-preview' });\n this.appendElement(sliderPreviewWrapper, 1);\n this.createPreview(sliderPreviewWrapper);\n let sliderWrapper = this.createElement('div', { className: 'e-colorpicker-slider' });\n sliderPreviewWrapper.insertBefore(sliderWrapper, sliderPreviewWrapper.children[0]);\n let slider = this.createElement('div', { className: 'e-hue-slider' });\n sliderWrapper.appendChild(slider);\n this.hueSlider = new Slider({\n value: this.hsv[0],\n min: 0,\n max: 359,\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n change: this.hueChange.bind(this)\n });\n this.hueSlider.createElement = this.createElement;\n this.hueSlider.appendTo(slider);\n if (this.enableOpacity) {\n slider = this.createElement('div', { className: 'e-opacity-slider' });\n sliderWrapper.appendChild(slider);\n this.createOpacitySlider(slider);\n }\n }\n createOpacitySlider(slider) {\n this.opacitySlider = new Slider({\n value: this.rgb[3] * 100,\n min: 0,\n max: 100,\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n change: this.opacityChange.bind(this)\n });\n this.opacitySlider.createElement = this.createElement;\n this.opacitySlider.appendTo(slider);\n let opacityBgTrack = this.createElement('div', { className: 'e-opacity-empty-track' });\n slider.appendChild(opacityBgTrack);\n this.updateOpacitySliderBg();\n }\n updateOpacitySliderBg() {\n let direction = this.enableRtl ? 'to left' : 'to right';\n select('.e-slider-track', this.opacitySlider.element).style.background =\n 'linear-gradient(' + direction + ', rgba(' + this.rgb.slice(0, 3) + ', 0) 0%, ' +\n this.convertToRgbString(this.rgb.slice(0, 3)) + ' 100%)';\n }\n hueChange(args) {\n this.hsv[0] = args.value;\n this.setHsvContainerBg();\n this.convertToOtherFormat();\n }\n opacityChange(args) {\n let value = args.value;\n let pValue = this.rgbToHex(this.rgb);\n this.hsv[3] = value / 100;\n this.rgb[3] = value / 100;\n let cValue = this.rgbToHex(this.rgb);\n this.updateOpacityInput(value);\n let rgb = this.convertToRgbString(this.rgb);\n this.updatePreview(rgb);\n this.triggerEvent(cValue, pValue, rgb);\n }\n updateOpacityInput(value) {\n if (!this.getWrapper().classList.contains(HIDEVALUE)) {\n let opacityTextBoxInst = getInstance(select('.' + OPACITY, this.container), NumericTextBox);\n opacityTextBoxInst.value = value;\n opacityTextBoxInst.dataBind();\n }\n }\n createPreview(parentEle) {\n let previewContainer = this.createElement('div', { className: PREVIEW });\n parentEle.appendChild(previewContainer);\n let preview = this.createElement('span', { className: 'e-preview ' + CURRENT });\n previewContainer.appendChild(preview);\n let colorValue = this.convertToRgbString(this.rgb);\n preview.style.backgroundColor = colorValue;\n preview = this.createElement('span', { className: 'e-preview ' + PREVIOUS });\n previewContainer.appendChild(preview);\n preview.style.backgroundColor = colorValue;\n }\n isPicker() {\n return !this.container.classList.contains(PALETTECONTENT);\n }\n getPopupEle() {\n return this.container.parentElement;\n }\n createNumericInput(element, value, label, max) {\n let numericInput = new NumericTextBox({\n value: value,\n placeholder: label,\n min: 0,\n max: max,\n format: '###.##',\n showSpinButton: false,\n floatLabelType: 'Always',\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n readonly: this.isPicker() ? false : true,\n change: (args) => {\n if (args.event) {\n this.inputHandler(args.event);\n }\n }\n });\n numericInput.createElement = this.createElement;\n numericInput.appendTo(element);\n }\n createInput() {\n let isPicker = this.isPicker();\n let wrapper = this.getWrapper();\n if ((isPicker && !wrapper.classList.contains(HIDEVALUE)) || (!isPicker && wrapper.classList.contains(SHOWVALUE))) {\n let inputWrap = this.createElement('div', { className: INPUTWRAPPER });\n isPicker ? this.appendElement(inputWrap, 2) : this.appendElement(inputWrap, 1);\n let container = this.createElement('div', { className: 'e-input-container' });\n inputWrap.appendChild(container);\n if (!wrapper.classList.contains(HIDEVALUESWITCH)) {\n this.appendValueSwitchBtn(inputWrap);\n }\n if (!wrapper.classList.contains(HIDEHEX)) {\n let hexInput = this.createElement('input', {\n className: HEX,\n attrs: { 'maxlength': '7', 'spellcheck': 'false' }\n });\n container.appendChild(hexInput);\n Input.createInput({\n element: hexInput,\n floatLabelType: 'Always',\n properties: {\n placeholder: 'HEX',\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n readonly: this.isPicker() ? false : true\n }\n }, this.createElement);\n Input.setValue(this.value.slice(0, 7), hexInput);\n hexInput.addEventListener('input', this.inputHandler.bind(this));\n }\n if (!wrapper.classList.contains(HIDERGBA)) {\n let label;\n let value;\n if (this.isRgb) {\n label = 'RGB';\n value = this.rgb;\n }\n else {\n label = 'HSV';\n value = this.hsv;\n }\n let clsName = ['rh', 'gs', 'bv'];\n for (let i = 0; i < 3; i++) {\n this.createNumericInput(container.appendChild(this.createElement('input', { className: 'e-' + clsName[i] + '-value' })), value[i], label[i], 255);\n }\n if (this.enableOpacity) {\n this.appendOpacityValue(container);\n }\n }\n }\n }\n appendOpacityValue(container) {\n this.createNumericInput(container.appendChild(this.createElement('input', { className: OPACITY })), this.rgb[3] * 100, 'A', 100);\n }\n appendValueSwitchBtn(targetEle) {\n let valueSwitchBtn = this.createElement('button', {\n className: 'e-icons e-css e-btn e-flat e-icon-btn ' + FORMATSWITCH\n });\n targetEle.appendChild(valueSwitchBtn);\n if (this.isPicker() && !this.getWrapper().classList.contains(HIDERGBA)) {\n valueSwitchBtn.addEventListener('click', this.formatSwitchHandler.bind(this));\n }\n }\n createCtrlBtn() {\n if (this.modeSwitcher || this.showButtons) {\n this.l10n.setLocale(this.locale);\n let btnWrapper = this.createElement('div', { className: CTRLSWITCH });\n this.container.appendChild(btnWrapper);\n if (this.showButtons) {\n let controlBtnWrapper = this.createElement('div', { className: CTRLBTN });\n btnWrapper.appendChild(controlBtnWrapper);\n let apply = this.l10n.getConstant('Apply');\n controlBtnWrapper.appendChild(this.createElement('button', {\n innerHTML: apply,\n className: 'e-btn e-css e-flat e-primary e-small ' + APPLY,\n attrs: { 'title': apply }\n }));\n let cancel = this.l10n.getConstant('Cancel');\n controlBtnWrapper.appendChild(this.createElement('button', {\n innerHTML: cancel,\n className: 'e-btn e-css e-flat e-small ' + CANCEL,\n attrs: { 'title': cancel }\n }));\n }\n if (this.modeSwitcher) {\n this.appendModeSwitchBtn();\n }\n }\n }\n appendModeSwitchBtn() {\n let modeSwitcher = this.createElement('button', {\n className: 'e-icons e-btn e-flat e-icon-btn ' + MODESWITCH, attrs: { title: this.l10n.getConstant('ModeSwitcher') }\n });\n select('.' + CTRLSWITCH, this.container).insertBefore(modeSwitcher, select('.' + CTRLBTN, this.container));\n }\n createDragTooltip() {\n let tooltip = new Tooltip({\n opensOn: 'Custom',\n showTipPointer: false,\n cssClass: 'e-color-picker-tooltip',\n beforeOpen: (args) => {\n this.tooltipEle = args.element;\n },\n animation: { open: { effect: 'None' }, close: { effect: 'None' } }\n });\n tooltip.createElement = this.createElement;\n tooltip.appendTo(this.container);\n tooltip.open(this.container);\n this.tooltipEle.style.zIndex = getZindexPartial(this.tooltipEle).toString();\n select('.e-tip-content', this.tooltipEle).appendChild(this.createElement('div', { className: 'e-tip-transparent' }));\n }\n getTooltipInst() {\n return getInstance(this.container, Tooltip);\n }\n setTooltipOffset(value) {\n this.getTooltipInst().offsetY = value;\n }\n toggleDisabled(enable) {\n enable ? this.getWrapper().classList.add(DISABLED$1) : this.getWrapper().classList.remove(DISABLED$1);\n if (this.showButtons) {\n ([].slice.call(selectAll('.e-btn', this.container))).forEach((ele) => {\n enable ? attributes(ele, { 'disabled': '' }) : ele.removeAttribute('disabled');\n });\n }\n }\n convertToRgbString(rgb) {\n return rgb.length ? rgb.length === 4 ? 'rgba(' + rgb.join() + ')' : 'rgb(' + rgb.join() + ')' : '';\n }\n convertToHsvString(hsv) {\n return hsv.length === 4 ? 'hsva(' + hsv.join() + ')' : 'hsv(' + hsv.join() + ')';\n }\n updateHsv() {\n this.hsv[1] = this.hsv[1] > 100 ? 100 : this.hsv[1];\n this.hsv[2] = this.hsv[2] > 100 ? 100 : this.hsv[2];\n this.setHandlerPosition();\n }\n convertToOtherFormat(isKey = false) {\n let pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hsvToRgb.apply(this, this.hsv);\n let cValue = this.rgbToHex(this.rgb);\n let rgba = this.convertToRgbString(this.rgb);\n this.updatePreview(rgba);\n this.updateInput(cValue);\n this.triggerEvent(cValue, pValue, rgba, isKey);\n }\n updateInput(value) {\n let wrapper = this.getWrapper();\n if (!wrapper.classList.contains(HIDEVALUE)) {\n if (!wrapper.classList.contains(HIDEHEX)) {\n Input.setValue(value.substr(0, 7), select('.' + HEX, this.container));\n }\n if (!wrapper.classList.contains(HIDERGBA)) {\n if (this.isRgb) {\n this.updateValue(this.rgb, false);\n }\n else {\n this.updateValue(this.hsv, false);\n }\n }\n }\n }\n updatePreview(value) {\n if (this.enableOpacity) {\n this.updateOpacitySliderBg();\n }\n select('.e-tip-transparent', this.tooltipEle).style.backgroundColor = value;\n select('.' + PREVIEW + ' .' + CURRENT, this.container).style.backgroundColor = value;\n select('.' + PREVIEW + ' .' + PREVIOUS, this.container).style.backgroundColor\n = this.convertToRgbString(this.hexToRgb(this.value));\n }\n getDragHandler() {\n return select('.' + HANDLER, this.container);\n }\n removeTileSelection() {\n let selectedEle = [].slice.call(selectAll('.' + SELECT, this.container.children[0]));\n selectedEle.forEach((ele) => {\n ele.classList.remove(SELECT);\n ele.setAttribute('aria-selected', 'false');\n });\n }\n convertRgbToNumberArray(value) {\n return (value.slice(value.indexOf('(') + 1, value.indexOf(')'))).split(',').map((n, i) => {\n return (i !== 3) ? parseInt(n, 10) : parseFloat(n);\n });\n }\n /**\n * To get color value in specified type.\n * @param value - Specify the color value.\n * @param type - Specify the type to which the specified color needs to be converted.\n * @method getValue\n * @return {string}\n */\n getValue(value, type) {\n if (!value) {\n value = this.value;\n }\n type = !type ? 'hex' : type.toLowerCase();\n if (value[0] === 'r') {\n let cValue = this.convertRgbToNumberArray(value);\n if (type === 'hex' || type === 'hexa') {\n let hex = this.rgbToHex(cValue);\n return type === 'hex' ? hex.slice(0, 7) : hex;\n }\n else {\n if (type === 'hsv') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, cValue.slice(0, 3)));\n }\n else {\n if (type === 'hsva') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, cValue));\n }\n else {\n return 'null';\n }\n }\n }\n }\n else {\n if (value[0] === 'h') {\n let cValue = this.hsvToRgb.apply(this, this.convertRgbToNumberArray(value));\n if (type === 'rgba') {\n return this.convertToRgbString(cValue);\n }\n else {\n if (type === 'hex' || type === 'hexa') {\n let hex = this.rgbToHex(cValue);\n return type === 'hex' ? hex.slice(0, 7) : hex;\n }\n else {\n if (type === 'rgb') {\n return this.convertToRgbString(cValue.slice(0, 3));\n }\n else {\n return 'null';\n }\n }\n }\n }\n else {\n value = this.roundValue(value);\n let rgb = this.hexToRgb(value);\n if (type === 'rgb' || type === 'hsv') {\n rgb = rgb.slice(0, 3);\n }\n if (type === 'rgba' || type === 'rgb') {\n return this.convertToRgbString(rgb);\n }\n else {\n if (type === 'hsva' || type === 'hsv') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, rgb));\n }\n else {\n if (type === 'hex') {\n return value.slice(0, 7);\n }\n else {\n if (type === 'a') {\n return rgb[3].toString();\n }\n else {\n return 'null';\n }\n }\n }\n }\n }\n }\n }\n /**\n * To show/hide ColorPicker popup based on current state of the SplitButton.\n * @method toggle\n * @return {void}\n */\n toggle() {\n this.container.parentElement.classList.contains('e-popup-close') ? this.splitBtn.toggle() : this.closePopup(null);\n }\n /**\n * Get component name.\n * @returns string\n * @private\n */\n getModuleName() {\n return 'colorpicker';\n }\n /**\n * Gets the properties to be maintained in the persisted state.\n * @return {string}\n */\n getPersistData() {\n return this.addOnPersist(['value']);\n }\n wireEvents() {\n if (this.isPicker()) {\n let dragHandler = this.getDragHandler();\n EventHandler.add(dragHandler, 'keydown', this.pickerKeyDown, this);\n EventHandler.add(this.getHsvContainer(), 'mousedown touchstart', this.handlerDown, this);\n if (this.modeSwitcher || this.showButtons) {\n this.addCtrlSwitchEvent();\n }\n EventHandler.add(select('.' + PREVIOUS, this.container), 'click', this.previewHandler, this);\n }\n else {\n EventHandler.add(this.container, 'click', this.paletteClickHandler, this);\n EventHandler.add(this.container, 'keydown', this.paletteKeyDown, this);\n }\n }\n formResetHandler() {\n this.value = this.initialInputValue;\n attributes(this.element, { 'value': this.initialInputValue });\n }\n addCtrlSwitchEvent() {\n EventHandler.add(select('.' + CTRLSWITCH, this.container), 'click', this.btnClickHandler, this);\n }\n pickerKeyDown(e) {\n switch (e.keyCode) {\n case 39:\n this.handlerDragPosition(1, this.enableRtl ? -1 : 1, e);\n break;\n case 37:\n this.handlerDragPosition(1, this.enableRtl ? 1 : -1, e);\n break;\n case 38:\n this.handlerDragPosition(2, 1, e);\n break;\n case 40:\n this.handlerDragPosition(2, -1, e);\n break;\n case 13:\n e.preventDefault();\n let cValue = this.rgbToHex(this.rgb);\n this.enterKeyHandler(cValue, e);\n }\n }\n enterKeyHandler(value, e) {\n this.triggerChangeEvent(value);\n if (!this.inline) {\n this.closePopup(e);\n this.splitBtn.element.focus();\n }\n }\n closePopup(e) {\n let beforeCloseArgs = { element: this.container, event: e, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, (observedcloseArgs) => {\n if (!observedcloseArgs.cancel) {\n this.splitBtn.toggle();\n this.onPopupClose();\n }\n });\n }\n triggerChangeEvent(value) {\n let hex = value.slice(0, 7);\n this.trigger('change', {\n currentValue: { hex: hex, rgba: this.convertToRgbString(this.rgb) },\n previousValue: { hex: this.value.slice(0, 7), rgba: this.convertToRgbString(this.hexToRgb(this.value)) },\n value: this.enableOpacity ? value : hex\n });\n if (this.enableOpacity) {\n this.setProperties({ 'value': value }, true);\n }\n else {\n this.setProperties({ 'value': hex }, true);\n }\n this.element.value = hex ? hex : '#000000';\n }\n handlerDragPosition(prob, value, e) {\n e.preventDefault();\n this.hsv[prob] += value * (e.ctrlKey ? 1 : 3);\n if (this.hsv[prob] < 0) {\n this.hsv[prob] = 0;\n }\n this.updateHsv();\n this.convertToOtherFormat(true);\n }\n handlerDown(e) {\n e.preventDefault();\n if (e.type === 'mousedown') {\n this.clientX = Math.abs(e.pageX - pageXOffset);\n this.clientY = Math.abs(e.pageY - pageYOffset);\n this.setTooltipOffset(8);\n }\n else {\n this.clientX = Math.abs(e.changedTouches[0].pageX - pageXOffset);\n this.clientY = Math.abs(e.changedTouches[0].pageY - pageYOffset);\n this.setTooltipOffset(-8);\n }\n this.setHsv(this.clientX, this.clientY);\n this.getDragHandler().style.transition = 'left .4s cubic-bezier(.25, .8, .25, 1), top .4s cubic-bezier(.25, .8, .25, 1)';\n this.updateHsv();\n this.convertToOtherFormat();\n this.getDragHandler().focus();\n EventHandler.add(document, 'mousemove touchmove', this.handlerMove, this);\n EventHandler.add(document, 'mouseup touchend', this.handlerEnd, this);\n }\n handlerMove(e) {\n if (e.type !== 'touchmove') {\n e.preventDefault();\n }\n let x;\n let y;\n if (e.type === 'mousemove') {\n x = Math.abs(e.pageX - pageXOffset);\n y = Math.abs(e.pageY - pageYOffset);\n }\n else {\n x = Math.abs(e.changedTouches[0].pageX - pageXOffset);\n y = Math.abs(e.changedTouches[0].pageY - pageYOffset);\n }\n this.setHsv(x, y);\n let dragHandler = this.getDragHandler();\n let left = parseInt(dragHandler.style.left, 10);\n let top = parseInt(dragHandler.style.top, 10);\n this.updateHsv();\n this.convertToOtherFormat();\n this.getTooltipInst().refresh(dragHandler);\n if (!this.tooltipEle.style.transform) {\n if (Math.abs(this.clientX - x) > 8 || Math.abs(this.clientY - y) > 8) {\n select('.' + HSVAREA, this.container).style.cursor = 'pointer';\n dragHandler.style.transition = 'none';\n if (!this.inline) {\n this.tooltipEle.style.zIndex = (parseInt(this.getPopupEle().style.zIndex, 10) + 1).toString();\n }\n this.tooltipEle.style.transform = 'rotate(45deg)';\n dragHandler.classList.add('e-hide-handler');\n }\n }\n }\n setHsv(clientX, clientY) {\n let ele = select('.' + HSVAREA, this.container);\n let position = ele.getBoundingClientRect();\n if (this.enableRtl) {\n clientX = clientX > position.right ? 0 : Math.abs(clientX - position.right);\n }\n else {\n clientX = clientX > position.left ? Math.abs(clientX - position.left) : 0;\n }\n clientY = clientY > position.top ? Math.abs(clientY - position.top) : 0;\n this.hsv[2] = Math.round(Number(100 * (ele.offsetHeight -\n Math.max(0, Math.min(ele.offsetHeight, (clientY - ele.offsetTop)))) / ele.offsetHeight) * 10) / 10;\n this.hsv[1] =\n Math.round(Number(100 * (Math.max(0, Math.min(ele.offsetWidth, (clientX - ele.offsetLeft)))) / ele.offsetWidth) * 10) / 10;\n }\n handlerEnd(e) {\n if (e.type !== 'touchend') {\n e.preventDefault();\n }\n EventHandler.remove(document, 'mousemove touchmove', this.handlerMove);\n EventHandler.remove(document, 'mouseup touchend', this.handlerEnd);\n let dragHandler = this.getDragHandler();\n select('.' + HSVAREA, this.container).style.cursor = '';\n if (this.tooltipEle.style.transform) {\n this.tooltipEle.style.transform = '';\n dragHandler.classList.remove('e-hide-handler');\n }\n if (!this.inline && !this.showButtons) {\n this.closePopup(e);\n }\n }\n btnClickHandler(e) {\n let target = e.target;\n if (closest(target, '.' + MODESWITCH)) {\n e.stopPropagation();\n this.switchToPalette();\n }\n else {\n if (target.classList.contains(APPLY) || target.classList.contains(CANCEL)) {\n this.ctrlBtnClick(target, e);\n }\n }\n }\n switchToPalette() {\n this.trigger('beforeModeSwitch', { element: this.container, mode: 'Palette' });\n this.unWireEvents();\n this.destroyOtherComp();\n detach(select('.e-slider-preview', this.container));\n if (!this.getWrapper().classList.contains(HIDEVALUE)) {\n remove(select('.' + INPUTWRAPPER, this.container));\n }\n detach(this.getHsvContainer());\n this.createPalette();\n this.firstPaletteFocus();\n this.createInput();\n this.refreshPopupPos();\n this.wireEvents();\n this.trigger('onModeSwitch', { element: this.container, mode: 'Palette' });\n }\n refreshPopupPos() {\n if (!this.inline) {\n let popupEle = this.getPopupEle();\n popupEle.style.left = formatUnit(0 + pageXOffset);\n popupEle.style.top = formatUnit(0 + pageYOffset);\n this.getPopupInst().refreshPosition(this.splitBtn.element.parentElement);\n }\n }\n formatSwitchHandler(e) {\n let target = e.target.parentElement;\n if (this.isRgb) {\n this.updateValue(this.hsv, true, 3, [360, 100, 100]);\n this.isRgb = false;\n }\n else {\n this.updateValue(this.rgb, true, 2);\n this.isRgb = true;\n }\n }\n updateValue(value, format, idx, max) {\n let clsName = ['e-rh-value', 'e-gs-value', 'e-bv-value'];\n let inst;\n for (let i = 0, len = clsName.length; i < len; i++) {\n inst = getInstance(select('.' + clsName[i], this.container), NumericTextBox);\n inst.value = Math.round(value[i]);\n if (format) {\n inst.placeholder = clsName[i].substr(idx, 1).toUpperCase();\n inst.max = max ? max[i] : 255;\n }\n inst.dataBind();\n }\n }\n previewHandler(e) {\n let target = e.target;\n let pValue = this.rgbToHex(this.rgb);\n this.rgb = this.convertRgbToNumberArray(target.style.backgroundColor);\n if (!this.rgb[3]) {\n this.rgb[3] = 1;\n }\n let cValue = this.rgbToHex(this.rgb);\n let hsv = this.rgbToHsv.apply(this, this.rgb);\n if (hsv[0] !== this.hsv[0]) {\n this.hueSlider.setProperties({ 'value': hsv[0] }, true);\n this.hueSlider.refresh();\n }\n this.setHsvContainerBg(hsv[0]);\n if (this.enableOpacity && hsv[3] !== this.hsv[3]) {\n this.opacitySlider.setProperties({ 'value': hsv[3] * 100 }, true);\n this.opacitySlider.refresh();\n this.updateOpacitySliderBg();\n }\n this.hsv = hsv;\n this.setHandlerPosition();\n this.updateInput(cValue);\n select('.' + PREVIEW + ' .' + CURRENT, this.container).style.backgroundColor = this.convertToRgbString(this.rgb);\n this.triggerEvent(cValue, pValue, this.convertToRgbString(this.rgb));\n }\n paletteClickHandler(e) {\n e.preventDefault();\n let target = e.target;\n if (target.classList.contains(TILE)) {\n this.removeTileSelection();\n this.addTileSelection(target);\n if (target.classList.contains(NOCOLOR)) {\n this.noColorTile();\n }\n else {\n let cValue = target.getAttribute('aria-label');\n let pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hexToRgb(this.roundValue(cValue));\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n if (this.getWrapper().classList.contains(SHOWVALUE)) {\n this.updateInput(cValue);\n }\n this.triggerEvent(cValue, pValue, this.convertToRgbString(this.rgb));\n }\n if (!this.inline && !this.showButtons) {\n this.closePopup(e);\n }\n }\n else {\n if (closest(target, '.' + MODESWITCH)) {\n this.switchToPicker();\n }\n else {\n if (target.classList.contains(APPLY) || target.classList.contains(CANCEL)) {\n this.ctrlBtnClick(target, e);\n }\n else {\n if (this.getWrapper().classList.contains(SHOWVALUE) && closest(target, '.' + FORMATSWITCH)) {\n this.formatSwitchHandler(e);\n }\n }\n }\n }\n }\n noColorTile(isKey = false) {\n let pValue = this.rgbToHex(this.rgb);\n this.rgb = [];\n this.hsv = [];\n this.triggerEvent('', pValue, '', isKey);\n }\n switchToPicker() {\n let wrapper = this.getWrapper();\n this.trigger('beforeModeSwitch', { element: this.container, mode: 'Picker' });\n this.unWireEvents();\n ([].slice.call(selectAll('.' + PALETTES, this.container))).forEach((ele) => {\n detach(ele);\n });\n if (wrapper.classList.contains(SHOWVALUE)) {\n detach(select('.' + INPUTWRAPPER, this.container));\n }\n this.container.style.width = '';\n let grpEle = select('.e-custom-palette', this.container);\n if (this.presetColors) {\n remove(grpEle);\n }\n this.createPicker();\n this.getDragHandler().focus();\n this.createInput();\n this.refreshPopupPos();\n this.wireEvents();\n this.trigger('onModeSwitch', { element: this.container, mode: 'Picker' });\n }\n ctrlBtnClick(ele, e) {\n if (ele.classList.contains(APPLY)) {\n let cValue = this.rgbToHex(this.rgb);\n this.triggerChangeEvent(cValue);\n }\n if (!this.inline) {\n this.closePopup(e);\n this.splitBtn.element.focus();\n }\n }\n paletteKeyDown(e) {\n let target = e.target;\n if (!target.classList.contains(PALETTES)) {\n return;\n }\n let selectedEle;\n let idx;\n let tiles = [].slice.call(selectAll('.' + TILE, target));\n let prevSelectedEle = (tiles.filter((tile) => tile.classList.contains('e-selected'))).pop();\n switch (!e.altKey && e.keyCode) {\n case 39:\n e.preventDefault();\n selectedEle = prevSelectedEle ? tiles[this.tilePosition(tiles, prevSelectedEle, this.enableRtl ? -1 : 1)]\n : tiles[this.enableRtl ? tiles.length - 1 : 0];\n this.keySelectionChanges(selectedEle);\n break;\n case 37:\n e.preventDefault();\n selectedEle = prevSelectedEle ? tiles[this.tilePosition(tiles, prevSelectedEle, this.enableRtl ? 1 : -1)]\n : tiles[this.enableRtl ? 0 : tiles.length - 1];\n this.keySelectionChanges(selectedEle);\n break;\n case 38:\n e.preventDefault();\n idx = prevSelectedEle ? this.tilePosition(tiles, prevSelectedEle, -this.columns) : 0;\n selectedEle = tiles[idx] ? tiles[idx] : tiles[idx - this.columns];\n this.keySelectionChanges(selectedEle);\n break;\n case 40:\n e.preventDefault();\n idx = prevSelectedEle ? this.tilePosition(tiles, prevSelectedEle, this.columns) : tiles.length - 1;\n if (tiles[idx]) {\n selectedEle = tiles[idx];\n }\n else {\n idx %= tiles.length;\n idx += tiles[tiles.length - 1].parentElement.childElementCount;\n selectedEle = tiles[idx];\n }\n this.keySelectionChanges(selectedEle);\n break;\n case 13:\n e.preventDefault();\n if (prevSelectedEle) {\n let cValue = prevSelectedEle.getAttribute('aria-label');\n this.enterKeyHandler(cValue ? cValue : '', e);\n }\n }\n }\n keySelectionChanges(newEle) {\n this.removeTileSelection();\n this.addTileSelection(newEle);\n if (newEle.classList.contains(NOCOLOR)) {\n this.noColorTile(true);\n }\n else {\n let cValue = newEle.getAttribute('aria-label');\n let pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hexToRgb(cValue);\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n if (this.getWrapper().classList.contains(SHOWVALUE)) {\n this.updateInput(cValue);\n }\n this.triggerEvent(cValue, pValue, this.convertToRgbString(this.rgb), true);\n }\n }\n tilePosition(items, element, cIdx) {\n items = Array.prototype.slice.call(items);\n let n = items.length;\n let emptyCount = this.columns - items[n - 1].parentElement.childElementCount;\n let idx = items.indexOf(element);\n idx += cIdx;\n idx < 0 ? idx += n + emptyCount : idx %= n + emptyCount;\n return idx;\n }\n inputHandler(e) {\n let target = e.target;\n if (!target.value.length) {\n return;\n }\n let hsv;\n let pValue;\n let label = select('.e-float-text', target.parentElement).textContent;\n switch (label) {\n case 'HEX':\n let value = '';\n if ((target.value[0] === '#' && target.value.length !== 5) || (target.value[0] !== '#' && target.value.length !== 4)) {\n value = this.roundValue(target.value);\n }\n if (value.length === 9) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hexToRgb(value + value.substr(-2));\n this.inputValueChange(this.rgbToHsv.apply(this, this.rgb), pValue, target.value);\n }\n else {\n return;\n }\n break;\n case 'R':\n if (this.rgb[0] !== Number(target.value)) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb[0] = Number(target.value);\n hsv = this.rgbToHsv.apply(this, this.rgb);\n this.inputValueChange(hsv, pValue);\n }\n break;\n case 'G':\n if (this.rgb[1] !== Number(target.value)) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb[1] = Number(target.value);\n hsv = this.rgbToHsv.apply(this, this.rgb);\n this.inputValueChange(hsv, pValue);\n }\n break;\n case 'B':\n if (this.rgb[2] !== Number(target.value)) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb[2] = Number(target.value);\n hsv = this.rgbToHsv.apply(this, this.rgb);\n this.inputValueChange(hsv, pValue);\n }\n break;\n case 'H':\n this.hueSlider.value = Number(target.value);\n break;\n case 'S':\n if (this.hsv[1] !== Number(target.value)) {\n this.hsv[1] = Number(target.value);\n this.updateHsv();\n this.convertToOtherFormat();\n }\n break;\n case 'V':\n if (this.hsv[2] !== Number(target.value)) {\n this.hsv[2] = Number(target.value);\n this.updateHsv();\n this.convertToOtherFormat();\n }\n break;\n case 'A':\n this.opacitySlider.value = Number(target.value);\n break;\n }\n }\n inputValueChange(hsv, pValue, value) {\n if (hsv[0] !== this.hsv[0]) {\n this.hueSlider.setProperties({ 'value': hsv[0] }, true);\n this.hueSlider.refresh();\n this.setHsvContainerBg(hsv[0]);\n }\n this.hsv = hsv;\n let cValue = this.rgbToHex(this.rgb);\n this.setHandlerPosition();\n this.updateInput(value ? value : cValue);\n let rgba = this.convertToRgbString(this.rgb);\n this.updatePreview(rgba);\n this.triggerEvent(cValue, pValue, rgba);\n }\n triggerEvent(cValue, pValue, rgba, isKey = false) {\n let hex = cValue.slice(0, 7);\n if (!this.showButtons && !isKey) {\n this.trigger('change', { currentValue: { hex: hex, rgba: rgba },\n previousValue: { hex: this.value.slice(0, 7), rgba: this.convertToRgbString(this.hexToRgb(this.value)) }, value: cValue });\n this.setProperties({ 'value': cValue }, true);\n this.element.value = hex ? hex : '#000000';\n }\n else {\n this.trigger('select', {\n currentValue: { hex: hex, rgba: rgba },\n previousValue: { hex: pValue.slice(0, 7), rgba: this.convertToRgbString(this.hexToRgb(pValue)) }\n });\n }\n }\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n * @method destroy\n * @return {void}\n */\n destroy() {\n let wrapper = this.getWrapper();\n super.destroy();\n ['tabindex', 'spellcheck'].forEach((attr) => { this.element.removeAttribute(attr); });\n if (this.inline) {\n this.unWireEvents();\n this.destroyOtherComp();\n }\n else {\n if (this.isPopupOpen()) {\n this.unWireEvents();\n this.destroyOtherComp();\n }\n this.splitBtn.destroy();\n this.splitBtn = null;\n }\n this.tileRipple();\n this.tileRipple = null;\n this.ctrlBtnRipple();\n this.ctrlBtnRipple = null;\n if (this.element.nextElementSibling) {\n detach(this.element.nextElementSibling);\n }\n if (wrapper) {\n wrapper.parentElement.insertBefore(this.element, wrapper);\n detach(wrapper);\n }\n this.container = null;\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n }\n destroyOtherComp() {\n if (this.isPicker()) {\n this.hueSlider.destroy();\n if (this.enableOpacity) {\n this.opacitySlider.destroy();\n this.opacitySlider = null;\n }\n this.hueSlider = null;\n let tooltipInst = this.getTooltipInst();\n tooltipInst.close();\n tooltipInst.destroy();\n this.tooltipEle = null;\n }\n }\n isPopupOpen() {\n return this.getPopupEle().classList.contains('e-popup-open');\n }\n unWireEvents() {\n if (this.isPicker()) {\n let wrapper = this.getWrapper();\n let dragHandler = this.getDragHandler();\n EventHandler.remove(dragHandler, 'keydown', this.pickerKeyDown);\n EventHandler.remove(this.getHsvContainer(), 'mousedown touchstart', this.handlerDown);\n if (this.modeSwitcher || this.showButtons) {\n EventHandler.remove(select('.' + CTRLSWITCH, this.container), 'click', this.btnClickHandler);\n }\n EventHandler.remove(select('.' + PREVIOUS, this.container), 'click', this.previewHandler);\n }\n else {\n EventHandler.remove(this.container, 'click', this.paletteClickHandler);\n EventHandler.remove(this.container, 'keydown', this.paletteKeyDown);\n }\n }\n roundValue(value) {\n if (!value) {\n return '';\n }\n if (value[0] !== '#') {\n value = '#' + value;\n }\n let len = value.length;\n if (len === 4) {\n value += 'f';\n len = 5;\n }\n if (len === 5) {\n let tempValue = '';\n for (let i = 1, len = value.length; i < len; i++) {\n tempValue += (value.charAt(i) + value.charAt(i));\n }\n value = '#' + tempValue;\n len = 9;\n }\n if (len === 7) {\n value += 'ff';\n }\n return value;\n }\n hexToRgb(hex) {\n if (!hex) {\n return [];\n }\n hex = hex.trim();\n if (hex.length !== 9) {\n hex = this.roundValue(hex);\n }\n let opacity = Number((parseInt(hex.slice(-2), 16) / 255).toFixed(2));\n hex = hex.slice(1, 7);\n let bigInt = parseInt(hex, 16);\n let h = [];\n h.push((bigInt >> 16) & 255);\n h.push((bigInt >> 8) & 255);\n h.push(bigInt & 255);\n h.push(opacity);\n return h;\n }\n rgbToHsv(r, g, b, opacity) {\n if (this.rgb && !this.rgb.length) {\n return [];\n }\n r /= 255;\n g /= 255;\n b /= 255;\n let max = Math.max(r, g, b);\n let min = Math.min(r, g, b);\n let h;\n let s;\n let v = max;\n let d = max - min;\n s = max === 0 ? 0 : d / max;\n if (max === min) {\n h = 0;\n }\n else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n let hsv = [Math.round(h * 360), Math.round(s * 1000) / 10, Math.round(v * 1000) / 10];\n if (!isNullOrUndefined(opacity)) {\n hsv.push(opacity);\n }\n return hsv;\n }\n hsvToRgb(h, s, v, opacity) {\n let r;\n let g;\n let b;\n let i;\n let f;\n let p;\n let q;\n let t;\n s /= 100;\n v /= 100;\n if (s === 0) {\n r = g = b = v;\n return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255), opacity];\n }\n h /= 60;\n i = Math.floor(h);\n f = h - i;\n p = v * (1 - s);\n q = v * (1 - s * f);\n t = v * (1 - s * (1 - f));\n switch (i) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n default:\n r = v;\n g = p;\n b = q;\n }\n let rgb = [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\n if (!isNullOrUndefined(opacity)) {\n rgb.push(opacity);\n }\n return rgb;\n }\n rgbToHex(rgb) {\n return rgb.length ? ('#' + this.hex(rgb[0]) + this.hex(rgb[1]) + this.hex(rgb[2]) +\n (!isNullOrUndefined(rgb[3]) ? (rgb[3] !== 0 ? (Math.round(rgb[3] * 255) + 0x10000).toString(16).substr(-2) : '00') : '')) : '';\n }\n hex(x) {\n return ('0' + x.toString(16)).slice(-2);\n }\n changeModeSwitcherProp(prop) {\n let ctrlSwitchWrapper = select('.' + CTRLSWITCH, this.container);\n if (prop) {\n if (ctrlSwitchWrapper) {\n this.appendModeSwitchBtn();\n }\n else {\n this.createCtrlBtn();\n if (this.isPicker() && !this.disabled) {\n this.addCtrlSwitchEvent();\n }\n }\n }\n else {\n if (ctrlSwitchWrapper) {\n if (this.showButtons) {\n detach(select('.' + MODESWITCH, ctrlSwitchWrapper));\n }\n else {\n remove(ctrlSwitchWrapper);\n }\n }\n }\n }\n changeShowBtnProps(prop) {\n let ctrlBtnWrapper = select('.' + CTRLSWITCH, this.container);\n if (prop) {\n if (ctrlBtnWrapper) {\n remove(ctrlBtnWrapper);\n }\n this.createCtrlBtn();\n if (this.isPicker() && !this.disabled) {\n this.addCtrlSwitchEvent();\n }\n }\n else {\n if (this.modeSwitcher) {\n detach(select('.' + CTRLBTN, ctrlBtnWrapper));\n }\n else {\n remove(ctrlBtnWrapper);\n }\n }\n }\n changeValueProp(newProp) {\n if (this.isPicker()) {\n this.rgb = this.hexToRgb(newProp);\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n this.setHandlerPosition();\n detach(closest(this.hueSlider.element, '.e-slider-preview'));\n this.createSlider();\n this.setHsvContainerBg();\n this.updateInput(newProp);\n if (this.rgb.length === 4) {\n this.updateOpacityInput(this.rgb[3] * 100);\n }\n }\n else {\n this.removeTileSelection();\n let ele = select('span[aria-label=\"' + this.roundValue(newProp) + '\"]', this.container);\n if (ele) {\n this.addTileSelection(ele);\n }\n }\n }\n setInputEleProps(prop) {\n remove(select('.' + INPUTWRAPPER, this.container));\n this.createInput();\n }\n changeDisabledProp(newProp) {\n if (this.isPicker()) {\n this.hueSlider.enabled = !newProp;\n this.opacitySlider.enabled = !newProp;\n this.setInputEleProps(newProp);\n }\n if (newProp) {\n this.toggleDisabled(true);\n this.unWireEvents();\n }\n else {\n this.toggleDisabled(false);\n this.wireEvents();\n }\n }\n changeCssClassProps(newProp, oldProp) {\n let wrapper = this.getWrapper();\n let popupWrapper = this.getPopupEle();\n if (oldProp) {\n removeClass([wrapper, popupWrapper], oldProp.split(' '));\n }\n if (newProp) {\n addClass([wrapper, popupWrapper], newProp.split(' '));\n }\n }\n changeRtlProps(newProp) {\n if (newProp) {\n addClass([this.getWrapper()], 'e-rtl');\n }\n else {\n removeClass([this.getWrapper()], 'e-rtl');\n }\n }\n changePaletteProps() {\n detach(this.container.children[0]);\n this.container.style.width = '';\n this.createPalette();\n }\n changeOpacityProps(newProp) {\n let wrapper = this.getWrapper();\n if (newProp) {\n removeClass([this.container.parentElement], HIDEOPACITY);\n this.createOpacitySlider(select('.e-colorpicker-slider', this.container).appendChild(this.createElement('div', { className: 'e-opacity-slider' })));\n if (!wrapper.classList.contains(HIDEVALUE) && !wrapper.classList.contains(HIDERGBA)) {\n this.appendOpacityValue(select('.e-input-container', this.container));\n }\n }\n else {\n addClass([this.container.parentElement], HIDEOPACITY);\n this.opacitySlider.destroy();\n remove(this.opacitySlider.element);\n this.opacitySlider = null;\n if (!wrapper.classList.contains(HIDEVALUE) && !wrapper.classList.contains(HIDERGBA)) {\n remove(select('.' + OPACITY, this.container).parentElement);\n }\n }\n }\n /**\n * Called internally if any of the property value changed.\n * @param {ColorPickerModel} newProp\n * @param {ColorPickerModel} oldProp\n * @returns void\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n if (!isNullOrUndefined(newProp.value)) {\n let value = this.roundValue(newProp.value);\n if (value.length === 9) {\n this.element.value = this.roundValue(value).slice(0, 7);\n let preview = this.splitBtn && select('.' + SPLITPREVIEW, this.splitBtn.element);\n if (preview) {\n preview.style.backgroundColor = this.convertToRgbString(this.hexToRgb(newProp.value));\n }\n }\n else {\n this.value = oldProp.value;\n }\n }\n if (!this.inline && isNullOrUndefined(newProp.inline)) {\n let otherCompModel = ['disabled', 'enableRtl'];\n this.splitBtn.setProperties(getModel(newProp, otherCompModel));\n if (!this.isPopupOpen()) {\n this.changeCssClassProps(newProp.cssClass, oldProp.cssClass);\n this.changeRtlProps(newProp.enableRtl);\n return;\n }\n }\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'inline':\n if (newProp.inline) {\n this.getWrapper().appendChild(this.container);\n this.splitBtn.destroy();\n detach(this.element.nextElementSibling);\n if (!this.container.children.length) {\n this.createWidget();\n }\n }\n else {\n this.destroyOtherComp();\n this.unWireEvents();\n this.container.innerHTML = '';\n this.createSplitBtn();\n }\n break;\n case 'cssClass':\n this.changeCssClassProps(newProp.cssClass, oldProp.cssClass);\n let props = newProp.cssClass.split(' ').concat(oldProp.cssClass.split(' '));\n props = props.reduce((a, b) => { if (a.indexOf(b) < 0) {\n a.push(b);\n } return a; }, []);\n let count = 0;\n props.forEach((cls) => {\n if (count === 0 &&\n (cls === HIDEVALUE || cls === HIDEVALUESWITCH || cls === SHOWVALUE || cls === HIDEHEX || cls === HIDERGBA)) {\n let inputWrap = select('.' + INPUTWRAPPER, this.container);\n if (inputWrap) {\n remove(select('.' + INPUTWRAPPER, this.container));\n }\n this.createInput();\n count++;\n }\n });\n break;\n case 'enableRtl':\n if (this.isPicker()) {\n this.hueSlider.enableRtl = newProp.enableRtl;\n if (this.enableOpacity) {\n this.opacitySlider.enableRtl = newProp.enableRtl;\n }\n this.setInputEleProps(newProp.enableRtl);\n }\n this.changeRtlProps(newProp.enableRtl);\n break;\n case 'disabled':\n this.changeDisabledProp(newProp.disabled);\n break;\n case 'value':\n if (this.value !== oldProp.value) {\n this.changeValueProp(newProp.value);\n }\n break;\n case 'showButtons':\n this.changeShowBtnProps(newProp.showButtons);\n break;\n case 'mode':\n if (newProp.mode === 'Picker') {\n this.switchToPicker();\n }\n else {\n this.switchToPalette();\n }\n break;\n case 'modeSwitcher':\n this.changeModeSwitcherProp(newProp.modeSwitcher);\n break;\n case 'columns':\n case 'presetColors':\n if (!this.isPicker()) {\n this.changePaletteProps();\n }\n break;\n case 'noColor':\n if (newProp.noColor) {\n if (this.mode === 'Palette' && !this.modeSwitcher) {\n this.setNoColor();\n }\n }\n else {\n this.changePaletteProps();\n }\n break;\n case 'enableOpacity':\n this.changeOpacityProps(newProp.enableOpacity);\n break;\n }\n }\n }\n /**\n * Sets the focus to Colorpicker\n * its native method\n * @public\n */\n focusIn() {\n this.element.parentElement.focus();\n }\n};\n__decorate$5([\n Property('#008000ff')\n], ColorPicker.prototype, \"value\", void 0);\n__decorate$5([\n Property('')\n], ColorPicker.prototype, \"cssClass\", void 0);\n__decorate$5([\n Property(false)\n], ColorPicker.prototype, \"disabled\", void 0);\n__decorate$5([\n Property('Picker')\n], ColorPicker.prototype, \"mode\", void 0);\n__decorate$5([\n Property(true)\n], ColorPicker.prototype, \"modeSwitcher\", void 0);\n__decorate$5([\n Property(null)\n], ColorPicker.prototype, \"presetColors\", void 0);\n__decorate$5([\n Property(true)\n], ColorPicker.prototype, \"showButtons\", void 0);\n__decorate$5([\n Property(10)\n], ColorPicker.prototype, \"columns\", void 0);\n__decorate$5([\n Property(false)\n], ColorPicker.prototype, \"inline\", void 0);\n__decorate$5([\n Property(false)\n], ColorPicker.prototype, \"noColor\", void 0);\n__decorate$5([\n Property(false)\n], ColorPicker.prototype, \"enablePersistence\", void 0);\n__decorate$5([\n Property(true)\n], ColorPicker.prototype, \"enableOpacity\", void 0);\n__decorate$5([\n Event()\n], ColorPicker.prototype, \"select\", void 0);\n__decorate$5([\n Event()\n], ColorPicker.prototype, \"change\", void 0);\n__decorate$5([\n Event()\n], ColorPicker.prototype, \"beforeTileRender\", void 0);\n__decorate$5([\n Event()\n], ColorPicker.prototype, \"beforeOpen\", void 0);\n__decorate$5([\n Event()\n], ColorPicker.prototype, \"open\", void 0);\n__decorate$5([\n Event()\n], ColorPicker.prototype, \"beforeClose\", void 0);\n__decorate$5([\n Event()\n], ColorPicker.prototype, \"beforeModeSwitch\", void 0);\n__decorate$5([\n Event()\n], ColorPicker.prototype, \"onModeSwitch\", void 0);\n__decorate$5([\n Event()\n], ColorPicker.prototype, \"created\", void 0);\nColorPicker = __decorate$5([\n NotifyPropertyChanges\n], ColorPicker);\n\n/**\n * ColorPicker modules\n */\n\nvar __decorate$6 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst HIDE_CLEAR = 'e-clear-icon-hide';\nconst TEXTBOX_FOCUS = 'e-input-focus';\nconst containerAttr = ['title', 'style', 'class'];\n/**\n * Represents the TextBox component that allows the user to enter the values based on it's type.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nlet TextBox = class TextBox extends Component {\n constructor(options, element) {\n super(options, element);\n this.previousValue = null;\n this.isAngular = false;\n this.isHiddenInput = false;\n this.isForm = false;\n this.inputPreviousValue = null;\n this.isVue = false;\n this.textboxOptions = options;\n }\n /**\n * Calls internally if any of the property value is changed.\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'floatLabelType':\n Input.removeFloating(this.textboxWrapper);\n Input.addFloating(this.respectiveElement, this.floatLabelType, this.placeholder);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n this.bindClearEvent();\n break;\n case 'width':\n Input.setWidth(newProp.width, this.textboxWrapper.container);\n break;\n case 'value':\n let prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n if (!this.isBlank(this.value)) {\n this.value = this.value.toString();\n }\n this.isProtectedOnChange = prevOnChange;\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if ((this.isAngular || this.isVue) && this.preventChange === true) {\n this.previousValue = this.isAngular ? this.value : this.previousValue;\n this.preventChange = false;\n }\n else if (isNullOrUndefined(this.isAngular) || !this.isAngular\n || (this.isAngular && !this.preventChange) || (this.isAngular && isNullOrUndefined(this.preventChange))) {\n this.raiseChangeEvent();\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n let attributes$$1 = this.element.attributes;\n this.checkAttributes(true);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.respectiveElement);\n break;\n case 'type':\n if (this.respectiveElement.tagName !== 'TEXTAREA') {\n this.respectiveElement.setAttribute('type', this.type);\n this.raiseChangeEvent();\n }\n break;\n case 'showClearButton':\n if (this.respectiveElement.tagName !== 'TEXTAREA') {\n Input.setClearButton(this.showClearButton, this.respectiveElement, this.textboxWrapper);\n this.bindClearEvent();\n }\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.textboxWrapper.container]);\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n break;\n case 'autocomplete':\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else {\n this.removeAttributes(['autocomplete']);\n }\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n break;\n }\n }\n }\n /**\n * Gets the component name\n * @private\n */\n getModuleName() {\n return 'textbox';\n }\n isBlank(str) {\n return (!str || /^\\s*$/.test(str));\n }\n preRender() {\n if (!(isBlazor() && this.isServerRendered)) {\n this.cloneElement = this.element.cloneNode(true);\n this.formElement = closest(this.element, 'form');\n if (!isNullOrUndefined(this.formElement)) {\n this.isForm = true;\n }\n /* istanbul ignore next */\n if (this.element.tagName === 'EJS-TEXTBOX') {\n let ejInstance = getValue('ej2_instances', this.element);\n let inputElement = this.multiline ?\n this.createElement('textarea') :\n this.createElement('input');\n let index = 0;\n for (index; index < this.element.attributes.length; index++) {\n let attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id') {\n inputElement.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n inputElement.innerHTML = this.element.innerHTML;\n if (attributeName === 'name') {\n this.element.removeAttribute('name');\n }\n }\n }\n this.element.appendChild(inputElement);\n this.element = inputElement;\n setValue('ej2_instances', ejInstance, this.element);\n }\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if (this.element.tagName !== 'TEXTAREA') {\n this.element.setAttribute('type', this.type);\n }\n this.element.setAttribute('role', 'textbox');\n this.globalize = new Internationalization(this.locale);\n let localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('textbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('textbox'));\n }\n if (!this.element.hasAttribute('name')) {\n this.element.setAttribute('name', this.element.getAttribute('id'));\n }\n if (this.element.tagName === 'INPUT' && this.multiline) {\n this.isHiddenInput = true;\n this.textarea = this.createElement('textarea');\n this.element.parentNode.insertBefore(this.textarea, this.element);\n this.element.setAttribute('type', 'hidden');\n this.textarea.setAttribute('name', this.element.getAttribute('name'));\n this.element.removeAttribute('name');\n this.textarea.setAttribute('role', this.element.getAttribute('role'));\n this.element.removeAttribute('role');\n let attribute = ['required', 'minlength', 'maxlength'];\n for (let i = 0; i < attribute.length; i++) {\n if (this.element.hasAttribute(attribute[i])) {\n let attr = this.element.getAttribute(attribute[i]);\n this.textarea.setAttribute(attribute[i], attr);\n this.element.removeAttribute(attribute[i]);\n }\n }\n }\n }\n }\n checkAttributes(isDynamic) {\n let attrs = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (let key of attrs) {\n if (!isNullOrUndefined(this.element.getAttribute(key))) {\n switch (key) {\n case 'disabled':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['enabled'] === undefined)) || isDynamic) {\n let enabled = this.element.getAttribute(key) === 'disabled' || this.element.getAttribute(key) === '' ||\n this.element.getAttribute(key) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['readonly'] === undefined)) || isDynamic) {\n let readonly = this.element.getAttribute(key) === 'readonly' || this.element.getAttribute(key) === ''\n || this.element.getAttribute(key) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'autocomplete':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['autocomplete'] === undefined)) || isDynamic) {\n let autoCompleteTxt = this.element.autocomplete === 'off' ? 'off' : 'on';\n this.setProperties({ autocomplete: autoCompleteTxt }, !isDynamic);\n }\n break;\n case 'value':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['value'] === undefined)) || isDynamic) {\n this.setProperties({ value: this.element.value }, !isDynamic);\n }\n break;\n case 'type':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['type'] === undefined)) || isDynamic) {\n this.setProperties({ type: this.element.type }, !isDynamic);\n }\n break;\n }\n }\n }\n }\n /**\n * To Initialize the control rendering\n * @private\n */\n render() {\n let updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getInputValidClassList(this.cssClass);\n }\n if (!(isBlazor() && this.isServerRendered)) {\n this.respectiveElement = (this.isHiddenInput) ? this.textarea : this.element;\n this.textboxWrapper = Input.createInput({\n element: this.respectiveElement,\n floatLabelType: this.floatLabelType,\n properties: {\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n cssClass: updatedCssClassValue,\n readonly: this.readonly,\n placeholder: this.placeholder,\n showClearButton: this.showClearButton\n }\n });\n this.updateHTMLAttrToWrapper();\n if (this.isHiddenInput) {\n this.respectiveElement.parentNode.insertBefore(this.element, this.respectiveElement);\n }\n }\n else {\n this.respectiveElement = this.element;\n this.textboxWrapper = { container: this.element.parentElement };\n if (this.showClearButton && !this.multiline) {\n this.textboxWrapper.clearButton = this.textboxWrapper.container.querySelector('.e-clear-icon');\n Input.wireClearBtnEvents(this.respectiveElement, this.textboxWrapper.clearButton, this.textboxWrapper.container);\n }\n if (this.floatLabelType === 'Auto') {\n Input.wireFloatingEvents(this.respectiveElement);\n }\n // tslint:disable-next-line\n Input.bindInitialEvent({ element: this.respectiveElement, buttons: null, customTag: null, floatLabelType: this.floatLabelType, properties: this.properties });\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.value)) {\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n }\n if (!isNullOrUndefined(this.value)) {\n this.initialValue = this.value;\n this.setInitialValue();\n }\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n // tslint:disable-next-line\n }\n else if (!isNullOrUndefined(this.textboxOptions) && (this.textboxOptions['autocomplete'] !== undefined)) {\n this.removeAttributes(['autocomplete']);\n }\n this.previousValue = this.value;\n this.inputPreviousValue = this.value;\n this.respectiveElement.defaultValue = this.respectiveElement.value;\n Input.setWidth(this.width, this.textboxWrapper.container);\n this.renderComplete();\n }\n updateHTMLAttrToWrapper() {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (let key of Object.keys(this.htmlAttributes)) {\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n let updatedClassValues = this.getInputValidClassList(this.htmlAttributes[key]);\n if (updatedClassValues !== '') {\n addClass([this.textboxWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n let setStyle = this.textboxWrapper.container.getAttribute(key);\n setStyle = !isNullOrUndefined(setStyle) ? (setStyle + this.htmlAttributes[key]) :\n this.htmlAttributes[key];\n this.textboxWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.textboxWrapper.container.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n }\n updateHTMLAttrToElement() {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (let key of Object.keys(this.htmlAttributes)) {\n if (containerAttr.indexOf(key) < 0) {\n this.element.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n updateCssClass(newClass, oldClass) {\n Input.setCssClass(this.getInputValidClassList(newClass), [this.textboxWrapper.container], this.getInputValidClassList(oldClass));\n }\n getInputValidClassList(inputClassName) {\n let result = inputClassName;\n if (!isNullOrUndefined(inputClassName) && inputClassName !== '') {\n result = (inputClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n }\n setInitialValue() {\n if (!this.isAngular) {\n this.respectiveElement.setAttribute('value', this.initialValue);\n }\n }\n wireEvents() {\n EventHandler.add(this.respectiveElement, 'focus', this.focusHandler, this);\n EventHandler.add(this.respectiveElement, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.respectiveElement, 'input', this.inputHandler, this);\n EventHandler.add(this.respectiveElement, 'change', this.changeHandler, this);\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.resetForm, this);\n }\n this.bindClearEvent();\n }\n resetValue(value) {\n let prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.value = value;\n this.isProtectedOnChange = prevOnChange;\n }\n resetForm() {\n if (this.isAngular) {\n this.resetValue('');\n }\n else {\n this.resetValue(this.initialValue);\n }\n if (!isNullOrUndefined(this.textboxWrapper)) {\n let label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label)) {\n if ((isNullOrUndefined(this.initialValue) || this.initialValue === '')) {\n label.classList.add('e-label-bottom');\n label.classList.remove('e-label-top');\n }\n else if (this.initialValue !== '') {\n label.classList.add('e-label-top');\n label.classList.remove('e-label-bottom');\n }\n }\n }\n }\n focusHandler(args) {\n let eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('focus', eventArgs);\n }\n focusOutHandler(args) {\n if (!(this.previousValue === null && this.value === null && this.respectiveElement.value === '') &&\n (this.previousValue !== this.respectiveElement.value)) {\n this.raiseChangeEvent(args, true);\n }\n let eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('blur', eventArgs);\n }\n inputHandler(args) {\n // tslint:disable-next-line\n let textboxObj = this;\n let eventArgs = {\n event: args,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if (this.isAngular) {\n textboxObj.localChange({ value: this.respectiveElement.value });\n this.preventChange = true;\n }\n if (this.isVue) {\n this.preventChange = true;\n }\n this.trigger('input', eventArgs);\n args.stopPropagation();\n }\n changeHandler(args) {\n this.setProperties({ value: this.respectiveElement.value }, true);\n this.raiseChangeEvent(args, true);\n args.stopPropagation();\n }\n raiseChangeEvent(event, interaction) {\n let eventArgs = {\n event: event,\n value: this.value,\n previousValue: this.previousValue,\n container: this.textboxWrapper.container,\n isInteraction: interaction ? interaction : false,\n isInteracted: interaction ? interaction : false\n };\n this.preventChange = false;\n this.trigger('change', eventArgs);\n this.previousValue = this.value;\n }\n bindClearEvent() {\n if (this.showClearButton && this.respectiveElement.tagName !== 'TEXTAREA') {\n if (this.enabled) {\n EventHandler.add(this.textboxWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler, this);\n }\n else {\n EventHandler.remove(this.textboxWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler);\n }\n }\n }\n resetInputHandler(event) {\n event.preventDefault();\n if (!(this.textboxWrapper.clearButton.classList.contains(HIDE_CLEAR))) {\n let previousValue = this.value;\n Input.setValue('', this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.setProperties({ value: this.respectiveElement.value }, true);\n let eventArgs = {\n event: event,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.trigger('input', eventArgs);\n this.inputPreviousValue = this.respectiveElement.value;\n this.raiseChangeEvent(event, true);\n }\n }\n unWireEvents() {\n EventHandler.remove(this.respectiveElement, 'focus', this.focusHandler);\n EventHandler.remove(this.respectiveElement, 'blur', this.focusOutHandler);\n EventHandler.remove(this.respectiveElement, 'input', this.inputHandler);\n EventHandler.remove(this.respectiveElement, 'change', this.changeHandler);\n if (this.isForm) {\n EventHandler.remove(this.formElement, 'reset', this.resetForm);\n }\n }\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also, it maintains the initial TextBox element from the DOM.\n * @method destroy\n * @return {void}\n */\n destroy() {\n this.unWireEvents();\n if (!(isBlazor() && this.isServerRendered)) {\n if (this.element.tagName === 'INPUT' && this.multiline) {\n detach(this.textboxWrapper.container.getElementsByTagName('textarea')[0]);\n this.respectiveElement = this.element;\n this.element.removeAttribute('type');\n }\n this.respectiveElement.value = this.respectiveElement.defaultValue;\n this.respectiveElement.classList.remove('e-input');\n this.removeAttributes(['aria-placeholder', 'aria-disabled', 'aria-readonly', 'aria-labelledby']);\n if (!isNullOrUndefined(this.textboxWrapper)) {\n this.textboxWrapper.container.insertAdjacentElement('afterend', this.respectiveElement);\n detach(this.textboxWrapper.container);\n }\n this.textboxWrapper = null;\n super.destroy();\n }\n else {\n this.textboxWrapper = null;\n }\n }\n /**\n * Adding the icons to the TextBox component.\n * @param { string } position - Specify the icon placement on the TextBox. Possible values are append and prepend.\n * @param { string | string[] } iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for TextBox.\n * @return {void}\n */\n addIcon(position, icons) {\n Input.addIcon(position, icons, this.textboxWrapper.container, this.respectiveElement, this.createElement);\n }\n /**\n * Gets the properties to be maintained in the persisted state.\n * @return {string}\n */\n getPersistData() {\n let keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n }\n /**\n * Adding the multiple attributes as key-value pair to the TextBox element.\n * @param { { [key: string]: string } } attributes - Specifies the attributes to be add to TextBox element.\n * @return {void}\n */\n addAttributes(attributes$$1) {\n for (let key of Object.keys(attributes$$1)) {\n if (key === 'disabled') {\n this.setProperties({ enabled: false }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: true }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n }\n else if (key === 'class') {\n this.respectiveElement.classList.add(attributes$$1[key]);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: attributes$$1[key] }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n }\n else if (key === 'rows' && this.respectiveElement.tagName === 'TEXTAREA') {\n this.respectiveElement.setAttribute(key, attributes$$1[key]);\n }\n else {\n this.respectiveElement.setAttribute(key, attributes$$1[key]);\n }\n }\n }\n /**\n * Removing the multiple attributes as key-value pair to the TextBox element.\n * @param { string[] } attributes - Specifies the attributes name to be removed from TextBox element.\n * @return {void}\n */\n removeAttributes(attributes$$1) {\n for (let key of attributes$$1) {\n if (key === 'disabled') {\n this.setProperties({ enabled: true }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: false }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: null }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n }\n else {\n this.respectiveElement.removeAttribute(key);\n }\n }\n }\n /**\n * Sets the focus to widget for interaction.\n * @returns void\n */\n focusIn() {\n if (document.activeElement !== this.respectiveElement && this.enabled) {\n this.respectiveElement.focus();\n if (this.textboxWrapper.container.classList.contains('e-input-group')\n || this.textboxWrapper.container.classList.contains('e-outline')\n || this.textboxWrapper.container.classList.contains('e-filled')) {\n addClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n }\n /**\n * Remove the focus from widget, if the widget is in focus state.\n * @returns void\n */\n focusOut() {\n if (document.activeElement === this.respectiveElement && this.enabled) {\n this.respectiveElement.blur();\n if (this.textboxWrapper.container.classList.contains('e-input-group')\n || this.textboxWrapper.container.classList.contains('e-outline')\n || this.textboxWrapper.container.classList.contains('e-filled')) {\n removeClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n }\n};\n__decorate$6([\n Property('text')\n], TextBox.prototype, \"type\", void 0);\n__decorate$6([\n Property(false)\n], TextBox.prototype, \"readonly\", void 0);\n__decorate$6([\n Property(null)\n], TextBox.prototype, \"value\", void 0);\n__decorate$6([\n Property('Never')\n], TextBox.prototype, \"floatLabelType\", void 0);\n__decorate$6([\n Property('')\n], TextBox.prototype, \"cssClass\", void 0);\n__decorate$6([\n Property(null)\n], TextBox.prototype, \"placeholder\", void 0);\n__decorate$6([\n Property('on')\n], TextBox.prototype, \"autocomplete\", void 0);\n__decorate$6([\n Property({})\n], TextBox.prototype, \"htmlAttributes\", void 0);\n__decorate$6([\n Property(false)\n], TextBox.prototype, \"multiline\", void 0);\n__decorate$6([\n Property(true)\n], TextBox.prototype, \"enabled\", void 0);\n__decorate$6([\n Property(false)\n], TextBox.prototype, \"showClearButton\", void 0);\n__decorate$6([\n Property(false)\n], TextBox.prototype, \"enablePersistence\", void 0);\n__decorate$6([\n Property(null)\n], TextBox.prototype, \"width\", void 0);\n__decorate$6([\n Event()\n], TextBox.prototype, \"created\", void 0);\n__decorate$6([\n Event()\n], TextBox.prototype, \"destroyed\", void 0);\n__decorate$6([\n Event()\n], TextBox.prototype, \"change\", void 0);\n__decorate$6([\n Event()\n], TextBox.prototype, \"blur\", void 0);\n__decorate$6([\n Event()\n], TextBox.prototype, \"focus\", void 0);\n__decorate$6([\n Event()\n], TextBox.prototype, \"input\", void 0);\nTextBox = __decorate$6([\n NotifyPropertyChanges\n], TextBox);\n\n/**\n * Uploader modules\n */\n\n/**\n * NumericTextBox all modules\n */\n\nexport { NumericTextBox, regularExpressions, createMask, applyMask, wireEvents, unwireEvents, bindClearEvent, unstrippedValue, strippedValue, maskInputFocusHandler, maskInputBlurHandler, maskInputDropHandler, mobileRemoveFunction, setMaskValue, setElementValue, maskInput, getVal, getMaskedVal, MaskUndo, MaskedTextBox, Input, TicksData, ColorRangeData, LimitData, TooltipData, Slider, regex, ErrorOption, FormValidator, FilesProp, ButtonsProps, AsyncSettings, Uploader, ColorPicker, TextBox };\n//# sourceMappingURL=ej2-inputs.es2015.js.map\n","import { Animation, Base, ChildProperty, Complex, Component, Draggable, Event, EventHandler, NotifyPropertyChanges, Property, SanitizeHtmlHelper, Touch, addClass, append, attributes, blazorTemplates, closest, compareElementParent, compile, debounce, detach, extend, formatUnit, getComponent, getUniqueID, getValue, isBlazor, isNullOrUndefined, isVisible, merge, prepend, remove, removeClass, resetBlazorTemplate, rippleEffect, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\n\nlet cssClass = {\n li: 'e-list-item',\n ul: 'e-list-parent e-ul',\n group: 'e-list-group-item',\n icon: 'e-list-icon',\n text: 'e-list-text',\n check: 'e-list-check',\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: 'e-list-url',\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: 'e-list-img',\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n};\n/**\n * Base List Generator\n */\nvar ListBase;\n(function (ListBase) {\n /**\n * Default mapped fields.\n */\n ListBase.defaultMappedFields = {\n id: 'id',\n text: 'text',\n url: 'url',\n value: 'value',\n isChecked: 'isChecked',\n enabled: 'enabled',\n expanded: 'expanded',\n selected: 'selected',\n iconCss: 'iconCss',\n child: 'child',\n isVisible: 'isVisible',\n hasChildren: 'hasChildren',\n tooltip: 'tooltip',\n htmlAttributes: 'htmlAttributes',\n urlAttributes: 'urlAttributes',\n imageAttributes: 'imageAttributes',\n imageUrl: 'imageUrl',\n groupBy: null\n };\n let defaultAriaAttributes = {\n level: 1,\n listRole: 'presentation',\n itemRole: 'presentation',\n groupItemRole: 'group',\n itemText: 'list-item',\n wrapperRole: 'presentation'\n };\n let defaultListBaseOptions = {\n showCheckBox: false,\n showIcon: false,\n enableHtmlSanitizer: false,\n expandCollapse: false,\n fields: ListBase.defaultMappedFields,\n ariaAttributes: defaultAriaAttributes,\n listClass: '',\n itemClass: '',\n processSubChild: false,\n sortOrder: 'None',\n template: null,\n groupTemplate: null,\n headerTemplate: null,\n expandIconClass: 'e-icon-collapsible',\n moduleName: 'list',\n expandIconPosition: 'Right',\n itemNavigable: false\n };\n /**\n * Function helps to created and return the UL Li element based on your data.\n * @param {{[key:string]:Object}[]|string[]} dataSource - Specifies an array of JSON or String data.\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n */\n function createList(createElement, dataSource, options, isSingleLevel) {\n let curOpt = extend({}, defaultListBaseOptions, options);\n let ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n let type = typeofData(dataSource).typeof;\n if (type === 'string' || type === 'number') {\n return createListFromArray(createElement, dataSource, isSingleLevel, options);\n }\n else {\n return createListFromJson(createElement, dataSource, options, ariaAttributes.level, isSingleLevel);\n }\n }\n ListBase.createList = createList;\n /**\n * Function helps to created an element list based on string array input .\n * @param {string[]} dataSource - Specifies an array of string data\n */\n function createListFromArray(createElement, dataSource, isSingleLevel, options) {\n let subChild = createListItemFromArray(createElement, dataSource, isSingleLevel, options);\n return generateUL(createElement, subChild, null, options);\n }\n ListBase.createListFromArray = createListFromArray;\n /**\n * Function helps to created an element list based on string array input .\n * @param {string[]} dataSource - Specifies an array of string data\n */\n function createListItemFromArray(createElement, dataSource, isSingleLevel, options) {\n let subChild = [];\n let curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n let id = generateId(); // generate id for drop-down-list option.\n for (let i = 0; i < dataSource.length; i++) {\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n let li;\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n let curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n options: curOpt\n };\n curOpt.itemCreating(curData);\n }\n if (isSingleLevel) {\n li = generateSingleLevelLI(createElement, dataSource[i], undefined, null, null, [], null, id, i, options);\n }\n else {\n li = generateLI(createElement, dataSource[i], undefined, null, null, options);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n let curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n item: li,\n options: curOpt\n };\n curOpt.itemCreated(curData);\n }\n subChild.push(li);\n }\n return subChild;\n }\n ListBase.createListItemFromArray = createListItemFromArray;\n /**\n * Function helps to created an element list based on array of JSON input .\n * @param {{[key:string]:Object}[]} dataSource - Specifies an array of JSON data.\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n */\n // tslint:disable-next-line:max-func-body-length\n function createListItemFromJson(createElement, dataSource, options, level, isSingleLevel) {\n let curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n let fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);\n let ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n let id;\n let checkboxElement = [];\n if (level) {\n ariaAttributes.level = level;\n }\n let child = [];\n let li;\n let anchorElement;\n if (dataSource && dataSource.length && !isNullOrUndefined(typeofData(dataSource).item) &&\n !typeofData(dataSource).item.hasOwnProperty(fields.id)) {\n id = generateId(); // generate id for drop-down-list option.\n }\n for (let i = 0; i < dataSource.length; i++) {\n let fieldData = getFieldValues(dataSource[i], fields);\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n let curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreating(curData);\n }\n let curItem = dataSource[i];\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], fields);\n }\n if (fieldData.hasOwnProperty(fields.id) && !isNullOrUndefined(fieldData[fields.id])) {\n id = fieldData[fields.id];\n }\n let innerEle = [];\n if (curOpt.showCheckBox) {\n if (curOpt.itemNavigable && (fieldData[fields.url] || fieldData[fields.urlAttributes])) {\n checkboxElement.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n else {\n innerEle.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n }\n if (isSingleLevel === true) {\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) && !isNullOrUndefined(fieldData[fields.iconCss])) {\n innerEle.push(createElement('span', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] }));\n }\n li = generateSingleLevelLI(createElement, curItem, fieldData, fields, curOpt.itemClass, innerEle, (curItem.hasOwnProperty('isHeader') &&\n curItem.isHeader) ? true : false, id, i, options);\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n }\n else {\n li = generateLI(createElement, curItem, fieldData, fields, curOpt.itemClass, options);\n li.classList.add(cssClass.level + '-' + ariaAttributes.level);\n li.setAttribute('aria-level', ariaAttributes.level.toString());\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (fieldData.hasOwnProperty(fields.tooltip)) {\n li.setAttribute('title', fieldData[fields.tooltip]);\n }\n if (fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n if (fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled] === false) {\n li.classList.add(cssClass.disabled);\n }\n if (fieldData.hasOwnProperty(fields.isVisible) && fieldData[fields.isVisible] === false) {\n li.style.display = 'none';\n }\n if (fieldData.hasOwnProperty(fields.imageUrl) && !isNullOrUndefined(fieldData[fields.imageUrl])\n && !curOpt.template) {\n let attr = { src: fieldData[fields.imageUrl] };\n merge(attr, fieldData[fields.imageAttributes]);\n let imageElemnt = createElement('img', { className: cssClass.image, attrs: attr });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', imageElemnt);\n }\n else {\n prepend([imageElemnt], li.firstElementChild);\n }\n }\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) &&\n !isNullOrUndefined(fieldData[fields.iconCss]) && !curOpt.template) {\n let iconElement;\n iconElement = createElement('div', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', iconElement);\n }\n else {\n prepend([iconElement], li.firstElementChild);\n }\n }\n if (innerEle.length) {\n prepend(innerEle, li.firstElementChild);\n }\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n processSubChild(createElement, fieldData, fields, dataSource, curOpt, li, ariaAttributes.level);\n }\n if (anchorElement) {\n addClass([li], [cssClass.navigable]);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n let curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n item: li,\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreated(curData);\n }\n checkboxElement = [];\n child.push(li);\n }\n return child;\n }\n ListBase.createListItemFromJson = createListItemFromJson;\n /**\n * Function helps to created an element list based on array of JSON input .\n * @param {{[key:string]:Object}[]} dataSource - Specifies an array of JSON data.\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n */\n function createListFromJson(createElement, dataSource, options, level, isSingleLevel) {\n let curOpt = extend({}, defaultListBaseOptions, options);\n let li = createListItemFromJson(createElement, dataSource, options, level, isSingleLevel);\n return generateUL(createElement, li, curOpt.listClass, options);\n }\n ListBase.createListFromJson = createListFromJson;\n /**\n * Return the next or previous visible element.\n * @param {Element[]|NodeList} elementArray - An element array to find next or previous element.\n * @param {Element} li - An element to find next or previous after this element.\n * @param {boolean} isPrevious? - Specify when the need get previous element from array.\n */\n function getSiblingLI(elementArray, element, isPrevious) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n if (!elementArray || !elementArray.length) {\n return void 0;\n }\n let siblingLI;\n let liIndex;\n let liCollections = Array.prototype.slice.call(elementArray);\n if (element) {\n liIndex = indexOf(element, liCollections);\n }\n else {\n liIndex = (isPrevious === true ? liCollections.length : -1);\n }\n siblingLI = liCollections[liIndex + (isPrevious === true ? -1 : 1)];\n while (siblingLI && (!isVisible(siblingLI) || siblingLI.classList.contains(cssClass.disabled))) {\n liIndex = liIndex + (isPrevious === true ? -1 : 1);\n siblingLI = liCollections[liIndex];\n }\n return siblingLI;\n }\n ListBase.getSiblingLI = getSiblingLI;\n /**\n * Return the index of the li element\n * @param {Element} item - An element to find next or previous after this element.\n * @param {Element[]|NodeList} elementArray - An element array to find index of given li.\n */\n function indexOf(item, elementArray) {\n if (!elementArray || !item) {\n return void 0;\n }\n else {\n let liCollections = elementArray;\n liCollections = Array.prototype.slice.call(elementArray);\n return liCollections.indexOf(item);\n }\n }\n ListBase.indexOf = indexOf;\n /**\n * Returns the grouped data from given dataSource.\n * @param {{[key:string]:Object}[]} dataSource - The JSON data which is necessary to process.\n * @param {FieldsMapping} fields - Fields that are mapped from the data source.\n * @param {SortOrder='None'} sortOrder- Specifies final result sort order.\n */\n function groupDataSource(dataSource, fields, sortOrder = 'None') {\n let curFields = extend({}, ListBase.defaultMappedFields, fields);\n let cusQuery = new Query().group(curFields.groupBy);\n // need to remove once sorting issues fixed in DataManager\n cusQuery = addSorting(sortOrder, 'key', cusQuery);\n let ds = getDataSource(dataSource, cusQuery);\n dataSource = [];\n for (let j = 0; j < ds.length; j++) {\n let itemObj = ds[j].items;\n let grpItem = {};\n let hdr = 'isHeader';\n grpItem[curFields.text] = ds[j].key;\n grpItem[hdr] = true;\n let newtext = curFields.text;\n if (newtext === 'id') {\n newtext = 'text';\n grpItem[newtext] = ds[j].key;\n }\n grpItem._id = 'group-list-item-' + (ds[j].key ?\n ds[j].key.toString().trim() : 'undefined');\n grpItem.items = itemObj;\n dataSource.push(grpItem);\n for (let k = 0; k < itemObj.length; k++) {\n dataSource.push(itemObj[k]);\n }\n }\n return dataSource;\n }\n ListBase.groupDataSource = groupDataSource;\n /**\n * Returns a sorted query object.\n * @param {SortOrder} sortOrder - Specifies that sort order.\n * @param {string} sortBy - Specifies sortBy fields.\n * @param {Query=new Query()} query - Pass if any existing query.\n */\n function addSorting(sortOrder, sortBy, query = new Query()) {\n if (sortOrder === 'Ascending') {\n query.sortBy(sortBy, 'ascending', true);\n }\n else if (sortOrder === 'Descending') {\n query.sortBy(sortBy, 'descending', true);\n }\n else {\n for (let i = 0; i < query.queries.length; i++) {\n if (query.queries[i].fn === 'onSortBy') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n }\n ListBase.addSorting = addSorting;\n /**\n * Return an array of JSON Data that processed based on queries.\n * @param {{[key:string]:Object}[]} dataSource - Specifies local JSON data source.\n * @param {Query} query - Specifies query that need to process.\n */\n function getDataSource(dataSource, query) {\n // tslint:disable-next-line\n return new DataManager(dataSource)\n .executeLocal(query);\n }\n ListBase.getDataSource = getDataSource;\n /**\n * Created JSON data based the UL and LI element\n * @param {HTMLElement|Element} element - UL element that need to convert as a JSON\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function createJsonFromElement(element, options) {\n let curOpt = extend({}, defaultListBaseOptions, options);\n let fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);\n let curEle = element.cloneNode(true);\n let jsonAr = [];\n curEle.classList.add('json-parent');\n let childs = curEle.querySelectorAll('.json-parent>li');\n curEle.classList.remove('json-parent');\n for (let i = 0; i < childs.length; i++) {\n let li = childs[i];\n let anchor = li.querySelector('a');\n let ul = li.querySelector('ul');\n let json = {};\n let childNodes = anchor ? anchor.childNodes : li.childNodes;\n let keys = Object.keys(childNodes);\n for (let i = 0; i < childNodes.length; i++) {\n if (!(childNodes[Number(keys[i])]).hasChildNodes()) {\n json[fields.text] = childNodes[Number(keys[i])].textContent;\n }\n }\n let attributes$$1 = getAllAttributes(li);\n if (attributes$$1.id) {\n json[fields.id] = attributes$$1.id;\n delete attributes$$1.id;\n }\n else {\n json[fields.id] = generateId();\n }\n if (Object.keys(attributes$$1).length) {\n json[fields.htmlAttributes] = attributes$$1;\n }\n if (anchor) {\n attributes$$1 = getAllAttributes(anchor);\n if (Object.keys(attributes$$1).length) {\n json[fields.urlAttributes] = attributes$$1;\n }\n }\n if (ul) {\n json[fields.child] = createJsonFromElement(ul, options);\n }\n jsonAr.push(json);\n }\n return jsonAr;\n }\n ListBase.createJsonFromElement = createJsonFromElement;\n function typeofData(data) {\n let match = { typeof: null, item: null };\n for (let i = 0; i < data.length; i++) {\n if (!isNullOrUndefined(data[i])) {\n return match = { typeof: typeof data[i], item: data[i] };\n }\n }\n return match;\n }\n function setAttribute(element, elementAttributes) {\n let attr = {};\n merge(attr, elementAttributes);\n if (attr.class) {\n addClass([element], attr.class.split(' '));\n delete attr.class;\n }\n attributes(element, attr);\n }\n function getAllAttributes(element) {\n let attributes$$1 = {};\n let attr = element.attributes;\n for (let index = 0; index < attr.length; index++) {\n attributes$$1[attr[index].nodeName] = attr[index].nodeValue;\n }\n return attributes$$1;\n }\n /**\n * Created UL element from content template.\n * @param {string} template - that need to convert and generate li element.\n * @param {{[key:string]:Object}[]} dataSource - Specifies local JSON data source.\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function renderContentTemplate(createElement, template, dataSource, fields, options) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n let ulElement = createElement('ul', { className: cssClass.ul, attrs: { role: 'presentation' } });\n let curOpt = extend({}, defaultListBaseOptions, options);\n let curFields = extend({}, ListBase.defaultMappedFields, fields);\n let compiledString = compile(template);\n let liCollection = [];\n let id = generateId(); // generate id for drop-down-list option.\n for (let i = 0; i < dataSource.length; i++) {\n let fieldData = getFieldValues(dataSource[i], curFields);\n let curItem = dataSource[i];\n let isHeader = curItem.isHeader;\n let value = fieldData[curFields.value];\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n let curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreating(curData);\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], curFields);\n value = fieldData[curFields.value];\n }\n let li = createElement('li', {\n id: id + '-' + i,\n className: isHeader ? cssClass.group : cssClass.li, attrs: { role: 'presentation' }\n });\n if (isHeader) {\n li.innerText = fieldData[curFields.text];\n }\n else {\n const currentID = isHeader ? curOpt.groupTemplateID : curOpt.templateID;\n append(compiledString(curItem, null, null, currentID, !!curOpt.isStringTemplate), li);\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n let curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n item: li,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreated(curData);\n }\n liCollection.push(li);\n }\n append(liCollection, ulElement);\n return ulElement;\n }\n ListBase.renderContentTemplate = renderContentTemplate;\n /**\n * Created header items from group template.\n * @param {string} template - that need to convert and generate li element.\n * @param {{[key:string]:Object}[]} dataSource - Specifies local JSON data source.\n * @param {FieldsMapping} fields - Specifies fields for mapping the dataSource.\n * @param {Element[]} headerItems? - Specifies listbase header items.\n */\n function renderGroupTemplate(groupTemplate, groupDataSource, fields, headerItems, options) {\n let compiledString = compile(groupTemplate);\n let curFields = extend({}, ListBase.defaultMappedFields, fields);\n let curOpt = extend({}, defaultListBaseOptions, options);\n let category = curFields.groupBy;\n for (let header of headerItems) {\n let headerData = {};\n headerData[category] = header.textContent;\n header.innerHTML = '';\n append(compiledString(headerData, null, null, curOpt.groupTemplateID, !!curOpt.isStringTemplate), header);\n }\n return headerItems;\n }\n ListBase.renderGroupTemplate = renderGroupTemplate;\n function generateId() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n ListBase.generateId = generateId;\n function processSubChild(createElement, fieldData, fields, ds, options, element, level) {\n // Get SubList\n let subDS = fieldData[fields.child] || [];\n let hasChildren = fieldData[fields.hasChildren];\n //Create Sub child\n if (subDS.length) {\n hasChildren = true;\n element.classList.add(cssClass.hasChild);\n if (options.processSubChild) {\n let subLi = createListFromJson(createElement, subDS, options, ++level);\n element.appendChild(subLi);\n }\n }\n // Create expand and collapse node\n if (!!options.expandCollapse && hasChildren && !options.template) {\n element.firstElementChild.classList.add(cssClass.iconWrapper);\n let expandElement = options.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', { className: 'e-icons ' + options.expandIconClass })], element.querySelector('.' + cssClass.textContent));\n }\n }\n function generateSingleLevelLI(createElement, item, fieldData, fields, className, innerElements, grpLI, id, index, options) {\n let curOpt = extend({}, defaultListBaseOptions, options);\n let ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n let text = item;\n let value = item;\n let dataSource;\n if (typeof item !== 'string' && typeof item !== 'number' && typeof item !== 'boolean') {\n dataSource = item;\n text = (typeof fieldData[fields.text] === 'boolean' || typeof fieldData[fields.text] === 'number') ?\n fieldData[fields.text] : (fieldData[fields.text] || '');\n value = fieldData[fields.value];\n }\n let elementID;\n if (!isNullOrUndefined(dataSource) && !isNullOrUndefined(fieldData[fields.id])\n && fieldData[fields.id] !== '') {\n elementID = id;\n }\n else {\n elementID = id + '-' + index;\n }\n let li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n id: elementID, attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n if (dataSource && fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled].toString() === 'false') {\n li.classList.add(cssClass.disabled);\n }\n if (grpLI) {\n li.innerText = text;\n }\n else {\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n if (dataSource && fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n if (innerElements.length && !curOpt.itemNavigable) {\n append(innerElements, li);\n }\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n li.appendChild(anchorTag(createElement, dataSource, fields, text, innerElements, curOpt.itemNavigable));\n }\n else {\n if (innerElements.length && curOpt.itemNavigable) {\n append(innerElements, li);\n }\n li.appendChild(document.createTextNode(text));\n }\n }\n return li;\n }\n function getModuleClass(moduleName) {\n let moduleClass;\n return moduleClass = {\n li: `e-${moduleName}-item`,\n ul: `e-${moduleName}-parent e-ul`,\n group: `e-${moduleName}-group-item`,\n icon: `e-${moduleName}-icon`,\n text: `e-${moduleName}-text`,\n check: `e-${moduleName}-check`,\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: `e-${moduleName}-url`,\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: `e-${moduleName}-img`,\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable',\n };\n }\n function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation) {\n let fieldData = getFieldValues(dataSource, fields);\n let attr = { href: fieldData[fields.url] };\n if (fieldData.hasOwnProperty(fields.urlAttributes) && fieldData[fields.urlAttributes]) {\n merge(attr, fieldData[fields.urlAttributes]);\n attr.href = fieldData[fields.url] ? fieldData[fields.url] :\n fieldData[fields.urlAttributes].href;\n }\n let anchorTag;\n if (!isFullNavigation) {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url, innerHTML: text });\n }\n else {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url });\n let anchorWrapper = createElement('div', { className: cssClass.anchorWrap });\n if (innerElements && innerElements.length) {\n append(innerElements, anchorWrapper);\n }\n anchorWrapper.appendChild(document.createTextNode(text));\n append([anchorWrapper], anchorTag);\n }\n setAttribute(anchorTag, attr);\n return anchorTag;\n }\n /* tslint:disable:align */\n function generateLI(createElement, item, fieldData, fields, className, options) {\n let curOpt = extend({}, defaultListBaseOptions, options);\n let ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n let text = item;\n let uID;\n let grpLI;\n let dataSource;\n if (typeof item !== 'string' && typeof item !== 'number') {\n dataSource = item;\n text = fieldData[fields.text] || '';\n // tslint:disable-next-line\n uID = (isNullOrUndefined(fieldData['_id'])) ? fieldData[fields.id] : fieldData['_id'];\n grpLI = (item.hasOwnProperty('isHeader') && item.isHeader)\n ? true : false;\n }\n if (options && options.enableHtmlSanitizer) {\n text = SanitizeHtmlHelper.sanitize(text);\n }\n let li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n !isNullOrUndefined(uID) ? li.setAttribute('data-uid', uID) : li.setAttribute('data-uid', generateId());\n const blazId = 'BlazId';\n if (options && !!options.removeBlazorID\n && typeof item === 'object'\n && item.hasOwnProperty(blazId)) {\n delete item[blazId];\n }\n if (grpLI && options && options.groupTemplate) {\n let compiledString = compile(options.groupTemplate);\n append(compiledString(item, null, null, curOpt.groupTemplateID, !!curOpt.isStringTemplate), li);\n }\n else if (!grpLI && options && options.template) {\n let compiledString = compile(options.template);\n append(compiledString(item, null, null, curOpt.templateID, !!curOpt.isStringTemplate), li);\n }\n else {\n let innerDiv = createElement('div', {\n className: cssClass.textContent,\n attrs: (ariaAttributes.wrapperRole !== '' ? { role: ariaAttributes.wrapperRole } : {})\n });\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n innerDiv.appendChild(anchorTag(createElement, dataSource, fields, text, null, curOpt.itemNavigable));\n }\n else {\n let element = createElement('span', {\n className: cssClass.text,\n attrs: (ariaAttributes.itemText !== '' ? { role: ariaAttributes.itemText } : {})\n });\n if (options && options.enableHtmlSanitizer) {\n element.innerText = SanitizeHtmlHelper.sanitize(text);\n }\n else {\n element.innerHTML = text;\n }\n innerDiv.appendChild(element);\n }\n li.appendChild(innerDiv);\n }\n return li;\n }\n /**\n * Returns UL element based on the given LI element.\n * @param {HTMLElement[]} liElement - Specifies array of LI element.\n * @param {string} className? - Specifies class name that need to be added in UL element.\n * @param {ListBaseOptions} options? - Specifies ListBase options.\n */\n function generateUL(createElement, liElement, className, options) {\n let curOpt = extend({}, defaultListBaseOptions, options);\n let ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n cssClass = getModuleClass(curOpt.moduleName);\n let ulElement = createElement('ul', {\n className: cssClass.ul + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.listRole !== '' ? { role: ariaAttributes.listRole } : {})\n });\n append(liElement, ulElement);\n return ulElement;\n }\n ListBase.generateUL = generateUL;\n /**\n * Returns LI element with additional DIV tag based on the given LI element.\n * @param {liElement} liElement - Specifies LI element.\n * @param {string} className? - Specifies class name that need to be added in created DIV element.\n * @param {ListBaseOptions} options? - Specifies ListBase options.\n */\n function generateIcon(createElement, liElement, className, options) {\n let curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n let expandElement = curOpt.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', {\n className: 'e-icons ' + curOpt.expandIconClass + ' ' +\n (isNullOrUndefined(className) ? '' : className)\n })], liElement.querySelector('.' + cssClass.textContent));\n return liElement;\n }\n ListBase.generateIcon = generateIcon;\n})(ListBase || (ListBase = {}));\n/**\n * Used to get dataSource item from complex data using fields.\n * @param {{[key:string]:Object}|string[]|string} dataSource - Specifies an JSON or String data.\n * @param {FieldsMapping} fields - Fields that are mapped from the dataSource.\n */\nfunction getFieldValues(dataItem, fields) {\n let fieldData = {};\n if (isNullOrUndefined(dataItem) || typeof (dataItem) === 'string' || typeof (dataItem) === 'number'\n || !isNullOrUndefined(dataItem.isHeader)) {\n return dataItem;\n }\n else {\n for (let field of Object.keys(fields)) {\n let dataField = fields[field];\n let value = !isNullOrUndefined(dataField) &&\n typeof (dataField) === 'string' ? getValue(dataField, dataItem) : undefined;\n if (!isNullOrUndefined(value)) {\n fieldData[dataField] = value;\n }\n }\n }\n return fieldData;\n}\n\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// Effect Configuration Effect[] = [fromViewBackward,fromViewForward,toViewBackward,toviewForward];\nconst effectsConfig = {\n 'None': [],\n 'SlideLeft': ['SlideRightOut', 'SlideLeftOut', 'SlideLeftIn', 'SlideRightIn'],\n 'SlideDown': ['SlideTopOut', 'SlideBottomOut', 'SlideBottomIn', 'SlideTopIn'],\n 'Zoom': ['FadeOut', 'FadeZoomOut', 'FadeZoomIn', 'FadeIn'],\n 'Fade': ['FadeOut', 'FadeOut', 'FadeIn', 'FadeIn']\n};\nconst effectsRTLConfig = {\n 'None': [],\n 'SlideLeft': ['SlideLeftOut', 'SlideRightOut', 'SlideRightIn', 'SlideLeftIn'],\n 'SlideDown': ['SlideBottomOut', 'SlideTopOut', 'SlideTopIn', 'SlideBottomIn'],\n 'Zoom': ['FadeZoomOut', 'FadeOut', 'FadeIn', 'FadeZoomIn'],\n 'Fade': ['FadeOut', 'FadeOut', 'FadeIn', 'FadeIn']\n};\n// don't use space in classnames.\nconst classNames = {\n root: 'e-listview',\n hover: 'e-hover',\n selected: 'e-active',\n focused: 'e-focused',\n parentItem: 'e-list-parent',\n listItem: 'e-list-item',\n listIcon: 'e-list-icon',\n textContent: 'e-text-content',\n listItemText: 'e-list-text',\n groupListItem: 'e-list-group-item',\n hasChild: 'e-has-child',\n view: 'e-view',\n header: 'e-list-header',\n headerText: 'e-headertext',\n headerTemplateText: 'e-headertemplate-text',\n text: 'e-text',\n disable: 'e-disabled',\n content: 'e-content',\n icon: 'e-icons',\n backIcon: 'e-icon-back',\n checkboxWrapper: 'e-checkbox-wrapper',\n checkbox: 'e-checkbox',\n checked: 'e-check',\n checklist: 'e-checklist',\n checkboxIcon: 'e-frame',\n checkboxRight: 'e-checkbox-right',\n checkboxLeft: 'e-checkbox-left',\n listviewCheckbox: 'e-listview-checkbox',\n itemCheckList: 'e-checklist',\n virtualElementContainer: 'e-list-virtualcontainer'\n};\nconst LISTVIEW_TEMPLATE_PROPERTY = 'Template';\nconst LISTVIEW_GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nconst LISTVIEW_HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nconst swipeVelocity = 0.5;\n/**\n * Represents the field settings of the ListView.\n */\nclass FieldSettings extends ChildProperty {\n}\n__decorate([\n Property('id')\n], FieldSettings.prototype, \"id\", void 0);\n__decorate([\n Property('text')\n], FieldSettings.prototype, \"text\", void 0);\n__decorate([\n Property('isChecked')\n], FieldSettings.prototype, \"isChecked\", void 0);\n__decorate([\n Property('isVisible')\n], FieldSettings.prototype, \"isVisible\", void 0);\n__decorate([\n Property('enabled')\n], FieldSettings.prototype, \"enabled\", void 0);\n__decorate([\n Property('iconCss')\n], FieldSettings.prototype, \"iconCss\", void 0);\n__decorate([\n Property('child')\n], FieldSettings.prototype, \"child\", void 0);\n__decorate([\n Property('tooltip')\n], FieldSettings.prototype, \"tooltip\", void 0);\n__decorate([\n Property('groupBy')\n], FieldSettings.prototype, \"groupBy\", void 0);\n__decorate([\n Property('text')\n], FieldSettings.prototype, \"sortBy\", void 0);\n__decorate([\n Property('htmlAttributes')\n], FieldSettings.prototype, \"htmlAttributes\", void 0);\n__decorate([\n Property('tableName')\n], FieldSettings.prototype, \"tableName\", void 0);\n/**\n * Represents the EJ2 ListView control.\n * ```html\n *
    \n *
      \n *
    • Favorite
    • \n *
    • Documents
    • \n *
    • Downloads
    • \n *
    \n *
    \n * ```\n * ```typescript\n * var listviewObject = new ListView({});\n * listviewObject.appendTo(\"#listview\");\n * ```\n */\nlet ListView = class ListView extends Component {\n /**\n * Constructor for creating the widget\n */\n constructor(options, element) {\n super(options, element);\n this.itemReRender = false;\n this.previousSelectedItems = [];\n this.hiddenItems = [];\n this.enabledItems = [];\n this.disabledItems = [];\n }\n /**\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'htmlAttributes':\n this.setHTMLAttribute();\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'enable':\n this.setEnable();\n break;\n case 'width':\n case 'height':\n this.setSize();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'fields':\n this.listBaseOption.fields = this.fields.properties;\n if (this.enableVirtualization) {\n if (!(this.isServerRendered && isBlazor())) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n }\n else {\n if (isBlazor() && this.isServerRendered && !this.enableVirtualization) {\n this.itemReRender = true;\n }\n this.reRender();\n }\n break;\n case 'headerTitle':\n if (!this.curDSLevel.length) {\n this.header(this.headerTitle, false);\n }\n break;\n case 'query':\n if (this.enableVirtualization) {\n if (!(isBlazor() && this.isServerRendered)) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n }\n else {\n if (isBlazor() && this.isServerRendered && !this.enableVirtualization) {\n this.itemReRender = true;\n }\n this.reRender();\n }\n break;\n case 'showHeader':\n this.header(this.headerTitle, false);\n break;\n case 'enableVirtualization':\n if (!isNullOrUndefined(this.contentContainer)) {\n detach(this.contentContainer);\n }\n this.refresh();\n break;\n case 'showCheckBox':\n case 'checkBoxPosition':\n if (!isBlazor() || !this.isServerRendered) {\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.setCheckbox();\n }\n }\n break;\n case 'dataSource':\n if (this.enableVirtualization) {\n if (!(this.isServerRendered && isBlazor())) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n }\n else {\n if (isBlazor() && this.isServerRendered && !this.enableVirtualization) {\n this.itemReRender = true;\n }\n this.reRender();\n }\n break;\n case 'sortOrder':\n case 'showIcon':\n if (isBlazor() && this.isServerRendered) {\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('ItemSorting');\n //tslint:enable\n }\n else {\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.listBaseOption.showIcon = this.showIcon;\n this.curViewDS = this.getSubDS();\n this.resetCurrentList();\n }\n }\n break;\n default:\n break;\n }\n }\n }\n // Model Changes\n setHTMLAttribute() {\n if (Object.keys(this.htmlAttributes).length) {\n attributes(this.element, this.htmlAttributes);\n }\n }\n setCSSClass(oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' ').filter((css) => css));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' ').filter((css) => css));\n }\n }\n setSize() {\n this.element.style.height = formatUnit(this.height);\n this.element.style.width = formatUnit(this.width);\n this.isWindow = this.element.clientHeight ? false : true;\n }\n setEnable() {\n this.enableElement(this.element, this.enable);\n }\n setEnableRTL() {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n }\n enableElement(element, isEnabled) {\n if (isEnabled) {\n element.classList.remove(classNames.disable);\n }\n else {\n element.classList.add(classNames.disable);\n }\n }\n // Support Component Functions\n header(text, showBack) {\n if (isBlazor() && this.isServerRendered) {\n let args = { HeaderText: text, BackButton: showBack };\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('HeaderTitle', args);\n // tslint:disable\n }\n else {\n if (this.headerEle === undefined && this.showHeader) {\n if (this.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle) }, true);\n }\n this.headerEle = this.createElement('div', { className: classNames.header });\n let innerHeaderEle = this.createElement('span', { className: classNames.headerText, innerHTML: this.headerTitle });\n let textEle = this.createElement('div', { className: classNames.text, innerHTML: innerHeaderEle.outerHTML });\n let hedBackButton = this.createElement('div', {\n className: classNames.icon + ' ' + classNames.backIcon + ' e-but-back',\n attrs: { style: 'display:none;' }\n });\n this.headerEle.appendChild(hedBackButton);\n this.headerEle.appendChild(textEle);\n if (this.headerTemplate) {\n let compiledString = compile(this.headerTemplate);\n let headerTemplateEle = this.createElement('div', { className: classNames.headerTemplateText });\n append(compiledString({}, null, null, this.LISTVIEW_HEADERTEMPLATE_ID), headerTemplateEle);\n append([headerTemplateEle], this.headerEle);\n this.updateBlazorTemplates(false, true, true);\n }\n if (this.headerTemplate && this.headerTitle) {\n textEle.classList.add('header');\n }\n this.element.classList.add('e-has-header');\n prepend([this.headerEle], this.element);\n }\n else if (this.headerEle) {\n if (this.showHeader) {\n this.headerEle.style.display = '';\n let textEle = this.headerEle.querySelector('.' + classNames.headerText);\n let hedBackButton = this.headerEle.querySelector('.' + classNames.backIcon);\n if (this.enableHtmlSanitizer) {\n text = SanitizeHtmlHelper.sanitize(text);\n }\n textEle.innerHTML = text;\n if (this.headerTemplate && showBack) {\n textEle.parentElement.classList.remove('header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('nested-header');\n }\n if (this.headerTemplate && !showBack) {\n textEle.parentElement.classList.add('header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.remove('nested-header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('header');\n }\n if (showBack === true) {\n hedBackButton.style.display = '';\n }\n else {\n hedBackButton.style.display = 'none';\n }\n }\n else {\n this.headerEle.style.display = 'none';\n }\n }\n }\n }\n // Animation Related Functions\n switchView(fromView, toView, reverse) {\n if (fromView && toView) {\n let fPos = fromView.style.position;\n let overflow = (this.element.style.overflow !== 'hidden') ? this.element.style.overflow : '';\n fromView.style.position = 'absolute';\n fromView.classList.add('e-view');\n let anim;\n let duration = this.animation.duration;\n if (this.animation.effect) {\n anim = (this.enableRtl ? effectsRTLConfig[this.animation.effect] : effectsConfig[this.animation.effect]);\n }\n else {\n let slideLeft = 'SlideLeft';\n anim = effectsConfig[slideLeft];\n reverse = this.enableRtl;\n duration = 0;\n }\n this.element.style.overflow = 'hidden';\n this.aniObj.animate(fromView, {\n name: (reverse === true ? anim[0] : anim[1]),\n duration: duration,\n timingFunction: this.animation.easing,\n end: (model) => {\n fromView.style.display = 'none';\n this.element.style.overflow = overflow;\n fromView.style.position = fPos;\n fromView.classList.remove('e-view');\n }\n });\n toView.style.display = '';\n this.aniObj.animate(toView, {\n name: (reverse === true ? anim[2] : anim[3]),\n duration: duration,\n timingFunction: this.animation.easing,\n end: () => {\n this.trigger('actionComplete');\n }\n });\n this.curUL = toView;\n }\n }\n preRender() {\n this.listBaseOption = {\n template: this.template,\n headerTemplate: this.headerTemplate,\n groupTemplate: this.groupTemplate, expandCollapse: true, listClass: '',\n ariaAttributes: {\n itemRole: 'option', listRole: 'presentation', itemText: '',\n groupItemRole: 'group', wrapperRole: 'presentation'\n },\n fields: this.fields.properties, sortOrder: this.sortOrder, showIcon: this.showIcon,\n itemCreated: this.renderCheckbox.bind(this),\n templateID: `${this.element.id}${LISTVIEW_TEMPLATE_PROPERTY}`,\n groupTemplateID: `${this.element.id}${LISTVIEW_GROUPTEMPLATE_PROPERTY}`,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n removeBlazorID: true\n };\n this.initialization();\n }\n updateLiElementHeight() {\n let liContainer = this.element.querySelector('.' + classNames.virtualElementContainer);\n if (liContainer.children[0]) {\n this.liElementHeight = liContainer.children[0].getBoundingClientRect().height;\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('LiElementHeight', this.liElementHeight);\n // tslint:enable\n }\n }\n initialization() {\n if (isBlazor() && this.isServerRendered && this.enableVirtualization) {\n let ulContainer = this.element.querySelector('.' + classNames.virtualElementContainer);\n if (ulContainer !== null) {\n if (this.height === '') {\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('SetComponentHeight', window.innerHeight);\n // tslint:enable\n this.isWindow = true;\n ulContainer.scrollIntoView();\n }\n if (this.height.toString().indexOf('%') !== -1) {\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('SetContainerHeight', this.element.getBoundingClientRect().height.toString());\n // tslint:enable\n }\n if (ulContainer.children[0]) {\n this.liElementHeight = ulContainer.children[0].getBoundingClientRect().height;\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('LiElementHeight', this.liElementHeight);\n // tslint:enable\n }\n }\n }\n this.curDSLevel = [];\n this.animateOptions = {};\n this.curViewDS = [];\n this.currentLiElements = [];\n this.isNestedList = false;\n this.selectedData = [];\n this.selectedId = [];\n this.LISTVIEW_TEMPLATE_ID = `${this.element.id}${LISTVIEW_TEMPLATE_PROPERTY}`;\n this.LISTVIEW_GROUPTEMPLATE_ID = `${this.element.id}${LISTVIEW_GROUPTEMPLATE_PROPERTY}`;\n this.LISTVIEW_HEADERTEMPLATE_ID = `${this.element.id}${LISTVIEW_HEADERTEMPLATE_PROPERTY}`;\n this.aniObj = new Animation(this.animateOptions);\n this.removeElement(this.curUL);\n this.removeElement(this.ulElement);\n this.removeElement(this.headerEle);\n this.removeElement(this.contentContainer);\n this.curUL = this.ulElement = this.liCollection = this.headerEle = this.contentContainer = undefined;\n }\n renderCheckbox(args) {\n if (args.item.classList.contains(classNames.hasChild)) {\n this.isNestedList = true;\n }\n if (this.showCheckBox && this.isValidLI(args.item)) {\n let checkboxElement;\n let fieldData;\n checkboxElement = createCheckBox(this.createElement, false, {\n checked: false, enableRtl: this.enableRtl,\n cssClass: classNames.listviewCheckbox\n });\n checkboxElement.setAttribute('role', 'checkbox');\n let frameElement = checkboxElement.querySelector('.' + classNames.checkboxIcon);\n args.item.classList.add(classNames.itemCheckList);\n args.item.firstElementChild.classList.add(classNames.checkbox);\n if (typeof this.dataSource[0] !== 'string' && typeof this.dataSource[0] !== 'number') {\n fieldData = getFieldValues(args.curData, this.listBaseOption.fields);\n if (fieldData[this.listBaseOption.fields.isChecked]) {\n this.checkInternally(args, checkboxElement);\n }\n }\n else if (((typeof this.dataSource[0] === 'string' ||\n typeof this.dataSource[0] === 'number') && this.selectedData.indexOf(args.text) !== -1)) {\n this.checkInternally(args, checkboxElement);\n }\n checkboxElement.setAttribute('aria-checked', frameElement.classList.contains(classNames.checked) ? 'true' : 'false');\n if (this.checkBoxPosition === 'Left') {\n checkboxElement.classList.add(classNames.checkboxLeft);\n args.item.firstElementChild.classList.add(classNames.checkboxLeft);\n args.item.firstElementChild.insertBefore(checkboxElement, args.item.firstElementChild.childNodes[0]);\n }\n else {\n checkboxElement.classList.add(classNames.checkboxRight);\n args.item.firstElementChild.classList.add(classNames.checkboxRight);\n args.item.firstElementChild.appendChild(checkboxElement);\n }\n this.currentLiElements.push(args.item);\n this.checkBoxPosition === 'Left' ? this.virtualCheckBox = args.item.firstElementChild.children[0] :\n this.virtualCheckBox = args.item.firstElementChild.lastElementChild;\n }\n }\n checkInternally(args, checkboxElement) {\n args.item.classList.add(classNames.selected);\n args.item.setAttribute('aria-selected', 'true');\n checkboxElement.querySelector('.' + classNames.checkboxIcon).classList.add(classNames.checked);\n checkboxElement.setAttribute('aria-checked', 'true');\n }\n /**\n * Checks the specific list item by passing the unchecked fields as an argument to this method.\n * @param {Fields | HTMLElement | Element} item - It accepts Fields or HTML list element as an argument.\n */\n checkItem(item) {\n this.toggleCheckBase(item, true);\n }\n toggleCheckBase(item, checked) {\n if (this.showCheckBox) {\n let liElement = item;\n if (item instanceof Object && item.constructor !== HTMLLIElement) {\n liElement = this.getLiFromObjOrElement(item);\n }\n if (!isNullOrUndefined(liElement)) {\n let checkboxIcon = liElement.querySelector('.' + classNames.checkboxIcon);\n checked ? liElement.classList.add(classNames.selected) : liElement.classList.remove(classNames.selected);\n liElement.setAttribute('aria-selected', checked ? 'true' : 'false');\n checked ? checkboxIcon.classList.add(classNames.checked) : checkboxIcon.classList.remove(classNames.checked);\n checkboxIcon.parentElement.setAttribute('aria-checked', checked ? 'true' : 'false');\n }\n this.setSelectedItemData(liElement);\n }\n }\n /**\n * Uncheck the specific list item by passing the checked fields as an argument to this method.\n * @param {Fields | HTMLElement | Element} item - It accepts Fields or HTML list element as an argument.\n */\n uncheckItem(item) {\n this.toggleCheckBase(item, false);\n }\n /**\n * Checks all the unchecked items in the ListView.\n */\n checkAllItems() {\n this.toggleAllCheckBase(true);\n }\n /**\n * Uncheck all the checked items in ListView.\n */\n uncheckAllItems() {\n this.toggleAllCheckBase(false);\n }\n toggleAllCheckBase(checked) {\n if (this.showCheckBox) {\n for (let i = 0; i < this.liCollection.length; i++) {\n let checkIcon = this.liCollection[i].querySelector('.' + classNames.checkboxIcon);\n if (checkIcon) {\n if (checked) {\n if (!checkIcon.classList.contains(classNames.checked)) {\n this.checkItem(this.liCollection[i]);\n }\n }\n else {\n if (checkIcon.classList.contains(classNames.checked)) {\n this.uncheckItem(this.liCollection[i]);\n }\n }\n }\n }\n if (this.enableVirtualization) {\n this.virtualizationModule.checkedItem(checked);\n }\n }\n }\n setCheckbox() {\n if (this.showCheckBox) {\n let liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.listItem));\n let args = {\n item: undefined, curData: undefined, dataSource: undefined, fields: undefined,\n options: undefined, text: ''\n };\n for (let i = 0; i < liCollection.length; i++) {\n let element = liCollection[i];\n args.item = element;\n args.curData = this.getItemData(element);\n if (element.querySelector('.' + classNames.checkboxWrapper)) {\n this.removeElement(element.querySelector('.' + classNames.checkboxWrapper));\n }\n this.renderCheckbox(args);\n if (args.item.classList.contains(classNames.selected)) {\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n }\n }\n }\n else {\n let liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.itemCheckList));\n for (let i = 0; i < liCollection.length; i++) {\n let element = liCollection[i];\n element.classList.remove(classNames.selected);\n element.firstElementChild.classList.remove(classNames.checkbox);\n this.removeElement(element.querySelector('.' + classNames.checkboxWrapper));\n }\n if (this.selectedItems) {\n this.selectedItems.item.classList.add(classNames.selected);\n }\n }\n }\n /**\n * Refresh the height of the list item.\n */\n refreshItemHeight() {\n this.virtualizationModule.refreshItemHeight();\n }\n clickHandler(e) {\n let target = e.target;\n let classList = target.classList;\n let closestElement;\n if (classList.contains(classNames.backIcon) || classList.contains(classNames.headerText)) {\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n }\n else {\n let li = closest(target.parentNode, '.' + classNames.listItem);\n if (li === null) {\n li = target;\n }\n this.removeFocus();\n if (this.enable && this.showCheckBox && this.isValidLI(li)) {\n if (e.target.classList.contains(classNames.checkboxIcon)) {\n li.classList.add(classNames.focused);\n if (isNullOrUndefined(li.querySelector('.' + classNames.checked))) {\n let args = {\n curData: undefined, dataSource: undefined, fields: undefined, options: undefined,\n text: undefined, item: li\n };\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n }\n else {\n this.uncheckItem(li);\n li.classList.add(classNames.focused);\n }\n if (this.enableVirtualization) {\n this.virtualizationModule.setCheckboxLI(li, e);\n }\n if (e) {\n let eventArgs = this.selectEventData(li, e);\n let checkIcon = li.querySelector('.' + classNames.checkboxIcon);\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n this.trigger('select', eventArgs);\n }\n }\n else if (li.classList.contains(classNames.hasChild)) {\n this.removeHover();\n this.removeSelect();\n this.removeSelect(li);\n this.setSelectLI(li, e);\n li.classList.remove(classNames.selected);\n }\n else {\n this.setCheckboxLI(li, e);\n }\n }\n else {\n this.setSelectLI(li, e);\n }\n closestElement = closest(e.target, 'li');\n if (closestElement !== undefined) {\n if (closestElement.classList.contains('e-has-child') &&\n !e.target.parentElement.classList.contains('e-listview-checkbox')) {\n closestElement.classList.add(classNames.disable);\n }\n }\n }\n if (isBlazor() && this.isServerRendered && this.enableVirtualization) {\n let ulElementContainer = this.element.querySelector('.' + classNames.virtualElementContainer);\n if (ulElementContainer.querySelector('.e-active')) {\n // tslint:disable-next-line:no-any\n let selectedElements = ulElementContainer.querySelectorAll('.e-active');\n // tslint:enable-next-line:no-any\n if (this.showCheckBox) {\n for (let i = 0; i < selectedElements.length; i++) {\n // tslint:disable-next-line:no-any\n if (!this.previousSelectedItems.includes(selectedElements[i].getAttribute('data-uid'))) {\n this.previousSelectedItems.push(selectedElements[i].getAttribute('data-uid'));\n }\n // tslint:enable-next-line:no-any\n }\n }\n else {\n this.previousSelectedItems[0] = (ulElementContainer.querySelector('.e-active').getAttribute('data-uid'));\n }\n }\n if (ulElementContainer.querySelector('.e-focused')) {\n // tslint:disable-next-line:no-any\n let focusElement = ulElementContainer.querySelector('.e-focused');\n // tslint:enable-next-line:no-any\n if (!focusElement.classList.contains('e-active')) {\n let focusElementId = focusElement.getAttribute('data-uid');\n // tslint:disable-next-line:no-any\n if (this.previousSelectedItems.includes(focusElementId)) {\n let selectedElement1 = this.previousSelectedItems.slice(0, this.previousSelectedItems.indexOf(focusElementId));\n let selectedElement2 = this.previousSelectedItems.\n slice(this.previousSelectedItems.indexOf(focusElementId) + 1, this.previousSelectedItems.length);\n this.previousSelectedItems = selectedElement1.concat(selectedElement2);\n }\n // tslint:enable-next-line:no-any\n }\n }\n }\n }\n removeElement(element) {\n return element && element.parentNode && element.parentNode.removeChild(element);\n }\n hoverHandler(e) {\n let curLi = closest(e.target.parentNode, '.' + classNames.listItem);\n this.setHoverLI(curLi);\n }\n leaveHandler(e) {\n this.removeHover();\n }\n ;\n homeKeyHandler(e, end) {\n if (Object.keys(this.dataSource).length && this.curUL) {\n if (this.selectedItems) {\n (this.selectedItems.item).setAttribute('aria-selected', 'false');\n }\n let li = this.curUL.querySelectorAll('.' + classNames.listItem);\n let focusedElement = this.curUL.querySelector('.' + classNames.focused) ||\n this.curUL.querySelector('.' + classNames.selected);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n focusedElement.classList.remove(classNames.selected);\n }\n }\n let index = !end ? 0 : li.length - 1;\n if (li[index].classList.contains(classNames.hasChild) || this.showCheckBox) {\n li[index].classList.add(classNames.focused);\n }\n else {\n this.setSelectLI(li[index], e);\n }\n if (li[index]) {\n this.element.setAttribute('aria-activedescendant', li[index].id.toString());\n }\n else {\n this.element.removeAttribute('aria-activedescendant');\n }\n }\n }\n onArrowKeyDown(e, prev) {\n let siblingLI;\n let li;\n let hasChild = !isNullOrUndefined(this.curUL.querySelector('.' + classNames.hasChild)) ? true : false;\n if (hasChild || this.showCheckBox) {\n li = this.curUL.querySelector('.' + classNames.focused) || this.curUL.querySelector('.' + classNames.selected);\n siblingLI = ListBase.getSiblingLI(this.curUL.querySelectorAll('.' + classNames.listItem), li, prev);\n if (!isNullOrUndefined(siblingLI)) {\n if (li) {\n li.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n li.classList.remove(classNames.selected);\n }\n }\n if (siblingLI.classList.contains(classNames.hasChild) || this.showCheckBox) {\n siblingLI.classList.add(classNames.focused);\n }\n else {\n this.setSelectLI(siblingLI, e);\n }\n }\n }\n else {\n li = this.curUL.querySelector('.' + classNames.selected);\n siblingLI = ListBase.getSiblingLI(this.curUL.querySelectorAll('.' + classNames.listItem), li, prev);\n this.setSelectLI(siblingLI, e);\n }\n if (siblingLI) {\n this.element.setAttribute('aria-activedescendant', siblingLI.id.toString());\n }\n else {\n this.element.removeAttribute('aria-activedescendant');\n }\n return siblingLI;\n }\n arrowKeyHandler(e, prev) {\n e.preventDefault();\n if (Object.keys(this.dataSource).length && this.curUL) {\n let siblingLI = this.onArrowKeyDown(e, prev);\n let elementTop = this.element.getBoundingClientRect().top;\n let elementHeight = this.element.getBoundingClientRect().height;\n let firstItemBounds = this.curUL.querySelector('.' + classNames.listItem).getBoundingClientRect();\n let heightDiff;\n let groupItemBounds;\n if (this.fields.groupBy) {\n groupItemBounds = this.curUL.querySelector('.' + classNames.groupListItem).getBoundingClientRect();\n }\n if (siblingLI) {\n let siblingTop = siblingLI.getBoundingClientRect().top;\n let siblingHeight = siblingLI.getBoundingClientRect().height;\n if (!prev) {\n let height = this.isWindow ? window.innerHeight : elementHeight;\n heightDiff = this.isWindow ? (siblingTop + siblingHeight) :\n ((siblingTop - elementTop) + siblingHeight);\n if (heightDiff > height) {\n this.isWindow ? window.scroll(0, pageYOffset + (heightDiff - height)) :\n this.element.scrollTop = this.element.scrollTop + (heightDiff - height);\n }\n }\n else {\n heightDiff = this.isWindow ? siblingTop : (siblingTop - elementTop);\n if (heightDiff < 0) {\n this.isWindow ? window.scroll(0, pageYOffset + heightDiff) :\n this.element.scrollTop = this.element.scrollTop + heightDiff;\n }\n }\n }\n else if (this.enableVirtualization && prev && this.virtualizationModule.uiFirstIndex) {\n this.onUIScrolled = () => {\n this.onArrowKeyDown(e, prev);\n this.onUIScrolled = undefined;\n };\n heightDiff = this.virtualizationModule.listItemHeight;\n this.isWindow ? window.scroll(0, pageYOffset - heightDiff) :\n this.element.scrollTop = this.element.scrollTop - heightDiff;\n }\n else if (prev) {\n if (this.showHeader && this.headerEle) {\n let topHeight = groupItemBounds ? groupItemBounds.top : firstItemBounds.top;\n let headerBounds = this.headerEle.getBoundingClientRect();\n heightDiff = headerBounds.top < 0 ? (headerBounds.height - topHeight) : 0;\n this.isWindow ? window.scroll(0, pageYOffset - heightDiff)\n : this.element.scrollTop = 0;\n }\n else if (this.fields.groupBy) {\n heightDiff = this.isWindow ? (groupItemBounds.top < 0 ? groupItemBounds.top : 0) :\n (elementTop - firstItemBounds.top) + groupItemBounds.height;\n this.isWindow ? window.scroll(0, pageYOffset + heightDiff) :\n this.element.scrollTop = this.element.scrollTop - heightDiff;\n }\n }\n }\n }\n enterKeyHandler(e) {\n if (Object.keys(this.dataSource).length && this.curUL) {\n let hasChild = !isNullOrUndefined(this.curUL.querySelector('.' + classNames.hasChild)) ? true : false;\n let li = this.curUL.querySelector('.' + classNames.focused);\n if (hasChild && li) {\n li.classList.remove(classNames.focused);\n if (this.showCheckBox) {\n this.removeSelect();\n this.removeSelect(li);\n this.removeHover();\n }\n this.setSelectLI(li, e);\n }\n }\n }\n spaceKeyHandler(e) {\n if (this.enable && this.showCheckBox && Object.keys(this.dataSource).length && this.curUL) {\n let li = this.curUL.querySelector('.' + classNames.focused);\n if (!isNullOrUndefined(li) && isNullOrUndefined(li.querySelector('.' + classNames.checked))) {\n let args = {\n curData: undefined, dataSource: undefined, fields: undefined, options: undefined,\n text: undefined, item: li\n };\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n }\n else {\n this.uncheckItem(li);\n }\n }\n }\n keyActionHandler(e) {\n switch (e.keyCode) {\n case 36:\n this.homeKeyHandler(e);\n break;\n case 35:\n this.homeKeyHandler(e, true);\n break;\n case 40:\n this.arrowKeyHandler(e);\n break;\n case 38:\n this.arrowKeyHandler(e, true);\n break;\n case 13:\n this.enterKeyHandler(e);\n break;\n case 8:\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n break;\n case 32:\n this.spaceKeyHandler(e);\n break;\n }\n }\n swipeActionHandler(e) {\n if (e.swipeDirection === 'Right' && e.velocity > swipeVelocity && e.originalEvent.type === 'touchend') {\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n }\n }\n focusout() {\n if (Object.keys(this.dataSource).length && this.curUL) {\n let focusedElement = this.curUL.querySelector('.' + classNames.focused);\n let activeElement = this.curUL.querySelector('[aria-selected = true]');\n if (focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n if (activeElement && !this.showCheckBox) {\n activeElement.classList.add(classNames.selected);\n }\n }\n }\n }\n wireEvents() {\n EventHandler.add(this.element, 'keydown', this.keyActionHandler, this);\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n if (!this.enableVirtualization) {\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'mouseout', this.leaveHandler, this);\n }\n EventHandler.add(this.element, 'focusout', this.focusout, this);\n this.touchModule = new Touch(this.element, { swipe: this.swipeActionHandler.bind(this) });\n }\n unWireEvents() {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n if (!this.enableVirtualization) {\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'mouseout', this.leaveHandler);\n }\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'mouseout', this.leaveHandler);\n this.touchModule.destroy();\n }\n removeFocus() {\n let focusedLI = this.element.querySelectorAll('.' + classNames.focused);\n for (let ele of focusedLI) {\n ele.classList.remove(classNames.focused);\n }\n }\n removeHover() {\n let hoverLI = this.element.querySelector('.' + classNames.hover);\n if (hoverLI) {\n hoverLI.classList.remove(classNames.hover);\n }\n }\n removeSelect(li) {\n if (isNullOrUndefined(li)) {\n let selectedLI = this.element.querySelectorAll('.' + classNames.selected);\n for (let ele of selectedLI) {\n if (this.showCheckBox && ele.querySelector('.' + classNames.checked)) {\n continue;\n }\n else {\n ele.setAttribute('aria-selected', 'false');\n ele.classList.remove(classNames.selected);\n }\n }\n }\n else {\n li.classList.remove(classNames.selected);\n li.setAttribute('aria-selected', 'false');\n }\n }\n isValidLI(li) {\n return (li && li.classList.contains(classNames.listItem)\n && !li.classList.contains(classNames.groupListItem)\n && !li.classList.contains(classNames.disable));\n }\n setCheckboxLI(li, e) {\n if (this.isValidLI(li) && this.enable && this.showCheckBox) {\n if (this.curUL.querySelector('.' + classNames.focused)) {\n this.curUL.querySelector('.' + classNames.focused).classList.remove(classNames.focused);\n }\n li.classList.add(classNames.focused);\n let checkboxElement = li.querySelector('.' + classNames.checkboxWrapper);\n let checkIcon = checkboxElement.querySelector('.' + classNames.checkboxIcon + '.' + classNames.icon);\n this.removeHover();\n if (!checkIcon.classList.contains(classNames.checked)) {\n checkIcon.classList.add(classNames.checked);\n li.classList.add(classNames.selected);\n li.setAttribute('aria-selected', 'true');\n }\n else {\n checkIcon.classList.remove(classNames.checked);\n li.classList.remove(classNames.selected);\n li.setAttribute('aria-selected', 'false');\n }\n checkboxElement.setAttribute('aria-checked', checkIcon.classList.contains(classNames.checked) ?\n 'true' : 'false');\n let eventArgs = this.selectEventData(li, e);\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n if (this.enableVirtualization) {\n this.virtualizationModule.setCheckboxLI(li, e);\n }\n this.trigger('select', eventArgs);\n this.setSelectedItemData(li);\n this.renderSubList(li);\n }\n }\n selectEventData(li, e) {\n let data = this.getItemData(li);\n let fieldData = getFieldValues(data, this.listBaseOption.fields);\n let selectedItem;\n if (!isNullOrUndefined(data)\n && typeof this.dataSource[0] === 'string' || typeof this.dataSource[0] === 'number') {\n selectedItem = { item: li, text: li && li.innerText.trim(), data: this.dataSource };\n }\n else {\n selectedItem = { item: li, text: fieldData && fieldData[this.listBaseOption.fields.text], data: data };\n }\n let eventArgs = {};\n merge(eventArgs, selectedItem);\n if (e) {\n merge(eventArgs, { isInteracted: true, event: e, index: this.curUL && Array.prototype.indexOf.call(this.curUL.children, li) });\n }\n return eventArgs;\n }\n setSelectedItemData(li) {\n let data = this.getItemData(li);\n let fieldData = getFieldValues(data, this.listBaseOption.fields);\n if (!isNullOrUndefined(data) && ((typeof this.dataSource[0] === 'string') ||\n (typeof this.dataSource[0] === 'number'))) {\n this.selectedItems = {\n item: li,\n text: li && li.innerText.trim(),\n data: this.dataSource\n };\n }\n else {\n this.selectedItems = {\n item: li,\n text: fieldData && fieldData[this.listBaseOption.fields.text],\n data: data\n };\n }\n }\n setSelectLI(li, e) {\n if (this.isValidLI(li) && !li.classList.contains(classNames.selected) && this.enable) {\n if (!this.showCheckBox) {\n this.removeSelect();\n }\n li.classList.add(classNames.selected);\n li.setAttribute('aria-selected', 'true');\n this.removeHover();\n this.setSelectedItemData(li);\n if (this.enableVirtualization) {\n this.virtualizationModule.setSelectLI(li, e);\n }\n let eventArgs = this.selectEventData(li, e);\n this.trigger('select', eventArgs);\n this.selectedLI = li;\n this.renderSubList(li);\n }\n }\n setHoverLI(li) {\n if (this.isValidLI(li) && !li.classList.contains(classNames.hover) && this.enable) {\n let lastLi = this.element.querySelectorAll('.' + classNames.hover);\n if (lastLi && lastLi.length) {\n removeClass(lastLi, classNames.hover);\n }\n if (!li.classList.contains(classNames.selected) || this.showCheckBox) {\n li.classList.add(classNames.hover);\n }\n }\n }\n //Data Source Related Functions\n getSubDS() {\n let levelKeys = this.curDSLevel;\n if (levelKeys.length) {\n let ds = this.localData;\n for (let key of levelKeys) {\n let field = {};\n field[this.fields.id] = key;\n this.curDSJSON = this.findItemFromDS(ds, field);\n let fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);\n ds = this.curDSJSON ? fieldData[this.fields.child] : ds;\n }\n return ds;\n }\n return this.localData;\n }\n getItemData(li) {\n let dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n let fields = this.getElementUID(li);\n let curDS;\n if (isNullOrUndefined(this.element.querySelector('.' + classNames.hasChild)) && this.fields.groupBy) {\n curDS = this.curViewDS;\n }\n else {\n curDS = dataSource;\n }\n return this.findItemFromDS(curDS, fields);\n }\n findItemFromDS(dataSource, fields, parent) {\n let resultJSON;\n if (dataSource && dataSource.length && fields) {\n dataSource.some((data) => {\n let fieldData = getFieldValues(data, this.listBaseOption.fields);\n //(!(fid) || id === fid) && (!(ftext) || text === ftext) && (!!fid || !!ftext)\n if ((fields[this.fields.id] || fields[this.fields.text]) &&\n (!fields[this.fields.id] || (!isNullOrUndefined(fieldData[this.fields.id]) &&\n fieldData[this.fields.id].toString()) === fields[this.fields.id].toString()) &&\n (!fields[this.fields.text] || fieldData[this.fields.text] === fields[this.fields.text])) {\n resultJSON = (parent ? dataSource : data);\n }\n else if (typeof data !== 'object' && dataSource.indexOf(data) !== -1) {\n resultJSON = (parent ? dataSource : data);\n }\n else if (!isNullOrUndefined(fields[this.fields.id]) && isNullOrUndefined(fieldData[this.fields.id])) {\n let li = this.element.querySelector('[data-uid=\"'\n + fields[this.fields.id] + '\"]');\n if (li && li.innerText.trim() === fieldData[this.fields.text]) {\n resultJSON = data;\n }\n }\n else if (fieldData.hasOwnProperty(this.fields.child) && fieldData[this.fields.child].length) {\n resultJSON = this.findItemFromDS(fieldData[this.fields.child], fields, parent);\n }\n return !!resultJSON;\n });\n }\n else {\n resultJSON = dataSource;\n }\n return resultJSON;\n }\n getQuery() {\n let columns = [];\n let query = (this.query ? this.query : new Query());\n if (!this.query) {\n for (let column of Object.keys(this.fields.properties)) {\n if (column !== 'tableName' && !!(this.fields[column]) &&\n this.fields[column] !==\n ListBase.defaultMappedFields[column]\n && columns.indexOf(this.fields[column]) === -1) {\n columns.push(this.fields[column]);\n }\n }\n query.select(columns);\n if (this.fields.properties.hasOwnProperty('tableName')) {\n query.from(this.fields.tableName);\n }\n }\n return query;\n }\n setViewDataSource(dataSource = this.localData) {\n if (dataSource && this.fields.groupBy) {\n if (this.sortOrder !== 'None') {\n this.curViewDS = ListBase.groupDataSource(ListBase.getDataSource(dataSource, ListBase.addSorting(this.sortOrder, this.fields.sortBy)), this.listBaseOption.fields, this.sortOrder);\n }\n else {\n this.curViewDS = ListBase.groupDataSource(dataSource, this.listBaseOption.fields, this.sortOrder);\n }\n }\n else if (dataSource && this.sortOrder !== 'None') {\n this.curViewDS = ListBase.getDataSource(dataSource, ListBase.addSorting(this.sortOrder, this.fields.sortBy));\n }\n else {\n this.curViewDS = dataSource;\n }\n }\n isInAnimation() {\n return this.curUL.classList.contains('.e-animate');\n }\n setLocalData() {\n this.trigger('actionBegin');\n let listViewComponent = this;\n if (this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(this.getQuery()).then((e) => {\n if (this.isDestroyed) {\n return;\n }\n this.localData = e.result;\n if (!this.isServerRendered || (!isBlazor())) {\n listViewComponent.removeElement(listViewComponent.contentContainer);\n }\n this.renderList();\n this.trigger('actionComplete', e);\n }).catch((e) => {\n if (this.isDestroyed) {\n return;\n }\n this.trigger('actionFailure', e);\n });\n }\n else if (!this.dataSource || !this.dataSource.length) {\n let ul = this.element.querySelector('ul');\n if (ul) {\n remove(ul);\n this.setProperties({ dataSource: ListBase.createJsonFromElement(ul) }, true);\n this.localData = this.dataSource;\n this.renderList();\n this.trigger('actionComplete', { data: this.localData });\n }\n }\n else {\n this.localData = this.dataSource;\n this.renderList();\n this.trigger('actionComplete', { data: this.localData });\n }\n }\n reRender() {\n if (!isBlazor() || !this.isServerRendered || this.enableVirtualization) {\n this.resetBlazorTemplates();\n this.removeElement(this.headerEle);\n this.removeElement(this.ulElement);\n this.removeElement(this.contentContainer);\n if (Object.keys(window).indexOf('ejsInterop') === -1) {\n this.element.innerHTML = '';\n }\n this.headerEle = this.ulElement = this.liCollection = undefined;\n this.header();\n }\n this.setLocalData();\n }\n resetCurrentList() {\n this.resetBlazorTemplates();\n this.setViewDataSource(this.curViewDS);\n this.contentContainer.innerHTML = '';\n this.createList();\n this.renderIntoDom(this.curUL);\n }\n setAttributes(liElements) {\n for (let i = 0; i < liElements.length; i++) {\n let element = liElements[i];\n if (element.classList.contains('e-list-item')) {\n element.setAttribute('id', this.element.id + '_' + element.getAttribute('data-uid'));\n element.setAttribute('aria-selected', 'false');\n element.setAttribute('tabindex', '-1');\n }\n }\n }\n createList() {\n this.currentLiElements = [];\n this.isNestedList = false;\n this.ulElement = this.curUL = ListBase.createList(this.createElement, this.curViewDS, this.listBaseOption);\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n this.setAttributes(this.liCollection);\n this.updateBlazorTemplates(true);\n }\n resetBlazorTemplates() {\n // tslint:disable-next-line:no-any\n let templateCollection = blazorTemplates;\n if (this.template) {\n templateCollection[this.LISTVIEW_TEMPLATE_ID] = [];\n resetBlazorTemplate(this.LISTVIEW_TEMPLATE_ID, LISTVIEW_TEMPLATE_PROPERTY);\n }\n if (this.groupTemplate) {\n templateCollection[this.LISTVIEW_GROUPTEMPLATE_ID] = [];\n resetBlazorTemplate(this.LISTVIEW_GROUPTEMPLATE_ID, LISTVIEW_GROUPTEMPLATE_PROPERTY);\n }\n if (this.headerTemplate) {\n resetBlazorTemplate(this.LISTVIEW_HEADERTEMPLATE_ID, LISTVIEW_HEADERTEMPLATE_PROPERTY);\n }\n }\n updateBlazorTemplates(template = false, headerTemplate = false, resetExistingElements = false) {\n if (this.template && template && !this.enableVirtualization) {\n updateBlazorTemplate(this.LISTVIEW_TEMPLATE_ID, LISTVIEW_TEMPLATE_PROPERTY, this, resetExistingElements);\n }\n if (this.groupTemplate && template && !this.enableVirtualization) {\n updateBlazorTemplate(this.LISTVIEW_GROUPTEMPLATE_ID, LISTVIEW_GROUPTEMPLATE_PROPERTY, this, resetExistingElements);\n }\n if (this.headerTemplate && headerTemplate) {\n updateBlazorTemplate(this.LISTVIEW_HEADERTEMPLATE_ID, LISTVIEW_HEADERTEMPLATE_PROPERTY, this, resetExistingElements);\n }\n }\n exceptionEvent(e) {\n this.trigger('actionFailure', e);\n }\n UpdateCurrentUL() {\n this.ulElement = this.curUL = this.element.querySelector('.' + classNames.parentItem);\n if (this.curUL) {\n // tslint:disable\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n // tslint:enable\n }\n }\n removeActiveClass() {\n let listViewComponent = this;\n setTimeout(() => {\n let ulContainer = listViewComponent.element.querySelector('.' + classNames.virtualElementContainer);\n for (let i = 0; i < ulContainer.childElementCount; i++) {\n let selectedElement = ulContainer.children[i];\n let elementIndex;\n let hiddenElementIndex;\n if (listViewComponent.showCheckBox) {\n if (listViewComponent.previousSelectedItems.length > 0) {\n for (let j = 0; j < listViewComponent.previousSelectedItems.length; j++) {\n if (selectedElement.getAttribute('data-uid') === listViewComponent.previousSelectedItems[j]) {\n selectedElement.classList.add('e-active');\n selectedElement.setAttribute('aria-selected', 'true');\n if (selectedElement.querySelector('.e-frame.e-icons')) {\n selectedElement.querySelector('.e-frame.e-icons').classList.add('e-check');\n }\n elementIndex = i;\n }\n else {\n if (elementIndex !== i) {\n selectedElement.classList.remove('e-active');\n selectedElement.removeAttribute('aria-selected');\n if (selectedElement.querySelector('.e-check')) {\n selectedElement.querySelector('.e-check').classList.remove('e-check');\n }\n }\n }\n }\n }\n else {\n selectedElement.classList.remove('e-active');\n selectedElement.removeAttribute('aria-selected');\n if (selectedElement.querySelector('.e-check')) {\n selectedElement.querySelector('.e-check').classList.remove('e-check');\n }\n }\n }\n else {\n if (selectedElement.getAttribute('data-uid') === listViewComponent.previousSelectedItems[0]) {\n selectedElement.classList.add('e-active');\n selectedElement.setAttribute('aria-selected', 'true');\n }\n else {\n selectedElement.classList.remove('e-active');\n selectedElement.removeAttribute('aria-selected');\n }\n }\n if (listViewComponent.hiddenItems.length > 0) {\n for (let k = 0; k < listViewComponent.hiddenItems.length; k++) {\n if (selectedElement.getAttribute('data-uid') === listViewComponent.previousSelectedItems[k]) {\n selectedElement.style.display = 'none';\n hiddenElementIndex = i;\n }\n else {\n if (hiddenElementIndex !== i) {\n selectedElement.style.display = null;\n }\n }\n }\n }\n if (listViewComponent.enabledItems.length > 0) {\n for (let x = 0; x < listViewComponent.enabledItems.length; x++) {\n if (selectedElement.getAttribute('data-uid') === listViewComponent.enabledItems[x]) {\n if (selectedElement.classList.contains('e-disabled')) {\n selectedElement.classList.remove('e-disabled');\n }\n }\n }\n }\n if (listViewComponent.disabledItems.length > 0) {\n for (let y = 0; y < listViewComponent.disabledItems.length; y++) {\n if (selectedElement.getAttribute('data-uid') === listViewComponent.disabledItems[y]) {\n if (!selectedElement.classList.contains('e-disabled')) {\n selectedElement.classList.add('e-disabled');\n }\n }\n }\n }\n }\n }, 200);\n }\n renderingNestedList() {\n let ul = closest(this.liElement.parentNode, '.' + classNames.parentItem);\n let ctrlId = this.element.id;\n let ulElement = document.getElementById(ctrlId);\n let currentListItem = ulElement.getElementsByTagName('UL')[ulElement.getElementsByTagName('UL').length - 1];\n this.switchView(ul, currentListItem);\n this.liElement = null;\n }\n renderSubList(li) {\n this.liElement = li;\n let uID = li.getAttribute('data-uid');\n if (li.classList.contains(classNames.hasChild) && uID) {\n let ul = closest(li.parentNode, '.' + classNames.parentItem);\n let ele = this.element.querySelector('[pid=\\'' + uID + '\\']');\n this.curDSLevel.push(uID);\n this.setViewDataSource(this.getSubDS());\n if (!ele) {\n let data = this.curViewDS;\n if (isBlazor() && this.isServerRendered) {\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('ListChildDataSource', data);\n // tslint:enable\n }\n else {\n ele = ListBase.createListFromJson(this.createElement, data, this.listBaseOption, this.curDSLevel.length);\n let lists = ele.querySelectorAll('.' + classNames.listItem);\n this.setAttributes(lists);\n ele.setAttribute('pID', uID);\n ele.style.display = 'none';\n this.renderIntoDom(ele);\n this.updateBlazorTemplates(true);\n }\n }\n if (!isBlazor() || !this.isServerRendered || this.enableVirtualization) {\n this.switchView(ul, ele);\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n if (this.selectedItems) {\n let fieldData = getFieldValues(this.selectedItems.data, this.listBaseOption.fields);\n this.header((fieldData[this.listBaseOption.fields.text]), true);\n }\n this.selectedLI = undefined;\n }\n }\n renderIntoDom(ele) {\n this.contentContainer.appendChild(ele);\n }\n renderList(data) {\n this.setViewDataSource(data);\n if (!isBlazor() || !this.isServerRendered || this.enableVirtualization) {\n if (this.enableVirtualization) {\n if (Object.keys(this.dataSource).length) {\n if (!(isBlazor() && this.isServerRendered)) {\n if ((this.template || this.groupTemplate) && !this.virtualizationModule.isNgTemplate()) {\n this.listBaseOption.template = null;\n this.listBaseOption.groupTemplate = null;\n this.listBaseOption.itemCreated = this.virtualizationModule.createUIItem.bind(this.virtualizationModule);\n }\n }\n }\n this.virtualizationModule.uiVirtualization();\n }\n else {\n this.createList();\n this.contentContainer = this.createElement('div', { className: classNames.content });\n this.element.appendChild(this.contentContainer);\n this.renderIntoDom(this.ulElement);\n }\n }\n }\n getElementUID(obj) {\n let fields = {};\n if (obj instanceof Element) {\n fields[this.fields.id] = obj.getAttribute('data-uid');\n }\n else {\n fields = obj;\n }\n return fields;\n }\n /**\n * Initializes the ListView component rendering.\n */\n render() {\n if (!isBlazor() || !this.isServerRendered) {\n this.element.classList.add(classNames.root);\n attributes(this.element, { role: 'list', tabindex: '0' });\n this.setCSSClass();\n this.setEnableRTL();\n this.setEnable();\n this.setSize();\n this.wireEvents();\n this.header();\n this.setLocalData();\n this.setHTMLAttribute();\n }\n else {\n this.initBlazor(true);\n }\n this.rippleFn = rippleEffect(this.element, {\n selector: '.' + classNames.listItem\n });\n this.renderComplete();\n }\n initBlazor(firstRender) {\n if (firstRender === null) {\n firstRender = false;\n }\n this.setLocalData();\n this.setViewDataSource(this.localData);\n this.contentContainer = this.element.querySelector('.' + classNames.content);\n if (firstRender) {\n this.wireEvents();\n }\n }\n /**\n * It is used to destroy the ListView component.\n */\n destroy() {\n this.resetBlazorTemplates();\n this.unWireEvents();\n let classAr = [classNames.root, classNames.disable, 'e-rtl',\n 'e-has-header', 'e-lib'].concat(this.cssClass.split(' ').filter((css) => css));\n removeClass([this.element], classAr);\n this.element.removeAttribute('role');\n this.element.removeAttribute('tabindex');\n this.curUL = this.ulElement = this.liCollection = this.headerEle = undefined;\n if (!(isBlazor() && this.isServerRendered)) {\n this.element.innerHTML = '';\n super.destroy();\n }\n else {\n this.element.style.display = 'none';\n }\n }\n /**\n * Switches back from the navigated sub list item.\n */\n back() {\n let pID = this.curDSLevel[this.curDSLevel.length - 1];\n if (pID === undefined || this.isInAnimation()) {\n return;\n }\n this.curDSLevel.pop();\n this.setViewDataSource(this.getSubDS());\n let toUL = this.element.querySelector('[data-uid=\\'' + pID + '\\']');\n let fromUL = this.curUL;\n if (!toUL) {\n this.createList();\n this.renderIntoDom(this.ulElement);\n toUL = this.curUL;\n }\n else {\n if (isBlazor() && this.isServerRendered && this.enableVirtualization) {\n toUL = toUL.parentElement.parentElement.parentElement;\n }\n else {\n toUL = toUL.parentElement;\n }\n }\n let fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);\n let text = fieldData[this.fields.text];\n this.switchView(fromUL, toUL, true);\n this.removeFocus();\n let li = this.element.querySelector('[data-uid=\\'' + pID + '\\']');\n li.classList.remove(classNames.disable);\n li.classList.add(classNames.focused);\n if (this.showCheckBox && li.querySelector('.' + classNames.checkboxIcon).classList.contains(classNames.checked)) {\n li.setAttribute('aria-selected', 'true');\n }\n else {\n li.classList.remove(classNames.selected);\n li.setAttribute('aria-selected', 'false');\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n if (this.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle) }, true);\n }\n this.header((this.curDSLevel.length ? text : this.headerTitle), (this.curDSLevel.length ? true : false));\n }\n /**\n * Selects the list item from the ListView by passing the elements or field object.\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n selectItem(item) {\n if (this.enableVirtualization) {\n this.virtualizationModule.selectItem(item);\n }\n else if (this.showCheckBox) {\n this.setCheckboxLI(this.getLiFromObjOrElement(item));\n }\n else {\n isNullOrUndefined(item) ? this.removeSelect() : this.setSelectLI(this.getLiFromObjOrElement(item));\n }\n }\n getLiFromObjOrElement(obj) {\n let li;\n let dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n if (!isNullOrUndefined(obj)) {\n if (typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') {\n if (obj instanceof Element) {\n let uid = obj.getAttribute('data-uid').toString();\n for (let i = 0; i < this.liCollection.length; i++) {\n if (this.liCollection[i].getAttribute('data-uid').toString() === uid) {\n li = this.liCollection[i];\n break;\n }\n }\n }\n else {\n Array.prototype.some.call(this.curUL.querySelectorAll('.' + classNames.listItem), (item) => {\n if (item.innerText.trim() === obj.toString()) {\n li = item;\n return true;\n }\n else {\n return false;\n }\n });\n }\n }\n else {\n let resultJSON = this.getItemData(obj);\n let fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n li = this.element.querySelector('[data-uid=\"'\n + fieldData[this.fields.id] + '\"]');\n if (!this.enableVirtualization && isNullOrUndefined(li)) {\n let curLi = this.element.querySelectorAll('.' + classNames.listItem);\n for (let i = 0; i < curLi.length; i++) {\n if (curLi[i].innerText.trim() === fieldData[this.fields.text]) {\n li = curLi[i];\n }\n }\n }\n }\n }\n }\n return li;\n }\n /**\n * Selects multiple list items from the ListView.\n * @param {Fields[] | HTMLElement[] | Element[]} item - We can pass array of\n * elements or array of fields Object with ID and Text fields.\n */\n selectMultipleItems(item) {\n if (!isNullOrUndefined(item)) {\n for (let i = 0; i < item.length; i++) {\n if (!isNullOrUndefined(item[i])) {\n this.selectItem(item[i]);\n }\n }\n }\n }\n getParentId() {\n let parentId = [];\n if (this.isNestedList) {\n for (let i = this.curDSLevel.length - 1; i >= 0; i--) {\n parentId.push(this.curDSLevel[i]);\n }\n }\n return parentId;\n }\n /**\n * Gets the details of the currently selected item from the list items.\n * @blazorType ListSelectedItem\n */\n getSelectedItems() {\n // tslint:disable-next-line:no-any\n let finalValue;\n let isCompleted = false;\n this.selectedId = [];\n let dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n if (this.enableVirtualization && !isCompleted) {\n finalValue = this.virtualizationModule.getSelectedItems();\n isCompleted = true;\n }\n else if (this.showCheckBox && !isCompleted) {\n // tslint:disable-next-line:no-any\n let liCollection = this.curUL.getElementsByClassName(classNames.selected);\n let liTextCollection = [];\n let liDataCollection = [];\n this.selectedId = [];\n let dataParent = [];\n for (let i = 0; i < liCollection.length; i++) {\n if (typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') {\n liTextCollection.push(liCollection[i].innerText.trim());\n }\n else {\n let tempData = this.getItemData(liCollection[i]);\n let fieldData = getFieldValues(tempData, this.listBaseOption.fields);\n if (this.isNestedList) {\n dataParent.push({ data: tempData, parentId: this.getParentId() });\n }\n else {\n liDataCollection.push(tempData);\n }\n if (fieldData) {\n liTextCollection.push(fieldData[this.listBaseOption.fields.text]);\n this.selectedId.push(fieldData[this.listBaseOption.fields.id]);\n }\n else {\n liTextCollection.push(undefined);\n this.selectedId.push(undefined);\n }\n }\n }\n if ((typeof dataSource[0] === 'string'\n || typeof dataSource[0] === 'number')\n && !isCompleted) {\n finalValue = { item: liCollection, data: dataSource, text: liTextCollection };\n isCompleted = true;\n }\n if (this.isNestedList && !isCompleted) {\n finalValue = { item: liCollection, data: dataParent, text: liTextCollection };\n isCompleted = true;\n }\n else if (!isCompleted) {\n finalValue = { item: liCollection, data: liDataCollection, text: liTextCollection };\n isCompleted = true;\n }\n }\n else if (!isCompleted) {\n let liElement = this.element.getElementsByClassName(classNames.selected)[0];\n let fieldData = getFieldValues(this.getItemData(liElement), this.listBaseOption.fields);\n if ((typeof dataSource[0] === 'string'\n || typeof dataSource[0] === 'number')\n && !isCompleted) {\n finalValue = (!isNullOrUndefined(liElement)) ? {\n item: liElement, data: dataSource,\n text: liElement.innerText.trim()\n } : undefined;\n isCompleted = true;\n }\n else if (!isCompleted) {\n if (isNullOrUndefined(fieldData) || isNullOrUndefined(liElement)) {\n finalValue = undefined;\n isCompleted = true;\n }\n else {\n this.selectedId.push(fieldData[this.listBaseOption.fields.id]);\n finalValue = {\n text: fieldData[this.listBaseOption.fields.text], item: liElement,\n data: this.getItemData(liElement)\n };\n isCompleted = true;\n }\n }\n }\n if (isBlazor()) {\n // tslint:disable-next-line:no-any\n return this.blazorGetSelectedItems(finalValue);\n }\n else {\n return finalValue;\n }\n }\n // tslint:disable-next-line:no-any\n blazorGetSelectedItems(finalGetSelectedItem) {\n let blazorSelectedItem = {\n data: [],\n index: [],\n parentId: [],\n text: []\n };\n if (!isNullOrUndefined(finalGetSelectedItem)) {\n if (!isNullOrUndefined(finalGetSelectedItem.data)) {\n if (this.showCheckBox && this.isNestedList) {\n for (let i = 0; i < finalGetSelectedItem.data.length; i++) {\n blazorSelectedItem.data.push(finalGetSelectedItem.data[i].data);\n }\n if (!isNullOrUndefined(finalGetSelectedItem.data[0])\n && !isNullOrUndefined(finalGetSelectedItem.data[0].parentId)) {\n blazorSelectedItem.parentId = finalGetSelectedItem.data[0].parentId;\n }\n }\n else {\n blazorSelectedItem.data = this.convertItemsToArray(finalGetSelectedItem.data);\n }\n }\n if (!isNullOrUndefined(finalGetSelectedItem.text)) {\n blazorSelectedItem.text = this.convertItemsToArray(finalGetSelectedItem.text);\n }\n if (!isNullOrUndefined(finalGetSelectedItem.index)) {\n blazorSelectedItem.index = this.convertItemsToArray(finalGetSelectedItem.index);\n }\n }\n return blazorSelectedItem;\n }\n // tslint:disable-next-line:no-any\n convertItemsToArray(items) {\n return Array.isArray(items) ? [...items] : [items];\n }\n /**\n * Finds out an item details from the current list.\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n * @blazorType TValue\n */\n findItem(item) {\n return this.getItemData(item);\n }\n /**\n * Enables the disabled list items by passing the Id and text fields.\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n enableItem(item) {\n this.setItemState(item, true);\n if (this.enableVirtualization) {\n this.virtualizationModule.enableItem(item);\n }\n }\n /**\n * Disables the list items by passing the Id and text fields.\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n disableItem(item) {\n this.setItemState(item, false);\n if (this.enableVirtualization) {\n this.virtualizationModule.disableItem(item);\n }\n }\n //A function that used to set state of the list item like enable, disable.\n setItemState(item, isEnable) {\n let resultJSON = this.getItemData(item);\n let fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n let li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (isEnable) {\n if (li) {\n li.classList.remove(classNames.disable);\n }\n delete resultJSON[this.fields.enabled];\n }\n else if (!isEnable) {\n if (li) {\n li.classList.add(classNames.disable);\n }\n resultJSON[this.fields.enabled] = false;\n }\n }\n }\n /**\n * Shows the hide list item from the ListView.\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n showItem(item) {\n this.showHideItem(item, false, '');\n if (this.enableVirtualization) {\n this.virtualizationModule.showItem(item);\n }\n }\n /**\n * Hides an list item from the ListView.\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n hideItem(item) {\n this.showHideItem(item, true, 'none');\n if (this.enableVirtualization) {\n this.virtualizationModule.hideItem(item);\n }\n }\n showHideItem(obj, isHide, display) {\n let resultJSON = this.getItemData(obj);\n let fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n let li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (li) {\n li.style.display = display;\n }\n if (isHide) {\n resultJSON[this.fields.isVisible] = false;\n }\n else {\n delete resultJSON[this.fields.isVisible];\n }\n }\n }\n /**\n * Adds the new list item(s) to the current ListView.\n * To add a new list item(s) in the ListView, we need to pass the `data` as an array of items that need\n * to be added and `fields` as the target item to which we need to add the given item(s) as its children.\n * For example fields: { text: 'Name', tooltip: 'Name', id:'id'}\n * @param {{[key:string]:Object}[]} data - JSON Array Data that need to add.\n * @param {Fields} fields - Target item to add the given data as its children (can be null).\n * @blazorArgsType data|object,fields|object\n */\n addItem(data, fields = undefined) {\n const dataSource = this.dataSource instanceof DataManager\n ? this.localData : this.dataSource;\n this.addItemInternally(data, fields, dataSource);\n }\n addItemInternally(data, fields, dataSource) {\n if (data instanceof Array) {\n if (this.enableVirtualization) {\n this.virtualizationModule.addItem(data, fields, dataSource);\n }\n else {\n const ds = this.findItemFromDS(dataSource, fields);\n let child;\n if (ds) {\n const fieldData = getFieldValues(ds, this.listBaseOption.fields);\n child = fieldData[this.fields.child];\n if (!child) {\n child = [];\n }\n child = child.concat(data);\n }\n // check for whether target is nested level or top level in list\n if (ds instanceof Array) {\n for (let i = 0; i < data.length; i++) {\n dataSource.push(data[i]);\n this.setViewDataSource(dataSource);\n // since it is top level target, get the content container's first child\n // as it is always the top level UL\n const targetUL = this.contentContainer\n ? this.contentContainer.children[0]\n : null;\n // check for whether the list was previously empty or not, if it is\n // proceed to call initial render\n if (this.contentContainer && targetUL) {\n this.addItemIntoDom(data[i], targetUL, this.curViewDS);\n }\n else {\n this.reRender();\n }\n }\n if (this.curUL) {\n this.updateBlazorTemplates(true);\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n }\n else {\n // proceed as target item is in nested level, only if it is a valid target ds\n if (ds) {\n ds[this.fields.child] = child;\n this.addItemInNestedList(ds, data);\n }\n }\n }\n }\n }\n addItemInNestedList(targetItemData, itemQueue) {\n const targetItemId = targetItemData[this.fields.id];\n const targetChildDS = targetItemData[this.fields.child];\n const isAlreadyRenderedUL = this.element.querySelector('[pid=\\'' + targetItemId + '\\']');\n const targetLi = this.element.querySelector('[data-uid=\\'' + targetItemId + '\\']');\n const targetUL = isAlreadyRenderedUL\n ? isAlreadyRenderedUL\n : targetLi\n ? closest(targetLi, 'ul')\n : null;\n const targetDS = isAlreadyRenderedUL ? targetChildDS : [targetItemData];\n const isTargetEmptyChild = targetLi ? !targetLi.classList.contains(classNames.hasChild) : false;\n let isRefreshTemplateNeeded = false;\n // if li element is already rendered, that element needs to be refreshed so that\n // it becomes child viewable due to new child items are added now\n if (isTargetEmptyChild) {\n const targetRefreshedElement = ListBase.createListItemFromJson(this.createElement, targetDS, this.listBaseOption);\n this.setAttributes(targetRefreshedElement);\n targetUL.insertBefore(targetRefreshedElement[0], targetLi);\n detach(targetLi);\n isRefreshTemplateNeeded = true;\n }\n // if it is already rendered element, we need to create and append new elements\n if (isAlreadyRenderedUL && itemQueue) {\n for (let i = 0; i < itemQueue.length; i++) {\n targetDS.push(itemQueue[i]);\n this.addItemIntoDom(itemQueue[i], targetUL, targetDS);\n }\n isRefreshTemplateNeeded = true;\n }\n if (isRefreshTemplateNeeded) {\n this.updateBlazorTemplates(true);\n }\n }\n addItemIntoDom(currentItem, targetUL, curViewDS) {\n let index = curViewDS.indexOf(currentItem);\n this.addListItem(currentItem, index, targetUL, curViewDS);\n let curItemDS = curViewDS[index - 1];\n if (curItemDS && curItemDS.isHeader && curItemDS.items.length === 1) {\n this.addListItem(curItemDS, (index - 1), targetUL, curViewDS);\n }\n }\n addListItem(dataSource, index, ulElement, curViewDS) {\n let target = this.getLiFromObjOrElement(curViewDS[index + 1]) ||\n this.getLiFromObjOrElement(curViewDS[index + 2]) || null;\n let li = ListBase.createListItemFromJson(this.createElement, [dataSource], this.listBaseOption);\n this.setAttributes(li);\n ulElement.insertBefore(li[0], target);\n }\n /**\n * Removes the list item from the data source based on a passed\n * element like fields: { text: 'Name', tooltip: 'Name', id:'id'}\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n removeItem(item) {\n const listDataSource = this.dataSource instanceof DataManager\n ? this.localData : this.dataSource;\n if (this.enableVirtualization) {\n this.virtualizationModule.removeItem(item);\n }\n else {\n this.removeItemFromList(item, listDataSource);\n this.updateBlazorTemplates(true);\n }\n }\n removeItemFromList(obj, listDataSource) {\n const curViewDS = this.curViewDS;\n let fields = obj instanceof Element ? this.getElementUID(obj) : obj;\n let dataSource;\n dataSource = this.findItemFromDS(listDataSource, fields, true);\n if (dataSource) {\n let data;\n data = this.findItemFromDS(dataSource, fields);\n let index = curViewDS.indexOf(data);\n let li = this.getLiFromObjOrElement(obj);\n let groupLi;\n this.validateNestedView(li);\n if (this.fields.groupBy && this.curViewDS[index - 1] &&\n curViewDS[index - 1].isHeader &&\n curViewDS[index - 1].items.length === 1) {\n if (li && li.previousElementSibling.classList.contains(classNames.groupListItem) &&\n (isNullOrUndefined(li.nextElementSibling) || (li.nextElementSibling &&\n li.nextElementSibling.classList.contains(classNames.groupListItem)))) {\n groupLi = li.previousElementSibling;\n }\n }\n if (li) {\n detach(li);\n }\n if (groupLi) {\n detach(groupLi);\n }\n // tslint:disable-next-line:no-any\n const foundData = (dataSource.length - 1) <= 0\n ? this.findParent(this.localData, this.fields.id, (value) => value === data[this.fields.id], null) : null;\n let dsIndex = dataSource.indexOf(data);\n dataSource.splice(dsIndex, 1);\n this.setViewDataSource(listDataSource);\n if (foundData\n && foundData.parent\n && Array.isArray(foundData.parent[this.fields.child])\n && foundData.parent[this.fields.child].length <= 0) {\n const parentLi = this.getLiFromObjOrElement(foundData.parent);\n if (parentLi) {\n let li = ListBase.createListItemFromJson(this.createElement, [foundData.parent], this.listBaseOption);\n this.setAttributes(li);\n parentLi.parentElement.insertBefore(li[0], parentLi);\n parentLi.parentElement.removeChild(parentLi);\n }\n }\n if (dataSource.length <= 0) {\n this.back();\n }\n this.liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.listItem));\n }\n }\n // validate before removing an element whether the current view is inside target element's child view\n validateNestedView(li) {\n const liID = li ? li.getAttribute('data-uid').toString().toLowerCase() : null;\n if (liID && this.curDSLevel && this.curDSLevel.length > 0) {\n while (this.curDSLevel.some((id) => id.toString().toLowerCase() === liID)) {\n this.back();\n }\n }\n }\n /**\n * Removes multiple items from the ListView by passing the array of elements or array of field objects.\n * @param {Fields[] | HTMLElement[] | Element[]} item - We can pass array of elements or array of field Object with ID and Text fields.\n */\n removeMultipleItems(item) {\n if (item.length) {\n for (let i = 0; i < item.length; i++) {\n this.removeItem(item[i]);\n }\n this.updateBlazorTemplates(true);\n }\n }\n // tslint:disable-next-line:no-any\n findParent(dataSource, id, callback, parent) {\n if (dataSource.hasOwnProperty(id) && callback(dataSource[id]) === true) {\n return extend({}, dataSource);\n }\n for (let i = 0; i < Object.keys(dataSource).length; i++) {\n if (dataSource[Object.keys(dataSource)[i]]\n && typeof dataSource[Object.keys(dataSource)[i]] === 'object') {\n // tslint:disable-next-line:no-any\n let result = this.findParent(dataSource[Object.keys(dataSource)[i]], id, callback, dataSource);\n if (result != null) {\n if (!result.parent) {\n result.parent = parent;\n }\n return result;\n }\n }\n }\n return null;\n }\n // Module Required function\n getModuleName() {\n return 'listview';\n }\n requiredModules() {\n let modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'virtualization' });\n }\n return modules;\n }\n /**\n * Get the properties to be maintained in the persisted state.\n */\n getPersistData() {\n return this.addOnPersist(['cssClass', 'enableRtl', 'htmlAttributes',\n 'enable', 'fields', 'animation', 'headerTitle',\n 'sortOrder', 'showIcon', 'height', 'width', 'showCheckBox', 'checkBoxPosition']);\n }\n};\n__decorate([\n Property('')\n], ListView.prototype, \"cssClass\", void 0);\n__decorate([\n Property(false)\n], ListView.prototype, \"enableVirtualization\", void 0);\n__decorate([\n Property({})\n], ListView.prototype, \"htmlAttributes\", void 0);\n__decorate([\n Property(true)\n], ListView.prototype, \"enable\", void 0);\n__decorate([\n Property([])\n], ListView.prototype, \"dataSource\", void 0);\n__decorate([\n Property()\n], ListView.prototype, \"query\", void 0);\n__decorate([\n Complex(ListBase.defaultMappedFields, FieldSettings)\n], ListView.prototype, \"fields\", void 0);\n__decorate([\n Property({ effect: 'SlideLeft', duration: 400, easing: 'ease' })\n], ListView.prototype, \"animation\", void 0);\n__decorate([\n Property('None')\n], ListView.prototype, \"sortOrder\", void 0);\n__decorate([\n Property(false)\n], ListView.prototype, \"showIcon\", void 0);\n__decorate([\n Property(false)\n], ListView.prototype, \"showCheckBox\", void 0);\n__decorate([\n Property('Left')\n], ListView.prototype, \"checkBoxPosition\", void 0);\n__decorate([\n Property('')\n], ListView.prototype, \"headerTitle\", void 0);\n__decorate([\n Property(false)\n], ListView.prototype, \"showHeader\", void 0);\n__decorate([\n Property(false)\n], ListView.prototype, \"enableHtmlSanitizer\", void 0);\n__decorate([\n Property('')\n], ListView.prototype, \"height\", void 0);\n__decorate([\n Property('')\n], ListView.prototype, \"width\", void 0);\n__decorate([\n Property(null)\n], ListView.prototype, \"template\", void 0);\n__decorate([\n Property(null)\n], ListView.prototype, \"headerTemplate\", void 0);\n__decorate([\n Property(null)\n], ListView.prototype, \"groupTemplate\", void 0);\n__decorate([\n Event()\n], ListView.prototype, \"select\", void 0);\n__decorate([\n Event()\n], ListView.prototype, \"actionBegin\", void 0);\n__decorate([\n Event()\n], ListView.prototype, \"actionComplete\", void 0);\n__decorate([\n Event()\n], ListView.prototype, \"actionFailure\", void 0);\nListView = __decorate([\n NotifyPropertyChanges\n], ListView);\n\nconst listElementCount = 1.5;\nconst windowElementCount = 3;\nclass Virtualization {\n constructor(instance) {\n this.elementDifference = 0;\n this.listViewInstance = instance;\n }\n /**\n * For internal use only.\n * @private\n */\n isNgTemplate() {\n return !isNullOrUndefined(this.listViewInstance.templateRef) && typeof this.listViewInstance.templateRef !== 'string';\n }\n /**\n * For internal use only.\n * @private\n */\n uiVirtualization() {\n this.wireScrollEvent(false);\n let curViewDS = this.listViewInstance.curViewDS;\n let firstDs = curViewDS.slice(0, 1);\n if (!(isBlazor() || this.listViewInstance.isServerRendered)) {\n this.listViewInstance.ulElement = this.listViewInstance.curUL = ListBase.createList(this.listViewInstance.createElement, firstDs, this.listViewInstance.listBaseOption);\n this.listViewInstance.contentContainer = this.listViewInstance.createElement('div', { className: classNames.content });\n this.listViewInstance.element.appendChild(this.listViewInstance.contentContainer);\n this.listViewInstance.contentContainer.appendChild(this.listViewInstance.ulElement);\n }\n this.listItemHeight = this.listViewInstance.ulElement.firstElementChild.getBoundingClientRect().height;\n this.expectedDomItemCount = this.ValidateItemCount(10000);\n this.domItemCount = this.ValidateItemCount(Object.keys(this.listViewInstance.curViewDS).length);\n this.uiFirstIndex = 0;\n this.uiLastIndex = this.domItemCount - 1;\n let otherDs = curViewDS.slice(1, this.domItemCount);\n if (!(isBlazor() || this.listViewInstance.isServerRendered)) {\n let listItems = ListBase.createListItemFromJson(this.listViewInstance.createElement, otherDs, this.listViewInstance.listBaseOption);\n append(listItems, this.listViewInstance.ulElement);\n this.listViewInstance.liCollection = this.listViewInstance.curUL.querySelectorAll('li');\n this.topElement = this.listViewInstance.createElement('div');\n this.listViewInstance.ulElement.insertBefore(this.topElement, this.listViewInstance.ulElement.firstElementChild);\n this.bottomElement = this.listViewInstance.createElement('div');\n this.listViewInstance.ulElement.insertBefore(this.bottomElement, null);\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n this.topElement.style.height = 0 + 'px';\n this.bottomElement.style.height = this.totalHeight + 'px';\n this.topElementHeight = 0;\n this.bottomElementHeight = this.totalHeight;\n }\n else {\n this.listViewInstance.contentContainer = this.listViewInstance.element.querySelector('.e-content');\n this.listViewInstance.liCollection = this.listViewInstance.curUL.querySelectorAll('li');\n }\n this.listDiff = 0;\n this.uiIndicesInitialization();\n }\n wireScrollEvent(destroy) {\n if (!destroy) {\n if (!(isBlazor() && this.listViewInstance.isServerRendered)) {\n if (this.listViewInstance.isWindow) {\n this.onVirtualScroll = this.onVirtualUiScroll.bind(this);\n window.addEventListener('scroll', this.onVirtualScroll);\n }\n else {\n EventHandler.add(this.listViewInstance.element, 'scroll', this.onVirtualUiScroll, this);\n }\n }\n else {\n if (this.listViewInstance.isWindow) {\n // tslint:disable-next-line:no-any\n this.onVirtualScroll = debounce(this.onVirtualUiScroll.bind(this), 350);\n // tslint:enable-next-line:no-any \n this.updateUl = this.updateUlContainer.bind(this);\n window.addEventListener('scroll', this.onVirtualScroll);\n window.addEventListener('scroll', this.updateUl);\n }\n else {\n EventHandler.add(this.listViewInstance.element, 'scroll', debounce(this.onVirtualUiScroll, 350), this);\n EventHandler.add(this.listViewInstance.element, 'scroll', this.updateUlContainer, this);\n }\n }\n }\n else {\n this.listViewInstance.isWindow ? window.removeEventListener('scroll', this.onVirtualScroll) :\n EventHandler.remove(this.listViewInstance.element, 'scroll', this.onVirtualUiScroll);\n this.listViewInstance.isWindow ? window.removeEventListener('scroll', this.updateUl) :\n EventHandler.remove(this.listViewInstance.element, 'scroll', this.updateUlContainer);\n }\n }\n updateUlContainer(e) {\n let listDiff;\n let virtualElementContainer = this.listViewInstance.ulElement.querySelector('.' + classNames.virtualElementContainer);\n if (isNullOrUndefined(this.listViewInstance.liElementHeight)) {\n this.listViewInstance.updateLiElementHeight();\n }\n if (this.listViewInstance.isWindow) {\n // tslint:disable-next-line:no-any\n listDiff = Math.round(e.target.documentElement.scrollTop / this.listViewInstance.liElementHeight) - 2;\n // tslint:enable-next-line:no-any \n }\n else {\n // tslint:disable-next-line:no-any\n listDiff = Math.round(e.target.scrollTop / this.listViewInstance.liElementHeight) - 2;\n // tslint:enable-next-line:no-any \n }\n if (((listDiff - 1) * this.listViewInstance.liElementHeight) < 0) {\n virtualElementContainer.style.top = '0px';\n }\n else {\n virtualElementContainer.style.top = (listDiff) * this.listViewInstance.liElementHeight + 'px';\n }\n }\n ValidateItemCount(dataSourceLength) {\n const height = parseFloat(formatUnit(this.listViewInstance.height));\n let itemCount;\n if (this.listViewInstance.isWindow) {\n itemCount = Math.round((window.innerHeight / this.listItemHeight) * windowElementCount);\n }\n else {\n if (typeof this.listViewInstance.height === 'string' && this.listViewInstance.height.indexOf('%') !== -1) {\n // tslint:disable-next-line:max-line-length\n itemCount = Math.round((this.listViewInstance.element.getBoundingClientRect().height / this.listItemHeight) * listElementCount);\n }\n else {\n itemCount = Math.round((height / this.listItemHeight) * listElementCount);\n }\n }\n if (itemCount > dataSourceLength) {\n itemCount = dataSourceLength;\n }\n return itemCount;\n }\n uiIndicesInitialization() {\n this.uiIndices = { 'activeIndices': [], 'disabledItemIndices': [], 'hiddenItemIndices': [] };\n let data = this.listViewInstance.curViewDS;\n for (let i = 0; i < data.length; i++) {\n if (this.listViewInstance.showCheckBox && data[i][this.listViewInstance.fields.isChecked]) {\n this.uiIndices.activeIndices.push(i);\n }\n if (!isNullOrUndefined(data[i][this.listViewInstance.fields.enabled]) && !data[i][this.listViewInstance.fields.enabled]) {\n this.uiIndices.disabledItemIndices.push(i);\n }\n }\n if (this.isNgTemplate()) {\n let items = this.listViewInstance.element.querySelectorAll('.' + classNames.listItem);\n for (let index = 0; index < items.length; index++) {\n items[index].context = this.listViewInstance.viewContainerRef.get(index).context;\n }\n }\n }\n refreshItemHeight() {\n if (this.listViewInstance.curViewDS.length) {\n let curViewDS = this.listViewInstance.curViewDS;\n if (isBlazor() && this.listViewInstance.isServerRendered) {\n this.listViewInstance.ulElement.children[0].style.height =\n (this.listViewInstance.liElementHeight * (Object.keys(curViewDS).length)) + 'px';\n }\n else {\n this.listItemHeight = this.topElement.nextSibling.getBoundingClientRect().height;\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n this.bottomElementHeight = this.totalHeight;\n this.bottomElement.style.height = this.totalHeight + 'px';\n }\n }\n }\n getscrollerHeight(startingHeight) {\n return this.listViewInstance.isWindow ? (((pageYOffset - startingHeight) <= 0) ? 0 :\n (pageYOffset - startingHeight)) : ((this.listViewInstance.element.scrollTop - startingHeight) <= 0) ? 0 :\n (this.listViewInstance.element.scrollTop - startingHeight);\n }\n onVirtualUiScroll(e) {\n let startingHeight;\n if (this.listViewInstance.isWindow) {\n startingHeight = this.listViewInstance.ulElement.getBoundingClientRect().top -\n document.documentElement.getBoundingClientRect().top;\n }\n else {\n startingHeight = this.listViewInstance.headerEle ? this.listViewInstance.headerEle.getBoundingClientRect().height : 0;\n }\n this.scrollPosition = isNullOrUndefined(this.scrollPosition) ? 0 : this.scrollPosition;\n let scroll = this.getscrollerHeight(startingHeight);\n this.topElementHeight = this.listItemHeight * Math.floor(scroll / this.listItemHeight);\n this.bottomElementHeight = this.totalHeight - this.topElementHeight;\n [this.topElementHeight, this.bottomElementHeight] = scroll <= this.totalHeight ?\n [this.topElementHeight, this.bottomElementHeight] : [this.totalHeight, 0];\n if (isBlazor() && this.listViewInstance.isServerRendered) {\n let listDiff;\n if (isNullOrUndefined(this.listViewInstance.liElementHeight)) {\n this.listViewInstance.updateLiElementHeight();\n }\n if (this.listViewInstance.isWindow) {\n listDiff = Math.round(document.documentElement.scrollTop / this.listViewInstance.liElementHeight);\n }\n else {\n // tslint:disable-next-line:no-any\n listDiff = Math.round(e.target.scrollTop / this.listViewInstance.liElementHeight);\n // tslint:enable-next-line:no-any\n }\n if ((listDiff - 2) - this.elementDifference >= 3 || (listDiff - 2) - this.elementDifference <= -1) {\n let args = { listDiff: listDiff - 2, selectedItems: this.listViewInstance.previousSelectedItems };\n this.listViewInstance.interopAdaptor.invokeMethodAsync('VirtalScrolling', args);\n if (this.listViewInstance.ulElement.querySelector('.e-focused')) {\n this.listViewInstance.ulElement.querySelector('.e-focused').classList.remove('e-focused');\n }\n this.elementDifference = listDiff - 2;\n }\n }\n else {\n if (this.topElementHeight !== parseFloat(this.topElement.style.height)) {\n this.topElement.style.height = this.topElementHeight + 'px';\n this.bottomElement.style.height = this.bottomElementHeight + 'px';\n if (scroll > this.scrollPosition) {\n let listDiff = Math.round(((this.topElementHeight / this.listItemHeight) - this.listDiff));\n if (listDiff > (this.expectedDomItemCount + 5)) {\n this.onLongScroll(listDiff, true);\n }\n else {\n this.onNormalScroll(listDiff, true);\n }\n }\n else {\n let listDiff = Math.round((this.listDiff - (this.topElementHeight / this.listItemHeight)));\n if (listDiff > (this.expectedDomItemCount + 5)) {\n this.onLongScroll(listDiff, false);\n }\n else {\n this.onNormalScroll(listDiff, false);\n }\n }\n }\n this.listDiff = Math.round(this.topElementHeight / this.listItemHeight);\n if (typeof this.listViewInstance.onUIScrolled === 'function') {\n this.listViewInstance.onUIScrolled();\n }\n }\n this.scrollPosition = scroll;\n }\n onLongScroll(listDiff, isScrollingDown) {\n let index = isScrollingDown ? (this.uiFirstIndex + listDiff) : (this.uiFirstIndex - listDiff);\n let elements = this.listViewInstance.ulElement.querySelectorAll('li');\n for (let i = 0; i < elements.length; i++) {\n this.updateUI(elements[i], index);\n index++;\n }\n this.uiLastIndex = isScrollingDown ? (this.uiLastIndex + listDiff) : (this.uiLastIndex - listDiff);\n this.uiFirstIndex = isScrollingDown ? (this.uiFirstIndex + listDiff) : (this.uiFirstIndex - listDiff);\n }\n onNormalScroll(listDiff, isScrollingDown) {\n if (isScrollingDown) {\n for (let i = 0; i < listDiff; i++) {\n let index = ++this.uiLastIndex;\n this.updateUI(this.topElement.nextElementSibling, index, this.bottomElement);\n this.uiFirstIndex++;\n }\n }\n else {\n for (let i = 0; i < listDiff; i++) {\n let index = --this.uiFirstIndex;\n let target = this.topElement.nextSibling;\n this.updateUI(this.bottomElement.previousElementSibling, index, target);\n this.uiLastIndex--;\n }\n }\n }\n updateUiContent(element, index) {\n let curViewDs = this.listViewInstance.curViewDS;\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n element.dataset.uid = ListBase.generateId();\n element.getElementsByClassName(classNames.listItemText)[0].innerHTML =\n this.listViewInstance.curViewDS[index].toString();\n }\n else {\n element.dataset.uid = curViewDs[index][this.listViewInstance.fields.id] ?\n curViewDs[index][this.listViewInstance.fields.id].toString() : ListBase.generateId();\n element.getElementsByClassName(classNames.listItemText)[0].innerHTML =\n curViewDs[index][this.listViewInstance.fields.text].toString();\n }\n if (this.listViewInstance.showIcon) {\n if (element.querySelector('.' + classNames.listIcon)) {\n detach(element.querySelector('.' + classNames.listIcon));\n }\n if (this.listViewInstance.curViewDS[index][this.listViewInstance.fields.iconCss]) {\n let textContent = element.querySelector('.' + classNames.textContent);\n let target = this.listViewInstance.createElement('div', {\n className: classNames.listIcon + ' ' +\n this.listViewInstance.curViewDS[index][this.listViewInstance.fields.iconCss]\n });\n textContent.insertBefore(target, element.querySelector('.' + classNames.listItemText));\n }\n }\n if (this.listViewInstance.showCheckBox && this.listViewInstance.fields.groupBy) {\n if (!this.checkListWrapper) {\n this.checkListWrapper = this.listViewInstance.curUL.querySelector('.' + classNames.checkboxWrapper).cloneNode(true);\n }\n let textContent = element.querySelector('.' + classNames.textContent);\n if (this.listViewInstance.curViewDS[index].isHeader) {\n if (element.querySelector('.' + classNames.checkboxWrapper)) {\n element.classList.remove(classNames.checklist);\n textContent.classList.remove(classNames.checkbox);\n detach(element.querySelector('.' + classNames.checkboxWrapper));\n }\n }\n else {\n if (!element.querySelector('.' + classNames.checkboxWrapper)) {\n element.classList.add(classNames.checklist);\n textContent.classList.add(classNames.checkbox);\n textContent.insertBefore(this.checkListWrapper.cloneNode(true), element.querySelector('.' + classNames.listItemText));\n }\n }\n }\n }\n changeElementAttributes(element, index) {\n element.classList.remove(classNames.disable);\n if (this.uiIndices.disabledItemIndices.length && this.uiIndices.disabledItemIndices.indexOf(index) !== -1) {\n element.classList.add(classNames.disable);\n }\n element.style.display = '';\n if (this.uiIndices.hiddenItemIndices.length && this.uiIndices.hiddenItemIndices.indexOf(index) !== -1) {\n element.style.display = 'none';\n }\n if (this.listViewInstance.showCheckBox) {\n let checklistElement = element.querySelector('.' + classNames.checkboxWrapper);\n element.classList.remove(classNames.selected);\n element.classList.remove(classNames.focused);\n if (checklistElement) {\n checklistElement.removeAttribute('aria-checked');\n checklistElement.firstElementChild.classList.remove(classNames.checked);\n }\n if (this.uiIndices.activeIndices.length && this.uiIndices.activeIndices.indexOf(index) !== -1 &&\n !this.listViewInstance.curUL.querySelector(classNames.selected)) {\n element.classList.add(classNames.selected);\n checklistElement.firstElementChild.classList.add(classNames.checked);\n checklistElement.setAttribute('aria-checked', 'true');\n if (this.activeIndex === index) {\n element.classList.add(classNames.focused);\n }\n }\n }\n else {\n element.classList.remove(classNames.selected);\n element.removeAttribute('aria-selected');\n if (!isNullOrUndefined(this.activeIndex) && this.activeIndex === index &&\n !this.listViewInstance.curUL.querySelector(classNames.selected)) {\n element.classList.add(classNames.selected);\n element.setAttribute('aria-selected', 'true');\n }\n }\n if (this.listViewInstance.fields.groupBy) {\n if (this.listViewInstance.curViewDS[index].isHeader) {\n if (element.classList.contains(classNames.listItem)) {\n element.classList.remove(classNames.listItem);\n element.setAttribute('role', 'group');\n element.classList.add(classNames.groupListItem);\n }\n }\n else {\n if (element.classList.contains(classNames.groupListItem)) {\n element.classList.remove(classNames.groupListItem);\n element.setAttribute('role', 'listitem');\n element.classList.add(classNames.listItem);\n }\n }\n }\n }\n findDSAndIndexFromId(ds, fields) {\n let resultJSON = {};\n fields = this.listViewInstance.getElementUID(fields);\n if (!isNullOrUndefined(fields)) {\n ds.some((data, index) => {\n if ((fields[this.listViewInstance.fields.id] &&\n fields[this.listViewInstance.fields.id].toString()\n === (data[this.listViewInstance.fields.id] && data[this.listViewInstance.fields.id].toString())) || fields === data) {\n resultJSON.index = index;\n resultJSON.data = data;\n return true;\n }\n else {\n return false;\n }\n });\n }\n return resultJSON;\n }\n getSelectedItems() {\n if (!isNullOrUndefined(this.activeIndex) || (this.listViewInstance.showCheckBox && this.uiIndices.activeIndices.length)) {\n let dataCollection = [];\n let textCollection = [];\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n let curViewDS = this.listViewInstance.curViewDS;\n if (this.listViewInstance.showCheckBox) {\n let indices = this.uiIndices.activeIndices;\n for (let i = 0; i < indices.length; i++) {\n dataCollection.push(curViewDS[indices[i]]);\n }\n return {\n text: dataCollection,\n data: dataCollection,\n index: this.uiIndices.activeIndices.map((index) => this.listViewInstance.dataSource.indexOf(curViewDS[index]))\n };\n }\n else {\n return {\n text: curViewDS[this.activeIndex],\n data: curViewDS[this.activeIndex],\n index: this.listViewInstance.dataSource.indexOf(curViewDS[this.activeIndex])\n };\n }\n }\n else {\n if (isBlazor() && this.listViewInstance.isServerRendered) {\n let scrollDiff = Math.round(this.listViewInstance.element.scrollTop /\n this.listViewInstance.liElementHeight) - 2;\n if (scrollDiff < 0) {\n scrollDiff = 0;\n }\n this.activeIndex += scrollDiff;\n }\n let curViewDS = this.listViewInstance.curViewDS;\n let text = this.listViewInstance.fields.text;\n if (this.listViewInstance.showCheckBox) {\n let indexArray = this.uiIndices.activeIndices;\n for (let i = 0; i < indexArray.length; i++) {\n textCollection.push(curViewDS[indexArray[i]][text]);\n dataCollection.push(curViewDS[indexArray[i]]);\n }\n let dataSource = this.listViewInstance.dataSource instanceof DataManager\n ? curViewDS : this.listViewInstance.dataSource;\n return {\n text: textCollection,\n data: dataCollection,\n index: this.uiIndices.activeIndices.map((index) => dataSource.indexOf(curViewDS[index]))\n };\n }\n else {\n let dataSource = this.listViewInstance.dataSource instanceof DataManager\n ? curViewDS : this.listViewInstance.dataSource;\n return {\n text: curViewDS[this.activeIndex][this.listViewInstance.fields.text],\n data: curViewDS[this.activeIndex],\n index: dataSource.indexOf(curViewDS[this.activeIndex])\n };\n }\n }\n }\n else {\n return undefined;\n }\n }\n selectItem(obj) {\n let resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n let isSelected = this.activeIndex === resutJSON.index;\n let isChecked;\n this.activeIndex = resutJSON.index;\n if (this.listViewInstance.showCheckBox) {\n if (this.uiIndices.activeIndices.indexOf(resutJSON.index) === -1) {\n isChecked = true;\n this.uiIndices.activeIndices.push(resutJSON.index);\n }\n else {\n isChecked = false;\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(resutJSON.index), 1);\n }\n if (this.listViewInstance.curUL.querySelector('.' + classNames.focused)) {\n this.listViewInstance.curUL.querySelector('.' + classNames.focused).classList.remove(classNames.focused);\n }\n }\n if (this.listViewInstance.getLiFromObjOrElement(obj)) {\n if (this.listViewInstance.showCheckBox) {\n this.listViewInstance.setCheckboxLI(this.listViewInstance.getLiFromObjOrElement(obj));\n }\n else {\n this.listViewInstance.setSelectLI(this.listViewInstance.getLiFromObjOrElement(obj));\n }\n }\n else {\n let eventArgs;\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n eventArgs = {\n text: this.listViewInstance.curViewDS[this.activeIndex],\n data: this.listViewInstance.curViewDS[this.activeIndex],\n index: this.activeIndex\n };\n }\n else {\n let curViewDS = this.listViewInstance.curViewDS;\n eventArgs = {\n text: curViewDS[this.activeIndex][this.listViewInstance.fields.text],\n data: curViewDS[this.activeIndex],\n index: this.activeIndex\n };\n }\n if (this.listViewInstance.showCheckBox) {\n eventArgs.isChecked = isChecked;\n this.listViewInstance.trigger('select', eventArgs);\n }\n else if (!isSelected) {\n this.listViewInstance.removeSelect();\n this.listViewInstance.trigger('select', eventArgs);\n }\n }\n }\n else if (isNullOrUndefined(obj) && !this.listViewInstance.showCheckBox) {\n this.listViewInstance.removeSelect();\n this.activeIndex = undefined;\n }\n if (isBlazor() && this.listViewInstance.isServerRendered) {\n // tslint:disable-next-line:no-any\n let elementId = resutJSON.data[this.listViewInstance.fields.id];\n // tslint:enable-next-line:no-any\n if (this.listViewInstance.showCheckBox) {\n if (!this.listViewInstance.previousSelectedItems.includes(elementId)) {\n this.listViewInstance.previousSelectedItems.push(elementId);\n }\n else {\n let indexPosition = this.listViewInstance.previousSelectedItems.indexOf(elementId);\n if (indexPosition > -1) {\n this.listViewInstance.previousSelectedItems.splice(indexPosition, 1);\n }\n }\n }\n else {\n this.listViewInstance.previousSelectedItems[0] = elementId;\n }\n this.listViewInstance.removeActiveClass();\n }\n }\n enableItem(obj) {\n let resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (isBlazor() && this.listViewInstance.isServerRendered) {\n let itemId = resutJSON.data[this.listViewInstance.fields.id];\n if (!this.listViewInstance.enabledItems.includes(itemId)) {\n this.listViewInstance.enabledItems.push(itemId);\n this.listViewInstance.removeActiveClass();\n }\n if (this.listViewInstance.disabledItems.includes(itemId)) {\n let indexPosition = this.listViewInstance.disabledItems.indexOf(itemId);\n if (indexPosition > -1) {\n this.listViewInstance.disabledItems.splice(indexPosition, 1);\n }\n }\n }\n else {\n if (Object.keys(resutJSON).length) {\n this.uiIndices.disabledItemIndices.splice(this.uiIndices.disabledItemIndices.indexOf(resutJSON.index), 1);\n }\n }\n }\n disableItem(obj) {\n let resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (isBlazor() && this.listViewInstance.isServerRendered) {\n let liElementId = resutJSON.data[this.listViewInstance.fields.id];\n if (!this.listViewInstance.disabledItems.includes(liElementId)) {\n this.listViewInstance.disabledItems.push(liElementId);\n this.listViewInstance.removeActiveClass();\n }\n if (this.listViewInstance.enabledItems.includes(liElementId)) {\n let indexPosition = this.listViewInstance.enabledItems.indexOf(liElementId);\n if (indexPosition > -1) {\n this.listViewInstance.enabledItems.splice(indexPosition, 1);\n }\n }\n }\n else {\n if (Object.keys(resutJSON).length && this.uiIndices.disabledItemIndices.indexOf(resutJSON.index) === -1) {\n this.uiIndices.disabledItemIndices.push(resutJSON.index);\n }\n }\n }\n showItem(obj) {\n let resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (isBlazor() && this.listViewInstance.isServerRendered) {\n // tslint:disable-next-line:no-any\n let hiddenElementId = resutJSON.data[this.listViewInstance.fields.id];\n // tslint:enable-next-line:no-any\n if (this.listViewInstance.hiddenItems.includes(hiddenElementId)) {\n let indexPosition = this.listViewInstance.hiddenItems.indexOf(hiddenElementId);\n if (indexPosition > -1) {\n this.listViewInstance.previousSelectedItems.splice(indexPosition, 1);\n this.listViewInstance.removeActiveClass();\n }\n }\n }\n else {\n if (Object.keys(resutJSON).length) {\n this.uiIndices.hiddenItemIndices.splice(this.uiIndices.hiddenItemIndices.indexOf(resutJSON.index), 1);\n }\n }\n }\n hideItem(obj) {\n let resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (isBlazor() && this.listViewInstance.isServerRendered) {\n // tslint:disable-next-line:no-any\n let elementId = resutJSON.data[this.listViewInstance.fields.id];\n // tslint:enable-next-line:no-any\n if (!this.listViewInstance.hiddenItems.includes(elementId)) {\n this.listViewInstance.hiddenItems.push(elementId);\n this.listViewInstance.removeActiveClass();\n }\n }\n else {\n if (Object.keys(resutJSON).length && this.uiIndices.hiddenItemIndices.indexOf(resutJSON.index) === -1) {\n this.uiIndices.hiddenItemIndices.push(resutJSON.index);\n }\n }\n }\n removeItem(obj) {\n let dataSource;\n const curViewDS = this.listViewInstance.curViewDS;\n let resutJSON = this.findDSAndIndexFromId(curViewDS, obj);\n if (isBlazor() && this.listViewInstance.isServerRendered) {\n if (resutJSON.index !== undefined) {\n // tslint:disable\n this.listViewInstance.interopAdaptor.invokeMethodAsync('RemoveItemPosition', resutJSON.index);\n // tslint:enable\n }\n }\n if (Object.keys(resutJSON).length) {\n dataSource = resutJSON.data;\n if (curViewDS[resutJSON.index - 1] &&\n curViewDS[resutJSON.index - 1].isHeader &&\n (curViewDS[resutJSON.index - 1])\n .items.length === 1) {\n this.removeUiItem(resutJSON.index - 1);\n this.removeUiItem(resutJSON.index - 1);\n }\n else {\n if (!(isBlazor() && this.listViewInstance.isServerRendered)) {\n this.removeUiItem(resutJSON.index);\n }\n }\n }\n const listDataSource = this.listViewInstance.dataSource instanceof DataManager\n ? this.listViewInstance.localData : this.listViewInstance.dataSource;\n let index = listDataSource.indexOf(dataSource);\n if (index !== -1) {\n listDataSource.splice(index, 1);\n this.listViewInstance.setViewDataSource(listDataSource);\n }\n // recollect all the list item into collection\n this.listViewInstance.liCollection =\n this.listViewInstance.curUL.querySelectorAll('li');\n }\n setCheckboxLI(li, e) {\n if (isBlazor() && this.listViewInstance.isServerRendered) {\n this.uiFirstIndex = Math.round(this.listViewInstance.element.scrollTop / 36) - 4;\n if (this.uiFirstIndex < 0) {\n this.uiFirstIndex = 0;\n }\n }\n let index = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n this.activeIndex = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n if (li.classList.contains(classNames.selected)) {\n if (this.uiIndices.activeIndices.indexOf(index) === -1) {\n this.uiIndices.activeIndices.push(index);\n }\n }\n else {\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(index), 1);\n }\n }\n setSelectLI(li, e) {\n this.activeIndex = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n }\n checkedItem(checked) {\n if (checked) {\n this.uiIndices.activeIndices = [];\n this.activeIndex = undefined;\n let data = this.listViewInstance.curViewDS;\n for (let index = 0; index < data.length; index++) {\n if (!data[index].isHeader) {\n this.uiIndices.activeIndices.push(index);\n }\n }\n }\n else {\n this.activeIndex = undefined;\n this.uiIndices.activeIndices = [];\n }\n }\n addUiItem(index) {\n // virtually new add list item based on the scollbar position\n // if the scroll bar is at the top, just pretend the new item has been added since no UI\n // change is required for the item that has been added at last but when scroll bar is at the bottom\n // just detach top and inject into bottom to mimic new item is added\n let curViewDs = this.listViewInstance.curViewDS;\n this.changeUiIndices(index, true);\n if (this.activeIndex && this.activeIndex >= index) {\n this.activeIndex++;\n }\n if (this.listViewInstance.showCheckBox &&\n curViewDs[index][this.listViewInstance.fields.isChecked]) {\n this.uiIndices.activeIndices.push(index);\n }\n if (!parseFloat(this.bottomElement.style.height) && !parseFloat(this.topElement.style.height)) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) + this.listItemHeight + 'px';\n }\n if (parseFloat(this.bottomElement.style.height)) {\n let liItem = this.listViewInstance.curUL.lastElementChild.previousSibling;\n let target = this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 2]);\n if (target) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) + this.listItemHeight + 'px';\n this.updateUI(liItem, index, target);\n }\n }\n else {\n let liItem = this.listViewInstance.curUL.firstElementChild.nextSibling;\n let target;\n if ((Object.keys(this.listViewInstance.curViewDS).length - 1) === index) {\n target = this.listViewInstance.curUL.lastElementChild;\n }\n else {\n target = this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 2]);\n }\n this.topElement.style.height = parseFloat(this.topElement.style.height) + this.listItemHeight + 'px';\n this.uiFirstIndex++;\n this.uiLastIndex++;\n if (target) {\n this.updateUI(liItem, index, target);\n this.listViewInstance.isWindow ? window.scrollTo(0, (pageYOffset + this.listItemHeight)) :\n this.listViewInstance.element.scrollTop += this.listItemHeight;\n }\n }\n this.totalHeight += this.listItemHeight;\n this.listDiff = Math.round(parseFloat(this.topElement.style.height) / this.listItemHeight);\n }\n removeUiItem(index) {\n this.totalHeight -= this.listItemHeight;\n let curViewDS = this.listViewInstance.curViewDS[index];\n let liItem = this.listViewInstance.getLiFromObjOrElement(curViewDS);\n this.listViewInstance.curViewDS.splice(index, 1);\n if (this.activeIndex && this.activeIndex >= index) {\n this.activeIndex--;\n }\n if (liItem) {\n if (this.domItemCount > Object.keys(this.listViewInstance.curViewDS).length) {\n detach(liItem);\n this.domItemCount--;\n this.uiLastIndex--;\n this.totalHeight = 0;\n }\n else {\n if (liItem.classList.contains(classNames.disable)) {\n liItem.classList.remove(classNames.disable);\n this.uiIndices.disabledItemIndices.splice(this.uiIndices.disabledItemIndices.indexOf(index), 1);\n }\n if (liItem.style.display === 'none') {\n liItem.style.display = '';\n this.uiIndices.hiddenItemIndices.splice(this.uiIndices.hiddenItemIndices.indexOf(index), 1);\n }\n if (this.listViewInstance.showCheckBox && liItem.classList.contains(classNames.selected)) {\n this.listViewInstance.removeSelect();\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(index), 1);\n let checklistElement = liItem.querySelector('.' + classNames.checkboxWrapper);\n checklistElement.removeAttribute('aria-checked');\n checklistElement.firstElementChild.classList.remove(classNames.checked);\n if (liItem.classList.contains(classNames.focused)) {\n liItem.classList.remove(classNames.focused);\n this.activeIndex = undefined;\n }\n }\n else if (liItem.classList.contains(classNames.selected)) {\n this.listViewInstance.removeSelect();\n this.activeIndex = undefined;\n }\n if (!parseFloat(this.bottomElement.style.height) && !parseFloat(this.topElement.style.height)) {\n this.updateUI(liItem, this.uiLastIndex, this.bottomElement);\n }\n else if (parseFloat(this.bottomElement.style.height)) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) - this.listItemHeight + 'px';\n this.updateUI(liItem, this.uiLastIndex, this.bottomElement);\n }\n else {\n this.topElement.style.height = parseFloat(this.topElement.style.height) - this.listItemHeight + 'px';\n this.updateUI(liItem, (this.uiFirstIndex - 1), this.topElement.nextSibling);\n this.uiLastIndex--;\n this.uiFirstIndex--;\n }\n }\n }\n this.changeUiIndices(index, false);\n this.listDiff = Math.round(parseFloat(this.topElement.style.height) / this.listItemHeight);\n }\n changeUiIndices(index, increment) {\n let keys = Object.keys(this.uiIndices);\n for (let ind = 0; ind < keys.length; ind++) {\n this.uiIndices[keys[ind]] = this.uiIndices[keys[ind]].map((i) => {\n if (i >= index) {\n return increment ? ++i : --i;\n }\n else {\n return i;\n }\n });\n }\n }\n addItem(data, fields, dataSource) {\n for (let i = 0; i < data.length; i++) {\n let currentItem = data[i];\n // push the given data to main data array\n dataSource.push(currentItem);\n // recalculate all the group data or other datasource related things\n this.listViewInstance.setViewDataSource(dataSource);\n // render list items for first time due to no datasource present earlier\n if (!this.domItemCount) {\n // fresh rendering for first time\n if ((this.listViewInstance.template || this.listViewInstance.groupTemplate) && !this.isNgTemplate()) {\n this.listViewInstance.listBaseOption.template = null;\n this.listViewInstance.listBaseOption.groupTemplate = null;\n this.listViewInstance.listBaseOption.itemCreated = this.createUIItem.bind(this);\n }\n this.uiVirtualization();\n // when expected expected DOM count doesn't meet the condition we need to create and inject new item into DOM\n }\n else if (this.domItemCount < this.expectedDomItemCount) {\n let ds = this.listViewInstance.findItemFromDS(dataSource, fields);\n if (ds instanceof Array) {\n if (this.listViewInstance.ulElement) {\n let index = this.listViewInstance.curViewDS.indexOf(currentItem);\n // inject new list item into DOM\n this.createAndInjectNewItem(currentItem, index);\n // check for group header item\n let curViewDS = this.listViewInstance.curViewDS[index - 1];\n if (curViewDS && curViewDS.isHeader && curViewDS.items.length === 1) {\n // target group item index in datasource\n --index;\n // inject new group header into DOM for previously created list item\n this.createAndInjectNewItem(curViewDS, index);\n }\n }\n // recollect all the list item into collection\n this.listViewInstance.liCollection =\n this.listViewInstance.curUL.querySelectorAll('li');\n }\n }\n else {\n let index = this.listViewInstance.curViewDS.indexOf(currentItem);\n // virtually new add list item based on the scollbar position\n this.addUiItem(index);\n // check for group header item needs to be added\n let curViewDS = this.listViewInstance.curViewDS[index - 1];\n if (curViewDS && curViewDS.isHeader && curViewDS.items.length === 1) {\n this.addUiItem(index - 1);\n }\n }\n }\n }\n createAndInjectNewItem(itemData, index) {\n // generate li item for given datasource\n let target;\n let li = ListBase.createListItemFromJson(this.listViewInstance.createElement, [itemData], this.listViewInstance.listBaseOption);\n // check for target element whether to insert before last item or group item\n if ((Object.keys(this.listViewInstance.curViewDS).length - 1) === index) {\n target = this.listViewInstance.curUL.lastElementChild;\n }\n else {\n // target group header's first child item to append its header\n target = this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index + 2]);\n }\n // insert before the target element\n this.listViewInstance.ulElement.insertBefore(li[0], target);\n // increment internal DOM count, last index count for new element\n this.domItemCount++;\n if (this.bottomElementHeight <= 0) {\n this.uiLastIndex++;\n }\n // recalculate the current item height, to avoid jumpy scroller\n this.refreshItemHeight();\n }\n createUIItem(args) {\n let virtualTemplate = this.listViewInstance.template;\n let template = this.listViewInstance.createElement('div');\n let commonTemplate = '
    ' +\n ' ${' + this.listViewInstance.fields.text + '}
    ';\n if (this.listViewInstance.showCheckBox) {\n // tslint:disable-next-line:no-any\n this.listViewInstance.renderCheckbox(args);\n // tslint:enable-next-line:no-any\n if ((!isNullOrUndefined(this.listViewInstance.virtualCheckBox)) &&\n (!isNullOrUndefined(this.listViewInstance.virtualCheckBox.outerHTML))) {\n let div = document.createElement('div');\n div.innerHTML = this.listViewInstance.template || commonTemplate;\n div.children[0].classList.add('e-checkbox');\n this.listViewInstance.checkBoxPosition === 'Left' ? div.children[0].classList.add('e-checkbox-left') :\n div.children[0].classList.add('e-checkbox-right');\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n div.children[0].insertBefore(this.listViewInstance.virtualCheckBox, div.childNodes[0].children[0]);\n }\n else {\n div.children[0].appendChild(this.listViewInstance.virtualCheckBox);\n }\n this.listViewInstance.template = div.innerHTML;\n }\n template.innerHTML = this.listViewInstance.template;\n this.listViewInstance.template = virtualTemplate;\n }\n else {\n template.innerHTML = this.listViewInstance.template || commonTemplate;\n }\n // tslint:disable-next-line:no-any\n let templateElements = template.getElementsByTagName('*');\n let groupTemplate = this.listViewInstance.createElement('div');\n if (this.listViewInstance.fields.groupBy) {\n groupTemplate.innerHTML = this.listViewInstance.groupTemplate || commonTemplate;\n }\n // tslint:disable-next-line:no-any\n let groupTemplateElements = groupTemplate.getElementsByTagName('*');\n if (args.curData.isHeader) {\n this.headerData = args.curData;\n }\n this.templateData = args.curData.isHeader ? args.curData.items[0] :\n args.curData;\n args.item.innerHTML = '';\n args.item.context = { data: args.curData, nodes: { flatTemplateNodes: [], groupTemplateNodes: [] } };\n for (let i = 0; i < templateElements.length; i++) {\n this.compileTemplate(templateElements[i], args.item, false);\n }\n for (let i = 0; i < groupTemplateElements.length; i++) {\n this.compileTemplate(groupTemplateElements[i], args.item, true);\n }\n args.item.context.template = args.curData.isHeader ? template.firstElementChild :\n groupTemplate.firstElementChild;\n args.item.context.type = args.curData.isHeader ? 'flatList' : 'groupList';\n let element = args.curData.isHeader ? groupTemplate : template;\n args.item.insertBefore(element.firstElementChild, null);\n }\n compileTemplate(element, item, isHeader) {\n this.textProperty(element, item, isHeader);\n this.classProperty(element, item, isHeader);\n this.attributeProperty(element, item, isHeader);\n }\n onChange(newData, listElement) {\n listElement.context.data = newData;\n let groupTemplateNodes = listElement.context.nodes.groupTemplateNodes;\n let flatTemplateNodes = listElement.context.nodes.flatTemplateNodes;\n if (!isNullOrUndefined(newData.isHeader) && newData.isHeader && listElement.context.type === 'groupList') {\n let element = listElement.firstElementChild;\n detach(listElement.firstElementChild);\n listElement.insertBefore(listElement.context.template, null);\n listElement.context.template = element;\n listElement.context.type = 'flatList';\n for (let i = 0; i < groupTemplateNodes.length; i++) {\n groupTemplateNodes[i].onChange(newData);\n }\n }\n else if (!newData.isHeader && listElement.context.type === 'flatList') {\n let element = listElement.firstElementChild;\n detach(listElement.firstElementChild);\n listElement.insertBefore(listElement.context.template, null);\n listElement.context.template = element;\n listElement.context.type = 'groupList';\n for (let i = 0; i < flatTemplateNodes.length; i++) {\n flatTemplateNodes[i].onChange(newData);\n }\n }\n else if (!newData.isHeader) {\n for (let i = 0; i < flatTemplateNodes.length; i++) {\n flatTemplateNodes[i].onChange(newData);\n }\n }\n else {\n for (let i = 0; i < groupTemplateNodes.length; i++) {\n groupTemplateNodes[i].onChange(newData);\n }\n }\n }\n updateContextData(listElement, node, isHeader) {\n if (isHeader) {\n listElement.context.nodes.groupTemplateNodes.push(node);\n }\n else {\n listElement.context.nodes.flatTemplateNodes.push(node);\n }\n }\n classProperty(element, listElement, isHeader) {\n let regex = new RegExp('\\\\${([^}]*)}', 'g');\n let resultantOutput = [];\n let regexMatch;\n while (regexMatch !== null) {\n let match = regex.exec(element.className);\n resultantOutput.push(match);\n regexMatch = match;\n if (regexMatch === null) {\n resultantOutput.pop();\n }\n }\n if (resultantOutput && resultantOutput.length) {\n for (let i = 0; i < resultantOutput.length; i++) {\n let classNameMatch = resultantOutput[i];\n let classFunction;\n if (classNameMatch[1].indexOf('?') !== -1 && classNameMatch[1].indexOf(':') !== -1) {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n classFunction = new Function('data', 'return ' + classNameMatch[1].replace(/\\$/g, 'data.'));\n }\n else {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n classFunction = new Function('data', 'return ' + 'data.' + classNameMatch[1]);\n }\n let subNode = {};\n if (isHeader) {\n subNode.bindedvalue = classFunction(this.headerData);\n }\n else {\n subNode.bindedvalue = classFunction(this.templateData);\n }\n subNode.onChange = (value) => {\n if (subNode.bindedvalue) {\n removeClass([element], subNode.bindedvalue.split(' ').filter((css) => css));\n }\n let newCss = classFunction(value);\n if (newCss) {\n addClass([element], (newCss).split(' ').filter((css) => css));\n }\n subNode.bindedvalue = newCss;\n };\n let className = classNameMatch[0].split(' ');\n for (let i = 0; i < className.length; i++) {\n element.classList.remove(className[i]);\n }\n if (subNode.bindedvalue) {\n addClass([element], subNode.bindedvalue.split(' ').filter((css) => css));\n }\n this.updateContextData(listElement, subNode, isHeader);\n }\n }\n }\n attributeProperty(element, listElement, isHeader) {\n let attributeNames = [];\n for (let i = 0; i < element.attributes.length; i++) {\n attributeNames.push(element.attributes[i].nodeName);\n }\n if (attributeNames.indexOf('class') !== -1) {\n attributeNames.splice(attributeNames.indexOf('class'), 1);\n }\n for (let i = 0; i < attributeNames.length; i++) {\n let attributeName = attributeNames[i];\n let attrNameMatch = new RegExp('\\\\${([^}]*)}', 'g').exec(attributeName) || [];\n let attrValueMatch = new RegExp('\\\\${([^}]*)}', 'g').exec(element.getAttribute(attributeName))\n || [];\n let attributeNameFunction;\n let attributeValueFunction;\n if (attrNameMatch.length || attrValueMatch.length) {\n if (attrNameMatch[1]) {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n attributeNameFunction = new Function('data', 'return ' + 'data.' + attrNameMatch[1]);\n }\n if (attrValueMatch[1]) {\n if (attrValueMatch[1].indexOf('?') !== -1 && attrValueMatch[1].indexOf(':') !== -1) {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n attributeValueFunction = new Function('data', 'return ' + attrValueMatch[1].replace(/\\$/g, 'data.'));\n }\n else {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n attributeValueFunction = new Function('data', 'return ' + 'data.' + attrValueMatch[1]);\n }\n }\n let subNode = {};\n if (isHeader) {\n subNode.bindedvalue = [attrNameMatch[1] === undefined ? undefined : attributeNameFunction(this.headerData),\n attrValueMatch[1] === undefined ? undefined : attributeValueFunction(this.headerData)];\n }\n else {\n subNode.bindedvalue = [attrNameMatch[1] === undefined ? undefined : attributeNameFunction(this.templateData),\n attrValueMatch[1] === undefined ? undefined : attributeValueFunction(this.templateData)];\n }\n subNode.attrName = subNode.bindedvalue[0] === undefined ?\n attributeName : subNode.bindedvalue[0];\n subNode.onChange = (value) => {\n let bindedvalue = subNode.bindedvalue[1] === undefined ?\n element.getAttribute(subNode.attrName) : attributeValueFunction(value);\n element.removeAttribute(subNode.attrName);\n subNode.attrName = subNode.bindedvalue[0] === undefined ? subNode.attrName : attributeNameFunction(value);\n element.setAttribute(subNode.attrName, bindedvalue);\n subNode.bindedvalue = [subNode.bindedvalue[0] === undefined ? undefined : attributeNameFunction(value),\n subNode.bindedvalue[1] === undefined ? undefined : attributeValueFunction(value)];\n };\n let attributeValue = subNode.bindedvalue[1] === undefined ? element.getAttribute(attributeName) :\n subNode.bindedvalue[1];\n element.removeAttribute(attributeName);\n element.setAttribute(subNode.attrName, attributeValue);\n this.updateContextData(listElement, subNode, isHeader);\n }\n }\n }\n textProperty(element, listElement, isHeader) {\n let regex = new RegExp('\\\\${([^}]*)}', 'g');\n let resultantOutput = [];\n let regexMatch;\n while (regexMatch !== null) {\n let match = regex.exec(element.innerText);\n resultantOutput.push(match);\n regexMatch = match;\n if (regexMatch === null) {\n resultantOutput.pop();\n }\n }\n let isChildHasTextContent = Array.prototype.some.call(element.children, (element) => {\n if (new RegExp('\\\\${([^}]*)}', 'g').exec(element.innerText)) {\n return true;\n }\n else {\n return false;\n }\n });\n if (resultantOutput && resultantOutput.length && !isChildHasTextContent) {\n for (let i = 0; i < resultantOutput.length; i++) {\n let textPropertyMatch = resultantOutput[i];\n let subNode = {};\n let textFunction;\n if (textPropertyMatch[1].indexOf('?') !== -1 && textPropertyMatch[1].indexOf(':') !== -1) {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n textFunction = new Function('data', 'return ' + textPropertyMatch[1].replace(/\\$/g, 'data.'));\n }\n else {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n textFunction = new Function('data', 'return ' + 'data.' + textPropertyMatch[1]);\n }\n if (isHeader) {\n subNode.bindedvalue = textFunction(this.headerData);\n }\n else {\n subNode.bindedvalue = textFunction(this.templateData);\n }\n subNode.onChange = (value) => {\n element.innerText = element.innerText.replace(subNode.bindedvalue, textFunction(value));\n subNode.bindedvalue = textFunction(value);\n };\n element.innerText = element.innerText.replace(textPropertyMatch[0], subNode.bindedvalue);\n this.updateContextData(listElement, subNode, isHeader);\n }\n }\n }\n reRenderUiVirtualization() {\n this.wireScrollEvent(true);\n if (this.listViewInstance.contentContainer) {\n detach(this.listViewInstance.contentContainer);\n }\n this.listViewInstance.preRender();\n // resetting the dom count to 0, to avoid edge case of dataSource suddenly becoming zero\n // and then manually adding item using addItem API\n this.domItemCount = 0;\n this.listViewInstance.header();\n this.listViewInstance.setLocalData();\n }\n updateUI(element, index, targetElement) {\n let onChange = this.isNgTemplate() ? this.onNgChange : this.onChange;\n if (this.listViewInstance.template || this.listViewInstance.groupTemplate) {\n let curViewDS = this.listViewInstance.curViewDS[index];\n element.dataset.uid = curViewDS[this.listViewInstance.fields.id] ?\n curViewDS[this.listViewInstance.fields.id].toString() : ListBase.generateId();\n onChange(curViewDS, element, this);\n }\n else {\n this.updateUiContent(element, index);\n }\n this.changeElementAttributes(element, index);\n if (targetElement) {\n this.listViewInstance.ulElement.insertBefore(element, targetElement);\n }\n }\n onNgChange(newData, listElement, virtualThis) {\n // compile given target element with template for new data\n let templateCompiler = compile(virtualThis.listViewInstance.template);\n let resultElement = templateCompiler(newData);\n while (listElement.lastChild) {\n listElement.removeChild(listElement.lastChild);\n }\n listElement.appendChild(resultElement[0]);\n }\n getModuleName() {\n return 'virtualization';\n }\n destroy() {\n this.wireScrollEvent(true);\n }\n}\n\n/**\n * Listview Component\n */\n\n/**\n * Listview Component\n */\n\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Sortable_1;\n/**\n * Sortable Module provides support to enable sortable functionality in Dom Elements.\n * ```html\n *
    \n *
    Item 1
    \n *
    Item 2
    \n *
    Item 3
    \n *
    Item 4
    \n *
    Item 5
    \n *
    \n * ```\n * ```typescript\n * let ele: HTMLElement = document.getElementById('sortable');\n * let sortObj: Sortable = new Sortable(ele, {});\n * ```\n */\nlet Sortable = Sortable_1 = class Sortable extends Base {\n constructor(element, options) {\n super(options, element);\n this.getHelper = (e) => {\n let target = this.getSortableElement(e.sender.target);\n if (!this.isValidTarget(target, this)) {\n return false;\n }\n let element;\n if (this.helper) {\n element = this.helper({ sender: target, element: e.element });\n }\n else {\n element = target.cloneNode(true);\n element.style.width = `${target.offsetWidth}px`;\n element.style.height = `${target.offsetHeight}px`;\n }\n addClass([element], ['e-sortableclone']);\n document.body.appendChild(element);\n return element;\n };\n this.onDrag = (e) => {\n this.trigger('drag', { event: e.event, element: this.element, target: e.target });\n let newInst = this.getSortableInstance(e.target);\n let target = this.getSortableElement(e.target, newInst);\n if ((this.isValidTarget(target, newInst) || e.target.className.indexOf('e-list-group-item') > -1) && this.curTarget !== target &&\n (newInst.placeHolderElement ? newInst.placeHolderElement !== e.target : true)) {\n if (e.target.className.indexOf('e-list-group-item') > -1) {\n target = e.target;\n }\n this.curTarget = target;\n let oldIdx = this.getIndex(newInst.placeHolderElement, newInst);\n oldIdx = isNullOrUndefined(oldIdx) ? this.getIndex(this.target) :\n this.getIndex(target, newInst) < oldIdx || !oldIdx ? oldIdx : oldIdx - 1;\n newInst.placeHolderElement = this.getPlaceHolder(target, newInst);\n let newIdx = this.getIndex(target, newInst);\n let idx = newInst.element !== this.element ? newIdx : oldIdx < newIdx ? newIdx + 1 : newIdx;\n if (newInst.placeHolderElement) {\n if (e.target.className.indexOf('e-list-group-item') > -1) {\n newInst.element.insertBefore(newInst.placeHolderElement, newInst.element.children[newIdx]);\n }\n else if (newInst.element !== this.element && idx === newInst.element.childElementCount - 1) {\n newInst.element.appendChild(newInst.placeHolderElement);\n }\n else {\n newInst.element.insertBefore(newInst.placeHolderElement, newInst.element.children[idx]);\n }\n this.refreshDisabled(oldIdx, newIdx, newInst);\n }\n else {\n this.updateItemClass(newInst);\n newInst.element.insertBefore(this.target, newInst.element.children[idx]);\n this.refreshDisabled(oldIdx, newIdx, newInst);\n this.curTarget = this.target;\n this.trigger('drop', { droppedElement: this.target, element: newInst.element, previousIndex: oldIdx, currentIndex: newIdx,\n target: e.target, helper: document.getElementsByClassName('e-sortableclone')[0], event: e.event, scope: this.scope });\n }\n }\n newInst = this.getSortableInstance(this.curTarget);\n if (isNullOrUndefined(target) && e.target !== newInst.placeHolderElement) {\n if (this.isPlaceHolderPresent(newInst)) {\n this.removePlaceHolder(newInst);\n }\n }\n else {\n let placeHolders = [].slice.call(document.getElementsByClassName('e-sortable-placeholder'));\n let inst;\n placeHolders.forEach((placeHolder) => {\n inst = this.getSortableInstance(placeHolder);\n if (inst.element && inst !== newInst) {\n this.removePlaceHolder(inst);\n }\n });\n }\n };\n this.onDragStart = (e) => {\n this.target = this.getSortableElement(e.target);\n let cancelDrag = false;\n this.target.classList.add('e-grabbed');\n this.curTarget = this.target;\n e.helper = document.getElementsByClassName('e-sortableclone')[0];\n let args = { cancel: false, element: this.element, target: this.target };\n this.trigger('beforeDragStart', args, (observedArgs) => {\n if (observedArgs.cancel) {\n cancelDrag = observedArgs.cancel;\n this.onDragStop(e);\n }\n });\n if (cancelDrag) {\n return;\n }\n if (isBlazor) {\n this.trigger('dragStart', { event: e.event, element: this.element, target: this.target,\n bindEvents: e.bindEvents, dragElement: e.dragElement });\n }\n else {\n this.trigger('dragStart', { event: e.event, element: this.element, target: this.target });\n }\n };\n this.onDragStop = (e) => {\n let dropInst = this.getSortableInstance(this.curTarget);\n let prevIdx;\n let curIdx;\n let handled;\n prevIdx = this.getIndex(this.target);\n if (this.isPlaceHolderPresent(dropInst)) {\n let curIdx = this.getIndex(dropInst.placeHolderElement, dropInst);\n let args = { previousIndex: prevIdx, currentIndex: curIdx, target: e.target, droppedElement: this.target,\n helper: e.helper, cancel: false, handled: false };\n this.trigger('beforeDrop', args, (observedArgs) => {\n if (!observedArgs.cancel) {\n handled = observedArgs.handled;\n this.updateItemClass(dropInst);\n if (observedArgs.handled) {\n let ele = this.target.cloneNode(true);\n this.target.classList.remove('e-grabbed');\n this.target = ele;\n }\n dropInst.element.insertBefore(this.target, dropInst.placeHolderElement);\n let curIdx = this.getIndex(this.target, dropInst);\n prevIdx = this === dropInst && (prevIdx - curIdx) > 1 ? prevIdx - 1 : prevIdx;\n this.trigger('drop', { event: e.event, element: dropInst.element, previousIndex: prevIdx, currentIndex: curIdx,\n target: e.target, helper: e.helper, droppedElement: this.target, scopeName: this.scope, handled: handled });\n }\n remove(dropInst.placeHolderElement);\n });\n }\n dropInst = this.getSortableInstance(e.target);\n curIdx = dropInst.element.childElementCount;\n prevIdx = this.getIndex(this.target);\n if (dropInst.element === e.target) {\n let beforeDropArgs = { previousIndex: prevIdx, currentIndex: curIdx, target: e.target,\n droppedElement: this.target, helper: e.helper, cancel: false };\n this.trigger('beforeDrop', beforeDropArgs, (observedArgs) => {\n if (!observedArgs.cancel) {\n this.updateItemClass(dropInst);\n dropInst.element.appendChild(this.target);\n this.trigger('drop', { event: e.event, element: dropInst.element, previousIndex: prevIdx, currentIndex: curIdx,\n target: e.target, helper: e.helper, droppedElement: this.target, scopeName: this.scope });\n }\n });\n }\n this.target.classList.remove('e-grabbed');\n this.target = null;\n this.curTarget = null;\n remove(e.helper);\n getComponent(this.element, Draggable).intDestroy(e.event);\n };\n this.bind();\n }\n bind() {\n if (!this.element.id) {\n this.element.id = getUniqueID('sortable');\n }\n if (!this.itemClass) {\n this.itemClass = 'e-sort-item';\n this.dataBind();\n }\n this.initializeDraggable();\n }\n initializeDraggable() {\n new Draggable(this.element, {\n helper: this.getHelper,\n dragStart: this.onDragStart,\n drag: this.onDrag,\n dragStop: this.onDragStop,\n dragTarget: `.${this.itemClass}`,\n enableTapHold: true,\n tapHoldThreshold: 200,\n queryPositionInfo: this.queryPositionInfo\n });\n }\n getPlaceHolder(target, instance) {\n if (instance.placeHolder) {\n if (this.isPlaceHolderPresent(instance)) {\n remove(instance.placeHolderElement);\n }\n instance.placeHolderElement = instance.placeHolder({ element: instance.element, grabbedElement: this.target, target: target });\n instance.placeHolderElement.classList.add('e-sortable-placeholder');\n return instance.placeHolderElement;\n }\n return null;\n }\n isValidTarget(target, instance) {\n return target && compareElementParent(target, instance.element) && target.classList.contains(instance.itemClass) &&\n !target.classList.contains('e-disabled');\n }\n removePlaceHolder(instance) {\n remove(instance.placeHolderElement);\n instance.placeHolderElement = null;\n }\n updateItemClass(instance) {\n if (this !== instance) {\n this.target.classList.remove(this.itemClass);\n this.target.classList.add(instance.itemClass);\n }\n }\n getSortableInstance(element) {\n element = closest(element, `.e-${this.getModuleName()}`);\n if (element) {\n let inst = getComponent(element, Sortable_1);\n return inst.scope && this.scope && inst.scope === this.scope ? inst : this;\n }\n else {\n return this;\n }\n }\n refreshDisabled(oldIdx, newIdx, instance) {\n if (instance === this) {\n let element;\n let increased = oldIdx < newIdx;\n let disabledIdx;\n let start = increased ? oldIdx : newIdx;\n let end = increased ? newIdx : oldIdx;\n while (start <= end) {\n element = this.element.children[start];\n if (element.classList.contains('e-disabled')) {\n disabledIdx = this.getIndex(element);\n this.element.insertBefore(element, this.element.children[increased ? disabledIdx + 2 : disabledIdx - 1]);\n start = increased ? disabledIdx + 2 : disabledIdx + 1;\n }\n else {\n start++;\n }\n }\n }\n }\n getIndex(target, instance = this) {\n let idx;\n [].slice.call(instance.element.children).forEach((element, index) => {\n if (element === target) {\n idx = index;\n }\n });\n return idx;\n }\n getSortableElement(element, instance = this) {\n return closest(element, `.${instance.itemClass}`);\n }\n queryPositionInfo(value) {\n value.left = pageXOffset ? `${parseFloat(value.left) - pageXOffset}px` : value.left;\n value.top = pageYOffset ? `${parseFloat(value.top) - pageYOffset}px` : value.top;\n return value;\n }\n isPlaceHolderPresent(instance) {\n return instance.placeHolderElement && !!closest(instance.placeHolderElement, `#${instance.element.id}`);\n }\n /**\n * It is used to sort array of elements from source element to destination element.\n * @param destination - Defines the destination element to which the sortable elements needs to be appended.\n * If it is null, then the Sortable library element will be considered as destination.\n * @param targetIndexes - Specifies the sortable elements indexes which needs to be sorted.\n * @param insertBefore - Specifies the index before which the sortable elements needs to be appended.\n * If it is null, elements will be appended as last child.\n * @method moveTo\n * @return {void}\n */\n moveTo(destination, targetIndexes, insertBefore) {\n moveTo(this.element, destination, targetIndexes, insertBefore);\n }\n /**\n * It is used to destroy the Sortable library.\n */\n destroy() {\n if (this.itemClass === 'e-sort-item') {\n this.itemClass = null;\n this.dataBind();\n }\n getComponent(this.element, Draggable).destroy();\n super.destroy();\n }\n getModuleName() {\n return 'sortable';\n }\n onPropertyChanged(newProp, oldProp) {\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'itemClass':\n [].slice.call(this.element.children).forEach((element) => {\n if (element.classList.contains(oldProp.itemClass)) {\n element.classList.remove(oldProp.itemClass);\n }\n if (newProp.itemClass) {\n element.classList.add(newProp.itemClass);\n }\n });\n break;\n }\n }\n }\n};\n__decorate$1([\n Property(false)\n], Sortable.prototype, \"enableAnimation\", void 0);\n__decorate$1([\n Property(null)\n], Sortable.prototype, \"itemClass\", void 0);\n__decorate$1([\n Property(null)\n], Sortable.prototype, \"scope\", void 0);\n__decorate$1([\n Property()\n], Sortable.prototype, \"helper\", void 0);\n__decorate$1([\n Property()\n], Sortable.prototype, \"placeHolder\", void 0);\n__decorate$1([\n Event()\n], Sortable.prototype, \"drag\", void 0);\n__decorate$1([\n Event()\n], Sortable.prototype, \"beforeDragStart\", void 0);\n__decorate$1([\n Event()\n], Sortable.prototype, \"dragStart\", void 0);\n__decorate$1([\n Event()\n], Sortable.prototype, \"beforeDrop\", void 0);\n__decorate$1([\n Event()\n], Sortable.prototype, \"drop\", void 0);\nSortable = Sortable_1 = __decorate$1([\n NotifyPropertyChanges\n], Sortable);\n/**\n * It is used to sort array of elements from source element to destination element.\n * @private\n */\nfunction moveTo(from, to, targetIndexes, insertBefore) {\n let targetElements = [];\n if (!to) {\n to = from;\n }\n if (targetIndexes && targetIndexes.length) {\n targetIndexes.forEach((index) => {\n targetElements.push(from.children[index]);\n });\n }\n else {\n targetElements = [].slice.call(from.children);\n }\n if (isNullOrUndefined(insertBefore)) {\n targetElements.forEach((target) => {\n to.appendChild(target);\n });\n }\n else {\n let insertElement = to.children[insertBefore];\n targetElements.forEach((target) => {\n to.insertBefore(target, insertElement);\n });\n }\n}\n\n/**\n * Sortable Module\n */\n\n/**\n * List Components\n */\n\nexport { classNames, FieldSettings, ListView, Virtualization, cssClass, ListBase, getFieldValues, Sortable, moveTo };\n//# sourceMappingURL=ej2-lists.es2015.js.map\n","import { Animation, Browser, ChildProperty, Collection, Complex, Component, Draggable, Droppable, Event, EventHandler, KeyboardEvents, L10n, NotifyPropertyChanges, Property, SanitizeHtmlHelper, Touch, addClass, append, attributes, blazorTemplates, classList, closest, compile, createElement, detach, extend, formatUnit, getElement, getInstance, getRandomId, getUniqueID, getValue, isBlazor, isNullOrUndefined, isRippleEnabled, isUndefined, isVisible, matches, merge, remove, removeClass, resetBlazorTemplate, rippleEffect, select, selectAll, setStyleAttribute, setValue, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { Popup, calculatePosition, createSpinner, fit, getScrollableParent, getZindexPartial, hideSpinner, isCollide, showSpinner } from '@syncfusion/ej2-popups';\nimport { Button, createCheckBox, rippleMouseHandler } from '@syncfusion/ej2-buttons';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { Input } from '@syncfusion/ej2-inputs';\n\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst CLS_ROOT = 'e-hscroll';\nconst CLS_RTL = 'e-rtl';\nconst CLS_DISABLE = 'e-overlay';\nconst CLS_HSCROLLBAR = 'e-hscroll-bar';\nconst CLS_HSCROLLCON = 'e-hscroll-content';\nconst CLS_NAVARROW = 'e-nav-arrow';\nconst CLS_NAVRIGHTARROW = 'e-nav-right-arrow';\nconst CLS_NAVLEFTARROW = 'e-nav-left-arrow';\nconst CLS_HSCROLLNAV = 'e-scroll-nav';\nconst CLS_HSCROLLNAVRIGHT = 'e-scroll-right-nav';\nconst CLS_HSCROLLNAVLEFT = 'e-scroll-left-nav';\nconst CLS_DEVICE = 'e-scroll-device';\nconst CLS_OVERLAY = 'e-scroll-overlay';\nconst CLS_RIGHTOVERLAY = 'e-scroll-right-overlay';\nconst CLS_LEFTOVERLAY = 'e-scroll-left-overlay';\nconst OVERLAY_MAXWID = 40;\n/**\n * HScroll module is introduces horizontal scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs horizontal scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
    \n * \n * ```\n */\nlet HScroll = class HScroll extends Component {\n /**\n * Initializes a new instance of the HScroll class.\n * @param options - Specifies HScroll model properties as options.\n * @param element - Specifies the element for which horizontal scrolling applies.\n */\n constructor(options, element) {\n super(options, element);\n }\n /**\n * Initialize the event handler\n * @private\n */\n preRender() {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n let element = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (element.id === '') {\n element.id = getUniqueID('hscroll');\n this.uniqueId = true;\n }\n element.style.display = 'block';\n if (this.enableRtl) {\n element.classList.add(CLS_RTL);\n }\n }\n /**\n * To Initialize the horizontal scroll rendering\n * @private\n */\n render() {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlay(this.element);\n }\n this.setScrollState();\n }\n setScrollState() {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetWidth;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n }\n initialize() {\n let scrollEle = this.createElement('div', { className: CLS_HSCROLLCON });\n let scrollDiv = this.createElement('div', { className: CLS_HSCROLLBAR });\n scrollDiv.setAttribute('tabindex', '-1');\n let ele = this.element;\n let innerEle = [].slice.call(ele.children);\n for (let ele of innerEle) {\n scrollEle.appendChild(ele);\n }\n scrollDiv.appendChild(scrollEle);\n ele.appendChild(scrollDiv);\n scrollDiv.style.overflowX = 'hidden';\n this.scrollEle = scrollDiv;\n this.scrollItems = scrollEle;\n }\n getPersistData() {\n let keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n }\n /**\n * Returns the current module name.\n * @returns string\n * @private\n */\n getModuleName() {\n return 'hScroll';\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n * @returns void\n */\n destroy() {\n let ele = this.element;\n ele.style.display = '';\n ele.classList.remove(CLS_ROOT);\n ele.classList.remove(CLS_DEVICE);\n let nav = selectAll('.e-' + ele.id + '_nav.' + CLS_HSCROLLNAV, ele);\n let overlay = selectAll('.' + CLS_OVERLAY, ele);\n [].slice.call(overlay).forEach((ele) => {\n detach(ele);\n });\n for (let elem of [].slice.call(this.scrollItems.children)) {\n ele.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (nav.length > 0) {\n detach(nav[0]);\n if (!isNullOrUndefined(nav[1])) {\n detach(nav[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n super.destroy();\n }\n /**\n * Specifies the value to disable/enable the HScroll component.\n * When set to `true` , the component will be disabled.\n * @param {boolean} value - Based on this Boolean value, HScroll will be enabled (false) or disabled (true).\n * @returns void.\n */\n disable(value) {\n let navEles = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n value ? this.element.classList.add(CLS_DISABLE) : this.element.classList.remove(CLS_DISABLE);\n [].slice.call(navEles).forEach((el) => {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n }\n createOverlay(element) {\n let id = element.id.concat('_nav');\n let rightOverlayEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_RIGHTOVERLAY });\n let clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n let rightEle = this.createElement('div', { id: id.concat('_right'), className: clsRight });\n let navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n rightEle.appendChild(navItem);\n let leftEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_LEFTOVERLAY });\n if (this.ieCheck) {\n rightEle.classList.add('e-ie-align');\n }\n element.appendChild(rightOverlayEle);\n element.appendChild(rightEle);\n element.insertBefore(leftEle, element.firstChild);\n this.eventBinding([rightEle]);\n }\n createNavIcon(element) {\n let id = element.id.concat('_nav');\n let clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n let nav = this.createElement('div', { id: id.concat('_right'), className: clsRight });\n nav.setAttribute('aria-disabled', 'false');\n let navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n let clsLeft = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVLEFT);\n let navEle = this.createElement('div', { id: id.concat('_left'), className: clsLeft + ' ' + CLS_DISABLE });\n navEle.setAttribute('aria-disabled', 'true');\n let navLeftItem = this.createElement('div', { className: CLS_NAVLEFTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navEle.appendChild(navLeftItem);\n nav.appendChild(navItem);\n element.appendChild(nav);\n element.insertBefore(navEle, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navEle.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navEle]);\n }\n onKeyPress(e) {\n if (e.key === 'Enter') {\n let timeoutFun = () => {\n this.keyTimeout = true;\n this.eleScrolling(10, e.target, true);\n };\n this.keyTimer = window.setTimeout(() => {\n timeoutFun();\n }, 100);\n }\n }\n onKeyUp(e) {\n if (e.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n e.target.click();\n }\n clearTimeout(this.keyTimer);\n }\n eventBinding(ele) {\n [].slice.call(ele).forEach((el) => {\n new Touch(el, { tapHold: this.tabHoldHandler.bind(this), tapHoldThreshold: 500 });\n el.addEventListener('keydown', this.onKeyPress.bind(this));\n el.addEventListener('keyup', this.onKeyUp.bind(this));\n el.addEventListener('mouseup', this.repeatScroll.bind(this));\n el.addEventListener('touchend', this.repeatScroll.bind(this));\n el.addEventListener('contextmenu', (e) => {\n e.preventDefault();\n });\n EventHandler.add(el, 'click', this.clickEventHandler, this);\n });\n }\n repeatScroll() {\n clearInterval(this.timeout);\n }\n tabHoldHandler(e) {\n let trgt = e.originalEvent.target;\n trgt = this.contains(trgt, CLS_HSCROLLNAV) ? trgt.firstElementChild : trgt;\n let scrollDis = 10;\n let timeoutFun = () => {\n this.eleScrolling(scrollDis, trgt, true);\n };\n this.timeout = window.setInterval(() => {\n timeoutFun();\n }, 50);\n }\n contains(ele, className) {\n return ele.classList.contains(className);\n }\n eleScrolling(scrollDis, trgt, isContinuous) {\n let element = this.scrollEle;\n let rootEle = this.element;\n let classList$$1 = trgt.classList;\n if (classList$$1.contains(CLS_HSCROLLNAV)) {\n classList$$1 = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (this.contains(rootEle, CLS_RTL) && this.browserCheck) {\n scrollDis = -scrollDis;\n }\n let scrlLeft = element.scrollLeft;\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n if (classList$$1.contains(CLS_NAVRIGHTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n else {\n if (classList$$1.contains(CLS_NAVLEFTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n }\n clickEventHandler(e) {\n this.eleScrolling(this.scrollStep, e.target, false);\n }\n swipeHandler(e) {\n let swipeEle = this.scrollEle;\n let distance;\n if (e.velocity <= 1) {\n distance = e.distanceX / (e.velocity * 10);\n }\n else {\n distance = e.distanceX / e.velocity;\n }\n let start = 0.5;\n let animate = () => {\n let step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Left') {\n swipeEle.scrollLeft += distance * step;\n }\n else if (e.swipeDirection === 'Right') {\n swipeEle.scrollLeft -= distance * step;\n }\n start -= 0.5;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n }\n scrollUpdating(scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollLeft += scrollVal;\n }\n else {\n this.scrollEle.scrollLeft -= scrollVal;\n }\n }\n frameScrollRequest(scrollVal, action, isContinuous) {\n let step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollVal, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach((el) => {\n scrollVal -= el.offsetWidth;\n });\n }\n let animate = () => {\n let scrollValue;\n let scrollStep;\n if (this.contains(this.element, CLS_RTL) && this.browserCheck) {\n scrollValue = -scrollVal;\n scrollStep = -step;\n }\n else {\n scrollValue = scrollVal;\n scrollStep = step;\n }\n if (scrollValue < step) {\n window.cancelAnimationFrame(scrollStep);\n }\n else {\n this.scrollUpdating(scrollStep, action);\n scrollVal -= scrollStep;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n }\n touchHandler(e) {\n let ele = this.scrollEle;\n let distance;\n distance = e.distanceX;\n if ((this.ieCheck) && this.contains(this.element, CLS_RTL)) {\n distance = -distance;\n }\n if (e.scrollDirection === 'Left') {\n ele.scrollLeft = ele.scrollLeft + distance;\n }\n else if (e.scrollDirection === 'Right') {\n ele.scrollLeft = ele.scrollLeft - distance;\n }\n }\n arrowDisabling(addDisable, removeDisable) {\n if (this.isDevice) {\n let arrowEle = isNullOrUndefined(addDisable) ? removeDisable : addDisable;\n let arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisable)) {\n classList(arrowIcon, [CLS_NAVRIGHTARROW], [CLS_NAVLEFTARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVLEFTARROW], [CLS_NAVRIGHTARROW]);\n }\n }\n else {\n addDisable.classList.add(CLS_DISABLE);\n addDisable.setAttribute('aria-disabled', 'true');\n addDisable.removeAttribute('tabindex');\n removeDisable.classList.remove(CLS_DISABLE);\n removeDisable.setAttribute('aria-disabled', 'false');\n removeDisable.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n }\n scrollHandler(e) {\n let target = e.target;\n let width = target.offsetWidth;\n let rootEle = this.element;\n let navLeftEle = this.element.querySelector('.' + CLS_HSCROLLNAVLEFT);\n let navRightEle = this.element.querySelector('.' + CLS_HSCROLLNAVRIGHT);\n let leftOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n let rightOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n let scrollLeft = target.scrollLeft;\n if (scrollLeft <= 0) {\n scrollLeft = -scrollLeft;\n }\n if (this.isDevice) {\n if (this.enableRtl && !(this.browserCheck || this.ieCheck)) {\n leftOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n rightOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n }\n if (scrollLeft < OVERLAY_MAXWID) {\n leftOverlay.style.width = scrollLeft + 'px';\n }\n else {\n leftOverlay.style.width = '40px';\n }\n if ((target.scrollWidth - Math.ceil(width + scrollLeft)) < OVERLAY_MAXWID) {\n rightOverlay.style.width = (target.scrollWidth - Math.ceil(width + scrollLeft)) + 'px';\n }\n else {\n rightOverlay.style.width = '40px';\n }\n }\n if (scrollLeft === 0) {\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n this.arrowDisabling(navLeftEle, navRightEle);\n }\n else {\n this.arrowDisabling(navRightEle, navLeftEle);\n }\n }\n else if (Math.ceil(width + scrollLeft + .1) >= target.scrollWidth) {\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n this.arrowDisabling(navRightEle, navLeftEle);\n }\n else {\n this.arrowDisabling(navLeftEle, navRightEle);\n }\n }\n else {\n let disEle = this.element.querySelector('.' + CLS_HSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n }\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n * @param {HScrollModel} newProp\n * @param {HScrollModel} oldProp\n * @returns void\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.element.classList.add(CLS_RTL) : this.element.classList.remove(CLS_RTL);\n break;\n }\n }\n }\n};\n__decorate([\n Property(null)\n], HScroll.prototype, \"scrollStep\", void 0);\nHScroll = __decorate([\n NotifyPropertyChanges\n], HScroll);\n\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst CLS_ROOT$1 = 'e-vscroll';\nconst CLS_RTL$1 = 'e-rtl';\nconst CLS_DISABLE$1 = 'e-overlay';\nconst CLS_VSCROLLBAR = 'e-vscroll-bar';\nconst CLS_VSCROLLCON = 'e-vscroll-content';\nconst CLS_NAVARROW$1 = 'e-nav-arrow';\nconst CLS_NAVUPARROW = 'e-nav-up-arrow';\nconst CLS_NAVDOWNARROW = 'e-nav-down-arrow';\nconst CLS_VSCROLLNAV = 'e-scroll-nav';\nconst CLS_VSCROLLNAVUP = 'e-scroll-up-nav';\nconst CLS_VSCROLLNAVDOWN = 'e-scroll-down-nav';\nconst CLS_DEVICE$1 = 'e-scroll-device';\nconst CLS_OVERLAY$1 = 'e-scroll-overlay';\nconst CLS_UPOVERLAY = 'e-scroll-up-overlay';\nconst CLS_DOWNOVERLAY = 'e-scroll-down-overlay';\nconst OVERLAY_MAXWID$1 = 40;\n/**\n * VScroll module is introduces vertical scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs vertical scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
    \n * \n * ```\n */\nlet VScroll = class VScroll extends Component {\n /**\n * Initializes a new instance of the VScroll class.\n * @param options - Specifies VScroll model properties as options.\n * @param element - Specifies the element for which vertical scrolling applies.\n */\n constructor(options, element) {\n super(options, element);\n }\n /**\n * Initialize the event handler\n * @private\n */\n preRender() {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n let ele = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (ele.id === '') {\n ele.id = getUniqueID('vscroll');\n this.uniqueId = true;\n }\n ele.style.display = 'block';\n if (this.enableRtl) {\n ele.classList.add(CLS_RTL$1);\n }\n }\n /**\n * To Initialize the vertical scroll rendering\n * @private\n */\n render() {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollEventHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE$1);\n this.createOverlayElement(this.element);\n }\n this.setScrollState();\n EventHandler.add(this.element, 'wheel', this.wheelEventHandler, this);\n }\n setScrollState() {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetHeight;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n }\n initialize() {\n let scrollCnt = createElement('div', { className: CLS_VSCROLLCON });\n let scrollBar = createElement('div', { className: CLS_VSCROLLBAR });\n scrollBar.setAttribute('tabindex', '-1');\n let ele = this.element;\n let innerEle = [].slice.call(ele.children);\n for (let ele of innerEle) {\n scrollCnt.appendChild(ele);\n }\n scrollBar.appendChild(scrollCnt);\n ele.appendChild(scrollBar);\n scrollBar.style.overflowY = 'hidden';\n this.scrollEle = scrollBar;\n this.scrollItems = scrollCnt;\n }\n getPersistData() {\n let keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n }\n /**\n * Returns the current module name.\n * @returns string\n * @private\n */\n getModuleName() {\n return 'vScroll';\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n * @returns void\n */\n destroy() {\n let el = this.element;\n el.style.display = '';\n removeClass([this.element], [CLS_ROOT$1, CLS_DEVICE$1]);\n let navs = selectAll('.e-' + el.id + '_nav.' + CLS_VSCROLLNAV, el);\n let overlays = selectAll('.' + CLS_OVERLAY$1, el);\n [].slice.call(overlays).forEach((ele) => {\n detach(ele);\n });\n for (let elem of [].slice.call(this.scrollItems.children)) {\n el.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (navs.length > 0) {\n detach(navs[0]);\n if (!isNullOrUndefined(navs[1])) {\n detach(navs[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollEventHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n super.destroy();\n }\n /**\n * Specifies the value to disable/enable the VScroll component.\n * When set to `true` , the component will be disabled.\n * @param {boolean} value - Based on this Boolean value, VScroll will be enabled (false) or disabled (true).\n * @returns void.\n */\n disable(value) {\n let navEle = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE$1 + ')', this.element);\n value ? this.element.classList.add(CLS_DISABLE$1) : this.element.classList.remove(CLS_DISABLE$1);\n [].slice.call(navEle).forEach((el) => {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n }\n createOverlayElement(element) {\n let id = element.id.concat('_nav');\n let downOverlayEle = createElement('div', { className: CLS_OVERLAY$1 + ' ' + CLS_DOWNOVERLAY });\n let clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n let downEle = createElement('div', { id: id.concat('down'), className: clsDown });\n let navItem = createElement('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW$1 + ' e-icons' });\n downEle.appendChild(navItem);\n let upEle = createElement('div', { className: CLS_OVERLAY$1 + ' ' + CLS_UPOVERLAY });\n if (this.ieCheck) {\n downEle.classList.add('e-ie-align');\n }\n element.appendChild(downOverlayEle);\n element.appendChild(downEle);\n element.insertBefore(upEle, element.firstChild);\n this.eventBinding([downEle]);\n }\n createNavIcon(element) {\n let id = element.id.concat('_nav');\n let clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n let nav = createElement('div', { id: id.concat('_down'), className: clsDown });\n nav.setAttribute('aria-disabled', 'false');\n let navItem = createElement('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW$1 + ' e-icons' });\n let clsUp = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVUP);\n let navElement = createElement('div', { id: id.concat('_up'), className: clsUp + ' ' + CLS_DISABLE$1 });\n navElement.setAttribute('aria-disabled', 'true');\n let navUpItem = createElement('div', { className: CLS_NAVUPARROW + ' ' + CLS_NAVARROW$1 + ' e-icons' });\n navElement.appendChild(navUpItem);\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n element.appendChild(nav);\n element.insertBefore(navElement, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navElement.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navElement]);\n }\n onKeyPress(ev) {\n if (ev.key === 'Enter') {\n let timeoutFun = () => {\n this.keyTimeout = true;\n this.eleScrolling(10, ev.target, true);\n };\n this.keyTimer = window.setTimeout(() => { timeoutFun(); }, 100);\n }\n }\n onKeyUp(ev) {\n if (ev.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n ev.target.click();\n }\n clearTimeout(this.keyTimer);\n }\n eventBinding(element) {\n [].slice.call(element).forEach((ele) => {\n new Touch(ele, { tapHold: this.tabHoldHandler.bind(this), tapHoldThreshold: 500 });\n ele.addEventListener('keydown', this.onKeyPress.bind(this));\n ele.addEventListener('keyup', this.onKeyUp.bind(this));\n ele.addEventListener('mouseup', this.repeatScroll.bind(this));\n ele.addEventListener('touchend', this.repeatScroll.bind(this));\n ele.addEventListener('contextmenu', (e) => {\n e.preventDefault();\n });\n EventHandler.add(ele, 'click', this.clickEventHandler, this);\n });\n }\n repeatScroll() {\n clearInterval(this.timeout);\n }\n tabHoldHandler(ev) {\n let trgt = ev.originalEvent.target;\n trgt = this.contains(trgt, CLS_VSCROLLNAV) ? trgt.firstElementChild : trgt;\n let scrollDistance = 10;\n let timeoutFun = () => {\n this.eleScrolling(scrollDistance, trgt, true);\n };\n this.timeout = window.setInterval(() => { timeoutFun(); }, 50);\n }\n contains(element, className) {\n return element.classList.contains(className);\n }\n eleScrolling(scrollDis, trgt, isContinuous) {\n let rootElement = this.element;\n let classList$$1 = trgt.classList;\n if (classList$$1.contains(CLS_VSCROLLNAV)) {\n classList$$1 = trgt.querySelector('.' + CLS_NAVARROW$1).classList;\n }\n if (classList$$1.contains(CLS_NAVDOWNARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else if (classList$$1.contains(CLS_NAVUPARROW)) {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n clickEventHandler(event) {\n this.eleScrolling(this.scrollStep, event.target, false);\n }\n wheelEventHandler(e) {\n e.preventDefault();\n this.frameScrollRequest(this.scrollStep, (e.deltaY > 0 ? 'add' : ''), false);\n }\n swipeHandler(e) {\n let swipeElement = this.scrollEle;\n let distance;\n if (e.velocity <= 1) {\n distance = e.distanceY / (e.velocity * 10);\n }\n else {\n distance = e.distanceY / e.velocity;\n }\n let start = 0.5;\n let animate = () => {\n let step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Up') {\n swipeElement.scrollTop += distance * step;\n }\n else if (e.swipeDirection === 'Down') {\n swipeElement.scrollTop -= distance * step;\n }\n start -= 0.02;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n }\n scrollUpdating(scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollTop += scrollVal;\n }\n else {\n this.scrollEle.scrollTop -= scrollVal;\n }\n }\n frameScrollRequest(scrollValue, action, isContinuous) {\n let step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollValue, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY$1, this.element)).forEach((el) => {\n scrollValue -= el.offsetHeight;\n });\n }\n let animate = () => {\n if (scrollValue < step) {\n window.cancelAnimationFrame(step);\n }\n else {\n this.scrollUpdating(step, action);\n scrollValue -= step;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n }\n touchHandler(e) {\n let el = this.scrollEle;\n let distance;\n distance = e.distanceY;\n if (e.scrollDirection === 'Up') {\n el.scrollTop = el.scrollTop + distance;\n }\n else if (e.scrollDirection === 'Down') {\n el.scrollTop = el.scrollTop - distance;\n }\n }\n arrowDisabling(addDisableCls, removeDisableCls) {\n if (this.isDevice) {\n let arrowEle = isNullOrUndefined(addDisableCls) ? removeDisableCls : addDisableCls;\n let arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW$1);\n if (isNullOrUndefined(addDisableCls)) {\n classList(arrowIcon, [CLS_NAVDOWNARROW], [CLS_NAVUPARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVUPARROW], [CLS_NAVDOWNARROW]);\n }\n }\n else {\n addDisableCls.classList.add(CLS_DISABLE$1);\n addDisableCls.setAttribute('aria-disabled', 'true');\n addDisableCls.removeAttribute('tabindex');\n removeDisableCls.classList.remove(CLS_DISABLE$1);\n removeDisableCls.setAttribute('aria-disabled', 'false');\n removeDisableCls.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n }\n scrollEventHandler(e) {\n let target = e.target;\n let height = target.offsetHeight;\n let rootEle = this.element;\n let navUpEle = this.element.querySelector('.' + CLS_VSCROLLNAVUP);\n let navDownEle = this.element.querySelector('.' + CLS_VSCROLLNAVDOWN);\n let upOverlay = this.element.querySelector('.' + CLS_UPOVERLAY);\n let downOverlay = this.element.querySelector('.' + CLS_DOWNOVERLAY);\n let scrollTop = target.scrollTop;\n if (scrollTop <= 0) {\n scrollTop = -scrollTop;\n }\n if (this.isDevice) {\n if (scrollTop < OVERLAY_MAXWID$1) {\n upOverlay.style.height = scrollTop + 'px';\n }\n else {\n upOverlay.style.height = '40px';\n }\n if ((target.scrollHeight - Math.ceil(height + scrollTop)) < OVERLAY_MAXWID$1) {\n downOverlay.style.height = (target.scrollHeight - Math.ceil(height + scrollTop)) + 'px';\n }\n else {\n downOverlay.style.height = '40px';\n }\n }\n if (scrollTop === 0) {\n this.arrowDisabling(navUpEle, navDownEle);\n }\n else if (Math.ceil(height + scrollTop + .1) >= target.scrollHeight) {\n this.arrowDisabling(navDownEle, navUpEle);\n }\n else {\n let disEle = this.element.querySelector('.' + CLS_VSCROLLNAV + '.' + CLS_DISABLE$1);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE$1);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n }\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n * @param {VScrollModel} newProp\n * @param {VScrollModel} oldProp\n * @returns void\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.element.classList.add(CLS_RTL$1) : this.element.classList.remove(CLS_RTL$1);\n break;\n }\n }\n }\n};\n__decorate$1([\n Property(null)\n], VScroll.prototype, \"scrollStep\", void 0);\nVScroll = __decorate$1([\n NotifyPropertyChanges\n], VScroll);\n\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst ENTER = 'enter';\nconst ESCAPE = 'escape';\nconst FOCUSED = 'e-focused';\nconst HEADER = 'e-menu-header';\nconst SELECTED = 'e-selected';\nconst SEPARATOR = 'e-separator';\nconst UPARROW = 'uparrow';\nconst DOWNARROW = 'downarrow';\nconst LEFTARROW = 'leftarrow';\nconst RIGHTARROW = 'rightarrow';\nconst HOME = 'home';\nconst END = 'end';\nconst CARET = 'e-caret';\nconst ITEM = 'e-menu-item';\nconst DISABLED = 'e-disabled';\nconst HIDE = 'e-menu-hide';\nconst ICONS = 'e-icons';\nconst RTL = 'e-rtl';\nconst POPUP = 'e-menu-popup';\nconst TEMPLATE_PROPERTY = 'Template';\n/**\n * Configures the field options of the Menu.\n */\nclass FieldSettings extends ChildProperty {\n}\n__decorate$2([\n Property('id')\n], FieldSettings.prototype, \"itemId\", void 0);\n__decorate$2([\n Property('parentId')\n], FieldSettings.prototype, \"parentId\", void 0);\n__decorate$2([\n Property('text')\n], FieldSettings.prototype, \"text\", void 0);\n__decorate$2([\n Property('iconCss')\n], FieldSettings.prototype, \"iconCss\", void 0);\n__decorate$2([\n Property('url')\n], FieldSettings.prototype, \"url\", void 0);\n__decorate$2([\n Property('separator')\n], FieldSettings.prototype, \"separator\", void 0);\n__decorate$2([\n Property('items')\n], FieldSettings.prototype, \"children\", void 0);\n/**\n * Specifies menu items.\n */\nclass MenuItem extends ChildProperty {\n}\n__decorate$2([\n Property(null)\n], MenuItem.prototype, \"iconCss\", void 0);\n__decorate$2([\n Property('')\n], MenuItem.prototype, \"id\", void 0);\n__decorate$2([\n Property(false)\n], MenuItem.prototype, \"separator\", void 0);\n__decorate$2([\n Collection([], MenuItem)\n], MenuItem.prototype, \"items\", void 0);\n__decorate$2([\n Property('')\n], MenuItem.prototype, \"text\", void 0);\n__decorate$2([\n Property('')\n], MenuItem.prototype, \"url\", void 0);\n/**\n * Animation configuration settings.\n */\nclass MenuAnimationSettings extends ChildProperty {\n}\n__decorate$2([\n Property('SlideDown')\n], MenuAnimationSettings.prototype, \"effect\", void 0);\n__decorate$2([\n Property(400)\n], MenuAnimationSettings.prototype, \"duration\", void 0);\n__decorate$2([\n Property('ease')\n], MenuAnimationSettings.prototype, \"easing\", void 0);\n/**\n * @private\n * Base class for Menu and ContextMenu components.\n */\nlet MenuBase = class MenuBase extends Component {\n /**\n * Constructor for creating the widget.\n * @private\n */\n constructor(options, element) {\n super(options, element);\n this.navIdx = [];\n this.animation = new Animation({});\n this.isTapHold = false;\n this.tempItem = [];\n }\n /**\n * Initialized third party configuration settings.\n * @private\n */\n preRender() {\n if (!this.isMenu) {\n let ul;\n if (this.element.tagName === 'EJS-CONTEXTMENU') {\n ul = this.createElement('ul', {\n id: getUniqueID(this.getModuleName()), className: 'e-control e-lib e-' + this.getModuleName()\n });\n let ejInst = getValue('ej2_instances', this.element);\n removeClass([this.element], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.clonedElement = this.element;\n this.element = ul;\n setValue('ej2_instances', ejInst, this.element);\n }\n else {\n ul = this.createElement('ul', { id: getUniqueID(this.getModuleName()) });\n append([].slice.call(this.element.cloneNode(true).children), ul);\n let refEle = this.element.nextElementSibling;\n refEle ? this.element.parentElement.insertBefore(ul, refEle) : this.element.parentElement.appendChild(ul);\n this.clonedElement = ul;\n }\n this.clonedElement.style.display = 'none';\n }\n if (this.element.tagName === 'EJS-MENU') {\n let ele = this.element;\n let ejInstance = getValue('ej2_instances', ele);\n let ul = this.createElement('ul');\n let wrapper = this.createElement('EJS-MENU', { className: 'e-' + this.getModuleName() + '-wrapper' });\n for (let idx = 0, len = ele.attributes.length; idx < len; idx++) {\n ul.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = ul;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.clonedElement = wrapper;\n this.element = ele;\n if (!this.element.id) {\n this.element.id = getUniqueID(this.getModuleName());\n }\n }\n }\n /**\n * Initialize the control rendering\n * @private\n */\n render() {\n this.initialize();\n this.renderItems();\n if (this.isMenu && this.template && isBlazor()) {\n let menuTemplateId = this.element.id + TEMPLATE_PROPERTY;\n resetBlazorTemplate(menuTemplateId, TEMPLATE_PROPERTY);\n if (Object.keys(blazorTemplates).length) {\n extend(this.tempItem, blazorTemplates[menuTemplateId], [], true);\n }\n updateBlazorTemplate(menuTemplateId, TEMPLATE_PROPERTY, this);\n }\n this.wireEvents();\n this.renderComplete();\n }\n initialize() {\n let wrapper = this.getWrapper();\n if (!wrapper) {\n wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n if (this.isMenu) {\n this.element.parentElement.insertBefore(wrapper, this.element);\n }\n else {\n document.body.appendChild(wrapper);\n }\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.split(' '));\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n wrapper.appendChild(this.element);\n if (this.isMenu && this.hamburgerMode) {\n if (!this.target) {\n this.createHeaderContainer(wrapper);\n }\n }\n }\n renderItems() {\n if (!this.items.length) {\n let items = ListBase.createJsonFromElement(this.element, { fields: { child: 'items' } });\n this.setProperties({ items: items }, true);\n if (isBlazor()) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n }\n let ul = this.createItems(this.items);\n append(Array.prototype.slice.call(ul.children), this.element);\n this.element.classList.add('e-menu-parent');\n if (this.isMenu) {\n let wrapper = this.getWrapper();\n this.element.classList.contains('e-vertical') ?\n this.addScrolling(wrapper, this.element, 'vscroll', wrapper.offsetHeight, this.element.offsetHeight)\n : this.addScrolling(wrapper, this.element, 'hscroll', wrapper.offsetWidth, this.element.offsetWidth);\n }\n }\n wireEvents() {\n let wrapper = this.getWrapper();\n if (this.target) {\n let target;\n let targetElems = selectAll(this.target);\n for (let i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.add(target, 'click', this.menuHeaderClickHandler, this);\n }\n else {\n if (Browser.isIos) {\n new Touch(target, { tapHold: this.touchHandler.bind(this) });\n }\n else {\n EventHandler.add(target, 'contextmenu', this.cmenuHandler, this);\n }\n }\n }\n this.targetElement = target;\n if (!this.isMenu) {\n EventHandler.add(this.targetElement, 'scroll', this.scrollHandler, this);\n for (let parent of getScrollableParent(this.targetElement)) {\n EventHandler.add(parent, 'scroll', this.scrollHandler, this);\n }\n }\n }\n if (!Browser.isDevice) {\n this.delegateMoverHandler = this.moverHandler.bind(this);\n this.delegateMouseDownHandler = this.mouseDownHandler.bind(this);\n EventHandler.add(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler, this);\n EventHandler.add(document, 'mousedown', this.delegateMouseDownHandler, this);\n }\n this.delegateClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.delegateClickHandler, this);\n this.wireKeyboardEvent(wrapper);\n this.rippleFn = rippleEffect(wrapper, { selector: '.' + ITEM });\n }\n wireKeyboardEvent(element) {\n let keyConfigs = {\n downarrow: DOWNARROW,\n uparrow: UPARROW,\n enter: ENTER,\n leftarrow: LEFTARROW,\n rightarrow: RIGHTARROW,\n escape: ESCAPE\n };\n if (this.isMenu) {\n keyConfigs.home = HOME;\n keyConfigs.end = END;\n }\n new KeyboardEvents(element, {\n keyAction: this.keyBoardHandler.bind(this),\n keyConfigs: keyConfigs\n });\n }\n mouseDownHandler(e) {\n if (closest(e.target, '.e-' + this.getModuleName() + '-wrapper') !== this.getWrapper()\n && (!closest(e.target, '.e-' + this.getModuleName() + '-popup'))) {\n this.closeMenu(this.isMenu ? null : this.navIdx.length, e);\n }\n }\n keyBoardHandler(e) {\n let actionName = '';\n let trgt = e.target;\n let actionNeeded = this.isMenu && !this.hamburgerMode && !this.element.classList.contains('e-vertical')\n && this.navIdx.length < 1;\n e.preventDefault();\n if (this.enableScrolling && e.keyCode === 13 && trgt.classList.contains('e-scroll-nav')) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [closest(trgt, '.e-' + this.getModuleName() + '-wrapper')]);\n }\n if (actionNeeded) {\n switch (e.action) {\n case RIGHTARROW:\n actionName = RIGHTARROW;\n e.action = DOWNARROW;\n break;\n case LEFTARROW:\n actionName = LEFTARROW;\n e.action = UPARROW;\n break;\n case DOWNARROW:\n actionName = DOWNARROW;\n e.action = RIGHTARROW;\n break;\n case UPARROW:\n actionName = UPARROW;\n e.action = '';\n break;\n }\n }\n else if (this.enableRtl) {\n switch (e.action) {\n case LEFTARROW:\n actionNeeded = true;\n actionName = LEFTARROW;\n e.action = RIGHTARROW;\n break;\n case RIGHTARROW:\n actionNeeded = true;\n actionName = RIGHTARROW;\n e.action = LEFTARROW;\n break;\n }\n }\n switch (e.action) {\n case DOWNARROW:\n case UPARROW:\n case END:\n case HOME:\n this.upDownKeyHandler(e);\n break;\n case RIGHTARROW:\n this.rightEnterKeyHandler(e);\n break;\n case LEFTARROW:\n this.leftEscKeyHandler(e);\n break;\n case ENTER:\n if (this.hamburgerMode && trgt.tagName === 'SPAN' && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n this.rightEnterKeyHandler(e);\n }\n break;\n case ESCAPE:\n this.leftEscKeyHandler(e);\n break;\n }\n if (actionNeeded) {\n e.action = actionName;\n }\n }\n upDownKeyHandler(e) {\n let cul = this.getUlByNavIdx();\n let defaultIdx = (e.action === DOWNARROW || e.action === HOME) ? 0 : cul.childElementCount - 1;\n let fliIdx = defaultIdx;\n let fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n if (e.action !== END && e.action !== HOME) {\n fliIdx = this.getIdx(cul, fli);\n }\n fli.classList.remove(FOCUSED);\n if (e.action !== END && e.action !== HOME) {\n e.action === DOWNARROW ? fliIdx++ : fliIdx--;\n if (fliIdx === (e.action === DOWNARROW ? cul.childElementCount : -1)) {\n fliIdx = defaultIdx;\n }\n }\n }\n let cli = cul.children[fliIdx];\n fliIdx = this.isValidLI(cli, fliIdx, e.action);\n cul.children[fliIdx].classList.add(FOCUSED);\n cul.children[fliIdx].focus();\n }\n isValidLI(cli, index, action) {\n let wrapper = this.getWrapper();\n let cul = this.getUlByNavIdx();\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n ((action === DOWNARROW) || (action === RIGHTARROW)) ? index++ : index--;\n }\n cli = cul.children[index];\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n index = this.isValidLI(cli, index, action);\n }\n return index;\n }\n getUlByNavIdx(navIdxLen = this.navIdx.length) {\n if (this.isMenu) {\n let popup = [this.getWrapper()].concat([].slice.call(selectAll('.' + POPUP)))[navIdxLen];\n return isNullOrUndefined(popup) ? null : select('.e-menu-parent', popup);\n }\n else {\n return this.getWrapper().children[navIdxLen];\n }\n }\n rightEnterKeyHandler(e) {\n let eventArgs;\n let cul = this.getUlByNavIdx();\n let fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n let fliIdx = this.getIdx(cul, fli);\n let navIdx = this.navIdx.concat(fliIdx);\n let item = this.getItem(navIdx);\n if (item.items.length) {\n this.navIdx.push(fliIdx);\n this.keyType = 'right';\n this.action = e.action;\n this.openMenu(fli, item, -1, -1, e);\n }\n else {\n if (e.action === ENTER) {\n if (this.isMenu && this.navIdx.length === 0) {\n this.removeLIStateByClass([SELECTED], [this.getWrapper()]);\n }\n else {\n fli.classList.remove(FOCUSED);\n }\n fli.classList.add(SELECTED);\n eventArgs = { element: fli, item: item, event: e };\n this.trigger('select', eventArgs);\n this.closeMenu(null, e);\n }\n }\n }\n }\n leftEscKeyHandler(e) {\n if (this.navIdx.length) {\n this.keyType = 'left';\n this.closeMenu(this.navIdx.length, e);\n }\n else {\n if (e.action === ESCAPE) {\n this.closeMenu(null, e);\n }\n }\n }\n scrollHandler(e) {\n this.closeMenu(null, e);\n }\n touchHandler(e) {\n this.isTapHold = true;\n this.cmenuHandler(e.originalEvent);\n }\n cmenuHandler(e) {\n e.preventDefault();\n this.isCMenu = true;\n this.pageX = e.changedTouches ? e.changedTouches[0].pageX + 1 : e.pageX + 1;\n this.pageY = e.changedTouches ? e.changedTouches[0].pageY + 1 : e.pageY + 1;\n this.closeMenu(null, e);\n if (this.isCMenu) {\n if (this.canOpen(e.target)) {\n this.openMenu(null, null, this.pageY, this.pageX, e);\n }\n this.isCMenu = false;\n }\n }\n closeMenu(ulIndex = 0, e = null) {\n if (this.isMenuVisible()) {\n let sli;\n let ul;\n let item;\n let items;\n let beforeCloseArgs;\n let wrapper = this.getWrapper();\n let popups = this.getPopups();\n let isClose = false;\n let cnt = this.isMenu ? popups.length + 1 : wrapper.childElementCount;\n ul = this.isMenu && cnt !== 1 ? select('.e-ul', popups[cnt - 2])\n : selectAll('.e-menu-parent', wrapper)[cnt - 1];\n if (this.isMenu && ul.classList.contains('e-menu')) {\n sli = this.getLIByClass(ul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n isClose = true;\n }\n if (!isClose) {\n let liElem = e && e.target && this.getLI(e.target);\n item = this.navIdx.length ? this.getItem(this.navIdx) : null;\n items = item ? item.items : this.items;\n beforeCloseArgs = { element: ul, parentItem: this.isMenu && isBlazor() ? this.getMenuItemModel(item, ulIndex) : item,\n items: items, event: e, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, (observedCloseArgs) => {\n let popupEle;\n let closeArgs;\n let popupId = '';\n let popupObj;\n let isOpen = !observedCloseArgs.cancel;\n if (isOpen || this.isCMenu) {\n if (this.isMenu) {\n popupEle = closest(ul, '.' + POPUP);\n if (this.hamburgerMode) {\n popupEle.parentElement.style.minHeight = '';\n closest(ul, '.e-menu-item').setAttribute('aria-expanded', 'false');\n }\n this.unWireKeyboardEvent(popupEle);\n this.destroyScrollObj(getInstance(popupEle.children[0], VScroll), popupEle.children[0]);\n popupObj = getInstance(popupEle, Popup);\n popupObj.hide();\n popupId = popupEle.id;\n popupObj.destroy();\n detach(popupEle);\n }\n else {\n this.toggleAnimation(ul, false);\n }\n closeArgs = { element: ul, parentItem: item, items: items };\n this.trigger('onClose', closeArgs);\n this.navIdx.pop();\n }\n let trgtliId;\n let closedLi;\n let trgtLi;\n let trgtpopUp = this.getWrapper() && this.getUlByNavIdx();\n if (this.isCMenu) {\n if (this.canOpen(e.target)) {\n this.openMenu(null, null, this.pageY, this.pageX, e);\n }\n this.isCMenu = false;\n }\n if (this.isMenu && trgtpopUp && popupId.length) {\n trgtliId = new RegExp('(.*)-ej2menu-' + this.element.id + '-popup').exec(popupId)[1];\n closedLi = trgtpopUp.querySelector('[id=\"' + trgtliId + '\"]');\n trgtLi = (liElem && trgtpopUp.querySelector('[id=\"' + liElem.id + '\"]'));\n }\n let submenus = liElem && liElem.querySelectorAll('.e-menu-item');\n if (isOpen && this.hamburgerMode && ulIndex && !(submenus.length)) {\n this.afterCloseMenu(e);\n }\n else if (isOpen && !this.hamburgerMode && this.navIdx.length && closedLi && !trgtLi) {\n this.closeMenu(this.navIdx[this.navIdx.length - 1], e);\n }\n else if (isOpen && !ulIndex && ((this.hamburgerMode && this.navIdx.length) || this.navIdx.length === 1)) {\n this.closeMenu(null, e);\n }\n else if (isOpen && isNullOrUndefined(ulIndex) && this.navIdx.length) {\n this.closeMenu(null, e);\n }\n else if (isOpen && !this.isMenu && !ulIndex && this.navIdx.length === 0 && !this.isMenusClosed) {\n this.isMenusClosed = true;\n this.closeMenu(0, e);\n }\n else if (isOpen && this.isMenu && e && e.target &&\n this.navIdx.length !== 0 && closest(e.target, '.e-menu-parent.e-control')) {\n this.closeMenu(0, e);\n }\n else {\n if (isOpen && (this.keyType === 'right' || this.keyType === 'click')) {\n this.afterCloseMenu(e);\n }\n else {\n let cul = this.getUlByNavIdx();\n let sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.setAttribute('aria-expanded', 'false');\n sli.classList.remove(SELECTED);\n if (liElem) {\n sli.classList.add(FOCUSED);\n sli.focus();\n }\n }\n if (!isOpen && this.hamburgerMode && liElem && liElem.getAttribute('aria-expanded') === 'false' &&\n liElem.getAttribute('aria-haspopup') === 'true') {\n if (closest(liElem, '.e-menu-parent.e-control')) {\n this.navIdx = [];\n }\n else {\n this.navIdx.pop();\n }\n this.navIdx.push(this.cliIdx);\n let item = this.getItem(this.navIdx);\n liElem.setAttribute('aria-expanded', 'true');\n this.openMenu(liElem, item, -1, -1, e);\n }\n }\n }\n this.removeStateWrapper();\n });\n }\n }\n }\n getMenuItemModel(item, level) {\n if (isNullOrUndefined(item)) {\n return null;\n }\n if (isNullOrUndefined(level)) {\n level = 0;\n }\n let fields = this.getFields(level);\n return { text: item[fields.text], id: item[fields.id], items: item[fields.child], separator: item[fields.separator],\n iconCss: item[fields.iconCss], url: item[fields.url] };\n }\n destroyScrollObj(scrollObj, scrollEle) {\n if (scrollObj) {\n scrollObj.destroy();\n scrollEle.parentElement.appendChild(select('.e-menu-parent', scrollEle));\n detach(scrollEle);\n }\n }\n getPopups() {\n let popups = [];\n [].slice.call(document.querySelectorAll('.' + POPUP)).forEach((elem) => {\n if (this.getIndex(elem.querySelector('.' + ITEM).id, true).length) {\n popups.push(elem);\n }\n });\n return popups;\n }\n isMenuVisible() {\n return (this.navIdx.length > 0 || (this.element.classList.contains('e-contextmenu') && isVisible(this.element).valueOf()));\n }\n canOpen(target) {\n let canOpen = true;\n if (this.filter) {\n canOpen = false;\n let filter = this.filter.split(' ');\n for (let i = 0, len = filter.length; i < len; i++) {\n if (closest(target, '.' + filter[i])) {\n canOpen = true;\n break;\n }\n }\n }\n return canOpen;\n }\n openMenu(li, item, top = 0, left = 0, e = null, target = this.targetElement) {\n let wrapper = this.getWrapper();\n this.lItem = li;\n let elemId = this.element.id !== '' ? this.element.id : 'menu';\n this.isMenusClosed = false;\n if (isNullOrUndefined(top)) {\n top = -1;\n }\n if (isNullOrUndefined(left)) {\n left = -1;\n }\n if (li) {\n this.uList = this.createItems(item[this.getField('children', this.navIdx.length - 1)]);\n if (!this.isMenu && Browser.isDevice) {\n wrapper.lastChild.style.display = 'none';\n let data = {\n text: item[this.getField('text')].toString(), iconCss: ICONS + ' e-previous'\n };\n let hdata = new MenuItem(this.items[0], 'items', data, true);\n let hli = this.createItems([hdata]).children[0];\n hli.classList.add(HEADER);\n this.uList.insertBefore(hli, this.uList.children[0]);\n }\n if (this.isMenu) {\n this.popupWrapper = this.createElement('div', {\n className: 'e-' + this.getModuleName() + '-wrapper ' + POPUP, id: li.id + '-ej2menu-' + elemId + '-popup'\n });\n if (this.hamburgerMode) {\n top = li.offsetHeight;\n li.appendChild(this.popupWrapper);\n }\n else {\n document.body.appendChild(this.popupWrapper);\n }\n this.isNestedOrVertical = this.element.classList.contains('e-vertical') || this.navIdx.length !== 1;\n this.popupObj = this.generatePopup(this.popupWrapper, this.uList, li, this.isNestedOrVertical);\n if (this.hamburgerMode) {\n this.calculateIndentSize(this.uList, li);\n }\n else {\n if (this.cssClass) {\n addClass([this.popupWrapper], this.cssClass.split(' '));\n }\n this.popupObj.hide();\n }\n this.triggerBeforeOpen(li, this.uList, item, e, 0, 0, 'menu');\n }\n else {\n this.uList.style.zIndex = this.element.style.zIndex;\n wrapper.appendChild(this.uList);\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n else {\n this.uList = this.element;\n this.uList.style.zIndex = getZindexPartial(target ? target : this.element).toString();\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n if (this.isMenu && this.template && isBlazor()) {\n let menuTemplateId = this.element.id + TEMPLATE_PROPERTY;\n if (Object.keys(blazorTemplates).length) {\n let itemFromBlazorTemplate = blazorTemplates[menuTemplateId];\n this.tempItem = this.tempItem.concat(itemFromBlazorTemplate);\n blazorTemplates[menuTemplateId] = this.tempItem;\n }\n updateBlazorTemplate(menuTemplateId, TEMPLATE_PROPERTY, this);\n }\n }\n calculateIndentSize(ul, li) {\n let liStyle = getComputedStyle(li);\n let liIndent = parseInt(liStyle.textIndent, 10);\n if (this.navIdx.length < 2 && !li.classList.contains('e-blankicon')) {\n liIndent *= 2;\n }\n else {\n liIndent += (liIndent / 4);\n }\n ul.style.textIndent = liIndent + 'px';\n let blankIconElem = ul.querySelectorAll('.e-blankicon');\n if (blankIconElem && blankIconElem.length) {\n let menuIconElem = ul.querySelector('.e-menu-icon');\n let menuIconElemStyle = getComputedStyle(menuIconElem);\n let blankIconIndent = (parseInt(menuIconElemStyle.marginRight, 10) + menuIconElem.offsetWidth + liIndent);\n for (let i = 0; i < blankIconElem.length; i++) {\n blankIconElem[i].style.textIndent = blankIconIndent + 'px';\n }\n }\n }\n generatePopup(popupWrapper, ul, li, isNestedOrVertical) {\n let popupObj = new Popup(popupWrapper, {\n actionOnScroll: this.hamburgerMode ? 'none' : 'reposition',\n relateTo: li,\n collision: this.hamburgerMode ? { X: 'none', Y: 'none' } : { X: isNestedOrVertical ||\n this.enableRtl ? 'none' : 'flip', Y: 'fit' },\n position: (isNestedOrVertical && !this.hamburgerMode) ? { X: 'right', Y: 'top' } : { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n enableRtl: this.enableRtl,\n content: ul,\n open: () => {\n let scrollEle = select('.e-menu-vscroll', popupObj.element);\n if (scrollEle) {\n scrollEle.style.height = 'inherit';\n scrollEle.style.maxHeight = '';\n }\n let ul = select('.e-ul', popupObj.element);\n popupObj.element.style.maxHeight = '';\n ul.focus();\n this.triggerOpen(ul);\n }\n });\n return popupObj;\n }\n createHeaderContainer(wrapper) {\n wrapper = wrapper || this.getWrapper();\n let spanElem = this.createElement('span', { className: 'e-' + this.getModuleName() + '-header' });\n let tempTitle = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.title) : this.title;\n let spanTitle = this.createElement('span', {\n className: 'e-' + this.getModuleName() + '-title', innerHTML: tempTitle\n });\n let spanIcon = this.createElement('span', {\n className: 'e-icons e-' + this.getModuleName() + '-icon', attrs: { 'tabindex': '0' }\n });\n spanElem.appendChild(spanTitle);\n spanElem.appendChild(spanIcon);\n wrapper.insertBefore(spanElem, this.element);\n }\n openHamburgerMenu(e) {\n if (this.hamburgerMode) {\n this.triggerBeforeOpen(null, this.element, null, e, 0, 0, 'hamburger');\n }\n }\n closeHamburgerMenu(e) {\n if (this.hamburgerMode) {\n let beforeCloseArgs;\n beforeCloseArgs = { element: this.element, parentItem: null, event: e, items: this.items, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, (observedHamburgerCloseArgs) => {\n if (!observedHamburgerCloseArgs.cancel) {\n this.closeMenu(null, e);\n this.element.classList.add('e-hide-menu');\n this.trigger('onClose', { element: this.element, parentItem: null, items: this.items });\n }\n });\n }\n }\n callFit(element, x, y, top, left) {\n return fit(element, null, { X: x, Y: y }, { top: top, left: left });\n }\n triggerBeforeOpen(li, ul, item, e, top, left, type) {\n let navIdx = this.getIndex(li ? li.id : null, true);\n let items = li ? item[this.getField('children', this.navIdx.length - 1)] : this.items;\n let eventArgs = {\n element: ul, items: items, parentItem: this.isMenu && isBlazor() ? this.getMenuItemModel(item, this.navIdx.length - 1) :\n item, event: e, cancel: false, top: top, left: left\n };\n let menuType = type;\n let collide;\n this.trigger('beforeOpen', eventArgs, (observedOpenArgs) => {\n switch (menuType) {\n case 'menu':\n if (!this.hamburgerMode) {\n this.top = observedOpenArgs.top;\n this.left = observedOpenArgs.left;\n }\n this.popupWrapper.style.display = 'block';\n if (!this.hamburgerMode) {\n this.popupWrapper.style.maxHeight = this.popupWrapper.getBoundingClientRect().height + 'px';\n this.addScrolling(this.popupWrapper, this.uList, 'vscroll', this.popupWrapper.offsetHeight, this.uList.offsetHeight);\n this.checkScrollOffset(e);\n }\n if (!this.hamburgerMode && !this.left && !this.top) {\n this.popupObj.refreshPosition(this.lItem, true);\n this.left = parseInt(this.popupWrapper.style.left, 10);\n this.top = parseInt(this.popupWrapper.style.top, 10);\n if (this.enableRtl) {\n this.left =\n this.isNestedOrVertical ? this.left - this.popupWrapper.offsetWidth - this.lItem.parentElement.offsetWidth + 2\n : this.left - this.popupWrapper.offsetWidth + this.lItem.offsetWidth;\n }\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if ((this.isNestedOrVertical || this.enableRtl) && (collide.indexOf('right') > -1\n || collide.indexOf('left') > -1)) {\n this.popupObj.collision.X = 'none';\n let offWidth = closest(this.lItem, '.e-' + this.getModuleName() + '-wrapper').offsetWidth;\n this.left =\n this.enableRtl ? calculatePosition(this.lItem, this.isNestedOrVertical ? 'right' : 'left', 'top').left\n : this.left - this.popupWrapper.offsetWidth - offWidth + 2;\n }\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if (collide.indexOf('left') > -1 || collide.indexOf('right') > -1) {\n this.left = this.callFit(this.popupWrapper, true, false, this.top, this.left).left;\n }\n this.popupWrapper.style.left = this.left + 'px';\n }\n else {\n this.popupObj.collision = { X: 'none', Y: 'none' };\n }\n this.popupWrapper.style.display = '';\n break;\n case 'none':\n this.top = observedOpenArgs.top;\n this.left = observedOpenArgs.left;\n break;\n case 'hamburger':\n if (!observedOpenArgs.cancel) {\n this.element.classList.remove('e-hide-menu');\n this.triggerOpen(this.element);\n }\n break;\n }\n if (menuType !== 'hamburger') {\n if (observedOpenArgs.cancel) {\n if (this.isMenu) {\n this.popupObj.destroy();\n detach(this.popupWrapper);\n }\n else if (ul.className.indexOf('e-ul') > -1) {\n detach(ul);\n }\n this.navIdx.pop();\n }\n else {\n if (this.isMenu) {\n if (this.hamburgerMode) {\n this.popupWrapper.style.top = this.top + 'px';\n this.popupWrapper.style.left = 0 + 'px';\n this.toggleAnimation(this.popupWrapper);\n }\n else {\n this.wireKeyboardEvent(this.popupWrapper);\n rippleEffect(this.popupWrapper, { selector: '.' + ITEM });\n this.popupWrapper.style.left = this.left + 'px';\n this.popupWrapper.style.top = this.top + 'px';\n let animationOptions = this.animationSettings.effect !== 'None' ? {\n name: this.animationSettings.effect, duration: this.animationSettings.duration,\n timingFunction: this.animationSettings.easing\n } : null;\n this.popupObj.show(animationOptions, this.lItem);\n }\n }\n else {\n this.setPosition(this.lItem, this.uList, this.top, this.left);\n this.toggleAnimation(this.uList);\n }\n }\n }\n if (this.keyType === 'right') {\n let cul = this.getUlByNavIdx();\n li.classList.remove(FOCUSED);\n let index;\n if (this.isMenu && this.navIdx.length === 1) {\n this.removeLIStateByClass([SELECTED], [this.getWrapper()]);\n }\n li.classList.add(SELECTED);\n if (this.action === ENTER) {\n let eventArgs = { element: li, item: item, event: e };\n this.trigger('select', eventArgs);\n }\n li.focus();\n cul = this.getUlByNavIdx();\n index = this.isValidLI(cul.children[0], 0, this.action);\n cul.children[index].classList.add(FOCUSED);\n cul.children[index].focus();\n }\n });\n }\n checkScrollOffset(e) {\n let wrapper = this.getWrapper();\n if (wrapper.children[0].classList.contains('e-menu-hscroll') && this.navIdx.length === 1) {\n let trgt = isNullOrUndefined(e) ? this.element : closest(e.target, '.' + ITEM);\n let offsetEle = select('.e-hscroll-bar', wrapper);\n let offsetLeft;\n let offsetRight;\n if (offsetEle.scrollLeft > trgt.offsetLeft) {\n offsetEle.scrollLeft -= (offsetEle.scrollLeft - trgt.offsetLeft);\n }\n offsetLeft = offsetEle.scrollLeft + offsetEle.offsetWidth;\n offsetRight = trgt.offsetLeft + trgt.offsetWidth;\n if (offsetLeft < offsetRight) {\n offsetEle.scrollLeft += (offsetRight - offsetLeft);\n }\n }\n }\n addScrolling(wrapper, ul, scrollType, wrapperOffset, contentOffset) {\n if (this.enableScrolling && wrapperOffset < contentOffset) {\n let scrollEle = this.createElement('div', { className: 'e-menu-' + scrollType });\n wrapper.appendChild(scrollEle);\n scrollEle.appendChild(ul);\n scrollEle.style.maxHeight = wrapper.style.maxHeight;\n let scrollObj;\n wrapper.style.overflow = 'hidden';\n if (scrollType === 'vscroll') {\n scrollObj = new VScroll({ enableRtl: this.enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', wrapper).offsetHeight / 2;\n }\n else {\n scrollObj = new HScroll({ enableRtl: this.enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', wrapper).offsetWidth;\n }\n }\n }\n setPosition(li, ul, top, left) {\n let px = 'px';\n this.toggleVisiblity(ul);\n if (ul === this.element || (left > -1 && top > -1)) {\n let collide = isCollide(ul, null, left, top);\n if (collide.indexOf('right') > -1) {\n left = left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n let offset = this.callFit(ul, false, true, top, left);\n top = offset.top - 20;\n }\n collide = isCollide(ul, null, left, top);\n if (collide.indexOf('left') > -1) {\n let offset = this.callFit(ul, true, false, top, left);\n left = offset.left;\n }\n }\n else {\n if (Browser.isDevice) {\n top = Number(this.element.style.top.replace(px, ''));\n left = Number(this.element.style.left.replace(px, ''));\n }\n else {\n let x = this.enableRtl ? 'left' : 'right';\n let offset = calculatePosition(li, x, 'top');\n top = offset.top;\n left = offset.left;\n let collide = isCollide(ul, null, this.enableRtl ? left - ul.offsetWidth : left, top);\n let xCollision = collide.indexOf('left') > -1 || collide.indexOf('right') > -1;\n if (xCollision) {\n offset = calculatePosition(li, this.enableRtl ? 'right' : 'left', 'top');\n left = offset.left;\n }\n if (this.enableRtl || xCollision) {\n left = (this.enableRtl && xCollision) ? left : left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n offset = this.callFit(ul, false, true, top, left);\n top = offset.top;\n }\n }\n }\n this.toggleVisiblity(ul, false);\n ul.style.top = top + px;\n ul.style.left = left + px;\n }\n toggleVisiblity(ul, isVisible$$1 = true) {\n ul.style.visibility = isVisible$$1 ? 'hidden' : '';\n ul.style.display = isVisible$$1 ? 'block' : 'none';\n }\n createItems(items) {\n let level = this.navIdx ? this.navIdx.length : 0;\n let fields = this.getFields(level);\n // tslint:disable-next-line:no-any\n if (isBlazor() && this.template && items.length && items[0].properties) {\n let itemsObj = [];\n items.forEach((item, index) => {\n itemsObj.push({});\n itemsObj[index][fields.text] = item[fields.text];\n if (!item[fields.id]) {\n item[fields.id] = getUniqueID('menuitem');\n }\n itemsObj[index][fields.id] = item[fields.id];\n itemsObj[index][fields.iconCss] = item[fields.iconCss];\n itemsObj[index][fields.url] = item[fields.url];\n itemsObj[index][fields.child] = item[fields.child];\n itemsObj[index][fields.separator] = item[fields.separator];\n });\n items = itemsObj;\n }\n let showIcon = this.hasField(items, this.getField('iconCss', level));\n let listBaseOptions = {\n showIcon: showIcon,\n moduleName: 'menu',\n fields: fields,\n template: this.template,\n itemNavigable: true,\n itemCreating: (args) => {\n if (!args.curData[args.fields[fields.id]]) {\n args.curData[args.fields[fields.id]] = getUniqueID('menuitem');\n }\n args.curData.htmlAttributes = {\n role: 'menuitem',\n tabindex: '-1'\n };\n if (this.isMenu && !args.curData[this.getField('separator', level)]) {\n args.curData.htmlAttributes['aria-label'] = args.curData[args.fields.text];\n }\n if (args.curData[args.fields[fields.iconCss]] === '') {\n args.curData[args.fields[fields.iconCss]] = null;\n }\n },\n itemCreated: (args) => {\n if (args.curData[this.getField('separator', level)]) {\n args.item.classList.add(SEPARATOR);\n args.item.removeAttribute('role');\n }\n if (showIcon && !args.curData[args.fields.iconCss]\n && !args.curData[this.getField('separator', level)]) {\n args.item.classList.add('e-blankicon');\n }\n if (args.curData[args.fields.child]\n && args.curData[args.fields.child].length) {\n let span = this.createElement('span', { className: ICONS + ' ' + CARET });\n args.item.appendChild(span);\n args.item.setAttribute('aria-haspopup', 'true');\n args.item.setAttribute('aria-expanded', 'false');\n if (!this.isMenu) {\n args.item.removeAttribute('role');\n }\n args.item.classList.add('e-menu-caret-icon');\n }\n if (this.isMenu && this.template) {\n args.item.setAttribute('id', args.curData[args.fields.id].toString());\n args.item.removeAttribute('data-uid');\n if (args.item.classList.contains('e-level-1')) {\n args.item.classList.remove('e-level-1');\n }\n if (args.item.classList.contains('e-has-child')) {\n args.item.classList.remove('e-has-child');\n }\n }\n let eventArgs = { item: args.curData, element: args.item };\n this.trigger('beforeItemRender', eventArgs);\n }\n };\n this.setProperties({ 'items': this.items }, true);\n if (this.isMenu) {\n listBaseOptions.templateID = this.element.id + TEMPLATE_PROPERTY;\n }\n let ul = ListBase.createList(this.createElement, items, listBaseOptions, !this.template);\n ul.setAttribute('tabindex', '0');\n if (this.isMenu) {\n ul.setAttribute('role', 'menu');\n }\n return ul;\n }\n moverHandler(e) {\n let trgt = e.target;\n this.liTrgt = trgt;\n let cli = this.getLI(trgt);\n let wrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : this.getWrapper();\n let hdrWrapper = this.getWrapper();\n let regex = new RegExp('-ej2menu-(.*)-popup');\n let ulId;\n let isDifferentElem = false;\n if (!wrapper) {\n return;\n }\n if (wrapper.id !== '') {\n ulId = regex.exec(wrapper.id)[1];\n }\n else {\n ulId = wrapper.querySelector('ul').id;\n }\n if (ulId !== this.element.id) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [this.getWrapper()]);\n if (this.navIdx.length) {\n isDifferentElem = true;\n }\n else {\n return;\n }\n }\n if (cli && closest(cli, '.e-' + this.getModuleName() + '-wrapper') && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [wrapper].concat(this.getPopups()) : [wrapper]);\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [hdrWrapper].concat(this.getPopups()) : [hdrWrapper]);\n cli.classList.add(FOCUSED);\n if (!this.showItemOnClick) {\n this.clickHandler(e);\n }\n }\n else if (this.isMenu && this.showItemOnClick && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n }\n if (this.isMenu) {\n if (!this.showItemOnClick && (trgt.parentElement !== wrapper && !closest(trgt, '.e-' + this.getModuleName() + '-popup'))\n && (!cli || (cli && !this.getIndex(cli.id, true).length))) {\n this.removeLIStateByClass([FOCUSED], [wrapper]);\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n else if (isDifferentElem && !this.showItemOnClick) {\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n if (!this.isClosed) {\n this.removeStateWrapper();\n }\n this.isClosed = false;\n }\n }\n removeStateWrapper() {\n if (this.liTrgt) {\n let wrapper = closest(this.liTrgt, '.e-menu-vscroll');\n if (this.liTrgt.tagName === 'DIV' && wrapper) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [wrapper]);\n }\n }\n }\n removeLIStateByClass(classList$$1, element) {\n let li;\n for (let i = 0; i < element.length; i++) {\n classList$$1.forEach((className) => {\n li = select('.' + className, element[i]);\n if (li) {\n li.classList.remove(className);\n }\n });\n }\n }\n getField(propName, level = 0) {\n let fieldName = this.fields[propName];\n return typeof fieldName === 'string' ? fieldName :\n (!fieldName[level] ? fieldName[fieldName.length - 1].toString()\n : fieldName[level].toString());\n }\n getFields(level = 0) {\n return {\n id: this.getField('itemId', level),\n iconCss: this.getField('iconCss', level),\n text: this.getField('text', level),\n url: this.getField('url', level),\n child: this.getField('children', level),\n separator: this.getField('separator', level)\n };\n }\n hasField(items, field) {\n for (let i = 0, len = items.length; i < len; i++) {\n if (items[i][field]) {\n return true;\n }\n }\n return false;\n }\n menuHeaderClickHandler(e) {\n if (closest(e.target, '.e-menu-wrapper').querySelector('ul.e-menu-parent').id !== this.element.id) {\n return;\n }\n this.element.classList.contains('e-hide-menu') ? this.openHamburgerMenu(e) : this.closeHamburgerMenu(e);\n }\n clickHandler(e) {\n if (this.isTapHold) {\n this.isTapHold = false;\n }\n else {\n let wrapper = this.getWrapper();\n let trgt = e.target;\n let cli = this.cli = this.getLI(trgt);\n let regex = new RegExp('-ej2menu-(.*)-popup');\n let cliWrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : null;\n let isInstLI = cli && cliWrapper && (this.isMenu ? this.getIndex(cli.id, true).length > 0\n : wrapper.firstElementChild.id === cliWrapper.firstElementChild.id);\n if (Browser.isDevice && this.isMenu) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n this.mouseDownHandler(e);\n }\n if (cli && cliWrapper && this.isMenu) {\n let cliWrapperId = cliWrapper.id ? regex.exec(cliWrapper.id)[1] : cliWrapper.querySelector('.e-menu-parent').id;\n if (this.element.id !== cliWrapperId) {\n return;\n }\n }\n if (isInstLI && e.type === 'click' && !cli.classList.contains(HEADER)) {\n this.setLISelected(cli);\n let navIdx = this.getIndex(cli.id, true);\n let item = this.getItem(navIdx);\n let eventArgs = { element: cli, item: item, event: e };\n this.trigger('select', eventArgs);\n }\n if (isInstLI && (e.type === 'mouseover' || Browser.isDevice || this.showItemOnClick)) {\n let ul;\n if (cli.classList.contains(HEADER)) {\n ul = wrapper.children[this.navIdx.length - 1];\n this.toggleAnimation(ul);\n let sli = this.getLIByClass(ul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n detach(cli.parentNode);\n this.navIdx.pop();\n }\n else {\n if (!cli.classList.contains(SEPARATOR)) {\n this.showSubMenu = true;\n let cul = cli.parentNode;\n this.cliIdx = this.getIdx(cul, cli);\n if (this.isMenu || !Browser.isDevice) {\n let culIdx = this.isMenu ? Array.prototype.indexOf.call([wrapper].concat(this.getPopups()), closest(cul, '.' + 'e-' + this.getModuleName() + '-wrapper'))\n : this.getIdx(wrapper, cul);\n if (this.navIdx[culIdx] === this.cliIdx) {\n this.showSubMenu = false;\n }\n if (culIdx !== this.navIdx.length && (e.type !== 'mouseover' || this.showSubMenu)) {\n let sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n this.isClosed = true;\n this.keyType = 'click';\n this.closeMenu(culIdx + 1, e);\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n }\n }\n }\n if (!this.isClosed) {\n this.afterCloseMenu(e);\n }\n this.isClosed = false;\n }\n }\n }\n else {\n if (this.isMenu && trgt.tagName === 'DIV' && this.navIdx.length && closest(trgt, '.e-menu-vscroll')) {\n let popupEle = closest(trgt, '.' + POPUP);\n let cIdx = Array.prototype.indexOf.call(this.getPopups(), popupEle) + 1;\n if (cIdx < this.navIdx.length) {\n this.closeMenu(cIdx + 1, e);\n this.removeLIStateByClass([FOCUSED, SELECTED], [popupEle]);\n }\n }\n else if (this.isMenu && this.hamburgerMode && trgt.tagName === 'SPAN'\n && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n if (trgt.tagName !== 'UL' || (this.isMenu ? trgt.parentElement.classList.contains('e-menu-wrapper') &&\n !this.getIndex(trgt.querySelector('.' + ITEM).id, true).length : trgt.parentElement !== wrapper)) {\n if (!cli) {\n this.removeLIStateByClass([SELECTED], [wrapper]);\n }\n if (!cli || !cli.querySelector('.' + CARET)) {\n this.closeMenu(null, e);\n }\n }\n }\n }\n }\n }\n afterCloseMenu(e) {\n let isHeader;\n if (this.showSubMenu) {\n if (this.showItemOnClick && this.navIdx.length === 0) {\n isHeader = closest(e.target, '.e-menu-parent.e-control');\n }\n else {\n isHeader = closest(this.element, '.e-menu-parent.e-control');\n }\n let idx = this.navIdx.concat(this.cliIdx);\n let item = this.getItem(idx);\n if (item && item[this.getField('children', idx.length - 1)] &&\n item[this.getField('children', idx.length - 1)].length) {\n if (e.type === 'mouseover' || (Browser.isDevice && this.isMenu)) {\n this.setLISelected(this.cli);\n }\n if ((!this.hamburgerMode && isHeader) || (this.hamburgerMode && this.cli.getAttribute('aria-expanded') === 'false')) {\n this.cli.setAttribute('aria-expanded', 'true');\n this.navIdx.push(this.cliIdx);\n this.openMenu(this.cli, item, null, null, e);\n }\n }\n else {\n if (e.type !== 'mouseover') {\n this.closeMenu(null, e);\n }\n }\n if (!isHeader) {\n let cul = this.getUlByNavIdx();\n let sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.setAttribute('aria-expanded', 'false');\n sli.classList.remove(SELECTED);\n }\n }\n }\n this.keyType = '';\n }\n setLISelected(li) {\n let sli = this.getLIByClass(li.parentElement, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n if (!this.isMenu) {\n li.classList.remove(FOCUSED);\n }\n li.classList.add(SELECTED);\n }\n getLIByClass(ul, classname) {\n for (let i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains(classname)) {\n return ul.children[i];\n }\n }\n return null;\n }\n /**\n * This method is used to get the index of the menu item in the Menu based on the argument.\n * @param item - item be passed to get the index | id to be passed to get the item index.\n * @param isUniqueId - Set `true` if it is a unique id.\n * @returns void\n */\n getItemIndex(item, isUniqueId) {\n let idx;\n if (typeof item === 'string') {\n idx = item;\n }\n else {\n idx = item.id;\n }\n let isText = (isUniqueId === false) ? false : true;\n let navIdx = this.getIndex(idx, isText);\n return navIdx;\n }\n /**\n * This method is used to set the menu item in the Menu based on the argument.\n * @param item - item need to be updated.\n * @param id - id to be passed to update the item.\n * @param isUniqueId - Set `true` if it is a unique id.\n * @returns void\n */\n setItem(item, id, isUniqueId) {\n let idx = id ? id : item.id;\n let isText = (isUniqueId === false) ? false : true;\n let navIdx = this.getIndex(idx, isText);\n let newItem = this.getItem(navIdx);\n newItem.iconCss = item.iconCss;\n newItem.id = item.id;\n newItem.text = item.text;\n newItem.url = item.url;\n newItem.separator = item.separator;\n newItem.items = item.items;\n }\n getItem(navIdx) {\n navIdx = navIdx.slice();\n let idx = navIdx.pop();\n let items = this.getItems(navIdx);\n return items[idx];\n }\n getItems(navIdx) {\n let items = this.items;\n for (let i = 0; i < navIdx.length; i++) {\n items = items[navIdx[i]][this.getField('children', i)];\n }\n return items;\n }\n setItems(newItems, navIdx) {\n let items = this.getItems(navIdx);\n items.splice(0, items.length);\n for (let i = 0; i < newItems.length; i++) {\n items.splice(i, 0, newItems[i]);\n }\n }\n getIdx(ul, li, skipHdr = true) {\n let idx = Array.prototype.indexOf.call(ul.querySelectorAll('li'), li);\n if (this.isMenu && this.template && isBlazor()) {\n idx = Array.prototype.indexOf.call(ul.querySelectorAll(li.tagName), li);\n }\n else {\n idx = Array.prototype.indexOf.call(ul.children, li);\n }\n if (skipHdr && ul.children[0].classList.contains(HEADER)) {\n idx--;\n }\n return idx;\n }\n getLI(elem) {\n if (elem.tagName === 'LI' && elem.classList.contains('e-menu-item')) {\n return elem;\n }\n return closest(elem, 'li.e-menu-item');\n }\n updateItemsByNavIdx() {\n let items = this.items;\n let count = 0;\n for (let index = 0; index < this.navIdx.length; index++) {\n items = items[index].items;\n if (!items) {\n break;\n }\n count++;\n let ul = this.getUlByNavIdx(count);\n if (!ul) {\n break;\n }\n this.updateItem(ul, items);\n }\n }\n removeChildElement(elem) {\n while (elem.firstElementChild) {\n elem.removeChild(elem.firstElementChild);\n }\n return elem;\n }\n /**\n * Called internally if any of the property value changed\n * @private\n * @param {MenuBaseModel} newProp\n * @param {MenuBaseModel} oldProp\n * @returns void\n */\n onPropertyChanged(newProp, oldProp) {\n let wrapper = this.getWrapper();\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.split(' '));\n }\n break;\n case 'enableRtl':\n wrapper.classList.toggle(RTL);\n break;\n case 'showItemOnClick':\n this.unWireEvents();\n this.showItemOnClick = newProp.showItemOnClick;\n this.wireEvents();\n break;\n case 'enableScrolling':\n if (newProp.enableScrolling) {\n let ul;\n this.element.classList.contains('e-vertical') ?\n this.addScrolling(wrapper, this.element, 'vscroll', wrapper.offsetHeight, this.element.offsetHeight)\n : this.addScrolling(wrapper, this.element, 'hscroll', wrapper.offsetWidth, this.element.offsetWidth);\n this.getPopups().forEach((wrapper) => {\n ul = select('.e-ul', wrapper);\n this.addScrolling(wrapper, ul, 'vscroll', wrapper.offsetHeight, ul.offsetHeight);\n });\n }\n else {\n let ul = wrapper.children[0];\n this.element.classList.contains('e-vertical') ? this.destroyScrollObj(getInstance(ul, VScroll), ul)\n : this.destroyScrollObj(getInstance(ul, HScroll), ul);\n wrapper.style.overflow = '';\n wrapper.appendChild(this.element);\n this.getPopups().forEach((wrapper) => {\n ul = wrapper.children[0];\n this.destroyScrollObj(getInstance(ul, VScroll), ul);\n wrapper.style.overflow = '';\n });\n }\n break;\n case 'items':\n let idx;\n let navIdx;\n let item;\n if (!Object.keys(oldProp.items).length) {\n this.updateItem(this.element, this.items);\n for (let i = 1, count = wrapper.childElementCount; i < count; i++) {\n detach(wrapper.lastElementChild);\n }\n if (this.isMenu && isBlazor()) {\n this.updateItemsByNavIdx();\n }\n else {\n this.navIdx = [];\n }\n }\n else {\n let keys = Object.keys(newProp.items);\n for (let i = 0; i < keys.length; i++) {\n navIdx = this.getChangedItemIndex(newProp, [], Number(keys[i]));\n if (navIdx.length <= this.getWrapper().children.length) {\n idx = navIdx.pop();\n item = this.getItems(navIdx);\n this.insertAfter([item[idx]], item[idx].text);\n this.removeItem(item, navIdx, idx);\n this.setItems(item, navIdx);\n }\n navIdx.length = 0;\n }\n }\n break;\n }\n }\n }\n updateItem(ul, items) {\n if (isBlazor()) {\n ul = this.removeChildElement(ul);\n }\n else {\n ul.innerHTML = '';\n }\n let lis = [].slice.call(this.createItems(items).children);\n lis.forEach((li) => {\n ul.appendChild(li);\n });\n }\n getChangedItemIndex(newProp, index, idx) {\n index.push(idx);\n let key = Object.keys(newProp.items[idx]).pop();\n if (key === 'items') {\n let item = newProp.items[idx];\n let popStr = Object.keys(item.items).pop();\n if (popStr) {\n this.getChangedItemIndex(item, index, Number(popStr));\n }\n }\n else {\n if (key === 'isParentArray' && index.length > 1) {\n index.pop();\n }\n }\n return index;\n }\n removeItem(item, navIdx, idx) {\n item.splice(idx, 1);\n let uls = this.getWrapper().children;\n if (navIdx.length < uls.length) {\n detach(uls[navIdx.length].children[idx]);\n }\n }\n /**\n * Used to unwire the bind events.\n * @private\n */\n unWireEvents(targetSelctor = this.target) {\n let wrapper = this.getWrapper();\n if (targetSelctor) {\n let target;\n let touchModule;\n let targetElems = selectAll(targetSelctor);\n for (let i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.remove(target, 'click', this.menuHeaderClickHandler);\n }\n else {\n if (Browser.isIos) {\n touchModule = getInstance(target, Touch);\n if (touchModule) {\n touchModule.destroy();\n }\n }\n else {\n EventHandler.remove(target, 'contextmenu', this.cmenuHandler);\n }\n }\n }\n if (!this.isMenu) {\n EventHandler.remove(this.targetElement, 'scroll', this.scrollHandler);\n for (let parent of getScrollableParent(this.targetElement)) {\n EventHandler.remove(parent, 'scroll', this.scrollHandler);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.remove(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler);\n EventHandler.remove(document, 'mousedown', this.delegateMouseDownHandler);\n }\n EventHandler.remove(document, 'click', this.delegateClickHandler);\n this.unWireKeyboardEvent(wrapper);\n this.rippleFn();\n }\n unWireKeyboardEvent(element) {\n let keyboardModule = getInstance(element, KeyboardEvents);\n if (keyboardModule) {\n keyboardModule.destroy();\n }\n }\n toggleAnimation(ul, isMenuOpen = true) {\n let pUlHeight;\n let pElement;\n if (this.animationSettings.effect === 'None' || !isMenuOpen) {\n this.end(ul, isMenuOpen);\n }\n else {\n this.animation.animate(ul, {\n name: this.animationSettings.effect,\n duration: this.animationSettings.duration,\n timingFunction: this.animationSettings.easing,\n begin: (options) => {\n if (this.hamburgerMode) {\n pElement = options.element.parentElement;\n options.element.style.position = 'absolute';\n pUlHeight = pElement.offsetHeight;\n options.element.style.maxHeight = options.element.offsetHeight + 'px';\n pElement.style.maxHeight = '';\n }\n else {\n options.element.style.display = 'block';\n options.element.style.maxHeight = options.element.getBoundingClientRect().height + 'px';\n }\n },\n progress: (options) => {\n if (this.hamburgerMode) {\n pElement.style.minHeight = (pUlHeight + options.element.offsetHeight) + 'px';\n }\n },\n end: (options) => {\n if (this.hamburgerMode) {\n options.element.style.position = '';\n options.element.style.maxHeight = '';\n pElement.style.minHeight = '';\n options.element.style.top = 0 + 'px';\n options.element.children[0].focus();\n this.triggerOpen(options.element.children[0]);\n }\n else {\n this.end(options.element, isMenuOpen);\n }\n }\n });\n }\n }\n triggerOpen(ul) {\n let item = this.navIdx.length ? this.getItem(this.navIdx) : null;\n let eventArgs = {\n element: ul, parentItem: item, items: item ? item.items : this.items\n };\n this.trigger('onOpen', eventArgs);\n }\n end(ul, isMenuOpen) {\n if (isMenuOpen) {\n ul.style.display = 'block';\n ul.style.maxHeight = '';\n this.triggerOpen(ul);\n if (ul.querySelector('.' + FOCUSED)) {\n ul.querySelector('.' + FOCUSED).focus();\n }\n else {\n let ele;\n ele = this.getWrapper().children[this.getIdx(this.getWrapper(), ul) - 1];\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n else {\n if (ul === this.element) {\n let fli = this.getLIByClass(this.element, FOCUSED);\n if (fli) {\n fli.classList.remove(FOCUSED);\n }\n let sli = this.getLIByClass(this.element, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n ul.style.display = 'none';\n }\n else {\n detach(ul);\n }\n }\n }\n /**\n * Get the properties to be maintained in the persisted state.\n * @returns string\n */\n getPersistData() {\n return '';\n }\n /**\n * Get wrapper element.\n * @returns Element\n * @private\n */\n getWrapper() {\n return closest(this.element, '.e-' + this.getModuleName() + '-wrapper');\n }\n getIndex(data, isUniqueId, items = this.items, nIndex = [], isCallBack = false, level = 0) {\n let item;\n level = isCallBack ? level + 1 : 0;\n for (let i = 0, len = items.length; i < len; i++) {\n item = items[i];\n if ((isUniqueId ? item[this.getField('itemId', level)] : item[this.getField('text', level)]) === data) {\n nIndex.push(i);\n break;\n }\n else if (item[this.getField('children', level)]\n && item[this.getField('children', level)].length) {\n nIndex = this.getIndex(data, isUniqueId, item[this.getField('children', level)], nIndex, true, level);\n if (nIndex[nIndex.length - 1] === -1) {\n if (i !== len - 1) {\n nIndex.pop();\n }\n }\n else {\n nIndex.unshift(i);\n break;\n }\n }\n else {\n if (i === len - 1) {\n nIndex.push(-1);\n }\n }\n }\n return (!isCallBack && nIndex[0] === -1) ? [] : nIndex;\n }\n /**\n * This method is used to enable or disable the menu items in the Menu based on the items and enable argument.\n * @param items Text items that needs to be enabled/disabled.\n * @param enable Set `true`/`false` to enable/disable the list items.\n * @param isUniqueId - Set `true` if it is a unique id.\n * @returns void\n */\n enableItems(items, enable = true, isUniqueId) {\n let ul;\n let idx;\n let navIdx;\n let disabled = DISABLED;\n let skipItem;\n for (let i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n if (this.navIdx.length) {\n if (navIdx.length !== 1) {\n skipItem = false;\n for (let i = 0, len = navIdx.length - 1; i < len; i++) {\n if (navIdx[i] !== this.navIdx[i]) {\n skipItem = true;\n break;\n }\n }\n if (skipItem) {\n continue;\n }\n }\n }\n else {\n if (navIdx.length !== 1) {\n continue;\n }\n }\n idx = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul) {\n if (enable) {\n if (this.isMenu) {\n ul.children[idx].classList.remove(disabled);\n ul.children[idx].removeAttribute('aria-disabled');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.remove(disabled);\n }\n else {\n ul.children[idx].classList.remove(disabled);\n }\n }\n }\n else {\n if (this.isMenu) {\n ul.children[idx].classList.add(disabled);\n ul.children[idx].setAttribute('aria-disabled', 'true');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.add(disabled);\n }\n else {\n ul.children[idx].classList.add(disabled);\n }\n }\n }\n }\n }\n }\n /**\n * This method is used to show the menu items in the Menu based on the items text.\n * @param items Text items that needs to be shown.\n * @param isUniqueId - Set `true` if it is a unique id.\n * @returns void\n */\n showItems(items, isUniqueId) {\n this.showHideItems(items, false, isUniqueId);\n }\n /**\n * This method is used to hide the menu items in the Menu based on the items text.\n * @param items Text items that needs to be hidden.\n * @returns void\n */\n hideItems(items, isUniqueId) {\n this.showHideItems(items, true, isUniqueId);\n }\n showHideItems(items, ishide, isUniqueId) {\n let ul;\n let index;\n let navIdx;\n for (let i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n index = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul) {\n if (ishide) {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[index + 1].classList.add(HIDE);\n }\n else {\n ul.children[index].classList.add(HIDE);\n }\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[index + 1].classList.remove(HIDE);\n }\n else {\n ul.children[index].classList.remove(HIDE);\n }\n }\n }\n }\n }\n /**\n * It is used to remove the menu items from the Menu based on the items text.\n * @param items Text items that needs to be removed.\n * @returns void\n */\n removeItems(items, isUniqueId) {\n let idx;\n let navIdx;\n let iitems;\n for (let i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n this.removeItem(iitems, navIdx, idx);\n }\n }\n /**\n * It is used to insert the menu items after the specified menu item text.\n * @param items Items that needs to be inserted.\n * @param text Text item after that the element to be inserted.\n * @returns void\n */\n insertAfter(items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId);\n }\n /**\n * It is used to insert the menu items before the specified menu item text.\n * @param items Items that needs to be inserted.\n * @param text Text item before that the element to be inserted.\n * @param isUniqueId - Set `true` if it is a unique id.\n * @returns void\n */\n insertBefore(items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId, false);\n }\n insertItems(items, text, isUniqueId, isAfter = true) {\n let li;\n let idx;\n let navIdx;\n let iitems;\n let menuitem;\n let showIcon;\n for (let i = 0; i < items.length; i++) {\n navIdx = this.getIndex(text, isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n menuitem = new MenuItem(iitems[0], 'items', items[i], true);\n iitems.splice(isAfter ? idx + 1 : idx, 0, menuitem);\n let uls = this.isMenu ? [this.getWrapper()].concat(this.getPopups()) : [].slice.call(this.getWrapper().children);\n if (navIdx.length < uls.length) {\n idx = isAfter ? idx + 1 : idx;\n showIcon = this.hasField(iitems, this.getField('iconCss', navIdx.length - 1));\n li = this.createItems(iitems).children[idx];\n let ul = this.isMenu ? select('.e-menu-parent', uls[navIdx.length]) : uls[navIdx.length];\n ul.insertBefore(li, ul.children[idx]);\n }\n }\n }\n removeAttributes() {\n ['top', 'left', 'display', 'z-index'].forEach((key) => {\n this.element.style.removeProperty(key);\n });\n ['role', 'tabindex', 'class', 'style'].forEach((key) => {\n if (key === 'class' && this.element.classList.contains('e-menu-parent')) {\n this.element.classList.remove('e-menu-parent');\n }\n if (['class', 'style'].indexOf(key) === -1 || !this.element.getAttribute(key)) {\n this.element.removeAttribute(key);\n }\n if (this.isMenu && key === 'class' && this.element.classList.contains('e-vertical')) {\n this.element.classList.remove('e-vertical');\n }\n });\n }\n /**\n * Destroys the widget.\n * @returns void\n */\n destroy() {\n let wrapper = this.getWrapper();\n if (wrapper) {\n this.unWireEvents();\n if (!this.isMenu) {\n this.clonedElement.style.display = '';\n if (this.clonedElement.tagName === 'EJS-CONTEXTMENU') {\n addClass([this.clonedElement], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.element = this.clonedElement;\n }\n else {\n if (this.refreshing && this.clonedElement.childElementCount && this.clonedElement.children[0].tagName === 'LI') {\n this.setProperties({ 'items': [] }, true);\n }\n if (document.getElementById(this.clonedElement.id)) {\n let refEle = this.clonedElement.nextElementSibling;\n refEle && refEle !== wrapper ? this.clonedElement.parentElement.insertBefore(this.element, refEle) :\n this.clonedElement.parentElement.appendChild(this.element);\n if (isBlazor()) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n append([].slice.call(this.clonedElement.children), this.element);\n detach(this.clonedElement);\n this.removeAttributes();\n }\n }\n this.clonedElement = null;\n }\n else {\n this.closeMenu();\n if (isBlazor()) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n this.removeAttributes();\n wrapper.parentNode.insertBefore(this.element, wrapper);\n }\n if (this.isMenu && this.clonedElement) {\n detach(this.element);\n wrapper.style.display = '';\n wrapper.classList.remove('e-' + this.getModuleName() + '-wrapper');\n wrapper.removeAttribute('data-ripple');\n }\n else {\n detach(wrapper);\n }\n super.destroy();\n }\n }\n};\n__decorate$2([\n Event()\n], MenuBase.prototype, \"beforeItemRender\", void 0);\n__decorate$2([\n Event()\n], MenuBase.prototype, \"beforeOpen\", void 0);\n__decorate$2([\n Event()\n], MenuBase.prototype, \"onOpen\", void 0);\n__decorate$2([\n Event()\n], MenuBase.prototype, \"beforeClose\", void 0);\n__decorate$2([\n Event()\n], MenuBase.prototype, \"onClose\", void 0);\n__decorate$2([\n Event()\n], MenuBase.prototype, \"select\", void 0);\n__decorate$2([\n Event()\n], MenuBase.prototype, \"created\", void 0);\n__decorate$2([\n Property('')\n], MenuBase.prototype, \"cssClass\", void 0);\n__decorate$2([\n Property(false)\n], MenuBase.prototype, \"showItemOnClick\", void 0);\n__decorate$2([\n Property('')\n], MenuBase.prototype, \"target\", void 0);\n__decorate$2([\n Property('')\n], MenuBase.prototype, \"filter\", void 0);\n__decorate$2([\n Property(null)\n], MenuBase.prototype, \"template\", void 0);\n__decorate$2([\n Property(false)\n], MenuBase.prototype, \"enableScrolling\", void 0);\n__decorate$2([\n Property(false)\n], MenuBase.prototype, \"enableHtmlSanitizer\", void 0);\n__decorate$2([\n Complex({ itemId: \"id\", text: \"text\", parentId: \"parentId\", iconCss: \"iconCss\", url: \"url\", separator: \"separator\", children: \"items\" }, FieldSettings)\n], MenuBase.prototype, \"fields\", void 0);\n__decorate$2([\n Collection([], MenuItem)\n], MenuBase.prototype, \"items\", void 0);\n__decorate$2([\n Complex({ duration: 400, easing: 'ease', effect: 'SlideDown' }, MenuAnimationSettings)\n], MenuBase.prototype, \"animationSettings\", void 0);\nMenuBase = __decorate$2([\n NotifyPropertyChanges\n], MenuBase);\n\n/**\n * Navigation Common modules\n */\n\nvar __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst CLS_VERTICAL = 'e-vertical';\nconst CLS_ITEMS = 'e-toolbar-items';\nconst BZ_ITEMS = 'e-blazor-toolbar-items';\nconst CLS_ITEM = 'e-toolbar-item';\nconst CLS_RTL$2 = 'e-rtl';\nconst CLS_SEPARATOR = 'e-separator';\nconst CLS_POPUPICON = 'e-popup-up-icon';\nconst CLS_POPUPDOWN = 'e-popup-down-icon';\nconst CLS_POPUPOPEN = 'e-popup-open';\nconst CLS_TEMPLATE = 'e-template';\nconst CLS_DISABLE$2 = 'e-overlay';\nconst CLS_POPUPTEXT = 'e-toolbar-text';\nconst CLS_TBARTEXT = 'e-popup-text';\nconst CLS_TBAROVERFLOW = 'e-overflow-show';\nconst CLS_POPOVERFLOW = 'e-overflow-hide';\nconst CLS_TBARBTN = 'e-tbar-btn';\nconst CLS_TBARNAV = 'e-hor-nav';\nconst CLS_TBARSCRLNAV = 'e-scroll-nav';\nconst CLS_TBARRIGHT = 'e-toolbar-right';\nconst CLS_TBARLEFT = 'e-toolbar-left';\nconst CLS_TBARCENTER = 'e-toolbar-center';\nconst CLS_TBARPOS = 'e-tbar-pos';\nconst CLS_HSCROLLCNT = 'e-hscroll-content';\nconst CLS_VSCROLLCNT = 'e-vscroll-content';\nconst CLS_HSCROLLBAR$1 = 'e-hscroll-bar';\nconst CLS_POPUPNAV = 'e-hor-nav';\nconst CLS_POPUPCLASS = 'e-toolbar-pop';\nconst CLS_POPUP = 'e-toolbar-popup';\nconst CLS_TBARBTNTEXT = 'e-tbar-btn-text';\nconst CLS_TBARNAVACT = 'e-nav-active';\nconst CLS_TBARIGNORE = 'e-ignore';\nconst CLS_POPPRI = 'e-popup-alone';\nconst CLS_HIDDEN = 'e-hidden';\nconst CLS_MULTIROW = 'e-toolbar-multirow';\nconst CLS_MULTIROWPOS = 'e-multirow-pos';\nconst CLS_MULTIROW_SEPARATOR = 'e-multirow-separator';\nconst CLS_EXTENDABLE_SEPARATOR = 'e-extended-separator';\nconst CLS_EXTEANDABLE_TOOLBAR = 'e-extended-toolbar';\nconst CLS_EXTENDABLECLASS = 'e-toolbar-extended';\nconst CLS_EXTENDPOPUP = 'e-expended-nav';\nconst CLS_EXTENDEDPOPOPEN = 'e-tbar-extended';\n/**\n * An item object that is used to configure Toolbar commands.\n */\nclass Item extends ChildProperty {\n}\n__decorate$3([\n Property('')\n], Item.prototype, \"id\", void 0);\n__decorate$3([\n Property('')\n], Item.prototype, \"text\", void 0);\n__decorate$3([\n Property('auto')\n], Item.prototype, \"width\", void 0);\n__decorate$3([\n Property('')\n], Item.prototype, \"cssClass\", void 0);\n__decorate$3([\n Property(false)\n], Item.prototype, \"showAlwaysInPopup\", void 0);\n__decorate$3([\n Property(false)\n], Item.prototype, \"disabled\", void 0);\n__decorate$3([\n Property('')\n], Item.prototype, \"prefixIcon\", void 0);\n__decorate$3([\n Property('')\n], Item.prototype, \"suffixIcon\", void 0);\n__decorate$3([\n Property(true)\n], Item.prototype, \"visible\", void 0);\n__decorate$3([\n Property('None')\n], Item.prototype, \"overflow\", void 0);\n__decorate$3([\n Property('')\n], Item.prototype, \"template\", void 0);\n__decorate$3([\n Property('Button')\n], Item.prototype, \"type\", void 0);\n__decorate$3([\n Property('Both')\n], Item.prototype, \"showTextOn\", void 0);\n__decorate$3([\n Property(null)\n], Item.prototype, \"htmlAttributes\", void 0);\n__decorate$3([\n Property('')\n], Item.prototype, \"tooltipText\", void 0);\n__decorate$3([\n Property('Left')\n], Item.prototype, \"align\", void 0);\n__decorate$3([\n Event()\n], Item.prototype, \"click\", void 0);\n/**\n * The Toolbar control contains a group of commands that are aligned horizontally.\n * ```html\n *
    \n * \n * ```\n */\nlet Toolbar = class Toolbar extends Component {\n /**\n * Initializes a new instance of the Toolbar class.\n * @param options - Specifies Toolbar model properties as options.\n * @param element - Specifies the element that is rendered as a Toolbar.\n */\n constructor(options, element) {\n super(options, element);\n this.resizeContext = this.resize.bind(this);\n /**\n * Contains the keyboard configuration of the Toolbar.\n */\n this.keyConfigs = {\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n popupOpen: 'enter',\n popupClose: 'escape',\n tab: 'tab',\n home: 'home',\n end: 'end',\n };\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n * @returns void.\n */\n destroy() {\n super.destroy();\n this.unwireEvents();\n this.tempId.forEach((ele) => {\n if (!isNullOrUndefined(this.element.querySelector(ele))) {\n document.body.appendChild(this.element.querySelector(ele)).style.display = 'none';\n }\n });\n if (isBlazor() && this.isServerRendered) {\n this.resetServerItems();\n }\n else {\n let subControls = this.element.querySelectorAll('.e-control');\n [].slice.call(subControls).forEach((node) => {\n let instances = node.ej2_instances;\n if (instances) {\n let instance = instances[0];\n if (instance) {\n instance.destroy();\n }\n }\n });\n }\n while (this.element.lastElementChild && !this.element.lastElementChild.classList.contains(BZ_ITEMS)) {\n this.element.removeChild(this.element.lastElementChild);\n }\n if (this.trgtEle) {\n this.element.appendChild(this.ctrlTem);\n }\n this.clearProperty();\n this.popObj = null;\n this.tbarAlign = null;\n this.remove(this.element, 'e-toolpop');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(' '));\n }\n this.element.removeAttribute('style');\n ['aria-disabled', 'aria-orientation', 'aria-haspopup', 'role'].forEach((attrb) => this.element.removeAttribute(attrb));\n }\n /**\n * Initialize the event handler\n * @private\n */\n preRender() {\n let eventArgs = { enableCollision: this.enableCollision, scrollStep: this.scrollStep };\n this.trigger('beforeCreate', eventArgs);\n this.enableCollision = eventArgs.enableCollision;\n this.scrollStep = eventArgs.scrollStep;\n this.scrollModule = null;\n this.popObj = null;\n this.tempId = [];\n this.tbarItemsCol = this.items;\n this.isVertical = this.element.classList.contains(CLS_VERTICAL) ? true : false;\n this.isExtendedOpen = false;\n this.popupPriCount = 0;\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL$2);\n }\n }\n wireEvents() {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n window.addEventListener('resize', this.resizeContext);\n if (this.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n }\n wireKeyboardEvent() {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs\n });\n EventHandler.add(this.element, 'keydown', this.docKeyDown, this);\n this.element.setAttribute('tabIndex', '0');\n }\n unwireKeyboardEvent() {\n if (this.keyModule) {\n EventHandler.remove(this.element, 'keydown', this.docKeyDown);\n this.keyModule.destroy();\n this.keyModule = null;\n }\n }\n docKeyDown(e) {\n if (e.target.tagName === 'INPUT') {\n return;\n }\n let popCheck = !isNullOrUndefined(this.popObj) && isVisible(this.popObj.element) && this.overflowMode !== 'Extended';\n if (e.keyCode === 9 && e.target.classList.contains('e-hor-nav') === true && popCheck) {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n let keyCheck = (e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 35 || e.keyCode === 36);\n if (keyCheck) {\n e.preventDefault();\n }\n }\n unwireEvents() {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n this.destroyScroll();\n this.unwireKeyboardEvent();\n window.removeEventListener('resize', this.resizeContext);\n EventHandler.remove(document, 'scroll', this.docEvent);\n EventHandler.remove(document, 'click', this.docEvent);\n }\n clearProperty() {\n this.tbarEle = [];\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n }\n docEvent(e) {\n let popEle = closest(e.target, '.e-popup');\n if (this.popObj && isVisible(this.popObj.element) && !popEle && this.overflowMode === 'Popup') {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n }\n destroyScroll() {\n if (this.scrollModule) {\n if (this.tbarAlign) {\n this.add(this.scrollModule.element, CLS_TBARPOS);\n }\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n }\n destroyItems() {\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach((el) => {\n detach(el);\n });\n let tbarItems = this.element.querySelector('.' + CLS_ITEMS);\n if (this.tbarAlign) {\n [].slice.call(tbarItems.children).forEach((el) => {\n detach(el);\n });\n this.tbarAlign = false;\n this.remove(tbarItems, CLS_TBARPOS);\n }\n this.clearProperty();\n }\n destroyMode() {\n if (this.scrollModule) {\n this.remove(this.scrollModule.element, CLS_RTL$2);\n this.destroyScroll();\n }\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n this.remove(this.element, CLS_EXTEANDABLE_TOOLBAR);\n let tempEle = this.element.querySelector('.e-toolbar-multirow');\n if (tempEle) {\n this.remove(tempEle, CLS_MULTIROW);\n }\n if (this.popObj) {\n this.popupRefresh(this.popObj.element, true);\n }\n }\n add(ele, val) {\n ele.classList.add(val);\n }\n remove(ele, val) {\n ele.classList.remove(val);\n }\n elementFocus(ele) {\n let fChild = ele.firstElementChild;\n if (fChild) {\n fChild.focus();\n this.activeEleSwitch(ele);\n }\n else {\n ele.focus();\n }\n }\n clstElement(tbrNavChk, trgt) {\n let clst;\n if (tbrNavChk && this.popObj && isVisible(this.popObj.element)) {\n clst = this.popObj.element.querySelector('.' + CLS_ITEM);\n }\n else if (this.element === trgt || tbrNavChk) {\n // tslint:disable-next-line:max-line-length\n clst = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE$2 + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n }\n else {\n clst = closest(trgt, '.' + CLS_ITEM);\n }\n return clst;\n }\n keyHandling(clst, e, trgt, navChk, scrollChk) {\n let popObj = this.popObj;\n let rootEle = this.element;\n let popAnimate = { name: 'FadeOut', duration: 100 };\n switch (e.action) {\n case 'moveRight':\n if (this.isVertical) {\n return;\n }\n if (rootEle === trgt) {\n this.elementFocus(clst);\n }\n else if (!navChk) {\n this.eleFocus(clst, 'next');\n }\n break;\n case 'moveLeft':\n if (this.isVertical) {\n return;\n }\n if (!navChk) {\n this.eleFocus(clst, 'previous');\n }\n break;\n case 'home':\n case 'end':\n let ele;\n let nodes;\n if (clst) {\n let popupCheck = closest(clst, '.e-popup');\n if (popupCheck) {\n if (isVisible(this.popObj.element)) {\n nodes = [].slice.call(popupCheck.children);\n if (e.action === 'home') {\n ele = nodes[0];\n }\n else {\n ele = nodes[nodes.length - 1];\n }\n }\n }\n else {\n nodes = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM);\n if (e.action === 'home') {\n ele = nodes[0];\n }\n else {\n ele = nodes[nodes.length - 1];\n }\n }\n if (ele) {\n this.elementFocus(ele);\n }\n }\n break;\n case 'moveUp':\n case 'moveDown':\n let value = e.action === 'moveUp' ? 'previous' : 'next';\n if (!this.isVertical) {\n if (popObj && closest(trgt, '.e-popup')) {\n let popEle = popObj.element;\n let popFrstEle = popEle.firstElementChild;\n if ((value === 'previous' && popFrstEle === clst) || (value === 'next' && popEle.lastElementChild === clst)) {\n return;\n }\n else {\n this.eleFocus(clst, value);\n }\n }\n else if (e.action === 'moveDown' && popObj && isVisible(popObj.element)) {\n this.elementFocus(clst);\n }\n }\n else {\n if (e.action === 'moveUp') {\n this.eleFocus(clst, 'previous');\n }\n else {\n this.eleFocus(clst, 'next');\n }\n }\n break;\n case 'tab':\n if (!scrollChk && !navChk) {\n let ele = clst.firstElementChild;\n if (rootEle === trgt) {\n if (this.activeEle) {\n this.activeEle.focus();\n }\n else {\n this.activeEleRemove(ele);\n ele.focus();\n }\n this.element.removeAttribute('tabindex');\n }\n }\n break;\n case 'popupClose':\n if (popObj && this.overflowMode !== 'Extended') {\n popObj.hide(popAnimate);\n }\n break;\n case 'popupOpen':\n if (!navChk) {\n return;\n }\n if (popObj && !isVisible(popObj.element)) {\n popObj.element.style.top = rootEle.offsetHeight + 'px';\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n else {\n popObj.hide(popAnimate);\n }\n break;\n }\n }\n keyActionHandler(e) {\n let trgt = e.target;\n if (trgt.tagName === 'INPUT' || trgt.tagName === 'TEXTAREA' || this.element.classList.contains(CLS_DISABLE$2)) {\n return;\n }\n e.preventDefault();\n let clst;\n let tbrNavChk = trgt.classList.contains(CLS_TBARNAV);\n let tbarScrollChk = trgt.classList.contains(CLS_TBARSCRLNAV);\n clst = this.clstElement(tbrNavChk, trgt);\n if (clst || tbarScrollChk) {\n this.keyHandling(clst, e, trgt, tbrNavChk, tbarScrollChk);\n }\n }\n /**\n * Specifies the value to disable/enable the Toolbar component.\n * When set to `true`, the component will be disabled.\n * @param {boolean} value - Based on this Boolean value, Toolbar will be enabled (false) or disabled (true).\n * @returns void.\n */\n disable(value) {\n let rootEle = this.element;\n value ? rootEle.classList.add(CLS_DISABLE$2) : rootEle.classList.remove(CLS_DISABLE$2);\n rootEle.setAttribute('tabindex', !value ? '0' : '-1');\n if (this.activeEle) {\n this.activeEle.setAttribute('tabindex', !value ? '0' : '-1');\n }\n if (this.scrollModule) {\n this.scrollModule.disable(value);\n }\n if (this.popObj) {\n if (isVisible(this.popObj.element) && this.overflowMode !== 'Extended') {\n this.popObj.hide();\n }\n rootEle.querySelector('#' + rootEle.id + '_nav').setAttribute('tabindex', !value ? '0' : '-1');\n }\n }\n eleContains(el) {\n // tslint:disable-next-line:max-line-length\n return el.classList.contains(CLS_SEPARATOR) || el.classList.contains(CLS_DISABLE$2) || el.getAttribute('disabled') || el.classList.contains(CLS_HIDDEN) || !isVisible(el);\n // tslint:enable-next-line:max-line-length\n }\n eleFocus(closest$$1, pos) {\n let sib = Object(closest$$1)[pos + 'ElementSibling'];\n if (sib) {\n let skipEle = this.eleContains(sib);\n if (skipEle) {\n this.eleFocus(sib, pos);\n return;\n }\n this.elementFocus(sib);\n }\n else if (this.tbarAlign) {\n let elem = Object(closest$$1.parentElement)[pos + 'ElementSibling'];\n if (!isNullOrUndefined(elem) && elem.children.length === 0) {\n elem = Object(elem)[pos + 'ElementSibling'];\n }\n if (!isNullOrUndefined(elem) && elem.children.length > 0) {\n if (pos === 'next') {\n let el = elem.querySelector('.' + CLS_ITEM);\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n el.firstElementChild.focus();\n this.activeEleSwitch(el);\n }\n }\n else {\n let el = elem.lastElementChild;\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n this.elementFocus(el);\n }\n }\n }\n }\n }\n clickHandler(e) {\n let trgt = e.target;\n let clsList = trgt.classList;\n let ele = this.element;\n let isPopupElement = !isNullOrUndefined(closest(trgt, '.' + CLS_POPUPCLASS));\n let popupNav = closest(trgt, ('.' + CLS_TBARNAV));\n if (!popupNav) {\n popupNav = trgt;\n }\n if (!ele.children[0].classList.contains('e-hscroll') && !ele.children[0].classList.contains('e-vscroll')\n && (clsList.contains(CLS_TBARNAV))) {\n clsList = trgt.querySelector('.e-icons').classList;\n }\n if (clsList.contains(CLS_POPUPICON) || clsList.contains(CLS_POPUPDOWN)) {\n this.popupClickHandler(ele, popupNav, CLS_RTL$2);\n }\n let itemObj;\n let clst = closest(e.target, '.' + CLS_ITEM);\n if ((isNullOrUndefined(clst) || clst.classList.contains(CLS_DISABLE$2)) && !popupNav.classList.contains(CLS_TBARNAV)) {\n return;\n }\n if (clst) {\n let tempItem = this.items[this.tbarEle.indexOf(clst)];\n if (tempItem && isBlazor() && this.isServerRendered) {\n itemObj = {\n id: tempItem.id,\n text: tempItem.text,\n width: tempItem.width,\n cssClass: tempItem.cssClass,\n showAlwaysInPopup: tempItem.showAlwaysInPopup,\n disabled: tempItem.disabled,\n prefixIcon: tempItem.prefixIcon,\n suffixIcon: tempItem.suffixIcon,\n visible: tempItem.visible,\n overflow: tempItem.overflow,\n template: tempItem.template,\n type: tempItem.type,\n showTextOn: tempItem.showTextOn,\n htmlAttributes: tempItem.htmlAttributes,\n tooltipText: tempItem.tooltipText,\n align: tempItem.align,\n click: tempItem.click\n };\n }\n else {\n itemObj = tempItem;\n }\n }\n let eventArgs = { originalEvent: e, item: itemObj };\n if (itemObj && !isNullOrUndefined(itemObj.click)) {\n this.trigger('items[' + this.tbarEle.indexOf(clst) + '].click', eventArgs);\n }\n if (!eventArgs.cancel) {\n this.trigger('clicked', eventArgs, (clickedArgs) => {\n if (!isNullOrUndefined(this.popObj) && isPopupElement && !clickedArgs.cancel && this.overflowMode === 'Popup' &&\n clickedArgs.item && clickedArgs.item.type !== 'Input') {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n });\n }\n }\n ;\n popupClickHandler(ele, popupNav, CLS_RTL) {\n let popObj = this.popObj;\n if (isVisible(popObj.element)) {\n popupNav.classList.remove(CLS_TBARNAVACT);\n popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n else {\n if (ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = true;\n popObj.position = { X: 'left', Y: 'top' };\n }\n if (popObj.offsetX === 0 && !ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = false;\n popObj.position = { X: 'right', Y: 'top' };\n }\n popObj.dataBind();\n popObj.refreshPosition();\n popObj.element.style.top = this.getElementOffsetY() + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '0px';\n }\n popupNav.classList.add(CLS_TBARNAVACT);\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n }\n /**\n * To Initialize the control rendering\n * @private\n */\n render() {\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.renderComplete();\n }\n initialize() {\n let width = formatUnit(this.width);\n let height = formatUnit(this.height);\n if (Browser.info.name !== 'msie' || this.height !== 'auto' || this.overflowMode === 'MultiRow') {\n setStyleAttribute(this.element, { 'height': height });\n }\n setStyleAttribute(this.element, { 'width': width });\n let ariaAttr = {\n 'role': 'toolbar', 'aria-disabled': 'false', 'aria-haspopup': 'false',\n 'aria-orientation': !this.isVertical ? 'horizontal' : 'vertical',\n };\n attributes(this.element, ariaAttr);\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n }\n renderControl() {\n let ele = this.element;\n this.trgtEle = (ele.children.length > 0 && (!isBlazor() && !this.isServerRendered)) ? ele.querySelector('div') : null;\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n this.renderItems();\n this.renderLayout();\n }\n renderLayout() {\n this.renderOverflowMode();\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.popObj.element.childElementCount > 1 && this.checkPopupRefresh(this.element, this.popObj.element)) {\n this.popupRefresh(this.popObj.element, false);\n }\n this.separator();\n }\n itemsAlign(items, itemEleDom) {\n let innerItem;\n let innerPos;\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n for (let i = 0; i < items.length; i++) {\n if (isBlazor() && this.isServerRendered) {\n this.isVertical = this.element.classList.contains(CLS_VERTICAL) ? true : false;\n let itemEleBlaDom = this.element.querySelector('.' + BZ_ITEMS);\n innerItem = itemEleBlaDom.querySelector('.' + CLS_ITEM + '[data-index=\"' + i + '\"]');\n if (!innerItem) {\n continue;\n }\n if (items[i].overflow !== 'Show' && items[i].showAlwaysInPopup && !innerItem.classList.contains(CLS_SEPARATOR)) {\n this.popupPriCount++;\n }\n if (items[i].htmlAttributes) {\n this.setAttr(items[i].htmlAttributes, innerItem);\n }\n if (items[i].type === 'Button') {\n EventHandler.clearEvents(innerItem);\n EventHandler.add(innerItem, 'click', this.itemClick, this);\n }\n }\n else {\n innerItem = this.renderSubComponent(items[i], i);\n }\n if (this.tbarEle.indexOf(innerItem) === -1) {\n this.tbarEle.push(innerItem);\n }\n if (!this.tbarAlign) {\n this.tbarItemAlign(items[i], itemEleDom, i);\n }\n innerPos = itemEleDom.querySelector('.e-toolbar-' + items[i].align.toLowerCase());\n if (innerPos) {\n if (!(items[i].showAlwaysInPopup && items[i].overflow !== 'Show')) {\n this.tbarAlgEle[(items[i].align + 's').toLowerCase()].push(innerItem);\n }\n innerPos.appendChild(innerItem);\n }\n else {\n itemEleDom.appendChild(innerItem);\n }\n }\n }\n serverItemsRerender() {\n this.destroyMode();\n this.resetServerItems();\n this.serverItemsRefresh();\n }\n serverItemsRefresh() {\n let wrapBlaEleDom = this.element.querySelector('.' + BZ_ITEMS);\n if (wrapBlaEleDom.children.length > 0) {\n this.itemsAlign(this.items, this.element.querySelector('.' + CLS_ITEMS));\n this.renderLayout();\n this.refreshOverflow();\n }\n }\n resetServerItems() {\n let wrapBlaEleDom = this.element.querySelector('.' + BZ_ITEMS);\n let itemEles = [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, this.element));\n append(itemEles, wrapBlaEleDom);\n this.clearProperty();\n }\n /** @hidden */\n changeOrientation() {\n let ele = this.element;\n if (this.isVertical) {\n ele.classList.remove(CLS_VERTICAL);\n this.isVertical = false;\n if (this.height === 'auto' || this.height === '100%') {\n ele.style.height = this.height;\n }\n ele.setAttribute('aria-orientation', 'horizontal');\n }\n else {\n ele.classList.add(CLS_VERTICAL);\n this.isVertical = true;\n ele.setAttribute('aria-orientation', 'vertical');\n setStyleAttribute(this.element, { 'height': formatUnit(this.height), 'width': formatUnit(this.width) });\n }\n this.destroyMode();\n this.refreshOverflow();\n }\n initScroll(element, innerItems) {\n if (!this.scrollModule && this.checkOverflow(element, innerItems[0])) {\n if (this.tbarAlign) {\n this.element.querySelector('.' + CLS_ITEMS + ' .' + CLS_TBARCENTER).removeAttribute('style');\n }\n if (this.isVertical) {\n this.scrollModule = new VScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n else {\n this.scrollModule = new HScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n this.remove(this.scrollModule.element, CLS_TBARPOS);\n setStyleAttribute(this.element, { overflow: 'hidden' });\n }\n }\n itemWidthCal(items) {\n let width = 0;\n let style;\n [].slice.call(selectAll('.' + CLS_ITEM, items)).forEach((el) => {\n if (isVisible(el)) {\n style = window.getComputedStyle(el);\n width += this.isVertical ? el.offsetHeight : el.offsetWidth;\n width += parseFloat(this.isVertical ? style.marginTop : style.marginRight);\n width += parseFloat(this.isVertical ? style.marginBottom : style.marginLeft);\n }\n });\n return width;\n }\n getScrollCntEle(innerItem) {\n let trgClass = (this.isVertical) ? '.e-vscroll-content' : '.e-hscroll-content';\n return innerItem.querySelector(trgClass);\n }\n checkOverflow(element, innerItem) {\n if (isNullOrUndefined(element) || isNullOrUndefined(innerItem) || !isVisible(element)) {\n return false;\n }\n let eleWidth = this.isVertical ? element.offsetHeight : element.offsetWidth;\n let itemWidth = this.isVertical ? innerItem.offsetHeight : innerItem.offsetWidth;\n if (this.tbarAlign || this.scrollModule || (eleWidth === itemWidth)) {\n itemWidth = this.itemWidthCal(this.scrollModule ? this.getScrollCntEle(innerItem) : innerItem);\n }\n let popNav = element.querySelector('.' + CLS_TBARNAV);\n let scrollNav = element.querySelector('.' + CLS_TBARSCRLNAV);\n let navEleWidth = 0;\n if (popNav) {\n navEleWidth = this.isVertical ? popNav.offsetHeight : popNav.offsetWidth;\n }\n else if (scrollNav) {\n navEleWidth = this.isVertical ? (scrollNav.offsetHeight * (2)) : (scrollNav.offsetWidth * 2);\n }\n if (itemWidth > eleWidth - navEleWidth) {\n return true;\n }\n else {\n return false;\n }\n }\n /**\n * Refresh the whole Toolbar component without re-rendering.\n * - It is used to manually refresh the Toolbar overflow modes such as scrollable, popup, multi row, and extended.\n * - It will refresh the Toolbar component after loading items dynamically.\n * @returns void.\n */\n refreshOverflow() {\n this.resize();\n }\n toolbarAlign(innerItems) {\n if (this.tbarAlign) {\n this.add(innerItems, CLS_TBARPOS);\n this.itemPositioning();\n }\n }\n renderOverflowMode() {\n let ele = this.element;\n let innerItems = ele.querySelector('.' + CLS_ITEMS);\n let priorityCheck = this.popupPriCount > 0;\n if (ele && ele.children.length > 0) {\n this.offsetWid = ele.offsetWidth;\n this.remove(this.element, 'e-toolpop');\n if (Browser.info.name === 'msie' && this.height === 'auto') {\n ele.style.height = '';\n }\n switch (this.overflowMode) {\n case 'Scrollable':\n if (isNullOrUndefined(this.scrollModule)) {\n this.initScroll(ele, [].slice.call(ele.getElementsByClassName(CLS_ITEMS)));\n }\n break;\n case 'Popup':\n this.add(this.element, 'e-toolpop');\n if (this.tbarAlign) {\n this.removePositioning();\n }\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n break;\n case 'MultiRow':\n this.add(innerItems, CLS_MULTIROW);\n if (this.checkOverflow(ele, innerItems) && this.tbarAlign) {\n this.removePositioning();\n this.add(innerItems, CLS_MULTIROWPOS);\n }\n if (ele.style.overflow === 'hidden') {\n ele.style.overflow = '';\n }\n if (Browser.info.name === 'msie' || ele.style.height !== 'auto') {\n ele.style.height = 'auto';\n }\n break;\n case 'Extended':\n this.add(this.element, CLS_EXTEANDABLE_TOOLBAR);\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n }\n }\n }\n setOverflowAttributes(ele) {\n this.createPopupEle(ele, [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, ele)));\n this.element.querySelector('.' + CLS_TBARNAV).setAttribute('tabIndex', '0');\n this.element.querySelector('.' + CLS_TBARNAV).setAttribute('role', 'list');\n }\n separator() {\n let element = this.element;\n let eleItem = [].slice.call(element.querySelectorAll('.' + CLS_SEPARATOR));\n let eleInlineItem;\n let multiVar = element.querySelector('.' + CLS_MULTIROW_SEPARATOR);\n let extendVar = element.querySelector('.' + CLS_EXTENDABLE_SEPARATOR);\n eleInlineItem = this.overflowMode === 'MultiRow' ? multiVar : extendVar;\n if (eleInlineItem !== null) {\n if (this.overflowMode === 'MultiRow') {\n eleInlineItem.classList.remove(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleInlineItem.classList.remove(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n for (let i = 0; i <= eleItem.length - 1; i++) {\n if (eleItem[i].offsetLeft < 30 && eleItem[i].offsetLeft !== 0) {\n if (this.overflowMode === 'MultiRow') {\n eleItem[i].classList.add(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleItem[i].classList.add(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n }\n }\n createPopupEle(ele, innerEle) {\n let innerNav = ele.querySelector('.' + CLS_TBARNAV);\n let vertical = this.isVertical;\n if (!innerNav) {\n this.createPopupIcon(ele);\n }\n innerNav = ele.querySelector('.' + CLS_TBARNAV);\n let innerNavDom = (vertical ? innerNav.offsetHeight : innerNav.offsetWidth);\n let eleWidth = ((vertical ? ele.offsetHeight : ele.offsetWidth) - (innerNavDom));\n this.element.classList.remove('e-rtl');\n setStyleAttribute(this.element, { direction: 'initial' });\n this.checkPriority(ele, innerEle, eleWidth, true);\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n this.element.style.removeProperty('direction');\n this.createPopup();\n }\n pushingPoppedEle(tbarObj, popupPri, ele, eleHeight, sepHeight) {\n let element = tbarObj.element;\n let nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n let nodeIndex = 0;\n let poppedEle = [].slice.call(selectAll('.' + CLS_POPUP, element.querySelector('.' + CLS_ITEMS)));\n let nodePri = 0;\n poppedEle.forEach((el, index) => {\n nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n if (el.classList.contains(CLS_TBAROVERFLOW) && nodes.length > 0) {\n if (tbarObj.tbResize && nodes.length > index) {\n ele.insertBefore(el, nodes[index]);\n ++nodePri;\n }\n else {\n ele.insertBefore(el, ele.children[nodes.length]);\n ++nodePri;\n }\n }\n else if (el.classList.contains(CLS_TBAROVERFLOW)) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (tbarObj.tbResize && el.classList.contains(CLS_POPOVERFLOW) && ele.children.length > 0 && nodes.length === 0) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (el.classList.contains(CLS_POPOVERFLOW)) {\n popupPri.push(el);\n }\n else if (tbarObj.tbResize) {\n ele.insertBefore(el, ele.childNodes[nodeIndex + nodePri]);\n ++nodeIndex;\n }\n else {\n ele.appendChild(el);\n }\n if (el.classList.contains(CLS_SEPARATOR)) {\n setStyleAttribute(el, { display: '', height: sepHeight + 'px' });\n }\n else {\n setStyleAttribute(el, { display: '', height: eleHeight + 'px' });\n }\n });\n popupPri.forEach((el) => {\n ele.appendChild(el);\n });\n let tbarEle = selectAll('.' + CLS_ITEM, element.querySelector('.' + CLS_ITEMS));\n for (let i = tbarEle.length - 1; i >= 0; i--) {\n let tbarElement = tbarEle[i];\n if (tbarElement.classList.contains(CLS_SEPARATOR) && this.overflowMode !== 'Extended') {\n setStyleAttribute(tbarElement, { display: 'none' });\n }\n else {\n break;\n }\n }\n }\n createPopup() {\n let element = this.element;\n let eleHeight;\n let eleItem;\n let sepHeight;\n let sepItem;\n if (this.overflowMode === 'Extended') {\n sepItem = element.querySelector('.' + CLS_SEPARATOR + ':not(.' + CLS_POPUP + ')');\n sepHeight = (element.style.height === 'auto' || element.style.height === '') ? null : sepItem.offsetHeight;\n }\n eleItem = element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_POPUP + ')');\n eleHeight = (element.style.height === 'auto' || element.style.height === '') ? null : (eleItem && eleItem.offsetHeight);\n let ele;\n let popupPri = [];\n if (element.querySelector('#' + element.id + '_popup.' + CLS_POPUPCLASS)) {\n ele = element.querySelector('#' + element.id + '_popup.' + CLS_POPUPCLASS);\n }\n else {\n let extendEle = this.createElement('div', {\n id: element.id + '_popup', className: CLS_POPUPCLASS + ' ' + CLS_EXTENDABLECLASS\n });\n let popupEle = this.createElement('div', { id: element.id + '_popup', className: CLS_POPUPCLASS });\n ele = this.overflowMode === 'Extended' ? extendEle : popupEle;\n }\n this.pushingPoppedEle(this, popupPri, ele, eleHeight, sepHeight);\n this.popupInit(element, ele);\n }\n getElementOffsetY() {\n return (this.overflowMode === 'Extended' && window.getComputedStyle(this.element).getPropertyValue('box-sizing') === 'border-box' ?\n this.element.clientHeight : this.element.offsetHeight);\n }\n popupInit(element, ele) {\n if (!this.popObj) {\n element.appendChild(ele);\n setStyleAttribute(this.element, { overflow: '' });\n let eleStyles = window.getComputedStyle(this.element);\n let popup = new Popup(null, {\n relateTo: this.element,\n offsetY: (this.isVertical) ? 0 : this.getElementOffsetY(),\n enableRtl: this.enableRtl,\n open: this.popupOpen.bind(this),\n close: this.popupClose.bind(this),\n collision: { Y: this.enableCollision ? 'flip' : 'none' },\n position: this.enableRtl ? { X: 'left', Y: 'top' } : { X: 'right', Y: 'top' }\n });\n popup.appendTo(ele);\n if (this.overflowMode === 'Extended') {\n popup.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n popup.offsetX = 0;\n }\n EventHandler.add(document, 'scroll', this.docEvent.bind(this));\n EventHandler.add(document, 'click ', this.docEvent.bind(this));\n popup.element.style.maxHeight = popup.element.offsetHeight + 'px';\n if (this.isVertical) {\n popup.element.style.visibility = 'hidden';\n }\n if (this.isExtendedOpen) {\n let popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popupNav.firstElementChild, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.element.querySelector('.' + CLS_EXTENDABLECLASS).classList.add(CLS_POPUPOPEN);\n }\n else {\n popup.hide();\n }\n this.popObj = popup;\n this.element.setAttribute('aria-haspopup', 'true');\n }\n else {\n let popupEle = this.popObj.element;\n setStyleAttribute(popupEle, { maxHeight: '', display: 'block' });\n setStyleAttribute(popupEle, { maxHeight: popupEle.offsetHeight + 'px', display: '' });\n }\n }\n tbarPopupHandler(isOpen) {\n if (this.overflowMode === 'Extended') {\n isOpen ? this.add(this.element, CLS_EXTENDEDPOPOPEN) : this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n }\n }\n popupOpen(e) {\n let popObj = this.popObj;\n if (!this.isVertical) {\n popObj.offsetY = this.getElementOffsetY();\n popObj.dataBind();\n }\n let popupEle = this.popObj.element;\n let toolEle = this.popObj.element.parentElement;\n let popupNav = toolEle.querySelector('.' + CLS_TBARNAV);\n setStyleAttribute(popObj.element, { height: 'auto', maxHeight: '' });\n popObj.element.style.maxHeight = popObj.element.offsetHeight + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '';\n }\n let popupElePos = popupEle.offsetTop + popupEle.offsetHeight + calculatePosition(toolEle).top;\n let popIcon = popupNav.firstElementChild;\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.tbarPopupHandler(true);\n let scrollVal = isNullOrUndefined(window.scrollY) ? 0 : window.scrollY;\n if (!this.isVertical && ((window.innerHeight + scrollVal) < popupElePos) && (this.element.offsetTop < popupEle.offsetHeight)) {\n let overflowHeight = (popupEle.offsetHeight - ((popupElePos - window.innerHeight - scrollVal) + 5));\n popObj.height = overflowHeight + 'px';\n for (let i = 0; i <= popupEle.childElementCount; i++) {\n let ele = popupEle.children[i];\n if (ele.offsetTop + ele.offsetHeight > overflowHeight) {\n overflowHeight = ele.offsetTop;\n break;\n }\n }\n setStyleAttribute(popObj.element, { maxHeight: overflowHeight + 'px' });\n }\n else if (this.isVertical) {\n let tbEleData = this.element.getBoundingClientRect();\n setStyleAttribute(popObj.element, { maxHeight: (tbEleData.top + this.element.offsetHeight) + 'px', bottom: 0, visibility: '' });\n }\n if (popObj) {\n popObj.refreshPosition();\n }\n }\n popupClose(e) {\n let element = this.element;\n let popupNav = element.querySelector('.' + CLS_TBARNAV);\n let popIcon = popupNav.firstElementChild;\n popupNav.classList.remove(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPDOWN], [CLS_POPUPICON]);\n this.tbarPopupHandler(false);\n }\n checkPriority(ele, inEle, eleWidth, pre) {\n let popPriority = this.popupPriCount > 0;\n let len = inEle.length;\n let eleWid = eleWidth;\n let eleOffset;\n let checkoffset;\n let sepCheck = 0;\n let itemCount = 0;\n let itemPopCount = 0;\n let checkClass = (ele, val) => {\n let rVal = false;\n val.forEach((cls) => {\n if (ele.classList.contains(cls)) {\n rVal = true;\n }\n });\n return rVal;\n };\n for (let i = len - 1; i >= 0; i--) {\n let mrgn;\n let compuStyle = window.getComputedStyle(inEle[i]);\n if (this.isVertical) {\n mrgn = parseFloat((compuStyle).marginTop);\n mrgn += parseFloat((compuStyle).marginBottom);\n }\n else {\n mrgn = parseFloat((compuStyle).marginRight);\n mrgn += parseFloat((compuStyle).marginLeft);\n }\n let fstEleCheck = inEle[i] === this.tbarEle[0];\n if (fstEleCheck) {\n this.tbarEleMrgn = mrgn;\n }\n eleOffset = this.isVertical ? inEle[i].offsetHeight : inEle[i].offsetWidth;\n let eleWid = fstEleCheck ? (eleOffset + mrgn) : eleOffset;\n if (checkClass(inEle[i], [CLS_POPPRI]) && popPriority) {\n inEle[i].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyleAttribute(inEle[i], { display: 'none', minHeight: eleWid + 'px' });\n }\n else {\n setStyleAttribute(inEle[i], { display: 'none', minWidth: eleWid + 'px' });\n }\n itemPopCount++;\n }\n if (this.isVertical) {\n checkoffset = (inEle[i].offsetTop + inEle[i].offsetHeight + mrgn) > eleWidth;\n }\n else {\n checkoffset = (inEle[i].offsetLeft + inEle[i].offsetWidth + mrgn) > eleWidth;\n }\n if (checkoffset) {\n if (inEle[i].classList.contains(CLS_SEPARATOR)) {\n if (this.overflowMode === 'Extended') {\n if (itemCount === itemPopCount) {\n let sepEle = inEle[i];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[i].classList.add(CLS_POPUP);\n itemPopCount++;\n }\n }\n itemCount++;\n }\n else if (this.overflowMode === 'Popup') {\n if (sepCheck > 0 && itemCount === itemPopCount) {\n let sepEle = inEle[i + itemCount + (sepCheck - 1)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n setStyleAttribute(sepEle, { display: 'none' });\n }\n }\n sepCheck++;\n itemCount = 0;\n itemPopCount = 0;\n }\n }\n else {\n itemCount++;\n }\n if (inEle[i].classList.contains(CLS_TBAROVERFLOW) && pre) {\n eleWidth -= ((this.isVertical ? inEle[i].offsetHeight : inEle[i].offsetWidth) + (mrgn));\n }\n else if (!checkClass(inEle[i], [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[i].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyleAttribute(inEle[i], { display: 'none', minHeight: eleWid + 'px' });\n }\n else {\n setStyleAttribute(inEle[i], { display: 'none', minWidth: eleWid + 'px' });\n }\n itemPopCount++;\n }\n else {\n eleWidth -= ((this.isVertical ? inEle[i].offsetHeight : inEle[i].offsetWidth) + (mrgn));\n }\n }\n }\n if (pre) {\n let popedEle = selectAll('.' + CLS_ITEM + ':not(.' + CLS_POPUP + ')', this.element);\n this.checkPriority(ele, popedEle, eleWid, false);\n }\n }\n createPopupIcon(element) {\n let id = element.id.concat('_nav');\n let className = 'e-' + element.id.concat('_nav ' + CLS_POPUPNAV);\n className = this.overflowMode === 'Extended' ? className + ' ' + CLS_EXTENDPOPUP : className;\n let nav = this.createElement('div', { id: id, className: className });\n if (Browser.info.name === 'msie' || Browser.info.name === 'edge') {\n nav.classList.add('e-ie-align');\n }\n let navItem = this.createElement('div', { className: CLS_POPUPDOWN + ' e-icons' });\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n nav.setAttribute('role', 'list');\n element.appendChild(nav);\n }\n tbarPriRef(inEle, indx, sepPri, el, des, elWid, wid, ig) {\n let ignoreCount = ig;\n let popEle = this.popObj.element;\n let query = '.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_TBAROVERFLOW + ')';\n let priEleCnt = selectAll('.' + CLS_POPUP + ':not(.' + CLS_TBAROVERFLOW + ')', popEle).length;\n let checkClass = (ele, val) => {\n return ele.classList.contains(val);\n };\n if (selectAll(query, inEle).length === 0) {\n let eleSep = inEle.children[indx - (indx - sepPri) - 1];\n let ignoreCheck = (!isNullOrUndefined(eleSep) && checkClass(eleSep, CLS_TBARIGNORE));\n if ((!isNullOrUndefined(eleSep) && checkClass(eleSep, CLS_SEPARATOR) && !isVisible(eleSep)) || ignoreCheck) {\n let sepDisplay = 'none';\n eleSep.style.display = 'inherit';\n let eleSepWidth = eleSep.offsetWidth + (parseFloat(window.getComputedStyle(eleSep).marginRight) * 2);\n let prevSep = eleSep.previousElementSibling;\n if ((elWid + eleSepWidth) < wid || des) {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n if (!isNullOrUndefined(prevSep)) {\n prevSep.style.display = '';\n }\n }\n else {\n if (prevSep.classList.contains(CLS_SEPARATOR)) {\n prevSep.style.display = sepDisplay;\n }\n }\n eleSep.style.display = '';\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n }\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - priEleCnt]);\n }\n }\n popupRefresh(popupEle, destroy) {\n let ele = this.element;\n let isVer = this.isVertical;\n let popNav = ele.querySelector('.' + CLS_TBARNAV);\n let innerEle = ele.querySelector('.' + CLS_ITEMS);\n if (isNullOrUndefined(popNav)) {\n return;\n }\n innerEle.removeAttribute('style');\n popupEle.style.display = 'block';\n let dimension;\n if (isVer) {\n dimension = ele.offsetHeight - (popNav.offsetHeight + innerEle.offsetHeight);\n }\n else {\n dimension = ele.offsetWidth - (popNav.offsetWidth + innerEle.offsetWidth);\n }\n let popupEleWidth = 0;\n [].slice.call(popupEle.children).forEach((el) => {\n popupEleWidth += this.popupEleWidth(el);\n setStyleAttribute(el, { 'position': '' });\n });\n if ((dimension + (isVer ? popNav.offsetHeight : popNav.offsetWidth)) > (popupEleWidth) && this.popupPriCount === 0) {\n destroy = true;\n }\n this.popupEleRefresh(dimension, popupEle, destroy);\n popupEle.style.display = '';\n if (popupEle.children.length === 0 && popNav && this.popObj) {\n detach(popNav);\n popNav = null;\n this.popObj.destroy();\n detach(this.popObj.element);\n this.popObj = null;\n ele.setAttribute('aria-haspopup', 'false');\n }\n }\n ignoreEleFetch(index, innerEle) {\n let ignoreEle = [].slice.call(innerEle.querySelectorAll('.' + CLS_TBARIGNORE));\n let ignoreInx = [];\n let count = 0;\n if (ignoreEle.length > 0) {\n ignoreEle.forEach((ele) => {\n ignoreInx.push([].slice.call(innerEle.children).indexOf(ele));\n });\n }\n else {\n return 0;\n }\n ignoreInx.forEach((val) => {\n if (val <= index) {\n count++;\n }\n });\n return count;\n }\n checkPopupRefresh(root, popEle) {\n popEle.style.display = 'block';\n let elWid = this.popupEleWidth(popEle.firstElementChild);\n popEle.firstElementChild.style.removeProperty('Position');\n let tbarWidth = root.offsetWidth - root.querySelector('.' + CLS_TBARNAV).offsetWidth;\n let tbarItemsWid = root.querySelector('.' + CLS_ITEMS).offsetWidth;\n popEle.style.removeProperty('display');\n if (tbarWidth > (elWid + tbarItemsWid)) {\n return true;\n }\n return false;\n }\n popupEleWidth(el) {\n el.style.position = 'absolute';\n let elWidth = this.isVertical ? el.offsetHeight : el.offsetWidth;\n let btnText = el.querySelector('.' + CLS_TBARBTNTEXT);\n if (el.classList.contains('e-tbtn-align') || el.classList.contains(CLS_TBARTEXT)) {\n let btn = el.children[0];\n if (!isNullOrUndefined(btnText) && el.classList.contains(CLS_TBARTEXT)) {\n btnText.style.display = 'none';\n }\n else if (!isNullOrUndefined(btnText) && el.classList.contains(CLS_POPUPTEXT)) {\n btnText.style.display = 'block';\n }\n btn.style.minWidth = '0%';\n elWidth = parseFloat(!this.isVertical ? el.style.minWidth : el.style.minHeight);\n btn.style.minWidth = '';\n btn.style.minHeight = '';\n if (!isNullOrUndefined(btnText)) {\n btnText.style.display = '';\n }\n }\n return elWidth;\n }\n popupEleRefresh(width, popupEle, destroy) {\n let popPriority = this.popupPriCount > 0;\n let eleSplice = this.tbarEle;\n let priEleCnt;\n let index;\n let checkOverflow;\n let innerEle = this.element.querySelector('.' + CLS_ITEMS);\n let ignoreCount = 0;\n for (let el of [].slice.call(popupEle.children)) {\n if (el.classList.contains(CLS_POPPRI) && popPriority && !destroy) {\n continue;\n }\n let elWidth = this.popupEleWidth(el);\n if (el === this.tbarEle[0]) {\n elWidth += this.tbarEleMrgn;\n }\n el.style.position = '';\n if (elWidth < width || destroy) {\n setStyleAttribute(el, { minWidth: '', height: '', minHeight: '' });\n if (!el.classList.contains(CLS_POPOVERFLOW)) {\n el.classList.remove(CLS_POPUP);\n }\n index = this.tbarEle.indexOf(el);\n if (this.tbarAlign) {\n let pos = this.items[index].align;\n index = this.tbarAlgEle[(pos + 's').toLowerCase()].indexOf(el);\n eleSplice = this.tbarAlgEle[(pos + 's').toLowerCase()];\n innerEle = this.element.querySelector('.' + CLS_ITEMS + ' .' + 'e-toolbar-' + pos.toLowerCase());\n }\n let sepBeforePri = 0;\n if (this.overflowMode !== 'Extended') {\n eleSplice.slice(0, index).forEach((el) => {\n if (el.classList.contains(CLS_TBAROVERFLOW) || el.classList.contains(CLS_SEPARATOR)) {\n if (el.classList.contains(CLS_SEPARATOR)) {\n el.style.display = '';\n width -= el.offsetWidth;\n }\n sepBeforePri++;\n }\n });\n }\n ignoreCount = this.ignoreEleFetch(index, innerEle);\n if (el.classList.contains(CLS_TBAROVERFLOW)) {\n this.tbarPriRef(innerEle, index, sepBeforePri, el, destroy, elWidth, width, ignoreCount);\n width -= el.offsetWidth;\n }\n else if (index === 0) {\n innerEle.insertBefore(el, innerEle.firstChild);\n width -= el.offsetWidth;\n }\n else {\n priEleCnt = selectAll('.' + CLS_TBAROVERFLOW, this.popObj.element).length;\n innerEle.insertBefore(el, innerEle.children[(index + ignoreCount) - priEleCnt]);\n width -= el.offsetWidth;\n }\n el.style.height = '';\n }\n else {\n break;\n }\n }\n checkOverflow = this.checkOverflow(this.element, this.element.getElementsByClassName(CLS_ITEMS)[0]);\n if (checkOverflow && !destroy) {\n this.renderOverflowMode();\n }\n }\n removePositioning() {\n let item = this.element.querySelector('.' + CLS_ITEMS);\n if (isNullOrUndefined(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n this.remove(item, CLS_TBARPOS);\n let innerItem = [].slice.call(item.childNodes);\n innerItem[1].removeAttribute('style');\n innerItem[2].removeAttribute('style');\n }\n refreshPositioning() {\n let item = this.element.querySelector('.' + CLS_ITEMS);\n this.add(item, CLS_TBARPOS);\n this.itemPositioning();\n }\n itemPositioning() {\n let item = this.element.querySelector('.' + CLS_ITEMS);\n let margin;\n if (isNullOrUndefined(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n let popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n let innerItem;\n if (this.scrollModule) {\n let trgClass = (this.isVertical) ? CLS_VSCROLLCNT : CLS_HSCROLLCNT;\n innerItem = [].slice.call(item.querySelector('.' + trgClass).children);\n }\n else {\n innerItem = [].slice.call(item.childNodes);\n }\n if (this.isVertical) {\n margin = innerItem[0].offsetHeight + innerItem[2].offsetHeight;\n }\n else {\n margin = innerItem[0].offsetWidth + innerItem[2].offsetWidth;\n }\n let tbarWid = this.isVertical ? this.element.offsetHeight : this.element.offsetWidth;\n if (popupNav) {\n tbarWid -= (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth);\n let popWid = (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth) + 'px';\n innerItem[2].removeAttribute('style');\n if (this.isVertical) {\n this.enableRtl ? innerItem[2].style.top = popWid : innerItem[2].style.bottom = popWid;\n }\n else {\n this.enableRtl ? innerItem[2].style.left = popWid : innerItem[2].style.right = popWid;\n }\n }\n if (tbarWid <= margin) {\n return;\n }\n let value = (((tbarWid - margin)) - (!this.isVertical ? innerItem[1].offsetWidth : innerItem[1].offsetHeight)) / 2;\n innerItem[1].removeAttribute('style');\n let mrgn = ((!this.isVertical ? innerItem[0].offsetWidth : innerItem[0].offsetHeight) + value) + 'px';\n if (this.isVertical) {\n this.enableRtl ? innerItem[1].style.marginBottom = mrgn : innerItem[1].style.marginTop = mrgn;\n }\n else {\n this.enableRtl ? innerItem[1].style.marginRight = mrgn : innerItem[1].style.marginLeft = mrgn;\n }\n }\n tbarItemAlign(item, itemEle, pos) {\n if (item.showAlwaysInPopup && item.overflow !== 'Show') {\n return;\n }\n let alignDiv = [];\n alignDiv.push(this.createElement('div', { className: CLS_TBARLEFT }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARCENTER }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARRIGHT }));\n if (pos === 0 && item.align !== 'Left') {\n alignDiv.forEach((ele) => {\n itemEle.appendChild(ele);\n });\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n else if (item.align !== 'Left') {\n let alignEle = itemEle.childNodes;\n let leftAlign = alignDiv[0];\n [].slice.call(alignEle).forEach((el) => {\n this.tbarAlgEle.lefts.push(el);\n leftAlign.appendChild(el);\n });\n itemEle.appendChild(leftAlign);\n itemEle.appendChild(alignDiv[1]);\n itemEle.appendChild(alignDiv[2]);\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n }\n ctrlTemplate() {\n this.ctrlTem = this.trgtEle.cloneNode(true);\n this.add(this.trgtEle, CLS_ITEMS);\n this.tbarEle = [];\n let innerEle = [].slice.call(this.trgtEle.children);\n innerEle.forEach((ele) => {\n if (ele.tagName === 'DIV') {\n this.tbarEle.push(ele);\n ele.setAttribute('aria-disabled', 'false');\n this.add(ele, CLS_ITEM);\n }\n });\n }\n renderItems() {\n let ele = this.element;\n let items = this.items;\n if (this.trgtEle != null) {\n this.ctrlTemplate();\n }\n else if (ele && items.length > 0) {\n let itemEleDom;\n if (ele && ele.children.length > 0) {\n itemEleDom = ele.querySelector('.' + CLS_ITEMS);\n }\n if (!itemEleDom) {\n itemEleDom = this.createElement('div', { className: CLS_ITEMS });\n }\n this.itemsAlign(items, itemEleDom);\n ele.appendChild(itemEleDom);\n }\n }\n setAttr(attr, element) {\n let key = Object.keys(attr);\n let keyVal;\n for (let i = 0; i < key.length; i++) {\n keyVal = key[i];\n keyVal === 'class' ? this.add(element, attr[keyVal]) : element.setAttribute(keyVal, attr[keyVal]);\n }\n }\n /**\n * Enables or disables the specified Toolbar item.\n * @param {number|HTMLElement|NodeList} items - DOM element or an array of items to be enabled or disabled.\n * @param {boolean} isEnable - Boolean value that determines whether the command should be enabled or disabled.\n * By default, `isEnable` is set to true.\n * @returns void.\n */\n enableItems(items, isEnable) {\n let elements = items;\n let len = elements.length;\n let ele;\n if (isNullOrUndefined(isEnable)) {\n isEnable = true;\n }\n let enable = (isEnable, ele) => {\n if (isEnable) {\n ele.classList.remove(CLS_DISABLE$2);\n ele.setAttribute('aria-disabled', 'false');\n }\n else {\n ele.classList.add(CLS_DISABLE$2);\n ele.setAttribute('aria-disabled', 'true');\n }\n };\n if (!isNullOrUndefined(len) && len >= 1) {\n for (let a = 0, element = [].slice.call(elements); a < len; a++) {\n let itemElement = element[a];\n if (typeof (itemElement) === 'number') {\n ele = this.getElementByIndex(itemElement);\n if (isNullOrUndefined(ele)) {\n return;\n }\n else {\n elements[a] = ele;\n }\n }\n else {\n ele = itemElement;\n }\n enable(isEnable, ele);\n }\n isEnable ? removeClass(elements, CLS_DISABLE$2) : addClass(elements, CLS_DISABLE$2);\n }\n else {\n if (typeof (elements) === 'number') {\n ele = this.getElementByIndex(elements);\n if (isNullOrUndefined(ele)) {\n return;\n }\n }\n else {\n ele = items;\n }\n enable(isEnable, ele);\n }\n }\n getElementByIndex(index) {\n if (this.tbarEle[index]) {\n return this.tbarEle[index];\n }\n return null;\n }\n /**\n * Adds new items to the Toolbar that accepts an array as Toolbar items.\n * @param {ItemsModel[]} items - DOM element or an array of items to be added to the Toolbar.\n * @param {number} index - Number value that determines where the command is to be added. By default, index is 0.\n * @returns void.\n * @deprecated\n */\n addItems(items, index) {\n let innerItems;\n this.extendedOpen();\n let itemsDiv = this.element.querySelector('.' + CLS_ITEMS);\n if (isNullOrUndefined(itemsDiv)) {\n this.itemsRerender(items);\n return;\n }\n let innerEle;\n let itemAgn = 'Left';\n if (isNullOrUndefined(index)) {\n index = 0;\n }\n items.forEach((e) => {\n if (!isNullOrUndefined(e.align) && e.align !== 'Left' && itemAgn === 'Left') {\n itemAgn = e.align;\n }\n });\n for (let item of items) {\n if (isNullOrUndefined(item.type)) {\n item.type = 'Button';\n }\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n item.align = itemAgn;\n innerEle = this.renderSubComponent(item, index);\n if (this.tbarEle.length >= index && innerItems.length >= 0) {\n if (isNullOrUndefined(this.scrollModule)) {\n this.destroyMode();\n }\n let algIndex = item.align[0] === 'L' ? 0 : item.align[0] === 'C' ? 1 : 2;\n let ele;\n if (!this.tbarAlign && itemAgn !== 'Left') {\n this.tbarItemAlign(item, itemsDiv, 1);\n this.tbarAlign = true;\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[algIndex];\n ele.appendChild(innerEle);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].push(innerEle);\n this.refreshPositioning();\n }\n else if (this.tbarAlign) {\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[algIndex];\n ele.insertBefore(innerEle, ele.children[index]);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].splice(index, 0, innerEle);\n this.refreshPositioning();\n }\n else if (innerItems.length === 0) {\n innerItems = selectAll('.' + CLS_ITEMS, this.element);\n innerItems[0].appendChild(innerEle);\n }\n else {\n innerItems[0].parentNode.insertBefore(innerEle, innerItems[index]);\n }\n this.items.splice(index, 0, item);\n this.tbarEle.splice(index, 0, innerEle);\n index++;\n this.offsetWid = itemsDiv.offsetWidth;\n }\n }\n itemsDiv.style.width = '';\n this.renderOverflowMode();\n }\n /**\n * Removes the items from the Toolbar. Acceptable arguments are index of item/HTMLElement/node list.\n * @param {number|HTMLElement|NodeList|HTMLElement[]} args\n * Index or DOM element or an Array of item which is to be removed from the Toolbar.\n * @returns void.\n * @deprecated\n */\n removeItems(args) {\n let elements = args;\n let index;\n let innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (typeof (elements) === 'number') {\n index = parseInt(args.toString(), 10);\n this.removeItemByIndex(index, innerItems);\n }\n else {\n if (elements && elements.length > 1) {\n for (let ele of [].slice.call(elements)) {\n index = this.tbarEle.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n }\n }\n else {\n let ele = (elements && elements.length && elements.length === 1) ? elements[0] : args;\n index = innerItems.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n }\n }\n this.resize();\n }\n removeItemByIndex(index, innerItems) {\n if (this.tbarEle[index] && innerItems[index]) {\n let eleIdx = this.tbarEle.indexOf(innerItems[index]);\n if (this.tbarAlign) {\n let indexAgn;\n indexAgn = this.tbarAlgEle[(this.items[eleIdx].align + 's').toLowerCase()].indexOf(this.tbarEle[eleIdx]);\n this.tbarAlgEle[(this.items[eleIdx].align + 's').toLowerCase()].splice(indexAgn, 1);\n }\n detach(innerItems[index]);\n this.items.splice(eleIdx, 1);\n this.tbarEle.splice(eleIdx, 1);\n }\n }\n templateRender(templateProp, innerEle, item, index) {\n let itemType = item.type;\n let eleObj = templateProp;\n let isComponent;\n if (typeof (templateProp) === 'object') {\n isComponent = typeof (eleObj.appendTo) === 'function';\n }\n if (typeof (templateProp) === 'string' || !isComponent) {\n let templateFn;\n let val = templateProp;\n val = (typeof (templateProp) === 'string') ? templateProp.trim() : templateProp;\n try {\n if (typeof (templateProp) === 'object' && !isNullOrUndefined(templateProp.tagName)) {\n innerEle.appendChild(templateProp);\n }\n else if (document.querySelectorAll(val).length) {\n let ele = document.querySelector(val);\n let tempStr = ele.outerHTML.trim();\n innerEle.appendChild(ele);\n ele.style.display = '';\n if (!isNullOrUndefined(tempStr)) {\n this.tempId.push(val);\n }\n }\n }\n catch (e) {\n templateFn = compile(val);\n }\n let tempArray;\n if (!isNullOrUndefined(templateFn)) {\n let toolbarTemplateID = this.element.id + index + '_template';\n tempArray = templateFn({}, this, 'template', toolbarTemplateID, this.isStringTemplate);\n }\n if (!isNullOrUndefined(tempArray) && tempArray.length > 0) {\n [].slice.call(tempArray).forEach((ele) => {\n if (!isNullOrUndefined(ele.tagName)) {\n ele.style.display = '';\n }\n innerEle.appendChild(ele);\n });\n }\n }\n else if (itemType === 'Input') {\n let ele = this.createElement('input');\n item.id ? (ele.id = item.id) : (ele.id = getUniqueID('tbr-ipt'));\n innerEle.appendChild(ele);\n eleObj.appendTo(ele);\n }\n this.add(innerEle, CLS_TEMPLATE);\n this.tbarEle.push(innerEle);\n }\n buttonRendering(item, innerEle) {\n let dom = this.createElement('button', { className: CLS_TBARBTN });\n dom.setAttribute('type', 'button');\n let textStr = item.text;\n let iconCss;\n let iconPos;\n item.id ? (dom.id = item.id) : dom.id = getUniqueID('e-tbr-btn');\n let btnTxt = this.createElement('span', { className: 'e-tbar-btn-text' });\n if (textStr) {\n btnTxt.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(textStr) : textStr;\n dom.appendChild(btnTxt);\n dom.classList.add('e-tbtn-txt');\n }\n else {\n this.add(innerEle, 'e-tbtn-align');\n }\n if (item.prefixIcon || item.suffixIcon) {\n if ((item.prefixIcon && item.suffixIcon) || item.prefixIcon) {\n iconCss = item.prefixIcon + ' e-icons';\n iconPos = 'Left';\n }\n else {\n iconCss = item.suffixIcon + ' e-icons';\n iconPos = 'Right';\n }\n }\n let btnObj = new Button({ iconCss: iconCss, iconPosition: iconPos });\n btnObj.createElement = this.createElement;\n btnObj.appendTo(dom);\n if (item.width) {\n setStyleAttribute(dom, { 'width': formatUnit(item.width) });\n }\n return dom;\n }\n renderSubComponent(item, index) {\n let innerEle;\n let dom;\n innerEle = this.createElement('div', { className: CLS_ITEM });\n innerEle.setAttribute('aria-disabled', 'false');\n let tempDom = this.createElement('div', {\n innerHTML: this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(item.tooltipText) : item.tooltipText\n });\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n if (item.htmlAttributes) {\n this.setAttr(item.htmlAttributes, innerEle);\n }\n if (item.tooltipText) {\n innerEle.setAttribute('title', tempDom.textContent);\n }\n if (item.cssClass) {\n innerEle.className = innerEle.className + ' ' + item.cssClass;\n }\n if (item.template) {\n this.templateRender(item.template, innerEle, item, index);\n }\n else {\n switch (item.type) {\n case 'Button':\n dom = this.buttonRendering(item, innerEle);\n dom.setAttribute('tabindex', '-1');\n dom.setAttribute('aria-label', (item.text || item.tooltipText));\n innerEle.appendChild(dom);\n innerEle.addEventListener('click', this.itemClick.bind(this));\n break;\n case 'Separator':\n this.add(innerEle, CLS_SEPARATOR);\n break;\n }\n }\n if (item.showTextOn) {\n let sTxt = item.showTextOn;\n if (sTxt === 'Toolbar') {\n this.add(innerEle, CLS_POPUPTEXT);\n this.add(innerEle, 'e-tbtn-align');\n }\n else if (sTxt === 'Overflow') {\n this.add(innerEle, CLS_TBARTEXT);\n }\n }\n if (item.overflow) {\n let overflow = item.overflow;\n if (overflow === 'Show') {\n this.add(innerEle, CLS_TBAROVERFLOW);\n }\n else if (overflow === 'Hide') {\n if (!innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPOVERFLOW);\n }\n }\n }\n if (item.overflow !== 'Show' && item.showAlwaysInPopup && !innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPPRI);\n this.popupPriCount++;\n }\n if (item.disabled) {\n this.add(innerEle, CLS_DISABLE$2);\n }\n if (item.visible === false) {\n this.add(innerEle, CLS_HIDDEN);\n }\n return innerEle;\n }\n itemClick(e) {\n this.activeEleSwitch(e.currentTarget);\n }\n activeEleSwitch(ele) {\n this.activeEleRemove(ele.firstElementChild);\n this.activeEle.focus();\n }\n activeEleRemove(curEle) {\n if (!isNullOrUndefined(this.activeEle)) {\n this.activeEle.setAttribute('tabindex', '-1');\n }\n this.activeEle = curEle;\n if (isNullOrUndefined(this.trgtEle) && !curEle.parentElement.classList.contains(CLS_TEMPLATE)) {\n curEle.removeAttribute('tabindex');\n }\n else {\n this.activeEle.setAttribute('tabindex', '0');\n }\n }\n getPersistData() {\n return this.addOnPersist([]);\n }\n /**\n * Returns the current module name.\n * @returns string\n * @private\n */\n getModuleName() {\n return 'toolbar';\n }\n itemsRerender(newProp) {\n this.items = this.tbarItemsCol;\n this.destroyMode();\n this.destroyItems();\n this.items = newProp;\n this.tbarItemsCol = this.items;\n this.renderItems();\n this.renderOverflowMode();\n }\n resize() {\n let ele = this.element;\n this.tbResize = true;\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.overflowMode === 'Popup') {\n this.popObj.hide();\n }\n let checkOverflow = this.checkOverflow(ele, ele.getElementsByClassName(CLS_ITEMS)[0]);\n if (!checkOverflow) {\n this.destroyScroll();\n let multirowele = ele.querySelector('.' + CLS_ITEMS);\n if (!isNullOrUndefined(multirowele)) {\n this.remove(multirowele, CLS_MULTIROWPOS);\n if (this.tbarAlign) {\n this.add(multirowele, CLS_TBARPOS);\n }\n }\n }\n if (checkOverflow && this.scrollModule && (this.offsetWid === ele.offsetWidth)) {\n return;\n }\n if (this.offsetWid > ele.offsetWidth || checkOverflow) {\n this.renderOverflowMode();\n }\n if (this.popObj) {\n if (this.overflowMode === 'Extended') {\n let eleStyles = window.getComputedStyle(this.element);\n this.popObj.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n }\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.popupRefresh(this.popObj.element, false);\n if (this.tbarAlign) {\n this.refreshPositioning();\n }\n }\n if (this.element.querySelector('.' + CLS_HSCROLLBAR$1)) {\n this.scrollStep = this.element.querySelector('.' + CLS_HSCROLLBAR$1).offsetWidth;\n }\n this.offsetWid = ele.offsetWidth;\n this.tbResize = false;\n this.separator();\n }\n extendedOpen() {\n let sib = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && sib) {\n this.isExtendedOpen = sib.classList.contains(CLS_POPUPOPEN);\n }\n }\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n * @param {ToolbarModel} newProp\n * @param {ToolbarModel} oldProp\n * @returns void\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n let tEle = this.element;\n this.extendedOpen();\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array) && !this.isServerRendered) {\n let changedProb = Object.keys(newProp.items);\n for (let i = 0; i < changedProb.length; i++) {\n let index = parseInt(Object.keys(newProp.items)[i], 10);\n let property = Object.keys(newProp.items[index])[0];\n let newProperty = Object(newProp.items[index])[property];\n if (this.tbarAlign || property === 'align') {\n this.refresh();\n this.trigger('created');\n break;\n }\n let popupPriCheck = property === 'showAlwaysInPopup' && !newProperty;\n let booleanCheck = property === 'overflow' && this.popupPriCount !== 0;\n if ((popupPriCheck) || (this.items[index].showAlwaysInPopup) && booleanCheck) {\n --this.popupPriCount;\n }\n if (isNullOrUndefined(this.scrollModule)) {\n this.destroyMode();\n }\n let itemCol = [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, tEle));\n detach(itemCol[index]);\n this.tbarEle.splice(index, 1);\n this.addItems([this.items[index]], index);\n this.items.splice(index, 1);\n if (this.items[index].template) {\n this.tbarEle.splice(this.items.length, 1);\n }\n }\n }\n else if (isBlazor() && this.isServerRendered) {\n this.serverItemsRerender();\n this.notify('onItemsChanged', {});\n }\n else {\n this.itemsRerender(newProp.items);\n }\n break;\n case 'width':\n let wid = tEle.offsetWidth;\n setStyleAttribute(tEle, { 'width': formatUnit(newProp.width) });\n this.renderOverflowMode();\n if (this.popObj && wid < tEle.offsetWidth) {\n this.popupRefresh(this.popObj.element, false);\n }\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'overflowMode':\n this.destroyMode();\n this.renderOverflowMode();\n if (this.enableRtl) {\n this.add(tEle, CLS_RTL$2);\n }\n this.refreshOverflow();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.add(tEle, CLS_RTL$2) : this.remove(tEle, CLS_RTL$2);\n if (!isNullOrUndefined(this.scrollModule)) {\n newProp.enableRtl ? this.add(this.scrollModule.element, CLS_RTL$2) : this.remove(this.scrollModule.element, CLS_RTL$2);\n }\n if (!isNullOrUndefined(this.popObj)) {\n newProp.enableRtl ? this.add(this.popObj.element, CLS_RTL$2) : this.remove(this.popObj.element, CLS_RTL$2);\n }\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n break;\n case 'scrollStep':\n if (this.scrollModule) {\n this.scrollModule.scrollStep = this.scrollStep;\n }\n break;\n case 'enableCollision':\n if (this.popObj) {\n this.popObj.collision = { Y: this.enableCollision ? 'flip' : 'none' };\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.split(' '));\n }\n break;\n case 'allowKeyboard':\n this.unwireKeyboardEvent();\n if (newProp.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n break;\n }\n }\n }\n /**\n * Shows or hides the Toolbar item that is in the specified index.\n * @param {number | HTMLElement} index - Index value of target item or DOM element of items to be hidden or shown.\n * @param {boolean} value - Based on this Boolean value, item will be hide (true) or show (false). By default, value is false.\n * @returns void.\n */\n hideItem(index, value) {\n let isElement = (typeof (index) === 'object') ? true : false;\n let eleIndex = index;\n let initIndex;\n let ele;\n let innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n ele = index;\n }\n else if (this.tbarEle[eleIndex]) {\n let innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n ele = innerItems[eleIndex];\n }\n if (ele) {\n value ? ele.classList.add(CLS_HIDDEN) : ele.classList.remove(CLS_HIDDEN);\n if (value && isNullOrUndefined(this.element.getAttribute('tabindex')) && !ele.classList.contains(CLS_SEPARATOR)) {\n if (isNullOrUndefined(ele.firstElementChild.getAttribute('tabindex'))) {\n ele.firstElementChild.setAttribute('tabindex', '-1');\n let innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n eleIndex = innerItems.indexOf(ele);\n }\n let nextEle = innerItems[++eleIndex];\n while (nextEle) {\n let skipEle = this.eleContains(nextEle);\n if (!skipEle) {\n nextEle.firstElementChild.removeAttribute('tabindex');\n break;\n }\n nextEle = innerItems[++eleIndex];\n }\n }\n }\n else if (isNullOrUndefined(this.element.getAttribute('tabindex')) && !ele.classList.contains(CLS_SEPARATOR)) {\n initIndex = 0;\n let setFlag = false;\n let removeFlag = false;\n let initELe = innerItems[initIndex];\n while (initELe) {\n if (!initELe.classList.contains(CLS_SEPARATOR)) {\n if (isNullOrUndefined(initELe.firstElementChild.getAttribute('tabindex'))) {\n initELe.firstElementChild.setAttribute('tabindex', '-1');\n setFlag = true;\n }\n else {\n if (setFlag && removeFlag) {\n break;\n }\n let skipEle = this.eleContains(initELe);\n if (!skipEle) {\n initELe.firstElementChild.removeAttribute('tabindex');\n removeFlag = true;\n }\n initELe = innerItems[++initIndex];\n }\n }\n else {\n initELe = innerItems[++initIndex];\n }\n }\n }\n this.refreshOverflow();\n }\n }\n};\n__decorate$3([\n Collection([], Item)\n], Toolbar.prototype, \"items\", void 0);\n__decorate$3([\n Property('auto')\n], Toolbar.prototype, \"width\", void 0);\n__decorate$3([\n Property('auto')\n], Toolbar.prototype, \"height\", void 0);\n__decorate$3([\n Property('')\n], Toolbar.prototype, \"cssClass\", void 0);\n__decorate$3([\n Property('Scrollable')\n], Toolbar.prototype, \"overflowMode\", void 0);\n__decorate$3([\n Property()\n], Toolbar.prototype, \"scrollStep\", void 0);\n__decorate$3([\n Property(true)\n], Toolbar.prototype, \"enableCollision\", void 0);\n__decorate$3([\n Property(true)\n], Toolbar.prototype, \"enableHtmlSanitizer\", void 0);\n__decorate$3([\n Property(true)\n], Toolbar.prototype, \"allowKeyboard\", void 0);\n__decorate$3([\n Event()\n], Toolbar.prototype, \"clicked\", void 0);\n__decorate$3([\n Event()\n], Toolbar.prototype, \"created\", void 0);\n__decorate$3([\n Event()\n], Toolbar.prototype, \"destroyed\", void 0);\n__decorate$3([\n Event()\n], Toolbar.prototype, \"beforeCreate\", void 0);\nToolbar = __decorate$3([\n NotifyPropertyChanges\n], Toolbar);\n\n/**\n * Toolbar modules\n */\n\nvar __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst CLS_ACRDN_ROOT = 'e-acrdn-root';\nconst CLS_ROOT$2 = 'e-accordion';\nconst CLS_ITEM$1 = 'e-acrdn-item';\nconst CLS_ITEMFOCUS = 'e-item-focus';\nconst CLS_ITEMHIDE = 'e-hide';\nconst CLS_HEADER = 'e-acrdn-header';\nconst CLS_HEADERICN = 'e-acrdn-header-icon';\nconst CLS_HEADERCTN = 'e-acrdn-header-content';\nconst CLS_CONTENT = 'e-acrdn-panel';\nconst CLS_CTENT = 'e-acrdn-content';\nconst CLS_TOOGLEICN = 'e-toggle-icon';\nconst CLS_COLLAPSEICN = 'e-tgl-collapse-icon e-icons';\nconst CLS_EXPANDICN = 'e-expand-icon';\nconst CLS_RTL$3 = 'e-rtl';\nconst CLS_CTNHIDE = 'e-content-hide';\nconst CLS_SLCT = 'e-select';\nconst CLS_SLCTED = 'e-selected';\nconst CLS_ACTIVE = 'e-active';\nconst CLS_ANIMATE = 'e-animate';\nconst CLS_DISABLE$3 = 'e-overlay';\nconst CLS_TOGANIMATE = 'e-toggle-animation';\nconst CLS_NEST = 'e-nested';\nconst CLS_EXPANDSTATE = 'e-expand-state';\nconst CLS_CONTAINER = 'e-accordion-container';\n/**\n * Objects used for configuring the Accordion expanding item action properties.\n */\nclass AccordionActionSettings extends ChildProperty {\n}\n__decorate$4([\n Property('SlideDown')\n], AccordionActionSettings.prototype, \"effect\", void 0);\n__decorate$4([\n Property(400)\n], AccordionActionSettings.prototype, \"duration\", void 0);\n__decorate$4([\n Property('linear')\n], AccordionActionSettings.prototype, \"easing\", void 0);\n/**\n * Objects used for configuring the Accordion animation properties.\n */\nclass AccordionAnimationSettings extends ChildProperty {\n}\n__decorate$4([\n Complex({ effect: 'SlideUp', duration: 400, easing: 'linear' }, AccordionActionSettings)\n], AccordionAnimationSettings.prototype, \"collapse\", void 0);\n__decorate$4([\n Complex({ effect: 'SlideDown', duration: 400, easing: 'linear' }, AccordionActionSettings)\n], AccordionAnimationSettings.prototype, \"expand\", void 0);\n/**\n * An item object that is used to configure Accordion items.\n */\nclass AccordionItem extends ChildProperty {\n}\n__decorate$4([\n Property(null)\n], AccordionItem.prototype, \"content\", void 0);\n__decorate$4([\n Property(null)\n], AccordionItem.prototype, \"header\", void 0);\n__decorate$4([\n Property(null)\n], AccordionItem.prototype, \"cssClass\", void 0);\n__decorate$4([\n Property(null)\n], AccordionItem.prototype, \"iconCss\", void 0);\n__decorate$4([\n Property(false)\n], AccordionItem.prototype, \"expanded\", void 0);\n__decorate$4([\n Property(true)\n], AccordionItem.prototype, \"visible\", void 0);\n__decorate$4([\n Property(false)\n], AccordionItem.prototype, \"disabled\", void 0);\n/**\n * The Accordion is a vertically collapsible content panel that displays one or more panels at a time within the available space.\n * ```html\n *
    \n * \n * ```\n */\nlet Accordion = class Accordion extends Component {\n /**\n * Initializes a new instance of the Accordion class.\n * @param options - Specifies Accordion model properties as options.\n * @param element - Specifies the element that is rendered as an Accordion.\n */\n constructor(options, element) {\n super(options, element);\n /**\n * Contains the keyboard configuration of the Accordion.\n */\n this.keyConfigs = {\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n enter: 'enter',\n space: 'space',\n home: 'home',\n end: 'end',\n };\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n * @returns void\n */\n destroy() {\n let ele = this.element;\n super.destroy();\n this.unwireEvents();\n this.isDestroy = true;\n this.restoreContent(null);\n [].slice.call(ele.children).forEach((el) => {\n if (!el.classList.contains('blazor-template')) {\n ele.removeChild(el);\n }\n });\n if (this.trgtEle) {\n while (this.ctrlTem.firstElementChild) {\n ele.appendChild(this.ctrlTem.firstElementChild);\n }\n }\n ele.classList.remove(CLS_ACRDN_ROOT);\n ele.removeAttribute('style');\n ['aria-disabled', 'aria-multiselectable', 'role', 'data-ripple'].forEach((attrb) => {\n this.element.removeAttribute(attrb);\n });\n if (!this.isNested && isRippleEnabled) {\n this.removeRippleEffect();\n }\n }\n preRender() {\n let nested = closest(this.element, '.' + CLS_CONTENT);\n this.isNested = false;\n this.templateEle = [];\n if (!this.isDestroy) {\n this.isDestroy = false;\n }\n if (!isNullOrUndefined(nested)) {\n nested.classList.add(CLS_NEST);\n this.isNested = true;\n }\n else {\n this.element.classList.add(CLS_ACRDN_ROOT);\n }\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL$3);\n }\n }\n add(ele, val) {\n ele.classList.add(val);\n }\n remove(ele, val) {\n ele.classList.remove(val);\n }\n /**\n * To initialize the control rendering\n * @private\n */\n render() {\n if (!this.isServerRendered) {\n this.initializeheaderTemplate();\n this.initializeItemTemplate();\n this.initialize();\n this.renderControl();\n }\n else {\n this.wireFocusEvents();\n }\n this.wireEvents();\n this.renderComplete();\n }\n initialize() {\n let width = formatUnit(this.width);\n let height = formatUnit(this.height);\n setStyleAttribute(this.element, { 'width': width, 'height': height });\n let ariaAttr = {\n 'aria-disabled': 'false', 'role': 'presentation', 'aria-multiselectable': 'true'\n };\n if (isNullOrUndefined(this.initExpand)) {\n this.initExpand = [];\n }\n if (this.expandedIndices.length > 0) {\n this.initExpand = this.expandedIndices;\n }\n attributes(this.element, ariaAttr);\n if (this.expandMode === 'Single') {\n this.element.setAttribute('aria-multiselectable', 'false');\n }\n }\n renderControl() {\n this.trgtEle = (this.element.children.length > 0 &&\n !(isBlazor() && !this.isStringTemplate)) ? select('div', this.element) : null;\n this.renderItems();\n this.initItemExpand();\n }\n wireFocusEvents() {\n let acrdItem = [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM$1));\n for (let item of acrdItem) {\n let headerEle = item.querySelector('.' + CLS_HEADER);\n if (item.childElementCount > 0 && headerEle) {\n EventHandler.clearEvents(headerEle);\n EventHandler.add(headerEle, 'focus', this.focusIn, this);\n EventHandler.add(headerEle, 'blur', this.focusOut, this);\n }\n }\n }\n unwireEvents() {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n if (!isNullOrUndefined(this.keyModule)) {\n this.keyModule.destroy();\n }\n }\n wireEvents() {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n if (!this.isNested && !this.isDestroy) {\n this.removeRippleEffect = rippleEffect(this.element, { selector: '.' + CLS_HEADER });\n }\n if (!this.isNested) {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n }\n }\n templateParser(template) {\n if (template) {\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (error) {\n return compile(template);\n }\n }\n return undefined;\n }\n initializeheaderTemplate() {\n if (this.headerTemplate) {\n this.headerTemplateFn = this.templateParser(this.headerTemplate);\n }\n }\n initializeItemTemplate() {\n if (this.itemTemplate) {\n this.itemTemplateFn = this.templateParser(this.itemTemplate);\n }\n }\n getheaderTemplate() {\n return this.headerTemplateFn;\n }\n getItemTemplate() {\n return this.itemTemplateFn;\n }\n focusIn(e) {\n e.target.parentElement.classList.add(CLS_ITEMFOCUS);\n }\n focusOut(e) {\n e.target.parentElement.classList.remove(CLS_ITEMFOCUS);\n }\n ctrlTemplate() {\n this.ctrlTem = this.element.cloneNode(true);\n let innerEles;\n let rootEle = select('.' + CLS_CONTAINER, this.element);\n if (rootEle) {\n innerEles = rootEle.children;\n }\n else {\n innerEles = this.element.children;\n }\n let items = [];\n /* tslint:disable */\n [].slice.call(innerEles).forEach((el) => {\n items.push({\n header: (el.childElementCount > 0 && el.children[0]) ? (el.children[0]) : '',\n content: (el.childElementCount > 1 && el.children[1]) ? (el.children[1]) : ''\n });\n el.parentNode.removeChild(el);\n });\n /* tslint:enable */\n if (rootEle) {\n this.element.removeChild(rootEle);\n }\n this.setProperties({ items: items }, true);\n }\n toggleIconGenerate() {\n let tglIcon = this.createElement('div', { className: CLS_TOOGLEICN });\n let hdrColIcon = this.createElement('span', { className: CLS_COLLAPSEICN });\n tglIcon.appendChild(hdrColIcon);\n return tglIcon;\n }\n initItemExpand() {\n let len = this.initExpand.length;\n if (len === 0) {\n return;\n }\n if (this.expandMode === 'Single') {\n this.expandItem(true, this.initExpand[len - 1]);\n }\n else {\n for (let i = 0; i < len; i++) {\n this.expandItem(true, this.initExpand[i]);\n }\n }\n }\n renderItems() {\n let ele = this.element;\n let innerItem;\n let innerDataSourceItem;\n if (!isNullOrUndefined(this.trgtEle)) {\n this.ctrlTemplate();\n }\n if (this.dataSource.length > 0) {\n this.dataSource.forEach((item, index) => {\n innerDataSourceItem = this.renderInnerItem(item, index);\n ele.appendChild(innerDataSourceItem);\n if (innerDataSourceItem.childElementCount > 0) {\n EventHandler.add(innerDataSourceItem.querySelector('.' + CLS_HEADER), 'focus', this.focusIn, this);\n EventHandler.add(innerDataSourceItem.querySelector('.' + CLS_HEADER), 'blur', this.focusOut, this);\n }\n });\n }\n else {\n let items = this.items;\n if (ele && items.length > 0) {\n items.forEach((item, index) => {\n innerItem = this.renderInnerItem(item, index);\n ele.appendChild(innerItem);\n if (innerItem.childElementCount > 0) {\n EventHandler.add(innerItem.querySelector('.' + CLS_HEADER), 'focus', this.focusIn, this);\n EventHandler.add(innerItem.querySelector('.' + CLS_HEADER), 'blur', this.focusOut, this);\n }\n });\n }\n }\n }\n clickHandler(e) {\n let trgt = e.target;\n let items = this.getItems();\n let eventArgs = {};\n let index;\n let tglIcon;\n let acrdEle = closest(trgt, '.' + CLS_ROOT$2);\n if (acrdEle !== this.element) {\n return;\n }\n trgt.classList.add('e-target');\n let acrdnItem = closest(trgt, '.' + CLS_ITEM$1);\n let acrdnHdr = closest(trgt, '.' + CLS_HEADER);\n let acrdnCtn = closest(trgt, '.' + CLS_CONTENT);\n if (acrdnItem && (isNullOrUndefined(acrdnHdr) || isNullOrUndefined(acrdnCtn))) {\n acrdnHdr = acrdnItem.children[0];\n acrdnCtn = acrdnItem.children[1];\n }\n if (acrdnHdr) {\n tglIcon = select('.' + CLS_TOOGLEICN, acrdnHdr);\n }\n let acrdnCtnItem;\n if (acrdnHdr) {\n acrdnCtnItem = closest(acrdnHdr, '.' + CLS_ITEM$1);\n }\n else if (acrdnCtn) {\n acrdnCtnItem = closest(acrdnCtn, '.' + CLS_ITEM$1);\n }\n index = this.getIndexByItem(acrdnItem);\n if (acrdnCtnItem) {\n eventArgs.item = items[this.getIndexByItem(acrdnCtnItem)];\n }\n eventArgs.originalEvent = e;\n let ctnCheck = !isNullOrUndefined(tglIcon) && acrdnItem.childElementCount <= 1;\n if (ctnCheck && (isNullOrUndefined(acrdnCtn) || !isNullOrUndefined(select('.' + CLS_HEADER + ' .' + CLS_TOOGLEICN, acrdnCtnItem)))) {\n if (!this.isServerRendered) {\n acrdnItem.appendChild(this.contentRendering(index));\n this.ariaAttrUpdate(acrdnItem);\n this.afterContentRender(trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem);\n }\n else {\n let id = acrdnItem.id;\n if (this.items.length > 0) {\n // tslint:disable-next-line:no-any\n this.interopAdaptor.invokeMethodAsync('OnItemClick', index).then(() => {\n if (this.isDestroyed) {\n return;\n }\n this.afterContentRender(trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem);\n });\n }\n else {\n // tslint:disable-next-line:no-any\n this.interopAdaptor.invokeMethodAsync('OnDataClick', id).then(() => {\n if (this.isDestroyed) {\n return;\n }\n this.afterContentRender(trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem);\n });\n }\n }\n }\n else {\n this.afterContentRender(trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem);\n }\n }\n afterContentRender(trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem) {\n let acrdActive = [];\n this.trigger('clicked', eventArgs);\n let cntclkCheck = (acrdnCtn && !isNullOrUndefined(select('.e-target', acrdnCtn)));\n let inlineAcrdnSel = '.' + CLS_CONTENT + ' .' + CLS_ROOT$2;\n let inlineEleAcrdn = acrdnCtn && !isNullOrUndefined(select('.' + CLS_ROOT$2, acrdnCtn)) && isNullOrUndefined(closest(trgt, inlineAcrdnSel));\n let nestContCheck = acrdnCtn && isNullOrUndefined(select('.' + CLS_ROOT$2, acrdnCtn)) || !(closest(trgt, '.' + CLS_ROOT$2) === this.element);\n cntclkCheck = cntclkCheck && (inlineEleAcrdn || nestContCheck);\n trgt.classList.remove('e-target');\n if (trgt.classList.contains(CLS_CONTENT) || trgt.classList.contains(CLS_CTENT) || cntclkCheck) {\n return;\n }\n let acrdcontainer = this.element.querySelector('.' + CLS_CONTAINER);\n let acrdnchild = (acrdcontainer) ? acrdcontainer.children : this.element.children;\n [].slice.call(acrdnchild).forEach((el) => {\n if (el.classList.contains(CLS_ACTIVE)) {\n acrdActive.push(el);\n }\n });\n let acrdAniEle = [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM$1 + ' [' + CLS_ANIMATE + ']'));\n if (acrdAniEle.length > 0) {\n for (let el of acrdAniEle) {\n acrdActive.push(el.parentElement);\n }\n }\n let sameContentCheck = acrdActive.indexOf(acrdnCtnItem) !== -1 && acrdnCtn.getAttribute('e-animate') === 'true';\n let sameHeader = false;\n if (!isNullOrUndefined(acrdnItem) && !isNullOrUndefined(acrdnHdr)) {\n let acrdnCtn = select('.' + CLS_CONTENT, acrdnItem);\n let acrdnRoot = closest(acrdnItem, '.' + CLS_ACRDN_ROOT);\n let expandState = acrdnRoot.querySelector('.' + CLS_EXPANDSTATE);\n if (isNullOrUndefined(acrdnCtn)) {\n return;\n }\n sameHeader = (expandState === acrdnItem);\n if (isVisible(acrdnCtn) && (!sameContentCheck || acrdnCtnItem.classList.contains(CLS_SLCTED))) {\n this.collapse(acrdnCtn);\n }\n else {\n if ((acrdActive.length > 0) && this.expandMode === 'Single' && !sameContentCheck) {\n acrdActive.forEach((el) => {\n this.collapse(select('.' + CLS_CONTENT, el));\n el.classList.remove(CLS_EXPANDSTATE);\n });\n }\n this.expand(acrdnCtn);\n }\n if (!isNullOrUndefined(expandState) && !sameHeader) {\n expandState.classList.remove(CLS_EXPANDSTATE);\n }\n }\n }\n eleMoveFocus(action, root, trgt) {\n let clst;\n let clstItem = closest(trgt, '.' + CLS_ITEM$1);\n if (trgt === root) {\n clst = ((action === 'moveUp' ? trgt.lastElementChild : trgt).querySelector('.' + CLS_HEADER));\n }\n else if (trgt.classList.contains(CLS_HEADER)) {\n clstItem = (action === 'moveUp' ? clstItem.previousElementSibling : clstItem.nextElementSibling);\n if (clstItem) {\n clst = select('.' + CLS_HEADER, clstItem);\n }\n }\n if (clst) {\n clst.focus();\n }\n }\n keyActionHandler(e) {\n let trgt = e.target;\n let header = closest(e.target, CLS_HEADER);\n if (isNullOrUndefined(header) && !trgt.classList.contains(CLS_ROOT$2) && !trgt.classList.contains(CLS_HEADER)) {\n return;\n }\n let clst;\n let root = this.element;\n let content;\n switch (e.action) {\n case 'moveUp':\n this.eleMoveFocus(e.action, root, trgt);\n break;\n case 'moveDown':\n this.eleMoveFocus(e.action, root, trgt);\n break;\n case 'space':\n case 'enter':\n content = trgt.nextElementSibling;\n if (!isNullOrUndefined(content) && content.classList.contains(CLS_CONTENT)) {\n if (content.getAttribute('e-animate') !== 'true') {\n trgt.click();\n }\n }\n else {\n trgt.click();\n }\n break;\n case 'home':\n case 'end':\n clst = e.action === 'home' ? root.firstElementChild.children[0] : root.lastElementChild.children[0];\n clst.focus();\n break;\n }\n }\n headerEleGenerate() {\n let header = this.createElement('div', { className: CLS_HEADER, id: getUniqueID('acrdn_header') });\n let items = this.getItems();\n let ariaAttr = {\n 'tabindex': '0', 'role': 'heading', 'aria-selected': 'false',\n 'aria-disabled': 'false', 'aria-level': items.length.toString()\n };\n attributes(header, ariaAttr);\n return header;\n }\n renderInnerItem(item, index) {\n let innerEle;\n innerEle = this.createElement('div', { className: CLS_ITEM$1 });\n innerEle.id = getUniqueID('acrdn_item');\n attributes(innerEle, { 'aria-expanded': 'false' });\n if (this.headerTemplate) {\n let ctnEle = this.headerEleGenerate();\n let hdrEle = this.createElement('div', { className: CLS_HEADERCTN });\n ctnEle.appendChild(hdrEle);\n append(this.getheaderTemplate()(item, this, 'headerTemplate', this.element.id + '_headerTemplate', false), hdrEle);\n innerEle.appendChild(ctnEle);\n ctnEle.appendChild(this.toggleIconGenerate());\n this.add(innerEle, CLS_SLCT);\n return innerEle;\n }\n if (item.header && this.angularnativeCondiCheck(item, 'header')) {\n if (this.enableHtmlSanitizer && typeof (item.header) === 'string') {\n item.header = SanitizeHtmlHelper.sanitize(item.header);\n }\n let ctnEle = this.headerEleGenerate();\n let hdrEle = this.createElement('div', { className: CLS_HEADERCTN });\n ctnEle.appendChild(hdrEle);\n ctnEle.appendChild(this.fetchElement(hdrEle, item.header, index, true));\n innerEle.appendChild(ctnEle);\n }\n let hdr = select('.' + CLS_HEADER, innerEle);\n if (item.expanded && !isNullOrUndefined(index) && (!this.enablePersistence)) {\n if (this.initExpand.indexOf(index) === -1) {\n this.initExpand.push(index);\n }\n }\n if (item.cssClass) {\n addClass([innerEle], item.cssClass.split(' '));\n }\n if (item.disabled) {\n addClass([innerEle], CLS_DISABLE$3);\n }\n if (item.visible === false) {\n addClass([innerEle], CLS_ITEMHIDE);\n }\n if (item.iconCss) {\n let hdrIcnEle = this.createElement('div', { className: CLS_HEADERICN });\n let icon = this.createElement('span', { className: item.iconCss + ' e-icons' });\n hdrIcnEle.appendChild(icon);\n if (isNullOrUndefined(hdr)) {\n hdr = this.headerEleGenerate();\n hdr.appendChild(hdrIcnEle);\n innerEle.appendChild(hdr);\n }\n else {\n hdr.insertBefore(hdrIcnEle, hdr.childNodes[0]);\n }\n }\n if (item.content && this.angularnativeCondiCheck(item, 'content')) {\n let hdrIcon = this.toggleIconGenerate();\n if (isNullOrUndefined(hdr)) {\n hdr = this.headerEleGenerate();\n innerEle.appendChild(hdr);\n }\n hdr.appendChild(hdrIcon);\n this.add(innerEle, CLS_SLCT);\n }\n return innerEle;\n }\n angularnativeCondiCheck(item, prop) {\n let property = prop === 'content' ? item.content : item.header;\n let content = property;\n if (this.isAngular && !isNullOrUndefined(content.elementRef)) {\n let data = content.elementRef.nativeElement.data;\n if (isNullOrUndefined(data) || data === '' || (data.indexOf('bindings=') === -1)) {\n return true;\n }\n let parseddata = JSON.parse(content.elementRef.nativeElement.data.replace('bindings=', ''));\n if (!isNullOrUndefined(parseddata) && parseddata['ng-reflect-ng-if'] === 'false') {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return true;\n }\n }\n fetchElement(ele, value, index, isHeader) {\n let templateFn;\n let temString;\n try {\n if (document.querySelectorAll(value).length) {\n let eleVal = document.querySelector(value);\n temString = eleVal.outerHTML.trim();\n ele.appendChild(eleVal);\n eleVal.style.display = '';\n }\n }\n catch (e) {\n if (typeof (value) === 'string' && isBlazor() && value.indexOf('
    Blazor') !== 0) {\n ele.innerHTML = SanitizeHtmlHelper.sanitize(value);\n /* tslint:disable */\n }\n else if (!isNullOrUndefined(this.trgtEle) && (value instanceof (HTMLElement))) {\n ele.appendChild(value);\n ele.firstElementChild.style.display = '';\n /* tslint:enable */\n }\n else {\n templateFn = compile(value);\n }\n }\n let tempArray;\n if (!isNullOrUndefined(templateFn)) {\n let templateProps;\n if (ele.classList.contains(CLS_HEADERCTN)) {\n templateProps = this.element.id + index + '_header';\n }\n else if (ele.classList.contains(CLS_CTENT)) {\n templateProps = this.element.id + index + '_content';\n }\n tempArray = templateFn({}, null, null, templateProps, this.isStringTemplate);\n }\n if (!isNullOrUndefined(tempArray) && tempArray.length > 0 && !(isNullOrUndefined(tempArray[0].tagName) && tempArray.length === 1)) {\n [].slice.call(tempArray).forEach((el) => {\n if (!isNullOrUndefined(el.tagName)) {\n el.style.display = '';\n }\n ele.appendChild(el);\n });\n }\n else if (ele.childElementCount === 0) {\n ele.innerHTML = SanitizeHtmlHelper.sanitize(value);\n }\n if (!isNullOrUndefined(temString)) {\n if (this.templateEle.indexOf(value) === -1) {\n this.templateEle.push(value);\n }\n }\n return ele;\n }\n ariaAttrUpdate(itemEle) {\n let header = select('.' + CLS_HEADER, itemEle);\n let content = select('.' + CLS_CONTENT, itemEle);\n header.setAttribute('aria-controls', content.id);\n content.setAttribute('aria-labelledby', header.id);\n content.setAttribute('role', 'definition');\n }\n contentRendering(index) {\n let itemcnt = this.createElement('div', { className: CLS_CONTENT + ' ' + CLS_CTNHIDE, id: getUniqueID('acrdn_panel') });\n attributes(itemcnt, { 'aria-hidden': 'true' });\n let ctn = this.createElement('div', { className: CLS_CTENT });\n if (this.dataSource.length > 0) {\n append(this.getItemTemplate()(this.dataSource[index], this, 'itemTemplate', this.element.id + '_itemTemplate', false), ctn);\n itemcnt.appendChild(ctn);\n }\n else {\n if (this.enableHtmlSanitizer && typeof (this.items[index].content)) {\n this.items[index].content = SanitizeHtmlHelper.sanitize(this.items[index].content);\n }\n itemcnt.appendChild(this.fetchElement(ctn, this.items[index].content, index, false));\n }\n return itemcnt;\n }\n expand(trgt) {\n let eventArgs;\n let items = this.getItems();\n let trgtItemEle = closest(trgt, '.' + CLS_ITEM$1);\n if (isNullOrUndefined(trgt) || (isVisible(trgt) && trgt.getAttribute('e-animate') !== 'true') || trgtItemEle.classList.contains(CLS_DISABLE$3)) {\n return;\n }\n let acrdnRoot = closest(trgtItemEle, '.' + CLS_ACRDN_ROOT);\n let expandState = acrdnRoot.querySelector('.' + CLS_EXPANDSTATE);\n let animation = {\n name: this.animation.expand.effect,\n duration: this.animation.expand.duration,\n timingFunction: this.animation.expand.easing\n };\n let icon = select('.' + CLS_TOOGLEICN, trgtItemEle).firstElementChild;\n eventArgs = {\n element: trgtItemEle,\n item: items[this.getIndexByItem(trgtItemEle)],\n index: this.getIndexByItem(trgtItemEle),\n content: trgtItemEle.querySelector('.' + CLS_CONTENT),\n isExpanded: true\n };\n this.trigger('expanding', eventArgs, (expandArgs) => {\n if (!expandArgs.cancel) {\n icon.classList.add(CLS_TOGANIMATE);\n this.expandedItemsPush(trgtItemEle);\n if (!isNullOrUndefined(expandState)) {\n expandState.classList.remove(CLS_EXPANDSTATE);\n }\n trgtItemEle.classList.add(CLS_EXPANDSTATE);\n if ((animation.name === 'None')) {\n this.expandProgress('begin', icon, trgt, trgtItemEle, expandArgs);\n this.expandProgress('end', icon, trgt, trgtItemEle, expandArgs);\n }\n else {\n this.expandAnimation(animation.name, icon, trgt, trgtItemEle, animation, expandArgs);\n }\n }\n });\n }\n expandAnimation(ef, icn, trgt, trgtItemEle, animate, args) {\n let height;\n this.lastActiveItemId = trgtItemEle.id;\n if (ef === 'SlideDown') {\n animate.begin = () => {\n this.expandProgress('begin', icn, trgt, trgtItemEle, args);\n trgt.style.position = 'absolute';\n height = trgtItemEle.offsetHeight;\n trgt.style.maxHeight = (trgt.offsetHeight) + 'px';\n trgtItemEle.style.maxHeight = '';\n };\n animate.progress = () => {\n trgtItemEle.style.minHeight = (height + trgt.offsetHeight) + 'px';\n };\n animate.end = () => {\n setStyleAttribute(trgt, { 'position': '', 'maxHeight': '' });\n trgtItemEle.style.minHeight = '';\n this.expandProgress('end', icn, trgt, trgtItemEle, args);\n };\n }\n else {\n animate.begin = () => {\n this.expandProgress('begin', icn, trgt, trgtItemEle, args);\n };\n animate.end = () => {\n this.expandProgress('end', icn, trgt, trgtItemEle, args);\n };\n }\n new Animation(animate).animate(trgt);\n }\n expandProgress(progress, icon, trgt, trgtItemEle, eventArgs) {\n this.remove(trgt, CLS_CTNHIDE);\n this.add(trgtItemEle, CLS_SLCTED);\n this.add(icon, CLS_EXPANDICN);\n if (progress === 'end') {\n this.add(trgtItemEle, CLS_ACTIVE);\n trgt.setAttribute('aria-hidden', 'false');\n attributes(trgtItemEle, { 'aria-expanded': 'true' });\n attributes(trgt.previousElementSibling, { 'aria-selected': 'true' });\n icon.classList.remove(CLS_TOGANIMATE);\n this.trigger('expanded', eventArgs);\n }\n }\n expandedItemsPush(item) {\n let index = this.getIndexByItem(item);\n if (this.expandedIndices.indexOf(index) === -1) {\n let temp = [].slice.call(this.expandedIndices);\n temp.push(index);\n this.setProperties({ expandedIndices: temp }, true);\n }\n }\n getIndexByItem(item) {\n let itemEle = this.getItemElements();\n return [].slice.call(itemEle).indexOf(item);\n }\n getItemElements() {\n let itemEle = [];\n let itemCollection = this.element.children;\n [].slice.call(itemCollection).forEach((el) => {\n if (el.classList.contains(CLS_ITEM$1)) {\n itemEle.push(el);\n }\n });\n return itemEle;\n }\n expandedItemsPop(item) {\n let index = this.getIndexByItem(item);\n let temp = [].slice.call(this.expandedIndices);\n temp.splice(temp.indexOf(index), 1);\n this.setProperties({ expandedIndices: temp }, true);\n }\n collapse(trgt) {\n let eventArgs;\n let items = this.getItems();\n let trgtItemEle = closest(trgt, '.' + CLS_ITEM$1);\n if (isNullOrUndefined(trgt) || !isVisible(trgt) || trgtItemEle.classList.contains(CLS_DISABLE$3)) {\n return;\n }\n let animation = {\n name: this.animation.collapse.effect,\n duration: this.animation.collapse.duration,\n timingFunction: this.animation.collapse.easing,\n };\n let icon = select('.' + CLS_TOOGLEICN, trgtItemEle).firstElementChild;\n eventArgs = {\n element: trgtItemEle,\n item: items[this.getIndexByItem(trgtItemEle)],\n index: this.getIndexByItem(trgtItemEle),\n content: trgtItemEle.querySelector('.' + CLS_CONTENT),\n isExpanded: false\n };\n this.trigger('expanding', eventArgs, (expandArgs) => {\n if (!expandArgs.cancel) {\n this.expandedItemsPop(trgtItemEle);\n trgtItemEle.classList.add(CLS_EXPANDSTATE);\n icon.classList.add(CLS_TOGANIMATE);\n if ((animation.name === 'None')) {\n this.collapseProgress('begin', icon, trgt, trgtItemEle, expandArgs);\n this.collapseProgress('end', icon, trgt, trgtItemEle, expandArgs);\n }\n else {\n this.collapseAnimation(animation.name, trgt, trgtItemEle, icon, animation, expandArgs);\n }\n }\n });\n }\n collapseAnimation(ef, trgt, trgtItEl, icn, animate, args) {\n let height;\n let trgtHeight;\n let itemHeight;\n let remain;\n this.lastActiveItemId = trgtItEl.id;\n if (ef === 'SlideUp') {\n animate.begin = () => {\n itemHeight = trgtItEl.offsetHeight;\n trgtItEl.style.minHeight = itemHeight + 'px';\n trgt.style.position = 'absolute';\n height = trgtItEl.offsetHeight;\n trgtHeight = trgt.offsetHeight;\n trgt.style.maxHeight = trgtHeight + 'px';\n this.collapseProgress('begin', icn, trgt, trgtItEl, args);\n };\n animate.progress = () => {\n remain = ((height - (trgtHeight - trgt.offsetHeight)));\n if (remain < itemHeight) {\n trgtItEl.style.minHeight = remain + 'px';\n }\n };\n animate.end = () => {\n trgt.style.display = 'none';\n this.collapseProgress('end', icn, trgt, trgtItEl, args);\n trgtItEl.style.minHeight = '';\n setStyleAttribute(trgt, { 'position': '', 'maxHeight': '', 'display': '' });\n };\n }\n else {\n animate.begin = () => {\n this.collapseProgress('begin', icn, trgt, trgtItEl, args);\n };\n animate.end = () => {\n this.collapseProgress('end', icn, trgt, trgtItEl, args);\n };\n }\n new Animation(animate).animate(trgt);\n }\n collapseProgress(progress, icon, trgt, trgtItemEle, eventArgs) {\n this.remove(icon, CLS_EXPANDICN);\n this.remove(trgtItemEle, CLS_SLCTED);\n if (progress === 'end') {\n this.add(trgt, CLS_CTNHIDE);\n icon.classList.remove(CLS_TOGANIMATE);\n this.remove(trgtItemEle, CLS_ACTIVE);\n trgt.setAttribute('aria-hidden', 'true');\n attributes(trgtItemEle, { 'aria-expanded': 'false' });\n attributes(trgt.previousElementSibling, { 'aria-selected': 'false' });\n this.trigger('expanded', eventArgs);\n }\n }\n /**\n * Returns the current module name.\n * @returns string\n * @private\n */\n getModuleName() {\n return 'accordion';\n }\n itemAttribUpdate() {\n let items = this.getItems();\n let itemEle = this.getItemElements();\n let itemLen = items.length;\n itemEle.forEach((ele) => {\n select('.' + CLS_HEADER, ele).setAttribute('aria-level', '' + itemLen);\n });\n }\n getItems() {\n let items;\n if (this.itemTemplate && this.headerTemplate) {\n items = this.dataSource;\n }\n else {\n items = this.items;\n }\n return items;\n }\n /**\n * Adds new item to the Accordion with the specified index of the Accordion.\n * @param {AccordionItemModel | AccordionItemModel[] | Object | Object[]} item - Item array that is to be added to the Accordion.\n * @param {number} index - Number value that determines where the item should be added.\n * By default, item is added at the last index if the index is not specified.\n * @returns void\n * @deprecated\n */\n addItem(item, index) {\n let ele = this.element;\n let itemEle = this.getItemElements();\n let items = this.getItems();\n if (isNullOrUndefined(index)) {\n index = items.length;\n }\n if (ele.childElementCount >= index) {\n let addItems = (item instanceof Array) ? item : [item];\n addItems.forEach((addItem, i) => {\n let itemIndex = index + i;\n items.splice(itemIndex, 0, addItem);\n let innerItemEle = this.renderInnerItem(addItem, itemIndex);\n if (ele.childElementCount === itemIndex) {\n ele.appendChild(innerItemEle);\n }\n else {\n ele.insertBefore(innerItemEle, itemEle[itemIndex]);\n }\n EventHandler.add(innerItemEle.querySelector('.' + CLS_HEADER), 'focus', this.focusIn, this);\n EventHandler.add(innerItemEle.querySelector('.' + CLS_HEADER), 'blur', this.focusOut, this);\n this.itemAttribUpdate();\n this.expandedIndices = [];\n this.expandedItemRefresh(ele);\n if (addItem && addItem.expanded) {\n this.expandItem(true, itemIndex);\n }\n });\n }\n }\n expandedItemRefresh(ele) {\n let itemEle = this.getItemElements();\n [].slice.call(itemEle).forEach((el) => {\n if (el.classList.contains(CLS_SLCTED)) {\n this.expandedItemsPush(el);\n }\n });\n }\n /**\n * Dynamically removes item from Accordion.\n * @param {number} index - Number value that determines which item should be removed.\n * @returns void.\n * @deprecated\n */\n removeItem(index) {\n let itemEle = this.getItemElements();\n let ele = itemEle[index];\n let items = this.getItems();\n if (isNullOrUndefined(ele)) {\n return;\n }\n this.restoreContent(index);\n detach(ele);\n items.splice(index, 1);\n this.itemAttribUpdate();\n this.expandedIndices = [];\n this.expandedItemRefresh(this.element);\n }\n /**\n * Sets focus to the specified index item header in Accordion.\n * @param {number} index - Number value that determines which item should be focused.\n * @returns void.\n */\n select(index) {\n let itemEle = this.getItemElements();\n let ele = itemEle[index];\n if (isNullOrUndefined(ele) || isNullOrUndefined(select('.' + CLS_HEADER, ele))) {\n return;\n }\n ele.children[0].focus();\n }\n /**\n * Shows or hides the specified item from Accordion.\n * @param {number} index - Number value that determines which item should be hidden/shown.\n * @param {Boolean} isHidden - Boolean value that determines the action either hide (true) or show (false). Default value is false.\n * If the `isHidden` value is false, the item is shown or else item it is hidden.\n * @returns void.\n */\n hideItem(index, isHidden) {\n let itemEle = this.getItemElements();\n let ele = itemEle[index];\n if (isNullOrUndefined(ele)) {\n return;\n }\n if (isNullOrUndefined(isHidden)) {\n isHidden = true;\n }\n isHidden ? this.add(ele, CLS_ITEMHIDE) : this.remove(ele, CLS_ITEMHIDE);\n }\n /**\n * Enables/Disables the specified Accordion item.\n * @param {number} index - Number value that determines which item should be enabled/disabled.\n * @param {boolean} isEnable - Boolean value that determines the action as enable (true) or disable (false).\n * If the `isEnable` value is true, the item is enabled or else it is disabled.\n * @returns void.\n */\n enableItem(index, isEnable) {\n let itemEle = this.getItemElements();\n let ele = itemEle[index];\n if (isNullOrUndefined(ele)) {\n return;\n }\n let eleHeader = ele.firstElementChild;\n if (isEnable) {\n this.remove(ele, CLS_DISABLE$3);\n attributes(eleHeader, { 'tabindex': '0', 'aria-disabled': 'false' });\n eleHeader.focus();\n }\n else {\n if (ele.classList.contains(CLS_ACTIVE)) {\n this.expandItem(false, index);\n this.eleMoveFocus('movedown', this.element, eleHeader);\n }\n this.add(ele, CLS_DISABLE$3);\n eleHeader.setAttribute('aria-disabled', 'true');\n eleHeader.removeAttribute('tabindex');\n }\n }\n /**\n * Refresh the Accordion component.\n * @returns void.\n */\n refresh() {\n if (!this.isServerRendered) {\n super.refresh();\n }\n }\n /**\n * Expands/Collapses the specified Accordion item.\n * @param {boolean} isExpand - Boolean value that determines the action as expand or collapse.\n * @param {number} index - Number value that determines which item should be expanded/collapsed.`index` is optional parameter.\n * Without Specifying index, based on the `isExpand` value all Accordion item can be expanded or collapsed.\n * @returns void.\n */\n expandItem(isExpand, index) {\n let itemEle = this.getItemElements();\n if (isNullOrUndefined(index)) {\n if (this.expandMode === 'Single' && isExpand) {\n let ele = itemEle[itemEle.length - 1];\n this.itemExpand(isExpand, ele, this.getIndexByItem(ele));\n }\n else {\n let item = select('#' + this.lastActiveItemId, this.element);\n [].slice.call(itemEle).forEach((el) => {\n this.itemExpand(isExpand, el, this.getIndexByItem(el));\n el.classList.remove(CLS_EXPANDSTATE);\n });\n let expandedItem = select('.' + CLS_EXPANDSTATE, this.element);\n if (expandedItem) {\n expandedItem.classList.remove(CLS_EXPANDSTATE);\n }\n if (item) {\n item.classList.add(CLS_EXPANDSTATE);\n }\n }\n }\n else {\n let ele = itemEle[index];\n if (isNullOrUndefined(ele) || !ele.classList.contains(CLS_SLCT) || (ele.classList.contains(CLS_ACTIVE) && isExpand)) {\n return;\n }\n else {\n if (this.expandMode === 'Single') {\n this.expandItem(false);\n }\n this.itemExpand(isExpand, ele, index);\n }\n }\n }\n itemExpand(isExpand, ele, index) {\n let ctn = ele.children[1];\n if (ele.classList.contains(CLS_DISABLE$3)) {\n return;\n }\n if (isNullOrUndefined(ctn) && isExpand) {\n if (!this.isServerRendered) {\n ctn = this.contentRendering(index);\n ele.appendChild(ctn);\n this.ariaAttrUpdate(ele);\n this.expand(ctn);\n }\n else {\n let id = ele.id;\n if (this.items.length > 0) {\n // tslint:disable-next-line:no-any\n this.interopAdaptor.invokeMethodAsync('OnItemClick', index).then(() => {\n if (this.isDestroyed) {\n return;\n }\n ctn = ele.children[1];\n this.expand(ctn);\n });\n }\n else {\n // tslint:disable-next-line:no-any\n this.interopAdaptor.invokeMethodAsync('OnDataClick', id).then(() => {\n if (this.isDestroyed) {\n return;\n }\n ctn = ele.children[1];\n this.expand(ctn);\n });\n }\n }\n }\n else if (!isNullOrUndefined(ctn)) {\n isExpand ? this.expand(ctn) : this.collapse(ctn);\n }\n }\n destroyItems() {\n this.restoreContent(null);\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM$1)).forEach((el) => {\n detach(el);\n });\n }\n restoreContent(index) {\n let ctnElePos;\n if (isNullOrUndefined(index)) {\n ctnElePos = this.element;\n }\n else {\n ctnElePos = this.element.querySelectorAll('.' + CLS_ITEM$1)[index];\n }\n this.templateEle.forEach((eleStr) => {\n if (!isNullOrUndefined(ctnElePos.querySelector(eleStr))) {\n document.body.appendChild(ctnElePos.querySelector(eleStr)).style.display = 'none';\n }\n });\n }\n updateItem(item, index) {\n if (!isNullOrUndefined(item)) {\n let items = this.getItems();\n let itemObj = items[index];\n items.splice(index, 1);\n this.restoreContent(index);\n detach(item);\n this.addItem(itemObj, index);\n }\n }\n getPersistData() {\n let keyEntity = ['expandedIndices'];\n return this.addOnPersist(keyEntity);\n }\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n * @param {AccordionModel} newProp\n * @param {AccordionModel} oldProp\n * @returns void\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n let acrdn = this.element;\n let isRefresh = false;\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'items':\n if (this.isServerRendered) {\n this.wireFocusEvents();\n break;\n }\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n let changedProp = Object.keys(newProp.items);\n for (let j = 0; j < changedProp.length; j++) {\n let index = parseInt(Object.keys(newProp.items)[j], 10);\n let property = Object.keys(newProp.items[index])[0];\n let item = selectAll('.' + CLS_ITEM$1, this.element)[index];\n let oldVal = Object(oldProp.items[index])[property];\n let newVal = Object(newProp.items[index])[property];\n let temp = property;\n if (temp === 'header' || temp === 'iconCss' || temp === 'expanded' || ((temp === 'content') && (oldVal === ''))) {\n this.updateItem(item, index);\n }\n if (property === 'cssClass' && !isNullOrUndefined(item)) {\n item.classList.remove(oldVal);\n item.classList.add(newVal);\n }\n if (property === 'visible' && !isNullOrUndefined(item)) {\n (Object(newProp.items[index])[property] === false) ? item.classList.add(CLS_ITEMHIDE) : item.classList.remove(CLS_ITEMHIDE);\n }\n if (property === 'disabled' && !isNullOrUndefined(item)) {\n this.enableItem(index, !newVal);\n }\n if (property === 'content' && !isNullOrUndefined(item) && item.children.length === 2) {\n if (item.classList.contains(CLS_SLCTED)) {\n this.expandItem(false, index);\n }\n detach(item.querySelector('.' + CLS_CONTENT));\n }\n }\n }\n else {\n isRefresh = true;\n }\n break;\n case 'dataSource':\n case 'expandedIndices':\n if (this.expandedIndices === null) {\n this.expandedIndices = [];\n }\n isRefresh = true;\n break;\n case 'headerTemplate':\n this.initializeheaderTemplate();\n isRefresh = true;\n break;\n case 'itemTemplate':\n this.initializeItemTemplate();\n isRefresh = true;\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.add(acrdn, CLS_RTL$3) : this.remove(acrdn, CLS_RTL$3);\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'expandMode':\n if (newProp.expandMode === 'Single') {\n this.element.setAttribute('aria-multiselectable', 'false');\n if (this.expandedIndices.length > 1) {\n this.expandItem(false);\n }\n }\n else {\n this.element.setAttribute('aria-multiselectable', 'true');\n }\n break;\n }\n }\n if (isRefresh && !this.isServerRendered) {\n this.initExpand = [];\n if (this.expandedIndices.length > 0) {\n this.initExpand = this.expandedIndices;\n }\n this.destroyItems();\n this.renderItems();\n this.initItemExpand();\n }\n }\n};\n__decorate$4([\n Collection([], AccordionItem)\n], Accordion.prototype, \"items\", void 0);\n__decorate$4([\n Property([])\n], Accordion.prototype, \"dataSource\", void 0);\n__decorate$4([\n Property()\n], Accordion.prototype, \"itemTemplate\", void 0);\n__decorate$4([\n Property()\n], Accordion.prototype, \"headerTemplate\", void 0);\n__decorate$4([\n Property('100%')\n], Accordion.prototype, \"width\", void 0);\n__decorate$4([\n Property('auto')\n], Accordion.prototype, \"height\", void 0);\n__decorate$4([\n Property([])\n], Accordion.prototype, \"expandedIndices\", void 0);\n__decorate$4([\n Property('Multiple')\n], Accordion.prototype, \"expandMode\", void 0);\n__decorate$4([\n Property(false)\n], Accordion.prototype, \"enableHtmlSanitizer\", void 0);\n__decorate$4([\n Complex({}, AccordionAnimationSettings)\n], Accordion.prototype, \"animation\", void 0);\n__decorate$4([\n Event()\n], Accordion.prototype, \"clicked\", void 0);\n__decorate$4([\n Event()\n], Accordion.prototype, \"expanding\", void 0);\n__decorate$4([\n Event()\n], Accordion.prototype, \"expanded\", void 0);\n__decorate$4([\n Event()\n], Accordion.prototype, \"created\", void 0);\n__decorate$4([\n Event()\n], Accordion.prototype, \"destroyed\", void 0);\nAccordion = __decorate$4([\n NotifyPropertyChanges\n], Accordion);\n\n/**\n * Accordion all modules\n */\n\nvar __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/// \n/**\n * The ContextMenu is a graphical user interface that appears on the user right click/touch hold operation.\n * ```html\n *
    \n *
      \n * ```\n * ```typescript\n * \n * ```\n */\nlet ContextMenu = class ContextMenu extends MenuBase {\n /**\n * Constructor for creating the widget.\n * @private\n */\n constructor(options, element) {\n super(options, element);\n }\n /**\n * For internal use only - prerender processing.\n * @private\n */\n preRender() {\n this.isMenu = false;\n this.element.id = this.element.id || getUniqueID('ej2-contextmenu');\n super.preRender();\n }\n initialize() {\n super.initialize();\n attributes(this.element, { 'role': 'context menu', 'tabindex': '0' });\n this.element.style.zIndex = getZindexPartial(this.element).toString();\n }\n /**\n * This method is used to open the ContextMenu in specified position.\n * @param top - To specify ContextMenu vertical positioning.\n * @param left - To specify ContextMenu horizontal positioning.\n * @param target - To calculate z-index for ContextMenu based upon the specified target.\n * @method open\n * @returns void\n */\n open(top, left, target) {\n super.openMenu(null, null, top, left, null, target);\n }\n /**\n * Closes the ContextMenu if it is opened.\n */\n close() {\n super.closeMenu();\n }\n /**\n * Called internally if any of the property value changed\n * @private\n * @param {ContextMenuModel} newProp\n * @param {ContextMenuModel} oldProp\n * @returns void\n */\n onPropertyChanged(newProp, oldProp) {\n super.onPropertyChanged(newProp, oldProp);\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'filter':\n this.close();\n this.filter = newProp.filter;\n break;\n case 'target':\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n break;\n }\n }\n }\n /**\n * Get module name.\n * @returns string\n * @private\n */\n getModuleName() {\n return 'contextmenu';\n }\n};\n__decorate$5([\n Property('')\n], ContextMenu.prototype, \"target\", void 0);\n__decorate$5([\n Property('')\n], ContextMenu.prototype, \"filter\", void 0);\n__decorate$5([\n Collection([], MenuItem)\n], ContextMenu.prototype, \"items\", void 0);\nContextMenu = __decorate$5([\n NotifyPropertyChanges\n], ContextMenu);\n\n/**\n * ContextMenu modules\n */\n\nvar __decorate$6 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/// \nconst VMENU = 'e-vertical';\nconst SCROLLABLE = 'e-scrollable';\nconst HAMBURGER = 'e-hamburger';\n/**\n * The Menu is a graphical user interface that serve as navigation headers for your application or site.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nlet Menu = class Menu extends MenuBase {\n /**\n * Constructor for creating the component.\n * @private\n */\n constructor(options, element) {\n super(options, element);\n this.tempItems = [];\n }\n /**\n * Get module name.\n * @returns string\n * @private\n */\n getModuleName() {\n return 'menu';\n }\n /**\n * For internal use only - prerender processing.\n * @private\n */\n preRender() {\n this.isMenu = true;\n this.element.id = this.element.id || getUniqueID('ej2-menu');\n if (this.template) {\n try {\n if (document.querySelectorAll(this.template).length) {\n this.template = document.querySelector(this.template).innerHTML.trim();\n this.clearChanges();\n }\n }\n catch (e) {\n /* action on catch */\n }\n }\n else {\n this.updateMenuItems(this.items);\n }\n super.preRender();\n }\n initialize() {\n super.initialize();\n attributes(this.element, { 'role': 'menubar', 'tabindex': '0' });\n if (this.orientation === 'Vertical') {\n this.element.classList.add(VMENU);\n if (this.hamburgerMode && !this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.setAttribute('aria-orientation', 'vertical');\n }\n else {\n if (Browser.isDevice && !this.enableScrolling) {\n this.element.parentElement.classList.add(SCROLLABLE);\n }\n }\n if (this.hamburgerMode) {\n this.element.parentElement.classList.add(HAMBURGER);\n if (this.orientation === 'Horizontal') {\n this.element.classList.add('e-hide-menu');\n }\n }\n }\n updateMenuItems(items) {\n this.tempItems = items;\n this.items = [];\n this.tempItems.map(this.createMenuItems, this);\n this.setProperties({ items: this.items }, true);\n this.tempItems = [];\n }\n /**\n * Called internally if any of the property value changed\n * @private\n * @param {MenuModel} newProp\n * @param {MenuModel} oldProp\n * @returns void\n */\n onPropertyChanged(newProp, oldProp) {\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'orientation':\n if (newProp.orientation === 'Vertical') {\n this.element.classList.add(VMENU);\n if (this.hamburgerMode) {\n if (!this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.remove('e-hide-menu');\n }\n this.element.setAttribute('aria-orientation', 'vertical');\n }\n else {\n this.element.classList.remove(VMENU);\n if (this.hamburgerMode) {\n if (!this.target) {\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n this.element.classList.add('e-hide-menu');\n }\n this.element.removeAttribute('aria-orientation');\n }\n break;\n case 'items':\n if (!Object.keys(oldProp.items).length) {\n this.updateMenuItems(newProp.items);\n }\n break;\n case 'hamburgerMode':\n if (!this.element.previousElementSibling) {\n super.createHeaderContainer();\n }\n if (newProp.hamburgerMode) {\n this.element.parentElement.classList.add(HAMBURGER);\n }\n else {\n this.element.parentElement.classList.remove(HAMBURGER);\n }\n if (this.orientation === 'Vertical') {\n if (!this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.remove('e-hide-menu');\n }\n else {\n if (this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n else {\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n this.element.classList[newProp.hamburgerMode ? 'add' : 'remove']('e-hide-menu');\n }\n break;\n case 'title':\n if (this.hamburgerMode && this.element.previousElementSibling) {\n newProp.title = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(newProp.title) : newProp.title;\n this.element.previousElementSibling.querySelector('.e-menu-title').innerHTML = newProp.title;\n }\n break;\n case 'target':\n if (this.hamburgerMode) {\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n if (this.orientation === 'Horizontal') {\n if (!newProp.target) {\n if (!this.element.previousElementSibling) {\n super.createHeaderContainer();\n }\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n else {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.add('e-hide-menu');\n }\n }\n break;\n }\n }\n super.onPropertyChanged(newProp, oldProp);\n }\n createMenuItems(item) {\n let pIdField;\n let idx;\n let i;\n let items = this.items;\n pIdField = this.getField('parentId');\n if (item[pIdField]) {\n idx = this.getIndex(item[pIdField].toString(), true);\n for (i = 0; i < idx.length; i++) {\n if (!items[idx[i]].items) {\n items[idx[i]].items = [];\n }\n items = items[idx[i]].items;\n }\n items.push(item);\n }\n else {\n this.items.push(item);\n }\n }\n /**\n * This method is used to open the Menu in hamburger mode.\n * @method open\n * @returns void\n */\n open() {\n super.openHamburgerMenu();\n }\n /**\n * Closes the Menu if it is opened in hamburger mode.\n */\n close() {\n super.closeHamburgerMenu();\n }\n};\n__decorate$6([\n Property('Horizontal')\n], Menu.prototype, \"orientation\", void 0);\n__decorate$6([\n Property('')\n], Menu.prototype, \"target\", void 0);\n__decorate$6([\n Property(null)\n], Menu.prototype, \"template\", void 0);\n__decorate$6([\n Property(false)\n], Menu.prototype, \"enableScrolling\", void 0);\n__decorate$6([\n Property(false)\n], Menu.prototype, \"hamburgerMode\", void 0);\n__decorate$6([\n Property('Menu')\n], Menu.prototype, \"title\", void 0);\n__decorate$6([\n Property(false)\n], Menu.prototype, \"enableHtmlSanitizer\", void 0);\n__decorate$6([\n Complex({ itemId: \"id\", text: \"text\", parentId: \"parentId\", iconCss: \"iconCss\", url: \"url\", separator: \"separator\", children: \"items\" }, FieldSettings)\n], Menu.prototype, \"fields\", void 0);\nMenu = __decorate$6([\n NotifyPropertyChanges\n], Menu);\n\n/**\n * Menu modules\n */\n\nvar __decorate$7 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst CLS_TAB = 'e-tab';\nconst CLS_HEADER$1 = 'e-tab-header';\nconst CLS_BLA_TEM = 'blazor-template';\nconst CLS_CONTENT$1 = 'e-content';\nconst CLS_NEST$1 = 'e-nested';\nconst CLS_ITEMS$1 = 'e-items';\nconst CLS_ITEM$2 = 'e-item';\nconst CLS_TEMPLATE$1 = 'e-template';\nconst CLS_RTL$4 = 'e-rtl';\nconst CLS_ACTIVE$1 = 'e-active';\nconst CLS_DISABLE$4 = 'e-disable';\nconst CLS_HIDDEN$1 = 'e-hidden';\nconst CLS_FOCUS = 'e-focused';\nconst CLS_ICONS = 'e-icons';\nconst CLS_ICON = 'e-icon';\nconst CLS_ICON_TAB = 'e-icon-tab';\nconst CLS_ICON_CLOSE = 'e-close-icon';\nconst CLS_CLOSE_SHOW = 'e-close-show';\nconst CLS_TEXT = 'e-tab-text';\nconst CLS_INDICATOR = 'e-indicator';\nconst CLS_WRAP = 'e-tab-wrap';\nconst CLS_TEXT_WRAP = 'e-text-wrap';\nconst CLS_TAB_ICON = 'e-tab-icon';\nconst CLS_TB_ITEMS = 'e-toolbar-items';\nconst CLS_TB_ITEM = 'e-toolbar-item';\nconst CLS_TB_POP = 'e-toolbar-pop';\nconst CLS_TB_POPUP = 'e-toolbar-popup';\nconst CLS_HOR_NAV = 'e-hor-nav';\nconst CLS_POPUP_OPEN = 'e-popup-open';\nconst CLS_POPUP_CLOSE = 'e-popup-close';\nconst CLS_PROGRESS = 'e-progress';\nconst CLS_IGNORE = 'e-ignore';\nconst CLS_OVERLAY$2 = 'e-overlay';\nconst CLS_HSCRCNT = 'e-hscroll-content';\nconst CLS_VSCRCNT = 'e-vscroll-content';\nconst CLS_VTAB = 'e-vertical-tab';\nconst CLS_VERTICAL$1 = 'e-vertical';\nconst CLS_VLEFT = 'e-vertical-left';\nconst CLS_VRIGHT = 'e-vertical-right';\nconst CLS_HBOTTOM = 'e-horizontal-bottom';\nconst CLS_FILL = 'e-fill-mode';\n/**\n * Objects used for configuring the Tab selecting item action properties.\n */\nclass TabActionSettings extends ChildProperty {\n}\n__decorate$7([\n Property('SlideLeftIn')\n], TabActionSettings.prototype, \"effect\", void 0);\n__decorate$7([\n Property(600)\n], TabActionSettings.prototype, \"duration\", void 0);\n__decorate$7([\n Property('ease')\n], TabActionSettings.prototype, \"easing\", void 0);\n/**\n * Objects used for configuring the Tab animation properties.\n */\nclass TabAnimationSettings extends ChildProperty {\n}\n__decorate$7([\n Complex({ effect: 'SlideLeftIn', duration: 600, easing: 'ease' }, TabActionSettings)\n], TabAnimationSettings.prototype, \"previous\", void 0);\n__decorate$7([\n Complex({ effect: 'SlideRightIn', duration: 600, easing: 'ease' }, TabActionSettings)\n], TabAnimationSettings.prototype, \"next\", void 0);\n/**\n * Objects used for configuring the Tab item header properties.\n */\nclass Header extends ChildProperty {\n}\n__decorate$7([\n Property('')\n], Header.prototype, \"text\", void 0);\n__decorate$7([\n Property('')\n], Header.prototype, \"iconCss\", void 0);\n__decorate$7([\n Property('left')\n], Header.prototype, \"iconPosition\", void 0);\n/**\n * An array of object that is used to configure the Tab.\n */\nclass TabItem extends ChildProperty {\n}\n__decorate$7([\n Complex({}, Header)\n], TabItem.prototype, \"header\", void 0);\n__decorate$7([\n Property(null)\n], TabItem.prototype, \"headerTemplate\", void 0);\n__decorate$7([\n Property('')\n], TabItem.prototype, \"content\", void 0);\n__decorate$7([\n Property('')\n], TabItem.prototype, \"cssClass\", void 0);\n__decorate$7([\n Property(false)\n], TabItem.prototype, \"disabled\", void 0);\n__decorate$7([\n Property(true)\n], TabItem.prototype, \"visible\", void 0);\n/**\n * Tab is a content panel to show multiple contents in a single space, one at a time.\n * Each Tab item has an associated content, that will be displayed based on the active Tab header item.\n * ```html\n *
      \n * \n * ```\n */\nlet Tab = class Tab extends Component {\n /**\n * Initializes a new instance of the Tab class.\n * @param options - Specifies Tab model properties as options.\n * @param element - Specifies the element that is rendered as a Tab.\n */\n constructor(options, element) {\n super(options, element);\n this.show = {};\n this.hide = {};\n this.maxHeight = 0;\n this.title = 'Close';\n this.lastIndex = 0;\n this.isAdd = false;\n this.isIconAlone = false;\n this.resizeContext = this.refreshActElePosition.bind(this);\n /**\n * Contains the keyboard configuration of the Tab.\n */\n this.keyConfigs = {\n tab: 'tab',\n home: 'home',\n end: 'end',\n enter: 'enter',\n space: 'space',\n delete: 'delete',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow'\n };\n }\n /**\n * Removes the component from the DOM and detaches all its related event handlers, attributes and classes.\n * @returns void\n */\n destroy() {\n if (!isNullOrUndefined(this.tbObj)) {\n this.tbObj.destroy();\n }\n this.unWireEvents();\n ['role', 'aria-disabled', 'aria-activedescendant', 'tabindex', 'aria-orientation'].forEach((val) => {\n this.element.removeAttribute(val);\n });\n this.expTemplateContent();\n if (!this.isTemplate) {\n while (this.element.firstElementChild) {\n remove(this.element.firstElementChild);\n }\n }\n else {\n let cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT$1, this.element);\n this.element.classList.remove(CLS_TEMPLATE$1);\n if (!isNullOrUndefined(cntEle)) {\n cntEle.innerHTML = this.cnt;\n }\n }\n super.destroy();\n this.trigger('destroyed');\n }\n /**\n * Refresh the tab component\n */\n refresh() {\n if (!this.isServerRendered) {\n super.refresh();\n }\n else if (this.isServerRendered && this.loadOn !== 'Dynamic') {\n this.setActiveBorder();\n }\n }\n /**\n * Initialize component\n * @private\n */\n preRender() {\n let nested = closest(this.element, '.' + CLS_CONTENT$1);\n this.prevIndex = 0;\n this.isNested = false;\n this.isPopup = false;\n this.initRender = true;\n this.isSwipeed = false;\n this.itemIndexArray = [];\n this.templateEle = [];\n if (!isNullOrUndefined(nested)) {\n nested.parentElement.classList.add(CLS_NEST$1);\n this.isNested = true;\n }\n let name = Browser.info.name;\n let css = (name === 'msie') ? 'e-ie' : (name === 'edge') ? 'e-edge' : (name === 'safari') ? 'e-safari' : '';\n setStyleAttribute(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.setCssClass(this.element, this.cssClass, true);\n attributes(this.element, { role: 'tablist', 'aria-disabled': 'false', 'aria-activedescendant': '' });\n this.setCssClass(this.element, css, true);\n this.updatePopAnimationConfig();\n }\n /**\n * Initialize the component rendering\n * @private\n */\n render() {\n this.btnCls = this.createElement('span', { className: CLS_ICONS + ' ' + CLS_ICON_CLOSE, attrs: { title: this.title } });\n this.tabId = this.element.id.length > 0 ? ('-' + this.element.id) : getRandomId();\n this.renderContainer();\n this.wireEvents();\n this.initRender = false;\n }\n renderContainer() {\n if (this.isServerRendered) {\n this.isTemplate = false;\n return;\n }\n let ele = this.element;\n if (this.items.length > 0 && ele.children.length === 0) {\n ele.appendChild(this.createElement('div', { className: CLS_CONTENT$1 }));\n this.setOrientation(this.headerPlacement, this.createElement('div', { className: CLS_HEADER$1 }));\n this.isTemplate = false;\n }\n else if (this.element.children.length > 0) {\n this.isTemplate = true;\n ele.classList.add(CLS_TEMPLATE$1);\n let header = ele.querySelector('.' + CLS_HEADER$1);\n if (header && this.headerPlacement === 'Bottom') {\n this.setOrientation(this.headerPlacement, header);\n }\n }\n if (!isNullOrUndefined(select('.' + CLS_HEADER$1, this.element)) && !isNullOrUndefined(select('.' + CLS_CONTENT$1, this.element))) {\n this.renderHeader();\n this.tbItems = select('.' + CLS_HEADER$1 + ' .' + CLS_TB_ITEMS, this.element);\n if (!isNullOrUndefined(this.tbItems)) {\n rippleEffect(this.tbItems, { selector: '.e-tab-wrap' });\n }\n this.renderContent();\n if (selectAll('.' + CLS_TB_ITEM, this.element).length > 0) {\n let scrCnt;\n this.tbItems = select('.' + CLS_HEADER$1 + ' .' + CLS_TB_ITEMS, this.element);\n this.bdrLine = this.createElement('div', { className: CLS_INDICATOR + ' ' + CLS_HIDDEN$1 + ' ' + CLS_IGNORE });\n scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!isNullOrUndefined(scrCnt)) {\n scrCnt.insertBefore(this.bdrLine, scrCnt.firstChild);\n }\n else {\n this.tbItems.insertBefore(this.bdrLine, this.tbItems.firstChild);\n }\n this.setContentHeight(true);\n this.select(this.selectedItem);\n }\n this.setRTL(this.enableRtl);\n }\n }\n serverItemsChanged() {\n this.enableAnimation = false;\n this.setActive(this.selectedItem, true);\n if (this.loadOn !== 'Dynamic' && !isNullOrUndefined(this.cntEle)) {\n let itemCollection = [].slice.call(this.cntEle.children);\n let content = CLS_CONTENT$1 + this.tabId + '_' + this.selectedItem;\n itemCollection.forEach((item) => {\n if (item.classList.contains(CLS_ACTIVE$1) && item.id !== content) {\n item.classList.remove(CLS_ACTIVE$1);\n }\n if (item.id === content) {\n item.classList.add(CLS_ACTIVE$1);\n }\n });\n this.prevIndex = this.selectedItem;\n this.triggerAnimation(CLS_ITEM$2 + this.tabId + '_' + this.selectedItem, false);\n }\n this.enableAnimation = true;\n }\n headerReady() {\n this.initRender = true;\n this.hdrEle = this.getTabHeader();\n this.setOrientation(this.headerPlacement, this.hdrEle);\n if (!isNullOrUndefined(this.hdrEle)) {\n this.tbObj = (this.hdrEle && this.hdrEle.ej2_instances[0]);\n }\n this.tbObj.clicked = this.clickHandler.bind(this);\n this.tbObj.on('onItemsChanged', this.serverItemsChanged.bind(this));\n this.tbItems = select('.' + CLS_HEADER$1 + ' .' + CLS_TB_ITEMS, this.element);\n if (!isNullOrUndefined(this.tbItems)) {\n rippleEffect(this.tbItems, { selector: '.e-tab-wrap' });\n }\n if (selectAll('.' + CLS_TB_ITEM, this.element).length > 0) {\n let scrollCnt;\n this.bdrLine = select('.' + CLS_INDICATOR + '.' + CLS_IGNORE, this.element);\n scrollCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!isNullOrUndefined(scrollCnt)) {\n scrollCnt.insertBefore(this.bdrLine, scrollCnt.firstElementChild);\n }\n else {\n this.tbItems.insertBefore(this.bdrLine, this.tbItems.firstElementChild);\n }\n this.select(this.selectedItem);\n }\n this.cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT$1, this.element);\n if (!isNullOrUndefined(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n if (this.loadOn === 'Demand') {\n let id = this.setActiveContent();\n this.triggerAnimation(id, false);\n }\n this.initRender = false;\n this.renderComplete();\n }\n setActiveContent() {\n let id = CLS_ITEM$2 + this.tabId + '_' + this.selectedItem;\n let item = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (!isNullOrUndefined(item)) {\n item.classList.add(CLS_ACTIVE$1);\n }\n return id;\n }\n renderHeader() {\n let hdrPlace = this.headerPlacement;\n let tabItems = [];\n this.hdrEle = this.getTabHeader();\n this.addVerticalClass();\n if (!this.isTemplate) {\n tabItems = this.parseObject(this.items, 0);\n }\n else {\n if (this.element.children.length > 1 && this.element.children[1].classList.contains(CLS_HEADER$1)) {\n this.setProperties({ headerPlacement: 'Bottom' }, true);\n }\n let count = this.hdrEle.children.length;\n let hdrItems = [];\n for (let i = 0; i < count; i++) {\n hdrItems.push(this.hdrEle.children.item(i).innerHTML);\n }\n if (count > 0) {\n while (this.hdrEle.firstElementChild) {\n detach(this.hdrEle.firstElementChild);\n }\n let tabItems = this.createElement('div', { className: CLS_ITEMS$1 });\n this.hdrEle.appendChild(tabItems);\n hdrItems.forEach((item, index) => {\n this.lastIndex = index;\n let attr = {\n className: CLS_ITEM$2, id: CLS_ITEM$2 + this.tabId + '_' + index,\n attrs: { role: 'tab', 'aria-controls': CLS_CONTENT$1 + this.tabId + '_' + index, 'aria-selected': 'false' }\n };\n let txt = this.createElement('span', {\n className: CLS_TEXT, innerHTML: item, attrs: { 'role': 'presentation' }\n }).outerHTML;\n let cont = this.createElement('div', {\n className: CLS_TEXT_WRAP, innerHTML: txt + this.btnCls.outerHTML\n }).outerHTML;\n let wrap = this.createElement('div', { className: CLS_WRAP, innerHTML: cont, attrs: { tabIndex: '-1' } });\n tabItems.appendChild(this.createElement('div', attr));\n selectAll('.' + CLS_ITEM$2, tabItems)[index].appendChild(wrap);\n });\n }\n }\n this.tbObj = new Toolbar({\n width: (hdrPlace === 'Left' || hdrPlace === 'Right') ? 'auto' : '100%',\n height: (hdrPlace === 'Left' || hdrPlace === 'Right') ? '100%' : 'auto',\n overflowMode: this.overflowMode,\n items: (tabItems.length !== 0) ? tabItems : [],\n clicked: this.clickHandler.bind(this),\n scrollStep: this.scrollStep,\n enableHtmlSanitizer: this.enableHtmlSanitizer\n });\n this.tbObj.isStringTemplate = true;\n this.tbObj.createElement = this.createElement;\n this.tbObj.appendTo(this.hdrEle);\n attributes(this.hdrEle, { 'aria-label': 'tab-header' });\n this.updateOrientationAttribute();\n this.setCloseButton(this.showCloseButton);\n }\n renderContent() {\n this.cntEle = select('.' + CLS_CONTENT$1, this.element);\n let hdrItem = selectAll('.' + CLS_TB_ITEM, this.element);\n if (this.isTemplate) {\n this.cnt = (this.cntEle.children.length > 0) ? this.cntEle.innerHTML : '';\n let contents = this.cntEle.children;\n for (let i = 0; i < hdrItem.length; i++) {\n if (contents.length - 1 >= i) {\n contents.item(i).className += CLS_ITEM$2;\n attributes(contents.item(i), { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM$2 + this.tabId + '_' + i });\n contents.item(i).id = CLS_CONTENT$1 + this.tabId + '_' + i;\n }\n }\n }\n }\n reRenderItems() {\n this.renderContainer();\n if (!isNullOrUndefined(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n }\n parseObject(items, index) {\n let tbCount = selectAll('.' + CLS_TB_ITEM, this.element).length;\n let tItems = [];\n let txtWrapEle;\n let spliceArray = [];\n items.forEach((item, i) => {\n let pos = (isNullOrUndefined(item.header) || isNullOrUndefined(item.header.iconPosition)) ? '' : item.header.iconPosition;\n let css = (isNullOrUndefined(item.header) || isNullOrUndefined(item.header.iconCss)) ? '' : item.header.iconCss;\n if ((isNullOrUndefined(item.headerTemplate)) && (isNullOrUndefined(item.header) || isNullOrUndefined(item.header.text) ||\n ((item.header.text.length === 0)) && (css === ''))) {\n spliceArray.push(i);\n return;\n }\n let txt = item.headerTemplate || item.header.text;\n if (typeof txt === 'string' && this.enableHtmlSanitizer) {\n txt = SanitizeHtmlHelper.sanitize(txt);\n }\n this.lastIndex = ((tbCount === 0) ? i : ((this.isReplace) ? (index + i) : (this.lastIndex + 1)));\n let disabled = (item.disabled) ? ' ' + CLS_DISABLE$4 + ' ' + CLS_OVERLAY$2 : '';\n let hidden = (item.visible === false) ? ' ' + CLS_HIDDEN$1 : '';\n txtWrapEle = this.createElement('div', { className: CLS_TEXT, attrs: { 'role': 'presentation' } });\n let tHtml = ((txt instanceof Object) ? txt.outerHTML : txt);\n let txtEmpty = (!isNullOrUndefined(tHtml) && tHtml !== '');\n if (!isNullOrUndefined(txt.tagName)) {\n txtWrapEle.appendChild(txt);\n }\n else {\n this.headerTextCompile(txtWrapEle, txt, i);\n }\n let tEle;\n let icon = this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n let tCont = this.createElement('div', { className: CLS_TEXT_WRAP });\n tCont.appendChild(txtWrapEle);\n if ((txt !== '' && txt !== undefined) && css !== '') {\n if ((pos === 'left' || pos === 'top')) {\n tCont.insertBefore(icon, tCont.firstElementChild);\n }\n else {\n tCont.appendChild(icon);\n }\n tEle = txtWrapEle;\n this.isIconAlone = false;\n }\n else {\n tEle = ((css === '') ? txtWrapEle : icon);\n if (tEle === icon) {\n detach(txtWrapEle);\n tCont.appendChild(icon);\n this.isIconAlone = true;\n }\n }\n let wrapAttrs = (item.disabled) ? {} : { tabIndex: '-1' };\n tCont.appendChild(this.btnCls.cloneNode(true));\n let wrap = this.createElement('div', { className: CLS_WRAP, attrs: wrapAttrs });\n wrap.appendChild(tCont);\n if (this.itemIndexArray === []) {\n this.itemIndexArray.push(CLS_ITEM$2 + this.tabId + '_' + this.lastIndex);\n }\n else {\n this.itemIndexArray.splice((index + i), 0, CLS_ITEM$2 + this.tabId + '_' + this.lastIndex);\n }\n let attrObj = {\n id: CLS_ITEM$2 + this.tabId + '_' + this.lastIndex, role: 'tab', 'aria-selected': 'false'\n };\n let tItem = { htmlAttributes: attrObj, template: wrap };\n tItem.cssClass = ((item.cssClass !== undefined) ? item.cssClass : ' ') + ' ' + disabled + ' ' + hidden\n + ((css !== '') ? 'e-i' + pos : '') + ' ' + ((!txtEmpty) ? CLS_ICON : '');\n if (pos === 'top' || pos === 'bottom') {\n this.element.classList.add('e-vertical-icon');\n }\n tItems.push(tItem);\n i++;\n });\n if (!this.isAdd) {\n spliceArray.forEach((spliceItemIndex) => {\n this.items.splice(spliceItemIndex, 1);\n });\n }\n (this.isIconAlone) ? this.element.classList.add(CLS_ICON_TAB) : this.element.classList.remove(CLS_ICON_TAB);\n return tItems;\n }\n removeActiveClass() {\n let tabHeader = this.getTabHeader();\n if (tabHeader) {\n let tabItems = selectAll('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE$1, tabHeader);\n [].slice.call(tabItems).forEach((node) => node.classList.remove(CLS_ACTIVE$1));\n }\n }\n checkPopupOverflow(ele) {\n this.tbPop = select('.' + CLS_TB_POP, this.element);\n let popIcon = select('.e-hor-nav', this.element);\n let tbrItems = select('.' + CLS_TB_ITEMS, this.element);\n let lastChild = tbrItems.lastChild;\n let isOverflow = false;\n if (!this.isVertical() && ((this.enableRtl && ((popIcon.offsetLeft + popIcon.offsetWidth) > tbrItems.offsetLeft))\n || (!this.enableRtl && popIcon.offsetLeft < tbrItems.offsetWidth))) {\n isOverflow = true;\n }\n else if (this.isVertical() && (popIcon.offsetTop < lastChild.offsetTop + lastChild.offsetHeight)) {\n isOverflow = true;\n }\n if (isOverflow) {\n ele.classList.add(CLS_TB_POPUP);\n this.tbPop.insertBefore(ele, selectAll('.' + CLS_TB_POPUP, this.tbPop)[0]);\n }\n return true;\n }\n popupHandler(target) {\n let ripEle = target.querySelector('.e-ripple-element');\n if (!isNullOrUndefined(ripEle)) {\n ripEle.outerHTML = '';\n target.querySelector('.' + CLS_WRAP).classList.remove('e-ripple');\n }\n this.tbItem = selectAll('.' + CLS_TB_ITEMS + ' .' + CLS_TB_ITEM, this.hdrEle);\n let lastChild = this.tbItem[this.tbItem.length - 1];\n if (this.tbItem.length !== 0) {\n target.classList.remove(CLS_TB_POPUP);\n target.removeAttribute('style');\n this.tbItems.appendChild(target);\n this.actEleId = target.id;\n if (this.checkPopupOverflow(lastChild)) {\n let prevEle = this.tbItems.lastChild.previousElementSibling;\n this.checkPopupOverflow(prevEle);\n }\n this.isPopup = true;\n }\n return selectAll('.' + CLS_TB_ITEM, this.tbItems).length - 1;\n }\n updateOrientationAttribute() {\n attributes(this.element, { 'aria-orientation': (this.isVertical() ? 'vertical' : 'horizontal') });\n }\n setCloseButton(val) {\n let trg = select('.' + CLS_HEADER$1, this.element);\n (val === true) ? trg.classList.add(CLS_CLOSE_SHOW) : trg.classList.remove(CLS_CLOSE_SHOW);\n this.tbObj.refreshOverflow();\n this.refreshActElePosition();\n }\n prevCtnAnimation(prev, current) {\n let animation;\n let checkRTL = this.enableRtl || this.element.classList.contains(CLS_RTL$4);\n if (this.isPopup || prev <= current) {\n if (this.animation.previous.effect === 'SlideLeftIn') {\n animation = {\n name: 'SlideLeftOut',\n duration: this.animation.previous.duration, timingFunction: this.animation.previous.easing\n };\n }\n else {\n animation = null;\n }\n }\n else {\n if (this.animation.next.effect === 'SlideRightIn') {\n animation = {\n name: 'SlideRightOut',\n duration: this.animation.next.duration, timingFunction: this.animation.next.easing\n };\n }\n else {\n animation = null;\n }\n }\n return animation;\n }\n triggerPrevAnimation(oldCnt, prevIndex) {\n let animateObj = this.prevCtnAnimation(prevIndex, this.selectedItem);\n if (!isNullOrUndefined(animateObj)) {\n animateObj.begin = () => {\n setStyleAttribute(oldCnt, { 'position': 'absolute' });\n oldCnt.classList.add(CLS_PROGRESS);\n oldCnt.classList.add('e-view');\n };\n animateObj.end = () => {\n oldCnt.style.display = 'none';\n oldCnt.classList.remove(CLS_ACTIVE$1);\n oldCnt.classList.remove(CLS_PROGRESS);\n oldCnt.classList.remove('e-view');\n setStyleAttribute(oldCnt, { 'display': '', 'position': '' });\n if (oldCnt.childNodes.length === 0 && !this.isTemplate) {\n detach(oldCnt);\n }\n };\n new Animation(animateObj).animate(oldCnt);\n }\n else {\n oldCnt.classList.remove(CLS_ACTIVE$1);\n }\n }\n triggerAnimation(id, value) {\n let prevIndex = this.prevIndex;\n let oldCnt;\n let newCnt;\n if (!this.isServerRendered || (this.isServerRendered && this.loadOn !== 'Dynamic')) {\n let itemCollection = [].slice.call(this.element.querySelector('.' + CLS_CONTENT$1).children);\n itemCollection.forEach((item) => {\n if (item.id === this.prevActiveEle) {\n oldCnt = item;\n }\n });\n let prevEle = this.tbItem[prevIndex];\n newCnt = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNullOrUndefined(oldCnt) && !isNullOrUndefined(prevEle)) {\n let idNo = this.extIndex(prevEle.id);\n oldCnt = this.getTrgContent(this.cntEle, idNo);\n }\n }\n else {\n newCnt = this.cntEle.firstElementChild;\n }\n if (!isNullOrUndefined(newCnt)) {\n this.prevActiveEle = newCnt.id;\n }\n if (this.initRender || value === false || this.animation === {} || isNullOrUndefined(this.animation)) {\n if (oldCnt && oldCnt !== newCnt) {\n oldCnt.classList.remove(CLS_ACTIVE$1);\n }\n return;\n }\n let cnt = select('.' + CLS_CONTENT$1, this.element);\n let animateObj;\n if (this.prevIndex > this.selectedItem && !this.isPopup) {\n let openEff = this.animation.previous.effect;\n animateObj = {\n name: ((openEff === 'None') ? '' : ((openEff !== 'SlideLeftIn') ? openEff : 'SlideLeftIn')),\n duration: this.animation.previous.duration,\n timingFunction: this.animation.previous.easing\n };\n }\n else if (this.isPopup || this.prevIndex < this.selectedItem || this.prevIndex === this.selectedItem) {\n let clsEff = this.animation.next.effect;\n animateObj = {\n name: ((clsEff === 'None') ? '' : ((clsEff !== 'SlideRightIn') ? clsEff : 'SlideRightIn')),\n duration: this.animation.next.duration,\n timingFunction: this.animation.next.easing\n };\n }\n animateObj.progress = () => {\n cnt.classList.add(CLS_PROGRESS);\n this.setActiveBorder();\n };\n animateObj.end = () => {\n cnt.classList.remove(CLS_PROGRESS);\n newCnt.classList.add(CLS_ACTIVE$1);\n };\n if (!this.initRender && !isNullOrUndefined(oldCnt)) {\n this.triggerPrevAnimation(oldCnt, prevIndex);\n }\n this.isPopup = false;\n if (animateObj.name === '') {\n newCnt.classList.add(CLS_ACTIVE$1);\n }\n else {\n new Animation(animateObj).animate(newCnt);\n }\n }\n keyPressed(trg) {\n let trgParent = closest(trg, '.' + CLS_HEADER$1 + ' .' + CLS_TB_ITEM);\n let trgIndex = this.getEleIndex(trgParent);\n if (!isNullOrUndefined(this.popEle) && trg.classList.contains('e-hor-nav')) {\n (this.popEle.classList.contains(CLS_POPUP_OPEN)) ? this.popObj.hide(this.hide) : this.popObj.show(this.show);\n }\n else if (trg.classList.contains('e-scroll-nav')) {\n trg.click();\n }\n else {\n if (!isNullOrUndefined(trgParent) && trgParent.classList.contains(CLS_ACTIVE$1) === false) {\n this.select(trgIndex);\n if (!isNullOrUndefined(this.popEle)) {\n this.popObj.hide(this.hide);\n }\n }\n }\n }\n getTabHeader() {\n let headers = [].slice.call(this.element.children).filter((e) => e.classList.contains(CLS_HEADER$1));\n if (headers.length > 0) {\n return headers[0];\n }\n else {\n let wrap = [].slice.call(this.element.children).filter((e) => !e.classList.contains(CLS_BLA_TEM))[0];\n if (!wrap) {\n return undefined;\n }\n return [].slice.call(wrap.children).filter((e) => e.classList.contains(CLS_HEADER$1))[0];\n }\n }\n getEleIndex(item) {\n return Array.prototype.indexOf.call(selectAll('.' + CLS_TB_ITEM, this.getTabHeader()), item);\n }\n extIndex(id) {\n return id.replace(CLS_ITEM$2 + this.tabId + '_', '');\n }\n expTemplateContent() {\n this.templateEle.forEach((eleStr) => {\n if (!isNullOrUndefined(this.element.querySelector(eleStr))) {\n document.body.appendChild(this.element.querySelector(eleStr)).style.display = 'none';\n }\n });\n }\n templateCompile(ele, cnt, index) {\n let tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content', index);\n if (tempEle.childNodes.length !== 0) {\n ele.appendChild(tempEle);\n }\n }\n compileElement(ele, val, prop, index) {\n let templateFn;\n if (typeof val === 'string' && isBlazor() && val.indexOf('
      Blazor') !== 0) {\n val = val.trim();\n ele.innerHTML = SanitizeHtmlHelper.sanitize(val);\n }\n else {\n templateFn = compile(val);\n }\n let templateFUN;\n if (!isNullOrUndefined(templateFn)) {\n if (isBlazor() && !this.isStringTemplate && val.indexOf('
      Blazor') === 0) {\n templateFUN = templateFn({}, this, prop, this.element.id + index + '_' + prop, this.isStringTemplate);\n }\n else {\n templateFUN = templateFn({}, this, prop);\n }\n }\n if (!isNullOrUndefined(templateFn) && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach((el) => {\n ele.appendChild(el);\n });\n }\n }\n headerTextCompile(element, text, index) {\n this.compileElement(element, text, 'headerTemplate', index);\n }\n getContent(ele, cnt, callType, index) {\n let eleStr;\n if (typeof cnt === 'string' || isNullOrUndefined(cnt.innerHTML)) {\n if (typeof cnt === 'string' && this.enableHtmlSanitizer) {\n cnt = SanitizeHtmlHelper.sanitize(cnt);\n }\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n let eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n if (callType === 'clone') {\n ele.appendChild(eleVal.cloneNode(true));\n }\n else {\n ele.appendChild(eleVal);\n eleVal.style.display = '';\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n ele.appendChild(cnt);\n }\n if (!isNullOrUndefined(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n }\n getTrgContent(cntEle, no) {\n let ele;\n if (this.element.classList.contains(CLS_NEST$1)) {\n ele = select('.' + CLS_NEST$1 + '> .' + CLS_CONTENT$1 + ' > #' + CLS_CONTENT$1 + this.tabId + '_' + no, this.element);\n }\n else {\n ele = this.findEle(cntEle.children, CLS_CONTENT$1 + this.tabId + '_' + no);\n }\n return ele;\n }\n findEle(items, key) {\n let ele;\n for (let i = 0; i < items.length; i++) {\n if (items[i].id === key) {\n ele = items[i];\n break;\n }\n }\n return ele;\n }\n isVertical() {\n let isVertical = (this.headerPlacement === 'Left' || this.headerPlacement === 'Right') ? true : false;\n this.scrCntClass = (isVertical) ? CLS_VSCRCNT : CLS_HSCRCNT;\n return isVertical;\n }\n addVerticalClass() {\n if (this.isVertical()) {\n let tbPos = (this.headerPlacement === 'Left') ? CLS_VLEFT : CLS_VRIGHT;\n addClass([this.hdrEle], [CLS_VERTICAL$1, tbPos]);\n if (!this.element.classList.contains(CLS_NEST$1)) {\n addClass([this.element], [CLS_VTAB, tbPos]);\n }\n else {\n addClass([this.hdrEle], [CLS_VTAB, tbPos]);\n }\n }\n if (this.headerPlacement === 'Bottom') {\n addClass([this.hdrEle], [CLS_HBOTTOM]);\n }\n }\n updatePopAnimationConfig() {\n this.show = { name: (this.isVertical() ? 'FadeIn' : 'SlideDown'), duration: 100 };\n this.hide = { name: (this.isVertical() ? 'FadeOut' : 'SlideUp'), duration: 100 };\n }\n changeOrientation(place) {\n this.setOrientation(place, this.hdrEle);\n let isVertical = this.hdrEle.classList.contains(CLS_VERTICAL$1) ? true : false;\n removeClass([this.element], [CLS_VTAB]);\n removeClass([this.hdrEle], [CLS_VERTICAL$1, CLS_VLEFT, CLS_VRIGHT]);\n if (isVertical !== this.isVertical()) {\n this.changeToolbarOrientation();\n }\n this.addVerticalClass();\n this.updateOrientationAttribute();\n this.setActiveBorder();\n this.focusItem();\n }\n focusItem() {\n let curActItem = select(' #' + CLS_ITEM$2 + this.tabId + '_' + this.selectedItem, this.hdrEle);\n if (!isNullOrUndefined(curActItem)) {\n curActItem.firstElementChild.focus();\n }\n }\n serverChangeOrientation(newProp, oldProp) {\n this.setOrientation(newProp, this.hdrEle);\n removeClass([this.element], [CLS_VTAB]);\n let newValue = newProp === 'Left' || newProp === 'Right';\n let oldValue = oldProp === 'Left' || oldProp === 'Right';\n if (newValue !== oldValue) {\n this.changeToolbarOrientation();\n }\n if (this.isVertical()) {\n addClass([this.element], [CLS_VTAB]);\n }\n this.updateOrientationAttribute();\n this.setActiveBorder();\n this.focusItem();\n }\n changeToolbarOrientation() {\n this.tbObj.setProperties({ height: (this.isVertical() ? '100%' : 'auto'), width: (this.isVertical() ? 'auto' : '100%') }, true);\n this.tbObj.changeOrientation();\n this.updatePopAnimationConfig();\n }\n setOrientation(place, ele) {\n let headerPos = Array.prototype.indexOf.call(this.element.children, ele);\n let contentPos = Array.prototype.indexOf.call(this.element.children, this.element.querySelector('.' + CLS_CONTENT$1));\n if (place === 'Bottom' && (contentPos > headerPos)) {\n this.element.appendChild(ele);\n }\n else {\n removeClass([ele], [CLS_HBOTTOM]);\n this.element.insertBefore(ele, select('.' + CLS_CONTENT$1, this.element));\n }\n }\n setCssClass(ele, cls, val) {\n if (cls === '') {\n return;\n }\n let list = cls.split(' ');\n for (let i = 0; i < list.length; i++) {\n if (val) {\n ele.classList.add(list[i]);\n }\n else {\n ele.classList.remove(list[i]);\n }\n }\n }\n setContentHeight(val) {\n if (this.element.classList.contains(CLS_FILL)) {\n removeClass([this.element], [CLS_FILL]);\n }\n if (isNullOrUndefined(this.cntEle)) {\n return;\n }\n let hdrEle = this.getTabHeader();\n if (this.heightAdjustMode === 'None') {\n if (this.height === 'auto') {\n return;\n }\n else {\n if (!this.isVertical()) {\n setStyleAttribute(this.cntEle, { 'height': (this.element.offsetHeight - hdrEle.offsetHeight) + 'px' });\n }\n }\n }\n else if (this.heightAdjustMode === 'Fill') {\n addClass([this.element], [CLS_FILL]);\n setStyleAttribute(this.element, { 'height': '100%' });\n setStyleAttribute(this.cntEle, { 'height': '100%' });\n }\n else if (this.heightAdjustMode === 'Auto') {\n if (this.isTemplate === true) {\n let cnt = selectAll('.' + CLS_CONTENT$1 + ' > .' + CLS_ITEM$2, this.element);\n for (let i = 0; i < cnt.length; i++) {\n cnt[i].setAttribute('style', 'display:block; visibility: visible');\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(cnt[i]));\n cnt[i].style.removeProperty('display');\n cnt[i].style.removeProperty('visibility');\n }\n }\n else {\n this.cntEle = select('.' + CLS_CONTENT$1, this.element);\n if (val === true) {\n this.cntEle.appendChild(this.createElement('div', {\n id: (CLS_CONTENT$1 + this.tabId + '_' + 0), className: CLS_ITEM$2 + ' ' + CLS_ACTIVE$1,\n attrs: { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM$2 + this.tabId + '_' + 0 }\n }));\n }\n let ele = this.cntEle.children.item(0);\n for (let i = 0; i < this.items.length; i++) {\n this.getContent(ele, this.items[i].content, 'clone', i);\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(ele));\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild);\n }\n }\n this.clearTemplate(['content']);\n this.templateEle = [];\n this.getContent(ele, this.items[0].content, 'render', 0);\n ele.classList.remove(CLS_ACTIVE$1);\n }\n setStyleAttribute(this.cntEle, { 'height': this.maxHeight + 'px' });\n }\n else {\n setStyleAttribute(this.cntEle, { 'height': 'auto' });\n }\n }\n getHeight(ele) {\n let cs = window.getComputedStyle(ele);\n return ele.offsetHeight + parseFloat(cs.getPropertyValue('padding-top')) + parseFloat(cs.getPropertyValue('padding-bottom')) +\n parseFloat(cs.getPropertyValue('margin-top')) + parseFloat(cs.getPropertyValue('margin-bottom'));\n }\n setActiveBorder() {\n let bar;\n let scrollCnt;\n let trgHdrEle = this.getTabHeader();\n let trg = select('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE$1, trgHdrEle);\n if (trg === null) {\n return;\n }\n if (this.isServerRendered && trg.classList.contains(CLS_TB_POPUP)) {\n this.popupHandler(trg);\n }\n let root = closest(trg, '.' + CLS_TAB);\n if (this.element !== root) {\n return;\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, trgHdrEle);\n bar = select('.' + CLS_INDICATOR, trgHdrEle);\n scrollCnt = select('.' + CLS_TB_ITEMS + ' .' + this.scrCntClass, trgHdrEle);\n if (this.isVertical()) {\n setStyleAttribute(bar, { 'left': '', 'right': '' });\n let tbHeight = (isNullOrUndefined(scrollCnt)) ? this.tbItems.offsetHeight : scrollCnt.offsetHeight;\n if (tbHeight !== 0) {\n setStyleAttribute(bar, { 'top': trg.offsetTop + 'px', 'height': trg.offsetHeight + 'px' });\n }\n else {\n setStyleAttribute(bar, { 'top': 0, 'height': 0 });\n }\n }\n else {\n setStyleAttribute(bar, { 'top': '', 'height': '' });\n let tbWidth = (isNullOrUndefined(scrollCnt)) ? this.tbItems.offsetWidth : scrollCnt.offsetWidth;\n if (tbWidth !== 0) {\n setStyleAttribute(bar, { 'left': trg.offsetLeft + 'px', 'right': tbWidth - (trg.offsetLeft + trg.offsetWidth) + 'px' });\n }\n else {\n setStyleAttribute(bar, { 'left': 'auto', 'right': 'auto' });\n }\n }\n if (!isNullOrUndefined(this.bdrLine)) {\n this.bdrLine.classList.remove(CLS_HIDDEN$1);\n }\n }\n setActive(value, skipDataBind = false) {\n this.tbItem = selectAll('.' + CLS_TB_ITEM, this.getTabHeader());\n let trg = this.tbItem[value];\n if (this.isServerRendered && trg) {\n value = parseInt(trg.getAttribute('data-index'), 10);\n }\n if (value < 0 || isNaN(value) || this.tbItem.length === 0) {\n return;\n }\n if (value >= 0 && !skipDataBind) {\n this.allowServerDataBinding = false;\n this.setProperties({ selectedItem: value }, true);\n this.allowServerDataBinding = true;\n if (!this.initRender) {\n this.serverDataBind();\n }\n }\n if (trg.classList.contains(CLS_ACTIVE$1)) {\n this.setActiveBorder();\n return;\n }\n if (!this.isTemplate) {\n let prev = this.tbItem[this.prevIndex];\n if (!isNullOrUndefined(prev)) {\n prev.removeAttribute('aria-controls');\n }\n attributes(trg, { 'aria-controls': CLS_CONTENT$1 + this.tabId + '_' + value });\n }\n let id = trg.id;\n this.removeActiveClass();\n trg.classList.add(CLS_ACTIVE$1);\n trg.setAttribute('aria-selected', 'true');\n let no = Number(this.extIndex(id));\n if (isNullOrUndefined(this.prevActiveEle)) {\n this.prevActiveEle = CLS_CONTENT$1 + this.tabId + '_' + no;\n }\n attributes(this.element, { 'aria-activedescendant': id });\n if (this.isTemplate) {\n if (select('.' + CLS_CONTENT$1, this.element).children.length > 0) {\n let trg = this.findEle(select('.' + CLS_CONTENT$1, this.element).children, CLS_CONTENT$1 + this.tabId + '_' + no);\n if (!isNullOrUndefined(trg)) {\n trg.classList.add(CLS_ACTIVE$1);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n }\n else if (!this.isServerRendered || (this.isServerRendered && this.loadOn === 'Init')) {\n this.cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT$1, this.element);\n let item = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNullOrUndefined(item)) {\n this.cntEle.appendChild(this.createElement('div', {\n id: CLS_CONTENT$1 + this.tabId + '_' + this.extIndex(id), className: CLS_ITEM$2 + ' ' + CLS_ACTIVE$1,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM$2 + this.tabId + '_' + this.extIndex(id) }\n }));\n let eleTrg = this.getTrgContent(this.cntEle, this.extIndex(id));\n let itemIndex = Array.prototype.indexOf.call(this.itemIndexArray, id);\n this.getContent(eleTrg, this.items[itemIndex].content, 'render', itemIndex);\n }\n else {\n item.classList.add(CLS_ACTIVE$1);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n this.setActiveBorder();\n this.refreshItemVisibility(trg);\n if (!this.initRender && !skipDataBind) {\n trg.firstElementChild.focus();\n let eventArg = {\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: trg,\n selectedIndex: value,\n selectedContent: select('#' + CLS_CONTENT$1 + this.tabId + '_' + this.selectingID, this.content),\n isSwiped: this.isSwipeed\n };\n this.trigger('selected', eventArg);\n }\n }\n contentReady() {\n let id = this.setActiveContent();\n this.triggerAnimation(id, this.enableAnimation);\n }\n setItems(items) {\n this.isReplace = true;\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.tbObj.items = this.parseObject(items, 0);\n this.tbObj.dataBind();\n this.isReplace = false;\n }\n setRTL(value) {\n this.tbObj.enableRtl = value;\n this.tbObj.dataBind();\n this.setCssClass(this.element, CLS_RTL$4, value);\n this.refreshActiveBorder();\n }\n refreshActiveBorder() {\n if (!isNullOrUndefined(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN$1);\n }\n this.setActiveBorder();\n }\n showPopup(config) {\n let tbPop = select('.e-popup.e-toolbar-pop', this.hdrEle);\n if (tbPop.classList.contains('e-popup-close')) {\n let tbPopObj = (tbPop && tbPop.ej2_instances[0]);\n tbPopObj.position.X = (this.headerPlacement === 'Left') ? 'left' : 'right';\n tbPopObj.dataBind();\n tbPopObj.show(config);\n }\n }\n wireEvents() {\n window.addEventListener('resize', this.resizeContext);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'keydown', this.spaceKeyDown, this);\n if (!isNullOrUndefined(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n this.keyModule = new KeyboardEvents(this.element, { keyAction: this.keyHandler.bind(this), keyConfigs: this.keyConfigs });\n this.tabKeyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyHandler.bind(this),\n keyConfigs: { openPopup: 'shift+f10', tab: 'tab', shiftTab: 'shift+tab' },\n eventName: 'keydown'\n });\n }\n unWireEvents() {\n this.keyModule.destroy();\n this.tabKeyModule.destroy();\n if (!isNullOrUndefined(this.cntEle)) {\n this.touchModule.destroy();\n }\n window.removeEventListener('resize', this.resizeContext);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'keydown', this.spaceKeyDown);\n this.element.classList.remove(CLS_RTL$4);\n this.element.classList.remove(CLS_FOCUS);\n }\n clickHandler(args) {\n this.element.classList.remove(CLS_FOCUS);\n let trg = args.originalEvent.target;\n let trgParent = closest(trg, '.' + CLS_TB_ITEM);\n let trgIndex = this.getEleIndex(trgParent);\n if (trg.classList.contains(CLS_ICON_CLOSE)) {\n this.removeTab(trgIndex);\n }\n else if (this.isVertical() && closest(trg, '.' + CLS_HOR_NAV)) {\n this.showPopup(this.show);\n }\n else {\n this.isPopup = false;\n if (this.isServerRendered && !isNullOrUndefined(trgParent)) {\n if (parseInt(trgParent.getAttribute('data-index'), 10) !== this.selectedItem) {\n this.select(trgIndex);\n }\n }\n else if (!isNullOrUndefined(trgParent) && (trgIndex !== this.selectedItem || trgIndex !== this.prevIndex)) {\n this.select(trgIndex);\n }\n }\n }\n swipeHandler(e) {\n if (e.velocity < 3 && isNullOrUndefined(e.originalEvent.changedTouches)) {\n return;\n }\n if (e.originalEvent) {\n e.originalEvent.stopPropagation();\n }\n this.isSwipeed = true;\n if (e.swipeDirection === 'Right' && this.selectedItem !== 0) {\n for (let k = this.selectedItem - 1; k >= 0; k--) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN$1)) {\n this.select(k);\n break;\n }\n }\n }\n else if (e.swipeDirection === 'Left' && (this.selectedItem !== selectAll('.' + CLS_TB_ITEM, this.element).length - 1)) {\n for (let i = this.selectedItem + 1; i < this.tbItem.length; i++) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN$1)) {\n this.select(i);\n break;\n }\n }\n }\n this.isSwipeed = false;\n }\n spaceKeyDown(e) {\n if ((e.keyCode === 32 && e.which === 32) || (e.keyCode === 35 && e.which === 35)) {\n let clstHead = closest(e.target, '.' + CLS_HEADER$1);\n if (!isNullOrUndefined(clstHead)) {\n e.preventDefault();\n }\n }\n }\n keyHandler(e) {\n if (this.element.classList.contains(CLS_DISABLE$4)) {\n return;\n }\n this.element.classList.add(CLS_FOCUS);\n let trg = e.target;\n let tabHeader = this.getTabHeader();\n let actEle = select('.' + CLS_ACTIVE$1, tabHeader);\n this.popEle = select('.' + CLS_TB_POP, tabHeader);\n if (!isNullOrUndefined(this.popEle)) {\n this.popObj = this.popEle.ej2_instances[0];\n }\n switch (e.action) {\n case 'space':\n case 'enter':\n if (trg.parentElement.classList.contains(CLS_DISABLE$4)) {\n return;\n }\n if (e.action === 'enter' && trg.classList.contains('e-hor-nav')) {\n this.showPopup(this.show);\n break;\n }\n this.keyPressed(trg);\n break;\n case 'tab':\n case 'shiftTab':\n if (trg.classList.contains(CLS_WRAP)\n && closest(trg, '.' + CLS_TB_ITEM).classList.contains(CLS_ACTIVE$1) === false) {\n trg.setAttribute('tabindex', '-1');\n }\n if (this.popObj && isVisible(this.popObj.element)) {\n this.popObj.hide(this.hide);\n }\n actEle.children.item(0).setAttribute('tabindex', '0');\n break;\n case 'moveLeft':\n case 'moveRight':\n let item = closest(document.activeElement, '.' + CLS_TB_ITEM);\n if (!isNullOrUndefined(item)) {\n this.refreshItemVisibility(item);\n }\n break;\n case 'openPopup':\n e.preventDefault();\n if (!isNullOrUndefined(this.popEle) && this.popEle.classList.contains(CLS_POPUP_CLOSE)) {\n this.popObj.show(this.show);\n }\n break;\n case 'delete':\n let trgParent = closest(trg, '.' + CLS_TB_ITEM);\n if (this.showCloseButton === true && !isNullOrUndefined(trgParent)) {\n let nxtSib = trgParent.nextSibling;\n if (!isNullOrUndefined(nxtSib) && nxtSib.classList.contains(CLS_TB_ITEM)) {\n nxtSib.firstElementChild.focus();\n }\n this.removeTab(this.getEleIndex(trgParent));\n }\n this.setActiveBorder();\n break;\n }\n }\n refreshActElePosition() {\n let activeEle = select('.' + CLS_TB_ITEM + '.' + CLS_TB_POPUP + '.' + CLS_ACTIVE$1, this.element);\n if (!isNullOrUndefined(activeEle)) {\n this.select(this.getEleIndex(activeEle));\n }\n this.refreshActiveBorder();\n }\n refreshItemVisibility(target) {\n let scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!this.isVertical() && !isNullOrUndefined(scrCnt)) {\n let scrBar = select('.e-hscroll-bar', this.tbItems);\n let scrStart = scrBar.scrollLeft;\n let scrEnd = scrStart + scrBar.offsetWidth;\n let eleStart = target.offsetLeft;\n let eleWidth = target.offsetWidth;\n let eleEnd = target.offsetLeft + target.offsetWidth;\n if ((scrStart < eleStart) && (scrEnd < eleEnd)) {\n let eleViewRange = scrEnd - eleStart;\n scrBar.scrollLeft = scrStart + (eleWidth - eleViewRange);\n }\n else {\n if ((scrStart > eleStart) && (scrEnd > eleEnd)) {\n let eleViewRange = eleEnd - scrStart;\n scrBar.scrollLeft = scrStart - (eleWidth - eleViewRange);\n }\n }\n }\n else {\n return;\n }\n }\n hoverHandler(e) {\n let trg = e.target;\n if (!isNullOrUndefined(trg.classList) && trg.classList.contains(CLS_ICON_CLOSE)) {\n trg.setAttribute('title', new L10n('tab', { closeButtonTitle: this.title }, this.locale).getConstant('closeButtonTitle'));\n }\n }\n evalOnPropertyChangeItems(newProp, oldProp) {\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n let changedProp = Object.keys(newProp.items);\n for (let i = 0; i < changedProp.length; i++) {\n let index = parseInt(Object.keys(newProp.items)[i], 10);\n let property = Object.keys(newProp.items[index])[0];\n let oldVal = Object(oldProp.items[index])[property];\n let newVal = Object(newProp.items[index])[property];\n let hdrItem = select('.' + CLS_TB_ITEMS + ' #' + CLS_ITEM$2 + this.tabId + '_' + index, this.element);\n let cntItem = select('.' + CLS_CONTENT$1 + ' #' + CLS_CONTENT$1 + this.tabId + '_' + index, this.element);\n if (property === 'header' || property === 'headerTemplate') {\n let icon = (isNullOrUndefined(this.items[index].header) ||\n isNullOrUndefined(this.items[index].header.iconCss)) ? '' : this.items[index].header.iconCss;\n let textVal = this.items[index].headerTemplate || this.items[index].header.text;\n if ((textVal === '') && (icon === '')) {\n this.removeTab(index);\n }\n else {\n let arr = [];\n arr.push(this.items[index]);\n this.items.splice(index, 1);\n this.itemIndexArray.splice(index, 1);\n this.tbObj.items.splice(index, 1);\n let isHiddenEle = hdrItem.classList.contains(CLS_HIDDEN$1);\n detach(hdrItem);\n this.isReplace = true;\n this.addTab(arr, index);\n if (isHiddenEle) {\n this.hideTab(index);\n }\n this.isReplace = false;\n }\n }\n if (property === 'content' && !isNullOrUndefined(cntItem)) {\n let strVal = typeof newVal === 'string' || isNullOrUndefined(newVal.innerHTML);\n if (strVal && (newVal[0] === '.' || newVal[0] === '#') && newVal.length) {\n let eleVal = document.querySelector(newVal);\n cntItem.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else if (newVal === '' && oldVal[0] === '#') {\n document.body.appendChild(this.element.querySelector(oldVal)).style.display = 'none';\n cntItem.innerHTML = newVal;\n }\n else {\n cntItem.innerHTML = newVal;\n }\n }\n if (property === 'cssClass') {\n if (!isNullOrUndefined(hdrItem)) {\n hdrItem.classList.remove(oldVal);\n hdrItem.classList.add(newVal);\n }\n if (!isNullOrUndefined(cntItem)) {\n cntItem.classList.remove(oldVal);\n cntItem.classList.add(newVal);\n }\n }\n if (property === 'disabled') {\n this.enableTab(index, ((newVal === true) ? false : true));\n }\n if (property === 'visible') {\n this.hideTab(index, ((newVal === true) ? false : true));\n }\n }\n }\n else {\n this.lastIndex = 0;\n if (isNullOrUndefined(this.tbObj)) {\n this.reRenderItems();\n }\n else {\n this.setItems(newProp.items);\n if (this.templateEle.length > 0) {\n this.expTemplateContent();\n }\n this.templateEle = [];\n let selectElement = select('.' + CLS_TAB + ' > .' + CLS_CONTENT$1, this.element);\n while (selectElement.firstElementChild && !isBlazor()) {\n detach(selectElement.firstElementChild);\n }\n this.select(this.selectedItem);\n }\n }\n }\n /**\n * Enables or disables the specified Tab item. On passing value as `false`, the item will be disabled.\n * @param {number} index - Index value of target Tab item.\n * @param {boolean} value - Boolean value that determines whether the command should be enabled or disabled.\n * By default, isEnable is true.\n * @returns void.\n */\n enableTab(index, value) {\n let tbItems = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNullOrUndefined(tbItems)) {\n return;\n }\n if (value === true) {\n tbItems.classList.remove(CLS_DISABLE$4, CLS_OVERLAY$2);\n tbItems.firstElementChild.setAttribute('tabindex', '-1');\n }\n else {\n tbItems.classList.add(CLS_DISABLE$4, CLS_OVERLAY$2);\n tbItems.firstElementChild.removeAttribute('tabindex');\n if (tbItems.classList.contains(CLS_ACTIVE$1)) {\n this.select(index + 1);\n }\n }\n if (!isNullOrUndefined(this.items[index])) {\n this.items[index].disabled = !value;\n this.dataBind();\n }\n tbItems.setAttribute('aria-disabled', (value === true) ? 'false' : 'true');\n }\n /**\n * Adds new items to the Tab that accepts an array as Tab items.\n * @param {TabItemsModel[]} items - An array of item that is added to the Tab.\n * @param {number} index - Number value that determines where the items to be added. By default, index is 0.\n * @returns void.\n * @deprecated\n */\n addTab(items, index) {\n let addArgs = { addedItems: items, cancel: false };\n if (!this.isReplace) {\n this.trigger('adding', addArgs, (tabAddingArgs) => {\n if (!tabAddingArgs.cancel) {\n this.addingTabContent(items, index);\n }\n });\n }\n else {\n this.addingTabContent(items, index);\n }\n }\n addingTabContent(items, index) {\n let lastEleIndex = 0;\n this.hdrEle = select('.' + CLS_HEADER$1, this.element);\n if (isNullOrUndefined(this.hdrEle)) {\n this.items = items;\n this.reRenderItems();\n }\n else {\n let itemsCount = selectAll('.' + CLS_TB_ITEM, this.element).length;\n if (itemsCount !== 0) {\n lastEleIndex = this.lastIndex + 1;\n }\n if (isNullOrUndefined(index)) {\n index = itemsCount - 1;\n }\n if (itemsCount < index || index < 0 || isNaN(index)) {\n return;\n }\n if (itemsCount === 0 && !isNullOrUndefined(this.hdrEle)) {\n this.hdrEle.style.display = '';\n }\n if (!isNullOrUndefined(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN$1);\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.isAdd = true;\n let tabItems = this.parseObject(items, index);\n this.isAdd = false;\n let i = 0;\n let textValue;\n items.forEach((item, place) => {\n textValue = item.headerTemplate || item.header.text;\n if (!(isNullOrUndefined(item.headerTemplate || item.header) ||\n isNullOrUndefined(textValue) || (textValue.length === 0) && isNullOrUndefined(item.header.iconCss))) {\n this.items.splice((index + i), 0, item);\n i++;\n }\n if (this.isTemplate && !isNullOrUndefined(item.header) && !isNullOrUndefined(item.header.text)) {\n let no = lastEleIndex + place;\n let ele = this.createElement('div', {\n id: CLS_CONTENT$1 + this.tabId + '_' + no, className: CLS_ITEM$2,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM$2 + '_' + no }\n });\n this.cntEle.insertBefore(ele, this.cntEle.children[(index + place)]);\n let eleTrg = this.getTrgContent(this.cntEle, no.toString());\n this.getContent(eleTrg, item.content, 'render', index);\n }\n });\n this.tbObj.addItems(tabItems, index);\n if (!this.isReplace) {\n this.trigger('added', { addedItems: items });\n }\n if (this.selectedItem === index) {\n this.select(index);\n }\n else {\n this.setActiveBorder();\n }\n }\n }\n /**\n * Removes the items in the Tab from the specified index.\n * @param {number} index - Index of target item that is going to be removed.\n * @returns void.\n * @deprecated\n */\n removeTab(index) {\n let trg = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNullOrUndefined(trg)) {\n return;\n }\n let removeArgs = { removedItem: trg, removedIndex: index, cancel: false };\n this.trigger('removing', removeArgs, (tabRemovingArgs) => {\n if (!tabRemovingArgs.cancel) {\n if (isBlazor() && this.isServerRendered) {\n // tslint:disable-next-line:no-any\n this.interopAdaptor.invokeMethodAsync('OnRemoveItem', index);\n return;\n }\n this.tbObj.removeItems(index);\n this.items.splice(index, 1);\n this.itemIndexArray.splice(index, 1);\n this.refreshActiveBorder();\n let cntTrg = select('#' + CLS_CONTENT$1 + this.tabId + '_' + this.extIndex(trg.id), select('.' + CLS_CONTENT$1, this.element));\n if (!isNullOrUndefined(cntTrg)) {\n detach(cntTrg);\n }\n this.trigger('removed', tabRemovingArgs);\n if (trg.classList.contains(CLS_ACTIVE$1)) {\n // tslint:disable-next-line:max-line-length\n index = (index > selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_TB_POPUP + ')', this.element).length - 1) ? index - 1 : index;\n this.enableAnimation = false;\n this.selectedItem = index;\n this.select(index);\n }\n if (selectAll('.' + CLS_TB_ITEM, this.element).length === 0) {\n this.hdrEle.style.display = 'none';\n }\n this.enableAnimation = true;\n }\n });\n }\n /**\n * Shows or hides the Tab that is in the specified index.\n * @param {number} index - Index value of target item.\n * @param {boolean} value - Based on this Boolean value, item will be hide (false) or show (true). By default, value is true.\n * @returns void.\n */\n hideTab(index, value) {\n let items;\n let item = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNullOrUndefined(item)) {\n return;\n }\n if (isNullOrUndefined(value)) {\n value = true;\n }\n this.bdrLine.classList.add(CLS_HIDDEN$1);\n if (value === true) {\n item.classList.add(CLS_HIDDEN$1);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN$1 + ')', this.tbItems);\n if (items.length !== 0 && item.classList.contains(CLS_ACTIVE$1)) {\n if (index !== 0) {\n for (let i = index - 1; i >= 0; i--) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN$1)) {\n this.select(i);\n break;\n }\n else if (i === 0) {\n for (let k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN$1)) {\n this.select(k);\n break;\n }\n }\n }\n }\n }\n else {\n for (let k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN$1)) {\n this.select(k);\n break;\n }\n }\n }\n }\n else if (items.length === 0) {\n this.element.classList.add(CLS_HIDDEN$1);\n }\n }\n else {\n this.element.classList.remove(CLS_HIDDEN$1);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN$1 + ')', this.tbItems);\n item.classList.remove(CLS_HIDDEN$1);\n if (items.length === 0) {\n this.select(index);\n }\n }\n this.setActiveBorder();\n item.setAttribute('aria-hidden', '' + value);\n if (!this.isServerRendered && this.overflowMode === 'Popup' && this.tbObj) {\n this.tbObj.refreshOverflow();\n }\n }\n /**\n * Specifies the index or HTMLElement to select an item from the Tab.\n * @param {number | HTMLElement} args - Index or DOM element is used for selecting an item from the Tab.\n * @returns void.\n */\n select(args) {\n let tabHeader = this.getTabHeader();\n this.tbItems = select('.' + CLS_TB_ITEMS, tabHeader);\n this.tbItem = selectAll('.' + CLS_TB_ITEM, tabHeader);\n this.content = select('.' + CLS_CONTENT$1, this.element);\n this.prevItem = this.tbItem[this.prevIndex];\n if (isNullOrUndefined(this.selectedItem) || (this.selectedItem < 0) || (this.tbItem.length <= this.selectedItem) || isNaN(this.selectedItem)) {\n this.selectedItem = 0;\n }\n else {\n this.selectedID = this.extIndex(this.tbItem[this.selectedItem].id);\n }\n let trg = this.tbItem[args];\n if (isNullOrUndefined(trg)) {\n this.selectedID = '0';\n }\n else {\n this.selectingID = this.extIndex(trg.id);\n }\n if (!isNullOrUndefined(this.prevItem) && !this.prevItem.classList.contains(CLS_DISABLE$4)) {\n this.prevItem.children.item(0).setAttribute('tabindex', '-1');\n }\n let eventArg = {\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: this.tbItem[this.selectedItem],\n selectedIndex: this.selectedItem,\n selectedContent: !isNullOrUndefined(this.content) ?\n select('#' + CLS_CONTENT$1 + this.tabId + '_' + this.selectedID, this.content) : null,\n selectingItem: trg,\n selectingIndex: args,\n selectingContent: !isNullOrUndefined(this.content) ?\n select('#' + CLS_CONTENT$1 + this.tabId + '_' + this.selectingID, this.content) : null,\n isSwiped: this.isSwipeed,\n cancel: false\n };\n if (!this.initRender) {\n this.trigger('selecting', eventArg, (selectArgs) => {\n if (!selectArgs.cancel) {\n this.selectingContent(args);\n }\n });\n }\n else {\n this.selectingContent(args);\n }\n }\n selectingContent(args) {\n if (typeof args === 'number') {\n if (!isNullOrUndefined(this.tbItem[args]) && (this.tbItem[args].classList.contains(CLS_DISABLE$4) ||\n this.tbItem[args].classList.contains(CLS_HIDDEN$1))) {\n for (let i = args + 1; i < this.items.length; i++) {\n if (this.items[i].disabled === false && this.items[i].visible === true) {\n args = i;\n break;\n }\n else {\n args = 0;\n }\n }\n }\n if (this.tbItem.length > args && args >= 0 && !isNaN(args)) {\n this.prevIndex = this.selectedItem;\n if (this.tbItem[args].classList.contains(CLS_TB_POPUP)) {\n this.setActive(this.popupHandler(this.tbItem[args]));\n }\n else {\n this.setActive(args);\n }\n }\n else {\n this.setActive(0);\n }\n }\n else if (args instanceof (HTMLElement)) {\n this.setActive(this.getEleIndex(args));\n }\n }\n /**\n * Specifies the value to disable/enable the Tab component.\n * When set to `true`, the component will be disabled.\n * @param {boolean} value - Based on this Boolean value, Tab will be enabled (false) or disabled (true).\n * @returns void.\n */\n disable(value) {\n this.setCssClass(this.element, CLS_DISABLE$4, value);\n this.element.setAttribute('aria-disabled', '' + value);\n }\n /**\n * Get the properties to be maintained in the persisted state.\n * @returns string\n */\n getPersistData() {\n return this.addOnPersist(['selectedItem', 'actEleId']);\n }\n /**\n * Returns the current module name.\n * @returns string\n * @private\n */\n getModuleName() {\n return 'tab';\n }\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n * @param {TabModel} newProp\n * @param {TabModel} oldProp\n * @returns void\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'width':\n setStyleAttribute(this.element, { width: formatUnit(newProp.width) });\n break;\n case 'height':\n setStyleAttribute(this.element, { height: formatUnit(newProp.height) });\n if (!this.isServerRendered) {\n this.setContentHeight(false);\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass !== '') {\n this.setCssClass(this.element, oldProp.cssClass, false);\n this.setCssClass(this.element, newProp.cssClass, true);\n }\n else {\n this.setCssClass(this.element, newProp.cssClass, true);\n }\n break;\n case 'items':\n if (!this.isServerRendered) {\n this.evalOnPropertyChangeItems(newProp, oldProp);\n }\n break;\n case 'showCloseButton':\n this.setCloseButton(newProp.showCloseButton);\n break;\n case 'selectedItem':\n if (!this.isServerRendered) {\n this.selectedItem = oldProp.selectedItem;\n this.select(newProp.selectedItem);\n }\n break;\n case 'headerPlacement':\n if (this.isServerRendered) {\n this.serverChangeOrientation(newProp.headerPlacement, oldProp.headerPlacement);\n }\n else {\n this.changeOrientation(newProp.headerPlacement);\n }\n break;\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n case 'overflowMode':\n this.tbObj.overflowMode = newProp.overflowMode;\n this.tbObj.dataBind();\n this.refreshActElePosition();\n break;\n case 'heightAdjustMode':\n if (!this.isServerRendered) {\n this.setContentHeight(false);\n this.select(this.selectedItem);\n }\n break;\n case 'scrollStep':\n if (this.tbObj) {\n this.tbObj.scrollStep = this.scrollStep;\n }\n break;\n }\n }\n }\n};\n__decorate$7([\n Collection([], TabItem)\n], Tab.prototype, \"items\", void 0);\n__decorate$7([\n Property('100%')\n], Tab.prototype, \"width\", void 0);\n__decorate$7([\n Property('auto')\n], Tab.prototype, \"height\", void 0);\n__decorate$7([\n Property('')\n], Tab.prototype, \"cssClass\", void 0);\n__decorate$7([\n Property(0)\n], Tab.prototype, \"selectedItem\", void 0);\n__decorate$7([\n Property('Top')\n], Tab.prototype, \"headerPlacement\", void 0);\n__decorate$7([\n Property('Content')\n], Tab.prototype, \"heightAdjustMode\", void 0);\n__decorate$7([\n Property('Scrollable')\n], Tab.prototype, \"overflowMode\", void 0);\n__decorate$7([\n Property('Dynamic')\n], Tab.prototype, \"loadOn\", void 0);\n__decorate$7([\n Property(false)\n], Tab.prototype, \"enablePersistence\", void 0);\n__decorate$7([\n Property(false)\n], Tab.prototype, \"enableHtmlSanitizer\", void 0);\n__decorate$7([\n Property(false)\n], Tab.prototype, \"showCloseButton\", void 0);\n__decorate$7([\n Property()\n], Tab.prototype, \"scrollStep\", void 0);\n__decorate$7([\n Complex({}, TabAnimationSettings)\n], Tab.prototype, \"animation\", void 0);\n__decorate$7([\n Event()\n], Tab.prototype, \"created\", void 0);\n__decorate$7([\n Event()\n], Tab.prototype, \"adding\", void 0);\n__decorate$7([\n Event()\n], Tab.prototype, \"added\", void 0);\n__decorate$7([\n Event()\n], Tab.prototype, \"selecting\", void 0);\n__decorate$7([\n Event()\n], Tab.prototype, \"selected\", void 0);\n__decorate$7([\n Event()\n], Tab.prototype, \"removing\", void 0);\n__decorate$7([\n Event()\n], Tab.prototype, \"removed\", void 0);\n__decorate$7([\n Event()\n], Tab.prototype, \"destroyed\", void 0);\nTab = __decorate$7([\n NotifyPropertyChanges\n], Tab);\n\n/**\n * Tab modules\n */\n\nvar __decorate$8 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar TreeView_1;\nconst ROOT = 'e-treeview';\nconst CONTROL = 'e-control';\nconst COLLAPSIBLE = 'e-icon-collapsible';\nconst EXPANDABLE = 'e-icon-expandable';\nconst LISTITEM = 'e-list-item';\nconst LISTTEXT = 'e-list-text';\nconst PARENTITEM = 'e-list-parent';\nconst HOVER = 'e-hover';\nconst ACTIVE = 'e-active';\nconst LOAD = 'e-icons-spinner';\nconst PROCESS = 'e-process';\nconst ICON = 'e-icons';\nconst TEXTWRAP = 'e-text-content';\nconst INPUT = 'e-input';\nconst INPUTGROUP = 'e-input-group';\nconst TREEINPUT = 'e-tree-input';\nconst EDITING = 'e-editing';\nconst RTL$1 = 'e-rtl';\nconst DRAGITEM = 'e-drag-item';\nconst DROPPABLE = 'e-droppable';\nconst DRAGGING = 'e-dragging';\nconst SIBLING = 'e-sibling';\nconst DROPIN = 'e-drop-in';\nconst DROPNEXT = 'e-drop-next';\nconst DROPOUT = 'e-drop-out';\nconst NODROP = 'e-no-drop';\nconst FULLROWWRAP = 'e-fullrow-wrap';\nconst FULLROW = 'e-fullrow';\nconst SELECTED$1 = 'e-selected';\nconst EXPANDED = 'e-expanded';\nconst NODECOLLAPSED = 'e-node-collapsed';\nconst DISABLE = 'e-disable';\nconst DROPCOUNT = 'e-drop-count';\nconst CHECK = 'e-check';\nconst INDETERMINATE = 'e-stop';\nconst CHECKBOXWRAP = 'e-checkbox-wrapper';\nconst CHECKBOXFRAME = 'e-frame';\nconst CHECKBOXRIPPLE = 'e-ripple-container';\nconst RIPPLE = 'e-ripple';\nconst RIPPLEELMENT = 'e-ripple-element';\nconst FOCUS = 'e-node-focus';\nconst IMAGE = 'e-list-img';\nconst BIGGER = 'e-bigger';\nconst SMALL = 'e-small';\nconst CHILD = 'e-has-child';\nconst ITEM_ANIMATION_ACTIVE = 'e-animation-active';\nconst DISABLED$1 = 'e-disabled';\nconst treeAriaAttr = {\n treeRole: 'tree',\n itemRole: 'treeitem',\n listRole: 'group',\n itemText: '',\n wrapperRole: '',\n};\n/**\n * Configures the fields to bind to the properties of node in the TreeView component.\n */\nclass FieldsSettings extends ChildProperty {\n}\n__decorate$8([\n Property('child')\n], FieldsSettings.prototype, \"child\", void 0);\n__decorate$8([\n Property([])\n], FieldsSettings.prototype, \"dataSource\", void 0);\n__decorate$8([\n Property('expanded')\n], FieldsSettings.prototype, \"expanded\", void 0);\n__decorate$8([\n Property('hasChildren')\n], FieldsSettings.prototype, \"hasChildren\", void 0);\n__decorate$8([\n Property('htmlAttributes')\n], FieldsSettings.prototype, \"htmlAttributes\", void 0);\n__decorate$8([\n Property('iconCss')\n], FieldsSettings.prototype, \"iconCss\", void 0);\n__decorate$8([\n Property('id')\n], FieldsSettings.prototype, \"id\", void 0);\n__decorate$8([\n Property('imageUrl')\n], FieldsSettings.prototype, \"imageUrl\", void 0);\n__decorate$8([\n Property('isChecked')\n], FieldsSettings.prototype, \"isChecked\", void 0);\n__decorate$8([\n Property('parentID')\n], FieldsSettings.prototype, \"parentID\", void 0);\n__decorate$8([\n Property(null)\n], FieldsSettings.prototype, \"query\", void 0);\n__decorate$8([\n Property('selected')\n], FieldsSettings.prototype, \"selected\", void 0);\n__decorate$8([\n Property(null)\n], FieldsSettings.prototype, \"tableName\", void 0);\n__decorate$8([\n Property('text')\n], FieldsSettings.prototype, \"text\", void 0);\n__decorate$8([\n Property('tooltip')\n], FieldsSettings.prototype, \"tooltip\", void 0);\n__decorate$8([\n Property('navigateUrl')\n], FieldsSettings.prototype, \"navigateUrl\", void 0);\n/**\n * Configures animation settings for the TreeView component.\n */\nclass ActionSettings extends ChildProperty {\n}\n__decorate$8([\n Property('SlideDown')\n], ActionSettings.prototype, \"effect\", void 0);\n__decorate$8([\n Property(400)\n], ActionSettings.prototype, \"duration\", void 0);\n__decorate$8([\n Property('linear')\n], ActionSettings.prototype, \"easing\", void 0);\n/**\n * Configures the animation settings for expanding and collapsing nodes in TreeView.\n */\nclass NodeAnimationSettings extends ChildProperty {\n}\n__decorate$8([\n Complex({ effect: 'SlideUp', duration: 400, easing: 'linear' }, ActionSettings)\n], NodeAnimationSettings.prototype, \"collapse\", void 0);\n__decorate$8([\n Complex({ effect: 'SlideDown', duration: 400, easing: 'linear' }, ActionSettings)\n], NodeAnimationSettings.prototype, \"expand\", void 0);\n/**\n * The TreeView component is used to represent hierarchical data in a tree like structure with advanced\n * functions to perform edit, drag and drop, selection with check-box, and more.\n * ```html\n *
      \n * ```\n * ```typescript\n * let treeObj: TreeView = new TreeView();\n * treeObj.appendTo('#tree');\n * ```\n */\nlet TreeView = TreeView_1 = class TreeView extends Component {\n constructor(options, element) {\n super(options, element);\n this.isRefreshed = false;\n this.preventExpand = false;\n this.checkedElement = [];\n this.disableNode = [];\n this.validArr = [];\n this.expandChildren = [];\n this.isFieldChange = false;\n this.changeDataSource = false;\n this.isBlazorExpandedNodes = [];\n this.mouseDownStatus = false;\n }\n /**\n * Get component name.\n * @returns string\n * @private\n */\n getModuleName() {\n return 'treeview';\n }\n /**\n * Initialize the event handler\n */\n preRender() {\n this.isBlazorPlatform = (isBlazor() && this.isServerRendered);\n this.checkActionNodes = [];\n this.parentNodeCheck = [];\n this.dragStartAction = false;\n this.isAnimate = false;\n this.keyConfigs = {\n escape: 'escape',\n end: 'end',\n enter: 'enter',\n f2: 'f2',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlDown: 'ctrl+downarrow',\n ctrlUp: 'ctrl+uparrow',\n ctrlEnter: 'ctrl+enter',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n ctrlA: 'ctrl+A',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftEnter: 'shift+enter',\n shiftHome: 'shift+home',\n shiftEnd: 'shift+end',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n csEnter: 'ctrl+shift+enter',\n csHome: 'ctrl+shift+home',\n csEnd: 'ctrl+shift+end',\n space: 'space',\n };\n this.listBaseOption = {\n expandCollapse: true,\n showIcon: true,\n expandIconClass: EXPANDABLE,\n ariaAttributes: treeAriaAttr,\n expandIconPosition: 'Left',\n itemCreated: (e) => {\n this.beforeNodeCreate(e);\n },\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n itemNavigable: this.fullRowNavigable,\n };\n this.updateListProp(this.fields);\n this.aniObj = new Animation({});\n this.treeList = [];\n this.isLoaded = false;\n this.isInitalExpand = false;\n this.expandChildren = [];\n this.index = 0;\n this.setTouchClass();\n if (isNullOrUndefined(this.selectedNodes)) {\n this.setProperties({ selectedNodes: [] }, true);\n }\n if (isNullOrUndefined(this.checkedNodes)) {\n this.setProperties({ checkedNodes: [] }, true);\n }\n if (isNullOrUndefined(this.expandedNodes)) {\n this.setProperties({ expandedNodes: [] }, true);\n }\n else {\n this.isInitalExpand = true;\n }\n }\n /**\n * Get the properties to be maintained in the persisted state.\n * @returns string\n * @hidden\n */\n getPersistData() {\n let keyEntity = ['selectedNodes', 'checkedNodes', 'expandedNodes'];\n return this.addOnPersist(keyEntity);\n }\n /**\n * To Initialize the control rendering\n * @private\n */\n render() {\n this.initialRender = true;\n this.blazorInitialRender = false;\n this.initialize();\n this.setDataBinding(false);\n this.setDisabledMode();\n this.setExpandOnType();\n if (!this.disabled) {\n this.setRipple();\n }\n this.wireEditingEvents(this.allowEditing);\n this.setDragAndDrop(this.allowDragAndDrop);\n if (!this.disabled) {\n this.wireEvents();\n }\n if (!this.isBlazorPlatform) {\n this.initialRender = false;\n }\n this.renderComplete();\n }\n initialize() {\n if (!this.isBlazorPlatform) {\n this.element.setAttribute('role', 'tree');\n this.element.setAttribute('tabindex', '0');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n this.setCssClass(null, this.cssClass);\n this.setEnableRtl();\n this.setFullRow(this.fullRowSelect);\n }\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n }\n setDisabledMode() {\n if (this.disabled) {\n this.element.classList.add(DISABLED$1);\n }\n else {\n this.element.classList.remove(DISABLED$1);\n }\n }\n setEnableRtl() {\n this.enableRtl ? addClass([this.element], RTL$1) : removeClass([this.element], RTL$1);\n }\n setRipple() {\n let tempStr = '.' + FULLROW + ',.' + TEXTWRAP;\n let rippleModel = {\n selector: tempStr,\n ignore: '.' + TEXTWRAP + ' > .' + ICON + ',.' + INPUTGROUP + ',.' + INPUT + ', .' + CHECKBOXWRAP\n };\n this.rippleFn = rippleEffect(this.element, rippleModel);\n let iconModel = {\n selector: '.' + TEXTWRAP + ' > .' + ICON,\n isCenterRipple: true,\n };\n this.rippleIconFn = rippleEffect(this.element, iconModel);\n }\n setFullRow(isEnabled) {\n isEnabled ? addClass([this.element], FULLROWWRAP) : removeClass([this.element], FULLROWWRAP);\n }\n setMultiSelect(isEnabled) {\n let firstUl = select('.' + PARENTITEM, this.element);\n if (isEnabled) {\n firstUl.setAttribute('aria-multiselectable', 'true');\n }\n else {\n firstUl.removeAttribute('aria-multiselectable');\n }\n }\n templateComplier(template) {\n if (template) {\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return undefined;\n }\n setDataBinding(changeDataSource) {\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager) {\n // tslint:disable\n this.isOffline = (this.isBlazorPlatform ? this.fields.dataSource.offline :\n this.fields.dataSource.dataSource.offline);\n if (this.fields.dataSource.ready) {\n this.fields.dataSource.ready.then((e) => {\n // tslint:disable\n this.isOffline = (this.isBlazorPlatform ? this.fields.dataSource.offline :\n this.fields.dataSource.dataSource.offline);\n if (this.fields.dataSource instanceof DataManager && this.isOffline) {\n this.treeList.pop();\n this.treeData = e.result;\n this.isNumberTypeId = this.getType();\n this.setRootData();\n this.renderItems(true);\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n }\n }).catch((e) => {\n this.trigger('actionFailure', { error: e });\n });\n }\n else {\n this.fields.dataSource.executeQuery(this.getQuery(this.fields)).then((e) => {\n this.treeList.pop();\n this.treeData = e.result;\n this.isNumberTypeId = this.getType();\n this.setRootData();\n if (changeDataSource) {\n this.changeDataSource = true;\n }\n this.renderItems(true);\n this.changeDataSource = false;\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n }).catch((e) => {\n this.trigger('actionFailure', { error: e });\n });\n }\n }\n else {\n this.treeList.pop();\n if (isNullOrUndefined(this.fields.dataSource)) {\n this.rootData = this.treeData = [];\n }\n else {\n this.treeData = JSON.parse(JSON.stringify(this.fields.dataSource));\n this.setRootData();\n }\n this.isNumberTypeId = this.getType();\n this.renderItems(false);\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n }\n getQuery(mapper, value = null) {\n let columns = [];\n let query;\n if (!mapper.query) {\n query = new Query();\n let prop = this.getActualProperties(mapper);\n for (let col of Object.keys(prop)) {\n if (col !== 'dataSource' && col !== 'tableName' && col !== 'child' && !!mapper[col]\n && col !== 'url' && columns.indexOf(mapper[col]) === -1) {\n columns.push(mapper[col]);\n }\n }\n query.select(columns);\n if (prop.hasOwnProperty('tableName')) {\n query.from(mapper.tableName);\n }\n }\n else {\n query = mapper.query.clone();\n }\n ListBase.addSorting(this.sortOrder, mapper.text, query);\n if (!isNullOrUndefined(value) && !isNullOrUndefined(mapper.parentID)) {\n query.where(mapper.parentID, 'equal', (this.isNumberTypeId ? parseFloat(value) : value));\n }\n return query;\n }\n getType() {\n return this.treeData[0] ? ((typeof getValue(this.fields.id, this.treeData[0]) === 'number') ? true : false) : false;\n }\n setRootData() {\n this.dataType = this.getDataType(this.treeData, this.fields);\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n let rootItems = this.getChildNodes(this.treeData, undefined, true);\n if (isNullOrUndefined(rootItems)) {\n this.rootData = [];\n }\n else {\n this.rootData = rootItems;\n }\n }\n else {\n this.rootData = this.treeData;\n }\n }\n renderItems(isSorted) {\n // tslint:disable\n if (!this.isBlazorPlatform || (this.isBlazorPlatform && this.fields.dataSource instanceof DataManager && (this.fields.dataSource.adaptorName !== 'BlazorAdaptor')) || this.changeDataSource) {\n this.listBaseOption.ariaAttributes.level = 1;\n let sortedData = this.getSortedData(this.rootData);\n this.ulElement = ListBase.createList(this.createElement, isSorted ? this.rootData : sortedData, this.listBaseOption);\n this.element.appendChild(this.ulElement);\n let rootNodes = this.ulElement.querySelectorAll('.e-list-item');\n if (this.loadOnDemand === false) {\n let i = 0;\n while (i < rootNodes.length) {\n this.renderChildNodes(rootNodes[i], true, null, true);\n i++;\n }\n }\n let parentEle = selectAll('.' + PARENTITEM, this.element);\n if ((parentEle.length === 1 && (rootNodes && rootNodes.length !== 0)) || this.loadOnDemand) {\n this.finalizeNode(this.element);\n }\n }\n this.updateTemplateForBlazor();\n this.parentNodeCheck = [];\n this.parentCheckData = [];\n this.updateCheckedStateFromDS();\n if (this.autoCheck && this.showCheckBox && !this.isLoaded) {\n this.updateParentCheckState();\n }\n }\n updateTemplateForBlazor() {\n if (this.nodeTemplate && this.isBlazorPlatform && !this.isStringTemplate) {\n this.updateBlazorTemplate();\n }\n }\n /**\n * Update the checkedNodes from datasource at initial rendering\n */\n updateCheckedStateFromDS(id) {\n if (this.treeData && this.showCheckBox) {\n if (this.dataType === 1) {\n let mapper = this.fields;\n let resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (let i = 0; i < resultData.length; i++) {\n let resultId = resultData[i][this.fields.id] ? resultData[i][this.fields.id].toString() : null;\n let resultPId = resultData[i][this.fields.parentID] ? resultData[i][this.fields.parentID].toString() : null;\n if (this.checkedNodes.indexOf(resultId) === -1 && !(this.isLoaded)) {\n this.checkedNodes.push(resultId);\n }\n if (resultData[i][this.fields.hasChildren]) {\n let id = resultData[i][this.fields.id];\n let childData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.parentID, 'equal', id, false));\n for (let child = 0; child < childData.length; child++) {\n let childId = childData[child][this.fields.id] ? childData[child][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) === -1 && this.autoCheck) {\n this.checkedNodes.push(childId);\n }\n }\n }\n }\n for (let i = 0; i < this.checkedNodes.length; i++) {\n let mapper = this.fields;\n let checkState = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.id, 'equal', this.checkedNodes[i], true));\n if (checkState[0] && this.autoCheck) {\n this.getCheckedNodeDetails(mapper, checkState);\n this.checkIndeterminateState(checkState[0]);\n }\n let checkedData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.parentID, 'equal', this.checkedNodes[i], true));\n for (let index = 0; index < checkedData.length; index++) {\n let checkedId = checkedData[index][this.fields.id] ? checkedData[index][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedId);\n }\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.isOffline)) {\n for (let index = 0; index < this.treeData.length; index++) {\n let fieldId = this.treeData[index][this.fields.id] ? this.treeData[index][this.fields.id].toString() : '';\n if (this.treeData[index][this.fields.isChecked] && !(this.isLoaded) && this.checkedNodes.indexOf(fieldId) === -1) {\n this.checkedNodes.push(fieldId);\n }\n let childItems = getValue(this.fields.child.toString(), this.treeData[index]);\n if (childItems) {\n this.updateChildCheckState(childItems, this.treeData[index]);\n }\n }\n }\n }\n }\n /**\n * To check whether the list data has sub child and to change the parent check state accordingly\n */\n getCheckedNodeDetails(mapper, checkNodes) {\n let id = checkNodes[0][this.fields.parentID] ? checkNodes[0][this.fields.parentID].toString() : null;\n let count = 0;\n let element = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.id] + '\"]');\n let parentEle = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.parentID] + '\"]');\n if (!element && !parentEle) {\n let len = this.parentNodeCheck.length;\n if (this.parentNodeCheck.indexOf(id) === -1) {\n this.parentNodeCheck.push(id);\n }\n let childNodes = this.getChildNodes(this.treeData, id);\n for (let i = 0; i < childNodes.length; i++) {\n let childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(id) === -1) {\n this.checkedNodes.push(id);\n }\n }\n let preElement = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.id, 'equal', id, true));\n this.getCheckedNodeDetails(mapper, preElement);\n }\n else if (parentEle) {\n let check = select('.' + CHECK, parentEle);\n if (!check) {\n this.changeState(parentEle, 'indeterminate', null, true, true);\n }\n }\n }\n /**\n * Update the checkedNodes and parent state when all the child Nodes are in checkedstate at initial rendering\n */\n updateParentCheckState() {\n let indeterminate = selectAll('.' + INDETERMINATE, this.element);\n let childCheckedElement;\n for (let i = 0; i < indeterminate.length; i++) {\n let node = closest(indeterminate[i], '.' + LISTITEM);\n let nodeId = node.getAttribute('data-uid').toString();\n if (this.dataType === 1) {\n childCheckedElement = new DataManager(this.treeData).\n executeLocal(new Query().where(this.fields.parentID, 'equal', nodeId, true));\n }\n else {\n childCheckedElement = this.getChildNodes(this.treeData, nodeId);\n }\n let count = 0;\n if (childCheckedElement) {\n for (let j = 0; j < childCheckedElement.length; j++) {\n let childId = childCheckedElement[j][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childCheckedElement.length) {\n let nodeCheck = node.getAttribute('data-uid');\n if (this.checkedNodes.indexOf(nodeCheck) === -1) {\n this.checkedNodes.push(nodeCheck);\n }\n this.changeState(node, 'check', null, true, true);\n }\n else if (count === 0 && this.checkedNodes.length === 0) {\n this.changeState(node, 'uncheck', null, true, true);\n }\n }\n }\n }\n /**\n * Change the parent to indeterminate state whenever the child is in checked state which is not rendered in DOM\n */\n checkIndeterminateState(data) {\n let element;\n if (this.dataType === 1) {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.parentID] + '\"]');\n }\n else {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.id] + '\"]');\n }\n if (element) {\n let ariaChecked = element.querySelector('.' + CHECKBOXWRAP).getAttribute('aria-checked');\n if (ariaChecked !== 'true') {\n this.changeState(element, 'indeterminate', null, true, true);\n }\n }\n else if (this.dataType === 2) {\n let len = this.parentNodeCheck.length;\n if (this.parentNodeCheck.indexOf(data[this.fields.id].toString()) === -1) {\n this.parentNodeCheck.push(data[this.fields.id].toString());\n }\n }\n }\n /**\n * Update the checkedNodes for child and subchild from datasource (hierarchical datasource) at initial rendering\n */\n updateChildCheckState(childItems, treeData) {\n let count = 0;\n let checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n for (let index = 0; index < childItems.length; index++) {\n let checkedChild = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : '';\n if (childItems[index][this.fields.isChecked] && !(this.isLoaded) && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedChild);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n let subChildItems = getValue(this.fields.child.toString(), childItems[index]);\n if (subChildItems) {\n this.parentCheckData.push(treeData);\n this.updateChildCheckState(subChildItems, childItems[index]);\n }\n if (count === childItems.length && this.autoCheck && this.checkedNodes.indexOf(checkedParent) === -1) {\n this.checkedNodes.push(checkedParent);\n }\n }\n if (count !== 0 && this.autoCheck) {\n this.checkIndeterminateState(treeData);\n for (let len = 0; len < this.parentCheckData.length; len++) {\n if ((treeData !== this.parentCheckData[len]) && (this.parentCheckData[len])) {\n this.checkIndeterminateState(this.parentCheckData[len]);\n }\n }\n }\n this.parentCheckData = [];\n }\n beforeNodeCreate(e) {\n if (this.showCheckBox) {\n let checkboxEle = createCheckBox(this.createElement, true, { cssClass: this.touchClass });\n checkboxEle.setAttribute('role', 'checkbox');\n let icon = select('div.' + ICON, e.item);\n let id = e.item.getAttribute('data-uid');\n e.item.childNodes[0].insertBefore(checkboxEle, e.item.childNodes[0].childNodes[isNullOrUndefined(icon) ? 0 : 1]);\n let checkValue = getValue(e.fields.isChecked, e.curData);\n if (this.checkedNodes.indexOf(id) > -1) {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n checkboxEle.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n }\n else if (!isNullOrUndefined(checkValue) && checkValue.toString() === 'true') {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n checkboxEle.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n }\n else {\n checkboxEle.setAttribute('aria-checked', 'false');\n }\n let frame = select('.' + CHECKBOXFRAME, checkboxEle);\n EventHandler.add(frame, 'mousedown', this.frameMouseHandler, this);\n EventHandler.add(frame, 'mouseup', this.frameMouseHandler, this);\n }\n if (this.fullRowSelect) {\n this.createFullRow(e.item);\n }\n if (this.allowMultiSelection && !e.item.classList.contains(SELECTED$1)) {\n e.item.setAttribute('aria-selected', 'false');\n }\n let fields = e.fields;\n this.addActionClass(e, fields.selected, SELECTED$1);\n this.addActionClass(e, fields.expanded, EXPANDED);\n if (!isNullOrUndefined(this.nodeTemplateFn)) {\n let textEle = e.item.querySelector('.' + LISTTEXT);\n textEle.innerHTML = '';\n let tempArr = this.nodeTemplateFn(e.curData, undefined, undefined, this.element.id + 'nodeTemplate', this.isStringTemplate);\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, textEle);\n }\n let eventArgs = {\n node: e.item,\n nodeData: e.curData,\n text: e.text,\n };\n if (!this.isRefreshed) {\n this.trigger('drawNode', eventArgs);\n }\n }\n frameMouseHandler(e) {\n let rippleSpan = select('.' + CHECKBOXRIPPLE, e.target.parentElement);\n rippleMouseHandler(e, rippleSpan);\n }\n addActionClass(e, action, cssClass) {\n let data = e.curData;\n let actionValue = getValue(action, data);\n if (!isNullOrUndefined(actionValue) && actionValue.toString() !== 'false') {\n e.item.classList.add(cssClass);\n }\n }\n getDataType(ds, mapper) {\n if (this.fields.dataSource instanceof DataManager && (this.fields.dataSource.adaptorName !== 'BlazorAdaptor')) {\n for (let i = 0; i < ds.length; i++) {\n if (this.isOffline) {\n if ((typeof mapper.child === 'string') && isNullOrUndefined(getValue(mapper.child, ds[i])) && !isNullOrUndefined(getValue(mapper.parentID, ds[i]))) {\n return 1;\n }\n }\n else if ((typeof mapper.child === 'string') && isNullOrUndefined(getValue(mapper.child, ds[i]))) {\n return 1;\n }\n }\n return 2;\n }\n for (let i = 0, len = ds.length; i < len; i++) {\n if ((typeof mapper.child === 'string') && !isNullOrUndefined(getValue(mapper.child, ds[i]))) {\n return 2;\n }\n if (!isNullOrUndefined(getValue(mapper.parentID, ds[i])) || !isNullOrUndefined(getValue(mapper.hasChildren, ds[i]))) {\n return 1;\n }\n }\n return 1;\n }\n getGroupedData(dataSource, groupBy) {\n let cusQuery = new Query().group(groupBy);\n let ds = ListBase.getDataSource(dataSource, cusQuery);\n let grpItem = [];\n for (let j = 0; j < ds.length; j++) {\n let itemObj = ds[j].items;\n grpItem.push(itemObj);\n }\n return grpItem;\n }\n getSortedData(list) {\n if (list && this.sortOrder !== 'None') {\n list = ListBase.getDataSource(list, ListBase.addSorting(this.sortOrder, this.fields.text));\n }\n return list;\n }\n finalizeNode(element) {\n let iNodes = selectAll('.' + IMAGE, element);\n for (let k = 0; k < iNodes.length; k++) {\n iNodes[k].setAttribute('alt', IMAGE);\n }\n if (this.isLoaded) {\n let sNodes = selectAll('.' + SELECTED$1, element);\n for (let i = 0; i < sNodes.length; i++) {\n this.selectNode(sNodes[i], null);\n break;\n }\n removeClass(sNodes, SELECTED$1);\n }\n let cNodes = selectAll('.' + LISTITEM + ':not(.' + EXPANDED + ')', element);\n for (let j = 0; j < cNodes.length; j++) {\n let icon = select('div.' + ICON, cNodes[j]);\n if (icon && icon.classList.contains(EXPANDABLE)) {\n this.disableExpandAttr(cNodes[j]);\n }\n }\n let eNodes = selectAll('.' + EXPANDED, element);\n if (!this.isInitalExpand) {\n for (let i = 0; i < eNodes.length; i++) {\n this.renderChildNodes(eNodes[i]);\n }\n }\n removeClass(eNodes, EXPANDED);\n this.updateList();\n if (this.isLoaded) {\n this.updateCheckedProp();\n }\n }\n updateCheckedProp() {\n if (this.showCheckBox) {\n let nodes = [].concat([], this.checkedNodes);\n this.setProperties({ checkedNodes: nodes }, true);\n }\n }\n ensureIndeterminate() {\n if (this.autoCheck) {\n let liElement = selectAll('li', this.element);\n let ulElement;\n for (let i = 0; i < liElement.length; i++) {\n if (liElement[i].classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, liElement[i]);\n if (ulElement) {\n this.ensureParentCheckState(liElement[i]);\n }\n else {\n this.ensureChildCheckState(liElement[i]);\n }\n }\n }\n }\n else {\n let indeterminate = selectAll('.' + INDETERMINATE, this.element);\n for (let i = 0; i < indeterminate.length; i++) {\n indeterminate[i].classList.remove(INDETERMINATE);\n }\n }\n }\n ensureParentCheckState(element) {\n if (!isNullOrUndefined(element)) {\n if (element.classList.contains(ROOT)) {\n return;\n }\n let ulElement = element;\n if (element.classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, element);\n }\n let checkedNodes = selectAll('.' + CHECK, ulElement);\n let indeterminateNodes = selectAll('.' + INDETERMINATE, ulElement);\n let nodes = selectAll('.' + LISTITEM, ulElement);\n let checkBoxEle = element.getElementsByClassName(CHECKBOXWRAP)[0];\n if (nodes.length === checkedNodes.length) {\n this.changeState(checkBoxEle, 'check', null, true, true);\n }\n else if (checkedNodes.length > 0 || indeterminateNodes.length > 0) {\n this.changeState(checkBoxEle, 'indeterminate', null, true, true);\n }\n else if (checkedNodes.length === 0) {\n this.changeState(checkBoxEle, 'uncheck', null, true, true);\n }\n let parentUL = closest(element, '.' + PARENTITEM);\n if (!isNullOrUndefined(parentUL)) {\n let currentParent = closest(parentUL, '.' + LISTITEM);\n this.ensureParentCheckState(currentParent);\n }\n }\n }\n ensureChildCheckState(element, e) {\n if (!isNullOrUndefined(element)) {\n let childElement = select('.' + PARENTITEM, element);\n let checkBoxes;\n if (!isNullOrUndefined(childElement)) {\n checkBoxes = selectAll('.' + CHECKBOXWRAP, childElement);\n let isChecked = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n let parentCheck = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(INDETERMINATE);\n let childCheck = childElement.querySelectorAll('li');\n let expandState = childElement.parentElement.getAttribute('aria-expanded');\n let checkedState;\n for (let index = 0; index < checkBoxes.length; index++) {\n let childId = childCheck[index].getAttribute('data-uid');\n if (!isNullOrUndefined(this.currentLoadData) && !isNullOrUndefined(getValue(this.fields.isChecked, this.currentLoadData[index]))) {\n checkedState = getValue(this.fields.isChecked, this.currentLoadData[index]) ? 'check' : 'uncheck';\n if (this.ele !== -1) {\n checkedState = isChecked ? 'check' : 'uncheck';\n }\n if ((checkedState === 'uncheck') && (!isUndefined(this.parentNodeCheck) && this.autoCheck\n && this.parentNodeCheck.indexOf(childId) !== -1)) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n checkedState = 'indeterminate';\n }\n }\n else {\n let isNodeChecked = checkBoxes[index].getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n if (isChecked) {\n checkedState = 'check';\n }\n else if (isNodeChecked && !this.isLoaded) {\n checkedState = 'check';\n }\n else if (this.checkedNodes.indexOf(childId) !== -1 && this.isLoaded && (parentCheck || isChecked)) {\n checkedState = 'check';\n }\n else if (childCheck[index].classList.contains(CHILD) && (!isUndefined(this.parentNodeCheck) && this.autoCheck\n && (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else if (this.dataType === 1 && (!isUndefined(this.parentNodeCheck) && this.autoCheck &&\n (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else {\n checkedState = 'uncheck';\n }\n }\n this.changeState(checkBoxes[index], checkedState, e, true, true);\n }\n }\n if (this.autoCheck && this.isLoaded) {\n this.updateParentCheckState();\n }\n }\n }\n doCheckBoxAction(nodes, doCheck) {\n let li = selectAll('.' + LISTITEM, this.element);\n if (!isNullOrUndefined(nodes)) {\n for (let len = nodes.length; len >= 0; len--) {\n let liEle;\n if (nodes.length === 1) {\n liEle = this.getElement(nodes[len - 1]);\n }\n else {\n liEle = this.getElement(nodes[len]);\n }\n if (isNullOrUndefined(liEle)) {\n let node;\n node = nodes[len - nodes.length] ? nodes[len - nodes.length].toString() : nodes[len] ? nodes[len].toString() : null;\n if (node !== '' && doCheck && node) {\n this.setValidCheckedNode(node);\n this.dynamicCheckState(node, doCheck);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && node !== '' && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(node), 1);\n let childItems = this.getChildNodes(this.treeData, node);\n if (childItems) {\n for (let i = 0; i < childItems.length; i++) {\n let id = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n }\n }\n if (this.parentNodeCheck.indexOf(node) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(node), 1);\n }\n }\n if (node) {\n this.dynamicCheckState(node, doCheck);\n }\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n continue;\n }\n let checkBox = select('.' + PARENTITEM + ' .' + CHECKBOXWRAP, liEle);\n this.validateCheckNode(checkBox, !doCheck, liEle, null);\n }\n }\n else {\n let checkBoxes = selectAll('.' + CHECKBOXWRAP, this.element);\n if (this.loadOnDemand) {\n for (let index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[index], doCheck);\n this.changeState(checkBoxes[index], doCheck ? 'check' : 'uncheck', null, null, null, doCheck);\n }\n }\n else {\n for (let index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[index], doCheck);\n this.changeState(checkBoxes[index], doCheck ? 'check' : 'uncheck');\n }\n }\n }\n if (nodes) {\n for (let j = 0; j < nodes.length; j++) {\n let node = nodes[j] ? nodes[j].toString() : '';\n if (!doCheck) {\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n }\n }\n if (this.autoCheck) {\n this.updateParentCheckState();\n }\n }\n updateFieldChecked(checkbox, doCheck) {\n let currLi = closest(checkbox, '.' + LISTITEM);\n let id = currLi.getAttribute('data-uid');\n let nodeDetails = this.getNodeData(currLi);\n if (nodeDetails.isChecked === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n }\n /**\n * Changes the parent and child check state while changing the checkedNodes via setmodel\n */\n dynamicCheckState(node, doCheck) {\n if (this.dataType === 1) {\n let count = 0;\n let resultId = new DataManager(this.treeData).executeLocal(new Query().where(this.fields.id, 'equal', node, true));\n if (resultId[0]) {\n let id = resultId[0][this.fields.id] ? resultId[0][this.fields.id].toString() : null;\n let parent = resultId[0][this.fields.parentID] ? resultId[0][this.fields.parentID].toString() : null;\n let parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n let indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;\n let check = parentElement ? select('.' + CHECK, parentElement) : null;\n let element = this.element.querySelector('[data-uid=\"' + id + '\"]');\n let childNodes = this.getChildNodes(this.treeData, parent);\n if (childNodes) {\n for (let i = 0; i < childNodes.length; i++) {\n let childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (id === node) && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (id === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && element && (id === node) && doCheck) {\n this.changeState(element, 'check', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!element && !parentElement && (id === node) && this.autoCheck) {\n this.updateIndeterminate(node, doCheck);\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.isOffline)) {\n let id;\n let parentElement;\n let check;\n for (let i = 0; i < this.treeData.length; i++) {\n id = this.treeData[i][this.fields.id] ? this.treeData[i][this.fields.id].toString() : '';\n parentElement = this.element.querySelector('[data-uid=\"' + id + '\"]');\n check = parentElement ? select('.' + CHECK, parentElement) : null;\n if (this.checkedNodes.indexOf(id) === -1 && parentElement && check && !doCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n let subChild = getValue(this.fields.child.toString(), this.treeData[i]);\n if (subChild) {\n this.updateChildIndeterminate(subChild, id, node, doCheck, id);\n }\n }\n }\n }\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for listData\n */\n updateIndeterminate(node, doCheck) {\n let indeterminateData = this.getTreeData(node);\n let count = 0;\n let parent;\n if (this.dataType === 1) {\n parent = indeterminateData[0][this.fields.parentID] ? indeterminateData[0][this.fields.parentID].toString() : null;\n }\n let childNodes = this.getChildNodes(this.treeData, parent);\n if (childNodes) {\n for (let i = 0; i < childNodes.length; i++) {\n let childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n let parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n if (parentElement && doCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!parentElement) {\n if (!doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent), 1);\n }\n else if (doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n else if (!doCheck && this.checkedNodes.indexOf(parent) !== -1 && this.parentNodeCheck.indexOf(parent) === -1\n && count !== 0) {\n this.parentNodeCheck.push(parent);\n }\n this.updateIndeterminate(parent, doCheck);\n if (this.checkedNodes.indexOf(parent) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(parent), 1);\n }\n }\n }\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for hierarchical data\n */\n updateChildIndeterminate(subChild, parent, node, doCheck, child) {\n let count = 0;\n for (let j = 0; j < subChild.length; j++) {\n let subId = subChild[j][this.fields.id] ? subChild[j][this.fields.id].toString() : '';\n if (this.checkedNodes.indexOf(subId) !== -1) {\n count++;\n }\n let parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n let indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;\n let check = parentElement ? select('.' + CHECK, parentElement) : null;\n let element = this.element.querySelector('[data-uid=\"' + subId + '\"]');\n let childElementCheck = element ? select('.' + CHECK, element) : null;\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (subId === node) && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && parentElement && !element && (subId === node) && !doCheck) {\n if (this.autoCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else {\n if (count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else {\n this.changeState(parentElement, 'uncheck', null);\n }\n }\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (subId === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && indeterminate && (subId === node) && this.autoCheck && count === 0\n && !doCheck) {\n indeterminate.classList.remove(INDETERMINATE);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && check && (subId === node) && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(subId) === -1 && element && childElementCheck && count === 0) {\n this.changeState(element, 'uncheck', null);\n }\n else if (!element && !parentElement && (subId === node) || (this.parentNodeCheck.indexOf(parent) !== -1) && this.autoCheck) {\n let childElement = this.element.querySelector('[data-uid=\"' + child + '\"]');\n if (doCheck && count !== 0) {\n this.changeState(childElement, 'indeterminate', null);\n }\n else if (doCheck && count === subChild.length && this.checkedNodes.indexOf(parent) === -1) {\n this.checkedNodes.push(parent);\n }\n else if (!doCheck && count === 0 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent));\n }\n if (this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n }\n let innerChild = getValue(this.fields.child.toString(), subChild[j]);\n if (innerChild) {\n this.updateChildIndeterminate(innerChild, subId, node, doCheck, child);\n }\n }\n }\n changeState(wrapper, state, e, isPrevent, isAdd, doCheck) {\n let eventArgs;\n let currLi = closest(wrapper, '.' + LISTITEM);\n if (!isPrevent) {\n this.checkActionNodes = [];\n eventArgs = this.getCheckEvent(currLi, state, e);\n this.trigger('nodeChecking', eventArgs, (observedArgs) => {\n if (!observedArgs.cancel) {\n this.nodeCheckAction(wrapper, state, currLi, observedArgs, e, isPrevent, isAdd, doCheck);\n }\n });\n }\n else {\n this.nodeCheckAction(wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck);\n }\n }\n nodeCheckAction(wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck) {\n let ariaState;\n let frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n this.addCheck(currLi);\n ariaState = 'true';\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n this.removeCheck(currLi);\n ariaState = 'false';\n }\n else if (state === 'indeterminate' && !frameSpan.classList.contains(INDETERMINATE) && this.autoCheck) {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n this.removeCheck(currLi);\n ariaState = 'mixed';\n }\n ariaState = state === 'check' ? 'true' : state === 'uncheck' ? 'false' : ariaState;\n if (!isNullOrUndefined(ariaState)) {\n wrapper.setAttribute('aria-checked', ariaState);\n }\n if (isAdd) {\n let data = [].concat([], this.checkActionNodes);\n eventArgs = this.getCheckEvent(currLi, state, e);\n if (isUndefined(isPrevent)) {\n eventArgs.data = data;\n }\n }\n if (doCheck !== undefined) {\n this.ensureStateChange(currLi, doCheck);\n }\n if (!isPrevent) {\n if (!isNullOrUndefined(ariaState)) {\n wrapper.setAttribute('aria-checked', ariaState);\n this.allowServerDataBinding = true;\n this.updateServerProperties(\"check\");\n this.allowServerDataBinding = false;\n eventArgs.data[0].checked = ariaState;\n this.trigger('nodeChecked', eventArgs);\n this.checkActionNodes = [];\n }\n }\n }\n addCheck(liEle) {\n let id = liEle.getAttribute('data-uid');\n if (!isNullOrUndefined(id) && this.checkedNodes.indexOf(id) === -1) {\n this.checkedNodes.push(id);\n }\n }\n removeCheck(liEle) {\n let index = this.checkedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.checkedNodes.splice(index, 1);\n }\n }\n getCheckEvent(currLi, action, e) {\n this.checkActionNodes.push(this.getNodeData(currLi));\n let nodeData = this.checkActionNodes;\n return { action: action, cancel: false, isInteracted: isNullOrUndefined(e) ? false : true, node: currLi, data: nodeData };\n }\n finalize() {\n let firstUl = select('.' + PARENTITEM, this.element);\n if (!isNullOrUndefined(firstUl)) {\n firstUl.setAttribute('role', treeAriaAttr.treeRole);\n this.setMultiSelect(this.allowMultiSelection);\n let firstNode = select('.' + LISTITEM, this.element);\n if (firstNode) {\n addClass([firstNode], FOCUS);\n this.updateIdAttr(null, firstNode);\n }\n this.hasPid = this.rootData[0] ? this.rootData[0].hasOwnProperty(this.fields.parentID) : false;\n this.doExpandAction();\n }\n }\n doExpandAction() {\n let eUids = this.expandedNodes;\n if (this.isInitalExpand && eUids.length > 0) {\n this.setProperties({ expandedNodes: [] }, true);\n if (this.isBlazorPlatform && !this.initialRender) {\n return;\n }\n // tslint:disable\n if (this.fields.dataSource instanceof DataManager && (this.fields.dataSource.adaptorName !== 'BlazorAdaptor')) {\n this.expandGivenNodes(eUids);\n }\n else {\n for (let i = 0; i < eUids.length; i++) {\n let eNode = select('[data-uid=\"' + eUids[i] + '\"]', this.element);\n if (!isNullOrUndefined(eNode)) {\n let icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNullOrUndefined(icon)) {\n this.expandAction(eNode, icon, null);\n }\n }\n else {\n if (eUids[i] && this.expandChildren.indexOf(eUids[i]) === -1) {\n this.expandChildren.push(eUids[i].toString());\n }\n continue;\n }\n }\n this.afterFinalized();\n }\n }\n else {\n this.afterFinalized();\n }\n }\n expandGivenNodes(arr) {\n let proxy = this;\n this.expandCallback(arr[this.index], () => {\n proxy.index++;\n if (proxy.index < arr.length) {\n proxy.expandGivenNodes(arr);\n }\n else {\n proxy.afterFinalized();\n }\n });\n }\n expandCallback(eUid, callback) {\n let eNode = select('[data-uid=\"' + eUid + '\"]', this.element);\n if (!isNullOrUndefined(eNode)) {\n let icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNullOrUndefined(icon)) {\n this.expandAction(eNode, icon, null, false, callback);\n }\n else {\n callback();\n }\n }\n else {\n callback();\n }\n }\n afterFinalized() {\n if (!this.isBlazorPlatform || (this.isBlazorPlatform && !this.initialRender)) {\n this.doSelectionAction();\n }\n this.updateCheckedProp();\n if (this.isBlazorPlatform) {\n if (this.initialRender) {\n this.setCheckedNodes(this.checkedNodes);\n }\n this.updateInstance();\n this.initialRender = false;\n }\n this.isAnimate = true;\n this.isInitalExpand = false;\n if (!this.isLoaded || this.isFieldChange) {\n let eventArgs = { data: this.treeData };\n this.trigger('dataBound', eventArgs);\n }\n this.isLoaded = true;\n }\n doSelectionAction() {\n let sNodes = selectAll('.' + SELECTED$1, this.element);\n let sUids = this.selectedNodes;\n if (sUids.length > 0) {\n this.setProperties({ selectedNodes: [] }, true);\n for (let i = 0; i < sUids.length; i++) {\n let sNode = select('[data-uid=\"' + sUids[i] + '\"]', this.element);\n if (sNode && !(sNode.classList.contains('e-active'))) {\n this.selectNode(sNode, null, true);\n }\n else {\n this.selectedNodes.push(sUids[i]);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n }\n else {\n this.selectGivenNodes(sNodes);\n }\n removeClass(sNodes, SELECTED$1);\n }\n selectGivenNodes(sNodes) {\n for (let i = 0; i < sNodes.length; i++) {\n if (!sNodes[i].classList.contains('e-disable')) {\n this.selectNode(sNodes[i], null, true);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n }\n clickHandler(event) {\n let target = event.originalEvent.target;\n EventHandler.remove(this.element, 'contextmenu', this.preventContextMenu);\n if (!target || this.dragStartAction) {\n return;\n }\n else {\n let classList$$1 = target.classList;\n let li = closest(target, '.' + LISTITEM);\n if (!li) {\n return;\n }\n else if (event.originalEvent.which !== 3) {\n let rippleElement = select('.' + RIPPLEELMENT, li);\n let rippleIcons = select('.' + ICON, li);\n this.removeHover();\n this.setFocusElement(li);\n if (this.showCheckBox && !li.classList.contains('e-disable')) {\n let checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNullOrUndefined(checkWrapper)) {\n let checkElement = select('.' + CHECKBOXFRAME, checkWrapper);\n this.validateCheckNode(checkWrapper, checkElement.classList.contains(CHECK), li, event.originalEvent);\n this.triggerClickEvent(event.originalEvent, li);\n return;\n }\n }\n if (classList$$1.contains(EXPANDABLE)) {\n this.expandAction(li, target, event);\n }\n else if (classList$$1.contains(COLLAPSIBLE)) {\n this.collapseNode(li, target, event);\n }\n else if (rippleElement && rippleIcons) {\n if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(EXPANDABLE)) {\n this.expandAction(li, rippleIcons, event);\n }\n else if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, rippleIcons, event);\n }\n else if (!classList$$1.contains(PARENTITEM) && !classList$$1.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n }\n else {\n if (!classList$$1.contains(PARENTITEM) && !classList$$1.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n }\n }\n this.triggerClickEvent(event.originalEvent, li);\n }\n }\n nodeCheckedEvent(wrapper, isCheck, e) {\n let currLi = closest(wrapper, '.' + LISTITEM);\n let eventArgs = this.getCheckEvent(wrapper, isCheck ? 'uncheck' : 'check', e);\n eventArgs.data = eventArgs.data.splice(0, eventArgs.data.length - 1);\n this.trigger('nodeChecked', eventArgs);\n }\n triggerClickEvent(e, li) {\n let eventArgs = {\n event: e,\n node: li,\n };\n this.trigger('nodeClicked', eventArgs);\n }\n expandNode(currLi, icon, loaded) {\n if (icon.classList.contains(LOAD)) {\n this.hideSpinner(icon);\n }\n if (!this.initialRender) {\n icon.classList.add('interaction');\n }\n if (loaded !== true || (loaded === true && currLi.classList.contains('e-expanded'))) {\n if (this.preventExpand !== true) {\n removeClass([icon], EXPANDABLE);\n addClass([icon], COLLAPSIBLE);\n let start = 0;\n let end = 0;\n let proxy = this;\n let ul = select('.' + PARENTITEM, currLi);\n let liEle = currLi;\n this.setHeight(liEle, ul);\n let activeElement = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate && !this.isRefreshed) {\n this.aniObj.animate(ul, {\n name: this.animation.expand.effect,\n duration: this.animation.expand.duration,\n timingFunction: this.animation.expand.easing,\n begin: (args) => {\n liEle.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start = liEle.offsetHeight;\n end = select('.' + TEXTWRAP, currLi).offsetHeight;\n },\n progress: (args) => {\n args.element.style.display = 'block';\n proxy.animateHeight(args, start, end);\n },\n end: (args) => {\n args.element.style.display = 'block';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n this.expandedNode(liEle, ul, icon);\n }\n });\n }\n else {\n this.expandedNode(liEle, ul, icon);\n }\n }\n }\n else {\n let ul = select('.' + PARENTITEM, currLi);\n ul.style.display = 'none';\n if (this.fields.dataSource instanceof DataManager === true) {\n this.preventExpand = false;\n }\n }\n if (this.initialRender) {\n icon.classList.add('interaction');\n }\n }\n expandedNode(currLi, ul, icon) {\n ul.style.display = 'block';\n currLi.style.display = 'block';\n currLi.style.overflow = '';\n currLi.style.height = '';\n removeClass([icon], PROCESS);\n this.addExpand(currLi);\n this.allowServerDataBinding = true;\n this.updateServerProperties(\"expand\");\n this.allowServerDataBinding = false;\n if (this.isLoaded && this.expandArgs && !this.isRefreshed) {\n this.expandArgs = this.getExpandEvent(currLi, null);\n this.trigger('nodeExpanded', this.expandArgs);\n }\n }\n addExpand(liEle) {\n liEle.setAttribute('aria-expanded', 'true');\n removeClass([liEle], NODECOLLAPSED);\n let id = liEle.getAttribute('data-uid');\n if (!isNullOrUndefined(id) && this.expandedNodes.indexOf(id) === -1) {\n this.expandedNodes.push(id);\n }\n }\n collapseNode(currLi, icon, e) {\n if (icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n addClass([icon], PROCESS);\n }\n let colArgs;\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(currLi, e);\n this.trigger('nodeCollapsing', colArgs, (observedArgs) => {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n }\n else {\n this.nodeCollapseAction(currLi, icon, observedArgs);\n }\n });\n }\n else {\n this.nodeCollapseAction(currLi, icon, colArgs);\n }\n }\n nodeCollapseAction(currLi, icon, colArgs) {\n removeClass([icon], COLLAPSIBLE);\n addClass([icon], EXPANDABLE);\n let start = 0;\n let end = 0;\n let proxy = this;\n let ul = select('.' + PARENTITEM, currLi);\n let liEle = currLi;\n let activeElement = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate) {\n this.aniObj.animate(ul, {\n name: this.animation.collapse.effect,\n duration: this.animation.collapse.duration,\n timingFunction: this.animation.collapse.easing,\n begin: (args) => {\n liEle.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start = select('.' + TEXTWRAP, currLi).offsetHeight;\n end = liEle.offsetHeight;\n },\n progress: (args) => {\n proxy.animateHeight(args, start, end);\n },\n end: (args) => {\n args.element.style.display = 'none';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n this.collapsedNode(liEle, ul, icon, colArgs);\n }\n });\n }\n else {\n this.collapsedNode(liEle, ul, icon, colArgs);\n }\n }\n collapsedNode(liEle, ul, icon, colArgs) {\n ul.style.display = 'none';\n liEle.style.overflow = '';\n liEle.style.height = '';\n removeClass([icon], PROCESS);\n this.allowServerDataBinding = true;\n this.updateServerProperties(\"expand\");\n this.allowServerDataBinding = false;\n this.removeExpand(liEle);\n if (this.isLoaded) {\n this.trigger('nodeCollapsed', colArgs);\n }\n }\n removeExpand(liEle, toRemove) {\n if (toRemove) {\n liEle.removeAttribute('aria-expanded');\n }\n else {\n this.disableExpandAttr(liEle);\n }\n let index = this.expandedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.expandedNodes.splice(index, 1);\n }\n }\n disableExpandAttr(liEle) {\n liEle.setAttribute('aria-expanded', 'false');\n addClass([liEle], NODECOLLAPSED);\n }\n setHeight(currLi, ul) {\n ul.style.display = 'block';\n ul.style.visibility = 'hidden';\n currLi.style.height = currLi.offsetHeight + 'px';\n ul.style.display = 'none';\n ul.style.visibility = '';\n }\n animateHeight(args, start, end) {\n let remaining = (args.duration - args.timeStamp) / args.duration;\n let currentHeight = (end - start) * remaining + start;\n args.element.parentElement.style.height = currentHeight + 'px';\n }\n renderChildNodes(parentLi, expandChild, callback, loaded) {\n let eicon = select('div.' + ICON, parentLi);\n if (isNullOrUndefined(eicon)) {\n return;\n }\n this.showSpinner(eicon);\n let childItems;\n // tslint:disable\n if (this.fields.dataSource instanceof DataManager && (this.fields.dataSource.adaptorName !== 'BlazorAdaptor')) {\n let level = this.parents(parentLi, '.' + PARENTITEM).length;\n let mapper = this.getChildFields(this.fields, level, 1);\n if (isNullOrUndefined(mapper) || isNullOrUndefined(mapper.dataSource)) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n return;\n }\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager && this.isOffline) {\n this.treeList.pop();\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'));\n this.loadChild(childItems, mapper, eicon, parentLi, expandChild, callback, loaded);\n this.updateTemplateForBlazor();\n }\n else {\n mapper.dataSource.executeQuery(this.getQuery(mapper, parentLi.getAttribute('data-uid'))).then((e) => {\n this.treeList.pop();\n childItems = e.result;\n if (this.dataType === 1) {\n this.dataType = 2;\n }\n this.loadChild(childItems, mapper, eicon, parentLi, expandChild, callback, loaded);\n this.updateTemplateForBlazor();\n }).catch((e) => {\n this.trigger('actionFailure', { error: e });\n });\n }\n }\n else {\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'));\n this.currentLoadData = childItems;\n if (isNullOrUndefined(childItems) || childItems.length === 0) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n return;\n }\n else {\n if (!this.isBlazorPlatform || !this.initialRender) {\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, this.getSortedData(childItems), this.listBaseOption));\n }\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi);\n this.finalizeNode(parentLi);\n if (this.loadOnDemand && this.nodeTemplate && this.isBlazorPlatform && !this.isStringTemplate) {\n this.updateBlazorTemplate();\n }\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\n }\n }\n }\n loadChild(childItems, mapper, eicon, parentLi, expandChild, callback, loaded) {\n this.currentLoadData = childItems;\n if (isNullOrUndefined(childItems) || childItems.length === 0) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n }\n else {\n this.updateListProp(mapper);\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n let id = parentLi.getAttribute('data-uid');\n let nodeData = this.getNodeObject(id);\n setValue('child', childItems, nodeData);\n }\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, childItems, this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi);\n this.finalizeNode(parentLi);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\n }\n if (callback) {\n callback();\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n }\n disableTreeNodes(childItems) {\n let i = 0;\n while (i < childItems.length) {\n let id = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n if (this.disableNode !== undefined && this.disableNode.indexOf(id) !== -1) {\n this.doDisableAction([id]);\n }\n i++;\n }\n }\n /**\n * Sets the child Item in selectedState while rendering the child node\n */\n setSelectionForChildNodes(nodes) {\n let i;\n for (i = 0; i < nodes.length; i++) {\n let id = nodes[i][this.fields.id] ? nodes[i][this.fields.id].toString() : null;\n if (this.selectedNodes !== undefined && this.selectedNodes.indexOf(id) !== -1) {\n this.doSelectionAction();\n }\n }\n }\n ensureCheckNode(element) {\n if (this.showCheckBox) {\n this.ele = (this.checkedElement) ? this.checkedElement.indexOf(element.getAttribute('data-uid')) : null;\n if (this.autoCheck) {\n this.ensureChildCheckState(element);\n this.ensureParentCheckState(element);\n }\n }\n this.currentLoadData = null;\n }\n getFields(mapper, nodeLevel, dataLevel) {\n if (nodeLevel === dataLevel) {\n return mapper;\n }\n else {\n return this.getFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n }\n getChildFields(mapper, nodeLevel, dataLevel) {\n if (nodeLevel === dataLevel) {\n return this.getChildMapper(mapper);\n }\n else {\n return this.getChildFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n }\n getChildMapper(mapper) {\n return (typeof mapper.child === 'string' || isNullOrUndefined(mapper.child)) ? mapper : mapper.child;\n }\n getChildNodes(obj, parentId, isRoot = false) {\n let childNodes;\n if (isNullOrUndefined(obj)) {\n return childNodes;\n }\n else if (this.dataType === 1) {\n return this.getChildGroup(this.groupedData, parentId, isRoot);\n }\n else {\n if (typeof this.fields.child === 'string') {\n for (let i = 0, objlen = obj.length; i < objlen; i++) {\n let dataId = getValue(this.fields.id, obj[i]);\n if (dataId && dataId.toString() === parentId) {\n return getValue(this.fields.child, obj[i]);\n }\n else if (!isNullOrUndefined(getValue(this.fields.child, obj[i]))) {\n childNodes = this.getChildNodes(getValue(this.fields.child, obj[i]), parentId);\n if (childNodes !== undefined) {\n break;\n }\n }\n }\n }\n }\n return childNodes;\n }\n getChildGroup(data, parentId, isRoot) {\n let childNodes;\n if (isNullOrUndefined(data)) {\n return childNodes;\n }\n for (let i = 0, objlen = data.length; i < objlen; i++) {\n if (!isNullOrUndefined(data[i][0]) && !isNullOrUndefined(getValue(this.fields.parentID, data[i][0]))) {\n if (getValue(this.fields.parentID, data[i][0]).toString() === parentId) {\n return data[i];\n }\n }\n else if (isRoot) {\n return data[i];\n }\n else {\n return [];\n }\n }\n return childNodes;\n }\n renderSubChild(element, expandChild, loaded) {\n if (expandChild) {\n let cIcons = selectAll('.' + EXPANDABLE, element);\n for (let i = 0, len = cIcons.length; i < len; i++) {\n let icon = cIcons[i];\n if (element.querySelector('.e-icons') !== cIcons[i]) {\n let curLi = closest(icon, '.' + LISTITEM);\n this.expandArgs = this.getExpandEvent(curLi, null);\n if (loaded !== true) {\n this.trigger('nodeExpanding', this.expandArgs);\n }\n this.renderChildNodes(curLi, expandChild, null, loaded);\n }\n }\n }\n }\n toggleSelect(li, e, multiSelect) {\n if (!li.classList.contains('e-disable')) {\n if (this.allowMultiSelection && ((e && e.ctrlKey) || multiSelect) && this.isActive(li)) {\n this.unselectNode(li, e);\n }\n else {\n this.selectNode(li, e, multiSelect);\n }\n }\n }\n isActive(li) {\n return li.classList.contains(ACTIVE) ? true : false;\n }\n selectNode(li, e, multiSelect) {\n if (isNullOrUndefined(li) || (!this.allowMultiSelection && this.isActive(li) && !isNullOrUndefined(e))) {\n this.setFocusElement(li);\n return;\n }\n let eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'select', e);\n this.trigger('nodeSelecting', eventArgs, (observedArgs) => {\n if (!observedArgs.cancel) {\n this.nodeSelectAction(li, e, observedArgs, multiSelect);\n }\n });\n }\n else {\n this.nodeSelectAction(li, e, eventArgs, multiSelect);\n }\n }\n nodeSelectAction(li, e, eventArgs, multiSelect) {\n if (!this.allowMultiSelection || (!multiSelect && (!e || (e && !e.ctrlKey)))) {\n this.removeSelectAll();\n }\n if (this.allowMultiSelection && e && e.shiftKey) {\n if (!this.startNode) {\n this.startNode = li;\n }\n let startIndex = this.liList.indexOf(this.startNode);\n let endIndex = this.liList.indexOf(li);\n if (startIndex > endIndex) {\n let temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (let i = startIndex; i <= endIndex; i++) {\n let currNode = this.liList[i];\n if (isVisible(currNode) && !currNode.classList.contains('e-disable')) {\n this.addSelect(currNode);\n }\n }\n }\n else {\n this.startNode = li;\n this.addSelect(li);\n }\n this.setFocusElement(li);\n if (this.isLoaded) {\n this.allowServerDataBinding = true;\n this.updateServerProperties(\"select\");\n this.allowServerDataBinding = false;\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n }\n }\n unselectNode(li, e) {\n let eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'un-select', e);\n this.trigger('nodeSelecting', eventArgs, (observedArgs) => {\n if (!observedArgs.cancel) {\n this.allowServerDataBinding = true;\n this.updateServerProperties(\"select\");\n this.allowServerDataBinding = false;\n this.nodeUnselectAction(li, observedArgs);\n }\n });\n }\n else {\n this.nodeUnselectAction(li, eventArgs);\n }\n }\n nodeUnselectAction(li, eventArgs) {\n this.removeSelect(li);\n this.setFocusElement(li);\n if (this.isLoaded) {\n this.allowServerDataBinding = true;\n this.updateServerProperties(\"select\");\n this.allowServerDataBinding = false;\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n }\n }\n setFocusElement(li) {\n if (!isNullOrUndefined(li)) {\n let focusedNode = this.getFocusedNode();\n if (focusedNode) {\n removeClass([focusedNode], FOCUS);\n }\n addClass([li], FOCUS);\n this.updateIdAttr(focusedNode, li);\n }\n }\n addSelect(liEle) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n let id = liEle.getAttribute('data-uid');\n if (!isNullOrUndefined(id) && this.selectedNodes.indexOf(id) === -1) {\n this.selectedNodes.push(id);\n }\n }\n removeSelect(liEle) {\n if (this.allowMultiSelection) {\n liEle.setAttribute('aria-selected', 'false');\n }\n else {\n liEle.removeAttribute('aria-selected');\n }\n removeClass([liEle], ACTIVE);\n let index = this.selectedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.selectedNodes.splice(index, 1);\n }\n }\n removeSelectAll() {\n let selectedLI = this.element.querySelectorAll('.' + ACTIVE);\n for (let ele of selectedLI) {\n if (this.allowMultiSelection) {\n ele.setAttribute('aria-selected', 'false');\n }\n else {\n ele.removeAttribute('aria-selected');\n }\n }\n removeClass(selectedLI, ACTIVE);\n this.setProperties({ selectedNodes: [] }, true);\n }\n getSelectEvent(currLi, action, e) {\n let nodeData = this.getNodeData(currLi);\n return { action: action, cancel: false, isInteracted: isNullOrUndefined(e) ? false : true, node: currLi, nodeData: nodeData };\n }\n setExpandOnType() {\n this.expandOnType = (this.expandOn === 'Auto') ? (Browser.isDevice ? 'Click' : 'DblClick') : this.expandOn;\n }\n expandHandler(e) {\n let target = e.originalEvent.target;\n if (!target || target.classList.contains(INPUT) || target.classList.contains(ROOT) ||\n target.classList.contains(PARENTITEM) || target.classList.contains(LISTITEM) ||\n target.classList.contains(ICON) || this.showCheckBox && closest(target, '.' + CHECKBOXWRAP)) {\n return;\n }\n else {\n this.expandCollapseAction(closest(target, '.' + LISTITEM), e);\n }\n }\n expandCollapseAction(currLi, e) {\n let icon = select('div.' + ICON, currLi);\n if (!icon || icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n let classList$$1 = icon.classList;\n if (classList$$1.contains(EXPANDABLE)) {\n this.expandAction(currLi, icon, e);\n }\n else if (classList$$1.contains(COLLAPSIBLE)) {\n this.collapseNode(currLi, icon, e);\n }\n }\n }\n expandAction(currLi, icon, e, expandChild, callback) {\n if (icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n addClass([icon], PROCESS);\n }\n if (this.isLoaded && !this.isRefreshed) {\n this.expandArgs = this.getExpandEvent(currLi, e);\n this.trigger('nodeExpanding', this.expandArgs, (observedArgs) => {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n }\n else {\n this.nodeExpandAction(currLi, icon, expandChild, callback);\n }\n });\n }\n else {\n this.nodeExpandAction(currLi, icon, expandChild, callback);\n }\n }\n nodeExpandAction(currLi, icon, expandChild, callback) {\n let ul = select('.' + PARENTITEM, currLi);\n if (ul && ul.nodeName === 'UL') {\n this.expandNode(currLi, icon);\n }\n else {\n this.renderChildNodes(currLi, expandChild, callback);\n let liEles = selectAll('.' + LISTITEM, currLi);\n for (let i = 0; i < liEles.length; i++) {\n let id = this.getId(liEles[i]);\n if (this.expandChildren.indexOf(id) !== -1 && this.expandChildren !== undefined) {\n let icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEles[i]));\n if (!isNullOrUndefined(icon)) {\n this.expandAction(liEles[i], icon, null);\n }\n this.expandChildren.splice(this.expandChildren.indexOf(id), 1);\n }\n }\n }\n }\n keyActionHandler(e) {\n let target = e.target;\n let focusedNode = this.getFocusedNode();\n if (target && target.classList.contains(INPUT)) {\n let inpEle = target;\n if (e.action === 'enter') {\n inpEle.blur();\n this.element.focus();\n addClass([focusedNode], HOVER);\n }\n else if (e.action === 'escape') {\n inpEle.value = this.oldText;\n inpEle.blur();\n this.element.focus();\n addClass([focusedNode], HOVER);\n }\n return;\n }\n e.preventDefault();\n let eventArgs = {\n cancel: false,\n event: e,\n node: focusedNode,\n };\n this.trigger('keyPress', eventArgs, (observedArgs) => {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n if (this.showCheckBox) {\n this.checkNode(e);\n }\n break;\n case 'moveRight':\n this.openNode(this.enableRtl ? false : true, e);\n break;\n case 'moveLeft':\n this.openNode(this.enableRtl ? true : false, e);\n break;\n case 'shiftDown':\n this.shiftKeySelect(true, e);\n break;\n case 'moveDown':\n case 'ctrlDown':\n case 'csDown':\n this.navigateNode(true);\n break;\n case 'shiftUp':\n this.shiftKeySelect(false, e);\n break;\n case 'moveUp':\n case 'ctrlUp':\n case 'csUp':\n this.navigateNode(false);\n break;\n case 'home':\n case 'shiftHome':\n case 'ctrlHome':\n case 'csHome':\n this.navigateRootNode(true);\n break;\n case 'end':\n case 'shiftEnd':\n case 'ctrlEnd':\n case 'csEnd':\n this.navigateRootNode(false);\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n this.toggleSelect(focusedNode, e);\n break;\n case 'f2':\n if (this.allowEditing && !focusedNode.classList.contains('e-disable')) {\n this.createTextbox(focusedNode, e);\n }\n break;\n case 'ctrlA':\n if (this.allowMultiSelection) {\n let sNodes = selectAll('.' + LISTITEM + ':not(.' + ACTIVE + ')', this.element);\n this.selectGivenNodes(sNodes);\n }\n break;\n }\n }\n });\n }\n navigateToFocus(isUp) {\n let focusNode = this.getFocusedNode().querySelector('.' + TEXTWRAP);\n let pos = focusNode.getBoundingClientRect();\n let parent = this.getScrollParent(this.element);\n if (!isNullOrUndefined(parent)) {\n let parentPos = parent.getBoundingClientRect();\n if (pos.bottom > parentPos.bottom) {\n parent.scrollTop += pos.bottom - parentPos.bottom;\n }\n else if (pos.top < parentPos.top) {\n parent.scrollTop -= parentPos.top - pos.top;\n }\n }\n let isVisible$$1 = this.isVisibleInViewport(focusNode);\n if (!isVisible$$1) {\n focusNode.scrollIntoView(isUp);\n }\n }\n isVisibleInViewport(txtWrap) {\n let pos = txtWrap.getBoundingClientRect();\n return (pos.top >= 0 && pos.left >= 0 && pos.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n pos.right <= (window.innerWidth || document.documentElement.clientWidth));\n }\n getScrollParent(node) {\n if (isNullOrUndefined(node)) {\n return null;\n }\n return (node.scrollHeight > node.clientHeight) ? node : this.getScrollParent(node.parentElement);\n }\n shiftKeySelect(isTowards, e) {\n if (this.allowMultiSelection) {\n let focusedNode = this.getFocusedNode();\n let nextNode = isTowards ? this.getNextNode(focusedNode) : this.getPrevNode(focusedNode);\n this.removeHover();\n this.setFocusElement(nextNode);\n this.toggleSelect(nextNode, e, false);\n this.navigateToFocus(!isTowards);\n }\n else {\n this.navigateNode(isTowards);\n }\n }\n checkNode(e) {\n let focusedNode = this.getFocusedNode();\n let checkWrap = select('.' + CHECKBOXWRAP, focusedNode);\n let isChecked = select(' .' + CHECKBOXFRAME, checkWrap).classList.contains(CHECK);\n if (!focusedNode.classList.contains('e-disable')) {\n if (focusedNode.getElementsByClassName(\"e-checkbox-disabled\").length == 0) {\n this.validateCheckNode(checkWrap, isChecked, focusedNode, e);\n }\n }\n }\n validateCheckNode(checkWrap, isCheck, li, e) {\n let currLi = closest(checkWrap, '.' + LISTITEM);\n this.checkActionNodes = [];\n let ariaState = !isCheck ? 'true' : 'false';\n if (!isNullOrUndefined(ariaState)) {\n checkWrap.setAttribute('aria-checked', ariaState);\n }\n let eventArgs = this.getCheckEvent(currLi, isCheck ? 'uncheck' : 'check', e);\n this.trigger('nodeChecking', eventArgs, (observedArgs) => {\n if (!observedArgs.cancel) {\n this.nodeCheckingAction(checkWrap, isCheck, li, observedArgs, e);\n }\n });\n }\n nodeCheckingAction(checkWrap, isCheck, li, eventArgs, e) {\n if (this.checkedElement.indexOf(li.getAttribute('data-uid')) === -1) {\n this.checkedElement.push(li.getAttribute('data-uid'));\n let child = this.getChildNodes(this.treeData, li.getAttribute('data-uid'));\n (child !== null) ? this.allCheckNode(child, this.checkedElement, null, null, false) : child = null;\n }\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true);\n if (this.autoCheck) {\n this.ensureChildCheckState(li);\n this.ensureParentCheckState(closest(closest(li, '.' + PARENTITEM), '.' + LISTITEM));\n let doCheck;\n if (eventArgs.action === 'check') {\n doCheck = true;\n }\n else if (eventArgs.action === 'uncheck') {\n doCheck = false;\n }\n this.ensureStateChange(li, doCheck);\n }\n this.allowServerDataBinding = true;\n this.updateServerProperties(\"check\");\n this.allowServerDataBinding = false;\n this.nodeCheckedEvent(checkWrap, isCheck, e);\n }\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM\n */\n ensureStateChange(li, doCheck) {\n let childElement = select('.' + PARENTITEM, li);\n let parentIndex = li.getAttribute('data-uid');\n let mapper = this.fields;\n if (this.dataType === 1 && this.autoCheck) {\n let resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.parentID, 'equal', parentIndex, true));\n for (let i = 0; i < resultData.length; i++) {\n let resultId = resultData[i][this.fields.id] ? resultData[i][this.fields.id].toString() : null;\n let isCheck = resultData[i][this.fields.isChecked] ? resultData[i][this.fields.isChecked].toString() : null;\n if (this.checkedNodes.indexOf(parentIndex) !== -1 && this.checkedNodes.indexOf(resultId) === -1) {\n this.checkedNodes.push(resultId);\n let childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n else if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null &&\n this.checkedNodes.indexOf(resultId) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(resultId), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, resultId, 'isChecked', null);\n }\n if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null ||\n this.parentNodeCheck.indexOf(resultId) !== -1) {\n let childNodes = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childNodes, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n }\n else {\n let childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n }\n }\n }\n else if (this.dataType === 1 && !this.autoCheck) {\n if (!doCheck) {\n let checkedData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (let i = 0; i < checkedData.length; i++) {\n let id = checkedData[i][this.fields.id] ? checkedData[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n }\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n this.checkedNodes = [];\n }\n else {\n for (let i = 0; i < this.treeData.length; i++) {\n let checkedId = this.treeData[i][this.fields.id] ? this.treeData[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) === -1) {\n this.checkedNodes.push(checkedId);\n }\n }\n }\n }\n else {\n let childItems = this.getChildNodes(this.treeData, parentIndex);\n if (childItems) {\n this.childStateChange(childItems, parentIndex, childElement, doCheck);\n }\n }\n }\n getChildItems(childItems, doCheck) {\n for (let i = 0; i < childItems.length; i++) {\n let childId = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n let childIsCheck = childItems[i][this.fields.isChecked] ? childItems[i][this.fields.isChecked].toString() :\n null;\n if (this.checkedNodes.indexOf(childId) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(childId), 1);\n }\n if (this.checkedNodes.indexOf(childId) === -1 && doCheck) {\n this.checkedNodes.push(childId);\n }\n if (childIsCheck === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, childId, 'isChecked', null);\n }\n let subChildItems = this.getChildNodes(this.treeData, childId);\n if (subChildItems.length > 0) {\n this.getChildItems(subChildItems, doCheck);\n }\n }\n }\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM for hierarchical DS\n */\n childStateChange(childItems, parent, childElement, doCheck) {\n for (let i = 0; i < childItems.length; i++) {\n let checkedChild = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : '';\n let isCheck = childItems[i][this.fields.isChecked] ? childItems[i][this.fields.isChecked].toString() : null;\n if (this.autoCheck) {\n if (this.checkedNodes.indexOf(parent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n if (this.parentNodeCheck.indexOf(checkedChild) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(checkedChild), 1);\n }\n }\n else if (this.checkedNodes.indexOf(parent) === -1 && this.checkedNodes.indexOf(checkedChild) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n }\n }\n }\n else if (!this.autoCheck) {\n if (!doCheck) {\n if (this.checkedNodes.indexOf(checkedChild) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n }\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n this.checkedNodes = [];\n }\n else {\n if (this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n }\n }\n let subChild = this.getChildNodes([childItems[i]], checkedChild);\n if (subChild) {\n this.childStateChange(subChild, parent, childElement, doCheck);\n }\n }\n }\n //This method can be used to get all child nodes of a parent by passing the children of a parent along with 'validateCheck' set to false\n allCheckNode(child, newCheck, checked, childCheck, validateCheck) {\n if (child) {\n for (let length = 0; length < child.length; length++) {\n let childId = getValue(this.fields.id, child[length]);\n let check = this.element.querySelector('[data-uid=\"' + childId + '\"]');\n //Validates isChecked case while no UI interaction has been performed on the node or it's parent\n if (validateCheck !== false && this.checkedElement.indexOf(childId.toString()) === -1) {\n if (((check === null && !isNullOrUndefined(child[length][this.fields.isChecked]) && newCheck.indexOf(childId.toString()) === -1)\n || childCheck === 0 || checked === 2)) {\n (child[length][this.fields.isChecked] !== false || checked === 2) ? newCheck.push(childId.toString())\n : childCheck = null;\n childCheck = (child[length][this.fields.isChecked] !== false || checked === 2) ? 0 : null;\n }\n }\n //Pushes child checked node done thro' UI interaction\n if (newCheck.indexOf(childId.toString()) === -1 && isNullOrUndefined(checked)) {\n newCheck.push(childId.toString());\n }\n //Gets if any next level children are available for child nodes\n if (getValue(this.fields.hasChildren, child[length]) === true ||\n getValue(this.fields.child.toString(), child[length])) {\n let id = getValue(this.fields.id, child[length]);\n let childId = this.getChildNodes(this.treeData, id.toString());\n if (childId) {\n (isNullOrUndefined(validateCheck)) ? this.allCheckNode(childId, newCheck, checked, childCheck) :\n this.allCheckNode(childId, newCheck, checked, childCheck, validateCheck);\n childCheck = null;\n }\n }\n childCheck = null;\n }\n }\n }\n openNode(toBeOpened, e) {\n let focusedNode = this.getFocusedNode();\n let icon = select('div.' + ICON, focusedNode);\n if (toBeOpened) {\n if (!icon) {\n return;\n }\n else if (icon.classList.contains(EXPANDABLE)) {\n this.expandAction(focusedNode, icon, e);\n }\n else {\n this.focusNextNode(focusedNode, true);\n }\n }\n else {\n if (icon && icon.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(focusedNode, icon, e);\n }\n else {\n let parentLi = closest(closest(focusedNode, '.' + PARENTITEM), '.' + LISTITEM);\n if (!parentLi) {\n return;\n }\n else {\n if (!parentLi.classList.contains('e-disable')) {\n this.setFocus(focusedNode, parentLi);\n this.navigateToFocus(true);\n }\n }\n }\n }\n }\n navigateNode(isTowards) {\n let focusedNode = this.getFocusedNode();\n this.focusNextNode(focusedNode, isTowards);\n }\n navigateRootNode(isBackwards) {\n let focusedNode = this.getFocusedNode();\n let rootNode = isBackwards ? this.getRootNode() : this.getEndNode();\n if (!rootNode.classList.contains('e-disable')) {\n this.setFocus(focusedNode, rootNode);\n this.navigateToFocus(isBackwards);\n }\n }\n getFocusedNode() {\n let selectedItem;\n let fNode = select('.' + LISTITEM + '.' + FOCUS, this.element);\n if (isNullOrUndefined(fNode)) {\n selectedItem = select('.' + LISTITEM, this.element);\n }\n return isNullOrUndefined(fNode) ? (isNullOrUndefined(selectedItem) ? this.element.firstElementChild : selectedItem) : fNode;\n }\n focusNextNode(li, isTowards) {\n let nextNode = isTowards ? this.getNextNode(li) : this.getPrevNode(li);\n this.setFocus(li, nextNode);\n this.navigateToFocus(!isTowards);\n if (nextNode.classList.contains('e-disable')) {\n let lastChild = nextNode.lastChild;\n if (nextNode.previousSibling == null && nextNode.classList.contains('e-level-1')) {\n this.focusNextNode(nextNode, true);\n }\n else if (nextNode.nextSibling == null && nextNode.classList.contains('e-node-collapsed')) {\n this.focusNextNode(nextNode, false);\n }\n else if (nextNode.nextSibling == null && lastChild.classList.contains('e-text-content')) {\n this.focusNextNode(nextNode, false);\n }\n else {\n this.focusNextNode(nextNode, isTowards);\n }\n }\n }\n getNextNode(li) {\n let index = this.liList.indexOf(li);\n let nextNode;\n do {\n index++;\n nextNode = this.liList[index];\n if (isNullOrUndefined(nextNode)) {\n return li;\n }\n } while (!isVisible(nextNode));\n return nextNode;\n }\n getPrevNode(li) {\n let index = this.liList.indexOf(li);\n let prevNode;\n do {\n index--;\n prevNode = this.liList[index];\n if (isNullOrUndefined(prevNode)) {\n return li;\n }\n } while (!isVisible(prevNode));\n return prevNode;\n }\n getRootNode() {\n let index = 0;\n let rootNode;\n do {\n rootNode = this.liList[index];\n index++;\n } while (!isVisible(rootNode));\n return rootNode;\n }\n getEndNode() {\n let index = this.liList.length - 1;\n let endNode;\n do {\n endNode = this.liList[index];\n index--;\n } while (!isVisible(endNode));\n return endNode;\n }\n setFocus(preNode, nextNode) {\n removeClass([preNode], [HOVER, FOCUS]);\n if (!nextNode.classList.contains('e-disable')) {\n addClass([nextNode], [HOVER, FOCUS]);\n this.updateIdAttr(preNode, nextNode);\n }\n }\n updateIdAttr(preNode, nextNode) {\n this.element.removeAttribute('aria-activedescendant');\n if (preNode) {\n preNode.removeAttribute('id');\n }\n nextNode.setAttribute('id', this.element.id + '_active');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n }\n focusIn() {\n if (!this.mouseDownStatus) {\n addClass([this.getFocusedNode()], HOVER);\n }\n this.mouseDownStatus = false;\n }\n focusOut() {\n removeClass([this.getFocusedNode()], HOVER);\n }\n onMouseOver(e) {\n let target = e.target;\n let classList$$1 = target.classList;\n let currentLi = closest(target, '.' + LISTITEM);\n if (!currentLi || classList$$1.contains(PARENTITEM) || classList$$1.contains(LISTITEM)) {\n this.removeHover();\n return;\n }\n else {\n if (currentLi && !currentLi.classList.contains('e-disable')) {\n this.setHover(currentLi);\n }\n }\n }\n setHover(li) {\n if (!li.classList.contains(HOVER)) {\n this.removeHover();\n addClass([li], HOVER);\n }\n }\n ;\n onMouseLeave(e) {\n this.removeHover();\n }\n removeHover() {\n let hoveredNode = selectAll('.' + HOVER, this.element);\n if (hoveredNode && hoveredNode.length) {\n removeClass(hoveredNode, HOVER);\n }\n }\n ;\n getNodeData(currLi, fromDS) {\n if (!isNullOrUndefined(currLi) && currLi.classList.contains(LISTITEM) &&\n !isNullOrUndefined(closest(currLi, '.' + CONTROL)) && closest(currLi, '.' + CONTROL).classList.contains(ROOT)) {\n let id = currLi.getAttribute('data-uid');\n let text = this.getText(currLi, fromDS);\n let pNode = closest(currLi.parentNode, '.' + LISTITEM);\n let pid = pNode ? pNode.getAttribute('data-uid') : null;\n let selected = currLi.classList.contains(ACTIVE);\n let expanded = (currLi.getAttribute('aria-expanded') === 'true') ? true : false;\n let hasChildren = (currLi.getAttribute('aria-expanded') === null) ? false : true;\n if (this.isBlazorPlatform) {\n hasChildren = currLi.getAttribute('aria-expanded') === 'true' ? true : (currLi.querySelector('.e-icon-expandable') || currLi.querySelector('.e-icon-collapsible')) != null ? true : false;\n }\n let checked = null;\n if (this.showCheckBox) {\n checked = select('.' + CHECKBOXWRAP, currLi).getAttribute('aria-checked');\n }\n return {\n id: id, text: text, parentID: pid, selected: selected, expanded: expanded,\n isChecked: checked, hasChildren: hasChildren\n };\n }\n return { id: '', text: '', parentID: '', selected: false, expanded: false, isChecked: '', hasChildren: false };\n }\n getText(currLi, fromDS) {\n if (fromDS) {\n let nodeData = this.getNodeObject(currLi.getAttribute('data-uid'));\n let level = parseFloat(currLi.getAttribute('aria-level'));\n let nodeFields = this.getFields(this.fields, level, 1);\n return getValue(nodeFields.text, nodeData);\n }\n return select('.' + LISTTEXT, currLi).textContent;\n }\n getExpandEvent(currLi, e) {\n let nodeData = this.getNodeData(currLi);\n return { cancel: false, isInteracted: isNullOrUndefined(e) ? false : true, node: currLi, nodeData: nodeData, event: e };\n }\n destroyTemplate(nodeTemplate) {\n this.clearTemplate(['nodeTemplate']);\n }\n reRenderNodes() {\n this.updateListProp(this.fields);\n resetBlazorTemplate(this.element.id + 'nodeTemplate', 'NodeTemplate');\n if (this.isBlazorPlatform) {\n this.ulElement = this.element.querySelector('.e-list-parent.e-ul');\n this.ulElement.parentElement.removeChild(this.ulElement);\n }\n else {\n this.element.innerHTML = '';\n }\n if (!isNullOrUndefined(this.nodeTemplateFn)) {\n this.destroyTemplate(this.nodeTemplate);\n }\n this.setTouchClass();\n this.setProperties({ selectedNodes: [], checkedNodes: [], expandedNodes: [] }, true);\n this.checkedElement = [];\n this.isLoaded = false;\n this.setDataBinding(true);\n }\n setCssClass(oldClass, newClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass([this.element], oldClass.split(' '));\n }\n if (!isNullOrUndefined(newClass) && newClass !== '') {\n addClass([this.element], newClass.split(' '));\n }\n }\n editingHandler(e) {\n let target = e.target;\n if (!target || target.classList.contains(ROOT) || target.classList.contains(PARENTITEM) ||\n target.classList.contains(LISTITEM) || target.classList.contains(ICON) ||\n target.classList.contains(INPUT) || target.classList.contains(INPUTGROUP)) {\n return;\n }\n else {\n let liEle = closest(target, '.' + LISTITEM);\n this.createTextbox(liEle, e);\n }\n }\n createTextbox(liEle, e) {\n let oldInpEle = select('.' + TREEINPUT, this.element);\n if (oldInpEle) {\n oldInpEle.blur();\n }\n let textEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n let innerEle = this.createElement('input', { className: TREEINPUT, attrs: { value: this.oldText } });\n let eventArgs = this.getEditEvent(liEle, null, innerEle.outerHTML);\n this.trigger('nodeEditing', eventArgs, (observedArgs) => {\n if (!observedArgs.cancel) {\n let inpWidth = textEle.offsetWidth + 5;\n let style = 'width:' + inpWidth + 'px';\n addClass([liEle], EDITING);\n textEle.innerHTML = eventArgs.innerHtml;\n let inpEle = select('.' + TREEINPUT, textEle);\n this.inputObj = Input.createInput({\n element: inpEle,\n properties: {\n enableRtl: this.enableRtl,\n }\n }, this.createElement);\n this.inputObj.container.setAttribute('style', style);\n inpEle.focus();\n let inputEle = inpEle;\n inputEle.setSelectionRange(0, inputEle.value.length);\n this.wireInputEvents(inpEle);\n }\n });\n }\n updateOldText(liEle) {\n let id = liEle.getAttribute('data-uid');\n this.editData = this.getNodeObject(id);\n let level = parseFloat(liEle.getAttribute('aria-level'));\n this.editFields = this.getFields(this.fields, level, 1);\n this.oldText = getValue(this.editFields.text, this.editData);\n }\n inputFocusOut(e) {\n if (!select('.' + TREEINPUT, this.element)) {\n return;\n }\n let target = e.target;\n let newText = target.value;\n let txtEle = closest(target, '.' + LISTTEXT);\n let liEle = closest(target, '.' + LISTITEM);\n detach(this.inputObj.container);\n if (this.fields.dataSource instanceof DataManager && !this.isOffline && (this.fields.dataSource.adaptorName !== 'BlazorAdaptor')) {\n this.crudOperation('update', null, liEle, newText, null, null, true);\n }\n else {\n this.appendNewText(liEle, txtEle, newText, true);\n }\n }\n appendNewText(liEle, txtEle, newText, isInput) {\n let eventArgs = this.getEditEvent(liEle, newText, null);\n this.trigger('nodeEdited', eventArgs, (observedArgs) => {\n newText = observedArgs.cancel ? observedArgs.oldText : observedArgs.newText;\n this.updateText(liEle, txtEle, newText, isInput);\n if (observedArgs.oldText !== newText) {\n this.triggerEvent();\n }\n });\n }\n updateText(liEle, txtEle, newText, isInput) {\n let newData = setValue(this.editFields.text, newText, this.editData);\n if (!isNullOrUndefined(this.nodeTemplateFn)) {\n txtEle.innerText = '';\n let tempArr = this.nodeTemplateFn(newData, undefined, undefined, this.element.id + 'nodeTemplate', this.isStringTemplate);\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, txtEle);\n this.updateBlazorTemplate();\n }\n else {\n txtEle.innerText = newText;\n }\n if (isInput) {\n removeClass([liEle], EDITING);\n txtEle.focus();\n }\n }\n getElement(ele) {\n if (isNullOrUndefined(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return this.element.querySelector('[data-uid=\"' + ele + '\"]');\n }\n else if (typeof ele === 'object') {\n return getElement(ele);\n }\n else {\n return null;\n }\n }\n getId(ele) {\n if (isNullOrUndefined(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return ele;\n }\n else if (typeof ele === 'object') {\n return (getElement(ele)).getAttribute('data-uid');\n }\n else {\n return null;\n }\n }\n getEditEvent(liEle, newText, inpEle) {\n let data = this.getNodeData(liEle);\n return { cancel: false, newText: newText, node: liEle, nodeData: data, oldText: this.oldText, innerHtml: inpEle };\n }\n getNodeObject(id) {\n let childNodes;\n if (isNullOrUndefined(id)) {\n return childNodes;\n }\n else if (this.dataType === 1) {\n for (let i = 0, objlen = this.treeData.length; i < objlen; i++) {\n let dataId = getValue(this.fields.id, this.treeData[i]);\n if (!isNullOrUndefined(this.treeData[i]) && !isNullOrUndefined(dataId) && dataId.toString() === id) {\n return this.treeData[i];\n }\n }\n }\n else {\n return this.getChildNodeObject(this.treeData, this.fields, id);\n }\n return childNodes;\n }\n getChildNodeObject(obj, mapper, id) {\n let newList;\n if (isNullOrUndefined(obj)) {\n return newList;\n }\n for (let i = 0, objlen = obj.length; i < objlen; i++) {\n let dataId = getValue(mapper.id, obj[i]);\n if (obj[i] && dataId && dataId.toString() === id) {\n return obj[i];\n }\n else if (typeof mapper.child === 'string' && !isNullOrUndefined(getValue(mapper.child, obj[i]))) {\n let childData = getValue(mapper.child, obj[i]);\n newList = this.getChildNodeObject(childData, this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNullOrUndefined(getValue('child', obj[i]))) {\n let child = 'child';\n newList = this.getChildNodeObject(getValue(child, obj[i]), this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n }\n return newList;\n }\n setDragAndDrop(toBind) {\n if (toBind && !this.disabled) {\n this.initializeDrag();\n }\n else {\n this.destroyDrag();\n }\n }\n // tslint:disable-next-line:max-func-body-length\n initializeDrag() {\n let virtualEle;\n let proxy = this;\n this.dragObj = new Draggable(this.element, {\n enableTailMode: true, enableAutoScroll: true,\n dragArea: this.dragArea,\n dragTarget: '.' + TEXTWRAP,\n helper: (e) => {\n this.dragTarget = e.sender.target;\n let dragRoot = closest(this.dragTarget, '.' + ROOT);\n let dragWrap = closest(this.dragTarget, '.' + TEXTWRAP);\n this.dragLi = closest(this.dragTarget, '.' + LISTITEM);\n if (this.fullRowSelect && !dragWrap && this.dragTarget.classList.contains(FULLROW)) {\n dragWrap = this.dragTarget.nextElementSibling;\n }\n if (!this.dragTarget || !e.element.isSameNode(dragRoot) || !dragWrap ||\n this.dragTarget.classList.contains(ROOT) || this.dragTarget.classList.contains(PARENTITEM) ||\n this.dragTarget.classList.contains(LISTITEM) || this.dragLi.classList.contains('e-disable')) {\n return false;\n }\n let cloneEle = (dragWrap.cloneNode(true));\n if (isNullOrUndefined(select('div.' + ICON, cloneEle))) {\n let icon = proxy.createElement('div', { className: ICON + ' ' + EXPANDABLE });\n cloneEle.insertBefore(icon, cloneEle.children[0]);\n }\n let cssClass = DRAGITEM + ' ' + ROOT + ' ' + this.cssClass + ' ' + (this.enableRtl ? RTL$1 : '');\n virtualEle = proxy.createElement('div', { className: cssClass });\n virtualEle.appendChild(cloneEle);\n let nLen = this.selectedNodes.length;\n if (nLen > 1 && this.allowMultiSelection && this.dragLi.classList.contains(ACTIVE)) {\n let cNode = proxy.createElement('span', { className: DROPCOUNT, innerHTML: '' + nLen });\n virtualEle.appendChild(cNode);\n }\n document.body.appendChild(virtualEle);\n document.body.style.cursor = '';\n this.dragData = this.getNodeData(this.dragLi);\n return virtualEle;\n },\n dragStart: (e) => {\n addClass([this.element], DRAGGING);\n let listItem = closest(e.target, '.e-list-item');\n let level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n let eventArgs = this.getDragEvent(e.event, this, null, e.target, null, virtualEle, level);\n if (eventArgs.draggedNode.classList.contains(EDITING)) {\n this.dragObj.intDestroy(e.event);\n this.dragCancelAction(virtualEle);\n }\n else {\n this.trigger('nodeDragStart', eventArgs, (observedArgs) => {\n if (observedArgs.cancel) {\n this.dragObj.intDestroy(e.event);\n this.dragCancelAction(virtualEle);\n }\n else {\n this.dragStartAction = true;\n }\n if (isBlazor()) {\n e.bindEvents(getElement(e.dragElement));\n }\n });\n }\n },\n drag: (e) => {\n this.dragObj.setProperties({ cursorAt: { top: (!isNullOrUndefined(e.event.targetTouches) || Browser.isDevice) ? 60 : -20 } });\n this.dragAction(e, virtualEle);\n },\n dragStop: (e) => {\n removeClass([this.element], DRAGGING);\n this.removeVirtualEle();\n let dropTarget = e.target;\n let preventTargetExpand = false;\n let dropRoot = (closest(dropTarget, '.' + DROPPABLE));\n let isHelperElement = true;\n if (!dropTarget || !dropRoot) {\n detach(e.helper);\n document.body.style.cursor = '';\n isHelperElement = false;\n }\n let listItem = closest(dropTarget, '.e-list-item');\n let level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n let eventArgs = this.getDragEvent(e.event, this, dropTarget, dropTarget, null, e.helper, level);\n eventArgs.preventTargetExpand = preventTargetExpand;\n if ((this.isBlazorPlatform && this.dragStartAction) || !this.isBlazorPlatform) {\n this.trigger('nodeDragStop', eventArgs, (observedArgs) => {\n this.dragParent = observedArgs.draggedParentNode;\n this.preventExpand = observedArgs.preventTargetExpand;\n if (observedArgs.cancel) {\n if (e.helper.parentNode) {\n detach(e.helper);\n }\n document.body.style.cursor = '';\n isHelperElement = false;\n }\n this.dragStartAction = false;\n if (this.isBlazorPlatform && isHelperElement) {\n this.dropAction(e, true);\n }\n });\n }\n }\n });\n this.dropObj = new Droppable(this.element, {\n out: (e) => {\n if (!isNullOrUndefined(e) && !e.target.classList.contains(SIBLING)) {\n document.body.style.cursor = 'not-allowed';\n }\n },\n over: (e) => {\n document.body.style.cursor = '';\n },\n drop: (e) => {\n if (!this.isBlazorPlatform) {\n this.dropAction(e);\n }\n }\n });\n }\n dragCancelAction(virtualEle) {\n detach(virtualEle);\n removeClass([this.element], DRAGGING);\n this.dragStartAction = false;\n }\n dragAction(e, virtualEle) {\n let dropRoot = closest(e.target, '.' + DROPPABLE);\n let dropWrap = closest(e.target, '.' + TEXTWRAP);\n let icon = select('div.' + ICON, virtualEle);\n removeClass([icon], [DROPIN, DROPNEXT, DROPOUT, NODROP]);\n this.removeVirtualEle();\n document.body.style.cursor = '';\n let classList$$1 = e.target.classList;\n if (this.fullRowSelect && !dropWrap && !isNullOrUndefined(classList$$1) && classList$$1.contains(FULLROW)) {\n dropWrap = e.target.nextElementSibling;\n }\n if (dropRoot) {\n let dropLi = closest(e.target, '.' + LISTITEM);\n let checkWrapper = closest(e.target, '.' + CHECKBOXWRAP);\n let collapse = closest(e.target, '.' + COLLAPSIBLE);\n let expand = closest(e.target, '.' + EXPANDABLE);\n if (!dropRoot.classList.contains(ROOT) || (dropWrap &&\n (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi)))) {\n if ((dropLi && e && (!expand && !collapse) && (e.event.offsetY < 7) && !checkWrapper) || (((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3)))) {\n addClass([icon], DROPNEXT);\n let virEle = this.createElement('div', { className: SIBLING });\n let index = this.fullRowSelect ? (1) : (0);\n dropLi.insertBefore(virEle, dropLi.children[index]);\n }\n else if ((dropLi && e && (!expand && !collapse) && (e.target.offsetHeight > 0 && e.event.offsetY > (e.target.offsetHeight - 10)) && !checkWrapper) || (((expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19)))) {\n addClass([icon], DROPNEXT);\n let virEle = this.createElement('div', { className: SIBLING });\n let index = this.fullRowSelect ? (2) : (1);\n dropLi.insertBefore(virEle, dropLi.children[index]);\n }\n else {\n addClass([icon], DROPIN);\n }\n }\n else if (e.target.nodeName === 'LI' && (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi))) {\n addClass([icon], DROPNEXT);\n this.renderVirtualEle(e);\n }\n else if (e.target.classList.contains(SIBLING)) {\n addClass([icon], DROPNEXT);\n }\n else {\n addClass([icon], DROPOUT);\n }\n }\n else {\n addClass([icon], NODROP);\n document.body.style.cursor = 'not-allowed';\n }\n let listItem = closest(e.target, '.e-list-item');\n let level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n let eventArgs = this.getDragEvent(e.event, this, e.target, e.target, null, virtualEle, level);\n if (eventArgs.dropIndicator) {\n removeClass([icon], eventArgs.dropIndicator);\n }\n this.trigger('nodeDragging', eventArgs);\n if (eventArgs.dropIndicator) {\n addClass([icon], eventArgs.dropIndicator);\n }\n }\n // tslint:disable\n dropAction(e, isBlazorDrop) {\n let offsetY = e.event.offsetY;\n let dropTarget = e.target;\n let dragObj;\n let level;\n let drop = false;\n let dragInstance;\n if (!isBlazorDrop) {\n dragInstance = e.dragData.draggable;\n }\n else {\n dragInstance = e.element;\n }\n for (let i = 0; i < dragInstance.ej2_instances.length; i++) {\n if (dragInstance.ej2_instances[i] instanceof TreeView_1) {\n dragObj = dragInstance.ej2_instances[i];\n break;\n }\n }\n if (dragObj && dragObj.dragTarget) {\n let dragTarget = dragObj.dragTarget;\n let dragLi = (closest(dragTarget, '.' + LISTITEM));\n let dropLi = (closest(dropTarget, '.' + LISTITEM));\n if (dropLi == null && dropTarget.classList.contains(ROOT)) {\n dropLi = dropTarget.firstElementChild;\n }\n if (!isBlazorDrop) {\n detach(e.droppedElement);\n }\n else {\n detach(e.helper);\n }\n document.body.style.cursor = '';\n if (!dropLi || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n return;\n }\n if (dragObj.allowMultiSelection && dragLi.classList.contains(ACTIVE)) {\n let sNodes = selectAll('.' + ACTIVE, dragObj.element);\n if (e.target.offsetHeight <= 33 && offsetY > e.target.offsetHeight - 10 && offsetY > 6) {\n for (let i = sNodes.length - 1; i >= 0; i--) {\n if (dropLi.isSameNode(sNodes[i]) || this.isDescendant(sNodes[i], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[i], dropLi, e, dragObj, offsetY);\n }\n }\n else {\n for (let i = 0; i < sNodes.length; i++) {\n if (dropLi.isSameNode(sNodes[i]) || this.isDescendant(sNodes[i], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[i], dropLi, e, dragObj, offsetY);\n }\n }\n }\n else {\n this.appendNode(dropTarget, dragLi, dropLi, e, dragObj, offsetY);\n }\n level = parseInt(dragLi.getAttribute('aria-level'), 10);\n drop = true;\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n if (!isBlazorDrop) {\n this.trigger('nodeDropped', this.getDragEvent(e.event, dragObj, dropTarget, e.target, e.dragData.draggedElement, null, level, drop));\n }\n else {\n this.trigger('nodeDropped', this.getDragEvent(e.event, dragObj, dropTarget, e.target, e.element, null, level, drop));\n }\n this.triggerEvent();\n }\n appendNode(dropTarget, dragLi, dropLi, e, dragObj, offsetY) {\n let checkWrapper = closest(dropTarget, '.' + CHECKBOXWRAP);\n let collapse = closest(e.target, '.' + COLLAPSIBLE);\n let expand = closest(e.target, '.' + EXPANDABLE);\n if (!dragLi.classList.contains('e-disable') && !checkWrapper && ((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3) || (expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19) || (!expand && !collapse))) {\n if (dropTarget.nodeName === 'LI') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n else if (dropTarget.firstElementChild && dropTarget.classList.contains(ROOT)) {\n if (dropTarget.firstElementChild.nodeName === 'UL') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n }\n else if ((dropTarget.classList.contains('e-icon-collapsible')) || (dropTarget.classList.contains('e-icon-expandable'))) {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY);\n }\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY, true);\n }\n }\n dropAsSiblingNode(dragLi, dropLi, e, dragObj) {\n let dropUl = closest(dropLi, '.' + PARENTITEM);\n let dragParentUl = closest(dragLi, '.' + PARENTITEM);\n let dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n let pre;\n if (e.target.offsetHeight > 0 && e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (e.event.offsetY < 2) {\n pre = true;\n }\n else if (e.target.classList.contains('e-icon-expandable') || (e.target.classList.contains('e-icon-collapsible'))) {\n if ((e.event.offsetY < 5) || (e.event.offsetX < 3)) {\n pre = true;\n }\n else if ((e.event.offsetY > 15) || (e.event.offsetX > 17)) {\n pre = false;\n }\n }\n if ((e.target.classList.contains('e-icon-expandable')) || (e.target.classList.contains('e-icon-collapsible'))) {\n let target = e.target.closest('li');\n dropUl.insertBefore(dragLi, pre ? target : target.nextElementSibling);\n }\n else {\n dropUl.insertBefore(dragLi, pre ? e.target : e.target.nextElementSibling);\n }\n this.moveData(dragLi, dropLi, dropUl, pre, dragObj);\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n }\n dropAsChildNode(dragLi, dropLi, dragObj, index, e, pos, isCheck) {\n let dragParentUl = closest(dragLi, '.' + PARENTITEM);\n let dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n let dropParentUl = closest(dropLi, '.' + PARENTITEM);\n if (e && (pos < 7) && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi);\n this.moveData(dragLi, dropLi, dropParentUl, true, dragObj);\n }\n else if (e && (e.target.offsetHeight > 0 && pos > (e.target.offsetHeight - 10)) && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n }\n else {\n let dropUl = this.expandParent(dropLi);\n let childLi = dropUl.childNodes[index];\n dropUl.insertBefore(dragLi, childLi);\n this.moveData(dragLi, childLi, dropUl, true, dragObj);\n }\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n }\n moveData(dragLi, dropLi, dropUl, pre, dragObj) {\n let dropParentLi = closest(dropUl, '.' + LISTITEM);\n let id = this.getId(dragLi);\n let removedData = dragObj.updateChildField(dragObj.treeData, dragObj.fields, id, null, null, true);\n let refId = this.getId(dropLi);\n let index = this.getDataPos(this.treeData, this.fields, refId);\n let parentId = this.getId(dropParentLi);\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', true);\n let pos = isNullOrUndefined(index) ? this.treeData.length : (pre ? index : index + 1);\n if (isNullOrUndefined(parentId) && !this.hasPid) {\n delete removedData[0][this.fields.parentID];\n }\n else {\n let currPid = this.isNumberTypeId ? parseFloat(parentId) : parentId;\n setValue(this.fields.parentID, currPid, removedData[0]);\n }\n this.treeData.splice(pos, 0, removedData[0]);\n if (dragObj.element.id !== this.element.id) {\n let childData = dragObj.removeChildNodes(id);\n pos++;\n for (let i = 0, len = childData.length; i < len; i++) {\n this.treeData.splice(pos, 0, childData[i]);\n pos++;\n }\n dragObj.groupedData = dragObj.getGroupedData(dragObj.treeData, dragObj.fields.parentID);\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n else {\n this.addChildData(this.treeData, this.fields, parentId, removedData, pre ? index : index + 1);\n }\n }\n expandParent(dropLi) {\n let dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && this.preventExpand !== true) {\n this.expandAction(dropLi, dropIcon, null);\n }\n let dropUl = select('.' + PARENTITEM, dropLi);\n if (this.preventExpand === true && !dropUl && dropIcon) {\n this.renderChildNodes(dropLi);\n }\n dropUl = select('.' + PARENTITEM, dropLi);\n if (!isNullOrUndefined(dropUl) && this.preventExpand === true) {\n dropUl.style.display = 'none';\n }\n if (!isNullOrUndefined(dropUl) && this.preventExpand === false) {\n dropUl.style.display = 'block';\n }\n if (isNullOrUndefined(dropUl) && this.preventExpand === true) {\n if (isNullOrUndefined(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n let icon = select('div.' + ICON, dropLi);\n if (icon) {\n icon.classList.add('e-icon-expandable');\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n if (icon) {\n removeClass([icon], COLLAPSIBLE);\n }\n else {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n dropLi.setAttribute('aria-expanded', 'false');\n dropUl.style.display = 'none';\n }\n if (isNullOrUndefined(dropUl)) {\n this.trigger('nodeExpanding', this.getExpandEvent(dropLi, null));\n if (isNullOrUndefined(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n }\n let icon = select('div.' + ICON, dropLi);\n if (icon) {\n removeClass([icon], EXPANDABLE);\n }\n else {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n icon = select('div.' + ICON, dropLi);\n removeClass([icon], EXPANDABLE);\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n this.addExpand(dropLi);\n this.trigger('nodeExpanded', this.getExpandEvent(dropLi, null));\n }\n return dropUl;\n }\n updateElement(dragParentUl, dragParentLi) {\n if (dragParentLi && dragParentUl.childElementCount === 0) {\n let dragIcon = select('div.' + ICON, dragParentLi);\n detach(dragParentUl);\n detach(dragIcon);\n let parentId = this.getId(dragParentLi);\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', false);\n this.removeExpand(dragParentLi, true);\n }\n }\n updateAriaLevel(dragLi) {\n let level = this.parents(dragLi, '.' + PARENTITEM).length;\n dragLi.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, dragLi), level + 1);\n }\n updateChildAriaLevel(element, level) {\n if (!isNullOrUndefined(element)) {\n let cNodes = element.childNodes;\n for (let i = 0, len = cNodes.length; i < len; i++) {\n let liEle = cNodes[i];\n liEle.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, liEle), level + 1);\n }\n }\n }\n renderVirtualEle(e) {\n let pre;\n if (e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (e.event.offsetY < 2) {\n pre = true;\n }\n let virEle = this.createElement('div', { className: SIBLING });\n let index = this.fullRowSelect ? (pre ? 1 : 2) : (pre ? 0 : 1);\n e.target.insertBefore(virEle, e.target.children[index]);\n }\n removeVirtualEle() {\n let sibEle = select('.' + SIBLING);\n if (sibEle) {\n detach(sibEle);\n }\n }\n destroyDrag() {\n if (this.dragObj && this.dropObj) {\n this.dragObj.destroy();\n this.dropObj.destroy();\n }\n }\n getDragEvent(event, obj, dropTarget, target, dragNode, cloneEle, level, drop) {\n let dropLi = dropTarget ? closest(dropTarget, '.' + LISTITEM) : null;\n let dropData = dropLi ? this.getNodeData(dropLi) : null;\n let draggedNode = obj ? obj.dragLi : dragNode;\n let draggedNodeData = obj ? obj.dragData : null;\n let newParent = dropTarget ? this.parents(dropTarget, '.' + LISTITEM) : null;\n let dragLiParent = obj.dragLi.parentElement;\n let dragParent = obj.dragLi ? closest(dragLiParent, '.' + LISTITEM) : null;\n let targetParent = null;\n let indexValue = null;\n let iconCss = [DROPNEXT, DROPIN, DROPOUT, NODROP];\n let iconClass = null;\n let node = (drop === true) ? draggedNode : dropLi;\n let index = node ? closest(node, '.e-list-parent') : null;\n let i = 0;\n dragParent = (obj.dragLi && dragParent === null) ? closest(dragLiParent, '.' + ROOT) : dragParent;\n dragParent = (drop === true) ? this.dragParent : dragParent;\n if (cloneEle) {\n while (i < 4) {\n if (select('.' + ICON, cloneEle).classList.contains(iconCss[i])) {\n iconClass = iconCss[i];\n break;\n }\n i++;\n }\n }\n if (index) {\n let dropTar = 0;\n for (i = 0; i < index.childElementCount; i++) {\n dropTar = (drop !== true && index.children[i] === draggedNode && dropLi !== draggedNode) ? ++dropTar : dropTar;\n if ((drop !== true && index.children[i].classList.contains('e-hover'))) {\n indexValue = (event.offsetY >= 23) ? i + 1 : i;\n break;\n }\n else if (index.children[i] === node) {\n indexValue = (event.offsetY >= 23) ? i : i;\n break;\n }\n }\n indexValue = (dropTar !== 0) ? --indexValue : indexValue;\n }\n if (dropTarget) {\n if (newParent.length === 0) {\n targetParent = null;\n }\n else if (dropTarget.classList.contains(LISTITEM)) {\n targetParent = newParent[0];\n }\n else {\n targetParent = newParent[1];\n }\n }\n if (dropLi === draggedNode) {\n targetParent = dropLi;\n }\n if (dropTarget && target.offsetHeight <= 33 && event.offsetY < target.offsetHeight - 10 && event.offsetY > 6) {\n targetParent = dropLi;\n if (drop !== true) {\n level = ++level;\n let parent = targetParent ? select('.e-list-parent', targetParent) : null;\n indexValue = (parent) ? parent.children.length : 0;\n if (!(this.fields.dataSource instanceof DataManager) && parent === null && targetParent) {\n let parent = targetParent.hasAttribute('data-uid') ?\n this.getChildNodes(this.fields.dataSource, targetParent.getAttribute('data-uid').toString()) : null;\n indexValue = (parent) ? parent.length : 0;\n }\n }\n }\n return {\n cancel: false,\n clonedNode: cloneEle,\n event: event,\n draggedNode: draggedNode,\n draggedNodeData: draggedNodeData,\n droppedNode: dropLi,\n droppedNodeData: dropData,\n dropIndex: indexValue,\n dropLevel: level,\n draggedParentNode: dragParent,\n dropTarget: targetParent,\n dropIndicator: iconClass,\n target: target,\n };\n }\n addFullRow(toAdd) {\n let len = this.liList.length;\n if (toAdd) {\n for (let i = 0; i < len; i++) {\n this.createFullRow(this.liList[i]);\n }\n }\n else {\n for (let i = 0; i < len; i++) {\n let rowDiv = select('.' + FULLROW, this.liList[i]);\n detach(rowDiv);\n }\n }\n }\n createFullRow(item) {\n let rowDiv = this.createElement('div', { className: FULLROW });\n item.insertBefore(rowDiv, item.childNodes[0]);\n }\n addMultiSelect(toAdd) {\n if (toAdd) {\n let liEles = selectAll('.' + LISTITEM + ':not([aria-selected=\"true\"])', this.element);\n for (let ele of liEles) {\n ele.setAttribute('aria-selected', 'false');\n }\n }\n else {\n let liEles = selectAll('.' + LISTITEM + '[aria-selected=\"false\"]', this.element);\n for (let ele of liEles) {\n ele.removeAttribute('aria-selected');\n }\n }\n }\n collapseByLevel(element, level, excludeHiddenNodes) {\n if (level > 0 && !isNullOrUndefined(element)) {\n let cNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (let i = 0, len = cNodes.length; i < len; i++) {\n let liEle = cNodes[i];\n let icon = select('.' + COLLAPSIBLE, select('.' + TEXTWRAP, liEle));\n if (!isNullOrUndefined(icon)) {\n this.collapseNode(liEle, icon, null);\n }\n this.collapseByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\n }\n }\n }\n collapseAllNodes(excludeHiddenNodes) {\n let cIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + COLLAPSIBLE, this.element));\n for (let i = 0, len = cIcons.length; i < len; i++) {\n let icon = cIcons[i];\n let liEle = closest(icon, '.' + LISTITEM);\n this.collapseNode(liEle, icon, null);\n }\n }\n expandByLevel(element, level, excludeHiddenNodes) {\n if (level > 0 && !isNullOrUndefined(element)) {\n let eNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (let i = 0, len = eNodes.length; i < len; i++) {\n let liEle = eNodes[i];\n let icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEle));\n if (!isNullOrUndefined(icon)) {\n this.expandAction(liEle, icon, null);\n }\n this.expandByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\n }\n }\n }\n expandAllNodes(excludeHiddenNodes) {\n let eIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + EXPANDABLE, this.element));\n for (let i = 0, len = eIcons.length; i < len; i++) {\n let icon = eIcons[i];\n let liEle = closest(icon, '.' + LISTITEM);\n this.expandAction(liEle, icon, null, true);\n }\n }\n getVisibleNodes(excludeHiddenNodes, nodes) {\n let vNodes = Array.prototype.slice.call(nodes);\n if (excludeHiddenNodes) {\n for (let i = 0; i < vNodes.length; i++) {\n if (!isVisible(vNodes[i])) {\n vNodes.splice(i, 1);\n i--;\n }\n }\n }\n return vNodes;\n }\n removeNode(node) {\n let dragParentUl = closest(node, '.' + PARENTITEM);\n let dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n detach(node);\n this.updateElement(dragParentUl, dragParentLi);\n this.updateInstance();\n this.removeData(node);\n }\n updateInstance() {\n this.updateList();\n this.updateSelectedNodes();\n this.updateExpandedNodes();\n this.allowServerDataBinding = false;\n this.updateServerProperties(\"expand\");\n this.updateServerProperties(\"check\");\n this.updateServerProperties(\"select\");\n this.allowServerDataBinding = true;\n }\n updateServerProperties(action) {\n if (this.isBlazorPlatform) {\n if (action == \"expand\") {\n this.isBlazorExpandedNodes = this.expandedNodes;\n this.setProperties({ expandedNodes: [] }, true);\n }\n else if (action == \"check\") {\n this.setProperties({ checkedNodes: this.checkedNodes }, true);\n }\n else {\n this.setProperties({ selectedNodes: this.selectedNodes }, true);\n }\n }\n }\n updateList() {\n this.liList = Array.prototype.slice.call(selectAll('.' + LISTITEM, this.element));\n }\n updateSelectedNodes() {\n if (!this.isBlazorPlatform || (this.isBlazorPlatform && !this.initialRender)) {\n this.setProperties({ selectedNodes: [] }, true);\n let sNodes = selectAll('.' + ACTIVE, this.element);\n this.selectGivenNodes(sNodes);\n }\n else if (this.isBlazorPlatform && this.initialRender) {\n let sNodes = selectAll('.' + ACTIVE, this.element);\n for (let a = 0; a < sNodes.length; a++) {\n let id = sNodes[a].getAttribute(\"data-uid\").toString();\n if (!isNullOrUndefined(id) && this.selectedNodes.indexOf(id) === -1) {\n this.selectedNodes.push(id);\n }\n }\n }\n }\n updateExpandedNodes() {\n if (!this.isBlazorPlatform || (this.isBlazorPlatform && !this.initialRender)) {\n this.setProperties({ expandedNodes: [] }, true);\n let eNodes = selectAll('[aria-expanded=\"true\"]', this.element);\n for (let i = 0, len = eNodes.length; i < len; i++) {\n this.addExpand(eNodes[i]);\n }\n }\n else if (this.isBlazorPlatform && this.initialRender) {\n let eNodes = selectAll('[aria-expanded=\"true\"]', this.element);\n for (let a = 0; a < eNodes.length; a++) {\n let id = eNodes[a].getAttribute(\"data-uid\").toString();\n if (!isNullOrUndefined(id) && this.expandedNodes.indexOf(id) === -1) {\n this.expandedNodes.push(id);\n }\n }\n }\n }\n removeData(node) {\n if (this.dataType === 1) {\n let dm = new DataManager(this.treeData);\n let id = this.getId(node);\n let data = {};\n let newId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = newId;\n dm.remove(this.fields.id, data);\n this.removeChildNodes(id);\n }\n else {\n let id = this.getId(node);\n this.updateChildField(this.treeData, this.fields, id, null, null, true);\n }\n }\n removeChildNodes(parentId) {\n let cNodes = this.getChildGroup(this.groupedData, parentId, false);\n let childData = [];\n if (cNodes) {\n for (let i = 0, len = cNodes.length; i < len; i++) {\n let dm = new DataManager(this.treeData);\n let id = getValue(this.fields.id, cNodes[i]).toString();\n let data = {};\n let currId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = currId;\n let nodeData = dm.remove(this.fields.id, data);\n childData.push(nodeData[0]);\n this.removeChildNodes(id);\n }\n }\n return childData;\n }\n doGivenAction(nodes, selector, toExpand) {\n for (let i = 0, len = nodes.length; i < len; i++) {\n let liEle = this.getElement(nodes[i]);\n if (isNullOrUndefined(liEle)) {\n continue;\n }\n let icon = select('.' + selector, select('.' + TEXTWRAP, liEle));\n if (!isNullOrUndefined(icon)) {\n toExpand ? this.expandAction(liEle, icon, null) : this.collapseNode(liEle, icon, null);\n }\n }\n }\n addGivenNodes(nodes, dropLi, index, isRemote, dropEle) {\n if (nodes.length === 0) {\n return;\n }\n let sNodes = this.getSortedData(nodes);\n let level = dropLi ? parseFloat(dropLi.getAttribute('aria-level')) + 1 : 1;\n if (isRemote) {\n this.updateMapper(level);\n }\n let li = ListBase.createListItemFromJson(this.createElement, sNodes, this.listBaseOption, level);\n let dropUl;\n if (!dropEle) {\n dropUl = dropLi ? this.expandParent(dropLi) : select('.' + PARENTITEM, this.element);\n }\n else {\n dropUl = dropEle;\n }\n let refNode = dropUl.childNodes[index];\n for (let i = 0; i < li.length; i++) {\n dropUl.insertBefore(li[i], refNode);\n }\n if (this.nodeTemplate && this.isBlazorPlatform && !this.isStringTemplate) {\n this.updateBlazorTemplate();\n }\n let id = this.getId(dropLi);\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, id, 'hasChildren', true);\n let refId = this.getId(refNode);\n let pos = isNullOrUndefined(refId) ? this.treeData.length : this.getDataPos(this.treeData, this.fields, refId);\n for (let j = 0; j < nodes.length; j++) {\n if (!isNullOrUndefined(id)) {\n let currId = this.isNumberTypeId ? parseFloat(id) : id;\n setValue(this.fields.parentID, currId, nodes[j]);\n }\n this.treeData.splice(pos, 0, nodes[j]);\n pos++;\n }\n }\n else {\n this.addChildData(this.treeData, this.fields, id, nodes, index);\n }\n this.finalizeNode(dropUl);\n }\n updateMapper(level) {\n let mapper = (level === 1) ? this.fields : this.getChildFields(this.fields, level - 1, 1);\n this.updateListProp(mapper);\n }\n updateListProp(mapper) {\n let prop = this.getActualProperties(mapper);\n this.listBaseOption.fields = prop;\n this.listBaseOption.fields.url = prop.hasOwnProperty('navigateUrl') ? prop.navigateUrl : 'navigateUrl';\n }\n getDataPos(obj, mapper, id) {\n let pos = null;\n for (let i = 0, objlen = obj.length; i < objlen; i++) {\n let nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n return i;\n }\n else if (typeof mapper.child === 'string' && !isNullOrUndefined(getValue(mapper.child, obj[i]))) {\n let data = getValue(mapper.child, obj[i]);\n pos = this.getDataPos(data, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNullOrUndefined(getValue('child', obj[i]))) {\n let items = getValue('child', obj[i]);\n pos = this.getDataPos(items, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n }\n return pos;\n }\n addChildData(obj, mapper, id, data, index) {\n let updated;\n if (isNullOrUndefined(id)) {\n index = isNullOrUndefined(index) ? obj.length : index;\n for (let k = 0, len = data.length; k < len; k++) {\n obj.splice(index, 0, data[k]);\n index++;\n }\n return updated;\n }\n for (let i = 0, objlen = obj.length; i < objlen; i++) {\n let nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n if ((typeof mapper.child === 'string' && (obj[i].hasOwnProperty(mapper.child) && obj[i][mapper.child] !== null)) ||\n ((this.fields.dataSource instanceof DataManager && (this.fields.dataSource.adaptorName !== 'BlazorAdaptor')) && obj[i].hasOwnProperty('child'))) {\n let key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n let childData = getValue(key, obj[i]);\n if (isNullOrUndefined(childData)) {\n childData = [];\n }\n index = isNullOrUndefined(index) ? childData.length : index;\n for (let k = 0, len = data.length; k < len; k++) {\n childData.splice(index, 0, data[k]);\n index++;\n }\n }\n else {\n let key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n obj[i][key] = data;\n }\n return true;\n }\n else if (typeof mapper.child === 'string' && !isNullOrUndefined(getValue(mapper.child, obj[i]))) {\n let childObj = getValue(mapper.child, obj[i]);\n updated = this.addChildData(childObj, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n else if ((this.fields.dataSource instanceof DataManager && (this.fields.dataSource.adaptorName !== 'BlazorAdaptor')) && !isNullOrUndefined(getValue('child', obj[i]))) {\n let childData = getValue('child', obj[i]);\n updated = this.addChildData(childData, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n }\n return updated;\n }\n doDisableAction(nodes) {\n let validNodes = this.nodeType(nodes);\n let validID = this.checkValidId(validNodes);\n this.validArr = [];\n for (let i = 0, len = validID.length; i < len; i++) {\n let id = validID[i][this.fields.id].toString();\n if (id && this.disableNode.indexOf(id) === -1) {\n this.disableNode.push(id);\n }\n let liEle = this.getElement(id);\n if (liEle) {\n liEle.setAttribute('aria-disabled', 'true');\n addClass([liEle], DISABLE);\n }\n }\n }\n doEnableAction(nodes) {\n let strNodes = this.nodeType(nodes);\n for (let i = 0, len = strNodes.length; i < len; i++) {\n let liEle = this.getElement(strNodes[i]);\n let id = strNodes[i];\n if (id && this.disableNode.indexOf(id) !== -1) {\n this.disableNode.splice(this.disableNode.indexOf(id), 1);\n }\n if (liEle) {\n liEle.removeAttribute('aria-disabled');\n removeClass([liEle], DISABLE);\n }\n }\n }\n nodeType(nodes) {\n let validID = [];\n for (let i = 0, len = nodes.length; i < len; i++) {\n let id;\n if (typeof nodes[i] == \"string\") {\n id = (nodes[i]) ? nodes[i].toString() : null;\n }\n else if (typeof nodes[i] === \"object\") {\n id = nodes[i] ? nodes[i].getAttribute(\"data-uid\").toString() : null;\n }\n if (validID.indexOf(id) == -1) {\n validID.push(id);\n }\n }\n return validID;\n }\n checkValidId(node) {\n if (this.dataType === 1) {\n this.validArr = this.treeData.filter((data) => {\n return node.indexOf(data[this.fields.id] ? data[this.fields.id].toString() : null) !== -1;\n });\n }\n else if (this.dataType === 2) {\n for (let k = 0; k < this.treeData.length; k++) {\n let id = this.treeData[k][this.fields.id] ? this.treeData[k][this.fields.id].toString() : null;\n if (node.indexOf(id) !== -1) {\n this.validArr.push(this.treeData[k]);\n }\n let childItems = getValue(this.fields.child.toString(), this.treeData[k]);\n if (childItems) {\n this.filterNestedChild(childItems, node);\n }\n }\n }\n return this.validArr;\n }\n filterNestedChild(treeData, nodes) {\n for (let k = 0; k < treeData.length; k++) {\n let id = treeData[k][this.fields.id] ? treeData[k][this.fields.id].toString() : null;\n if (nodes.indexOf(id) !== -1) {\n this.validArr.push(treeData[k]);\n }\n let childItems = getValue(this.fields.child.toString(), treeData[k]);\n if (childItems) {\n this.filterNestedChild(childItems, nodes);\n }\n }\n }\n setTouchClass() {\n let ele = closest(this.element, '.' + BIGGER);\n this.touchClass = isNullOrUndefined(ele) ? '' : SMALL;\n }\n updatePersistProp() {\n this.removeField(this.treeData, this.fields, ['selected', 'expanded']);\n let sleNodes = this.selectedNodes;\n for (let l = 0, slelen = sleNodes.length; l < slelen; l++) {\n this.updateField(this.treeData, this.fields, sleNodes[l], 'selected', true);\n }\n let enodes = this.expandedNodes;\n if (this.isBlazorPlatform) {\n enodes = this.isBlazorExpandedNodes;\n }\n for (let k = 0, nodelen = enodes.length; k < nodelen; k++) {\n this.updateField(this.treeData, this.fields, enodes[k], 'expanded', true);\n }\n if (this.showCheckBox) {\n this.removeField(this.treeData, this.fields, ['isChecked']);\n let cnodes = this.checkedNodes;\n for (let m = 0, nodelen = cnodes.length; m < nodelen; m++) {\n this.updateField(this.treeData, this.fields, cnodes[m], 'isChecked', true);\n }\n }\n }\n removeField(obj, mapper, names) {\n if (isNullOrUndefined(obj) || isNullOrUndefined(mapper)) {\n return;\n }\n for (let i = 0, objlen = obj.length; i < objlen; i++) {\n for (let j = 0; j < names.length; j++) {\n let field = this.getMapperProp(mapper, names[j]);\n if (!isNullOrUndefined(obj[i][field])) {\n delete obj[i][field];\n }\n }\n if (typeof mapper.child === 'string' && !isNullOrUndefined(getValue(mapper.child, obj[i]))) {\n this.removeField(getValue(mapper.child, obj[i]), this.getChildMapper(mapper), names);\n }\n else if (this.fields.dataSource instanceof DataManager && !isNullOrUndefined(getValue('child', obj[i]))) {\n this.removeField(getValue('child', obj[i]), this.getChildMapper(mapper), names);\n }\n }\n }\n getMapperProp(mapper, fieldName) {\n switch (fieldName) {\n case 'selected':\n return !isNullOrUndefined(mapper.selected) ? mapper.selected : 'selected';\n case 'expanded':\n return !isNullOrUndefined(mapper.expanded) ? mapper.expanded : 'expanded';\n case 'isChecked':\n return !isNullOrUndefined(mapper.isChecked) ? mapper.isChecked : 'isChecked';\n case 'hasChildren':\n return !isNullOrUndefined(mapper.hasChildren) ? mapper.hasChildren : 'hasChildren';\n default:\n return fieldName;\n }\n }\n updateField(obj, mapper, id, key, value) {\n if (isNullOrUndefined(id)) {\n return;\n }\n else if (this.dataType === 1) {\n let newId = this.isNumberTypeId ? parseFloat(id) : id;\n let resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', newId, false));\n setValue(this.getMapperProp(mapper, key), value, resultData[0]);\n }\n else {\n this.updateChildField(obj, mapper, id, key, value);\n }\n }\n updateChildField(obj, mapper, id, key, value, remove$$1) {\n let removedData;\n if (isNullOrUndefined(obj)) {\n return removedData;\n }\n for (let i = 0, objlen = obj.length; i < objlen; i++) {\n let nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n if (remove$$1) {\n removedData = obj.splice(i, 1);\n }\n else {\n setValue(this.getMapperProp(mapper, key), value, obj[i]);\n removedData = [];\n }\n return removedData;\n }\n else if (typeof mapper.child === 'string' && !isNullOrUndefined(getValue(mapper.child, obj[i]))) {\n let childData = getValue(mapper.child, obj[i]);\n removedData = this.updateChildField(childData, this.getChildMapper(mapper), id, key, value, remove$$1);\n if (removedData !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNullOrUndefined(getValue('child', obj[i]))) {\n let childItems = getValue('child', obj[i]);\n removedData = this.updateChildField(childItems, this.getChildMapper(mapper), id, key, value, remove$$1);\n if (removedData !== undefined) {\n break;\n }\n }\n }\n return removedData;\n }\n triggerEvent() {\n this.updateTemplateForBlazor();\n let eventArgs = { data: this.treeData };\n this.trigger('dataSourceChanged', eventArgs);\n }\n updateBlazorTemplate() {\n updateBlazorTemplate(this.element.id + 'nodeTemplate', 'NodeTemplate', this, false);\n }\n clientUpdateInitial() {\n this.blazorInitialRender = true;\n }\n wireInputEvents(inpEle) {\n EventHandler.add(inpEle, 'blur', this.inputFocusOut, this);\n }\n wireEditingEvents(toBind) {\n if (toBind && !this.disabled) {\n let proxy = this;\n this.touchEditObj = new Touch(this.element, {\n tap: (e) => {\n if (e.tapCount === 2) {\n e.originalEvent.preventDefault();\n proxy.editingHandler(e.originalEvent);\n }\n }\n });\n }\n else {\n if (this.touchEditObj) {\n this.touchEditObj.destroy();\n }\n }\n }\n wireClickEvent(toBind) {\n if (toBind) {\n let proxy = this;\n this.touchClickObj = new Touch(this.element, {\n tap: (e) => {\n proxy.clickHandler(e);\n }\n });\n }\n else {\n if (this.touchClickObj) {\n this.touchClickObj.destroy();\n }\n }\n }\n wireExpandOnEvent(toBind) {\n if (toBind) {\n let proxy = this;\n this.touchExpandObj = new Touch(this.element, {\n tap: (e) => {\n if ((this.expandOnType === 'Click' || (this.expandOnType === 'DblClick' && e.tapCount === 2))\n && e.originalEvent.which !== 3) {\n proxy.expandHandler(e);\n }\n }\n });\n }\n else {\n if (this.touchExpandObj) {\n this.touchExpandObj.destroy();\n }\n }\n }\n mouseDownHandler(e) {\n this.mouseDownStatus = true;\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (e.ctrlKey && this.allowMultiSelection) {\n EventHandler.add(this.element, 'contextmenu', this.preventContextMenu, this);\n }\n }\n ;\n preventContextMenu(e) {\n e.preventDefault();\n }\n wireEvents() {\n EventHandler.add(this.element, 'mousedown', this.mouseDownHandler, this);\n this.wireClickEvent(true);\n if (this.expandOnType !== 'None') {\n this.wireExpandOnEvent(true);\n }\n EventHandler.add(this.element, 'focus', this.focusIn, this);\n EventHandler.add(this.element, 'blur', this.focusOut, this);\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.element, 'mouseout', this.onMouseLeave, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown',\n });\n }\n unWireEvents() {\n EventHandler.remove(this.element, 'mousedown', this.mouseDownHandler);\n this.wireClickEvent(false);\n this.wireExpandOnEvent(false);\n EventHandler.remove(this.element, 'focus', this.focusIn);\n EventHandler.remove(this.element, 'blur', this.focusOut);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.element, 'mouseout', this.onMouseLeave);\n if (!this.disabled) {\n this.keyboardModule.destroy();\n }\n }\n parents(element, selector) {\n let matched = [];\n let el = element.parentNode;\n while (!isNullOrUndefined(el)) {\n if (matches(el, selector)) {\n matched.push(el);\n }\n el = el.parentNode;\n }\n return matched;\n }\n isDescendant(parent, child) {\n let node = child.parentNode;\n while (!isNullOrUndefined(node)) {\n if (node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n }\n showSpinner(element) {\n addClass([element], LOAD);\n createSpinner({\n target: element,\n width: Browser.isDevice ? 16 : 14\n }, this.createElement);\n showSpinner(element);\n }\n hideSpinner(element) {\n hideSpinner(element);\n element.innerHTML = '';\n removeClass([element], LOAD);\n }\n setCheckedNodes(nodes) {\n nodes = JSON.parse(JSON.stringify(nodes));\n this.uncheckAll(this.checkedNodes);\n this.setIndeterminate(nodes);\n if (nodes.length > 0) {\n this.checkAll(nodes);\n }\n }\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel\n */\n setValidCheckedNode(node) {\n if (this.dataType === 1) {\n let mapper = this.fields;\n let resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', node, true));\n if (resultData[0]) {\n this.setChildCheckState(resultData, node, resultData[0]);\n if (this.autoCheck) {\n let parent = resultData[0][this.fields.parentID] ? resultData[0][this.fields.parentID].toString() : null;\n let childNodes = this.getChildNodes(this.treeData, parent);\n let count = 0;\n for (let len = 0; len < childNodes.length; len++) {\n let childId = childNodes[len][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(parent) === -1 && parent) {\n this.checkedNodes.push(parent);\n }\n }\n }\n }\n else if (this.dataType === 2) {\n for (let a = 0; a < this.treeData.length; a++) {\n let index = this.treeData[a][this.fields.id] ? this.treeData[a][this.fields.id].toString() : '';\n if (index === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n break;\n }\n let childItems = getValue(this.fields.child.toString(), this.treeData[a]);\n if (childItems) {\n this.setChildCheckState(childItems, node, this.treeData[a]);\n }\n }\n }\n }\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel(for hierarchical DS)\n */\n setChildCheckState(childItems, node, treeData) {\n let checkedParent;\n let count = 0;\n if (this.dataType === 1) {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : null;\n }\n for (let index = 0; index < childItems.length; index++) {\n let checkNode = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : null;\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkNode) === -1) {\n this.checkedNodes.push(checkNode);\n }\n }\n if (checkNode === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n }\n let subChildItems = this.getChildNodes(this.treeData, checkNode);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, treeData);\n }\n }\n }\n else {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n }\n for (let index = 0; index < childItems.length; index++) {\n let checkedChild = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : '';\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n }\n if (checkedChild === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n }\n let subChildItems = getValue(this.fields.child.toString(), childItems[index]);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, childItems[index]);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (count === childItems.length && this.checkedNodes.indexOf(checkedParent) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedParent);\n }\n }\n }\n }\n setIndeterminate(nodes) {\n for (let i = 0; i < nodes.length; i++) {\n this.setValidCheckedNode(nodes[i]);\n }\n }\n updatePosition(id, newData, isRefreshChild, childValue) {\n if (this.dataType === 1) {\n let pos = this.getDataPos(this.treeData, this.fields, id);\n this.treeData.splice(pos, 1, newData);\n if (isRefreshChild) {\n this.removeChildNodes(id);\n for (let j = 0; j < childValue.length; j++) {\n this.treeData.splice(pos, 0, childValue[j]);\n pos++;\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n else {\n this.updateChildPosition(this.treeData, this.fields, id, [newData], undefined);\n }\n }\n updateChildPosition(treeData, mapper, currID, newData, index) {\n let found;\n for (let i = 0, objlen = treeData.length; i < objlen; i++) {\n let nodeId = getValue(mapper.id, treeData[i]);\n if (treeData[i] && nodeId && nodeId.toString() === currID) {\n treeData[i] = newData[0];\n return true;\n }\n else if (typeof mapper.child === 'string' && !isNullOrUndefined(getValue(mapper.child, treeData[i]))) {\n let childObj = getValue(mapper.child, treeData[i]);\n found = this.updateChildPosition(childObj, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNullOrUndefined(getValue('child', treeData[i]))) {\n let childData = getValue('child', treeData[i]);\n found = this.updateChildPosition(childData, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n }\n }\n return found;\n }\n dynamicState() {\n this.setDragAndDrop(this.allowDragAndDrop);\n this.wireEditingEvents(this.allowEditing);\n if (!this.disabled) {\n this.wireEvents();\n this.setRipple();\n }\n else {\n this.unWireEvents();\n this.rippleFn();\n this.rippleIconFn();\n }\n }\n crudOperation(operation, nodes, target, newText, newNode, index, prevent) {\n let data = this.fields.dataSource;\n let matchedArr = [];\n let query = this.getQuery(this.fields);\n let key = this.fields.id;\n let crud;\n let changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n let nodesID = [];\n if (nodes) {\n nodesID = this.nodeType(nodes);\n }\n else if (target) {\n if (typeof target == \"string\") {\n nodesID[0] = target.toString();\n }\n else if (typeof target === \"object\") {\n nodesID[0] = target.getAttribute(\"data-uid\").toString();\n }\n }\n for (let i = 0, len = nodesID.length; i < len; i++) {\n let liEle = this.getElement(nodesID[i]);\n if (isNullOrUndefined(liEle)) {\n continue;\n }\n let removedData = this.getNodeObject(nodesID[i]);\n matchedArr.push(removedData);\n }\n switch (operation) {\n case 'delete':\n if (nodes.length == 1) {\n crud = data.remove(key, matchedArr[0], query.fromTable, query);\n }\n else {\n changes.deletedRecords = matchedArr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then((e) => this.deleteSuccess(nodesID))\n .catch((e) => this.dmFailure(e));\n break;\n case 'update':\n matchedArr[0][this.fields.text] = newText;\n crud = data.update(key, matchedArr[0], query.fromTable, query);\n crud.then((e) => this.editSucess(target, newText, prevent))\n .catch((e) => this.dmFailure(e, target, prevent));\n break;\n case 'insert':\n if (newNode.length == 1) {\n crud = data.insert(newNode[0], query.fromTable, query);\n }\n else {\n let arr = [];\n for (let i = 0, len = newNode.length; i < len; i++) {\n arr.push(newNode[i]);\n }\n changes.addedRecords = arr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then((e) => {\n let dropLi = this.getElement(target);\n this.addSuccess(newNode, dropLi, index);\n this.preventExpand = false;\n }).catch((e) => this.dmFailure(e));\n break;\n }\n }\n deleteSuccess(nodes) {\n for (let i = 0, len = nodes.length; i < len; i++) {\n let liEle = this.getElement(nodes[i]);\n if (isNullOrUndefined(liEle)) {\n continue;\n }\n this.removeNode(liEle);\n }\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.triggerEvent();\n }\n editSucess(target, newText, prevent) {\n let liEle = this.getElement(target);\n let txtEle = select('.' + LISTTEXT, liEle);\n this.appendNewText(liEle, txtEle, newText, prevent);\n }\n addSuccess(nodes, dropLi, index) {\n let dropUl;\n let icon = dropLi ? dropLi.querySelector('.' + ICON) : null;\n let proxy = this;\n if (dropLi && icon && icon.classList.contains(EXPANDABLE) &&\n dropLi.querySelector('.' + PARENTITEM) === null) {\n proxy.renderChildNodes(dropLi, null, () => {\n dropUl = dropLi.querySelector('.' + PARENTITEM);\n proxy.addGivenNodes(nodes, dropLi, index, true, dropUl);\n proxy.triggerEvent();\n });\n }\n else {\n this.addGivenNodes(nodes, dropLi, index, true);\n this.triggerEvent();\n }\n }\n dmFailure(e, target, prevent) {\n if (target) {\n this.updatePreviousText(target, prevent);\n }\n this.trigger('actionFailure', { error: e });\n }\n updatePreviousText(target, prevent) {\n let liEle = this.getElement(target);\n let txtEle = select('.' + LISTTEXT, liEle);\n this.updateText(liEle, txtEle, this.oldText, prevent);\n }\n /**\n * Called internally if any of the property value changed.\n * @param {TreeView} newProp\n * @param {TreeView} oldProp\n * @returns void\n * @private\n */\n // tslint:disable-next-line:max-func-body-length\n onPropertyChanged(newProp, oldProp) {\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'allowDragAndDrop':\n this.setDragAndDrop(this.allowDragAndDrop);\n break;\n case 'dragArea':\n if (this.allowDragAndDrop) {\n this.dragObj.dragArea = this.dragArea;\n }\n break;\n case 'allowEditing':\n this.wireEditingEvents(this.allowEditing);\n break;\n case 'allowMultiSelection':\n if (this.selectedNodes.length > 1) {\n let sNode = this.getElement(this.selectedNodes[0]);\n this.isLoaded = false;\n this.removeSelectAll();\n this.selectNode(sNode, null);\n this.isLoaded = true;\n }\n this.setMultiSelect(this.allowMultiSelection);\n this.addMultiSelect(this.allowMultiSelection);\n break;\n case 'checkedNodes':\n if (this.showCheckBox) {\n this.checkedNodes = oldProp.checkedNodes;\n this.setCheckedNodes(newProp.checkedNodes);\n }\n break;\n case 'autoCheck':\n if (this.showCheckBox) {\n this.autoCheck = newProp.autoCheck;\n this.ensureIndeterminate();\n }\n break;\n case 'cssClass':\n this.setCssClass(oldProp.cssClass, newProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'expandedNodes':\n this.isAnimate = false;\n if (!this.isBlazorPlatform) {\n this.setProperties({ expandedNodes: [] }, true);\n }\n this.collapseAll();\n this.isInitalExpand = true;\n if (!this.isBlazorPlatform) {\n this.setProperties({ expandedNodes: isNullOrUndefined(newProp.expandedNodes) ? [] : newProp.expandedNodes }, true);\n }\n this.doExpandAction();\n this.isInitalExpand = false;\n this.isAnimate = true;\n break;\n case 'expandOn':\n this.wireExpandOnEvent(false);\n this.setExpandOnType();\n if (this.expandOnType !== 'None' && !this.disabled) {\n this.wireExpandOnEvent(true);\n }\n break;\n case 'disabled':\n this.setDisabledMode();\n this.dynamicState();\n break;\n case 'fields':\n this.isAnimate = false;\n this.isFieldChange = true;\n this.initialRender = true;\n if (!this.blazorInitialRender) {\n this.reRenderNodes();\n }\n this.blazorInitialRender = false;\n this.initialRender = false;\n this.isAnimate = true;\n this.isFieldChange = false;\n break;\n case 'fullRowSelect':\n this.setFullRow(this.fullRowSelect);\n this.addFullRow(this.fullRowSelect);\n break;\n case 'loadOnDemand':\n if (this.loadOnDemand === false && !this.onLoaded) {\n let nodes = this.element.querySelectorAll('li');\n let i = 0;\n while (i < nodes.length) {\n if (nodes[i].getAttribute('aria-expanded') !== 'true') {\n this.renderChildNodes(nodes[i], true, null, true);\n }\n i++;\n }\n this.onLoaded = true;\n }\n break;\n case 'nodeTemplate':\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n this.reRenderNodes();\n break;\n case 'selectedNodes':\n this.removeSelectAll();\n this.setProperties({ selectedNodes: newProp.selectedNodes }, true);\n this.doSelectionAction();\n break;\n case 'showCheckBox':\n this.reRenderNodes();\n break;\n case 'sortOrder':\n this.reRenderNodes();\n break;\n case 'fullRowNavigable':\n this.setProperties({ fullRowNavigable: newProp.fullRowNavigable }, true);\n this.listBaseOption.itemNavigable = newProp.fullRowNavigable;\n this.reRenderNodes();\n break;\n }\n }\n }\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n */\n destroy() {\n resetBlazorTemplate(this.element.id + 'nodeTemplate', 'NodeTemplate');\n this.element.removeAttribute('aria-activedescendant');\n this.element.removeAttribute('tabindex');\n this.unWireEvents();\n this.wireEditingEvents(false);\n if (!this.disabled) {\n this.rippleFn();\n this.rippleIconFn();\n }\n this.setCssClass(this.cssClass, null);\n this.setDragAndDrop(false);\n this.setFullRow(false);\n if (this.isBlazorPlatform) {\n this.ulElement = this.element.querySelector('.e-list-parent.e-ul');\n }\n if (this.ulElement && this.ulElement.parentElement) {\n this.ulElement.parentElement.removeChild(this.ulElement);\n }\n if (!this.isBlazorPlatform) {\n super.destroy();\n }\n }\n /**\n * Adds the collection of TreeView nodes based on target and index position. If target node is not specified,\n * then the nodes are added as children of the given parentID or in the root level of TreeView.\n * @param { { [key: string]: Object }[] } nodes - Specifies the array of JSON data that has to be added.\n * @param { string | Element } target - Specifies ID of TreeView node/TreeView node as target element.\n * @param { number } index - Specifies the index to place the newly added nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n */\n addNodes(nodes, target, index, preventTargetExpand) {\n if (isNullOrUndefined(nodes)) {\n return;\n }\n nodes = JSON.parse(JSON.stringify(nodes));\n let dropLi = this.getElement(target);\n this.preventExpand = preventTargetExpand;\n if (this.fields.dataSource instanceof DataManager && (this.fields.dataSource.adaptorName !== 'BlazorAdaptor')) {\n if (!this.isOffline) {\n this.crudOperation('insert', null, target, null, nodes, index, this.preventExpand);\n }\n else {\n this.addSuccess(nodes, dropLi, index);\n }\n }\n else if (this.dataType === 2) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n if (dropLi) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n nodes = this.getSortedData(nodes);\n for (let i = 0; i < nodes.length; i++) {\n let pid = getValue(this.fields.parentID, nodes[i]);\n dropLi = pid ? this.getElement(pid.toString()) : pid;\n this.addGivenNodes([nodes[i]], dropLi, index);\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n if (this.showCheckBox && dropLi) {\n this.ensureParentCheckState(dropLi);\n }\n if ((this.fields.dataSource instanceof DataManager === false) || (this.fields.dataSource instanceof DataManager) && (this.fields.dataSource.adaptorName === 'BlazorAdaptor')) {\n this.preventExpand = false;\n this.triggerEvent();\n }\n }\n /**\n * Instead of clicking on the TreeView node for editing, we can enable it by using\n * `beginEdit` property. On passing the node ID or element through this property, the edit textBox\n * will be created for the particular node thus allowing us to edit it.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n */\n beginEdit(node) {\n let ele = this.getElement(node);\n if (isNullOrUndefined(ele) || this.disabled) {\n return;\n }\n this.createTextbox(ele, null);\n }\n /**\n * Checks all the unchecked nodes. You can also check specific nodes by passing array of unchecked nodes\n * as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n checkAll(nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, true);\n }\n }\n /**\n * Collapses all the expanded TreeView nodes. You can collapse specific nodes by passing array of nodes as argument to this method.\n * You can also collapse all the nodes excluding the hidden nodes by setting **excludeHiddenNodes** to true. If you want to collapse\n * a specific level of nodes, set **level** as argument to collapseAll method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/ array of TreeView node.\n * @param {number} level - TreeView nodes will collapse up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes of TreeView when collapsing all nodes.\n */\n collapseAll(nodes, level, excludeHiddenNodes) {\n if (!isNullOrUndefined(nodes)) {\n this.doGivenAction(nodes, COLLAPSIBLE, false);\n }\n else {\n if (level > 0) {\n this.collapseByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.collapseAllNodes(excludeHiddenNodes);\n }\n }\n }\n /**\n * Disables the collection of nodes by passing the ID of nodes or node elements in the array.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n */\n disableNodes(nodes) {\n if (!isNullOrUndefined(nodes)) {\n this.doDisableAction(nodes);\n }\n }\n /**\n * Enables the collection of disabled nodes by passing the ID of nodes or node elements in the array.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n */\n enableNodes(nodes) {\n if (!isNullOrUndefined(nodes)) {\n this.doEnableAction(nodes);\n }\n }\n /**\n * Ensures visibility of the TreeView node by using node ID or node element.\n * When many TreeView nodes are present and we need to find a particular node, `ensureVisible` property\n * helps bring the node to visibility by expanding the TreeView and scrolling to the specific node.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView nodes.\n */\n ensureVisible(node) {\n let liEle = this.getElement(node);\n if (isNullOrUndefined(liEle)) {\n return;\n }\n let parents = this.parents(liEle, '.' + LISTITEM);\n this.expandAll(parents);\n setTimeout(() => { liEle.scrollIntoView(true); }, 450);\n }\n /**\n * Expands all the collapsed TreeView nodes. You can expand the specific nodes by passing the array of collapsed nodes\n * as argument to this method. You can also expand all the collapsed nodes by excluding the hidden nodes by setting\n * **excludeHiddenNodes** to true to this method. To expand a specific level of nodes, set **level** as argument to expandAll method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n * @param {number} level - TreeView nodes will expand up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes when expanding all nodes.\n */\n expandAll(nodes, level, excludeHiddenNodes) {\n if (!isNullOrUndefined(nodes)) {\n this.doGivenAction(nodes, EXPANDABLE, true);\n }\n else {\n if (level > 0) {\n this.expandByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.expandAllNodes(excludeHiddenNodes);\n }\n }\n }\n /**\n * Gets all the checked nodes including child, whether it is loaded or not.\n */\n getAllCheckedNodes() {\n let checkNodes = this.checkedNodes;\n return checkNodes;\n }\n /**\n * Gets all the disabled nodes including child, whether it is loaded or not.\n */\n getDisabledNodes() {\n let disabledNodes = this.disableNode;\n return disabledNodes;\n }\n /**\n * Get the node's data such as id, text, parentID, selected, isChecked, and expanded by passing the node element or it's ID.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @BlazorType NodeData\n */\n getNode(node) {\n let ele = this.getElement(node);\n return this.getNodeData(ele, true);\n }\n /**\n * To get the updated data source of TreeView after performing some operation like drag and drop, node editing,\n * node selecting/unSelecting, node expanding/collapsing, node checking/unChecking, adding and removing node.\n * * If you pass the ID of TreeView node as arguments for this method then it will return the updated data source\n * of the corresponding node otherwise it will return the entire updated data source of TreeView.\n * * The updated data source also contains custom attributes if you specified in data source.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @isGenericType true\n */\n getTreeData(node) {\n let id = this.getId(node);\n this.updatePersistProp();\n if (isNullOrUndefined(id)) {\n return this.treeData;\n }\n else {\n let data = this.getNodeObject(id);\n return isNullOrUndefined(data) ? [] : [data];\n }\n }\n /**\n * Moves the collection of nodes within the same TreeView based on target or its index position.\n * @param {string[] | Element[]} sourceNodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {number} index - Specifies the index to place the moved nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n */\n moveNodes(sourceNodes, target, index, preventTargetExpand) {\n let dropLi = this.getElement(target);\n if (isNullOrUndefined(dropLi)) {\n return;\n }\n for (let i = 0; i < sourceNodes.length; i++) {\n let dragLi = this.getElement(sourceNodes[i]);\n if (isNullOrUndefined(dragLi) || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n continue;\n }\n this.preventExpand = preventTargetExpand;\n this.dropAsChildNode(dragLi, dropLi, this, index);\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n this.triggerEvent();\n }\n /**\n * Refreshes a particular node of the TreeView.\n * @param {string | Element} target - Specifies the ID of TreeView node or TreeView node as target element.\n * @param {{ [key: string]: Object }[]} newData - Specifies the new data of TreeView node.\n */\n refreshNode(target, newData) {\n if (isNullOrUndefined(target) || isNullOrUndefined(newData)) {\n return;\n }\n let id;\n let isRefreshChild = false;\n if (this.dataType == 1 && newData.length > 1) {\n isRefreshChild = true;\n }\n else if (this.dataType == 2 && newData.length === 1) {\n let updatedChildValue = getValue(this.fields.child.toString(), newData[0]);\n if (!isNullOrUndefined(updatedChildValue)) {\n isRefreshChild = true;\n }\n }\n let liEle = this.getElement(target);\n id = liEle ? liEle.getAttribute('data-uid') : ((target) ? target.toString() : null);\n this.refreshData = this.getNodeObject(id);\n newData = JSON.parse(JSON.stringify(newData));\n // tslint:disable\n let newNodeData;\n let parentData;\n if (this.dataType == 1 && isRefreshChild) {\n for (let k = 0; k < newData.length; k++) {\n if (isNullOrUndefined(newData[k][this.fields.parentID])) {\n parentData = newData[k];\n newData.splice(k, 1);\n break;\n }\n }\n newNodeData = extend({}, this.refreshData, parentData);\n }\n else {\n newNodeData = extend({}, this.refreshData, newData[0]);\n }\n if (isNullOrUndefined(liEle)) {\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n return;\n }\n this.isRefreshed = true;\n let level = parseFloat(liEle.getAttribute('aria-level'));\n let newliEle = ListBase.createListItemFromJson(this.createElement, [newNodeData], this.listBaseOption, level);\n let ul = select('.' + PARENTITEM, liEle);\n let childItems = getValue(this.fields.child.toString(), newNodeData);\n if ((isRefreshChild && ul) || (isRefreshChild && !isNullOrUndefined(childItems))) {\n liEle.innerHTML = newliEle[0].innerHTML;\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n if (isRefreshChild && ul) {\n this.expandAll([id]);\n }\n }\n else {\n let txtEle = select('.' + TEXTWRAP, liEle);\n let newTextEle = select('.' + TEXTWRAP, newliEle[0]);\n let icon = select('div.' + ICON, txtEle);\n let newIcon = select('div.' + ICON, newTextEle);\n if (icon && newIcon) {\n if (newIcon.classList.contains(EXPANDABLE) && icon.classList.contains(COLLAPSIBLE)) {\n removeClass([newIcon], EXPANDABLE);\n addClass([newIcon], COLLAPSIBLE);\n }\n else if (newIcon.classList.contains(COLLAPSIBLE) && icon.classList.contains(EXPANDABLE)) {\n removeClass([newIcon], COLLAPSIBLE);\n addClass([newIcon], EXPANDABLE);\n }\n else if (icon.classList.contains('interaction')) {\n addClass([newIcon], 'interaction');\n }\n }\n txtEle.innerHTML = newTextEle.innerHTML;\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n }\n if (newNodeData[this.fields.tooltip]) {\n liEle.setAttribute(\"title\", newNodeData[this.fields.tooltip]);\n }\n if (newNodeData.hasOwnProperty(this.fields.htmlAttributes) && newNodeData[this.fields.htmlAttributes]) {\n let attr = {};\n merge(attr, newNodeData[this.fields.htmlAttributes]);\n if (attr.class) {\n addClass([liEle], attr.class.split(' '));\n delete attr.class;\n }\n else {\n attributes(liEle, attr);\n }\n }\n this.isRefreshed = false;\n this.triggerEvent();\n }\n /**\n * Removes the collection of TreeView nodes by passing the array of node details as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n removeNodes(nodes) {\n if (!isNullOrUndefined(nodes)) {\n if (this.fields.dataSource instanceof DataManager && !this.isOffline && (this.fields.dataSource.adaptorName !== 'BlazorAdaptor')) {\n this.crudOperation('delete', nodes);\n }\n else {\n this.deleteSuccess(nodes);\n }\n }\n }\n /**\n * Replaces the text of the TreeView node with the given text.\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {string} newText - Specifies the new text of TreeView node.\n */\n updateNode(target, newText) {\n if (isNullOrUndefined(target) || isNullOrUndefined(newText) || !this.allowEditing) {\n return;\n }\n let liEle = this.getElement(target);\n if (isNullOrUndefined(liEle)) {\n return;\n }\n let txtEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n let eventArgs = this.getEditEvent(liEle, null, null);\n this.trigger('nodeEditing', eventArgs, (observedArgs) => {\n if (!observedArgs.cancel) {\n if (this.fields.dataSource instanceof DataManager && !this.isOffline && (this.fields.dataSource.adaptorName !== 'BlazorAdaptor')) {\n this.crudOperation('update', null, target, newText, null, null, false);\n }\n else {\n this.appendNewText(liEle, txtEle, newText, false);\n }\n }\n });\n }\n /**\n * Unchecks all the checked nodes. You can also uncheck the specific nodes by passing array of checked nodes\n * as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n uncheckAll(nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, false);\n }\n }\n};\n__decorate$8([\n Property(false)\n], TreeView.prototype, \"allowDragAndDrop\", void 0);\n__decorate$8([\n Property(false)\n], TreeView.prototype, \"allowEditing\", void 0);\n__decorate$8([\n Property(false)\n], TreeView.prototype, \"allowMultiSelection\", void 0);\n__decorate$8([\n Complex({}, NodeAnimationSettings)\n], TreeView.prototype, \"animation\", void 0);\n__decorate$8([\n Property()\n], TreeView.prototype, \"checkedNodes\", void 0);\n__decorate$8([\n Property('')\n], TreeView.prototype, \"cssClass\", void 0);\n__decorate$8([\n Property(false)\n], TreeView.prototype, \"disabled\", void 0);\n__decorate$8([\n Property(null)\n], TreeView.prototype, \"dragArea\", void 0);\n__decorate$8([\n Property(false)\n], TreeView.prototype, \"enableHtmlSanitizer\", void 0);\n__decorate$8([\n Property(false)\n], TreeView.prototype, \"enablePersistence\", void 0);\n__decorate$8([\n Property()\n], TreeView.prototype, \"expandedNodes\", void 0);\n__decorate$8([\n Property('Auto')\n], TreeView.prototype, \"expandOn\", void 0);\n__decorate$8([\n Complex({}, FieldsSettings)\n], TreeView.prototype, \"fields\", void 0);\n__decorate$8([\n Property(true)\n], TreeView.prototype, \"fullRowSelect\", void 0);\n__decorate$8([\n Property(true)\n], TreeView.prototype, \"loadOnDemand\", void 0);\n__decorate$8([\n Property()\n], TreeView.prototype, \"locale\", void 0);\n__decorate$8([\n Property()\n], TreeView.prototype, \"nodeTemplate\", void 0);\n__decorate$8([\n Property()\n], TreeView.prototype, \"selectedNodes\", void 0);\n__decorate$8([\n Property('None')\n], TreeView.prototype, \"sortOrder\", void 0);\n__decorate$8([\n Property(false)\n], TreeView.prototype, \"showCheckBox\", void 0);\n__decorate$8([\n Property(true)\n], TreeView.prototype, \"autoCheck\", void 0);\n__decorate$8([\n Property(false)\n], TreeView.prototype, \"fullRowNavigable\", void 0);\n__decorate$8([\n Event()\n], TreeView.prototype, \"actionFailure\", void 0);\n__decorate$8([\n Event()\n], TreeView.prototype, \"created\", void 0);\n__decorate$8([\n Event()\n], TreeView.prototype, \"dataBound\", void 0);\n__decorate$8([\n Event()\n], TreeView.prototype, \"dataSourceChanged\", void 0);\n__decorate$8([\n Event()\n], TreeView.prototype, \"drawNode\", void 0);\n__decorate$8([\n Event()\n], TreeView.prototype, \"destroyed\", void 0);\n__decorate$8([\n Event()\n], TreeView.prototype, \"keyPress\", void 0);\n__decorate$8([\n Event()\n], TreeView.prototype, \"nodeChecked\", void 0);\n__decorate$8([\n Event()\n], TreeView.prototype, \"nodeChecking\", void 0);\n__decorate$8([\n Event()\n], TreeView.prototype, \"nodeClicked\", void 0);\n__decorate$8([\n Event()\n], TreeView.prototype, \"nodeCollapsed\", void 0);\n__decorate$8([\n Event()\n], TreeView.prototype, \"nodeCollapsing\", void 0);\n__decorate$8([\n Event()\n], TreeView.prototype, \"nodeDragging\", void 0);\n__decorate$8([\n Event()\n], TreeView.prototype, \"nodeDragStart\", void 0);\n__decorate$8([\n Event()\n], TreeView.prototype, \"nodeDragStop\", void 0);\n__decorate$8([\n Event()\n], TreeView.prototype, \"nodeDropped\", void 0);\n__decorate$8([\n Event()\n], TreeView.prototype, \"nodeEdited\", void 0);\n__decorate$8([\n Event()\n], TreeView.prototype, \"nodeEditing\", void 0);\n__decorate$8([\n Event()\n], TreeView.prototype, \"nodeExpanded\", void 0);\n__decorate$8([\n Event()\n], TreeView.prototype, \"nodeExpanding\", void 0);\n__decorate$8([\n Event()\n], TreeView.prototype, \"nodeSelected\", void 0);\n__decorate$8([\n Event()\n], TreeView.prototype, \"nodeSelecting\", void 0);\nTreeView = TreeView_1 = __decorate$8([\n NotifyPropertyChanges\n], TreeView);\n\n/**\n * TreeView modules\n */\n\nvar __decorate$9 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst CONTROL$1 = 'e-control';\nconst ROOT$1 = 'e-sidebar';\nconst DOCKER = 'e-dock';\nconst CLOSE = 'e-close';\nconst OPEN = 'e-open';\nconst TRASITION = 'e-transition';\nconst DEFAULTBACKDROP = 'e-sidebar-overlay';\nconst CONTEXTBACKDROP = 'e-backdrop';\nconst RTL$2 = 'e-rtl';\nconst RIGHT = 'e-right';\nconst LEFT = 'e-left';\nconst OVER = 'e-over';\nconst PUSH = 'e-push';\nconst SLIDE = 'e-slide';\nconst VISIBILITY = 'e-visibility';\nconst MAINCONTENTANIMATION = 'e-content-animation';\nconst DISABLEANIMATION = 'e-disable-animation';\nconst CONTEXT = 'e-sidebar-context';\nconst SIDEBARABSOLUTE = 'e-sidebar-absolute';\n/**\n * Sidebar is an expandable or collapsible\n * component that typically act as a side container to place the primary or secondary content alongside of the main content.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nlet Sidebar = class Sidebar extends Component {\n constructor(options, element) {\n super(options, element);\n this.isBlazor = false;\n }\n preRender() {\n this.isBlazor = (isBlazor() && this.isServerRendered);\n if (!this.isBlazor) {\n this.setWidth();\n }\n }\n render() {\n this.initialize();\n this.wireEvents();\n this.renderComplete();\n }\n initialize() {\n this.setTarget();\n this.addClass();\n if (!this.isBlazor) {\n this.setZindex();\n }\n if (this.enableDock) {\n this.setDock();\n }\n if (this.isOpen) {\n this.show();\n }\n else {\n this.setMediaQuery();\n }\n this.checkType(true);\n this.setType(this.type);\n this.setCloseOnDocumentClick();\n if (!this.isBlazor) {\n this.setEnableRTL();\n }\n if (Browser.isDevice) {\n this.windowWidth = window.innerWidth;\n }\n }\n setEnableRTL() {\n this.enableRtl ? (addClass([this.element], RTL$2)) :\n (removeClass([this.element], RTL$2));\n }\n setTarget() {\n this.targetEle = this.element.nextElementSibling;\n this.sidebarEleCopy = this.element.cloneNode(true);\n if (typeof (this.target) === 'string') {\n this.setProperties({ target: document.querySelector(this.target) }, true);\n }\n if (this.target) {\n this.target.insertBefore(this.element, this.target.children[0]);\n addClass([this.element], SIDEBARABSOLUTE);\n addClass([this.target], CONTEXT);\n this.targetEle = this.getTargetElement();\n }\n }\n getTargetElement() {\n let siblingElement = this.element.nextElementSibling;\n while (!isNullOrUndefined(siblingElement)) {\n if (!siblingElement.classList.contains(ROOT$1)) {\n break;\n }\n siblingElement = siblingElement.nextElementSibling;\n }\n return siblingElement;\n }\n setCloseOnDocumentClick() {\n if (this.closeOnDocumentClick) {\n EventHandler.add(document, 'mousedown touchstart', this.documentclickHandler, this);\n }\n else {\n EventHandler.remove(document, 'mousedown touchstart', this.documentclickHandler);\n }\n }\n setWidth() {\n if (this.enableDock && this.position === 'Left') {\n setStyleAttribute(this.element, { 'width': this.setDimension(this.dockSize) });\n }\n else if (this.enableDock && this.position === 'Right') {\n setStyleAttribute(this.element, { 'width': this.setDimension(this.dockSize) });\n }\n else if (!this.enableDock) {\n setStyleAttribute(this.element, { 'width': this.setDimension(this.width) });\n }\n }\n setDimension(width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n width = (width.match(/px|%|em/)) ? width : formatUnit(width);\n }\n else {\n width = '100%';\n }\n return width;\n }\n setZindex() {\n setStyleAttribute(this.element, { 'z-index': '' + this.zIndex });\n }\n addClass() {\n let classELement = document.querySelector('.e-main-content');\n if (!isNullOrUndefined(classELement || this.targetEle)) {\n addClass([classELement || this.targetEle], [MAINCONTENTANIMATION]);\n }\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n if (!this.isBlazor) {\n if (!this.enableDock && this.type !== 'Auto') {\n addClass([this.element], [VISIBILITY]);\n }\n removeClass([this.element], [OPEN, CLOSE, RIGHT, LEFT, SLIDE, PUSH, OVER]);\n this.element.classList.add(ROOT$1);\n addClass([this.element], (this.position === 'Right') ? RIGHT : LEFT);\n if (this.enableDock) {\n addClass([this.element], DOCKER);\n }\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n if (this.type === 'Auto' && !Browser.isDevice) {\n this.show();\n }\n else if (!this.isOpen) {\n addClass([this.element], CLOSE);\n }\n }\n checkType(val) {\n if (!(this.type === 'Push' || this.type === 'Over' || this.type === 'Slide')) {\n this.type = 'Auto';\n }\n else {\n if (!this.element.classList.contains(CLOSE) && !val) {\n this.hide();\n }\n }\n }\n transitionEnd(e) {\n this.setDock();\n if (!isNullOrUndefined(e) && e.target === this.element) {\n this.triggerChange();\n }\n EventHandler.remove(this.element, 'transitionend', this.transitionEnd);\n }\n destroyBackDrop() {\n let sibling = document.querySelector('.e-main-content') || this.targetEle;\n if (this.target && this.showBackdrop && sibling) {\n removeClass([sibling], CONTEXTBACKDROP);\n }\n else if (this.showBackdrop && this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n }\n /**\n * Hide the Sidebar component, if it is in an open state.\n * @returns void\n */\n hide(e) {\n let closeArguments = {\n model: this,\n element: this.element,\n cancel: false,\n isInteracted: !isNullOrUndefined(e),\n event: (e || null)\n };\n if (isBlazor()) {\n delete closeArguments.model;\n }\n this.trigger('close', closeArguments, (observedcloseArgs) => {\n if (!observedcloseArgs.cancel) {\n if (this.element.classList.contains(CLOSE)) {\n return;\n }\n if (this.element.classList.contains(OPEN) && !this.animate) {\n this.triggerChange();\n }\n addClass([this.element], CLOSE);\n removeClass([this.element], OPEN);\n this.enableDock ? setStyleAttribute(this.element, { 'width': formatUnit(this.dockSize) }) :\n setStyleAttribute(this.element, { 'width': formatUnit(this.width) });\n this.setType(this.type);\n let sibling = document.querySelector('.e-main-content') || this.targetEle;\n if (!this.enableDock && sibling) {\n sibling.style.transform = 'translateX(' + 0 + 'px)';\n this.position === 'Left' ? sibling.style.marginLeft = '0px' : sibling.style.marginRight = '0px';\n }\n this.destroyBackDrop();\n this.setAnimation();\n if (this.type === 'Slide') {\n document.body.classList.remove('e-sidebar-overflow');\n }\n this.setProperties({ isOpen: false }, true);\n if (this.enableDock) {\n setTimeout(() => this.setTimeOut(), 50);\n }\n EventHandler.add(this.element, 'transitionend', this.transitionEnd, this);\n }\n });\n }\n setTimeOut() {\n let sibling = document.querySelector('.e-main-content') || this.targetEle;\n if (this.element.classList.contains(OPEN) && sibling) {\n if (this.position === 'Left') {\n this.width === 'auto' ? sibling.style.marginLeft = this.setDimension(this.element.getBoundingClientRect().width)\n : sibling.style.marginLeft = this.setDimension(this.width);\n }\n else {\n this.width === 'auto' ? sibling.style.marginRight = this.setDimension(this.element.getBoundingClientRect().width)\n : sibling.style.marginRight = this.setDimension(this.width);\n }\n }\n else if (this.element.classList.contains(CLOSE) && sibling) {\n if (this.position === 'Left') {\n this.dockSize === 'auto' ? sibling.style.marginLeft = this.setDimension(this.element.getBoundingClientRect().width)\n : sibling.style.marginLeft = this.setDimension(this.dockSize);\n }\n else {\n this.dockSize === 'auto' ? sibling.style.marginRight = this.setDimension(this.element.getBoundingClientRect().width)\n : sibling.style.marginRight = this.setDimension(this.dockSize);\n }\n }\n }\n ;\n /**\n * Shows the Sidebar component, if it is in closed state.\n * @returns void\n */\n show(e) {\n let openArguments = {\n model: this,\n element: this.element,\n cancel: false,\n isInteracted: !isNullOrUndefined(e),\n event: (e || null)\n };\n if (isBlazor()) {\n delete openArguments.model;\n }\n this.trigger('open', openArguments, (observedopenArgs) => {\n if (!observedopenArgs.cancel) {\n removeClass([this.element], VISIBILITY);\n if (this.element.classList.contains(OPEN)) {\n return;\n }\n if (this.element.classList.contains(CLOSE) && !this.animate) {\n this.triggerChange();\n }\n addClass([this.element], [OPEN, TRASITION]);\n setStyleAttribute(this.element, { 'transform': '' });\n removeClass([this.element], CLOSE);\n setStyleAttribute(this.element, { 'width': formatUnit(this.width) });\n this.setType(this.type);\n this.createBackDrop();\n this.setAnimation();\n if (this.type === 'Slide') {\n document.body.classList.add('e-sidebar-overflow');\n }\n this.setProperties({ isOpen: true }, true);\n EventHandler.add(this.element, 'transitionend', this.transitionEnd, this);\n }\n });\n }\n setAnimation() {\n if (this.animate) {\n removeClass([this.element], DISABLEANIMATION);\n }\n else {\n addClass([this.element], DISABLEANIMATION);\n }\n }\n triggerChange() {\n let changeArguments = { name: 'change', element: this.element };\n this.trigger('change', changeArguments);\n }\n setDock() {\n if (this.enableDock && this.position === 'Left' && !this.getState()) {\n setStyleAttribute(this.element, { 'transform': 'translateX(' + -100 + '%) translateX(' + this.setDimension(this.dockSize) + ')' });\n }\n else if (this.enableDock && this.position === 'Right' && !this.getState()) {\n setStyleAttribute(this.element, { 'transform': 'translateX(' + 100 + '%) translateX(' + '-' + this.setDimension(this.dockSize) + ')' });\n }\n if (this.element.classList.contains(CLOSE) && this.enableDock) {\n setStyleAttribute(this.element, { 'width': this.setDimension(this.dockSize) });\n }\n }\n createBackDrop() {\n if (this.target && this.showBackdrop && this.getState()) {\n let sibling = document.querySelector('.e-main-content') || this.targetEle;\n addClass([sibling], CONTEXTBACKDROP);\n }\n else if (this.showBackdrop && !this.modal && this.getState()) {\n this.modal = this.createElement('div');\n this.modal.className = DEFAULTBACKDROP;\n this.modal.style.display = 'block';\n document.body.appendChild(this.modal);\n }\n }\n getPersistData() {\n return this.addOnPersist(['type', 'position', 'isOpen']);\n }\n /**\n * Returns the current module name.\n * @returns string\n * @private\n */\n getModuleName() {\n return 'sidebar';\n }\n /**\n * Shows or hides the Sidebar based on the current state.\n * @returns void\n */\n toggle(e) {\n this.element.classList.contains(OPEN) ? this.hide() : this.show();\n }\n getState() {\n return this.element.classList.contains(OPEN) ? true : false;\n }\n setMediaQuery() {\n if (this.mediaQuery) {\n let media = false;\n if (typeof (this.mediaQuery) === 'string') {\n media = window.matchMedia(this.mediaQuery).matches;\n }\n else {\n media = (this.mediaQuery).matches;\n }\n if (media && this.windowWidth !== window.innerWidth) {\n this.show();\n }\n else if (this.getState() && this.windowWidth !== window.innerWidth) {\n this.hide();\n }\n }\n }\n resize(e) {\n if (this.type === 'Auto') {\n if (Browser.isDevice) {\n addClass([this.element], OVER);\n }\n else {\n addClass([this.element], PUSH);\n }\n }\n this.setMediaQuery();\n if (Browser.isDevice) {\n this.windowWidth = window.innerWidth;\n }\n }\n documentclickHandler(e) {\n if (closest(e.target, '.' + CONTROL$1 + '' + '.' + ROOT$1)) {\n return;\n }\n this.hide(e);\n }\n enableGestureHandler(args) {\n if (!this.isOpen && this.position === 'Left' && args.swipeDirection === 'Right' &&\n (args.startX <= 20 && args.distanceX >= 50 && args.velocity >= 0.5)) {\n this.show();\n }\n else if (this.isOpen && this.position === 'Left' && args.swipeDirection === 'Left') {\n this.hide();\n }\n else if (this.isOpen && this.position === 'Right' && args.swipeDirection === 'Right') {\n this.hide();\n }\n else if (!this.isOpen && this.position === 'Right' && args.swipeDirection === 'Left'\n && (window.innerWidth - args.startX <= 20 && args.distanceX >= 50 && args.velocity >= 0.5)) {\n this.show();\n }\n }\n setEnableGestures() {\n if (this.enableGestures) {\n this.mainContentEle = new Touch(document.body, { swipe: this.enableGestureHandler.bind(this) });\n this.sidebarEle = new Touch(this.element, { swipe: this.enableGestureHandler.bind(this) });\n }\n else {\n if (this.mainContentEle && this.sidebarEle) {\n this.mainContentEle.destroy();\n this.sidebarEle.destroy();\n }\n }\n }\n wireEvents() {\n this.setEnableGestures();\n window.addEventListener('resize', this.resize.bind(this));\n }\n unWireEvents() {\n window.removeEventListener('resize', this.resize.bind(this));\n EventHandler.remove(document, 'mousedown touchstart', this.documentclickHandler);\n if (this.mainContentEle) {\n this.mainContentEle.destroy();\n }\n if (this.sidebarEle) {\n this.sidebarEle.destroy();\n }\n }\n /**\n * Called internally if any of the property value changed.\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n let sibling = document.querySelector('.e-main-content') || this.targetEle;\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'isOpen':\n this.isOpen ? this.show() : this.hide();\n break;\n case 'width':\n this.setWidth();\n if (!this.getState()) {\n this.setDock();\n }\n break;\n case 'animate':\n this.setAnimation();\n break;\n case 'type':\n this.checkType(false);\n removeClass([this.element], [VISIBILITY]);\n this.addClass();\n addClass([this.element], this.type === 'Auto' ? (Browser.isDevice ? ['e-over'] :\n ['e-push']) : ['e-' + this.type.toLowerCase()]);\n break;\n case 'position':\n this.element.style.transform = '';\n this.setDock();\n if (sibling) {\n this.position === 'Left' ? sibling.style.marginRight = '0px' : sibling.style.marginLeft = '0px';\n }\n if (this.position === 'Right') {\n removeClass([this.element], LEFT);\n addClass([this.element], RIGHT);\n }\n else {\n removeClass([this.element], RIGHT);\n addClass([this.element], LEFT);\n }\n this.setType(this.type);\n break;\n case 'showBackdrop':\n if (this.showBackdrop) {\n this.createBackDrop();\n }\n else {\n if (this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n }\n break;\n case 'target':\n if (typeof (this.target) === 'string') {\n this.setProperties({ target: document.querySelector(this.target) }, true);\n }\n if (isNullOrUndefined(this.target)) {\n removeClass([this.element], SIDEBARABSOLUTE);\n removeClass([oldProp.target], CONTEXT);\n setStyleAttribute(sibling, { 'margin-left': 0, 'margin-right': 0 });\n document.body.insertAdjacentElement('afterbegin', this.element);\n }\n let isRendered = this.isServerRendered;\n this.isServerRendered = false;\n super.refresh();\n this.isServerRendered = isRendered;\n break;\n case 'closeOnDocumentClick':\n this.setCloseOnDocumentClick();\n break;\n case 'enableDock':\n if (!this.getState()) {\n this.setDock();\n }\n break;\n case 'zIndex':\n this.setZindex();\n break;\n case 'mediaQuery':\n this.setMediaQuery();\n break;\n case 'enableGestures':\n this.setEnableGestures();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n }\n }\n }\n setType(type) {\n let elementWidth = this.element.getBoundingClientRect().width;\n this.setZindex();\n let sibling = document.querySelector('.e-main-content') || this.targetEle;\n if (sibling) {\n sibling.style.transform = 'translateX(' + 0 + 'px)';\n if (!Browser.isDevice && this.type !== 'Auto') {\n this.position === 'Left' ? sibling.style.marginLeft = '0px' : sibling.style.marginRight = '0px';\n }\n }\n let margin = this.position === 'Left' ? elementWidth + 'px' : elementWidth + 'px';\n let eleWidth = this.position === 'Left' ? elementWidth : -(elementWidth);\n removeClass([this.element], [PUSH, OVER, SLIDE]);\n switch (type) {\n case 'Push':\n addClass([this.element], [PUSH]);\n if (sibling && (this.enableDock || this.element.classList.contains(OPEN))) {\n this.position === 'Left' ? sibling.style.marginLeft = margin : sibling.style.marginRight = margin;\n }\n break;\n case 'Slide':\n addClass([this.element], [SLIDE]);\n if (sibling && (this.enableDock || this.element.classList.contains(OPEN))) {\n sibling.style.transform = 'translateX(' + eleWidth + 'px)';\n }\n break;\n case 'Over':\n addClass([this.element], [OVER]);\n if (this.enableDock && this.element.classList.contains(CLOSE)) {\n if (sibling) {\n this.position === 'Left' ? sibling.style.marginLeft = margin : sibling.style.marginRight = margin;\n }\n }\n break;\n case 'Auto':\n addClass([this.element], [TRASITION]);\n if (Browser.isDevice) {\n if (sibling && (this.enableDock) && !this.getState()) {\n this.position === 'Left' ? sibling.style.marginLeft = margin : sibling.style.marginRight = margin;\n addClass([this.element], PUSH);\n }\n else {\n addClass([this.element], OVER);\n }\n }\n else {\n addClass([this.element], PUSH);\n if (sibling && (this.enableDock || this.element.classList.contains(OPEN))) {\n this.position === 'Left' ? sibling.style.marginLeft = margin : sibling.style.marginRight = margin;\n }\n }\n this.createBackDrop();\n }\n }\n /**\n * Removes the control from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n * @returns void\n */\n destroy() {\n super.destroy();\n removeClass([this.element], [OPEN, CLOSE, PUSH, SLIDE, OVER, LEFT, RIGHT, TRASITION]);\n if (this.target) {\n removeClass([this.element], SIDEBARABSOLUTE);\n removeClass([this.target], CONTEXT);\n }\n this.destroyBackDrop();\n this.element.style.width = '';\n this.element.style.zIndex = '';\n this.element.style.transform = '';\n this.windowWidth = null;\n (!isNullOrUndefined(this.sidebarEleCopy.getAttribute('tabindex'))) ?\n this.element.setAttribute('tabindex', this.tabIndex) : this.element.removeAttribute('tabindex');\n let sibling = document.querySelector('.e-main-content') || this.targetEle;\n if (!isNullOrUndefined(sibling)) {\n sibling.style.margin = '';\n sibling.style.transform = '';\n }\n this.unWireEvents();\n }\n};\n__decorate$9([\n Property('auto')\n], Sidebar.prototype, \"dockSize\", void 0);\n__decorate$9([\n Property(null)\n], Sidebar.prototype, \"mediaQuery\", void 0);\n__decorate$9([\n Property(false)\n], Sidebar.prototype, \"enableDock\", void 0);\n__decorate$9([\n Property('en-US')\n], Sidebar.prototype, \"locale\", void 0);\n__decorate$9([\n Property(false)\n], Sidebar.prototype, \"enablePersistence\", void 0);\n__decorate$9([\n Property(true)\n], Sidebar.prototype, \"enableGestures\", void 0);\n__decorate$9([\n Property(false)\n], Sidebar.prototype, \"isOpen\", void 0);\n__decorate$9([\n Property(false)\n], Sidebar.prototype, \"enableRtl\", void 0);\n__decorate$9([\n Property(true)\n], Sidebar.prototype, \"animate\", void 0);\n__decorate$9([\n Property('auto')\n], Sidebar.prototype, \"height\", void 0);\n__decorate$9([\n Property(false)\n], Sidebar.prototype, \"closeOnDocumentClick\", void 0);\n__decorate$9([\n Property('Left')\n], Sidebar.prototype, \"position\", void 0);\n__decorate$9([\n Property(null)\n], Sidebar.prototype, \"target\", void 0);\n__decorate$9([\n Property(false)\n], Sidebar.prototype, \"showBackdrop\", void 0);\n__decorate$9([\n Property('Auto')\n], Sidebar.prototype, \"type\", void 0);\n__decorate$9([\n Property('auto')\n], Sidebar.prototype, \"width\", void 0);\n__decorate$9([\n Property(1000)\n], Sidebar.prototype, \"zIndex\", void 0);\n__decorate$9([\n Event()\n], Sidebar.prototype, \"created\", void 0);\n__decorate$9([\n Event()\n], Sidebar.prototype, \"close\", void 0);\n__decorate$9([\n Event()\n], Sidebar.prototype, \"open\", void 0);\n__decorate$9([\n Event()\n], Sidebar.prototype, \"change\", void 0);\n__decorate$9([\n Event()\n], Sidebar.prototype, \"destroyed\", void 0);\nSidebar = __decorate$9([\n NotifyPropertyChanges\n], Sidebar);\n\n/**\n * Sidebar modules\n */\n\n/**\n * Navigation all modules\n */\n\nexport { MenuAnimationSettings, MenuItem, HScroll, VScroll, Item, Toolbar, AccordionActionSettings, AccordionAnimationSettings, AccordionItem, Accordion, ContextMenu, Menu, TabActionSettings, TabAnimationSettings, Header, TabItem, Tab, FieldsSettings, ActionSettings, NodeAnimationSettings, TreeView, Sidebar };\n//# sourceMappingURL=ej2-navigations.es2015.js.map\n","import { CompressedStreamWriter } from '@syncfusion/ej2-compression';\nimport { Encoding, StreamWriter } from '@syncfusion/ej2-file-utils';\n\n/**\n * @private\n * @hidden\n */\nfunction defaultToString(item) {\n // if (item === null) {\n // return 'COLLECTION_NULL';\n // } else if (typeof item === 'undefined') {\n // return 'COLLECTION_UNDEFINED';\n // } else if (Object.prototype.toString.call(item) === '[object String]') {\n if (Object.prototype.toString.call(item) === '[object String]') {\n return '$s' + item;\n }\n else {\n return '$o' + item.toString();\n }\n}\n\n/**\n * Dictionary.ts class for EJ2-PDF\n * @private\n * @hidden\n */\n/**\n * @private\n * @hidden\n */\nclass Dictionary {\n /**\n * @private\n * @hidden\n */\n constructor(toStringFunction) {\n this.table = {};\n this.nElements = 0;\n this.toStr = toStringFunction || defaultToString;\n }\n /**\n * @private\n * @hidden\n */\n getValue(key) {\n const pair = this.table['$' + this.toStr(key)];\n if (typeof pair === 'undefined') {\n return undefined;\n }\n return pair.value;\n }\n /**\n * @private\n * @hidden\n */\n setValue(key, value) {\n // if (typeof key === 'undefined' || typeof value === 'undefined') {\n // return undefined;\n // }\n let ret;\n const k = '$' + this.toStr(key);\n const previousElement = this.table[k];\n // if (typeof previousElement === 'undefined') {\n this.nElements++;\n ret = undefined;\n // }\n this.table[k] = {\n key: key,\n value: value\n };\n return ret;\n }\n /**\n * @private\n * @hidden\n */\n remove(key) {\n const k = '$' + this.toStr(key);\n const previousElement = this.table[k];\n // if (typeof previousElement !== 'undefined') {\n delete this.table[k];\n this.nElements--;\n return previousElement.value;\n // }\n // return undefined;\n }\n /**\n * @private\n * @hidden\n */\n keys() {\n const keysArray = [];\n let namesOfKeys = Object.keys(this.table);\n for (let index1 = 0; index1 < namesOfKeys.length; index1++) {\n // if (Object.prototype.hasOwnProperty.call(this.table, namesOfKeys[index1])) {\n const pair1 = this.table[namesOfKeys[index1]];\n keysArray.push(pair1.key);\n // }\n }\n return keysArray;\n }\n /**\n * @private\n * @hidden\n */\n values() {\n const valuesArray = [];\n let namesOfValues = Object.keys(this.table);\n for (let index2 = 0; index2 < namesOfValues.length; index2++) {\n // if (Object.prototype.hasOwnProperty.call(this.table, namesOfValues[index2])) {\n const pair2 = this.table[namesOfValues[index2]];\n valuesArray.push(pair2.value);\n // }\n }\n return valuesArray;\n }\n /**\n * @private\n * @hidden\n */\n containsKey(key) {\n let retutnValue = true;\n if (typeof this.getValue(key) === 'undefined') {\n retutnValue = true;\n }\n else {\n retutnValue = false;\n }\n return !retutnValue;\n }\n /**\n * @private\n * @hidden\n */\n clear() {\n this.table = {};\n this.nElements = 0;\n }\n /**\n * @private\n * @hidden\n */\n size() {\n return this.nElements;\n }\n} // End of dictionary\n\n/**\n * `PdfName` class is used to perform name (element names) related primitive operations.\n * @private\n */\nclass PdfName {\n constructor(value) {\n /**\n * `Start symbol` of the name object.\n * @default /\n * @private\n */\n this.stringStartMark = '/';\n /**\n * `Value` of the element.\n * @private\n */\n this.internalValue = '';\n /**\n * Indicates if the object is currently in `saving state or not`.\n * @default false\n * @private\n */\n this.isSaving6 = false;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position6 = -1;\n this.internalValue = this.normalizeValue(value);\n }\n //property\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get status() {\n return this.status6;\n }\n set status(value) {\n this.status6 = value;\n }\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get isSaving() {\n return this.isSaving6;\n }\n set isSaving(value) {\n this.isSaving6 = value;\n }\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get objectCollectionIndex() {\n return this.index6;\n }\n set objectCollectionIndex(value) {\n this.index6 = value;\n }\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get position() {\n return this.position6;\n }\n set position(value) {\n this.position6 = value;\n }\n /**\n * Returns `cloned object`.\n * @private\n */\n get clonedObject() {\n return null;\n }\n /**\n * Gets or sets the `value` of the object.\n * @private\n */\n get value() {\n return this.internalValue;\n }\n set value(value) {\n // if (value !== this.value) {\n let val = value;\n if (value !== null && value.length > 0) {\n // val = (value.substring(0, 1) === this.stringStartMark) ? value.substring(1) : value;\n val = value;\n this.internalValue = this.normalizeValue(val);\n }\n else {\n this.internalValue = val;\n }\n // }\n }\n //public methods\n /**\n * `Saves` the name using the specified writer.\n * @private\n */\n save(writer) {\n // if (writer === null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n writer.write(this.toString());\n }\n /**\n * Gets `string` representation of the primitive.\n * @private\n */\n toString() {\n return (this.stringStartMark + this.escapeString(this.value));\n }\n /**\n * Creates a `copy of PdfName`.\n * @private\n */\n clone(crossTable) {\n let newName = new PdfName();\n newName.value = this.internalValue;\n return newName;\n }\n /**\n * Replace some characters with its `escape sequences`.\n * @private\n */\n escapeString(stringValue) {\n // if (str === null) {\n // throw new Error('ArgumentNullException : str');\n // }\n // if (str === '') {\n // return str;\n // }\n let result = '';\n for (let i = 0, len = stringValue.length; i < len; i++) {\n let ch = stringValue[i];\n let index = PdfName.delimiters.indexOf(ch);\n // switch (ch) {\n // case '\\r' :\n // result = result + '\\\\r';\n // break;\n // case '\\n' :\n // result = result + '\\n';\n // break;\n // case '(' :\n // case ')' :\n // case '\\\\' :\n // //result.Append( '\\\\' ).Append( ch );\n // result = result + ch;\n // break;\n // default :\n // result = result + ch;\n // break;\n // }\n result = result + ch;\n }\n return result;\n }\n //methiods\n /**\n * Replace a symbol with its code with the precedence of the `sharp sign`.\n * @private\n */\n normalizeValue(value, c) {\n // if (typeof c === undefined) {\n // let str : string = value;\n // for (let i : number = 0; i < PdfName.replacements.length; i++) {\n // str = this.normalizeValue(str, c);\n // }\n // return str;\n // } else {\n return value;\n // }\n }\n}\n/**\n * PDF `special characters`.\n * @private\n */\nPdfName.delimiters = '()<>[]{}/%}';\n/**\n * The symbols that are not allowed in PDF names and `should be replaced`.\n * @private\n */\nPdfName.replacements = [' ', '\\t', '\\n', '\\r'];\n\n/**\n * PdfOperators.ts class for EJ2-PDF\n * Class of string PDF common operators.\n * @private\n */\nclass Operators {\n /**\n * Create an instance of `PdfOperator` class.\n * @private\n */\n constructor() {\n /**\n * Specifies the value of `test`.\n * @private\n */\n this.forTest = 'test';\n this.forTest = Operators.obj;\n }\n}\n/**\n * Specifies the value of `obj`.\n * @private\n */\nOperators.obj = 'obj';\n/**\n * Specifies the value of `endObj`.\n * @private\n */\nOperators.endObj = 'endobj';\n/**\n * Specifies the value of `R`.\n * @private\n */\nOperators.r = 'R';\n/**\n * Specifies the value of ` `.\n * @private\n */\nOperators.whiteSpace = ' ';\n/**\n * Specifies the value of `/`.\n * @private\n */\nOperators.slash = '/';\n/**\n * Specifies the value of `\\r\\n`.\n * @private\n */\nOperators.newLine = '\\r\\n';\n/**\n * Specifies the value of `stream`.\n * @private\n */\nOperators.stream = 'stream';\n/**\n * Specifies the value of `endStream`.\n * @private\n */\nOperators.endStream = 'endstream';\n/**\n * Specifies the value of `xref`.\n * @private\n */\nOperators.xref = 'xref';\n/**\n * Specifies the value of `f`.\n * @private\n */\nOperators.f = 'f';\n/**\n * Specifies the value of `n`.\n * @private\n */\nOperators.n = 'n';\n/**\n * Specifies the value of `trailer`.\n * @private\n */\nOperators.trailer = 'trailer';\n/**\n * Specifies the value of `startxref`.\n * @private\n */\nOperators.startxref = 'startxref';\n/**\n * Specifies the value of `eof`.\n * @private\n */\nOperators.eof = '%%EOF';\n/**\n * Specifies the value of `header`.\n * @private\n */\nOperators.header = '%PDF-1.5';\n/**\n * Specifies the value of `beginText`.\n * @private\n */\nOperators.beginText = 'BT';\n/**\n * Specifies the value of `endText`.\n * @private\n */\nOperators.endText = 'ET';\n/**\n * Specifies the value of `m`.\n * @private\n */\nOperators.beginPath = 'm';\n/**\n * Specifies the value of `l`.\n * @private\n */\nOperators.appendLineSegment = 'l';\n/**\n * Specifies the value of `S`.\n * @private\n */\nOperators.stroke = 'S';\n/**\n * Specifies the value of `f`.\n * @private\n */\nOperators.fill = 'f';\n/**\n * Specifies the value of `f*`.\n * @private\n */\nOperators.fillEvenOdd = 'f*';\n/**\n * Specifies the value of `B`.\n * @private\n */\nOperators.fillStroke = 'B';\n/**\n * Specifies the value of `B*`.\n * @private\n */\nOperators.fillStrokeEvenOdd = 'B*';\n/**\n * Specifies the value of `c`.\n * @private\n */\nOperators.appendbeziercurve = 'c';\n/**\n * Specifies the value of `re`.\n * @private\n */\nOperators.appendRectangle = 're';\n/**\n * Specifies the value of `q`.\n * @private\n */\nOperators.saveState = 'q';\n/**\n * Specifies the value of `Q`.\n * @private\n */\nOperators.restoreState = 'Q';\n/**\n * Specifies the value of `Do`.\n * @private\n */\nOperators.paintXObject = 'Do';\n/**\n * Specifies the value of `cm`.\n * @private\n */\nOperators.modifyCtm = 'cm';\n/**\n * Specifies the value of `Tm`.\n * @private\n */\nOperators.modifyTM = 'Tm';\n/**\n * Specifies the value of `w`.\n * @private\n */\nOperators.setLineWidth = 'w';\n/**\n * Specifies the value of `J`.\n * @private\n */\nOperators.setLineCapStyle = 'J';\n/**\n * Specifies the value of `j`.\n * @private\n */\nOperators.setLineJoinStyle = 'j';\n/**\n * Specifies the value of `d`.\n * @private\n */\nOperators.setDashPattern = 'd';\n/**\n * Specifies the value of `i`.\n * @private\n */\nOperators.setFlatnessTolerance = 'i';\n/**\n * Specifies the value of `h`.\n * @private\n */\nOperators.closePath = 'h';\n/**\n * Specifies the value of `s`.\n * @private\n */\nOperators.closeStrokePath = 's';\n/**\n * Specifies the value of `b`.\n * @private\n */\nOperators.closeFillStrokePath = 'b';\n/**\n * Specifies the value of `setCharacterSpace`.\n * @private\n */\nOperators.setCharacterSpace = 'Tc';\n/**\n * Specifies the value of `setWordSpace`.\n * @private\n */\nOperators.setWordSpace = 'Tw';\n/**\n * Specifies the value of `setHorizontalScaling`.\n * @private\n */\nOperators.setHorizontalScaling = 'Tz';\n/**\n * Specifies the value of `setTextLeading`.\n * @private\n */\nOperators.setTextLeading = 'TL';\n/**\n * Specifies the value of `setFont`.\n * @private\n */\nOperators.setFont = 'Tf';\n/**\n * Specifies the value of `setRenderingMode`.\n * @private\n */\nOperators.setRenderingMode = 'Tr';\n/**\n * Specifies the value of `setTextRise`.\n * @private\n */\nOperators.setTextRise = 'Ts';\n/**\n * Specifies the value of `setTextScaling`.\n * @private\n */\nOperators.setTextScaling = 'Tz';\n/**\n * Specifies the value of `setCoords`.\n * @private\n */\nOperators.setCoords = 'Td';\n/**\n * Specifies the value of `goToNextLine`.\n * @private\n */\nOperators.goToNextLine = 'T*';\n/**\n * Specifies the value of `setText`.\n * @private\n */\nOperators.setText = 'Tj';\n/**\n * Specifies the value of `setTextWithFormatting`.\n * @private\n */\nOperators.setTextWithFormatting = 'TJ';\n/**\n * Specifies the value of `setTextOnNewLine`.\n * @private\n */\nOperators.setTextOnNewLine = '\\'';\n/**\n * Specifies the value of `selectcolorspaceforstroking`.\n * @private\n */\nOperators.selectcolorspaceforstroking = 'CS';\n/**\n * Specifies the value of `selectcolorspacefornonstroking`.\n * @private\n */\nOperators.selectcolorspacefornonstroking = 'cs';\n/**\n * Specifies the value of `setrbgcolorforstroking`.\n * @private\n */\nOperators.setrbgcolorforstroking = 'RG';\n/**\n * Specifies the value of `setrbgcolorfornonstroking`.\n * @private\n */\nOperators.setrbgcolorfornonstroking = 'rg';\n/**\n * Specifies the value of `K`.\n * @private\n */\nOperators.setcmykcolorforstroking = 'K';\n/**\n * Specifies the value of `k`.\n * @private\n */\nOperators.setcmykcolorfornonstroking = 'k';\n/**\n * Specifies the value of `G`.\n * @private\n */\nOperators.setgraycolorforstroking = 'G';\n/**\n * Specifies the value of `g`.\n * @private\n */\nOperators.setgraycolorfornonstroking = 'g';\n/**\n * Specifies the value of `W`.\n * @private\n */\nOperators.clipPath = 'W';\n/**\n * Specifies the value of `clipPathEvenOdd`.\n * @private\n */\nOperators.clipPathEvenOdd = 'W*';\n/**\n * Specifies the value of `n`.\n * @private\n */\nOperators.endPath = 'n';\n/**\n * Specifies the value of `setGraphicsState`.\n * @private\n */\nOperators.setGraphicsState = 'gs';\n/**\n * Specifies the value of `%`.\n * @private\n */\nOperators.comment = '%';\n/**\n * Specifies the value of `*`.\n * @private\n */\nOperators.evenOdd = '*';\n/**\n * Specifies the value of `M`.\n * @private\n */\nOperators.setMiterLimit = 'M';\n/**\n * Same as SC, but also supports Pattern, Separation, DeviceN, and ICCBased color spaces. For non-stroking operations.\n * @public\n */\nOperators.setColorAndPattern = 'scn';\n/**\n * Same as SC, but also supports Pattern, Separation, DeviceN, and ICCBased color spaces. For stroking.\n */\nOperators.setColorAndPatternStroking = 'SCN';\n\n/**\n * dictionaryProperties.ts class for EJ2-PDF\n * PDF dictionary properties.\n * @private\n */\nclass DictionaryProperties {\n /**\n * Initialize an instance for `PdfDictionaryProperties` class.\n * @private\n */\n constructor() {\n /**\n * Specifies the value of `Pages`.\n * @private\n */\n this.pages = 'Pages';\n /**\n * Specifies the value of `Kids`.\n * @private\n */\n this.kids = 'Kids';\n /**\n * Specifies the value of `Count`.\n * @private\n */\n this.count = 'Count';\n /**\n * Specifies the value of `Resources`.\n * @private\n */\n this.resources = 'Resources';\n /**\n * Specifies the value of `Type`.\n * @private\n */\n this.type = 'Type';\n /**\n * Specifies the value of `Size`.\n * @private\n */\n this.size = 'Size';\n /**\n * Specifies the value of `MediaBox`.\n * @private\n */\n this.mediaBox = 'MediaBox';\n /**\n * Specifies the value of `Parent`.\n * @private\n */\n this.parent = 'Parent';\n /**\n * Specifies the value of `Root`.\n * @private\n */\n this.root = 'Root';\n /**\n * Specifies the value of `DecodeParms`.\n * @private\n */\n this.decodeParms = 'DecodeParms';\n /**\n * Specifies the value of `Filter`.\n * @private\n */\n this.filter = 'Filter';\n /**\n * Specifies the value of `Font`.\n * @private\n */\n this.font = 'Font';\n /**\n * Specifies the value of `Type1`.\n * @private\n */\n this.type1 = 'Type1';\n /**\n * Specifies the value of `BaseFont`.\n * @private\n */\n this.baseFont = 'BaseFont';\n /**\n * Specifies the value of `Encoding`.\n * @private\n */\n this.encoding = 'Encoding';\n /**\n * Specifies the value of `Subtype`.\n * @private\n */\n this.subtype = 'Subtype';\n /**\n * Specifies the value of `Contents`.\n * @private\n */\n this.contents = 'Contents';\n /**\n * Specifies the value of `ProcSet`.\n * @private\n */\n this.procset = 'ProcSet';\n /**\n * Specifies the value of `ColorSpace`.\n * @private\n */\n this.colorSpace = 'ColorSpace';\n /**\n * Specifies the value of `ExtGState`.\n * @private\n */\n this.extGState = 'ExtGState';\n /**\n * Specifies the value of `Pattern`.\n * @private\n */\n this.pattern = 'Pattern';\n /**\n * Specifies the value of `XObject`.\n * @private\n */\n this.xObject = 'XObject';\n /**\n * Specifies the value of `Length`.\n * @private\n */\n this.length = 'Length';\n /**\n * Specifies the value of `Width`.\n * @private\n */\n this.width = 'Width';\n /**\n * Specifies the value of `Height`.\n * @private\n */\n this.height = 'Height';\n /**\n * Specifies the value of `BitsPerComponent`.\n * @private\n */\n this.bitsPerComponent = 'BitsPerComponent';\n /**\n * Specifies the value of `Image`.\n * @private\n */\n this.image = 'Image';\n /**\n * Specifies the value of `dctdecode`.\n * @private\n */\n this.dctdecode = 'DCTDecode';\n /**\n * Specifies the value of `Columns`.\n * @private\n */\n this.columns = 'Columns';\n /**\n * Specifies the value of `BlackIs1`.\n * @private\n */\n this.blackIs1 = 'BlackIs1';\n /**\n * Specifies the value of `K`.\n * @private\n */\n this.k = 'K';\n /**\n * Specifies the value of `S`.\n * @private\n */\n this.s = 'S';\n /**\n * Specifies the value of `Predictor`.\n * @private\n */\n this.predictor = 'Predictor';\n /**\n * Specifies the value of `DeviceRGB`.\n * @private\n */\n this.deviceRgb = 'DeviceRGB';\n /**\n * Specifies the value of `Next`.\n * @private\n */\n this.next = 'Next';\n /**\n * Specifies the value of `Action`.\n * @private\n */\n this.action = 'Action';\n /**\n * Specifies the value of `Link`.\n * @private\n */\n this.link = 'Link';\n /**\n *\n * Specifies the value of `A`.\n * @private\n */\n this.a = 'A';\n /**\n * Specifies the value of `Annot`.\n * @private\n */\n this.annot = 'Annot';\n /**\n * Specifies the value of `P`.\n * @private\n */\n this.p = 'P';\n /**\n * Specifies the value of `C`.\n * @private\n */\n this.c = 'C';\n /**\n * Specifies the value of `Rect`.\n * @private\n */\n this.rect = 'Rect';\n /**\n * Specifies the value of `URI`.\n * @private\n */\n this.uri = 'URI';\n /**\n * Specifies the value of `Annots`.\n * @private\n */\n this.annots = 'Annots';\n /**\n * Specifies the value of `ca`.\n * @private\n */\n this.ca = 'ca';\n /**\n * Specifies the value of `CA`.\n * @private\n */\n this.CA = 'CA';\n /**\n * Specifies the value of `XYZ`.\n * @private\n */\n this.xyz = 'XYZ';\n /**\n * Specifies the value of `Fit`.\n * @private\n */\n this.fit = 'Fit';\n /**\n * Specifies the value of `Dest`.\n * @private\n */\n this.dest = 'Dest';\n /**\n * Specifies the value of `BM`.\n * @private\n */\n this.BM = 'BM';\n /**\n * Specifies the value of `flatedecode`.\n * @private\n */\n this.flatedecode = 'FlateDecode';\n /**\n * Specifies the value of `Rotate`.\n * @private\n */\n this.rotate = 'Rotate';\n /**\n * Specifies the value of 'bBox'.\n * @private\n */\n this.bBox = 'BBox';\n /**\n * Specifies the value of 'form'.\n * @private\n */\n this.form = 'Form';\n /**\n * Specifies the value of 'w'.\n * @private\n */\n this.w = 'W';\n /**\n * Specifies the value of 'cIDFontType2'.\n * @private\n */\n this.cIDFontType2 = 'CIDFontType2';\n /**\n * Specifies the value of 'cIDToGIDMap'.\n * @private\n */\n this.cIDToGIDMap = 'CIDToGIDMap';\n /**\n * Specifies the value of 'identity'.\n * @private\n */\n this.identity = 'Identity';\n /**\n * Specifies the value of 'dw'.\n * @private\n */\n this.dw = 'DW';\n /**\n * Specifies the value of 'fontDescriptor'.\n * @private\n */\n this.fontDescriptor = 'FontDescriptor';\n /**\n * Specifies the value of 'cIDSystemInfo'.\n * @private\n */\n this.cIDSystemInfo = 'CIDSystemInfo';\n /**\n * Specifies the value of 'fontName'.\n * @private\n */\n this.fontName = 'FontName';\n /**\n * Specifies the value of 'flags'.\n * @private\n */\n this.flags = 'Flags';\n /**\n * Specifies the value of 'fontBBox'.\n * @private\n */\n this.fontBBox = 'FontBBox';\n /**\n * Specifies the value of 'missingWidth'.\n * @private\n */\n this.missingWidth = 'MissingWidth';\n /**\n * Specifies the value of 'stemV'.\n * @private\n */\n this.stemV = 'StemV';\n /**\n * Specifies the value of 'italicAngle'.\n * @private\n */\n this.italicAngle = 'ItalicAngle';\n /**\n * Specifies the value of 'capHeight'.\n * @private\n */\n this.capHeight = 'CapHeight';\n /**\n * Specifies the value of 'ascent'.\n * @private\n */\n this.ascent = 'Ascent';\n /**\n * Specifies the value of 'descent'.\n * @private\n */\n this.descent = 'Descent';\n /**\n * Specifies the value of 'leading'.\n * @private\n */\n this.leading = 'Leading';\n /**\n * Specifies the value of 'avgWidth'.\n * @private\n */\n this.avgWidth = 'AvgWidth';\n /**\n * Specifies the value of 'fontFile2'.\n * @private\n */\n this.fontFile2 = 'FontFile2';\n /**\n * Specifies the value of 'maxWidth'.\n * @private\n */\n this.maxWidth = 'MaxWidth';\n /**\n * Specifies the value of 'xHeight'.\n * @private\n */\n this.xHeight = 'XHeight';\n /**\n * Specifies the value of 'stemH'.\n * @private\n */\n this.stemH = 'StemH';\n /**\n * Specifies the value of 'registry'.\n * @private\n */\n this.registry = 'Registry';\n /**\n * Specifies the value of 'ordering'.\n * @private\n */\n this.ordering = 'Ordering';\n /**\n * Specifies the value of 'supplement'.\n * @private\n */\n this.supplement = 'Supplement';\n /**\n * Specifies the value of 'type0'.\n * @private\n */\n this.type0 = 'Type0';\n /**\n * Specifies the value of 'identityH'.\n * @private\n */\n this.identityH = 'Identity-H';\n /**\n * Specifies the value of 'toUnicode'.\n * @private\n */\n this.toUnicode = 'ToUnicode';\n /**\n * Specifies the value of 'descendantFonts'.\n * @private\n */\n this.descendantFonts = 'DescendantFonts';\n /**\n * Specifies the value of 'background'.\n * @private\n */\n this.background = 'Background';\n /**\n * Specifies the value of 'shading'.\n * @private\n */\n this.shading = 'Shading';\n /**\n * Specifies the value of 'matrix'.\n * @private\n */\n this.matrix = 'Matrix';\n /**\n * Specifies the value of 'antiAlias'.\n * @private\n */\n this.antiAlias = 'AntiAlias';\n /**\n * Specifies the value of 'function'.\n * @private\n */\n this.function = 'Function';\n /**\n * Specifies the value of 'extend'.\n * @private\n */\n this.extend = 'Extend';\n /**\n * Specifies the value of 'shadingType'.\n * @private\n */\n this.shadingType = 'ShadingType';\n /**\n * Specifies the value of 'coords'.\n * @private\n */\n this.coords = 'Coords';\n /**\n * Specifies the value of 'domain'.\n * @private\n */\n this.domain = 'Domain';\n /**\n * Specifies the value of 'range'.\n * @private\n */\n this.range = 'Range';\n /**\n * Specifies the value of 'functionType'.\n * @private\n */\n this.functionType = 'FunctionType';\n /**\n * Specifies the value of 'bitsPerSample'.\n * @private\n */\n this.bitsPerSample = 'BitsPerSample';\n /**\n * Specifies the value of 'patternType'.\n * @private\n */\n this.patternType = 'PatternType';\n /**\n * Specifies the value of 'paintType'.\n * @private\n */\n this.paintType = 'PaintType';\n /**\n * Specifies the value of 'tilingType'.\n * @private\n */\n this.tilingType = 'TilingType';\n /**\n * Specifies the value of 'xStep'.\n * @private\n */\n this.xStep = 'XStep';\n /**\n * Specifies the value of 'yStep'.\n * @private\n */\n this.yStep = 'YStep';\n //\n }\n}\n\n/**\n * `PdfDictionary` class is used to perform primitive operations.\n * @private\n */\nclass PdfDictionary {\n constructor(dictionary) {\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position7 = -1;\n /**\n * The `IPdfSavable` with the specified key.\n * @private\n */\n this.primitiveItems = new Dictionary();\n /**\n * `Start marker` for dictionary.\n * @private\n */\n this.prefix = '<<';\n /**\n * `End marker` for dictionary.\n * @private\n */\n this.suffix = '>>';\n /**\n * @hidden\n * @private\n */\n this.resources = [];\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.object = null;\n /**\n * Flag for PDF file formar 1.5 is dictionary `archiving` needed.\n * @default true\n * @private\n */\n this.archive = true;\n /**\n * Represents the Font dictionary.\n * @hidden\n * @private\n */\n this.isFont = false;\n if (typeof dictionary === 'undefined') {\n this.primitiveItems = new Dictionary();\n this.encrypt = true;\n this.dictionaryProperties = new DictionaryProperties();\n }\n else {\n this.primitiveItems = new Dictionary();\n let keys = dictionary.items.keys();\n let values = dictionary.items.values();\n for (let index = 0; index < dictionary.items.size(); index++) {\n this.primitiveItems.setValue(keys[index], values[index]);\n }\n this.status = dictionary.status;\n this.freezeChanges(this);\n this.encrypt = true;\n this.dictionaryProperties = new DictionaryProperties();\n }\n }\n //Properties\n /**\n * Gets or sets the `IPdfSavable` with the specified key.\n * @private\n */\n get items() {\n return this.primitiveItems;\n }\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get status() {\n return this.status7;\n }\n set status(value) {\n this.status7 = value;\n }\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get isSaving() {\n return this.isSaving7;\n }\n set isSaving(value) {\n this.isSaving7 = value;\n }\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get objectCollectionIndex() {\n return this.index7;\n }\n set objectCollectionIndex(value) {\n this.index7 = value;\n }\n /**\n * Returns `cloned object`.\n * @private\n */\n get clonedObject() {\n return this.object;\n }\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get position() {\n return this.position7;\n }\n set position(value) {\n this.position7 = value;\n }\n /**\n * Gets the `count`.\n * @private\n */\n get Count() {\n return this.primitiveItems.size();\n }\n /**\n * Collection of `items` in the object.\n * @private\n */\n get Dictionary() {\n return this;\n }\n /**\n * Get flag if need to `archive` dictionary.\n * @private\n */\n getArchive() {\n return this.archive;\n }\n /**\n * Set flag if need to `archive` dictionary.\n * @private\n */\n setArchive(value) {\n this.archive = value;\n }\n /**\n * Sets flag if `encryption` is needed.\n * @private\n */\n setEncrypt(value) {\n this.encrypt = value;\n this.modify();\n }\n /**\n * Gets flag if `encryption` is needed.\n * @private\n */\n getEncrypt() {\n return this.encrypt;\n }\n /**\n * `Freezes` the changes.\n * @private\n */\n freezeChanges(freezer) {\n this.bChanged = false;\n }\n /**\n * Creates a `copy of PdfDictionary`.\n * @private\n */\n clone(crossTable) {\n //Need to add more codings\n let newDict = new PdfDictionary();\n return newDict;\n }\n /**\n * `Mark` this instance modified.\n * @private\n */\n modify() {\n this.bChanged = true;\n }\n /**\n * `Removes` the specified key.\n * @private\n */\n remove(key) {\n if (typeof key !== 'string') {\n this.primitiveItems.remove(key.value);\n this.modify();\n }\n else {\n this.remove(new PdfName(key));\n }\n }\n /**\n * `Determines` whether the dictionary contains the key.\n * @private\n */\n containsKey(key) {\n let returnValue = false;\n returnValue = this.primitiveItems.containsKey(key.toString());\n return returnValue;\n }\n /**\n * Raises event `BeginSave`.\n * @private\n */\n onBeginSave() {\n this.beginSave.sender.beginSave();\n }\n /**\n * Raises event `Font Dictionary BeginSave`.\n * @private\n */\n onFontDictionaryBeginSave() {\n this.fontDictionaryBeginSave.sender.fontDictionaryBeginSave();\n }\n /**\n * Raises event `Descendant Font BeginSave`.\n * @private\n */\n onDescendantFontBeginSave() {\n this.descendantFontBeginSave.sender.descendantFontBeginSave();\n }\n /**\n * Raises event 'BeginSave'.\n * @private\n */\n onTemplateBeginSave() {\n this.pageBeginDrawTemplate.sender.pageBeginSave();\n }\n /**\n * Raises event `BeginSave`.\n * @private\n */\n onBeginAnnotationSave() {\n this.annotationBeginSave.sender.beginSave();\n }\n /**\n * Raises event `BeginSave`.\n * @private\n */\n onSectionBeginSave(writer) {\n let saveEvent = this.sectionBeginSave;\n saveEvent.sender.beginSave(saveEvent.state, writer);\n }\n save(writer, bRaiseEvent) {\n if (typeof bRaiseEvent === 'undefined') {\n this.save(writer, true);\n }\n else {\n writer.write(this.prefix);\n if (typeof this.beginSave !== 'undefined') {\n this.onBeginSave();\n }\n if (typeof this.descendantFontBeginSave !== 'undefined') {\n this.onDescendantFontBeginSave();\n }\n if (typeof this.fontDictionaryBeginSave !== 'undefined') {\n this.onFontDictionaryBeginSave();\n }\n if (typeof this.annotationBeginSave !== 'undefined') {\n this.onBeginAnnotationSave();\n }\n if (typeof this.sectionBeginSave !== 'undefined') {\n this.onSectionBeginSave(writer);\n }\n if (typeof this.pageBeginDrawTemplate !== 'undefined') {\n this.onTemplateBeginSave();\n }\n // }\n if (this.Count > 0) {\n this.saveItems(writer);\n }\n writer.write(this.suffix);\n writer.write(Operators.newLine);\n }\n }\n /**\n * `Save dictionary items`.\n * @private\n */\n saveItems(writer) {\n writer.write(Operators.newLine);\n let keys = this.primitiveItems.keys();\n let values = this.primitiveItems.values();\n for (let index = 0; index < keys.length; index++) {\n let key = keys[index];\n let name = new PdfName(key);\n name.save(writer);\n writer.write(Operators.whiteSpace);\n let resources = values[index];\n resources.save(writer);\n writer.write(Operators.newLine);\n }\n }\n}\nclass SaveSectionCollectionEventHandler {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n constructor(sender) {\n this.sender = sender;\n }\n}\nclass SaveDescendantFontEventHandler {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n constructor(sender) {\n this.sender = sender;\n }\n}\nclass SaveFontDictionaryEventHandler {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n constructor(sender) {\n this.sender = sender;\n }\n}\nclass SaveAnnotationEventHandler {\n /**\n * New instance for `save annotation event handler` class.\n * @private\n */\n constructor(sender) {\n this.sender = sender;\n }\n}\nclass SaveSectionEventHandler {\n // constructors\n /**\n * New instance for `save section event handler` class.\n * @private\n */\n constructor(sender, state) {\n this.sender = sender;\n this.state = state;\n }\n}\n/**\n * SaveTemplateEventHandler class used to store information about template elements.\n * @private\n * @hidden\n */\nclass SaveTemplateEventHandler {\n /**\n * New instance for save section collection event handler class.\n * @public\n */\n constructor(sender) {\n this.sender = sender;\n }\n}\n\n/**\n * `PdfNumber` class is used to perform number related primitive operations.\n * @private\n */\nclass PdfNumber {\n /**\n * Initializes a new instance of the `PdfNumber` class.\n * @private\n */\n constructor(value) {\n /**\n * Sotres the `position`.\n * @default -1\n * @private\n */\n this.position5 = -1;\n this.value = value;\n }\n /**\n * Gets or sets the `integer` value.\n * @private\n */\n get intValue() {\n return this.value;\n }\n set intValue(value) {\n this.value = value;\n }\n /**\n * Gets or sets a value indicating whether this instance `is integer`.\n * @private\n */\n get isInteger() {\n return this.integer;\n }\n set isInteger(value) {\n this.integer = value;\n }\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get status() {\n return this.status5;\n }\n set status(value) {\n this.status5 = value;\n }\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get isSaving() {\n return this.isSaving5;\n }\n set isSaving(value) {\n this.isSaving5 = value;\n }\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get objectCollectionIndex() {\n return this.index5;\n }\n set objectCollectionIndex(value) {\n this.index5 = value;\n }\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get position() {\n return this.position5;\n }\n set position(value) {\n this.position5 = value;\n }\n /**\n * Returns `cloned object`.\n * @private\n */\n get clonedObject() {\n let rValue = null;\n return rValue;\n }\n /**\n * `Saves the object`.\n * @private\n */\n save(writer) {\n writer.write(this.intValue.toString()); //tostring(CultureInfo.InletiantCulture)\n }\n /**\n * Creates a `copy of PdfNumber`.\n * @private\n */\n clone(crossTable) {\n let newNumber = new PdfNumber(this.value);\n return newNumber;\n }\n /**\n * Converts a `float value to a string` using Adobe PDF rules.\n * @private\n */\n static floatToString(number) {\n // let tempString1 : string = number.toString();\n // let tempString2 : string = tempString1.indexOf('.') != -1 ? tempString1.substring(0, tempString1.indexOf('.')) : tempString1;\n let returnString = number.toFixed(2);\n if (returnString === '0.00') {\n returnString = '.00';\n }\n // let prefixLength : number = (22 - tempString2.length) >= 0 ? (22 - tempString2.length) : 0;\n // for (let index : number = 0; index < prefixLength; index++) {\n // returnString += '0';\n // }\n // returnString += tempString2 + '.00';\n // returnString += (tempString3.length > 6) ? tempString3.substring(0,6) : tempString3;\n // let suffixLength : number = (6 - tempString3.length) >= 0 ? (6 - tempString3.length) : 0;\n // for (let index : number = 0; index < suffixLength; index++) {\n // returnString += '0';\n // }\n return returnString;\n }\n /**\n * Determines the `minimum of the three values`.\n * @private\n */\n static min(x, y, z) {\n let r = Math.min(x, y);\n return Math.min(z, r);\n }\n}\n\n/**\n * `PdfArray` class is used to perform array related primitive operations.\n * @private\n */\nclass PdfArray {\n constructor(array) {\n //Fields\n /**\n * `startMark` - '['\n * @private\n */\n this.startMark = '[';\n /**\n * `endMark` - ']'.\n * @private\n */\n this.endMark = ']';\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position9 = -1;\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.clonedObject9 = null;\n /**\n * Represents the Font dictionary.\n * @hidden\n * @private\n */\n this.isFont = false;\n if (typeof array === 'undefined') {\n this.internalElements = [];\n }\n else {\n if (typeof array !== 'undefined' && !(array instanceof PdfArray)) {\n let tempNumberArray = array;\n for (let index = 0; index < tempNumberArray.length; index++) {\n let pdfNumber = new PdfNumber(tempNumberArray[index]);\n this.add(pdfNumber);\n }\n // } else if (typeof array !== 'undefined' && (array instanceof PdfArray)) {\n }\n else {\n let tempArray = array;\n // if (tempArray.Elements.length > 0) {\n this.internalElements = [];\n for (let index = 0; index < tempArray.elements.length; index++) {\n this.internalElements.push(tempArray.elements[index]);\n }\n // }\n }\n }\n }\n //property\n /**\n * Gets the `IPdfSavable` at the specified index.\n * @private\n */\n items(index) {\n // if (index < 0 || index >= this.Count) {\n // throw new Error('ArgumentOutOfRangeException : index, The index can\"t be less then zero or greater then Count.');\n // }\n return this.internalElements[index];\n }\n /**\n * Gets the `count`.\n * @private\n */\n get count() {\n return this.internalElements.length;\n }\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get status() {\n return this.status9;\n }\n set status(value) {\n this.status9 = value;\n }\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get isSaving() {\n return this.isSaving9;\n }\n set isSaving(value) {\n this.isSaving9 = value;\n }\n /**\n * Returns `cloned object`.\n * @private\n */\n get clonedObject() {\n return this.clonedObject9;\n }\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get position() {\n return this.position9;\n }\n set position(value) {\n this.position9 = value;\n }\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get objectCollectionIndex() {\n return this.index9;\n }\n set objectCollectionIndex(value) {\n this.index9 = value;\n }\n /**\n * Returns `PdfCrossTable` associated with the object.\n * @private\n */\n get CrossTable() {\n return this.pdfCrossTable;\n }\n /**\n * Gets the `elements` of the Pdf Array.\n * @private\n */\n get elements() {\n return this.internalElements;\n }\n /**\n * `Adds` the specified element to the PDF array.\n * @private\n */\n add(element) {\n // if (element === null) {\n // throw new Error('ArgumentNullException : obj');\n // }\n if (typeof this.internalElements === 'undefined') {\n this.internalElements = [];\n }\n this.internalElements.push(element);\n this.markedChange();\n }\n /**\n * `Marks` the object changed.\n * @private\n */\n markedChange() {\n this.bChanged = true;\n }\n /**\n * `Determines` whether the specified element is within the array.\n * @private\n */\n contains(element) {\n let returnValue = false;\n for (let index = 0; index < this.internalElements.length; index++) {\n let tempElement = this.internalElements[index];\n let inputElement = element;\n if (tempElement != null && typeof tempElement !== 'undefined' && inputElement != null && typeof inputElement !== 'undefined') {\n if (tempElement.value === inputElement.value) {\n return true;\n }\n }\n // if (this.internalElements[index] === element) {\n // returnValue = true;\n // }\n }\n return returnValue;\n }\n /**\n * Returns the `primitive object` of input index.\n * @private\n */\n getItems(index) {\n // if (index < 0 || index >= this.Count) {\n // throw new Error('ArgumentOutOfRangeException : index , The index can\"t be less then zero or greater then Count.');\n // }\n return this.internalElements[index];\n }\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n save(writer) {\n // if (writer === null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n writer.write(this.startMark);\n for (let i = 0, len = this.count; i < len; i++) {\n this.getItems(i).save(writer);\n if (i + 1 !== len) {\n writer.write(Operators.whiteSpace);\n }\n }\n writer.write(this.endMark);\n }\n /**\n * Creates a `copy of PdfArray`.\n * @private\n */\n clone(crossTable) {\n // if (this.clonedObject9 !== null && this.clonedObject9.CrossTable === crossTable) {\n // return this.clonedObject9;\n // } else {\n this.clonedObject9 = null;\n // Else clone the object.\n let newArray = new PdfArray();\n for (let index = 0; index < this.internalElements.length; index++) {\n let obj = this.internalElements[index];\n newArray.add(obj.clone(crossTable));\n }\n newArray.pdfCrossTable = crossTable;\n this.clonedObject9 = newArray;\n return newArray;\n }\n /**\n * Creates filled PDF array `from the rectangle`.\n * @private\n */\n static fromRectangle(bounds) {\n let values = [bounds.x, bounds.y, bounds.width, bounds.height];\n let array = new PdfArray(values);\n return array;\n }\n // /**\n // * Creates the rectangle from filled PDF array.\n // * @private\n // */\n // public ToRectangle() : RectangleF {\n // if (this.Count < 4) {\n // throw Error('InvalidOperationException-Can not convert to rectangle.');\n // }\n // let x1 : number;\n // let x2 : number;\n // let y1 : number;\n // let y2 : number;\n // let num : PdfNumber = this.getItems(0) as PdfNumber;\n // x1 = num.IntValue;\n // num = this.getItems(1) as PdfNumber;\n // y1 = num.IntValue;\n // num = this.getItems(2) as PdfNumber;\n // x2 = num.IntValue;\n // num = this.getItems(3) as PdfNumber;\n // y2 = num.IntValue;\n // let x : number = Math.min(x1, x2);\n // let y : number = Math.min(y1, y2);\n // let width : number = Math.abs(x1 - x2);\n // let height : number = Math.abs(y1 - y2);\n // let rect : RectangleF = new RectangleF(new PointF(x, y), new SizeF(width, height));\n // return rect;\n // }\n /**\n * `Inserts` the element into the array.\n * @private\n */\n insert(index, element) {\n if (index < this.internalElements.length && index > 0) {\n let tempElements = [];\n for (let i = 0; i < index; i++) {\n tempElements.push(this.internalElements[i]);\n }\n tempElements.push(element);\n for (let i = index; i < this.internalElements.length; i++) {\n tempElements.push(this.internalElements[i]);\n }\n this.internalElements = tempElements;\n }\n else {\n this.internalElements.push(element);\n }\n this.markChanged();\n }\n /**\n * `Checks whether array contains the element`.\n * @private\n */\n indexOf(element) {\n return this.internalElements.indexOf(element);\n }\n /**\n * `Removes` element from the array.\n * @private\n */\n remove(element) {\n // if (element === null) {\n // throw new Error('ArgumentNullException : element');\n // }\n let index = this.internalElements.indexOf(element);\n // if (index >= 0 && index < this.internalElements.length) {\n this.internalElements[index] = null;\n // }\n this.markChanged();\n }\n /**\n * `Remove` the element from the array by its index.\n * @private\n */\n removeAt(index) {\n // this.internalElements.RemoveAt(index);\n if (this.internalElements.length > index) {\n let tempArray = [];\n for (let i = 0; i < index; i++) {\n tempArray.push(this.internalElements[i]);\n }\n for (let i = index + 1; i < this.internalElements.length; i++) {\n tempArray.push(this.internalElements[i]);\n }\n this.internalElements = tempArray;\n }\n this.markChanged();\n }\n /**\n * `Clear` the array.\n * @private\n */\n clear() {\n this.internalElements = [];\n this.markChanged();\n }\n /**\n * `Marks` the object changed.\n * @private\n */\n markChanged() {\n this.bChanged = true;\n }\n}\n\n/**\n * `PdfStream` class is used to perform stream related primitive operations.\n * @private\n */\nclass PdfStream extends PdfDictionary {\n constructor(dictionary, data) {\n super(dictionary);\n //Constants\n /**\n * @hidden\n * @private\n */\n this.dicPrefix = 'stream';\n /**\n * @hidden\n * @private\n */\n this.dicSuffix = 'endstream';\n /**\n * Internal variable to hold `cloned object`.\n * @private\n */\n this.clonedObject2 = null;\n /**\n * @hidden\n * @private\n */\n this.bCompress = true;\n /**\n * @hidden\n * @private\n */\n this.isImageStream = false;\n /**\n * @hidden\n * @private\n */\n this.isFontStream = false;\n if (typeof dictionary !== 'undefined' || typeof data !== 'undefined') {\n this.dataStream2 = [];\n this.dataStream2 = data;\n this.bCompress2 = false;\n }\n else {\n this.dataStream2 = [];\n this.bCompress2 = true;\n //Pending\n }\n }\n /**\n * Gets the `internal` stream.\n * @private\n */\n get internalStream() {\n return this.dataStream2;\n }\n set internalStream(value) {\n this.dataStream2 = [];\n this.dataStream2 = value;\n this.modify();\n }\n /**\n * Gets or sets 'is image' flag.\n * @private\n */\n get isImage() {\n return this.isImageStream;\n }\n set isImage(value) {\n this.isImageStream = value;\n }\n /**\n * Gets or sets 'is font' flag.\n * @private\n */\n get isFont() {\n return this.isFontStream;\n }\n set isFont(value) {\n this.isFontStream = value;\n }\n /**\n * Gets or sets `compression` flag.\n * @private\n */\n get compress() {\n return this.bCompress;\n }\n set compress(value) {\n this.bCompress = value;\n this.modify();\n }\n /**\n * Gets or sets the `data`.\n * @private\n */\n get data() {\n return this.dataStream2;\n }\n set data(value) {\n this.dataStream2 = [];\n this.dataStream2 = value;\n this.modify();\n }\n /**\n * `Clear` the internal stream.\n * @private\n */\n clearStream() {\n this.internalStream = [];\n if (this.items.containsKey(this.dictionaryProperties.filter)) {\n this.remove(this.dictionaryProperties.filter);\n }\n this.bCompress = true;\n this.modify();\n }\n /**\n * `Writes` the specified string.\n * @private\n */\n write(text) {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (text.length <= 0) {\n throw new Error('ArgumentException: Can not write an empty string, text');\n }\n this.dataStream2.push(text);\n this.modify();\n }\n /**\n * `Writes` the specified bytes.\n * @private\n */\n writeBytes(data) {\n if (data === null) {\n throw new Error('ArgumentNullException:data');\n }\n if (data.length <= 0) {\n throw new Error('ArgumentException: Can not write an empty bytes, data');\n }\n let text = '';\n for (let i = 0; i < data.length; i++) {\n text += String.fromCharCode(data[i]);\n }\n this.dataStream2.push(text);\n this.modify();\n }\n /**\n * Raises event `Cmap BeginSave`.\n * @private\n */\n onCmapBeginSave() {\n this.cmapBeginSave.sender.cmapBeginSave();\n }\n /**\n * Raises event `Font Program BeginSave`.\n * @private\n */\n onFontProgramBeginSave() {\n this.fontProgramBeginSave.sender.fontProgramBeginSave();\n }\n /**\n * `Compresses the content` if it's required.\n * @private\n */\n compressContent(data, writer) {\n if (this.bCompress) {\n let byteArray = [];\n for (let i = 0; i < data.length; i++) {\n byteArray.push(data.charCodeAt(i));\n }\n let dataArray = new Uint8Array(byteArray);\n let sw = new CompressedStreamWriter();\n // data = 'Hello World!!!';\n sw.write(dataArray, 0, dataArray.length);\n sw.close();\n data = sw.getCompressedString;\n this.addFilter(this.dictionaryProperties.flatedecode);\n }\n return data;\n }\n /**\n * `Adds a filter` to the filter array.\n * @private\n */\n addFilter(filterName) {\n let obj = this.items.getValue(this.dictionaryProperties.filter);\n if (obj instanceof PdfReferenceHolder) {\n let rh = obj;\n obj = rh.object;\n }\n let array = obj;\n let name = obj;\n if (name != null) {\n array = new PdfArray();\n array.insert(0, name);\n this.items.setValue(this.dictionaryProperties.filter, array);\n }\n name = new PdfName(filterName);\n if (array == null) {\n this.items.setValue(this.dictionaryProperties.filter, name);\n }\n else {\n array.insert(0, name);\n }\n }\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n save(writer) {\n if (typeof this.cmapBeginSave !== 'undefined') {\n this.onCmapBeginSave();\n }\n if (typeof this.fontProgramBeginSave !== 'undefined') {\n this.onFontProgramBeginSave();\n }\n let data = '';\n for (let i = 0; i < this.data.length; i++) {\n data = data + this.data[i];\n }\n if (data.length > 1 && !this.isImage && !this.isFont) {\n data = 'q\\r\\n' + data + 'Q\\r\\n';\n }\n data = this.compressContent(data, writer);\n let length = data.length;\n this.items.setValue(this.dictionaryProperties.length, new PdfNumber(length));\n super.save(writer, false);\n writer.write(this.dicPrefix);\n writer.write(Operators.newLine);\n if (data.length > 0) {\n writer.write(data);\n }\n writer.write(Operators.newLine);\n writer.write(this.dicSuffix);\n writer.write(Operators.newLine);\n }\n /**\n * Converts `bytes to string`.\n * @private\n */\n static bytesToString(byteArray) {\n let output = '';\n for (let i = 0; i < byteArray.length; i++) {\n output = output + String.fromCharCode(byteArray[i]);\n }\n return output;\n }\n}\nclass SaveCmapEventHandler {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n constructor(sender) {\n this.sender = sender;\n }\n}\nclass SaveFontProgramEventHandler {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n constructor(sender) {\n this.sender = sender;\n }\n}\n\n/**\n * `PdfString` class is used to perform string related primitive operations.\n * @private\n */\nvar InternalEnum;\n(function (InternalEnum) {\n //Internals\n /**\n * public Enum for `ForceEncoding`.\n * @private\n */\n let ForceEncoding;\n (function (ForceEncoding) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Ascii`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"Ascii\"] = 1] = \"Ascii\";\n /**\n * Specifies the type of `Unicode`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"Unicode\"] = 2] = \"Unicode\";\n })(ForceEncoding = InternalEnum.ForceEncoding || (InternalEnum.ForceEncoding = {}));\n /**\n * public Enum for `SourceType`.\n * @private\n */\n let SourceType;\n (function (SourceType) {\n /**\n * Specifies the type of `StringValue`.\n * @private\n */\n SourceType[SourceType[\"StringValue\"] = 0] = \"StringValue\";\n /**\n * Specifies the type of `ByteBuffer`.\n * @private\n */\n SourceType[SourceType[\"ByteBuffer\"] = 1] = \"ByteBuffer\";\n })(SourceType || (SourceType = {}));\n})(InternalEnum || (InternalEnum = {}));\nclass PdfString {\n constructor(value) {\n /**\n * Value indicating whether the string was converted to hex.\n * @default false\n * @private\n */\n this.bHex = false;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position1 = -1;\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.clonedObject1 = null;\n /**\n * `Shows` if the data of the stream was decrypted.\n * @default false\n * @private\n */\n this.bDecrypted = false;\n /**\n * Shows if the data of the stream `was decrypted`.\n * @default false\n * @private\n */\n this.isParentDecrypted = false;\n /**\n * Gets a value indicating whether the object is `packed or not`.\n * @default false\n * @private\n */\n this.isPacked = false;\n /**\n * @hidden\n * @private\n */\n this.isFormField = false;\n /**\n * @hidden\n * @private\n */\n this.isColorSpace = false;\n /**\n * @hidden\n * @private\n */\n this.isHexString = true;\n if (typeof value === 'undefined') {\n this.bHex = false;\n }\n else {\n if (!(value.length > 0 && value[0] === '0xfeff')) {\n this.stringValue = value;\n this.data = [];\n for (let i = 0; i < value.length; ++i) {\n this.data.push(value.charCodeAt(i));\n }\n }\n }\n }\n //Property\n /**\n * Gets a value indicating whether string is in `hex`.\n * @private\n */\n get hex() {\n return this.bHex;\n }\n /**\n * Gets or sets string `value` of the object.\n * @private\n */\n get value() {\n return this.stringValue;\n }\n set value(value) {\n this.stringValue = value;\n this.data = null;\n }\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get status() {\n return this.status1;\n }\n set status(value) {\n this.status1 = value;\n }\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get isSaving() {\n return this.isSaving1;\n }\n set isSaving(value) {\n this.isSaving1 = value;\n }\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get objectCollectionIndex() {\n return this.index1;\n }\n set objectCollectionIndex(value) {\n this.index1 = value;\n }\n /**\n * Returns `cloned object`.\n * @private\n */\n get clonedObject() {\n return this.clonedObject1;\n }\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get position() {\n return this.position1;\n }\n set position(value) {\n this.position1 = value;\n }\n /**\n * Returns `PdfCrossTable` associated with the object.\n * @private\n */\n get CrossTable() {\n return this.crossTable;\n }\n /**\n * Gets a value indicating whether to check if the value has unicode characters.\n * @private\n */\n get converted() {\n return this.bConverted;\n }\n /**\n * sets a value indicating whether to check if the value has unicode characters.\n * @private\n */\n set converted(value) {\n this.bConverted = value;\n }\n /**\n * Gets value indicating whether we should convert data to Unicode.\n */\n get encode() {\n return this.bForceEncoding;\n }\n set encode(value) {\n this.bForceEncoding = value;\n }\n //Methods\n /**\n * Converts `bytes to string using hex format` for representing string.\n * @private\n */\n static bytesToHex(bytes) {\n if (bytes == null) {\n return '';\n }\n let builder = '';\n return builder;\n }\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n save(writer) {\n if (writer === null) {\n throw new Error('ArgumentNullException : writer');\n }\n if (this.encode !== undefined && this.encode === InternalEnum.ForceEncoding.Ascii) {\n writer.write(this.pdfEncode());\n }\n else {\n writer.write(PdfString.stringMark[0] + this.value + PdfString.stringMark[1]);\n }\n }\n pdfEncode() {\n let result = '';\n if (this.encode !== undefined && this.encode === InternalEnum.ForceEncoding.Ascii) {\n let data = this.escapeSymbols(this.value);\n for (let i = 0; i < data.length; i++) {\n result += String.fromCharCode(data[i]);\n }\n result = PdfString.stringMark[0] + result + PdfString.stringMark[1];\n }\n else {\n result = this.value;\n }\n return result;\n }\n escapeSymbols(value) {\n let data = [];\n for (let i = 0; i < value.length; i++) {\n let currentData = value.charCodeAt(i);\n switch (currentData) {\n case 40:\n case 41:\n data.push(92);\n data.push(currentData);\n break;\n case 13:\n data.push(92);\n data.push(114);\n break;\n case 92:\n data.push(92);\n data.push(currentData);\n break;\n default:\n data.push(currentData);\n break;\n }\n }\n return data;\n }\n /**\n * Creates a `copy of PdfString`.\n * @private\n */\n clone(crossTable) {\n if (this.clonedObject1 !== null && this.clonedObject1.CrossTable === crossTable) {\n return this.clonedObject1;\n }\n else {\n this.clonedObject1 = null;\n }\n let newString = new PdfString(this.stringValue);\n newString.bHex = this.bHex;\n newString.crossTable = crossTable;\n newString.isColorSpace = this.isColorSpace;\n this.clonedObject1 = newString;\n return newString;\n }\n /**\n * Converts string to array of unicode symbols.\n */\n static toUnicodeArray(value, bAddPrefix) {\n if (value == null) {\n throw new Error('Argument Null Exception : value');\n }\n let output = [];\n for (let i = 0; i < value.length; i++) {\n let code = value.charCodeAt(i);\n output.push(code / 256 >>> 0);\n output.push(code & 0xff);\n }\n return output;\n }\n /**\n * Converts byte data to string.\n */\n static byteToString(data) {\n if (data == null) {\n throw new Error('Argument Null Exception : stream');\n }\n let result = '';\n for (let i = 0; i < data.length; ++i) {\n result += String.fromCharCode(data[i]);\n }\n return result;\n }\n}\n//constants = ;\n/**\n * `General markers` for string.\n * @private\n */\nPdfString.stringMark = '()';\n/**\n * `Hex markers` for string.\n * @private\n */\nPdfString.hexStringMark = '<>';\n/**\n * Format of password data.\n * @private\n */\nPdfString.hexFormatPattern = '{0:X2}';\n\n/**\n * `PdfReference` class is used to perform reference related primitive operations.\n * @private\n */\nclass PdfReference {\n constructor(objNumber, genNumber) {\n /**\n * Holds the `index` number of the object.\n * @default -1\n * @private\n */\n this.index3 = -1;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position3 = -1;\n /**\n * Holds the `object number`.\n * @default 0\n * @private\n */\n this.objNumber = 0;\n /**\n * Holds the `generation number` of the object.\n * @default 0\n * @private\n */\n this.genNumber = 0;\n if (typeof objNumber === 'number' && typeof genNumber === 'number') {\n this.objNumber = objNumber;\n this.genNumber = genNumber;\n // } else if (typeof objNum === 'string' && typeof genNum === 'string') {\n }\n else {\n this.objNumber = Number(objNumber);\n this.genNumber = Number(genNumber);\n }\n }\n //Property\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get status() {\n return this.status3;\n }\n set status(value) {\n this.status3 = value;\n }\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get isSaving() {\n return this.isSaving3;\n }\n set isSaving(value) {\n this.isSaving3 = value;\n }\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get objectCollectionIndex() {\n return this.index3;\n }\n set objectCollectionIndex(value) {\n this.index3 = value;\n }\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get position() {\n return this.position3;\n }\n set position(value) {\n this.position3 = value;\n }\n /**\n * Returns `cloned object`.\n * @private\n */\n get clonedObject() {\n let returnObject3 = null;\n return returnObject3;\n }\n //IPdfPrimitives methods\n /**\n * `Saves` the object.\n * @private\n */\n save(writer) {\n writer.write(this.toString());\n }\n /**\n * Returns a `string` representing the object.\n * @private\n */\n toString() {\n return this.objNumber.toString() + ' ' + this.genNumber.toString() + ' R';\n }\n /**\n * Creates a `deep copy` of the IPdfPrimitive object.\n * @private\n */\n clone(crossTable) {\n return null;\n }\n}\n/**\n * `PdfReferenceHolder` class is used to perform reference holder related primitive operations.\n * @private\n */\nclass PdfReferenceHolder {\n constructor(obj1, obj2) {\n /**\n * Holds the `index` number of the object.\n * @default -1\n * @private\n */\n this.index4 = -1;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position4 = -1;\n /**\n * The `index` of the object within the object collection.\n * @default -1\n * @private\n */\n this.objectIndex = -1;\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // if (typeof obj2 === 'undefined') {\n this.initialize(obj1);\n // }\n // else {\n // if (obj2 === null) {\n // throw new Error('ArgumentNullException : crossTable');\n // }\n // if (obj1 === null) {\n // throw new Error('ArgumentNullException : reference');\n // }\n // this.crossTable = obj2;\n // let tempObj1 : PdfReference = obj1;\n // this.reference = tempObj1;\n // }\n }\n //Properties\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get status() {\n return this.status4;\n }\n set status(value) {\n this.status4 = value;\n }\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get isSaving() {\n return this.isSaving4;\n }\n set isSaving(value) {\n this.isSaving4 = value;\n }\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get objectCollectionIndex() {\n return this.index4;\n }\n set objectCollectionIndex(value) {\n this.index4 = value;\n }\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get position() {\n return this.position4;\n }\n set position(value) {\n this.position4 = value;\n }\n /**\n * Returns `cloned object`.\n * @private\n */\n get clonedObject() {\n return null;\n }\n /**\n * Gets the `object` the reference is of.\n * @private\n */\n get object() {\n // if ((this.reference != null) || (this.object == null)) {\n // this.object = this.GetterObject();\n // }\n return this.primitiveObject;\n }\n /**\n * Gets the `reference`.\n * @private\n */\n get reference() {\n return this.pdfReference;\n }\n /**\n * Gets the `index` of the object.\n * @private\n */\n get index() {\n // let items : PdfMainObjectCollection = this.crossTable.PdfObjects;\n // this.objectIndex = items.GetObjectIndex(this.reference);\n // if (this.objectIndex < 0) {\n // let obj : IPdfPrimitive = this.crossTable.GetObject(this.reference);\n // this.objectIndex = items.Count - 1;\n // }\n return this.objectIndex;\n }\n /**\n * Gets the `element`.\n * @private\n */\n get element() {\n return this.primitiveObject;\n }\n initialize(obj1) {\n if (obj1 instanceof PdfArray\n || obj1 instanceof PdfDictionary\n || obj1 instanceof PdfName\n || obj1 instanceof PdfNumber\n || obj1 instanceof PdfStream\n || obj1 instanceof PdfReference\n || obj1 instanceof PdfString) {\n this.primitiveObject = obj1;\n }\n else {\n let tempObj = obj1;\n this.initialize(tempObj.element);\n }\n }\n /**\n * `Writes` a reference into a PDF document.\n * @private\n */\n save(writer) {\n // if (writer == null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n let position = writer.position;\n let cTable = writer.document.crossTable;\n // if (cTable.Document instanceof PdfDocument) {\n this.object.isSaving = true;\n // }\n let reference = null;\n // if (writer.Document.FileStructure.IncrementalUpdate === true && writer.Document.isStreamCopied === true) {\n // if (this.reference === null) {\n // reference = cTable.GetReference(this.Object);\n // } else {\n // reference = this.reference;\n // }\n // } else {\n // reference = cTable.GetReference(this.Object);\n // }\n // if (!(writer.Document.FileStructure.IncrementalUpdate === true && writer.Document.isStreamCopied === true)) {\n reference = cTable.getReference(this.object);\n // }\n // if (writer.Position !== position) {\n // writer.Position = position;\n // }\n reference.save(writer);\n }\n /**\n * Creates a `copy of PdfReferenceHolder`.\n * @private\n */\n clone(crossTable) {\n return null;\n }\n}\n\n/**\n * `PdfAction` class represents base class for all action types.\n * @private\n */\nclass PdfAction {\n // Constructors\n /**\n * Initialize instance for `Action` class.\n * @private\n */\n constructor() {\n /**\n * Specifies the Next `action` to perform.\n * @private\n */\n this.action = null;\n /**\n * Specifies the Internal variable to store `dictionary properties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // super(); -> Object()\n this.initialize();\n }\n // Properties\n /**\n * Gets and Sets the `Next` action to perform.\n * @private\n */\n get next() {\n return this.action;\n }\n set next(value) {\n // if (this.action !== value) {\n this.action = value;\n this.dictionary.items.setValue(this.dictionaryProperties.next, new PdfReferenceHolder(this.action));\n // }\n }\n /**\n * Gets and Sets the instance of PdfDictionary class for `Dictionary`.\n * @private\n */\n get dictionary() {\n if (typeof this.pdfDictionary === 'undefined') {\n this.pdfDictionary = new PdfDictionary();\n }\n return this.pdfDictionary;\n }\n // Implementation\n /**\n * `Initialize` the action type.\n * @private\n */\n initialize() {\n this.dictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.action));\n }\n // IPdfWrapper Members\n /**\n * Gets the `Element` as IPdfPrimitive class.\n * @private\n */\n get element() {\n return this.dictionary;\n }\n}\n\n/**\n * `PdfUriAction` class for initialize the uri related internals.\n * @private\n */\nclass PdfUriAction extends PdfAction {\n constructor(uri) {\n super();\n // Fields\n /**\n * Specifies the `uri` string.\n * @default ''.\n * @private\n */\n this.uniformResourceIdentifier = '';\n }\n // Properties\n /**\n * Gets and Sets the value of `Uri`.\n * @private\n */\n get uri() {\n return this.uniformResourceIdentifier;\n }\n set uri(value) {\n this.uniformResourceIdentifier = value;\n this.dictionary.items.setValue(this.dictionaryProperties.uri, new PdfString(this.uniformResourceIdentifier));\n }\n // Implementation\n /**\n * `Initialize` the internals.\n * @private\n */\n initialize() {\n super.initialize();\n this.dictionary.items.setValue(this.dictionaryProperties.s, new PdfName(this.dictionaryProperties.uri));\n }\n}\n\n/**\n * public Enum for `PdfHorizontalAlignment`.\n * @private\n */\nvar PdfHorizontalAlignment;\n(function (PdfHorizontalAlignment) {\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Left\"] = 0] = \"Left\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Right\"] = 2] = \"Right\";\n})(PdfHorizontalAlignment || (PdfHorizontalAlignment = {}));\n/**\n * public Enum for `PdfVerticalAlignment`.\n * @private\n */\nvar PdfVerticalAlignment;\n(function (PdfVerticalAlignment) {\n /**\n * Specifies the type of `Top`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Top\"] = 0] = \"Top\";\n /**\n * Specifies the type of `Middle`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Middle\"] = 1] = \"Middle\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Bottom\"] = 2] = \"Bottom\";\n})(PdfVerticalAlignment || (PdfVerticalAlignment = {}));\n/**\n * public Enum for `public`.\n * @private\n */\nvar PdfTextAlignment;\n(function (PdfTextAlignment) {\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Left\"] = 0] = \"Left\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Right\"] = 2] = \"Right\";\n /**\n * Specifies the type of `Justify`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Justify\"] = 3] = \"Justify\";\n})(PdfTextAlignment || (PdfTextAlignment = {}));\n/**\n * public Enum for `TextRenderingMode`.\n * @private\n */\nvar TextRenderingMode;\n(function (TextRenderingMode) {\n /**\n * Specifies the type of `Fill`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Fill\"] = 0] = \"Fill\";\n /**\n * Specifies the type of `Stroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Stroke\"] = 1] = \"Stroke\";\n /**\n * Specifies the type of `FillStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"FillStroke\"] = 2] = \"FillStroke\";\n /**\n * Specifies the type of `None`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"None\"] = 3] = \"None\";\n /**\n * Specifies the type of `ClipFlag`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFlag\"] = 4] = \"ClipFlag\";\n /**\n * Specifies the type of `ClipFill`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFill\"] = 4] = \"ClipFill\";\n /**\n * Specifies the type of `ClipStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipStroke\"] = 5] = \"ClipStroke\";\n /**\n * Specifies the type of `ClipFillStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFillStroke\"] = 6] = \"ClipFillStroke\";\n /**\n * Specifies the type of `Clip`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Clip\"] = 7] = \"Clip\";\n})(TextRenderingMode || (TextRenderingMode = {}));\n/**\n * public Enum for `PdfLineJoin`.\n * @private\n */\nvar PdfLineJoin;\n(function (PdfLineJoin) {\n /**\n * Specifies the type of `Miter`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Miter\"] = 0] = \"Miter\";\n /**\n * Specifies the type of `Round`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Round\"] = 1] = \"Round\";\n /**\n * Specifies the type of `Bevel`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Bevel\"] = 2] = \"Bevel\";\n})(PdfLineJoin || (PdfLineJoin = {}));\n/**\n * public Enum for `PdfLineCap`.\n * @private\n */\nvar PdfLineCap;\n(function (PdfLineCap) {\n /**\n * Specifies the type of `Flat`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Flat\"] = 0] = \"Flat\";\n /**\n * Specifies the type of `Round`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Round\"] = 1] = \"Round\";\n /**\n * Specifies the type of `Square`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Square\"] = 2] = \"Square\";\n})(PdfLineCap || (PdfLineCap = {}));\n/**\n * public Enum for `PdfDashStyle`.\n * @private\n */\nvar PdfDashStyle;\n(function (PdfDashStyle) {\n /**\n * Specifies the type of `Solid`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Solid\"] = 0] = \"Solid\";\n /**\n * Specifies the type of `Dash`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Dash\"] = 1] = \"Dash\";\n /**\n * Specifies the type of `Dot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Dot\"] = 2] = \"Dot\";\n /**\n * Specifies the type of `DashDot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"DashDot\"] = 3] = \"DashDot\";\n /**\n * Specifies the type of `DashDotDot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"DashDotDot\"] = 4] = \"DashDotDot\";\n /**\n * Specifies the type of `Custom`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Custom\"] = 5] = \"Custom\";\n})(PdfDashStyle || (PdfDashStyle = {}));\n/**\n * public Enum for `PdfFillMode`.\n * @private\n */\nvar PdfFillMode;\n(function (PdfFillMode) {\n /**\n * Specifies the type of `Winding`.\n * @private\n */\n PdfFillMode[PdfFillMode[\"Winding\"] = 0] = \"Winding\";\n /**\n * Specifies the type of `Alternate`.\n * @private\n */\n PdfFillMode[PdfFillMode[\"Alternate\"] = 1] = \"Alternate\";\n})(PdfFillMode || (PdfFillMode = {}));\n/**\n * public Enum for `PdfColorSpace`.\n * @private\n */\nvar PdfColorSpace;\n(function (PdfColorSpace) {\n /**\n * Specifies the type of `Rgb`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Rgb\"] = 0] = \"Rgb\";\n /**\n * Specifies the type of `Cmyk`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Cmyk\"] = 1] = \"Cmyk\";\n /**\n * Specifies the type of `GrayScale`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"GrayScale\"] = 2] = \"GrayScale\";\n /**\n * Specifies the type of `Indexed`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Indexed\"] = 3] = \"Indexed\";\n})(PdfColorSpace || (PdfColorSpace = {}));\n/**\n * public Enum for `PdfBlendMode`.\n * @private\n */\nvar PdfBlendMode;\n(function (PdfBlendMode) {\n /**\n * Specifies the type of `Normal`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Normal\"] = 0] = \"Normal\";\n /**\n * Specifies the type of `Multiply`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Multiply\"] = 1] = \"Multiply\";\n /**\n * Specifies the type of `Screen`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Screen\"] = 2] = \"Screen\";\n /**\n * Specifies the type of `Overlay`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Overlay\"] = 3] = \"Overlay\";\n /**\n * Specifies the type of `Darken`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Darken\"] = 4] = \"Darken\";\n /**\n * Specifies the type of `Lighten`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Lighten\"] = 5] = \"Lighten\";\n /**\n * Specifies the type of `ColorDodge`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"ColorDodge\"] = 6] = \"ColorDodge\";\n /**\n * Specifies the type of `ColorBurn`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"ColorBurn\"] = 7] = \"ColorBurn\";\n /**\n * Specifies the type of `HardLight`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"HardLight\"] = 8] = \"HardLight\";\n /**\n * Specifies the type of `SoftLight`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"SoftLight\"] = 9] = \"SoftLight\";\n /**\n * Specifies the type of `Difference`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Difference\"] = 10] = \"Difference\";\n /**\n * Specifies the type of `Exclusion`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Exclusion\"] = 11] = \"Exclusion\";\n /**\n * Specifies the type of `Hue`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Hue\"] = 12] = \"Hue\";\n /**\n * Specifies the type of `Saturation`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Saturation\"] = 13] = \"Saturation\";\n /**\n * Specifies the type of `Color`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Color\"] = 14] = \"Color\";\n /**\n * Specifies the type of `Luminosity`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Luminosity\"] = 15] = \"Luminosity\";\n})(PdfBlendMode || (PdfBlendMode = {}));\n/**\n * public Enum for `PdfGraphicsUnit`.\n * @private\n */\nvar PdfGraphicsUnit;\n(function (PdfGraphicsUnit) {\n /**\n * Specifies the type of `Centimeter`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Centimeter\"] = 0] = \"Centimeter\";\n /**\n * Specifies the type of `Pica`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Pica\"] = 1] = \"Pica\";\n /**\n * Specifies the type of `Pixel`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Pixel\"] = 2] = \"Pixel\";\n /**\n * Specifies the type of `Point`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Point\"] = 3] = \"Point\";\n /**\n * Specifies the type of `Inch`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Inch\"] = 4] = \"Inch\";\n /**\n * Specifies the type of `Document`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Document\"] = 5] = \"Document\";\n /**\n * Specifies the type of `Millimeter`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Millimeter\"] = 6] = \"Millimeter\";\n})(PdfGraphicsUnit || (PdfGraphicsUnit = {}));\n/**\n * public Enum for `PdfGridImagePosition`.\n * @private\n */\nvar PdfGridImagePosition;\n(function (PdfGridImagePosition) {\n /**\n * Specifies the type of `Fit`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Fit\"] = 0] = \"Fit\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Stretch`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Stretch\"] = 2] = \"Stretch\";\n /**\n * Specifies the type of `Tile`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Tile\"] = 3] = \"Tile\";\n})(PdfGridImagePosition || (PdfGridImagePosition = {}));\n/**\n * public Enum for `the text rendering direction`.\n * @private\n */\nvar PdfTextDirection;\n(function (PdfTextDirection) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `LeftToRight`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"LeftToRight\"] = 1] = \"LeftToRight\";\n /**\n * Specifies the type of `RightToLeft`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"RightToLeft\"] = 2] = \"RightToLeft\";\n})(PdfTextDirection || (PdfTextDirection = {}));\n\n/**\n * Implements structures and routines working with `color`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * //\n * // set color\n * let brushColor : PdfColor = new PdfColor(0, 0, 0);\n * //\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(brushColor);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @default black color\n */\nclass PdfColor {\n constructor(color1, color2, color3, color4) {\n if (typeof color1 === 'undefined') {\n if (typeof color2 !== 'undefined' && typeof color3 !== 'undefined' && typeof color4 !== 'undefined') {\n this.assignRGB(color2, color3, color4);\n }\n else {\n this.filled = false;\n }\n }\n else if (color1 instanceof PdfColor) {\n this.redColor = color1.r;\n this.greenColor = color1.g;\n this.blueColor = color1.b;\n this.grayColor = color1.gray;\n this.alpha = color1.alpha;\n this.filled = (this.alpha !== 0);\n /* tslint:disable-next-line:max-line-length */\n }\n else if (typeof color1 === 'number' && typeof color2 === 'undefined' && typeof color3 === 'undefined' && typeof color4 === 'undefined') {\n if (color1 < 0) {\n color1 = 0;\n }\n if (color1 > 1) {\n color1 = 1;\n }\n this.redColor = color1 * PdfColor.maxColourChannelValue;\n this.greenColor = color1 * PdfColor.maxColourChannelValue;\n this.blueColor = color1 * PdfColor.maxColourChannelValue;\n this.cyanColor = color1;\n this.magentaColor = color1;\n this.yellowColor = color1;\n this.blackColor = color1;\n this.grayColor = color1;\n this.alpha = PdfColor.maxColourChannelValue;\n this.filled = true;\n }\n else if (typeof color4 === 'undefined') {\n this.assignRGB(color1, color2, color3);\n }\n else {\n this.assignRGB(color2, color3, color4, color1);\n }\n }\n /**\n * `Assign` red, green, blue colors with alpha value..\n * @private\n */\n assignRGB(r, g, b, a) {\n if (typeof r === 'undefined' || typeof g === 'undefined' || typeof b === 'undefined') {\n this.filled = false;\n }\n else {\n this.cyanColor = 0;\n this.magentaColor = 0;\n this.yellowColor = 0;\n this.blackColor = 0;\n this.grayColor = 0;\n this.redColor = r;\n this.greenColor = g;\n this.blueColor = b;\n if (typeof a === 'undefined') {\n this.alpha = PdfColor.maxColourChannelValue;\n }\n else {\n this.alpha = a;\n }\n this.filled = true;\n this.assignCMYK(r, g, b);\n }\n }\n /**\n * `Calculate and assign` cyan, megenta, yellow colors from rgb values..\n * @private\n */\n assignCMYK(r, g, b) {\n let red = r / PdfColor.maxColourChannelValue;\n let green = g / PdfColor.maxColourChannelValue;\n let blue = b / PdfColor.maxColourChannelValue;\n let black = PdfNumber.min(1 - red, 1 - green, 1 - blue);\n let cyan = (black === 1.0) ? 0 : (1 - red - black) / (1 - black);\n let magenta = (black === 1.0) ? 0 : (1 - green - black) / (1 - black);\n let yellow = (black === 1.0) ? 0 : (1 - blue - black) / (1 - black);\n this.blackColor = black;\n this.cyanColor = cyan;\n this.magentaColor = magenta;\n this.yellowColor = yellow;\n }\n //Properties\n // public static get Empty():PdfColor\n // {\n // return this.s_emptyColor\n // }\n /**\n * Gets or sets `Red` channel value.\n * @private\n */\n get r() {\n return this.redColor;\n }\n set r(value) {\n this.redColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n }\n /**\n * Gets the `Red` color\n * @private\n */\n get red() {\n return (this.r / PdfColor.maxColourChannelValue);\n }\n /**\n * Gets or sets `Blue` channel value.\n * @private\n */\n get b() {\n return this.blueColor;\n }\n set b(value) {\n this.blueColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n }\n /**\n * Gets the `blue` color.\n * @private\n */\n get blue() {\n return (this.b / PdfColor.maxColourChannelValue);\n }\n /**\n * Gets or sets `Cyan` channel value.\n * @private\n */\n get c() {\n return this.cyanColor;\n }\n set c(value) {\n if (value < 0) {\n this.cyanColor = 0;\n }\n else if (value > 1) {\n this.cyanColor = 1;\n }\n else {\n this.cyanColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n }\n /**\n * Gets or sets `Black` channel value.\n * @private\n */\n get k() {\n return this.blackColor;\n }\n set k(value) {\n if ((value < 0)) {\n this.blackColor = 0;\n }\n else if ((value > 1)) {\n this.blackColor = 1;\n }\n else {\n this.blackColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n }\n /**\n * Gets or sets `Magenta` channel value.\n * @private\n */\n get m() {\n return this.magentaColor;\n }\n set m(value) {\n if ((value < 0)) {\n this.magentaColor = 0;\n }\n else if ((value > 1)) {\n this.magentaColor = 1;\n }\n else {\n this.magentaColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n }\n /**\n * Gets or sets `Yellow` channel value.\n * @private\n */\n get y() {\n return this.yellowColor;\n }\n set y(value) {\n if ((value < 0)) {\n this.yellowColor = 0;\n }\n else if ((value > 1)) {\n this.yellowColor = 1;\n }\n else {\n this.yellowColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n }\n /**\n * Gets or sets `Green` channel value.\n * @private\n */\n get g() {\n return this.greenColor;\n }\n set g(value) {\n this.greenColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n }\n /**\n * Gets the `Green` color.\n * @private\n */\n get green() {\n return (this.g / PdfColor.maxColourChannelValue);\n }\n /**\n * Gets or sets `Gray` channel value.\n * @private\n */\n get gray() {\n return ((((this.redColor + this.greenColor) + this.blueColor)) / (PdfColor.maxColourChannelValue * 3));\n }\n set gray(value) {\n if (value < 0) {\n this.grayColor = 0;\n }\n else if (value > 1) {\n this.grayColor = 1;\n }\n else {\n this.grayColor = value;\n }\n this.r = (this.grayColor * PdfColor.maxColourChannelValue);\n this.g = (this.grayColor * PdfColor.maxColourChannelValue);\n this.b = (this.grayColor * PdfColor.maxColourChannelValue);\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n }\n /**\n * Gets whether the PDFColor `is Empty` or not.\n * @private\n */\n get isEmpty() {\n return !this.filled;\n }\n /**\n * Gets or sets `Alpha` channel value.\n * @private\n */\n get a() {\n return this.alpha;\n }\n set a(value) {\n if (value < 0) {\n this.alpha = 0;\n }\n else {\n // if (this.alpha !== value) {\n this.alpha = value;\n // }\n }\n this.filled = true;\n }\n //Public methods\n /**\n * Converts `PDFColor to PDF string` representation.\n * @private\n */\n toString(colorSpace, stroke) {\n if (this.isEmpty) {\n return '';\n }\n let str = '';\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n str = this.rgbToString(stroke);\n break;\n case PdfColorSpace.GrayScale:\n str = this.grayScaleToString(stroke);\n break;\n case PdfColorSpace.Cmyk:\n str = this.cmykToString(stroke);\n break;\n }\n return str;\n }\n /**\n * Sets `GrayScale` color.\n * @private\n */\n grayScaleToString(ifStroking) {\n let gray = this.gray;\n let colour = '';\n let obj = null;\n /* tslint:disable-next-line:max-line-length */\n obj = (ifStroking) ? PdfColor.grayStringsSroke.containsKey(gray) ? PdfColor.grayStringsSroke.getValue(gray) : null : PdfColor.grayStringsFill.containsKey(gray) ? PdfColor.grayStringsFill.getValue(gray) : null;\n if (obj == null) {\n if (ifStroking) {\n colour = gray.toString() + ' G';\n PdfColor.grayStringsSroke.setValue(gray, colour);\n }\n }\n else {\n colour = obj.toString();\n }\n return colour + Operators.newLine;\n }\n /**\n * Sets `RGB` color.\n * @private\n */\n rgbToString(ifStroking) {\n let r = this.r;\n let g = this.g;\n let b = this.b;\n let key = (r << 16) + (g << 8) + b;\n if (ifStroking) {\n key += 1 << 24;\n }\n let colour = '';\n let obj = null;\n if (PdfColor.rgbStrings.containsKey(key)) {\n obj = PdfColor.rgbStrings.getValue(key);\n }\n if (obj == null) {\n let red = r / PdfColor.maxColourChannelValue;\n let green = g / PdfColor.maxColourChannelValue;\n let blue = b / PdfColor.maxColourChannelValue;\n if (ifStroking) {\n colour = red.toString() + ' ' + green.toString() + ' ' + blue.toString() + ' RG';\n }\n else {\n colour = red.toString() + ' ' + green.toString() + ' ' + blue.toString() + ' rg';\n }\n PdfColor.rgbStrings.setValue(key, colour);\n }\n else {\n colour = obj.toString();\n }\n return colour + Operators.newLine;\n }\n /***\n * Sets `CMYK` color.\n * @private\n */\n cmykToString(ifStroking) {\n let cyan = this.c;\n let magenta = this.m;\n let yellow = this.y;\n let black = this.b;\n let colour = '';\n colour = cyan.toString() + ' ' + magenta.toString() + ' ' + yellow.toString() + ' ' + black.toString() + ' K';\n return colour + Operators.newLine;\n }\n /**\n * Converts `colour to a PDF array`.\n * @private\n */\n toArray(colorSpace) {\n let array = new PdfArray();\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n array.add(new PdfNumber(this.red));\n array.add(new PdfNumber(this.green));\n array.add(new PdfNumber(this.blue));\n break;\n }\n return array;\n }\n}\n//Fields\n/**\n * Holds `RGB colors` converted into strings.\n * @private\n */\nPdfColor.rgbStrings = new Dictionary();\n/**\n * Holds Gray scale colors converted into strings for `stroking`.\n * @private\n */\nPdfColor.grayStringsSroke = new Dictionary();\n/**\n * Holds Gray scale colors converted into strings for `filling`.\n * @private\n */\nPdfColor.grayStringsFill = new Dictionary();\n/**\n * `Max value` of color channel.\n * @private\n */\nPdfColor.maxColourChannelValue = 255.0;\n\n/**\n * Coordinates of Position for `PointF`.\n * @private\n */\nclass PointF {\n constructor(x, y) {\n if (typeof x === 'undefined') {\n this.x = 0;\n this.y = 0;\n }\n else {\n if (x !== null) {\n this.x = x;\n }\n else {\n this.x = 0;\n }\n if (y !== null) {\n this.y = y;\n }\n else {\n this.y = 0;\n }\n }\n }\n}\n/**\n * Width and Height as `Size`.\n * @private\n */\nclass SizeF {\n constructor(width, height) {\n if (typeof height === 'undefined') {\n this.height = 0;\n this.width = 0;\n }\n else {\n if (height !== null) {\n this.height = height;\n }\n else {\n this.height = 0;\n }\n if (width !== null) {\n this.width = width;\n }\n else {\n this.width = 0;\n }\n }\n }\n}\n/**\n * `RectangleF` with Position and size.\n * @private\n */\nclass RectangleF {\n constructor(arg1, arg2, arg3, arg4) {\n if (typeof arg1 === typeof arg1 && typeof arg1 === 'undefined') {\n this.x = 0;\n this.y = 0;\n this.height = 0;\n this.width = 0;\n }\n else {\n if (arg1 instanceof PointF && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n let pointf = arg1;\n this.x = pointf.x;\n this.y = pointf.y;\n let sizef = arg2;\n this.height = sizef.height;\n this.width = sizef.width;\n }\n else {\n let x = arg1;\n let y = arg2;\n let width = arg3;\n let height = arg4;\n this.x = x;\n this.y = y;\n this.height = height;\n this.width = width;\n }\n }\n }\n}\n/**\n * `Rectangle` with left, right, top and bottom.\n * @private\n */\nclass Rectangle {\n /**\n * Instance of `RectangleF` class with X, Y, Width and Height.\n * @private\n */\n constructor(left, top, right, bottom) {\n this.left = left;\n this.top = top;\n this.right = right;\n this.bottom = bottom;\n }\n /**\n * Gets a value of width\n */\n get width() {\n return this.right - this.left;\n }\n /**\n * Gets a value of height\n */\n get height() {\n return this.bottom - this.top;\n }\n /**\n * Gets a value of Top and Left\n */\n get topLeft() {\n return new PointF(this.left, this.top);\n }\n /**\n * Gets a value of size\n */\n get size() {\n return new SizeF(this.width, this.height);\n }\n toString() {\n return this.topLeft + 'x' + this.size;\n }\n}\n\n/**\n * `PdfBrush` class provides objects used to fill the interiors of graphical shapes such as rectangles,\n * ellipses, pies, polygons, and paths.\n * @private\n */\nclass PdfBrush {\n /**\n * Creates instanceof `PdfBrush` class.\n * @hidden\n * @private\n */\n constructor() {\n //\n }\n //IClonable implementation\n clone() {\n return this;\n }\n}\n\n/**\n * Represents a brush that fills any object with a solid color.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nclass PdfSolidBrush extends PdfBrush {\n //Constructors\n /**\n * Initializes a new instance of the `PdfSolidBrush` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param color color of the brush\n */\n constructor(color) {\n super();\n this.pdfColor = color;\n }\n //Properties\n /**\n * Gets or sets the `color` of the brush.\n * @private\n */\n get color() {\n return this.pdfColor;\n }\n set color(value) {\n this.pdfColor = value;\n }\n //Implementation\n /**\n * `Monitors` the changes of the brush and modify PDF state respectively.\n * @private\n */\n monitorChanges(brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n if (streamWriter == null) {\n throw new Error('ArgumentNullException:streamWriter');\n }\n let diff = false;\n if (brush == null) {\n diff = true;\n streamWriter.setColorAndSpace(this.pdfColor, currentColorSpace, false);\n return diff;\n }\n else {\n diff = true;\n streamWriter.setColorAndSpace(this.pdfColor, currentColorSpace, false);\n return diff;\n }\n }\n /**\n * `Resets` the changes, which were made by the brush.\n * @private\n */\n resetChanges(streamWriter) {\n streamWriter.setColorAndSpace(new PdfColor(0, 0, 0), PdfColorSpace.Rgb, false);\n }\n}\n\n/**\n * public Enum for `PdfFontStyle`.\n * @private\n */\nvar PdfFontStyle;\n(function (PdfFontStyle) {\n /**\n * Specifies the type of `Regular`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Regular\"] = 0] = \"Regular\";\n /**\n * Specifies the type of `Bold`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Bold\"] = 1] = \"Bold\";\n /**\n * Specifies the type of `Italic`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Italic\"] = 2] = \"Italic\";\n /**\n * Specifies the type of `Underline`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Underline\"] = 4] = \"Underline\";\n /**\n * Specifies the type of `Strikeout`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Strikeout\"] = 8] = \"Strikeout\";\n})(PdfFontStyle || (PdfFontStyle = {}));\n/**\n * Specifies the font family from the standard font.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * ```\n */\nvar PdfFontFamily;\n(function (PdfFontFamily) {\n /**\n * Specifies the `Helvetica` font.\n */\n PdfFontFamily[PdfFontFamily[\"Helvetica\"] = 0] = \"Helvetica\";\n /**\n * Specifies the `Courier` font.\n */\n PdfFontFamily[PdfFontFamily[\"Courier\"] = 1] = \"Courier\";\n /**\n * Specifies the `TimesRoman` font.\n */\n PdfFontFamily[PdfFontFamily[\"TimesRoman\"] = 2] = \"TimesRoman\";\n /**\n * Specifies the `Symbol` font.\n */\n PdfFontFamily[PdfFontFamily[\"Symbol\"] = 3] = \"Symbol\";\n /**\n * Specifies the `ZapfDingbats` font.\n */\n PdfFontFamily[PdfFontFamily[\"ZapfDingbats\"] = 4] = \"ZapfDingbats\";\n})(PdfFontFamily || (PdfFontFamily = {}));\n/**\n * public Enum for `PdfFontType`.\n * @private\n */\nvar PdfFontType;\n(function (PdfFontType) {\n /**\n * Specifies the type of `Standard`.\n * @private\n */\n PdfFontType[PdfFontType[\"Standard\"] = 0] = \"Standard\";\n /**\n * Specifies the type of `TrueType`.\n * @private\n */\n PdfFontType[PdfFontType[\"TrueType\"] = 1] = \"TrueType\";\n /**\n * Specifies the type of `TrueTypeEmbedded`.\n * @private\n */\n PdfFontType[PdfFontType[\"TrueTypeEmbedded\"] = 2] = \"TrueTypeEmbedded\";\n})(PdfFontType || (PdfFontType = {}));\n/**\n * public Enum for `PdfWordWrapType`.\n * @private\n */\nvar PdfWordWrapType;\n(function (PdfWordWrapType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Word`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"Word\"] = 1] = \"Word\";\n /**\n * Specifies the type of `WordOnly`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"WordOnly\"] = 2] = \"WordOnly\";\n /**\n * Specifies the type of `Character`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"Character\"] = 3] = \"Character\";\n})(PdfWordWrapType || (PdfWordWrapType = {}));\n/**\n * public Enum for `PdfSubSuperScript`.\n * @private\n */\nvar PdfSubSuperScript;\n(function (PdfSubSuperScript) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `SuperScript`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"SuperScript\"] = 1] = \"SuperScript\";\n /**\n * Specifies the type of `SubScript`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"SubScript\"] = 2] = \"SubScript\";\n})(PdfSubSuperScript || (PdfSubSuperScript = {}));\n/**\n * public Enum for `FontEncoding`.\n * @private\n */\nvar FontEncoding;\n(function (FontEncoding) {\n /**\n * Specifies the type of `Unknown`.\n * @private\n */\n FontEncoding[FontEncoding[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * Specifies the type of `StandardEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"StandardEncoding\"] = 1] = \"StandardEncoding\";\n /**\n * Specifies the type of `MacRomanEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"MacRomanEncoding\"] = 2] = \"MacRomanEncoding\";\n /**\n * Specifies the type of `MacExpertEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"MacExpertEncoding\"] = 3] = \"MacExpertEncoding\";\n /**\n * Specifies the type of `WinAnsiEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"WinAnsiEncoding\"] = 4] = \"WinAnsiEncoding\";\n /**\n * Specifies the type of `PdfDocEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"PdfDocEncoding\"] = 5] = \"PdfDocEncoding\";\n /**\n * Specifies the type of `IdentityH`.\n * @private\n */\n FontEncoding[FontEncoding[\"IdentityH\"] = 6] = \"IdentityH\";\n})(FontEncoding || (FontEncoding = {}));\n/**\n * public Enum for `TtfCmapFormat`.\n * @private\n */\nvar TtfCmapFormat;\n(function (TtfCmapFormat) {\n /**\n * This is the Apple standard character to glyph index mapping table.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Apple\"] = 0] = \"Apple\";\n /**\n * This is the Microsoft standard character to glyph index mapping table.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Microsoft\"] = 4] = \"Microsoft\";\n /**\n * Format 6: Trimmed table mapping.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Trimmed\"] = 6] = \"Trimmed\";\n})(TtfCmapFormat || (TtfCmapFormat = {}));\n/**\n * Enumerator that implements CMAP encodings.\n * @private\n */\nvar TtfCmapEncoding;\n(function (TtfCmapEncoding) {\n /**\n * Unknown encoding.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * When building a symbol font for Windows.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Symbol\"] = 1] = \"Symbol\";\n /**\n * When building a Unicode font for Windows.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Unicode\"] = 2] = \"Unicode\";\n /**\n * For font that will be used on a Macintosh.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Macintosh\"] = 3] = \"Macintosh\";\n})(TtfCmapEncoding || (TtfCmapEncoding = {}));\n/**\n * Ttf platform ID.\n * @private\n */\nvar TtfPlatformID;\n(function (TtfPlatformID) {\n /**\n * Apple platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"AppleUnicode\"] = 0] = \"AppleUnicode\";\n /**\n * Macintosh platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Macintosh\"] = 1] = \"Macintosh\";\n /**\n * Iso platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Iso\"] = 2] = \"Iso\";\n /**\n * Microsoft platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Microsoft\"] = 3] = \"Microsoft\";\n})(TtfPlatformID || (TtfPlatformID = {}));\n/**\n * Microsoft encoding ID.\n * @private\n */\nvar TtfMicrosoftEncodingID;\n(function (TtfMicrosoftEncodingID) {\n /**\n * Undefined encoding.\n * @private\n */\n TtfMicrosoftEncodingID[TtfMicrosoftEncodingID[\"Undefined\"] = 0] = \"Undefined\";\n /**\n * Unicode encoding.\n * @private\n */\n TtfMicrosoftEncodingID[TtfMicrosoftEncodingID[\"Unicode\"] = 1] = \"Unicode\";\n})(TtfMicrosoftEncodingID || (TtfMicrosoftEncodingID = {}));\n/**\n * Macintosh encoding ID.\n * @private\n */\nvar TtfMacintoshEncodingID;\n(function (TtfMacintoshEncodingID) {\n /**\n * Roman encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Roman\"] = 0] = \"Roman\";\n /**\n * Japanese encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Japanese\"] = 1] = \"Japanese\";\n /**\n * Chinese encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Chinese\"] = 2] = \"Chinese\";\n})(TtfMacintoshEncodingID || (TtfMacintoshEncodingID = {}));\n/**\n * Enumerator that implements font descriptor flags.\n * @private\n */\nvar FontDescriptorFlags;\n(function (FontDescriptorFlags) {\n /**\n * All glyphs have the same width (as opposed to proportional or variable-pitch fonts, which have different widths).\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"FixedPitch\"] = 1] = \"FixedPitch\";\n /**\n * Glyphs have serifs, which are short strokes drawn at an angle on the top and\n * bottom of glyph stems (as opposed to sans serif fonts, which do not).\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Serif\"] = 2] = \"Serif\";\n /**\n * Font contains glyphs outside the Adobe standard Latin character set. The\n * flag and the nonsymbolic flag cannot both be set or both be clear.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Symbolic\"] = 4] = \"Symbolic\";\n /**\n * Glyphs resemble cursive handwriting.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Script\"] = 8] = \"Script\";\n /**\n * Font uses the Adobe standard Latin character set or a subset of it.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Nonsymbolic\"] = 32] = \"Nonsymbolic\";\n /**\n * Glyphs have dominant vertical strokes that are slanted.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Italic\"] = 64] = \"Italic\";\n /**\n * Bold font.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"ForceBold\"] = 262144] = \"ForceBold\";\n})(FontDescriptorFlags || (FontDescriptorFlags = {}));\n/**\n * true type font composite glyph flags.\n * @private\n */\nvar TtfCompositeGlyphFlags;\n(function (TtfCompositeGlyphFlags) {\n /**\n * The Arg1And2AreWords.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"Arg1And2AreWords\"] = 1] = \"Arg1And2AreWords\";\n /**\n * The ArgsAreXyValues.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"ArgsAreXyValues\"] = 2] = \"ArgsAreXyValues\";\n /**\n * The RoundXyToGrid.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"RoundXyToGrid\"] = 4] = \"RoundXyToGrid\";\n /**\n * The WeHaveScale.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveScale\"] = 8] = \"WeHaveScale\";\n /**\n * The Reserved.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"Reserved\"] = 16] = \"Reserved\";\n /**\n * The MoreComponents.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"MoreComponents\"] = 32] = \"MoreComponents\";\n /**\n * The WeHaveAnXyScale.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveAnXyScale\"] = 64] = \"WeHaveAnXyScale\";\n /**\n * The WeHaveTwoByTwo\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveTwoByTwo\"] = 128] = \"WeHaveTwoByTwo\";\n /**\n * The WeHaveInstructions.\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveInstructions\"] = 256] = \"WeHaveInstructions\";\n /**\n * The UseMyMetrics.\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"UseMyMetrics\"] = 512] = \"UseMyMetrics\";\n})(TtfCompositeGlyphFlags || (TtfCompositeGlyphFlags = {}));\n\n/**\n * PdfStringFormat.ts class for EJ2-PDF\n */\n/**\n * `PdfStringFormat` class represents the text layout information on PDF.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the text alignment\n * stringFormat.alignment = PdfTextAlignment.Center;\n * // set the vertical alignment\n * stringFormat.lineAlignment = PdfVerticalAlignment.Middle;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nclass PdfStringFormat {\n constructor(arg1, arg2) {\n /**\n * The `scaling factor` of the text being drawn.\n * @private\n */\n this.scalingFactor = 100.0;\n /**\n * Indicates text `wrapping` type.\n * @private\n */\n this.wordWrapType = PdfWordWrapType.Word;\n this.internalLineLimit = true;\n this.wordWrapType = PdfWordWrapType.Word;\n if ((typeof arg1 !== 'undefined') && (typeof arg1 !== 'string')) {\n this.textAlignment = arg1;\n }\n if (typeof arg2 !== 'undefined') {\n this.verticalAlignment = arg2;\n }\n }\n //Properties\n /**\n * Gets or sets the `horizontal` text alignment\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the text alignment\n * stringFormat.alignment = PdfTextAlignment.Center;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get alignment() {\n return this.textAlignment;\n }\n set alignment(value) {\n this.textAlignment = value;\n }\n get textDirection() {\n return this.direction;\n }\n set textDirection(value) {\n this.direction = value;\n }\n /**\n * Gets or sets the `vertical` text alignment.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the vertical alignment\n * stringFormat.lineAlignment = PdfVerticalAlignment.Middle;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get lineAlignment() {\n if (typeof this.verticalAlignment === 'undefined' || this.verticalAlignment == null) {\n return PdfVerticalAlignment.Top;\n }\n else {\n return this.verticalAlignment;\n }\n }\n set lineAlignment(value) {\n this.verticalAlignment = value;\n }\n /**\n * Gets or sets the value that indicates text `direction` mode.\n * @private\n */\n get rightToLeft() {\n if (typeof this.isRightToLeft === 'undefined' || this.isRightToLeft == null) {\n return false;\n }\n else {\n return this.isRightToLeft;\n }\n }\n set rightToLeft(value) {\n this.isRightToLeft = value;\n }\n /**\n * Gets or sets value that indicates a `size` among the characters in the text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set character spacing\n * stringFormat.characterSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get characterSpacing() {\n if (typeof this.internalCharacterSpacing === 'undefined' || this.internalCharacterSpacing == null) {\n return 0;\n }\n else {\n return this.internalCharacterSpacing;\n }\n }\n set characterSpacing(value) {\n this.internalCharacterSpacing = value;\n }\n /**\n * Gets or sets value that indicates a `size` among the words in the text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set word spacing\n * stringFormat.wordSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get wordSpacing() {\n if (typeof this.internalWordSpacing === 'undefined' || this.internalWordSpacing == null) {\n return 0;\n }\n else {\n return this.internalWordSpacing;\n }\n }\n set wordSpacing(value) {\n this.internalWordSpacing = value;\n }\n /**\n * Gets or sets value that indicates the `vertical distance` between the baselines of adjacent lines of text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // set string\n * let text : string = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor\n * incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitati';\n * // set rectangle bounds\n * let rectangle : RectangleF = new RectangleF({x : 0, y : 0}, {width : 300, height : 100})\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set line spacing\n * stringFormat.lineSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString(text, font, blackBrush, rectangle, stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get lineSpacing() {\n if (typeof this.leading === 'undefined' || this.leading == null) {\n return 0;\n }\n else {\n return this.leading;\n }\n }\n set lineSpacing(value) {\n this.leading = value;\n }\n /**\n * Gets or sets a value indicating whether the text is `clipped` or not.\n * @private\n */\n get clipPath() {\n if (typeof this.clip === 'undefined' || this.clip == null) {\n return false;\n }\n else {\n return this.clip;\n }\n }\n set clipPath(value) {\n this.clip = value;\n }\n /**\n * Gets or sets value indicating whether the text is in `subscript or superscript` mode.\n * @private\n */\n get subSuperScript() {\n if (typeof this.pdfSubSuperScript === 'undefined' || this.pdfSubSuperScript == null) {\n return PdfSubSuperScript.None;\n }\n else {\n return this.pdfSubSuperScript;\n }\n }\n set subSuperScript(value) {\n this.pdfSubSuperScript = value;\n }\n /**\n * Gets or sets the `indent` of the first line in the paragraph.\n * @private\n */\n get paragraphIndent() {\n if (typeof this.internalParagraphIndent === 'undefined' || this.internalParagraphIndent == null) {\n return 0;\n }\n else {\n return this.internalParagraphIndent;\n }\n }\n set paragraphIndent(value) {\n this.internalParagraphIndent = value;\n this.firstLineIndent = value;\n }\n /**\n * Gets or sets a value indicating whether [`line limit`].\n * @private\n */\n get lineLimit() {\n return this.internalLineLimit;\n }\n set lineLimit(value) {\n this.internalLineLimit = value;\n }\n /**\n * Gets or sets a value indicating whether [`measure trailing spaces`].\n * @private\n */\n get measureTrailingSpaces() {\n if (typeof this.trailingSpaces === 'undefined' || this.trailingSpaces == null) {\n return false;\n }\n else {\n return this.trailingSpaces;\n }\n }\n set measureTrailingSpaces(value) {\n this.trailingSpaces = value;\n }\n /**\n * Gets or sets a value indicating whether [`no clip`].\n * @private\n */\n get noClip() {\n if (typeof this.isNoClip === 'undefined' || this.isNoClip == null) {\n return false;\n }\n else {\n return this.isNoClip;\n }\n }\n set noClip(value) {\n this.isNoClip = value;\n }\n /**\n * Gets or sets value indicating type of the text `wrapping`.\n * @private\n */\n get wordWrap() {\n // if (typeof this.wrapType === 'undefined' || this.wrapType == null) {\n // return PdfWordWrapType.Word;\n // } else {\n return this.wordWrapType;\n // }\n }\n set wordWrap(value) {\n this.wordWrapType = value;\n }\n /**\n * Gets or sets the `scaling factor`.\n * @private\n */\n get horizontalScalingFactor() {\n // if (typeof this.scalingFactor === 'undefined' || this.scalingFactor == null) {\n // return 100;\n // } else {\n return this.scalingFactor;\n // }\n }\n set horizontalScalingFactor(value) {\n if (value <= 0) {\n throw new Error('ArgumentOutOfRangeException:The scaling factor cant be less of equal to zero, ScalingFactor');\n }\n this.scalingFactor = value;\n }\n /**\n * Gets or sets the `indent` of the first line in the text.\n * @private\n */\n get firstLineIndent() {\n if (typeof this.initialLineIndent === 'undefined' || this.initialLineIndent == null) {\n return 0;\n }\n else {\n return this.initialLineIndent;\n }\n }\n set firstLineIndent(value) {\n this.initialLineIndent = value;\n }\n /**\n * `Clones` the object.\n * @private\n */\n //IClonable implementation\n clone() {\n let format = this;\n return format;\n }\n}\n\n/**\n * StringTokenizer.ts class for EJ2-PDF\n * Utility class for working with strings.\n * @private\n */\nclass StringTokenizer {\n // Constructors\n /**\n * Initializes a new instance of the `StringTokenizer` class.\n * @private\n */\n constructor(textValue) {\n /**\n * Current `position`.\n * @private\n */\n this.currentPosition = 0;\n if (textValue == null) {\n throw new Error('ArgumentNullException:text');\n }\n this.text = textValue;\n }\n // Properties\n /**\n * Gets text `length`.\n * @private\n */\n get length() {\n return this.text.length;\n }\n get end() {\n return (this.currentPosition === this.text.length);\n }\n /**\n * Gets or sets the position.\n * @private\n */\n get position() {\n return this.currentPosition;\n }\n set position(value) {\n this.currentPosition = value;\n }\n static getCharsCount(text, symbols) {\n if (typeof symbols === 'string') {\n if (text == null) {\n throw new Error('ArgumentNullException:wholeText');\n }\n let numSymbols = 0;\n let curIndex = 0;\n for (;;) {\n curIndex = text.indexOf(symbols, curIndex);\n if (curIndex === -1) {\n break;\n }\n else {\n numSymbols++;\n curIndex++;\n }\n }\n return numSymbols;\n }\n else {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (symbols == null) {\n throw new Error('ArgumentNullException:symbols');\n }\n let count = 0;\n for (let i = 0, len = text.length; i < len; i++) {\n let ch = text[i];\n if (this.contains(symbols, ch)) {\n count++;\n }\n }\n return count;\n }\n }\n /**\n * Reads line of the text.\n * @private\n */\n readLine() {\n let pos = this.currentPosition;\n while (pos < this.length) {\n let ch = this.text[pos];\n switch (ch) {\n case '\\r':\n case '\\n': {\n let text = this.text.substring(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos + 1;\n this.currentPosition++;\n return text;\n }\n }\n pos++;\n }\n // The remaining text.\n if (pos > this.currentPosition) {\n let text2 = this.text.substring(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text2;\n }\n return null;\n }\n /**\n * Reads line of the text.\n * @private\n */\n peekLine() {\n let pos = this.currentPosition;\n let line = this.readLine();\n this.currentPosition = pos;\n return line;\n }\n /**\n * Reads a word from the text.\n * @private\n */\n readWord() {\n let pos = this.currentPosition;\n while (pos < this.length) {\n let ch = this.text[pos];\n switch (ch) {\n case '\\r':\n case '\\n':\n let textValue = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos + 1;\n if (((ch === '\\r') && (this.currentPosition < this.length)) && (this.text[this.currentPosition] === '\\n')) {\n this.currentPosition++;\n }\n return textValue;\n case ' ':\n case '\\t': {\n if (pos === this.currentPosition) {\n pos++;\n }\n let text = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text;\n }\n }\n pos++;\n }\n // The remaining text.\n if (pos > this.currentPosition) {\n let text2 = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text2;\n }\n return null;\n }\n /**\n * Peeks a word from the text.\n * @private\n */\n peekWord() {\n let pos = this.currentPosition;\n let word = this.readWord();\n this.currentPosition = pos;\n return word;\n }\n read(count) {\n if (typeof count === 'undefined') {\n let ch = '0';\n if (!this.end) {\n ch = this.text[this.currentPosition];\n this.currentPosition++;\n }\n return ch;\n }\n else {\n let num = 0;\n let builder = '';\n while (!this.end && num < count) {\n let ch = this.read();\n builder = builder + ch;\n num++;\n }\n return builder;\n }\n }\n /**\n * Peeks char form the data.\n * @private\n */\n peek() {\n let ch = '0';\n if (!this.end) {\n ch = this.text[this.currentPosition];\n }\n return ch;\n }\n /**\n * Closes a reader.\n * @private\n */\n close() {\n this.text = null;\n }\n readToEnd() {\n let text;\n if (this.currentPosition === 0) {\n text = this.text;\n }\n else {\n text = this.text.substring(this.length, this.currentPosition);\n }\n this.currentPosition = this.length;\n return text;\n }\n //Implementation\n /**\n * Checks whether array contains a symbol.\n * @private\n */\n static contains(array, symbol) {\n let contains = false;\n for (let i = 0; i < array.length; i++) {\n if (array[i] === symbol) {\n contains = true;\n break;\n }\n }\n return contains;\n }\n}\n// Constants\n/**\n * `Whitespace` symbol.\n * @private\n */\nStringTokenizer.whiteSpace = ' ';\n/**\n * `tab` symbol.\n * @private\n */\nStringTokenizer.tab = '\\t';\n/**\n * Array of `spaces`.\n * @private\n */\nStringTokenizer.spaces = [StringTokenizer.whiteSpace, StringTokenizer.tab];\n/**\n * `Pattern` for WhiteSpace.\n * @private\n */\nStringTokenizer.whiteSpacePattern = '^[ \\t]+$';\n\n/**\n * Class `lay outing the text`.\n */\nclass PdfStringLayouter {\n // Constructors\n /**\n * Initializes a new instance of the `StringLayouter` class.\n * @private\n */\n constructor() {\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isOverloadWithPosition = false;\n //\n }\n layout(arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n if (arg4 instanceof RectangleF) {\n this.initialize(arg1, arg2, arg3, arg4, arg5);\n this.isOverloadWithPosition = arg6;\n this.clientSize = arg7;\n let result = this.doLayout();\n this.clear();\n return result;\n }\n else {\n this.initialize(arg1, arg2, arg3, arg4);\n this.isOverloadWithPosition = arg5;\n this.clientSize = arg6;\n let result = this.doLayout();\n this.clear();\n return result;\n }\n }\n initialize(text, font, format, rectSize, pageHeight) {\n if (typeof pageHeight === 'number') {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (font == null) {\n throw new Error('ArgumentNullException:font');\n }\n this.text = text;\n this.font = font;\n this.format = format;\n this.size = new SizeF(rectSize.width, rectSize.height);\n this.rectangle = rectSize;\n this.pageHeight = pageHeight;\n this.reader = new StringTokenizer(text);\n }\n else {\n this.initialize(text, font, format, new RectangleF(new PointF(0, 0), rectSize), 0);\n }\n }\n /**\n * `Clear` all resources.\n * @private\n */\n clear() {\n this.font = null;\n this.format = null;\n this.reader.close();\n this.reader = null;\n this.text = null;\n }\n /**\n * `Layouts` the text.\n * @private\n */\n doLayout() {\n let result = new PdfStringLayoutResult();\n let lineResult = new PdfStringLayoutResult();\n let lines = [];\n let line = this.reader.peekLine();\n let lineIndent = this.getLineIndent(true);\n while (line != null) {\n lineResult = this.layoutLine(line, lineIndent);\n if (lineResult !== null || typeof lineResult !== 'undefined') {\n let numSymbolsInserted = 0;\n /* tslint:disable */\n let returnedValue = this.copyToResult(result, lineResult, lines, /*out*/ numSymbolsInserted);\n /* tslint:enable */\n let success = returnedValue.success;\n numSymbolsInserted = returnedValue.numInserted;\n if (!success) {\n this.reader.read(numSymbolsInserted);\n break;\n }\n }\n // if (lineResult.textRemainder != null && lineResult.textRemainder.length > 0 ) {\n // break;\n // }\n this.reader.readLine();\n line = this.reader.peekLine();\n lineIndent = this.getLineIndent(false);\n }\n this.finalizeResult(result, lines);\n return result;\n }\n /**\n * Returns `line indent` for the line.\n * @private\n */\n getLineIndent(firstLine) {\n let lineIndent = 0;\n if (this.format != null) {\n lineIndent = (firstLine) ? this.format.firstLineIndent : this.format.paragraphIndent;\n lineIndent = (this.size.width > 0) ? Math.min(this.size.width, lineIndent) : lineIndent;\n }\n return lineIndent;\n }\n /**\n * Calculates `height` of the line.\n * @private\n */\n getLineHeight() {\n let height = this.font.height;\n if (this.format != null && this.format.lineSpacing !== 0) {\n height = this.format.lineSpacing + this.font.height;\n }\n return height;\n }\n /**\n * Calculates `width` of the line.\n * @private\n */\n getLineWidth(line) {\n let width = this.font.getLineWidth(line, this.format);\n return width;\n }\n // tslint:disable\n /**\n * `Layouts` line.\n * @private\n */\n layoutLine(line, lineIndent) {\n let lineResult = new PdfStringLayoutResult();\n lineResult.layoutLineHeight = this.getLineHeight();\n let lines = [];\n let maxWidth = this.size.width;\n let lineWidth = this.getLineWidth(line) + lineIndent;\n let lineType = LineType.FirstParagraphLine;\n let readWord = true;\n // line is in bounds.\n if (maxWidth <= 0 || Math.round(lineWidth) <= Math.round(maxWidth)) {\n this.addToLineResult(lineResult, lines, line, lineWidth, LineType.NewLineBreak | lineType);\n }\n else {\n let builder = '';\n let curLine = '';\n lineWidth = lineIndent;\n let curIndent = lineIndent;\n let reader = new StringTokenizer(line);\n let word = reader.peekWord();\n if (word.length !== reader.length) {\n if (word === ' ') {\n curLine = curLine + word;\n builder = builder + word;\n reader.position += 1;\n word = reader.peekWord();\n }\n }\n while (word != null) {\n curLine = curLine + word;\n let curLineWidth = this.getLineWidth(curLine.toString()) + curIndent;\n if (curLine.toString() === ' ') {\n curLine = '';\n curLineWidth = 0;\n }\n if (curLineWidth > maxWidth) {\n if (this.getWrapType() === PdfWordWrapType.None) {\n break;\n }\n if (curLine.length === word.length) {\n // Character wrap is disabled or one symbol is greater than bounds.\n if (this.getWrapType() === PdfWordWrapType.WordOnly) {\n lineResult.textRemainder = line.substring(reader.position);\n break;\n }\n else if (curLine.length === 1) {\n builder = builder + word;\n break;\n }\n else {\n readWord = false;\n curLine = '';\n word = reader.peek().toString();\n continue;\n }\n }\n else {\n if (this.getLineWidth(word.toString()) > maxWidth) {\n this.format.wordWrap = PdfWordWrapType.Character;\n }\n else {\n if (typeof this.format !== 'undefined' && this.format !== null) {\n this.format.wordWrap = PdfWordWrapType.Word;\n }\n }\n if (this.getWrapType() !== PdfWordWrapType.Character || !readWord) {\n let ln = builder.toString();\n // if (ln.indexOf(' ') === -1) {\n // isSingleWord = true;\n // this.addToLineResult(lineResult, lines, curLine, lineWidth, LineType.LayoutBreak | lineType);\n // } else {\n // this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.LayoutBreak | lineType);\n // } \n if (ln !== ' ') {\n this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.LayoutBreak | lineType);\n }\n if (this.isOverloadWithPosition) {\n maxWidth = this.clientSize.width;\n }\n curLine = '';\n builder = '';\n lineWidth = 0;\n curIndent = 0;\n curLineWidth = 0;\n lineType = LineType.None;\n // if (isSingleWord) {\n // reader.readWord();\n // readWord = false;\n // }\n word = (readWord) ? word : reader.peekWord();\n //isSingleWord = false;\n readWord = true;\n }\n else {\n readWord = false;\n curLine = '';\n curLine = curLine + builder.toString();\n word = reader.peek().toString();\n }\n continue;\n }\n }\n /*tslint:disable:max-func-body-length */\n builder = builder + word;\n lineWidth = curLineWidth;\n if (readWord) {\n reader.readWord();\n word = reader.peekWord();\n //isSingleWord = false;\n }\n else {\n reader.read();\n word = reader.peek().toString();\n }\n }\n if (builder.length > 0) {\n let ln = builder.toString();\n this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.NewLineBreak | LineType.LastParagraphLine);\n }\n reader.close();\n }\n lineResult.layoutLines = [];\n for (let index = 0; index < lines.length; index++) {\n lineResult.layoutLines.push(lines[index]);\n }\n lines = [];\n return lineResult;\n }\n /**\n * `Adds` line to line result.\n * @private\n */\n addToLineResult(lineResult, lines, line, lineWidth, breakType) {\n let info = new LineInfo();\n info.text = line;\n info.width = lineWidth;\n info.lineType = breakType;\n lines.push(info);\n let size = lineResult.actualSize;\n size.height += this.getLineHeight();\n size.width = Math.max(size.width, lineWidth);\n lineResult.size = size;\n }\n /**\n * `Copies` layout result from line result to entire result. Checks whether we can proceed lay outing or not.\n * @private\n */\n copyToResult(result, lineResult, lines, \n /*out*/ numInserted) {\n let success = true;\n let allowPartialLines = (this.format != null && !this.format.lineLimit);\n let height = result.actualSize.height;\n let maxHeight = this.size.height;\n if ((this.pageHeight > 0) && (maxHeight + this.rectangle.y > this.pageHeight)) {\n maxHeight = this.rectangle.y - this.pageHeight;\n maxHeight = Math.max(maxHeight, -maxHeight);\n }\n numInserted = 0;\n if (lineResult.lines != null) {\n for (let i = 0, len = lineResult.lines.length; i < len; i++) {\n let expHeight = height + lineResult.lineHeight;\n if (expHeight <= maxHeight || maxHeight <= 0 || allowPartialLines) {\n let info = lineResult.lines[i];\n numInserted += info.text.length;\n info = this.trimLine(info, (lines.length === 0));\n lines.push(info);\n // Update width.\n let size = result.actualSize;\n size.width = Math.max(size.width, info.width);\n result.size = size;\n // The part of the line fits only and it's allowed to use partial lines.\n // if (expHeight >= maxHeight && maxHeight > 0 && allowPartialLines)\n // {\n // let shouldClip : boolean = (this.format == null || !this.format.noClip);\n // if (shouldClip)\n // {\n // let exceededHeight : number = expHeight - maxHeight;\n // let fitHeight : number = /*Utils.Round(*/ lineResult.lineHeight - exceededHeight /*)*/;\n // height = /*Utils.Round(*/ height + fitHeight /*)*/;\n // }\n // else\n // {\n // height = expHeight;\n // }\n // success = false;\n // break;\n // } else {\n height = expHeight;\n // }\n }\n else {\n success = false;\n break;\n }\n }\n }\n if (height != result.size.height) {\n let size1 = result.actualSize;\n size1.height = height;\n result.size = size1;\n }\n return { success: success, numInserted: numInserted };\n }\n /**\n * `Finalizes` final result.\n * @private\n */\n finalizeResult(result, lines) {\n result.layoutLines = [];\n for (let index = 0; index < lines.length; index++) {\n result.layoutLines.push(lines[index]);\n }\n result.layoutLineHeight = this.getLineHeight();\n if (!this.reader.end) {\n result.textRemainder = this.reader.readToEnd();\n }\n lines = [];\n }\n /**\n * `Trims` whitespaces at the line.\n * @private\n */\n trimLine(info, firstLine) {\n let line = info.text;\n let lineWidth = info.width;\n // Trim start whitespaces if the line is not a start of the paragraph only.\n let trimStartSpaces = ((info.lineType & LineType.FirstParagraphLine) === 0);\n let start = (this.format == null || !this.format.rightToLeft);\n line = (start) ? line.trim() : line.trim();\n // Recalculate line width.\n if (line.length !== info.text.length) {\n lineWidth = this.getLineWidth(line);\n if ((info.lineType & LineType.FirstParagraphLine) > 0) {\n lineWidth += this.getLineIndent(firstLine);\n }\n }\n info.text = line;\n info.width = lineWidth;\n return info;\n }\n /**\n * Returns `wrap` type.\n * @private\n */\n getWrapType() {\n let wrapType = (this.format != null) ? this.format.wordWrap : PdfWordWrapType.Word;\n return wrapType;\n }\n}\n//Internal declaration\nclass PdfStringLayoutResult {\n // Properties\n /**\n * Gets the `text` which is not lay outed.\n * @private\n */\n get remainder() {\n return this.textRemainder;\n }\n /**\n * Gets the actual layout text `bounds`.\n * @private\n */\n get actualSize() {\n if (typeof this.size === 'undefined') {\n this.size = new SizeF(0, 0);\n }\n return this.size;\n }\n /**\n * Gets layout `lines` information.\n * @private\n */\n get lines() {\n return this.layoutLines;\n }\n /**\n * Gets the `height` of the line.\n * @private\n */\n get lineHeight() {\n return this.layoutLineHeight;\n }\n /**\n * Gets value that indicates whether any layout text [`empty`].\n * @private\n */\n get empty() {\n return (this.layoutLines == null || this.layoutLines.length === 0);\n }\n /**\n * Gets `number of` the layout lines.\n * @private\n */\n get lineCount() {\n let count = (!this.empty) ? this.layoutLines.length : 0;\n return count;\n }\n}\nclass LineInfo {\n //Properties\n /**\n * Gets the `type` of the line text.\n * @private\n */\n get lineType() {\n return this.type;\n }\n set lineType(value) {\n this.type = value;\n }\n /**\n * Gets the line `text`.\n * @private\n */\n get text() {\n return this.content;\n }\n set text(value) {\n this.content = value;\n }\n /**\n * Gets `width` of the line text.\n * @private\n */\n get width() {\n return this.lineWidth;\n }\n set width(value) {\n this.lineWidth = value;\n }\n}\n/**\n* Break type of the `line`.\n* @private\n*/\nvar LineType;\n(function (LineType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n LineType[LineType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `NewLineBreak`.\n * @private\n */\n LineType[LineType[\"NewLineBreak\"] = 1] = \"NewLineBreak\";\n /**\n * Specifies the type of `LayoutBreak`.\n * @private\n */\n LineType[LineType[\"LayoutBreak\"] = 2] = \"LayoutBreak\";\n /**\n * Specifies the type of `FirstParagraphLine`.\n * @private\n */\n LineType[LineType[\"FirstParagraphLine\"] = 4] = \"FirstParagraphLine\";\n /**\n * Specifies the type of `LastParagraphLine`.\n * @private\n */\n LineType[LineType[\"LastParagraphLine\"] = 8] = \"LastParagraphLine\";\n})(LineType || (LineType = {}));\n\n/**\n * PdfFont.ts class for EJ2-PDF\n */\n/**\n * Defines a particular format for text, including font face, size, and style attributes.\n * @private\n */\nclass PdfFont {\n constructor(size, style) {\n /**\n * `Style` of the font.\n * @private\n */\n this.fontStyle = PdfFontStyle.Regular;\n if (typeof size === 'number' && typeof style === 'undefined') {\n this.fontSize = size;\n }\n else {\n this.fontSize = size;\n this.setStyle(style);\n }\n }\n //Properties\n /**\n * Gets the face name of this Font.\n * @private\n */\n get name() {\n return this.metrics.name;\n }\n /**\n * Gets the size of this font.\n * @private\n */\n get size() {\n return this.fontSize;\n }\n /**\n * Gets the height of the font in points.\n * @private\n */\n get height() {\n return this.metrics.getHeight(null);\n }\n /**\n * Gets the style information for this font.\n * @private\n */\n get style() {\n return this.fontStyle;\n }\n set style(value) {\n this.fontStyle = value;\n }\n /**\n * Gets a value indicating whether this `PdfFont` is `bold`.\n * @private\n */\n get bold() {\n return ((this.style & PdfFontStyle.Bold) > 0);\n }\n /**\n * Gets a value indicating whether this `PdfFont` has the `italic` style applied.\n * @private\n */\n get italic() {\n return ((this.style & PdfFontStyle.Italic) > 0);\n }\n /**\n * Gets a value indicating whether this `PdfFont` is `strikeout`.\n * @private\n */\n get strikeout() {\n return ((this.style & PdfFontStyle.Strikeout) > 0);\n }\n /**\n * Gets a value indicating whether this `PdfFont` is `underline`.\n * @private\n */\n get underline() {\n return ((this.style & PdfFontStyle.Underline) > 0);\n }\n /**\n * Gets or sets the `metrics` for this font.\n * @private\n */\n get metrics() {\n return this.fontMetrics;\n }\n set metrics(value) {\n this.fontMetrics = value;\n }\n // /**\n // * Gets and Sets the font `internals`.\n // * @private\n // */\n // public get fontInternal() : IPdfPrimitive {\n // return this.pdfFontInternals;\n // }\n // public set fontInternal(value : IPdfPrimitive) {\n // this.pdfFontInternals = value;\n // }\n //IPdfWrapper Members\n /**\n * Gets the `element` representing the font.\n * @private\n */\n get element() {\n return this.pdfFontInternals;\n }\n measureString(text, arg2, arg3, arg4, arg5) {\n if (typeof text === 'string' && typeof arg2 === 'undefined') {\n return this.measureString(text, null);\n }\n else if (typeof text === 'string' && (arg2 instanceof PdfStringFormat || arg2 == null) && typeof arg3 === 'undefined' && typeof arg4 === 'undefined') {\n let temparg2 = arg2;\n let charactersFitted = 0;\n let linesFilled = 0;\n return this.measureString(text, temparg2, charactersFitted, linesFilled);\n }\n else if (typeof text === 'string' && (arg2 instanceof PdfStringFormat || arg2 == null) && typeof arg3 === 'number' && typeof arg4 === 'number') {\n let temparg2 = arg2;\n return this.measureString(text, 0, temparg2, arg3, arg4);\n // } else if (typeof text === 'string' && typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n // return this.measureString(text, arg2, null);\n // } else if (typeof text === 'string' && typeof arg2 === 'number' && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'undefined' && typeof arg5 === 'undefined') {\n // let temparg3 : PdfStringFormat = arg3 as PdfStringFormat;\n // let charactersFitted : number = 0;\n // let linesFilled : number = 0;\n // return this.measureString(text, arg2, temparg3, charactersFitted, linesFilled);\n }\n else if (typeof text === 'string' && typeof arg2 === 'number' && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'number' && typeof arg5 === 'number') {\n let layoutArea = new SizeF(arg2, 0);\n let temparg3 = arg3;\n return this.measureString(text, layoutArea, temparg3, arg4, arg5);\n // } else if (typeof text === 'string' && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n // return this.measureString(text, arg2, null);\n // } else if (typeof text === 'string' && arg2 instanceof SizeF && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'undefined' && typeof arg5 === 'undefined') {\n // let temparg3 : PdfStringFormat = arg3 as PdfStringFormat;\n // let charactersFitted : number = 0;\n // let linesFilled : number = 0;\n // return this.measureString(text, arg2, temparg3, charactersFitted, linesFilled);\n }\n else {\n if (text == null) {\n throw Error(`ArgumentNullException(\"text\")`);\n }\n let temparg2 = arg2;\n let temparg3 = arg3;\n let layouter = new PdfStringLayouter();\n let result = layouter.layout(text, this, temparg3, temparg2, false, new SizeF(0, 0));\n // arg4 = (result.Remainder == null) ? text.length : text.length - result.Remainder.length;\n arg4 = text.length;\n arg5 = (result.empty) ? 0 : result.lines.length;\n return result.actualSize;\n }\n }\n /* tslint:enable */\n //IPdfCache Members\n /**\n * `Checks` whether the object is similar to another object.\n * @private\n */\n equalsTo(obj) {\n let result = this.equalsToFont(obj);\n return result;\n }\n /**\n * Returns `internals` of the object.\n * @private\n */\n getInternals() {\n return this.pdfFontInternals;\n }\n /**\n * Sets `internals` to the object.\n * @private\n */\n setInternals(internals) {\n if (internals == null) {\n throw new Error('ArgumentNullException:internals');\n }\n this.pdfFontInternals = internals;\n }\n /**\n * Sets the `style` of the font.\n * @private\n */\n setStyle(style) {\n this.fontStyle = style;\n }\n /**\n * Applies `settings` to the default line width.\n * @private\n */\n applyFormatSettings(line, format, width) {\n // if (line == null) {\n // throw new Error(`ArgumentNullException:line`);\n // }\n let realWidth = width;\n if (format != null && width > 0) {\n // Space among characters is not default.\n if (format.characterSpacing !== 0) {\n realWidth += (line.length - 1) * format.characterSpacing;\n }\n // Space among words is not default.\n if (format.wordSpacing !== 0) {\n let symbols = StringTokenizer.spaces;\n let whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n realWidth += whitespacesCount * format.wordSpacing;\n }\n }\n return realWidth;\n }\n}\n//Constants\n/**\n * `Multiplier` of the symbol width.\n * @default 0.001\n * @private\n */\nPdfFont.charSizeMultiplier = 0.001;\n/**\n * `Synchronization` object.\n * @private\n */\nPdfFont.syncObject = new Object();\n\n/**\n * Used to `write a string` into output file.\n * @private\n */\nclass PdfWriter {\n /**\n * Initialize an instance of `PdfWriter` class.\n * @private\n */\n constructor(stream) {\n this.streamWriter = stream;\n }\n //properties\n /**\n * Gets and Sets the `document`.\n * @private\n */\n get document() {\n return this.pdfDocument;\n }\n set document(value) {\n this.pdfDocument = value;\n }\n /**\n * Gets the `position`.\n * @private\n */\n get position() {\n return this.streamWriter.buffer.size;\n }\n /**\n * Gets the `length` of the stream'.\n * @private\n */\n get length() {\n return this.streamWriter.buffer.size;\n }\n /**\n * Gets the `stream`.\n * @private\n */\n get stream() {\n let result = this.streamWriter;\n return result;\n }\n //public Methods\n /**\n * `Writes the specified data`.\n * @private\n */\n write(overload) {\n let tempOverload = overload;\n this.streamWriter.write(tempOverload);\n }\n}\n\n/**\n * public Enum for `CompositeFontType`.\n * @private\n */\nvar ObjectStatus;\n(function (ObjectStatus) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n ObjectStatus[ObjectStatus[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Registered`.\n * @private\n */\n ObjectStatus[ObjectStatus[\"Registered\"] = 1] = \"Registered\";\n})(ObjectStatus || (ObjectStatus = {}));\n\n/**\n * PdfMainObjectCollection.ts class for EJ2-PDF\n */\n/**\n * The collection of all `objects` within a PDF document.\n * @private\n */\nclass PdfMainObjectCollection {\n constructor() {\n //Fields\n /**\n * The collection of the `indirect objects`.\n * @default []\n * @private\n */\n this.objectCollections = [];\n /**\n * The collection of the `Indirect objects`.\n * @default new Dictionary()\n * @private\n */\n this.mainObjectCollection = new Dictionary();\n /**\n * The collection of `primitive objects`.\n * @private\n */\n this.primitiveObjectCollection = new Dictionary();\n }\n //Properties\n /**\n * Gets the `count`.\n * @private\n */\n get count() {\n return this.objectCollections.length;\n }\n /**\n * Gets the value of `ObjectInfo` from object collection.\n * @private\n */\n items(index) {\n return this.objectCollections[index];\n }\n //Methods\n /**\n * Specifies the value of `IsNew`.\n * @private\n */\n get outIsNew() {\n return this.isNew;\n }\n /**\n * `Adds` the specified element.\n * @private\n */\n add(element) {\n let objInfo = new ObjectInfo(element);\n this.objectCollections.push(objInfo);\n if (!this.primitiveObjectCollection.containsKey(element)) {\n this.primitiveObjectCollection.setValue(element, this.objectCollections.length - 1);\n }\n element.position = this.index = this.objectCollections.length - 1;\n element.status = ObjectStatus.Registered;\n }\n /**\n * `Looks` through the collection for the object specified.\n * @private\n */\n lookFor(obj) {\n let index = -1;\n if (obj.position !== -1) {\n return obj.position;\n }\n if (this.primitiveObjectCollection.containsKey(obj) && this.count === this.primitiveObjectCollection.size()) {\n index = this.primitiveObjectCollection.getValue(obj);\n }\n else {\n for (let i = this.count - 1; i >= 0; i--) {\n let oi = this.objectCollections[i];\n if (oi.object === obj) {\n index = i;\n break;\n }\n }\n }\n return index;\n }\n /**\n * Gets the `reference of the object`.\n * @private\n */\n getReference(index, isNew) {\n this.index = this.lookFor(index);\n let reference;\n this.isNew = false;\n let oi = this.objectCollections[this.index];\n reference = oi.reference;\n let obj = { reference: reference, wasNew: isNew };\n return obj;\n }\n /**\n * Tries to set the `reference to the object`.\n * @private\n */\n trySetReference(obj, reference, found) {\n let result = true;\n found = true;\n this.index = this.lookFor(obj);\n let oi = this.objectCollections[this.index];\n oi.setReference(reference);\n return result;\n }\n destroy() {\n for (let obj of this.objectCollections) {\n if (obj !== undefined) {\n obj.pdfObject.position = -1;\n obj.pdfObject.isSaving = undefined;\n obj.pdfObject.objectCollectionIndex = undefined;\n obj.pdfObject.position = undefined;\n }\n }\n this.objectCollections = [];\n this.mainObjectCollection = new Dictionary();\n this.primitiveObjectCollection = new Dictionary();\n }\n}\nclass ObjectInfo {\n constructor(obj, reference) {\n this.pdfObject = obj;\n this.pdfReference = reference;\n }\n //Properties\n /**\n * Gets the `object`.\n * @private\n */\n get object() {\n return this.pdfObject;\n }\n set object(value) {\n this.pdfObject = value;\n }\n /**\n * Gets the `reference`.\n * @private\n */\n get reference() {\n return this.pdfReference;\n }\n /**\n * Sets the `reference`.\n * @private\n */\n setReference(reference) {\n this.pdfReference = reference;\n }\n}\n\n/**\n * `PdfDocumentBase` class represent common properties of PdfDocument classes.\n * @private\n */\nclass PdfDocumentBase {\n constructor(document) {\n /**\n * If the stream is copied, then it specifies true.\n * @private\n */\n this.isStreamCopied = false;\n if (document instanceof PdfDocument) {\n this.document = document;\n }\n }\n //Prpperties\n /**\n * Gets the `PDF objects` collection, which stores all objects and references to it..\n * @private\n */\n get pdfObjects() {\n return this.objects;\n }\n /**\n * Gets the `cross-reference` table.\n * @private\n */\n get crossTable() {\n return this.pdfCrossTable;\n }\n /**\n * Gets or sets the current saving `object number`.\n * @private\n */\n get currentSavingObj() {\n return this.currentSavingObject;\n }\n set currentSavingObj(value) {\n this.currentSavingObject = value;\n }\n /**\n * Gets the PDF document `catalog`.\n * @private\n */\n get catalog() {\n return this.pdfCatalog;\n }\n set catalog(value) {\n this.pdfCatalog = value;\n }\n //Public methods\n /**\n * Sets the `main object collection`.\n * @private\n */\n setMainObjectCollection(mainObjectCollection) {\n this.objects = mainObjectCollection;\n }\n /**\n * Sets the `cross table`.\n * @private\n */\n setCrossTable(cTable) {\n this.pdfCrossTable = cTable;\n }\n /**\n * Sets the `catalog`.\n * @private\n */\n setCatalog(catalog) {\n this.pdfCatalog = catalog;\n }\n save(filename) {\n let encoding = new Encoding(true);\n let SW = new StreamWriter(encoding);\n if (typeof filename === 'undefined') {\n let encoding = new Encoding(true);\n let SW = new StreamWriter(encoding);\n return new Promise((resolve, reject) => {\n /* tslint:disable-next-line:no-any */\n let obj = {};\n obj.blobData = new Blob([this.document.docSave(SW, true)], { type: 'application/pdf' });\n resolve(obj);\n });\n }\n else {\n this.document.docSave(SW, filename, true);\n }\n }\n /**\n * `Clone` of parent object - PdfDocument.\n * @private\n */\n clone() {\n return this.document;\n }\n}\n\n/**\n * public Enum for `ObjectType`.\n * @private\n */\nvar ObjectType;\n(function (ObjectType) {\n /**\n * Specifies the type of `Free`.\n * @private\n */\n ObjectType[ObjectType[\"Free\"] = 0] = \"Free\";\n /**\n * Specifies the type of `Normal`.\n * @private\n */\n ObjectType[ObjectType[\"Normal\"] = 1] = \"Normal\";\n /**\n * Specifies the type of `Packed`.\n * @private\n */\n ObjectType[ObjectType[\"Packed\"] = 2] = \"Packed\";\n})(ObjectType || (ObjectType = {}));\n\n/**\n * PdfCatalog.ts class for EJ2-PDF\n */\n/**\n * `PdfCatalog` class represents internal catalog of the Pdf document.\n * @private\n */\nclass PdfCatalog extends PdfDictionary {\n //constructor\n /**\n * Initializes a new instance of the `PdfCatalog` class.\n * @private\n */\n constructor() {\n super();\n //fields\n /**\n * Internal variable to store collection of `sections`.\n * @default null\n * @private\n */\n this.sections = null;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @private\n */\n this.tempDictionaryProperties = new DictionaryProperties();\n this.items.setValue(new DictionaryProperties().type, new PdfName('Catalog'));\n }\n //Properties\n /**\n * Gets or sets the sections, which contain `pages`.\n * @private\n */\n get pages() {\n return this.sections;\n }\n set pages(value) {\n let dictionary = value.element;\n // if (this.sections !== value) {\n // this.sections = value;\n // this.Items.setValue(this.tempDictionaryProperties.pages, new PdfReferenceHolder(value));\n // }\n this.sections = value;\n this.items.setValue(this.tempDictionaryProperties.pages, new PdfReferenceHolder(value));\n }\n}\n\n/**\n * `PdfCrossTable` is responsible for intermediate level parsing\n * and savingof a PDF document.\n * @private\n */\nclass PdfCrossTable {\n constructor() {\n /**\n * The modified `objects` that should be saved.\n * @private\n */\n this.objects = new Dictionary();\n /**\n * Holds `maximal generation number` or offset to object.\n * @default 0\n * @private\n */\n this.maxGenNumIndex = 0;\n /**\n * The `number of the objects`.\n * @default 0\n * @private\n */\n this.objectCount = 0;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @default new PdfDictionaryProperties()\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n }\n //Properties\n /**\n * Gets or sets if the document `is merged`.\n * @private\n */\n get isMerging() {\n return this.merging;\n }\n set isMerging(value) {\n this.merging = value;\n }\n /**\n * Gets the `trailer`.\n * @private\n */\n get trailer() {\n if (this.internalTrailer == null) {\n this.internalTrailer = new PdfStream();\n }\n return this.internalTrailer;\n }\n /**\n * Gets or sets the main `PdfDocument` class instance.\n * @private\n */\n get document() {\n return this.pdfDocument;\n }\n set document(value) {\n this.pdfDocument = value;\n this.items = this.pdfDocument.pdfObjects;\n }\n /**\n * Gets the catched `PDF object` main collection.\n * @private\n */\n get pdfObjects() {\n return this.items;\n }\n /**\n * Gets the `object collection`.\n * @private\n */\n get objectCollection() {\n return this.pdfDocument.pdfObjects;\n }\n /**\n * Gets or sets the `number of the objects` within the document.\n * @private\n */\n get count() {\n return this.objectCount;\n }\n set count(value) {\n this.objectCount = value;\n }\n /**\n * Returns `next available object number`.\n * @private\n */\n get nextObjNumber() {\n this.count = this.count + 1;\n return this.count;\n }\n save(writer, filename) {\n this.saveHead(writer);\n this.mappedReferences = null;\n this.objects.clear();\n this.markTrailerReferences();\n this.saveObjects(writer);\n let saveCount = this.count;\n let xrefPos = writer.position;\n this.registerObject(0, new PdfReference(0, -1), true);\n let prevXRef = 0;\n writer.write(Operators.xref);\n writer.write(Operators.newLine);\n this.saveSections(writer);\n this.saveTrailer(writer, this.count, prevXRef);\n this.saveTheEndess(writer, xrefPos);\n this.count = saveCount;\n for (let i = 0; i < this.objectCollection.count; ++i) {\n let oi = this.objectCollection.items(i);\n oi.object.isSaving = false;\n }\n if (typeof filename === 'undefined') {\n return writer.stream.buffer;\n }\n else {\n writer.stream.save(filename);\n }\n }\n /**\n * `Saves the endess` of the file.\n * @private\n */\n saveTheEndess(writer, xrefPos) {\n writer.write(Operators.newLine + Operators.startxref + Operators.newLine);\n writer.write(xrefPos.toString() + Operators.newLine);\n writer.write(Operators.eof + Operators.newLine);\n }\n /**\n * `Saves the new trailer` dictionary.\n * @private\n */\n saveTrailer(writer, count, prevXRef) {\n writer.write(Operators.trailer + Operators.newLine);\n // Save the dictionary.\n let trailer = this.trailer;\n trailer.items.setValue(this.dictionaryProperties.size, new PdfNumber(this.objectCount + 1));\n trailer = new PdfDictionary(trailer); // Make it real dictionary.\n trailer.setEncrypt(false);\n trailer.save(writer);\n }\n /**\n * `Saves the xref section`.\n * @private\n */\n saveSections(writer) {\n let objectNum = 0;\n let count = 0;\n do {\n count = this.prepareSubsection(objectNum);\n this.saveSubsection(writer, objectNum, count);\n objectNum += count;\n } while (count !== 0);\n }\n /**\n * `Saves a subsection`.\n * @private\n */\n saveSubsection(writer, objectNum, count) {\n if (count <= 0 || objectNum >= this.count) {\n return;\n }\n writer.write(objectNum + ' ' + (count + 1) + Operators.newLine);\n for (let i = objectNum; i <= objectNum + count; ++i) {\n let obj = this.objects.getValue(i);\n let str = '';\n if (obj.type === ObjectType.Free) {\n str = this.getItem(obj.offset, 65535, true);\n }\n else {\n str = this.getItem(obj.offset, obj.generation, false);\n }\n writer.write(str);\n }\n }\n /**\n * Generates string for `xref table item`.\n * @private\n */\n getItem(offset, genNumber, isFree) {\n let returnString = '';\n let addOffsetLength = 10 - offset.toString().length;\n if (genNumber <= 0) {\n genNumber = 0;\n }\n let addGenNumberLength = (5 - genNumber.toString().length) <= 0 ? 0 : (5 - genNumber.toString().length);\n for (let index = 0; index < addOffsetLength; index++) {\n returnString = returnString + '0';\n }\n returnString = returnString + offset.toString() + ' ';\n for (let index = 0; index < addGenNumberLength; index++) {\n returnString = returnString + '0';\n }\n returnString = returnString + genNumber.toString() + ' ';\n returnString = returnString + ((isFree) ? Operators.f : Operators.n) + Operators.newLine;\n return returnString;\n }\n /**\n * `Prepares a subsection` of the current section within the cross-reference table.\n * @private\n */\n prepareSubsection(objectNum) {\n let count = 0;\n let i;\n let total = this.count;\n for (let k = 0; k < this.document.pdfObjects.count; k++) {\n let reference = this.document.pdfObjects.items(k).reference;\n let refString = reference.toString();\n let refArray = refString.split(' ');\n }\n if (objectNum >= total) {\n return count;\n }\n // search for first changed indirect object.\n for (i = objectNum; i < total; ++i) {\n break;\n }\n objectNum = i;\n // look up for all indirect objects in one subsection.\n for (; i < total; ++i) {\n ++count;\n }\n return count;\n }\n /**\n * `Marks the trailer references` being saved.\n * @private\n */\n markTrailerReferences() {\n let keys = this.trailer.items.keys();\n let values = this.trailer.items.values();\n }\n /**\n * `Saves the head`.\n * @private\n */\n saveHead(writer) {\n let version = this.generateFileVersion(writer.document);\n writer.write('%PDF-' + version);\n writer.write(Operators.newLine);\n }\n /**\n * Generates the `version` of the file.\n * @private\n */\n generateFileVersion(document) {\n let iVersion = 4;\n let version = '1.' + iVersion.toString();\n return version;\n }\n getReference(obj, bNew) {\n if (typeof bNew === 'undefined') {\n let wasNew = false;\n return this.getReference(obj, wasNew);\n }\n else {\n //code splitted for reducing lines of code exceeds 100.\n return this.getSubReference(obj, bNew);\n }\n }\n /**\n * Retrieves the `reference` of the object given.\n * @private\n */\n getSubReference(obj, bNew) {\n let isNew = false;\n let wasNew;\n let reference = null;\n // if (obj.IsSaving) {\n if (this.items.count > 0 && obj.objectCollectionIndex > 0 && this.items.count > obj.objectCollectionIndex - 1) {\n let tempObj = this.document.pdfObjects.getReference(obj, wasNew);\n reference = tempObj.reference;\n wasNew = tempObj.wasNew;\n }\n if (reference == null) {\n if (obj.status === ObjectStatus.Registered) {\n wasNew = false;\n }\n else {\n wasNew = true;\n }\n }\n else {\n wasNew = false;\n }\n // need to add mapped reference code\n if (reference == null) {\n let objnumber = this.nextObjNumber;\n reference = new PdfReference(objnumber, 0);\n let found;\n if (wasNew) {\n this.document.pdfObjects.add(obj);\n this.document.pdfObjects.trySetReference(obj, reference, found);\n let tempIndex = this.document.pdfObjects.count - 1;\n let tempkey = this.document.pdfObjects.objectCollections[tempIndex].reference.objNumber;\n let tempvalue = this.document.pdfObjects.objectCollections[this.document.pdfObjects.count - 1];\n this.document.pdfObjects.mainObjectCollection.setValue(tempkey, tempvalue);\n obj.position = -1;\n }\n else {\n this.document.pdfObjects.trySetReference(obj, reference, found);\n }\n obj.objectCollectionIndex = reference.objNumber;\n obj.status = ObjectStatus.None;\n isNew = true;\n }\n bNew = isNew || this.bForceNew;\n return reference;\n }\n /**\n * `Saves all objects` in the collection.\n * @private\n */\n saveObjects(writer) {\n let objectCollection = this.objectCollection;\n for (let i = 0; i < objectCollection.count; ++i) {\n let oi = objectCollection.items(i);\n let obj = oi.object;\n obj.isSaving = true;\n this.saveIndirectObject(obj, writer);\n }\n }\n /**\n * `Saves indirect object`.\n * @private\n */\n saveIndirectObject(obj, writer) {\n let reference = this.getReference(obj);\n if (obj instanceof PdfCatalog) {\n this.trailer.items.setValue(this.dictionaryProperties.root, reference);\n }\n // NOTE : This is needed for correct string objects encryption.\n this.pdfDocument.currentSavingObj = reference;\n let tempArchive = false;\n tempArchive = obj.getArchive();\n this.registerObject(writer.position, reference);\n this.doSaveObject(obj, reference, writer);\n }\n /**\n * Performs `real saving` of the save object.\n * @private\n */\n doSaveObject(obj, reference, writer) {\n let correctPosition = writer.length;\n writer.write(reference.objNumber.toString());\n writer.write(Operators.whiteSpace);\n writer.write(reference.genNumber.toString());\n writer.write(Operators.whiteSpace);\n writer.write(Operators.obj);\n writer.write(Operators.newLine);\n obj.save(writer);\n let stream = writer.stream;\n writer.write(Operators.endObj);\n writer.write(Operators.newLine);\n }\n registerObject(offset, reference, free) {\n if (typeof free === 'boolean') {\n // Register the object by its number.\n this.objects.setValue(reference.objNumber, new RegisteredObject(offset, reference, free));\n this.maxGenNumIndex = Math.max(this.maxGenNumIndex, reference.genNumber);\n }\n else if (typeof free === 'undefined') {\n // Register the object by its number.\n this.objects.setValue(reference.objNumber, new RegisteredObject(offset, reference));\n this.maxGenNumIndex = Math.max(this.maxGenNumIndex, reference.genNumber);\n }\n }\n /**\n * `Dereferences` the specified primitive object.\n * @private\n */\n static dereference(obj) {\n let rh = obj;\n if (rh != null) {\n obj = rh.object;\n }\n return obj;\n }\n}\nclass RegisteredObject {\n //Properties\n /**\n * Gets the `object number`.\n * @private\n */\n get objectNumber() {\n return this.object;\n }\n /**\n * Gets the `offset`.\n * @private\n */\n get offset() {\n let result;\n result = this.offsetNumber;\n return result;\n }\n constructor(offset, reference, free) {\n let tempOffset = offset;\n this.offsetNumber = tempOffset;\n let tempReference = reference;\n this.generation = tempReference.genNumber;\n this.object = tempReference.objNumber;\n if (typeof free === 'undefined') {\n this.type = ObjectType.Normal;\n }\n else {\n this.type = ObjectType.Free;\n }\n }\n}\n\n/**\n * PdfPageSize.ts class for EJ2-PDF\n */\n/**\n * Represents information about various predefined `page sizes`.\n */\nclass PdfPageSize {\n //constructor\n /**\n * Initialize an instance for `PdfPageSize` class.\n * @private\n */\n constructor() {\n // \n }\n}\n/**\n * Specifies the size of `letter`.\n * @private\n */\nPdfPageSize.letter = new SizeF(612, 792);\n/**\n * Specifies the size of `note`.\n * @private\n */\nPdfPageSize.note = new SizeF(540, 720);\n/**\n * Specifies the size of `legal`.\n * @private\n */\nPdfPageSize.legal = new SizeF(612, 1008);\n/**\n * Specifies the size of `a0`.\n * @private\n */\nPdfPageSize.a0 = new SizeF(2380, 3368);\n/**\n * Specifies the size of `a1`.\n * @private\n */\nPdfPageSize.a1 = new SizeF(1684, 2380);\n/**\n * Specifies the size of `a2`.\n * @private\n */\nPdfPageSize.a2 = new SizeF(1190, 1684);\n/**\n * Specifies the size of `a3`.\n * @private\n */\nPdfPageSize.a3 = new SizeF(842, 1190);\n/**\n * Specifies the size of `a4`.\n * @private\n */\nPdfPageSize.a4 = new SizeF(595, 842);\n/**\n * Specifies the size of `a5`.\n * @private\n */\nPdfPageSize.a5 = new SizeF(421, 595);\n/**\n * Specifies the size of `a6`.\n * @private\n */\nPdfPageSize.a6 = new SizeF(297, 421);\n/**\n * Specifies the size of `a7`.\n * @private\n */\nPdfPageSize.a7 = new SizeF(210, 297);\n/**\n * Specifies the size of `a8`.\n * @private\n */\nPdfPageSize.a8 = new SizeF(148, 210);\n/**\n * Specifies the size of `a9`.\n * @private\n */\nPdfPageSize.a9 = new SizeF(105, 148);\n/**\n * Specifies the size of `a10`.\n * @private\n */\nPdfPageSize.a10 = new SizeF(74, 105);\n/**\n * Specifies the size of `b0`.\n * @private\n */\nPdfPageSize.b0 = new SizeF(2836, 4008);\n/**\n * Specifies the size of `b1`.\n * @private\n */\nPdfPageSize.b1 = new SizeF(2004, 2836);\n/**\n * Specifies the size of `b2`.\n * @private\n */\nPdfPageSize.b2 = new SizeF(1418, 2004);\n/**\n * Specifies the size of `b3`.\n * @private\n */\nPdfPageSize.b3 = new SizeF(1002, 1418);\n/**\n * Specifies the size of `b4`.\n * @private\n */\nPdfPageSize.b4 = new SizeF(709, 1002);\n/**\n * Specifies the size of `b5`.\n * @private\n */\nPdfPageSize.b5 = new SizeF(501, 709);\n/**\n * Specifies the size of `archE`.\n * @private\n */\nPdfPageSize.archE = new SizeF(2592, 3456);\n/**\n * Specifies the size of `archD`.\n * @private\n */\nPdfPageSize.archD = new SizeF(1728, 2592);\n/**\n * Specifies the size of `archC`.\n * @private\n */\nPdfPageSize.archC = new SizeF(1296, 1728);\n/**\n * Specifies the size of `archB`.\n * @private\n */\nPdfPageSize.archB = new SizeF(864, 1296);\n/**\n * Specifies the size of `archA`.\n * @private\n */\nPdfPageSize.archA = new SizeF(648, 864);\n/**\n * Specifies the size of `flsa`.\n * @private\n */\nPdfPageSize.flsa = new SizeF(612, 936);\n/**\n * Specifies the size of `halfLetter`.\n * @private\n */\nPdfPageSize.halfLetter = new SizeF(396, 612);\n/**\n * Specifies the size of `letter11x17`.\n * @private\n */\nPdfPageSize.letter11x17 = new SizeF(792, 1224);\n/**\n * Specifies the size of `ledger`.\n * @private\n */\nPdfPageSize.ledger = new SizeF(1224, 792);\n\n/**\n * public Enum for `PdfPageOrientation`.\n * @private\n */\nvar PdfPageOrientation;\n(function (PdfPageOrientation) {\n /**\n * Specifies the type of `Portrait`.\n * @private\n */\n PdfPageOrientation[PdfPageOrientation[\"Portrait\"] = 0] = \"Portrait\";\n /**\n * Specifies the type of `Landscape`.\n * @private\n */\n PdfPageOrientation[PdfPageOrientation[\"Landscape\"] = 1] = \"Landscape\";\n})(PdfPageOrientation || (PdfPageOrientation = {}));\n/**\n * public Enum for `PdfPageRotateAngle`.\n * @private\n */\nvar PdfPageRotateAngle;\n(function (PdfPageRotateAngle) {\n /**\n * Specifies the type of `RotateAngle0`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle0\"] = 0] = \"RotateAngle0\";\n /**\n * Specifies the type of `RotateAngle90`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle90\"] = 1] = \"RotateAngle90\";\n /**\n * Specifies the type of `RotateAngle180`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle180\"] = 2] = \"RotateAngle180\";\n /**\n * Specifies the type of `RotateAngle270`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle270\"] = 3] = \"RotateAngle270\";\n})(PdfPageRotateAngle || (PdfPageRotateAngle = {}));\n/**\n * public Enum for `PdfNumberStyle`.\n * @private\n */\nvar PdfNumberStyle;\n(function (PdfNumberStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Numeric`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"Numeric\"] = 1] = \"Numeric\";\n /**\n * Specifies the type of `LowerLatin`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"LowerLatin\"] = 2] = \"LowerLatin\";\n /**\n * Specifies the type of `LowerRoman`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"LowerRoman\"] = 3] = \"LowerRoman\";\n /**\n * Specifies the type of `UpperLatin`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"UpperLatin\"] = 4] = \"UpperLatin\";\n /**\n * Specifies the type of `UpperRoman`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"UpperRoman\"] = 5] = \"UpperRoman\";\n})(PdfNumberStyle || (PdfNumberStyle = {}));\n/**\n * public Enum for `PdfDockStyle`.\n * @private\n */\nvar PdfDockStyle;\n(function (PdfDockStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Bottom\"] = 1] = \"Bottom\";\n /**\n * Specifies the type of `Top`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Top\"] = 2] = \"Top\";\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Left\"] = 3] = \"Left\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Right\"] = 4] = \"Right\";\n /**\n * Specifies the type of `Fill`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Fill\"] = 5] = \"Fill\";\n})(PdfDockStyle || (PdfDockStyle = {}));\n/**\n * public Enum for `PdfAlignmentStyle`.\n * @private\n */\nvar PdfAlignmentStyle;\n(function (PdfAlignmentStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `TopLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopLeft\"] = 1] = \"TopLeft\";\n /**\n * Specifies the type of `TopCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopCenter\"] = 2] = \"TopCenter\";\n /**\n * Specifies the type of `TopRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopRight\"] = 3] = \"TopRight\";\n /**\n * Specifies the type of `MiddleLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleLeft\"] = 4] = \"MiddleLeft\";\n /**\n * Specifies the type of `MiddleCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleCenter\"] = 5] = \"MiddleCenter\";\n /**\n * Specifies the type of `MiddleRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleRight\"] = 6] = \"MiddleRight\";\n /**\n * Specifies the type of `BottomLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomLeft\"] = 7] = \"BottomLeft\";\n /**\n * Specifies the type of `BottomCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomCenter\"] = 8] = \"BottomCenter\";\n /**\n * Specifies the type of `BottomRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomRight\"] = 9] = \"BottomRight\";\n})(PdfAlignmentStyle || (PdfAlignmentStyle = {}));\n/**\n * public Enum for `TemplateType`.\n * @private\n */\nvar TemplateType;\n(function (TemplateType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n TemplateType[TemplateType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Top`.\n * @private\n */\n TemplateType[TemplateType[\"Top\"] = 1] = \"Top\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n TemplateType[TemplateType[\"Bottom\"] = 2] = \"Bottom\";\n /**\n * Specifies the type of `Left`.\n * @private\n */\n TemplateType[TemplateType[\"Left\"] = 3] = \"Left\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n TemplateType[TemplateType[\"Right\"] = 4] = \"Right\";\n})(TemplateType || (TemplateType = {}));\n\n/**\n * PdfMargins.ts class for EJ2-PDF\n * A class representing PDF page margins.\n */\nclass PdfMargins {\n /**\n * Initializes a new instance of the `PdfMargins` class.\n * @private\n */\n constructor() {\n /**\n * Represents the `Default Page Margin` value.\n * @default 0.0\n * @private\n */\n this.pdfMargin = 40.0;\n this.setMargins(this.pdfMargin);\n }\n //Properties\n /**\n * Gets or sets the `left margin` size.\n * @private\n */\n get left() {\n return this.leftMargin;\n }\n set left(value) {\n this.leftMargin = value;\n }\n /**\n * Gets or sets the `top margin` size.\n * @private\n */\n get top() {\n return this.topMargin;\n }\n set top(value) {\n this.topMargin = value;\n }\n /**\n * Gets or sets the `right margin` size.\n * @private\n */\n get right() {\n return this.rightMargin;\n }\n set right(value) {\n this.rightMargin = value;\n }\n /**\n * Gets or sets the `bottom margin` size.\n * @private\n */\n get bottom() {\n return this.bottomMargin;\n }\n set bottom(value) {\n this.bottomMargin = value;\n }\n /**\n * Sets the `margins`.\n * @private\n */\n set all(value) {\n this.setMargins(value);\n }\n setMargins(margin1, margin2, margin3, margin4) {\n if (typeof margin2 === 'undefined') {\n this.leftMargin = this.topMargin = this.rightMargin = this.bottomMargin = margin1;\n }\n else {\n if (typeof margin3 === 'undefined') {\n this.leftMargin = this.rightMargin = margin1;\n this.bottomMargin = this.topMargin = margin2;\n }\n else {\n this.leftMargin = margin1;\n this.topMargin = margin2;\n this.rightMargin = margin3;\n this.bottomMargin = margin4;\n }\n }\n }\n /**\n * `Clones` the object.\n * @private\n */\n clone() {\n return this;\n }\n}\n\n/**\n * PdfPageSettings.ts class for EJ2-PDF\n */\n/**\n * The class provides various `setting` related with PDF pages.\n */\nclass PdfPageSettings {\n constructor(margins) {\n //Fields\n /**\n * The page `margins`.\n * @private\n */\n this.pageMargins = new PdfMargins();\n /**\n * The page `size`.\n * @default a4\n * @private\n */\n this.pageSize = PdfPageSize.a4;\n /**\n * The page `rotation angle`.\n * @default PdfPageRotateAngle.RotateAngle0\n * @private\n */\n this.rotateAngle = PdfPageRotateAngle.RotateAngle0;\n /**\n * The page `orientation`.\n * @default PdfPageOrientation.Portrait\n * @private\n */\n this.pageOrientation = PdfPageOrientation.Portrait;\n /**\n * The page `origin`.\n * @default 0,0\n * @private\n */\n this.pageOrigin = new PointF(0, 0);\n /**\n * Checks the Whether the `rotation` is applied or not.\n * @default false\n * @private\n */\n this.isRotation = false;\n if (typeof margins === 'number') {\n this.pageMargins.setMargins(margins);\n }\n }\n //Properties\n /**\n * Gets or sets the `size` of the page.\n * @private\n */\n get size() {\n return this.pageSize;\n }\n set size(value) {\n this.setSize(value);\n }\n /**\n * Gets or sets the page `orientation`.\n * @private\n */\n get orientation() {\n return this.pageOrientation;\n }\n set orientation(orientation) {\n if (this.pageOrientation !== orientation) {\n this.pageOrientation = orientation;\n this.updateSize(orientation);\n }\n }\n /**\n * Gets or sets the `margins` of the page.\n * @private\n */\n get margins() {\n return this.pageMargins;\n }\n set margins(value) {\n this.pageMargins = value;\n }\n /**\n * Gets or sets the `width` of the page.\n * @private\n */\n get width() {\n return this.pageSize.width;\n }\n set width(value) {\n this.pageSize.width = value;\n }\n /**\n * Gets or sets the `height` of the page.\n * @private\n */\n get height() {\n return this.pageSize.height;\n }\n set height(value) {\n this.pageSize.height = value;\n }\n /**\n * Gets or sets the `origin` of the page.\n * @private\n */\n get origin() {\n return this.pageOrigin;\n }\n set origin(value) {\n this.pageOrigin = value;\n }\n /**\n * Gets or sets the number of degrees by which the page should be `rotated` clockwise when displayed or printed.\n * @private\n */\n get rotate() {\n return this.rotateAngle;\n }\n set rotate(value) {\n this.rotateAngle = value;\n this.isRotation = true;\n }\n //Methods\n /**\n * `Update page size` depending on orientation.\n * @private\n */\n updateSize(orientation) {\n let min = Math.min(this.pageSize.width, this.pageSize.height);\n let max = Math.max(this.pageSize.width, this.pageSize.height);\n switch (orientation) {\n case PdfPageOrientation.Portrait:\n this.pageSize = new SizeF(min, max);\n break;\n case PdfPageOrientation.Landscape:\n this.pageSize = new SizeF(max, min);\n break;\n }\n }\n /**\n * Creates a `clone` of the object.\n * @private\n */\n clone() {\n let settings = this;\n settings.pageMargins = this.pageMargins.clone();\n // if (GetTransition() != null)\n // {\n // settings.Transition = (PdfPageTransition)Transition.clone();\n // }\n return settings;\n }\n /**\n * Returns `size`, shrinked by the margins.\n * @private\n */\n getActualSize() {\n let width = this.width - (this.margins.left + this.margins.right);\n let height = this.height - (this.margins.top + this.margins.bottom);\n let size = new SizeF(width, height);\n return size;\n }\n /**\n * Sets `size` to the page aaccording to the orientation.\n * @private\n */\n setSize(size) {\n let min = Math.min(size.width, size.height);\n let max = Math.max(size.width, size.height);\n if (this.orientation === PdfPageOrientation.Portrait) {\n this.pageSize = new SizeF(min, max);\n }\n else {\n this.pageSize = new SizeF(max, min);\n }\n }\n}\n\n/**\n * Helper class to `write PDF graphic streams` easily.\n * @private\n */\nclass PdfStreamWriter {\n /**\n * Initialize an instance of `PdfStreamWriter` class.\n * @private\n */\n constructor(stream) {\n if (stream == null) {\n throw new Error('ArgumentNullException:stream');\n }\n this.stream = stream;\n }\n //Implementation\n /**\n * `Clear` the stream.\n * @public\n */\n clear() {\n this.stream.clearStream();\n }\n setGraphicsState(dictionaryName) {\n if (dictionaryName instanceof PdfName) {\n this.stream.write(dictionaryName.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setGraphicsState);\n }\n else {\n this.stream.write(Operators.slash);\n this.stream.write(dictionaryName);\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setGraphicsState);\n }\n }\n /**\n * `Executes the XObject`.\n * @private\n */\n executeObject(name) {\n this.stream.write(name.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.paintXObject);\n this.stream.write(Operators.newLine);\n }\n /**\n * `Closes path object`.\n * @private\n */\n closePath() {\n this.writeOperator(Operators.closePath);\n }\n /**\n * `Clips the path`.\n * @private\n */\n clipPath(useEvenOddRule) {\n this.stream.write(Operators.clipPath);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n }\n this.stream.write(Operators.whiteSpace);\n this.stream.write(Operators.endPath);\n this.stream.write(Operators.newLine);\n }\n /**\n * `Closes, then fills and strokes the path`.\n * @private\n */\n closeFillStrokePath(useEvenOddRule) {\n this.stream.write(Operators.closeFillStrokePath);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n }\n /**\n * `Fills and strokes path`.\n * @private\n */\n fillStrokePath(useEvenOddRule) {\n this.stream.write(Operators.fillStroke);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n }\n /**\n * `Fills path`.\n * @private\n */\n fillPath(useEvenOddRule) {\n this.stream.write(Operators.fill);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n }\n /**\n * `Ends the path`.\n * @private\n */\n endPath() {\n this.writeOperator(Operators.n);\n }\n /**\n * `Closes and fills the path`.\n * @private\n */\n closeFillPath(useEvenOddRule) {\n this.writeOperator(Operators.closePath);\n this.stream.write(Operators.fill);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n }\n /**\n * `Closes and strokes the path`.\n * @private\n */\n closeStrokePath() {\n this.writeOperator(Operators.closeStrokePath);\n }\n /**\n * `Sets the text scaling`.\n * @private\n */\n setTextScaling(textScaling) {\n this.stream.write(PdfNumber.floatToString(textScaling));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setTextScaling);\n }\n /**\n * `Strokes path`.\n * @private\n */\n strokePath() {\n this.writeOperator(Operators.stroke);\n }\n /**\n * `Restores` the graphics state.\n * @private\n */\n restoreGraphicsState() {\n this.writeOperator(Operators.restoreState);\n }\n /**\n * `Saves` the graphics state.\n * @private\n */\n saveGraphicsState() {\n this.writeOperator(Operators.saveState);\n }\n startNextLine(arg1, arg2) {\n if (typeof arg1 === 'undefined') {\n this.writeOperator(Operators.goToNextLine);\n }\n else if (arg1 instanceof PointF) {\n this.writePoint(arg1);\n this.writeOperator(Operators.setCoords);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writeOperator(Operators.setCoords);\n }\n }\n /**\n * Shows the `text`.\n * @private\n */\n showText(text) {\n this.checkTextParam(text);\n this.writeText(text);\n this.writeOperator(Operators.setText);\n }\n /**\n * Sets `text leading`.\n * @private\n */\n setLeading(leading) {\n this.stream.write(PdfNumber.floatToString(leading));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setTextLeading);\n }\n /**\n * `Begins the path`.\n * @private\n */\n beginPath(x, y) {\n this.writePoint(x, y);\n this.writeOperator(Operators.beginPath);\n }\n /**\n * `Begins text`.\n * @private\n */\n beginText() {\n this.writeOperator(Operators.beginText);\n }\n /**\n * `Ends text`.\n * @private\n */\n endText() {\n this.writeOperator(Operators.endText);\n }\n appendRectangle(arg1, arg2, arg3, arg4) {\n if (arg1 instanceof RectangleF) {\n this.appendRectangle(arg1.x, arg1.y, arg1.width, arg1.height);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writePoint(arg3, arg4);\n this.writeOperator(Operators.appendRectangle);\n }\n }\n appendLineSegment(arg1, arg2) {\n if (arg1 instanceof PointF) {\n this.appendLineSegment(arg1.x, arg1.y);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writeOperator(Operators.appendLineSegment);\n }\n }\n /**\n * Sets the `text rendering mode`.\n * @private\n */\n setTextRenderingMode(renderingMode) {\n this.stream.write(renderingMode.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setRenderingMode);\n }\n /**\n * Sets the `character spacing`.\n * @private\n */\n setCharacterSpacing(charSpacing) {\n this.stream.write(PdfNumber.floatToString(charSpacing));\n this.stream.write(Operators.whiteSpace);\n this.stream.write(Operators.setCharacterSpace);\n this.stream.write(Operators.newLine);\n }\n /**\n * Sets the `word spacing`.\n * @private\n */\n setWordSpacing(wordSpacing) {\n this.stream.write(PdfNumber.floatToString(wordSpacing));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setWordSpace);\n }\n showNextLineText(arg1, arg2) {\n if (arg1 instanceof PdfString) {\n this.checkTextParam(arg1);\n this.writeText(arg1);\n this.writeOperator(Operators.setTextOnNewLine);\n }\n else {\n this.checkTextParam(arg1);\n this.writeText(arg1, arg2);\n this.writeOperator(Operators.setTextOnNewLine);\n }\n }\n setColorSpace(arg1, arg2) {\n if (arg1 instanceof PdfName && typeof arg2 === 'boolean') {\n let temparg1 = arg1;\n let temparg2 = arg2;\n // if (temparg1 == null) {\n // throw new Error('ArgumentNullException:name');\n // }\n let op = (temparg2) ? Operators.selectcolorspaceforstroking : Operators.selectcolorspacefornonstroking;\n this.stream.write(temparg1.toString());\n this.stream.write(Operators.whiteSpace);\n this.stream.write(op);\n this.stream.write(Operators.newLine);\n }\n else {\n let temparg1 = arg1;\n let temparg2 = arg2;\n this.setColorSpace(new PdfName(temparg1), temparg2);\n }\n }\n /**\n * Modifies current `transformation matrix`.\n * @private\n */\n modifyCtm(matrix) {\n if (matrix == null) {\n throw new Error('ArgumentNullException:matrix');\n }\n this.stream.write(matrix.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.modifyCtm);\n }\n setFont(font, name, size) {\n if (typeof name === 'string') {\n this.setFont(font, new PdfName(name), size);\n }\n else {\n if (font == null) {\n throw new Error('ArgumentNullException:font');\n }\n this.stream.write(name.toString());\n this.stream.write(Operators.whiteSpace);\n this.stream.write(PdfNumber.floatToString(size));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setFont);\n }\n }\n /**\n * `Writes the operator`.\n * @private\n */\n writeOperator(opcode) {\n this.stream.write(opcode);\n this.stream.write(Operators.newLine);\n }\n checkTextParam(text) {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (typeof text === 'string' && text === '') {\n throw new Error('ArgumentException:The text can not be an empty string, text');\n }\n }\n writeText(arg1, arg2) {\n if ((arg1 instanceof PdfString) && (typeof arg2 === 'undefined')) {\n this.stream.write(arg1.pdfEncode());\n }\n else {\n let start;\n let end;\n if (arg2) {\n start = PdfString.hexStringMark[0];\n end = PdfString.hexStringMark[1];\n }\n else {\n start = PdfString.stringMark[0];\n end = PdfString.stringMark[1];\n }\n this.stream.write(start);\n this.stream.write(arg1);\n this.stream.write(end);\n }\n }\n writePoint(arg1, arg2) {\n if ((arg1 instanceof PointF) && (typeof arg2 === 'undefined')) {\n this.writePoint(arg1.x, arg1.y);\n }\n else {\n let temparg1 = arg1;\n this.stream.write(PdfNumber.floatToString(temparg1));\n this.stream.write(Operators.whiteSpace);\n // NOTE: Change Y co-ordinate because we shifted co-ordinate system only.\n arg2 = this.updateY(arg2);\n this.stream.write(PdfNumber.floatToString(arg2));\n this.stream.write(Operators.whiteSpace);\n }\n }\n /**\n * `Updates y` co-ordinate.\n * @private\n */\n updateY(arg) {\n return -arg;\n }\n /**\n * `Writes string` to the file.\n * @private\n */\n write(string) {\n let builder = '';\n builder += string;\n builder += Operators.newLine;\n this.writeOperator(builder);\n }\n /**\n * `Writes comment` to the file.\n * @private\n */\n writeComment(comment) {\n if (comment != null && comment.length > 0) {\n let builder = '';\n builder += Operators.comment;\n builder += Operators.whiteSpace;\n builder += comment;\n //builder.Append( Operators.NewLine );\n this.writeOperator(builder);\n }\n else {\n throw new Error('Invalid comment');\n }\n }\n /**\n * Sets the `color and space`.\n * @private\n */\n setColorAndSpace(color, colorSpace, forStroking) {\n if (!color.isEmpty) {\n // bool test = color is PdfExtendedColor;\n this.stream.write(color.toString(colorSpace, forStroking));\n this.stream.write(Operators.newLine);\n }\n }\n // public setLineDashPattern(pattern : number[], patternOffset : number) : void\n // {\n // let pat : PdfArray = new PdfArray(pattern);\n // let off : PdfNumber = new PdfNumber(patternOffset);\n // this.setLineDashPatternHelper(pat, off);\n // }\n // private setLineDashPatternHelper(pattern : PdfArray, patternOffset : PdfNumber) : void\n // {\n // pattern.Save(this);\n // this.m_stream.write(Operators.whiteSpace);\n // patternOffset.Save(this);\n // this.m_stream.write(Operators.whiteSpace);\n // this.writeOperator(Operators.setDashPattern);\n // }\n /**\n * Sets the `line dash pattern`.\n * @private\n */\n setLineDashPattern(pattern, patternOffset) {\n // let pat : PdfArray = new PdfArray(pattern);\n // let off : PdfNumber = new PdfNumber(patternOffset);\n // this.setLineDashPatternHelper(pat, off);\n this.setLineDashPatternHelper(pattern, patternOffset);\n }\n /**\n * Sets the `line dash pattern`.\n * @private\n */\n setLineDashPatternHelper(pattern, patternOffset) {\n let tempPattern = '[';\n if (pattern.length > 1) {\n for (let index = 0; index < pattern.length; index++) {\n if (index === pattern.length - 1) {\n tempPattern += pattern[index].toString();\n }\n else {\n tempPattern += pattern[index].toString() + ' ';\n }\n }\n }\n tempPattern += '] ';\n tempPattern += patternOffset.toString();\n tempPattern += ' ' + Operators.setDashPattern;\n this.stream.write(tempPattern);\n this.stream.write(Operators.newLine);\n }\n /**\n * Sets the `miter limit`.\n * @private\n */\n setMiterLimit(miterLimit) {\n this.stream.write(PdfNumber.floatToString(miterLimit));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setMiterLimit);\n }\n /**\n * Sets the `width of the line`.\n * @private\n */\n setLineWidth(width) {\n this.stream.write(PdfNumber.floatToString(width));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineWidth);\n }\n /**\n * Sets the `line cap`.\n * @private\n */\n setLineCap(lineCapStyle) {\n this.stream.write((lineCapStyle).toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineCapStyle);\n }\n /**\n * Sets the `line join`.\n * @private\n */\n setLineJoin(lineJoinStyle) {\n this.stream.write((lineJoinStyle).toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineJoinStyle);\n }\n //IPdfWriter members\n /**\n * Gets or sets the current `position` within the stream.\n * @private\n */\n get position() {\n return this.stream.position;\n }\n /**\n * Gets `stream length`.\n * @private\n */\n get length() {\n let returnValue = 0;\n if (this.stream.data.length !== 0 && this.stream.data.length !== -1) {\n for (let index = 0; index < this.stream.data.length; index++) {\n returnValue += this.stream.data[index].length;\n }\n }\n return returnValue;\n }\n /**\n * Gets and Sets the `current document`.\n * @private\n */\n get document() {\n return null;\n }\n /* tslint:disable-next-line:max-line-length */\n appendBezierSegment(arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof PointF && arg2 instanceof PointF && arg3 instanceof PointF) {\n this.writePoint(arg1.x, arg1.y);\n this.writePoint(arg2.x, arg2.y);\n this.writePoint(arg3.x, arg3.y);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writePoint(arg3, arg4);\n this.writePoint(arg5, arg6);\n }\n this.writeOperator(Operators.appendbeziercurve);\n }\n setColourWithPattern(colours, patternName, forStroking) {\n if ((colours != null)) {\n let count = colours.length;\n let i = 0;\n for (i = 0; i < count; ++i) {\n this.stream.write(colours[i].toString());\n this.stream.write(Operators.whiteSpace);\n }\n }\n if ((patternName != null)) {\n this.stream.write(patternName.toString());\n this.stream.write(Operators.whiteSpace);\n }\n if (forStroking) {\n this.writeOperator(Operators.setColorAndPatternStroking);\n }\n else {\n this.writeOperator(Operators.setColorAndPattern);\n }\n }\n}\n\n/**\n * PdfPen.ts class for EJ2-PDF\n */\n/**\n * `PdfPen` class defining settings for drawing operations, that determines the color,\n * width, and style of the drawing elements.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nclass PdfPen {\n constructor(arg1, arg2) {\n //Fields\n /**\n * Specifies the `color of the pen`.\n * @default new PdfColor()\n * @private\n */\n this.pdfColor = new PdfColor(0, 0, 0);\n /**\n * Specifies the `dash offset of the pen`.\n * @default 0\n * @private\n */\n this.dashOffsetValue = 0;\n /**\n * Specifies the `dash pattern of the pen`.\n * @default [0]\n * @private\n */\n this.penDashPattern = [0];\n /**\n * Specifies the `dash style of the pen`.\n * @default Solid\n * @private\n */\n this.pdfDashStyle = PdfDashStyle.Solid;\n /**\n * Specifies the `line cap of the pen`.\n * @default 0\n * @private\n */\n this.pdfLineCap = 0;\n /**\n * Specifies the `line join of the pen`.\n * @default 0\n * @private\n */\n this.pdfLineJoin = 0;\n /**\n * Specifies the `width of the pen`.\n * @default 1.0\n * @private\n */\n this.penWidth = 1.0;\n /**\n * Specifies the `mitter limit of the pen`.\n * @default 0.0\n * @private\n */\n this.internalMiterLimit = 0.0;\n /**\n * Stores the `colorspace` value.\n * @default Rgb\n * @private\n */\n this.colorSpace = PdfColorSpace.Rgb;\n if (arg1 instanceof PdfBrush) {\n this.setBrush(arg1);\n }\n else if (arg1 instanceof PdfColor) {\n this.color = arg1;\n }\n if (typeof arg2 === 'number') {\n this.width = arg2;\n }\n }\n //Properties\n /**\n * Gets or sets the `color of the pen`.\n * @private\n */\n get color() {\n return this.pdfColor;\n }\n set color(value) {\n this.pdfColor = value;\n }\n /**\n * Gets or sets the `dash offset of the pen`.\n * @private\n */\n get dashOffset() {\n if (typeof this.dashOffsetValue === 'undefined' || this.dashOffsetValue == null) {\n return 0;\n }\n else {\n return this.dashOffsetValue;\n }\n }\n set dashOffset(value) {\n this.dashOffsetValue = value;\n }\n /**\n * Gets or sets the `dash pattern of the pen`.\n * @private\n */\n get dashPattern() {\n return this.penDashPattern;\n }\n set dashPattern(value) {\n this.penDashPattern = value;\n }\n /**\n * Gets or sets the `dash style of the pen`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set pen style\n * pen.dashStyle = PdfDashStyle.DashDot;\n * // get pen style\n * let style : PdfDashStyle = pen.dashStyle;\n * //\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get dashStyle() {\n return this.pdfDashStyle;\n }\n set dashStyle(value) {\n if (this.pdfDashStyle !== value) {\n this.pdfDashStyle = value;\n switch (this.pdfDashStyle) {\n case PdfDashStyle.Custom:\n break;\n case PdfDashStyle.Dash:\n this.penDashPattern = [3, 1];\n break;\n case PdfDashStyle.Dot:\n this.penDashPattern = [1, 1];\n break;\n case PdfDashStyle.DashDot:\n this.penDashPattern = [3, 1, 1, 1];\n break;\n case PdfDashStyle.DashDotDot:\n this.penDashPattern = [3, 1, 1, 1, 1, 1];\n break;\n case PdfDashStyle.Solid:\n break;\n default:\n this.pdfDashStyle = PdfDashStyle.Solid;\n this.penDashPattern = [0];\n break;\n }\n }\n }\n /**\n * Gets or sets the `line cap of the pen`.\n * @private\n */\n get lineCap() {\n return this.pdfLineCap;\n }\n set lineCap(value) {\n this.pdfLineCap = value;\n }\n /**\n * Gets or sets the `line join style of the pen`.\n * @private\n */\n get lineJoin() {\n return this.pdfLineJoin;\n }\n set lineJoin(value) {\n this.pdfLineJoin = value;\n }\n /**\n * Gets or sets the `miter limit`.\n * @private\n */\n get miterLimit() {\n return this.internalMiterLimit;\n }\n set miterLimit(value) {\n this.internalMiterLimit = value;\n }\n /**\n * Gets or sets the `width of the pen`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set pen width\n * pen.width = 2;\n * //\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get width() {\n return this.penWidth;\n }\n set width(value) {\n this.penWidth = value;\n }\n //Helper\n /**\n * `Clones` this instance of PdfPen class.\n * @private\n */\n clone() {\n let pen = this;\n return pen;\n }\n /**\n * `Sets the brush`.\n * @private\n */\n setBrush(brush) {\n let sBrush = brush;\n if ((sBrush != null && sBrush instanceof PdfSolidBrush)) {\n this.color = sBrush.color;\n this.pdfBrush = sBrush;\n }\n this.color = sBrush.color;\n this.pdfBrush = sBrush;\n }\n /**\n * `Monitors the changes`.\n * @private\n */\n monitorChanges(currentPen, streamWriter, getResources, saveState, currentColorSpace, matrix) {\n let diff = false;\n saveState = true;\n if (currentPen == null) {\n diff = true;\n }\n diff = this.dashControl(currentPen, saveState, streamWriter);\n streamWriter.setLineWidth(this.width);\n streamWriter.setLineJoin(this.lineJoin);\n streamWriter.setLineCap(this.lineCap);\n let miterLimit = this.miterLimit;\n if (miterLimit > 0) {\n streamWriter.setMiterLimit(miterLimit);\n diff = true;\n }\n let brush = this.pdfBrush;\n streamWriter.setColorAndSpace(this.color, currentColorSpace, true);\n diff = true;\n return diff;\n }\n /**\n * `Controls the dash style` and behaviour of each line.\n * @private\n */\n dashControl(pen, saveState, streamWriter) {\n saveState = true;\n let lineWidth = this.width;\n let pattern = this.getPattern();\n streamWriter.setLineDashPattern(pattern, this.dashOffset * lineWidth);\n return saveState;\n }\n /**\n * `Gets the pattern` of PdfPen.\n * @private\n */\n getPattern() {\n let pattern = this.dashPattern;\n for (let i = 0; i < pattern.length; ++i) {\n pattern[i] *= this.width;\n }\n return pattern;\n }\n}\n\n/**\n * PdfTransformationMatrix.ts class for EJ2-PDF\n */\n/**\n * Class for representing Root `transformation matrix`.\n */\nclass PdfTransformationMatrix {\n constructor(value) {\n /**\n * Value for `angle converting`.\n * @default 180.0 / Math.PI\n * @private\n */\n this.radDegFactor = 180.0 / Math.PI;\n if (typeof value === 'undefined') {\n this.transformationMatrix = new Matrix(1.00, 0.00, 0.00, 1.00, 0.00, 0.00);\n }\n else {\n this.transformationMatrix = new Matrix(1.00, 0.00, 0.00, -1.00, 0.00, 0.00);\n }\n }\n // Properties\n /**\n * Gets or sets the `internal matrix object`.\n * @private\n */\n get matrix() {\n return this.transformationMatrix;\n }\n set matrix(value) {\n this.transformationMatrix = value;\n }\n // Public methods\n /**\n * `Translates` coordinates by specified coordinates.\n * @private\n */\n translate(offsetX, offsetY) {\n this.transformationMatrix.translate(offsetX, offsetY);\n }\n /**\n * `Scales` coordinates by specified coordinates.\n * @private\n */\n scale(scaleX, scaleY) {\n this.transformationMatrix.elements[0] = scaleX;\n this.transformationMatrix.elements[3] = scaleY;\n }\n /**\n * `Rotates` coordinate system in counterclockwise direction.\n * @private\n */\n rotate(angle) {\n //Convert from degree to radian \n angle = (angle * Math.PI) / 180;\n //Rotation \n this.transformationMatrix.elements[0] = Math.cos(angle);\n this.transformationMatrix.elements[1] = Math.sin(angle);\n this.transformationMatrix.elements[2] = -Math.sin(angle);\n this.transformationMatrix.elements[3] = Math.cos(angle);\n }\n // Overrides\n /**\n * Gets `PDF representation`.\n * @private\n */\n toString() {\n let builder = '';\n let whitespace = ' ';\n for (let i = 0, len = this.transformationMatrix.elements.length; i < len; i++) {\n let temp = this.matrix.elements[i];\n builder += PdfNumber.floatToString(this.transformationMatrix.elements[i]);\n builder += whitespace;\n }\n return builder;\n }\n // Implementation\n /**\n * `Multiplies` matrices (changes coordinate system.)\n * @private\n */\n multiply(matrix) {\n this.transformationMatrix.multiply(matrix.matrix);\n }\n /**\n * Converts `degrees to radians`.\n * @private\n */\n static degreesToRadians(degreesX) {\n return this.degRadFactor * degreesX;\n }\n /**\n * Converts `radians to degrees`.\n * @private\n */\n radiansToDegrees(radians) {\n return this.radDegFactor * radians;\n }\n /**\n * `Clones` this instance of PdfTransformationMatrix.\n * @private\n */\n clone() {\n return this;\n }\n}\n// Constants\n/**\n * Value for `angle converting`.\n * @default Math.PI / 180.0\n * @private\n */\nPdfTransformationMatrix.degRadFactor = Math.PI / 180.0;\nclass Matrix {\n constructor(arg1, arg2, arg3, arg4, arg5, arg6) {\n if (typeof arg1 === 'undefined') {\n this.metrixElements = [];\n }\n else if (typeof arg1 === 'number') {\n this.metrixElements = [];\n this.metrixElements.push(arg1);\n this.metrixElements.push(arg2);\n this.metrixElements.push(arg3);\n this.metrixElements.push(arg4);\n this.metrixElements.push(arg5);\n this.metrixElements.push(arg6);\n }\n else {\n this.metrixElements = arg1;\n }\n }\n // Properties\n /**\n * Gets the `elements`.\n * @private\n */\n get elements() {\n return this.metrixElements;\n }\n /**\n * Gets the off set `X`.\n * @private\n */\n get offsetX() {\n return this.metrixElements[4];\n }\n /**\n * Gets the off set `Y`.\n * @private\n */\n get offsetY() {\n return this.metrixElements[5];\n }\n // Implementation\n /**\n * `Translates` coordinates by specified coordinates.\n * @private\n */\n translate(offsetX, offsetY) {\n this.metrixElements[4] = offsetX;\n this.metrixElements[5] = offsetY;\n }\n /**\n * `Translates` the specified offset X.\n * @private\n */\n transform(point) {\n let x = point.x;\n let y = point.y;\n let x2 = x * this.elements[0] + y * this.elements[2] + this.offsetX;\n let y2 = x * this.elements[1] + y * this.elements[3] + this.offsetY;\n return new PointF(x2, y2);\n }\n /**\n * `Multiplies matrices` (changes coordinate system.)\n * @private\n */\n multiply(matrix) {\n let tempMatrix = [];\n tempMatrix.push(this.elements[0] * matrix.elements[0] + this.elements[1] * matrix.elements[2]);\n tempMatrix[1] = (this.elements[0] * matrix.elements[1] + this.elements[1] * matrix.elements[3]);\n tempMatrix[2] = (this.elements[2] * matrix.elements[0] + this.elements[3] * matrix.elements[2]);\n tempMatrix[3] = (this.elements[2] * matrix.elements[1] + this.elements[3] * matrix.elements[3]);\n tempMatrix[4] = (this.offsetX * matrix.elements[0] + this.offsetY * matrix.elements[2] + matrix.offsetX);\n tempMatrix[5] = (this.offsetX * matrix.elements[1] + this.offsetY * matrix.elements[3] + matrix.offsetY);\n for (let i = 0; i < tempMatrix.length; i++) {\n this.elements[i] = tempMatrix[i];\n }\n }\n // IDisposable Members\n /**\n * `Dispose` this instance of PdfTransformationMatrix class.\n * @private\n */\n dispose() {\n this.metrixElements = null;\n }\n // ICloneable Members\n /**\n * `Clones` this instance of PdfTransformationMatrix class.\n * @private\n */\n clone() {\n let m = new Matrix(this.metrixElements);\n return m;\n }\n}\n\n/**\n * `constants.ts` class for EJ2-PDF\n * @private\n */\nclass ProcedureSets {\n constructor() {\n /**\n * Specifies the `PDF` procedure set.\n * @private\n */\n this.pdf = 'PDF';\n /**\n * Specifies the `Text` procedure set.\n * @private\n */\n this.text = 'Text';\n /**\n * Specifies the `ImageB` procedure set.\n * @private\n */\n this.imageB = 'ImageB';\n /**\n * Specifies the `ImageC` procedure set.\n * @private\n */\n this.imageC = 'ImageC';\n /**\n * Specifies the `ImageI` procedure set.\n * @private\n */\n this.imageI = 'ImageI';\n }\n}\n\n/**\n * Dictionary class\n * @private\n * @hidden\n */\nclass TemporaryDictionary {\n constructor() {\n /**\n * @hidden\n * @private\n */\n this.mKeys = [];\n /**\n * @hidden\n * @private\n */\n this.mValues = [];\n }\n /**\n * @hidden\n * @private\n */\n size() {\n return this.mKeys.length;\n }\n /**\n * @hidden\n * @private\n */\n add(key, value) {\n if (key === undefined || key === null || value === undefined || value === null) {\n throw new ReferenceError('Provided key or value is not valid.');\n }\n let index = this.mKeys.indexOf(key);\n if (index < 0) {\n this.mKeys.push(key);\n this.mValues.push(value);\n return 1;\n }\n else {\n throw new RangeError('An item with the same key has already been added.');\n }\n }\n /**\n * @hidden\n * @private\n */\n keys() {\n return this.mKeys;\n }\n /**\n * @hidden\n * @private\n */\n values() {\n return this.mValues;\n }\n /**\n * @hidden\n * @private\n */\n getValue(key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n let index = this.mKeys.indexOf(key);\n if (index < 0) {\n throw new RangeError('No item with the specified key has been added.');\n }\n else {\n return this.mValues[index];\n }\n }\n /**\n * @hidden\n * @private\n */\n setValue(key, value) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n let index = this.mKeys.indexOf(key);\n if (index < 0) {\n this.mKeys.push(key);\n this.mValues.push(value);\n }\n else {\n this.mValues[index] = value;\n }\n }\n /**\n * @hidden\n * @private\n */\n remove(key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n let index = this.mKeys.indexOf(key);\n if (index < 0) {\n throw new RangeError('No item with the specified key has been added.');\n }\n else {\n this.mKeys.splice(index, 1);\n this.mValues.splice(index, 1);\n return true;\n }\n }\n /**\n * @hidden\n * @private\n */\n containsKey(key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n let index = this.mKeys.indexOf(key);\n if (index < 0) {\n return false;\n }\n return true;\n }\n /**\n * @hidden\n * @private\n */\n clear() {\n this.mKeys = [];\n this.mValues = [];\n }\n}\n\n/**\n * Represents a simple `transparency`.\n * @private\n */\nclass PdfTransparency {\n // Properties\n // /**\n // * Gets the `stroke` operation alpha value.\n // * @private\n // */\n // public get stroke() : number {\n // let result : number = this.getNumber(this.dictionaryProperties.CA);\n // return result;\n // }\n // /**\n // * Gets the `fill` operation alpha value.\n // * @private\n // */\n // public get fill() : number {\n // let result : number = this.getNumber(this.dictionaryProperties.ca);\n // return result;\n // }\n // /**\n // * Gets the `blend mode`.\n // * @private\n // */\n // public get mode() : PdfBlendMode {\n // let result : string = this.getName(this.dictionaryProperties.ca);\n // return PdfBlendMode.Normal;\n // }\n // Constructors\n /**\n * Initializes a new instance of the `Transparency` class.\n * @private\n */\n constructor(stroke, fill, mode) {\n // Fields\n /**\n * Internal variable to store `dictionary`.\n * @default new PdfDictionary()\n * @private\n */\n this.dictionary = new PdfDictionary();\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @default new DictionaryProperties()\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.dictionary.items.setValue(this.dictionaryProperties.CA, new PdfNumber(stroke));\n this.dictionary.items.setValue(this.dictionaryProperties.ca, new PdfNumber(fill));\n this.dictionary.items.setValue(this.dictionaryProperties.BM, new PdfName(mode.toString()));\n }\n // // Implementation\n // /**\n // * Gets the `number value`.\n // * @private\n // */\n // private getNumber(keyName : string) : number {\n // let result : number = 0.0;\n // let numb : PdfNumber = this.dictionary.items.getValue(keyName) as PdfNumber;\n // result = numb.intValue;\n // return result;\n // }\n // /**\n // * Gets the `name value`.\n // * @private\n // */\n // private getName(keyName : string) : string {\n // let result : string = null;\n // let name : PdfName = this.dictionary.items.getValue(keyName) as PdfName;\n // result = name.value;\n // return result;\n // }\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get element() {\n return this.dictionary;\n }\n}\n\n/**\n * Represent a `collection of automatic fields information`.\n * @private\n */\nclass PdfAutomaticFieldInfoCollection {\n /**\n * Initializes a new instance of the 'PdfPageNumberFieldInfoCollection' class.\n * @private\n */\n constructor() {\n /**\n * Internal variable to store instance of `pageNumberFields` class.\n * @private\n */\n this.automaticFieldsInformation = [];\n //\n }\n /**\n * Gets the `page number fields collection`.\n * @private\n */\n get automaticFields() {\n return this.automaticFieldsInformation;\n }\n // Public methods\n /// Adds the specified field info.\n /**\n * Add page number field into collection.\n * @private\n */\n add(fieldInfo) {\n return this.automaticFields.push(fieldInfo);\n }\n}\n\n/**\n * Represents a base class for all page graphics elements.\n */\nclass PdfGraphicsElement {\n // Constructors\n constructor() {\n //\n }\n /**\n * `Draws` the page number field.\n * @public\n */\n drawHelper(graphics, x, y) {\n let bNeedSave = (x !== 0 || y !== 0);\n let gState = null;\n // Translate co-ordinates.\n if (bNeedSave) {\n // Save state.\n gState = graphics.save();\n graphics.translateTransform(x, y);\n }\n this.drawInternal(graphics);\n if (bNeedSave) {\n // Restore state.\n graphics.restore(gState);\n }\n }\n}\n\n/**\n * PdfAutomaticField.ts class for EJ2-PDF\n */\n/**\n * Represents a fields which is calculated before the document saves.\n */\nclass PdfAutomaticField extends PdfGraphicsElement {\n // Constructors\n constructor() {\n super();\n // Fields\n this.internalBounds = new RectangleF(0, 0, 0, 0);\n this.internalTemplateSize = new SizeF(0, 0);\n }\n // Properties\n get bounds() {\n return this.internalBounds;\n }\n set bounds(value) {\n this.internalBounds = value;\n }\n get size() {\n return new SizeF(this.bounds.width, this.bounds.height);\n }\n set size(value) {\n this.bounds.width = value.width;\n this.bounds.height = value.height;\n }\n get location() {\n return new PointF(this.bounds.x, this.bounds.y);\n }\n set location(value) {\n this.bounds.x = value.x;\n this.bounds.y = value.y;\n }\n get font() {\n return this.internalFont;\n }\n set font(value) {\n this.internalFont = value;\n }\n get brush() {\n return this.internalBrush;\n }\n set brush(value) {\n this.internalBrush = value;\n }\n get pen() {\n return this.internalPen;\n }\n set pen(value) {\n this.internalPen = value;\n }\n get stringFormat() {\n return this.internalStringFormat;\n }\n set stringFormat(value) {\n this.internalStringFormat = value;\n }\n performDrawHelper(graphics, location, scalingX, scalingY) {\n if (this.bounds.height === 0 || this.bounds.width === 0) {\n let text = this.getValue(graphics);\n this.internalTemplateSize = this.getFont().measureString(text, this.size, this.stringFormat);\n }\n }\n draw(arg1, arg2, arg3) {\n if (typeof arg2 === 'undefined') {\n let location = new PointF(0, 0);\n this.draw(arg1, location);\n }\n else if (arg2 instanceof PointF) {\n this.draw(arg1, arg2.x, arg2.y);\n }\n else {\n this.drawHelper(arg1, arg2, arg3);\n let info = new PdfAutomaticFieldInfo(this, new PointF(arg2, arg3));\n arg1.automaticFields.add(info);\n }\n }\n getSize() {\n if (this.bounds.height === 0 || this.bounds.width === 0) {\n return this.internalTemplateSize;\n }\n else {\n return this.size;\n }\n }\n drawInternal(graphics) {\n //\n }\n /* tslint:disable */\n getBrush() {\n return (typeof this.internalBrush === 'undefined' || this.internalBrush == null) ? new PdfSolidBrush(new PdfColor(0, 0, 0)) : this.internalBrush;\n }\n getFont() {\n return (typeof this.internalFont === 'undefined' || this.internalFont == null) ? PdfDocument.defaultFont : this.internalFont;\n }\n /* tslint:enable */\n getPageFromGraphics(graphics) {\n if (typeof graphics.page !== 'undefined' && graphics.page !== null) {\n let page = graphics.page;\n return page;\n }\n else {\n let page = graphics.currentPage;\n return page;\n }\n }\n}\n\n/**\n * PdfAutomaticFieldInfo.ts class for EJ2-PDF\n * @private\n */\n/**\n * Represents information about the automatic field.\n * @private\n */\nclass PdfAutomaticFieldInfo {\n constructor(field, location, scaleX, scaleY) {\n // Fields\n /**\n * Internal variable to store location of the field.\n * @private\n */\n this.pageNumberFieldLocation = new PointF();\n /**\n * Internal variable to store field.\n * @private\n */\n this.pageNumberField = null;\n /**\n * Internal variable to store x scaling factor.\n * @private\n */\n this.scaleX = 1;\n /**\n * Internal variable to store y scaling factor.\n * @private\n */\n this.scaleY = 1;\n if (typeof location === 'undefined' && field instanceof PdfAutomaticFieldInfo) {\n this.pageNumberField = field.field;\n this.pageNumberFieldLocation = field.location;\n this.scaleX = field.scalingX;\n this.scaleY = field.scalingY;\n }\n else if (typeof scaleX === 'undefined' && location instanceof PointF && field instanceof PdfAutomaticField) {\n this.pageNumberField = field;\n this.pageNumberFieldLocation = location;\n }\n else {\n this.pageNumberField = field;\n this.pageNumberFieldLocation = location;\n this.scaleX = scaleX;\n this.scaleY = scaleY;\n }\n }\n /* tslint:enable */\n // Properties\n /**\n * Gets or sets the location.\n * @private\n */\n get location() {\n return this.pageNumberFieldLocation;\n }\n set location(value) {\n this.pageNumberFieldLocation = value;\n }\n /**\n * Gets or sets the field.\n * @private\n */\n get field() {\n return this.pageNumberField;\n }\n set field(value) {\n this.pageNumberField = value;\n }\n /**\n * Gets or sets the scaling X factor.\n * @private\n */\n get scalingX() {\n return this.scaleX;\n }\n set scalingX(value) {\n this.scaleX = value;\n }\n /**\n * Gets or sets the scaling Y factor.\n * @private\n */\n get scalingY() {\n return this.scaleY;\n }\n set scalingY(value) {\n this.scaleY = value;\n }\n}\n\n/**\n * ByteArray class\n * Used to keep information about image stream as byte array.\n * @private\n */\nclass ByteArray {\n /**\n * Initialize the new instance for `byte-array` class\n * @hidden\n * @private\n */\n constructor(length) {\n /**\n * Current stream `position`.\n * @default 0\n * @private\n */\n this.mPosition = 0;\n this.buffer = new Uint8Array(length);\n this.dataView = new DataView(this.buffer.buffer);\n }\n /**\n * Gets and Sets a current `position` of byte array.\n * @hidden\n * @private\n */\n get position() {\n return this.mPosition;\n }\n set position(value) {\n this.mPosition = value;\n }\n /**\n * `Read` from current stream position.\n * @default 0\n * @hidden\n * @private\n */\n read(buffer, offset, count) {\n for (let index = offset; index < count; index++) {\n let position = this.position;\n buffer.buffer[index] = this.readByte(position);\n this.position++;\n }\n }\n /**\n * @hidden\n */\n getBuffer(index) {\n return this.buffer[index];\n }\n /**\n * @hidden\n */\n writeFromBase64String(base64) {\n let arr = this.encodedString(base64);\n this.buffer = arr;\n }\n /**\n * @hidden\n */\n encodedString(input) {\n let keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n let chr1;\n let chr2;\n let chr3;\n let enc1;\n let enc2;\n let enc3;\n let enc4;\n let i = 0;\n let resultIndex = 0;\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n let totalLength = input.length * 3 / 4;\n if (input.charAt(input.length - 1) === keyStr.charAt(64)) {\n totalLength--;\n }\n let output = new Uint8Array(totalLength | 0);\n while (i < input.length) {\n enc1 = keyStr.indexOf(input.charAt(i++));\n enc2 = keyStr.indexOf(input.charAt(i++));\n enc3 = keyStr.indexOf(input.charAt(i++));\n enc4 = keyStr.indexOf(input.charAt(i++));\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n output[resultIndex++] = chr1;\n output[resultIndex++] = chr2;\n output[resultIndex++] = chr3;\n }\n return output;\n }\n /**\n * @hidden\n */\n readByte(offset) {\n return (this.buffer[offset]);\n }\n /**\n * @hidden\n */\n get internalBuffer() {\n return this.buffer;\n }\n /**\n * @hidden\n */\n get count() {\n return this.buffer.byteLength;\n }\n /**\n * 'readNextTwoBytes' stream\n * @hidden\n * @private\n */\n readNextTwoBytes(stream) {\n let data = stream.readByte(this.position);\n this.position++;\n data <<= 8;\n data |= stream.readByte(this.position);\n this.position++;\n return data;\n }\n}\n\n/**\n * `PdfBoolean` class is used to perform boolean related primitive operations.\n * @private\n */\nclass PdfBoolean {\n //constructor\n /**\n * Initializes a new instance of the `PdfBoolean` class.\n * @private\n */\n constructor(value) {\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.currentPosition = -1;\n this.value = value;\n }\n //Properties\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get status() {\n return this.objectStatus;\n }\n set status(value) {\n this.objectStatus = value;\n }\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get isSaving() {\n return this.saving;\n }\n set isSaving(value) {\n this.saving = value;\n }\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get objectCollectionIndex() {\n return this.index;\n }\n set objectCollectionIndex(value) {\n this.index = value;\n }\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get position() {\n return this.currentPosition;\n }\n set position(value) {\n this.currentPosition = value;\n }\n /**\n * Returns `cloned object`.\n * @private\n */\n get clonedObject() {\n let rValue = null;\n return rValue;\n }\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n save(writer) {\n writer.write(this.boolToStr(this.value));\n }\n /**\n * Creates a `copy of PdfBoolean`.\n * @private\n */\n clone(crossTable) {\n let newNumber = new PdfBoolean(this.value);\n return newNumber;\n }\n // Implementation\n /**\n * Converts `boolean to string` - 0/1 'true'/'false'.\n * @private\n */\n boolToStr(value) {\n return value ? 'true' : 'false';\n }\n}\n\n/**\n * ImageDecoder class\n */\n/**\n * Specifies the image `format`.\n * @private\n */\nvar ImageFormat;\n(function (ImageFormat) {\n /**\n * Specifies the type of `Unknown`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * Specifies the type of `Bmp`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Bmp\"] = 1] = \"Bmp\";\n /**\n * Specifies the type of `Emf`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Emf\"] = 2] = \"Emf\";\n /**\n * Specifies the type of `Gif`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Gif\"] = 3] = \"Gif\";\n /**\n * Specifies the type of `Jpeg`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Jpeg\"] = 4] = \"Jpeg\";\n /**\n * Specifies the type of `Png`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Png\"] = 5] = \"Png\";\n /**\n * Specifies the type of `Wmf`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Wmf\"] = 6] = \"Wmf\";\n /**\n * Specifies the type of `Icon`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Icon\"] = 7] = \"Icon\";\n})(ImageFormat || (ImageFormat = {}));\n/**\n * `Decode the image stream`.\n * @private\n */\nclass ImageDecoder {\n /**\n * Initialize the new instance for `image-decoder` class.\n * @private\n */\n constructor(stream) {\n /**\n * Start of file markers.\n * @hidden\n * @private\n */\n this.sof1Marker = 0x00C1;\n this.sof2Marker = 0x00C2;\n this.sof3Marker = 0x00C3;\n this.sof5Marker = 0x00C5;\n this.sof6Marker = 0x00C6;\n this.sof7Marker = 0x00C7;\n this.sof9Marker = 0x00C9;\n this.sof10Marker = 0x00CA;\n this.sof11Marker = 0x00CB;\n this.sof13Marker = 0x00CD;\n this.sof14Marker = 0x00CE;\n this.sof15Marker = 0x00CF;\n /**\n * Specifies `format` of image.\n * @hidden\n * @private\n */\n this.mFormat = ImageFormat.Unknown;\n /**\n * `Bits per component`.\n * @default 8\n * @hidden\n * @private\n */\n this.mbitsPerComponent = 8;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.mStream = stream;\n this.initialize();\n }\n /**\n * Gets the `height` of image.\n * @hidden\n * @private\n */\n get height() {\n return this.mHeight;\n }\n /**\n * Gets the `width` of image.\n * @hidden\n * @private\n */\n get width() {\n return this.mWidth;\n }\n /**\n * Gets `bits per component`.\n * @hidden\n * @private\n */\n get bitsPerComponent() {\n return this.mbitsPerComponent;\n }\n /**\n * Gets the `size` of an image data.\n * @hidden\n * @private\n */\n get size() {\n return this.mImageData.count;\n }\n /**\n * Gets the value of an `image data`.\n * @hidden\n * @private\n */\n get imageData() {\n return this.mImageData;\n }\n /**\n * Gets the value of an `image data as number array`.\n * @hidden\n * @private\n */\n get imageDataAsNumberArray() {\n return this.mImageData.internalBuffer.buffer;\n }\n /**\n * `Initialize` image data and image stream.\n * @hidden\n * @private\n */\n initialize() {\n if (this.mFormat === ImageFormat.Unknown && this.checkIfJpeg()) {\n this.mFormat = ImageFormat.Jpeg;\n this.parseJpegImage();\n }\n this.reset();\n this.mImageData = new ByteArray(this.mStream.count);\n this.mStream.read(this.mImageData, 0, this.mImageData.count);\n }\n /**\n * `Reset` stream position into 0.\n * @hidden\n * @private\n */\n reset() {\n this.mStream.position = 0;\n }\n /**\n * `Parse` Jpeg image.\n * @hidden\n * @private\n */\n parseJpegImage() {\n this.reset();\n let imgData = new ByteArray(this.mStream.count);\n this.mStream.read(imgData, 0, imgData.count);\n let i = 4;\n let isLengthExceed = false;\n /* tslint:disable */\n let length = imgData.getBuffer(i) * 256 + imgData.getBuffer(i + 1);\n while (i < imgData.count) {\n i += length;\n if (i < imgData.count) {\n if (imgData.getBuffer(i + 1) === 192) {\n this.mHeight = imgData.getBuffer(i + 5) * 256 + imgData.getBuffer(i + 6);\n this.mWidth = imgData.getBuffer(i + 7) * 256 + imgData.getBuffer(i + 8);\n return;\n }\n else {\n i += 2;\n length = imgData.getBuffer(i) * 256 + imgData.getBuffer(i + 1);\n }\n }\n else {\n isLengthExceed = true;\n break;\n }\n }\n if (isLengthExceed) {\n this.mStream.position = 0;\n this.skip(this.mStream, 2);\n this.readExceededJPGImage(this.mStream);\n }\n /* tslint:enable */\n }\n /**\n * Gets the image `format`.\n * @private\n * @hidden\n */\n get format() {\n return this.mFormat;\n }\n /**\n * `Checks if JPG`.\n * @private\n * @hidden\n */\n checkIfJpeg() {\n this.reset();\n for (let i = 0; i < ImageDecoder.mJpegHeader.length; i++) {\n if (ImageDecoder.mJpegHeader[i] !== this.mStream.readByte(i)) {\n return false;\n }\n this.mStream.position++;\n }\n return true;\n }\n /**\n * Return image `dictionary`.\n * @hidden\n * @private\n */\n getImageDictionary() {\n if (this.mFormat === ImageFormat.Jpeg) {\n let tempArrayBuffer = this.imageData.internalBuffer.length;\n this.imageStream = new PdfStream();\n this.imageStream.isImage = true;\n let tempString = '';\n let decodedString = '';\n for (let i = 0; i < this.imageDataAsNumberArray.byteLength; i++) {\n tempString += String.fromCharCode(null, this.mStream.readByte(i));\n }\n for (let i = 0; i < tempString.length; i++) {\n if (i % 2 !== 0) {\n decodedString += tempString[i];\n }\n }\n this.imageStream.data = [decodedString];\n this.imageStream.compress = false;\n this.imageStream.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.xObject));\n this.imageStream.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.image));\n this.imageStream.items.setValue(this.dictionaryProperties.width, new PdfNumber(this.width));\n this.imageStream.items.setValue(this.dictionaryProperties.height, new PdfNumber(this.height));\n this.imageStream.items.setValue(this.dictionaryProperties.bitsPerComponent, new PdfNumber(this.bitsPerComponent));\n this.imageStream.items.setValue(this.dictionaryProperties.filter, new PdfName(this.dictionaryProperties.dctdecode));\n this.imageStream.items.setValue(this.dictionaryProperties.colorSpace, new PdfName(this.getColorSpace()));\n this.imageStream.items.setValue(this.dictionaryProperties.decodeParms, this.getDecodeParams());\n return this.imageStream;\n }\n else {\n return this.imageStream;\n }\n }\n /**\n * Return `colorSpace` of an image.\n * @hidden\n * @private\n */\n getColorSpace() {\n return this.dictionaryProperties.deviceRgb;\n }\n /**\n * Return `decode parameters` of an image.\n * @hidden\n * @private\n */\n getDecodeParams() {\n let decodeParams = new PdfDictionary();\n decodeParams.items.setValue(this.dictionaryProperties.columns, new PdfNumber(this.width));\n decodeParams.items.setValue(this.dictionaryProperties.blackIs1, new PdfBoolean(true));\n decodeParams.items.setValue(this.dictionaryProperties.k, new PdfNumber(-1));\n decodeParams.items.setValue(this.dictionaryProperties.predictor, new PdfNumber(15));\n decodeParams.items.setValue(this.dictionaryProperties.bitsPerComponent, new PdfNumber(this.bitsPerComponent));\n return decodeParams;\n }\n /**\n * 'readExceededJPGImage' stream\n * @hidden\n * @private\n */\n readExceededJPGImage(stream) {\n this.mStream = stream;\n let isContinueReading = true;\n while (isContinueReading) {\n let marker = this.getMarker(stream);\n switch (marker) {\n case this.sof1Marker:\n case this.sof2Marker:\n case this.sof3Marker:\n case this.sof5Marker:\n case this.sof6Marker:\n case this.sof7Marker:\n case this.sof9Marker:\n case this.sof10Marker:\n case this.sof11Marker:\n case this.sof13Marker:\n case this.sof14Marker:\n case this.sof15Marker:\n stream.position += 3;\n this.mHeight = this.mStream.readNextTwoBytes(stream);\n this.mWidth = this.mStream.readNextTwoBytes(stream);\n isContinueReading = false;\n break;\n default:\n this.skipStream(stream);\n break;\n }\n }\n }\n /**\n * 'skip' stream\n * @hidden\n * @private\n */\n skip(stream, noOfBytes) {\n this.mStream = stream;\n let temp = new ByteArray(noOfBytes);\n this.mStream.read(temp, 0, temp.count);\n }\n /**\n * 'getMarker' stream\n * @hidden\n * @private\n */\n getMarker(stream) {\n let marker = 32;\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n while (marker !== 255) {\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n }\n do {\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n } while (marker === 255);\n return marker;\n }\n /**\n * 'skipStream' stream\n * @hidden\n * @private\n */\n skipStream(stream) {\n let markerLength = this.mStream.readNextTwoBytes(stream) - 2;\n if (markerLength > 0) {\n stream.position += markerLength;\n }\n }\n}\n/**\n * Number array for `png header`.\n * @hidden\n * @private\n */\nImageDecoder.mPngHeader = [137, 80, 78, 71, 13, 10, 26, 10];\n/**\n * Number Array for `jpeg header`.\n * @hidden\n * @private\n */\nImageDecoder.mJpegHeader = [255, 216];\n/**\n * Number array for `gif header`.\n * @hidden\n * @private\n */\nImageDecoder.GIF_HEADER = 'G,I,F,8';\n/**\n * Number array for `bmp header.`\n * @hidden\n * @private\n */\nImageDecoder.BMP_HEADER = 'B,M';\n\n/**\n * Used to perform `convertion between pixels and points`.\n * @private\n */\nclass PdfUnitConverter {\n //constructors\n /**\n * Initializes a new instance of the `UnitConvertor` class with DPI value.\n * @private\n */\n constructor(dpi) {\n this.updateProportionsHelper(dpi);\n }\n /**\n * `Converts` the value, from one graphics unit to another graphics unit.\n * @private\n */\n convertUnits(value, from, to) {\n return this.convertFromPixels(this.convertToPixels(value, from), to);\n }\n /**\n * Converts the value `to pixel` from specified graphics unit.\n * @private\n */\n convertToPixels(value, from) {\n let index = from;\n let result = (value * this.proportions[index]);\n return result;\n }\n /**\n * Converts value, to specified graphics unit `from Pixel`.\n * @private\n */\n convertFromPixels(value, to) {\n let index = to;\n let result = (value / this.proportions[index]);\n return result;\n }\n /**\n * `Update proportions` matrix according to Graphics settings.\n * @private\n */\n updateProportionsHelper(pixelPerInch) {\n this.proportions = [\n pixelPerInch / 2.54,\n pixelPerInch / 6.0,\n 1,\n pixelPerInch / 72.0,\n pixelPerInch,\n pixelPerInch / 300.0,\n pixelPerInch / 25.4 // Millimeter\n ];\n }\n}\n//Fields\n/**\n * Indicates default `horizontal resolution`.\n * @default 96\n * @private\n */\nPdfUnitConverter.horizontalResolution = 96;\n/**\n * Indicates default `vertical resolution`.\n * @default 96\n * @private\n */\nPdfUnitConverter.verticalResolution = 96;\n\n/**\n * `PdfImage` class represents the base class for images and provides functionality for the 'PdfBitmap' class.\n * @private\n */\nclass PdfImage {\n /**\n * Gets and Sets the `width` of an image.\n * @private\n */\n get width() {\n return this.imageWidth;\n }\n set width(value) {\n this.imageWidth = value;\n }\n /**\n * Gets and Sets the `height` of an image.\n * @private\n */\n get height() {\n return this.imageHeight;\n }\n set height(value) {\n this.imageHeight = value;\n }\n /**\n * Gets or sets the size of the image.\n * @private\n */\n set size(value) {\n this.width = value.width;\n this.height = value.height;\n }\n /**\n * Gets the `physical dimension` of an image.\n * @private\n */\n get physicalDimension() {\n this.imagePhysicalDimension = this.getPointSize(this.width, this.height, this.horizontalResolution, this.verticalResolution);\n return new SizeF(this.width, this.height);\n }\n // /**\n // * Gets the `image stream as string`.\n // * @private\n // */\n // public static fromString(string : string) : PdfImage {\n // let image : PdfImage = new PdfBitmap(string);\n // return image;\n // }\n /**\n * Gets the `element` image stream.\n * @private\n */\n get element() {\n return this.imageStream;\n }\n getPointSize(width, height, horizontalResolution, verticalResolution) {\n if (typeof horizontalResolution === 'undefined') {\n let dpiX = PdfUnitConverter.horizontalResolution;\n let dpiY = PdfUnitConverter.verticalResolution;\n let size = this.getPointSize(width, height, dpiX, dpiY);\n return size;\n }\n else {\n let ucX = new PdfUnitConverter(horizontalResolution);\n let ucY = new PdfUnitConverter(verticalResolution);\n let ptWidth = ucX.convertUnits(width, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);\n let ptHeight = ucY.convertUnits(height, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);\n let size = new SizeF(ptWidth, ptHeight);\n return size;\n }\n }\n}\n\n/**\n * PdfBitmap.ts class for EJ2-PDF\n */\n/**\n * The 'PdfBitmap' contains methods and properties to handle the Bitmap images.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // base64 string of an image\n * let imageString : string = '/9j/3+2w7em7HzY/KiijFw … 1OEYRUYrQ45yc5OUtz/9k=';\n * // load the image from the base64 string of original image.\n * let image : PdfBitmap = new PdfBitmap(imageString);\n * // draw the image\n * page1.graphics.drawImage(image, new RectangleF({x : 10, y : 10}, {width : 200, height : 200}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nclass PdfBitmap extends PdfImage {\n /**\n * Create an instance for `PdfBitmap` class.\n * @param encodedString Base64 string of an image.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // base64 string of an image\n * let imageString : string = '/9j/3+2w7em7HzY/KiijFw … 1OEYRUYrQ45yc5OUtz/9k=';\n * //\n * // load the image from the base64 string of original image.\n * let image : PdfBitmap = new PdfBitmap(imageString);\n * //\n * // draw the image\n * page1.graphics.drawImage(image, new RectangleF({x : 10, y : 10}, {width : 200, height : 200}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n constructor(encodedString) {\n super();\n //Fields\n /**\n * Specifies the `status` of an image.\n * @default true.\n * @hidden\n * @private\n */\n this.imageStatus = true;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.loadImage(encodedString);\n }\n /**\n * `Load image`.\n * @hidden\n * @private\n */\n loadImage(encodedString) {\n let task = this.initializeAsync(encodedString);\n }\n /**\n * `Initialize` image parameters.\n * @private\n */\n initializeAsync(encodedString) {\n let byteArray = new ByteArray(encodedString.length);\n byteArray.writeFromBase64String(encodedString);\n this.decoder = new ImageDecoder(byteArray);\n this.height = this.decoder.height;\n this.width = this.decoder.width;\n // FrameCount = BitmapImageDecoder.FrameCount;\n this.bitsPerComponent = this.decoder.bitsPerComponent;\n }\n /**\n * `Saves` the image into stream.\n * @private\n */\n save() {\n this.imageStatus = true;\n this.imageStream = this.decoder.getImageDictionary();\n }\n}\n\n/**\n * Images classes\n * @hidden\n */\n\n/**\n * TtfTableInfo.ts class for EJ2-PDF\n */\nclass TtfTableInfo {\n //Properties\n /**\n * Gets a value indicating whether this table is empty.\n * @private\n */\n get empty() {\n let empty = (this.offset === this.length && this.length === this.checksum && this.checksum === 0);\n return empty;\n }\n}\n\nclass TtfNameTable {\n}\n\n/**\n * TtfNameRecord.ts class for EJ2-PDF\n */\nclass TtfNameRecord {\n}\n\n/**\n * TtfHeadTable.ts class for EJ2-PDF\n */\nclass TtfHeadTable {\n}\n\nclass TtfMetrics {\n //Properties\n /**\n * Gets a value indicating whether this instance is italic.\n */\n get isItalic() {\n return ((this.macStyle & 2) !== 0);\n }\n /**\n * Gets a value indicating whether this instance is bold.\n */\n get isBold() {\n return ((this.macStyle & 1) !== 0);\n }\n}\n\n/**\n * TtfHorizontalHeaderTable.ts class for EJ2-PDF\n */\nclass TtfHorizontalHeaderTable {\n}\n\n/**\n * TtfOS2Table.ts class for EJ2-PDF\n * The OS/2 table consists of a set of metrics that are required by Windows and OS/2.\n */\nclass TtfOS2Table {\n}\n\n/**\n * TtfPostTable.ts class for EJ2-PDF\n */\nclass TtfPostTable {\n}\n\n/**\n * TtfLongHorMetric.ts class for EJ2-PDF\n */\nclass TtfLongHorMetric {\n}\n\n/**\n * TtfCmapSubTable.ts class for EJ2-PDF\n */\nclass TtfCmapSubTable {\n}\n\n/**\n * TtfCmapTable.ts class for EJ2-PDF\n */\nclass TtfCmapTable {\n}\n\n/**\n * TtfGlyphInfo.ts class for EJ2-PDF\n */\nclass TtfGlyphInfo {\n //Properties\n /**\n * Gets a value indicating whether this TtfGlyphInfo is empty.\n */\n get empty() {\n let empty = (this.index === this.width && this.width === this.charCode && this.charCode === 0);\n return empty;\n }\n //IComparable implementation\n /**\n * Compares two WidthDescriptor objects.\n */\n compareTo(obj) {\n let glyph = obj;\n return this.index - glyph.index;\n }\n}\n\n/**\n * TtfLocaTable.ts class for EJ2-PDF\n */\nclass TtfLocaTable {\n}\n\n/**\n * TtfAppleCmapSubTable.ts class for EJ2-PDF\n */\nclass TtfAppleCmapSubTable {\n}\n\n/**\n * TtfMicrosoftCmapSubTable.ts class for EJ2-PDF\n */\nclass TtfMicrosoftCmapSubTable {\n}\n\n/**\n * TtfTrimmedCmapSubTable.ts class for EJ2-PDF\n */\nclass TtfTrimmedCmapSubTable {\n}\n\n/**\n * TtfLocaTable.ts class for EJ2-PDF\n */\nclass TtfGlyphHeader {\n}\n\n/**\n * Writes data in BigEndian order.\n */\nclass BigEndianWriter {\n //Constructors\n /**\n * Creates a new writer.\n */\n constructor(capacity) {\n //Constants\n /**\n * Size of Int32 type.\n */\n this.int32Size = 4;\n /**\n * Size of Int16 type.\n */\n this.int16Size = 2;\n /**\n * Size of long type.\n */\n this.int64Size = 8;\n this.bufferLength = capacity;\n this.buffer = [];\n }\n //Properties\n /**\n * Gets data written to the writer.\n */\n get data() {\n if (this.buffer.length < this.bufferLength) {\n let length = this.bufferLength - this.buffer.length;\n for (let i = 0; i < length; i++) {\n this.buffer.push(0);\n }\n }\n return this.buffer;\n }\n /// \n /// Gets position of the internal buffer.\n /// \n get position() {\n if (this.internalPosition === undefined || this.internalPosition === null) {\n this.internalPosition = 0;\n }\n return this.internalPosition;\n }\n /**\n * Writes short value.\n */\n writeShort(value) {\n let bytes = [((value & 0x0000ff00) >> 8), value & 0x000000ff];\n this.flush(bytes);\n }\n /**\n * Writes int value.\n */\n writeInt(value) {\n let bytes = [(value & 0xff000000) >> 24, (value & 0x00ff0000) >> 16, (value & 0x0000ff00) >> 8, value & 0x000000ff];\n this.flush(bytes);\n }\n /**\n * Writes u int value.\n */\n writeUInt(value) {\n let buff = [(value & 0xff000000) >> 24, (value & 0x00ff0000) >> 16, (value & 0x0000ff00) >> 8, value & 0x000000ff];\n this.flush(buff);\n }\n /**\n * Writes string value.\n */\n writeString(value) {\n if (value == null) {\n throw new Error('Argument Null Exception : value');\n }\n let bytes = [];\n for (let i = 0; i < value.length; i++) {\n bytes.push(value.charCodeAt(i));\n }\n this.flush(bytes);\n }\n /**\n * Writes byte[] value.\n */\n writeBytes(value) {\n this.flush(value);\n }\n // //Implementation\n flush(buff) {\n if (buff === null) {\n throw new Error('Argument Null Exception : buff');\n }\n let position = this.position;\n for (let i = 0; i < buff.length; i++) {\n this.buffer[position] = buff[i];\n position++;\n }\n this.internalPosition += buff.length;\n }\n}\n\n/**\n * TtfReader.ts class for EJ2-PDF\n */\nclass TtfReader {\n //Constructors\n constructor(fontData) {\n this.int32Size = 4;\n this.isTtcFont = false;\n this.isMacTtf = false;\n this.metricsName = '';\n this.isMacTTF = false;\n this.missedGlyphs = 0;\n this.tableNames = ['cvt ', 'fpgm', 'glyf', 'head', 'hhea', 'hmtx', 'loca', 'maxp', 'prep'];\n this.entrySelectors = [0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4];\n this.fontData = fontData;\n this.initialize();\n }\n //Properties\n /**\n * Gets glyphs for Macintosh or Symbol fonts (char - key, glyph - value).\n */\n get macintosh() {\n if (this.macintoshDictionary === null || this.macintoshDictionary === undefined) {\n this.macintoshDictionary = new Dictionary();\n }\n return this.macintoshDictionary;\n }\n /**\n * Gets glyphs for Microsoft or Symbol fonts (char - key, glyph - value).\n */\n get microsoft() {\n if (this.microsoftDictionary === null || this.microsoftDictionary === undefined) {\n this.microsoftDictionary = new Dictionary();\n }\n return this.microsoftDictionary;\n }\n /**\n * Gets glyphs for Macintosh or Symbol fonts (glyph index - key, glyph - value).\n */\n get macintoshGlyphs() {\n if (this.internalMacintoshGlyphs === null || this.internalMacintoshGlyphs === undefined) {\n this.internalMacintoshGlyphs = new Dictionary();\n }\n return this.internalMacintoshGlyphs;\n }\n /**\n * Gets glyphs for Microsoft Unicode fonts (glyph index - key, glyph - value).\n */\n get microsoftGlyphs() {\n if (this.internalMicrosoftGlyphs === null || this.internalMicrosoftGlyphs === undefined) {\n this.internalMicrosoftGlyphs = new Dictionary();\n }\n return this.internalMicrosoftGlyphs;\n }\n //Implementation\n initialize() {\n if (this.metrics === undefined) {\n this.metrics = new TtfMetrics();\n }\n this.readFontDictionary();\n let nameTable = this.readNameTable();\n let headTable = this.readHeadTable();\n this.initializeFontName(nameTable);\n this.metrics.macStyle = headTable.macStyle;\n }\n readFontDictionary() {\n this.offset = 0;\n let version = this.checkPreambula();\n //this.offset += 4;\n let numTables = this.readInt16(this.offset);\n let searchRange = this.readInt16(this.offset);\n let entrySelector = this.readInt16(this.offset);\n let rangeShift = this.readInt16(this.offset);\n if (this.tableDirectory === undefined) {\n this.tableDirectory = new Dictionary();\n }\n for (let i = 0; i < numTables; ++i) {\n let table = new TtfTableInfo();\n let tableKey = this.readString(this.int32Size);\n table.checksum = this.readInt32(this.offset);\n table.offset = this.readInt32(this.offset);\n table.length = this.readInt32(this.offset);\n this.tableDirectory.setValue(tableKey, table);\n }\n this.lowestPosition = this.offset;\n if (!this.isTtcFont) {\n this.fixOffsets();\n }\n }\n fixOffsets() {\n let minOffset = Number.MAX_VALUE;\n // Search for a smallest offset and compare it with the lowest position found.\n let tableKeys = this.tableDirectory.keys();\n for (let i = 0; i < tableKeys.length; i++) {\n let value = this.tableDirectory.getValue(tableKeys[i]);\n let offset = value.offset;\n if (minOffset > offset) {\n minOffset = offset;\n if (minOffset <= this.lowestPosition) {\n break;\n }\n }\n }\n let shift = minOffset - this.lowestPosition;\n if (shift !== 0) {\n let table = new Dictionary();\n for (let i = 0; i < tableKeys.length; i++) {\n let value = this.tableDirectory.getValue(tableKeys[i]);\n value.offset -= shift;\n table.setValue(tableKeys[i], value);\n }\n this.tableDirectory = table;\n }\n }\n checkPreambula() {\n let version = this.readInt32(this.offset);\n this.isMacTtf = (version === 0x74727565) ? true : false;\n if (version !== 0x10000 && version !== 0x74727565 && version !== 0x4f54544f) {\n this.isTtcFont = true;\n this.offset = 0;\n let fontTag = this.readString(4);\n if (fontTag !== 'ttcf') {\n throw new Error('Can not read TTF font data');\n }\n //skip 4\n this.offset += 4;\n let ttcIdentificationNumber = this.readInt32(this.offset);\n if (ttcIdentificationNumber < 0) {\n throw new Error('Can not read TTF font data');\n }\n this.offset = this.readInt32(this.offset);\n version = this.readInt32(this.offset);\n }\n return version;\n }\n readNameTable() {\n let tableInfo = this.getTable('name');\n this.offset = tableInfo.offset;\n let table = new TtfNameTable();\n table.formatSelector = this.readUInt16(this.offset);\n table.recordsCount = this.readUInt16(this.offset);\n table.offset = this.readUInt16(this.offset);\n table.nameRecords = [];\n let recordSize = 12;\n let position = this.offset;\n for (let i = 0; i < table.recordsCount; i++) {\n this.offset = position;\n let record = new TtfNameRecord();\n record.platformID = this.readUInt16(this.offset);\n record.encodingID = this.readUInt16(this.offset);\n record.languageID = this.readUInt16(this.offset);\n record.nameID = this.readUInt16(this.offset);\n record.length = this.readUInt16(this.offset);\n record.offset = this.readUInt16(this.offset);\n this.offset = tableInfo.offset + table.offset + record.offset;\n let unicode = (record.platformID === 0 || record.platformID === 3);\n record.name = this.readString(record.length, unicode);\n table.nameRecords[i] = record;\n position += recordSize;\n }\n return table;\n }\n readHeadTable() {\n let tableInfo = this.getTable('head');\n this.offset = tableInfo.offset;\n let table = new TtfHeadTable();\n table.version = this.readFixed(this.offset);\n table.fontRevision = this.readFixed(this.offset);\n table.checkSumAdjustment = this.readUInt32(this.offset);\n table.magicNumber = this.readUInt32(this.offset);\n table.flags = this.readUInt16(this.offset);\n table.unitsPerEm = this.readUInt16(this.offset);\n table.created = this.readInt64(this.offset);\n table.modified = this.readInt64(this.offset);\n table.xMin = this.readInt16(this.offset);\n table.yMin = this.readInt16(this.offset);\n table.xMax = this.readInt16(this.offset);\n table.yMax = this.readInt16(this.offset);\n table.macStyle = this.readUInt16(this.offset);\n table.lowestReadableSize = this.readUInt16(this.offset);\n table.fontDirectionHint = this.readInt16(this.offset);\n table.indexToLocalFormat = this.readInt16(this.offset);\n table.glyphDataFormat = this.readInt16(this.offset);\n return table;\n }\n readHorizontalHeaderTable() {\n let tableInfo = this.getTable('hhea');\n this.offset = tableInfo.offset;\n let table = new TtfHorizontalHeaderTable();\n table.version = this.readFixed(this.offset);\n table.ascender = this.readInt16(this.offset);\n table.descender = this.readInt16(this.offset);\n table.lineGap = this.readInt16(this.offset);\n table.advanceWidthMax = this.readUInt16(this.offset);\n table.minLeftSideBearing = this.readInt16(this.offset);\n table.minRightSideBearing = this.readInt16(this.offset);\n table.xMaxExtent = this.readInt16(this.offset);\n table.caretSlopeRise = this.readInt16(this.offset);\n table.caretSlopeRun = this.readInt16(this.offset);\n //skip 2 * 5\n this.offset += 10;\n table.metricDataFormat = this.readInt16(this.offset);\n table.numberOfHMetrics = this.readUInt16(this.offset);\n return table;\n }\n readOS2Table() {\n let tableInfo = this.getTable('OS/2');\n this.offset = tableInfo.offset;\n let table = new TtfOS2Table();\n table.version = this.readUInt16(this.offset);\n table.xAvgCharWidth = this.readInt16(this.offset);\n table.usWeightClass = this.readUInt16(this.offset);\n table.usWidthClass = this.readUInt16(this.offset);\n table.fsType = this.readInt16(this.offset);\n table.ySubscriptXSize = this.readInt16(this.offset);\n table.ySubscriptYSize = this.readInt16(this.offset);\n table.ySubscriptXOffset = this.readInt16(this.offset);\n table.ySubscriptYOffset = this.readInt16(this.offset);\n table.ySuperscriptXSize = this.readInt16(this.offset);\n table.ySuperscriptYSize = this.readInt16(this.offset);\n table.ySuperscriptXOffset = this.readInt16(this.offset);\n table.ySuperscriptYOffset = this.readInt16(this.offset);\n table.yStrikeoutSize = this.readInt16(this.offset);\n table.yStrikeoutPosition = this.readInt16(this.offset);\n table.sFamilyClass = this.readInt16(this.offset);\n table.panose = this.readBytes(10);\n table.ulUnicodeRange1 = this.readUInt32(this.offset);\n table.ulUnicodeRange2 = this.readUInt32(this.offset);\n table.ulUnicodeRange3 = this.readUInt32(this.offset);\n table.ulUnicodeRange4 = this.readUInt32(this.offset);\n table.vendorIdentifier = this.readBytes(4);\n table.fsSelection = this.readUInt16(this.offset);\n table.usFirstCharIndex = this.readUInt16(this.offset);\n table.usLastCharIndex = this.readUInt16(this.offset);\n table.sTypoAscender = this.readInt16(this.offset);\n table.sTypoDescender = this.readInt16(this.offset);\n table.sTypoLineGap = this.readInt16(this.offset);\n table.usWinAscent = this.readUInt16(this.offset);\n table.usWinDescent = this.readUInt16(this.offset);\n table.ulCodePageRange1 = this.readUInt32(this.offset);\n table.ulCodePageRange2 = this.readUInt32(this.offset);\n if (table.version > 1) {\n table.sxHeight = this.readInt16(this.offset);\n table.sCapHeight = this.readInt16(this.offset);\n table.usDefaultChar = this.readUInt16(this.offset);\n table.usBreakChar = this.readUInt16(this.offset);\n table.usMaxContext = this.readUInt16(this.offset);\n }\n else {\n table.sxHeight = 0;\n table.sCapHeight = 0;\n table.usDefaultChar = 0;\n table.usBreakChar = 0;\n table.usMaxContext = 0;\n }\n return table;\n }\n readPostTable() {\n let tableInfo = this.getTable('post');\n this.offset = tableInfo.offset;\n let table = new TtfPostTable();\n table.formatType = this.readFixed(this.offset);\n table.italicAngle = this.readFixed(this.offset);\n table.underlinePosition = this.readInt16(this.offset);\n table.underlineThickness = this.readInt16(this.offset);\n table.isFixedPitch = this.readUInt32(this.offset);\n table.minType42 = this.readUInt32(this.offset);\n table.maxType42 = this.readUInt32(this.offset);\n table.minType1 = this.readUInt32(this.offset);\n table.maxType1 = this.readUInt32(this.offset);\n return table;\n }\n /**\n * Reads Width of the glyphs.\n */\n readWidthTable(glyphCount, unitsPerEm) {\n let tableInfo = this.getTable('hmtx');\n this.offset = tableInfo.offset;\n let width = [];\n for (let i = 0; i < glyphCount; i++) {\n let glyph = new TtfLongHorMetric();\n glyph.advanceWidth = this.readUInt16(this.offset);\n glyph.lsb = this.readInt16(this.offset);\n let glyphWidth = glyph.advanceWidth * 1000 / unitsPerEm;\n width.push(Math.floor(glyphWidth));\n }\n return width;\n }\n /**\n * Reads the cmap table.\n */\n readCmapTable() {\n let tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset;\n let table = new TtfCmapTable();\n table.version = this.readUInt16(this.offset);\n table.tablesCount = this.readUInt16(this.offset);\n let position = this.offset;\n let subTables = [];\n for (let i = 0; i < table.tablesCount; i++) {\n this.offset = position;\n let subTable = new TtfCmapSubTable();\n subTable.platformID = this.readUInt16(this.offset);\n subTable.encodingID = this.readUInt16(this.offset);\n subTable.offset = this.readUInt32(this.offset);\n position = this.offset;\n this.readCmapSubTable(subTable);\n subTables[i] = subTable;\n }\n return subTables;\n }\n /**\n * Reads the cmap sub table.\n */\n readCmapSubTable(subTable) {\n let tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n let format = this.readUInt16(this.offset);\n let encoding = this.getCmapEncoding(subTable.platformID, subTable.encodingID);\n let platform = (encoding === TtfCmapEncoding.Macintosh) ? TtfPlatformID.Macintosh : TtfPlatformID.Microsoft;\n if (encoding !== TtfCmapEncoding.Unknown) {\n switch (format) {\n case TtfCmapFormat.Apple:\n this.readAppleCmapTable(subTable, encoding);\n break;\n case TtfCmapFormat.Microsoft:\n this.readMicrosoftCmapTable(subTable, encoding);\n break;\n case TtfCmapFormat.Trimmed:\n this.readTrimmedCmapTable(subTable, encoding);\n break;\n }\n }\n }\n /**\n * Reads Symbol cmap table.\n */\n readAppleCmapTable(subTable, encoding) {\n let tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n let table = new TtfAppleCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n if (this.maxMacIndex === null || this.maxMacIndex === undefined) {\n this.maxMacIndex = 0;\n }\n for (let i = 0; i < 256; ++i) {\n let glyphInfo = new TtfGlyphInfo();\n glyphInfo.index = this.readByte(this.offset);\n glyphInfo.width = this.getWidth(glyphInfo.index);\n glyphInfo.charCode = i;\n this.macintosh.setValue(i, glyphInfo);\n this.addGlyph(glyphInfo, encoding);\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n this.maxMacIndex = Math.max(i, this.maxMacIndex);\n }\n }\n /**\n * Reads Symbol cmap table.\n */\n readMicrosoftCmapTable(subTable, encoding) {\n let tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n let collection = (encoding === TtfCmapEncoding.Unicode) ? this.microsoft : this.macintosh;\n let table = new TtfMicrosoftCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n table.segCountX2 = this.readUInt16(this.offset);\n table.searchRange = this.readUInt16(this.offset);\n table.entrySelector = this.readUInt16(this.offset);\n table.rangeShift = this.readUInt16(this.offset);\n let segCount = table.segCountX2 / 2;\n table.endCount = this.readUshortArray(segCount);\n table.reservedPad = this.readUInt16(this.offset);\n table.startCount = this.readUshortArray(segCount);\n table.idDelta = this.readUshortArray(segCount);\n table.idRangeOffset = this.readUshortArray(segCount);\n let length = (table.length / 2 - 8) - (segCount * 4);\n table.glyphID = this.readUshortArray(length);\n // Process glyphIdArray array.\n let codeOffset = 0;\n let index = 0;\n for (let j = 0; j < segCount; j++) {\n for (let k = table.startCount[j]; k <= table.endCount[j] && k !== 65535; k++) {\n if (table.idRangeOffset[j] === 0) {\n codeOffset = (k + table.idDelta[j]) & 65535;\n }\n else {\n index = j + table.idRangeOffset[j] / 2 - segCount + k - table.startCount[j];\n if (index >= table.glyphID.length) {\n continue;\n }\n codeOffset = (table.glyphID[index] + table.idDelta[j]) & 65535;\n }\n let glyph = new TtfGlyphInfo();\n glyph.index = codeOffset;\n glyph.width = this.getWidth(glyph.index);\n let id = (encoding === TtfCmapEncoding.Symbol) ? ((k & 0xff00) === 0xf000 ? k & 0xff : k) : k;\n glyph.charCode = id;\n collection.setValue(id, glyph);\n this.addGlyph(glyph, encoding);\n }\n }\n }\n /**\n * Reads Trimed cmap table.\n */\n readTrimmedCmapTable(subTable, encoding) {\n let tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n let table = new TtfTrimmedCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n table.firstCode = this.readUInt16(this.offset);\n table.entryCount = this.readUInt16(this.offset);\n for (let i = 0; i < table.entryCount; ++i) {\n let glyphInfo = new TtfGlyphInfo();\n glyphInfo.index = this.readUInt16(this.offset);\n glyphInfo.width = this.getWidth(glyphInfo.index);\n glyphInfo.charCode = i + table.firstCode;\n this.macintosh.setValue(i, glyphInfo);\n this.addGlyph(glyphInfo, encoding);\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n this.maxMacIndex = Math.max(i, this.maxMacIndex);\n }\n }\n initializeFontName(nameTable) {\n for (let i = 0; i < nameTable.recordsCount; i++) {\n let record = nameTable.nameRecords[i];\n if (record.nameID === 1) {\n //font family\n this.metrics.fontFamily = record.name;\n }\n else if (record.nameID === 6) {\n //post script name\n this.metrics.postScriptName = record.name;\n }\n /* tslint:disable */\n if (this.metrics.fontFamily !== null && this.metrics.fontFamily !== undefined && this.metrics.postScriptName !== null && this.metrics.postScriptName !== undefined) {\n break;\n }\n /* tslint:disable */\n }\n }\n getTable(name) {\n // if (name === null) {\n // throw new Error('Argument Null Exception : name');\n // }\n let table = new TtfTableInfo();\n let obj;\n if (this.tableDirectory.containsKey(name)) {\n obj = this.tableDirectory.getValue(name);\n }\n if (obj !== null && obj !== undefined) {\n table = obj;\n }\n return table;\n }\n /**\n * Returns width of the glyph.\n */\n getWidth(glyphCode) {\n glyphCode = (glyphCode < this.width.length) ? glyphCode : this.width.length - 1;\n return this.width[glyphCode];\n }\n /**\n * Gets CMAP encoding based on platform ID and encoding ID.\n */\n /* tslint:disable */\n getCmapEncoding(platformID, encodingID) {\n let format = TtfCmapEncoding.Unknown;\n if (platformID == TtfPlatformID.Microsoft && encodingID == TtfMicrosoftEncodingID.Undefined) {\n // When building a symbol font for Windows,\n // the platform ID should be 3 and the encoding ID should be 0.\n format = TtfCmapEncoding.Symbol;\n }\n else if (platformID == TtfPlatformID.Microsoft && encodingID == TtfMicrosoftEncodingID.Unicode) {\n // When building a Unicode font for Windows,\n // the platform ID should be 3 and the encoding ID should be 1.\n format = TtfCmapEncoding.Unicode;\n }\n else if (platformID == TtfPlatformID.Macintosh && encodingID == TtfMacintoshEncodingID.Roman) {\n // When building a font that will be used on the Macintosh,\n // the platform ID should be 1 and the encoding ID should be 0.\n format = TtfCmapEncoding.Macintosh;\n }\n return format;\n }\n /* tslint:enable */\n /**\n * Adds glyph to the collection.\n */\n addGlyph(glyph, encoding) {\n let collection = null;\n switch (encoding) {\n case TtfCmapEncoding.Unicode:\n collection = this.microsoftGlyphs;\n break;\n case TtfCmapEncoding.Macintosh:\n case TtfCmapEncoding.Symbol:\n collection = this.macintoshGlyphs;\n break;\n }\n collection.setValue(glyph.index, glyph);\n }\n /**\n * Initializes metrics.\n */\n /* tslint:disable */\n initializeMetrics(nameTable, headTable, horizontalHeadTable, os2Table, postTable, cmapTables) {\n /* tslint:enable */\n // if (cmapTables === null) {\n // throw new Error('ArgumentNullException : cmapTables');\n // }\n this.initializeFontName(nameTable);\n // Get font encoding.\n let bSymbol = false;\n for (let i = 0; i < cmapTables.length; i++) {\n let subTable = cmapTables[i];\n let encoding = this.getCmapEncoding(subTable.platformID, subTable.encodingID);\n if (encoding === TtfCmapEncoding.Symbol) {\n bSymbol = true;\n break;\n }\n }\n this.metrics.isSymbol = bSymbol;\n this.metrics.macStyle = headTable.macStyle;\n this.metrics.isFixedPitch = (postTable.isFixedPitch !== 0);\n this.metrics.italicAngle = postTable.italicAngle;\n let factor = 1000 / headTable.unitsPerEm;\n this.metrics.winAscent = os2Table.sTypoAscender * factor;\n this.metrics.macAscent = horizontalHeadTable.ascender * factor;\n //m_metrics.MacAscent = os2Table.UsWinAscent * factor;\n // NOTE: This is stange workaround. The value is good if os2Table.SCapHeight != 0, otherwise it should be properly computed.\n this.metrics.capHeight = (os2Table.sCapHeight !== 0) ? os2Table.sCapHeight : 0.7 * headTable.unitsPerEm * factor;\n this.metrics.winDescent = os2Table.sTypoDescender * factor;\n this.metrics.macDescent = horizontalHeadTable.descender * factor;\n //m_metrics.MacDescent = -os2Table.UsWinDescent * factor;\n this.metrics.leading = (os2Table.sTypoAscender - os2Table.sTypoDescender + os2Table.sTypoLineGap) * factor;\n this.metrics.lineGap = Math.ceil(horizontalHeadTable.lineGap * factor);\n let left = headTable.xMin * factor;\n let top = Math.ceil(this.metrics.macAscent + this.metrics.lineGap);\n let right = headTable.xMax * factor;\n let bottom = this.metrics.macDescent;\n this.metrics.fontBox = new Rectangle(left, top, right, bottom);\n // NOTE: Strange!\n this.metrics.stemV = 80;\n this.metrics.widthTable = this.updateWidth();\n this.metrics.contains = this.tableDirectory.containsKey('CFF');\n this.metrics.subScriptSizeFactor = headTable.unitsPerEm / os2Table.ySubscriptYSize;\n this.metrics.superscriptSizeFactor = headTable.unitsPerEm / os2Table.ySuperscriptYSize;\n }\n /**\n * Updates chars structure which is used in the case of ansi encoding (256 bytes).\n */\n updateWidth() {\n let count = 256;\n let bytes = [];\n if (this.metrics.isSymbol) {\n for (let i = 0; i < count; i++) {\n let glyphInfo = this.getGlyph(String.fromCharCode(i));\n bytes[i] = (glyphInfo.empty) ? 0 : glyphInfo.width;\n }\n }\n else {\n let byteToProcess = [];\n let unknown = '?';\n let space = String.fromCharCode(32);\n for (let i = 0; i < count; i++) {\n byteToProcess[0] = i;\n let text = this.getString(byteToProcess, 0, byteToProcess.length);\n let ch = (text.length > 0) ? text[0] : unknown;\n let glyphInfo = this.getGlyph(ch);\n if (!glyphInfo.empty) {\n bytes[i] = glyphInfo.width;\n }\n else {\n glyphInfo = this.getGlyph(space);\n bytes[i] = (glyphInfo.empty) ? 0 : glyphInfo.width;\n }\n }\n }\n return bytes;\n }\n /**\n * Returns default glyph.\n */\n getDefaultGlyph() {\n let glyph = this.getGlyph(StringTokenizer.whiteSpace);\n return glyph;\n }\n /**\n * Reads unicode string from byte array.\n */\n getString(byteToProcess, start, length) {\n let result = '';\n for (let index = 0; index < length; index++) {\n result += String.fromCharCode(byteToProcess[index + start]);\n }\n return result;\n }\n /**\n * Reads loca table.\n */\n readLocaTable(bShort) {\n let tableInfo = this.getTable('loca');\n this.offset = tableInfo.offset;\n let table = new TtfLocaTable();\n let buffer = null;\n if (bShort) {\n let len = tableInfo.length / 2;\n buffer = [];\n for (let i = 0; i < len; i++) {\n buffer[i] = this.readUInt16(this.offset) * 2;\n }\n }\n else {\n let len = tableInfo.length / 4;\n buffer = [];\n for (let i = 0; i < len; i++) {\n buffer[i] = this.readUInt32(this.offset);\n }\n }\n table.offsets = buffer;\n return table;\n }\n /**\n * Updates hash table of used glyphs.\n */\n updateGlyphChars(glyphChars, locaTable) {\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n // Add zero key.\n if (!glyphChars.containsKey(0)) {\n glyphChars.setValue(0, 0);\n }\n let clone = new Dictionary();\n let glyphCharKeys = glyphChars.keys();\n for (let i = 0; i < glyphCharKeys.length; i++) {\n clone.setValue(glyphCharKeys[i], glyphChars.getValue(glyphCharKeys[i]));\n }\n for (let i = 0; i < glyphCharKeys.length; i++) {\n let nextKey = glyphCharKeys[i];\n this.processCompositeGlyph(glyphChars, nextKey, locaTable);\n }\n }\n /**\n * Checks if glyph is composite or not.\n */\n processCompositeGlyph(glyphChars, glyph, locaTable) {\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n // Is in range.\n if (glyph < locaTable.offsets.length - 1) {\n let glyphOffset = locaTable.offsets[glyph];\n if (glyphOffset !== locaTable.offsets[glyph + 1]) {\n let tableInfo = this.getTable('glyf');\n this.offset = tableInfo.offset + glyphOffset;\n let glyphHeader = new TtfGlyphHeader();\n glyphHeader.numberOfContours = this.readInt16(this.offset);\n glyphHeader.xMin = this.readInt16(this.offset);\n glyphHeader.yMin = this.readInt16(this.offset);\n glyphHeader.xMax = this.readInt16(this.offset);\n glyphHeader.yMax = this.readInt16(this.offset);\n // Glyph is composite.\n if (glyphHeader.numberOfContours < 0) {\n let skipBytes = 0;\n let entry = true;\n while (entry) {\n let flags = this.readUInt16(this.offset);\n let glyphIndex = this.readUInt16(this.offset);\n if (!glyphChars.containsKey(glyphIndex)) {\n glyphChars.setValue(glyphIndex, 0);\n }\n if ((flags & TtfCompositeGlyphFlags.MoreComponents) === 0) {\n break;\n }\n skipBytes = ((flags & TtfCompositeGlyphFlags.Arg1And2AreWords) !== 0) ? 4 : 2;\n if ((flags & TtfCompositeGlyphFlags.WeHaveScale) !== 0) {\n skipBytes += 2;\n }\n else if ((flags & TtfCompositeGlyphFlags.WeHaveAnXyScale) !== 0) {\n skipBytes += 4;\n }\n else if ((flags & TtfCompositeGlyphFlags.WeHaveTwoByTwo) !== 0) {\n skipBytes += 2 * 4;\n }\n this.offset += skipBytes;\n }\n }\n }\n }\n }\n /**\n * Creates new glyph tables based on chars that are used for output.\n */\n /* tslint:disable */\n generateGlyphTable(glyphChars, locaTable, newLocaTable, newGlyphTable) {\n /* tslint:enable */\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n newLocaTable = [];\n // Sorting used glyphs keys.\n let activeGlyphs = glyphChars.keys();\n activeGlyphs.sort((a, b) => a - b);\n let glyphSize = 0;\n for (let i = 0; i < activeGlyphs.length; i++) {\n let glyphIndex = activeGlyphs[i];\n if (locaTable.offsets.length > 0) {\n glyphSize += locaTable.offsets[glyphIndex + 1] - locaTable.offsets[glyphIndex];\n }\n }\n let glyphSizeAligned = this.align(glyphSize);\n newGlyphTable = [];\n for (let i = 0; i < glyphSizeAligned; i++) {\n newGlyphTable.push(0);\n }\n let nextGlyphOffset = 0;\n let nextGlyphIndex = 0;\n let table = this.getTable('glyf');\n // Creating NewLocaTable - that would hold offsets for filtered glyphs.\n for (let i = 0; i < locaTable.offsets.length; i++) {\n newLocaTable.push(nextGlyphOffset);\n if (nextGlyphIndex < activeGlyphs.length && activeGlyphs[nextGlyphIndex] === i) {\n ++nextGlyphIndex;\n newLocaTable[i] = nextGlyphOffset;\n let oldGlyphOffset = locaTable.offsets[i];\n let oldNextGlyphOffset = locaTable.offsets[i + 1] - oldGlyphOffset;\n if (oldNextGlyphOffset > 0) {\n this.offset = table.offset + oldGlyphOffset;\n let result = this.read(newGlyphTable, nextGlyphOffset, oldNextGlyphOffset);\n newGlyphTable = result.buffer;\n nextGlyphOffset += oldNextGlyphOffset;\n }\n }\n }\n return { glyphTableSize: glyphSize, newLocaTable: newLocaTable, newGlyphTable: newGlyphTable };\n }\n /**\n * Updates new Loca table.\n */\n /* tslint:disable */\n updateLocaTable(newLocaTable, bLocaIsShort, newLocaTableOut) {\n /* tslint:enable */\n if (newLocaTable === null) {\n throw new Error('Argument Null Exception : newLocaTable');\n }\n let size = (bLocaIsShort) ? newLocaTable.length * 2 : newLocaTable.length * 4;\n let count = this.align(size);\n //BigEndianWiter\n let writer = new BigEndianWriter(count);\n for (let i = 0; i < newLocaTable.length; i++) {\n let value = newLocaTable[i];\n if (bLocaIsShort) {\n value /= 2;\n writer.writeShort(value);\n }\n else {\n writer.writeInt(value);\n }\n }\n return { newLocaUpdated: writer.data, newLocaSize: size };\n }\n /**\n * Aligns number to be divisible on 4.\n */\n align(value) {\n return (value + 3) & (~3);\n }\n /**\n * Returns font program data.\n */\n /* tslint:disable */\n getFontProgram(newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize) {\n /* tslint:enable */\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n let tableNames = this.tableNames;\n let result = this.getFontProgramLength(newLocaTableOut, newGlyphTable, 0);\n let fontProgramLength = result.fontProgramLength;\n let numTables = result.numTables;\n let writer = new BigEndianWriter(fontProgramLength);\n writer.writeInt(0x10000);\n writer.writeShort(numTables);\n let entrySelector = this.entrySelectors[numTables];\n writer.writeShort((1 << (entrySelector & 31)) * 16);\n writer.writeShort(entrySelector);\n writer.writeShort((numTables - (1 << (entrySelector & 31))) * 16);\n // Writing to destination buffer - checksums && sizes of used tables.\n this.writeCheckSums(writer, numTables, newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize);\n // // Writing to destination buffer - used glyphs.\n this.writeGlyphs(writer, newLocaTableOut, newGlyphTable);\n return writer.data;\n }\n /* tslint:disable */\n getFontProgramLength(newLocaTableOut, newGlyphTable, numTables) {\n /* tslint:enable */\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n // glyf and loca are used by default;\n numTables = 2;\n let tableNames = this.tableNames;\n let fontProgramLength = 0;\n for (let i = 0; i < tableNames.length; i++) {\n let tableName = tableNames[i];\n if (tableName !== 'glyf' && tableName !== 'loca') {\n let table = this.getTable(tableName);\n if (!table.empty) {\n ++numTables;\n fontProgramLength += this.align(table.length);\n }\n }\n }\n fontProgramLength += newLocaTableOut.length;\n fontProgramLength += newGlyphTable.length;\n let usedTablesSize = numTables * 16 + (3 * 4);\n fontProgramLength += usedTablesSize;\n return { fontProgramLength: fontProgramLength, numTables: numTables };\n }\n /**\n * Writing to destination buffer - checksums and sizes of used tables.\n */\n /* tslint:disable */\n writeCheckSums(writer, numTables, newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize) {\n /* tslint:enable */\n if (writer === null) {\n throw new Error('Argument Null Exception : writer');\n }\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n let tableNames = this.tableNames;\n let usedTablesSize = numTables * 16 + (3 * 4);\n let nextTableSize = 0;\n for (let i = 0; i < tableNames.length; i++) {\n let tableName = tableNames[i];\n let tableInfo = this.getTable(tableName);\n if (tableInfo.empty) {\n continue;\n }\n writer.writeString(tableName);\n if (tableName === 'glyf') {\n let checksum = this.calculateCheckSum(newGlyphTable);\n writer.writeInt(checksum);\n nextTableSize = glyphTableSize;\n }\n else if (tableName === 'loca') {\n let checksum = this.calculateCheckSum(newLocaTableOut);\n writer.writeInt(checksum);\n nextTableSize = locaTableSize;\n }\n else {\n writer.writeInt(tableInfo.checksum);\n nextTableSize = tableInfo.length;\n }\n writer.writeUInt(usedTablesSize);\n writer.writeUInt(nextTableSize);\n usedTablesSize += this.align(nextTableSize);\n }\n }\n /**\n * Gets checksum from source buffer.\n */\n calculateCheckSum(bytes) {\n if (bytes === null) {\n throw new Error('Argument Null Exception : bytes');\n }\n let pos = 0;\n let byte1 = 0;\n let byte2 = 0;\n let byte3 = 0;\n let byte4 = 0;\n for (let i = 0; i < (bytes.length + 1) / 4; i++) {\n byte4 += (bytes[pos++] & 255);\n byte3 += (bytes[pos++] & 255);\n byte2 += (bytes[pos++] & 255);\n byte1 += (bytes[pos++] & 255);\n }\n let result = byte1;\n result += (byte2 << 8);\n result += (byte3 << 16);\n result += (byte4 << 24);\n return result;\n }\n /**\n * Writing to destination buffer - used glyphs.\n */\n writeGlyphs(writer, newLocaTable, newGlyphTable) {\n if (writer === null) {\n throw new Error('Argument Null Exception : writer');\n }\n if (newLocaTable === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n let tableNames = this.tableNames;\n for (let i = 0; i < tableNames.length; i++) {\n let tableName = tableNames[i];\n let tableInfo = this.getTable(tableName);\n if (tableInfo.empty) {\n continue;\n }\n if (tableName === 'glyf') {\n writer.writeBytes(newGlyphTable);\n }\n else if (tableName === 'loca') {\n writer.writeBytes(newLocaTable);\n }\n else {\n let count = this.align(tableInfo.length);\n let buff = [];\n for (let i = 0; i < count; i++) {\n buff.push(0);\n }\n this.offset = tableInfo.offset;\n let result = this.read(buff, 0, tableInfo.length);\n writer.writeBytes(result.buffer);\n }\n }\n }\n //public methods\n /**\n * Sets position value of font data.\n */\n setOffset(offset) {\n this.offset = offset;\n }\n /**\n * Creates font Internals\n * @private\n */\n createInternals() {\n this.metrics = new TtfMetrics();\n let nameTable = this.readNameTable();\n let headTable = this.readHeadTable();\n this.bIsLocaShort = (headTable.indexToLocalFormat === 0);\n let horizontalHeadTable = this.readHorizontalHeaderTable();\n let os2Table = this.readOS2Table();\n let postTable = this.readPostTable();\n this.width = this.readWidthTable(horizontalHeadTable.numberOfHMetrics, headTable.unitsPerEm);\n let subTables = this.readCmapTable();\n this.initializeMetrics(nameTable, headTable, horizontalHeadTable, os2Table, postTable, subTables);\n }\n getGlyph(charCode) {\n if (typeof charCode === 'number') {\n let obj1 = null;\n if (!this.metrics.isSymbol && this.microsoftGlyphs != null) {\n if (this.microsoftGlyphs.containsKey(charCode)) {\n obj1 = this.microsoftGlyphs.getValue(charCode);\n }\n }\n else if (this.metrics.isSymbol && this.macintoshGlyphs != null) {\n if (this.macintoshGlyphs.containsKey(charCode)) {\n obj1 = this.macintoshGlyphs.getValue(charCode);\n }\n }\n let glyph = (obj1 != null) ? obj1 : this.getDefaultGlyph();\n return glyph;\n }\n else {\n let obj = null;\n let code = charCode.charCodeAt(0);\n if (!this.metrics.isSymbol && this.microsoft !== null) {\n if (this.microsoft.containsKey(code)) {\n obj = this.microsoft.getValue(code);\n if (code !== StringTokenizer.whiteSpace.charCodeAt(0)) {\n this.isFontPresent = true;\n }\n }\n else if (code !== StringTokenizer.whiteSpace.charCodeAt(0)) {\n this.isFontPresent = false;\n }\n }\n else if (this.metrics.isSymbol && this.macintosh !== null || this.isMacTTF) {\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n if (this.maxMacIndex !== 0) {\n code %= this.maxMacIndex + 1;\n }\n else {\n code = ((code & 0xff00) === 0xf000 ? code & 0xff : code);\n }\n if (this.macintosh.containsKey(code)) {\n obj = this.macintosh.getValue(code);\n this.isFontPresent = true;\n }\n }\n // Fix for StackOverFlow exception in XPS to PDF converter\n if (charCode === StringTokenizer.whiteSpace && obj === null) {\n obj = new TtfGlyphInfo();\n }\n let glyph = (obj !== null) ? obj : this.getDefaultGlyph();\n return glyph;\n }\n }\n /**\n * Gets hash table with chars indexed by glyph index.\n */\n getGlyphChars(chars) {\n if (chars === null || chars === undefined) {\n throw new Error('Argument Null Exception : chars');\n }\n let dictionary = new Dictionary();\n let charKeys = chars.keys();\n for (let i = 0; i < charKeys.length; i++) {\n let ch = charKeys[i];\n let glyph = this.getGlyph(ch);\n if (!glyph.empty) {\n dictionary.setValue(glyph.index, ch.charCodeAt(0));\n }\n }\n return dictionary;\n }\n /**\n * Gets all glyphs.\n */\n getAllGlyphs() {\n let allGlyphInfo = [];\n let info = new TtfGlyphInfo();\n let index = 0;\n for (let i = 0; i < this.width.length; i++) {\n let width = this.width[i];\n info.index = index;\n info.width = width;\n allGlyphInfo.push(info);\n index++;\n }\n return allGlyphInfo;\n }\n /**\n * Reads a font's program.\n * @private\n */\n readFontProgram(chars) {\n let glyphChars = this.getGlyphChars(chars);\n let locaTable = this.readLocaTable(this.bIsLocaShort);\n if (glyphChars.size() < chars.size()) {\n this.missedGlyphs = chars.size() - glyphChars.size();\n }\n this.updateGlyphChars(glyphChars, locaTable);\n /* tslint:disable */\n let result1 = this.generateGlyphTable(glyphChars, locaTable, null, null);\n /* tslint:enable */\n let glyphTableSize = result1.glyphTableSize;\n let newLocaTable = result1.newLocaTable;\n let newGlyphTable = result1.newGlyphTable;\n let result2 = this.updateLocaTable(newLocaTable, this.bIsLocaShort, null);\n let newLocaSize = result2.newLocaSize;\n let newLocaUpdated = result2.newLocaUpdated;\n let fontProgram = this.getFontProgram(newLocaUpdated, newGlyphTable, glyphTableSize, newLocaSize);\n return fontProgram;\n }\n /**\n * Reconverts string to be in proper format saved into PDF file.\n */\n convertString(text) {\n if (text === null) {\n throw new Error('Argument Null Exception : text');\n }\n let glyph = '';\n for (let k = 0; k < text.length; k++) {\n let ch = text[k];\n let glyphInfo = this.getGlyph(ch);\n if (!glyphInfo.empty) {\n glyph += String.fromCharCode(glyphInfo.index);\n \n }\n }\n return glyph;\n }\n /**\n * Gets char width.\n */\n getCharWidth(code) {\n let glyphInfo = this.getGlyph(code);\n glyphInfo = (!glyphInfo.empty) ? glyphInfo : this.getDefaultGlyph();\n let codeWidth = (!glyphInfo.empty) ? glyphInfo.width : 0;\n return codeWidth;\n }\n readString(length, isUnicode) {\n if (isUnicode === undefined) {\n return this.readString(length, false);\n }\n else {\n //let buffer : number[] = this.readBytes(length);\n let result = '';\n if (isUnicode) {\n for (let i = 0; i < length; i++) {\n if (i % 2 !== 0) {\n result += String.fromCharCode(this.fontData[this.offset]);\n }\n this.offset += 1;\n }\n }\n else {\n for (let i = 0; i < length; i++) {\n result += String.fromCharCode(this.fontData[this.offset]);\n this.offset += 1;\n }\n }\n return result;\n }\n }\n readFixed(offset) {\n let integer = this.readInt16(offset);\n let sFraction = this.readInt16(offset + 2);\n let fraction = sFraction / 16384;\n return integer + fraction;\n }\n readInt32(offset) {\n let i1 = this.fontData[offset + 3];\n let i2 = this.fontData[offset + 2];\n let i3 = this.fontData[offset + 1];\n let i4 = this.fontData[offset];\n this.offset += 4;\n return i1 + (i2 << 8) + (i3 << 16) + (i4 << 24);\n }\n readUInt32(offset) {\n let i1 = this.fontData[offset + 3];\n let i2 = this.fontData[offset + 2];\n let i3 = this.fontData[offset + 1];\n let i4 = this.fontData[offset];\n this.offset += 4;\n return (i1 | i2 << 8 | i3 << 16 | i4 << 24);\n }\n // private readInt16(offset : number) : number {\n // let result : number = (this.fontData[offset] << 8) + this.fontData[offset + 1];\n // this.offset += 2;\n // return result;\n // }\n readInt16(offset) {\n let result = (this.fontData[offset] << 8) + this.fontData[offset + 1];\n result = result & (1 << 15) ? result - 0x10000 : result;\n this.offset += 2;\n return result;\n }\n readInt64(offset) {\n let low = this.readInt32(offset + 4);\n let n = this.readInt32(offset) * 4294967296.0 + low;\n if (low < 0) {\n n += 4294967296;\n }\n return n;\n }\n readUInt16(offset) {\n let result = (this.fontData[offset] << 8) | this.fontData[offset + 1];\n this.offset += 2;\n return result;\n }\n /**\n * Reads ushort array.\n */\n readUshortArray(length) {\n let buffer = [];\n for (let i = 0; i < length; i++) {\n buffer[i] = this.readUInt16(this.offset);\n }\n return buffer;\n }\n readBytes(length) {\n let result = [];\n for (let i = 0; i < length; i++) {\n result.push(this.fontData[this.offset]);\n this.offset += 1;\n }\n return result;\n }\n readByte(offset) {\n let result = this.fontData[offset];\n this.offset += 1;\n return result;\n }\n /**\n * Reads bytes to array in BigEndian order.\n * @private\n */\n read(buffer, index, count) {\n if (buffer === null) {\n throw new Error('Argument Null Exception : buffer');\n }\n let written = 0;\n let read = 0;\n do {\n for (let i = 0; (i < count - written) && (this.offset + i < this.fontData.length); i++) {\n buffer[index + i] = this.fontData[this.offset + i];\n }\n read = count - written;\n this.offset += read;\n written += read;\n } while (written < count);\n return { buffer: buffer, written: written };\n }\n}\n\n/**\n * `Metrics` of the font.\n * @private\n */\nclass PdfFontMetrics {\n constructor() {\n /**\n * `Line gap`.\n * @private\n */\n this.lineGap = 0;\n }\n // Public methods\n /**\n * Returns `ascent` taking into consideration font`s size.\n * @private\n */\n getAscent(format) {\n let returnValue = this.ascent * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n }\n /**\n * Returns `descent` taking into consideration font`s size.\n * @private\n */\n getDescent(format) {\n let returnValue = this.descent * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n }\n /**\n * Returns `Line gap` taking into consideration font`s size.\n * @private\n */\n getLineGap(format) {\n let returnValue = this.lineGap * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n }\n /**\n * Returns `height` taking into consideration font`s size.\n * @private\n */\n getHeight(format) {\n let height;\n let clearTypeFonts = ['cambria', 'candara', 'constantia', 'corbel', 'cariadings'];\n let clearTypeFontCollection = [];\n for (let index = 0; index < clearTypeFonts.length; index++) {\n let font = clearTypeFonts[index];\n clearTypeFontCollection.push(font);\n }\n if (this.getDescent(format) < 0) {\n // if ((clearTypeFontCollection.indexOf(this.name.toLowerCase()) !== -1) && !this.isUnicodeFont) {\n // height = (this.GetAscent(format) - this.GetDescent(format) - this.GetLineGap(format));\n // } else {\n height = (this.getAscent(format) - this.getDescent(format) + this.getLineGap(format));\n // }\n }\n else {\n height = (this.getAscent(format) + this.getDescent(format) + this.getLineGap(format));\n }\n return height;\n }\n /**\n * Calculates `size` of the font depending on the subscript/superscript value.\n * @private\n */\n getSize(format) {\n let size = this.size;\n if (format != null) {\n switch (format.subSuperScript) {\n case PdfSubSuperScript.SubScript:\n size /= this.subScriptSizeFactor;\n break;\n case PdfSubSuperScript.SuperScript:\n size /= this.superscriptSizeFactor;\n break;\n }\n }\n return size;\n }\n /**\n * `Clones` the metrics.\n * @private\n */\n clone() {\n let metrics = this;\n metrics.widthTable = WidthTable.clone();\n return metrics;\n }\n // Properies\n /**\n * Gets or sets the `width table`.\n * @private\n */\n get widthTable() {\n return this.internalWidthTable;\n }\n set widthTable(value) {\n this.internalWidthTable = value;\n }\n}\nclass WidthTable {\n /**\n * Static `clones` this instance of the WidthTable class.\n * @private\n */\n static clone() {\n return null;\n }\n}\nclass StandardWidthTable extends WidthTable {\n //Properties\n /**\n * Gets the `32 bit number` at the specified index.\n * @private\n */\n items(index) {\n if (index < 0 || index >= this.widths.length) {\n throw new Error('ArgumentOutOfRangeException:index, The character is not supported by the font.');\n }\n let result = this.widths[index];\n return result;\n }\n /**\n * Gets the `length` of the internal array.\n * @private\n */\n get length() {\n return this.widths.length;\n }\n // Constructors\n /**\n * Initializes a new instance of the `StandardWidthTable` class.\n * @private\n */\n constructor(widths) {\n super();\n if (widths == null) {\n throw new Error('ArgumentNullException:widths');\n }\n this.widths = widths;\n }\n //Overrides\n /**\n * `Clones` this instance of the WidthTable class.\n * @private\n */\n clone() {\n let swt = this;\n swt.widths = this.widths;\n return swt;\n }\n /**\n * Converts width table to a `PDF array`.\n * @private\n */\n toArray() {\n let arr = new PdfArray(this.widths);\n return arr;\n }\n}\n\n/**\n * TrueTypeFont.ts class for EJ2-PDF\n */\nclass UnicodeTrueTypeFont {\n /* tslint:enable */\n //Constructors\n /**\n * Initializes a new instance of the `PdfTrueTypeFont` class.\n * @private\n */\n constructor(base64String, size) {\n // Fields\n this.nameString = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Indicates whether the font program is compressed or not.\n * @private\n */\n this.isCompress = false;\n /**\n * Indicates whether the font is embedded or not.\n */\n this.isEmbedFont = false;\n /**\n * Cmap table's start prefix.\n */\n /* tslint:disable */\n this.cmapPrefix = '/CIDInit /ProcSet findresource begin\\n12 dict begin\\nbegincmap' + Operators.newLine + '/CIDSystemInfo << /Registry (Adobe)/Ordering (UCS)/Supplement 0>> def\\n/CMapName ' + '/Adobe-Identity-UCS def\\n/CMapType 2 def\\n1 begincodespacerange' + Operators.newLine;\n /* tslint:enable */\n /**\n * Cmap table's start suffix.\n */\n this.cmapEndCodespaceRange = 'endcodespacerange' + Operators.newLine;\n /**\n * Cmap's begin range marker.\n */\n this.cmapBeginRange = 'beginbfrange' + Operators.newLine;\n /**\n * Cmap's end range marker.\n */\n this.cmapEndRange = 'endbfrange' + Operators.newLine;\n /**\n * Cmap table's end\n */\n /* tslint:disable */\n this.cmapSuffix = 'endbfrange\\nendcmap\\nCMapName currentdict ' + '/CMap defineresource pop\\nend end' + Operators.newLine;\n if (base64String === null || base64String === undefined) {\n throw new Error('ArgumentNullException:base64String');\n }\n this.fontSize = size;\n this.fontString = base64String;\n this.Initialize();\n }\n //Implementation\n /**\n * Returns width of the char symbol.\n */\n getCharWidth(charCode) {\n let codeWidth = this.ttfReader.getCharWidth(charCode);\n return codeWidth;\n }\n /**\n * Returns width of the text line.\n */\n getLineWidth(line) {\n // if (line == null) {\n // throw new Error('ArgumentNullException : line');\n // }\n let width = 0;\n for (let i = 0, len = line.length; i < len; i++) {\n let ch = line[i];\n let charWidth = this.getCharWidth(ch);\n width += charWidth;\n }\n return width;\n }\n /**\n * Initializes a new instance of the `PdfTrueTypeFont` class.\n * @private\n */\n Initialize() {\n let byteArray = new ByteArray(this.fontString.length);\n byteArray.writeFromBase64String(this.fontString);\n this.fontData = byteArray.internalBuffer;\n this.ttfReader = new TtfReader(this.fontData);\n this.ttfMetrics = this.ttfReader.metrics;\n }\n createInternals() {\n this.fontDictionary = new PdfDictionary();\n this.fontProgram = new PdfStream();\n this.cmap = new PdfStream();\n this.descendantFont = new PdfDictionary();\n this.metrics = new PdfFontMetrics();\n this.ttfReader.createInternals();\n this.ttfMetrics = this.ttfReader.metrics;\n this.initializeMetrics();\n // Create all the dictionaries of the font.\n this.subsetName = this.getFontName();\n this.createDescendantFont();\n this.createCmap();\n this.createFontDictionary();\n this.createFontProgram();\n }\n getInternals() {\n return this.fontDictionary;\n }\n /**\n * Initializes metrics.\n */\n initializeMetrics() {\n let ttfMetrics = this.ttfReader.metrics;\n this.metrics.ascent = ttfMetrics.macAscent;\n this.metrics.descent = ttfMetrics.macDescent;\n this.metrics.height = ttfMetrics.macAscent - ttfMetrics.macDescent + ttfMetrics.lineGap;\n this.metrics.name = ttfMetrics.fontFamily;\n this.metrics.postScriptName = ttfMetrics.postScriptName;\n this.metrics.size = this.fontSize;\n this.metrics.widthTable = new StandardWidthTable(ttfMetrics.widthTable);\n this.metrics.lineGap = ttfMetrics.lineGap;\n this.metrics.subScriptSizeFactor = ttfMetrics.subScriptSizeFactor;\n this.metrics.superscriptSizeFactor = ttfMetrics.superscriptSizeFactor;\n this.metrics.isBold = ttfMetrics.isBold;\n }\n /**\n * Gets random string.\n */\n getFontName() {\n let builder = '';\n let name;\n // if (this.isEmbed === false) {\n for (let i = 0; i < 6; i++) {\n let index = Math.floor(Math.random() * (25 - 0 + 1)) + 0;\n builder += this.nameString[index];\n }\n builder += '+';\n // }\n builder += this.ttfReader.metrics.postScriptName;\n name = builder.toString();\n // if (name === '') {\n // name = this.ttfReader.metrics.fontFamily;\n // }\n name = this.formatName(name);\n return name;\n }\n /**\n * Generates name of the font.\n */\n formatName(fontName) {\n // if (fontName === null) {\n // throw new Error('ArgumentNullException : fontName');\n // }\n // if (fontName === '') {\n // throw new Error('ArgumentOutOfRangeException : fontName, Parameter can not be empty');\n // }\n let ret = fontName.replace('(', '#28');\n ret = ret.replace(')', '#29');\n ret = ret.replace('[', '#5B');\n ret = ret.replace(']', '#5D');\n ret = ret.replace('<', '#3C');\n ret = ret.replace('>', '#3E');\n ret = ret.replace('{', '#7B');\n ret = ret.replace('}', '#7D');\n ret = ret.replace('/', '#2F');\n ret = ret.replace('%', '#25');\n return ret.replace(' ', '#20');\n }\n /**\n * Creates descendant font.\n */\n createDescendantFont() {\n // Set property used to clone Font every time\n this.descendantFont.isFont = true;\n this.descendantFont.descendantFontBeginSave = new SaveDescendantFontEventHandler(this);\n this.descendantFont.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n this.descendantFont.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.cIDFontType2));\n this.descendantFont.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.subsetName));\n this.descendantFont.items.setValue(this.dictionaryProperties.cIDToGIDMap, new PdfName(this.dictionaryProperties.identity));\n this.descendantFont.items.setValue(this.dictionaryProperties.dw, new PdfNumber(1000));\n this.fontDescriptor = this.createFontDescriptor();\n this.descendantFont.items.setValue(this.dictionaryProperties.fontDescriptor, new PdfReferenceHolder(this.fontDescriptor));\n let systemInfo = this.createSystemInfo();\n this.descendantFont.items.setValue(this.dictionaryProperties.cIDSystemInfo, systemInfo);\n }\n /**\n * Creates font descriptor.\n */\n createFontDescriptor() {\n let descriptor = new PdfDictionary();\n let metrics = this.ttfReader.metrics;\n // Set property used to clone Font every time\n descriptor.isFont = true;\n descriptor.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.fontDescriptor));\n descriptor.items.setValue(this.dictionaryProperties.fontName, new PdfName(this.subsetName));\n descriptor.items.setValue(this.dictionaryProperties.flags, new PdfNumber(this.getDescriptorFlags()));\n descriptor.items.setValue(this.dictionaryProperties.fontBBox, PdfArray.fromRectangle(this.getBoundBox()));\n descriptor.items.setValue(this.dictionaryProperties.missingWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.stemV, new PdfNumber(metrics.stemV));\n descriptor.items.setValue(this.dictionaryProperties.italicAngle, new PdfNumber(metrics.italicAngle));\n descriptor.items.setValue(this.dictionaryProperties.capHeight, new PdfNumber(metrics.capHeight));\n descriptor.items.setValue(this.dictionaryProperties.ascent, new PdfNumber(metrics.winAscent));\n descriptor.items.setValue(this.dictionaryProperties.descent, new PdfNumber(metrics.winDescent));\n descriptor.items.setValue(this.dictionaryProperties.leading, new PdfNumber(metrics.leading));\n descriptor.items.setValue(this.dictionaryProperties.avgWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.fontFile2, new PdfReferenceHolder(this.fontProgram));\n descriptor.items.setValue(this.dictionaryProperties.maxWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.xHeight, new PdfNumber(0));\n descriptor.items.setValue(this.dictionaryProperties.stemH, new PdfNumber(0));\n return descriptor;\n }\n /**\n * Generates cmap.\n * @private\n */\n createCmap() {\n this.cmap.cmapBeginSave = new SaveCmapEventHandler(this);\n }\n /**\n * Generates font dictionary.\n */\n createFontDictionary() {\n // Set property used to clone Font every time\n this.fontDictionary.isFont = true;\n this.fontDictionary.fontDictionaryBeginSave = new SaveFontDictionaryEventHandler(this);\n this.fontDictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n this.fontDictionary.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.subsetName));\n this.fontDictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.type0));\n this.fontDictionary.items.setValue(this.dictionaryProperties.encoding, new PdfName(this.dictionaryProperties.identityH));\n let descFonts = new PdfArray();\n let reference = new PdfReferenceHolder(this.descendantFont);\n // Set property used to clone Font every time\n descFonts.isFont = true;\n descFonts.add(reference);\n this.fontDictionary.items.setValue(this.dictionaryProperties.descendantFonts, descFonts);\n }\n /**\n * Creates font program.\n */\n createFontProgram() {\n this.fontProgram.fontProgramBeginSave = new SaveFontProgramEventHandler(this);\n }\n /**\n * Creates system info dictionary for CID font.\n * @private\n */\n createSystemInfo() {\n let systemInfo = new PdfDictionary();\n systemInfo.items.setValue(this.dictionaryProperties.registry, new PdfString('Adobe'));\n systemInfo.items.setValue(this.dictionaryProperties.ordering, new PdfString(this.dictionaryProperties.identity));\n systemInfo.items.setValue(this.dictionaryProperties.supplement, new PdfNumber(0));\n return systemInfo;\n }\n /**\n * Runs before font Dictionary will be saved.\n */\n descendantFontBeginSave() {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n let width = this.getDescendantWidth();\n if (width !== null) {\n this.descendantFont.items.setValue(this.dictionaryProperties.w, width);\n }\n }\n }\n /**\n * Runs before font Dictionary will be saved.\n */\n cmapBeginSave() {\n this.generateCmap();\n }\n /**\n * Runs before font Dictionary will be saved.\n */\n /* tslint:disable */\n fontDictionaryBeginSave() {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0 && !this.fontDictionary.containsKey(this.dictionaryProperties.toUnicode)) {\n this.fontDictionary.items.setValue(this.dictionaryProperties.toUnicode, new PdfReferenceHolder(this.cmap));\n }\n }\n /* tslint:enable */\n /**\n * Runs before font program stream save.\n */\n fontProgramBeginSave() {\n this.isCompress = true;\n this.generateFontProgram();\n }\n /**\n * Gets width description pad array for c i d font.\n */\n getDescendantWidth() {\n let array = new PdfArray();\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n let glyphInfo = [];\n // if (!this.isEmbedFont) {\n let keys = this.usedChars.keys();\n for (let i = 0; i < keys.length; i++) {\n let chLen = keys[i];\n let glyph = this.ttfReader.getGlyph(chLen);\n if (glyph.empty) {\n continue;\n }\n glyphInfo.push(glyph);\n }\n // } else {\n // glyphInfo = this.ttfReader.getAllGlyphs();\n // }\n glyphInfo.sort((a, b) => a.index - b.index);\n let firstGlyphIndex = 0;\n let lastGlyphIndex = 0;\n let firstGlyphIndexWasSet = false;\n let widthDetails = new PdfArray();\n // if (!this.isEmbedFont) {\n for (let i = 0; i < glyphInfo.length; i++) {\n let glyph = glyphInfo[i];\n if (!firstGlyphIndexWasSet) {\n firstGlyphIndexWasSet = true;\n firstGlyphIndex = glyph.index;\n lastGlyphIndex = glyph.index - 1;\n }\n if ((lastGlyphIndex + 1 !== glyph.index || (i + 1 === glyphInfo.length)) && glyphInfo.length > 1) {\n // Add glyph index / width.\n array.add(new PdfNumber(firstGlyphIndex));\n if (i !== 0) {\n array.add(widthDetails);\n }\n firstGlyphIndex = glyph.index;\n widthDetails = new PdfArray();\n }\n widthDetails.add(new PdfNumber(glyph.width));\n if (i + 1 === glyphInfo.length) {\n array.add(new PdfNumber(firstGlyphIndex));\n array.add(widthDetails);\n }\n lastGlyphIndex = glyph.index;\n }\n // } else {\n // for (let i : number = 0; i < glyphInfo.length; i++) {\n // let glyph : TtfGlyphInfo = glyphInfo[i];\n // if (!firstGlyphIndexWasSet) {\n // firstGlyphIndexWasSet = true;\n // lastGlyphIndex = glyph.index - 1;\n // }\n // firstGlyphIndex = glyph.index;\n // if ((lastGlyphIndex + 1 === glyph.index || (i + 1 === glyphInfo.length)) && glyphInfo.length > 1) {\n // // Add glyph index / width.\n // widthDetails.add(new PdfNumber(glyph.width));\n // array.add(new PdfNumber(firstGlyphIndex));\n // array.add(widthDetails);\n // widthDetails = new PdfArray();\n // }\n // lastGlyphIndex = glyph.index;\n // }\n // }\n }\n return array;\n }\n /**\n * Creates cmap.\n */\n generateCmap() {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n let glyphChars = this.ttfReader.getGlyphChars(this.usedChars);\n if (glyphChars.size() > 0) {\n let keys = glyphChars.keys().sort();\n // add first and last glyph indexes\n let first = keys[0];\n let last = keys[keys.length - 1];\n let middlePart = this.toHexString(first, false) + this.toHexString(last, false) + Operators.newLine;\n let builder = '';\n builder += this.cmapPrefix;\n builder += middlePart;\n builder += this.cmapEndCodespaceRange;\n let nextRange = 0;\n for (let i = 0; i < keys.length; i++) {\n if (nextRange === 0) {\n if (i !== 0) {\n builder += this.cmapEndRange;\n }\n nextRange = Math.min(100, keys.length - i);\n builder += nextRange;\n builder += Operators.whiteSpace;\n builder += this.cmapBeginRange;\n }\n nextRange -= 1;\n let key = keys[i];\n /* tslint:disable */\n builder += this.toHexString(key, true) + this.toHexString(key, true) + this.toHexString(glyphChars.getValue(key), true) + '\\n';\n /* tslint:enable */\n }\n builder += this.cmapSuffix;\n this.cmap.clearStream();\n this.cmap.isFont = true;\n this.cmap.write(builder);\n }\n }\n }\n /**\n * Generates font program.\n */\n generateFontProgram() {\n let fontProgram = null;\n this.usedChars = (this.usedChars === null || this.usedChars === undefined) ? new Dictionary() : this.usedChars;\n this.ttfReader.setOffset(0);\n fontProgram = this.ttfReader.readFontProgram(this.usedChars);\n this.fontProgram.clearStream();\n this.fontProgram.isFont = true;\n this.fontProgram.writeBytes(fontProgram);\n }\n /**\n * Calculates flags for the font descriptor.\n * @private\n */\n getDescriptorFlags() {\n let flags = 0;\n let metrics = this.ttfReader.metrics;\n if (metrics.isFixedPitch) {\n flags |= FontDescriptorFlags.FixedPitch;\n }\n if (metrics.isSymbol) {\n flags |= FontDescriptorFlags.Symbolic;\n }\n else {\n flags |= FontDescriptorFlags.Nonsymbolic;\n }\n if (metrics.isItalic) {\n flags |= FontDescriptorFlags.Italic;\n }\n if (metrics.isBold) {\n flags |= FontDescriptorFlags.ForceBold;\n }\n return flags;\n }\n /**\n * Calculates BoundBox of the descriptor.\n * @private\n */\n getBoundBox() {\n let rect = this.ttfReader.metrics.fontBox;\n let width = Math.abs(rect.right - rect.left);\n let height = Math.abs(rect.top - rect.bottom);\n let rectangle = new RectangleF(rect.left, rect.bottom, width, height);\n return rectangle;\n }\n /**\n * Converts integer of decimal system to hex integer.\n */\n toHexString(n, isCaseChange) {\n let s = n.toString(16);\n if (isCaseChange) {\n s = s.toUpperCase();\n }\n return '<0000'.substring(0, 5 - s.length) + s + '>';\n }\n /**\n * Stores used symbols.\n */\n setSymbols(text) {\n if (text === null) {\n throw new Error('Argument Null Exception : text');\n }\n if (this.usedChars === null || this.usedChars === undefined) {\n this.usedChars = new Dictionary();\n }\n for (let i = 0; i < text.length; i++) {\n let ch = text[i];\n this.usedChars.setValue(ch, String.fromCharCode(0));\n }\n // else {\n // if (text === null) {\n // throw new Error('Argument Null Exception : glyphs');\n // }\n // if (this.usedChars === null || this.usedChars === undefined) {\n // this.usedChars = new Dictionary();\n // }\n // for (let i : number = 0; i < text.length; i++) {\n // let glyphIndex : number = text[i];\n // let glyph : TtfGlyphInfo = this.ttfReader.getGlyph(glyphIndex);\n // if (!glyph == null) {\n // let c : string = glyph.charCode.toLocaleString();\n // this.usedChars.setValue(c, String.fromCharCode(0));\n // }\n // }\n // }\n if (this.isEmbedFont === false) {\n this.getDescendantWidth();\n }\n }\n}\n\n/**\n * ArabicShapeRenderer.ts class for EJ2-PDF\n */\nclass ArabicShapeRenderer {\n //#endregion\n //#region Constructor\n constructor() {\n //#region Constants\n this.arabicCharTable = [['\\u0621', '\\uFE80'], ['\\u0622', '\\uFE81', '\\uFE82'],\n ['\\u0623', '\\uFE83', '\\uFE84'],\n ['\\u0624', '\\uFE85', '\\uFE86'],\n ['\\u0625', '\\uFE87', '\\uFE88'],\n ['\\u0626', '\\uFE89', '\\uFE8A', '\\uFE8B', '\\uFE8C'],\n ['\\u0627', '\\uFE8D', '\\uFE8E'],\n ['\\u0628', '\\uFE8F', '\\uFE90', '\\uFE91', '\\uFE92'],\n ['\\u0629', '\\uFE93', '\\uFE94'],\n ['\\u062A', '\\uFE95', '\\uFE96', '\\uFE97', '\\uFE98'],\n ['\\u062B', '\\uFE99', '\\uFE9A', '\\uFE9B', '\\uFE9C'],\n ['\\u062C', '\\uFE9D', '\\uFE9E', '\\uFE9F', '\\uFEA0'],\n ['\\u062D', '\\uFEA1', '\\uFEA2', '\\uFEA3', '\\uFEA4'],\n ['\\u062E', '\\uFEA5', '\\uFEA6', '\\uFEA7', '\\uFEA8'],\n ['\\u062F', '\\uFEA9', '\\uFEAA'],\n ['\\u0630', '\\uFEAB', '\\uFEAC'],\n ['\\u0631', '\\uFEAD', '\\uFEAE'],\n ['\\u0632', '\\uFEAF', '\\uFEB0'],\n ['\\u0633', '\\uFEB1', '\\uFEB2', '\\uFEB3', '\\uFEB4'],\n ['\\u0634', '\\uFEB5', '\\uFEB6', '\\uFEB7', '\\uFEB8'],\n ['\\u0635', '\\uFEB9', '\\uFEBA', '\\uFEBB', '\\uFEBC'],\n ['\\u0636', '\\uFEBD', '\\uFEBE', '\\uFEBF', '\\uFEC0'],\n ['\\u0637', '\\uFEC1', '\\uFEC2', '\\uFEC3', '\\uFEC4'],\n ['\\u0638', '\\uFEC5', '\\uFEC6', '\\uFEC7', '\\uFEC8'],\n ['\\u0639', '\\uFEC9', '\\uFECA', '\\uFECB', '\\uFECC'],\n ['\\u063A', '\\uFECD', '\\uFECE', '\\uFECF', '\\uFED0'],\n ['\\u0640', '\\u0640', '\\u0640', '\\u0640', '\\u0640'],\n ['\\u0641', '\\uFED1', '\\uFED2', '\\uFED3', '\\uFED4'],\n ['\\u0642', '\\uFED5', '\\uFED6', '\\uFED7', '\\uFED8'],\n ['\\u0643', '\\uFED9', '\\uFEDA', '\\uFEDB', '\\uFEDC'],\n ['\\u0644', '\\uFEDD', '\\uFEDE', '\\uFEDF', '\\uFEE0'],\n ['\\u0645', '\\uFEE1', '\\uFEE2', '\\uFEE3', '\\uFEE4'],\n ['\\u0646', '\\uFEE5', '\\uFEE6', '\\uFEE7', '\\uFEE8'],\n ['\\u0647', '\\uFEE9', '\\uFEEA', '\\uFEEB', '\\uFEEC'],\n ['\\u0648', '\\uFEED', '\\uFEEE'],\n ['\\u0649', '\\uFEEF', '\\uFEF0', '\\uFBE8', '\\uFBE9'],\n ['\\u064A', '\\uFEF1', '\\uFEF2', '\\uFEF3', '\\uFEF4'],\n ['\\u0671', '\\uFB50', '\\uFB51'],\n ['\\u0679', '\\uFB66', '\\uFB67', '\\uFB68', '\\uFB69'],\n ['\\u067A', '\\uFB5E', '\\uFB5F', '\\uFB60', '\\uFB61'],\n ['\\u067B', '\\uFB52', '\\uFB53', '\\uFB54', '\\uFB55'],\n ['\\u067E', '\\uFB56', '\\uFB57', '\\uFB58', '\\uFB59'],\n ['\\u067F', '\\uFB62', '\\uFB63', '\\uFB64', '\\uFB65'],\n ['\\u0680', '\\uFB5A', '\\uFB5B', '\\uFB5C', '\\uFB5D'],\n ['\\u0683', '\\uFB76', '\\uFB77', '\\uFB78', '\\uFB79'],\n ['\\u0684', '\\uFB72', '\\uFB73', '\\uFB74', '\\uFB75'],\n ['\\u0686', '\\uFB7A', '\\uFB7B', '\\uFB7C', '\\uFB7D'],\n ['\\u0687', '\\uFB7E', '\\uFB7F', '\\uFB80', '\\uFB81'],\n ['\\u0688', '\\uFB88', '\\uFB89'],\n ['\\u068C', '\\uFB84', '\\uFB85'],\n ['\\u068D', '\\uFB82', '\\uFB83'],\n ['\\u068E', '\\uFB86', '\\uFB87'],\n ['\\u0691', '\\uFB8C', '\\uFB8D'],\n ['\\u0698', '\\uFB8A', '\\uFB8B'],\n ['\\u06A4', '\\uFB6A', '\\uFB6B', '\\uFB6C', '\\uFB6D'],\n ['\\u06A6', '\\uFB6E', '\\uFB6F', '\\uFB70', '\\uFB71'],\n ['\\u06A9', '\\uFB8E', '\\uFB8F', '\\uFB90', '\\uFB91'],\n ['\\u06AD', '\\uFBD3', '\\uFBD4', '\\uFBD5', '\\uFBD6'],\n ['\\u06AF', '\\uFB92', '\\uFB93', '\\uFB94', '\\uFB95'],\n ['\\u06B1', '\\uFB9A', '\\uFB9B', '\\uFB9C', '\\uFB9D'],\n ['\\u06B3', '\\uFB96', '\\uFB97', '\\uFB98', '\\uFB99'],\n ['\\u06BA', '\\uFB9E', '\\uFB9F'],\n ['\\u06BB', '\\uFBA0', '\\uFBA1', '\\uFBA2', '\\uFBA3'],\n ['\\u06BE', '\\uFBAA', '\\uFBAB', '\\uFBAC', '\\uFBAD'],\n ['\\u06C0', '\\uFBA4', '\\uFBA5'],\n ['\\u06C1', '\\uFBA6', '\\uFBA7', '\\uFBA8', '\\uFBA9'],\n ['\\u06C5', '\\uFBE0', '\\uFBE1'],\n ['\\u06C6', '\\uFBD9', '\\uFBDA'],\n ['\\u06C7', '\\uFBD7', '\\uFBD8'],\n ['\\u06C8', '\\uFBDB', '\\uFBDC'],\n ['\\u06C9', '\\uFBE2', '\\uFBE3'],\n ['\\u06CB', '\\uFBDE', '\\uFBDF'],\n ['\\u06CC', '\\uFBFC', '\\uFBFD', '\\uFBFE', '\\uFBFF'],\n ['\\u06D0', '\\uFBE4', '\\uFBE5', '\\uFBE6', '\\uFBE7'],\n ['\\u06D2', '\\uFBAE', '\\uFBAF'],\n ['\\u06D3', '\\uFBB0', '\\uFBB1']\n ];\n this.alef = '\\u0627';\n this.alefHamza = '\\u0623';\n this.alefHamzaBelow = '\\u0625';\n this.alefMadda = '\\u0622';\n this.lam = '\\u0644';\n this.hamza = '\\u0621';\n this.zeroWidthJoiner = '\\u200D';\n this.hamzaAbove = '\\u0654';\n this.hamzaBelow = '\\u0655';\n this.wawHamza = '\\u0624';\n this.yehHamza = '\\u0626';\n this.waw = '\\u0648';\n this.alefMaksura = '\\u0649';\n this.yeh = '\\u064A';\n this.farsiYeh = '\\u06CC';\n this.shadda = '\\u0651';\n this.madda = '\\u0653';\n this.lwa = '\\uFEFB';\n this.lwawh = '\\uFEF7';\n this.lwawhb = '\\uFEF9';\n this.lwawm = '\\uFEF5';\n this.bwhb = '\\u06D3';\n this.fathatan = '\\u064B';\n this.superScriptalef = '\\u0670';\n this.vowel = 0x1;\n // #endregion\n //#region Fields\n this.arabicMapTable = new Dictionary();\n for (let i = 0; i < this.arabicCharTable.length; i++) {\n this.arabicMapTable.setValue(this.arabicCharTable[i][0], this.arabicCharTable[i]);\n }\n }\n //#endregion\n //#region implementation\n getCharacterShape(input, index) {\n if ((input >= this.hamza) && (input <= this.bwhb)) {\n let value = [];\n if (this.arabicMapTable.getValue(input)) {\n value = this.arabicMapTable.getValue(input);\n return value[index + 1];\n }\n }\n else if (input >= this.lwawm && input <= this.lwa) {\n return (input);\n }\n return input;\n }\n shape(text, level) {\n let builder = '';\n let str2 = '';\n for (let i = 0; i < text.length; i++) {\n let c = text[i];\n if (c >= '؀' && c <= 'ۿ') {\n //if(c>= 0x0600.toString() && c<= 0x06FF.toString()) {\n str2 = str2 + c;\n }\n else {\n if (str2.length > 0) {\n let st = this.doShape(str2.toString(), 0);\n builder = builder + st;\n str2 = '';\n }\n builder = builder + c;\n }\n }\n if (str2.length > 0) {\n let st = this.doShape(str2.toString(), 0);\n builder = builder + st;\n }\n return builder.toString();\n }\n doShape(input, level) {\n let str = '';\n let ligature = 0;\n let len = 0;\n let i = 0;\n let next = '';\n let previous = new ArabicShape();\n let present = new ArabicShape();\n while (i < input.length) {\n next = input[i++];\n ligature = this.ligature(next, present);\n if (ligature === 0) {\n let shapeCount = this.getShapeCount(next);\n len = (shapeCount === 1) ? 0 : 2;\n if (previous.Shapes > 2) {\n len += 1;\n }\n len = len % (present.Shapes);\n present.Value = this.getCharacterShape(present.Value, len);\n str = this.append(str, previous, level);\n previous = present;\n present = new ArabicShape();\n present.Value = next;\n present.Shapes = shapeCount;\n present.Ligature++;\n }\n }\n len = (previous.Shapes > 2) ? 1 : 0;\n len = len % (present.Shapes);\n present.Value = this.getCharacterShape(present.Value, len);\n str = this.append(str, previous, level);\n str = this.append(str, present, level);\n return str.toString();\n }\n append(builder, shape, level) {\n if (shape.Value !== '') {\n builder = builder + shape.Value;\n shape.Ligature -= 1;\n if (shape.Type !== '') {\n if ((level & this.vowel) === 0) {\n builder = builder + shape.Type;\n shape.Ligature -= 1;\n }\n else {\n shape.Ligature -= 1;\n }\n }\n if (shape.vowel !== '') {\n if ((level & this.vowel) === 0) {\n builder = builder + shape.vowel;\n shape.Ligature -= 1;\n }\n else {\n shape.Ligature -= 1;\n }\n }\n }\n return builder;\n }\n ligature(value, shape) {\n if (shape.Value !== '') {\n let result = 0;\n if ((value >= this.fathatan && value <= this.hamzaBelow) || value === this.superScriptalef) {\n result = 1;\n if ((shape.vowel !== '') && (value !== this.shadda)) {\n result = 2;\n }\n if (value === this.shadda) {\n if (shape.Type == null) {\n shape.Type = this.shadda;\n }\n else {\n return 0;\n }\n }\n else if (value === this.hamzaBelow) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefHamzaBelow;\n result = 2;\n }\n else if (value === this.lwa) {\n shape.Value = this.lwawhb;\n result = 2;\n }\n else {\n shape.Type = this.hamzaBelow;\n }\n }\n else if (value === this.hamzaAbove) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefHamza;\n result = 2;\n }\n else if (shape.Value === this.lwa) {\n shape.Value = this.lwawh;\n result = 2;\n }\n else if (shape.Value === this.waw) {\n shape.Value = this.wawHamza;\n result = 2;\n }\n else if (shape.Value === this.yeh || shape.Value === this.alefMaksura || shape.Value === this.farsiYeh) {\n shape.Value = this.yehHamza;\n result = 2;\n }\n else {\n shape.Type = this.hamzaAbove;\n }\n }\n else if (value === this.madda) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefMadda;\n result = 2;\n }\n }\n else {\n shape.vowel = value;\n }\n if (result === 1) {\n shape.Ligature++;\n }\n return result;\n }\n if (shape.vowel !== '') {\n return 0;\n }\n if (shape.Value === this.lam) {\n if (value === this.alef) {\n shape.Value = this.lwa;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefHamza) {\n shape.Value = this.lwawh;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefHamzaBelow) {\n shape.Value = this.lwawhb;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefMadda) {\n shape.Value = this.lwawm;\n shape.Shapes = 2;\n result = 3;\n }\n }\n // else if (shape.Value === '') {\n // shape.Value = value;\n // shape.Shapes = this.getShapeCount(value);\n // result = 1;\n // }\n return result;\n }\n else {\n return 0;\n }\n }\n getShapeCount(shape) {\n if ((shape >= this.hamza) && (shape <= this.bwhb) && !((shape >= this.fathatan && shape <= this.hamzaBelow)\n || shape === this.superScriptalef)) {\n let c = [];\n if (this.arabicMapTable.getValue(shape)) {\n c = this.arabicMapTable.getValue(shape);\n return c.length - 1;\n }\n }\n else if (shape === this.zeroWidthJoiner) {\n return 4;\n }\n return 1;\n }\n}\n//#endregion\n//#region Internals\nclass ArabicShape {\n constructor() {\n //#region Fields\n this.shapeValue = '';\n this.shapeType = '';\n this.shapeVowel = '';\n this.shapeLigature = 0;\n this.shapeShapes = 1;\n //#endregion\n }\n //#endregion\n //#region Properties \n /**\n * Gets or sets the values.\n * @private\n */\n get Value() {\n return this.shapeValue;\n }\n set Value(value) {\n this.shapeValue = value;\n }\n /**\n * Gets or sets the values.\n * @private\n */\n get Type() {\n return this.shapeType;\n }\n set Type(value) {\n this.shapeType = value;\n }\n /**\n * Gets or sets the values.\n * @private\n */\n get vowel() {\n return this.shapeVowel;\n }\n set vowel(value) {\n this.shapeVowel = value;\n }\n /**\n * Gets or sets the values.\n * @private\n */\n get Ligature() {\n return this.shapeLigature;\n }\n set Ligature(value) {\n this.shapeLigature = value;\n }\n /**\n * Gets or sets the values.\n * @private\n */\n get Shapes() {\n return this.shapeShapes;\n }\n set Shapes(value) {\n this.shapeShapes = value;\n }\n}\n//#endregion\n\n/**\n * Bidi.ts class for EJ2-PDF\n */\n/**\n * `Metrics` of the font.\n * @private\n */\nclass Bidi {\n //#endregion\n //#region Constructor\n constructor() {\n //#region Fields\n this.indexes = [];\n this.indexLevels = [];\n this.mirroringShapeCharacters = new Dictionary();\n this.update();\n }\n //#endregion\n //#region implementation\n doMirrorShaping(text) {\n let result = [];\n for (let i = 0; i < text.length; i++) {\n if (((this.indexLevels[i] & 1) === 1) && this.mirroringShapeCharacters.containsKey(text[i].charCodeAt(0))) {\n result[i] = String.fromCharCode(this.mirroringShapeCharacters.getValue(text[i].charCodeAt(0)));\n }\n else {\n result[i] = text[i].toString();\n }\n }\n let res = '';\n for (let j = 0; j < result.length; j++) {\n res = res + result[j];\n }\n return res;\n }\n getLogicalToVisualString(inputText, isRtl) {\n let rtlCharacters = new RtlCharacters();\n this.indexLevels = rtlCharacters.getVisualOrder(inputText, isRtl);\n this.setDefaultIndexLevel();\n this.doOrder(0, this.indexLevels.length - 1);\n let text = this.doMirrorShaping(inputText);\n //let text : string = inputText;\n let resultBuilder = '';\n for (let i = 0; i < this.indexes.length; i++) {\n let index = this.indexes[i];\n resultBuilder += text[index];\n }\n return resultBuilder.toString();\n }\n setDefaultIndexLevel() {\n for (let i = 0; i < this.indexLevels.length; i++) {\n this.indexes[i] = i;\n }\n }\n doOrder(sIndex, eIndex) {\n let max = this.indexLevels[sIndex];\n let min = max;\n let odd = max;\n let even = max;\n for (let i = sIndex + 1; i <= eIndex; ++i) {\n let data = this.indexLevels[i];\n if (data > max) {\n max = data;\n }\n else if (data < min) {\n min = data;\n }\n odd &= data;\n even |= data;\n }\n if ((even & 1) === 0) {\n return;\n }\n if ((odd & 1) === 1) {\n this.reArrange(sIndex, eIndex + 1);\n return;\n }\n min |= 1;\n while (max >= min) {\n let pstart = sIndex;\n /*tslint:disable:no-constant-condition */\n while (true) {\n while (pstart <= eIndex) {\n if (this.indexLevels[pstart] >= max) {\n break;\n }\n pstart += 1;\n }\n if (pstart > eIndex) {\n break;\n }\n let pend = pstart + 1;\n while (pend <= eIndex) {\n if (this.indexLevels[pend] < max) {\n break;\n }\n pend += 1;\n }\n this.reArrange(pstart, pend);\n pstart = pend + 1;\n }\n max -= 1;\n }\n }\n reArrange(i, j) {\n let length = (i + j) / 2;\n --j;\n for (; i < length; ++i, --j) {\n let temp = this.indexes[i];\n this.indexes[i] = this.indexes[j];\n this.indexes[j] = temp;\n }\n }\n update() {\n this.mirroringShapeCharacters.setValue(40, 41);\n this.mirroringShapeCharacters.setValue(41, 40);\n this.mirroringShapeCharacters.setValue(60, 62);\n this.mirroringShapeCharacters.setValue(62, 60);\n this.mirroringShapeCharacters.setValue(91, 93);\n this.mirroringShapeCharacters.setValue(93, 91);\n this.mirroringShapeCharacters.setValue(123, 125);\n this.mirroringShapeCharacters.setValue(125, 123);\n this.mirroringShapeCharacters.setValue(171, 187);\n this.mirroringShapeCharacters.setValue(187, 171);\n this.mirroringShapeCharacters.setValue(8249, 8250);\n this.mirroringShapeCharacters.setValue(8250, 8249);\n this.mirroringShapeCharacters.setValue(8261, 8262);\n this.mirroringShapeCharacters.setValue(8262, 8261);\n this.mirroringShapeCharacters.setValue(8317, 8318);\n this.mirroringShapeCharacters.setValue(8318, 8317);\n this.mirroringShapeCharacters.setValue(8333, 8334);\n this.mirroringShapeCharacters.setValue(8334, 8333);\n this.mirroringShapeCharacters.setValue(8712, 8715);\n this.mirroringShapeCharacters.setValue(8713, 8716);\n this.mirroringShapeCharacters.setValue(8714, 8717);\n this.mirroringShapeCharacters.setValue(8715, 8712);\n this.mirroringShapeCharacters.setValue(8716, 8713);\n this.mirroringShapeCharacters.setValue(8717, 8714);\n this.mirroringShapeCharacters.setValue(8725, 10741);\n this.mirroringShapeCharacters.setValue(8764, 8765);\n this.mirroringShapeCharacters.setValue(8765, 8764);\n this.mirroringShapeCharacters.setValue(8771, 8909);\n this.mirroringShapeCharacters.setValue(8786, 8787);\n this.mirroringShapeCharacters.setValue(8787, 8786);\n this.mirroringShapeCharacters.setValue(8788, 8789);\n this.mirroringShapeCharacters.setValue(8789, 8788);\n this.mirroringShapeCharacters.setValue(8804, 8805);\n this.mirroringShapeCharacters.setValue(8805, 8804);\n this.mirroringShapeCharacters.setValue(8806, 8807);\n this.mirroringShapeCharacters.setValue(8807, 8806);\n this.mirroringShapeCharacters.setValue(8808, 8809);\n this.mirroringShapeCharacters.setValue(8809, 8808);\n this.mirroringShapeCharacters.setValue(8810, 8811);\n this.mirroringShapeCharacters.setValue(8811, 8810);\n this.mirroringShapeCharacters.setValue(8814, 8815);\n this.mirroringShapeCharacters.setValue(8815, 8814);\n this.mirroringShapeCharacters.setValue(8816, 8817);\n this.mirroringShapeCharacters.setValue(8817, 8816);\n this.mirroringShapeCharacters.setValue(8818, 8819);\n this.mirroringShapeCharacters.setValue(8819, 8818);\n this.mirroringShapeCharacters.setValue(8820, 8821);\n this.mirroringShapeCharacters.setValue(8821, 8820);\n this.mirroringShapeCharacters.setValue(8822, 8823);\n this.mirroringShapeCharacters.setValue(8823, 8822);\n this.mirroringShapeCharacters.setValue(8824, 8825);\n this.mirroringShapeCharacters.setValue(8825, 8824);\n this.mirroringShapeCharacters.setValue(8826, 8827);\n this.mirroringShapeCharacters.setValue(8827, 8826);\n this.mirroringShapeCharacters.setValue(8828, 8829);\n this.mirroringShapeCharacters.setValue(8829, 8828);\n this.mirroringShapeCharacters.setValue(8830, 8831);\n this.mirroringShapeCharacters.setValue(8831, 8830);\n this.mirroringShapeCharacters.setValue(8832, 8833);\n this.mirroringShapeCharacters.setValue(8833, 8832);\n this.mirroringShapeCharacters.setValue(8834, 8835);\n this.mirroringShapeCharacters.setValue(8835, 8834);\n this.mirroringShapeCharacters.setValue(8836, 8837);\n this.mirroringShapeCharacters.setValue(8837, 8836);\n this.mirroringShapeCharacters.setValue(8838, 8839);\n this.mirroringShapeCharacters.setValue(8839, 8838);\n this.mirroringShapeCharacters.setValue(8840, 8841);\n this.mirroringShapeCharacters.setValue(8841, 8840);\n this.mirroringShapeCharacters.setValue(8842, 8843);\n this.mirroringShapeCharacters.setValue(8843, 8842);\n this.mirroringShapeCharacters.setValue(8847, 8848);\n this.mirroringShapeCharacters.setValue(8848, 8847);\n this.mirroringShapeCharacters.setValue(8849, 8850);\n this.mirroringShapeCharacters.setValue(8850, 8849);\n this.mirroringShapeCharacters.setValue(8856, 10680);\n this.mirroringShapeCharacters.setValue(8866, 8867);\n this.mirroringShapeCharacters.setValue(8867, 8866);\n this.mirroringShapeCharacters.setValue(8870, 10974);\n this.mirroringShapeCharacters.setValue(8872, 10980);\n this.mirroringShapeCharacters.setValue(8873, 10979);\n this.mirroringShapeCharacters.setValue(8875, 10981);\n this.mirroringShapeCharacters.setValue(8880, 8881);\n this.mirroringShapeCharacters.setValue(8881, 8880);\n this.mirroringShapeCharacters.setValue(8882, 8883);\n this.mirroringShapeCharacters.setValue(8883, 8882);\n this.mirroringShapeCharacters.setValue(8884, 8885);\n this.mirroringShapeCharacters.setValue(8885, 8884);\n /*tslint:disable:max-func-body-length */\n this.mirroringShapeCharacters.setValue(8886, 8887);\n this.mirroringShapeCharacters.setValue(8887, 8886);\n this.mirroringShapeCharacters.setValue(8905, 8906);\n this.mirroringShapeCharacters.setValue(8906, 8905);\n this.mirroringShapeCharacters.setValue(8907, 8908);\n this.mirroringShapeCharacters.setValue(8908, 8907);\n this.mirroringShapeCharacters.setValue(8909, 8771);\n this.mirroringShapeCharacters.setValue(8912, 8913);\n this.mirroringShapeCharacters.setValue(8913, 8912);\n this.mirroringShapeCharacters.setValue(8918, 8919);\n this.mirroringShapeCharacters.setValue(8919, 8918);\n this.mirroringShapeCharacters.setValue(8920, 8921);\n this.mirroringShapeCharacters.setValue(8921, 8920);\n this.mirroringShapeCharacters.setValue(8922, 8923);\n this.mirroringShapeCharacters.setValue(8923, 8922);\n this.mirroringShapeCharacters.setValue(8924, 8925);\n this.mirroringShapeCharacters.setValue(8925, 8924);\n this.mirroringShapeCharacters.setValue(8926, 8927);\n this.mirroringShapeCharacters.setValue(8927, 8926);\n this.mirroringShapeCharacters.setValue(8928, 8929);\n this.mirroringShapeCharacters.setValue(8929, 8928);\n this.mirroringShapeCharacters.setValue(8930, 8931);\n this.mirroringShapeCharacters.setValue(8931, 8930);\n this.mirroringShapeCharacters.setValue(8932, 8933);\n this.mirroringShapeCharacters.setValue(8933, 8932);\n this.mirroringShapeCharacters.setValue(8934, 8935);\n this.mirroringShapeCharacters.setValue(8935, 8934);\n this.mirroringShapeCharacters.setValue(8936, 8937);\n this.mirroringShapeCharacters.setValue(8937, 8936);\n this.mirroringShapeCharacters.setValue(8938, 8939);\n this.mirroringShapeCharacters.setValue(8939, 8938);\n this.mirroringShapeCharacters.setValue(8940, 8941);\n this.mirroringShapeCharacters.setValue(8941, 8940);\n this.mirroringShapeCharacters.setValue(8944, 8945);\n this.mirroringShapeCharacters.setValue(8945, 8944);\n this.mirroringShapeCharacters.setValue(8946, 8954);\n this.mirroringShapeCharacters.setValue(8947, 8955);\n this.mirroringShapeCharacters.setValue(8948, 8956);\n this.mirroringShapeCharacters.setValue(8950, 8957);\n this.mirroringShapeCharacters.setValue(8951, 8958);\n this.mirroringShapeCharacters.setValue(8954, 8946);\n this.mirroringShapeCharacters.setValue(8955, 8947);\n this.mirroringShapeCharacters.setValue(8956, 8948);\n this.mirroringShapeCharacters.setValue(8957, 8950);\n this.mirroringShapeCharacters.setValue(8958, 8951);\n this.mirroringShapeCharacters.setValue(8968, 8969);\n this.mirroringShapeCharacters.setValue(8969, 8968);\n this.mirroringShapeCharacters.setValue(8970, 8971);\n this.mirroringShapeCharacters.setValue(8971, 8970);\n this.mirroringShapeCharacters.setValue(9001, 9002);\n this.mirroringShapeCharacters.setValue(9002, 9001);\n this.mirroringShapeCharacters.setValue(10088, 10089);\n this.mirroringShapeCharacters.setValue(10089, 10088);\n this.mirroringShapeCharacters.setValue(10090, 10091);\n this.mirroringShapeCharacters.setValue(10091, 10090);\n this.mirroringShapeCharacters.setValue(10092, 10093);\n this.mirroringShapeCharacters.setValue(10093, 10092);\n this.mirroringShapeCharacters.setValue(10094, 10095);\n this.mirroringShapeCharacters.setValue(10095, 10094);\n this.mirroringShapeCharacters.setValue(10096, 10097);\n this.mirroringShapeCharacters.setValue(10097, 10096);\n this.mirroringShapeCharacters.setValue(10098, 10099);\n this.mirroringShapeCharacters.setValue(10099, 10098);\n this.mirroringShapeCharacters.setValue(10100, 10101);\n this.mirroringShapeCharacters.setValue(10101, 10100);\n this.mirroringShapeCharacters.setValue(10197, 10198);\n this.mirroringShapeCharacters.setValue(10198, 10197);\n this.mirroringShapeCharacters.setValue(10205, 10206);\n this.mirroringShapeCharacters.setValue(10206, 10205);\n this.mirroringShapeCharacters.setValue(10210, 10211);\n this.mirroringShapeCharacters.setValue(10211, 10210);\n this.mirroringShapeCharacters.setValue(10212, 10213);\n this.mirroringShapeCharacters.setValue(10213, 10212);\n this.mirroringShapeCharacters.setValue(10214, 10215);\n this.mirroringShapeCharacters.setValue(10215, 10214);\n this.mirroringShapeCharacters.setValue(10216, 10217);\n this.mirroringShapeCharacters.setValue(10217, 10216);\n this.mirroringShapeCharacters.setValue(10218, 10219);\n this.mirroringShapeCharacters.setValue(10219, 10218);\n this.mirroringShapeCharacters.setValue(10627, 10628);\n this.mirroringShapeCharacters.setValue(10628, 10627);\n this.mirroringShapeCharacters.setValue(10629, 10630);\n this.mirroringShapeCharacters.setValue(10630, 10629);\n this.mirroringShapeCharacters.setValue(10631, 10632);\n this.mirroringShapeCharacters.setValue(10632, 10631);\n this.mirroringShapeCharacters.setValue(10633, 10634);\n this.mirroringShapeCharacters.setValue(10634, 10633);\n this.mirroringShapeCharacters.setValue(10635, 10636);\n this.mirroringShapeCharacters.setValue(10636, 10635);\n this.mirroringShapeCharacters.setValue(10637, 10640);\n this.mirroringShapeCharacters.setValue(10638, 10639);\n this.mirroringShapeCharacters.setValue(10639, 10638);\n this.mirroringShapeCharacters.setValue(10640, 10637);\n this.mirroringShapeCharacters.setValue(10641, 10642);\n this.mirroringShapeCharacters.setValue(10642, 10641);\n this.mirroringShapeCharacters.setValue(10643, 10644);\n this.mirroringShapeCharacters.setValue(10644, 10643);\n this.mirroringShapeCharacters.setValue(10645, 10646);\n this.mirroringShapeCharacters.setValue(10646, 10645);\n this.mirroringShapeCharacters.setValue(10647, 10648);\n this.mirroringShapeCharacters.setValue(10648, 10647);\n this.mirroringShapeCharacters.setValue(10680, 8856);\n this.mirroringShapeCharacters.setValue(10688, 10689);\n this.mirroringShapeCharacters.setValue(10689, 10688);\n this.mirroringShapeCharacters.setValue(10692, 10693);\n this.mirroringShapeCharacters.setValue(10693, 10692);\n this.mirroringShapeCharacters.setValue(10703, 10704);\n this.mirroringShapeCharacters.setValue(10704, 10703);\n this.mirroringShapeCharacters.setValue(10705, 10706);\n this.mirroringShapeCharacters.setValue(10706, 10705);\n this.mirroringShapeCharacters.setValue(10708, 10709);\n this.mirroringShapeCharacters.setValue(10709, 10708);\n this.mirroringShapeCharacters.setValue(10712, 10713);\n this.mirroringShapeCharacters.setValue(10713, 10712);\n this.mirroringShapeCharacters.setValue(10714, 10715);\n this.mirroringShapeCharacters.setValue(10715, 10714);\n this.mirroringShapeCharacters.setValue(10741, 8725);\n this.mirroringShapeCharacters.setValue(10744, 10745);\n this.mirroringShapeCharacters.setValue(10745, 10744);\n this.mirroringShapeCharacters.setValue(10748, 10749);\n this.mirroringShapeCharacters.setValue(10749, 10748);\n this.mirroringShapeCharacters.setValue(10795, 10796);\n this.mirroringShapeCharacters.setValue(10796, 10795);\n this.mirroringShapeCharacters.setValue(10797, 10796);\n this.mirroringShapeCharacters.setValue(10798, 10797);\n this.mirroringShapeCharacters.setValue(10804, 10805);\n this.mirroringShapeCharacters.setValue(10805, 10804);\n this.mirroringShapeCharacters.setValue(10812, 10813);\n this.mirroringShapeCharacters.setValue(10813, 10812);\n this.mirroringShapeCharacters.setValue(10852, 10853);\n this.mirroringShapeCharacters.setValue(10853, 10852);\n this.mirroringShapeCharacters.setValue(10873, 10874);\n this.mirroringShapeCharacters.setValue(10874, 10873);\n this.mirroringShapeCharacters.setValue(10877, 10878);\n this.mirroringShapeCharacters.setValue(10878, 10877);\n this.mirroringShapeCharacters.setValue(10879, 10880);\n this.mirroringShapeCharacters.setValue(10880, 10879);\n this.mirroringShapeCharacters.setValue(10881, 10882);\n this.mirroringShapeCharacters.setValue(10882, 10881);\n this.mirroringShapeCharacters.setValue(10883, 10884);\n this.mirroringShapeCharacters.setValue(10884, 10883);\n this.mirroringShapeCharacters.setValue(10891, 10892);\n this.mirroringShapeCharacters.setValue(10892, 10891);\n this.mirroringShapeCharacters.setValue(10897, 10898);\n this.mirroringShapeCharacters.setValue(10898, 10897);\n this.mirroringShapeCharacters.setValue(10899, 10900);\n this.mirroringShapeCharacters.setValue(10900, 10899);\n this.mirroringShapeCharacters.setValue(10901, 10902);\n this.mirroringShapeCharacters.setValue(10902, 10901);\n this.mirroringShapeCharacters.setValue(10903, 10904);\n this.mirroringShapeCharacters.setValue(10904, 10903);\n this.mirroringShapeCharacters.setValue(10905, 10906);\n this.mirroringShapeCharacters.setValue(10906, 10905);\n this.mirroringShapeCharacters.setValue(10907, 10908);\n this.mirroringShapeCharacters.setValue(10908, 10907);\n this.mirroringShapeCharacters.setValue(10913, 10914);\n this.mirroringShapeCharacters.setValue(10914, 10913);\n this.mirroringShapeCharacters.setValue(10918, 10919);\n this.mirroringShapeCharacters.setValue(10919, 10918);\n this.mirroringShapeCharacters.setValue(10920, 10921);\n this.mirroringShapeCharacters.setValue(10921, 10920);\n this.mirroringShapeCharacters.setValue(10922, 10923);\n this.mirroringShapeCharacters.setValue(10923, 10922);\n this.mirroringShapeCharacters.setValue(10924, 10925);\n this.mirroringShapeCharacters.setValue(10925, 10924);\n this.mirroringShapeCharacters.setValue(10927, 10928);\n this.mirroringShapeCharacters.setValue(10928, 10927);\n this.mirroringShapeCharacters.setValue(10931, 10932);\n this.mirroringShapeCharacters.setValue(10932, 10931);\n this.mirroringShapeCharacters.setValue(10939, 10940);\n this.mirroringShapeCharacters.setValue(10940, 10939);\n this.mirroringShapeCharacters.setValue(10941, 10942);\n this.mirroringShapeCharacters.setValue(10942, 10941);\n this.mirroringShapeCharacters.setValue(10943, 10944);\n this.mirroringShapeCharacters.setValue(10944, 10943);\n this.mirroringShapeCharacters.setValue(10945, 10946);\n this.mirroringShapeCharacters.setValue(10946, 10945);\n this.mirroringShapeCharacters.setValue(10947, 10948);\n this.mirroringShapeCharacters.setValue(10948, 10947);\n this.mirroringShapeCharacters.setValue(10949, 10950);\n this.mirroringShapeCharacters.setValue(10950, 10949);\n this.mirroringShapeCharacters.setValue(10957, 10958);\n this.mirroringShapeCharacters.setValue(10958, 10957);\n this.mirroringShapeCharacters.setValue(10959, 10960);\n this.mirroringShapeCharacters.setValue(10960, 10959);\n this.mirroringShapeCharacters.setValue(10961, 10962);\n this.mirroringShapeCharacters.setValue(10962, 10961);\n this.mirroringShapeCharacters.setValue(10963, 10964);\n this.mirroringShapeCharacters.setValue(10964, 10963);\n this.mirroringShapeCharacters.setValue(10965, 10966);\n this.mirroringShapeCharacters.setValue(10966, 10965);\n this.mirroringShapeCharacters.setValue(10974, 8870);\n this.mirroringShapeCharacters.setValue(10979, 8873);\n this.mirroringShapeCharacters.setValue(10980, 8872);\n this.mirroringShapeCharacters.setValue(10981, 8875);\n this.mirroringShapeCharacters.setValue(10988, 10989);\n this.mirroringShapeCharacters.setValue(10989, 10988);\n this.mirroringShapeCharacters.setValue(10999, 11000);\n this.mirroringShapeCharacters.setValue(11000, 10999);\n this.mirroringShapeCharacters.setValue(11001, 11002);\n this.mirroringShapeCharacters.setValue(11002, 11001);\n this.mirroringShapeCharacters.setValue(12296, 12297);\n this.mirroringShapeCharacters.setValue(12297, 12296);\n this.mirroringShapeCharacters.setValue(12298, 12299);\n this.mirroringShapeCharacters.setValue(12299, 12298);\n this.mirroringShapeCharacters.setValue(12300, 12301);\n this.mirroringShapeCharacters.setValue(12301, 12300);\n this.mirroringShapeCharacters.setValue(12302, 12303);\n this.mirroringShapeCharacters.setValue(12303, 12302);\n this.mirroringShapeCharacters.setValue(12304, 12305);\n this.mirroringShapeCharacters.setValue(12305, 12304);\n this.mirroringShapeCharacters.setValue(12308, 12309);\n this.mirroringShapeCharacters.setValue(12309, 12308);\n this.mirroringShapeCharacters.setValue(12310, 12311);\n this.mirroringShapeCharacters.setValue(12311, 12310);\n this.mirroringShapeCharacters.setValue(12312, 12313);\n this.mirroringShapeCharacters.setValue(12313, 12312);\n this.mirroringShapeCharacters.setValue(12314, 12315);\n this.mirroringShapeCharacters.setValue(12315, 12314);\n this.mirroringShapeCharacters.setValue(65288, 65289);\n this.mirroringShapeCharacters.setValue(65289, 65288);\n this.mirroringShapeCharacters.setValue(65308, 65310);\n this.mirroringShapeCharacters.setValue(65310, 65308);\n this.mirroringShapeCharacters.setValue(65339, 65341);\n this.mirroringShapeCharacters.setValue(65341, 65339);\n this.mirroringShapeCharacters.setValue(65371, 65373);\n this.mirroringShapeCharacters.setValue(65373, 65371);\n this.mirroringShapeCharacters.setValue(65375, 65376);\n this.mirroringShapeCharacters.setValue(65376, 65375);\n this.mirroringShapeCharacters.setValue(65378, 65379);\n this.mirroringShapeCharacters.setValue(65379, 65378);\n }\n}\nclass RtlCharacters {\n //#endregion\n //#region constructors\n constructor() {\n //#region fields\n /// \n /// Specifies the character types.\n /// \n this.types = [];\n /// \n /// Specifies the text order (RTL or LTR).\n /// \n this.textOrder = -1;\n /// \n /// Specifies the RTL character types.\n /// \n /* tslint:disable-next-line:prefer-array-literal */\n this.rtlCharacterTypes = new Array(65536);\n //#endregion\n //#region constants\n /// \n /// Left-to-Right (Non-European or non-Arabic digits).\n /// \n this.L = 0;\n /// \n /// Left-to-Right Embedding\n /// \n this.LRE = 1;\n /// \n /// Left-to-Right Override\n /// \n this.LRO = 2;\n /// \n /// Right-to-Left (Hebrew alphabet, and related punctuation).\n /// \n this.R = 3;\n /// \n /// Right-to-Left Arabic \n /// \n this.AL = 4;\n /// \n /// Right-to-Left Embedding.\n /// \n this.RLE = 5;\n /// \n /// Right-to-Left Override\n /// \n this.RLO = 6;\n /// \n /// Pop Directional Format\n /// \n this.PDF = 7;\n /// \n /// European Number (European digits, Eastern Arabic-Indic digits).\n /// \n this.EN = 8;\n /// \n /// European Number Separator (Plus sign, Minus sign).\n /// \n this.ES = 9;\n /// \n /// European Number Terminator (Degree sign, currency symbols).\n /// \n this.ET = 10;\n /// \n /// Arabic Number (Arabic-Indic digits, Arabic decimal and thousands separators).\n /// \n this.AN = 11;\n /// \n /// Common Number Separator (Colon, Comma, Full Stop, No-Break Space.\n /// \n this.CS = 12;\n /// \n /// Nonspacing Mark (Characters with the General_Category values).\n /// \n this.NSM = 13;\n /// \n /// Boundary Neutral (Default ignorables, non-characters, and control characters, other than those explicitly given other types.)\n /// \n this.BN = 14;\n /// \n /// Paragraph Separator (Paragraph separator, appropriate Newline Functions, higher-level protocol paragraph determination).\n /// \n this.B = 15;\n /// \n /// \tSegment Separator (tab).\n /// \n this.S = 16;\n /// \n /// Whitespace (Space, Figure space, Line separator, Form feed, General Punctuation spaces).\n /// \n this.WS = 17;\n /// \n /// Other Neutrals (All other characters, including object replacement character).\n /// \n this.ON = 18;\n /// \n /// RTL character types.\n /// \n this.charTypes = [\n this.L, this.EN, this.BN, this.ES, this.ES, this.S, this.ET, this.ET, this.B, this.AN, this.AN, this.S, this.CS, this.CS,\n this.WS, this.NSM, this.NSM, this.B, this.BN, 27, this.BN, 28, 30, this.B, 31, 31, this.S, 32, 32, this.WS, 33, 34,\n this.ON, 35, 37, this.ET, 38, 42, this.ON, 43, 43, this.ET, 44, 44, this.CS, 45, 45, this.ET, 46, 46, this.CS,\n 47, 47, this.CS, 48, 57, this.EN, 58, 58, this.CS, 59, 64, this.ON, 65, 90, this.L, 91, 96, this.ON, 97, 122, this.L,\n 123, 126, this.ON, 127, 132, this.BN, 133, 133, this.B, 134, 159, this.BN, 160, 160, this.CS,\n 161, 161, this.ON, 162, 165, this.ET, 166, 169, this.ON, 170, 170, this.L, 171, 175, this.ON,\n 176, 177, this.ET, 178, 179, this.EN, 180, 180, this.ON, 181, 181, this.L, 182, 184, this.ON,\n 185, 185, this.EN, 186, 186, this.L, 187, 191, this.ON, 192, 214, this.L, 215, 215, this.ON,\n 216, 246, this.L, 247, 247, this.ON, 248, 696, this.L, 697, 698, this.ON, 699, 705, this.L,\n 706, 719, this.ON, 720, 721, this.L, 722, 735, this.ON, 736, 740, this.L, 741, 749, this.ON,\n 750, 750, this.L, 751, 767, this.ON, 768, 855, this.NSM, 856, 860, this.L, 861, 879, this.NSM,\n 880, 883, this.L, 884, 885, this.ON, 886, 893, this.L, 894, 894, this.ON, 895, 899, this.L,\n 900, 901, this.ON, 902, 902, this.L, 903, 903, this.ON, 904, 1013, this.L, 1014, 1014, this.ON,\n 1015, 1154, this.L, 1155, 1158, this.NSM, 1159, 1159, this.L, 1160, 1161, this.NSM,\n 1162, 1417, this.L, 1418, 1418, this.ON, 1419, 1424, this.L, 1425, 1441, this.NSM,\n 1442, 1442, this.L, 1443, 1465, this.NSM, 1466, 1466, this.L, 1467, 1469, this.NSM,\n 1470, 1470, this.R, 1471, 1471, this.NSM, 1472, 1472, this.R, 1473, 1474, this.NSM,\n 1475, 1475, this.R, 1476, 1476, this.NSM, 1477, 1487, this.L, 1488, 1514, this.R,\n 1515, 1519, this.L, 1520, 1524, this.R, 1525, 1535, this.L, 1536, 1539, this.AL,\n 1540, 1547, this.L, 1548, 1548, this.CS, 1549, 1549, this.AL, 1550, 1551, this.ON,\n 1552, 1557, this.NSM, 1558, 1562, this.L, 1563, 1563, this.AL, 1564, 1566, this.L,\n 1567, 1567, this.AL, 1568, 1568, this.L, 1569, 1594, this.AL, 1595, 1599, this.L,\n 1600, 1610, this.AL, 1611, 1624, this.NSM, 1625, 1631, this.L, 1632, 1641, this.AN,\n 1642, 1642, this.ET, 1643, 1644, this.AN, 1645, 1647, this.AL, 1648, 1648, this.NSM,\n 1649, 1749, this.AL, 1750, 1756, this.NSM, 1757, 1757, this.AL, 1758, 1764, this.NSM,\n 1765, 1766, this.AL, 1767, 1768, this.NSM, 1769, 1769, this.ON, 1770, 1773, this.NSM,\n 1774, 1775, this.AL, 1776, 1785, this.EN, 1786, 1805, this.AL, 1806, 1806, this.L,\n 1807, 1807, this.BN, 1808, 1808, this.AL, 1809, 1809, this.NSM, 1810, 1839, this.AL,\n 1840, 1866, this.NSM, 1867, 1868, this.L, 1869, 1871, this.AL, 1872, 1919, this.L,\n 1920, 1957, this.AL, 1958, 1968, this.NSM, 1969, 1969, this.AL, 1970, 2304, this.L,\n 2305, 2306, this.NSM, 2307, 2363, this.L, 2364, 2364, this.NSM, 2365, 2368, this.L,\n 2369, 2376, this.NSM, 2377, 2380, this.L, 2381, 2381, this.NSM, 2382, 2384, this.L,\n 2385, 2388, this.NSM, 2389, 2401, this.L, 2402, 2403, this.NSM, 2404, 2432, this.L,\n 2433, 2433, this.NSM, 2434, 2491, this.L, 2492, 2492, this.NSM, 2493, 2496, this.L,\n 2497, 2500, this.NSM, 2501, 2508, this.L, 2509, 2509, this.NSM, 2510, 2529, this.L,\n 2530, 2531, this.NSM, 2532, 2545, this.L, 2546, 2547, this.ET, 2548, 2560, this.L,\n 2561, 2562, this.NSM, 2563, 2619, this.L, 2620, 2620, this.NSM, 2621, 2624, this.L,\n 2625, 2626, this.NSM, 2627, 2630, this.L, 2631, 2632, this.NSM, 2633, 2634, this.L,\n 2635, 2637, this.NSM, 2638, 2671, this.L, 2672, 2673, this.NSM, 2674, 2688, this.L,\n 2689, 2690, this.NSM, 2691, 2747, this.L, 2748, 2748, this.NSM, 2749, 2752, this.L,\n 2753, 2757, this.NSM, 2758, 2758, this.L, 2759, 2760, this.NSM, 2761, 2764, this.L,\n 2765, 2765, this.NSM, 2766, 2785, this.L, 2786, 2787, this.NSM, 2788, 2800, this.L,\n 2801, 2801, this.ET, 2802, 2816, this.L, 2817, 2817, this.NSM, 2818, 2875, this.L,\n 2876, 2876, this.NSM, 2877, 2878, this.L, 2879, 2879, this.NSM, 2880, 2880, this.L,\n 2881, 2883, this.NSM, 2884, 2892, this.L, 2893, 2893, this.NSM, 2894, 2901, this.L,\n 2902, 2902, this.NSM, 2903, 2945, this.L, 2946, 2946, this.NSM, 2947, 3007, this.L,\n 3008, 3008, this.NSM, 3009, 3020, this.L, 3021, 3021, this.NSM, 3022, 3058, this.L,\n 3059, 3064, this.ON, 3065, 3065, this.ET, 3066, 3066, this.ON, 3067, 3133, this.L,\n 3134, 3136, this.NSM, 3137, 3141, this.L, 3142, 3144, this.NSM, 3145, 3145, this.L,\n 3146, 3149, this.NSM, 3150, 3156, this.L, 3157, 3158, this.NSM, 3159, 3259, this.L,\n 3260, 3260, this.NSM, 3261, 3275, this.L, 3276, 3277, this.NSM, 3278, 3392, this.L,\n 3393, 3395, this.NSM, 3396, 3404, this.L, 3405, 3405, this.NSM, 3406, 3529, this.L,\n 3530, 3530, this.NSM, 3531, 3537, this.L, 3538, 3540, this.NSM, 3541, 3541, this.L,\n 3542, 3542, this.NSM, 3543, 3632, this.L, 3633, 3633, this.NSM, 3634, 3635, this.L,\n 3636, 3642, this.NSM, 3643, 3646, this.L, 3647, 3647, this.ET, 3648, 3654, this.L,\n 3655, 3662, this.NSM, 3663, 3760, this.L, 3761, 3761, this.NSM, 3762, 3763, this.L,\n 3764, 3769, this.NSM, 3770, 3770, this.L, 3771, 3772, this.NSM, 3773, 3783, this.L,\n 3784, 3789, this.NSM, 3790, 3863, this.L, 3864, 3865, this.NSM, 3866, 3892, this.L,\n 3893, 3893, this.NSM, 3894, 3894, this.L, 3895, 3895, this.NSM, 3896, 3896, this.L,\n 3897, 3897, this.NSM, 3898, 3901, this.ON, 3902, 3952, this.L, 3953, 3966, this.NSM,\n 3967, 3967, this.L, 3968, 3972, this.NSM, 3973, 3973, this.L, 3974, 3975, this.NSM,\n 3976, 3983, this.L, 3984, 3991, this.NSM, 3992, 3992, this.L, 3993, 4028, this.NSM,\n 4029, 4037, this.L, 4038, 4038, this.NSM, 4039, 4140, this.L, 4141, 4144, this.NSM,\n 4145, 4145, this.L, 4146, 4146, this.NSM, 4147, 4149, this.L, 4150, 4151, this.NSM,\n 4152, 4152, this.L, 4153, 4153, this.NSM, 4154, 4183, this.L, 4184, 4185, this.NSM,\n 4186, 5759, this.L, 5760, 5760, this.WS, 5761, 5786, this.L, 5787, 5788, this.ON,\n 5789, 5905, this.L, 5906, 5908, this.NSM, 5909, 5937, this.L, 5938, 5940, this.NSM,\n 5941, 5969, this.L, 5970, 5971, this.NSM, 5972, 6001, this.L, 6002, 6003, this.NSM,\n 6004, 6070, this.L, 6071, 6077, this.NSM, 6078, 6085, this.L, 6086, 6086, this.NSM,\n 6087, 6088, this.L, 6089, 6099, this.NSM, 6100, 6106, this.L, 6107, 6107, this.ET,\n 6108, 6108, this.L, 6109, 6109, this.NSM, 6110, 6127, this.L, 6128, 6137, this.ON,\n 6138, 6143, this.L, 6144, 6154, this.ON, 6155, 6157, this.NSM, 6158, 6158, this.WS,\n 6159, 6312, this.L, 6313, 6313, this.NSM, 6314, 6431, this.L, 6432, 6434, this.NSM,\n 6435, 6438, this.L, 6439, 6443, this.NSM, 6444, 6449, this.L, 6450, 6450, this.NSM,\n 6451, 6456, this.L, 6457, 6459, this.NSM, 6460, 6463, this.L, 6464, 6464, this.ON,\n 6465, 6467, this.L, 6468, 6469, this.ON, 6470, 6623, this.L, 6624, 6655, this.ON,\n 6656, 8124, this.L, 8125, 8125, this.ON, 8126, 8126, this.L, 8127, 8129, this.ON,\n 8130, 8140, this.L, 8141, 8143, this.ON, 8144, 8156, this.L, 8157, 8159, this.ON,\n 8160, 8172, this.L, 8173, 8175, this.ON, 8176, 8188, this.L, 8189, 8190, this.ON,\n 8191, 8191, this.L, 8192, 8202, this.WS, 8203, 8205, this.BN, 8206, 8206, this.L,\n 8207, 8207, this.R, 8208, 8231, this.ON, 8232, 8232, this.WS, 8233, 8233, this.B,\n 8234, 8234, this.LRE, 8235, 8235, this.RLE, 8236, 8236, this.PDF, 8237, 8237, this.LRO,\n 8238, 8238, this.RLO, 8239, 8239, this.WS, 8240, 8244, this.ET, 8245, 8276, this.ON,\n 8277, 8278, this.L, 8279, 8279, this.ON, 8280, 8286, this.L, 8287, 8287, this.WS,\n 8288, 8291, this.BN, 8292, 8297, this.L, 8298, 8303, this.BN, 8304, 8304, this.EN,\n 8305, 8307, this.L, 8308, 8313, this.EN, 8314, 8315, this.ET, 8316, 8318, this.ON,\n 8319, 8319, this.L, 8320, 8329, this.EN, 8330, 8331, this.ET, 8332, 8334, this.ON,\n 8335, 8351, this.L, 8352, 8369, this.ET, 8370, 8399, this.L, 8400, 8426, this.NSM,\n 8427, 8447, this.L, 8448, 8449, this.ON, 8450, 8450, this.L, 8451, 8454, this.ON,\n 8455, 8455, this.L, 8456, 8457, this.ON, 8458, 8467, this.L, 8468, 8468, this.ON,\n 8469, 8469, this.L, 8470, 8472, this.ON, 8473, 8477, this.L, 8478, 8483, this.ON,\n 8484, 8484, this.L, 8485, 8485, this.ON, 8486, 8486, this.L, 8487, 8487, this.ON,\n 8488, 8488, this.L, 8489, 8489, this.ON, 8490, 8493, this.L, 8494, 8494, this.ET,\n 8495, 8497, this.L, 8498, 8498, this.ON, 8499, 8505, this.L, 8506, 8507, this.ON,\n 8508, 8511, this.L, 8512, 8516, this.ON, 8517, 8521, this.L, 8522, 8523, this.ON,\n 8524, 8530, this.L, 8531, 8543, this.ON, 8544, 8591, this.L, 8592, 8721, this.ON,\n 8722, 8723, this.ET, 8724, 9013, this.ON, 9014, 9082, this.L, 9083, 9108, this.ON,\n 9109, 9109, this.L, 9110, 9168, this.ON, 9169, 9215, this.L, 9216, 9254, this.ON,\n 9255, 9279, this.L, 9280, 9290, this.ON, 9291, 9311, this.L, 9312, 9371, this.EN,\n 9372, 9449, this.L, 9450, 9450, this.EN, 9451, 9751, this.ON, 9752, 9752, this.L,\n 9753, 9853, this.ON, 9854, 9855, this.L, 9856, 9873, this.ON, 9874, 9887, this.L,\n 9888, 9889, this.ON, 9890, 9984, this.L, 9985, 9988, this.ON, 9989, 9989, this.L,\n 9990, 9993, this.ON, 9994, 9995, this.L, 9996, 10023, this.ON, 10024, 10024, this.L,\n 10025, 10059, this.ON, 10060, 10060, this.L, 10061, 10061, this.ON, 10062, 10062, this.L,\n 10063, 10066, this.ON, 10067, 10069, this.L, 10070, 10070, this.ON, 10071, 10071, this.L,\n 10072, 10078, this.ON, 10079, 10080, this.L, 10081, 10132, this.ON, 10133, 10135, this.L,\n 10136, 10159, this.ON, 10160, 10160, this.L, 10161, 10174, this.ON, 10175, 10191, this.L,\n 10192, 10219, this.ON, 10220, 10223, this.L, 10224, 11021, this.ON, 11022, 11903, this.L,\n 11904, 11929, this.ON, 11930, 11930, this.L, 11931, 12019, this.ON, 12020, 12031, this.L,\n 12032, 12245, this.ON, 12246, 12271, this.L, 12272, 12283, this.ON, 12284, 12287, this.L,\n 12288, 12288, this.WS, 12289, 12292, this.ON, 12293, 12295, this.L, 12296, 12320, this.ON,\n 12321, 12329, this.L, 12330, 12335, this.NSM, 12336, 12336, this.ON, 12337, 12341, this.L,\n 12342, 12343, this.ON, 12344, 12348, this.L, 12349, 12351, this.ON, 12352, 12440, this.L,\n 12441, 12442, this.NSM, 12443, 12444, this.ON, 12445, 12447, this.L, 12448, 12448, this.ON,\n 12449, 12538, this.L, 12539, 12539, this.ON, 12540, 12828, this.L, 12829, 12830, this.ON,\n 12831, 12879, this.L, 12880, 12895, this.ON, 12896, 12923, this.L, 12924, 12925, this.ON,\n 12926, 12976, this.L, 12977, 12991, this.ON, 12992, 13003, this.L, 13004, 13007, this.ON,\n 13008, 13174, this.L, 13175, 13178, this.ON, 13179, 13277, this.L, 13278, 13279, this.ON,\n 13280, 13310, this.L, 13311, 13311, this.ON, 13312, 19903, this.L, 19904, 19967, this.ON,\n 19968, 42127, this.L, 42128, 42182, this.ON, 42183, 64284, this.L, 64285, 64285, this.R,\n 64286, 64286, this.NSM, 64287, 64296, this.R, 64297, 64297, this.ET, 64298, 64310, this.R,\n 64311, 64311, this.L, 64312, 64316, this.R, 64317, 64317, this.L, 64318, 64318, this.R,\n 64319, 64319, this.L, 64320, 64321, this.R, 64322, 64322, this.L, 64323, 64324, this.R,\n 64325, 64325, this.L, 64326, 64335, this.R, 64336, 64433, this.AL, 64434, 64466, this.L,\n 64467, 64829, this.AL, 64830, 64831, this.ON, 64832, 64847, this.L, 64848, 64911, this.AL,\n 64912, 64913, this.L, 64914, 64967, this.AL, 64968, 65007, this.L, 65008, 65020, this.AL,\n 65021, 65021, this.ON, 65022, 65023, this.L, 65024, 65039, this.NSM, 65040, 65055, this.L,\n 65056, 65059, this.NSM, 65060, 65071, this.L, 65072, 65103, this.ON, 65104, 65104, this.CS,\n 65105, 65105, this.ON, 65106, 65106, this.CS, 65107, 65107, this.L, 65108, 65108, this.ON,\n 65109, 65109, this.CS, 65110, 65118, this.ON, 65119, 65119, this.ET, 65120, 65121, this.ON,\n 65122, 65123, this.ET, 65124, 65126, this.ON, 65127, 65127, this.L, 65128, 65128, this.ON,\n 65129, 65130, this.ET, 65131, 65131, this.ON, 65132, 65135, this.L, 65136, 65140, this.AL,\n 65141, 65141, this.L, 65142, 65276, this.AL, 65277, 65278, this.L, 65279, 65279, this.BN,\n 65280, 65280, this.L, 65281, 65282, this.ON, 65283, 65285, this.ET, 65286, 65290, this.ON,\n 65291, 65291, this.ET, 65292, 65292, this.CS, 65293, 65293, this.ET, 65294, 65294, this.CS,\n 65295, 65295, this.ES, 65296, 65305, this.EN, 65306, 65306, this.CS, 65307, 65312, this.ON,\n 65313, 65338, this.L, 65339, 65344, this.ON, 65345, 65370, this.L, 65371, 65381, this.ON,\n 65382, 65503, this.L, 65504, 65505, this.ET, 65506, 65508, this.ON, 65509, 65510, this.ET,\n 65511, 65511, this.L, 65512, 65518, this.ON, 65519, 65528, this.L, 65529, 65531, this.BN,\n 65532, 65533, this.ON, 65534, 65535, this.L\n ];\n for (let i = 0; i < this.charTypes.length; ++i) {\n let start = this.charTypes[i];\n let end = this.charTypes[++i];\n let b = this.charTypes[++i];\n while (start <= end) {\n this.rtlCharacterTypes[start++] = b;\n }\n }\n }\n //#endregion\n //#region implementation\n getVisualOrder(inputText, isRtl) {\n this.types = this.getCharacterCode(inputText);\n this.textOrder = isRtl ? this.LRE : this.L;\n this.doVisualOrder();\n let result = [];\n for (let i = 0; i < this.levels.length; i++) {\n result[i] = this.levels[i];\n }\n return result;\n }\n getCharacterCode(text) {\n let characterCodes = [];\n for (let i = 0; i < text.length; i++) {\n characterCodes[i] = this.rtlCharacterTypes[text[i].charCodeAt(0)];\n }\n return characterCodes;\n }\n setDefaultLevels() {\n for (let i = 0; i < this.length; i++) {\n this.levels[i] = this.textOrder;\n }\n }\n setLevels() {\n this.setDefaultLevels();\n for (let n = 0; n < this.length; ++n) {\n let level = this.levels[n];\n if ((level & 0x80) !== 0) {\n level &= 0x7f;\n this.result[n] = ((level & 0x1) === 0) ? this.L : this.R;\n }\n this.levels[n] = level;\n }\n }\n updateLevels(index, level, length) {\n if ((level & 1) === 0) {\n for (let i = index; i < length; ++i) {\n if (this.result[i] === this.R) {\n this.levels[i] += 1;\n }\n else if (this.result[i] !== this.L) {\n this.levels[i] += 2;\n }\n }\n }\n else {\n for (let i = index; i < length; ++i) {\n if (this.result[i] !== this.R) {\n this.levels[i] += 1;\n }\n }\n }\n }\n doVisualOrder() {\n this.length = this.types.length;\n this.result = this.types;\n this.levels = [];\n this.setLevels();\n this.length = this.getEmbeddedCharactersLength();\n let preview = this.textOrder;\n let i = 0;\n while (i < this.length) {\n let level = this.levels[i];\n let preType = ((Math.max(preview, level) & 0x1) === 0) ? this.L : this.R;\n let length = i + 1;\n while (length < this.length && this.levels[length] === level) {\n ++length;\n }\n let success = length < this.length ? this.levels[length] : this.textOrder;\n let type = ((Math.max(success, level) & 0x1) === 0) ? this.L : this.R;\n this.checkNSM(i, length, level, preType, type);\n this.updateLevels(i, level, length);\n preview = level;\n i = length;\n }\n this.checkEmbeddedCharacters(this.length);\n }\n getEmbeddedCharactersLength() {\n let index = 0;\n for (let i = 0; i < this.length; ++i) {\n if (!(this.types[i] === this.LRE || this.types[i] === this.RLE || this.types[i] === this.LRO ||\n this.types[i] === this.RLO || this.types[i] === this.PDF || this.types[i] === this.BN)) {\n this.result[index] = this.result[i];\n this.levels[index] = this.levels[i];\n index++;\n }\n }\n return index;\n }\n checkEmbeddedCharacters(length) {\n for (let i = this.types.length - 1; i >= 0; --i) {\n if (this.types[i] === this.LRE || this.types[i] === this.RLE || this.types[i] === this.LRO ||\n this.types[i] === this.RLO || this.types[i] === this.PDF || this.types[i] === this.BN) {\n this.result[i] = this.types[i];\n this.levels[i] = -1;\n }\n else {\n length -= 1;\n this.result[i] = this.result[length];\n this.levels[i] = this.levels[length];\n }\n }\n for (let i = 0; i < this.types.length; i++) {\n if (this.levels[i] === -1) {\n if (i === 0) {\n this.levels[i] = this.textOrder;\n }\n else {\n this.levels[i] = this.levels[i - 1];\n }\n }\n }\n }\n checkNSM(index, length, level, startType, endType) {\n let charType = startType;\n for (let i = index; i < length; ++i) {\n if (this.result[i] === this.NSM) {\n this.result[i] = charType;\n }\n else {\n charType = this.result[i];\n }\n }\n this.checkEuropeanDigits(index, length, level, startType, endType);\n }\n checkEuropeanDigits(index, length, level, startType, endType) {\n for (let i = index; i < length; ++i) {\n if (this.result[i] === this.EN) {\n for (let j = i - 1; j >= index; --j) {\n if (this.result[j] === this.L || this.result[j] === this.R || this.result[j] === this.AL) {\n if (this.result[j] === this.AL) {\n this.result[i] = this.AN;\n }\n break;\n }\n }\n }\n }\n this.checkArabicCharacters(index, length, level, startType, endType);\n }\n checkArabicCharacters(index, length, level, startType, endType) {\n for (let i = index; i < length; ++i) {\n if (this.result[i] === this.AL) {\n this.result[i] = this.R;\n }\n }\n this.checkEuropeanNumberSeparator(index, length, level, startType, endType);\n }\n checkEuropeanNumberSeparator(index, length, level, startType, endType) {\n for (let i = index + 1; i < length - 1; ++i) {\n if (this.result[i] === this.ES || this.result[i] === this.CS) {\n let preview = this.result[i - 1];\n let success = this.result[i + 1];\n if (preview === this.EN && success === this.EN) {\n this.result[i] = this.EN;\n }\n else if (this.result[i] === this.CS && preview === this.AN && success === this.AN) {\n this.result[i] = this.AN;\n }\n }\n }\n this.checkEuropeanNumberTerminator(index, length, level, startType, endType);\n }\n checkEuropeanNumberTerminator(index, length, level, startType, endType) {\n for (let i = index; i < length; ++i) {\n if (this.result[i] === this.ET) {\n let s = i;\n let b = [];\n b.push(this.ET);\n let l = this.getLength(s, length, b);\n let data = s === index ? startType : this.result[s - 1];\n if (data !== this.EN) {\n data = (l === length) ? endType : this.result[l];\n }\n if (data === this.EN) {\n for (let j = s; j < l; ++j) {\n this.result[j] = this.EN;\n }\n }\n i = l;\n }\n }\n this.checkOtherNeutrals(index, length, level, startType, endType);\n }\n checkOtherNeutrals(index, length, level, startType, endType) {\n for (let i = index; i < length; ++i) {\n if (this.result[i] === this.ES || this.result[i] === this.ET || this.result[i] === this.CS) {\n this.result[i] = this.ON;\n }\n }\n this.checkOtherCharacters(index, length, level, startType, endType);\n }\n checkOtherCharacters(index, length, level, startType, endType) {\n for (let i = index; i < length; ++i) {\n if (this.result[i] === this.EN) {\n let pst = startType;\n for (let j = i - 1; j >= index; --j) {\n if (this.result[j] === this.L || this.result[j] === this.R) {\n pst = this.result[j];\n break;\n }\n }\n if (pst === this.L) {\n this.result[i] = this.L;\n }\n }\n }\n this.checkCommanCharacters(index, length, level, startType, endType);\n }\n getLength(index, length, validSet) {\n --index;\n while (++index < length) {\n let t = this.result[index];\n for (let i = 0; i < validSet.length; ++i) {\n if (t === validSet[i]) {\n index = this.getLength(++index, length, validSet);\n }\n }\n return index;\n }\n return length;\n }\n checkCommanCharacters(index, length, level, startType, endType) {\n for (let i = index; i < length; ++i) {\n if (this.result[i] === this.WS || this.result[i] === this.ON || this.result[i] === this.B ||\n this.result[i] === this.S) {\n let s = i;\n let byte = [this.B, this.S, this.WS, this.ON];\n let l = this.getLength(s, length, byte);\n let lt = 0;\n let tt = 0;\n let rt = 0;\n if (s === index) {\n lt = startType;\n }\n else {\n lt = this.result[s - 1];\n if (lt === this.AN) {\n lt = this.R;\n }\n else if (lt === this.EN) {\n lt = this.R;\n }\n }\n if (l === length) {\n tt = endType;\n }\n else {\n tt = this.result[l];\n if (tt === this.AN) {\n tt = this.R;\n }\n else if (tt === this.EN) {\n tt = this.R;\n }\n }\n if (lt === tt) {\n rt = lt;\n }\n else {\n rt = ((level & 0x1) === 0) ? this.L : this.R;\n }\n for (let j = s; j < l; ++j) {\n this.result[j] = rt;\n }\n i = l;\n }\n }\n }\n}\n\n/**\n * `Metrics` of the font.\n * @private\n */\nclass RtlRenderer {\n constructor() {\n //region Constants\n /// Open bracket symbol.\n /// \n this.openBracket = '(';\n /// \n /// Close bracket symbol.\n /// \n this.closeBracket = ')';\n //#endregion\n }\n //#region Constructors\n /// \n /// Initializes a new instance of the class.\n /// \n // public constructor() {\n // }\n //#region Public Methods\n /// \n /// Layouts text. Changes blocks position in the RTL text.\n /// Ligates the text if needed.\n /// \n /// Line of the text.\n /// Font to be used for string printing.\n /// Font alignment.\n /// Indicates whether Word Spacing used or not.\n /// Layout string.\n layout(line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n let result = [];\n if (font.Unicode) {\n result = this.customLayout(line, rtl, format, font, wordSpace);\n }\n else {\n result = [];\n result[0] = line;\n }\n return result;\n }\n /// \n /// Layouts a string and splits it by the words and using correct lay outing.\n /// \n /// Text line.\n /// Font object.\n /// Indicates whether RTL should be applied.\n /// Indicates whether word spacing is used.\n /// Array of words if converted, null otherwise.\n splitLayout(line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n let words = [];\n let system = false;\n if (!system || words == null) {\n words = this.customSplitLayout(line, font, rtl, wordSpace, format);\n }\n return words;\n }\n //#endregion\n //#region Implementation\n // private isEnglish( word : string) : boolean\n // {\n // let c : string = (word.length > 0) ? word[0] : '';\n // return (c >= '0' && c < 'ÿ');\n // }\n // private keepOrder( words : string, startIndex : number, count: number, result : string[], resultIndex : number) : void\n // {\n // for (let i : number = 0, ri = resultIndex - count + 1; i < count; ++i, ++ri) {\n // result[ri] = words[i + startIndex];\n // }\n // }\n /// \n /// Uses system API to layout the text.\n /// \n /// Line of the text to be layouted.\n /// Font which is used for text printing.\n /// Indicates whether we use RTL or RTL lay outing of the text container.\n /// Layout string.\n /* tslint:disable-next-line:max-line-length */\n getGlyphIndex(line, font, rtl, /*out*/ glyphs, custom) {\n let success = true;\n let fail = false;\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n glyphs = null;\n if (line.length === 0) {\n return { success: fail, glyphs: glyphs };\n }\n let renderer = new ArabicShapeRenderer();\n let text = renderer.shape(line, 0);\n let internalFont = font.fontInternal;\n let ttfReader = internalFont.ttfReader;\n glyphs = new Uint16Array(text.length);\n let i = 0;\n for (let k = 0, len = text.length; k < len; k++) {\n let ch = text[k];\n let glyphInfo = ttfReader.getGlyph(ch);\n if (glyphInfo !== null && typeof glyphInfo !== 'undefined') {\n glyphs[i++] = (glyphInfo).index;\n }\n }\n return { success: success, glyphs: glyphs };\n }\n /* tslint:disable-next-line:max-line-length */\n customLayout(line, rtl, format, font, wordSpace) {\n if (wordSpace === null || typeof wordSpace === 'undefined') {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n let result = null;\n //bidirectional order.\n if (format !== null && format.textDirection !== PdfTextDirection.None) {\n let bidi = new Bidi();\n result = bidi.getLogicalToVisualString(line, rtl);\n }\n return result;\n }\n else {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n let layouted = null;\n if (format !== null && format.textDirection !== PdfTextDirection.None) {\n let renderer = new ArabicShapeRenderer();\n let txt = renderer.shape(line, 0);\n layouted = this.customLayout(txt, rtl, format);\n }\n // else {\n // layouted = this.customLayout(line, rtl, format);\n // }\n // We have unicode font, but from the file. \n let result = [];\n // Split the text by words if word spacing is not default.\n if (wordSpace) {\n let words = layouted.split('');\n let count = words.length;\n for (let i = 0; i < count; i++) {\n words[i] = this.addChars(font, words[i]);\n }\n result = words;\n }\n else {\n result = [];\n result[0] = this.addChars(font, layouted);\n }\n return result;\n }\n }\n /// \n /// Add information about used glyphs to the font.\n /// \n /// Font used for text rendering.\n /// Array of used glyphs.\n /// String in the form to be written to the file.\n addChars(font, glyphs) {\n let line = glyphs;\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n let text = line;\n let internalFont = font.fontInternal;\n let ttfReader = internalFont.ttfReader;\n font.setSymbols(text);\n // Reconvert string according to unicode standard.\n text = ttfReader.convertString(text);\n let bytes = PdfString.toUnicodeArray(text, false);\n text = PdfString.byteToString(bytes);\n return text;\n // else {\n // if (font == null) {\n // throw new Error('ArgumentNullException : font');\n // }\n // if (glyphs == null) {\n // throw new Error('ArgumentNullException : glyphs');\n // }\n // // Mark the chars as used.\n // let text : string = '';\n // font.setSymbols(glyphs);\n // // Create string from the glyphs.\n // \n // let chars : string[] = [];\n // for (let i : number = 0; i < glyphs.length; i++) {\n // chars[i] = glyphs[i].toString();\n // }\n // for (let j : number = 0 ; j < chars.length; j++) {\n // text = text + chars[j];\n // }\n // let bytes : number[] = PdfString.toUnicodeArray(text, false);\n // text = PdfString.byteToString(bytes);\n // return text;\n // }\n }\n /// \n /// Layouts a string and splits it by the words by using custom lay outing.\n /// \n /// Text line.\n /// Font object.\n /// Indicates whether RTL should be applied.\n /// Indicates whether word spacing is used.\n /// Array of words if converted, null otherwise.\n /* tslint:disable-next-line:max-line-length */\n customSplitLayout(line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n let reversedLine = this.customLayout(line, rtl, format);\n let words = reversedLine.split('');\n return words;\n }\n}\n\n/**\n * public Enum for `PdfLayoutType`.\n * @private\n */\nvar PdfLayoutType;\n(function (PdfLayoutType) {\n /**\n * Specifies the type of `Paginate`.\n * @private\n */\n PdfLayoutType[PdfLayoutType[\"Paginate\"] = 0] = \"Paginate\";\n /**\n * Specifies the type of `OnePage`.\n * @private\n */\n PdfLayoutType[PdfLayoutType[\"OnePage\"] = 1] = \"OnePage\";\n})(PdfLayoutType || (PdfLayoutType = {}));\n/**\n * public Enum for `PdfLayoutBreakType`.\n * @private\n */\nvar PdfLayoutBreakType;\n(function (PdfLayoutBreakType) {\n /**\n * Specifies the type of `FitPage`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitPage\"] = 0] = \"FitPage\";\n /**\n * Specifies the type of `FitElement`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitElement\"] = 1] = \"FitElement\";\n /**\n * Specifies the type of `FitColumnsToPage`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitColumnsToPage\"] = 2] = \"FitColumnsToPage\";\n})(PdfLayoutBreakType || (PdfLayoutBreakType = {}));\nvar PathPointType;\n(function (PathPointType) {\n /**\n * Specifies the path point type of `Start`.\n * @private\n */\n PathPointType[PathPointType[\"Start\"] = 0] = \"Start\";\n /**\n * Specifies the path point type of `Line`.\n * @private\n */\n PathPointType[PathPointType[\"Line\"] = 1] = \"Line\";\n /**\n * Specifies the path point type of `Bezier3`.\n * @private\n */\n PathPointType[PathPointType[\"Bezier3\"] = 3] = \"Bezier3\";\n /**\n * Specifies the path point type of `Bezier`.\n * @private\n */\n PathPointType[PathPointType[\"Bezier\"] = 3] = \"Bezier\";\n /**\n * Specifies the path point type of `PathTypeMask`.\n * @private\n */\n PathPointType[PathPointType[\"PathTypeMask\"] = 7] = \"PathTypeMask\";\n /**\n * Specifies the path point type of `DashMode`.\n * @private\n */\n PathPointType[PathPointType[\"DashMode\"] = 16] = \"DashMode\";\n /**\n * Specifies the path point type of `PathMarker`.\n * @private\n */\n PathPointType[PathPointType[\"PathMarker\"] = 32] = \"PathMarker\";\n /**\n * Specifies the path point type of `CloseSubpath`.\n * @private\n */\n PathPointType[PathPointType[\"CloseSubpath\"] = 128] = \"CloseSubpath\";\n})(PathPointType || (PathPointType = {}));\n\n/**\n * `PdfGradientBrush` class provides objects used to fill the interiors of graphical shapes such as rectangles,\n * ellipses, pies, polygons, and paths.\n * @private\n */\nclass PdfGradientBrush extends PdfBrush {\n //Constructor\n /**\n * Initializes a new instance of the `PdfGradientBrush` class.\n * @public\n */\n /* tslint:disable-next-line:max-line-length */\n constructor(shading) {\n super();\n // Fields\n /**\n * Local variable to store the background color.\n * @private\n */\n this.mbackground = new PdfColor(255, 255, 255);\n /**\n * Local variable to store the stroking color.\n * @private\n */\n this.mbStroking = false;\n /**\n * Local variable to store the function.\n * @private\n */\n this.mfunction = null;\n /**\n * Local variable to store the DictionaryProperties.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.mpatternDictionary = new PdfDictionary();\n this.mpatternDictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.pattern));\n this.mpatternDictionary.items.setValue(this.dictionaryProperties.patternType, new PdfNumber(2));\n this.shading = shading;\n this.colorSpace = PdfColorSpace.Rgb;\n }\n //Properties\n /**\n * Gets or sets the background color of the brush.\n * @public\n */\n get background() {\n return this.mbackground;\n }\n set background(value) {\n this.mbackground = value;\n let sh = this.shading;\n if (value.isEmpty) {\n sh.remove(this.dictionaryProperties.background);\n }\n else {\n sh.items.setValue(this.dictionaryProperties.background, value.toArray(this.colorSpace));\n }\n }\n /**\n * Gets or sets a value indicating whether use anti aliasing algorithm.\n * @public\n */\n get antiAlias() {\n let sh = this.shading;\n let aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n return aa.value;\n }\n set antiAlias(value) {\n let sh = this.shading;\n let aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n if ((aa == null && typeof aa === 'undefined')) {\n aa = new PdfBoolean(value);\n sh.items.setValue(this.dictionaryProperties.antiAlias, aa);\n }\n else {\n aa.value = value;\n }\n }\n /**\n * Gets or sets the function of the brush.\n * @protected\n */\n get function() {\n return this.mfunction;\n }\n set function(value) {\n this.mfunction = value;\n if (value != null && typeof value !== 'undefined') {\n this.shading.items.setValue(this.dictionaryProperties.function, new PdfReferenceHolder(this.mfunction));\n }\n else {\n this.shading.remove(this.dictionaryProperties.function);\n }\n }\n /**\n * Gets or sets the boundary box of the brush.\n * @protected\n */\n get bBox() {\n let sh = this.shading;\n let box = (sh.items.getValue(this.dictionaryProperties.bBox));\n return box;\n }\n set bBox(value) {\n let sh = this.shading;\n if (value == null && typeof value === 'undefined') {\n sh.remove(this.dictionaryProperties.bBox);\n }\n else {\n sh.items.setValue(this.dictionaryProperties.bBox, value);\n }\n }\n /**\n * Gets or sets the color space of the brush.\n * @public\n */\n get colorSpace() {\n return this.mcolorSpace;\n }\n set colorSpace(value) {\n let colorSpace = this.shading.items.getValue(this.dictionaryProperties.colorSpace);\n if ((value !== this.mcolorSpace) || (colorSpace == null)) {\n this.mcolorSpace = value;\n let csValue = this.colorSpaceToDeviceName(value);\n this.shading.items.setValue(this.dictionaryProperties.colorSpace, new PdfName(csValue));\n }\n }\n /**\n * Gets or sets a value indicating whether this PdfGradientBrush is stroking.\n * @public\n */\n get stroking() {\n return this.mbStroking;\n }\n set stroking(value) {\n this.mbStroking = value;\n }\n /**\n * Gets the pattern dictionary.\n * @protected\n */\n get patternDictionary() {\n if (this.mpatternDictionary == null) {\n this.mpatternDictionary = new PdfDictionary();\n }\n return this.mpatternDictionary;\n }\n /**\n * Gets or sets the shading dictionary.\n * @protected\n */\n get shading() {\n return this.mshading;\n }\n set shading(value) {\n if (value == null) {\n throw new Error('ArgumentNullException : Shading');\n }\n if (value !== this.mshading) {\n this.mshading = value;\n this.patternDictionary.items.setValue(this.dictionaryProperties.shading, new PdfReferenceHolder(this.mshading));\n }\n }\n /**\n * Gets or sets the transformation matrix.\n * @public\n */\n get matrix() {\n return this.mmatrix;\n }\n set matrix(value) {\n if (value == null) {\n throw new Error('ArgumentNullException : Matrix');\n }\n if (value !== this.mmatrix) {\n this.mmatrix = value.clone();\n let m = new PdfArray(this.mmatrix.matrix.elements);\n this.mpatternDictionary.items.setValue(this.dictionaryProperties.matrix, m);\n }\n }\n //Overrides\n /**\n * Monitors the changes of the brush and modify PDF state respectfully.\n * @param brush The brush.\n * @param streamWriter The stream writer.\n * @param getResources The get resources delegate.\n * @param saveChanges if set to true the changes should be saved anyway.\n * @param currentColorSpace The current color space.\n */\n /* tslint:disable-next-line:max-line-length */\n monitorChanges(brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n let diff = false;\n if (brush instanceof PdfGradientBrush) {\n if ((this.colorSpace !== currentColorSpace)) {\n this.colorSpace = currentColorSpace;\n this.resetFunction();\n }\n // Set the /Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mbStroking);\n // Set the pattern for non-stroking operations.\n let resources = getResources.getResources();\n let name = resources.getName(this);\n streamWriter.setColourWithPattern(null, name, this.mbStroking);\n diff = true;\n }\n return diff;\n }\n /**\n * Resets the changes, which were made by the brush.\n * In other words resets the state to the initial one.\n * @param streamWriter The stream writer.\n */\n resetChanges(streamWriter) {\n // Unable reset.\n }\n //Implementation\n /**\n * Converts colorspace enum to a PDF name.\n * @param colorSpace The color space enum value.\n */\n colorSpaceToDeviceName(colorSpace) {\n let result;\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n result = 'DeviceRGB';\n break;\n }\n return result;\n }\n /**\n * Resets the pattern dictionary.\n * @param dictionary A new pattern dictionary.\n */\n resetPatternDictionary(dictionary) {\n this.mpatternDictionary = dictionary;\n }\n /**\n * Clones the anti aliasing value.\n * @param brush The brush.\n */\n cloneAntiAliasingValue(brush) {\n if ((brush == null)) {\n throw new Error('ArgumentNullException : brush');\n }\n let sh = this.shading;\n let aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n if ((aa != null)) {\n brush.shading.items.setValue(this.dictionaryProperties.antiAlias, new PdfBoolean(aa.value));\n }\n }\n /**\n * Clones the background value.\n * @param brush The brush.\n */\n cloneBackgroundValue(brush) {\n let background = this.background;\n if (!background.isEmpty) {\n brush.background = background;\n }\n }\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get element() {\n return this.patternDictionary;\n }\n}\n\n/**\n * PdfTemplate.ts class for EJ2-PDF\n */\n/**\n * Represents `Pdf Template` object.\n * @private\n */\nclass PdfTemplate {\n constructor(arg1, arg2) {\n /**\n * Initialize an instance for `DictionaryProperties` class.\n * @private\n * @hidden\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Checks whether the transformation 'is performed'.\n * @default true\n * @private\n */\n this.writeTransformation = true;\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (arg1 instanceof SizeF && typeof arg2 === 'undefined') {\n this.content = new PdfStream();\n let tempSize = new SizeF(arg1.width, arg1.height);\n this.setSize(tempSize);\n this.initialize();\n }\n else {\n this.content = new PdfStream();\n this.setSize(new SizeF(arg1, arg2));\n this.initialize();\n }\n }\n //Properties\n /**\n * Gets the size of the 'PdfTemplate'.\n */\n get size() {\n return this.templateSize;\n }\n /**\n * Gets the width of the 'PdfTemplate'.\n */\n get width() {\n return this.size.width;\n }\n /**\n * Gets the height of the 'PdfTemplate'.\n */\n get height() {\n return this.size.height;\n }\n /**\n * Gets the `graphics` of the 'PdfTemplate'.\n */\n get graphics() {\n if (this.pdfGraphics == null || typeof this.pdfGraphics === 'undefined') {\n let gr = new GetResourceEventHandler(this);\n let g = new PdfGraphics(this.size, gr, this.content);\n this.pdfGraphics = g;\n // if(this.writeTransformation) {\n // Transform co-ordinates to Top/Left.\n this.pdfGraphics.initializeCoordinates();\n // }\n }\n return this.pdfGraphics;\n }\n /**\n * Gets the resources and modifies the template dictionary.\n * @private\n */\n getResources() {\n if (this.resources == null) {\n this.resources = new PdfResources();\n this.content.items.setValue(this.dictionaryProperties.resources, this.resources);\n }\n return this.resources;\n }\n // Public methods\n /**\n * `Initialize` the type and subtype of the template.\n * @private\n */\n initialize() {\n this.addType();\n this.addSubType();\n }\n /**\n * `Adds type key`.\n * @private\n */\n addType() {\n let value = new PdfName(this.dictionaryProperties.xObject);\n this.content.items.setValue(this.dictionaryProperties.type, value);\n }\n /**\n * `Adds SubType key`.\n * @private\n */\n addSubType() {\n let value = new PdfName(this.dictionaryProperties.form);\n this.content.items.setValue(this.dictionaryProperties.subtype, value);\n }\n reset(size) {\n if (typeof size === 'undefined') {\n if (this.resources != null) {\n this.resources = null;\n this.content.remove(this.dictionaryProperties.resources);\n }\n if (this.graphics != null) {\n this.graphics.reset(this.size);\n }\n }\n else {\n this.setSize(size);\n this.reset();\n }\n }\n /**\n * `Set the size` of the 'PdfTemplate'.\n * @private\n */\n setSize(size) {\n let rect = new RectangleF(new PointF(0, 0), size);\n let val = PdfArray.fromRectangle(rect);\n this.content.items.setValue(this.dictionaryProperties.bBox, val);\n this.templateSize = size;\n }\n // /**\n // * Returns the value of current graphics.\n // * @private\n // */\n // public GetGraphics(g : PdfGraphics) : PdfGraphics {\n // if (this.graphics == null || typeof this.graphics === 'undefined') {\n // this.graphics = g;\n // this.graphics.Size = this.Size;\n // this.graphics.StreamWriter = new PdfStreamWriter(this.content)\n // this.graphics.Initialize();\n // if(this.writeTransformation) {\n // this.graphics.InitializeCoordinates();\n // }\n // }\n // return this.graphics;\n // }\n // IPdfWrapper Members\n /**\n * Gets the `content stream` of 'PdfTemplate' class.\n * @private\n */\n get element() {\n return this.content;\n }\n}\n\n/**\n * PdfResources.ts class for EJ2-PDF\n */\n/**\n * `PdfResources` class used to set resource contents like font, image.\n * @private\n */\nclass PdfResources extends PdfDictionary {\n constructor(baseDictionary) {\n super(baseDictionary);\n /**\n * Dictionary for the `properties names`.\n * @private\n */\n this.properties = new PdfDictionary();\n }\n //Properties\n /**\n * Gets the `font names`.\n * @private\n */\n get names() {\n return this.getNames();\n }\n /**\n * Get or set the `page document`.\n * @private\n */\n get document() {\n return this.pdfDocument;\n }\n set document(value) {\n this.pdfDocument = value;\n }\n //Public Methods\n /**\n * `Generates name` for the object and adds to the resource if the object is new.\n * @private\n */\n getName(obj) {\n let primitive = obj.element;\n let name = null;\n if (this.names.containsKey(primitive)) {\n name = this.names.getValue(primitive);\n }\n // Object is new.\n if (name == null) {\n let sName = this.generateName();\n name = new PdfName(sName);\n this.names.setValue(primitive, name);\n if (obj instanceof PdfFont) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfTemplate) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfGradientBrush || obj instanceof PdfTilingBrush) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfTransparency) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfImage || obj instanceof PdfBitmap) {\n this.add(obj, name);\n }\n }\n return name;\n }\n /**\n * Gets `resource names` to font dictionaries.\n * @private\n */\n getNames() {\n if (this.pdfNames == null) {\n this.pdfNames = new TemporaryDictionary();\n }\n let fonts = this.items.getValue(this.dictionaryProperties.font);\n if (fonts != null) {\n let dictionary = fonts;\n dictionary = PdfCrossTable.dereference(fonts);\n }\n return this.pdfNames;\n }\n /**\n * Add `RequireProcedureSet` into procset array.\n * @private\n */\n requireProcedureSet(procedureSetName) {\n if (procedureSetName == null) {\n throw new Error('ArgumentNullException:procedureSetName');\n }\n let procSets = this.items.getValue(this.dictionaryProperties.procset);\n if (procSets == null) {\n procSets = new PdfArray();\n this.items.setValue(this.dictionaryProperties.procset, procSets);\n }\n let name = new PdfName(procedureSetName);\n if (!procSets.contains(name)) {\n procSets.add(name);\n }\n }\n //Helper Methods\n /**\n * `Remove font` from array.\n * @private\n */\n removeFont(name) {\n let key = null;\n let keys = this.pdfNames.keys();\n for (let index = 0; index < this.pdfNames.size(); index++) {\n if (this.pdfNames.getValue(keys[index]) === new PdfName(name)) {\n key = keys[index];\n break;\n }\n }\n if (key != null) {\n this.pdfNames.remove(key);\n }\n }\n /**\n * Generates `Unique string name`.\n * @private\n */\n generateName() {\n let name = Guid.getNewGuidString();\n return name;\n }\n add(arg1, arg2) {\n if (arg1 instanceof PdfFont) {\n let dictionary = null;\n let fonts = this.items.getValue(this.dictionaryProperties.font);\n if (fonts != null) {\n dictionary = fonts;\n dictionary = fonts;\n }\n else {\n dictionary = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.font, dictionary);\n }\n dictionary.items.setValue(arg2.value, new PdfReferenceHolder(arg1.element));\n }\n else if (arg1 instanceof PdfTemplate) {\n let xobjects;\n xobjects = this.items.getValue(this.dictionaryProperties.xObject);\n // Create fonts dictionary.\n if (xobjects == null) {\n xobjects = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.xObject, xobjects);\n }\n xobjects.items.setValue(arg2.value, new PdfReferenceHolder(arg1.element));\n }\n else if (arg1 instanceof PdfBrush) {\n if (arg1 instanceof PdfGradientBrush || arg1 instanceof PdfTilingBrush) {\n let savable = arg1.element;\n if (savable != null) {\n let pattern = this.items.getValue(this.dictionaryProperties.pattern);\n // Create a new pattern dictionary.\n if (pattern == null) {\n pattern = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.pattern, pattern);\n }\n pattern.items.setValue(arg2.value, new PdfReferenceHolder(savable));\n }\n }\n }\n else if (arg1 instanceof PdfTransparency) {\n let savable = arg1.element;\n let transDic = null;\n transDic = this.items.getValue(this.dictionaryProperties.extGState);\n // Create a new pattern dictionary.\n if (transDic == null) {\n transDic = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.extGState, transDic);\n }\n transDic.items.setValue(arg2.value, new PdfReferenceHolder(savable));\n }\n else {\n /* tslint:disable */\n let xobjects = this.Dictionary.items.getValue(this.dictionaryProperties.xObject);\n let parentXObjects;\n if (typeof this.pdfDocument !== 'undefined') {\n parentXObjects = this.pdfDocument.sections.element.items.getValue(this.dictionaryProperties.resources).items.getValue(this.dictionaryProperties.xObject);\n }\n let values = this.Dictionary.items.values();\n let hasSameImageStream = false;\n let oldReference;\n if (typeof this.pdfDocument !== 'undefined' && (typeof parentXObjects === undefined || parentXObjects == null)) {\n parentXObjects = new PdfDictionary();\n this.pdfDocument.sections.element.items.getValue(this.dictionaryProperties.resources).items.setValue(this.dictionaryProperties.xObject, parentXObjects);\n }\n else if (typeof this.pdfDocument !== 'undefined') {\n let values = parentXObjects.items.values();\n for (let i = 0; i < values.length; i++) {\n if (typeof values[i] !== 'undefined' && typeof values[i].element !== 'undefined') {\n if (values[i].element.data[0] === arg1.element.data[0]) {\n oldReference = values[i];\n hasSameImageStream = true;\n }\n }\n }\n }\n if (xobjects == null) {\n xobjects = new PdfDictionary();\n this.Dictionary.items.setValue(this.dictionaryProperties.xObject, xobjects);\n }\n if (hasSameImageStream && typeof oldReference !== 'undefined') {\n xobjects.items.setValue(arg2.value, oldReference);\n }\n else {\n let reference = new PdfReferenceHolder(arg1.element);\n xobjects.items.setValue(arg2.value, reference);\n if (typeof this.pdfDocument !== 'undefined') {\n parentXObjects.items.setValue(arg2.value, reference);\n }\n }\n /* tslint:enable */\n }\n }\n}\n/* tslint:disable */\n/**\n * Used to create new guid for resources.\n * @private\n */\nclass Guid {\n /**\n * Generate `new GUID`.\n * @private\n */\n static getNewGuidString() {\n return 'aaaaaaaa-aaaa-4aaa-baaa-aaaaaaaaaaaa'.replace(/[ab]/g, (c) => {\n let random = Math.random() * 16 | 0;\n let result = c === 'a' ? random : (random & 0x3 | 0x8);\n return result.toString(16);\n });\n }\n}\n/* tslint:enable */\n\n/**\n * `PdfTilingBrush` Implements a colored tiling brush.\n */\nclass PdfTilingBrush extends PdfBrush {\n /**\n * Initializes a new instance of the `PdfTilingBrush` class.\n * @public\n */\n constructor(arg1, arg2) {\n super();\n /**\n * Local variable to store Stroking.\n * @private\n */\n this.mStroking = false;\n /**\n * Local variable to store the tile start location.\n * @private\n */\n this.mLocation = new PointF(0, 0);\n /**\n * Local variable to store the dictionary properties.\n * @private\n */\n this.mDictionaryProperties = new DictionaryProperties();\n let rect = null;\n if (arg1 instanceof Rectangle) {\n rect = arg1;\n }\n else if (arg1 instanceof SizeF) {\n rect = new Rectangle(0, 0, arg1.width, arg1.height);\n }\n if (arg2 !== null && arg2 instanceof PdfPage) {\n this.mPage = arg2;\n }\n this.brushStream = new PdfStream();\n this.mResources = new PdfResources();\n this.brushStream.items.setValue(this.mDictionaryProperties.resources, this.mResources);\n this.setBox(rect);\n this.setObligatoryFields();\n if (arg2 !== null && arg2 instanceof PdfPage) {\n this.mPage = arg2;\n this.graphics.colorSpace = arg2.document.colorSpace;\n }\n }\n /**\n * Initializes a new instance of the `PdfTilingBrush` class.\n * @private\n * @param rectangle The size of the smallest brush cell.\n * @param page The Current Page Object.\n * @param location The Tile start location.\n * @param matrix The matrix.\n */\n initialize(rectangle, page, location, matrix) {\n this.mPage = page;\n this.mLocation = location;\n this.mTransformationMatrix = matrix;\n this.tempBrushStream = this.brushStream;\n this.brushStream = new PdfStream();\n let tempResource = new PdfResources();\n this.brushStream.items.setValue(this.mDictionaryProperties.resources, tempResource);\n this.setBox(rectangle);\n this.setObligatoryFields();\n return this;\n }\n //Properties\n /**\n * Location representing the start position of the tiles.\n * @public\n */\n get location() {\n return this.mLocation;\n }\n set location(value) {\n this.mLocation = value;\n }\n /**\n * Sets the obligatory fields.\n * @private\n */\n setObligatoryFields() {\n this.brushStream.items.setValue(this.mDictionaryProperties.patternType, new PdfNumber(1));\n // Tiling brush.\n this.brushStream.items.setValue(this.mDictionaryProperties.paintType, new PdfNumber(1));\n // Coloured.\n this.brushStream.items.setValue(this.mDictionaryProperties.tilingType, new PdfNumber(1));\n // Constant spacing.\n this.brushStream.items.setValue(this.mDictionaryProperties.xStep, new PdfNumber((this.mBox.right - this.mBox.left)));\n this.brushStream.items.setValue(this.mDictionaryProperties.yStep, new PdfNumber((this.mBox.bottom - this.mBox.top)));\n if ((this.mPage != null) && (this.mLocation != null)) {\n if ((this.mTransformationMatrix == null && typeof this.mTransformationMatrix === 'undefined')) {\n // Transform the tile origin to fit the location\n let tileTransform = (this.mPage.size.height % this.rectangle.size.height) - (this.mLocation.y);\n /* tslint:disable-next-line:max-line-length */\n this.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray([1, 0, 0, 1, this.mLocation.x, tileTransform]));\n }\n else {\n let tileTransform = 0;\n // Transform the tile origin to fit the location\n let elements = this.mTransformationMatrix.matrix.elements;\n if ((this.mPage.size.height > this.rectangle.size.height)) {\n tileTransform = (this.mTransformationMatrix.matrix.offsetY\n - (this.mPage.size.height % this.rectangle.size.height));\n }\n else {\n tileTransform = ((this.mPage.size.height % this.rectangle.size.height) + this.mTransformationMatrix.matrix.offsetY);\n }\n this.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray([\n elements[0], elements[1], elements[2], elements[3], elements[4], tileTransform\n ]));\n }\n }\n }\n /**\n * Sets the BBox coordinates.\n * @private\n */\n setBox(box) {\n this.mBox = box;\n let rect = new RectangleF(this.mBox.left, this.mBox.top, this.mBox.right, this.mBox.bottom);\n this.brushStream.items.setValue(this.mDictionaryProperties.bBox, PdfArray.fromRectangle(rect));\n }\n //Properties\n /**\n * Gets the boundary box of the smallest brush cell.\n * @public\n */\n get rectangle() {\n return this.mBox;\n }\n /**\n * Gets the size of the smallest brush cell.\n * @public\n */\n get size() {\n return this.mBox.size;\n }\n /**\n * Gets Graphics context of the brush.\n */\n get graphics() {\n if ((this.mGraphics == null && typeof this.mGraphics === 'undefined')) {\n let gr = new GetResourceEventHandler(this);\n let g = new PdfGraphics(this.size, gr, this.brushStream);\n this.mGraphics = g;\n this.mResources = this.getResources();\n this.mGraphics.initializeCoordinates();\n }\n return this.mGraphics;\n }\n /**\n * Gets the resources and modifies the template dictionary.\n * @public\n */\n getResources() {\n return this.mResources;\n }\n /**\n * Gets or sets a value indicating whether this PdfTilingBrush\n * is used for stroking operations.\n */\n get stroking() {\n return this.mStroking;\n }\n set stroking(value) {\n this.mStroking = value;\n }\n //PdfBrush methods\n /**\n * Creates a new copy of a brush.\n * @public\n */\n clone() {\n let brush = this.initialize(this.rectangle, this.mPage, this.location, this.mTransformationMatrix);\n if ((this.mTransformationMatrix != null) && (this.mTransformationMatrix.matrix != null)) {\n /* tslint:disable-next-line:max-line-length */\n brush.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray(this.mTransformationMatrix.matrix.elements));\n }\n brush.brushStream.data = this.tempBrushStream.data;\n brush.mResources = new PdfResources(this.mResources);\n brush.brushStream.items.setValue(this.mDictionaryProperties.resources, brush.mResources);\n return brush;\n }\n /**\n * Monitors the changes of the brush and modify PDF state respectfully.\n * @param brush The brush\n * @param streamWriter The stream writer\n * @param getResources The get resources delegate.\n * @param saveChanges if set to true the changes should be saved anyway.\n * @param currentColorSpace The current color space.\n */\n /* tslint:disable-next-line:max-line-length */\n monitorChanges(brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n let diff = false;\n if (brush !== this) {\n // Set the Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mStroking);\n // Set the pattern for non-stroking operations.\n let resources1 = getResources.getResources();\n let name1 = resources1.getName(this);\n streamWriter.setColourWithPattern(null, name1, this.mStroking);\n diff = true;\n }\n else if (brush instanceof PdfTilingBrush) {\n // Set the /Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mStroking);\n // Set the pattern for non-stroking operations.\n let resources = getResources.getResources();\n let name = resources.getName(this);\n streamWriter.setColourWithPattern(null, name, this.mStroking);\n diff = true;\n }\n return diff;\n }\n /**\n * Resets the changes, which were made by the brush.\n * In other words resets the state to the initial one.\n * @param streamWriter The stream writer.\n */\n resetChanges(streamWriter) {\n // We shouldn't do anything to reset changes.\n // All changes will be reset automatically by setting a new colour space.\n }\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @public\n */\n get element() {\n return this.brushStream;\n }\n}\n\n/**\n * PdfGraphics.ts class for EJ2-PDF\n */\n/**\n * `PdfGraphics` class represents a graphics context of the objects.\n * It's used for performing all the graphics operations.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * //graphics of the page\n * let page1Graphics : PdfGraphics = page1.graphics;\n * // draw the text on the page1 graphics\n * page1Graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * //\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nclass PdfGraphics {\n constructor(arg1, arg2, arg3) {\n /**\n * Represents the `Current color space`.\n * @private\n */\n this.currentColorSpace = PdfColorSpace.Rgb;\n /**\n * Stores `previous rendering mode`.\n * @private\n */\n this.previousTextRenderingMode = TextRenderingMode.Fill;\n /**\n * Previous `character spacing` value or 0.\n * @private\n */\n this.previousCharacterSpacing = 0.0;\n /**\n * Previous `word spacing` value or 0.\n * @private\n */\n this.previousWordSpacing = 0.0;\n /**\n * The `previously used text scaling` value.\n * @private\n */\n this.previousTextScaling = 100.0;\n /**\n * Instance of `ProcedureSets` class.\n * @private\n */\n this.procedureSets = new ProcedureSets();\n /**\n * To check wihether it is a `direct text rendering`.\n * @default true\n * @private\n */\n this.isNormalRender = true;\n /**\n * check whether to `use font size` to calculate the shift.\n * @default false\n * @private\n */\n this.isUseFontSize = false;\n /**\n * check whether the font is in `italic type`.\n * @default false\n * @private\n */\n this.isItalic = false;\n /**\n * Check whether it is an `emf Text Matrix`.\n * @default false\n * @private\n */\n this.isEmfTextScaled = false;\n /**\n * Check whether it is an `emf` call.\n * @default false\n * @private\n */\n this.isEmf = false;\n /**\n * Check whether it is an `emf plus` call.\n * @default false\n * @private\n */\n this.isEmfPlus = false;\n /**\n * Check whether it is in `base line format`.\n * @default true\n * @private\n */\n this.isBaselineFormat = true;\n /**\n * Emf Text `Scaling Factor`.\n * @private\n */\n this.emfScalingFactor = new SizeF(0, 0);\n /**\n * To check whether the `last color space` of document and garphics is saved.\n * @private\n */\n this.colorSpaceChanged = false;\n /**\n * Stores an instance of `DictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isOverloadWithPosition = false;\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isPointOverload = false;\n /**\n * Current colorspaces.\n * @hidden\n * @private\n */\n this.currentColorSpaces = ['RGB', 'CMYK', 'GrayScale', 'Indexed'];\n /**\n * Checks the current image `is optimized` or not.\n * @default false.\n * @private\n */\n this.isImageOptimized = false;\n /**\n * Stores the `graphics states`.\n * @private\n */\n this.graphicsState = [];\n /**\n * Indicates whether the object `had trasparency`.\n * @default false\n * @private\n */\n this.istransparencySet = false;\n /**\n * Stores the instance of `PdfAutomaticFieldInfoCollection` class .\n * @default null\n * @private\n */\n this.internalAutomaticFields = null;\n /**\n * Stores the index of the start line that should draw with in the next page.\n * @private\n */\n this.startCutIndex = -1;\n this.getResources = arg2;\n this.canvasSize = arg1;\n if (arg3 instanceof PdfStreamWriter) {\n this.pdfStreamWriter = arg3;\n }\n else {\n this.pdfStreamWriter = new PdfStreamWriter(arg3);\n }\n this.initialize();\n }\n // Properties\n /**\n * Returns the `result` after drawing string.\n * @private\n */\n get stringLayoutResult() {\n return this.pdfStringLayoutResult;\n }\n /**\n * Gets the `size` of the canvas.\n * @private\n */\n get size() {\n return this.canvasSize;\n }\n /**\n * Gets and Sets the value of `MediaBox upper right bound`.\n * @private\n */\n get mediaBoxUpperRightBound() {\n if (typeof this.internalMediaBoxUpperRightBound === 'undefined') {\n this.internalMediaBoxUpperRightBound = 0;\n }\n return this.internalMediaBoxUpperRightBound;\n }\n set mediaBoxUpperRightBound(value) {\n this.internalMediaBoxUpperRightBound = value;\n }\n /**\n * Gets the `size` of the canvas reduced by margins and page templates.\n * @private\n */\n get clientSize() {\n return new SizeF(this.clipBounds.width, this.clipBounds.height);\n }\n /**\n * Gets or sets the current `color space` of the document\n * @private\n */\n get colorSpace() {\n return this.currentColorSpace;\n }\n set colorSpace(value) {\n this.currentColorSpace = value;\n }\n /**\n * Gets the `stream writer`.\n * @private\n */\n get streamWriter() {\n return this.pdfStreamWriter;\n }\n /**\n * Gets the `transformation matrix` reflecting current transformation.\n * @private\n */\n get matrix() {\n if (this.transformationMatrix == null) {\n this.transformationMatrix = new PdfTransformationMatrix();\n }\n return this.transformationMatrix;\n }\n /**\n * Gets the `layer` for the graphics, if exists.\n * @private\n */\n get layer() {\n return this.pageLayer;\n }\n /**\n * Gets the `page` for this graphics, if exists.\n * @private\n */\n get page() {\n return this.pageLayer.page;\n }\n get automaticFields() {\n if (this.internalAutomaticFields == null || typeof this.internalAutomaticFields === 'undefined') {\n this.internalAutomaticFields = new PdfAutomaticFieldInfoCollection();\n }\n return this.internalAutomaticFields;\n }\n //Implementation\n /**\n * `Initializes` this instance.\n * @private\n */\n initialize() {\n this.bStateSaved = false;\n this.currentPen = null;\n this.currentBrush = null;\n this.currentFont = null;\n this.currentColorSpace = PdfColorSpace.Rgb;\n this.bCSInitialized = false;\n this.transformationMatrix = null;\n this.previousTextRenderingMode = (-1); //.Fill;\n this.previousCharacterSpacing = -1.0;\n this.previousWordSpacing = -1.0;\n this.previousTextScaling = -100.0;\n // this.m_trasparencies = null;\n this.currentStringFormat = null;\n this.clipBounds = new RectangleF(new PointF(0, 0), this.size);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.pdf);\n }\n drawPdfTemplate(template, location, size) {\n if (typeof size === 'undefined') {\n if (template == null) {\n throw Error('ArgumentNullException-template');\n }\n this.drawPdfTemplate(template, location, template.size);\n }\n else {\n // let crossTable : PdfCrossTable = null;\n // if (this.pageLayer != null) {\n // crossTable = (this.page as PdfPage).section.parentDocument.crossTable;\n // }\n if (template == null) {\n throw Error('ArgumentNullException-template');\n }\n let scaleX = (template.width > 0) ? size.width / template.width : 1;\n let scaleY = (template.height > 0) ? size.height / template.height : 1;\n let bNeedScale = !(scaleX === 1 && scaleY === 1);\n // Save state.\n let state = this.save();\n // Take into consideration that rect location is bottom/left.\n let matrix = new PdfTransformationMatrix();\n if (this.pageLayer != null) {\n this.getTranslateTransform(location.x, location.y + size.height, matrix);\n }\n if (bNeedScale) {\n this.getScaleTransform(scaleX, scaleY, matrix);\n }\n this.pdfStreamWriter.modifyCtm(matrix);\n // Output template.\n let resources = this.getResources.getResources();\n let name = resources.getName(template);\n this.pdfStreamWriter.executeObject(name);\n // Restore state.\n this.restore(state);\n //Transfer automatic fields from template.\n let g = template.graphics;\n if (g != null) {\n for (let index = 0; index < g.automaticFields.automaticFields.length; index++) {\n let fieldInfo = g.automaticFields.automaticFields[index];\n let newLocation = new PointF(fieldInfo.location.x + location.x, fieldInfo.location.y + location.y);\n let scalingX = template.size.width == 0 ? 0 : size.width / template.size.width;\n let scalingY = template.size.height == 0 ? 0 : size.height / template.size.height;\n this.automaticFields.add(new PdfAutomaticFieldInfo(fieldInfo.field, newLocation, scalingX, scalingY));\n this.page.dictionary.modify();\n }\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageB);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageC);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageI);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n }\n }\n /* tslint:disable */\n /**\n * @public\n */\n drawString(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) {\n if (typeof arg1 === 'string' && arg2 instanceof PdfFont && (arg3 instanceof PdfPen || arg3 === null) && (arg4 instanceof PdfBrush || arg4 === null) && typeof arg5 === 'number' && typeof arg6 === 'number' && (arg7 instanceof PdfStringFormat || arg7 === null) && typeof arg8 === 'undefined') {\n this.isOverloadWithPosition = true;\n this.drawString(arg1, arg2, arg3, arg4, arg5, arg6, (this.clientSize.width - arg5), 0, arg7);\n }\n else {\n let temparg3 = arg3;\n let temparg4 = arg4;\n let temparg5 = arg5;\n let temparg6 = arg6;\n let temparg7 = arg7;\n let temparg8 = arg8;\n let temparg9 = arg9;\n let layouter = new PdfStringLayouter();\n let result = layouter.layout(arg1, arg2, temparg9, new SizeF(temparg7, temparg8), this.isOverloadWithPosition, this.clientSize);\n if (!result.empty) {\n let rect = this.checkCorrectLayoutRectangle(result.actualSize, temparg5, temparg6, temparg9);\n if (temparg7 <= 0) {\n temparg5 = rect.x;\n temparg7 = rect.width;\n }\n if (temparg8 <= 0) {\n temparg6 = rect.y;\n temparg8 = rect.height;\n }\n this.drawStringLayoutResult(result, arg2, temparg3, temparg4, new RectangleF(temparg5, temparg6, temparg7, temparg8), temparg9);\n this.isEmfTextScaled = false;\n this.emfScalingFactor = new SizeF(0, 0);\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n this.isNormalRender = true;\n this.pdfStringLayoutResult = result;\n this.isUseFontSize = false;\n }\n } /* tslint:enable */\n drawLine(arg1, arg2, arg3, arg4, arg5) {\n if (arg2 instanceof PointF) {\n let temparg2 = arg2;\n let temparg3 = arg3;\n this.drawLine(arg1, temparg2.x, temparg2.y, temparg3.x, temparg3.y);\n }\n else {\n let temparg2 = arg2;\n let temparg3 = arg3;\n let temparg4 = arg4;\n let temparg5 = arg5;\n this.stateControl(arg1, null, null);\n let sw = this.streamWriter;\n sw.beginPath(temparg2, temparg3);\n sw.appendLineSegment(temparg4, temparg5);\n sw.strokePath();\n this.getResources.getResources().requireProcedureSet(this.procedureSets.pdf);\n }\n }\n /* tslint:disable */\n drawRectangle(arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof PdfPen && typeof arg2 === 'number') {\n let temparg3 = arg3;\n this.drawRectangle(arg1, null, arg2, temparg3, arg4, arg5);\n }\n else if (arg1 instanceof PdfBrush && typeof arg2 === 'number') {\n let temparg3 = arg3;\n this.drawRectangle(null, arg1, arg2, temparg3, arg4, arg5);\n }\n else {\n let temparg3 = arg3;\n let temparg4 = arg4;\n let temparg5 = arg5;\n let temparg6 = arg6;\n if ((arg2 instanceof PdfTilingBrush)) {\n this.bCSInitialized = false;\n let xOffset = (this.matrix.matrix.offsetX + temparg3);\n let yOffset;\n if (((this.layer != null) && (this.layer.page != null))) {\n yOffset = ((this.layer.page.size.height - this.matrix.matrix.offsetY) + temparg4);\n }\n else {\n yOffset = ((this.clientSize.height - this.matrix.matrix.offsetY) + temparg4);\n }\n (arg2).location = new PointF(xOffset, yOffset);\n (arg2).graphics.colorSpace = this.colorSpace;\n }\n else if ((arg2 instanceof PdfGradientBrush)) {\n arg2.colorSpace = this.colorSpace;\n }\n if (arg2 instanceof PdfSolidBrush && arg2.color.isEmpty) {\n arg2 = null;\n }\n let temparg1 = arg1;\n let temparg2 = arg2;\n this.stateControl(temparg1, temparg2, null);\n this.streamWriter.appendRectangle(temparg3, temparg4, temparg5, temparg6);\n this.drawPathHelper(temparg1, temparg2, false);\n }\n }\n drawPathHelper(arg1, arg2, arg3, arg4) {\n if (typeof arg3 === 'boolean') {\n let temparg3 = arg3;\n this.drawPathHelper(arg1, arg2, PdfFillMode.Winding, temparg3);\n }\n else {\n let temparg3 = arg3;\n let isPen = arg1 != null;\n let isBrush = arg2 != null;\n let isEvenOdd = (temparg3 === PdfFillMode.Alternate);\n if (isPen && isBrush) {\n this.streamWriter.fillStrokePath(isEvenOdd);\n }\n else if (!isPen && !isBrush) {\n this.streamWriter.endPath();\n }\n else if (isPen) {\n this.streamWriter.strokePath();\n }\n else {\n this.streamWriter.fillPath(isEvenOdd);\n }\n }\n }\n /* tslint:disable */\n drawImage(arg1, arg2, arg3, arg4, arg5) {\n if (typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'undefined') {\n let size = arg1.physicalDimension;\n this.drawImage(arg1, arg2, arg3, size.width, size.height);\n }\n else {\n let temparg2 = arg2;\n let temparg3 = arg3;\n let temparg5 = arg5;\n arg1.save();\n let matrix = new PdfTransformationMatrix();\n this.getTranslateTransform(temparg2, (temparg3 + temparg5), matrix);\n this.getScaleTransform(arg4, arg5, matrix);\n this.pdfStreamWriter.write('q');\n this.pdfStreamWriter.modifyCtm(matrix);\n // Output template.\n let resources = this.getResources.getResources();\n if (typeof this.pageLayer !== 'undefined' && this.page != null) {\n resources.document = this.page.document;\n }\n let name = resources.getName(arg1);\n if (typeof this.pageLayer !== 'undefined') {\n this.page.setResources(resources);\n }\n this.pdfStreamWriter.executeObject(name);\n this.pdfStreamWriter.write(Operators.restoreState);\n this.pdfStreamWriter.write(Operators.newLine);\n let resource = this.getResources.getResources();\n resource.requireProcedureSet(this.procedureSets.imageB);\n resource.requireProcedureSet(this.procedureSets.imageC);\n resource.requireProcedureSet(this.procedureSets.imageI);\n resource.requireProcedureSet(this.procedureSets.text);\n }\n }\n //Implementation\n /* tslint:disable */\n /**\n * Returns `bounds` of the line info.\n * @private\n */\n getLineBounds(lineIndex, result, font, layoutRectangle, format) {\n let bounds;\n if (!result.empty && lineIndex < result.lineCount && lineIndex >= 0) {\n let line = result.lines[lineIndex];\n let vShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n let y = vShift + layoutRectangle.y + (result.lineHeight * lineIndex);\n let lineWidth = line.width;\n let hShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n let lineIndent = this.getLineIndent(line, format, layoutRectangle, (lineIndex === 0));\n hShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n let x = layoutRectangle.x + hShift;\n /* tslint:disable */\n let width = (!this.shouldJustify(line, layoutRectangle.width, format)) ? lineWidth - lineIndent : layoutRectangle.width - lineIndent; /* tslint:enable */\n let height = result.lineHeight;\n bounds = new RectangleF(x, y, width, height);\n }\n else {\n bounds = new RectangleF(0, 0, 0, 0);\n }\n return bounds;\n }\n /**\n * Creates `lay outed rectangle` depending on the text settings.\n * @private\n */\n checkCorrectLayoutRectangle(textSize, x, y, format) {\n let layoutedRectangle = new RectangleF(x, y, textSize.width, textSize.width);\n if (format != null) {\n switch (format.alignment) {\n case PdfTextAlignment.Center:\n layoutedRectangle.x -= layoutedRectangle.width / 2;\n break;\n case PdfTextAlignment.Right:\n layoutedRectangle.x -= layoutedRectangle.width;\n break;\n }\n switch (format.lineAlignment) {\n case PdfVerticalAlignment.Middle:\n layoutedRectangle.y -= layoutedRectangle.height / 2;\n break;\n case PdfVerticalAlignment.Bottom:\n layoutedRectangle.y -= layoutedRectangle.height;\n break;\n }\n }\n return layoutedRectangle;\n }\n /**\n * Sets the `layer` for the graphics.\n * @private\n */\n setLayer(layer) {\n this.pageLayer = layer;\n let page = layer.page;\n if (page != null && typeof page !== 'undefined') {\n page.beginSave = this.pageSave;\n }\n }\n /**\n * Adding page number field before page saving.\n * @private\n */\n /* tslint:disable */\n pageSave(page) {\n if (page.graphics.automaticFields != null) {\n for (let i = 0; i < page.graphics.automaticFields.automaticFields.length; i++) {\n let fieldInfo = page.graphics.automaticFields.automaticFields[i];\n fieldInfo.field.performDraw(page.graphics, fieldInfo.location, fieldInfo.scalingX, fieldInfo.scalingY);\n }\n }\n }\n /**\n * `Draws a layout result`.\n * @private\n */\n drawStringLayoutResult(result, font, pen, brush, layoutRectangle, format) {\n if (!result.empty) {\n this.applyStringSettings(font, pen, brush, format, layoutRectangle);\n // Set text scaling\n let textScaling = (format != null) ? format.horizontalScalingFactor : 100.0;\n if (textScaling !== this.previousTextScaling && !this.isEmfTextScaled) {\n this.pdfStreamWriter.setTextScaling(textScaling);\n this.previousTextScaling = textScaling;\n }\n let height = (format == null || format.lineSpacing === 0) ? font.height : format.lineSpacing + font.height;\n let subScript = (format != null && format.subSuperScript === PdfSubSuperScript.SubScript);\n let shift = 0;\n shift = (subScript) ? height - (font.height + font.metrics.getDescent(format)) : (height - font.metrics.getAscent(format));\n this.shift = shift;\n this.pdfStreamWriter.startNextLine(layoutRectangle.x, layoutRectangle.y - shift);\n this.pdfStreamWriter.setLeading(+height);\n let resultHeight = 0;\n let remainingString = '';\n for (let i = 0; i < result.lines.length; i++) {\n resultHeight += result.lineHeight;\n if ((layoutRectangle.y + resultHeight) > this.clientSize.height) {\n this.startCutIndex = i;\n break;\n }\n }\n for (let j = this.startCutIndex; (j < result.lines.length && j >= 0); j++) {\n remainingString += result.lines[j].text;\n }\n let bounds = new RectangleF(layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height);\n this.drawLayoutResult(result, font, format, layoutRectangle);\n this.underlineStrikeoutText(pen, brush, result, font, bounds, format);\n this.isEmfPlus = false;\n this.isUseFontSize = false;\n if (this.startCutIndex !== -1) {\n let page = this.getNextPage();\n page.graphics.drawString(remainingString, font, pen, brush, layoutRectangle.x, 0, layoutRectangle.width, 0, format);\n }\n }\n else {\n throw new Error('ArgumentNullException:result');\n }\n }\n /**\n * Gets the `next page`.\n * @private\n */\n getNextPage() {\n let section = this.currentPage.section;\n let nextPage = null;\n let index = section.indexOf(this.currentPage);\n if (index === section.count - 1) {\n nextPage = section.add();\n }\n else {\n nextPage = section.getPages()[index + 1];\n }\n return nextPage;\n }\n setClip(rectangle, mode) {\n if (typeof mode === 'undefined') {\n this.setClip(rectangle, PdfFillMode.Winding);\n }\n else {\n this.pdfStreamWriter.appendRectangle(rectangle);\n this.pdfStreamWriter.clipPath((mode === PdfFillMode.Alternate));\n }\n }\n /**\n * Applies all the `text settings`.\n * @private\n */\n applyStringSettings(font, pen, brush, format, bounds) {\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n else if ((brush instanceof PdfGradientBrush)) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n let tm = this.getTextRenderingMode(pen, brush, format);\n this.stateControl(pen, brush, font, format);\n this.pdfStreamWriter.beginText();\n if ((tm) !== this.previousTextRenderingMode) {\n this.pdfStreamWriter.setTextRenderingMode(tm);\n this.previousTextRenderingMode = tm;\n }\n // Set character spacing.\n let cs = (format != null) ? format.characterSpacing : 0;\n if (cs !== this.previousCharacterSpacing && !this.isEmfTextScaled) {\n this.pdfStreamWriter.setCharacterSpacing(cs);\n this.previousCharacterSpacing = cs;\n }\n // Set word spacing.\n // NOTE: it works only if the space code is equal to 32 (0x20).\n let ws = (format != null) ? format.wordSpacing : 0;\n if (ws !== this.previousWordSpacing) {\n this.pdfStreamWriter.setWordSpacing(ws);\n this.previousWordSpacing = ws;\n }\n }\n /**\n * Calculates `shift value` if the text is vertically aligned.\n * @private\n */\n getTextVerticalAlignShift(textHeight, boundsHeight, format) {\n let shift = 0;\n if (boundsHeight >= 0 && format != null && format.lineAlignment !== PdfVerticalAlignment.Top) {\n switch (format.lineAlignment) {\n case PdfVerticalAlignment.Middle:\n shift = (boundsHeight - textHeight) / 2;\n break;\n case PdfVerticalAlignment.Bottom:\n shift = boundsHeight - textHeight;\n break;\n }\n }\n return shift;\n }\n /* tslint:disable */\n /**\n * `Draws layout result`.\n * @private\n */\n drawLayoutResult(result, font, format, layoutRectangle) {\n let vAlignShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n if (vAlignShift !== 0) {\n this.pdfStreamWriter.startNextLine(0, vAlignShift);\n }\n let ttfFont = font;\n let unicode = (ttfFont != null && ttfFont.isUnicode);\n let embed = (ttfFont != null && ttfFont.isEmbedFont);\n let lines = result.lines;\n for (let i = 0, len = lines.length; (i < len && i !== this.startCutIndex); i++) {\n let lineInfo = lines[i];\n let line = lineInfo.text;\n let lineWidth = lineInfo.width;\n let hAlignShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n let lineIndent = this.getLineIndent(lineInfo, format, layoutRectangle, (i === 0));\n hAlignShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n if (hAlignShift !== 0 && !this.isEmfTextScaled) {\n this.pdfStreamWriter.startNextLine(hAlignShift, 0);\n }\n if (unicode) {\n this.drawUnicodeLine(lineInfo, layoutRectangle, font, format);\n }\n else {\n this.drawAsciiLine(lineInfo, layoutRectangle, font, format);\n }\n if (hAlignShift !== 0 && !this.isEmfTextScaled) {\n this.pdfStreamWriter.startNextLine(-hAlignShift, 0);\n }\n if (this.isOverloadWithPosition && lines.length > 1) {\n this.pdfStreamWriter.startNextLine(-(layoutRectangle.x), 0);\n layoutRectangle.x = 0;\n layoutRectangle.width = this.clientSize.width;\n this.isOverloadWithPosition = false;\n this.isPointOverload = true;\n }\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n if (vAlignShift !== 0) {\n this.pdfStreamWriter.startNextLine(0, -(vAlignShift - result.lineHeight));\n }\n this.pdfStreamWriter.endText();\n }\n /**\n * `Draws Ascii line`.\n * @private\n */\n drawAsciiLine(lineInfo, layoutRectangle, font, format) {\n this.justifyLine(lineInfo, layoutRectangle.width, format);\n let value = '';\n if (lineInfo.text.indexOf('(') !== -1 || lineInfo.text.indexOf(')') !== -1) {\n for (let i = 0; i < lineInfo.text.length; i++) {\n if (lineInfo.text[i] === '(') {\n value += '\\\\\\(';\n }\n else if (lineInfo.text[i] === ')') {\n value += '\\\\\\)';\n }\n else {\n value += lineInfo.text[i];\n }\n }\n }\n if (value === '') {\n value = lineInfo.text;\n }\n let line = '(' + value + ')';\n this.pdfStreamWriter.showNextLineText(new PdfString(line));\n }\n /**\n * Draws unicode line.\n * @private\n */\n drawUnicodeLine(lineInfo, layoutRectangle, font, format) {\n let line = lineInfo.text;\n let lineWidth = lineInfo.width;\n let rtl = (format !== null && format.rightToLeft);\n let useWordSpace = (format !== null && (format.wordSpacing !== 0 || format.alignment === PdfTextAlignment.Justify));\n let ttfFont = font;\n let wordSpacing = this.justifyLine(lineInfo, layoutRectangle.width, format);\n let rtlRender = new RtlRenderer();\n if (rtl || (format !== null && format.textDirection !== PdfTextDirection.None)) {\n let blocks = null;\n let rightAlign = (format !== null && format.alignment === PdfTextAlignment.Right);\n if (format !== null && format.textDirection !== PdfTextDirection.None) {\n /* tslint:disable-next-line:max-line-length */\n blocks = rtlRender.layout(line, ttfFont, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, useWordSpace, format);\n }\n else {\n blocks = rtlRender.layout(line, ttfFont, rightAlign, useWordSpace, format);\n }\n let words = null;\n if (blocks.length > 1) {\n if (format !== null && format.textDirection !== PdfTextDirection.None) {\n /* tslint:disable-next-line:max-line-length */\n words = rtlRender.splitLayout(line, ttfFont, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, useWordSpace, format);\n }\n else {\n words = rtlRender.splitLayout(line, ttfFont, rightAlign, useWordSpace, format);\n }\n }\n else {\n words = [line];\n }\n this.drawUnicodeBlocks(blocks, words, ttfFont, format, wordSpacing);\n }\n else {\n if (useWordSpace) {\n let result = this.breakUnicodeLine(line, ttfFont, null);\n let blocks = result.tokens;\n let words = result.words;\n this.drawUnicodeBlocks(blocks, words, ttfFont, format, wordSpacing);\n }\n else {\n let token = this.convertToUnicode(line, ttfFont);\n let value = this.getUnicodeString(token);\n this.streamWriter.showNextLineText(value);\n }\n }\n }\n /**\n * Draws array of unicode tokens.\n */\n /* tslint:disable */\n drawUnicodeBlocks(blocks, words, font, format, wordSpacing) {\n /* tslint:enable */\n if (blocks == null) {\n throw new Error('Argument Null Exception : blocks');\n }\n if (words == null) {\n throw new Error('Argument Null Exception : words');\n }\n if (font == null) {\n throw new Error('Argument Null Exception : font');\n }\n this.streamWriter.startNextLine();\n let x = 0;\n let xShift = 0;\n let firstLineIndent = 0;\n let paragraphIndent = 0;\n try {\n if (format !== null) {\n firstLineIndent = format.firstLineIndent;\n paragraphIndent = format.paragraphIndent;\n format.firstLineIndent = 0;\n format.paragraphIndent = 0;\n }\n let spaceWidth = font.getCharWidth(StringTokenizer.whiteSpace, format) + wordSpacing;\n let characterSpacing = (format != null) ? format.characterSpacing : 0;\n let wordSpace = (format !== null && wordSpacing === 0) ? format.wordSpacing : 0;\n spaceWidth += characterSpacing + wordSpace;\n for (let i = 0; i < blocks.length; i++) {\n let token = blocks[i];\n let word = words[i];\n let tokenWidth = 0;\n if (x !== 0) {\n this.streamWriter.startNextLine(x, 0);\n }\n if (word.length > 0) {\n tokenWidth += /*Utils.Round(*/ font.measureString(word, format).width /*)*/;\n tokenWidth += characterSpacing;\n let val = this.getUnicodeString(token);\n this.streamWriter.showText(val);\n }\n if (i !== blocks.length - 1) {\n x = tokenWidth + spaceWidth;\n xShift += x;\n }\n }\n // Rolback current line position.\n if (xShift > 0) {\n this.streamWriter.startNextLine(-xShift, 0);\n }\n }\n finally {\n if (format !== null) {\n format.firstLineIndent = firstLineIndent;\n format.paragraphIndent = paragraphIndent;\n }\n }\n }\n /**\n * Breakes the unicode line to the words and converts symbols to glyphs.\n */\n breakUnicodeLine(line, ttfFont, words) {\n if (line === null) {\n throw new Error('Argument Null Exception : line');\n }\n words = line.split(null);\n let tokens = [];\n for (let i = 0; i < words.length; i++) {\n // Reconvert string according to unicode standard.\n let word = words[i];\n let token = this.convertToUnicode(word, ttfFont);\n tokens[i] = token;\n }\n return { tokens: tokens, words: words };\n }\n /**\n * Creates PdfString from the unicode text.\n */\n getUnicodeString(token) {\n if (token === null) {\n throw new Error('Argument Null Exception : token');\n }\n let val = new PdfString(token);\n val.converted = true;\n val.encode = InternalEnum.ForceEncoding.Ascii;\n return val;\n }\n /**\n * Converts to unicode format.\n */\n convertToUnicode(text, ttfFont) {\n let token = null;\n if (text == null) {\n throw new Error('Argument Null Exception : text');\n }\n if (ttfFont == null) {\n throw new Error('Argument Null Exception : ttfFont');\n }\n if (ttfFont.fontInternal instanceof UnicodeTrueTypeFont) {\n let ttfReader = ttfFont.fontInternal.ttfReader;\n ttfFont.setSymbols(text);\n token = ttfReader.convertString(text);\n let bytes = PdfString.toUnicodeArray(token, false);\n token = PdfString.byteToString(bytes);\n }\n return token;\n }\n /**\n * `Justifies` the line if needed.\n * @private\n */\n justifyLine(lineInfo, boundsWidth, format) {\n let line = lineInfo.text;\n let lineWidth = lineInfo.width;\n let shouldJustify = this.shouldJustify(lineInfo, boundsWidth, format);\n let hasWordSpacing = (format != null && format.wordSpacing !== 0);\n let symbols = StringTokenizer.spaces;\n let whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n let wordSpace = 0;\n if (shouldJustify) {\n // Correct line width.\n if (hasWordSpacing) {\n lineWidth -= (whitespacesCount * format.wordSpacing);\n }\n let difference = boundsWidth - lineWidth;\n wordSpace = difference / whitespacesCount;\n this.pdfStreamWriter.setWordSpacing(wordSpace);\n }\n else {\n // If there is justifying, but the line shouldn't be justified, restore default word spacing.\n if (hasWordSpacing) {\n this.pdfStreamWriter.setWordSpacing(format.wordSpacing);\n }\n else {\n this.pdfStreamWriter.setWordSpacing(0);\n }\n }\n return wordSpace;\n }\n /**\n * `Reset` or reinitialize the current graphic value.\n * @private\n */\n reset(size) {\n this.canvasSize = size;\n this.streamWriter.clear();\n this.initialize();\n this.initializeCoordinates();\n }\n /**\n * Checks whether the line should be `justified`.\n * @private\n */\n shouldJustify(lineInfo, boundsWidth, format) {\n let line = lineInfo.text;\n let lineWidth = lineInfo.width;\n let justifyStyle = (format != null && format.alignment === PdfTextAlignment.Justify);\n let goodWidth = (boundsWidth >= 0 && lineWidth < boundsWidth);\n let symbols = StringTokenizer.spaces;\n let whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n let hasSpaces = (whitespacesCount > 0 && line[0] !== StringTokenizer.whiteSpace);\n let goodLineBreakStyle = ((lineInfo.lineType & LineType.LayoutBreak) > 0);\n /* tslint:disable */\n let shouldJustify = (justifyStyle && goodWidth && hasSpaces && (goodLineBreakStyle || format.alignment === PdfTextAlignment.Justify)); /* tslint:enable */\n return shouldJustify;\n }\n /* tslint:disable */\n /**\n * Emulates `Underline, Strikeout` of the text if needed.\n * @private\n */\n underlineStrikeoutText(pen, brush, result, font, layoutRectangle, format) {\n if (font.underline || font.strikeout) {\n // Calculate line width.\n let linePen = this.createUnderlineStikeoutPen(pen, brush, font, format);\n if (linePen != null) {\n // Approximate line positions.\n let vShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n let underlineYOffset = 0;\n underlineYOffset = layoutRectangle.y + vShift + font.metrics.getAscent(format) + 1.5 * linePen.width;\n let strikeoutYOffset = layoutRectangle.y + vShift + font.metrics.getHeight(format) / 2 + 1.5 * linePen.width;\n let lines = result.lines;\n // Run through the text and draw lines.\n for (let i = 0, len = result.lineCount; i < len; i++) {\n let lineInfo = lines[i];\n let line = lineInfo.text;\n let lineWidth = lineInfo.width;\n let hShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n let lineIndent = this.getLineIndent(lineInfo, format, layoutRectangle, (i === 0));\n hShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n let x1 = layoutRectangle.x + hShift;\n /* tslint:disable */\n let x2 = (!this.shouldJustify(lineInfo, layoutRectangle.width, format)) ? x1 + lineWidth - lineIndent : x1 + layoutRectangle.width - lineIndent;\n /* tslint:enable */\n if (font.underline) {\n let y = underlineYOffset;\n this.drawLine(linePen, x1, y, x2, y);\n underlineYOffset += result.lineHeight;\n }\n if (font.strikeout) {\n let y = strikeoutYOffset;\n this.drawLine(linePen, x1, y, x2, y);\n strikeoutYOffset += result.lineHeight;\n }\n if (this.isPointOverload && lines.length > 1) {\n layoutRectangle.x = 0;\n layoutRectangle.width = this.clientSize.width;\n }\n }\n this.isPointOverload = false;\n }\n }\n }\n /**\n * `Creates a pen` for drawing lines in the text.\n * @private\n */\n createUnderlineStikeoutPen(pen, brush, font, format) {\n // Calculate line width.\n let lineWidth = font.metrics.getSize(format) / 20;\n let linePen = null;\n // Create a pen fo the lines.\n if (pen != null) {\n linePen = new PdfPen(pen.color, lineWidth);\n }\n else if (brush != null) {\n linePen = new PdfPen(brush, lineWidth);\n }\n return linePen;\n }\n /**\n * Return `text rendering mode`.\n * @private\n */\n getTextRenderingMode(pen, brush, format) {\n let tm = TextRenderingMode.None;\n if (pen != null && brush != null) {\n tm = TextRenderingMode.FillStroke;\n }\n else if (pen != null) {\n tm = TextRenderingMode.Stroke;\n }\n else {\n tm = TextRenderingMode.Fill;\n }\n if (format != null && format.clipPath) {\n tm |= TextRenderingMode.ClipFlag;\n }\n return tm;\n }\n /**\n * Returns `line indent` for the line.\n * @private\n */\n getLineIndent(lineInfo, format, layoutBounds, firstLine) {\n let lineIndent = 0;\n let firstParagraphLine = ((lineInfo.lineType & LineType.FirstParagraphLine) > 0);\n if (format != null && firstParagraphLine) {\n lineIndent = (firstLine) ? format.firstLineIndent : format.paragraphIndent;\n lineIndent = (layoutBounds.width > 0) ? Math.min(layoutBounds.width, lineIndent) : lineIndent;\n }\n return lineIndent;\n }\n /**\n * Calculates shift value if the line is `horizontaly aligned`.\n * @private\n */\n getHorizontalAlignShift(lineWidth, boundsWidth, format) {\n let shift = 0;\n if (boundsWidth >= 0 && format != null && format.alignment !== PdfTextAlignment.Left) {\n switch (format.alignment) {\n case PdfTextAlignment.Center:\n shift = (boundsWidth - lineWidth) / 2;\n break;\n case PdfTextAlignment.Right:\n shift = boundsWidth - lineWidth;\n break;\n }\n }\n return shift;\n }\n /**\n * Gets or sets the value that indicates `text direction` mode.\n * @private\n */\n rightToLeft(format) {\n let rtl = (format != null && format.rightToLeft);\n if (format !== null && typeof format !== 'undefined') {\n if (format.textDirection !== PdfTextDirection.None && typeof format.textDirection !== 'undefined') {\n rtl = true;\n }\n }\n return rtl;\n }\n stateControl(pen, brush, font, format) {\n if (typeof format === 'undefined') {\n this.stateControl(pen, brush, font, null);\n }\n else {\n if (brush instanceof PdfGradientBrush) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n let saveState = false;\n if (brush !== null) {\n if (typeof this.pageLayer !== 'undefined' && this.pageLayer != null) {\n if (this.colorSpaceChanged === false) {\n this.lastDocumentCS = this.pageLayer.page.document.colorSpace;\n this.lastGraphicsCS = this.pageLayer.page.graphics.colorSpace;\n this.colorSpace = this.pageLayer.page.document.colorSpace;\n this.currentColorSpace = this.pageLayer.page.document.colorSpace;\n this.colorSpaceChanged = true;\n }\n }\n this.initCurrentColorSpace(this.currentColorSpace);\n }\n else if (pen != null) {\n if (typeof this.pageLayer !== 'undefined' && this.pageLayer != null) {\n /* tslint:disable */\n this.colorSpace = this.pageLayer.page.document.colorSpace;\n this.currentColorSpace = this.pageLayer.page.document.colorSpace;\n }\n this.initCurrentColorSpace(this.currentColorSpace);\n }\n this.penControl(pen, saveState);\n this.brushControl(brush, saveState);\n this.fontControl(font, format, saveState);\n }\n }\n /**\n * Initializes the `current color space`.\n * @private\n */\n initCurrentColorSpace(colorspace) {\n let re = this.getResources.getResources();\n if (!this.bCSInitialized) {\n if (this.currentColorSpace != PdfColorSpace.GrayScale) {\n this.pdfStreamWriter.setColorSpace('Device' + this.currentColorSpaces[this.currentColorSpace], true);\n this.pdfStreamWriter.setColorSpace('Device' + this.currentColorSpaces[this.currentColorSpace], false);\n this.bCSInitialized = true;\n }\n else {\n this.pdfStreamWriter.setColorSpace('DeviceGray', true);\n this.pdfStreamWriter.setColorSpace('DeviceGray', false);\n this.bCSInitialized = true;\n }\n }\n }\n /**\n * Controls the `pen state`.\n * @private\n */\n penControl(pen, saveState) {\n if (pen != null) {\n this.currentPen = pen;\n /* tslint:disable */\n pen.monitorChanges(this.currentPen, this.pdfStreamWriter, this.getResources, saveState, this.colorSpace, this.matrix.clone());\n /* tslint:enable */\n this.currentPen = pen.clone();\n }\n }\n /**\n * Controls the `brush state`.\n * @private\n */\n brushControl(brush, saveState) {\n if (brush != null && typeof brush !== 'undefined') {\n let b = brush.clone();\n let lgb = b;\n if (lgb !== null && typeof lgb !== 'undefined' && !(brush instanceof PdfSolidBrush) && !(brush instanceof PdfTilingBrush)) {\n let m = lgb.matrix;\n let matrix = this.matrix.clone();\n if ((m != null)) {\n m.multiply(matrix);\n matrix = m;\n }\n lgb.matrix = matrix;\n }\n this.currentBrush = lgb;\n b.monitorChanges(this.currentBrush, this.pdfStreamWriter, this.getResources, saveState, this.colorSpace);\n /* tslint:enable */\n this.currentBrush = brush;\n brush = null;\n }\n }\n /**\n * Saves the font and other `font settings`.\n * @private\n */\n fontControl(font, format, saveState) {\n if (font != null) {\n let curSubSuper = (format != null) ? format.subSuperScript : PdfSubSuperScript.None;\n /* tslint:disable */\n let prevSubSuper = (this.currentStringFormat != null) ? this.currentStringFormat.subSuperScript : PdfSubSuperScript.None; /* tslint:enable */\n if (saveState || font !== this.currentFont || curSubSuper !== prevSubSuper) {\n let resources = this.getResources.getResources();\n this.currentFont = font;\n this.currentStringFormat = format;\n let size = font.metrics.getSize(format);\n /* tslint:disable */\n this.isEmfTextScaled = false;\n let fontName = resources.getName(font);\n this.pdfStreamWriter.setFont(font, fontName, size);\n }\n }\n }\n setTransparency(arg1, arg2, arg3) {\n if (typeof arg2 === 'undefined') {\n this.istransparencySet = true;\n this.setTransparency(arg1, arg1, PdfBlendMode.Normal);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n this.setTransparency(arg1, arg2, PdfBlendMode.Normal);\n }\n else {\n if (this.trasparencies == null) {\n this.trasparencies = new TemporaryDictionary();\n }\n let transp = null;\n let td = new TransparencyData(arg1, arg2, arg3);\n if (this.trasparencies.containsKey(td)) {\n transp = this.trasparencies.getValue(td);\n }\n if (transp == null) {\n transp = new PdfTransparency(arg1, arg2, arg3);\n this.trasparencies.setValue(td, transp);\n }\n let resources = this.getResources.getResources();\n let name = resources.getName(transp);\n let sw = this.streamWriter;\n sw.setGraphicsState(name);\n }\n }\n clipTranslateMargins(x, y, left, top, right, bottom) {\n if (x instanceof RectangleF && typeof y === 'undefined') {\n this.clipBounds = x;\n this.pdfStreamWriter.writeComment('Clip margins.');\n this.pdfStreamWriter.appendRectangle(x);\n this.pdfStreamWriter.closePath();\n this.pdfStreamWriter.clipPath(false);\n this.pdfStreamWriter.writeComment('Translate co-ordinate system.');\n this.translateTransform(x.x, x.y);\n }\n else if (typeof x === 'number') {\n let clipArea = new RectangleF(left, top, this.size.width - left - right, this.size.height - top - bottom);\n this.clipBounds = clipArea;\n this.pdfStreamWriter.writeComment(\"Clip margins.\");\n this.pdfStreamWriter.appendRectangle(clipArea);\n this.pdfStreamWriter.closePath();\n this.pdfStreamWriter.clipPath(false);\n this.pdfStreamWriter.writeComment(\"Translate co-ordinate system.\");\n this.translateTransform(x, y);\n }\n }\n /**\n * `Updates y` co-ordinate.\n * @private\n */\n updateY(y) {\n return -y;\n }\n /**\n * Used to `translate the transformation`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set translate transform\n * page1.graphics.translateTransform(100, 100);\n * //\n * // draw the rectangle after applying translate transform\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param offsetX The x-coordinate of the translation.\n * @param offsetY The y-coordinate of the translation.\n */\n translateTransform(offsetX, offsetY) {\n let matrix = new PdfTransformationMatrix();\n this.getTranslateTransform(offsetX, offsetY, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n }\n /**\n * `Translates` coordinates of the input matrix.\n * @private\n */\n getTranslateTransform(x, y, input) {\n input.translate(x, this.updateY(y));\n return input;\n }\n /* tslint:disable */\n /**\n * Applies the specified `scaling operation` to the transformation matrix of this Graphics by prepending it to the object's transformation matrix.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // apply scaling trasformation\n * page1.graphics.scaleTransform(1.5, 2);\n * //\n * // draw the rectangle after applying scaling transform\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param scaleX Scale factor in the x direction.\n * @param scaleY Scale factor in the y direction.\n */\n /* tslint:enable */\n scaleTransform(scaleX, scaleY) {\n let matrix = new PdfTransformationMatrix();\n this.getScaleTransform(scaleX, scaleY, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n }\n /**\n * `Scales` coordinates of the input matrix.\n * @private\n */\n getScaleTransform(x, y, input) {\n if (input == null) {\n input = new PdfTransformationMatrix();\n }\n input.scale(x, y);\n return input;\n }\n /**\n * Applies the specified `rotation` to the transformation matrix of this Graphics.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set RotateTransform with 25 degree of angle\n * page1.graphics.rotateTransform(25);\n * //\n * // draw the rectangle after RotateTransformation\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param angle Angle of rotation in degrees.\n */\n rotateTransform(angle) {\n let matrix = new PdfTransformationMatrix();\n this.getRotateTransform(angle, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n }\n /**\n * `Initializes coordinate system`.\n * @private\n */\n initializeCoordinates() {\n // Matrix equation: TM(T-1)=M', where T=[1 0 0 -1 0 h]\n this.pdfStreamWriter.writeComment('Change co-ordinate system to left/top.');\n // Translate co-ordinates only, don't flip.\n if (this.mediaBoxUpperRightBound !== -(this.size.height)) {\n if (this.cropBox == null) {\n if (this.mediaBoxUpperRightBound === this.size.height || this.mediaBoxUpperRightBound === 0) {\n this.translateTransform(0, this.updateY(this.size.height));\n }\n else {\n this.translateTransform(0, this.updateY(this.mediaBoxUpperRightBound));\n }\n }\n }\n }\n /**\n * `Rotates` coordinates of the input matrix.\n * @private\n */\n getRotateTransform(angle, input) {\n if (input == null || typeof input === 'undefined') {\n input = new PdfTransformationMatrix();\n }\n input.rotate(this.updateY(angle));\n return input;\n }\n /**\n * `Saves` the current state of this Graphics and identifies the saved state with a GraphicsState.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // save the graphics state\n * let state1 : PdfGraphicsState = page1.graphics.save();\n * //\n * page1.graphics.scaleTransform(1.5, 2);\n * // draw the rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // restore the graphics state\n * page1.graphics.restore(state1);\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n save() {\n let state = new PdfGraphicsState(this, this.matrix.clone());\n state.brush = this.currentBrush;\n state.pen = this.currentPen;\n state.font = this.currentFont;\n state.colorSpace = this.currentColorSpace;\n state.characterSpacing = this.previousCharacterSpacing;\n state.wordSpacing = this.previousWordSpacing;\n state.textScaling = this.previousTextScaling;\n state.textRenderingMode = this.previousTextRenderingMode;\n this.graphicsState.push(state);\n this.pdfStreamWriter.saveGraphicsState();\n return state;\n }\n restore(state) {\n if (typeof state === 'undefined') {\n if (this.graphicsState.length > 0) {\n this.doRestoreState();\n }\n }\n else {\n if (this.graphicsState.indexOf(state) !== -1) {\n for (;;) {\n if (this.graphicsState.length === 0) {\n break;\n }\n let popState = this.doRestoreState();\n if (popState === state) {\n break;\n }\n }\n }\n }\n }\n /**\n * `Restores graphics state`.\n * @private\n */\n doRestoreState() {\n let state = this.graphicsState.pop();\n this.transformationMatrix = state.matrix;\n this.currentBrush = state.brush;\n this.currentPen = state.pen;\n this.currentFont = state.font;\n this.currentColorSpace = state.colorSpace;\n this.previousCharacterSpacing = state.characterSpacing;\n this.previousWordSpacing = state.wordSpacing;\n this.previousTextScaling = state.textScaling;\n this.previousTextRenderingMode = state.textRenderingMode;\n this.pdfStreamWriter.restoreGraphicsState();\n return state;\n }\n /* tslint:enable */\n /**\n * `Draws the specified path`, using its original physical size, at the location specified by a coordinate pair.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * //Create new PDF path.\n * let path : PdfPath = new PdfPath();\n * //Add line path points.\n * path.addLine(new PointF(10, 100), new PointF(10, 200));\n * path.addLine(new PointF(100, 100), new PointF(100, 200));\n * path.addLine(new PointF(100, 200), new PointF(55, 150));\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(255, 0, 0));\n * // set brush\n * let brush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the path\n * page1.graphics.drawPath(pen, brush, path);\n * //\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param pen Color of the text.\n * @param brush Color of the text.\n * @param path Draw path.\n */\n drawPath(pen, brush, path) {\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n else if (brush instanceof PdfGradientBrush) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n this.stateControl(pen, brush, null);\n this.buildUpPath(path.pathPoints, path.pathTypes);\n this.drawPathHelper(pen, brush, path.fillMode, false);\n }\n /* tslint:disable-next-line:max-line-length */\n drawArc(arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n if (arg2 instanceof RectangleF) {\n this.drawArc(arg1, arg2.x, arg2.y, arg2.width, arg2.height, arg3, arg4);\n }\n else {\n if ((arg7 !== 0)) {\n this.stateControl(arg1, null, null);\n this.constructArcPath(arg2, arg3, (arg2 + arg4), (arg3 + arg5), arg6, arg7);\n this.drawPathHelper(arg1, null, false);\n }\n }\n }\n /**\n * Builds up the path.\n * @private\n */\n buildUpPath(arg1, arg2) {\n let cnt = arg1.length;\n for (let i = 0; i < cnt; ++i) {\n let typeValue = 0;\n let point = arg1[i];\n switch (((arg2[i] & (PdfGraphics.pathTypesValuesMask)))) {\n case PathPointType.Start:\n this.pdfStreamWriter.beginPath(point.x, point.y);\n break;\n case PathPointType.Bezier3:\n let p2 = new PointF(0, 0);\n let p3 = new PointF(0, 0);\n let result1 = this.getBezierPoints(arg1, arg2, i, p2, p3);\n this.pdfStreamWriter.appendBezierSegment(point, result1.p2, result1.p3);\n i = result1.i;\n break;\n case PathPointType.Line:\n this.pdfStreamWriter.appendLineSegment(point);\n break;\n default:\n throw new Error('ArithmeticException - Incorrect path formation.');\n }\n typeValue = arg2[i];\n this.checkFlags(typeValue);\n }\n }\n /**\n * Gets the bezier points from respective arrays.\n * @private\n */\n /* tslint:disable-next-line:max-line-length */\n getBezierPoints(points, types, i, p2, p3) {\n ++i;\n if ((((types[i] & PdfGraphics.pathTypesValuesMask)) === PathPointType.Bezier3)) {\n p2 = points[i];\n ++i;\n if ((((types[i] & PdfGraphics.pathTypesValuesMask)) === PathPointType.Bezier3)) {\n p3 = points[i];\n }\n else {\n throw new Error('ArgumentException : errorMsg');\n }\n }\n else {\n throw new Error('ArgumentException : errorMsg');\n }\n return { i: i, p2: p2, p3: p3 };\n }\n /**\n * Checks path point type flags.\n * @private\n */\n checkFlags(type) {\n if ((((type & (PathPointType.CloseSubpath))) === PathPointType.CloseSubpath)) {\n this.pdfStreamWriter.closePath();\n }\n }\n /**\n * Constructs the arc path using Bezier curves.\n * @private\n */\n constructArcPath(x1, y1, x2, y2, startAng, sweepAngle) {\n let points = this.getBezierArc(x1, y1, x2, y2, startAng, sweepAngle);\n if ((points.length === 0)) {\n return;\n }\n let pt = [points[0], points[1], points[2], points[3], points[4], points[5], points[6], points[7]];\n this.pdfStreamWriter.beginPath(pt[0], pt[1]);\n let i = 0;\n for (i = 0; i < points.length; i = i + 8) {\n pt = [points[i], points[i + 1], points[i + 2], points[i + 3], points[i + 4], points[i + 5], points[i + 6], points[i + 7]];\n this.pdfStreamWriter.appendBezierSegment(pt[2], pt[3], pt[4], pt[5], pt[6], pt[7]);\n }\n }\n /**\n * Gets the bezier points for arc constructing.\n * @private\n */\n getBezierArc(numX1, numY1, numX2, numY2, s1, e1) {\n if ((numX1 > numX2)) {\n let tmp;\n tmp = numX1;\n numX1 = numX2;\n numX2 = tmp;\n }\n if ((numY2 > numY1)) {\n let tmp;\n tmp = numY1;\n numY1 = numY2;\n numY2 = tmp;\n }\n let fragAngle1;\n let numFragments;\n if ((Math.abs(e1) <= 90)) {\n fragAngle1 = e1;\n numFragments = 1;\n }\n else {\n numFragments = (Math.ceil((Math.abs(e1) / 90)));\n fragAngle1 = (e1 / numFragments);\n }\n let xcen = ((numX1 + numX2) / 2);\n let ycen = ((numY1 + numY2) / 2);\n let rx = ((numX2 - numX1) / 2);\n let ry = ((numY2 - numY1) / 2);\n let halfAng = ((fragAngle1 * (Math.PI / 360)));\n let kappa = (Math.abs(4.0 / 3.0 * (1.0 - Math.cos(halfAng)) / Math.sin(halfAng)));\n let pointsList = [];\n for (let i = 0; (i < numFragments); i++) {\n let thetaValue0 = (((s1 + (i * fragAngle1)) * (Math.PI / 180)));\n let thetaValue1 = (((s1 + ((i + 1) * fragAngle1)) * (Math.PI / 180)));\n let cos0 = (Math.cos(thetaValue0));\n let cos1 = (Math.cos(thetaValue1));\n let sin0 = (Math.sin(thetaValue0));\n let sin1 = (Math.sin(thetaValue1));\n if ((fragAngle1 > 0)) {\n /* tslint:disable-next-line:max-line-length */\n pointsList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 - (kappa * sin0)))), (ycen - (ry * (sin0 + (kappa * cos0)))), (xcen + (rx * (cos1 + (kappa * sin1)))), (ycen - (ry * (sin1 - (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n pointsList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 + (kappa * sin0)))), (ycen - (ry * (sin0 - (kappa * cos0)))), (xcen + (rx * (cos1 - (kappa * sin1)))), (ycen - (ry * (sin1 + (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n }\n return pointsList;\n }\n}\n// Constants\n/**\n * Specifies the mask of `path type values`.\n * @private\n */\nPdfGraphics.pathTypesValuesMask = 0xf;\n/**\n * Checks whether the object is `transparencyObject`.\n * @hidden\n * @private\n */\nPdfGraphics.transparencyObject = false;\n/**\n * `GetResourceEventHandler` class is alternate for event handlers and delegates.\n * @private\n * @hidden\n */\nclass GetResourceEventHandler {\n /**\n * Return the instance of `PdfResources` class.\n * @private\n */\n getResources() {\n return this.sender.getResources();\n }\n /**\n * Initialize instance of `GetResourceEventHandler` class.\n * Alternate for event handlers and delegates.\n * @private\n */\n constructor(sender) {\n this.sender = sender;\n }\n}\nclass PdfGraphicsState {\n constructor(graphics, matrix) {\n /**\n * Stores `previous rendering mode`.\n * @default TextRenderingMode.Fill\n * @private\n */\n this.internalTextRenderingMode = TextRenderingMode.Fill;\n /**\n * `Previous character spacing` value or 0.\n * @default 0.0\n * @private\n */\n this.internalCharacterSpacing = 0.0;\n /**\n * `Previous word spacing` value or 0.\n * @default 0.0\n * @private\n */\n this.internalWordSpacing = 0.0;\n /**\n * The previously used `text scaling value`.\n * @default 100.0\n * @private\n */\n this.internalTextScaling = 100.0;\n /**\n * `Current color space`.\n * @default PdfColorSpace.Rgb\n * @private\n */\n this.pdfColorSpace = PdfColorSpace.Rgb;\n if (typeof graphics !== 'undefined') {\n this.pdfGraphics = graphics;\n this.transformationMatrix = matrix;\n }\n }\n // Properties\n /**\n * Gets the parent `graphics object`.\n * @private\n */\n get graphics() {\n return this.pdfGraphics;\n }\n /**\n * Gets the `current matrix`.\n * @private\n */\n get matrix() {\n return this.transformationMatrix;\n }\n /**\n * Gets or sets the `current character spacing`.\n * @private\n */\n get characterSpacing() {\n return this.internalCharacterSpacing;\n }\n set characterSpacing(value) {\n this.internalCharacterSpacing = value;\n }\n /**\n * Gets or sets the `word spacing` value.\n * @private\n */\n get wordSpacing() {\n return this.internalWordSpacing;\n }\n set wordSpacing(value) {\n this.internalWordSpacing = value;\n }\n /**\n * Gets or sets the `text scaling` value.\n * @private\n */\n get textScaling() {\n return this.internalTextScaling;\n }\n set textScaling(value) {\n this.internalTextScaling = value;\n }\n /**\n * Gets or sets the `current pen` object.\n * @private\n */\n get pen() {\n return this.pdfPen;\n }\n set pen(value) {\n this.pdfPen = value;\n }\n /**\n * Gets or sets the `brush`.\n * @private\n */\n get brush() {\n return this.pdfBrush;\n }\n set brush(value) {\n this.pdfBrush = value;\n }\n /**\n * Gets or sets the `current font` object.\n * @private\n */\n get font() {\n return this.pdfFont;\n }\n set font(value) {\n this.pdfFont = value;\n }\n /**\n * Gets or sets the `current color space` value.\n * @private\n */\n get colorSpace() {\n return this.pdfColorSpace;\n }\n set colorSpace(value) {\n this.pdfColorSpace = value;\n }\n /**\n * Gets or sets the `text rendering mode`.\n * @private\n */\n get textRenderingMode() {\n return this.internalTextRenderingMode;\n }\n set textRenderingMode(value) {\n this.internalTextRenderingMode = value;\n }\n}\nclass TransparencyData {\n // Constructors\n /**\n * Initializes a new instance of the `TransparencyData` class.\n * @private\n */\n constructor(alphaPen, alphaBrush, blendMode) {\n this.alphaPen = alphaPen;\n this.alphaBrush = alphaBrush;\n this.blendMode = blendMode;\n }\n}\n\n/**\n * The `PdfPageLayer` used to create layers in PDF document.\n * @private\n */\nclass PdfPageLayer {\n constructor(page, streamClipPageTemplates) {\n // private bSaved : boolean;\n /**\n * Local Variable to store the `color space` of the document.\n * @private\n */\n this.pdfColorSpace = PdfColorSpace.Rgb;\n /**\n * Local Variable to set `visibility`.\n * @default true\n * @private\n */\n this.isVisible = true;\n /**\n * Indicates if `Sublayer` is present.\n * @default false\n * @private\n */\n this.sublayer = false;\n /**\n * Local variable to store `length` of the graphics.\n * @default 0\n * @private\n */\n this.contentLength = 0;\n /**\n * Instance for `PdfDictionaryProperties` Class.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n if (page === null) {\n throw new Error('ArgumentNullException:page');\n }\n this.pdfPage = page;\n this.clipPageTemplates = true;\n if (typeof streamClipPageTemplates === 'undefined') {\n this.content = new PdfStream();\n }\n else if (streamClipPageTemplates instanceof PdfStream || streamClipPageTemplates === null) {\n if (streamClipPageTemplates === null) {\n throw new Error('ArgumentNullException:stream');\n }\n this.content = streamClipPageTemplates;\n }\n else {\n this.content = new PdfStream();\n this.clipPageTemplates = streamClipPageTemplates;\n }\n }\n // Properties\n /**\n * Get or set the `color space`.\n * @private\n */\n get colorSpace() {\n return this.pdfColorSpace;\n }\n set colorSpace(value) {\n this.pdfColorSpace = value;\n }\n /**\n * Gets parent `page` of the layer.\n * @private\n */\n get page() {\n return this.pdfPage;\n }\n /**\n * Gets and Sets the `id of the layer`.\n * @private\n */\n get layerId() {\n return this.layerid;\n }\n set layerId(value) {\n this.layerid = value;\n }\n /**\n * Gets or sets the `name` of the layer.\n * @private\n */\n get name() {\n return this.layerName;\n }\n set name(value) {\n this.layerName = value;\n }\n /**\n * Gets or sets the `visibility` of the layer.\n * @private\n */\n get visible() {\n return this.isVisible;\n }\n set visible(value) {\n this.isVisible = value;\n }\n /**\n * Gets `Graphics` context of the layer, used to draw various graphical content on layer.\n * @private\n */\n get graphics() {\n if ((this.pdfGraphics == null)) {\n this.initializeGraphics(this.page);\n }\n return this.pdfGraphics;\n }\n /**\n * Gets the collection of `PdfPageLayer`, this collection handle by the class 'PdfPageLayerCollection'.\n * @private\n */\n get layers() {\n if (this.layer == null) {\n this.layer = new PdfPageLayerCollection(this.page);\n this.layer.sublayer = true;\n return this.layer;\n }\n else {\n return this.layer;\n }\n }\n // Implementation\n /**\n * `Adds` a new PDF Page layer.\n * @private\n */\n add() {\n let layer = new PdfPageLayer(this.pdfPage);\n layer.name = '';\n return layer;\n }\n /**\n * Returns a value indicating the `sign` of a single-precision floating-point number.\n * @private\n */\n sign(number) {\n if (number === 0) {\n return 0;\n }\n else if (number > 0) {\n return 1;\n }\n else {\n return -1;\n }\n }\n /**\n * `Initializes Graphics context` of the layer.\n * @private\n */\n initializeGraphics(page) {\n let oPage = page;\n let gr = new GetResourceEventHandler(this.page);\n this.pdfGraphics = new PdfGraphics(page.size, gr, this.content);\n this.pdfGraphics.mediaBoxUpperRightBound = 0;\n if (oPage != null) {\n let sc = oPage.section.parent;\n if (sc != null) {\n this.pdfGraphics.colorSpace = sc.document.colorSpace;\n this.colorSpace = sc.document.colorSpace;\n }\n }\n // Transform coordinates to the left/top and activate margins.\n let isSame = (this.sign(page.origin.y) === this.sign(page.origin.x));\n // if (page != null) {\n if (page.origin.x >= 0 && page.origin.y >= 0 || !(isSame)) {\n this.pdfGraphics.initializeCoordinates();\n }\n else {\n // this.m_graphics.InitializeCoordinates(page);\n }\n let clipRect = oPage.section.getActualBounds(oPage, true);\n let margins = oPage.section.pageSettings.margins;\n if (this.clipPageTemplates) {\n if (page.origin.x >= 0 && page.origin.y >= 0) {\n this.pdfGraphics.clipTranslateMargins(clipRect);\n }\n }\n else {\n this.graphics.clipTranslateMargins(clipRect.x, clipRect.y, margins.left, margins.top, margins.right, margins.bottom);\n }\n this.pdfGraphics.setLayer(this);\n // this.bSaved = false;\n }\n // IPdfWrapper Members\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get element() {\n return this.content;\n }\n}\n\n/**\n * PdfCollection.ts class for EJ2-PDF\n * The class used to handle the collection of PdF objects.\n */\nclass PdfCollection {\n // Constructors\n /**\n * Initializes a new instance of the `Collection` class.\n * @private\n */\n constructor() {\n //\n }\n // Properties\n /**\n * Gets the `Count` of stored objects.\n * @private\n */\n get count() {\n if (typeof this.collection === 'undefined') {\n this.collection = [];\n }\n return this.collection.length;\n }\n /**\n * Gets the `list` of stored objects.\n * @private\n */\n get list() {\n if (typeof this.collection === 'undefined') {\n this.collection = [];\n }\n return this.collection;\n }\n}\n\n/**\n * PdfPageLayerCollection.ts class for EJ2-PDF\n */\n/**\n * The class provides methods and properties to handle the collections of `PdfPageLayer`.\n */\nclass PdfPageLayerCollection extends PdfCollection {\n constructor(page) {\n super();\n /**\n * Stores the `number of first level layers` in the document.\n * @default 0\n * @private\n */\n this.parentLayerCount = 0;\n /**\n * Indicates if `Sublayer` is present.\n * @default false\n * @private\n */\n this.sublayer = false;\n /**\n * Stores the `optional content dictionary`.\n * @private\n */\n this.optionalContent = new PdfDictionary();\n if (page instanceof PdfPageBase) {\n // if (page == null) {\n // throw new Error('ArgumentNullException:page');\n // }\n this.page = page;\n let lPage = page;\n // if (lPage != null) {\n this.parseLayers(lPage);\n // }\n }\n }\n items(index, value) {\n if (typeof index === 'number' && typeof value === 'undefined') {\n let obj = this.list[index];\n return obj;\n }\n else {\n if (value == null) {\n throw new Error('ArgumentNullException: layer');\n }\n if (value.page !== this.page) {\n throw new Error('ArgumentException: The layer belongs to another page');\n }\n // // Add/remove the layer.\n // let layer : PdfPageLayer = this.items(index);\n // if (layer != null) {\n // this.RemoveLayer(layer);\n // }\n // this.List[index] = value;\n // this.InsertLayer(index, value);\n }\n }\n add(firstArgument, secondArgument) {\n if (typeof firstArgument === 'undefined') {\n let layer = new PdfPageLayer(this.page);\n layer.name = '';\n this.add(layer);\n return layer;\n }\n else if (firstArgument instanceof PdfPageLayer) {\n // if (layer == null)\n // throw new ArgumentNullException(\"layer\");\n // if (layer.Page != m_page)\n // throw new ArgumentException(\"The layer belongs to another page\");\n let index = this.list.push(firstArgument);\n // Register layer.\n this.addLayer(index, firstArgument);\n return index;\n }\n else {\n return 0;\n }\n }\n /**\n * Registers `layer` at the page.\n * @private\n */\n addLayer(index, layer) {\n let reference = new PdfReferenceHolder(layer);\n this.page.contents.add(reference);\n }\n // private RemoveLayer(layer : PdfPageLayer) : void {\n // if (layer == null) {\n // throw new Error('ArgumentNullException:layer');\n // }\n // let reference : PdfReferenceHolder = new PdfReferenceHolder(layer);\n // if (this.page != null) {\n // this.page.Contents.Remove(reference);\n // }\n // }\n /**\n * Inserts `PdfPageLayer` into the collection at specified index.\n * @private\n */\n insert(index, layer) {\n // if (index < 0)\n // throw new ArgumentOutOfRangeException(\"index\", \"Value can not be less 0\");\n // if (layer == null)\n // throw new ArgumentNullException(\"layer\");\n // if (layer.Page != m_page)\n // throw new ArgumentException(\"The layer belongs to another page\");\n let list = [];\n let length = this.list.length;\n for (let i = index; i < length; i++) {\n list.push(this.list.pop());\n }\n this.list.push(layer);\n for (let i = 0; i < list.length; i++) {\n this.list.push(list[i]);\n }\n // Register layer.\n this.insertLayer(index, layer);\n }\n /**\n * Registers layer at the page.\n * @private\n */\n insertLayer(index, layer) {\n if (layer == null) {\n throw new Error('ArgumentNullException:layer');\n }\n let reference = new PdfReferenceHolder(layer);\n this.page.contents.insert(index, reference);\n }\n // tslint:disable\n /**\n * `Parses the layers`.\n * @private\n */\n parseLayers(loadedPage) {\n // if (loadedPage == null) {\n // throw new Error('ArgumentNullException:loadedPage');\n // }\n let contents = this.page.contents;\n let resource = this.page.getResources();\n let crossTable = null;\n crossTable = loadedPage.crossTable;\n // } else {\n // crossTable = (loadedPage as PdfLoadedPage).CrossTable;\n // Propertie = PdfCrossTable.Dereference(Resource[DictionaryProperties.Properties]) as PdfDictionary;\n // ocproperties = PdfCrossTable.Dereference((loadedPage as PdfLoadedPage).\n // Document.Catalog[DictionaryProperties.OCProperties]) as PdfDictionary;\n // }\n let saveStream = new PdfStream();\n let restoreStream = new PdfStream();\n let saveState = 'q';\n let restoreState = 'Q';\n // for (let index : number = 0; index < contents.Items.length; index++) {\n // let obj : IPdfPrimitive = contents[index];\n // let stream : PdfStream = crossTable.GetObject(obj) as PdfStream;\n // if (stream == null)\n // throw new PdfDocumentException(\"Invalid contents array.\");\n // // if (stream.Compress)\n // {\n // if (!loadedPage.Imported)\n // stream.Decompress();\n // }\n // byte[] contentId = stream.Data;\n // string str = PdfString.ByteToString(contentId);\n // if (!loadedPage.Imported && (contents.Count == 1) && ((stream.Data[stream.Data.Length - 2] ==\n // RestoreState) || (stream.Data[stream.Data.Length - 1] == RestoreState)))\n // {\n // byte[] content = stream.Data;\n // byte[] data = new byte[content.Length + 4];\n // data[0] = SaveState;\n // data[1] = NewLine;\n // content.CopyTo(data, 2);\n // data[data.Length - 2] = NewLine;\n // data[data.Length - 1] = RestoreState;\n // stream.Data = data;\n // }\n // if (ocproperties != null)\n // {\n // if (Propertie != null)\n // {\n // foreach (KeyValuePair prop in Propertie.Items)\n // {\n // String Key = prop.Key.ToString();\n // PdfReferenceHolder refh = prop.Value as PdfReferenceHolder;\n // PdfDictionary Dict = null;\n // if (refh != null)\n // {\n // Dict = refh.Object as PdfDictionary;\n // }\n // else\n // {\n // Dict = prop.Value as PdfDictionary;\n // }\n // PdfDictionary m_usage = PdfCrossTable.Dereference(Dict[DictionaryProperties.Usage]) as PdfDictionary;\n // if (m_usage != null)\n // {\n // if (str.Contains(Key))\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // PdfDictionary printoption = PdfCrossTable.Dereference(m_usage[DictionaryProperties.Print])\n // as PdfDictionary;\n // if (printoption != null)\n // {\n // layer.m_printOption = printoption;\n // foreach (KeyValuePair value in printoption.Items)\n // {\n // if (value.Key.Value.Equals(DictionaryProperties.PrintState))\n // {\n // string printState = (value.Value as PdfName).Value;\n // if (printState.Equals(DictionaryProperties.OCGON))\n // {\n // layer.PrintState = PdfPrintState.AlwaysPrint;\n // break;\n // }\n // else\n // {\n // layer.PrintState = PdfPrintState.NeverPrint;\n // break;\n // }\n // }\n // }\n // }\n // PdfString layerName = PdfCrossTable.Dereference(Dict[DictionaryProperties.Name]) as PdfString;\n // layer.Name = layerName.Value;\n // List.add(layer);\n // isLayerAdded = true;\n // if(!str.Contains(\"EMC\"))\n // break;\n // }\n // }\n // else\n // {\n // if (str.Contains(Key))\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // List.add(layer);\n // if(Dict.ContainsKey(DictionaryProperties.Name))\n // {\n // PdfString layerName = PdfCrossTable.Dereference(Dict[DictionaryProperties.Name]) as PdfString;\n // layer.Name = layerName.Value;\n // }\n // isLayerAdded = true;\n // break;\n // }\n // }\n // }\n // }\n // }\n // if (!isLayerAdded)\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // List.add(layer);\n // }\n // else\n // isLayerAdded = false;\n // }\n let saveData = [];\n saveData.push(saveState);\n saveStream.data = saveData;\n contents.insert(0, new PdfReferenceHolder(saveStream));\n saveData = [];\n saveData.push(restoreState);\n restoreStream.data = saveData;\n contents.insert(contents.count, new PdfReferenceHolder(restoreStream));\n }\n /**\n * Returns `index of` the `PdfPageLayer` in the collection if exists, -1 otherwise.\n * @private\n */\n indexOf(layer) {\n if (layer == null) {\n throw new Error('ArgumentNullException: layer');\n }\n let index = this.list.indexOf(layer);\n return index;\n }\n}\n\n/**\n * The abstract base class for all pages,\n * `PdfPageBase` class provides methods and properties to create PDF pages and its elements.\n * @private\n */\nclass PdfPageBase {\n //constructors\n /**\n * Initializes a new instance of the `PdfPageBase` class.\n * @private\n */\n constructor(dictionary) {\n /**\n * `Index` of the default layer.\n * @default -1.\n * @private\n */\n this.defLayerIndex = -1;\n /**\n * Local variable to store if page `updated`.\n * @default false.\n * @private\n */\n this.modified = false;\n /**\n * Instance of `DictionaryProperties` class.\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.pageDictionary = dictionary;\n }\n //Properties\n /**\n * Gets the `section` of a page.\n * @private\n */\n get section() {\n // if (this.pdfSection === null) {\n // throw new Error('PdfException : Page must be added to some section before using.');\n // }\n return this.pdfSection;\n }\n set section(value) {\n this.pdfSection = value;\n }\n /**\n * Gets the page `dictionary`.\n * @private\n */\n get dictionary() {\n return this.pageDictionary;\n }\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get element() {\n return this.pageDictionary;\n }\n /**\n * Gets the `default layer` of the page (Read only).\n * @private\n */\n get defaultLayer() {\n let layer = this.layers;\n let index = this.defaultLayerIndex;\n let returnlayer = layer.items(index);\n return returnlayer;\n }\n /**\n * Gets or sets `index of the default layer`.\n * @private\n */\n get defaultLayerIndex() {\n if (this.layerCollection.count === 0 || this.defLayerIndex === -1) {\n let layer = this.layerCollection.add();\n this.defLayerIndex = this.layerCollection.indexOf(layer);\n }\n return this.defLayerIndex;\n }\n /**\n * Gets the collection of the page's `layers` (Read only).\n * @private\n */\n get layers() {\n if (this.layerCollection == null || typeof this.layerCollection === 'undefined') {\n this.layerCollection = new PdfPageLayerCollection(this);\n }\n return this.layerCollection;\n }\n /**\n * Return an instance of `PdfResources` class.\n * @private\n */\n getResources() {\n if (this.resources == null) {\n this.resources = new PdfResources();\n this.dictionary.items.setValue(this.dictionaryProperties.resources, this.resources);\n }\n return this.resources;\n }\n /**\n * Gets `array of page's content`.\n * @private\n */\n get contents() {\n let obj = this.pageDictionary.items.getValue(this.dictionaryProperties.contents);\n let contents = obj;\n if (contents == null) {\n contents = new PdfArray();\n this.pageDictionary.items.setValue(this.dictionaryProperties.contents, contents);\n }\n return contents;\n }\n /**\n * Gets or sets` index of the default layer`.\n * @private\n */\n set defaultLayerIndex(value) {\n if (value < 0 || value > this.layers.count - 1) {\n throw new Error('ArgumentOutOfRangeException : value, Index can not be less 0 and greater Layers.Count - 1');\n }\n else {\n this.defLayerIndex = value;\n this.modified = true;\n }\n }\n /**\n * Sets the `resources`.\n * @private\n */\n setResources(res) {\n this.resources = res;\n this.dictionary.items.setValue(this.dictionaryProperties.resources, this.resources);\n this.modified = true;\n }\n}\n\n/**\n * `PdfAnnotationCollection` class represents the collection of 'PdfAnnotation' objects.\n * @private\n */\nclass PdfAnnotationCollection {\n constructor(page) {\n // Constants\n /**\n * `Error` constant message.\n * @private\n */\n this.alreadyExistsAnnotationError = 'This annotatation had been already added to page';\n /**\n * `Error` constant message.\n * @private\n */\n this.missingAnnotationException = 'Annotation is not contained in collection.';\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Array of the `annotations`.\n * @private\n */\n this.internalAnnotations = new PdfArray();\n /**\n * privte `list` for the annotations.\n * @private\n */\n this.lists = [];\n if (typeof page !== 'undefined') {\n this.page = page;\n }\n }\n /**\n * Gets the `PdfAnnotation` object at the specified index. Read-Only.\n * @private\n */\n get annotations() {\n return this.internalAnnotations;\n }\n set annotations(value) {\n this.internalAnnotations = value;\n }\n // Public methods\n /**\n * `Adds` a new annotation to the collection.\n * @private\n */\n add(annotation) {\n // this.SetPrint(annotation);\n this.doAdd(annotation);\n }\n /**\n * `Adds` a Annotation to collection.\n * @private\n */\n /* tslint:disable */\n doAdd(annotation) {\n if (typeof annotation.destination !== 'undefined') {\n let layout = new PdfStringLayouter();\n let layoutResult = layout.layout(annotation.text, annotation.font, annotation.stringFormat, new SizeF((annotation.bounds.width), 0), false, new SizeF(0, 0));\n let lastPosition = annotation.bounds.y;\n if (layoutResult.lines.length === 1) {\n let size = annotation.font.measureString(layoutResult.lines[0].text);\n annotation.bounds = new RectangleF(new PointF(annotation.bounds.x, lastPosition), size);\n annotation.text = layoutResult.lines[0].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annotation.text, annotation.font, null, annotation.brush, annotation.bounds.x, annotation.bounds.y, annotation.bounds.width, annotation.bounds.height, null);\n //Add annotation to dictionary.\n annotation.setPage(this.page);\n this.setColor(annotation);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n this.lists.push(annotation);\n }\n else {\n for (let i = 0; i < layoutResult.lines.length; i++) {\n let size = annotation.font.measureString(layoutResult.lines[i].text);\n if (i === 0) {\n annotation.bounds = new RectangleF(annotation.bounds.x, lastPosition, size.width, size.height);\n annotation.text = layoutResult.lines[i].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annotation.text, annotation.font, null, annotation.brush, annotation.bounds.x, lastPosition, size.width, size.height, null);\n //Add annotation to dictionary.\n annotation.setPage(this.page);\n this.setColor(annotation);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n this.lists.push(annotation);\n //Update y for drawing next line of the text.\n lastPosition += annotation.bounds.height;\n }\n else {\n let annot = annotation.clone();\n annot.bounds = new RectangleF(new PointF(annotation.bounds.x, lastPosition), size);\n annot.text = layoutResult.lines[i].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annot.text, annot.font, null, annot.brush, annot.bounds.x, annot.bounds.y, annot.bounds.width, annot.bounds.height, null);\n //Add annotation to dictionary.\n annot.setPage(this.page);\n this.setColor(annot);\n this.internalAnnotations.add(new PdfReferenceHolder(annot));\n this.lists.push(annot);\n //Update y for drawing next line of the text.\n lastPosition += annot.bounds.height;\n }\n }\n }\n }\n else {\n annotation.setPage(this.page);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n return this.lists.push(annotation);\n }\n }\n /* tslint:enable */\n /**\n * `Set a color of an annotation`.\n * @private\n */\n setColor(annotation) {\n let cs = PdfColorSpace.Rgb;\n let colours = annotation.color.toArray(cs);\n annotation.dictionary.items.setValue(this.dictionaryProperties.c, colours);\n }\n // IPdfWrapper Members\n /**\n * Gets the `Element` representing this object.\n * @private\n */\n get element() {\n return this.internalAnnotations;\n }\n}\n\n/**\n * Provides methods and properties to create pages and its elements.\n * `PdfPage` class inherited from the `PdfPageBase` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * //\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nclass PdfPage extends PdfPageBase {\n //constructors\n /**\n * Initialize the new instance for `PdfPage` class.\n * @private\n */\n constructor() {\n super(new PdfDictionary());\n /**\n * Stores the instance of `PdfAnnotationCollection` class.\n * @hidden\n * @default null\n * @private\n */\n this.annotationCollection = null;\n /**\n * Stores the instance of `PageBeginSave` event for Page Number Field.\n * @default null\n * @private\n */\n this.beginSave = null;\n this.initialize();\n }\n //Properties\n /**\n * Gets current `document`.\n * @private\n */\n get document() {\n if (this.section !== null && this.section.parent !== null) {\n return this.section.parent.document;\n }\n else {\n return null;\n }\n }\n /**\n * Get the current `graphics`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // get graphics\n * let graphics : PdfGraphics = page1.graphics;\n * //\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get graphics() {\n let result = this.defaultLayer.graphics;\n result.currentPage = this;\n return result;\n }\n /**\n * Gets the `cross table`.\n * @private\n */\n get crossTable() {\n if (this.section === null) {\n throw new Error('PdfDocumentException : Page is not created');\n }\n return this.section.parent === null ? this.section.parentDocument.crossTable : this.section.parent.document.crossTable;\n }\n /**\n * Gets the size of the PDF page- Read only.\n * @public\n */\n get size() {\n return this.section.pageSettings.size;\n }\n /**\n * Gets the `origin` of the page.\n * @private\n */\n get origin() {\n return this.section.pageSettings.origin;\n }\n /**\n * Gets a collection of the `annotations` of the page- Read only.\n * @private\n */\n get annotations() {\n if (this.annotationCollection == null) {\n this.annotationCollection = new PdfAnnotationCollection(this);\n // if (!this.Dictionary.ContainsKey(this.dictionaryProperties.annots)) {\n this.dictionary.items.setValue(this.dictionaryProperties.annots, this.annotationCollection.element);\n // }\n this.annotationCollection.annotations = this.dictionary.items.getValue(this.dictionaryProperties.annots);\n }\n return this.annotationCollection;\n }\n //Implementation\n /**\n * `Initializes` a page.\n * @private\n */\n initialize() {\n this.dictionary.items.setValue(this.dictionaryProperties.type, new PdfName('Page'));\n this.dictionary.pageBeginDrawTemplate = new SaveTemplateEventHandler(this);\n }\n /**\n * Sets parent `section` to the page.\n * @private\n */\n setSection(section) {\n this.section = section;\n this.dictionary.items.setValue(this.dictionaryProperties.parent, new PdfReferenceHolder(section));\n }\n /**\n * `Resets the progress`.\n * @private\n */\n resetProgress() {\n this.isProgressOn = false;\n }\n /**\n * Get the page size reduced by page margins and page template dimensions.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the specified point using `getClientSize` method\n * let point : PointF = new PointF(page1.getClientSize().width - 200, page1.getClientSize().height - 200);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, point);\n * //\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n getClientSize() {\n let returnValue = this.section.getActualBounds(this, true);\n return new SizeF(returnValue.width, returnValue.height);\n }\n /**\n * Helper method to retrive the instance of `PageBeginSave` event for header and footer elements.\n * @private\n */\n pageBeginSave() {\n let doc = this.document;\n if (typeof doc !== undefined && doc != null) {\n this.drawPageTemplates(doc);\n }\n if (this.beginSave != null && typeof this.beginSave !== 'undefined') {\n this.beginSave(this);\n }\n }\n /**\n * Helper method to draw template elements.\n * @private\n */\n drawPageTemplates(document) {\n // Draw Background templates.\n let hasBackTemplates = this.section.containsTemplates(document, this, false);\n if (hasBackTemplates) {\n let backLayer = new PdfPageLayer(this, false);\n this.layers.insert(0, backLayer);\n this.section.drawTemplates(this, backLayer, document, false);\n if (backLayer.graphics !== null && typeof backLayer.graphics !== 'undefined') {\n for (let i = 0; i < backLayer.graphics.automaticFields.automaticFields.length; i++) {\n let fieldInfo = backLayer.graphics.automaticFields.automaticFields[i];\n fieldInfo.field.performDraw(backLayer.graphics, fieldInfo.location, fieldInfo.scalingX, fieldInfo.scalingY);\n }\n }\n }\n // Draw Foreground templates.\n let hasFrontTemplates = this.section.containsTemplates(document, this, true);\n if (hasFrontTemplates) {\n let frontLayer = new PdfPageLayer(this, false);\n this.layers.add(frontLayer);\n this.section.drawTemplates(this, frontLayer, document, true);\n }\n }\n}\n\n/**\n * Provides data for `PageAddedEventHandler` event.\n * This event raises when adding the new PDF page to the PDF document.\n */\nclass PageAddedEventArgs {\n /**\n * Gets the `newly added page`.\n * @private\n */\n get page() {\n return this.pdfPage;\n }\n constructor(page) {\n if (typeof page !== 'undefined') {\n this.pdfPage = page;\n }\n else {\n this.pdfPage = null;\n }\n }\n}\n\n/**\n * Represents the `collection of pages in a section`.\n * @private\n */\nclass PdfSectionPageCollection {\n // Constructors\n /**\n * Initializes a new instance of the `PdfSectionPageCollection` class.\n * @private\n */\n constructor(section) {\n // Fields\n /**\n * @hidden\n * @private\n */\n this.pdfSection = null;\n if (section == null) {\n throw Error('ArgumentNullException(\"section\")');\n }\n this.section = section;\n }\n // Properties\n /**\n * Gets the `PdfPage` at the specified index.\n * @private\n */\n get section() {\n return this.pdfSection;\n }\n set section(value) {\n this.pdfSection = value;\n }\n // Public Methods\n /**\n * `Determines` whether the specified page is within the collection.\n * @private\n */\n contains(page) {\n return this.section.contains(page);\n }\n /**\n * `Removes` the specified page from collection.\n * @private\n */\n remove(page) {\n this.section.remove(page);\n }\n /**\n * `Adds` a new page from collection.\n * @private\n */\n add() {\n return this.section.add();\n }\n}\n\n// import { PdfStampCollection } from `./../Pages/PdfStampCollection`;\n/**\n * `PdfDocumentTemplate` class encapsulates a page template for all the pages in the document.\n * @private\n */\nclass PdfDocumentTemplate {\n // private m_stamps : PdfStampCollection;\n // Properties\n /**\n * `Left` page template object.\n * @public\n */\n get left() {\n return this.leftTemplate;\n }\n set left(value) {\n this.leftTemplate = this.checkElement(value, TemplateType.Left);\n }\n /**\n * `Top` page template object.\n * @public\n */\n get top() {\n return this.topTemplate;\n }\n set top(value) {\n this.topTemplate = this.checkElement(value, TemplateType.Top);\n }\n /**\n * `Right` page template object.\n * @public\n */\n get right() {\n return this.rightTemplate;\n }\n set right(value) {\n this.rightTemplate = this.checkElement(value, TemplateType.Right);\n }\n /**\n * `Bottom` page template object.\n * @public\n */\n get bottom() {\n return this.bottomTemplate;\n }\n set bottom(value) {\n this.bottomTemplate = this.checkElement(value, TemplateType.Bottom);\n }\n /**\n * `EvenLeft` page template object.\n * @public\n */\n get EvenLeft() {\n return this.evenLeft;\n }\n set EvenLeft(value) {\n this.evenLeft = this.checkElement(value, TemplateType.Left);\n }\n /**\n * `EvenTop` page template object.\n * @public\n */\n get EvenTop() {\n return this.evenTop;\n }\n set EvenTop(value) {\n this.evenTop = this.checkElement(value, TemplateType.Top);\n }\n /**\n * `EvenRight` page template object.\n * @public\n */\n get EvenRight() {\n return this.evenRight;\n }\n set EvenRight(value) {\n this.evenRight = this.checkElement(value, TemplateType.Right);\n }\n /**\n * `EvenBottom` page template object.\n * @public\n */\n get EvenBottom() {\n return this.evenBottom;\n }\n set EvenBottom(value) {\n this.evenBottom = this.checkElement(value, TemplateType.Bottom);\n }\n /**\n * `OddLeft` page template object.\n * @public\n */\n get OddLeft() {\n return this.oddLeft;\n }\n set OddLeft(value) {\n this.oddLeft = this.checkElement(value, TemplateType.Left);\n }\n /**\n * `OddTop` page template object.\n * @public\n */\n get OddTop() {\n return this.oddTop;\n }\n set OddTop(value) {\n this.oddTop = this.checkElement(value, TemplateType.Top);\n }\n /**\n * `OddRight` page template object.\n * @public\n */\n get OddRight() {\n return this.oddRight;\n }\n set OddRight(value) {\n this.oddRight = this.checkElement(value, TemplateType.Right);\n }\n /**\n * `OddBottom` page template object.\n * @public\n */\n get OddBottom() {\n return this.oddBottom;\n }\n set OddBottom(value) {\n this.oddBottom = this.checkElement(value, TemplateType.Bottom);\n }\n // Constructors\n /**\n * Initializes a new instance of the `PdfDocumentTemplate` class.\n * @public\n */\n constructor() {\n //\n }\n // Implementation\n /**\n * Returns `left` template.\n * @public\n */\n getLeft(page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n let template = null;\n // if (page.Document.Pages != null) {\n let even = this.isEven(page);\n if (even) {\n template = (this.EvenLeft != null) ? this.EvenLeft : this.left;\n }\n else {\n template = (this.OddLeft != null) ? this.OddLeft : this.left;\n }\n // }\n return template;\n }\n /**\n * Returns `top` template.\n * @public\n */\n getTop(page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n let template = null;\n // if (page.Document.Pages != null) {\n let even = this.isEven(page);\n if (even) {\n template = (this.EvenTop != null) ? this.EvenTop : this.top;\n }\n else {\n template = (this.OddTop != null) ? this.OddTop : this.top;\n }\n // }\n return template;\n }\n /**\n * Returns `right` template.\n * @public\n */\n getRight(page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n let template = null;\n // if (page.Document.Pages != null) {\n let even = this.isEven(page);\n if (even) {\n template = (this.EvenRight != null) ? this.EvenRight : this.right;\n }\n else {\n template = (this.OddRight != null) ? this.OddRight : this.right;\n }\n // }\n return template;\n }\n /**\n * Returns `bottom` template.\n * @public\n */\n getBottom(page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n let template = null;\n // if (page.Document.Pages != null) {\n let even = this.isEven(page);\n if (even) {\n template = (this.EvenBottom != null) ? this.EvenBottom : this.bottom;\n }\n else {\n template = (this.OddBottom != null) ? this.OddBottom : this.bottom;\n }\n // }\n return template;\n }\n /**\n * Checks whether the page `is even`.\n * @private\n */\n isEven(page) {\n let pages = page.section.document.pages;\n let index = 0;\n if (pages.pageCollectionIndex.containsKey(page)) {\n index = pages.pageCollectionIndex.getValue(page) + 1;\n }\n else {\n index = pages.indexOf(page) + 1;\n }\n let even = ((index % 2) === 0);\n return even;\n }\n /**\n * Checks a `template element`.\n * @private\n */\n checkElement(templateElement, type) {\n if (templateElement != null) {\n if ((typeof templateElement.type !== 'undefined') && (templateElement.type !== TemplateType.None)) {\n throw new Error('NotSupportedException:Can not reassign the template element. Please, create new one.');\n }\n templateElement.type = type;\n }\n return templateElement;\n }\n}\n\n/**\n * PdfSectionTemplate.ts class for EJ2-PDF\n */\n/**\n * Represents a `page template` for all the pages in the section.\n */\nclass PdfSectionTemplate extends PdfDocumentTemplate {\n // Properties\n /**\n * Gets or sets value indicating whether parent `Left page template should be used or not`.\n * @private\n */\n get applyDocumentLeftTemplate() {\n return this.leftValue;\n }\n set applyDocumentLeftTemplate(value) {\n this.leftValue = value;\n }\n /**\n * Gets or sets value indicating whether parent `Top page template should be used or not`.\n * @private\n */\n get applyDocumentTopTemplate() {\n return this.topValue;\n }\n set applyDocumentTopTemplate(value) {\n this.topValue = value;\n }\n /**\n * Gets or sets value indicating whether parent `Right page template should be used or not`.\n * @private\n */\n get applyDocumentRightTemplate() {\n return this.rightValue;\n }\n set applyDocumentRightTemplate(value) {\n this.rightValue = value;\n }\n /**\n * Gets or sets value indicating whether parent `Bottom page template should be used or not`.\n * @private\n */\n get applyDocumentBottomTemplate() {\n return this.bottomValue;\n }\n set applyDocumentBottomTemplate(value) {\n this.bottomValue = value;\n }\n /**\n * Gets or sets value indicating whether the `stamp value` is true or not.\n * @private\n */\n get applyDocumentStamps() {\n return this.stampValue;\n }\n set applyDocumentStamps(value) {\n this.stampValue = value;\n }\n // Constructors\n /**\n * `Creates a new object`.\n * @private\n */\n constructor() {\n super();\n this.leftValue = this.topValue = this.rightValue = this.bottomValue = this.stampValue = true;\n }\n}\n\n/**\n * Represents a `section` entity. A section it's a set of the pages with similar page settings.\n */\nclass PdfSection {\n constructor(document, pageSettings) {\n //Fields\n //public PageAdded() : PageAddedEventArgs.PageAddedEventHandler = new PageAddedEventArgs.PageAddedEventHandler(Object,args)\n /**\n * @hidden\n * @private\n */\n this.pageAdded = new PageAddedEventArgs();\n /**\n * @hidden\n * @private\n */\n this.pdfPages = [];\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.pdfDocument = document;\n if (typeof pageSettings === 'undefined') {\n this.settings = document.pageSettings.clone();\n this.initialSettings = this.settings.clone();\n }\n else {\n this.settings = pageSettings.clone();\n this.initialSettings = this.settings.clone();\n }\n this.initialize();\n }\n //Property\n /**\n * Gets or sets the `parent`.\n * @private\n */\n get parent() {\n return this.sectionCollection;\n }\n set parent(value) {\n this.sectionCollection = value;\n this.section.items.setValue(this.dictionaryProperties.parent, new PdfReferenceHolder(value));\n }\n /**\n * Gets the `parent document`.\n * @private\n */\n get parentDocument() {\n return this.pdfDocument;\n }\n /**\n * Gets or sets the `page settings` of the section.\n * @private\n */\n get pageSettings() {\n return this.settings;\n }\n set pageSettings(value) {\n if (value != null) {\n this.settings = value;\n }\n else {\n throw Error('Value can not be null.');\n }\n }\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get element() {\n return this.section;\n }\n /**\n * Gets the `count` of the pages in the section.\n * @private\n */\n get count() {\n return this.pagesReferences.count;\n }\n /**\n * Gets or sets a `template` for the pages in the section.\n * @private\n */\n get template() {\n if (this.pageTemplate == null) {\n this.pageTemplate = new PdfSectionTemplate();\n }\n return this.pageTemplate;\n }\n set template(value) {\n this.pageTemplate = value;\n }\n /**\n * Gets the `document`.\n * @private\n */\n get document() {\n return this.sectionCollection.document;\n }\n /**\n * Gets the collection of `pages` in a section (Read only)\n * @private\n */\n get pages() {\n if (this.pagesCollection == null || typeof this.pagesCollection === 'undefined') {\n this.pagesCollection = new PdfSectionPageCollection(this);\n }\n return this.pagesCollection;\n }\n //methods\n /**\n * `Return the page collection` of current section.\n * @private\n */\n getPages() {\n return this.pdfPages;\n }\n /**\n * `Translates` point into native coordinates of the page.\n * @private\n */\n pointToNativePdf(page, point) {\n let bounds = this.getActualBounds(page, true);\n point.x += bounds.x;\n point.y = this.pageSettings.height - (point.y);\n return point;\n }\n /**\n * Sets the page setting of the current section.\n * @public\n * @param settings Instance of `PdfPageSettings`\n */\n setPageSettings(settings) {\n this.settings = settings;\n this.state.orientation = settings.orientation;\n this.state.rotate = settings.rotate;\n this.state.size = settings.size;\n this.state.origin = settings.origin;\n }\n /**\n * `Initializes` the object.\n * @private\n */\n initialize() {\n this.pagesReferences = new PdfArray();\n this.section = new PdfDictionary();\n this.state = new PageSettingsState(this.pdfDocument);\n this.section.sectionBeginSave = new SaveSectionEventHandler(this, this.state);\n this.pageCount = new PdfNumber(0);\n this.section.items.setValue(this.dictionaryProperties.count, this.pageCount);\n this.section.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.pages));\n this.section.items.setValue(this.dictionaryProperties.kids, this.pagesReferences);\n }\n /**\n * Checks whether any template should be printed on this layer.\n * @private\n * @param document The parent document.\n * @param page The parent page.\n * @param foreground Layer z-order.\n * @returns True - if some content should be printed on the layer, False otherwise.\n */\n containsTemplates(document, page, foreground) {\n let documentHeaders = this.getDocumentTemplates(document, page, foreground);\n let sectionTemplates = this.getSectionTemplates(page, foreground);\n return (documentHeaders.length > 0 || sectionTemplates.length > 0);\n }\n /**\n * Returns array of the document templates.\n * @private\n * @param document The parent document.\n * @param page The parent page.\n * @param foreground If true - return foreground templates, if false - return background templates.\n * @returns Returns array of the document templates.\n */\n /* tslint:disable */\n getDocumentTemplates(document, page, foreground) {\n let templates = [];\n if (this.template.applyDocumentTopTemplate && document.template.getTop(page) != null) {\n if ((!(document.template.getTop(page).foreground || foreground)) || (document.template.getTop(page).foreground && foreground)) {\n templates.push(document.template.getTop(page));\n }\n }\n if (this.template.applyDocumentBottomTemplate && document.template.getBottom(page) != null) {\n if ((!(document.template.getBottom(page).foreground || foreground)) || (document.template.getBottom(page).foreground && foreground)) {\n templates.push(document.template.getBottom(page));\n }\n }\n if (this.template.applyDocumentLeftTemplate && document.template.getLeft(page) != null) {\n if ((!(document.template.getLeft(page).foreground || foreground)) || (document.template.getLeft(page).foreground && foreground)) {\n templates.push(document.template.getLeft(page));\n }\n }\n if (this.template.applyDocumentRightTemplate && document.template.getRight(page) != null) {\n if ((!(document.template.getRight(page).foreground || foreground)) || (document.template.getRight(page).foreground && foreground)) {\n templates.push(document.template.getRight(page));\n }\n }\n return templates;\n }\n /**\n * Returns array of the section templates.\n * @private\n * @param page The parent page.\n * @param foreground If true - return foreground templates, if false - return background templates.\n * @returns Returns array of the section templates.\n */\n /* tslint:disable */\n getSectionTemplates(page, foreground) {\n let templates = [];\n if (this.template.getTop(page) != null) {\n let pageTemplate = this.template.getTop(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getBottom(page) != null) {\n let pageTemplate = this.template.getBottom(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getLeft(page) != null) {\n let pageTemplate = this.template.getLeft(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getRight(page) != null) {\n let pageTemplate = this.template.getRight(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n return templates;\n }\n /* tslint:enable */\n /**\n * `Adds` the specified page.\n * @private\n */\n add(page) {\n if (typeof page === 'undefined') {\n let page = new PdfPage();\n this.add(page);\n return page;\n }\n else {\n let r = this.checkPresence(page);\n this.pdfPages.push(page);\n this.pagesReferences.add(r);\n page.setSection(this);\n page.resetProgress();\n this.pageAddedMethod(page);\n }\n }\n /**\n * `Checks the presence`.\n * @private\n */\n checkPresence(page) {\n let rh = new PdfReferenceHolder(page);\n let contains = false;\n let sc = this.parent;\n for (let index = 0; index < sc.section.length; index++) {\n let section = sc.section[index];\n contains = contains || section.contains(page);\n }\n return rh;\n }\n /**\n * `Determines` whether the page in within the section.\n * @private\n */\n contains(page) {\n let index = this.indexOf(page);\n return (0 <= index);\n }\n /**\n * Get the `index of` the page.\n * @private\n */\n indexOf(page) {\n for (let index = 0; index < this.pdfPages.length; index++) {\n if (this.pdfPages[index] === page) {\n return this.pdfPages.indexOf(page);\n }\n }\n let r = new PdfReferenceHolder(page);\n return this.pagesReferences.indexOf(r);\n }\n /**\n * Call two event's methods.\n * @hidden\n * @private\n */\n pageAddedMethod(page) {\n //Create event's arguments\n let args = new PageAddedEventArgs(page);\n this.onPageAdded(args);\n let parent = this.parent;\n parent.document.pages.onPageAdded(args);\n this.pageCount.intValue = this.count;\n }\n /**\n * Called when the page has been added.\n * @hidden\n * @private\n */\n onPageAdded(args) {\n //\n }\n getActualBounds(arg1, arg2, arg3) {\n if (arg1 instanceof PdfPage && typeof arg2 === 'boolean') {\n let result;\n let document = this.parent.document;\n result = this.getActualBounds(document, arg1, arg2);\n return result;\n }\n else {\n arg1 = arg1;\n arg2 = arg2;\n arg3 = arg3;\n let bounds = new RectangleF(0, 0, 0, 0);\n bounds.height = (arg3) ? this.pageSettings.size.height : this.pageSettings.getActualSize().height;\n bounds.width = (arg3) ? this.pageSettings.size.width : this.pageSettings.getActualSize().width;\n let left = this.getLeftIndentWidth(arg1, arg2, arg3);\n let top = this.getTopIndentHeight(arg1, arg2, arg3);\n let right = this.getRightIndentWidth(arg1, arg2, arg3);\n let bottom = this.getBottomIndentHeight(arg1, arg2, arg3);\n bounds.x += left;\n bounds.y += top;\n bounds.width -= (left + right);\n bounds.height -= (top + bottom);\n return bounds;\n }\n }\n /**\n * Calculates width of the `left indent`.\n * @private\n */\n getLeftIndentWidth(document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n let value = (includeMargins) ? this.pageSettings.margins.left : 0;\n let templateWidth = (this.template.getLeft(page) != null) ? this.template.getLeft(page).width : 0;\n let docTemplateWidth = (document.template.getLeft(page) != null) ? document.template.getLeft(page).width : 0;\n value += (this.template.applyDocumentLeftTemplate) ? Math.max(templateWidth, docTemplateWidth) : templateWidth;\n return value;\n }\n /**\n * Calculates `Height` of the top indent.\n * @private\n */\n getTopIndentHeight(document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n let value = (includeMargins) ? this.pageSettings.margins.top : 0;\n let templateHeight = (this.template.getTop(page) != null) ? this.template.getTop(page).height : 0;\n let docTemplateHeight = (document.template.getTop(page) != null) ? document.template.getTop(page).height : 0;\n value += (this.template.applyDocumentTopTemplate) ? Math.max(templateHeight, docTemplateHeight) : templateHeight;\n return value;\n }\n /**\n * Calculates `width` of the right indent.\n * @private\n */\n getRightIndentWidth(document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n let value = (includeMargins) ? this.pageSettings.margins.right : 0;\n let templateWidth = (this.template.getRight(page) != null) ? this.template.getRight(page).width : 0;\n let docTemplateWidth = (document.template.getRight(page) != null) ? document.template.getRight(page).width : 0;\n value += (this.template.applyDocumentRightTemplate) ? Math.max(templateWidth, docTemplateWidth) : templateWidth;\n return value;\n }\n /**\n * Calculates `Height` of the bottom indent.\n * @private\n */\n getBottomIndentHeight(document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n let value = (includeMargins) ? this.pageSettings.margins.bottom : 0;\n let templateHeight = (this.template.getBottom(page) != null) ? this.template.getBottom(page).height : 0;\n let docTemplateHeight = (document.template.getBottom(page) != null) ? document.template.getBottom(page).height : 0;\n value += (this.template.applyDocumentBottomTemplate) ? Math.max(templateHeight, docTemplateHeight) : templateHeight;\n return value;\n }\n /**\n * `Removes` the page from the section.\n * @private\n */\n remove(page) {\n if (page == null) {\n throw Error('ArgumentNullException(\"page\")');\n }\n let index = this.pdfPages.indexOf(page);\n this.pagesReferences.removeAt(index);\n let temproaryPages = [];\n for (let j = 0; j < index; j++) {\n temproaryPages.push(this.pdfPages[j]);\n }\n for (let j = index + 1; j < this.pdfPages.length; j++) {\n temproaryPages.push(this.pdfPages[j]);\n }\n this.pdfPages = temproaryPages;\n }\n /**\n * In fills dictionary by the data from `Page settings`.\n * @private\n */\n applyPageSettings(container, parentSettings, state) {\n let bounds = new RectangleF(state.origin, state.size);\n container.items.setValue(this.dictionaryProperties.mediaBox, PdfArray.fromRectangle(bounds));\n let rotate = 0;\n rotate = PdfSectionCollection.rotateFactor * state.rotate;\n let angle = new PdfNumber(rotate);\n container.items.setValue(this.dictionaryProperties.rotate, angle);\n }\n /**\n * Catches the Save event of the dictionary.\n * @hidden\n * @private\n */\n beginSave(state, writer) {\n let doc = writer.document;\n this.applyPageSettings(this.section, doc.pageSettings, state);\n }\n /**\n * Draws page templates on the page.\n * @private\n */\n drawTemplates(page, layer, document, foreground) {\n let documentHeaders = this.getDocumentTemplates(document, page, foreground);\n let sectionHeaders = this.getSectionTemplates(page, foreground);\n this.drawTemplatesHelper(layer, document, documentHeaders);\n this.drawTemplatesHelper(layer, document, sectionHeaders);\n }\n /**\n * Draws page templates on the page.\n * @private\n */\n drawTemplatesHelper(layer, document, templates) {\n if (templates != null && templates.length > 0) {\n let len = templates.length;\n for (let i = 0; i < len; i++) {\n let template = templates[i];\n template.draw(layer, document);\n }\n }\n }\n}\nclass PageSettingsState {\n //public Properties\n /**\n * @hidden\n * @private\n */\n get orientation() {\n return this.pageOrientation;\n }\n set orientation(value) {\n this.pageOrientation = value;\n }\n /**\n * @hidden\n * @private\n */\n get rotate() {\n return this.pageRotate;\n }\n set rotate(value) {\n this.pageRotate = value;\n }\n /**\n * @hidden\n * @private\n */\n get size() {\n return this.pageSize;\n }\n set size(value) {\n this.pageSize = value;\n }\n /**\n * @hidden\n * @private\n */\n get origin() {\n return this.pageOrigin;\n }\n set origin(value) {\n this.pageOrigin = value;\n }\n //Public Constructor\n /**\n * New instance to store the `PageSettings`.\n * @private\n */\n constructor(document) {\n this.pageOrientation = document.pageSettings.orientation;\n this.pageRotate = document.pageSettings.rotate;\n this.pageSize = document.pageSettings.size;\n this.pageOrigin = document.pageSettings.origin;\n }\n}\n\n/**\n * Represents the `collection of the sections`.\n * @private\n */\nclass PdfSectionCollection {\n //constructor\n /**\n * Initializes a new instance of the `PdfSectionCollection` class.\n * @private\n */\n constructor(document) {\n /**\n * @hidden\n * @private\n */\n this.sections = [];\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // if (document === null) {\n // throw new Error('ArgumentNullException : document');\n // }\n this.pdfDocument = document.clone();\n this.initialize();\n }\n //Properties\n /**\n * Gets the `Section` collection.\n */\n get section() {\n return this.sections;\n }\n /**\n * Gets a parent `document`.\n * @private\n */\n get document() {\n return this.pdfDocument;\n }\n /**\n * Gets the `number of sections` in a document.\n * @private\n */\n get count() {\n return this.sections.length;\n }\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get element() {\n return this.pages;\n }\n //Methods\n /**\n * `Initializes the object`.\n * @private\n */\n initialize() {\n this.sectionCount = new PdfNumber(0);\n this.sectionCollection = new PdfArray();\n this.pages = new PdfDictionary();\n this.pages.beginSave = new SaveSectionCollectionEventHandler(this);\n this.pages.items.setValue(this.dictionaryProperties.type, new PdfName('Pages'));\n this.pages.items.setValue(this.dictionaryProperties.kids, this.sectionCollection);\n this.pages.items.setValue(this.dictionaryProperties.count, this.sectionCount);\n this.pages.items.setValue(this.dictionaryProperties.resources, new PdfDictionary());\n this.setPageSettings(this.pages, this.pdfDocument.pageSettings);\n }\n /**\n * Initializes a new instance of the `PdfSectionCollection` class.\n * @private\n */\n pdfSectionCollection(index) {\n if (index < 0 || index >= this.count) {\n throw new Error('IndexOutOfRangeException()');\n }\n return this.sections[index];\n }\n /**\n * In fills dictionary by the data from `Page settings`.\n * @private\n */\n setPageSettings(container, pageSettings) {\n // if (container === null) {\n // throw new Error('ArgumentNullException : container');\n // }\n // if (pageSettings === null) {\n // throw new Error('ArgumentNullException : pageSettings');\n // }\n let bounds = new RectangleF(new PointF(), pageSettings.size);\n container.items.setValue(this.dictionaryProperties.mediaBox, PdfArray.fromRectangle(bounds));\n }\n /**\n * `Adds` the specified section.\n * @private\n */\n add(section) {\n if (typeof section === 'undefined') {\n let section = new PdfSection(this.pdfDocument);\n this.add(section);\n return section;\n }\n else {\n // if (section === null) {\n // throw new Error('ArgumentNullException : section');\n // }\n let r = this.checkSection(section);\n this.sections.push(section);\n section.parent = this;\n this.sectionCollection.add(r);\n return this.sections.indexOf(section);\n }\n }\n /**\n * `Checks` if the section is within the collection.\n * @private\n */\n checkSection(section) {\n let r = new PdfReferenceHolder(section);\n let contains = this.sectionCollection.contains(r);\n // if (contains) {\n // throw new Error('ArgumentException : The object can not be added twice to the collection,section');\n // }\n return r;\n }\n /**\n * Catches the Save event of the dictionary to `count the pages`.\n * @private\n */\n countPages() {\n let count = 0;\n this.sections.forEach((n) => (count += n.count));\n return count;\n }\n /**\n * Catches the Save event of the dictionary to `count the pages`.\n * @hidden\n * @private\n */\n beginSave() {\n this.sectionCount.intValue = this.countPages();\n }\n}\n//Fields\n/**\n * Rotate factor for page `rotation`.\n * @default 90\n * @private\n */\nPdfSectionCollection.rotateFactor = 90;\n\n/**\n * Represents a virtual collection of all the pages in the document.\n * @private\n */\nclass PdfDocumentPageCollection {\n //constructor\n /**\n * Initializes a new instance of the `PdfPageCollection` class.\n * @private\n */\n constructor(document) {\n /**\n * It holds the page collection with the `index`.\n * @private\n */\n this.pdfPageCollectionIndex = new Dictionary();\n this.document = document;\n }\n //Property\n /**\n * Gets the total `number of the pages`.\n * @private\n */\n get count() {\n return this.countPages();\n }\n /**\n * Gets a `page index` from the document.\n * @private\n */\n get pageCollectionIndex() {\n return this.pdfPageCollectionIndex;\n }\n add(page) {\n if (typeof page === 'undefined') {\n let page = new PdfPage();\n this.add(page);\n return page;\n }\n else {\n let section = this.getLastSection();\n section.add(page);\n }\n }\n /**\n * Returns `last section` in the document.\n * @private\n */\n getLastSection() {\n let sc = this.document.sections;\n if (sc.section.length === 0) {\n sc.add();\n }\n let section = sc.section[sc.section.length - 1];\n return section;\n }\n /**\n * Called when `new page has been added`.\n * @private\n */\n onPageAdded(args) {\n // if (PageAdded !== null)\n // {\n // PageAdded(this, args);\n // }\n }\n /**\n * Gets the `total number of pages`.\n * @private\n */\n countPages() {\n let sc = this.document.sections;\n let count = 0;\n for (let index = 0; index < sc.section.length; index++) {\n count += sc.section[index].count;\n }\n return count;\n }\n /**\n * Gets the `page object` from page index.\n * @private\n */\n getPageByIndex(index) {\n return this.getPage(index);\n }\n /**\n * Gets a page by its `index` in the document.\n * @private\n */\n getPage(index) {\n if ((index < 0) || (index >= this.count)) {\n throw Error('ArgumentOutOfRangeException(\"index\", \"Value can not be less 0\")');\n }\n let page = null;\n let sectionStartIndex = 0;\n let sectionCount = 0;\n let pageIndex = 0;\n let length = this.document.sections.count;\n for (let i = 0; i < length; i++) {\n let section = this.document.sections.section[i];\n sectionCount = section.count;\n pageIndex = index - sectionStartIndex;\n // We found a section containing the page.\n if ((index >= sectionStartIndex && pageIndex < sectionCount)) {\n page = section.getPages()[pageIndex];\n break;\n }\n sectionStartIndex += sectionCount;\n }\n return page;\n }\n /**\n * Gets the `index of` the page in the document.\n * @private\n */\n indexOf(page) {\n let index = -1;\n if (page == null) {\n throw new Error('ArgumentNullException: page');\n }\n else {\n let numPages = 0;\n for (let i = 0, len = this.document.sections.count; i < len; i++) {\n let section = this.document.sections.pdfSectionCollection(i);\n index = section.indexOf(page);\n if (index >= 0) {\n index += numPages;\n break;\n }\n else {\n index = -1;\n }\n numPages += section.count;\n }\n }\n return index;\n }\n /**\n * `Removes` the specified page.\n * @private\n */\n remove(page) {\n if (page == null) {\n throw Error('ArgumentNullException(\"page\")');\n }\n let section = null;\n for (let i = 0, len = this.document.sections.count; i < len; i++) {\n section = this.document.sections.pdfSectionCollection(i);\n if (section.pages.contains(page)) {\n section.pages.remove(page);\n break;\n }\n }\n return section;\n }\n}\n\n/**\n * PdfCacheCollection.ts class for EJ2-PDF\n */\n/**\n * `Collection of the cached objects`.\n * @private\n */\nclass PdfCacheCollection {\n // Constructors\n /**\n * Initializes a new instance of the `PdfCacheCollection` class.\n * @private\n */\n constructor() {\n this.referenceObjects = [];\n this.pdfFontCollection = new Dictionary();\n }\n // Public methods\n /**\n * `Searches` for the similar cached object. If is not found - adds the object to the cache.\n * @private\n */\n search(obj) {\n let result = null;\n let group = this.getGroup(obj);\n if (group == null) {\n group = this.createNewGroup();\n }\n else if (group.length > 0) {\n result = group[0];\n }\n group.push(obj);\n return result;\n }\n // Implementation\n /**\n * `Creates` a new group.\n * @private\n */\n createNewGroup() {\n let group = [];\n this.referenceObjects.push(group);\n return group;\n }\n /**\n * `Find and Return` a group.\n * @private\n */\n getGroup(result) {\n let group = null;\n if (result !== null) {\n let len = this.referenceObjects.length;\n for (let i = 0; i < len; i++) {\n if (this.referenceObjects.length > 0) {\n let tGroup = this.referenceObjects[i];\n if (tGroup.length > 0) {\n let representative = tGroup[0];\n if (result.equalsTo(representative)) {\n group = tGroup;\n break;\n }\n }\n else {\n this.removeGroup(tGroup);\n }\n }\n len = this.referenceObjects.length;\n }\n }\n return group;\n }\n /**\n * Remove a group from the storage.\n */\n removeGroup(group) {\n if (group !== null) {\n let index = this.referenceObjects.indexOf(group);\n this.referenceObjects.slice(index, index + 1);\n }\n }\n destroy() {\n this.pdfFontCollection = undefined;\n this.referenceObjects = undefined;\n }\n}\n\n/**\n * Represents a PDF document and can be used to create a new PDF document from the scratch.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nclass PdfDocument extends PdfDocumentBase {\n constructor(isMerging) {\n super();\n /**\n * Default `margin` value.\n * @default 40.0\n * @private\n */\n this.defaultMargin = 40.0;\n /**\n * Internal variable to store instance of `StreamWriter` classes..\n * @default null\n * @private\n */\n this.streamWriter = null;\n this.document = this;\n let isMerge = false;\n if (typeof isMerging === 'undefined') {\n PdfDocument.cacheCollection = new PdfCacheCollection();\n isMerge = false;\n }\n else {\n isMerge = isMerging;\n }\n let objects = new PdfMainObjectCollection();\n this.setMainObjectCollection(objects);\n let crossTable = new PdfCrossTable();\n crossTable.isMerging = isMerge;\n crossTable.document = this;\n this.setCrossTable(crossTable);\n let catalog = new PdfCatalog();\n this.setCatalog(catalog);\n objects.add(catalog);\n catalog.position = -1;\n this.sectionCollection = new PdfSectionCollection(this);\n this.documentPageCollection = new PdfDocumentPageCollection(this);\n catalog.pages = this.sectionCollection;\n }\n //Properties\n /**\n * Gets the `default font`. It is used for complex objects when font is not explicitly defined.\n * @private\n */\n static get defaultFont() {\n if (this.defaultStandardFont == null) {\n this.defaultStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 8);\n }\n return this.defaultStandardFont;\n }\n /**\n * Gets the collection of the `sections` in the document.\n * @private\n */\n get sections() {\n return this.sectionCollection;\n }\n /**\n * Gets the document's page setting.\n * @public\n */\n get pageSettings() {\n if (this.settings == null) {\n this.settings = new PdfPageSettings(this.defaultMargin);\n }\n return this.settings;\n }\n /**\n * Sets the document's page setting.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n *\n * // sets the right margin of the page\n * document.pageSettings.margins.right = 0;\n * // set the page size.\n * document.pageSettings.size = new SizeF(500, 500);\n * // change the page orientation to landscape\n * document.pageSettings.orientation = PdfPageOrientation.Landscape;\n * // apply 90 degree rotation on the page\n * document.pageSettings.rotate = PdfPageRotateAngle.RotateAngle90;\n *\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // set the specified Point\n * let point : PointF = new PointF(page1.getClientSize().width - 200, page1.getClientSize().height - 200);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, point);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n set pageSettings(value) {\n this.settings = value;\n }\n /**\n * Represents the collection of pages in the PDF document.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * //\n * // get the collection of pages in the document\n * let pageCollection : PdfDocumentPageCollection = document.pages;\n * //\n * // add pages\n * let page1 : PdfPage = pageCollection.add();\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get pages() {\n return this.documentPageCollection;\n }\n /**\n * Gets collection of the `cached objects`.\n * @private\n */\n static get cache() {\n if (typeof PdfDocument.cacheCollection === 'undefined' || PdfDocument.cacheCollection == null) {\n return new PdfCacheCollection();\n }\n return PdfDocument.cacheCollection;\n }\n /**\n * Sets collection of the `cached objects`.\n * @private\n */\n static set cache(value) {\n this.cacheCollection = value;\n }\n /**\n * Gets the value of enable cache.\n * @private\n */\n static get enableCache() {\n return this.isCacheEnabled;\n }\n /**\n * Sets thie value of enable cache.\n * @private\n */\n static set enableCache(value) {\n this.isCacheEnabled = value;\n }\n /* tslint:disable */\n /**\n * Gets or sets the `color space` of the document. This property can be used to create PDF document in RGB, Gray scale or CMYK color spaces.\n * @private\n */\n get colorSpace() {\n if ((this.pdfColorSpace === PdfColorSpace.Rgb) || ((this.pdfColorSpace === PdfColorSpace.Cmyk)\n || (this.pdfColorSpace === PdfColorSpace.GrayScale))) {\n return this.pdfColorSpace;\n }\n else {\n return PdfColorSpace.Rgb;\n }\n }\n set colorSpace(value) {\n if ((value === PdfColorSpace.Rgb) || ((value === PdfColorSpace.Cmyk) ||\n (value === PdfColorSpace.GrayScale))) {\n this.pdfColorSpace = value;\n }\n else {\n this.pdfColorSpace = PdfColorSpace.Rgb;\n }\n }\n /* tslint:enable */\n /**\n * Gets or sets a `template` to all pages in the document.\n * @private\n */\n get template() {\n if (this.pageTemplate == null) {\n this.pageTemplate = new PdfDocumentTemplate();\n }\n return this.pageTemplate;\n }\n set template(value) {\n this.pageTemplate = value;\n }\n docSave(stream, arg2, arg3) {\n this.checkPagesPresence();\n if (stream === null) {\n throw new Error('ArgumentNullException : stream');\n }\n this.streamWriter = stream;\n let writer = new PdfWriter(stream);\n writer.document = this;\n if (typeof arg2 === 'boolean' && typeof arg3 === 'undefined') {\n return this.crossTable.save(writer);\n }\n else {\n this.crossTable.save(writer, arg2);\n }\n }\n /**\n * Checks the pages `presence`.\n * @private\n */\n checkPagesPresence() {\n if (this.pages.count === 0) {\n this.pages.add();\n }\n }\n /**\n * disposes the current instance of `PdfDocument` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n destroy() {\n this.catalog = undefined;\n this.colorSpace = undefined;\n this.currentSavingObj = undefined;\n this.documentPageCollection = undefined;\n this.isStreamCopied = undefined;\n this.pageSettings = undefined;\n this.pageTemplate = undefined;\n this.pdfColorSpace = undefined;\n this.sectionCollection = undefined;\n PdfDocument.cache.destroy();\n this.crossTable.pdfObjects.destroy();\n PdfDocument.cache = undefined;\n this.streamWriter.destroy();\n }\n}\n/**\n * `Font` used in complex objects to draw strings and text when it is not defined explicitly.\n * @default null\n * @private\n */\nPdfDocument.defaultStandardFont = null;\n/**\n * Indicates whether enable cache or not\n * @default true\n * @private\n */\nPdfDocument.isCacheEnabled = true;\n\n/**\n * PdfStandardFontMetricsFactory.ts class for EJ2-PDF\n */\n/**\n * @private\n * `Factory of the standard fonts metrics`.\n */\nclass PdfStandardFontMetricsFactory {\n /**\n * Returns `metrics` of the font.\n * @private\n */\n static getMetrics(fontFamily, fontStyle, size) {\n let metrics = null;\n switch (fontFamily) {\n case PdfFontFamily.Helvetica:\n metrics = this.getHelveticaMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.Courier:\n metrics = this.getCourierMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.TimesRoman:\n metrics = this.getTimesMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.Symbol:\n metrics = this.getSymbolMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.ZapfDingbats:\n metrics = this.getZapfDingbatsMetrics(fontFamily, fontStyle, size);\n break;\n default:\n metrics = this.getHelveticaMetrics(PdfFontFamily.Helvetica, fontStyle, size);\n break;\n }\n metrics.name = fontFamily.toString();\n metrics.subScriptSizeFactor = this.subSuperScriptFactor;\n metrics.superscriptSizeFactor = this.subSuperScriptFactor;\n return metrics;\n }\n // Implementation\n /**\n * Creates `Helvetica font metrics`.\n * @private\n */\n static getHelveticaMetrics(fontFamily, fontStyle, size) {\n let metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.helveticaBoldItalicAscent;\n metrics.descent = this.helveticaBoldItalicDescent;\n metrics.postScriptName = this.helveticaBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.helveticaBoldAscent;\n metrics.descent = this.helveticaBoldDescent;\n metrics.postScriptName = this.helveticaBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.helveticaItalicAscent;\n metrics.descent = this.helveticaItalicDescent;\n metrics.postScriptName = this.helveticaItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.helveticaAscent;\n metrics.descent = this.helveticaDescent;\n metrics.postScriptName = this.helveticaName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n }\n /**\n * Creates `Courier font metrics`.\n * @private\n */\n static getCourierMetrics(fontFamily, fontStyle, size) {\n let metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.courierBoldItalicAscent;\n metrics.descent = this.courierBoldItalicDescent;\n metrics.postScriptName = this.courierBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.courierBoldAscent;\n metrics.descent = this.courierBoldDescent;\n metrics.postScriptName = this.courierBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.courierItalicAscent;\n metrics.descent = this.courierItalicDescent;\n metrics.postScriptName = this.courierItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.courierAscent;\n metrics.descent = this.courierDescent;\n metrics.postScriptName = this.courierName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n }\n /**\n * Creates `Times font metrics`.\n * @private\n */\n static getTimesMetrics(fontFamily, fontStyle, size) {\n let metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.timesBoldItalicAscent;\n metrics.descent = this.timesBoldItalicDescent;\n metrics.postScriptName = this.timesBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanBoldItalicWidths);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.timesBoldAscent;\n metrics.descent = this.timesBoldDescent;\n metrics.postScriptName = this.timesBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.timesItalicAscent;\n metrics.descent = this.timesItalicDescent;\n metrics.postScriptName = this.timesItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanItalicWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.timesAscent;\n metrics.descent = this.timesDescent;\n metrics.postScriptName = this.timesName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n }\n /**\n * Creates `Symbol font metrics`.\n * @private\n */\n static getSymbolMetrics(fontFamily, fontStyle, size) {\n let metrics = new PdfFontMetrics();\n metrics.ascent = this.symbolAscent;\n metrics.descent = this.symbolDescent;\n metrics.postScriptName = this.symbolName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.symbolWidth);\n metrics.height = metrics.ascent - metrics.descent;\n return metrics;\n }\n /**\n * Creates `ZapfDingbats font metrics`.\n * @private\n */\n static getZapfDingbatsMetrics(fontFamily, fontStyle, size) {\n let metrics = new PdfFontMetrics();\n metrics.ascent = this.zapfDingbatsAscent;\n metrics.descent = this.zapfDingbatsDescent;\n metrics.postScriptName = this.zapfDingbatsName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.zapfDingbatsWidth);\n metrics.height = metrics.ascent - metrics.descent;\n return metrics;\n }\n}\n/**\n * `Multiplier` os subscript superscript.\n * @private\n */\nPdfStandardFontMetricsFactory.subSuperScriptFactor = 1.52;\n/**\n * `Ascender` value for the font.\n * @private\n */\nPdfStandardFontMetricsFactory.helveticaAscent = 931;\n/**\n * `Ascender` value for the font.\n * @private\n */\nPdfStandardFontMetricsFactory.helveticaDescent = -225;\n/**\n * `Font type`.\n * @private\n */\nPdfStandardFontMetricsFactory.helveticaName = 'Helvetica';\n/**\n * `Ascender` value for the font.\n * @private\n */\nPdfStandardFontMetricsFactory.helveticaBoldAscent = 962;\n/**\n * `Ascender` value for the font.\n * @private\n */\nPdfStandardFontMetricsFactory.helveticaBoldDescent = -228;\n/**\n * `Font type`.\n * @private\n */\nPdfStandardFontMetricsFactory.helveticaBoldName = 'Helvetica-Bold';\n/**\n * `Ascender` value for the font.\n * @private\n */\nPdfStandardFontMetricsFactory.helveticaItalicAscent = 931;\n/**\n * `Ascender` value for the font.\n * @private\n */\nPdfStandardFontMetricsFactory.helveticaItalicDescent = -225;\n/**\n * `Font type`.\n * @private\n */\nPdfStandardFontMetricsFactory.helveticaItalicName = 'Helvetica-Oblique';\n/**\n * `Ascender` value for the font.\n * @private\n */\nPdfStandardFontMetricsFactory.helveticaBoldItalicAscent = 962;\n/**\n * `Ascender` value for the font.\n * @private\n */\nPdfStandardFontMetricsFactory.helveticaBoldItalicDescent = -228;\n/**\n * `Font type`.\n * @private\n */\nPdfStandardFontMetricsFactory.helveticaBoldItalicName = 'Helvetica-BoldOblique';\n/**\n * `Ascender` value for the font.\n * @private\n */\nPdfStandardFontMetricsFactory.courierAscent = 805;\n/**\n * `Ascender` value for the font.\n * @private\n */\nPdfStandardFontMetricsFactory.courierDescent = -250;\n/**\n * `Font type`.\n * @private\n */\nPdfStandardFontMetricsFactory.courierName = 'Courier';\n/**\n * `Ascender` value for the font.\n * @private\n */\nPdfStandardFontMetricsFactory.courierBoldAscent = 801;\n/**\n * `Ascender` value for the font.\n * @private\n */\nPdfStandardFontMetricsFactory.courierBoldDescent = -250;\n/**\n * `Font type`.\n * @private\n */\nPdfStandardFontMetricsFactory.courierBoldName = 'Courier-Bold';\n/**\n * `Ascender` value for the font.\n * @private\n */\nPdfStandardFontMetricsFactory.courierItalicAscent = 805;\n/**\n * `Ascender` value for the font.\n * @private\n */\nPdfStandardFontMetricsFactory.courierItalicDescent = -250;\n/**\n * `Font type`.\n * @private\n */\nPdfStandardFontMetricsFactory.courierItalicName = 'Courier-Oblique';\n/**\n * `Ascender` value for the font.\n * @private\n */\nPdfStandardFontMetricsFactory.courierBoldItalicAscent = 801;\n/**\n * `Ascender` value for the font.\n * @private\n */\nPdfStandardFontMetricsFactory.courierBoldItalicDescent = -250;\n/**\n * `Font type`.\n * @private\n */\nPdfStandardFontMetricsFactory.courierBoldItalicName = 'Courier-BoldOblique';\n/**\n * `Ascender` value for the font.\n * @private\n */\nPdfStandardFontMetricsFactory.timesAscent = 898;\n/**\n * `Ascender` value for the font.\n * @private\n */\nPdfStandardFontMetricsFactory.timesDescent = -218;\n/**\n * `Font type`.\n * @private\n */\nPdfStandardFontMetricsFactory.timesName = 'Times-Roman';\n/**\n * `Ascender` value for the font.\n * @private\n */\nPdfStandardFontMetricsFactory.timesBoldAscent = 935;\n/**\n * `Ascender` value for the font.\n * @private\n */\nPdfStandardFontMetricsFactory.timesBoldDescent = -218;\n/**\n * `Font type`.\n * @private\n */\nPdfStandardFontMetricsFactory.timesBoldName = 'Times-Bold';\n/**\n * `Ascender` value for the font.\n * @private\n */\nPdfStandardFontMetricsFactory.timesItalicAscent = 883;\n/**\n * `Ascender` value for the font.\n * @private\n */\nPdfStandardFontMetricsFactory.timesItalicDescent = -217;\n/**\n * `Font type`.\n * @private\n */\nPdfStandardFontMetricsFactory.timesItalicName = 'Times-Italic';\n/**\n * `Ascender` value for the font.\n * @private\n */\nPdfStandardFontMetricsFactory.timesBoldItalicAscent = 921;\n/**\n * `Ascender` value for the font.\n * @private\n */\nPdfStandardFontMetricsFactory.timesBoldItalicDescent = -218;\n/**\n * `Font type`.\n * @private\n */\nPdfStandardFontMetricsFactory.timesBoldItalicName = 'Times-BoldItalic';\n/**\n * `Ascender` value for the font.\n * @private\n */\nPdfStandardFontMetricsFactory.symbolAscent = 1010;\n/**\n * `Ascender` value for the font.\n * @private\n */\nPdfStandardFontMetricsFactory.symbolDescent = -293;\n/**\n * `Font type`.\n * @private\n */\nPdfStandardFontMetricsFactory.symbolName = 'Symbol';\n/**\n * `Ascender` value for the font.\n * @private\n */\nPdfStandardFontMetricsFactory.zapfDingbatsAscent = 820;\n/**\n * `Ascender` value for the font.\n * @private\n */\nPdfStandardFontMetricsFactory.zapfDingbatsDescent = -143;\n/**\n * `Font type`.\n * @private\n */\nPdfStandardFontMetricsFactory.zapfDingbatsName = 'ZapfDingbats';\n/**\n * `Arial` widths table.\n * @private\n */\nPdfStandardFontMetricsFactory.arialWidth = [\n 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584,\n 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833,\n 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278,\n 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833,\n 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334,\n 584, 0, 556, 0, 222, 556, 333, 1000, 556, 556, 333, 1000, 667, 333, 1000, 0,\n 611, 0, 0, 222, 222, 333, 333, 350, 556, 1000, 333, 1000, 500, 333, 944, 0,\n 500, 667, 0, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 0,\n 737, 333, 400, 584, 333, 333, 333, 556, 537, 278, 333, 333, 365, 556, 834, 834,\n 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278,\n 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667,\n 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 584, 611, 556, 556, 556, 556, 500,\n 556, 500\n];\n/**\n * `Arial bold` widths table.\n * @private\n */\nPdfStandardFontMetricsFactory.arialBoldWidth = [\n 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584,\n 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833,\n 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333,\n 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889,\n 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389,\n 584, 0, 556, 0, 278, 556, 500, 1000, 556, 556, 333, 1000, 667, 333, 1000, 0,\n 611, 0, 0, 278, 278, 500, 500, 350, 556, 1000, 333, 1000, 556, 333, 944, 0,\n 500, 667, 0, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 0,\n 737, 333, 400, 584, 333, 333, 333, 611, 556, 278, 333, 333, 365, 556, 834, 834,\n 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278,\n 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667,\n 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278,\n 278, 278, 611, 611, 611, 611, 611, 611, 611, 584, 611, 611, 611, 611, 611, 556,\n 611, 556\n];\n/**\n * `Fixed` widths table.\n * @private\n */\nPdfStandardFontMetricsFactory.fixedWidth = [\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600\n];\n/**\n * `Times` widths table.\n * @private\n */\nPdfStandardFontMetricsFactory.timesRomanWidth = [\n 250, 333, 408, 500, 500, 833, 778, 180, 333, 333, 500, 564, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278, 564, 564,\n 564, 444, 921, 722, 667, 667, 722, 611, 556, 722, 722, 333, 389, 722, 611, 889,\n 722, 722, 556, 722, 667, 556, 611, 722, 722, 944, 722, 722, 611, 333, 278, 333,\n 469, 500, 333, 444, 500, 444, 500, 444, 333, 500, 500, 278, 278, 500, 278, 778,\n 500, 500, 500, 500, 333, 389, 278, 500, 500, 722, 500, 500, 444, 480, 200, 480,\n 541, 0, 500, 0, 333, 500, 444, 1000, 500, 500, 333, 1000, 556, 333, 889, 0,\n 611, 0, 0, 333, 333, 444, 444, 350, 500, 1000, 333, 980, 389, 333, 722, 0,\n 444, 722, 0, 333, 500, 500, 500, 500, 200, 500, 333, 760, 276, 500, 564, 0,\n 760, 333, 400, 564, 300, 300, 333, 500, 453, 250, 333, 300, 310, 500, 750, 750,\n 750, 444, 722, 722, 722, 722, 722, 722, 889, 667, 611, 611, 611, 611, 333, 333,\n 333, 333, 722, 722, 722, 722, 722, 722, 722, 564, 722, 722, 722, 722, 722, 722,\n 556, 500, 444, 444, 444, 444, 444, 444, 667, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 500, 500, 500, 500, 500, 500, 564, 500, 500, 500, 500, 500, 500,\n 500, 500\n];\n/**\n * `Times bold` widths table.\n * @private\n */\nPdfStandardFontMetricsFactory.timesRomanBoldWidth = [\n 250, 333, 555, 500, 500, 1000, 833, 278, 333, 333, 500, 570, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570,\n 570, 500, 930, 722, 667, 722, 722, 667, 611, 778, 778, 389, 500, 778, 667, 944,\n 722, 778, 611, 778, 722, 556, 667, 722, 722, 1000, 722, 722, 667, 333, 278, 333,\n 581, 500, 333, 500, 556, 444, 556, 444, 333, 500, 556, 278, 333, 556, 278, 833,\n 556, 500, 556, 556, 444, 389, 333, 556, 500, 722, 500, 500, 444, 394, 220, 394,\n 520, 0, 500, 0, 333, 500, 500, 1000, 500, 500, 333, 1000, 556, 333, 1000, 0,\n 667, 0, 0, 333, 333, 500, 500, 350, 500, 1000, 333, 1000, 389, 333, 722, 0,\n 444, 722, 0, 333, 500, 500, 500, 500, 220, 500, 333, 747, 300, 500, 570, 0,\n 747, 333, 400, 570, 300, 300, 333, 556, 540, 250, 333, 300, 330, 500, 750, 750,\n 750, 500, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 389, 389,\n 389, 389, 722, 722, 778, 778, 778, 778, 778, 570, 778, 722, 722, 722, 722, 722,\n 611, 556, 500, 500, 500, 500, 500, 500, 722, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 556, 500, 500, 500, 500, 500, 570, 500, 556, 556, 556, 556, 500,\n 556, 500\n];\n/**\n * `Times italic` widths table.\n * @private\n */\nPdfStandardFontMetricsFactory.timesRomanItalicWidth = [\n 250, 333, 420, 500, 500, 833, 778, 214, 333, 333, 500, 675, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 675, 675,\n 675, 500, 920, 611, 611, 667, 722, 611, 611, 722, 722, 333, 444, 667, 556, 833,\n 667, 722, 611, 722, 611, 500, 556, 722, 611, 833, 611, 556, 556, 389, 278, 389,\n 422, 500, 333, 500, 500, 444, 500, 444, 278, 500, 500, 278, 278, 444, 278, 722,\n 500, 500, 500, 500, 389, 389, 278, 500, 444, 667, 444, 444, 389, 400, 275, 400,\n 541, 0, 500, 0, 333, 500, 556, 889, 500, 500, 333, 1000, 500, 333, 944, 0,\n 556, 0, 0, 333, 333, 556, 556, 350, 500, 889, 333, 980, 389, 333, 667, 0,\n 389, 556, 0, 389, 500, 500, 500, 500, 275, 500, 333, 760, 276, 500, 675, 0,\n 760, 333, 400, 675, 300, 300, 333, 500, 523, 250, 333, 300, 310, 500, 750, 750,\n 750, 500, 611, 611, 611, 611, 611, 611, 889, 667, 611, 611, 611, 611, 333, 333,\n 333, 333, 722, 667, 722, 722, 722, 722, 722, 675, 722, 722, 722, 722, 722, 556,\n 611, 500, 500, 500, 500, 500, 500, 500, 667, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 500, 500, 500, 500, 500, 500, 675, 500, 500, 500, 500, 500, 444,\n 500, 444\n];\n/**\n * `Times bold italic` widths table.\n * @private\n */\nPdfStandardFontMetricsFactory.timesRomanBoldItalicWidths = [\n 250, 389, 555, 500, 500, 833, 778, 278, 333, 333, 500, 570, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570,\n 570, 500, 832, 667, 667, 667, 722, 667, 667, 722, 778, 389, 500, 667, 611, 889,\n 722, 722, 611, 722, 667, 556, 611, 722, 667, 889, 667, 611, 611, 333, 278, 333,\n 570, 500, 333, 500, 500, 444, 500, 444, 333, 500, 556, 278, 278, 500, 278, 778,\n 556, 500, 500, 500, 389, 389, 278, 556, 444, 667, 500, 444, 389, 348, 220, 348,\n 570, 0, 500, 0, 333, 500, 500, 1000, 500, 500, 333, 1000, 556, 333, 944, 0,\n 611, 0, 0, 333, 333, 500, 500, 350, 500, 1000, 333, 1000, 389, 333, 722, 0,\n 389, 611, 0, 389, 500, 500, 500, 500, 220, 500, 333, 747, 266, 500, 606, 0,\n 747, 333, 400, 570, 300, 300, 333, 576, 500, 250, 333, 300, 300, 500, 750, 750,\n 750, 500, 667, 667, 667, 667, 667, 667, 944, 667, 667, 667, 667, 667, 389, 389,\n 389, 389, 722, 722, 722, 722, 722, 722, 722, 570, 722, 722, 722, 722, 722, 611,\n 611, 500, 500, 500, 500, 500, 500, 500, 722, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 556, 500, 500, 500, 500, 500, 570, 500, 556, 556, 556, 556, 444,\n 500, 444\n];\n/**\n * `Symbol` widths table.\n * @private\n */\nPdfStandardFontMetricsFactory.symbolWidth = [\n 250, 333, 713, 500, 549, 833, 778, 439, 333, 333, 500, 549, 250, 549,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278,\n 549, 549, 549, 444, 549, 722, 667, 722, 612, 611, 763, 603, 722, 333,\n 631, 722, 686, 889, 722, 722, 768, 741, 556, 592, 611, 690, 439, 768,\n 645, 795, 611, 333, 863, 333, 658, 500, 500, 631, 549, 549, 494, 439,\n 521, 411, 603, 329, 603, 549, 549, 576, 521, 549, 549, 521, 549, 603,\n 439, 576, 713, 686, 493, 686, 494, 480, 200, 480, 549, 750, 620, 247,\n 549, 167, 713, 500, 753, 753, 753, 753, 1042, 987, 603, 987, 603, 400,\n 549, 411, 549, 549, 713, 494, 460, 549, 549, 549, 549, 1000, 603, 1000,\n 658, 823, 686, 795, 987, 768, 768, 823, 768, 768, 713, 713, 713, 713,\n 713, 713, 713, 768, 713, 790, 790, 890, 823, 549, 250, 713, 603, 603,\n 1042, 987, 603, 987, 603, 494, 329, 790, 790, 786, 713, 384, 384, 384,\n 384, 384, 384, 494, 494, 494, 494, 329, 274, 686, 686, 686, 384, 384,\n 384, 384, 384, 384, 494, 494, 494, -1\n];\n/**\n * `Zip dingbats` widths table.\n * @private\n */\nPdfStandardFontMetricsFactory.zapfDingbatsWidth = [\n 278, 974, 961, 974, 980, 719, 789, 790, 791, 690, 960, 939, 549, 855,\n 911, 933, 911, 945, 974, 755, 846, 762, 761, 571, 677, 763, 760, 759,\n 754, 494, 552, 537, 577, 692, 786, 788, 788, 790, 793, 794, 816, 823,\n 789, 841, 823, 833, 816, 831, 923, 744, 723, 749, 790, 792, 695, 776,\n 768, 792, 759, 707, 708, 682, 701, 826, 815, 789, 789, 707, 687, 696,\n 689, 786, 787, 713, 791, 785, 791, 873, 761, 762, 762, 759, 759, 892,\n 892, 788, 784, 438, 138, 277, 415, 392, 392, 668, 668, 390, 390, 317,\n 317, 276, 276, 509, 509, 410, 410, 234, 234, 334, 334, 732, 544, 544,\n 910, 667, 760, 760, 776, 595, 694, 626, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 894, 838, 1016, 458, 748, 924, 748, 918,\n 927, 928, 928, 834, 873, 828, 924, 924, 917, 930, 931, 463, 883, 836,\n 836, 867, 867, 696, 696, 874, 874, 760, 946, 771, 865, 771, 888, 967,\n 888, 831, 873, 927, 970, 918\n];\n\n/**\n * Represents one of the 14 standard fonts.\n * It's used to create a standard PDF font to draw the text in to the PDF.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * //\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nclass PdfStandardFont extends PdfFont {\n constructor(fontFamilyPrototype, size, style) {\n super(size, (typeof style === 'undefined') ? ((fontFamilyPrototype instanceof PdfStandardFont) ? fontFamilyPrototype.style : PdfFontStyle.Regular) : style);\n /**\n * Gets `ascent` of the font.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Gets `encodings` for internal class use.\n * @hidden\n * @private\n */\n this.encodings = ['Unknown', 'StandardEncoding', 'MacRomanEncoding', 'MacExpertEncoding',\n 'WinAnsiEncoding', 'PDFDocEncoding', 'IdentityH'];\n if (typeof fontFamilyPrototype === 'undefined') {\n this.pdfFontFamily = PdfFontFamily.Helvetica;\n }\n else if ((fontFamilyPrototype instanceof PdfStandardFont)) {\n this.pdfFontFamily = fontFamilyPrototype.fontFamily;\n }\n else {\n this.pdfFontFamily = fontFamilyPrototype;\n }\n this.checkStyle();\n this.initializeInternals();\n }\n /* tslint:enable */\n //Properties\n /**\n * Gets the `FontFamily`.\n * @private\n */\n get fontFamily() {\n return this.pdfFontFamily;\n }\n //methods\n /**\n * Checks font `style` of the font.\n * @private\n */\n checkStyle() {\n if (this.fontFamily === PdfFontFamily.Symbol || this.fontFamily === PdfFontFamily.ZapfDingbats) {\n let style = this.style;\n style &= ~(PdfFontStyle.Bold | PdfFontStyle.Italic);\n this.setStyle(style);\n }\n }\n /**\n * Returns `width` of the line.\n * @public\n */\n getLineWidth(line, format) {\n if (line == null) {\n throw new Error('ArgumentNullException:line');\n }\n let width = 0;\n let name = this.name;\n line = PdfStandardFont.convert(line);\n for (let i = 0, len = line.length; i < len; i++) {\n let ch = line[i];\n let charWidth = this.getCharWidthInternal(ch, format);\n width += charWidth;\n }\n let size = this.metrics.getSize(format);\n width *= (PdfFont.charSizeMultiplier * size);\n width = this.applyFormatSettings(line, format, width);\n return width;\n }\n /**\n * Checks whether fonts are `equals`.\n * @private\n */\n equalsToFont(font) {\n let equal = false;\n let stFont = font;\n if (stFont != null) {\n let fontFamilyEqual = (this.fontFamily === stFont.fontFamily);\n let lineReducer = (~(PdfFontStyle.Underline | PdfFontStyle.Strikeout));\n let styleEqual = (this.style & lineReducer) === (stFont.style & lineReducer);\n equal = (fontFamilyEqual && styleEqual);\n }\n return equal;\n }\n /**\n * `Initializes` font internals..\n * @private\n */\n initializeInternals() {\n let equalFont = null;\n // if (PdfDocument.EnableCache) {\n equalFont = PdfDocument.cache.search(this);\n // }\n let internals = null;\n // if (equalFont == null) {\n // Create font metrics.\n let metrics = PdfStandardFontMetricsFactory.getMetrics(this.pdfFontFamily, this.style, this.size);\n this.metrics = metrics;\n internals = this.createInternals();\n this.setInternals(internals);\n }\n /**\n * `Creates` font`s dictionary.\n * @private\n */\n createInternals() {\n let dictionary = new PdfDictionary();\n dictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n dictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.type1));\n dictionary.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.metrics.postScriptName));\n if (this.fontFamily !== PdfFontFamily.Symbol && this.fontFamily !== PdfFontFamily.ZapfDingbats) {\n let encoding = this.encodings[FontEncoding.WinAnsiEncoding];\n dictionary.items.setValue(this.dictionaryProperties.encoding, new PdfName(encoding));\n }\n return dictionary;\n }\n /**\n * Returns `width` of the char. This methods doesn`t takes into consideration font`s size.\n * @private\n */\n getCharWidthInternal(charCode, format) {\n let width = 0;\n let code = 0;\n code = charCode.charCodeAt(0);\n if (this.name === '0' || this.name === '1' || this.name === '2' ||\n this.name === '3' || this.name === '4') {\n code = code - PdfStandardFont.charOffset;\n }\n code = (code >= 0 && code !== 128) ? code : 0;\n let metrics = this.metrics;\n let widthTable = metrics.widthTable;\n width = widthTable.items(code);\n return width;\n }\n /**\n * `Converts` the specified text.\n * @private\n */\n static convert(text) {\n return text;\n }\n}\n//Constants\n/**\n * First character `position`.\n * @private\n */\nPdfStandardFont.charOffset = 32;\n\n/**\n * `PdfAnnotation` class represents the base class for annotation objects.\n * @private\n */\nclass PdfAnnotation {\n constructor(arg1) {\n // Fields\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * `Color` of the annotation\n * @private\n */\n this.pdfColor = new PdfColor(255, 255, 255);\n /**\n * `Bounds` of the annotation.\n * @private\n */\n this.rectangle = new RectangleF(0, 0, 0, 0);\n /**\n * Parent `page` of the annotation.\n * @private\n */\n this.pdfPage = null;\n /**\n * `Brush of the text` of the annotation.\n * @default new PdfSolidBrush(new PdfColor(0, 0, 0))\n * @private\n */\n this.textBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n /**\n * `Font of the text` of the annotation.\n * @default new PdfStandardFont(PdfFontFamily.TimesRoman, 10)\n * @private\n */\n this.textFont = new PdfStandardFont(PdfFontFamily.TimesRoman, 10);\n /**\n * `StringFormat of the text` of the annotation.\n * @default new PdfStringFormat(PdfTextAlignment.Left)\n * @private\n */\n this.format = new PdfStringFormat(PdfTextAlignment.Left);\n /**\n * `Text` of the annotation.\n * @private\n */\n this.content = '';\n /**\n * Internal variable to store `dictionary`.\n * @private\n */\n this.pdfDictionary = new PdfDictionary();\n /**\n * To specifying the `Inner color` with which to fill the annotation\n * @private\n */\n this.internalColor = new PdfColor();\n /**\n * `opacity or darkness` of the annotation.\n * @private\n * @default 1.0\n */\n this.darkness = 1.0;\n if (typeof arg1 === 'undefined') {\n this.initialize();\n }\n else {\n this.initialize();\n this.bounds = arg1;\n }\n }\n // Properties\n /**\n * `Color` of the annotation\n * @private\n */\n get color() {\n return this.pdfColor;\n }\n set color(value) {\n this.pdfColor = value;\n }\n /**\n * To specifying the `Inner color` with which to fill the annotation\n * @private\n */\n get innerColor() {\n return this.internalColor;\n }\n set innerColor(value) {\n this.internalColor = value;\n }\n /**\n * `bounds` of the annotation.\n * @private\n */\n get bounds() {\n return this.rectangle;\n }\n set bounds(value) {\n this.rectangle = value;\n }\n /**\n * Parent `page` of the annotation.\n * @private\n */\n get page() {\n return this.pdfPage;\n }\n /**\n * To specifying the `Font of the text` in the annotation.\n * @private\n */\n get font() {\n return this.textFont;\n }\n set font(value) {\n this.textFont = value;\n }\n /**\n * To specifying the `StringFormat of the text` in the annotation.\n * @private\n */\n get stringFormat() {\n return this.format;\n }\n set stringFormat(value) {\n this.format = value;\n }\n /**\n * To specifying the `Brush of the text` in the annotation.\n * @private\n */\n get brush() {\n return this.textBrush;\n }\n set brush(value) {\n this.textBrush = value;\n }\n /**\n * `Text` of the annotation.\n * @private\n */\n get text() {\n return this.content;\n }\n set text(value) {\n this.content = value;\n this.dictionary.items.setValue(this.dictionaryProperties.contents, new PdfString(this.content));\n }\n /**\n * Internal variable to store `dictionary`.\n * @hidden\n */\n get dictionary() {\n return this.pdfDictionary;\n }\n set dictionary(value) {\n this.pdfDictionary = value;\n }\n // Implementation\n /**\n * `Initialize` the annotation event handler and specifies the type of the annotation.\n * @private\n */\n initialize() {\n this.pdfDictionary.annotationBeginSave = new SaveAnnotationEventHandler(this);\n this.pdfDictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.annot));\n }\n /**\n * Sets related `page` of the annotation.\n * @private\n */\n setPage(page) {\n this.pdfPage = page;\n this.pdfDictionary.items.setValue(this.dictionaryProperties.p, new PdfReferenceHolder(this.pdfPage));\n }\n /**\n * Handles the `BeginSave` event of the Dictionary.\n * @private\n */\n beginSave() {\n this.save();\n }\n /**\n * `Saves` an annotation.\n * @private\n */\n /* tslint:disable */\n save() {\n let nativeRectangle = new RectangleF(this.rectangle.x, this.rectangle.y, this.rectangle.width, this.rectangle.height);\n let section = this.pdfPage.section;\n let initialHeight = nativeRectangle.height;\n let tempLoacation = section.pointToNativePdf(this.page, new PointF(nativeRectangle.x, nativeRectangle.y));\n nativeRectangle.x = tempLoacation.x;\n nativeRectangle.width = tempLoacation.x + nativeRectangle.width;\n nativeRectangle.y = (tempLoacation.y - this.page.document.pageSettings.margins.top);\n nativeRectangle.height = nativeRectangle.y - initialHeight;\n this.pdfDictionary.items.setValue(this.dictionaryProperties.rect, PdfArray.fromRectangle(nativeRectangle));\n this.dictionary.items.setValue(this.dictionaryProperties.ca, new PdfNumber(this.darkness));\n }\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get element() {\n return this.pdfDictionary;\n }\n}\n\n/**\n * `PdfLinkAnnotation` class represents the ink annotation class.\n * @private\n */\nclass PdfLinkAnnotation extends PdfAnnotation {\n constructor(rectangle) {\n super(rectangle);\n }\n // Implementation\n /**\n * `Initializes` annotation object.\n * @private\n */\n initialize() {\n super.initialize();\n this.dictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.link));\n }\n}\n\n/**\n * Represents base class for `link annotations` with associated action.\n * @private\n */\nclass PdfActionLinkAnnotation extends PdfLinkAnnotation {\n // Constructors\n /**\n * Specifies the constructor for `ActionLinkAnnotation`.\n * @private\n */\n constructor(rectangle) {\n super(rectangle);\n // Fields\n /**\n * Internal variable to store annotation's `action`.\n * @default null\n * @private\n */\n this.pdfAction = null;\n }\n //Public method\n /**\n * get and set the `action`.\n * @hidden\n */\n getSetAction(value) {\n if (typeof value === 'undefined') {\n return this.pdfAction;\n }\n else {\n this.pdfAction = value;\n }\n }\n}\n\n/**\n * `PdfDocumentLinkAnnotation` class represents an annotation object with holds link on another location within a document.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create new pages\n * let page1 : PdfPage = document.pages.add();\n * let page2 : PdfPage = document.pages.add();\n * // create a new rectangle\n * let bounds : RectangleF = new RectangleF({x : 10, y : 200}, {width : 300, height : 25});\n * //\n * // create a new document link annotation\n * let documentLinkAnnotation : PdfDocumentLinkAnnotation = new PdfDocumentLinkAnnotation(bounds);\n * // set the annotation text\n * documentLinkAnnotation.text = 'Document link annotation';\n * // set the destination\n * documentLinkAnnotation.destination = new PdfDestination(page2);\n * // set the documentlink annotation location\n * documentLinkAnnotation.destination.location = new PointF(10, 0);\n * // add this annotation to a new page\n * page1.annotations.add(documentLinkAnnotation);\n * //\n * // save the document to disk\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nclass PdfDocumentLinkAnnotation extends PdfLinkAnnotation {\n constructor(rectangle, destination) {\n super(rectangle);\n // Fields\n /**\n * `Destination` of the annotation.\n * @default null\n * @private\n */\n this.pdfDestination = null;\n if (typeof destination !== 'undefined') {\n this.destination = destination;\n }\n }\n // Properties\n /**\n * Gets or sets the `destination` of the annotation.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create new pages\n * let page1 : PdfPage = document.pages.add();\n * let page2 : PdfPage = document.pages.add();\n * // create a new rectangle\n * let bounds : RectangleF = new RectangleF({x : 10, y : 200}, {width : 300, height : 25});\n * //\n * // create a new document link annotation\n * let documentLinkAnnotation : PdfDocumentLinkAnnotation = new PdfDocumentLinkAnnotation(bounds);\n * // set the annotation text\n * documentLinkAnnotation.text = 'Document link annotation';\n * // set the destination\n * documentLinkAnnotation.destination = new PdfDestination(page2);\n * // set the documentlink annotation location\n * documentLinkAnnotation.destination.location = new PointF(10, 0);\n * // add this annotation to a new page\n * page1.annotations.add(documentLinkAnnotation);\n * //\n * // save the document to disk\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @default null\n */\n get destination() {\n return this.pdfDestination;\n }\n set destination(value) {\n // if (this.pdfDestination !== value) {\n this.pdfDestination = value;\n // }\n }\n // Implementation\n /**\n * `Saves` annotation object.\n * @private\n */\n save() {\n super.save();\n if (this.pdfDestination != null) {\n this.dictionary.items.setValue(this.dictionaryProperties.dest, this.pdfDestination.element);\n }\n }\n /**\n * `Clone` the document link annotation.\n * @private\n */\n clone() {\n let annot = new PdfDocumentLinkAnnotation(this.bounds, this.destination);\n annot.color = this.color;\n annot.brush = this.brush;\n annot.destination = this.destination;\n annot.font = this.font;\n return annot;\n }\n}\n\n/**\n * ElementLayouter.ts class for EJ2-PDF\n */\n/**\n * Base class for `elements lay outing`.\n * @private\n */\nclass ElementLayouter {\n // Constructor\n /**\n * Initializes a new instance of the `ElementLayouter` class.\n * @private\n */\n constructor(element) {\n this.layoutElement = element;\n }\n // Properties\n /**\n * Gets the `element`.\n * @private\n */\n get elements() {\n return this.layoutElement;\n }\n /**\n * Gets the `element`.\n * @private\n */\n getElement() {\n return this.layoutElement;\n }\n // Implementation\n /**\n * `Layouts` the element.\n * @private\n */\n layout(param) {\n return this.layoutInternal(param);\n }\n Layouter(param) {\n return this.layoutInternal(param);\n }\n /**\n * Returns the `next page`.\n * @private\n */\n getNextPage(currentPage) {\n let section = currentPage.section;\n let nextPage = section.add();\n return nextPage;\n }\n getPaginateBounds(param) {\n if ((param == null)) {\n throw new Error('ArgumentNullException : param');\n }\n let result = param.format.usePaginateBounds ? param.format.paginateBounds\n : new RectangleF(param.bounds.x, 0, param.bounds.width, param.bounds.height);\n return result;\n }\n}\nclass PdfLayoutFormat {\n // Properties\n /**\n * Gets or sets `layout` type of the element.\n * @private\n */\n get layout() {\n // if (typeof this.layoutType === 'undefined' || this.layoutType == null) {\n // this.layoutType = PdfLayoutType.Paginate;\n // }\n return this.layoutType;\n }\n set layout(value) {\n this.layoutType = value;\n }\n /**\n * Gets or sets `break` type of the element.\n * @private\n */\n get break() {\n // if (typeof this.breakType === 'undefined' || this.boundsSet == null) {\n // this.breakType = PdfLayoutBreakType.FitPage;\n // }\n return this.breakType;\n }\n set break(value) {\n this.breakType = value;\n }\n /**\n * Gets or sets the `bounds` on the next page.\n * @private\n */\n get paginateBounds() {\n if (typeof this.layoutPaginateBounds === 'undefined' && this.layoutPaginateBounds == null) {\n this.layoutPaginateBounds = new RectangleF(0, 0, 0, 0);\n }\n return this.layoutPaginateBounds;\n }\n set paginateBounds(value) {\n this.layoutPaginateBounds = value;\n this.boundsSet = true;\n }\n /**\n * Gets a value indicating whether [`use paginate bounds`].\n * @private\n */\n get usePaginateBounds() {\n // if (typeof this.boundsSet === 'undefined' || this.boundsSet == null) {\n // this.boundsSet = false;\n // }\n return this.boundsSet;\n }\n constructor(baseFormat) {\n if (typeof baseFormat === 'undefined') {\n //\n }\n else {\n this.break = baseFormat.break;\n this.layout = baseFormat.layout;\n this.paginateBounds = baseFormat.paginateBounds;\n this.boundsSet = baseFormat.usePaginateBounds;\n }\n }\n}\nclass PdfLayoutParams {\n // Properties\n /**\n * Gets or sets the layout `page` for the element.\n * @private\n */\n get page() {\n return this.pdfPage;\n }\n set page(value) {\n this.pdfPage = value;\n }\n /**\n * Gets or sets layout `bounds` for the element.\n * @private\n */\n get bounds() {\n return new RectangleF(this.layoutBounds.x, this.layoutBounds.y, this.layoutBounds.width, this.layoutBounds.height);\n }\n set bounds(value) {\n this.layoutBounds = value;\n }\n /**\n * Gets or sets `layout settings` for the element.\n * @private\n */\n get format() {\n return this.layoutFormat;\n }\n set format(value) {\n this.layoutFormat = value;\n }\n}\nclass PdfLayoutResult {\n // Properties\n /**\n * Gets the last `page` where the element was drawn.\n * @private\n */\n get page() {\n return this.pdfPage;\n }\n /**\n * Gets the `bounds` of the element on the last page where it was drawn.\n * @private\n */\n get bounds() {\n return this.layoutBounds;\n }\n // Constructors\n /**\n * Initializes the new instance of `PdfLayoutResult` class.\n * @private\n */\n constructor(page, bounds) {\n this.pdfPage = page;\n this.layoutBounds = bounds;\n }\n}\n\n/**\n * PdfBorders.ts class for EJ2-PDF\n */\n/**\n * `PdfBorders` class used represents the cell border of the PDF grid.\n */\nclass PdfBorders {\n // Properties\n /**\n * Gets or sets the `Left`.\n * @private\n */\n get left() {\n return this.leftPen;\n }\n set left(value) {\n this.leftPen = value;\n }\n /**\n * Gets or sets the `Right`.\n * @private\n */\n get right() {\n return this.rightPen;\n }\n set right(value) {\n this.rightPen = value;\n }\n /**\n * Gets or sets the `Top`.\n * @private\n */\n get top() {\n return this.topPen;\n }\n set top(value) {\n this.topPen = value;\n }\n /**\n * Gets or sets the `Bottom`.\n * @private\n */\n get bottom() {\n return this.bottomPen;\n }\n set bottom(value) {\n this.bottomPen = value;\n }\n /**\n * sets the `All`.\n * @private\n */\n set all(value) {\n this.leftPen = this.rightPen = this.topPen = this.bottomPen = value;\n }\n /**\n * Gets a value indicating whether this instance `is all`.\n * @private\n */\n get isAll() {\n return ((this.leftPen === this.rightPen) && (this.leftPen === this.topPen) && (this.leftPen === this.bottomPen));\n }\n /**\n * Gets the `default`.\n * @private\n */\n static get default() {\n return new PdfBorders();\n }\n // Constructor\n /**\n * Create a new instance for `PdfBorders` class.\n * @private\n */\n constructor() {\n let defaultBorderPenLeft = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenLeft.dashStyle = PdfDashStyle.Solid;\n let defaultBorderPenRight = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenRight.dashStyle = PdfDashStyle.Solid;\n let defaultBorderPenTop = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenTop.dashStyle = PdfDashStyle.Solid;\n let defaultBorderPenBottom = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenBottom.dashStyle = PdfDashStyle.Solid;\n this.leftPen = defaultBorderPenLeft;\n this.rightPen = defaultBorderPenRight;\n this.topPen = defaultBorderPenTop;\n this.bottomPen = defaultBorderPenBottom;\n }\n}\nclass PdfPaddings {\n constructor(left, right, top, bottom) {\n /**\n * The 'left' border padding set.\n * @private\n */\n this.hasLeftPad = false;\n /**\n * The 'right' border padding set.\n * @private\n */\n this.hasRightPad = false;\n /**\n * The 'top' border padding set.\n * @private\n */\n this.hasTopPad = false;\n /**\n * The 'bottom' border padding set.\n * @private\n */\n this.hasBottomPad = false;\n if (typeof left === 'undefined') {\n //5.76 and 0 are taken from ms-word default table margins.\n this.leftPad = this.rightPad = 5.76;\n //0.5 is set for top and bottom by default.\n this.bottomPad = this.topPad = 0.5;\n }\n else {\n this.leftPad = left;\n this.rightPad = right;\n this.topPad = top;\n this.bottomPad = bottom;\n this.hasLeftPad = true;\n this.hasRightPad = true;\n this.hasTopPad = true;\n this.hasBottomPad = true;\n }\n }\n // Properties\n /**\n * Gets or sets the `left` value of the edge\n * @private\n */\n get left() {\n return this.leftPad;\n }\n set left(value) {\n this.leftPad = value;\n this.hasLeftPad = true;\n }\n /**\n * Gets or sets the `right` value of the edge.\n * @private\n */\n get right() {\n return this.rightPad;\n }\n set right(value) {\n this.rightPad = value;\n this.hasRightPad = true;\n }\n /**\n * Gets or sets the `top` value of the edge\n * @private\n */\n get top() {\n return this.topPad;\n }\n set top(value) {\n this.topPad = value;\n this.hasTopPad = true;\n }\n /**\n * Gets or sets the `bottom` value of the edge.\n * @private\n */\n get bottom() {\n return this.bottomPad;\n }\n set bottom(value) {\n this.bottomPad = value;\n this.hasBottomPad = true;\n }\n /**\n * Sets value to all sides `left,right,top and bottom`.s\n * @private\n */\n set all(value) {\n this.leftPad = this.rightPad = this.topPad = this.bottomPad = value;\n this.hasLeftPad = true;\n this.hasRightPad = true;\n this.hasTopPad = true;\n this.hasBottomPad = true;\n }\n}\n\n/**\n * `PdfLayoutElement` class represents the base class for all elements that can be layout on the pages.\n * @private\n */\nclass PdfLayoutElement {\n // Property\n /**\n * Gets a value indicating whether the `start page layout event` should be raised.\n * @private\n */\n get raiseBeginPageLayout() {\n return (typeof this.beginPageLayout !== 'undefined');\n }\n /**\n * Gets a value indicating whether the `ending page layout event` should be raised.\n * @private\n */\n get raiseEndPageLayout() {\n return (typeof this.endPageLayout !== 'undefined');\n }\n //Event Handlers\n onBeginPageLayout(args) {\n if (this.beginPageLayout) {\n this.beginPageLayout(this, args);\n }\n }\n onEndPageLayout(args) {\n if (this.endPageLayout) {\n this.endPageLayout(this, args);\n }\n }\n drawHelper(arg2, arg3, arg4, arg5) {\n if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && typeof arg4 === 'undefined') {\n return this.drawHelper(arg2, arg3.x, arg3.y);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && typeof arg5 === 'undefined') {\n return this.drawHelper(arg2, arg3, arg4, null);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'undefined') {\n return this.drawHelper(arg2, arg3, null);\n }\n else if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && arg4 instanceof PdfLayoutFormat) {\n return this.drawHelper(arg2, arg3.x, arg3.y, arg4);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && (arg5 instanceof PdfLayoutFormat || arg5 == null)) {\n let width = (arg2.graphics.clientSize.width - arg3);\n let layoutRectangle = new RectangleF(arg3, arg4, width, 0);\n return this.drawHelper(arg2, layoutRectangle, arg5);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'boolean') {\n this.bEmbedFonts = arg4;\n return this.drawHelper(arg2, arg3, null);\n }\n else {\n let param = new PdfLayoutParams();\n let temparg3 = arg3;\n let temparg4 = arg4;\n param.page = arg2;\n param.bounds = temparg3;\n if (param != null) {\n let x = param.bounds.x;\n let y = param.bounds.y;\n if (param.bounds.x === 0) {\n x = PdfBorders.default.right.width / 2;\n }\n if (param.bounds.y === 0) {\n y = PdfBorders.default.top.width / 2;\n }\n let newBound = new RectangleF(x, y, param.bounds.width, param.bounds.height);\n param.bounds = newBound;\n }\n param.format = (temparg4 != null) ? temparg4 : new PdfLayoutFormat();\n let result = this.layout(param);\n return result;\n }\n }\n}\n\n/**\n * TextLayouter.ts class for EJ2-PDF\n */\n/**\n * Class that `layouts the text`.\n * @private\n */\nclass TextLayouter extends ElementLayouter {\n /**\n * Gets the layout `element`.\n * @private\n */\n get element() {\n return super.getElement();\n }\n // Constructors\n /**\n * Initializes a new instance of the `TextLayouter` class.\n * @private\n */\n constructor(element) {\n super(element);\n }\n // Implementation\n /**\n * `Layouts` the element.\n * @private\n */\n layoutInternal(param) {\n /* tslint:disable */\n this.format = (this.element.stringFormat !== null && typeof this.element.stringFormat !== 'undefined') ? this.element.stringFormat : null;\n let currentPage = param.page;\n let currentBounds = param.bounds;\n let text = this.element.value;\n let result = null;\n let pageResult = new TextPageLayoutResult();\n pageResult.page = currentPage;\n pageResult.remainder = text;\n for (;;) {\n pageResult = this.layoutOnPage(text, currentPage, currentBounds, param);\n result = this.getLayoutResult(pageResult);\n break;\n }\n /* tslint:enable */\n return result;\n }\n /**\n * Raises `PageLayout` event if needed.\n * @private\n */\n getLayoutResult(pageResult) {\n let result = new PdfTextLayoutResult(pageResult.page, pageResult.bounds, pageResult.remainder, pageResult.lastLineBounds);\n return result;\n }\n /* tslint:disable */\n /**\n * `Layouts` the text on the page.\n * @private\n */\n layoutOnPage(text, currentPage, currentBounds, param) {\n let result = new TextPageLayoutResult();\n result.remainder = text;\n result.page = currentPage;\n currentBounds = this.checkCorrectBounds(currentPage, currentBounds);\n let layouter = new PdfStringLayouter();\n let stringResult = layouter.layout(text, this.element.font, this.format, currentBounds, currentPage.getClientSize().height, false, new SizeF(0, 0));\n let textFinished = (stringResult.remainder == null);\n let doesntFit = (param.format.break === PdfLayoutBreakType.FitElement);\n let canDraw = !(doesntFit || stringResult.empty);\n // Draw the text.\n let graphics = currentPage.graphics;\n let brush = this.element.getBrush();\n if (this.element instanceof PdfTextWebLink) {\n brush.color = new PdfColor(0, 0, 255);\n }\n graphics.drawStringLayoutResult(stringResult, this.element.font, this.element.pen, brush, currentBounds, this.format);\n let lineInfo = stringResult.lines[stringResult.lineCount - 1];\n result.lastLineBounds = graphics.getLineBounds(stringResult.lineCount - 1, stringResult, this.element.font, currentBounds, this.format);\n result.bounds = this.getTextPageBounds(currentPage, currentBounds, stringResult);\n result.remainder = stringResult.remainder;\n result.end = (textFinished);\n return result;\n }\n /* tslint:enable */\n /**\n * `Corrects current bounds` on the page.\n * @private\n */\n checkCorrectBounds(currentPage, currentBounds) {\n let pageSize = currentPage.graphics.clientSize;\n currentBounds.height = (currentBounds.height > 0) ? currentBounds.height : pageSize.height - currentBounds.y;\n return currentBounds;\n }\n /**\n * Returns a `rectangle` where the text was printed on the page.\n * @private\n */\n /* tslint:disable */\n getTextPageBounds(currentPage, currentBounds, stringResult) {\n let textSize = stringResult.actualSize;\n let x = currentBounds.x;\n let y = currentBounds.y;\n let width = (currentBounds.width > 0) ? currentBounds.width : textSize.width;\n let height = textSize.height;\n let shiftedRect = currentPage.graphics.checkCorrectLayoutRectangle(textSize, currentBounds.x, currentBounds.y, this.format);\n // if (currentBounds.width <= 0) {\n x = shiftedRect.x;\n // }\n let verticalShift = currentPage.graphics.getTextVerticalAlignShift(textSize.height, currentBounds.height, this.format);\n y += verticalShift;\n let bounds = new RectangleF(x, y, width, height);\n return bounds;\n }\n}\nclass TextPageLayoutResult {\n}\nclass PdfTextLayoutResult extends PdfLayoutResult {\n // Properties\n /**\n * Gets a value that contains the `text` that was not printed.\n * @private\n */\n get remainder() {\n return this.remainderText;\n }\n /**\n * Gets a value that indicates the `bounds` of the last line that was printed on the page.\n * @private\n */\n get lastLineBounds() {\n return this.lastLineTextBounds;\n }\n // Constructors\n /**\n * Initializes the new instance of `PdfTextLayoutResult` class.\n * @private\n */\n constructor(page, bounds, remainder, lastLineBounds) {\n super(page, bounds);\n this.remainderText = remainder;\n this.lastLineTextBounds = lastLineBounds;\n }\n}\n\n/**\n * PdfTextElement.ts class for EJ2-PDF\n */\n/**\n * `PdfTextElement` class represents the text area with the ability to span several pages\n * and inherited from the 'PdfLayoutElement' class.\n * @private\n */\nclass PdfTextElement extends PdfLayoutElement {\n constructor(arg1, arg2, arg3, arg4, arg5) {\n super();\n // Fields\n /**\n * `Text` data.\n * @private\n */\n this.content = '';\n /**\n * `Value` of text data.\n * @private\n */\n this.elementValue = '';\n /**\n * indicate whether the drawText with PointF overload is called or not.\n * @default false\n * @private\n */\n this.hasPointOverload = false;\n /**\n * indicate whether the PdfGridCell value is `PdfTextElement`\n * @default false\n * @private\n */\n this.isPdfTextElement = false;\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (typeof arg1 === 'string' && typeof arg2 === 'undefined') {\n this.content = arg1;\n this.elementValue = arg1;\n }\n else if (typeof arg1 === 'string' && arg2 instanceof PdfFont && typeof arg3 === 'undefined') {\n this.content = arg1;\n this.elementValue = arg1;\n this.pdfFont = arg2;\n }\n else if (typeof arg1 === 'string' && arg2 instanceof PdfFont && arg3 instanceof PdfPen && typeof arg4 === 'undefined') {\n this.content = arg1;\n this.elementValue = arg1;\n this.pdfFont = arg2;\n this.pdfPen = arg3;\n }\n else if (typeof arg1 === 'string' && arg2 instanceof PdfFont && arg3 instanceof PdfBrush && typeof arg4 === 'undefined') {\n this.content = arg1;\n this.elementValue = arg1;\n this.pdfFont = arg2;\n this.pdfBrush = arg3;\n }\n else {\n this.content = arg1;\n this.elementValue = arg1;\n this.pdfFont = arg2;\n this.pdfPen = arg3;\n this.pdfBrush = arg4;\n this.format = arg5;\n }\n }\n // Properties\n /**\n * Gets or sets a value indicating the `text` that should be printed.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // create the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * //\n * // set the link text\n * textLink.text = 'Google';\n * //\n * // set the font\n * textLink.font = font;\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get text() {\n return this.content;\n }\n set text(value) {\n this.elementValue = value;\n this.content = value;\n }\n //get value\n /**\n * Gets or sets a `value` indicating the text that should be printed.\n * @private\n */\n get value() {\n return this.elementValue;\n }\n //get pen\n /**\n * Gets or sets a `PdfPen` that determines the color, width, and style of the text\n * @private\n */\n get pen() {\n return this.pdfPen;\n }\n //Set pen value\n set pen(value) {\n this.pdfPen = value;\n }\n //get brush\n /**\n * Gets or sets the `PdfBrush` that will be used to draw the text with color and texture.\n * @private\n */\n get brush() {\n return this.pdfBrush;\n }\n //Set brush value\n set brush(value) {\n this.pdfBrush = value;\n }\n //get font\n /**\n * Gets or sets a `PdfFont` that defines the text format.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // create the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * // set the link text\n * textLink.text = 'Google';\n * //\n * // set the font\n * textLink.font = font;\n * //\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get font() {\n return this.pdfFont;\n }\n set font(value) {\n this.pdfFont = value;\n if (this.pdfFont instanceof PdfStandardFont && this.content != null) {\n this.elementValue = PdfStandardFont.convert(this.content);\n }\n else {\n this.elementValue = this.content;\n }\n }\n /**\n * Gets or sets the `PdfStringFormat` that will be used to set the string format\n * @private\n */\n get stringFormat() {\n return this.format;\n }\n set stringFormat(value) {\n this.format = value;\n }\n // Implementation\n /**\n * Gets a `brush` for drawing.\n * @private\n */\n getBrush() {\n return (this.pdfBrush == null || typeof this.pdfBrush === 'undefined') ? new PdfSolidBrush(new PdfColor(0, 0, 0)) : this.pdfBrush;\n }\n // /**\n // * `Draws` an element on the Graphics.\n // * @private\n // */\n // public drawInternal(graphics : PdfGraphics) : void {\n // graphics.drawString(this.elementValue, this.pdfFont, this.pdfPen, this.getBrush(), 0, 0, this.stringFormat);\n // }\n /**\n * `Layouts` the element.\n * @private\n */\n layout(param) {\n let layouter = new TextLayouter(this);\n let result = layouter.layout(param);\n return result;\n }\n drawText(arg2, arg3, arg4, arg5) {\n if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && typeof arg4 === 'undefined') {\n this.hasPointOverload = true;\n return this.drawText(arg2, arg3.x, arg3.y);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && typeof arg5 === 'undefined') {\n this.hasPointOverload = true;\n return this.drawText(arg2, arg3, arg4, null);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'undefined') {\n return this.drawText(arg2, arg3, null);\n }\n else if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && arg4 instanceof PdfLayoutFormat) {\n this.hasPointOverload = true;\n return this.drawText(arg2, arg3.x, arg3.y, arg4);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && (arg5 instanceof PdfLayoutFormat || arg5 == null)) {\n this.hasPointOverload = true;\n let width = (arg2.graphics.clientSize.width - arg3);\n let layoutRectangle = new RectangleF(arg3, arg4, width, 0);\n return this.drawText(arg2, layoutRectangle, arg5);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'boolean') {\n return this.drawText(arg2, arg3, null);\n }\n else {\n let layout = new PdfStringLayouter();\n if (this.hasPointOverload) {\n let stringLayoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF((arg2.graphics.clientSize.width - arg3.x), 0), true, arg2.graphics.clientSize);\n let layoutResult;\n let param = new PdfLayoutParams();\n let temparg3 = arg3;\n let temparg4 = arg4;\n param.page = arg2;\n param.bounds = temparg3;\n param.format = (temparg4 != null) ? temparg4 : new PdfLayoutFormat();\n if (stringLayoutResult.lines.length > 1) {\n this.text = stringLayoutResult.layoutLines[0].text;\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n let previousPosition = new PointF(param.bounds.x, param.bounds.y);\n layoutResult = this.layout(param);\n let bounds = new RectangleF(0, layoutResult.bounds.y + stringLayoutResult.lineHeight, arg2.graphics.clientSize.width, stringLayoutResult.lineHeight);\n for (let i = 1; i < stringLayoutResult.lines.length; i++) {\n param.page = layoutResult.page;\n param.bounds = new RectangleF(new PointF(bounds.x, bounds.y), new SizeF(bounds.width, bounds.height));\n this.text = stringLayoutResult.layoutLines[i].text;\n if (bounds.y + stringLayoutResult.lineHeight > layoutResult.page.graphics.clientSize.height) {\n param.page = param.page.graphics.getNextPage();\n if (previousPosition.y > (layoutResult.page.graphics.clientSize.height - layoutResult.bounds.height)) {\n bounds = new RectangleF(0, layoutResult.bounds.height, layoutResult.page.graphics.clientSize.width, stringLayoutResult.lineHeight);\n }\n else {\n bounds = new RectangleF(0, 0, layoutResult.page.graphics.clientSize.width, stringLayoutResult.lineHeight);\n }\n param.bounds = bounds;\n }\n layoutResult = this.layout(param);\n if (i !== (stringLayoutResult.lines.length - 1)) {\n bounds = new RectangleF(0, layoutResult.bounds.y + stringLayoutResult.lineHeight, layoutResult.page.graphics.clientSize.width, stringLayoutResult.lineHeight);\n }\n else {\n let lineWidth = this.font.measureString(this.text, this.format).width;\n layoutResult = this.calculateResultBounds(layoutResult, lineWidth, layoutResult.page.graphics.clientSize.width, 0);\n }\n }\n }\n return layoutResult;\n }\n else {\n let lineSize = this.font.measureString(this.text, this.format);\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n layoutResult = this.layout(param);\n layoutResult = this.calculateResultBounds(layoutResult, lineSize.width, layoutResult.page.graphics.clientSize.width, 0);\n }\n return layoutResult;\n }\n }\n else {\n let layoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF(arg3.width, 0), false, arg2.graphics.clientSize);\n let result;\n let param = new PdfLayoutParams();\n let temparg3 = arg3;\n let temparg4 = arg4;\n param.page = arg2;\n param.bounds = temparg3;\n param.format = (temparg4 != null) ? temparg4 : new PdfLayoutFormat();\n if (layoutResult.lines.length > 1) {\n this.text = layoutResult.layoutLines[0].text;\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n let previousPosition = new PointF(param.bounds.x, param.bounds.y);\n result = this.layout(param);\n let bounds = new RectangleF(temparg3.x, result.bounds.y + layoutResult.lineHeight, temparg3.width, layoutResult.lineHeight);\n for (let i = 1; i < layoutResult.lines.length; i++) {\n param.page = result.page;\n param.bounds = new RectangleF(bounds.x, bounds.y, bounds.width, bounds.height);\n this.text = layoutResult.layoutLines[i].text;\n if (bounds.y + layoutResult.lineHeight > result.page.graphics.clientSize.height) {\n param.page = param.page.graphics.getNextPage();\n if (previousPosition.y > (result.page.graphics.clientSize.height - result.bounds.height)) {\n bounds = new RectangleF(temparg3.x, layoutResult.lineHeight, temparg3.width, layoutResult.lineHeight);\n }\n else {\n bounds = new RectangleF(temparg3.x, 0, temparg3.width, layoutResult.lineHeight);\n }\n param.bounds = bounds;\n }\n result = this.layout(param);\n if (i !== (layoutResult.lines.length - 1)) {\n bounds = new RectangleF(temparg3.x, result.bounds.y + layoutResult.lineHeight, temparg3.width, layoutResult.lineHeight);\n }\n else {\n let lineWidth = this.font.measureString(this.text, this.format).width;\n result = this.calculateResultBounds(result, lineWidth, temparg3.width, temparg3.x);\n }\n }\n }\n return result;\n }\n else {\n let lineSize = this.font.measureString(this.text, this.format);\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n result = this.layout(param);\n result = this.calculateResultBounds(result, lineSize.width, temparg3.width, temparg3.x);\n }\n return result;\n }\n }\n }\n }\n calculateResultBounds(result, lineWidth, maximumWidth, startPosition) {\n if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Center) {\n result.bounds.x = startPosition + (maximumWidth - lineWidth) / 2;\n result.bounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Right) {\n result.bounds.x = startPosition + (maximumWidth - lineWidth);\n result.bounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Justify) {\n result.bounds.x = startPosition;\n result.bounds.width = maximumWidth;\n }\n else {\n result.bounds.width = startPosition;\n result.bounds.width = lineWidth;\n }\n return result;\n }\n}\n\n/**\n * `PdfUriAnnotation` class represents the Uri annotation.\n * @private\n */\nclass PdfUriAnnotation extends PdfActionLinkAnnotation {\n /**\n * Get `action` of the annotation.\n * @private\n */\n get uriAction() {\n if (typeof this.pdfUriAction === 'undefined') {\n this.pdfUriAction = new PdfUriAction();\n }\n return this.pdfUriAction;\n }\n // Properties\n /**\n * Gets or sets the `Uri` address.\n * @private\n */\n get uri() {\n return this.uriAction.uri;\n }\n set uri(value) {\n if (this.uriAction.uri !== value) {\n this.uriAction.uri = value;\n }\n }\n /**\n * Gets or sets the `action`.\n * @private\n */\n get action() {\n return this.getSetAction();\n }\n set action(value) {\n this.getSetAction(value);\n this.uriAction.next = value;\n }\n constructor(rectangle, uri) {\n super(rectangle);\n if (typeof uri !== 'undefined') {\n this.uri = uri;\n }\n }\n // Implementation\n /**\n * `Initializes` annotation object.\n * @private\n */\n initialize() {\n super.initialize();\n this.dictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.link));\n let tempPrimitive = this.uriAction.element;\n this.dictionary.items.setValue(this.dictionaryProperties.a, this.uriAction.element);\n }\n}\n\n/**\n * `PdfTextWebLink` class represents the class for text web link annotation.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // create the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * //\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * // set the link text\n * textLink.text = 'Google';\n * // set the font\n * textLink.font = font;\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * //\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nclass PdfTextWebLink extends PdfTextElement {\n // Constructors\n /**\n * Initializes a new instance of the `PdfTextWebLink` class.\n * @private\n */\n constructor() {\n super();\n // Fields\n /**\n * Internal variable to store `Url`.\n * @default ''\n * @private\n */\n this.uniformResourceLocator = '';\n /**\n * Internal variable to store `Uri Annotation` object.\n * @default null\n * @private\n */\n this.uriAnnotation = null;\n /**\n * Checks whether the drawTextWebLink method with `PointF` overload is called or not.\n * If it set as true, then the start position of each lines excluding firest line is changed as (0, Y).\n * @private\n * @hidden\n */\n this.recalculateBounds = false;\n this.defaultBorder = new PdfArray();\n for (let i = 0; i < 3; i++) {\n this.defaultBorder.add(new PdfNumber(0));\n }\n }\n // Properties\n /**\n * Gets or sets the `Uri address`.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // create the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * //\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * //\n * // set the link text\n * textLink.text = 'Google';\n * // set the font\n * textLink.font = font;\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get url() {\n return this.uniformResourceLocator;\n }\n set url(value) {\n if (value.length === 0) {\n throw new Error('ArgumentException : Url - string can not be empty');\n }\n this.uniformResourceLocator = value;\n }\n draw(arg1, arg2) {\n if (arg1 instanceof PdfPage) {\n let layout = new PdfStringLayouter();\n let previousFontStyle = this.font.style;\n if (arg2 instanceof PointF) {\n this.recalculateBounds = true;\n this.font.style = PdfFontStyle.Underline;\n let layoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF((arg1.graphics.clientSize.width - arg2.x), 0), true, arg1.graphics.clientSize);\n if (layoutResult.lines.length === 1) {\n let textSize = this.font.measureString(this.value);\n let rect = new RectangleF(arg2, textSize);\n rect = this.calculateBounds(rect, textSize.width, arg1.graphics.clientSize.width, arg2.x);\n this.uriAnnotation = new PdfUriAnnotation(rect, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n arg1.annotations.add(this.uriAnnotation);\n let result = this.drawText(arg1, arg2);\n this.font.style = previousFontStyle;\n return result;\n }\n else {\n let result = this.drawMultipleLineWithPoint(layoutResult, arg1, arg2);\n this.font.style = previousFontStyle;\n return result;\n }\n }\n else {\n let layoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF(arg2.width, 0), false, new SizeF(0, 0));\n this.font.style = PdfFontStyle.Underline;\n if (layoutResult.lines.length === 1) {\n let textSize = this.font.measureString(this.value);\n let rect = new RectangleF(new PointF(arg2.x, arg2.y), textSize);\n rect = this.calculateBounds(rect, textSize.width, arg2.width, arg2.x);\n this.uriAnnotation = new PdfUriAnnotation(rect, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n arg1.annotations.add(this.uriAnnotation);\n let returnValue = this.drawText(arg1, arg2);\n this.font.style = previousFontStyle;\n return returnValue;\n }\n else {\n let returnValue = this.drawMultipleLineWithBounds(layoutResult, arg1, arg2);\n this.font.style = previousFontStyle;\n return returnValue;\n }\n }\n }\n else {\n let page = new PdfPage();\n page = arg1.page;\n return this.draw(page, arg2);\n }\n }\n /* tslint:enable */\n //Private methods\n /**\n * Helper method `Draw` a Multiple Line Text Web Link on the Graphics with the specified location.\n * @private\n */\n drawMultipleLineWithPoint(result, page, location) {\n let layoutResult;\n for (let i = 0; i < result.layoutLines.length; i++) {\n let size = this.font.measureString(result.lines[i].text);\n let bounds = new RectangleF(location, size);\n if (i !== 0) {\n bounds.x = 0;\n }\n this.text = result.lines[i].text;\n if (bounds.y + size.height > page.graphics.clientSize.height) {\n if (i !== 0) {\n page = page.graphics.getNextPage();\n bounds = new RectangleF(0, 0, page.graphics.clientSize.width, size.height);\n location.y = 0;\n }\n else {\n break;\n }\n }\n bounds = this.calculateBounds(bounds, size.width, page.graphics.clientSize.width, bounds.x);\n this.uriAnnotation = new PdfUriAnnotation(bounds, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n page.annotations.add(this.uriAnnotation);\n if (i !== 0) {\n layoutResult = this.drawText(page, new PointF(0, bounds.y));\n }\n else {\n layoutResult = this.drawText(page, bounds.x, bounds.y);\n }\n location.y += size.height;\n }\n return layoutResult;\n }\n /**\n * Helper method `Draw` a Multiple Line Text Web Link on the Graphics with the specified bounds.\n * @private\n */\n drawMultipleLineWithBounds(result, page, bounds) {\n let layoutResult;\n for (let i = 0; i < result.layoutLines.length; i++) {\n let size = this.font.measureString(result.lines[i].text);\n let internalBounds = new RectangleF(new PointF(bounds.x, bounds.y), size);\n internalBounds = this.calculateBounds(internalBounds, size.width, bounds.width, bounds.x);\n this.text = result.lines[i].text;\n if (bounds.y + size.height > page.graphics.clientSize.height) {\n if (i !== 0) {\n page = page.graphics.getNextPage();\n bounds = new RectangleF(bounds.x, 0, bounds.width, size.height);\n internalBounds.y = 0;\n }\n else {\n break;\n }\n }\n this.uriAnnotation = new PdfUriAnnotation(internalBounds, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n page.annotations.add(this.uriAnnotation);\n layoutResult = this.drawText(page, bounds);\n bounds.y += size.height;\n }\n return layoutResult;\n }\n /* tslint:disable */\n calculateBounds(currentBounds, lineWidth, maximumWidth, startPosition) {\n if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Center) {\n currentBounds.x = startPosition + (maximumWidth - lineWidth) / 2;\n currentBounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Right) {\n currentBounds.x = startPosition + (maximumWidth - lineWidth);\n currentBounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Justify) {\n currentBounds.x = startPosition;\n currentBounds.width = maximumWidth;\n }\n else {\n currentBounds.width = startPosition;\n currentBounds.width = lineWidth;\n }\n return currentBounds;\n }\n}\n\n/**\n * PdfNumbersConvertor.ts class for EJ2-PDF\n * @private\n */\n/**\n * `PdfNumbersConvertor` for convert page number into numbers, roman letters, etc.,\n * @private\n */\nclass PdfNumbersConvertor {\n // Static methods\n /**\n * Convert string value from page number with correct format.\n * @private\n */\n static convert(intArabic, numberStyle) {\n let result = '';\n switch (numberStyle) {\n case PdfNumberStyle.None:\n result = '';\n break;\n case PdfNumberStyle.Numeric:\n result = intArabic.toString();\n break;\n case PdfNumberStyle.LowerLatin:\n result = this.arabicToLetter(intArabic).toLowerCase();\n break;\n case PdfNumberStyle.LowerRoman:\n result = this.arabicToRoman(intArabic).toLowerCase();\n break;\n case PdfNumberStyle.UpperLatin:\n result = this.arabicToLetter(intArabic);\n break;\n case PdfNumberStyle.UpperRoman:\n result = this.arabicToRoman(intArabic);\n break;\n }\n return result;\n }\n /**\n * Converts `arabic to roman` letters.\n * @private\n */\n static arabicToRoman(intArabic) {\n let retval = '';\n let retvalM = this.generateNumber(intArabic, 1000, 'M');\n retval += retvalM.returnValue;\n intArabic = retvalM.intArabic;\n let retvalCM = this.generateNumber(intArabic, 900, 'CM');\n retval += retvalCM.returnValue;\n intArabic = retvalCM.intArabic;\n let retvalD = this.generateNumber(intArabic, 500, 'D');\n retval += retvalD.returnValue;\n intArabic = retvalD.intArabic;\n let retvalCD = this.generateNumber(intArabic, 400, 'CD');\n retval += retvalCD.returnValue;\n intArabic = retvalCD.intArabic;\n let retvalC = this.generateNumber(intArabic, 100, 'C');\n retval += retvalC.returnValue;\n intArabic = retvalC.intArabic;\n let retvalXC = this.generateNumber(intArabic, 90, 'XC');\n retval += retvalXC.returnValue;\n intArabic = retvalXC.intArabic;\n let retvalL = this.generateNumber(intArabic, 50, 'L');\n retval += retvalL.returnValue;\n intArabic = retvalL.intArabic;\n let retvalXL = this.generateNumber(intArabic, 40, 'XL');\n retval += retvalXL.returnValue;\n intArabic = retvalXL.intArabic;\n let retvalX = this.generateNumber(intArabic, 10, 'X');\n retval += retvalX.returnValue;\n intArabic = retvalX.intArabic;\n let retvalIX = this.generateNumber(intArabic, 9, 'IX');\n retval += retvalIX.returnValue;\n intArabic = retvalIX.intArabic;\n let retvalV = this.generateNumber(intArabic, 5, 'V');\n retval += retvalV.returnValue;\n intArabic = retvalV.intArabic;\n let retvalIV = this.generateNumber(intArabic, 4, 'IV');\n retval += retvalIV.returnValue;\n intArabic = retvalIV.intArabic;\n let retvalI = this.generateNumber(intArabic, 1, 'I');\n retval += retvalI.returnValue;\n intArabic = retvalI.intArabic;\n return retval.toString();\n }\n /**\n * Converts `arabic to normal letters`.\n * @private\n */\n static arabicToLetter(arabic) {\n let stack = this.convertToLetter(arabic);\n let result = '';\n while (stack.length > 0) {\n let num = stack.pop();\n result = this.appendChar(result, num);\n }\n return result.toString();\n }\n /**\n * Generate a string value of an input number.\n * @private\n */\n static generateNumber(value, magnitude, letter) {\n let numberstring = '';\n while (value >= magnitude) {\n value -= magnitude;\n numberstring += letter;\n }\n return { returnValue: numberstring.toString(), intArabic: value };\n }\n /**\n * Convert a input number into letters.\n * @private\n */\n static convertToLetter(arabic) {\n if (arabic <= 0) {\n throw Error('ArgumentOutOfRangeException-arabic, Value can not be less 0');\n }\n let stack = [];\n while (arabic > this.letterLimit) {\n let remainder = arabic % this.letterLimit;\n if (remainder === 0.0) {\n arabic = arabic / this.letterLimit - 1;\n remainder = this.letterLimit;\n }\n else {\n arabic /= this.letterLimit;\n }\n stack.push(remainder);\n }\n stack.push(arabic);\n return stack;\n }\n /**\n * Convert number to actual string value.\n * @private\n */\n static appendChar(builder, value) {\n let letter = String.fromCharCode(PdfNumbersConvertor.acsiiStartIndex + value);\n builder += letter;\n return builder;\n }\n}\n// Fields\n/**\n * numbers of letters in english [readonly].\n * @default = 26.0\n * @private\n */\nPdfNumbersConvertor.letterLimit = 26.0;\n/**\n * Resturns `acsii start index` value.\n * @default 64\n * @private\n */\nPdfNumbersConvertor.acsiiStartIndex = (65 - 1);\n\n/**\n * Represent class to store information about `template and value pairs`.\n * @private\n */\nclass PdfTemplateValuePair {\n constructor(template, value) {\n // Fields\n /**\n * Internal variable to store template.\n * @default null\n * @private\n */\n this.pdfTemplate = null;\n /**\n * Intenal variable to store value.\n * @private\n */\n this.content = '';\n if (typeof template === 'undefined') {\n //\n }\n else {\n this.template = template;\n this.value = value;\n }\n }\n // Properties\n /**\n * Gets or sets the template.\n * @private\n */\n get template() {\n return this.pdfTemplate;\n }\n set template(value) {\n this.pdfTemplate = value;\n }\n /**\n * Gets or sets the value.\n * @private\n */\n get value() {\n return this.content;\n }\n set value(value) {\n this.content = value;\n }\n}\n\n/**\n * PdfAutomaticField.ts class for EJ2-PDF\n */\n/**\n * Represents automatic field which has the same value within the `PdfGraphics`.\n */\nclass PdfMultipleValueField extends PdfAutomaticField {\n constructor() {\n super();\n // Fields\n /**\n * Stores the instance of dictionary values of `graphics and template value pair`.\n * @private\n */\n this.list = new TemporaryDictionary();\n }\n // Implementation\n /* tslint:disable */\n performDraw(graphics, location, scalingX, scalingY) {\n super.performDrawHelper(graphics, location, scalingX, scalingY);\n let value = this.getValue(graphics);\n let template = new PdfTemplate(this.getSize());\n this.list.setValue(graphics, new PdfTemplateValuePair(template, value));\n let size = this.getSize();\n template.graphics.drawString(value, this.getFont(), this.pen, this.getBrush(), 0, 0, size.width, size.height, this.stringFormat);\n let drawLocation = new PointF(location.x + this.location.x, location.y + this.location.y);\n graphics.drawPdfTemplate(template, drawLocation, new SizeF(template.width * scalingX, template.height * scalingY));\n }\n}\n\n/**\n * Represents PDF document `page number field`.\n * @public\n */\nclass PdfPageNumberField extends PdfMultipleValueField {\n constructor(font, arg2) {\n super();\n // Fields\n /**\n * Stores the number style of the page number field.\n * @private\n */\n this.internalNumberStyle = PdfNumberStyle.Numeric;\n if (typeof arg2 === 'undefined') {\n this.font = font;\n }\n else if (arg2 instanceof PdfBrush) {\n this.font = font;\n this.brush = arg2;\n }\n else {\n this.font = font;\n this.bounds = arg2;\n }\n }\n // Properties\n /**\n * Gets and sets the number style of the page number field.\n * @private\n */\n get numberStyle() {\n return this.internalNumberStyle;\n }\n set numberStyle(value) {\n this.internalNumberStyle = value;\n }\n /**\n * Return the `string` value of page number field.\n * @public\n */\n getValue(graphics) {\n let result = null;\n let page = this.getPageFromGraphics(graphics);\n result = this.internalGetValue(page);\n return result;\n }\n /**\n * Internal method to `get actual value of page number`.\n * @private\n */\n internalGetValue(page) {\n let document = page.document;\n let pageIndex = document.pages.indexOf(page) + 1;\n return PdfNumbersConvertor.convert(pageIndex, this.numberStyle);\n }\n}\n\n/**\n * PdfCompositeField.ts class for EJ2-PDF\n */\n/**\n * Represents class which can concatenate multiple automatic fields into single string.\n */\nclass PdfCompositeField extends PdfMultipleValueField {\n // Constructor\n /**\n * Initialize a new instance of `PdfCompositeField` class.\n * @param font Font of the field.\n * @param brush Color of the field.\n * @param text Content of the field.\n * @param list List of the automatic fields in specific order based on the text content.\n */\n constructor(font, brush, text, ...list) {\n super();\n // Fields\n /**\n * Stores the array of automatic fields.\n * @private\n */\n this.internalAutomaticFields = null;\n /**\n * Stores the text value of the field.\n * @private\n */\n this.internalText = '';\n this.font = font;\n this.brush = brush;\n this.text = text;\n this.automaticFields = list;\n }\n // Properties\n /**\n * Gets and sets the content of the field.\n * @public\n */\n get text() {\n return this.internalText;\n }\n set text(value) {\n this.internalText = value;\n }\n /**\n * Gets and sets the list of the field to drawn.\n * @public\n */\n get automaticFields() {\n return this.internalAutomaticFields;\n }\n set automaticFields(value) {\n this.internalAutomaticFields = value;\n }\n // Implementation\n /**\n * Return the actual value generated from the list of automatic fields.\n * @public\n */\n getValue(graphics) {\n let text = this.text.toString();\n if (typeof this.automaticFields !== 'undefined' && this.automaticFields != null && this.automaticFields.length > 0) {\n for (let i = 0; i < this.automaticFields.length; i++) {\n let automaticField = this.automaticFields[i];\n text = text.replace('{' + i + '}', automaticField.getValue(graphics));\n }\n }\n return text;\n }\n}\n\n/**\n * PdfSingleValueField.ts class for EJ2-PDF\n */\n/**\n * Represents automatic field which has the same value in the whole document.\n */\nclass PdfSingleValueField extends PdfAutomaticField {\n // Constructors\n constructor() {\n super();\n // Fields\n /* tslint:disable */\n this.list = new TemporaryDictionary();\n /* tslint:enable */\n this.painterGraphics = [];\n }\n performDraw(graphics, location, scalingX, scalingY) {\n super.performDrawHelper(graphics, location, scalingX, scalingY);\n let page = this.getPageFromGraphics(graphics);\n let document = page.document;\n let textValue = this.getValue(graphics);\n /* tslint:disable */\n if (this.list.containsKey(document)) {\n let pair = this.list.getValue(document);\n let drawLocation = new PointF(location.x + this.location.x, location.y + this.location.y);\n graphics.drawPdfTemplate(pair.template, drawLocation, new SizeF(pair.template.width * scalingX, pair.template.height * scalingY));\n this.painterGraphics.push(graphics);\n }\n else {\n let size = this.getSize();\n let template = new PdfTemplate(size);\n this.list.setValue(document, new PdfTemplateValuePair(template, textValue));\n template.graphics.drawString(textValue, this.getFont(), this.pen, this.getBrush(), 0, 0, size.width, size.height, this.stringFormat);\n let drawLocation = new PointF(location.x + this.location.x, location.y + this.location.y);\n graphics.drawPdfTemplate(template, drawLocation, new SizeF(template.width * scalingX, template.height * scalingY));\n this.painterGraphics.push(graphics);\n }\n /* tslint:enable */\n }\n}\n\n/**\n * PdfPageCountField.ts class for EJ2-PDF\n */\n/**\n * Represents total PDF document page count automatic field.\n */\nclass PdfPageCountField extends PdfSingleValueField {\n constructor(font, arg2) {\n super();\n // Fields\n /**\n * Stores the number style of the field.\n * @private\n */\n this.internalNumberStyle = PdfNumberStyle.Numeric;\n if (typeof arg2 === 'undefined') {\n this.font = font;\n }\n else if (arg2 instanceof PdfBrush) {\n this.font = font;\n this.brush = arg2;\n }\n else {\n this.font = font;\n this.bounds = arg2;\n }\n }\n // Properties\n /**\n * Gets and sets the number style of the field.\n * @public\n */\n get numberStyle() {\n return this.internalNumberStyle;\n }\n set numberStyle(value) {\n this.internalNumberStyle = value;\n }\n // Implementation\n /**\n * Return the actual value of the content to drawn.\n * @public\n */\n getValue(graphics) {\n let result = null;\n let page = this.getPageFromGraphics(graphics);\n let document = page.section.parent.document;\n let count = document.pages.count;\n result = PdfNumbersConvertor.convert(count, this.numberStyle);\n return result;\n }\n}\n\n/**\n * public Enum for `PdfDestinationMode`.\n * @private\n */\nvar PdfDestinationMode;\n(function (PdfDestinationMode) {\n /**\n * Specifies the type of `Location`.\n * @private\n */\n PdfDestinationMode[PdfDestinationMode[\"Location\"] = 0] = \"Location\";\n /**\n * Specifies the type of `FitToPage`.\n * @private\n */\n PdfDestinationMode[PdfDestinationMode[\"FitToPage\"] = 1] = \"FitToPage\";\n /**\n * Specifies the type of `FitR`.\n * @private\n */\n PdfDestinationMode[PdfDestinationMode[\"FitR\"] = 2] = \"FitR\";\n})(PdfDestinationMode || (PdfDestinationMode = {}));\n\n/**\n * `PdfDestination` class represents an anchor in the document\n * where bookmarks or annotations can direct when clicked.\n */\nclass PdfDestination {\n constructor(arg1, arg2) {\n // Fields\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Type of the `destination`.\n * @private\n */\n this.destinationMode = PdfDestinationMode.Location;\n /**\n * `Zoom` factor.\n * @private\n * @default 0\n */\n this.zoomFactor = 0;\n /**\n * `Location` of the destination.\n * @default new PointF() with 0 ,0 as co-ordinates\n * @private\n */\n this.destinationLocation = new PointF(0, 0);\n /**\n * `Bounds` of the destination as RectangleF.\n * @default RectangleF.Empty\n * @private\n */\n this.bounds = new RectangleF();\n /**\n * Pdf primitive representing `this` object.\n * @private\n */\n this.array = new PdfArray();\n let angle = PdfPageRotateAngle.RotateAngle0;\n this.destinationLocation = new PointF(0, this.destinationLocation.y);\n this.pdfPage = arg1;\n if (arg2 instanceof PointF) {\n this.destinationLocation = arg2;\n }\n else {\n this.bounds = arg2;\n }\n }\n // Properties\n /**\n * Gets and Sets the `zoom` factor.\n * @private\n */\n get zoom() {\n return this.zoomFactor;\n }\n set zoom(value) {\n this.zoomFactor = value;\n this.initializePrimitive();\n }\n /**\n * Gets and Sets the `page` object.\n * @private\n */\n get page() {\n return this.pdfPage;\n }\n set page(value) {\n this.pdfPage = value;\n this.initializePrimitive();\n }\n /**\n * Gets and Sets the destination `mode`.\n * @private\n */\n get mode() {\n return this.destinationMode;\n }\n set mode(value) {\n this.destinationMode = value;\n this.initializePrimitive();\n }\n /**\n * Gets and Sets the `location`.\n * @private\n */\n get location() {\n return this.destinationLocation;\n }\n set location(value) {\n this.destinationLocation = value;\n this.initializePrimitive();\n }\n /**\n * `Translates` co-ordinates to PDF co-ordinate system (lower/left).\n * @private\n */\n pointToNativePdf(page, point) {\n let section = page.section;\n return section.pointToNativePdf(page, point);\n }\n /**\n * `In fills` array by correct values.\n * @private\n */\n initializePrimitive() {\n this.array.clear();\n this.array.add(new PdfReferenceHolder(this.pdfPage));\n switch (this.destinationMode) {\n case PdfDestinationMode.Location:\n let simplePage = this.pdfPage;\n let point = new PointF();\n point = this.pointToNativePdf(simplePage, this.destinationLocation);\n this.array.add(new PdfName(this.dictionaryProperties.xyz));\n this.array.add(new PdfNumber(point.x));\n this.array.add(new PdfNumber(point.y));\n this.array.add(new PdfNumber(this.zoomFactor));\n break;\n case PdfDestinationMode.FitToPage:\n this.array.add(new PdfName(this.dictionaryProperties.fit));\n break;\n }\n }\n /**\n * Gets the `element` representing this object.\n * @private\n */\n get element() {\n this.initializePrimitive();\n return this.array;\n }\n}\n\nclass PdfFunction {\n //Constructor\n /**\n * Initializes a new instance of the `PdfFunction` class.\n * @public\n */\n constructor(dictionary) {\n //Field\n /**\n * Internal variable to store dictionary.\n * @private\n */\n this.mDictionary = null;\n /**\n * Local variable to store the dictionary properties.\n * @private\n */\n this.mDictionaryProperties = new DictionaryProperties();\n this.mDictionary = dictionary;\n }\n //Properties\n /**\n * Gets or sets the domain of the function.\n * @public\n */\n get domain() {\n let domain = this.mDictionary.items.getValue(this.mDictionaryProperties.domain);\n return domain;\n }\n set domain(value) {\n this.mDictionary.items.setValue(this.mDictionaryProperties.domain, value);\n }\n /**\n * Gets or sets the range.\n * @public\n */\n get range() {\n let range = (this.mDictionary.items.getValue(this.mDictionaryProperties.range));\n return range;\n }\n set range(value) {\n this.mDictionary.items.setValue(this.mDictionaryProperties.range, value);\n }\n /**\n * Gets the dictionary.\n */\n get dictionary() {\n return this.mDictionary;\n }\n //IPdfWrapper Members\n /**\n * Gets the element.\n */\n get element() {\n return this.mDictionary;\n }\n}\n\n/**\n * PdfSampledFunction.ts class for EJ2-PDF\n * Implements PDF Sampled Function.\n */\nclass PdfSampledFunction extends PdfFunction {\n /**\n * Initializes a new instance of the `PdfSampledFunction` class.\n * @public\n */\n constructor(domain, range, sizes, samples) {\n super(new PdfStream());\n if (typeof domain === 'undefined') {\n this.dictionary.items.setValue(this.mDictionaryProperties.functionType, new PdfNumber(0));\n }\n else {\n this.dictionary.items.setValue(this.mDictionaryProperties.functionType, new PdfNumber(0));\n this.checkParams(domain, range, sizes, samples);\n this.setDomainAndRange(domain, range);\n this.setSizeAndValues(sizes, samples);\n }\n }\n // Helper methods\n /**\n * Checks the input parameters.\n */\n checkParams(domain, range, sizes, samples) {\n let rLength = range.length;\n let dLength = domain.length;\n let sLength = samples.length;\n \n }\n /**\n * Sets the domain and range.\n */\n setDomainAndRange(domain, range) {\n this.domain = new PdfArray(domain);\n this.range = new PdfArray(range);\n }\n /**\n * Sets the size and values.\n */\n setSizeAndValues(sizes, samples) {\n let s = (this.dictionary);\n this.dictionary.items.setValue(this.mDictionaryProperties.size, new PdfArray(sizes));\n this.dictionary.items.setValue(this.mDictionaryProperties.bitsPerSample, new PdfNumber(8));\n s.writeBytes(samples);\n }\n}\n\n/**\n * Specifies the constant values specifying whether to extend the shading\n * beyond the starting and ending points of the axis.\n */\nvar PdfExtend;\n(function (PdfExtend) {\n /**\n * Do not extend any point.\n */\n PdfExtend[PdfExtend[\"None\"] = 0] = \"None\";\n /**\n * Extend start point.\n */\n PdfExtend[PdfExtend[\"Start\"] = 1] = \"Start\";\n /**\n * Extend end point.\n */\n PdfExtend[PdfExtend[\"End\"] = 2] = \"End\";\n /**\n * Extend both start and end points.\n */\n PdfExtend[PdfExtend[\"Both\"] = 3] = \"Both\";\n})(PdfExtend || (PdfExtend = {}));\n/**\n * Specifies the gradient direction of the linear gradient brush.\n */\nvar PdfLinearGradientMode;\n(function (PdfLinearGradientMode) {\n /**\n * Specifies a gradient from upper right to lower left.\n */\n PdfLinearGradientMode[PdfLinearGradientMode[\"BackwardDiagonal\"] = 0] = \"BackwardDiagonal\";\n /**\n * Specifies a gradient from upper left to lower right.\n */\n PdfLinearGradientMode[PdfLinearGradientMode[\"ForwardDiagonal\"] = 1] = \"ForwardDiagonal\";\n /**\n * Specifies a gradient from left to right.\n */\n PdfLinearGradientMode[PdfLinearGradientMode[\"Horizontal\"] = 2] = \"Horizontal\";\n /**\n * Specifies a gradient from top to bottom.\n */\n PdfLinearGradientMode[PdfLinearGradientMode[\"Vertical\"] = 3] = \"Vertical\";\n})(PdfLinearGradientMode || (PdfLinearGradientMode = {}));\n/**\n * Shading type constants.\n */\nvar ShadingType;\n(function (ShadingType) {\n /**\n * Function-based shading.\n */\n ShadingType[ShadingType[\"Function\"] = 1] = \"Function\";\n /**\n * Axial shading.\n */\n ShadingType[ShadingType[\"Axial\"] = 2] = \"Axial\";\n /**\n * Radial shading.\n */\n ShadingType[ShadingType[\"Radial\"] = 3] = \"Radial\";\n})(ShadingType || (ShadingType = {}));\nvar KnownColor;\n(function (KnownColor) {\n KnownColor[KnownColor[\"ActiveBorder\"] = 1] = \"ActiveBorder\";\n KnownColor[KnownColor[\"ActiveCaption\"] = 2] = \"ActiveCaption\";\n KnownColor[KnownColor[\"ActiveCaptionText\"] = 3] = \"ActiveCaptionText\";\n KnownColor[KnownColor[\"AppWorkspace\"] = 4] = \"AppWorkspace\";\n KnownColor[KnownColor[\"Control\"] = 5] = \"Control\";\n KnownColor[KnownColor[\"ControlDark\"] = 6] = \"ControlDark\";\n KnownColor[KnownColor[\"ControlDarkDark\"] = 7] = \"ControlDarkDark\";\n KnownColor[KnownColor[\"ControlLight\"] = 8] = \"ControlLight\";\n KnownColor[KnownColor[\"ControlLightLight\"] = 9] = \"ControlLightLight\";\n KnownColor[KnownColor[\"ControlText\"] = 10] = \"ControlText\";\n KnownColor[KnownColor[\"Desktop\"] = 11] = \"Desktop\";\n KnownColor[KnownColor[\"GrayText\"] = 12] = \"GrayText\";\n KnownColor[KnownColor[\"Highlight\"] = 13] = \"Highlight\";\n KnownColor[KnownColor[\"HighlightText\"] = 14] = \"HighlightText\";\n KnownColor[KnownColor[\"HotTrack\"] = 15] = \"HotTrack\";\n KnownColor[KnownColor[\"InactiveBorder\"] = 16] = \"InactiveBorder\";\n KnownColor[KnownColor[\"InactiveCaption\"] = 17] = \"InactiveCaption\";\n KnownColor[KnownColor[\"InactiveCaptionText\"] = 18] = \"InactiveCaptionText\";\n KnownColor[KnownColor[\"Info\"] = 19] = \"Info\";\n KnownColor[KnownColor[\"InfoText\"] = 20] = \"InfoText\";\n KnownColor[KnownColor[\"Menu\"] = 21] = \"Menu\";\n KnownColor[KnownColor[\"MenuText\"] = 22] = \"MenuText\";\n KnownColor[KnownColor[\"ScrollBar\"] = 23] = \"ScrollBar\";\n KnownColor[KnownColor[\"Window\"] = 24] = \"Window\";\n KnownColor[KnownColor[\"WindowFrame\"] = 25] = \"WindowFrame\";\n KnownColor[KnownColor[\"WindowText\"] = 26] = \"WindowText\";\n KnownColor[KnownColor[\"Transparent\"] = 27] = \"Transparent\";\n KnownColor[KnownColor[\"AliceBlue\"] = 28] = \"AliceBlue\";\n KnownColor[KnownColor[\"AntiqueWhite\"] = 29] = \"AntiqueWhite\";\n KnownColor[KnownColor[\"Aqua\"] = 30] = \"Aqua\";\n KnownColor[KnownColor[\"Aquamarine\"] = 31] = \"Aquamarine\";\n KnownColor[KnownColor[\"Azure\"] = 32] = \"Azure\";\n KnownColor[KnownColor[\"Beige\"] = 33] = \"Beige\";\n KnownColor[KnownColor[\"Bisque\"] = 34] = \"Bisque\";\n KnownColor[KnownColor[\"Black\"] = 35] = \"Black\";\n KnownColor[KnownColor[\"BlanchedAlmond\"] = 36] = \"BlanchedAlmond\";\n KnownColor[KnownColor[\"Blue\"] = 37] = \"Blue\";\n KnownColor[KnownColor[\"BlueViolet\"] = 38] = \"BlueViolet\";\n KnownColor[KnownColor[\"Brown\"] = 39] = \"Brown\";\n KnownColor[KnownColor[\"BurlyWood\"] = 40] = \"BurlyWood\";\n KnownColor[KnownColor[\"CadetBlue\"] = 41] = \"CadetBlue\";\n KnownColor[KnownColor[\"Chartreuse\"] = 42] = \"Chartreuse\";\n KnownColor[KnownColor[\"Chocolate\"] = 43] = \"Chocolate\";\n KnownColor[KnownColor[\"Coral\"] = 44] = \"Coral\";\n KnownColor[KnownColor[\"CornflowerBlue\"] = 45] = \"CornflowerBlue\";\n KnownColor[KnownColor[\"Cornsilk\"] = 46] = \"Cornsilk\";\n KnownColor[KnownColor[\"Crimson\"] = 47] = \"Crimson\";\n KnownColor[KnownColor[\"Cyan\"] = 48] = \"Cyan\";\n KnownColor[KnownColor[\"DarkBlue\"] = 49] = \"DarkBlue\";\n KnownColor[KnownColor[\"DarkCyan\"] = 50] = \"DarkCyan\";\n KnownColor[KnownColor[\"DarkGoldenrod\"] = 51] = \"DarkGoldenrod\";\n KnownColor[KnownColor[\"DarkGray\"] = 52] = \"DarkGray\";\n KnownColor[KnownColor[\"DarkGreen\"] = 53] = \"DarkGreen\";\n KnownColor[KnownColor[\"DarkKhaki\"] = 54] = \"DarkKhaki\";\n KnownColor[KnownColor[\"DarkMagenta\"] = 55] = \"DarkMagenta\";\n KnownColor[KnownColor[\"DarkOliveGreen\"] = 56] = \"DarkOliveGreen\";\n KnownColor[KnownColor[\"DarkOrange\"] = 57] = \"DarkOrange\";\n KnownColor[KnownColor[\"DarkOrchid\"] = 58] = \"DarkOrchid\";\n KnownColor[KnownColor[\"DarkRed\"] = 59] = \"DarkRed\";\n KnownColor[KnownColor[\"DarkSalmon\"] = 60] = \"DarkSalmon\";\n KnownColor[KnownColor[\"DarkSeaGreen\"] = 61] = \"DarkSeaGreen\";\n KnownColor[KnownColor[\"DarkSlateBlue\"] = 62] = \"DarkSlateBlue\";\n KnownColor[KnownColor[\"DarkSlateGray\"] = 63] = \"DarkSlateGray\";\n KnownColor[KnownColor[\"DarkTurquoise\"] = 64] = \"DarkTurquoise\";\n KnownColor[KnownColor[\"DarkViolet\"] = 65] = \"DarkViolet\";\n KnownColor[KnownColor[\"DeepPink\"] = 66] = \"DeepPink\";\n KnownColor[KnownColor[\"DeepSkyBlue\"] = 67] = \"DeepSkyBlue\";\n KnownColor[KnownColor[\"DimGray\"] = 68] = \"DimGray\";\n KnownColor[KnownColor[\"DodgerBlue\"] = 69] = \"DodgerBlue\";\n KnownColor[KnownColor[\"Firebrick\"] = 70] = \"Firebrick\";\n KnownColor[KnownColor[\"FloralWhite\"] = 71] = \"FloralWhite\";\n KnownColor[KnownColor[\"ForestGreen\"] = 72] = \"ForestGreen\";\n KnownColor[KnownColor[\"Fuchsia\"] = 73] = \"Fuchsia\";\n KnownColor[KnownColor[\"Gainsboro\"] = 74] = \"Gainsboro\";\n KnownColor[KnownColor[\"GhostWhite\"] = 75] = \"GhostWhite\";\n KnownColor[KnownColor[\"Gold\"] = 76] = \"Gold\";\n KnownColor[KnownColor[\"Goldenrod\"] = 77] = \"Goldenrod\";\n KnownColor[KnownColor[\"Gray\"] = 78] = \"Gray\";\n KnownColor[KnownColor[\"Green\"] = 79] = \"Green\";\n KnownColor[KnownColor[\"GreenYellow\"] = 80] = \"GreenYellow\";\n KnownColor[KnownColor[\"Honeydew\"] = 81] = \"Honeydew\";\n KnownColor[KnownColor[\"HotPink\"] = 82] = \"HotPink\";\n KnownColor[KnownColor[\"IndianRed\"] = 83] = \"IndianRed\";\n KnownColor[KnownColor[\"Indigo\"] = 84] = \"Indigo\";\n KnownColor[KnownColor[\"Ivory\"] = 85] = \"Ivory\";\n KnownColor[KnownColor[\"Khaki\"] = 86] = \"Khaki\";\n KnownColor[KnownColor[\"Lavender\"] = 87] = \"Lavender\";\n KnownColor[KnownColor[\"LavenderBlush\"] = 88] = \"LavenderBlush\";\n KnownColor[KnownColor[\"LawnGreen\"] = 89] = \"LawnGreen\";\n KnownColor[KnownColor[\"LemonChiffon\"] = 90] = \"LemonChiffon\";\n KnownColor[KnownColor[\"LightBlue\"] = 91] = \"LightBlue\";\n KnownColor[KnownColor[\"LightCoral\"] = 92] = \"LightCoral\";\n KnownColor[KnownColor[\"LightCyan\"] = 93] = \"LightCyan\";\n KnownColor[KnownColor[\"LightGoldenrodYellow\"] = 94] = \"LightGoldenrodYellow\";\n KnownColor[KnownColor[\"LightGray\"] = 95] = \"LightGray\";\n KnownColor[KnownColor[\"LightGreen\"] = 96] = \"LightGreen\";\n KnownColor[KnownColor[\"LightPink\"] = 97] = \"LightPink\";\n KnownColor[KnownColor[\"LightSalmon\"] = 98] = \"LightSalmon\";\n KnownColor[KnownColor[\"LightSeaGreen\"] = 99] = \"LightSeaGreen\";\n KnownColor[KnownColor[\"LightSkyBlue\"] = 100] = \"LightSkyBlue\";\n KnownColor[KnownColor[\"LightSlateGray\"] = 101] = \"LightSlateGray\";\n KnownColor[KnownColor[\"LightSteelBlue\"] = 102] = \"LightSteelBlue\";\n KnownColor[KnownColor[\"LightYellow\"] = 103] = \"LightYellow\";\n KnownColor[KnownColor[\"Lime\"] = 104] = \"Lime\";\n KnownColor[KnownColor[\"LimeGreen\"] = 105] = \"LimeGreen\";\n KnownColor[KnownColor[\"Linen\"] = 106] = \"Linen\";\n KnownColor[KnownColor[\"Magenta\"] = 107] = \"Magenta\";\n KnownColor[KnownColor[\"Maroon\"] = 108] = \"Maroon\";\n KnownColor[KnownColor[\"MediumAquamarine\"] = 109] = \"MediumAquamarine\";\n KnownColor[KnownColor[\"MediumBlue\"] = 110] = \"MediumBlue\";\n KnownColor[KnownColor[\"MediumOrchid\"] = 111] = \"MediumOrchid\";\n KnownColor[KnownColor[\"MediumPurple\"] = 112] = \"MediumPurple\";\n KnownColor[KnownColor[\"MediumSeaGreen\"] = 113] = \"MediumSeaGreen\";\n KnownColor[KnownColor[\"MediumSlateBlue\"] = 114] = \"MediumSlateBlue\";\n KnownColor[KnownColor[\"MediumSpringGreen\"] = 115] = \"MediumSpringGreen\";\n KnownColor[KnownColor[\"MediumTurquoise\"] = 116] = \"MediumTurquoise\";\n KnownColor[KnownColor[\"MediumVioletRed\"] = 117] = \"MediumVioletRed\";\n KnownColor[KnownColor[\"MidnightBlue\"] = 118] = \"MidnightBlue\";\n KnownColor[KnownColor[\"MintCream\"] = 119] = \"MintCream\";\n KnownColor[KnownColor[\"MistyRose\"] = 120] = \"MistyRose\";\n KnownColor[KnownColor[\"Moccasin\"] = 121] = \"Moccasin\";\n KnownColor[KnownColor[\"NavajoWhite\"] = 122] = \"NavajoWhite\";\n KnownColor[KnownColor[\"Navy\"] = 123] = \"Navy\";\n KnownColor[KnownColor[\"OldLace\"] = 124] = \"OldLace\";\n KnownColor[KnownColor[\"Olive\"] = 125] = \"Olive\";\n KnownColor[KnownColor[\"OliveDrab\"] = 126] = \"OliveDrab\";\n KnownColor[KnownColor[\"Orange\"] = 127] = \"Orange\";\n KnownColor[KnownColor[\"OrangeRed\"] = 128] = \"OrangeRed\";\n KnownColor[KnownColor[\"Orchid\"] = 129] = \"Orchid\";\n KnownColor[KnownColor[\"PaleGoldenrod\"] = 130] = \"PaleGoldenrod\";\n KnownColor[KnownColor[\"PaleGreen\"] = 131] = \"PaleGreen\";\n KnownColor[KnownColor[\"PaleTurquoise\"] = 132] = \"PaleTurquoise\";\n KnownColor[KnownColor[\"PaleVioletRed\"] = 133] = \"PaleVioletRed\";\n KnownColor[KnownColor[\"PapayaWhip\"] = 134] = \"PapayaWhip\";\n KnownColor[KnownColor[\"PeachPuff\"] = 135] = \"PeachPuff\";\n KnownColor[KnownColor[\"Peru\"] = 136] = \"Peru\";\n KnownColor[KnownColor[\"Pink\"] = 137] = \"Pink\";\n KnownColor[KnownColor[\"Plum\"] = 138] = \"Plum\";\n KnownColor[KnownColor[\"PowderBlue\"] = 139] = \"PowderBlue\";\n KnownColor[KnownColor[\"Purple\"] = 140] = \"Purple\";\n KnownColor[KnownColor[\"Red\"] = 141] = \"Red\";\n KnownColor[KnownColor[\"RosyBrown\"] = 142] = \"RosyBrown\";\n KnownColor[KnownColor[\"RoyalBlue\"] = 143] = \"RoyalBlue\";\n KnownColor[KnownColor[\"SaddleBrown\"] = 144] = \"SaddleBrown\";\n KnownColor[KnownColor[\"Salmon\"] = 145] = \"Salmon\";\n KnownColor[KnownColor[\"SandyBrown\"] = 146] = \"SandyBrown\";\n KnownColor[KnownColor[\"SeaGreen\"] = 147] = \"SeaGreen\";\n KnownColor[KnownColor[\"SeaShell\"] = 148] = \"SeaShell\";\n KnownColor[KnownColor[\"Sienna\"] = 149] = \"Sienna\";\n KnownColor[KnownColor[\"Silver\"] = 150] = \"Silver\";\n KnownColor[KnownColor[\"SkyBlue\"] = 151] = \"SkyBlue\";\n KnownColor[KnownColor[\"SlateBlue\"] = 152] = \"SlateBlue\";\n KnownColor[KnownColor[\"SlateGray\"] = 153] = \"SlateGray\";\n KnownColor[KnownColor[\"Snow\"] = 154] = \"Snow\";\n KnownColor[KnownColor[\"SpringGreen\"] = 155] = \"SpringGreen\";\n KnownColor[KnownColor[\"SteelBlue\"] = 156] = \"SteelBlue\";\n KnownColor[KnownColor[\"Tan\"] = 157] = \"Tan\";\n KnownColor[KnownColor[\"Teal\"] = 158] = \"Teal\";\n KnownColor[KnownColor[\"Thistle\"] = 159] = \"Thistle\";\n KnownColor[KnownColor[\"Tomato\"] = 160] = \"Tomato\";\n KnownColor[KnownColor[\"Turquoise\"] = 161] = \"Turquoise\";\n KnownColor[KnownColor[\"Violet\"] = 162] = \"Violet\";\n KnownColor[KnownColor[\"Wheat\"] = 163] = \"Wheat\";\n KnownColor[KnownColor[\"White\"] = 164] = \"White\";\n KnownColor[KnownColor[\"WhiteSmoke\"] = 165] = \"WhiteSmoke\";\n KnownColor[KnownColor[\"Yellow\"] = 166] = \"Yellow\";\n KnownColor[KnownColor[\"YellowGreen\"] = 167] = \"YellowGreen\";\n KnownColor[KnownColor[\"ButtonFace\"] = 168] = \"ButtonFace\";\n KnownColor[KnownColor[\"ButtonHighlight\"] = 169] = \"ButtonHighlight\";\n KnownColor[KnownColor[\"ButtonShadow\"] = 170] = \"ButtonShadow\";\n KnownColor[KnownColor[\"GradientActiveCaption\"] = 171] = \"GradientActiveCaption\";\n KnownColor[KnownColor[\"GradientInactiveCaption\"] = 172] = \"GradientInactiveCaption\";\n KnownColor[KnownColor[\"MenuBar\"] = 173] = \"MenuBar\";\n KnownColor[KnownColor[\"MenuHighlight\"] = 174] = \"MenuHighlight\";\n})(KnownColor || (KnownColor = {}));\n\n/**\n * PdfBrushes.ts class for EJ2-PDF\n */\n/**\n * `PdfBrushes` class provides objects used to fill the interiors of graphical shapes such as rectangles,\n * ellipses, pies, polygons, and paths.\n * @private\n */\nclass PdfBrushes {\n //Static Properties\n /**\n * Gets the AliceBlue brush.\n * @public\n */\n static get AliceBlue() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.AliceBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.AliceBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.AliceBlue);\n }\n return brush;\n }\n /**\n * Gets the antique white brush.\n * @public\n */\n static get AntiqueWhite() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.AntiqueWhite)) {\n brush = (this.sBrushes.getValue(KnownColor.AntiqueWhite));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.AntiqueWhite);\n }\n return brush;\n }\n /**\n * Gets the Aqua default brush.\n * @public\n */\n static get Aqua() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Aqua)) {\n brush = (this.sBrushes.getValue(KnownColor.Aqua));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Aqua);\n }\n return brush;\n }\n /**\n * Gets the Aquamarine default brush.\n * @public\n */\n static get Aquamarine() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Aquamarine)) {\n brush = (this.sBrushes.getValue(KnownColor.Aquamarine));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Aquamarine);\n }\n return brush;\n }\n /**\n * Gets the Azure default brush.\n * @public\n */\n static get Azure() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Azure)) {\n brush = (this.sBrushes.getValue(KnownColor.Azure));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Azure);\n }\n return brush;\n }\n /**\n * Gets the Beige default brush.\n * @public\n */\n static get Beige() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Beige)) {\n brush = (this.sBrushes.getValue(KnownColor.Beige));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Beige);\n }\n return brush;\n }\n /**\n * Gets the Bisque default brush.\n * @public\n */\n static get Bisque() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Bisque)) {\n brush = (this.sBrushes.getValue(KnownColor.Bisque));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Bisque);\n }\n return brush;\n }\n /**\n * Gets the Black default brush.\n * @public\n */\n static get Black() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Black)) {\n brush = (this.sBrushes.getValue(KnownColor.Black));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Black);\n }\n return brush;\n }\n /**\n * Gets the BlanchedAlmond default brush.\n * @public\n */\n static get BlanchedAlmond() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.BlanchedAlmond)) {\n brush = (this.sBrushes.getValue(KnownColor.BlanchedAlmond));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.BlanchedAlmond);\n }\n return brush;\n }\n /**\n * Gets the Blue default brush.\n * @public\n */\n static get Blue() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Blue)) {\n brush = (this.sBrushes.getValue(KnownColor.Blue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Blue);\n }\n return brush;\n }\n /**\n * Gets the BlueViolet default brush.\n * @public\n */\n static get BlueViolet() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.BlueViolet)) {\n brush = (this.sBrushes.getValue(KnownColor.BlueViolet));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.BlueViolet);\n }\n return brush;\n }\n /**\n * Gets the Brown default brush.\n * @public\n */\n static get Brown() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Brown)) {\n brush = (this.sBrushes.getValue(KnownColor.Brown));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Brown);\n }\n return brush;\n }\n /**\n * Gets the BurlyWood default brush.\n * @public\n */\n static get BurlyWood() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.BurlyWood)) {\n brush = (this.sBrushes.getValue(KnownColor.BurlyWood));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.BurlyWood);\n }\n return brush;\n }\n /**\n * Gets the CadetBlue default brush.\n * @public\n */\n static get CadetBlue() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.CadetBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.CadetBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.CadetBlue);\n }\n return brush;\n }\n /**\n * Gets the Chartreuse default brush.\n * @public\n */\n static get Chartreuse() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Chartreuse)) {\n brush = (this.sBrushes.getValue(KnownColor.Chartreuse));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Chartreuse);\n }\n return brush;\n }\n /**\n * Gets the Chocolate default brush.\n * @public\n */\n static get Chocolate() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Chocolate)) {\n brush = (this.sBrushes.getValue(KnownColor.Chocolate));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Chocolate);\n }\n return brush;\n }\n /**\n * Gets the Coral default brush.\n * @public\n */\n static get Coral() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Coral)) {\n brush = (this.sBrushes.getValue(KnownColor.Coral));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Coral);\n }\n return brush;\n }\n /**\n * Gets the CornflowerBlue default brush.\n * @public\n */\n static get CornflowerBlue() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.CornflowerBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.CornflowerBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.CornflowerBlue);\n }\n return brush;\n }\n /**\n * Gets the Corn silk default brush.\n * @public\n */\n static get Cornsilk() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Cornsilk)) {\n brush = (this.sBrushes.getValue(KnownColor.Cornsilk));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Cornsilk);\n }\n return brush;\n }\n /**\n * Gets the Crimson default brush.\n * @public\n */\n static get Crimson() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Crimson)) {\n brush = (this.sBrushes.getValue(KnownColor.Crimson));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Crimson);\n }\n return brush;\n }\n /**\n * Gets the Cyan default brush.\n * @public\n */\n static get Cyan() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Cyan)) {\n brush = (this.sBrushes.getValue(KnownColor.Cyan));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Cyan);\n }\n return brush;\n }\n /**\n * Gets the DarkBlue default brush.\n * @public\n */\n static get DarkBlue() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkBlue);\n }\n return brush;\n }\n /**\n * Gets the DarkCyan default brush.\n * @public\n */\n static get DarkCyan() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkCyan)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkCyan));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkCyan);\n }\n return brush;\n }\n /**\n * Gets the DarkGoldenrod default brush.\n * @public\n */\n static get DarkGoldenrod() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkGoldenrod)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkGoldenrod));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkGoldenrod);\n }\n return brush;\n }\n /**\n * Gets the DarkGray default brush.\n * @public\n */\n static get DarkGray() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkGray)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkGray));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkGray);\n }\n return brush;\n }\n /**\n * Gets the DarkGreen default brush.\n * @public\n */\n static get DarkGreen() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkGreen);\n }\n return brush;\n }\n /**\n * Gets the DarkKhaki default brush.\n * @public\n */\n static get DarkKhaki() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkKhaki)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkKhaki));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkKhaki);\n }\n return brush;\n }\n /**\n * Gets the DarkMagenta default brush.\n * @public\n */\n static get DarkMagenta() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkMagenta)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkMagenta));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkMagenta);\n }\n return brush;\n }\n /**\n * Gets the DarkOliveGreen default brush.\n * @public\n */\n static get DarkOliveGreen() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkOliveGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkOliveGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkOliveGreen);\n }\n return brush;\n }\n /**\n * Gets the DarkOrange default brush.\n * @public\n */\n static get DarkOrange() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkOrange)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkOrange));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkOrange);\n }\n return brush;\n }\n /**\n * Gets the DarkOrchid default brush.\n * @public\n */\n static get DarkOrchid() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkOrchid)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkOrchid));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkOrchid);\n }\n return brush;\n }\n /**\n * Gets the DarkRed default brush.\n * @public\n */\n static get DarkRed() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkRed)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkRed));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkRed);\n }\n return brush;\n }\n /**\n * Gets the DarkSalmon default brush.\n * @public\n */\n static get DarkSalmon() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkSalmon)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkSalmon));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkSalmon);\n }\n return brush;\n }\n /**\n * Gets the DarkSeaGreen default brush.\n * @public\n */\n static get DarkSeaGreen() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkSeaGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkSeaGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkSeaGreen);\n }\n return brush;\n }\n /**\n * Gets the DarkSlateBlue default brush.\n * @public\n */\n static get DarkSlateBlue() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkSlateBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkSlateBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkSlateBlue);\n }\n return brush;\n }\n /**\n * Gets the DarkSlateGray default brush.\n * @public\n */\n static get DarkSlateGray() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkSlateGray)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkSlateGray));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkSlateGray);\n }\n return brush;\n }\n /**\n * Gets the DarkTurquoise default brush.\n * @public\n */\n static get DarkTurquoise() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkTurquoise)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkTurquoise));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkTurquoise);\n }\n return brush;\n }\n /**\n * Gets the DarkViolet default brush.\n * @public\n */\n static get DarkViolet() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkViolet)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkViolet));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkViolet);\n }\n return brush;\n }\n /**\n * Gets the DeepPink default brush.\n * @public\n */\n static get DeepPink() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.DeepPink)) {\n brush = (this.sBrushes.getValue(KnownColor.DeepPink));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DeepPink);\n }\n return brush;\n }\n /**\n * Gets the DeepSkyBlue default brush.\n * @public\n */\n static get DeepSkyBlue() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.DeepSkyBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.DeepSkyBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DeepSkyBlue);\n }\n return brush;\n }\n /**\n * Gets the DimGray default brush.\n * @public\n */\n static get DimGray() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.DimGray)) {\n brush = (this.sBrushes.getValue(KnownColor.DimGray));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DimGray);\n }\n return brush;\n }\n /**\n * Gets the DodgerBlue default brush.\n * @public\n */\n static get DodgerBlue() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.DodgerBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.DodgerBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DodgerBlue);\n }\n return brush;\n }\n /**\n * Gets the Firebrick default brush.\n * @public\n */\n static get Firebrick() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Firebrick)) {\n brush = (this.sBrushes.getValue(KnownColor.Firebrick));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Firebrick);\n }\n return brush;\n }\n /**\n * Gets the FloralWhite default brush.\n * @public\n */\n static get FloralWhite() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.FloralWhite)) {\n brush = (this.sBrushes.getValue(KnownColor.FloralWhite));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.FloralWhite);\n }\n return brush;\n }\n /**\n * Gets the ForestGreen default brush.\n * @public\n */\n static get ForestGreen() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.ForestGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.ForestGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.ForestGreen);\n }\n return brush;\n }\n /**\n * Gets the Fuchsia default brush.\n * @public\n */\n static get Fuchsia() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Fuchsia)) {\n brush = (this.sBrushes.getValue(KnownColor.Fuchsia));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Fuchsia);\n }\n return brush;\n }\n /**\n * Gets the Gainsborough default brush.\n * @public\n */\n static get Gainsboro() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Gainsboro)) {\n brush = (this.sBrushes.getValue(KnownColor.Gainsboro));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Gainsboro);\n }\n return brush;\n }\n /**\n * Gets the GhostWhite default brush.\n * @public\n */\n static get GhostWhite() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.GhostWhite)) {\n brush = (this.sBrushes.getValue(KnownColor.GhostWhite));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.GhostWhite);\n }\n return brush;\n }\n /**\n * Gets the Gold default brush.\n * @public\n */\n static get Gold() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Gold)) {\n brush = (this.sBrushes.getValue(KnownColor.Gold));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Gold);\n }\n return brush;\n }\n /**\n * Gets the Goldenrod default brush.\n * @public\n */\n static get Goldenrod() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Goldenrod)) {\n brush = (this.sBrushes.getValue(KnownColor.Goldenrod));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Goldenrod);\n }\n return brush;\n }\n /**\n * Gets the Gray default brush.\n * @public\n */\n static get Gray() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Gray)) {\n brush = (this.sBrushes.getValue(KnownColor.Gray));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Gray);\n }\n return brush;\n }\n /**\n * Gets the Green default brush.\n * @public\n */\n static get Green() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Green)) {\n brush = (this.sBrushes.getValue(KnownColor.Green));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Green);\n }\n return brush;\n }\n /**\n * Gets the GreenYellow default brush.\n * @public\n */\n static get GreenYellow() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.GreenYellow)) {\n brush = (this.sBrushes.getValue(KnownColor.GreenYellow));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.GreenYellow);\n }\n return brush;\n }\n /**\n * Gets the Honeydew default brush.\n * @public\n */\n static get Honeydew() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Honeydew)) {\n brush = (this.sBrushes.getValue(KnownColor.Honeydew));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Honeydew);\n }\n return brush;\n }\n /**\n * Gets the HotPink default brush.\n * @public\n */\n static get HotPink() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.HotPink)) {\n brush = (this.sBrushes.getValue(KnownColor.HotPink));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.HotPink);\n }\n return brush;\n }\n /**\n * Gets the IndianRed default brush.\n * @public\n */\n static get IndianRed() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.IndianRed)) {\n brush = (this.sBrushes.getValue(KnownColor.IndianRed));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.IndianRed);\n }\n return brush;\n }\n /**\n * Gets the Indigo default brush.\n * @public\n */\n static get Indigo() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Indigo)) {\n brush = (this.sBrushes.getValue(KnownColor.Indigo));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Indigo);\n }\n return brush;\n }\n /**\n * Gets the Ivory default brush.\n * @public\n */\n static get Ivory() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Ivory)) {\n brush = (this.sBrushes.getValue(KnownColor.Ivory));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Ivory);\n }\n return brush;\n }\n /**\n * Gets the Khaki default brush.\n * @public\n */\n static get Khaki() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Khaki)) {\n brush = (this.sBrushes.getValue(KnownColor.Khaki));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Khaki);\n }\n return brush;\n }\n /**\n * Gets the Lavender default brush.\n * @public\n */\n static get Lavender() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Lavender)) {\n brush = (this.sBrushes.getValue(KnownColor.Lavender));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Lavender);\n }\n return brush;\n }\n /**\n * Gets the LavenderBlush default brush.\n * @public\n */\n static get LavenderBlush() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.LavenderBlush)) {\n brush = (this.sBrushes.getValue(KnownColor.LavenderBlush));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LavenderBlush);\n }\n return brush;\n }\n /**\n * Gets the LawnGreen default brush.\n * @public\n */\n static get LawnGreen() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.LawnGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.LawnGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LawnGreen);\n }\n return brush;\n }\n /**\n * Gets the LemonChiffon default brush.\n * @public\n */\n static get LemonChiffon() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.LemonChiffon)) {\n brush = (this.sBrushes.getValue(KnownColor.LemonChiffon));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LemonChiffon);\n }\n return brush;\n }\n /**\n * Gets the LightBlue default brush.\n * @public\n */\n static get LightBlue() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.LightBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightBlue);\n }\n return brush;\n }\n /**\n * Gets the LightCoral default brush.\n * @public\n */\n static get LightCoral() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightCoral)) {\n brush = (this.sBrushes.getValue(KnownColor.LightCoral));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightCoral);\n }\n return brush;\n }\n /**\n * Gets the LightCyan default brush.\n * @public\n */\n static get LightCyan() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightCyan)) {\n brush = (this.sBrushes.getValue(KnownColor.LightCyan));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightCyan);\n }\n return brush;\n }\n /**\n * Gets the LightGoldenrodYellow default brush.\n * @public\n */\n static get LightGoldenrodYellow() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightGoldenrodYellow)) {\n brush = (this.sBrushes.getValue(KnownColor.LightGoldenrodYellow));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightGoldenrodYellow);\n }\n return brush;\n }\n /**\n * Gets the LightGray default brush.\n * @public\n */\n static get LightGray() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightGray)) {\n brush = (this.sBrushes.getValue(KnownColor.LightGray));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightGray);\n }\n return brush;\n }\n /**\n * Gets the LightGreen default brush.\n * @public\n */\n static get LightGreen() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.LightGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightGreen);\n }\n return brush;\n }\n /**\n * Gets the LightPink default brush.\n * @public\n */\n static get LightPink() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightPink)) {\n brush = (this.sBrushes.getValue(KnownColor.LightPink));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightPink);\n }\n return brush;\n }\n /**\n * Gets the LightSalmon default brush.\n * @public\n */\n static get LightSalmon() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightSalmon)) {\n brush = (this.sBrushes.getValue(KnownColor.LightSalmon));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightSalmon);\n }\n return brush;\n }\n /**\n * Gets the LightSeaGreen default brush.\n * @public\n */\n static get LightSeaGreen() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightSeaGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.LightSeaGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightSeaGreen);\n }\n return brush;\n }\n /**\n * Gets the LightSkyBlue default brush.\n * @public\n */\n static get LightSkyBlue() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightSkyBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.LightSkyBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightSkyBlue);\n }\n return brush;\n }\n /**\n * Gets the LightSlateGray default brush.\n * @public\n */\n static get LightSlateGray() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightSlateGray)) {\n brush = (this.sBrushes.getValue(KnownColor.LightSlateGray));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightSlateGray);\n }\n return brush;\n }\n /**\n * Gets the LightSteelBlue default brush.\n * @public\n */\n static get LightSteelBlue() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightSteelBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.LightSteelBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightSteelBlue);\n }\n return brush;\n }\n /**\n * Gets the LightYellow default brush.\n * @public\n */\n static get LightYellow() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightYellow)) {\n brush = (this.sBrushes.getValue(KnownColor.LightYellow));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightYellow);\n }\n return brush;\n }\n /**\n * Gets the Lime default brush.\n * @public\n */\n static get Lime() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Lime)) {\n brush = (this.sBrushes.getValue(KnownColor.Lime));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Lime);\n }\n return brush;\n }\n /**\n * Gets the LimeGreen default brush.\n * @public\n */\n static get LimeGreen() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.LimeGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.LimeGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LimeGreen);\n }\n return brush;\n }\n /**\n * Gets the Linen default brush.\n * @public\n */\n static get Linen() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Linen)) {\n brush = (this.sBrushes.getValue(KnownColor.Linen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Linen);\n }\n return brush;\n }\n /**\n * Gets the Magenta default brush.\n * @public\n */\n static get Magenta() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Magenta)) {\n brush = (this.sBrushes.getValue(KnownColor.Magenta));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Magenta);\n }\n return brush;\n }\n /**\n * Gets the Maroon default brush.\n * @public\n */\n static get Maroon() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Maroon)) {\n brush = (this.sBrushes.getValue(KnownColor.Maroon));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Maroon);\n }\n return brush;\n }\n /**\n * Gets the MediumAquamarine default brush.\n * @public\n */\n static get MediumAquamarine() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumAquamarine)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumAquamarine));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumAquamarine);\n }\n return brush;\n }\n /**\n * Gets the MediumBlue default brush.\n * @public\n */\n static get MediumBlue() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumBlue);\n }\n return brush;\n }\n /**\n * Gets the MediumOrchid default brush.\n * @public\n */\n static get MediumOrchid() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumOrchid)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumOrchid));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumOrchid);\n }\n return brush;\n }\n /**\n * Gets the MediumPurple default brush.\n * @public\n */\n static get MediumPurple() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumPurple)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumPurple));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumPurple);\n }\n return brush;\n }\n /**\n * Gets the MediumSeaGreen default brush.\n * @public\n */\n static get MediumSeaGreen() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumSeaGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumSeaGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumSeaGreen);\n }\n return brush;\n }\n /**\n * Gets the MediumSlateBlue default brush.\n * @public\n */\n static get MediumSlateBlue() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumSlateBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumSlateBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumSlateBlue);\n }\n return brush;\n }\n /**\n * Gets the MediumSpringGreen default brush.\n * @public\n */\n static get MediumSpringGreen() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumSpringGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumSpringGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumSpringGreen);\n }\n return brush;\n }\n /**\n * Gets the MediumTurquoise default brush.\n * @public\n */\n static get MediumTurquoise() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumTurquoise)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumTurquoise));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumTurquoise);\n }\n return brush;\n }\n /**\n * Gets the MediumVioletRed default brush.\n * @public\n */\n static get MediumVioletRed() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumVioletRed)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumVioletRed));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumVioletRed);\n }\n return brush;\n }\n /**\n * Gets the MidnightBlue default brush.\n * @public\n */\n static get MidnightBlue() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.MidnightBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.MidnightBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MidnightBlue);\n }\n return brush;\n }\n /**\n * Gets the MintCream default brush.\n * @public\n */\n static get MintCream() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.MintCream)) {\n brush = (this.sBrushes.getValue(KnownColor.MintCream));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MintCream);\n }\n return brush;\n }\n /**\n * Gets the MistyRose default brush.\n * @public\n */\n static get MistyRose() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.MistyRose)) {\n brush = (this.sBrushes.getValue(KnownColor.MistyRose));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MistyRose);\n }\n return brush;\n }\n /**\n * Gets the Moccasin default brush.\n * @public\n */\n static get Moccasin() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Moccasin)) {\n brush = (this.sBrushes.getValue(KnownColor.Moccasin));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Moccasin);\n }\n return brush;\n }\n /**\n * Gets the NavajoWhite default brush.\n * @public\n */\n static get NavajoWhite() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.NavajoWhite)) {\n brush = (this.sBrushes.getValue(KnownColor.NavajoWhite));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.NavajoWhite);\n }\n return brush;\n }\n /**\n * Gets the Navy default brush.\n * @public\n */\n static get Navy() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Navy)) {\n brush = (this.sBrushes.getValue(KnownColor.Navy));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Navy);\n }\n return brush;\n }\n /**\n * Gets the OldLace default brush.\n * @public\n */\n static get OldLace() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.OldLace)) {\n brush = (this.sBrushes.getValue(KnownColor.OldLace));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.OldLace);\n }\n return brush;\n }\n /**\n * Gets the Olive default brush.\n * @public\n */\n static get Olive() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Olive)) {\n brush = (this.sBrushes.getValue(KnownColor.Olive));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Olive);\n }\n return brush;\n }\n /**\n * Gets the OliveDrab default brush.\n * @public\n */\n static get OliveDrab() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.OliveDrab)) {\n brush = (this.sBrushes.getValue(KnownColor.OliveDrab));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.OliveDrab);\n }\n return brush;\n }\n /**\n * Gets the Orange default brush.\n * @public\n */\n static get Orange() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Orange)) {\n brush = (this.sBrushes.getValue(KnownColor.Orange));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Orange);\n }\n return brush;\n }\n /**\n * Gets the OrangeRed default brush.\n * @public\n */\n static get OrangeRed() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.OrangeRed)) {\n brush = (this.sBrushes.getValue(KnownColor.OrangeRed));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.OrangeRed);\n }\n return brush;\n }\n /**\n * Gets the Orchid default brush.\n * @public\n */\n static get Orchid() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Orchid)) {\n brush = (this.sBrushes.getValue(KnownColor.Orchid));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Orchid);\n }\n return brush;\n }\n /**\n * Gets the PaleGoldenrod default brush.\n * @public\n */\n static get PaleGoldenrod() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.PaleGoldenrod)) {\n brush = (this.sBrushes.getValue(KnownColor.PaleGoldenrod));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.PaleGoldenrod);\n }\n return brush;\n }\n /**\n * Gets the PaleGreen default brush.\n * @public\n */\n static get PaleGreen() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.PaleGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.PaleGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.PaleGreen);\n }\n return brush;\n }\n /**\n * Gets the PaleTurquoise default brush.\n * @public\n */\n static get PaleTurquoise() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.PaleTurquoise)) {\n brush = (this.sBrushes.getValue(KnownColor.PaleTurquoise));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.PaleTurquoise);\n }\n return brush;\n }\n /**\n * Gets the PaleVioletRed default brush.\n * @public\n */\n static get PaleVioletRed() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.PaleVioletRed)) {\n brush = (this.sBrushes.getValue(KnownColor.PaleVioletRed));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.PaleVioletRed);\n }\n return brush;\n }\n /**\n * Gets the PapayaWhip default brush.\n * @public\n */\n static get PapayaWhip() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.PapayaWhip)) {\n brush = (this.sBrushes.getValue(KnownColor.PapayaWhip));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.PapayaWhip);\n }\n return brush;\n }\n /**\n * Gets the PeachPuff default brush.\n * @public\n */\n static get PeachPuff() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.PeachPuff)) {\n brush = (this.sBrushes.getValue(KnownColor.PeachPuff));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.PeachPuff);\n }\n return brush;\n }\n /**\n * Gets the Peru default brush.\n * @public\n */\n static get Peru() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Peru)) {\n brush = (this.sBrushes.getValue(KnownColor.Peru));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Peru);\n }\n return brush;\n }\n /**\n * Gets the Pink default brush.\n * @public\n */\n static get Pink() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Pink)) {\n brush = (this.sBrushes.getValue(KnownColor.Pink));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Pink);\n }\n return brush;\n }\n /**\n * Gets the Plum default brush.\n * @public\n */\n static get Plum() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Plum)) {\n brush = (this.sBrushes.getValue(KnownColor.Plum));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Plum);\n }\n return brush;\n }\n /**\n * Gets the PowderBlue default brush.\n * @public\n */\n static get PowderBlue() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.PowderBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.PowderBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.PowderBlue);\n }\n return brush;\n }\n /**\n * Gets the Purple default brush.\n * @public\n */\n static get Purple() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Purple)) {\n brush = (this.sBrushes.getValue(KnownColor.Purple));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Purple);\n }\n return brush;\n }\n /**\n * Gets the Red default brush.\n * @public\n */\n static get Red() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Red)) {\n brush = (this.sBrushes.getValue(KnownColor.Red));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Red);\n }\n return brush;\n }\n /**\n * Gets the RosyBrown default brush.\n * @public\n */\n static get RosyBrown() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.RosyBrown)) {\n brush = (this.sBrushes.getValue(KnownColor.RosyBrown));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.RosyBrown);\n }\n return brush;\n }\n /**\n * Gets the RoyalBlue default brush.\n * @public\n */\n static get RoyalBlue() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.RoyalBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.RoyalBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.RoyalBlue);\n }\n return brush;\n }\n /**\n * Gets the SaddleBrown default brush.\n * @public\n */\n static get SaddleBrown() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.SaddleBrown)) {\n brush = (this.sBrushes.getValue(KnownColor.SaddleBrown));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SaddleBrown);\n }\n return brush;\n }\n /**\n * Gets the Salmon default brush.\n * @public\n */\n static get Salmon() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Salmon)) {\n brush = (this.sBrushes.getValue(KnownColor.Salmon));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Salmon);\n }\n return brush;\n }\n /**\n * Gets the SandyBrown default brush.\n * @public\n */\n static get SandyBrown() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.SandyBrown)) {\n brush = (this.sBrushes.getValue(KnownColor.SandyBrown));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SandyBrown);\n }\n return brush;\n }\n /**\n * Gets the SeaGreen default brush.\n * @public\n */\n static get SeaGreen() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.SeaGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.SeaGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SeaGreen);\n }\n return brush;\n }\n /**\n * Gets the SeaShell default brush.\n * @public\n */\n static get SeaShell() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.SeaShell)) {\n brush = (this.sBrushes.getValue(KnownColor.SeaShell));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SeaShell);\n }\n return brush;\n }\n /**\n * Gets the Sienna default brush.\n * @public\n */\n static get Sienna() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Sienna)) {\n brush = (this.sBrushes.getValue(KnownColor.Sienna));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Sienna);\n }\n return brush;\n }\n /**\n * Gets the Silver default brush.\n * @public\n */\n static get Silver() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Silver)) {\n brush = (this.sBrushes.getValue(KnownColor.Silver));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Silver);\n }\n return brush;\n }\n /**\n * Gets the SkyBlue default brush.\n * @public\n */\n static get SkyBlue() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.SkyBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.SkyBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SkyBlue);\n }\n return brush;\n }\n /**\n * Gets the SlateBlue default brush.\n * @public\n */\n static get SlateBlue() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.SlateBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.SlateBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SlateBlue);\n }\n return brush;\n }\n /**\n * Gets the SlateGray default brush.\n * @public\n */\n static get SlateGray() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.SlateGray)) {\n brush = (this.sBrushes.getValue(KnownColor.SlateGray));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SlateGray);\n }\n return brush;\n }\n /**\n * Gets the Snow default brush.\n * @public\n */\n static get Snow() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Snow)) {\n brush = (this.sBrushes.getValue(KnownColor.Snow));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Snow);\n }\n return brush;\n }\n /**\n * Gets the SpringGreen default brush.\n * @public\n */\n static get SpringGreen() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.SpringGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.SpringGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SpringGreen);\n }\n return brush;\n }\n /**\n * Gets the SteelBlue default brush.\n * @public\n */\n static get SteelBlue() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.SteelBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.SteelBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SteelBlue);\n }\n return brush;\n }\n /**\n * Gets the Tan default brush.\n * @public\n */\n static get Tan() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Tan)) {\n brush = (this.sBrushes.getValue(KnownColor.Tan));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Tan);\n }\n return brush;\n }\n /**\n * Gets the Teal default brush.\n * @public\n */\n static get Teal() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Teal)) {\n brush = (this.sBrushes.getValue(KnownColor.Teal));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Teal);\n }\n return brush;\n }\n /**\n * Gets the Thistle default brush.\n * @public\n */\n static get Thistle() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Thistle)) {\n brush = (this.sBrushes.getValue(KnownColor.Thistle));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Thistle);\n }\n return brush;\n }\n /**\n * Gets the Tomato default brush.\n * @public\n */\n static get Tomato() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Tomato)) {\n brush = (this.sBrushes.getValue(KnownColor.Tomato));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Tomato);\n }\n return brush;\n }\n /**\n * Gets the Transparent default brush.\n * @public\n */\n static get Transparent() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Transparent)) {\n brush = (this.sBrushes.getValue(KnownColor.Transparent));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Transparent);\n }\n return brush;\n }\n /**\n * Gets the Turquoise default brush.\n * @public\n */\n static get Turquoise() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Turquoise)) {\n brush = (this.sBrushes.getValue(KnownColor.Turquoise));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Turquoise);\n }\n return brush;\n }\n /**\n * Gets the Violet default brush.\n * @public\n */\n static get Violet() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Violet)) {\n brush = (this.sBrushes.getValue(KnownColor.Violet));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Violet);\n }\n return brush;\n }\n /**\n * Gets the Wheat default brush.\n * @public\n */\n static get Wheat() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Wheat)) {\n brush = (this.sBrushes.getValue(KnownColor.Wheat));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Wheat);\n }\n return brush;\n }\n /**\n * Gets the White default brush.\n * @public\n */\n static get White() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.White)) {\n brush = (this.sBrushes.getValue(KnownColor.White));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.White);\n }\n return brush;\n }\n /**\n * Gets the WhiteSmoke default brush.\n * @public\n */\n static get WhiteSmoke() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.WhiteSmoke)) {\n brush = (this.sBrushes.getValue(KnownColor.WhiteSmoke));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.WhiteSmoke);\n }\n return brush;\n }\n /**\n * Gets the Yellow default brush.\n * @public\n */\n static get Yellow() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.Yellow)) {\n brush = (this.sBrushes.getValue(KnownColor.Yellow));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Yellow);\n }\n return brush;\n }\n /**\n * Gets the YellowGreen default brush.\n * @public\n */\n static get YellowGreen() {\n let brush = null;\n if (this.sBrushes.containsKey(KnownColor.YellowGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.YellowGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.YellowGreen);\n }\n return brush;\n }\n /**\n * Get the brush.\n */\n static getBrush(colorName) {\n let pdfColor = this.getColorValue(colorName);\n let brush = new PdfSolidBrush(pdfColor);\n this.sBrushes.setValue(colorName, brush);\n return brush;\n }\n /**\n * Get the color value.\n * @param colorName The KnownColor name.\n */\n /* tslint:disable */\n static getColorValue(colorName) {\n let color = new PdfColor();\n switch (colorName) {\n case KnownColor.Transparent:\n color = new PdfColor(0, 255, 255, 255);\n break;\n case KnownColor.AliceBlue:\n color = new PdfColor(255, 240, 248, 255);\n break;\n case KnownColor.AntiqueWhite:\n color = new PdfColor(255, 250, 235, 215);\n break;\n case KnownColor.Aqua:\n color = new PdfColor(255, 0, 255, 255);\n break;\n case KnownColor.Aquamarine:\n color = new PdfColor(255, 127, 255, 212);\n break;\n case KnownColor.Azure:\n color = new PdfColor(255, 240, 255, 255);\n break;\n case KnownColor.Beige:\n color = new PdfColor(255, 245, 245, 220);\n break;\n case KnownColor.Bisque:\n color = new PdfColor(255, 255, 228, 196);\n break;\n case KnownColor.Black:\n color = new PdfColor(255, 0, 0, 0);\n break;\n case KnownColor.BlanchedAlmond:\n color = new PdfColor(255, 255, 235, 205);\n break;\n case KnownColor.Blue:\n color = new PdfColor(255, 0, 0, 255);\n break;\n case KnownColor.BlueViolet:\n color = new PdfColor(255, 138, 43, 226);\n break;\n case KnownColor.Brown:\n color = new PdfColor(255, 165, 42, 42);\n break;\n case KnownColor.BurlyWood:\n color = new PdfColor(255, 222, 184, 135);\n break;\n case KnownColor.CadetBlue:\n color = new PdfColor(255, 95, 158, 160);\n break;\n case KnownColor.Chartreuse:\n color = new PdfColor(255, 127, 255, 0);\n break;\n case KnownColor.Chocolate:\n color = new PdfColor(255, 210, 105, 30);\n break;\n case KnownColor.Coral:\n color = new PdfColor(255, 255, 127, 80);\n break;\n case KnownColor.CornflowerBlue:\n color = new PdfColor(255, 100, 149, 237);\n break;\n case KnownColor.Cornsilk:\n color = new PdfColor(255, 255, 248, 220);\n break;\n case KnownColor.Crimson:\n color = new PdfColor(255, 220, 20, 60);\n break;\n case KnownColor.Cyan:\n color = new PdfColor(255, 0, 255, 255);\n break;\n case KnownColor.DarkBlue:\n color = new PdfColor(255, 0, 0, 139);\n break;\n case KnownColor.DarkCyan:\n color = new PdfColor(255, 0, 139, 139);\n break;\n case KnownColor.DarkGoldenrod:\n color = new PdfColor(255, 184, 134, 11);\n break;\n case KnownColor.DarkGray:\n color = new PdfColor(255, 169, 169, 169);\n break;\n case KnownColor.DarkGreen:\n color = new PdfColor(255, 0, 100, 0);\n break;\n case KnownColor.DarkKhaki:\n color = new PdfColor(255, 189, 183, 107);\n break;\n case KnownColor.DarkMagenta:\n color = new PdfColor(255, 139, 0, 139);\n break;\n case KnownColor.DarkOliveGreen:\n color = new PdfColor(255, 85, 107, 47);\n break;\n case KnownColor.DarkOrange:\n color = new PdfColor(255, 255, 140, 0);\n break;\n case KnownColor.DarkOrchid:\n color = new PdfColor(255, 153, 50, 204);\n break;\n case KnownColor.DarkRed:\n color = new PdfColor(255, 139, 0, 0);\n break;\n case KnownColor.DarkSalmon:\n color = new PdfColor(255, 233, 150, 122);\n break;\n case KnownColor.DarkSeaGreen:\n color = new PdfColor(255, 143, 188, 139);\n break;\n case KnownColor.DarkSlateBlue:\n color = new PdfColor(255, 72, 61, 139);\n break;\n case KnownColor.DarkSlateGray:\n color = new PdfColor(255, 47, 79, 79);\n break;\n case KnownColor.DarkTurquoise:\n color = new PdfColor(255, 0, 206, 209);\n break;\n case KnownColor.DarkViolet:\n color = new PdfColor(255, 148, 0, 211);\n break;\n case KnownColor.DeepPink:\n color = new PdfColor(255, 255, 20, 147);\n break;\n case KnownColor.DeepSkyBlue:\n color = new PdfColor(255, 0, 191, 255);\n break;\n case KnownColor.DimGray:\n color = new PdfColor(255, 105, 105, 105);\n break;\n case KnownColor.DodgerBlue:\n color = new PdfColor(255, 30, 144, 255);\n break;\n case KnownColor.Firebrick:\n color = new PdfColor(255, 178, 34, 34);\n break;\n case KnownColor.FloralWhite:\n color = new PdfColor(255, 255, 250, 240);\n break;\n case KnownColor.ForestGreen:\n color = new PdfColor(255, 34, 139, 34);\n break;\n case KnownColor.Fuchsia:\n color = new PdfColor(255, 255, 0, 255);\n break;\n case KnownColor.Gainsboro:\n color = new PdfColor(255, 220, 220, 220);\n break;\n case KnownColor.GhostWhite:\n color = new PdfColor(255, 248, 248, 255);\n break;\n case KnownColor.Gold:\n color = new PdfColor(255, 255, 215, 0);\n break;\n case KnownColor.Goldenrod:\n color = new PdfColor(255, 218, 165, 32);\n break;\n case KnownColor.Gray:\n color = new PdfColor(255, 128, 128, 128);\n break;\n case KnownColor.Green:\n color = new PdfColor(255, 0, 128, 0);\n break;\n case KnownColor.GreenYellow:\n color = new PdfColor(255, 173, 255, 47);\n break;\n case KnownColor.Honeydew:\n color = new PdfColor(255, 240, 255, 240);\n break;\n case KnownColor.HotPink:\n color = new PdfColor(255, 255, 105, 180);\n break;\n case KnownColor.IndianRed:\n color = new PdfColor(255, 205, 92, 92);\n break;\n case KnownColor.Indigo:\n color = new PdfColor(255, 75, 0, 130);\n break;\n case KnownColor.Ivory:\n color = new PdfColor(255, 255, 255, 240);\n break;\n case KnownColor.Khaki:\n color = new PdfColor(255, 240, 230, 140);\n break;\n case KnownColor.Lavender:\n color = new PdfColor(255, 230, 230, 250);\n break;\n case KnownColor.LavenderBlush:\n color = new PdfColor(255, 255, 240, 245);\n break;\n case KnownColor.LawnGreen:\n color = new PdfColor(255, 124, 252, 0);\n break;\n case KnownColor.LemonChiffon:\n color = new PdfColor(255, 255, 250, 205);\n break;\n case KnownColor.LightBlue:\n color = new PdfColor(255, 173, 216, 230);\n break;\n case KnownColor.LightCoral:\n color = new PdfColor(255, 240, 128, 128);\n break;\n case KnownColor.LightCyan:\n color = new PdfColor(255, 224, 255, 255);\n break;\n case KnownColor.LightGoldenrodYellow:\n color = new PdfColor(255, 250, 250, 210);\n break;\n case KnownColor.LightGreen:\n color = new PdfColor(255, 144, 238, 144);\n break;\n case KnownColor.LightGray:\n color = new PdfColor(255, 211, 211, 211);\n break;\n case KnownColor.LightPink:\n color = new PdfColor(255, 255, 182, 193);\n break;\n case KnownColor.LightSalmon:\n color = new PdfColor(255, 255, 160, 122);\n break;\n case KnownColor.LightSeaGreen:\n color = new PdfColor(255, 32, 178, 170);\n break;\n case KnownColor.LightSkyBlue:\n color = new PdfColor(255, 135, 206, 250);\n break;\n case KnownColor.LightSlateGray:\n color = new PdfColor(255, 119, 136, 153);\n break;\n case KnownColor.LightSteelBlue:\n color = new PdfColor(255, 176, 196, 222);\n break;\n case KnownColor.LightYellow:\n color = new PdfColor(255, 255, 255, 224);\n break;\n case KnownColor.Lime:\n color = new PdfColor(255, 0, 255, 0);\n break;\n case KnownColor.LimeGreen:\n color = new PdfColor(255, 50, 205, 50);\n break;\n case KnownColor.Linen:\n color = new PdfColor(255, 250, 240, 230);\n break;\n case KnownColor.Magenta:\n color = new PdfColor(255, 255, 0, 255);\n break;\n case KnownColor.Maroon:\n color = new PdfColor(255, 128, 0, 0);\n break;\n case KnownColor.MediumAquamarine:\n color = new PdfColor(255, 102, 205, 170);\n break;\n case KnownColor.MediumBlue:\n color = new PdfColor(255, 0, 0, 205);\n break;\n case KnownColor.MediumOrchid:\n color = new PdfColor(255, 186, 85, 211);\n break;\n case KnownColor.MediumPurple:\n color = new PdfColor(255, 147, 112, 219);\n break;\n case KnownColor.MediumSeaGreen:\n color = new PdfColor(255, 60, 179, 113);\n break;\n case KnownColor.MediumSlateBlue:\n color = new PdfColor(255, 123, 104, 238);\n break;\n case KnownColor.MediumSpringGreen:\n color = new PdfColor(255, 0, 250, 154);\n break;\n case KnownColor.MediumTurquoise:\n color = new PdfColor(255, 72, 209, 204);\n break;\n case KnownColor.MediumVioletRed:\n color = new PdfColor(255, 199, 21, 133);\n break;\n case KnownColor.MidnightBlue:\n color = new PdfColor(255, 25, 25, 112);\n break;\n case KnownColor.MintCream:\n color = new PdfColor(255, 245, 255, 250);\n break;\n case KnownColor.MistyRose:\n color = new PdfColor(255, 255, 228, 225);\n break;\n case KnownColor.Moccasin:\n color = new PdfColor(255, 255, 228, 181);\n break;\n case KnownColor.NavajoWhite:\n color = new PdfColor(255, 255, 222, 173);\n break;\n case KnownColor.Navy:\n color = new PdfColor(255, 0, 0, 128);\n break;\n case KnownColor.OldLace:\n color = new PdfColor(255, 253, 245, 230);\n break;\n case KnownColor.Olive:\n color = new PdfColor(255, 128, 128, 0);\n break;\n case KnownColor.OliveDrab:\n color = new PdfColor(255, 107, 142, 35);\n break;\n case KnownColor.Orange:\n color = new PdfColor(255, 255, 165, 0);\n break;\n case KnownColor.OrangeRed:\n color = new PdfColor(255, 255, 69, 0);\n break;\n case KnownColor.Orchid:\n color = new PdfColor(255, 218, 112, 214);\n break;\n case KnownColor.PaleGoldenrod:\n color = new PdfColor(255, 238, 232, 170);\n break;\n case KnownColor.PaleGreen:\n color = new PdfColor(255, 152, 251, 152);\n break;\n case KnownColor.PaleTurquoise:\n color = new PdfColor(255, 175, 238, 238);\n break;\n case KnownColor.PaleVioletRed:\n color = new PdfColor(255, 219, 112, 147);\n break;\n case KnownColor.PapayaWhip:\n color = new PdfColor(255, 255, 239, 213);\n break;\n case KnownColor.PeachPuff:\n color = new PdfColor(255, 255, 218, 185);\n break;\n case KnownColor.Peru:\n color = new PdfColor(255, 205, 133, 63);\n break;\n case KnownColor.Pink:\n color = new PdfColor(255, 255, 192, 203);\n break;\n case KnownColor.Plum:\n color = new PdfColor(255, 221, 160, 221);\n break;\n case KnownColor.PowderBlue:\n color = new PdfColor(255, 176, 224, 230);\n break;\n case KnownColor.Purple:\n color = new PdfColor(255, 128, 0, 128);\n break;\n case KnownColor.Red:\n color = new PdfColor(255, 255, 0, 0);\n break;\n case KnownColor.RosyBrown:\n color = new PdfColor(255, 188, 143, 143);\n break;\n case KnownColor.RoyalBlue:\n color = new PdfColor(255, 65, 105, 225);\n break;\n case KnownColor.SaddleBrown:\n color = new PdfColor(255, 139, 69, 19);\n break;\n case KnownColor.Salmon:\n color = new PdfColor(255, 250, 128, 114);\n break;\n case KnownColor.SandyBrown:\n color = new PdfColor(255, 244, 164, 96);\n break;\n case KnownColor.SeaGreen:\n color = new PdfColor(255, 46, 139, 87);\n break;\n case KnownColor.SeaShell:\n color = new PdfColor(255, 255, 245, 238);\n break;\n case KnownColor.Sienna:\n color = new PdfColor(255, 160, 82, 45);\n break;\n case KnownColor.Silver:\n color = new PdfColor(255, 192, 192, 192);\n break;\n case KnownColor.SkyBlue:\n color = new PdfColor(255, 135, 206, 235);\n break;\n case KnownColor.SlateBlue:\n color = new PdfColor(255, 106, 90, 205);\n break;\n case KnownColor.SlateGray:\n color = new PdfColor(255, 112, 128, 144);\n break;\n case KnownColor.Snow:\n color = new PdfColor(255, 255, 250, 250);\n break;\n case KnownColor.SpringGreen:\n color = new PdfColor(255, 0, 255, 127);\n break;\n case KnownColor.SteelBlue:\n color = new PdfColor(255, 70, 130, 180);\n break;\n case KnownColor.Tan:\n color = new PdfColor(255, 210, 180, 140);\n break;\n case KnownColor.Teal:\n color = new PdfColor(255, 0, 128, 128);\n break;\n case KnownColor.Thistle:\n color = new PdfColor(255, 216, 191, 216);\n break;\n case KnownColor.Tomato:\n color = new PdfColor(255, 255, 99, 71);\n break;\n case KnownColor.Turquoise:\n color = new PdfColor(255, 64, 224, 208);\n break;\n case KnownColor.Violet:\n color = new PdfColor(255, 238, 130, 238);\n break;\n case KnownColor.Wheat:\n color = new PdfColor(255, 245, 222, 179);\n break;\n case KnownColor.White:\n color = new PdfColor(255, 255, 255, 255);\n break;\n case KnownColor.WhiteSmoke:\n color = new PdfColor(255, 245, 245, 245);\n break;\n case KnownColor.Yellow:\n color = new PdfColor(255, 255, 255, 0);\n break;\n case KnownColor.YellowGreen:\n color = new PdfColor(255, 154, 205, 50);\n break;\n }\n return color;\n }\n}\n//Static Fields\n/**\n * Local variable to store the brushes.\n */\nPdfBrushes.sBrushes = new Dictionary();\n\n/**\n * PdfBlend.ts class for EJ2-PDF\n */\n/**\n * `PdfBlend` Represents the blend color space\n * @private\n */\nclass PdfBlend {\n constructor(count) {\n //Constants\n /**\n * precision of the GCD calculations.\n * @private\n */\n this.precision = 1000;\n //\n }\n //Properties\n /**\n * Gets or sets the array of factor to the blend.\n * @public\n */\n get factors() {\n return this.mFactors;\n }\n set factors(value) {\n if ((value == null)) {\n throw new Error('ArgumentNullException : Factors');\n }\n this.mFactors = value;\n }\n /**\n * 'positions' Gets or sets the array of positions\n * @public\n */\n get positions() {\n return this.mPositions;\n }\n set positions(value) {\n let positionarray = value;\n for (let i = 0; i < positionarray.length; i++) {\n if (((positionarray[i] < 0) || (positionarray[i] > 1))) {\n positionarray[i] = 0;\n }\n }\n this.mPositions = positionarray;\n this.mPositions = value;\n }\n /**\n * Gets the number of elements that specify the blend.\n * @protected\n */\n get count() {\n return this.mCount;\n }\n //Implementation\n /**\n * Generates a correct color blend.\n * @param colours The colours.\n * @param colorSpace The color space.\n */\n generateColorBlend(colours, colorSpace) {\n if ((colours == null)) {\n throw new Error('ArgumentNullException : colours');\n }\n if ((this.positions == null)) {\n this.positions = [0];\n }\n let cBlend = new PdfColorBlend(this.count);\n let positions = this.positions;\n let clrs = null;\n if ((positions.length === 1)) {\n positions = [3];\n positions[0] = 0;\n positions[1] = this.positions[0];\n positions[2] = 1;\n /* tslint:disable */\n clrs = new Array(3);\n clrs[0] = colours[0];\n clrs[1] = colours[0];\n clrs[2] = colours[1];\n }\n else {\n let c1 = colours[0];\n let c2 = colours[1];\n /* tslint:disable */\n clrs = new Array(this.count);\n let i = 0;\n let count = this.count;\n for (i = 0; i < count; ++i) {\n clrs[i] = this.interpolate(this.mFactors[i], c1, c2, colorSpace);\n }\n }\n cBlend.positions = positions;\n cBlend.colors = clrs;\n return cBlend;\n }\n /**\n * 'clonePdfBlend' Clones this instance.\n * @public\n */\n clonePdfBlend() {\n let blend = this;\n if ((this.mFactors != null)) {\n blend.factors = (this.mFactors);\n }\n if ((this.positions != null)) {\n blend.positions = (this.positions);\n }\n return blend;\n }\n gcd(u, v) {\n if (typeof u === 'number' && typeof v === 'number' && typeof v !== 'undefined') {\n if (((u < 0) || (u > 1))) {\n throw new Error('ArgumentOutOfRangeException : u');\n }\n if (((v < 0) || (v > 1))) {\n throw new Error('ArgumentOutOfRangeException : v');\n }\n let iU = (Math.max(1, (u * this.precision)));\n let iV = (Math.max(1, (v * this.precision)));\n let iResult = this.gcdInt(iU, iV);\n let result = ((iResult) / this.precision);\n return result;\n }\n else {\n let values = u;\n if ((values == null)) {\n throw new Error('ArgumentNullException : values');\n }\n if ((values.length < 1)) {\n throw new Error('ArgumentException : Not enough values in the array. - values');\n }\n let gcd = values[0];\n if ((values.length > 1)) {\n let count = values.length;\n for (let i = 1; i < count; ++i) {\n gcd = this.gcd(values[i], gcd);\n if ((gcd === (1 / this.precision))) {\n break;\n }\n }\n }\n return gcd;\n }\n }\n /**\n * Calculate the GCD int of the specified values.\n * @param u The u.\n * @param v The v.\n */\n gcdInt(u, v) {\n if ((u <= 0)) {\n throw new Error('ArgumentOutOfRangeException' + u + 'The arguments cannot be less or equal to zero.');\n }\n if ((v <= 0)) {\n throw new Error('ArgumentOutOfRangeException' + v + 'The arguments cannot be less or equal to zero.');\n }\n if (((u === 1) || (v === 1))) {\n return 1;\n }\n let shift = 0;\n while (this.isEven(u, v)) {\n ++shift;\n u >>= 1;\n v >>= 1;\n }\n while (((u & 1) <= 0)) {\n u >>= 1;\n }\n do {\n while ((v & 1) <= 0) {\n v >>= 1;\n }\n if (u > v) {\n let t = v;\n v = u;\n u = t;\n }\n v = v - u;\n } while (v !== 0);\n return (u << shift);\n }\n isEven(arg1, arg2) {\n if (typeof arg2 === 'number' && typeof arg2 !== 'undefined') {\n let result = true;\n result = (result && ((arg1 & 1) <= 0)); // Is u even?\n result = (result && ((arg2 & 1) <= 0)); // Is v even?\n return result;\n }\n else {\n return ((arg1 & 1) <= 0);\n }\n }\n interpolate(t, color1, color2, colorSpace) {\n if (color1 instanceof PdfColor) {\n let color = new PdfColor();\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n let red = (this.interpolate(t, color1.red, color2.red));\n let green = (this.interpolate(t, color1.green, color2.green));\n let blue = (this.interpolate(t, color1.blue, color2.blue));\n color = new PdfColor(red, green, blue);\n break;\n case PdfColorSpace.GrayScale:\n let gray = (this.interpolate(t, color1.gray, color2.gray));\n color = new PdfColor(gray);\n break;\n case PdfColorSpace.Cmyk:\n let cyan = (this.interpolate(t, color1.c, color2.c));\n let magenta = (this.interpolate(t, color1.m, color2.m));\n let yellow = (this.interpolate(t, color1.y, color2.y));\n let black = (this.interpolate(t, color1.k, color2.k));\n color = new PdfColor(cyan, magenta, yellow, black);\n break;\n }\n return color;\n }\n else {\n let t0 = 0;\n let t1 = 1;\n let result = 0;\n if ((t === t0)) {\n result = color1;\n }\n else if ((t === t1)) {\n result = color2;\n }\n else {\n result = (color1 + ((t - t0) * ((color2 - color1) / (t1 - t0))));\n }\n return result;\n }\n }\n}\n\n/**\n * PdfColorBlend.ts class for EJ2-PDF\n */\n/**\n * `PdfColorBlend` Represents the arrays of colors and positions used for\n * interpolating color blending in a multicolor gradient.\n * @private\n */\nclass PdfColorBlend extends PdfBlend {\n constructor(count) {\n super();\n if (typeof count === 'number') {\n super(count);\n }\n }\n //Properties\n /**\n * Gets or sets the array of colors.\n * @public\n */\n get colors() {\n return this.mcolors;\n }\n set colors(value) {\n if ((value == null)) {\n throw new Error('ArgumentNullException : Colors');\n }\n this.mcolors = value;\n }\n //Implementation\n /**\n * Gets the function.\n * @param colorSpace The color space.\n * @public\n */\n getFunction(colorSpace) {\n let domain = [0, 1];\n let colourComponents = this.getColorComponentsCount(colorSpace);\n let maxComponentValue = this.getMaxComponentValue(colorSpace);\n let range = this.setRange(colourComponents, maxComponentValue);\n let func = null;\n if ((this.mbrush == null && typeof this.mbrush === 'undefined')) {\n let sizes = [1];\n let samplesCount;\n let step = 1;\n if (this.positions.length === 2) {\n samplesCount = 2;\n }\n else {\n let positions = this.positions;\n let intervals = this.getIntervals(positions);\n let gcd = this.gcd(intervals);\n step = gcd;\n samplesCount = (((1 / gcd)) + 1);\n }\n sizes[0] = samplesCount;\n let samples = this.getSamplesValues(colorSpace, samplesCount, maxComponentValue, step);\n func = new PdfSampledFunction(domain, range, sizes, samples);\n return func;\n }\n return func;\n }\n /**\n * 'cloneColorBlend' Clones this instance.\n * @public\n */\n cloneColorBlend() {\n let cBlend = this;\n if ((this.mcolors != null && typeof this.mcolors !== 'undefined')) {\n cBlend.colors = (this.mcolors);\n }\n if ((this.positions != null && typeof this.positions !== 'undefined')) {\n cBlend.positions = (this.positions);\n }\n return cBlend;\n }\n /**\n * Sets the range.\n * @param colourComponents The colour components.\n * @param maxValue The max value.\n */\n setRange(colourComponents, maxValue) {\n let range = [(colourComponents * 2)];\n for (let i = 0; (i < colourComponents); ++i) {\n range[(i * 2)] = 0;\n range[((i * 2) + 1)] = 1;\n }\n return range;\n }\n /**\n * Calculates the color components count according to colour space.\n * @param colorSpace The color space.\n */\n getColorComponentsCount(colorSpace) {\n let count = 0;\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n count = 3;\n break;\n case PdfColorSpace.Cmyk:\n count = 4;\n break;\n case PdfColorSpace.GrayScale:\n count = 1;\n break;\n default:\n throw new Error('ArgumentException - Unsupported color space: ' + colorSpace + ' colorSpace');\n }\n return count;\n }\n /**\n * Gets samples values for specified colour space.\n * @param colorSpace The color space.\n * @param sampleCount The sample count.\n * @param maxComponentValue The max component value.\n * @param step The step.\n */\n getSamplesValues(colorSpace, sampleCount, maxComponentValue, step) {\n let values;\n switch (colorSpace) {\n case PdfColorSpace.GrayScale:\n values = this.getGrayscaleSamples(sampleCount, maxComponentValue, step);\n break;\n case PdfColorSpace.Cmyk:\n values = this.getCmykSamples(sampleCount, maxComponentValue, step);\n break;\n case PdfColorSpace.Rgb:\n values = this.getRgbSamples(sampleCount, maxComponentValue, step);\n break;\n default:\n throw new Error('ArgumentException - Unsupported color space: ' + colorSpace + ' colorSpace');\n }\n return values;\n }\n /**\n * Gets the grayscale samples.\n * @param sampleCount The sample count.\n * @param maxComponentValue The max component value.\n * @param step The step.\n */\n getGrayscaleSamples(sampleCount, maxComponentValue, step) {\n let values = [(sampleCount * 2)];\n for (let i = 0; (i < sampleCount); ++i) {\n let color = this.getNextColor(i, step, PdfColorSpace.GrayScale);\n \n }\n return values;\n }\n /**\n * Gets the RGB samples.\n * @param sampleCount The sample count.\n * @param maxComponentValue The max component value.\n * @param step The step.\n */\n getRgbSamples(sampleCount, maxComponentValue, step) {\n let values = [(sampleCount * 3)];\n for (let i = 0; (i < sampleCount); ++i) {\n let color = this.getNextColor(i, step, PdfColorSpace.Rgb);\n let index = (i * 3);\n values[index] = color.r;\n values[(index + 1)] = color.g;\n values[(index + 2)] = color.b;\n }\n return values;\n }\n /**\n * Gets the CMYK samples.\n * @param sampleCount The sample count.\n * @param maxComponentValue The max component value.\n * @param step The step.\n */\n getCmykSamples(sampleCount, maxComponentValue, step) {\n let values = [(sampleCount * 4)];\n for (let i = 0; (i < sampleCount); i++) {\n let color = this.getNextColor(i, step, PdfColorSpace.Cmyk);\n let index = (i * 4);\n values[index] = ((color.c * maxComponentValue));\n values[(index + 1)] = ((color.m * maxComponentValue));\n values[(index + 2)] = ((color.y * maxComponentValue));\n values[(index + 3)] = ((color.k * maxComponentValue));\n }\n return values;\n }\n /**\n * Calculates the color that should be at the specified index.\n * @param index The index.\n * @param step The step.\n * @param colorSpace The color space.\n */\n getNextColor(index, step, colorSpace) {\n let position = (step * index);\n let indexHi;\n let indexLow;\n let result = this.getIndices(position, indexLow, indexHi);\n indexLow = result.indexLow;\n indexHi = result.indexHi;\n let color;\n if (indexLow === indexHi) {\n color = this.mcolors[indexLow];\n }\n else {\n let positionLow = this.positions[indexLow];\n let positionHi = this.positions[indexHi];\n let colorLow = this.mcolors[indexLow];\n let colorHi = this.mcolors[indexHi];\n let t = ((position - positionLow) / (positionHi - positionLow));\n color = this.interpolate(t, colorLow, colorHi, colorSpace);\n }\n return color;\n }\n /**\n * Gets the indices.\n * @param position The position.\n * @param indexLow The index low.\n * @param indexHi The index hi.\n */\n getIndices(position, indexLow, indexHi) {\n let positions = this.positions;\n indexLow = 0;\n indexHi = 0;\n for (let i = 0; (i < this.mcolors.length); ++i) {\n let currPos = positions[i];\n if ((currPos === position)) {\n indexHi = i;\n indexLow = i;\n break;\n }\n else if ((currPos > position)) {\n indexHi = i;\n break;\n }\n indexLow = i;\n indexHi = i;\n }\n return { indexLow: indexLow, indexHi: indexHi };\n }\n /**\n * Calculates the max component value.\n * @param colorSpace The color space.\n */\n getMaxComponentValue(colorSpace) {\n let result = 0;\n switch (colorSpace) {\n case PdfColorSpace.Cmyk:\n case PdfColorSpace.Rgb:\n result = 255;\n break;\n case PdfColorSpace.GrayScale:\n result = 65535;\n break;\n default:\n throw new Error('ArgumentException - Unsupported color space: ' + colorSpace + 'colorSpace');\n }\n return result;\n }\n /**\n * Gets an intervals array from the positions array.\n * @param positions The positions array.\n */\n getIntervals(positions) {\n let count = positions.length;\n let intervals = [(count - 1)];\n let prev = positions[0];\n for (let i = 1; (i < count); ++i) {\n let v = positions[i];\n intervals[(i - 1)] = (v - prev);\n prev = v;\n }\n return intervals;\n }\n}\n\n/**\n * PdfLinearGradientBrush.ts class for EJ2-PDF\n */\n/**\n * `PdfLinearGradientBrush` Implements linear gradient brush by using PDF axial shading pattern.\n * @private\n */\nclass PdfLinearGradientBrush extends PdfGradientBrush {\n /**\n * Initializes a new instance of the `PdfLinearGradientBrush` class.\n * @public\n */\n /* tslint:disable-next-line:max-line-length */\n constructor(arg1, arg2, arg3, arg4) {\n super(new PdfDictionary());\n /**\n * Local variable to store the dictionary properties.\n * @private\n */\n this.mDictionaryProperties = new DictionaryProperties();\n if (arg1 instanceof PointF && arg2 instanceof PointF && arg3 instanceof PdfColor && arg4 instanceof PdfColor) {\n this.initialize(arg3, arg4);\n this.mPointStart = arg1;\n this.mPointEnd = arg2;\n this.setPoints(this.mPointStart, this.mPointEnd);\n }\n else if (arg1 instanceof Rectangle) {\n this.initialize(arg2, arg3);\n /* tslint:disable-next-line:max-line-length */\n if ((arg4 === PdfLinearGradientMode.BackwardDiagonal || arg4 === PdfLinearGradientMode.ForwardDiagonal || arg4 === PdfLinearGradientMode.Horizontal || arg4 === PdfLinearGradientMode.Vertical)) {\n this.mBoundaries = arg1;\n switch (arg4) {\n case PdfLinearGradientMode.BackwardDiagonal:\n this.mPointStart = new PointF(arg1.right, arg1.top);\n this.mPointEnd = new PointF(arg1.left, arg1.bottom);\n break;\n case PdfLinearGradientMode.ForwardDiagonal:\n this.mPointStart = new PointF(arg1.left, arg1.top);\n this.mPointEnd = new PointF(arg1.right, arg1.bottom);\n break;\n case PdfLinearGradientMode.Horizontal:\n this.mPointStart = new PointF(arg1.left, arg1.top);\n this.mPointEnd = new PointF(arg1.right, arg1.top);\n break;\n case PdfLinearGradientMode.Vertical:\n this.mPointStart = new PointF(arg1.left, arg1.top);\n this.mPointEnd = new PointF(arg1.left, arg1.bottom);\n break;\n default:\n throw new Error('ArgumentException -- Unsupported linear gradient mode: ' + arg4 + ' mode');\n }\n this.setPoints(this.mPointStart, this.mPointEnd);\n }\n else if (typeof arg4 === 'number' && typeof arg4 !== 'undefined') {\n this.mBoundaries = arg1;\n arg4 = arg4 % 360;\n if ((arg4 === 0)) {\n this.mPointStart = new PointF(arg1.left, arg1.top);\n this.mPointEnd = new PointF(arg1.right, arg1.top);\n }\n else if ((arg4 === 90)) {\n this.mPointStart = new PointF(arg1.left, arg1.top);\n this.mPointEnd = new PointF(arg1.left, arg1.bottom);\n }\n else if ((arg4 === 180)) {\n this.mPointEnd = new PointF(arg1.left, arg1.top);\n this.mPointStart = new PointF(arg1.right, arg1.top);\n }\n else if ((arg4 === 270)) {\n this.mPointEnd = new PointF(arg1.left, arg1.top);\n this.mPointStart = new PointF(arg1.left, arg1.bottom);\n }\n else {\n let d2r = (Math.PI / 180);\n let radAngle = (arg4 * d2r);\n let k = Math.tan(radAngle);\n let x = (this.mBoundaries.left\n + ((this.mBoundaries.right - this.mBoundaries.left) / 2));\n let y = (this.mBoundaries.top\n + ((this.mBoundaries.bottom - this.mBoundaries.top) / 2));\n let centre = new PointF(x, y);\n x = (this.mBoundaries.width / (2 * (Math.cos(radAngle))));\n y = ((k * x));\n x = (x + centre.x);\n y = (y + centre.y);\n let p1 = new PointF(x, y);\n let cp1 = this.subPoints(p1, centre);\n // P1 - P0\n let p = this.choosePoint(arg4);\n let coef = (this.mulPoints(this.subPoints(p, centre), cp1)\n / this.mulPoints(cp1, cp1));\n this.mPointEnd = this.addPoints(centre, this.mulPoint(cp1, coef));\n // Parametric line equation.\n this.mPointStart = this.addPoints(centre, this.mulPoint(cp1, (coef * -1)));\n }\n this.setPoints(this.mPointEnd, this.mPointStart);\n }\n }\n }\n /**\n * Initializes a new instance of the `PdfLinearGradientBrush` class.\n * @param color1 The starting color of the gradient.\n * @param color2 The end color of the gradient.\n */\n initialize(color1, color2) {\n this.mColours = [color1, color2];\n this.mColourBlend = new PdfColorBlend(2);\n this.mColourBlend.positions = [0, 1];\n this.mColourBlend.colors = this.mColours;\n this.initShading();\n }\n //Properties\n /**\n * Gets or sets a PdfBlend that specifies positions\n * and factors that define a custom falloff for the gradient.\n * @public\n */\n get blend() {\n return this.mBlend;\n }\n set blend(value) {\n if ((value == null)) {\n throw new Error('ArgumentNullException : Blend');\n }\n if ((this.mColours == null)) {\n throw new Error('NotSupportedException : There is no starting and ending colours specified.');\n }\n this.mBlend = value;\n // TODO: generate correct colour blend.\n this.mColourBlend = this.mBlend.generateColorBlend(this.mColours, this.colorSpace);\n this.resetFunction();\n }\n /**\n * Gets or sets a ColorBlend that defines a multicolor linear gradient.\n * @public\n */\n get interpolationColors() {\n return this.mColourBlend;\n }\n set interpolationColors(value) {\n if ((value == null)) {\n throw new Error('ArgumentNullException : InterpolationColors');\n }\n this.mBlend = null;\n this.mColours = null;\n this.mColourBlend = value;\n this.resetFunction();\n }\n /**\n * Gets or sets the starting and ending colors of the gradient.\n * @public\n */\n get linearColors() {\n return this.mColours;\n }\n set linearColors(value) {\n if ((value == null)) {\n throw new Error('ArgumentNullException : LinearColors');\n }\n if ((value.length < 2)) {\n throw new Error('ArgumentException : The array is too small - LinearColors');\n }\n if ((this.mColours == null && typeof this.mColours === 'undefined')) {\n this.mColours = [value[0], value[1]];\n }\n else {\n this.mColours[0] = value[0];\n this.mColours[1] = value[1];\n }\n if ((this.mBlend == null && typeof this.mBlend === 'undefined')) {\n // Set correct colour blend.\n this.mColourBlend = new PdfColorBlend(2);\n this.mColourBlend.colors = this.mColours;\n this.mColourBlend.positions = [0, 1];\n }\n else {\n this.mColourBlend = this.mBlend.generateColorBlend(this.mColours, this.colorSpace);\n }\n this.resetFunction();\n }\n /**\n * Gets a rectangular region that defines the boundaries of the gradient.\n * @public\n */\n get rectangle() {\n return this.mBoundaries;\n }\n /**\n * Gets or sets the value indicating whether the gradient should extend starting and ending points.\n * @public\n */\n get extend() {\n let result = PdfExtend.None;\n let extend = (this.shading.items.getValue(this.mDictionaryProperties.extend));\n if ((extend != null)) {\n let extStart = (extend.items(0));\n let extEnd = (extend.items(1));\n if (extStart.value) {\n result = (result | PdfExtend.Start);\n }\n if (extEnd.value) {\n result = (result | PdfExtend.End);\n }\n }\n return result;\n }\n set extend(value) {\n let extend = (this.shading.items.getValue(this.mDictionaryProperties.extend));\n let extStart;\n let extEnd;\n if ((extend == null)) {\n extStart = new PdfBoolean(false);\n extEnd = new PdfBoolean(false);\n extend = new PdfArray();\n extend.add(extStart);\n extend.add(extEnd);\n this.shading.items.setValue(this.mDictionaryProperties.extend, extend);\n }\n else {\n extStart = (extend.items(0));\n extEnd = (extend.items(1));\n }\n // extStart.value = ((value && PdfExtend.Start) > 0);\n // extEnd.value = ((value && PdfExtend.End) > 0);\n }\n //Implementation\n /**\n * Adds two points to each other.\n * @param point1 The point1.\n * @param point2 The point2.\n */\n addPoints(point1, point2) {\n let x = (point1.x + point2.x);\n let y = (point1.y + point2.y);\n let result = new PointF(x, y);\n return result;\n }\n /**\n * Subs the second point from the first one.\n * @param point1 The point1.\n * @param point2 The point2.\n */\n subPoints(point1, point2) {\n let x = (point1.x - point2.x);\n let y = (point1.y - point2.y);\n let result = new PointF(x, y);\n return result;\n }\n /**\n * Makes scalar multiplication of two points.\n * @param point1 The point1.\n * @param point2 The point2.\n */\n mulPoints(point1, point2) {\n let result = ((point1.x * point2.x) + (point1.y * point2.y));\n return result;\n }\n /**\n * Multiplies the point by the value specified.\n * @param point The point1.\n * @param value The value.\n */\n mulPoint(point, value) {\n point.x = (point.x * value);\n point.y = (point.y * value);\n return point;\n }\n /**\n * Choose the point according to the angle.\n * @param angle The angle.\n */\n choosePoint(angle) {\n let point = new PointF(0, 0);\n // Choose the correct point.\n if ((angle < 90) && (angle > 0)) {\n point = new PointF(this.mBoundaries.right, this.mBoundaries.bottom);\n }\n else if ((angle < 180) && (angle > 90)) {\n point = new PointF(this.mBoundaries.left, this.mBoundaries.bottom);\n }\n else if ((angle < 270) && (angle > 180)) {\n point = new PointF(this.mBoundaries.left, this.mBoundaries.top);\n }\n else if (angle > 270) {\n point = new PointF(this.mBoundaries.right, this.mBoundaries.top);\n }\n else {\n throw new Error('PdfException - Internal error.');\n }\n return point;\n }\n /**\n * Sets the start and end points.\n * @param point1 The point1.\n * @param point2 The point2.\n */\n setPoints(point1, point2) {\n let points = new PdfArray();\n points.add(new PdfNumber(point1.x));\n points.add(new PdfNumber(this.updateY(point1.y)));\n points.add(new PdfNumber(point2.x));\n points.add(new PdfNumber(this.updateY(point2.y)));\n this.shading.items.setValue(this.mDictionaryProperties.coords, points);\n }\n /**\n * Updates y co-ordinate.\n * @param y Y co-ordinate..\n */\n updateY(y) {\n if (y !== 0) {\n return -y;\n }\n else {\n return y;\n }\n }\n //Overrides\n /**\n * Initializes the shading dictionary.\n * @private\n */\n initShading() {\n this.colorSpace = PdfColorSpace.Rgb;\n this.function = this.mColourBlend.getFunction(this.colorSpace);\n this.shading.items.setValue(this.mDictionaryProperties.shadingType, new PdfNumber((ShadingType.Axial)));\n }\n //Overrides\n /**\n * Creates a new copy of a brush.\n * @public\n */\n clone() {\n let brush = this;\n brush.resetPatternDictionary(new PdfDictionary(this.patternDictionary));\n brush.shading = new PdfDictionary();\n brush.initShading();\n brush.setPoints(brush.mPointStart, brush.mPointEnd);\n if (brush !== null && brush instanceof PdfLinearGradientBrush) {\n if ((this.matrix != null && typeof this.matrix !== 'undefined')) {\n brush.matrix = this.matrix.clone();\n }\n }\n if ((this.mColours != null && typeof this.mColours !== 'undefined')) {\n brush.mColours = (this.mColours);\n }\n if ((this.blend != null && typeof this.blend !== 'undefined')) {\n brush.blend = this.blend.clonePdfBlend();\n }\n else if ((this.interpolationColors != null && typeof this.interpolationColors !== 'undefined')) {\n brush.interpolationColors = this.interpolationColors.cloneColorBlend();\n }\n brush.extend = this.extend;\n this.cloneBackgroundValue(brush);\n this.cloneAntiAliasingValue(brush);\n return brush;\n }\n /**\n * Resets the function.\n * @public\n */\n resetFunction() {\n this.function = this.mColourBlend.getFunction(this.colorSpace);\n }\n}\n\n/**\n * PdfRadialGradientBrush.ts class for EJ2-PDF\n */\n/**\n * `PdfRadialGradientBrush` Represent radial gradient brush.\n * @private\n */\nclass PdfRadialGradientBrush extends PdfGradientBrush {\n //Constructor\n /**\n * Initializes a new instance of the `PdfRadialGradientBrush` class.\n * @public\n */\n /* tslint:disable-next-line:max-line-length */\n constructor(centerStart, radiusStart, centerEnd, radiusEnd, colorStart, colorEnd) {\n super(new PdfDictionary());\n /**\n * Local varaible to store the dictionary properties.\n */\n this.mDictionaryProperties = new DictionaryProperties();\n this.initialize(colorStart, colorEnd);\n if (radiusStart < 0) {\n throw new Error('ArgumentOutOfRangeException : radiusStart - The radius cannot be less then zero.');\n }\n if (radiusEnd < 0) {\n throw new Error('ArgumentOutOfRangeException : radiusEnd - The radius cannpt be less then zero.');\n }\n this.mPointEnd = centerEnd;\n this.mPointStart = centerStart;\n this.mRadiusStart = radiusStart;\n this.mRadiusEnd = radiusEnd;\n this.setPoints(this.mPointStart, this.mPointEnd, this.mRadiusStart, this.mRadiusEnd);\n }\n /**\n * Initializes a new instance of the `PdfRadialGradientBrush` class.\n * @param color1 The color1.\n * @param color2 The color2.\n */\n initialize(color1, color2) {\n this.mColour = [color1, color2];\n this.mColourBlends = new PdfColorBlend(2);\n this.mColourBlends.positions = [0, 1];\n this.mColourBlends.colors = this.mColour;\n this.initShading();\n }\n //Properties\n /**\n * Gets or sets a PdfBlend that specifies positions and factors that define a custom falloff for the gradient.\n * @public\n */\n get blend() {\n return this.mBlend;\n }\n set blend(value) {\n if ((value == null)) {\n throw new Error('ArgumentNullException : Blend');\n }\n if ((this.mColour == null && typeof this.mColour === 'undefined')) {\n throw new Error('NotSupportedException : There is no starting and ending colours specified.');\n }\n this.mBlend = value;\n this.mColourBlends = this.mBlend.generateColorBlend(this.mColour, this.colorSpace);\n this.resetFunction();\n }\n /**\n * Gets or sets a ColorBlend that defines a multicolor radial gradient.\n * @public\n */\n get interpolationColors() {\n return this.mColourBlends;\n }\n set interpolationColors(value) {\n if (value == null) {\n throw new Error('ArgumentNullException : InterpolationColors');\n }\n this.mBlend = null;\n this.mColour = null;\n this.mColourBlends = value;\n this.resetFunction();\n }\n /**\n * Gets or sets the starting and ending colors of the radial gradient.\n * @public\n */\n get linearColors() {\n return this.mColour;\n }\n set linearColors(value) {\n if ((value == null)) {\n throw new Error('ArgumentNullException : radial LinearColors');\n }\n if ((value.length < 2)) {\n throw new Error('ArgumentException : The array is too small LinearColors');\n }\n if ((this.mColour == null && typeof this.mColour === 'undefined')) {\n this.mColour = [value[0], value[1]];\n }\n else {\n this.mColour[0] = value[0];\n this.mColour[1] = value[1];\n }\n if ((this.mBlend == null && typeof this.mBlend === 'undefined')) {\n // Set correct colour blend.\n this.mColourBlends = new PdfColorBlend(2);\n this.mColourBlends.colors = this.mColour;\n this.mColourBlends.positions = [0, 1];\n }\n else {\n this.mColourBlends = this.mBlend.generateColorBlend(this.mColour, this.colorSpace);\n }\n this.resetFunction();\n }\n /**\n * Gets or sets the rectangle.\n * @public\n */\n get rectangle() {\n return this.mBoundaries;\n }\n set rectangle(value) {\n this.mBoundaries = value;\n this.bBox = PdfArray.fromRectangle(value);\n }\n /**\n * Gets or sets the value indicating whether the gradient\n * should extend starting and ending points.\n * @public\n */\n get extend() {\n let result1 = PdfExtend.None;\n let extend1 = (this.shading.items.getValue(this.mDictionaryProperties.extend));\n if (extend1 !== null && typeof extend1 !== 'undefined') {\n let extStart = (extend1.items(0));\n let extEnd = (extend1.items(1));\n if (extStart.value) {\n result1 = (result1 | PdfExtend.Start);\n }\n if (extEnd.value) {\n result1 = (result1 | PdfExtend.End);\n }\n }\n return result1;\n }\n set extend(value) {\n let extend = (this.shading.items.getValue(this.mDictionaryProperties.extend));\n let extStart;\n let extEnd1;\n if (extend == null && typeof extend === 'undefined') {\n extStart = new PdfBoolean(false);\n extEnd1 = new PdfBoolean(false);\n extend = new PdfArray();\n extend.add(extStart);\n extend.add(extEnd1);\n this.shading.items.setValue(this.mDictionaryProperties.extend, extend);\n }\n else {\n extStart = (extend.items(0));\n extEnd1 = (extend.items(1));\n }\n }\n //Implementation\n /**\n * Sets the points.\n * @param pointStart The point start.\n * @param pointEnd The point end.\n * @param radiusStart The radius start.\n * @param radiusEnd The radius end.\n */\n setPoints(pointStart, pointEnd, radiusStart, radiusEnd) {\n let points = new PdfArray();\n points.add(new PdfNumber(pointStart.x));\n points.add(new PdfNumber(this.updateY(pointStart.y)));\n points.add(new PdfNumber(radiusStart));\n points.add(new PdfNumber(pointEnd.x));\n points.add(new PdfNumber(this.updateY(pointEnd.y)));\n if ((radiusStart !== radiusEnd)) {\n points.add(new PdfNumber(radiusEnd));\n }\n else {\n points.add(new PdfNumber(0));\n }\n this.shading.items.setValue(this.mDictionaryProperties.coords, points);\n }\n /**\n * Update y co-ordinate.\n * @param y Y co-ordinate.\n */\n updateY(y) {\n if (y !== 0) {\n return -y;\n }\n else {\n return y;\n }\n }\n /**\n * Initializess the shading dictionary.\n * @private\n */\n initShading() {\n this.colorSpace = PdfColorSpace.Rgb;\n this.function = this.mColourBlends.getFunction(this.colorSpace);\n this.shading.items.setValue(this.mDictionaryProperties.shadingType, new PdfNumber((ShadingType.Radial)));\n }\n //Overrides\n /**\n * Creates a new copy of a brush.\n * @public\n */\n clone() {\n let rBrush = this;\n rBrush.resetPatternDictionary(new PdfDictionary(this.patternDictionary));\n rBrush.shading = new PdfDictionary();\n rBrush.initShading();\n rBrush.setPoints(this.mPointStart, this.mPointEnd, this.mRadiusStart, this.mRadiusEnd);\n if (rBrush instanceof PdfRadialGradientBrush) {\n if ((this.matrix !== null && typeof this.matrix !== 'undefined')) {\n rBrush.matrix = this.matrix.clone();\n }\n }\n if ((this.mColour !== null && typeof this.mColour !== 'undefined')) {\n rBrush.mColour = (this.mColour);\n }\n if ((this.blend !== null && typeof this.blend !== 'undefined')) {\n rBrush.blend = this.blend.clonePdfBlend();\n }\n else if ((this.interpolationColors !== null && typeof this.interpolationColors !== 'undefined')) {\n rBrush.interpolationColors = this.interpolationColors.cloneColorBlend();\n }\n rBrush.extend = this.extend;\n this.cloneBackgroundValue(rBrush);\n this.cloneAntiAliasingValue(rBrush);\n return rBrush;\n }\n /**\n * Resets the function.\n * @public\n */\n resetFunction() {\n this.function = this.mColourBlends.getFunction(this.colorSpace);\n }\n}\n\n/**\n * public Enum for `PdfBorderOverlapStyle`.\n * @private\n */\nvar PdfBorderOverlapStyle;\n(function (PdfBorderOverlapStyle) {\n /**\n * Specifies the type of `Overlap`.\n * @private\n */\n PdfBorderOverlapStyle[PdfBorderOverlapStyle[\"Overlap\"] = 0] = \"Overlap\";\n /**\n * Specifies the type of `Inside`.\n * @private\n */\n PdfBorderOverlapStyle[PdfBorderOverlapStyle[\"Inside\"] = 1] = \"Inside\";\n})(PdfBorderOverlapStyle || (PdfBorderOverlapStyle = {}));\n\n/**\n * Base class for the `grid style`,\n */\nclass PdfGridStyleBase {\n // Properties\n /**\n * Gets or sets the `background brush`.\n * @private\n */\n get backgroundBrush() {\n return this.gridBackgroundBrush;\n }\n set backgroundBrush(value) {\n this.gridBackgroundBrush = value;\n }\n /**\n * Gets or sets the `text brush`.\n * @private\n */\n get textBrush() {\n return this.gridTextBrush;\n }\n set textBrush(value) {\n this.gridTextBrush = value;\n }\n /**\n * Gets or sets the `text pen`.\n * @private\n */\n get textPen() {\n return this.gridTextPen;\n }\n set textPen(value) {\n this.gridTextPen = value;\n }\n /**\n * Gets or sets the `font`.\n * @private\n */\n get font() {\n return this.gridFont;\n }\n set font(value) {\n this.gridFont = value;\n }\n /**\n * Gets or sets the `background Image`.\n * @private\n */\n get backgroundImage() {\n return this.gridBackgroundImage;\n }\n set backgroundImage(value) {\n this.gridBackgroundImage = value;\n }\n}\n/**\n * `PdfGridStyle` class provides customization of the appearance for the 'PdfGrid'.\n */\nclass PdfGridStyle extends PdfGridStyleBase {\n //constructor\n /**\n * Initialize a new instance for `PdfGridStyle` class.\n * @private\n */\n constructor() {\n super();\n this.gridBorderOverlapStyle = PdfBorderOverlapStyle.Overlap;\n this.bAllowHorizontalOverflow = false;\n this.gridHorizontalOverflowType = PdfHorizontalOverflowType.LastPage;\n }\n //Properties\n /**\n * Gets or sets the `cell spacing` of the 'PdfGrid'.\n * @private\n */\n get cellSpacing() {\n if (typeof this.gridCellSpacing === 'undefined') {\n this.gridCellSpacing = 0;\n }\n return this.gridCellSpacing;\n }\n set cellSpacing(value) {\n this.gridCellSpacing = value;\n }\n /**\n * Gets or sets the type of the `horizontal overflow` of the 'PdfGrid'.\n * @private\n */\n get horizontalOverflowType() {\n return this.gridHorizontalOverflowType;\n }\n set horizontalOverflowType(value) {\n this.gridHorizontalOverflowType = value;\n }\n /**\n * Gets or sets a value indicating whether to `allow horizontal overflow`.\n * @private\n */\n get allowHorizontalOverflow() {\n return this.bAllowHorizontalOverflow;\n }\n set allowHorizontalOverflow(value) {\n this.bAllowHorizontalOverflow = value;\n }\n /**\n * Gets or sets the `cell padding`.\n * @private\n */\n get cellPadding() {\n if (typeof this.gridCellPadding === 'undefined') {\n this.gridCellPadding = new PdfPaddings();\n }\n return this.gridCellPadding;\n }\n set cellPadding(value) {\n if (typeof this.gridCellPadding === 'undefined') {\n this.gridCellPadding = new PdfPaddings();\n this.gridCellPadding = value;\n }\n else {\n this.gridCellPadding = value;\n }\n }\n /**\n * Gets or sets the `border overlap style` of the 'PdfGrid'.\n * @private\n */\n get borderOverlapStyle() {\n return this.gridBorderOverlapStyle;\n }\n set borderOverlapStyle(value) {\n this.gridBorderOverlapStyle = value;\n }\n}\n/**\n * `PdfGridCellStyle` class provides customization of the appearance for the 'PdfGridCell'.\n */\nclass PdfGridCellStyle extends PdfGridStyleBase {\n /**\n * Initializes a new instance of the `PdfGridCellStyle` class.\n * @private\n */\n constructor() {\n super();\n /**\n * @hidden\n * @private\n */\n this.gridCellBorders = PdfBorders.default;\n }\n //Properties\n /**\n * Gets the `string format` of the 'PdfGridCell'.\n * @private\n */\n get stringFormat() {\n return this.format;\n }\n set stringFormat(value) {\n this.format = value;\n }\n /**\n * Gets or sets the `border` of the 'PdfGridCell'.\n * @private\n */\n get borders() {\n return this.gridCellBorders;\n }\n set borders(value) {\n this.gridCellBorders = value;\n }\n /**\n * Gets or sets the `cell padding`.\n * @private\n */\n get cellPadding() {\n return this.gridCellPadding;\n }\n set cellPadding(value) {\n if (this.gridCellPadding == null || typeof this.gridCellPadding === 'undefined') {\n this.gridCellPadding = new PdfPaddings();\n }\n this.gridCellPadding = value;\n }\n}\n/**\n * `PdfGridRowStyle` class provides customization of the appearance for the `PdfGridRow`.\n */\nclass PdfGridRowStyle {\n // Properties\n /**\n * Gets or sets the `background brush`.\n * @private\n */\n get backgroundBrush() {\n return this.gridRowBackgroundBrush;\n }\n setBackgroundBrush(value) {\n this.gridRowBackgroundBrush = value;\n if (typeof this.parent !== 'undefined') {\n for (let i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.backgroundBrush = value;\n }\n }\n }\n /**\n * Gets or sets the `text brush`.\n * @private\n */\n get textBrush() {\n return this.gridRowTextBrush;\n }\n setTextBrush(value) {\n this.gridRowTextBrush = value;\n if (typeof this.parent !== 'undefined') {\n for (let i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.textBrush = value;\n }\n }\n }\n /**\n * Gets or sets the `text pen`.\n * @private\n */\n get textPen() {\n return this.gridRowTextPen;\n }\n setTextPen(value) {\n this.gridRowTextPen = value;\n if (typeof this.parent !== 'undefined') {\n for (let i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.textPen = value;\n }\n }\n }\n /**\n * Gets or sets the `font`.\n * @private\n */\n get font() {\n return this.gridRowFont;\n }\n setFont(value) {\n this.gridRowFont = value;\n if (typeof this.parent !== 'undefined') {\n for (let i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.font = value;\n }\n }\n }\n /**\n * Gets or sets the `border` of the current row.\n * @private\n */\n get border() {\n if (typeof this.gridRowBorder === 'undefined') {\n this.setBorder(new PdfBorders());\n }\n return this.gridRowBorder;\n }\n setBorder(value) {\n this.gridRowBorder = value;\n if (typeof this.parent !== 'undefined') {\n for (let i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.borders = value;\n }\n }\n }\n /**\n * sets the `parent row` of the current object.\n * @private\n */\n setParent(parent) {\n this.parent = parent;\n }\n /**\n * Gets or sets the `backgroundImage` of the 'PdfGridCell'.\n * @private\n */\n get backgroundImage() {\n return this.gridRowBackgroundImage;\n }\n // public setBackgroundImage(value : PdfImage) : void {\n // this.gridRowBackgroundImage = value;\n // if (typeof this.parent !== 'undefined') {\n // for (let i : number = 0; i < this.parent.cells.count; i++) {\n // this.parent.cells.getCell(i).style.backgroundImage = value;\n // }\n // }\n // }\n // Constructor\n /**\n * Initializes a new instance of the `PdfGridRowStyle` class.\n * @private\n */\n constructor() {\n //\n }\n}\n/**\n * public Enum for `PdfHorizontalOverflowType`.\n * @private\n */\nvar PdfHorizontalOverflowType;\n(function (PdfHorizontalOverflowType) {\n /**\n * Specifies the type of `NextPage`.\n * @private\n */\n PdfHorizontalOverflowType[PdfHorizontalOverflowType[\"NextPage\"] = 0] = \"NextPage\";\n /**\n * Specifies the type of `LastPage`.\n * @private\n */\n PdfHorizontalOverflowType[PdfHorizontalOverflowType[\"LastPage\"] = 1] = \"LastPage\";\n})(PdfHorizontalOverflowType || (PdfHorizontalOverflowType = {}));\n\n/**\n * `PdfGridCell` class represents the schema of a cell in a 'PdfGrid'.\n */\nclass PdfGridCell {\n constructor(row) {\n /**\n * `Width` of the cell.\n * @default 0\n * @private\n */\n this.cellWidth = 0;\n /**\n * `Height` of the cell.\n * @default 0\n * @private\n */\n this.cellHeight = 0;\n /**\n * `tempval`to stores current width .\n * @default 0\n * @private\n */\n this.tempval = 0;\n this.fontSpilt = false;\n /**\n * Specifies weather the `cell is drawn`.\n * @default true\n * @private\n */\n this.finsh = true;\n /**\n * The `remaining height` of row span.\n * @default 0\n * @private\n */\n this.rowSpanRemainingHeight = 0;\n this.hasRowSpan = false;\n this.hasColSpan = false;\n /**\n * the 'isFinish' is set to page finish\n */\n this.isFinish = true;\n /**\n * The `present' to store the current cell.\n * @default false\n * @private\n */\n this.present = false;\n this.gridRowSpan = 1;\n this.colSpan = 1;\n if (typeof row !== 'undefined') {\n this.gridRow = row;\n }\n }\n //Properties\n get isCellMergeContinue() {\n return this.internalIsCellMergeContinue;\n }\n set isCellMergeContinue(value) {\n this.internalIsCellMergeContinue = value;\n }\n get isRowMergeContinue() {\n return this.internalIsRowMergeContinue;\n }\n set isRowMergeContinue(value) {\n this.internalIsRowMergeContinue = value;\n }\n get isCellMergeStart() {\n return this.internalIsCellMergeStart;\n }\n set isCellMergeStart(value) {\n this.internalIsCellMergeStart = value;\n }\n get isRowMergeStart() {\n return this.internalIsRowMergeStart;\n }\n set isRowMergeStart(value) {\n this.internalIsRowMergeStart = value;\n }\n /**\n * Gets or sets the `remaining string` after the row split between pages.\n * @private\n */\n get remainingString() {\n return this.remaining;\n }\n set remainingString(value) {\n this.remaining = value;\n }\n /**\n * Gets or sets the `FinishedDrawingCell` .\n * @private\n */\n get FinishedDrawingCell() {\n return this.isFinish;\n }\n set FinishedDrawingCell(value) {\n this.isFinish = value;\n }\n /**\n * Gets or sets the `string format`.\n * @private\n */\n get stringFormat() {\n if (this.format == null) {\n this.format = new PdfStringFormat();\n }\n return this.format;\n }\n set stringFormat(value) {\n this.format = value;\n }\n /**\n * Gets or sets the parent `row`.\n * @private\n */\n get row() {\n return this.gridRow;\n }\n set row(value) {\n this.gridRow = value;\n }\n /**\n * Gets or sets the `value` of the cell.\n * @private\n */\n get value() {\n return this.objectValue;\n }\n set value(value) {\n this.objectValue = value;\n if (this.objectValue instanceof PdfGrid) {\n this.row.grid.isSingleGrid = false;\n let grid = this.objectValue;\n grid.ParentCell = this;\n this.objectValue.isChildGrid = true;\n let rowCount = this.row.grid.rows.count;\n for (let i = 0; i < rowCount; i++) {\n let row = this.row.grid.rows.getRow(i);\n let colCount = row.cells.count;\n for (let j = 0; j < colCount; j++) {\n let cell = row.cells.getCell(j);\n cell.parent = this;\n }\n }\n }\n }\n /**\n * Gets or sets a value that indicates the total number of rows that cell `spans` within a PdfGrid.\n * @private\n */\n get rowSpan() {\n return this.gridRowSpan;\n }\n set rowSpan(value) {\n if (value < 1) {\n throw new Error('ArgumentException : Invalid span specified, must be greater than or equal to 1');\n }\n else {\n this.gridRowSpan = value;\n this.row.rowSpanExists = true;\n this.row.grid.hasRowSpanSpan = true;\n }\n }\n /**\n * Gets or sets the cell `style`.\n * @private\n */\n get style() {\n if (this.cellStyle == null) {\n this.cellStyle = new PdfGridCellStyle();\n }\n return this.cellStyle;\n }\n set style(value) {\n this.cellStyle = value;\n }\n /**\n * Gets the `height` of the PdfGrid cell.[Read-Only].\n * @private\n */\n get height() {\n if (this.cellHeight === 0) {\n this.cellHeight = this.measureHeight();\n }\n return this.cellHeight;\n }\n set height(value) {\n this.cellHeight = value;\n }\n /**\n * Gets or sets a value that indicates the total number of columns that cell `spans` within a PdfGrid.\n * @private\n */\n get columnSpan() {\n return this.colSpan;\n }\n set columnSpan(value) {\n if (value < 1) {\n throw Error('Invalid span specified, must be greater than or equal to 1');\n }\n else {\n this.colSpan = value;\n this.row.columnSpanExists = true;\n }\n }\n /**\n * Gets the `width` of the PdfGrid cell.[Read-Only].\n * @private\n */\n get width() {\n if (this.cellWidth === 0 || this.row.grid.isComplete) {\n this.cellWidth = this.measureWidth();\n }\n return Math.round(this.cellWidth);\n }\n set width(value) {\n this.cellWidth = value;\n }\n //Implementation\n /**\n * `Calculates the width`.\n * @private\n */\n measureWidth() {\n // .. Calculate the cell text width.\n // .....Add border widths, cell spacings and paddings to the width.\n let width = 0;\n let layouter = new PdfStringLayouter();\n if (typeof this.objectValue === 'string') {\n /* tslint:disable */\n let slr = layouter.layout(this.objectValue, this.getTextFont(), this.stringFormat, new SizeF(Number.MAX_VALUE, Number.MAX_VALUE), false, new SizeF(0, 0));\n width += slr.actualSize.width;\n width += (this.style.borders.left.width + this.style.borders.right.width) * 2;\n }\n else if (this.objectValue instanceof PdfGrid) {\n width = this.objectValue.size.width;\n //width += this.objectValue.style.cellSpacing;\n }\n else if (this.objectValue instanceof PdfImage || this.objectValue instanceof PdfBitmap) {\n width += this.objectValue.width;\n }\n else if (this.objectValue instanceof PdfTextWebLink) {\n let webLink = this.objectValue;\n let result = layouter.layout(webLink.text, webLink.font, webLink.stringFormat, new SizeF(0, 0), false, new SizeF(0, 0));\n /* tslint:enable */\n width += result.actualSize.width;\n width += (this.style.borders.left.width + this.style.borders.right.width) * 2;\n }\n if (!(this.objectValue instanceof PdfGrid)) {\n if (this.style.cellPadding != null) {\n width += (this.style.cellPadding.left + this.style.cellPadding.right);\n }\n else {\n width += (this.row.grid.style.cellPadding.left + this.row.grid.style.cellPadding.right);\n }\n }\n else {\n if (this.style.cellPadding != null || typeof this.style.cellPadding !== 'undefined') {\n if (typeof this.style.cellPadding.left !== 'undefined' && this.style.cellPadding.hasLeftPad) {\n width += this.style.cellPadding.left;\n }\n if (typeof this.style.cellPadding.right !== 'undefined' && this.style.cellPadding.hasRightPad) {\n width += this.style.cellPadding.right;\n }\n }\n else {\n if (typeof this.row.grid.style.cellPadding.left !== 'undefined' && this.row.grid.style.cellPadding.hasLeftPad) {\n width += this.row.grid.style.cellPadding.left;\n }\n if (typeof this.row.grid.style.cellPadding.right !== 'undefined' && this.row.grid.style.cellPadding.hasRightPad) {\n width += this.row.grid.style.cellPadding.right;\n }\n }\n }\n width += this.row.grid.style.cellSpacing;\n return width;\n }\n /**\n * Draw the `cell background`.\n * @private\n */\n drawCellBackground(graphics, bounds) {\n let backgroundBrush = this.getBackgroundBrush();\n //graphics.isTemplateGraphics = true;\n if (backgroundBrush != null) {\n graphics.save();\n graphics.drawRectangle(backgroundBrush, bounds.x, bounds.y, bounds.width, bounds.height);\n graphics.restore();\n }\n if (this.style.backgroundImage != null) {\n let image = this.getBackgroundImage();\n graphics.drawImage(this.style.backgroundImage, bounds.x, bounds.y, bounds.width, bounds.height);\n }\n }\n /**\n * `Adjusts the text layout area`.\n * @private\n */\n /* tslint:disable */\n adjustContentLayoutArea(bounds) {\n //Add Padding value to its Cell Bounds\n let returnBounds = new RectangleF(bounds.x, bounds.y, bounds.width, bounds.height);\n if (!(this.objectValue instanceof PdfGrid)) {\n if (typeof this.style.cellPadding === 'undefined' || this.style.cellPadding == null) {\n returnBounds.x += this.gridRow.grid.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.y += this.gridRow.grid.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.width -= (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n returnBounds.height -= (this.gridRow.grid.style.cellPadding.bottom + this.gridRow.grid.style.cellPadding.top);\n returnBounds.height -= (this.cellStyle.borders.top.width + this.cellStyle.borders.bottom.width);\n }\n else {\n returnBounds.x += this.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.y += this.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.width -= (this.style.cellPadding.right + this.style.cellPadding.left);\n returnBounds.width -= (this.cellStyle.borders.left.width + this.cellStyle.borders.right.width);\n returnBounds.height -= (this.style.cellPadding.bottom + this.style.cellPadding.top);\n returnBounds.height -= (this.cellStyle.borders.top.width + this.cellStyle.borders.bottom.width);\n if (this.rowSpan === 1) {\n returnBounds.width -= (this.style.borders.left.width);\n }\n }\n }\n else {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n if (typeof this.gridRow.grid.style.cellPadding.left !== 'undefined' && this.gridRow.grid.style.cellPadding.hasLeftPad) {\n returnBounds.x += this.gridRow.grid.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.width -= this.gridRow.grid.style.cellPadding.left;\n }\n if (typeof this.gridRow.grid.style.cellPadding.top !== 'undefined' && this.gridRow.grid.style.cellPadding.hasTopPad) {\n returnBounds.y += this.gridRow.grid.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.height -= this.gridRow.grid.style.cellPadding.top;\n }\n if (typeof this.gridRow.grid.style.cellPadding.right !== 'undefined' && this.gridRow.grid.style.cellPadding.hasRightPad) {\n returnBounds.width -= this.gridRow.grid.style.cellPadding.right;\n }\n if (typeof this.gridRow.grid.style.cellPadding.bottom !== 'undefined' && this.gridRow.grid.style.cellPadding.hasBottomPad) {\n returnBounds.height -= this.gridRow.grid.style.cellPadding.bottom;\n }\n }\n else {\n if (typeof this.style.cellPadding.left !== 'undefined' && this.style.cellPadding.hasLeftPad) {\n returnBounds.x += this.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.width -= this.style.cellPadding.left;\n }\n if (typeof this.style.cellPadding.top !== 'undefined' && this.style.cellPadding.hasTopPad) {\n returnBounds.y += this.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.height -= this.style.cellPadding.top;\n }\n if (typeof this.style.cellPadding.right !== 'undefined' && this.style.cellPadding.hasRightPad) {\n returnBounds.width -= this.style.cellPadding.right;\n }\n if (typeof this.style.cellPadding.bottom !== 'undefined' && this.style.cellPadding.hasBottomPad) {\n returnBounds.height -= this.style.cellPadding.bottom;\n }\n }\n returnBounds.width -= (this.cellStyle.borders.left.width + this.cellStyle.borders.right.width);\n returnBounds.height -= (this.cellStyle.borders.top.width + this.cellStyle.borders.bottom.width);\n }\n return returnBounds;\n }\n /**\n * `Draws` the specified graphics.\n * @private\n */\n draw(graphics, bounds, cancelSubsequentSpans) {\n let result = null;\n /*if (cancelSubsequentSpans)\n {\n //..Cancel all subsequent cell spans, if no space exists.\n let currentCellIndex : number = this.row.cells.indexOf(this);\n for (let i : number = currentCellIndex + 1; i <= currentCellIndex + this.colSpan; i++)\n {\n this.row.cells.getCell(i).isCellMergeContinue = false;\n this.row.cells.getCell(i).isRowMergeContinue = false;\n }\n this.colSpan = 1;\n }*/\n //..Skip cells which were already covered by spanmap.\n if (this.internalIsCellMergeContinue || this.internalIsRowMergeContinue) {\n if (this.internalIsCellMergeContinue && this.row.grid.style.allowHorizontalOverflow) {\n if ((this.row.rowOverflowIndex > 0 && (this.row.cells.indexOf(this) != this.row.rowOverflowIndex + 1)) || (this.row.rowOverflowIndex == 0 && this.internalIsCellMergeContinue)) {\n return result;\n }\n }\n else {\n return result;\n }\n }\n //Adjust bounds with Row and Column Spacing\n bounds = this.adjustOuterLayoutArea(bounds, graphics);\n this.drawCellBackground(graphics, bounds);\n let textPen = this.getTextPen();\n let textBrush = this.getTextBrush();\n if (typeof textPen === 'undefined' && typeof textBrush === 'undefined') {\n textBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n }\n let font = this.getTextFont();\n let strFormat = this.getStringFormat();\n let innerLayoutArea = bounds;\n if (innerLayoutArea.height >= graphics.clientSize.height) {\n // If to break row to next page.\n if (this.row.grid.allowRowBreakAcrossPages) {\n innerLayoutArea.height -= innerLayoutArea.y;\n //bounds.height -= bounds.y;\n // if(this.row.grid.isChildGrid)\n // {\n // innerLayoutArea.height -= this.row.grid.ParentCell.row.grid.style.cellPadding.bottom;\n // }\n }\n // if user choose to cut the row whose height is more than page height.\n // else\n // {\n // innerLayoutArea.height = graphics.clientSize.height;\n // bounds.height = graphics.clientSize.height;\n // }\n }\n innerLayoutArea = this.adjustContentLayoutArea(innerLayoutArea);\n if (typeof this.objectValue === 'string' || typeof this.remaining === 'string') {\n let temp;\n let layoutRectangle;\n if (innerLayoutArea.height < font.height)\n layoutRectangle = new RectangleF(innerLayoutArea.x, innerLayoutArea.y, innerLayoutArea.width, font.height);\n else\n layoutRectangle = innerLayoutArea;\n if (innerLayoutArea.height < font.height && this.row.grid.isChildGrid && this.row.grid.ParentCell != null) {\n let height = layoutRectangle.height - this.row.grid.ParentCell.row.grid.style.cellPadding.bottom - this.row.grid.style.cellPadding.bottom;\n if (this.row.grid.splitChildRowIndex != -1) {\n this.fontSpilt = true;\n this.row.rowFontSplit = true;\n }\n if (height > 0 && height < font.height)\n layoutRectangle.height = height;\n // else if (height + this.row.grid.style.cellPadding.bottom > 0 && height + this.row.grid.style.cellPadding.bottom < font.height)\n // layoutRectangle.height = height + this.row.grid.style.cellPadding.bottom;\n // else if (bounds.height < font.height)\n // layoutRectangle.height = bounds.height;\n // else if (bounds.height - this.row.grid.ParentCell.row.grid.style.cellPadding.bottom < font.height)\n // layoutRectangle.height = bounds.height - this.row.grid.ParentCell.row.grid.style.cellPadding.bottom; \n }\n if (this.gridRow.grid.style.cellSpacing != 0) {\n layoutRectangle.width -= this.gridRow.grid.style.cellSpacing;\n bounds.width -= this.gridRow.grid.style.cellSpacing;\n }\n if (this.isFinish) {\n // if (this.row.grid.splitChildRowIndex != -1 && !this.row.grid.isChildGrid && typeof this.remaining === 'undefined'){\n // this.remaining = '';\n // graphics.drawString(this.remaining, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n // } else {\n temp = this.remaining === '' ? this.remaining : this.objectValue;\n graphics.drawString(temp, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n if (this.row.grid.splitChildRowIndex != -1 && !this.row.grid.isChildGrid && typeof this.remaining === 'undefined') {\n this.remaining = '';\n //graphics.drawString(this.remaining, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n }\n }\n else {\n if (typeof this.remaining == 'undefined' || this.remaining === null) {\n this.remaining = '';\n }\n if (this.row.repeatFlag) {\n graphics.drawString(this.remaining, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n }\n // else {\n // if(this.row.grid.ParentCell.row.repeatFlag) {\n // graphics.drawString((this.remaining as string), font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat); \n // } else {\n // layoutRectangle.height = this.row.height;\n // graphics.drawString((this.objectValue as string), font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n // bounds.height = this.row.height;\n // }\n // }\n this.isFinish = true;\n //graphics.drawString((this.remaining as string), font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n }\n result = graphics.stringLayoutResult;\n // if(this.row.grid.isChildGrid && this.row.rowBreakHeight > 0 && result !=null) {\n // bounds.height -= this.row.grid.ParentCell.row.grid.style.cellPadding.bottom;\n // }\n }\n else if (this.objectValue instanceof PdfGrid) {\n let childGrid = this.objectValue;\n childGrid.isChildGrid = true;\n childGrid.ParentCell = this;\n let layoutRect;\n layoutRect = innerLayoutArea;\n if (this.gridRow.grid.style.cellSpacing != 0) {\n bounds.width -= this.gridRow.grid.style.cellSpacing;\n }\n // layoutRect = bounds;\n // if (this.style.cellPadding != null){\n // layoutRect = bounds; \n // } else if((this.row.grid.style.cellPadding != null) && (childGrid.style.cellPadding.bottom === 0.5) && (childGrid.style.cellPadding.top === 0.5)\n // && (childGrid.style.cellPadding.left === 5.76) && (childGrid.style.cellPadding.right === 5.76)\n // && (this.gridRow.grid.style.cellSpacing === 0) && (childGrid.style.cellSpacing === 0)) {\n // layoutRect = innerLayoutArea;\n // }\n // if(this.objectValue.style.cellPadding != null && typeof this.objectValue.style.cellPadding !== 'undefined'){\n // layoutRect = bounds;\n // } \n let layouter = new PdfGridLayouter(childGrid);\n let format = new PdfGridLayoutFormat();\n if (this.row.grid.LayoutFormat != null)\n format = this.row.grid.LayoutFormat;\n else\n format.layout = PdfLayoutType.Paginate;\n let param = new PdfLayoutParams();\n if (graphics.layer != null) {\n // Define layout parameters.\n param.page = graphics.page;\n param.bounds = layoutRect;\n param.format = format;\n //Set the span \n childGrid.setSpan();\n childGrid.checkSpan();\n // Draw the child grid.\n let childGridResult = layouter.Layouter(param);\n //let childGridResult : PdfLayoutResult = layouter.innerLayout(param);\n this.value = childGrid;\n if (this.row.grid.splitChildRowIndex !== -1) {\n this.height = this.row.rowBreakHeightValue;\n }\n if (param.page != childGridResult.page) //&& (isWidthGreaterthanParent != true))\n {\n childGridResult.bounds.height = this.row.rowBreakHeightValue;\n if (this.row.rowBreakHeight == 0)\n this.row.NestedGridLayoutResult = childGridResult;\n else\n this.row.rowBreakHeight = this.row.rowBreakHeightValue;\n //bounds.height = this.row.rowBreakHeight;\n //After drawing paginated nested grid, the bounds of the parent grid in start page should be corrected for borders.\n //bounds.height = graphics.clientSize.height - bounds.y;\n }\n }\n }\n else if (this.objectValue instanceof PdfImage || this.objectValue instanceof PdfBitmap) {\n let imageBounds;\n if (this.objectValue.width <= innerLayoutArea.width) {\n imageBounds = new RectangleF(innerLayoutArea.x, innerLayoutArea.y, this.objectValue.width, innerLayoutArea.height);\n }\n else {\n imageBounds = innerLayoutArea;\n }\n graphics.drawImage(this.objectValue, imageBounds.x, imageBounds.y, imageBounds.width, imageBounds.height);\n }\n else if (this.objectValue instanceof PdfTextWebLink) {\n this.objectValue.draw(graphics.currentPage, innerLayoutArea);\n }\n else if (typeof this.objectValue === 'undefined') {\n this.objectValue = \"\";\n graphics.drawString(this.objectValue, font, textPen, textBrush, innerLayoutArea.x, innerLayoutArea.y, innerLayoutArea.width, innerLayoutArea.height, strFormat);\n if (this.style.cellPadding != null && this.style.cellPadding.bottom == 0 && this.style.cellPadding.left == 0 && this.style.cellPadding.right == 0 && this.style.cellPadding.top == 0) {\n bounds.width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n if (this.gridRow.grid.style.cellSpacing != 0) {\n bounds.width -= this.gridRow.grid.style.cellSpacing;\n }\n }\n if (this.style.borders != null) {\n if (!this.fontSpilt)\n this.drawCellBorders(graphics, bounds);\n else {\n if (this.row.grid.ParentCell.row.grid.splitChildRowIndex != -1) {\n this.row.rowFontSplit = false;\n this.drawCellBorders(graphics, bounds);\n }\n }\n }\n return result;\n }\n /* tslint:enable */\n /**\n * Draws the `cell border` constructed by drawing lines.\n * @private\n */\n drawCellBorders(graphics, bounds) {\n if (this.row.grid.style.borderOverlapStyle === PdfBorderOverlapStyle.Inside) {\n bounds.x += this.style.borders.left.width;\n bounds.y += this.style.borders.top.width;\n bounds.width -= this.style.borders.right.width;\n bounds.height -= this.style.borders.bottom.width;\n }\n let p1 = new PointF(bounds.x, bounds.y + bounds.height);\n let p2 = new PointF(bounds.x, bounds.y);\n let pen = this.cellStyle.borders.left;\n if (this.cellStyle.borders.left.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n // SetTransparency(ref graphics, pen);\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n p1 = new PointF(bounds.x + bounds.width, bounds.y);\n p2 = new PointF(bounds.x + bounds.width, bounds.y + bounds.height);\n pen = this.cellStyle.borders.right;\n if ((bounds.x + bounds.width) > (graphics.clientSize.width - (pen.width / 2))) {\n p1 = new PointF(graphics.clientSize.width - (pen.width / 2), bounds.y);\n p2 = new PointF(graphics.clientSize.width - (pen.width / 2), bounds.y + bounds.height);\n }\n if (this.cellStyle.borders.right.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n p1 = new PointF(bounds.x, bounds.y);\n p2 = new PointF(bounds.x + bounds.width, bounds.y);\n pen = this.cellStyle.borders.top;\n if (this.cellStyle.borders.top.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n p1 = new PointF(bounds.x + bounds.width, bounds.y + bounds.height);\n p2 = new PointF(bounds.x, bounds.y + bounds.height);\n pen = this.cellStyle.borders.bottom;\n if ((bounds.y + bounds.height) > (graphics.clientSize.height - (pen.width / 2))) {\n p1 = new PointF((bounds.x + bounds.width), (graphics.clientSize.height - (pen.width / 2)));\n p2 = new PointF(bounds.x, (graphics.clientSize.height - (pen.width / 2)));\n }\n if (this.cellStyle.borders.bottom.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n }\n // private setTransparency(graphics : PdfGraphics, pen : PdfPen) : void {\n // let alpha : number = (pen.color.a / 255)as number;\n // graphics.save();\n // graphics.setTransparency(alpha);\n // }\n /**\n * `Adjusts the outer layout area`.\n * @private\n */\n /* tslint:disable */\n adjustOuterLayoutArea(bounds, g) {\n let isHeader = false;\n let cellSpacing = this.row.grid.style.cellSpacing;\n if (cellSpacing > 0) {\n bounds = new RectangleF(bounds.x + cellSpacing, bounds.y + cellSpacing, bounds.width - cellSpacing, bounds.height - cellSpacing);\n }\n let currentColIndex = this.row.cells.indexOf(this);\n if (this.columnSpan > 1 || (this.row.rowOverflowIndex > 0 && (currentColIndex == this.row.rowOverflowIndex + 1) && this.isCellMergeContinue)) {\n let span = this.columnSpan;\n if (span == 1 && this.isCellMergeContinue) {\n for (let j = currentColIndex + 1; j < this.row.grid.columns.count; j++) {\n if (this.row.cells.getCell(j).isCellMergeContinue)\n span++;\n else\n break;\n }\n }\n let totalWidth = 0;\n for (let i = currentColIndex; i < currentColIndex + span; i++) {\n if (this.row.grid.style.allowHorizontalOverflow) {\n let width;\n let compWidth = this.row.grid.size.width < g.clientSize.width ? this.row.grid.size.width : g.clientSize.width;\n if (this.row.grid.size.width > g.clientSize.width) {\n width = bounds.x + totalWidth + this.row.grid.columns.getColumn(i).width;\n }\n else {\n width = totalWidth + this.row.grid.columns.getColumn(i).width;\n }\n if (width > compWidth) {\n break;\n }\n }\n totalWidth += this.row.grid.columns.getColumn(i).width;\n }\n totalWidth -= this.row.grid.style.cellSpacing;\n bounds.width = totalWidth;\n }\n if (this.rowSpan > 1 || this.row.rowSpanExists) {\n let span = this.rowSpan;\n let currentRowIndex = this.row.grid.rows.rowCollection.indexOf(this.row);\n if (currentRowIndex == -1) {\n currentRowIndex = this.row.grid.headers.indexOf(this.row);\n if (currentRowIndex != -1) {\n isHeader = true;\n }\n }\n // if (span == 1 && this.isCellMergeContinue) {\n // for (let j : number = currentRowIndex + 1; j < this.row.grid.rows.count; j++)\n // {\n // let flag : boolean = (isHeader ? this.row.grid.headers.getHeader(j).cells.getCell(currentColIndex).isCellMergeContinue : this.row.grid.rows.getRow(j).cells.getCell(currentColIndex).isCellMergeContinue);\n // if (flag)\n // span++;\n // else\n // break;\n // }\n // }\n let totalHeight = 0;\n for (let i = currentRowIndex; i < currentRowIndex + span; i++) {\n totalHeight += (isHeader ? this.row.grid.headers.getHeader(i).height : this.row.grid.rows.getRow(i).height);\n let row = this.row.grid.rows.getRow(i);\n let rowIndex = this.row.grid.rows.rowCollection.indexOf(row);\n /*if (this.rowSpan > 1)\n {\n for (let k : number = 0; k < this.row.cells.count; k++) {\n let cell : PdfGridCell = this.row.cells.getCell(k);\n if(cell.rowSpan>1)\n {\n let tempHeight : number =0;\n \n for (let j :number = i; j < i +cell.rowSpan; j++)\n {\n if (!this.row.grid.rows.getRow(j).isRowSpanRowHeightSet)\n this.row.grid.rows.getRow(j).isRowHeightSet = false;\n tempHeight += this.row.grid.rows.getRow(j).height;\n if (!this.row.grid.rows.getRow(j).isRowSpanRowHeightSet)\n this.row.grid.rows.getRow(j).isRowHeightSet = true;\n }\n //To check the Row spanned cell height is greater than the total spanned row height.\n if(cell.height>tempHeight)\n {\n if (max < (cell.height - tempHeight))\n {\n max = cell.height - tempHeight;\n if (this.rowSpanRemainingHeight != 0 && max > this.rowSpanRemainingHeight)\n {\n max += this.rowSpanRemainingHeight;\n }\n let index :number = row.cells.indexOf(cell);\n //set the m_rowspanRemainingHeight to last rowspanned row.\n this.row.grid.rows.getRow((rowIndex +cell.rowSpan) - 1).cells.getCell(index).rowSpanRemainingHeight = max;\n this.rowSpanRemainingHeight = this.row.grid.rows.getRow((rowIndex + cell.rowSpan) - 1).cells.getCell(index).rowSpanRemainingHeight;\n }\n }\n }\n }\n }\n if (!this.row.grid.rows.getRow(i).isRowSpanRowHeightSet)\n this.row.grid.rows.getRow(i).isRowHeightSet = true;*/\n }\n let cellIndex = this.row.cells.indexOf(this);\n totalHeight -= this.row.grid.style.cellSpacing;\n // if (this.row.cells.getCell(cellIndex).height > totalHeight && (!this.row.grid.rows.getRow((currentRowIndex + span) - 1).isRowHeightSet)) {\n // this.row.grid.rows.getRow((currentRowIndex + span) - 1).cells.getCell(cellIndex).rowSpanRemainingHeight = this.row.cells.getCell(cellIndex).height - totalHeight;\n // totalHeight = this.row.cells.getCell(cellIndex).height;\n // bounds.height = totalHeight;\n // } else {\n bounds.height = totalHeight;\n // }\n if (!this.row.rowMergeComplete) {\n bounds.height = totalHeight;\n }\n }\n return bounds;\n }\n /* tslint:enable */\n /**\n * Gets the `text font`.\n * @private\n */\n getTextFont() {\n if (typeof this.style.font !== 'undefined' && this.style.font != null) {\n return this.style.font;\n }\n else if (typeof this.row.style.font !== 'undefined' && this.row.style.font != null) {\n return this.row.style.font;\n }\n else if (typeof this.row.grid.style.font !== 'undefined' && this.row.grid.style.font != null) {\n return this.row.grid.style.font;\n }\n else {\n return PdfDocument.defaultFont;\n }\n }\n /**\n * Gets the `text brush`.\n * @private\n */\n getTextBrush() {\n if (typeof this.style.textBrush !== 'undefined' && this.style.textBrush != null) {\n return this.style.textBrush;\n }\n else if (typeof this.row.style.textBrush !== 'undefined' && this.row.style.textBrush != null) {\n return this.row.style.textBrush;\n }\n else {\n return this.row.grid.style.textBrush;\n }\n }\n /**\n * Gets the `text pen`.\n * @private\n */\n getTextPen() {\n if (typeof this.style.textPen !== 'undefined' && this.style.textPen != null) {\n return this.style.textPen;\n }\n else if (typeof this.row.style.textPen !== 'undefined' && this.row.style.textPen != null) {\n return this.row.style.textPen;\n }\n else {\n return this.row.grid.style.textPen;\n }\n }\n /**\n * Gets the `background brush`.\n * @private\n */\n getBackgroundBrush() {\n if (typeof this.style.backgroundBrush !== 'undefined' && this.style.backgroundBrush != null) {\n return this.style.backgroundBrush;\n }\n else if (typeof this.row.style.backgroundBrush !== 'undefined' && this.row.style.backgroundBrush != null) {\n return this.row.style.backgroundBrush;\n }\n else {\n return this.row.grid.style.backgroundBrush;\n }\n }\n /**\n * Gets the `background image`.\n * @private\n */\n getBackgroundImage() {\n if (typeof this.style.backgroundImage !== 'undefined' && this.style.backgroundImage != null) {\n return this.style.backgroundImage;\n }\n else if (typeof this.row.style.backgroundImage !== 'undefined' && this.row.style.backgroundImage != null) {\n return this.row.style.backgroundImage;\n }\n else {\n return this.row.grid.style.backgroundImage;\n }\n }\n /**\n * Gets the current `StringFormat`.\n * @private\n */\n getStringFormat() {\n if (typeof this.style.stringFormat !== 'undefined' && this.style.stringFormat != null) {\n return this.style.stringFormat;\n }\n else {\n return this.stringFormat;\n }\n }\n /**\n * Calculates the `height`.\n * @private\n */\n measureHeight() {\n // .. Calculate the cell text height.\n // .....Add border widths, cell spacings and paddings to the height.\n let width = this.calculateWidth();\n // //check whether the Current PdfGridCell has padding\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n width -= (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n //width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n else {\n width -= (this.style.cellPadding.right + this.style.cellPadding.left);\n width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n let height = 0;\n let layouter = new PdfStringLayouter();\n if (typeof this.objectValue === 'string' || typeof this.remaining === 'string') {\n let currentValue = this.objectValue;\n /* tslint:disable */\n if (!this.isFinish)\n currentValue = !(this.remaining === null || this.remaining === '' ||\n typeof this.remaining === 'undefined') ? this.remaining : this.objectValue;\n let slr = null;\n let cellIndex = this.row.cells.indexOf(this);\n if (this.gridRow.grid.style.cellSpacing != 0) {\n width -= this.gridRow.grid.style.cellSpacing * 2;\n }\n if (!this.row.cells.getCell(cellIndex).hasColSpan && !this.row.cells.getCell(cellIndex).hasRowSpan) {\n if (this.gridRow.grid.isChildGrid) {\n if (width < 0) {\n this.tempval = width;\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n this.tempval += (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n }\n else {\n this.tempval += (this.style.cellPadding.right + this.style.cellPadding.left);\n this.tempval += (this.style.borders.left.width + this.style.borders.right.width);\n }\n }\n else {\n this.tempval = width;\n }\n slr = layouter.layout(currentValue, this.getTextFont(), this.stringFormat, new SizeF(this.tempval, 0), false, new SizeF(0, 0));\n height += slr.actualSize.height;\n }\n else {\n slr = layouter.layout(currentValue, this.getTextFont(), this.stringFormat, new SizeF(width, 0), false, new SizeF(0, 0));\n height += slr.actualSize.height;\n }\n }\n /* tslint:enable */\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n else if (this.objectValue instanceof PdfGrid) {\n let cellIndex = this.row.cells.indexOf(this);\n let internalWidth = 0;\n if ((this.style.cellPadding != null || typeof this.style.cellPadding !== 'undefined')) {\n internalWidth = this.calculateWidth();\n if (typeof this.style.cellPadding.left !== 'undefined' && this.style.cellPadding.hasLeftPad) {\n internalWidth -= this.style.cellPadding.left;\n }\n if (typeof this.style.cellPadding.right !== 'undefined' && this.style.cellPadding.hasRightPad) {\n internalWidth -= this.style.cellPadding.right;\n }\n }\n else if ((this.row.grid.style.cellPadding != null || typeof this.row.grid.style.cellPadding !== 'undefined')) {\n internalWidth = this.calculateWidth();\n if (typeof this.row.grid.style.cellPadding.left !== 'undefined' && this.row.grid.style.cellPadding.hasLeftPad) {\n internalWidth -= this.row.grid.style.cellPadding.left;\n }\n if (typeof this.row.grid.style.cellPadding.right !== 'undefined' && this.row.grid.style.cellPadding.hasRightPad) {\n internalWidth -= this.row.grid.style.cellPadding.right;\n }\n }\n else {\n internalWidth = this.calculateWidth();\n }\n this.objectValue.tempWidth = internalWidth;\n if (!this.row.cells.getCell(cellIndex).hasColSpan && !this.row.cells.getCell(cellIndex).hasRowSpan) {\n height = this.objectValue.size.height;\n }\n else {\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n if (this.gridRow.grid.style.cellSpacing !== 0) {\n width -= this.gridRow.grid.style.cellSpacing * 2;\n //height += (this.row.grid.style.cellPadding.top + this.row.grid.style.cellPadding.bottom);\n }\n if (this.style.cellPadding != null || typeof this.style.cellPadding !== 'undefined') {\n if (typeof this.row.grid.style.cellPadding.top !== 'undefined' && this.row.grid.style.cellPadding.hasTopPad) {\n height += this.row.grid.style.cellPadding.top;\n }\n if (this.row.grid.style.cellPadding.hasBottomPad && typeof this.row.grid.style.cellPadding.bottom !== 'undefined') {\n height += this.row.grid.style.cellPadding.bottom;\n }\n }\n height += this.objectValue.style.cellSpacing;\n }\n else if (this.objectValue instanceof PdfImage || this.objectValue instanceof PdfBitmap) {\n height += this.objectValue.height;\n }\n else if (this.objectValue instanceof PdfTextWebLink) {\n let webLink = this.objectValue;\n /* tslint:disable */\n let slr = layouter.layout(webLink.text, webLink.font, webLink.stringFormat, new SizeF(width, 0), false, new SizeF(0, 0));\n /* tslint:enable */\n height += slr.actualSize.height;\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n else if (typeof this.objectValue === 'undefined') {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n width -= (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n }\n else {\n width -= (this.style.cellPadding.right + this.style.cellPadding.left);\n width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n //Add padding top and bottom value to height\n if (!(this.objectValue instanceof PdfGrid)) {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n height += (this.row.grid.style.cellPadding.top + this.row.grid.style.cellPadding.bottom);\n }\n else {\n height += (this.style.cellPadding.top + this.style.cellPadding.bottom);\n }\n }\n else {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n if (typeof this.row.grid.style.cellPadding.top !== 'undefined' && this.row.grid.style.cellPadding.hasTopPad) {\n height += this.row.grid.style.cellPadding.top;\n }\n if (typeof this.row.grid.style.cellPadding.bottom !== 'undefined' && this.row.grid.style.cellPadding.hasBottomPad) {\n height += this.row.grid.style.cellPadding.bottom;\n }\n }\n else {\n if (typeof this.style.cellPadding.top !== 'undefined' && this.style.cellPadding.hasTopPad) {\n height += this.style.cellPadding.top;\n }\n if (typeof this.style.cellPadding.bottom !== 'undefined' && this.style.cellPadding.hasBottomPad) {\n height += this.style.cellPadding.bottom;\n }\n }\n }\n height += this.row.grid.style.cellSpacing;\n return height;\n }\n /**\n * return the calculated `width` of the cell.\n * @private\n */\n calculateWidth() {\n let cellIndex = this.row.cells.indexOf(this);\n let rowindex = this.row.grid.rows.rowCollection.indexOf(this.row);\n let columnSpan = this.columnSpan;\n let width = 0;\n if (columnSpan === 1) {\n for (let i = 0; i < columnSpan; i++) {\n width += this.row.grid.columns.getColumn(cellIndex + i).width;\n }\n }\n else if (columnSpan > 1) {\n for (let i = 0; i < columnSpan; i++) {\n width += this.row.grid.columns.getColumn(cellIndex + i).width;\n if ((i + 1) < columnSpan) {\n this.row.cells.getCell(cellIndex + i + 1).hasColSpan = true;\n }\n }\n }\n if (this.parent != null && this.parent.row.width > 0) {\n if ((this.row.grid.isChildGrid) && this.parent != null && (this.row.width > this.parent.row.width)) {\n width = 0;\n for (let j = 0; j < this.parent.columnSpan; j++) {\n width += this.parent.row.grid.columns.getColumn(j).width;\n }\n width = width / this.row.cells.count;\n }\n }\n return width;\n }\n}\n/**\n * `PdfGridCellCollection` class provides access to an ordered,\n * strongly typed collection of 'PdfGridCell' objects.\n * @private\n */\nclass PdfGridCellCollection {\n //Constructor\n /**\n * Initializes a new instance of the `PdfGridCellCollection` class with the row.\n * @private\n */\n constructor(row) {\n /**\n * @hidden\n * @private\n */\n this.cells = [];\n this.gridRow = row;\n }\n //Properties\n /**\n * Gets the current `cell`.\n * @private\n */\n getCell(index) {\n if (index < 0 || index >= this.count) {\n throw new Error('IndexOutOfRangeException');\n }\n return this.cells[index];\n }\n /**\n * Gets the cells `count`.[Read-Only].\n * @private\n */\n get count() {\n return this.cells.length;\n }\n add(cell) {\n if (typeof cell === 'undefined') {\n let tempcell = new PdfGridCell();\n this.add(tempcell);\n return cell;\n }\n else {\n cell.row = this.gridRow;\n this.cells.push(cell);\n }\n }\n /**\n * Returns the `index of` a particular cell in the collection.\n * @private\n */\n indexOf(cell) {\n return this.cells.indexOf(cell);\n }\n}\n\n/**\n * `PdfGridColumn` class represents the schema of a column in a 'PdfGrid'.\n */\nclass PdfGridColumn {\n //Constructors\n /**\n * Initializes a new instance of the `PdfGridColumn` class with the parent grid.\n * @private\n */\n constructor(grid) {\n /**\n * The `width` of the column.\n * @default 0\n * @private\n */\n this.columnWidth = 0;\n this.grid = grid;\n }\n /**\n * Gets or sets the `width` of the 'PdfGridColumn'.\n * @private\n */\n get width() {\n return this.columnWidth;\n }\n set width(value) {\n this.isCustomWidth = true;\n this.columnWidth = value;\n }\n /**\n * Gets or sets the information about the text `formatting`.\n * @private\n */\n get format() {\n if (this.stringFormat == null) {\n this.stringFormat = new PdfStringFormat(); //GetDefaultFormat();\n }\n return this.stringFormat;\n }\n set format(value) {\n this.stringFormat = value;\n }\n}\n/**\n * `PdfGridColumnCollection` class provides access to an ordered,\n * strongly typed collection of 'PdfGridColumn' objects.\n * @private\n */\nclass PdfGridColumnCollection {\n //properties\n //Constructors\n /**\n * Initializes a new instance of the `PdfGridColumnCollection` class with the parent grid.\n * @private\n */\n constructor(grid) {\n /**\n * @hidden\n * @private\n */\n this.internalColumns = [];\n /**\n * @hidden\n * @private\n */\n this.columnWidth = 0;\n this.grid = grid;\n this.internalColumns = [];\n }\n //Iplementation\n /**\n * `Add` a new column to the 'PdfGrid'.\n * @private\n */\n add(count) {\n // public add(column : PdfGridColumn) : void\n // public add(arg : number|PdfGridColumn) : void {\n // if (typeof arg === 'number') {\n for (let i = 0; i < count; i++) {\n this.internalColumns.push(new PdfGridColumn(this.grid));\n for (let index = 0; index < this.grid.rows.count; index++) {\n let row = this.grid.rows.getRow(index);\n let cell = new PdfGridCell();\n cell.value = '';\n row.cells.add(cell);\n }\n }\n // } else {\n // let column : PdfGridColumn = new PdfGridColumn(this.grid);\n // this.columns.push(column);\n // return column;\n // }\n }\n /**\n * Gets the `number of columns` in the 'PdfGrid'.[Read-Only].\n * @private\n */\n get count() {\n return this.internalColumns.length;\n }\n /**\n * Gets the `widths`.\n * @private\n */\n get width() {\n if (this.columnWidth === 0) {\n this.columnWidth = this.measureColumnsWidth();\n }\n if (this.grid.initialWidth !== 0 && this.columnWidth !== this.grid.initialWidth && !this.grid.style.allowHorizontalOverflow) {\n this.columnWidth = this.grid.initialWidth;\n this.grid.isPageWidth = true;\n }\n return this.columnWidth;\n }\n /**\n * Gets the `array of PdfGridColumn`.[Read-Only]\n * @private\n */\n get columns() {\n return this.internalColumns;\n }\n /**\n * Gets the `PdfGridColumn` from the specified index.[Read-Only]\n * @private\n */\n getColumn(index) {\n if (index >= 0 && index <= this.columns.length) {\n return this.columns[index];\n }\n else {\n throw Error('can not get the column from the index: ' + index);\n }\n }\n //Implementation\n /**\n * `Calculates the column widths`.\n * @private\n */\n measureColumnsWidth() {\n let totalWidth = 0;\n this.grid.measureColumnsWidth();\n for (let i = 0, count = this.internalColumns.length; i < count; i++) {\n totalWidth += this.internalColumns[i].width;\n }\n return totalWidth;\n }\n /**\n * Gets the `widths of the columns`.\n * @private\n */\n getDefaultWidths(totalWidth) {\n let widths = [];\n let subFactor = this.count;\n for (let i = 0; i < this.count; i++) {\n if (this.grid.isPageWidth && totalWidth >= 0 && !this.internalColumns[i].isCustomWidth) {\n this.internalColumns[i].width = 0;\n }\n else {\n widths[i] = this.internalColumns[i].width;\n if (this.internalColumns[i].width > 0 && this.internalColumns[i].isCustomWidth) {\n totalWidth -= this.internalColumns[i].width;\n subFactor--;\n }\n else {\n widths[i] = 0;\n }\n }\n }\n for (let i = 0; i < this.count; i++) {\n let width = totalWidth / subFactor;\n if (widths[i] <= 0) {\n widths[i] = width;\n }\n }\n return widths;\n }\n}\n\n/**\n * `PdfGridRow` class provides customization of the settings for the particular row.\n */\nclass PdfGridRow {\n //Constructor\n /**\n * Initializes a new instance of the `PdfGridRow` class with the parent grid.\n * @private\n */\n constructor(grid) {\n /**\n * Stores the index of the overflowing row.\n * @private\n */\n this.gridRowOverflowIndex = 0;\n /**\n * The `height` of the row.\n * @private\n */\n this.rowHeight = 0;\n /**\n * The `width` of the row.\n * @private\n */\n this.rowWidth = 0;\n /**\n * The `isFinish` of the row.\n * @private\n */\n this.isrowFinish = false;\n /**\n * Check whether the Row span row height `is set explicitly`.\n * @default false\n * @public\n */\n this.isRowSpanRowHeightSet = false;\n /**\n * The `page count` of the row.\n * @public\n */\n this.noOfPageCount = 0;\n /**\n * Check whether the row height `is set explicitly`.\n * @default false\n * @private\n */\n this.isRowHeightSet = false;\n this.isPageBreakRowSpanApplied = false;\n /**\n * Check weather the row merge `is completed` or not.\n * @default true\n * @private\n */\n this.isRowMergeComplete = true;\n this.repeatFlag = false;\n this.rowFontSplit = false;\n this.pdfGrid = grid;\n }\n //Properties\n /**\n * Gets or sets a value indicating [`row span exists`].\n * @private\n */\n get rowSpanExists() {\n return this.bRowSpanExists;\n }\n set rowSpanExists(value) {\n this.bRowSpanExists = value;\n }\n /**\n * Gets the `cells` from the selected row.[Read-Only].\n * @private\n */\n get cells() {\n if (this.gridCells == null) {\n this.gridCells = new PdfGridCellCollection(this);\n }\n return this.gridCells;\n }\n /**\n * Gets or sets the parent `grid`.\n * @private\n */\n get grid() {\n return this.pdfGrid;\n }\n set grid(value) {\n this.pdfGrid = value;\n }\n /**\n * Gets or sets the row `style`.\n * @private\n */\n get style() {\n if (typeof this.rowStyle === 'undefined') {\n this.rowStyle = new PdfGridRowStyle();\n this.rowStyle.setParent(this);\n }\n return this.rowStyle;\n }\n set style(value) {\n this.rowStyle = value;\n for (let i = 0; i < this.cells.count; i++) {\n this.cells.getCell(i).style.borders = value.border;\n if (typeof value.font !== 'undefined') {\n this.cells.getCell(i).style.font = value.font;\n }\n if (typeof value.backgroundBrush !== 'undefined') {\n this.cells.getCell(i).style.backgroundBrush = value.backgroundBrush;\n }\n if (typeof value.backgroundImage !== 'undefined') {\n this.cells.getCell(i).style.backgroundImage = value.backgroundImage;\n }\n if (typeof value.textBrush !== 'undefined') {\n this.cells.getCell(i).style.textBrush = value.textBrush;\n }\n if (typeof value.textPen !== 'undefined') {\n this.cells.getCell(i).style.textPen = value.textPen;\n }\n }\n }\n /**\n * `Height` of the row yet to be drawn after split.\n * @private\n */\n get rowBreakHeight() {\n if (typeof this.gridRowBreakHeight === 'undefined') {\n this.gridRowBreakHeight = 0;\n }\n return this.gridRowBreakHeight;\n }\n set rowBreakHeight(value) {\n this.gridRowBreakHeight = value;\n }\n /**\n * `over flow index` of the row.\n * @private\n */\n get rowOverflowIndex() {\n return this.gridRowOverflowIndex;\n }\n set rowOverflowIndex(value) {\n this.gridRowOverflowIndex = value;\n }\n /**\n * Gets or sets the `height` of the row.\n * @private\n */\n get height() {\n if (!this.isRowHeightSet) {\n this.rowHeight = this.measureHeight();\n }\n return this.rowHeight;\n }\n set height(value) {\n this.rowHeight = value;\n this.isRowHeightSet = true;\n }\n /**\n * Gets or sets the `width` of the row.\n * @private\n */\n get width() {\n if (this.rowWidth === 0 || typeof this.rowWidth === 'undefined') {\n this.rowWidth = this.measureWidth();\n }\n return this.rowWidth;\n }\n /**\n * Gets or sets the row `Nested grid Layout Result`.\n * @private\n */\n get NestedGridLayoutResult() {\n return this.gridResult;\n }\n set NestedGridLayoutResult(value) {\n this.gridResult = value;\n }\n /**\n * Gets or sets a value indicating [`column span exists`].\n * @private\n */\n get columnSpanExists() {\n return this.bColumnSpanExists;\n }\n set columnSpanExists(value) {\n this.bColumnSpanExists = value;\n }\n /**\n * Check whether the Row `has row span or row merge continue`.\n * @private\n */\n get rowMergeComplete() {\n return this.isRowMergeComplete;\n }\n set rowMergeComplete(value) {\n this.isRowMergeComplete = value;\n }\n /**\n * Returns `index` of the row.\n * @private\n */\n get rowIndex() {\n return this.grid.rows.rowCollection.indexOf(this);\n }\n //Implementation\n /**\n * `Calculates the height`.\n * @private\n */\n measureHeight() {\n let rowSpanRemainingHeight = 0;\n let rowHeight;\n let maxHeight = 0;\n if (this.cells.getCell(0).rowSpan > 1) {\n rowHeight = 0;\n }\n else {\n rowHeight = this.cells.getCell(0).height;\n }\n for (let i = 0; i < this.cells.count; i++) {\n let cell = this.cells.getCell(i);\n //get the maximum rowspan remaining height.\n if (cell.rowSpanRemainingHeight > rowSpanRemainingHeight) {\n rowSpanRemainingHeight = cell.rowSpanRemainingHeight;\n }\n //skip the cell if row spanned.\n // if (cell.isRowMergeContinue) {\n // continue;\n // }\n // if (!cell.isRowMergeContinue) {\n // this.rowMergeComplete = false;\n // }\n this.rowMergeComplete = false;\n if (cell.rowSpan > 1) {\n let cellIn = i;\n let rowin = this.grid.rows.rowCollection.indexOf(this);\n for (let j = 0; j < cell.rowSpan; j++) {\n if ((j + 1) < cell.rowSpan) {\n this.grid.rows.getRow(rowin + j + 1).cells.getCell(cellIn).hasRowSpan = true;\n }\n }\n if (maxHeight < cell.height) {\n maxHeight = cell.height;\n }\n continue;\n }\n rowHeight = Math.max(rowHeight, cell.height);\n }\n if (maxHeight > rowHeight) {\n rowHeight = maxHeight;\n }\n if (rowHeight === 0) {\n rowHeight = maxHeight;\n }\n else if (rowSpanRemainingHeight > 0) {\n rowHeight += rowSpanRemainingHeight;\n }\n return rowHeight;\n }\n measureWidth() {\n let rowWid = 0;\n for (let i = 0; i < this.grid.columns.count; i++) {\n let column = this.grid.columns.getColumn(i);\n rowWid += column.width;\n }\n return rowWid;\n }\n}\n/**\n * `PdfGridRowCollection` class provides access to an ordered, strongly typed collection of 'PdfGridRow' objects.\n * @private\n */\nclass PdfGridRowCollection {\n // Constructor\n /**\n * Initializes a new instance of the `PdfGridRowCollection` class with the parent grid.\n * @private\n */\n constructor(grid) {\n this.rows = [];\n this.grid = grid;\n }\n //Properties\n /**\n * Gets the number of header in the `PdfGrid`.[Read-Only].\n * @private\n */\n get count() {\n return this.rows.length;\n }\n //Implementation\n /**\n * Return the row collection of the `grid`.\n * @private\n */\n get rowCollection() {\n return this.rows;\n }\n addRow(arg) {\n if (typeof arg === 'undefined') {\n let temprow = new PdfGridRow(this.grid);\n this.addRow(temprow);\n return temprow;\n }\n else {\n arg.style.setBackgroundBrush(this.grid.style.backgroundBrush);\n arg.style.setFont(this.grid.style.font);\n arg.style.setTextBrush(this.grid.style.textBrush);\n arg.style.setTextPen(this.grid.style.textPen);\n if (arg.cells.count === 0) {\n for (let i = 0; i < this.grid.columns.count; i++) {\n arg.cells.add(new PdfGridCell());\n }\n }\n this.rows.push(arg);\n }\n }\n /**\n * Return the row by index.\n * @private\n */\n getRow(index) {\n return this.rows[index];\n }\n}\n/**\n * `PdfGridHeaderCollection` class provides customization of the settings for the header.\n * @private\n */\nclass PdfGridHeaderCollection {\n //constructor\n /**\n * Initializes a new instance of the `PdfGridHeaderCollection` class with the parent grid.\n * @private\n */\n constructor(grid) {\n /**\n * The array to store the `rows` of the grid header.\n * @private\n */\n this.rows = [];\n this.grid = grid;\n this.rows = [];\n }\n //Properties\n /**\n * Gets a 'PdfGridRow' object that represents the `header` row in a 'PdfGridHeaderCollection' control.[Read-Only].\n * @private\n */\n getHeader(index) {\n // if (index < 0 || index >= Count) {\n // throw new IndexOutOfRangeException();\n // }\n return (this.rows[index]);\n }\n /**\n * Gets the `number of header` in the 'PdfGrid'.[Read-Only]\n * @private\n */\n get count() {\n return this.rows.length;\n }\n add(arg) {\n if (typeof arg === 'number') {\n let row;\n for (let i = 0; i < arg; i++) {\n row = new PdfGridRow(this.grid);\n for (let j = 0; j < this.grid.columns.count; j++) {\n row.cells.add(new PdfGridCell());\n }\n this.rows.push(row);\n }\n return this.rows;\n }\n else {\n this.rows.push(arg);\n }\n }\n indexOf(row) {\n return this.rows.indexOf(row);\n }\n}\n\n/**\n * PdfGrid.ts class for EJ2-PDF\n */\nclass PdfGrid extends PdfLayoutElement {\n //constructor\n /**\n * Initialize a new instance for `PdfGrid` class.\n * @private\n */\n constructor() {\n super();\n /**\n * @hidden\n * @private\n */\n this.gridSize = new SizeF(0, 0);\n /**\n * Check the child grid is ' split or not'\n */\n this.isGridSplit = false;\n /**\n * @hidden\n * @private\n */\n this.isRearranged = false;\n /**\n * @hidden\n * @private\n */\n this.pageBounds = new RectangleF();\n /**\n * @hidden\n * @private\n */\n this.listOfNavigatePages = [];\n /**\n * @hidden\n * @private\n */\n this.parentCellIndex = 0;\n this.tempWidth = 0;\n /**\n * @hidden\n * @private\n */\n this.breakRow = true;\n this.splitChildRowIndex = -1;\n /**\n * The event raised on `begin cell lay outing`.\n * @event\n * @private\n */\n //public beginPageLayout : Function;\n /**\n * The event raised on `end cell lay outing`.\n * @event\n * @private\n */\n //public endPageLayout : Function;\n this.hasRowSpanSpan = false;\n this.hasColumnSpan = false;\n this.isSingleGrid = true;\n }\n //Properties\n /**\n * Gets a value indicating whether the `start cell layout event` should be raised.\n * @private\n */\n get raiseBeginCellDraw() {\n return (typeof this.beginCellDraw !== 'undefined' && typeof this.beginCellDraw !== null);\n }\n /**\n * Gets a value indicating whether the `end cell layout event` should be raised.\n * @private\n */\n get raiseEndCellDraw() {\n return (typeof this.endCellDraw !== 'undefined' && typeof this.endCellDraw !== null);\n }\n /**\n * Gets or sets a value indicating whether to `repeat header`.\n * @private\n */\n get repeatHeader() {\n if (this.bRepeatHeader == null || typeof this.bRepeatHeader === 'undefined') {\n this.bRepeatHeader = false;\n }\n return this.bRepeatHeader;\n }\n set repeatHeader(value) {\n this.bRepeatHeader = value;\n }\n /**\n * Gets or sets a value indicating whether to split or cut rows that `overflow a page`.\n * @private\n */\n get allowRowBreakAcrossPages() {\n return this.breakRow;\n }\n set allowRowBreakAcrossPages(value) {\n this.breakRow = value;\n }\n /**\n * Gets the `column` collection of the PdfGrid.[Read-Only]\n * @private\n */\n get columns() {\n if (this.gridColumns == null || typeof this.gridColumns === 'undefined') {\n this.gridColumns = new PdfGridColumnCollection(this);\n }\n return this.gridColumns;\n }\n /**\n * Gets the `row` collection from the PdfGrid.[Read-Only]\n * @private\n */\n get rows() {\n if (this.gridRows == null) {\n this.gridRows = new PdfGridRowCollection(this);\n }\n return this.gridRows;\n }\n /**\n * Gets the `headers` collection from the PdfGrid.[Read-Only]\n * @private\n */\n get headers() {\n if (this.gridHeaders == null || typeof this.gridHeaders === 'undefined') {\n this.gridHeaders = new PdfGridHeaderCollection(this);\n }\n return this.gridHeaders;\n }\n /**\n * Indicating `initial width` of the page.\n * @private\n */\n get initialWidth() {\n return this.gridInitialWidth;\n }\n set initialWidth(value) {\n this.gridInitialWidth = value;\n }\n /**\n * Gets or sets the `grid style`.\n * @private\n */\n get style() {\n if (this.gridStyle == null) {\n this.gridStyle = new PdfGridStyle();\n }\n return this.gridStyle;\n }\n set style(value) {\n if (this.gridStyle == null) {\n this.gridStyle = value;\n }\n }\n /**\n * Gets a value indicating whether the grid column width is considered to be `page width`.\n * @private\n */\n get isPageWidth() {\n return this.ispageWidth;\n }\n set isPageWidth(value) {\n this.ispageWidth = value;\n }\n /**\n * Gets or set if grid `is nested grid`.\n * @private\n */\n get isChildGrid() {\n return this.ischildGrid;\n }\n set isChildGrid(value) {\n this.ischildGrid = value;\n }\n /**\n * Gets or set if grid ' is split or not'\n * @public\n */\n // public get isGridSplit() : boolean {\n // return this.isgridSplit;\n // }\n // public set isGridSplit(value : boolean) {\n // this.isgridSplit = value;\n // }public get isGridSplit() : boolean {\n // return this.isgridSplit;\n // }\n // public set isGridSplit(value : boolean) {\n // this.isgridSplit = value;\n // }\n /**\n * Gets the `size`.\n * @private\n */\n get size() {\n if ((this.gridSize.width === 0 || typeof this.gridSize.width === 'undefined') && this.gridSize.height === 0) {\n this.gridSize = this.measure();\n }\n return this.gridSize;\n // } else {\n // return this.gridSize;\n // }\n }\n set size(value) {\n this.gridSize = value;\n }\n get ParentCell() {\n return this.parentCell;\n }\n set ParentCell(value) {\n this.parentCell = value;\n }\n get LayoutFormat() {\n return this.layoutFormat;\n }\n draw(arg1, arg2, arg3, arg4) {\n if (arg2 instanceof PointF && typeof arg2.width === 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(arg1, arg2.x, arg2.y);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'undefined') {\n return this.drawHelper(arg1, arg2, arg3, null);\n }\n else if (arg2 instanceof RectangleF && typeof arg2.width !== 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(arg1, arg2, null);\n }\n else if (arg2 instanceof PointF && typeof arg2.width === 'undefined' && arg3 instanceof PdfLayoutFormat) {\n return this.drawHelper(arg1, arg2.x, arg2.y, arg3);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'number' && (arg4 instanceof PdfLayoutFormat || arg4 == null)) {\n let width = (arg1.graphics.clientSize.width - arg2);\n let layoutRectangle = new RectangleF(arg2, arg3, width, 0);\n return this.drawHelper(arg1, layoutRectangle, arg4);\n }\n else if (arg2 instanceof RectangleF && typeof arg2.width !== 'undefined' && typeof arg3 === 'boolean') {\n return this.drawHelper(arg1, arg2, null);\n }\n else {\n return this.drawHelper(arg1, arg2, arg3);\n }\n }\n /**\n * `measures` this instance.\n * @private\n */\n measure() {\n let height = 0;\n let width = this.columns.width;\n for (let i = 0; i < this.headers.count; i++) {\n let row = this.headers.getHeader(i);\n height += row.height;\n }\n for (let i = 0; i < this.rows.count; i++) {\n let row = this.rows.getRow(i);\n height += row.height;\n }\n return new SizeF(width, height);\n }\n onBeginCellDraw(args) {\n if (this.raiseBeginCellDraw) {\n this.beginCellDraw(this, args);\n }\n }\n onEndCellDraw(args) {\n if (this.raiseEndCellDraw) {\n this.endCellDraw(this, args);\n }\n }\n /**\n * `Layouts` the specified graphics.\n * @private\n */\n layout(param) {\n if (this.rows.count !== 0) {\n let currentRow = this.rows.getRow(0).cells.getCell(0).style;\n if (currentRow.borders != null && ((currentRow.borders.left != null && currentRow.borders.left.width !== 1) ||\n (currentRow.borders.top != null && currentRow.borders.top.width !== 1))) {\n let x = currentRow.borders.left.width / 2;\n let y = currentRow.borders.top.width / 2;\n if (param.bounds.x === PdfBorders.default.right.width / 2 && param.bounds.y === PdfBorders.default.right.width / 2) {\n let newBound = new RectangleF(x, y, this.gridSize.width, this.gridSize.height);\n param.bounds = newBound;\n }\n }\n }\n this.setSpan();\n this.checkSpan();\n this.layoutFormat = param.format;\n this.gridLocation = param.bounds;\n let layouter = new PdfGridLayouter(this);\n let result = (layouter.Layouter(param));\n return result;\n }\n setSpan() {\n let colSpan = 1;\n let rowSpan = 1;\n let currentCellIndex = 0;\n let currentRowIndex = 0;\n let maxSpan = 0;\n let rowCount = this.headers.count;\n for (let i = 0; i < rowCount; i++) {\n let row = this.headers.getHeader(i);\n maxSpan = 0;\n let colCount = row.cells.count;\n for (let j = 0; j < colCount; j++) {\n let cell = row.cells.getCell(j);\n maxSpan = Math.max(maxSpan, cell.rowSpan);\n //Skip setting span map for already coverted rows/columns.\n if (!cell.isCellMergeContinue && !cell.isRowMergeContinue && (cell.columnSpan > 1 || cell.rowSpan > 1)) {\n if (cell.columnSpan + j > row.cells.count) {\n throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n }\n if (cell.rowSpan + i > this.headers.count) {\n throw new Error('Invalid span specified at Header ' + j.toString() + ' column ' + i.toString());\n }\n // if (this.rows.count !== 0 && cell.rowSpan + i > this.rows.count) {\n // throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n // }\n if (cell.columnSpan > 1 && cell.rowSpan > 1) {\n colSpan = cell.columnSpan;\n rowSpan = cell.rowSpan;\n currentCellIndex = j;\n currentRowIndex = i;\n cell.isCellMergeStart = true;\n cell.isRowMergeStart = true;\n //Set Column merges for first row\n while (colSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n row.cells.getCell(currentCellIndex).isRowMergeContinue = true;\n row.cells.getCell(currentCellIndex).rowSpan = rowSpan;\n colSpan--;\n }\n currentCellIndex = j;\n colSpan = cell.columnSpan;\n //Set Row Merges and column merges foreach subsequent rows.\n while (rowSpan > 1) {\n currentRowIndex++;\n this.headers.getHeader(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n this.headers.getHeader(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n rowSpan--;\n while (colSpan > 1) {\n currentCellIndex++;\n this.headers.getHeader(currentRowIndex).cells.getCell(currentCellIndex).isCellMergeContinue = true;\n this.headers.getHeader(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n colSpan--;\n }\n colSpan = cell.columnSpan;\n currentCellIndex = j;\n }\n }\n else if (cell.columnSpan > 1 && cell.rowSpan === 1) {\n colSpan = cell.columnSpan;\n currentCellIndex = j;\n cell.isCellMergeStart = true;\n //Set Column merges.\n while (colSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n colSpan--;\n }\n }\n else if (cell.columnSpan === 1 && cell.rowSpan > 1) {\n rowSpan = cell.rowSpan;\n currentRowIndex = i;\n //Set row Merges.\n while (rowSpan > 1) {\n currentRowIndex++;\n this.headers.getHeader(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n rowSpan--;\n }\n }\n }\n }\n row.maximumRowSpan = maxSpan;\n }\n }\n checkSpan() {\n let cellcolSpan;\n let cellrowSpan = 1;\n let cellmaxSpan = 0;\n let currentCellIndex;\n let currentRowIndex = 0;\n cellcolSpan = cellrowSpan = 1;\n currentCellIndex = currentRowIndex = 0;\n if (this.hasRowSpanSpan || this.hasColumnSpan) {\n let rowCount = this.rows.count;\n for (let i = 0; i < rowCount; i++) {\n let row = this.rows.getRow(i);\n cellmaxSpan = 0;\n let colCount = row.cells.count;\n for (let j = 0; j < colCount; j++) {\n let cell = row.cells.getCell(j);\n cellmaxSpan = Math.max(cellmaxSpan, cell.rowSpan);\n //Skip setting span map for already coverted rows/columns.\n if (!cell.isCellMergeContinue && !cell.isRowMergeContinue\n && (cell.columnSpan > 1 || cell.rowSpan > 1)) {\n if (cell.columnSpan + j > row.cells.count) {\n throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n }\n if (cell.rowSpan + i > this.rows.count) {\n throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n }\n if (cell.columnSpan > 1 && cell.rowSpan > 1) {\n cellcolSpan = cell.columnSpan;\n cellrowSpan = cell.rowSpan;\n currentCellIndex = j;\n currentRowIndex = i;\n cell.isCellMergeStart = true;\n cell.isRowMergeStart = true;\n //Set Column merges for first row\n while (cellcolSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n row.cells.getCell(currentCellIndex).isRowMergeContinue = true;\n cellcolSpan--;\n }\n currentCellIndex = j;\n cellcolSpan = cell.columnSpan;\n //Set Row Merges and column merges foreach subsequent rows.\n while (cellrowSpan > 1) {\n currentRowIndex++;\n this.rows.getRow(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n this.rows.getRow(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n cellrowSpan--;\n while (cellcolSpan > 1) {\n currentCellIndex++;\n this.rows.getRow(currentRowIndex).cells.getCell(currentCellIndex).isCellMergeContinue = true;\n this.rows.getRow(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n cellcolSpan--;\n }\n cellcolSpan = cell.columnSpan;\n currentCellIndex = j;\n }\n }\n else if (cell.columnSpan > 1 && cell.rowSpan === 1) {\n cellcolSpan = cell.columnSpan;\n currentCellIndex = j;\n cell.isCellMergeStart = true;\n //Set Column merges.\n while (cellcolSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n cellcolSpan--;\n }\n }\n else if (cell.columnSpan === 1 && cell.rowSpan > 1) {\n cellrowSpan = cell.rowSpan;\n currentRowIndex = i;\n //Set row Merges.\n while (cellrowSpan > 1) {\n currentRowIndex++;\n this.rows.getRow(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n cellrowSpan--;\n }\n }\n }\n }\n row.maximumRowSpan = cellmaxSpan;\n }\n }\n }\n measureColumnsWidth(bounds) {\n if (typeof bounds !== 'undefined') {\n this.isPageWidth = false;\n let widths = this.columns.getDefaultWidths(bounds.width - bounds.x);\n //let tempWidth : number = this.columns.getColumn(0).width;\n for (let i = 0, count = this.columns.count; i < count; i++) {\n // if (this.columns.getColumn(i).width < 0)\n // this.columns.getColumn(i).columnWidth = widths[i];\n // else if (this.columns.getColumn(i).width > 0 && !this.columns.getColumn(i).isCustomWidth && widths[i]>0 && this.isComplete)\n this.columns.getColumn(i).columnWidth = widths[i];\n this.tempWidth = widths[i];\n }\n if (this.ParentCell != null && this.style.allowHorizontalOverflow == false && this.ParentCell.row.grid.style.allowHorizontalOverflow == false) {\n let padding = 0;\n let columnWidth = 0;\n let columnCount = this.columns.count;\n let childGridColumnWidth = 0;\n if (this.ParentCell.style.cellPadding != null || typeof this.ParentCell.style.cellPadding !== 'undefined') {\n if (typeof this.ParentCell.style.cellPadding.left != 'undefined' && this.ParentCell.style.cellPadding.hasLeftPad) {\n padding += this.ParentCell.style.cellPadding.left;\n }\n if (typeof this.ParentCell.style.cellPadding.right != 'undefined' && this.ParentCell.style.cellPadding.hasRightPad) {\n padding += this.ParentCell.style.cellPadding.right;\n }\n }\n for (let i = 0; i < this.ParentCell.columnSpan; i++) {\n columnWidth += this.ParentCell.row.grid.columns.getColumn(this.parentCellIndex + i).width;\n }\n for (let j = 0; j < this.columns.count; j++) {\n if (this.gridColumns.getColumn(j).width > 0 && this.gridColumns.getColumn(j).isCustomWidth) {\n columnWidth -= this.gridColumns.getColumn(j).width;\n columnCount--;\n }\n }\n if ((this.ParentCell.row.grid.style.cellPadding != null || typeof this.ParentCell.row.grid.style.cellPadding != 'undefined')) {\n if (typeof this.ParentCell.row.grid.style.cellPadding.top != 'undefined' && this.ParentCell.row.grid.style.cellPadding.hasTopPad) {\n padding += this.ParentCell.row.grid.style.cellPadding.top;\n }\n if (typeof this.ParentCell.row.grid.style.cellPadding.bottom != 'undefined' && this.ParentCell.row.grid.style.cellPadding.hasBottomPad) {\n padding += this.ParentCell.row.grid.style.cellPadding.bottom;\n }\n }\n if (this.ParentCell.row.grid.style.cellSpacing != 0) {\n columnWidth -= this.ParentCell.row.grid.style.cellSpacing * 2;\n }\n if (columnWidth > padding) {\n childGridColumnWidth = (columnWidth - padding) / columnCount;\n this.tempWidth = childGridColumnWidth;\n if (this.ParentCell != null) {\n for (let j = 0; j < this.columns.count; j++) {\n if (!this.columns.getColumn(j).isCustomWidth)\n this.columns.getColumn(j).columnWidth = childGridColumnWidth;\n }\n }\n }\n }\n // if (this.ParentCell != null && this.ParentCell.row.width > 0)\n // {\n // if (this.isChildGrid && this.gridSize.width > this.ParentCell.row.width)\n // {\n // widths = this.columns.getDefaultWidths(bounds.width);\n // for (let i : number = 0; i < this.columns.count; i++)\n // {\n // this.columns.getColumn(i).width = widths[i];\n // }\n // }\n // }\n }\n else {\n let widths = [this.columns.count];\n for (let n = 0; n < this.columns.count; n++) {\n widths[n] = 0;\n }\n let cellWidth = 0;\n if ((typeof this.isChildGrid === 'undefined' && typeof this.gridLocation !== 'undefined') || (this.isChildGrid === null && typeof this.gridLocation !== 'undefined')) {\n this.initialWidth = this.gridLocation.width;\n }\n if (this.headers.count > 0) {\n let colCount = this.headers.getHeader(0).cells.count;\n let rowCount = this.headers.count;\n for (let i = 0; i < colCount; i++) {\n cellWidth = 0;\n for (let j = 0; j < rowCount; j++) {\n let rowWidth = Math.min(this.initialWidth, this.headers.getHeader(j).cells.getCell(i).width);\n cellWidth = Math.max(cellWidth, rowWidth);\n }\n widths[i] = cellWidth;\n }\n }\n // else {\n // let colCount : number = this.rows.getRow(0).cells.count;\n // let rowCount : number = this.rows.count;\n // for (let i : number = 0; i < colCount; i++) {\n // cellWidth = 0;\n // for (let j : number = 0; j < rowCount; j++) {\n // let rowWidth : number = Math.min(this.initialWidth, this.rows.getRow(j).cells.getCell(i).width);\n // cellWidth = Math.max(cellWidth, rowWidth);\n // }\n // widths[i] = cellWidth;\n // }\n // }\n cellWidth = 0;\n for (let i = 0, colCount = this.columns.count; i < colCount; i++) {\n for (let j = 0, rowCount = this.rows.count; j < rowCount; j++) {\n if ((this.rows.getRow(j).cells.getCell(i).columnSpan == 1 && !this.rows.getRow(j).cells.getCell(i).isCellMergeContinue) || this.rows.getRow(j).cells.getCell(i).value != null) {\n if (this.rows.getRow(j).cells.getCell(i).value != null && !this.rows.getRow(j).grid.style.allowHorizontalOverflow) {\n let value = this.rows.getRow(j).grid.style.cellPadding.right +\n this.rows.getRow(j).grid.style.cellPadding.left\n + this.rows.getRow(j).cells.getCell(i).style.borders.left.width / 2;\n // if (this.initialWidth != 0 )\n // (this.rows.getRow(j).cells.getCell(i).value as PdfGrid).initialWidth = this.initialWidth - value;\n }\n let rowWidth = 0;\n rowWidth = this.initialWidth > 0.0 ? Math.min(this.initialWidth, this.rows.getRow(j).cells.getCell(i).width) : this.rows.getRow(j).cells.getCell(i).width;\n // let internalWidth : number = this.rows.getRow(j).cells.getCell(i).width;\n // internalWidth += this.rows.getRow(j).cells.getCell(i).style.borders.left.width;\n // internalWidth += this.rows.getRow(j).cells.getCell(i).style.borders.right.width;\n // let internalHeight : number = this.rows.getRow(j).cells.getCell(i).height;\n // internalHeight += (this.rows.getRow(j).cells.getCell(i).style.borders.top.width);\n // internalHeight += (this.rows.getRow(j).cells.getCell(i).style.borders.bottom.width);\n // let isCorrectWidth : boolean = (internalWidth + this.gridLocation.x) > this.currentGraphics.clientSize.width;\n // let isCorrectHeight : boolean = (internalHeight + this.gridLocation.y) > this.currentGraphics.clientSize.height;\n // if (isCorrectWidth || isCorrectHeight) {\n // throw Error('Image size exceeds client size of the page. Can not insert this image');\n // }\n // rowWidth = Math.min(this.initialWidth, this.rows.getRow(j).cells.getCell(i).width);\n cellWidth = Math.max(widths[i], Math.max(cellWidth, rowWidth));\n cellWidth = Math.max(this.columns.getColumn(i).width, cellWidth);\n }\n }\n if (this.rows.count != 0)\n widths[i] = cellWidth;\n cellWidth = 0;\n }\n for (let i = 0, RowCount = this.rows.count; i < RowCount; i++) {\n for (let j = 0, ColCount = this.columns.count; j < ColCount; j++) {\n if (this.rows.getRow(i).cells.getCell(j).columnSpan > 1) {\n for (let k = 1; k < this.rows.getRow(i).cells.getCell(j).columnSpan; k++) {\n \n }\n // if (this.rows.getRow(i).cells.getCell(j).width > total)\n // {\n // let extendedWidth : number = this.rows.getRow(i).cells.getCell(j).width - total;\n // extendedWidth = extendedWidth / this.rows.getRow(i).cells.getCell(j).columnSpan;\n // for (let k : number = j; k < j + this.rows.getRow(i).cells.getCell(j).columnSpan; k++)\n // widths[k] += extendedWidth;\n // }\n }\n }\n }\n // if (this.isChildGrid && this.initialWidth != 0)\n // {\n // widths = this.columns.getDefaultWidths(this.initialWidth);\n // }\n for (let i = 0, count = this.columns.count; i < count; i++) {\n if (this.columns.getColumn(i).width <= 0)\n this.columns.getColumn(i).columnWidth = widths[i];\n else if (this.columns.getColumn(i).width > 0 && !this.columns.getColumn(i).isCustomWidth)\n this.columns.getColumn(i).columnWidth = widths[i];\n }\n let padding = 0;\n let colWidth = 0;\n let colCount = this.columns.count;\n let childGridColWidth = 0;\n colWidth = this.tempWidth;\n for (let j = 0; j < this.columns.count; j++) {\n if (this.gridColumns.getColumn(j).width > 0 && this.gridColumns.getColumn(j).isCustomWidth) {\n colWidth -= this.gridColumns.getColumn(j).width;\n colCount--;\n }\n }\n // if (this.style.cellSpacing != 0){\n // colWidth -= this.style.cellSpacing * 2;\n // }\n if (colWidth > 0) {\n if (this.ParentCell.row.grid.style.cellSpacing != 0) {\n colWidth -= this.ParentCell.row.grid.style.cellSpacing * 2;\n }\n }\n if (colWidth > padding) {\n childGridColWidth = (colWidth) / colCount;\n if (this.ParentCell != null) {\n for (let j = 0; j < this.columns.count; j++) {\n if (!this.columns.getColumn(j).isCustomWidth)\n this.columns.getColumn(j).columnWidth = childGridColWidth;\n }\n }\n }\n }\n }\n}\n\n/**\n * Class `lay outing the text`.\n *\n */\nclass PdfGridLayouter extends ElementLayouter {\n //constructor\n /**\n * Initialize a new instance for `PdfGrid` class.\n * @private\n */\n constructor(baseFormat) {\n super(baseFormat);\n /**\n * @hidden\n * @private\n */\n this.gridInitialWidth = 0;\n /**\n * @hidden\n * @private\n */\n this.gridSize = new SizeF(0, 0);\n this.parentCellIndex = 0;\n this.tempWidth = 0;\n this.childheight = 0;\n /**\n * Check weather it is `child grid or not`.\n * @private\n */\n this.isChildGrid = false;\n /**\n * @hidden\n * @private\n */\n this.hasRowSpanSpan = false;\n /**\n * @hidden\n * @private\n */\n this.isRearranged = false;\n /**\n * @hidden\n * @private\n */\n this.pageBounds = new RectangleF();\n /**\n * @hidden\n * @private\n */\n this.listOfNavigatePages = [];\n /**\n * @hidden\n * @private\n */\n this.flag = true;\n /**\n * @hidden\n * @private\n */\n this.columnRanges = [];\n /**\n * @hidden\n * @private\n */\n this.currentLocation = new PointF(0, 0);\n /**\n * @hidden\n * @private\n */\n this.breakRow = true;\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isOverloadWithPosition = false;\n }\n //Properties\n get Grid() {\n return this.elements;\n }\n // Constructors\n /**\n * Initializes a new instance of the `StringLayouter` class.\n * @private\n */\n //Public methods\n /**\n * `Layouts` the text.\n * @private\n */\n /**\n * `Layouts` the specified graphics.\n * @private\n */\n /**\n * `Layouts` the specified graphics.\n * @private\n */\n /*public layout(graphics : PdfLayoutParams) : PdfLayoutResult\n public layout(graphics : PdfGraphics, bounds : RectangleF) : void\n public layout(graphics : PdfGraphics, bounds : PointF) : void\n public layout(graphics ?: PdfGraphics | PdfLayoutParams, bounds ?: PointF | RectangleF) : void | PdfLayoutResult {\n if (graphics instanceof PdfGraphics) {\n if (bounds instanceof PointF) {\n if (bounds.x === 0) {\n bounds.x = PdfBorders.default.right.width / 2;\n }\n if (bounds.y === 0) {\n bounds.y = PdfBorders.default.top.width / 2;\n }\n let boundaries : RectangleF = new RectangleF(bounds, new SizeF(0, 0));\n this.layout(graphics, boundaries);\n } else {\n let width : number = graphics.clientSize.width;\n let parameter : PdfLayoutParams = new PdfLayoutParams();\n parameter.bounds = bounds;\n this.currentGraphics = graphics;\n if (graphics.layer != null) {\n let index : number = 0;\n if (this.currentGraphics.page instanceof PdfPage) {\n index = (this.currentGraphics.page as PdfPage).section.indexOf(this.currentGraphics.page as PdfPage);\n } else {\n index = (this.currentGraphics.page as PdfPageBase).defaultLayerIndex;\n }\n } else {\n this.layoutInternal(parameter);\n }\n }\n }\n }*/\n /**\n * Gets the `format`.\n * @private\n */\n getFormat(format) {\n let f = format;\n return f;\n }\n /**\n * `Layouts` the element.\n * @private\n */\n layoutInternal(param) {\n let format = this.getFormat(param.format);\n this.gridLayoutFormat = this.getFormat(param.format);\n this.currentPage = param.page;\n if (this.currentPage !== null) {\n let pageHeight = this.currentPage.getClientSize().height;\n let pageWidth = this.currentPage.getClientSize().width;\n this.currentPageBounds = this.currentPage.getClientSize();\n }\n else {\n throw Error('Can not set page as null');\n //this.currentPageBounds = this.currentGraphics.clientSize;\n }\n this.currentGraphics = this.currentPage.graphics;\n //this.currentGraphics = (this.currentPage != null ) ? this.currentPage.graphics : this.currentGraphics;\n // if (this.currentGraphics.layer !== null) {\n // let index : number = 0;\n // if (this.currentGraphics.page instanceof PdfPage) {\n // index = (this.currentGraphics.page as PdfPage).section.indexOf(this.currentGraphics.page as PdfPage);\n // } else {\n // index = (this.currentGraphics.page as PdfPageBase).defaultLayerIndex;\n // }\n // this.listOfNavigatePages.push(index);\n // }\n let index = 0;\n index = this.currentGraphics.page.section.indexOf(this.currentGraphics.page);\n this.listOfNavigatePages.push(index);\n if (format != null && format.break === PdfLayoutBreakType.FitColumnsToPage) {\n this.currentBounds = new RectangleF(new PointF(param.bounds.x, param.bounds.y), new SizeF(this.Grid.columns.width, this.currentGraphics.clientSize.height));\n }\n else {\n this.currentBounds = new RectangleF(new PointF(param.bounds.x, param.bounds.y), this.currentGraphics.clientSize);\n }\n //this.currentBounds = new RectangleF(new PointF(param.bounds.x, param.bounds.y), this.currentGraphics.clientSize);\n if (this.Grid.rows.count !== 0) {\n this.currentBounds.width = (param.bounds.width > 0) ? param.bounds.width :\n (this.currentBounds.width - this.Grid.rows.getRow(0).cells.getCell(0).style.borders.left.width / 2);\n }\n else if (this.Grid.headers.count !== 0) {\n // this.currentBounds.width = (param.bounds.width > 0) ? param.bounds.width : (this.currentBounds.width -\n // this.Grid.headers.getHeader(0).cells.getCell(0).style.borders.left.width / 2);\n this.currentBounds.width = param.bounds.width;\n }\n else {\n throw Error('Please add row or header into grid');\n }\n this.startLocation = new PointF(param.bounds.x, param.bounds.y);\n // if (this.Grid.style.allowHorizontalOverflow && this.currentBounds.width > this.currentGraphics.clientSize.width) {\n // this.currentBounds.width = this.currentGraphics.clientSize.width;\n // this.currentBounds.width -= this.currentBounds.x;\n // }\n // if (this.Grid.isChildGrid) {\n // this.childheight = param.bounds.height;\n // }\n // if (param.format !== null && param.format.usePaginateBounds) {\n // if (param.format.paginateBounds.height > 0) {\n // this.currentBounds.height = param.format.paginateBounds.height;\n // }\n //} else \n if (param.bounds.height > 0 && !this.Grid.isChildGrid) {\n this.currentBounds.height = param.bounds.height;\n }\n if (!this.Grid.isChildGrid) {\n this.hType = this.Grid.style.horizontalOverflowType;\n }\n if (!this.Grid.style.allowHorizontalOverflow) {\n this.columnRanges = [];\n this.Grid.measureColumnsWidth(this.currentBounds);\n this.columnRanges.push([0, this.Grid.columns.count - 1]);\n }\n else {\n this.Grid.measureColumnsWidth();\n this.determineColumnDrawRanges();\n }\n if (this.Grid.hasRowSpanSpan) {\n for (let i = 0; i < this.Grid.rows.count; i++) {\n if (this.Grid.rows.getRow(i).height !== -1 && !this.Grid.rows.getRow(i).isRowHeightSet) {\n this.Grid.rows.getRow(i).isRowHeightSet = true;\n }\n }\n }\n let result = this.layoutOnPage(param);\n return result;\n }\n // /* tslint:enable */\n /**\n * `Determines the column draw ranges`.\n * @private\n */\n determineColumnDrawRanges() {\n let startColumn = 0;\n let endColumn = 0;\n let cellWidths = 0;\n let availableWidth = this.currentGraphics.clientSize.width - this.currentBounds.x;\n for (let i = 0; i < this.Grid.columns.count; i++) {\n cellWidths += this.Grid.columns.getColumn(i).width;\n if (cellWidths >= availableWidth) {\n let subWidths = 0;\n for (let j = startColumn; j <= i; j++) {\n subWidths += this.Grid.columns.getColumn(j).width;\n if (subWidths > availableWidth) {\n break;\n }\n endColumn = j;\n }\n this.columnRanges.push([startColumn, endColumn]);\n startColumn = endColumn + 1;\n endColumn = startColumn;\n cellWidths = (endColumn <= i) ? this.Grid.columns.getColumn(i).width : 0;\n }\n }\n // if (startColumn !== this.columns.Count) {\n this.columnRanges.push([startColumn, this.Grid.columns.count - 1]);\n // }\n }\n /**\n * `Layouts the on page`.\n * @private\n */\n layoutOnPage(param) {\n /* tslint:disable */\n this.pageBounds.x = param.bounds.x;\n this.pageBounds.y = param.bounds.y;\n this.pageBounds.height = param.bounds.height;\n let format = this.getFormat(param.format);\n let endArgs = null;\n let result = null;\n let layoutedPages = new TemporaryDictionary();\n let startPage = param.page;\n let isParentCell = false;\n let cellBounds = [];\n for (let index = 0; index < this.columnRanges.length; index++) {\n let range = this.columnRanges[index];\n this.cellStartIndex = range[0];\n this.cellEndIndex = range[1];\n let returnObject = this.raiseBeforePageLayout(this.currentPage, this.currentBounds, this.currentRowIndex);\n this.currentBounds = returnObject.currentBounds;\n this.currentRowIndex = returnObject.currentRowIndex;\n // if (returnObject.returnValue) {\n // result = new PdfGridLayoutResult(this.currentPage, this.currentBounds);\n // break;\n // }\n //Draw Headers.\n for (let i = 0; i < this.Grid.headers.count; i++) {\n let row = this.Grid.headers.getHeader(i);\n let headerHeight = this.currentBounds.y;\n // RowLayoutResult\n let headerResult = this.drawRow(row);\n // if (headerHeight === this.currentBounds.y) {\n // drawHeader = true;\n // if (PdfGrid.repeatRowIndex === -1) {\n // PdfGrid.repeatRowIndex = this.rows.getRow.indexOf(row);\n // }\n // } else {\n \n // }\n }\n let i = 0;\n let length = this.Grid.rows.count;\n let repeatRow;\n let flag = true;\n //Here is to draw parent Grid and Cells\n cellBounds = [];\n //Draw row by row with the specified cell range.\n for (let j = 0; j < this.Grid.rows.count; j++) {\n let row = this.Grid.rows.getRow(j);\n i++;\n this.currentRowIndex = i - 1;\n let originalHeight = this.currentBounds.y;\n startPage = this.currentPage;\n PdfGridLayouter.repeatRowIndex = -1;\n if (flag && row.grid.isChildGrid) {\n flag = false;\n }\n let rowResult = null;\n ///rowResult = this.drawRow(row);\n /*if(!row.isrowFinish) {\n if(!row.grid.isgridSplit){\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n row.isrowDraw = true;\n } else {\n if(!row.isrowDraw){\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n row.isrowDraw = true;\n row.grid.isgridSplit = false;\n } else {\n rowResult = null;\n break;\n }\n }\n }\n else {\n //row.isrowFinish = false;\n //rowResult = this.drawRow(row);\n rowResult = null;\n break;\n \n } */\n if (this.Grid.splitChildRowIndex == -1) {\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n }\n else {\n if (row.grid.ParentCell.row.grid.isGridSplit && this.Grid.splitChildRowIndex <= row.rowIndex) {\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n }\n else if (row.isrowFinish) {\n continue;\n }\n else {\n break;\n }\n }\n //rowResult = this.drawRow(row);\n cellBounds.push(rowResult.bounds.width);\n /*if (row.isRowBreaksNextPage)\n {\n let x : number = 0;\n for (let l : number = 0; l < row.cells.count; l++)\n {\n let isNestedRowBreak : boolean = false;\n if (row.height == row.cells.getCell(l).height)\n {\n let n : number;\n let grid : PdfGrid = row.cells.getCell(l).value as PdfGrid;\n for (let m : number = grid.rows.count; 0 < m; m--)\n {\n if ((grid.rows.getRow(m - 1).rowBreakHeight > 0))\n {\n isNestedRowBreak = true;\n break;\n }\n if (grid.rows.getRow(m - 1).isRowBreaksNextPage)\n {\n row.rowBreakHeightValue = grid.rows.getRow(m - 1).rowBreakHeightValue;\n break;\n }\n row.rowBreakHeightValue += grid.rows.getRow(m - 1).height;\n }\n }\n if (isNestedRowBreak)\n break;\n }\n for (let j : number = 0; j < row.cells.count; j++)\n {\n\n if (row.height > row.cells.getCell(j).height)\n {\n row.cells.getCell(j).value = \" \";\n let rect : RectangleF ;\n let page : PdfPage = this.getNextPage(this.currentPage);\n let section : PdfSection = this.currentPage.section;\n let index : number = section.indexOf(page);\n for (let k : number = 0; k < (section.count - 1) - index; k++)\n {\n rect = new RectangleF(x, 0, row.grid.columns.getColumn(j).width, page.getClientSize().height);\n PdfGridLayouter.repeatRowIndex = -1;\n row.cells.getCell(j).draw(page.graphics, rect, false);\n page = this.getNextPage(page);\n }\n rect = new RectangleF(x, 0, row.grid.columns.getColumn(j).width, row.rowBreakHeightValue);\n\n row.cells.getCell(j).draw(page.graphics, rect, false);\n }\n x += row.grid.columns.getColumn(j).width;\n }\n }*/\n //if height remains same, it is understood that row is not drawn in the page\n if (originalHeight === this.currentBounds.y) {\n repeatRow = true;\n PdfGridLayouter.repeatRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n }\n else {\n repeatRow = false;\n PdfGridLayouter.repeatRowIndex = -1;\n }\n while (!rowResult.isFinish && startPage != null) {\n let tempResult = this.getLayoutResult();\n /*if (startPage != this.currentPage)\n {\n if (row.grid.isChildGrid && row.grid.ParentCell != null)\n {\n let bounds : RectangleF= new RectangleF(new PointF(format.paginateBounds.x,format.paginateBounds.y), new SizeF(param.bounds.width, tempResult.bounds.height));\n bounds.x += param.bounds.x;\n if (row.grid.ParentCell.row.grid.style.cellPadding != null)\n {\n bounds.y += row.grid.ParentCell.row.grid.style.cellPadding.top;\n if (bounds.height > this.currentPageBounds.height)\n {\n bounds.height = this.currentPageBounds.height - bounds.y;\n bounds.height -= (row.grid.ParentCell.row.grid.style.cellPadding.bottom);\n }\n }\n // Draw border for cells in the nested grid cell's row.\n for (let c : number = 0; c < row.cells.count; c++)\n {\n let cell : PdfGridCell = row.cells.getCell(c);\n let cellWidth : number= 0;\n if (cell.columnSpan > 1)\n {\n for (; c < cell.columnSpan; c++)\n cellWidth += row.grid.columns.getColumn(c).width;\n }\n else\n cellWidth = Math.max(cell.width, row.grid.columns.getColumn(c).width);\n cell.drawCellBorders(this.currentGraphics, new RectangleF(new PointF(bounds.x,bounds.y), new SizeF(cellWidth, bounds.height)));\n bounds.x += cellWidth;\n c += (cell.columnSpan - 1);\n }\n }\n }\n */\n endArgs = this.raisePageLayouted(tempResult);\n if (endArgs.cancel || repeatRow)\n break;\n else if (this.Grid.allowRowBreakAcrossPages) {\n //If there is no space in the current page, add new page and then draw the remaining row.\n this.currentPage = this.getNextPageformat(format);\n originalHeight = this.currentBounds.y;\n let location = new PointF(PdfBorders.default.right.width / 2, PdfBorders.default.top.width / 2);\n if ((format.paginateBounds.x === 0 && format.paginateBounds.y === 0 && format.paginateBounds.width === 0 &&\n format.paginateBounds.height === 0) && (this.startLocation.x === location.x && this.startLocation.y === location.y)) {\n this.currentBounds.x += this.startLocation.x;\n this.currentBounds.y += this.startLocation.y;\n }\n if (this.Grid.isChildGrid && row.grid.ParentCell != null) {\n if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n if (row.rowBreakHeight + this.Grid.ParentCell.row.grid.style.cellPadding.top < this.currentBounds.height) {\n this.currentBounds.y = this.Grid.ParentCell.row.grid.style.cellPadding.top;\n }\n }\n }\n if (row.grid.ParentCell != null) {\n row.grid.ParentCell.row.isRowBreaksNextPage = true;\n row.grid.ParentCell.row.rowBreakHeightValue = row.rowBreakHeight + this.Grid.ParentCell.row.grid.style.cellPadding.top + this.Grid.ParentCell.row.grid.style.cellPadding.bottom;\n for (let i = row.rowIndex + 1; i < row.grid.rows.count; i++) {\n row.grid.ParentCell.row.rowBreakHeightValue += row.grid.rows.getRow(i).height;\n }\n //row.rowBreakHeight = row.grid.ParentCell.row.rowBreakHeightValue;\n }\n /*if (row.noOfPageCount > 1)\n {\n let temp : number = row.rowBreakHeightValue;\n for (let j : number = 1; j < row.noOfPageCount; j++)\n {\n row.rowBreakHeightValue = 0;\n row.height = ((row.noOfPageCount - 1) * this.currentPage.getClientSize().height);\n this.drawRow(row);\n this.currentPage = this.getNextPageformat(format);\n startPage = this.currentPage;\n }\n row.rowBreakHeightValue = temp;\n row.noOfPageCount = 1;\n rowResult = this.drawRow(row);\n } else {\n rowResult = this.drawRow(row);\n }\n /*if(row.grid.isChildGrid){\n row.isrowFinish = false;\n row.isrowDraw = false;\n row.grid.isgridSplit = true;\n row.grid.ParentCell.row.grid.isgridSplit = true;\n //rowResult.isFinish = false;\n break;\n }*/\n if (row.grid.isChildGrid) {\n //row.grid.isgridSplit = true;\n row.isrowFinish = false;\n //row.grid.ParentCell.row.grid.isgridSplit = true;\n row.grid.splitChildRowIndex = row.rowIndex;\n row.grid.ParentCell.row.grid.splitChildRowIndex = row.grid.ParentCell.row.rowIndex;\n if (row.grid.ParentCell.row.grid.isGridSplit) {\n row.grid.ParentCell.row.noOfPageCount += 1;\n row.grid.ParentCell.row.grid.isGridSplit = false;\n }\n break;\n }\n if (row.noOfPageCount < 1) {\n if (row.grid.splitChildRowIndex != -1) {\n row.grid.isGridSplit = true;\n }\n if (row.style.border != null && ((row.style.border.left != null && row.style.border.left.width !== 1)\n || (row.style.border.top != null && row.style.border.top.width !== 1))) {\n let x = row.style.border.left.width / 2;\n let y = row.style.border.top.width / 2;\n if (this.currentBounds.x === PdfBorders.default.right.width / 2 && this.currentBounds.y === PdfBorders.default.right.width / 2) {\n let newBound = new RectangleF(x, y, this.currentBounds.width, this.currentBounds.height);\n this.currentBounds = newBound;\n }\n }\n if (this.Grid.repeatHeader) {\n for (let j = 0; j < this.Grid.headers.count; j++) {\n let headerRepeat = this.Grid.headers.getHeader(j);\n this.drawRow(headerRepeat);\n }\n }\n rowResult = this.drawRow(row);\n if (row.noOfPageCount >= 1) {\n let temp = row.rowBreakHeightValue;\n for (let j = 0; j < row.noOfPageCount; j++) {\n //this.currentPage.section.add();\n let tempResult1 = this.getLayoutResult();\n endArgs = this.raisePageLayouted(tempResult1);\n this.currentPage = this.getNextPageformat(format);\n originalHeight = this.currentBounds.y;\n //row.rowBreakHeightValue = 0;\n if (row.grid.splitChildRowIndex != -1) {\n row.grid.isGridSplit = true;\n }\n this.currentBounds.y = 0.5;\n if (this.Grid.repeatHeader) {\n for (let i = 0; i < this.Grid.headers.count; i++) {\n let header = this.Grid.headers.getHeader(i);\n this.drawRow(header);\n }\n }\n //row.height = ((row.noOfPageCount - 1) * this.currentPage.getClientSize().height);\n this.drawRow(row);\n }\n // row.rowBreakHeight = temp;\n // row.noOfPageCount = 1;\n // rowResult = this.drawRow(row);\n }\n row.grid.splitChildRowIndex = -1;\n row.grid.isGridSplit = false;\n rowResult.isFinish = true;\n //row.NestedGridLayoutResult.bounds.height = row.rowBreakHeightValue;\n //this.currentBounds.y = rowResult.bounds.y;\n for (let i = 0; i < row.cells.count; i++) {\n if (row.cells.getCell(i).value instanceof PdfGrid) {\n row.cells.getCell(i).value.splitChildRowIndex = -1;\n }\n }\n }\n }\n // else if (!this.Grid.allowRowBreakAcrossPages && i < length)\n // {\n // this.currentPage = this.getNextPageformat(format);\n // break;\n // }\n // else if (i >= length)\n // break;\n }\n if (!rowResult.isFinish && startPage !== null && format.layout !== PdfLayoutType.OnePage && repeatRow) {\n // During pagination, cell position is maintained here.\n this.startLocation.x = this.currentBounds.x;\n this.currentPage = this.getNextPageformat(format);\n /*if (!this.Grid.isSingleGrid)\n {\n for ( let j : number= 0; j < this.Grid.rows.count; j++)\n {\n let isWidthGreaterthanParent : boolean = false;\n for (let k : number = 0; k < this.Grid.rows.getRow(j).cells.count; k++)\n {\n if (this.Grid.rows.getRow(j).cells.getCell(k).width > this.currentPageBounds.width)\n isWidthGreaterthanParent = true;\n }\n if (isWidthGreaterthanParent && this.Grid.rows.getRow(j).cells.getCell(this.rowBreakPageHeightCellIndex).pageCount > 0)\n {\n isAddNextPage = true;\n }\n }\n }\n if (!this.Grid.isRearranged && isAddNextPage)\n {\n let section : PdfSection = this.currentPage.section;\n \n //this.currentPage = section.add();\n \n this.currentGraphics = this.currentPage.graphics;\n this.currentBounds = new RectangleF(new PointF(0,0), this.currentPage.getClientSize());\n \n let pageindex : number = (this.currentGraphics.page as PdfPage).section.indexOf(this.currentGraphics.page as PdfPage);\n }\n else\n {\n this.currentPage = this.getNextPageformat(format);\n }\n if (format.paginateBounds.y == 0)\n this.currentBounds.y = PdfBorders.default.top.width/2;\n else\n {\n this.currentBounds.y = format == null ? 0 : format.paginateBounds.y;\n \n }\n if (this.raiseBeforePageLayout(this.currentPage, this.currentBounds, this.currentRowIndex))\n break;*/\n if ((param.format !== null) && !param.format.usePaginateBounds && param.bounds !== null &&\n param.bounds.height > 0 && !this.Grid.isChildGrid) {\n this.currentBounds.height = param.bounds.height;\n }\n if ((param.format !== null) && !param.format.usePaginateBounds && param.bounds !== null &&\n param.bounds.y > 0 && !this.Grid.isChildGrid) {\n this.currentBounds.y = param.bounds.y;\n }\n this.startLocation.y = this.currentBounds.y;\n if ((format.paginateBounds.x === format.paginateBounds.y) &&\n (format.paginateBounds.y === format.paginateBounds.height) &&\n (format.paginateBounds.height === format.paginateBounds.width) && (format.paginateBounds.width === 0)) {\n this.currentBounds.x += this.startLocation.x;\n }\n if (this.currentBounds.x === PdfBorders.default.left.width / 2) {\n this.currentBounds.y += this.startLocation.x;\n }\n if (this.Grid.repeatHeader) {\n for (let i = 0; i < this.Grid.headers.count; i++) {\n let header = this.Grid.headers.getHeader(i);\n this.drawRow(header);\n }\n }\n this.drawRow(row);\n if (this.currentPage !== null && !layoutedPages.containsKey(this.currentPage)) {\n layoutedPages.add(this.currentPage, range);\n }\n }\n if (row.NestedGridLayoutResult != null) {\n // Position for next row in the grid.\n this.currentPage = row.NestedGridLayoutResult.page;\n this.currentGraphics = this.currentPage.graphics; //If not, next row will not be drawn in the layouted page.\n this.startLocation = new PointF(row.NestedGridLayoutResult.bounds.x, row.NestedGridLayoutResult.bounds.y);\n let recalHeight = this.ReCalculateHeight(row, row.NestedGridLayoutResult.bounds.height);\n this.currentBounds.y = recalHeight;\n //this.currentBounds.y = row.NestedGridLayoutResult.bounds.height;\n if (startPage != this.currentPage) {\n let secion = this.currentPage.section;\n let startIndex = secion.indexOf(startPage) + 1;\n let endIndex = secion.indexOf(this.currentPage);\n for (let page = startIndex; page < endIndex + 1; page++) {\n let pageGraphics = this.currentPage.graphics;\n let location = new PointF(format.paginateBounds.x, format.paginateBounds.y);\n let height = page == endIndex ? (row.NestedGridLayoutResult.bounds.height - param.bounds.y) :\n (this.currentBounds.height - location.y);\n if (height <= pageGraphics.clientSize.height)\n height += param.bounds.y;\n // if (row.grid.isChildGrid && row.grid.ParentCell != null)\n // location.x += param.bounds.x;\n location.y = format == null ? 0.5 : format.paginateBounds.y;\n // Draw border for last paginated row containing nested grid.\n for (let c = 0; c < row.cells.count; c++) {\n let cell = row.cells.getCell(c);\n let cellWidth = 0;\n let totalwidth = 0;\n if (cell.value instanceof PdfGrid) {\n for (let i = 0; i < cell.value.columns.count; i++) {\n totalwidth += cell.value.columns.getColumn(i).columnWidth;\n }\n }\n else {\n totalwidth = cell.width;\n }\n // if (cell.columnSpan > 1)\n // {\n // for (; c < cell.columnSpan; c++)\n // cellWidth += row.grid.columns.getColumn(c).width;\n // }\n // else\n cellWidth = Math.max(totalwidth, row.grid.columns.getColumn(c).width);\n cell.drawCellBorders(pageGraphics, new RectangleF(location, new SizeF(cellWidth, height)));\n location.x += cellWidth;\n c += (cell.columnSpan - 1);\n }\n }\n // So, nested grid drawing is completed for the current row. Update page.\n // Otherwise, the next nested grid of the parent will draw borders from start.\n startPage = this.currentPage;\n }\n }\n }\n let isPdfGrid = false;\n let maximumCellBoundsWidth = 0;\n if (cellBounds.length > 0) {\n maximumCellBoundsWidth = cellBounds[0];\n }\n let largeNavigatePage = [[1, 2]];\n for (let c = 0; c < this.Grid.rows.count; c++) {\n if (this.cellEndIndex != -1 && this.Grid.rows.getRow(c).cells.getCell(this.cellEndIndex).value instanceof PdfGrid) {\n let grid = this.Grid.rows.getRow(c).cells.getCell(this.cellEndIndex).value;\n this.rowLayoutBoundsWidth = grid.rowLayoutBoundsWidth;\n isPdfGrid = true;\n // if (largeNavigatePage[0][0] < grid.listOfNavigatePages.length)\n // {\n // largeNavigatePage[0][0] = grid.listOfNavigatePages.length;\n // largeNavigatePage[0][1] = cellBounds[c];\n // }\n // else if ((largeNavigatePage[0][0] == grid.listOfNavigatePages.length) && (largeNavigatePage[0][1] < cellBounds[c]))\n // {\n // largeNavigatePage[0][1] = cellBounds[c];\n // }\n }\n }\n if (!isPdfGrid && cellBounds.length > 0) {\n for (let c = 0; c < i - 1; c++) {\n if (maximumCellBoundsWidth < cellBounds[c]) {\n maximumCellBoundsWidth = cellBounds[c];\n }\n }\n this.rowLayoutBoundsWidth = maximumCellBoundsWidth;\n }\n else {\n this.rowLayoutBoundsWidth = largeNavigatePage[0][1];\n }\n if (this.columnRanges.indexOf(range) < this.columnRanges.length - 1\n && startPage != null && format.layout != PdfLayoutType.OnePage) {\n isParentCell = this.Grid.isChildGrid;\n if (largeNavigatePage[0][0] != 0) {\n let section = this.currentPage.section;\n let pageIndex = section.indexOf(this.currentPage);\n this.currentGraphics = this.currentPage.graphics;\n this.currentBounds = new RectangleF(new PointF(0, 0), this.currentPage.getClientSize());\n let pageindex = this.currentGraphics.page.section.indexOf(this.currentGraphics.page);\n }\n else {\n this.currentPage = this.getNextPageformat(format);\n }\n // let locationGrid : PointF= new PointF(PdfBorders.default.right.width / 2, PdfBorders.default.top.width / 2);\n // if (format.paginateBounds == new RectangleF(0,0,0,0) && this.startLocation == locationGrid)\n // {\n // this.currentBounds.x += this.startLocation.x;\n // this.currentBounds.y += this.startLocation.y;\n // }\n }\n if (this.columnRanges.length - 1 !== index && this.columnRanges.length > 1 && format.layout !== PdfLayoutType.OnePage) {\n this.currentPage = this.getNextPageformat(format);\n if ((format.paginateBounds.x === format.paginateBounds.y) && (format.paginateBounds.y === format.paginateBounds.height)\n && (format.paginateBounds.height === format.paginateBounds.width) && (format.paginateBounds.width === 0)) {\n this.currentBounds.x += this.startLocation.x;\n this.currentBounds.y += this.startLocation.y;\n //this.currentBounds.height = this.pageBounds.height;\n }\n }\n }\n result = this.getLayoutResult();\n if (this.Grid.style.allowHorizontalOverflow && this.Grid.style.horizontalOverflowType == PdfHorizontalOverflowType.NextPage) {\n this.reArrangePages(layoutedPages);\n }\n this.raisePageLayouted(result);\n return result;\n }\n /* tslint:enable */\n /**\n * Gets the `next page`.\n * @private\n */\n getNextPageformat(format) {\n let section = this.currentPage.section;\n let nextPage = null;\n let index = section.indexOf(this.currentPage);\n this.flag = false;\n if (index === section.count - 1) {\n nextPage = section.add();\n }\n else {\n nextPage = section.getPages()[index + 1];\n }\n this.currentGraphics = nextPage.graphics;\n let pageindex = this.currentGraphics.page.section.indexOf(this.currentGraphics.page);\n if (!(this.listOfNavigatePages.indexOf(pageindex) !== -1)) {\n this.listOfNavigatePages.push(pageindex);\n }\n this.currentBounds = new RectangleF(new PointF(0, 0), nextPage.getClientSize());\n // if ((format.paginateBounds.x !== format.paginateBounds.y) && (format.paginateBounds.y !== format.paginateBounds.height)\n // && (format.paginateBounds.height !== format.paginateBounds.width) && (format.paginateBounds.width !== 0)) {\n // this.currentBounds.x = format.paginateBounds.x;\n // this.currentBounds.y = format.paginateBounds.y;\n // this.currentBounds.height = format.paginateBounds.height;\n // }\n return nextPage;\n }\n CheckIfDefaultFormat(format) {\n let defaultFormat = new PdfStringFormat();\n return (format.alignment === defaultFormat.alignment && format.characterSpacing === defaultFormat.characterSpacing &&\n format.clipPath === defaultFormat.clipPath && format.firstLineIndent === defaultFormat.firstLineIndent &&\n format.horizontalScalingFactor === defaultFormat.horizontalScalingFactor &&\n format.lineAlignment === defaultFormat.lineAlignment\n && format.lineLimit === defaultFormat.lineLimit && format.lineSpacing === defaultFormat.lineSpacing &&\n format.measureTrailingSpaces === defaultFormat.measureTrailingSpaces && format.noClip === defaultFormat.noClip &&\n format.paragraphIndent === defaultFormat.paragraphIndent && format.rightToLeft === defaultFormat.rightToLeft &&\n format.subSuperScript === defaultFormat.subSuperScript && format.wordSpacing === defaultFormat.wordSpacing &&\n format.wordWrap === defaultFormat.wordWrap);\n }\n /**\n * `Raises BeforeCellDraw event`.\n * @private\n */\n RaiseBeforeCellDraw(graphics, rowIndex, cellIndex, bounds, value, style) {\n let args = null;\n if (this.Grid.raiseBeginCellDraw) {\n args = new PdfGridBeginCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, style);\n this.Grid.onBeginCellDraw(args);\n style = args.style;\n }\n return style;\n }\n /**\n * `Raises AfterCellDraw event`.\n * @private\n */\n raiseAfterCellDraw(graphics, rowIndex, cellIndex, bounds, value, cellstyle) {\n let args = null;\n if (this.Grid.raiseEndCellDraw) {\n args = new PdfGridEndCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, cellstyle);\n this.Grid.onEndCellDraw(args);\n }\n }\n reArrangePages(layoutedPages) {\n let document = this.currentPage.document;\n let pages = [];\n let keys = layoutedPages.keys();\n let values = layoutedPages.values();\n for (let i = 0; i < keys.length; i++) {\n let page = keys[i];\n page.section = null;\n pages.push(page);\n document.pages.remove(page);\n }\n /* tslint:disable */\n for (let i = 0; i < layoutedPages.size(); i++) {\n for (let j = i, count = (layoutedPages.size() / this.columnRanges.length); j < layoutedPages.size(); j += count) {\n let page = pages[j];\n if (document.pages.indexOf(page) === -1) {\n document.pages.add(page);\n }\n }\n }\n /* tslint:enable */\n }\n /**\n * Gets the `layout result`.\n * @private\n */\n getLayoutResult() {\n if (this.Grid.isChildGrid && this.Grid.allowRowBreakAcrossPages) {\n for (let i = 0; i < this.Grid.rows.count; i++) {\n let row = this.Grid.rows.getRow(i);\n if (row.rowBreakHeight > 0 && row.repeatFlag) {\n this.startLocation.y = this.currentPage.origin.y;\n }\n }\n }\n let bounds;\n if (!this.isChanged) {\n bounds = new RectangleF(this.startLocation, new SizeF(this.currentBounds.width, this.currentBounds.y -\n this.startLocation.y));\n }\n // else {\n // bounds = new RectangleF(this.currentLocation, new SizeF(this.currentBounds.width, this.currentBounds.y -\n // this.currentLocation.y));\n // }\n /* tslint:enable */\n return new PdfGridLayoutResult(this.currentPage, bounds);\n }\n /**\n * `Recalculate row height` for the split cell to be drawn.\n * @private\n */\n ReCalculateHeight(row, height) {\n let newHeight = 0.0;\n for (let i = this.cellStartIndex; i <= this.cellEndIndex; i++) {\n if (!(row.cells.getCell(i).remainingString === null || row.cells.getCell(i).remainingString === '' ||\n typeof row.cells.getCell(i).remainingString === 'undefined')) {\n newHeight = Math.max(newHeight, row.cells.getCell(i).measureHeight());\n }\n }\n return Math.max(height, newHeight);\n }\n /**\n * `Raises BeforePageLayout event`.\n * @private\n */\n raiseBeforePageLayout(currentPage, currentBounds, currentRow) {\n let cancel = false;\n if (this.Grid.raiseBeginPageLayout) {\n let args = new PdfGridBeginPageLayoutEventArgs(currentBounds, currentPage, currentRow);\n this.Grid.onBeginPageLayout(args);\n // if (currentBounds !== args.Bounds) {\n // this.isChanged = true;\n // this.currentLocation = new PointF(args.Bounds.x, args.Bounds.y);\n // this.measureColumnsWidth(new RectangleF(new PointF(args.Bounds.x, args.Bounds.y) ,\n // new SizeF(args.Bounds.width + args.Bounds.x ,\n // args.Bounds.height)));\n // }\n cancel = args.cancel;\n currentBounds = args.bounds;\n currentRow = args.startRowIndex;\n }\n return { returnValue: cancel, currentBounds: currentBounds, currentRowIndex: currentRow };\n }\n /**\n * `Raises PageLayout event` if needed.\n * @private\n */\n raisePageLayouted(result) {\n let args = new PdfGridEndPageLayoutEventArgs(result);\n if (this.Grid.raiseEndPageLayout) {\n this.Grid.onEndPageLayout(args);\n }\n return args;\n }\n drawRow(row, result, height) {\n if (typeof result === 'undefined') {\n //.. Check if required space available.\n //.....If the row conains spans which falls through more than one page, then draw the row to next page. \n let result = new RowLayoutResult();\n let rowHeightWithSpan = 0;\n let isHeader = false;\n if (row.rowSpanExists) {\n let maxSpan = 0;\n let currRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n if (currRowIndex === -1) {\n currRowIndex = this.Grid.headers.indexOf(row);\n if (currRowIndex !== -1) {\n isHeader = true;\n }\n }\n for (let i = 0; i < row.cells.count; i++) {\n let cell = row.cells.getCell(i);\n maxSpan = Math.max(maxSpan, cell.rowSpan);\n }\n for (let i = currRowIndex; i < currRowIndex + maxSpan; i++) {\n rowHeightWithSpan += (isHeader ? this.Grid.headers.getHeader(i).height : this.Grid.rows.getRow(i).height);\n }\n // let rowMaxHeight : number = rowHeightWithSpan;\n // for (let i : number = 0; i < row.cells.count; i++ ) {\n // rowMaxHeight = rowMaxHeight > row.cells.getCell(i).height ? rowMaxHeight : row.cells.getCell(i).height;\n // }\n // let flag : boolean = true;\n // let nextRow : PdfGridRow = this.Grid.headers.getHeader(this.Grid.headers.indexOf(row) + 1);\n // for (let i : number = 0; i < nextRow.cells.count; i++ ) {\n // if (nextRow.cells.getCell(i).value !== '' && nextRow.cells.getCell(i).value !== undefined) {\n // flag = false;\n // break;\n // }\n // }\n // if ((rowMaxHeight > rowHeightWithSpan) && flag) {\n // row.height += (rowMaxHeight - rowHeightWithSpan);\n // } \n }\n let calculatedHeight = row.rowBreakHeight > 0.0 ? row.rowBreakHeight : row.height;\n if (this.Grid.isChildGrid && this.Grid.ParentCell != null) {\n //Split row only if row height exceeds page height and AllowRowBreakAcrossPages is true.\n // if (calculatedHeight + this.Grid.ParentCell.row.grid.style.cellPadding.bottom +\n // this.Grid.ParentCell.row.grid.style.cellPadding.top > this.currentPageBounds.height) {\n // if (this.Grid.allowRowBreakAcrossPages) {\n // result.isFinish = true;\n // if ( this.Grid.isChildGrid && row.rowBreakHeight > 0 ) {\n // if (this.Grid.ParentCell.row.grid.style.cellPadding !== null) {\n // this.currentBounds.y += this.Grid.ParentCell.row.grid.style.cellPadding.top;\n // }\n // this.currentBounds.x = this.startLocation.x;\n // }\n // result.bounds = this.currentBounds ;\n // this.drawRowWithBreak(result, row, calculatedHeight);\n // } else {\n // //If AllowRowBreakAcrossPages is not true, draw the row till it fits the page. \n // if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n // this.currentBounds.y += this.Grid.ParentCell.row.grid.style.cellPadding.top;\n // calculatedHeight = this.currentBounds.height - this.currentBounds.y -\n // this.Grid.ParentCell.row.grid.style.cellPadding.bottom;\n // }\n // result.isFinish = false;\n // this.drawRow( row, result, calculatedHeight);\n // }\n // } else\n if (this.currentBounds.y + this.Grid.ParentCell.row.grid.style.cellPadding.bottom + calculatedHeight >\n this.currentPageBounds.height || this.currentBounds.y + this.Grid.ParentCell.row.grid.style.cellPadding.bottom\n + calculatedHeight > this.currentBounds.height || this.currentBounds.y +\n this.Grid.ParentCell.row.grid.style.cellPadding.bottom + rowHeightWithSpan > this.currentPageBounds.height) {\n //If a row is repeated and still cannot fit in page, proceed draw.\n if (this.Grid.ParentCell.row.grid.LayoutFormat.break === PdfLayoutBreakType.FitPage) {\n PdfGridLayouter.repeatRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n this.Grid.splitChildRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n }\n if (PdfGridLayouter.repeatRowIndex > -1 && PdfGridLayouter.repeatRowIndex === row.rowIndex) {\n if (this.Grid.allowRowBreakAcrossPages) {\n result.isFinish = true;\n // if (this.Grid.isChildGrid && row.rowBreakHeightValue > 0) {\n // // if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n // // this.currentBounds.y += this.Grid.ParentCell.row.grid.style.cellPadding.top;\n // // }\n // this.currentBounds.x = this.startLocation.x;\n // }\n result.bounds = this.currentBounds;\n this.drawRowWithBreak(result, row, calculatedHeight);\n row.repeatFlag = true;\n row.repeatRowNumber = PdfGridLayouter.repeatRowIndex;\n }\n // else {\n // result.isFinish = false;\n // row.repeatFlag = false;\n // this.drawRow( row, result, calculatedHeight);\n // }\n }\n // else {\n // result.isFinish = false;\n // }\n }\n else {\n result.isFinish = true;\n if (row.grid.ParentCell.row.rowBreakHeightValue > 0) {\n row.repeatFlag = true;\n }\n else {\n row.repeatFlag = false;\n calculatedHeight = row.height;\n }\n if (this.Grid.isChildGrid && row.rowBreakHeight > 0) {\n if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n calculatedHeight += this.Grid.ParentCell.row.grid.style.cellPadding.bottom;\n }\n }\n this.drawRow(row, result, calculatedHeight);\n }\n }\n else {\n //Split row only if row height exceeds page height and AllowRowBreakAcrossPages is true.\n if (calculatedHeight > this.currentPageBounds.height) {\n if (this.Grid.allowRowBreakAcrossPages) {\n result.isFinish = true;\n //result.bounds = this.currentBounds;\n this.drawRowWithBreak(result, row, calculatedHeight);\n row.isrowFinish = true;\n row.repeatFlag = true;\n if (row.grid.splitChildRowIndex !== -1) {\n result.isFinish = false;\n }\n }\n // else {\n // //If AllowRowBreakAcrossPages is not true, draw the row till it fits the page.\n // result.isFinish = false;\n // this.drawRow( row, result, calculatedHeight);\n // }\n }\n else if (this.currentBounds.y + calculatedHeight > this.currentPageBounds.height ||\n this.currentBounds.y + calculatedHeight > (this.currentBounds.height + this.startLocation.y) ||\n this.currentBounds.y + rowHeightWithSpan > this.currentPageBounds.height) {\n // If a row is repeated and still cannot fit in page, proceed draw.\n if (this.Grid.LayoutFormat.break === PdfLayoutBreakType.FitPage) {\n PdfGridLayouter.repeatRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n }\n if (PdfGridLayouter.repeatRowIndex > -1 && PdfGridLayouter.repeatRowIndex === row.rowIndex) {\n if (this.Grid.allowRowBreakAcrossPages) {\n result.isFinish = true;\n this.drawRowWithBreak(result, row, calculatedHeight);\n row.repeatFlag = true;\n row.repeatRowNumber = PdfGridLayouter.repeatRowIndex;\n if (row.grid.splitChildRowIndex !== -1) {\n result.isFinish = false;\n }\n }\n // else {\n // result.isFinish = false;\n // this.drawRow(row, result, calculatedHeight);\n // }\n }\n else {\n result.isFinish = false;\n }\n }\n else {\n result.isFinish = true;\n this.drawRow(row, result, calculatedHeight);\n row.repeatFlag = false;\n }\n }\n return result;\n }\n else {\n let skipcell = false;\n let location = new PointF(this.currentBounds.x, this.currentBounds.y);\n // if (row.grid.isChildGrid && row.grid.allowRowBreakAcrossPages && this.startLocation.x !== this.currentBounds.x && row.width <\n // this.currentPage.getClientSize().width) {\n // location.x = this.startLocation.x;\n // }\n result.bounds = new RectangleF(location, new SizeF(0, 0));\n height = this.ReCalculateHeight(row, height);\n for (let i = this.cellStartIndex; i <= this.cellEndIndex; i++) {\n let cancelSpans = ((i > this.cellEndIndex + 1) && (row.cells.getCell(i).columnSpan > 1));\n // let cancelSpans : boolean = false;\n if (!cancelSpans) {\n for (let j = 1; j < row.cells.getCell(i).columnSpan; j++) {\n row.cells.getCell(i + j).isCellMergeContinue = true;\n }\n }\n let size = new SizeF(this.Grid.columns.getColumn(i).width, height);\n // if (size.width > this.currentGraphics.clientSize.width) {\n // size.width = this.currentGraphics.clientSize.width;\n // }\n // if (this.Grid.isChildGrid && this.Grid.style.allowHorizontalOverflow) {\n // if (size.width >= this.currentGraphics.clientSize.width) {\n // size.width -= 2 * this.currentBounds.x;\n // }\n // }\n /* tslint:disable */\n if (!this.CheckIfDefaultFormat(this.Grid.columns.getColumn(i).format) &&\n this.CheckIfDefaultFormat(row.cells.getCell(i).stringFormat)) {\n row.cells.getCell(i).stringFormat = this.Grid.columns.getColumn(i).format;\n }\n let cellstyle = row.cells.getCell(i).style;\n let tempValue = ((typeof row.cells.getCell(i).value === 'string' &&\n row.cells.getCell(i).value !== null) ? row.cells.getCell(i).value : '');\n row.cells.getCell(i).style = this.RaiseBeforeCellDraw(this.currentGraphics, this.currentRowIndex, i, new RectangleF(location, size), tempValue, cellstyle);\n //row.cells.getCell(i).style = cellstyle;\n if (!skipcell) {\n if (row.cells.getCell(i).value instanceof PdfGrid) {\n let grid = row.cells.getCell(i).value;\n grid.parentCellIndex = i;\n }\n let stringResult = row.cells.getCell(i).draw(this.currentGraphics, new RectangleF(location, size), cancelSpans);\n if (row.grid.style.allowHorizontalOverflow && (row.cells.getCell(i).columnSpan > this.cellEndIndex ||\n i + row.cells.getCell(i).columnSpan > this.cellEndIndex + 1) && this.cellEndIndex < row.cells.count - 1) {\n row.rowOverflowIndex = this.cellEndIndex;\n }\n if (row.grid.style.allowHorizontalOverflow && (row.rowOverflowIndex > 0 && (row.cells.getCell(i).columnSpan >\n this.cellEndIndex || i + row.cells.getCell(i).columnSpan > this.cellEndIndex + 1)) &&\n row.cells.getCell(i).columnSpan - this.cellEndIndex + i - 1 > 0) {\n row.cells.getCell(row.rowOverflowIndex + 1).value = stringResult !== null ? (stringResult.remainder !== undefined) ?\n stringResult.remainder : '' : '';\n row.cells.getCell(row.rowOverflowIndex + 1).stringFormat = row.cells.getCell(i).stringFormat;\n row.cells.getCell(row.rowOverflowIndex + 1).style = row.cells.getCell(i).style;\n row.cells.getCell(row.rowOverflowIndex + 1).columnSpan = row.cells.getCell(i).columnSpan - this.cellEndIndex + i - 1;\n }\n }\n /* tslint:enable */\n tempValue = ((typeof row.cells.getCell(i).value === 'string' &&\n row.cells.getCell(i).value !== null) ? row.cells.getCell(i).value : '');\n if (!cancelSpans) {\n this.raiseAfterCellDraw(this.currentGraphics, this.currentRowIndex, i, new RectangleF(location, size), tempValue, row.cells.getCell(i).style);\n }\n if (row.cells.getCell(i).value instanceof PdfGrid) {\n let grid = row.cells.getCell(i).value;\n if (this.Grid.columns.getColumn(i).width >= this.currentGraphics.clientSize.width) {\n location.x = grid.rowLayoutBoundsWidth;\n location.x += grid.style.cellSpacing;\n }\n else {\n location.x += this.Grid.columns.getColumn(i).width;\n }\n }\n else {\n location.x += this.Grid.columns.getColumn(i).width;\n }\n }\n if (!row.rowMergeComplete || row.isRowHeightSet) {\n this.currentBounds.y += height;\n }\n result.bounds = new RectangleF(new PointF(result.bounds.x, result.bounds.y), new SizeF(location.x, location.y));\n }\n }\n drawRowWithBreak(result, row, calculateHeight) {\n let location = new PointF(this.currentBounds.x, this.currentBounds.y);\n if (row.grid.isChildGrid && row.grid.allowRowBreakAcrossPages && this.startLocation.x !== this.currentBounds.x) {\n location.x = this.startLocation.x;\n }\n result.bounds = new RectangleF(location, new SizeF(0, 0));\n this.gridHeight = row.rowBreakHeight > 0 ? this.currentPageBounds.height : 0;\n // Calculate the remaining height.\n if (row.grid.style.cellPadding.top + this.currentBounds.y + row.grid.style.cellPadding.bottom < this.currentPageBounds.height) {\n row.rowBreakHeight = this.currentBounds.y + calculateHeight - this.currentPageBounds.height;\n }\n // else {\n // row.rowBreakHeight = calculateHeight;\n // result.isFinish = false;\n // return;\n // }\n // No need to explicit break if the row height is equal to grid height.\n for (let i = 0; i < row.cells.count; i++) {\n let cell = row.cells.getCell(i);\n let cellHeight = cell.measureHeight();\n if (cellHeight === calculateHeight && cell.value instanceof PdfGrid) {\n row.rowBreakHeight = 0;\n }\n // else if (cellHeight === calculateHeight && (cell.value as PdfGrid) === null) {\n // row.rowBreakHeight = this.currentBounds.y + calculateHeight - this.currentPageBounds.height;\n // }\n }\n for (let i = this.cellStartIndex; i <= this.cellEndIndex; i++) {\n let cancelSpans = ((row.cells.getCell(i).columnSpan + i > this.cellEndIndex + 1) &&\n (row.cells.getCell(i).columnSpan > 1));\n // if (!cancelSpans) {\n // for (let k : number = 1; k < row.cells.getCell(i).columnSpan; k++) {\n // row.cells.getCell(i + k).isCellMergeContinue = true;\n // }\n //}\n let size = new SizeF(this.Grid.columns.getColumn(i).width, this.gridHeight > 0.0 ? this.gridHeight :\n this.currentPageBounds.height);\n // if (size.width === 0) {\n // size = new SizeF(row.cells.getCell(i).width, size.height);\n // }\n // if (!this.CheckIfDefaultFormat(this.Grid.columns.getColumn(i).format) &&\n // this.CheckIfDefaultFormat((row.cells.getCell(i).stringFormat))) {\n // row.cells.getCell(i).stringFormat = this.Grid.columns.getColumn(i).format;\n // }\n let cellstyle1 = row.cells.getCell(i).style;\n row.cells.getCell(i).style = cellstyle1;\n let skipcell = false;\n let stringResult = null;\n if (!skipcell) {\n stringResult = row.cells.getCell(i).draw(this.currentGraphics, new RectangleF(location, size), cancelSpans);\n }\n //If still row is to be drawn, set cell finished drawing cell as false and update the text to be drawn.\n if (row.rowBreakHeight > 0.0) {\n if (stringResult != null) {\n row.cells.getCell(i).FinishedDrawingCell = false;\n row.cells.getCell(i).remainingString = stringResult.remainder == null ? ' ' : stringResult.remainder;\n if (row.grid.isChildGrid) {\n row.rowBreakHeight = calculateHeight - stringResult.actualSize.height;\n }\n }\n }\n result.isFinish = (!result.isFinish) ? result.isFinish : row.cells.getCell(i).FinishedDrawingCell;\n // let tempValue : string = ((typeof row.cells.getCell(i).value === 'string' &&\n //row.cells.getCell(i).value !== null) ? row.cells.getCell(i).value : '') as string;\n // if (!cancelSpans) {\n // // this.raiseAfterCellDraw(this.currentGraphics, this.currentRowIndex, i,\n // // new RectangleF(location, size), tempValue, row.cells.getCell(i).style); \n // this.raiseAfterCellDraw(this.currentGraphics, this.currentRowIndex, i, new RectangleF(location, size),\n // (row.cells.getCell(i).value as string) ? row.cells.getCell(i).value.toString() : ' ',\n // row.cells.getCell(i).style);\n // } \n if (row.cells.getCell(i).value instanceof PdfGrid) {\n let grid = row.cells.getCell(i).value;\n this.rowBreakPageHeightCellIndex = i;\n // row.cells.getCell(i).pageCount = grid.listOfNavigatePages.length;\n // for (let j : number = 0;j= this.currentGraphics.clientSize.width) {\n location.x = this.rowLayoutBoundsWidth;\n location.x += grid.style.cellSpacing;\n }\n else {\n location.x += this.Grid.columns.getColumn(i).width;\n }\n }\n else {\n location.x += this.Grid.columns.getColumn(i).width;\n }\n }\n this.currentBounds.y += this.gridHeight > 0.0 ? this.gridHeight : calculateHeight;\n result.bounds = new RectangleF(new PointF(result.bounds.x, result.bounds.y), new SizeF(location.x, location.y));\n }\n}\n/**\n * @hidden\n * @private\n */\nPdfGridLayouter.repeatRowIndex = -1;\n// recalculateBounds : boolean, clientSize : SizeF\n//Implementation\n/**\n * `Initializes` internal data.\n * @private\n */\n//Internal declaration\nclass PdfGridLayoutResult extends PdfLayoutResult {\n /**\n * Constructor\n * @private\n */\n constructor(page, bounds) {\n super(page, bounds);\n }\n}\n/**\n * `PdfGridLayoutFormat` class represents a flexible grid that consists of columns and rows.\n */\nclass PdfGridLayoutFormat extends PdfLayoutFormat {\n /**\n * Initializes a new instance of the `PdfGridLayoutFormat` class.\n * @private\n */\n constructor(baseFormat) {\n super(baseFormat);\n }\n}\nclass GridCellEventArgs {\n // Properties\n /**\n * Gets the value of current `row index`.\n * @private\n */\n get rowIndex() {\n return this.gridRowIndex;\n }\n /**\n * Gets the value of current `cell index`.\n * @private\n */\n get cellIndex() {\n return this.gridCellIndex;\n }\n /**\n * Gets the actual `value` of current cell.\n * @private\n */\n get value() {\n return this.internalValue;\n }\n /**\n * Gets the `bounds` of current cell.\n * @private\n */\n get bounds() {\n return this.gridBounds;\n }\n /**\n * Gets the instance of `current graphics`.\n * @private\n */\n get graphics() {\n return this.pdfGraphics;\n }\n // Constructors\n /**\n * Initialize a new instance for `GridCellEventArgs` class.\n * @private\n */\n constructor(graphics, rowIndex, cellIndex, bounds, value) {\n this.gridRowIndex = rowIndex;\n this.gridCellIndex = cellIndex;\n this.internalValue = value;\n this.gridBounds = bounds;\n this.pdfGraphics = graphics;\n }\n}\nclass PdfGridBeginCellDrawEventArgs extends GridCellEventArgs {\n // Properties\n /**\n * Gets or sets a value indicating whether the value of this cell should be `skipped`.\n * @private\n */\n get skip() {\n return this.bSkip;\n }\n set skip(value) {\n this.bSkip = value;\n }\n /**\n * Gets or sets a `style` value of the cell.\n * @private\n */\n get style() {\n return this.cellStyle;\n }\n set style(value) {\n this.cellStyle = value;\n }\n // Constructors\n /**\n * Initializes a new instance of the `StartCellLayoutEventArgs` class.\n * @private\n */\n constructor(graphics, rowIndex, cellIndex, bounds, value, style) {\n super(graphics, rowIndex, cellIndex, bounds, value);\n this.style = style;\n }\n}\nclass PdfGridEndCellDrawEventArgs extends GridCellEventArgs {\n // Propertise\n /**\n * Get the `PdfGridCellStyle`.\n * @private\n */\n get style() {\n return this.cellStyle;\n }\n // Constructors\n /**\n * Initializes a new instance of the `PdfGridEndCellLayoutEventArgs` class.\n * @private\n */\n constructor(graphics, rowIndex, cellIndex, bounds, value, style) {\n super(graphics, rowIndex, cellIndex, bounds, value);\n this.cellStyle = style;\n }\n}\nclass PdfCancelEventArgs {\n // Properties\n /**\n * Gets and Sets the value of `cancel`.\n * @private\n */\n get cancel() {\n return this.isCancel;\n }\n set cancel(value) {\n this.isCancel = value;\n }\n}\nclass BeginPageLayoutEventArgs extends PdfCancelEventArgs {\n // Properties\n /**\n * Gets or sets value that indicates the lay outing `bounds` on the page.\n * @private\n */\n get bounds() {\n return this.cellBounds;\n }\n set bounds(value) {\n this.cellBounds = value;\n }\n /**\n * Gets the `page` where the lay outing should start.\n * @private\n */\n get page() {\n return this.pdfPage;\n }\n // Constructors\n /**\n * Initializes a new instance of the `BeginPageLayoutEventArgs` class with the specified rectangle and page.\n * @private\n */\n constructor(bounds, page) {\n super();\n this.bounds = bounds;\n this.pdfPage = page;\n }\n}\n/**\n * `EndPageLayoutEventArgs` class is alternate for end page layout events.\n */\nclass EndPageLayoutEventArgs extends PdfCancelEventArgs {\n // Properties\n /**\n * Gets the lay outing `result` of the page.\n * @private\n */\n get result() {\n return this.layoutResult;\n }\n /**\n * Gets or sets a value indicating the `next page` where the element should be layout.\n * @private\n */\n get nextPage() {\n return this.nextPdfPage;\n }\n set nextPage(value) {\n this.nextPdfPage = value;\n }\n // Constructors\n /**\n * Initializes a new instance of the `EndPageLayoutEventArgs` class. with the specified 'PdfLayoutResult'.\n * @private\n */\n constructor(result) {\n super();\n this.layoutResult = result;\n }\n}\n/**\n * `PdfGridBeginPageLayoutEventArgs` class is alternate for begin page layout events.\n */\nclass PdfGridBeginPageLayoutEventArgs extends BeginPageLayoutEventArgs {\n // Properties\n /**\n * Gets the `start row index`.\n * @private\n */\n get startRowIndex() {\n return this.startRow;\n }\n // Constructors\n /**\n * Initialize a new instance of `PdfGridBeginPageLayoutEventArgs` class.\n * @private\n */\n constructor(bounds, page, startRow) {\n super(bounds, page);\n this.startRow = startRow;\n }\n}\n/**\n * `PdfGridEndPageLayoutEventArgs` class is alternate for begin page layout events.\n */\nclass PdfGridEndPageLayoutEventArgs extends EndPageLayoutEventArgs {\n // Constructors\n /**\n * Initialize a new instance of `PdfGridEndPageLayoutEventArgs` class.\n * @private\n */\n constructor(result) {\n super(result);\n }\n}\nclass RowLayoutResult {\n /**\n * Gets or sets a value indicating whether this instance `is finish`.\n * @private\n */\n get isFinish() {\n return this.bIsFinished;\n }\n set isFinish(value) {\n this.bIsFinished = value;\n }\n /**\n * Gets or sets the `bounds`.\n * @private\n */\n get bounds() {\n return this.layoutedBounds;\n }\n set bounds(value) {\n this.layoutedBounds = value;\n }\n //Constructors\n /**\n * Initializes a new instance of the `RowLayoutResult` class.\n * @private\n */\n constructor() {\n this.layoutedBounds = new RectangleF(0, 0, 0, 0);\n }\n}\n\n/**\n * ShapeLayouter.ts class for EJ2-PDF\n * @private\n */\n/**\n * ShapeLayouter class.\n * @private\n */\nclass ShapeLayouter extends ElementLayouter {\n // Constructors\n /**\n * Initializes a new instance of the `ShapeLayouter` class.\n * @private\n */\n constructor(element) {\n super(element);\n // Fields\n /**\n * Initializes the object to store `older form elements` of previous page.\n * @default 0\n * @private\n */\n this.olderPdfForm = 0;\n /**\n * The `bounds` of the shape element.\n * * @default new RectangleF()\n * @private\n */\n this.shapeBounds = new RectangleF();\n /**\n * Total Page size of the web page.\n * * @default 0\n * @private\n */\n this.totalPageSize = 0;\n }\n // Properties\n /**\n * Gets shape element.\n * @private\n */\n get element() {\n return this.elements;\n }\n // Implementation\n /**\n * Layouts the element.\n * @private\n */\n layoutInternal(param) {\n let currentPage = param.page;\n let currentBounds = param.bounds;\n let shapeLayoutBounds = this.element.getBounds();\n shapeLayoutBounds.x = 0;\n shapeLayoutBounds.y = 0;\n /* tslint:disable */\n let isEmpty = (this.shapeBounds.x === this.shapeBounds.y && this.shapeBounds.y === this.shapeBounds.width && this.shapeBounds.width === this.shapeBounds.height && this.shapeBounds.height === 0) ? true : false;\n /* tslint:enable */\n if ((this.isPdfGrid) && (!(isEmpty))) {\n shapeLayoutBounds = this.shapeBounds;\n }\n let result = null;\n let pageResult = new ShapeLayoutResult();\n pageResult.page = currentPage;\n /*tslint:disable:no-constant-condition */\n while (true) {\n // Raise event.\n let result1 = this.raiseBeforePageLayout(currentPage, currentBounds);\n currentBounds = result1.currentBounds;\n let endArgs = null;\n if (!result1.cancel) {\n pageResult = this.layoutOnPage(currentPage, currentBounds, shapeLayoutBounds, param);\n // Raise event.\n endArgs = this.raiseEndPageLayout(pageResult);\n result1.cancel = (endArgs === null) ? false : endArgs.cancel;\n }\n if (!pageResult.end && !result1.cancel) {\n currentBounds = this.getPaginateBounds(param);\n shapeLayoutBounds = this.getNextShapeBounds(shapeLayoutBounds, pageResult);\n currentPage = (endArgs === null || endArgs.nextPage === null) ?\n this.getNextPage(currentPage) : endArgs.nextPage;\n if (this.isPdfGrid) {\n result = this.getLayoutResult(pageResult);\n break;\n }\n }\n else {\n result = this.getLayoutResult(pageResult);\n break;\n }\n }\n return result;\n }\n /**\n * Raises BeforePageLayout event.\n * @private\n */\n raiseBeforePageLayout(currentPage, currentBounds) {\n let cancel = false;\n if (this.element.raiseBeginPageLayout) {\n let args = new BeginPageLayoutEventArgs(currentBounds, currentPage);\n this.element.onBeginPageLayout(args);\n cancel = args.cancel;\n currentBounds = args.bounds;\n }\n return { currentBounds: currentBounds, cancel: cancel };\n }\n /**\n * Raises PageLayout event if needed.\n * @private\n */\n raiseEndPageLayout(pageResult) {\n let args = null;\n if (this.element.raiseEndPageLayout) {\n let res = this.getLayoutResult(pageResult);\n args = new EndPageLayoutEventArgs(res);\n this.element.onEndPageLayout(args);\n }\n return args;\n }\n /**\n * Creates layout result.\n * @private\n */\n getLayoutResult(pageResult) {\n let result = new PdfLayoutResult(pageResult.page, pageResult.bounds);\n return result;\n }\n /**\n * Calculates the next active shape bounds.\n * @private\n */\n getNextShapeBounds(shapeLayoutBounds, pageResult) {\n let layoutedBounds = pageResult.bounds;\n shapeLayoutBounds.y = (shapeLayoutBounds.y + layoutedBounds.height);\n shapeLayoutBounds.height = (shapeLayoutBounds.height - layoutedBounds.height);\n return shapeLayoutBounds;\n }\n /**\n * Layouts the element on the current page.\n * @private\n */\n layoutOnPage(currentPage, curBounds, sBounds, param) {\n let result = new ShapeLayoutResult();\n curBounds = this.checkCorrectCurrentBounds(currentPage, curBounds, param);\n let fitToPage = this.fitsToBounds(curBounds, sBounds);\n let canDraw = !((param.format.break === PdfLayoutBreakType.FitElement)\n && (!fitToPage && (currentPage === param.page)));\n let shapeFinished = false;\n if (canDraw) {\n let drawRectangle = this.getDrawBounds(curBounds, sBounds);\n this.drawShape(currentPage.graphics, curBounds, drawRectangle);\n result.bounds = this.getPageResultBounds(curBounds, sBounds);\n shapeFinished = ((curBounds.height) >= (sBounds.height));\n }\n result.end = (shapeFinished || (param.format.layout === PdfLayoutType.OnePage));\n result.page = currentPage;\n return result;\n }\n /**\n * Returns Rectangle for element drawing on the page.\n * @private\n */\n getDrawBounds(currentBounds, shapeLayoutBounds) {\n let result = currentBounds;\n result.y = (result.y - shapeLayoutBounds.y);\n result.height = (result.height + shapeLayoutBounds.y);\n return result;\n }\n /**\n * Draws the shape.\n * @private\n */\n drawShape(g, currentBounds, drawRectangle) {\n let gState = g.save();\n try {\n g.setClip(currentBounds);\n this.element.drawGraphicsHelper(g, new PointF(drawRectangle.x, drawRectangle.y));\n }\n finally {\n g.restore(gState);\n }\n }\n /**\n * Corrects current bounds on the page.\n * @protected\n */\n checkCorrectCurrentBounds(currentPage, curBounds, param) {\n let pageSize = currentPage.graphics.clientSize;\n curBounds.width = (curBounds.width > 0) ? curBounds.width : (pageSize.width - curBounds.x);\n curBounds.height = (curBounds.height > 0) ? curBounds.height : (pageSize.height - curBounds.y);\n if (this.isPdfGrid) {\n curBounds.height = (curBounds.height - this.bottomCellPadding);\n }\n return curBounds;\n }\n /**\n * Calculates bounds where the shape was layout on the page.\n * @private\n */\n getPageResultBounds(currentBounds, shapeLayoutBounds) {\n let result = currentBounds;\n result.height = Math.min(result.height, shapeLayoutBounds.height);\n return result;\n }\n /**\n * Checks whether shape rectangle fits to the lay outing bounds.\n * @private\n */\n fitsToBounds(currentBounds, shapeLayoutBounds) {\n let fits = (shapeLayoutBounds.height <= currentBounds.height);\n return fits;\n }\n}\n/**\n * Initializes the offset `index`.\n * * @default 0\n * @private\n */\nShapeLayouter.index = 0;\n/**\n * Initializes the `difference in page height`.\n * * @default 0\n * @private\n */\nShapeLayouter.splitDiff = 0;\n/**\n * Determines the `end of Vertical offset` values.\n * * @default false\n * @private\n */\nShapeLayouter.last = false;\n/**\n * Determines the document link annotation `border width`.\n * * @default 0\n * @private\n */\nShapeLayouter.borderWidth = 0;\n/**\n * Contains lay outing result settings.\n * @private\n */\nclass ShapeLayoutResult {\n}\n\n/**\n * Base class for the main shapes.\n * @private\n */\nclass PdfShapeElement extends PdfLayoutElement {\n // methods\n /**\n * Gets the bounds.\n * @private\n */\n getBounds() {\n let rect = this.getBoundsInternal();\n return rect;\n }\n /**\n * `drawGraphicsHelper` the graphics.\n * @public\n */\n drawGraphicsHelper(graphics, location) {\n if ((graphics == null)) {\n throw new Error('ArgumentNullException :graphics');\n }\n this.drawShapeHelper(graphics, location.x, location.y);\n }\n /**\n * `drawShapeHelper` the graphics.\n * @private\n */\n drawShapeHelper(graphics, x, y) {\n let bNeedSave = (x !== 0.5 || y !== 0.5);\n let gState = null;\n // Translate co-ordinates.\n if (bNeedSave) {\n // Save state.\n gState = graphics.save();\n graphics.translateTransform(x, y);\n }\n this.drawInternal(graphics);\n if (bNeedSave) {\n // Restore state.\n graphics.restore(gState);\n }\n }\n /**\n * Layouts the element.\n * @private\n */\n layout(param) {\n let layouter = new ShapeLayouter(this);\n let result = layouter.layout(param);\n return result;\n }\n}\n\n/**\n * PdfDrawElement.ts class for EJ2-PDF\n */\n/**\n * Represents a base class for all page graphics elements.\n */\nclass PdfDrawElement extends PdfShapeElement {\n /**\n * Initializes a new instance of the `PdfDrawElement` class.\n * @protected\n */\n constructor(pen) {\n super();\n if (typeof pen !== 'undefined') {\n this.mpen = pen;\n }\n }\n // Properties\n /**\n * Gets or sets a pen that will be used to draw the element.\n * @public\n */\n get pen() {\n return this.mpen;\n }\n set pen(value) {\n this.mpen = value;\n }\n}\n\n/**\n * PdfFillElement.ts class for EJ2-PDF\n */\n/**\n * Represents a base class for all page graphics elements.\n */\nclass PdfFillElement extends PdfDrawElement {\n /**\n * Initializes a new instance of the `PdfFillElement` class.\n * @protected\n */\n constructor(arg1, arg2) {\n super();\n // Fields\n /**\n * Internal variable to store pen.\n * @private\n */\n this.mbrush = null;\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (arg1 instanceof PdfPen) {\n super(arg1);\n }\n else {\n this.mbrush = arg2;\n }\n }\n // Properties\n /**\n * Gets or sets a brush of the element.\n * @public\n */\n get brush() {\n return this.mbrush;\n }\n set brush(value) {\n this.mbrush = value;\n }\n // Implementation\n /**\n * Gets the pen. If both pen and brush are not explicitly defined, default pen will be used.\n * @protected\n */\n obtainPen() {\n return ((this.mbrush == null) && (this.pen == null)) ? new PdfPen(new PdfColor(0, 0, 0)) : this.pen;\n }\n}\n\n/**\n * Path.ts class for EJ2-PDF\n */\n/**\n * `PdfPath` class Implements graphics path, which is a sequence of primitive graphics elements.\n * @private\n */\nclass PdfPath extends PdfFillElement {\n /**\n * Initializes a new instance of the `PdfPath` class.\n * @public\n */\n /* tslint:disable-next-line:max-line-length */\n constructor(arg1, arg2, arg3, arg4) {\n super();\n // Fields\n /**\n * Local variable to store the points.\n * @private\n */\n this.mpoints = null;\n /**\n * Local variable to store the path Types.\n * @private\n */\n this.mpathTypes = null;\n /**\n * Local variable to store the Start Figure.\n * @private\n */\n this.mStartFigure = true;\n /**\n * Local variable to store the fill Mode.\n * @private\n */\n this.mfillMode = PdfFillMode.Alternate;\n /**\n * Local variable to store the Beziers.\n * @private\n */\n this.isBeziers3 = false;\n /**\n * Local variable to store the xps.\n * @private\n */\n this.isXps = false;\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (arg1 instanceof PdfPen) {\n super(arg1);\n if (arg2 instanceof PdfBrush) {\n super(arg1, arg2);\n this.fillMode = arg3;\n }\n else if (arg2 !== null && typeof arg2 !== 'undefined' && arg3 !== null && typeof arg3 !== 'undefined') {\n this.addPath(arg2, arg3);\n }\n }\n else if (arg1 instanceof PdfBrush) {\n super(arg1);\n if (arg2 !== null && typeof arg2 !== 'undefined') {\n this.fillMode = arg2;\n }\n if (arg3 !== null && typeof arg3 !== 'undefined' && arg4 !== null && typeof arg4 !== 'undefined') {\n this.addPath(arg3, arg4);\n }\n }\n else {\n this.addPath(arg1, arg2);\n }\n }\n // Properties\n /**\n * Gets or sets the fill mode.\n * @public\n */\n get fillMode() {\n return this.mfillMode;\n }\n set fillMode(value) {\n this.mfillMode = value;\n }\n /**\n * Gets the path points.\n * @public\n */\n get pathPoints() {\n return this.points;\n }\n /**\n * Gets the path point types.\n * @public\n */\n get pathTypes() {\n return this.types;\n }\n /**\n * Gets the point count.\n * @public\n */\n get pointCount() {\n let count = 0;\n if ((this.mpoints != null)) {\n count = this.mpoints.length;\n }\n return count;\n }\n /**\n * Gets the last points.\n * @public\n */\n get lastPoint() {\n return this.getLastPoint();\n }\n /**\n * Gets the points list.\n * @private\n */\n get points() {\n if ((this.mpoints == null)) {\n this.mpoints = [];\n }\n return this.mpoints;\n }\n /**\n * Gets the types.\n * @private\n */\n get types() {\n if ((this.mpathTypes == null)) {\n this.mpathTypes = [];\n }\n return this.mpathTypes;\n }\n draw(arg1, arg2, arg3, arg4) {\n if (arg2 instanceof PointF && typeof arg2.width === 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(arg1, arg2.x, arg2.y);\n }\n else if (arg2 instanceof RectangleF && typeof arg2.width !== 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(arg1, arg2, null);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'undefined') {\n return this.drawHelper(arg1, arg2, arg3, null);\n }\n else if (arg2 instanceof PointF && arg3 instanceof PdfLayoutFormat) {\n return this.drawHelper(arg1, arg2.x, arg2.y, arg3);\n }\n else if (typeof arg2 === 'number' && (arg4 instanceof PdfLayoutFormat || arg4 == null) && typeof arg3 === 'number') {\n let widthValue = (arg1.graphics.clientSize.width - arg2);\n let layoutRect = new RectangleF(arg2, arg3, widthValue, 0);\n return this.drawHelper(arg1, layoutRect, arg4);\n }\n else if (arg2 instanceof RectangleF && arg3 instanceof PdfLayoutFormat) {\n return this.drawHelper(arg1, arg2, arg3);\n }\n else {\n return this.drawHelper(arg1, arg2, arg3);\n }\n }\n addArc(arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof RectangleF) {\n this.addArc(arg1.x, arg1.y, arg1.width, arg1.height, arg2, arg3);\n }\n else {\n let points = this.getBezierArcPoints(arg1, arg2, (arg2 + arg3), (arg2 + arg4), arg5, arg6);\n for (let i = 0; i < points.length; i = i + 8) {\n /* tslint:disable-next-line:max-line-length */\n let point = [points[i], points[i + 1], points[i + 2], points[i + 3], points[i + 4], points[i + 5], points[i + 6], points[i + 7]];\n this.addPoints(point, PathPointType.Bezier3);\n }\n }\n }\n /* tslint:disable-next-line:max-line-length */\n addBezier(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) {\n if (arg1 instanceof PointF && arg2 instanceof PointF && arg3 instanceof PointF && arg4 instanceof PointF) {\n this.addBezier(arg1.x, arg1.y, arg2.x, arg2.y, arg3.x, arg3.y, arg4.x, arg4.y);\n }\n else {\n let points = [];\n points.push(arg1);\n points.push(arg2);\n points.push(arg3);\n points.push(arg4);\n points.push(arg5);\n points.push(arg6);\n points.push(arg7);\n points.push(arg8);\n this.addPoints(points, PathPointType.Bezier3);\n }\n }\n addEllipse(arg1, arg2, arg3, arg4) {\n if (arg1 instanceof RectangleF) {\n this.addEllipse(arg1.x, arg1.y, arg1.width, arg1.height);\n }\n else {\n this.startFigure();\n this.addArc(arg1, arg2, arg3, arg4, 0, 360);\n this.closeFigure();\n }\n }\n addLine(arg1, arg2, arg3, arg4) {\n if (arg1 instanceof PointF && arg2 instanceof PointF) {\n this.addLine(arg1.x, arg1.y, arg2.x, arg2.y);\n }\n else {\n let points = [];\n points.push(arg1);\n points.push(arg2);\n points.push(arg3);\n points.push(arg4);\n this.addPoints(points, PathPointType.Line);\n }\n }\n addPath(arg1, arg2) {\n if (arg1 instanceof PdfPath) {\n this.addPath(arg1.pathPoints, arg1.pathTypes);\n }\n else {\n if ((arg1 == null)) {\n throw new Error('ArgumentNullException:pathPoints');\n }\n if ((arg2 == null)) {\n throw new Error('ArgumentNullException:pathTypes');\n }\n let count = arg1.length;\n if ((count !== arg2.length)) {\n throw new Error('The argument arrays should be of equal length.');\n }\n }\n }\n addPie(arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof RectangleF) {\n this.addPie(arg1.x, arg1.y, arg1.width, arg1.height, arg2, arg3);\n }\n else {\n this.startFigure();\n this.addArc(arg1, arg2, arg3, arg4, arg5, arg6);\n this.addPoint(new PointF((arg1 + (arg3 / 2)), (arg2 + (arg4 / 2))), PathPointType.Line);\n this.closeFigure();\n }\n }\n /**\n * `add a polygon` specified by points.\n * @param points The points of the polygon\n */\n addPolygon(points) {\n let count = (points.length * 2);\n let p = [];\n this.startFigure();\n for (let i = 0; i < points.length; i++) {\n p.push(points[i].x);\n p.push(points[i].y);\n }\n this.addPoints(p, PathPointType.Line);\n this.closeFigure();\n }\n addRectangle(arg1, y, width, height) {\n if (arg1 instanceof RectangleF) {\n this.addRectangle(arg1.x, arg1.y, arg1.width, arg1.height);\n }\n else {\n let points = [];\n this.startFigure();\n points.push(arg1);\n points.push(y);\n points.push((arg1 + width));\n points.push(y);\n points.push((arg1 + width));\n points.push((y + height));\n points.push(arg1);\n points.push((y + height));\n this.addPoints(points, PathPointType.Line);\n this.closeFigure();\n }\n }\n /**\n * Starts a new figure.\n * @public\n */\n startFigure() {\n this.mStartFigure = true;\n }\n /**\n * Closed all non-closed figures.\n * @public\n */\n closeAllFigures() {\n let startPath = this.pathPoints[0];\n for (let i = 0; i < this.mpathTypes.length; i++) {\n let pt = ((this.types[i]));\n let flag = false;\n if (((i !== 0) && (pt === PathPointType.Start))) {\n this.closeFigure((i - 1));\n flag = true;\n }\n else if (((i === (this.mpathTypes.length - 1)) && (!flag && this.isXps))) {\n if ((startPath.x === this.pathPoints[i].y)) {\n this.closeFigure(i);\n }\n }\n }\n }\n /**\n * Gets the last point.\n * @public\n */\n getLastPoint() {\n let lastPoint = new PointF(0, 0);\n let count = this.pointCount;\n if (((count > 0) && (this.mpoints != null))) {\n lastPoint.x = this.mpoints[(count - 1)].x;\n lastPoint.y = this.mpoints[(count - 1)].y;\n }\n return lastPoint;\n }\n /**\n * Gets the bezier points for arc constructing.\n * @public\n */\n getBezierArcPoints(x1, y1, x2, y2, s1, e1) {\n if ((x1 > x2)) {\n let tmp;\n tmp = x1;\n x1 = x2;\n x2 = tmp;\n }\n if ((y2 > y1)) {\n let tmp;\n tmp = y1;\n y1 = y2;\n y2 = tmp;\n }\n let fragAngle;\n let numFragments;\n if ((Math.abs(e1) <= 90)) {\n fragAngle = e1;\n numFragments = 1;\n }\n else {\n numFragments = (Math.ceil((Math.abs(e1) / 90)));\n fragAngle = (e1 / numFragments);\n }\n let xcen = ((x1 + x2) / 2);\n let ycen = ((y1 + y2) / 2);\n let rx = ((x2 - x1) / 2);\n let ry = ((y2 - y1) / 2);\n let halfAng = ((fragAngle * (Math.PI / 360)));\n let kappa = (Math.abs(4.0 / 3.0 * (1.0 - Math.cos(halfAng)) / Math.sin(halfAng)));\n let pointList = [];\n for (let i = 0; (i < numFragments); i++) {\n let theta0 = (((s1 + (i * fragAngle)) * (Math.PI / 180)));\n let theta1 = (((s1 + ((i + 1) * fragAngle)) * (Math.PI / 180)));\n let cos0 = (Math.cos(theta0));\n let cos1 = (Math.cos(theta1));\n let sin0 = (Math.sin(theta0));\n let sin1 = (Math.sin(theta1));\n if ((fragAngle > 0)) {\n /* tslint:disable-next-line:max-line-length */\n pointList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 - (kappa * sin0)))), (ycen - (ry * (sin0 + (kappa * cos0)))), (xcen + (rx * (cos1 + (kappa * sin1)))), (ycen - (ry * (sin1 - (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n pointList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 + (kappa * sin0)))), (ycen - (ry * (sin0 - (kappa * cos0)))), (xcen + (rx * (cos1 - (kappa * sin1)))), (ycen - (ry * (sin1 + (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n }\n return pointList;\n }\n /**\n * `getBoundsInternal` Returns a rectangle that bounds this element.\n * @public\n */\n getBoundsInternal() {\n let points = this.pathPoints;\n let bounds = new RectangleF(0, 0, 0, 0);\n if ((points.length > 0)) {\n let xmin = points[0].x;\n let xmax = points[0].x;\n let ymin = points[0].y;\n let ymax = points[0].y;\n for (let i = 1; i < points.length; i++) {\n let point = points[i];\n xmin = Math.min(point.x, xmin);\n xmax = Math.max(point.x, xmax);\n ymin = Math.min(point.y, ymin);\n ymax = Math.max(point.y, ymax);\n }\n bounds = new RectangleF(xmin, ymin, (xmax - xmin), (ymax - ymin));\n }\n return bounds;\n }\n /**\n * `drawInternal` Draws an element on the Graphics.\n * @param graphics Graphics context where the element should be printed.\n * @public\n */\n drawInternal(graphics) {\n if ((graphics == null)) {\n throw new Error('ArgumentNullException :graphics');\n }\n graphics.drawPath(this.obtainPen(), this.brush, this);\n }\n addPoints(points, pointType, startIndex, endIndex) {\n if (typeof startIndex === 'undefined' && typeof endIndex === 'undefined') {\n this.addPoints(points, pointType, 0, points.length);\n }\n else {\n for (let i = startIndex; i < endIndex; i++) {\n let point = new PointF(points[i], points[(i + 1)]);\n if ((i === startIndex)) {\n if (((this.pointCount <= 0) || this.mStartFigure)) {\n this.addPoint(point, PathPointType.Start);\n this.mStartFigure = false;\n }\n else if (((point.x !== this.lastPoint.x) && (point.y !== this.lastPoint.y) && !this.isBeziers3)) {\n this.addPoint(point, PathPointType.Line);\n }\n else if ((point.x !== this.lastPoint.x) && (point.y !== this.lastPoint.y)) {\n this.addPoint(point, PathPointType.Bezier3);\n }\n }\n else {\n this.addPoint(point, pointType);\n }\n i++;\n }\n }\n }\n /**\n * `add a point` Adds the point and its type\n * @param points The points.\n * @param pointType Type of the points.\n * @private\n */\n addPoint(point, pointType) {\n this.points.push(point);\n this.types.push((pointType));\n }\n closeFigure(index) {\n if (typeof index === 'undefined') {\n if ((this.pointCount > 0)) {\n this.closeFigure(this.pointCount - 1);\n }\n this.startFigure();\n }\n else {\n if ((index < 0)) {\n throw new Error('IndexOutOfRangeException()');\n }\n let pt = ((this.types[index]));\n pt = (pt | PathPointType.CloseSubpath);\n this.types[index] = (pt);\n }\n }\n}\n\n/**\n * `PdfRectangleArea` class Implements graphics rectangle area, which is a sequence of primitive graphics elements.\n * @private\n */\nclass PdfRectangleArea extends PdfFillElement {\n /* tslint:disable-next-line:max-line-length */\n constructor(arg1, arg2, arg3, arg4, arg5, arg6) {\n super();\n //Fields\n /**\n * public variable to store the rectangle.\n * @public\n */\n this.bounds = new RectangleF(0, 0, 0, 0);\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (arg1 instanceof PdfPen) {\n super(arg1, arg2);\n if (arg3 instanceof RectangleF) {\n this.bounds = arg3;\n }\n else {\n this.bounds = new RectangleF(arg3, arg4, arg5, arg6);\n }\n }\n else if (arg1 instanceof RectangleF) {\n this.bounds = arg1;\n }\n else {\n this.bounds = new RectangleF(arg1, arg2, arg3, arg4);\n }\n }\n //Properties\n /**\n * Gets or sets the X co-ordinate of the upper-left corner of this the element.\n * @public\n */\n get x() {\n return this.bounds.x;\n }\n set x(value) {\n this.bounds.x = value;\n }\n /**\n * Gets or sets the Y co-ordinate of the upper-left corner of this the element.\n * @public\n */\n get y() {\n return this.bounds.y;\n }\n set y(value) {\n this.bounds.y = value;\n }\n /**\n * Gets or sets the width of this element.\n * @public\n */\n get width() {\n return this.bounds.width;\n }\n set width(value) {\n this.bounds.width = value;\n }\n /**\n * Gets or sets the height of this element.\n * @public\n */\n get height() {\n return this.bounds.height;\n }\n set height(value) {\n this.bounds.height = value;\n }\n //Implementation\n getBoundsInternal() {\n return this.bounds;\n }\n}\n\n/**\n * `PdfEllipsePart` class Implements graphics ellipse part, which is a sequence of primitive graphics elements.\n * @private\n */\nclass PdfEllipsePart extends PdfRectangleArea {\n /* tslint:disable-next-line:max-line-length */\n constructor(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) {\n super();\n // Fields\n /**\n * public variable to store the start angle.\n * @public\n */\n this.startAngle = 0;\n /**\n * public variable to store the sweep angle.\n * @public\n */\n this.sweepAngle = 0;\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (arg1 instanceof RectangleF && typeof arg2 !== 'undefined' && typeof arg3 !== 'undefined') {\n super(arg1);\n this.startAngle = arg2;\n this.sweepAngle = arg3;\n }\n else if (arg1 instanceof PdfPen) {\n if (arg3 instanceof RectangleF) {\n super(arg1, arg2, arg3);\n this.startAngle = arg4;\n this.sweepAngle = arg5;\n }\n else {\n super(arg1, arg2, arg3, arg4, arg5, arg6);\n this.startAngle = arg7;\n this.sweepAngle = arg8;\n }\n }\n else {\n super(arg1, arg2, arg3, arg4);\n this.startAngle = arg5;\n this.sweepAngle = arg6;\n }\n }\n}\n\n/**\n * arc.ts class for EJ2-PDF\n */\n/**\n * `PdfArc` class Implements graphics arc, which is a sequence of primitive graphics elements.\n * @private\n */\nclass PdfArc extends PdfEllipsePart {\n /* tslint:disable-next-line:max-line-length */\n constructor(arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n if (typeof arg1 === 'undefined') {\n super();\n }\n else if (arg1 instanceof RectangleF) {\n super(arg1, arg2, arg3);\n }\n else if (arg1 instanceof PdfPen) {\n if (arg2 instanceof RectangleF) {\n super(arg1, null, arg2, arg3, arg4);\n }\n else if (typeof arg6 === 'undefined' && typeof arg7 === 'undefined') {\n super(arg1, null, 0, 0, arg2, arg3, arg4, arg5);\n }\n else if (typeof arg6 !== 'undefined' && typeof arg7 !== 'undefined') {\n super(arg1, null, arg2, arg3, arg4, arg5, arg6, arg7);\n }\n }\n else if (typeof arg1 !== 'undefined' && typeof arg5 === 'undefined' && typeof arg6 === 'undefined') {\n super(0, 0, arg1, arg2, arg3, arg4);\n }\n else if (typeof arg1 !== 'undefined' && typeof arg5 !== 'undefined' && typeof arg6 !== 'undefined') {\n super(arg1, arg2, arg3, arg4, arg5, arg6);\n }\n }\n draw(argu1, arg2, arg3, arg4) {\n if (arg2 instanceof PointF && typeof arg2.width === 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(argu1, arg2.x, arg2.y);\n }\n else if (arg2 instanceof RectangleF && typeof arg2.width !== 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(argu1, arg2, null);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'undefined') {\n return this.drawHelper(argu1, arg2, arg3, null);\n }\n else if (arg2 instanceof PointF && arg3 instanceof PdfLayoutFormat) {\n return this.drawHelper(argu1, arg2.x, arg2.y, arg3);\n }\n else if (typeof arg2 === 'number' && (arg4 instanceof PdfLayoutFormat || arg4 == null) && typeof arg3 === 'number') {\n let widthValue = (argu1.graphics.clientSize.width - arg2);\n let layoutRect = new RectangleF(arg2, arg3, widthValue, 0);\n return this.drawHelper(argu1, layoutRect, arg4);\n }\n else {\n return this.drawHelper(argu1, arg2, arg3);\n }\n }\n // Implementation\n /**\n * `drawInternal` Draws an element on the Graphics.\n * @param graphics Graphics context where the element should be printed.\n *\n */\n drawInternal(graphics) {\n if ((graphics == null)) {\n throw new Error('ArgumentNullException : graphics');\n }\n graphics.drawArc(this.obtainPen(), this.bounds, this.startAngle, this.sweepAngle);\n }\n}\n\n/**\n * PdfTrueTypeFont.ts class for EJ2-PDF\n */\n//https://www.giftofspeed.com/base64-encoder/\nclass PdfTrueTypeFont extends PdfFont {\n constructor(base64String, size, style) {\n super(size);\n /**\n * Indicates whether the font is embedded or not.\n * @private\n */\n this.isEmbedFont = false;\n /**\n * Indicates whether the font is unicoded or not.\n * @private\n */\n this.isUnicode = true;\n if (style !== undefined) {\n this.createFontInternal(base64String, style);\n }\n else {\n this.createFontInternal(base64String, PdfFontStyle.Regular);\n }\n }\n equalsToFont(font) {\n let result = false;\n //let result : boolean = this.fontInternal.equalsToFont(font);\n return result;\n }\n getLineWidth(line, format) {\n let width = 0;\n if (format !== null && format.textDirection !== PdfTextDirection.None) {\n let returnValue = this.getUnicodeLineWidth(line, /*out*/ width, format);\n width = returnValue.width;\n }\n else {\n width = this.fontInternal.getLineWidth(line);\n }\n let size = this.metrics.getSize(format);\n width *= (PdfFont.charSizeMultiplier * size);\n width = this.applyFormatSettings(line, format, width);\n return width;\n }\n /**\n * Returns width of the char.\n */\n getCharWidth(charCode, format) {\n let codeWidth = this.fontInternal.getCharWidth(charCode);\n let size = this.metrics.getSize(format);\n codeWidth *= (0.001 * size);\n return codeWidth;\n }\n //Implementation\n createFontInternal(base64String, style) {\n this.fontInternal = new UnicodeTrueTypeFont(base64String, this.size);\n this.calculateStyle(style);\n this.initializeInternals();\n }\n calculateStyle(style) {\n let iStyle = this.fontInternal.ttfMetrics.macStyle;\n if ((style & PdfFontStyle.Underline) !== 0) {\n iStyle |= PdfFontStyle.Underline;\n }\n if ((style & PdfFontStyle.Strikeout) !== 0) {\n iStyle |= PdfFontStyle.Strikeout;\n }\n this.setStyle(iStyle);\n }\n initializeInternals() {\n let equalFont = null;\n if (PdfDocument.enableCache) {\n // Search for the similar fonts.\n equalFont = PdfDocument.cache.search(this);\n }\n let internals = null;\n // There is not equal font in the cache.\n if (equalFont !== null && equalFont !== undefined) {\n // Get the settings from the cached font.\n internals = equalFont.getInternals();\n let metrics = equalFont.metrics;\n metrics = metrics.clone();\n metrics.size = this.size;\n this.metrics = metrics;\n this.fontInternal = equalFont.fontInternal;\n }\n else {\n if (equalFont == null) {\n if (this.fontInternal instanceof UnicodeTrueTypeFont) {\n this.fontInternal.isEmbed = this.isEmbedFont;\n }\n this.fontInternal.createInternals();\n internals = this.fontInternal.getInternals();\n this.metrics = this.fontInternal.metrics;\n }\n }\n this.metrics.isUnicodeFont = true;\n this.setInternals(internals);\n //this.ttfReader = (this.fontInternal as UnicodeTrueTypeFont).ttfReader;\n }\n /**\n * Stores used symbols.\n */\n setSymbols(text) {\n let internalFont = this.fontInternal;\n if (internalFont != null) {\n internalFont.setSymbols(text);\n }\n }\n /**\n * Property\n *\n */\n get Unicode() {\n return this.isUnicode;\n }\n // public get Font() : UnicodeTrueTypeFont {\n // return this.fontInternal as UnicodeTrueTypeFont;\n // }\n getUnicodeLineWidth(line, /*out*/ width, format) {\n // if (line == null) {\n // throw new Error('ArgumentNullException : line');\n // }\n width = 0;\n let glyphIndices = null;\n let rtlRender = new RtlRenderer();\n /* tslint:disable-next-line:max-line-length */\n let result = rtlRender.getGlyphIndex(line, this, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, /*out*/ glyphIndices, true);\n let resultGlyph = result.success;\n glyphIndices = result.glyphs;\n if (resultGlyph && glyphIndices !== null) {\n let ttfReader = this.fontInternal.ttfReader;\n for (let i = 0, len = glyphIndices.length; i < len; i++) {\n let glyphIndex = glyphIndices[i];\n let glyph = ttfReader.getGlyph(glyphIndex);\n if (glyph !== null && typeof glyph !== 'undefined') {\n width += glyph.width;\n }\n }\n }\n return { success: resultGlyph, width: width };\n }\n}\n\n/**\n * PdfPageTemplateElement.ts class for EJ2-Pdf\n */\n/**\n * Describes a `page template` object that can be used as header/footer, watermark or stamp.\n */\nclass PdfPageTemplateElement {\n // Properties\n /**\n * Gets or sets the `dock style` of the page template element.\n * @private\n */\n get dock() {\n return this.dockStyle;\n }\n set dock(value) {\n // if (this.dockStyle !== value && this.Type === TemplateType.None) {\n this.dockStyle = value;\n // Reset alignment.\n this.resetAlignment();\n // }\n }\n /**\n * Gets or sets `alignment` of the page template element.\n * @private\n */\n get alignment() {\n return this.alignmentStyle;\n }\n set alignment(value) {\n // if (this.alignmentStyle !== value) {\n this.setAlignment(value);\n // }\n }\n /**\n * Indicates whether the page template is located `in front of the page layers or behind of it`.\n * @private\n */\n get foreground() {\n return this.isForeground;\n }\n set foreground(value) {\n // if (this.foreground !== value) {\n this.isForeground = value;\n // }\n }\n /**\n * Indicates whether the page template is located `behind of the page layers or in front of it`.\n * @private\n */\n get background() {\n return !this.isForeground;\n }\n set background(value) {\n this.isForeground = !value;\n }\n /**\n * Gets or sets `location` of the page template element.\n * @private\n */\n get location() {\n return this.currentLocation;\n }\n set location(value) {\n if (this.type === TemplateType.None) {\n this.currentLocation = value;\n }\n else {\n //\n }\n }\n /**\n * Gets or sets `X` co-ordinate of the template element on the page.\n * @private\n */\n get x() {\n let value = (typeof this.currentLocation !== 'undefined') ? this.currentLocation.x : 0;\n return value;\n }\n set x(value) {\n if (this.type === TemplateType.None) {\n this.currentLocation.x = value;\n }\n else {\n //\n }\n }\n /**\n * Gets or sets `Y` co-ordinate of the template element on the page.\n * @private\n */\n get y() {\n let value = (typeof this.currentLocation !== 'undefined') ? this.currentLocation.y : 0;\n return value;\n }\n set y(value) {\n if (this.type === TemplateType.None) {\n this.currentLocation.y = value;\n }\n else {\n //\n }\n }\n /**\n * Gets or sets `size` of the page template element.\n * @private\n */\n get size() {\n return this.template.size;\n }\n set size(value) {\n if (this.type === TemplateType.None) {\n this.template.reset(value);\n }\n }\n /**\n * Gets or sets `width` of the page template element.\n * @private\n */\n get width() {\n return this.template.width;\n }\n set width(value) {\n if (this.template.width !== value && this.type === TemplateType.None) {\n let size = this.template.size;\n size.width = value;\n this.template.reset(size);\n }\n }\n /**\n * Gets or sets `height` of the page template element.\n * @private\n */\n get height() {\n return this.template.height;\n }\n set height(value) {\n if (this.template.height !== value && this.type === TemplateType.None) {\n let size = this.template.size;\n size.height = value;\n this.template.reset(size);\n }\n }\n /**\n * Gets `graphics` context of the page template element.\n * @private\n */\n get graphics() {\n return this.template.graphics;\n }\n /**\n * Gets Pdf `template` object.\n * @private\n */\n get template() {\n // if (typeof this.pdfTemplate === 'undefined' || this.pdfTemplate == null) {\n // this.pdfTemplate = new PdfTemplate(this.size);\n // }\n return this.pdfTemplate;\n }\n /**\n * Gets or sets `type` of the usage of this page template.\n * @private\n */\n get type() {\n return this.templateType;\n }\n set type(value) {\n this.updateDocking(value);\n this.templateType = value;\n }\n /**\n * Gets or sets `bounds` of the page template.\n * @public\n */\n get bounds() {\n return new RectangleF(new PointF(this.x, this.y), this.size);\n }\n set bounds(value) {\n if (this.type === TemplateType.None) {\n this.location = new PointF(value.x, value.y);\n this.size = new SizeF(value.width, value.height);\n }\n }\n /* tslint:disable */\n constructor(arg1, arg2, arg3, arg4, arg5) {\n if (arg1 instanceof RectangleF && typeof arg2 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg1.width, arg1.height, null);\n }\n else if (arg1 instanceof RectangleF && arg2 instanceof PdfPage && typeof arg3 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg1.width, arg1.height, arg2);\n }\n else if (arg1 instanceof PointF && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg2.width, arg2.height, null);\n }\n else if (arg1 instanceof PointF && arg2 instanceof SizeF && arg3 instanceof PdfPage && typeof arg4 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg2.width, arg2.height, arg3);\n }\n else if (arg1 instanceof SizeF && typeof arg2 === 'undefined') {\n this.InitiateBounds(0, 0, arg1.width, arg1.height, null);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n this.InitiateBounds(0, 0, arg1, arg2, null);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && arg3 instanceof PdfPage && typeof arg4 === 'undefined') {\n this.InitiateBounds(0, 0, arg1, arg2, arg3);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'number' && typeof arg5 === 'undefined') {\n this.InitiateBounds(arg1, arg2, arg3, arg4, null);\n }\n else {\n this.InitiateBounds(arg1, arg2, arg3, arg4, null);\n // this.graphics.colorSpace = this.page.document.colorSpace;\n }\n /* tslint:enable */\n }\n /**\n * `Initialize Bounds` Initialize the bounds value of the template.\n * @private\n */\n InitiateBounds(arg1, arg2, arg3, arg4, arg5) {\n this.x = arg1;\n this.y = arg2;\n this.pdfTemplate = new PdfTemplate(arg3, arg4);\n // this.graphics.colorSpace = this.page.document.colorSpace;\n }\n /**\n * `Updates Dock` property if template is used as header/footer.\n * @private\n */\n updateDocking(type) {\n if (type !== TemplateType.None) {\n switch (type) {\n case TemplateType.Top:\n this.dock = PdfDockStyle.Top;\n break;\n case TemplateType.Bottom:\n this.dock = PdfDockStyle.Bottom;\n break;\n case TemplateType.Left:\n this.dock = PdfDockStyle.Left;\n break;\n case TemplateType.Right:\n this.dock = PdfDockStyle.Right;\n break;\n }\n this.resetAlignment();\n }\n }\n /**\n * `Resets alignment` of the template.\n * @private\n */\n resetAlignment() {\n this.alignment = PdfAlignmentStyle.None;\n }\n /**\n * `Sets alignment` of the template.\n * @private\n */\n setAlignment(alignment) {\n if (this.dock === PdfDockStyle.None) {\n this.alignmentStyle = alignment;\n }\n else {\n // Template is docked and alignment has been changed.\n let canBeSet = false;\n switch (this.dock) {\n case PdfDockStyle.Left:\n canBeSet = (alignment === PdfAlignmentStyle.TopLeft || alignment === PdfAlignmentStyle.MiddleLeft ||\n alignment === PdfAlignmentStyle.BottomLeft || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Top:\n canBeSet = (alignment === PdfAlignmentStyle.TopLeft || alignment === PdfAlignmentStyle.TopCenter ||\n alignment === PdfAlignmentStyle.TopRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Right:\n canBeSet = (alignment === PdfAlignmentStyle.TopRight || alignment === PdfAlignmentStyle.MiddleRight ||\n alignment === PdfAlignmentStyle.BottomRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Bottom:\n canBeSet = (alignment === PdfAlignmentStyle.BottomLeft || alignment === PdfAlignmentStyle.BottomCenter\n || alignment === PdfAlignmentStyle.BottomRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Fill:\n canBeSet = (alignment === PdfAlignmentStyle.MiddleCenter || alignment === PdfAlignmentStyle.None);\n break;\n }\n if (canBeSet) {\n this.alignmentStyle = alignment;\n }\n }\n }\n /**\n * Draws the template.\n * @private\n */\n draw(layer, document) {\n let page = layer.page;\n let bounds = this.calculateBounds(page, document);\n if (bounds.x === -0) {\n bounds.x = 0;\n }\n layer.graphics.drawPdfTemplate(this.template, new PointF(bounds.x, bounds.y), new SizeF(bounds.width, bounds.height));\n }\n /**\n * Calculates bounds of the page template.\n * @private\n */\n calculateBounds(page, document) {\n let result = this.bounds;\n if (this.alignmentStyle !== PdfAlignmentStyle.None) {\n result = this.getAlignmentBounds(page, document);\n }\n else if (this.dockStyle !== PdfDockStyle.None) {\n result = this.getDockBounds(page, document);\n }\n return result;\n }\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n getAlignmentBounds(page, document) {\n let result = this.bounds;\n if (this.type === TemplateType.None) {\n result = this.getSimpleAlignmentBounds(page, document);\n }\n else {\n result = this.getTemplateAlignmentBounds(page, document);\n }\n return result;\n }\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n getSimpleAlignmentBounds(page, document) {\n let bounds = this.bounds;\n let pdfSection = page.section;\n let actualBounds = pdfSection.getActualBounds(document, page, false);\n let x = this.x;\n let y = this.y;\n switch (this.alignmentStyle) {\n case PdfAlignmentStyle.TopLeft:\n x = 0;\n y = 0;\n break;\n case PdfAlignmentStyle.TopCenter:\n x = (actualBounds.width - this.width) / 2;\n y = 0;\n break;\n case PdfAlignmentStyle.TopRight:\n x = actualBounds.width - this.width;\n y = 0;\n break;\n case PdfAlignmentStyle.MiddleLeft:\n x = 0;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleCenter:\n x = (actualBounds.width - this.width) / 2;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleRight:\n x = actualBounds.width - this.width;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.BottomLeft:\n x = 0;\n y = actualBounds.height - this.height;\n break;\n case PdfAlignmentStyle.BottomCenter:\n x = (actualBounds.width - this.width) / 2;\n y = actualBounds.height - this.height;\n break;\n case PdfAlignmentStyle.BottomRight:\n x = actualBounds.width - this.width;\n y = actualBounds.height - this.height;\n break;\n }\n bounds.x = x;\n bounds.y = y;\n return bounds;\n }\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n getTemplateAlignmentBounds(page, document) {\n let result = this.bounds;\n let section = page.section;\n let actualBounds = section.getActualBounds(document, page, false);\n let x = this.x;\n let y = this.y;\n switch (this.alignmentStyle) {\n case PdfAlignmentStyle.TopLeft:\n if (this.type === TemplateType.Left) {\n x = -actualBounds.x;\n y = 0;\n }\n else if (this.type === TemplateType.Top) {\n x = -actualBounds.x;\n y = -actualBounds.y;\n }\n break;\n case PdfAlignmentStyle.TopCenter:\n x = (actualBounds.width - this.width) / 2;\n y = -actualBounds.y;\n break;\n case PdfAlignmentStyle.TopRight:\n if (this.type === TemplateType.Right) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = 0;\n }\n else if (this.type === TemplateType.Top) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = -actualBounds.y;\n }\n break;\n case PdfAlignmentStyle.MiddleLeft:\n x = -actualBounds.x;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleCenter:\n x = (actualBounds.width - this.width) / 2;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleRight:\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.BottomLeft:\n if (this.type === TemplateType.Left) {\n x = -actualBounds.x;\n y = actualBounds.height - this.height;\n }\n else if (this.type === TemplateType.Bottom) {\n x = -actualBounds.x;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n }\n break;\n case PdfAlignmentStyle.BottomCenter:\n x = (actualBounds.width - this.width) / 2;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n break;\n case PdfAlignmentStyle.BottomRight:\n if (this.type === TemplateType.Right) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = actualBounds.height - this.height;\n }\n else if (this.type === TemplateType.Bottom) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n }\n break;\n }\n result.x = x;\n result.y = y;\n return result;\n }\n /**\n * Calculates bounds according to the docking.\n * @private\n */\n getDockBounds(page, document) {\n let result = this.bounds;\n if (this.type === TemplateType.None) {\n result = this.getSimpleDockBounds(page, document);\n }\n else {\n result = this.getTemplateDockBounds(page, document);\n }\n return result;\n }\n /**\n * Calculates bounds according to the docking.\n * @private\n */\n getSimpleDockBounds(page, document) {\n let result = this.bounds;\n let section = page.section;\n let actualBounds = section.getActualBounds(document, page, false);\n let x = this.x;\n let y = this.y;\n let width = this.width;\n let height = this.height;\n switch (this.dockStyle) {\n case PdfDockStyle.Left:\n x = 0;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Top:\n x = 0;\n y = 0;\n width = actualBounds.width;\n height = this.height;\n break;\n case PdfDockStyle.Right:\n x = actualBounds.width - this.width;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Bottom:\n x = 0;\n y = actualBounds.height - this.height;\n width = actualBounds.width;\n height = this.height;\n break;\n case PdfDockStyle.Fill:\n x = 0;\n x = 0;\n width = actualBounds.width;\n height = actualBounds.height;\n break;\n }\n result = new RectangleF(x, y, width, height);\n return result;\n }\n /**\n * Calculates template bounds basing on docking if template is a page template.\n * @private\n */\n getTemplateDockBounds(page, document) {\n let result = this.bounds;\n let section = page.section;\n let actualBounds = section.getActualBounds(document, page, false);\n let actualSize = section.pageSettings.getActualSize();\n let x = this.x;\n let y = this.y;\n let width = this.width;\n let height = this.height;\n switch (this.dockStyle) {\n case PdfDockStyle.Left:\n x = -actualBounds.x;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Top:\n x = -actualBounds.x;\n y = -actualBounds.y;\n width = actualSize.width;\n height = this.height;\n if (actualBounds.height < 0) {\n y = -actualBounds.y + actualSize.height;\n }\n break;\n case PdfDockStyle.Right:\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Bottom:\n x = -actualBounds.x;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n width = actualSize.width;\n height = this.height;\n if (actualBounds.height < 0) {\n y -= actualSize.height;\n }\n break;\n case PdfDockStyle.Fill:\n x = 0;\n x = 0;\n width = actualBounds.width;\n height = actualBounds.height;\n break;\n }\n result = new RectangleF(x, y, width, height);\n return result;\n }\n}\n\n/**\n * Pdf all modules\n * @hidden\n */\n\nexport { PdfAction, PdfUriAction, PdfActionLinkAnnotation, PdfAnnotation, PdfAnnotationCollection, PdfDocumentLinkAnnotation, PdfLinkAnnotation, PdfTextWebLink, PdfUriAnnotation, Dictionary, defaultToString, PdfCatalog, PdfDocument, PdfDocumentBase, PdfDocumentTemplate, PdfPageNumberField, PdfCompositeField, PdfPageCountField, PointF, SizeF, RectangleF, Rectangle, PdfCacheCollection, PdfCollection, PdfDestination, PdfFunction, PdfSampledFunction, PdfDestinationMode, ProcedureSets, PdfHorizontalAlignment, PdfVerticalAlignment, PdfTextAlignment, TextRenderingMode, PdfLineJoin, PdfLineCap, PdfDashStyle, PdfFillMode, PdfColorSpace, PdfBlendMode, PdfGraphicsUnit, PdfGridImagePosition, PdfTextDirection, PdfColor, PdfGraphics, GetResourceEventHandler, PdfGraphicsState, PdfMargins, PdfPen, PdfResources, Guid, PdfTransformationMatrix, Matrix, PdfBrush, PdfBrushes, PdfSolidBrush, PdfLinearGradientBrush, PdfRadialGradientBrush, PdfTilingBrush, PdfGradientBrush, PdfColorBlend, PdfBlend, PdfTemplate, PdfLayoutElement, PdfPath, PdfArc, PdfTextElement, ElementLayouter, PdfLayoutFormat, PdfLayoutParams, PdfLayoutResult, TextLayouter, TextPageLayoutResult, PdfTextLayoutResult, PdfLayoutType, PdfLayoutBreakType, PathPointType, PdfFontStyle, PdfFontFamily, PdfFontType, PdfWordWrapType, PdfSubSuperScript, FontEncoding, TtfCmapFormat, TtfCmapEncoding, TtfPlatformID, TtfMicrosoftEncodingID, TtfMacintoshEncodingID, FontDescriptorFlags, TtfCompositeGlyphFlags, PdfFont, PdfFontMetrics, WidthTable, StandardWidthTable, PdfStandardFont, PdfStandardFontMetricsFactory, PdfStringFormat, PdfStringLayouter, PdfStringLayoutResult, LineInfo, LineType, StringTokenizer, PdfTrueTypeFont, RtlRenderer, ArabicShapeRenderer, ArabicShape, Bidi, RtlCharacters, ByteArray, ImageFormat, ImageDecoder, PdfBitmap, PdfImage, PdfTransparency, ObjectStatus, ObjectType, PdfCrossTable, RegisteredObject, DictionaryProperties, PdfMainObjectCollection, ObjectInfo, Operators, PdfStreamWriter, PdfWriter, PdfPageOrientation, PdfPageRotateAngle, PdfNumberStyle, PdfDockStyle, PdfAlignmentStyle, TemplateType, PageAddedEventArgs, PdfDocumentPageCollection, PdfPage, PdfPageBase, PdfPageLayer, PdfPageLayerCollection, PdfPageSettings, PdfPageSize, PdfPageTemplateElement, PdfSection, PageSettingsState, PdfSectionCollection, PdfSectionPageCollection, PdfSectionTemplate, PdfArray, PdfDictionary, SaveSectionCollectionEventHandler, SaveDescendantFontEventHandler, SaveFontDictionaryEventHandler, SaveAnnotationEventHandler, SaveSectionEventHandler, SaveTemplateEventHandler, PdfName, PdfNumber, PdfReference, PdfReferenceHolder, PdfStream, SaveCmapEventHandler, SaveFontProgramEventHandler, InternalEnum, PdfString, PdfGridStyleBase, PdfGridStyle, PdfGridCellStyle, PdfGridRowStyle, PdfHorizontalOverflowType, PdfBorders, PdfPaddings, PdfBorderOverlapStyle, PdfGridLayouter, PdfGridLayoutResult, PdfGridLayoutFormat, GridCellEventArgs, PdfGridBeginCellDrawEventArgs, PdfGridEndCellDrawEventArgs, PdfCancelEventArgs, BeginPageLayoutEventArgs, EndPageLayoutEventArgs, PdfGridBeginPageLayoutEventArgs, PdfGridEndPageLayoutEventArgs, RowLayoutResult, PdfGrid, PdfGridColumn, PdfGridColumnCollection, PdfGridRow, PdfGridRowCollection, PdfGridHeaderCollection, PdfGridCell, PdfGridCellCollection };\n//# sourceMappingURL=ej2-pdf-export.es2015.js.map\n","import { Animation, Browser, ChildProperty, Collection, Complex, Component, Draggable, Event, EventHandler, L10n, NotifyPropertyChanges, Property, SanitizeHtmlHelper, Touch, addClass, append, attributes, classList, closest, compile, createElement, detach, extend, formatUnit, getUniqueID, isBlazor, isNullOrUndefined, prepend, remove, removeClass, resetBlazorTemplate, setStyleAttribute, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\n\n/**\n * Position library\n */\nlet elementRect;\nlet popupRect;\nlet element;\nlet parentDocument;\nlet fixedParent = false;\nfunction calculateRelativeBasedPosition(anchor, element) {\n let fixedElement = false;\n let anchorPos = { left: 0, top: 0 };\n let tempAnchor = anchor;\n if (!anchor || !element) {\n return anchorPos;\n }\n if (isNullOrUndefined(element.offsetParent) && element.style.position === 'fixed') {\n fixedElement = true;\n }\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left += anchor.offsetLeft;\n anchorPos.top += anchor.offsetTop;\n anchor = anchor.offsetParent;\n }\n anchor = tempAnchor;\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left -= anchor.scrollLeft;\n anchorPos.top -= anchor.scrollTop;\n anchor = anchor.parentElement;\n }\n return anchorPos;\n}\nfunction calculatePosition(currentElement, positionX, positionY, parentElement, targetValues) {\n (positionY + positionX === 'topright') ? popupRect = undefined : popupRect = targetValues;\n popupRect = targetValues;\n fixedParent = parentElement ? true : false;\n if (!currentElement) {\n return { left: 0, top: 0 };\n }\n if (!positionX) {\n positionX = 'left';\n }\n if (!positionY) {\n positionY = 'top';\n }\n parentDocument = currentElement.ownerDocument;\n element = currentElement;\n let pos = { left: 0, top: 0 };\n return updatePosition(positionX.toLowerCase(), positionY.toLowerCase(), pos);\n}\nfunction setPosx(value, pos) {\n pos.left = value;\n}\nfunction setPosy(value, pos) {\n pos.top = value;\n}\nfunction updatePosition(posX, posY, pos) {\n elementRect = element.getBoundingClientRect();\n switch (posY + posX) {\n case 'topcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'topright':\n setPosx(getElementRight(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'centercenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerright':\n setPosx(getElementRight(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'bottomcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomright':\n setPosx(getElementRight(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementBottom(), pos);\n break;\n default:\n case 'topleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementTop(), pos);\n break;\n }\n return pos;\n}\nfunction getBodyScrollTop() {\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\nfunction getBodyScrollLeft() {\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\nfunction getElementBottom() {\n return fixedParent ? elementRect.bottom : elementRect.bottom + getBodyScrollTop();\n}\nfunction getElementVCenter() {\n return getElementTop() + (elementRect.height / 2);\n}\nfunction getElementTop() {\n return fixedParent ? elementRect.top : elementRect.top + getBodyScrollTop();\n}\nfunction getElementLeft() {\n return elementRect.left + getBodyScrollLeft();\n}\nfunction getElementRight() {\n return elementRect.right + getBodyScrollLeft() - (popupRect ? popupRect.width : 0);\n}\nfunction getElementHCenter() {\n return getElementLeft() + (elementRect.width / 2);\n}\n\n/**\n * Collision module.\n */\nlet parentDocument$1;\nlet targetContainer;\nfunction fit(element, viewPortElement = null, axis = { X: false, Y: false }, position) {\n if (!axis.Y && !axis.X) {\n return { left: 0, top: 0 };\n }\n let elemData = element.getBoundingClientRect();\n targetContainer = viewPortElement;\n parentDocument$1 = element.ownerDocument;\n if (!position) {\n position = calculatePosition(element, 'left', 'top');\n }\n if (axis.X) {\n let containerWidth = targetContainer ? getTargetContainerWidth() : getViewPortWidth();\n let containerLeft = ContainerLeft();\n let containerRight = ContainerRight();\n let overLeft = containerLeft - position.left;\n let overRight = position.left + elemData.width - containerRight;\n if (elemData.width > containerWidth) {\n if (overLeft > 0 && overRight <= 0) {\n position.left = containerRight - elemData.width;\n }\n else if (overRight > 0 && overLeft <= 0) {\n position.left = containerLeft;\n }\n else {\n position.left = overLeft > overRight ? (containerRight - elemData.width) : containerLeft;\n }\n }\n else if (overLeft > 0) {\n position.left += overLeft;\n }\n else if (overRight > 0) {\n position.left -= overRight;\n }\n }\n if (axis.Y) {\n let containerHeight = targetContainer ? getTargetContainerHeight() : getViewPortHeight();\n let containerTop = ContainerTop();\n let containerBottom = ContainerBottom();\n let overTop = containerTop - position.top;\n let overBottom = position.top + elemData.height - containerBottom;\n if (elemData.height > containerHeight) {\n if (overTop > 0 && overBottom <= 0) {\n position.top = containerBottom - elemData.height;\n }\n else if (overBottom > 0 && overTop <= 0) {\n position.top = containerTop;\n }\n else {\n position.top = overTop > overBottom ? (containerBottom - elemData.height) : containerTop;\n }\n }\n else if (overTop > 0) {\n position.top += overTop;\n }\n else if (overBottom > 0) {\n position.top -= overBottom;\n }\n }\n return position;\n}\nfunction isCollide(element, viewPortElement = null, x, y) {\n let elemOffset = calculatePosition(element, 'left', 'top');\n if (x) {\n elemOffset.left = x;\n }\n if (y) {\n elemOffset.top = y;\n }\n let data = [];\n targetContainer = viewPortElement;\n parentDocument$1 = element.ownerDocument;\n let elementRect = element.getBoundingClientRect();\n let top = elemOffset.top;\n let left = elemOffset.left;\n let right = elemOffset.left + elementRect.width;\n let bottom = elemOffset.top + elementRect.height;\n let yAxis = topCollideCheck(top, bottom);\n let xAxis = leftCollideCheck(left, right);\n if (yAxis.topSide) {\n data.push('top');\n }\n if (xAxis.rightSide) {\n data.push('right');\n }\n if (xAxis.leftSide) {\n data.push('left');\n }\n if (yAxis.bottomSide) {\n data.push('bottom');\n }\n return data;\n}\nfunction flip(element, target, offsetX, offsetY, positionX, positionY, viewPortElement = null, axis = { X: true, Y: true }, fixedParent) {\n if (!target || !element || !positionX || !positionY || (!axis.X && !axis.Y)) {\n return;\n }\n let tEdge = { TL: null,\n TR: null,\n BL: null,\n BR: null };\n let eEdge = {\n TL: null,\n TR: null,\n BL: null,\n BR: null\n };\n let elementRect = element.getBoundingClientRect();\n let pos = {\n posX: positionX, posY: positionY, offsetX: offsetX, offsetY: offsetY, position: { left: 0, top: 0 }\n };\n targetContainer = viewPortElement;\n parentDocument$1 = target.ownerDocument;\n updateElementData(target, tEdge, pos, fixedParent, elementRect);\n setPosition(eEdge, pos, elementRect);\n if (axis.X) {\n leftFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n if (axis.Y && tEdge.TL.top > -1) {\n topFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n setPopup(element, pos, elementRect);\n}\nfunction setPopup(element, pos, elementRect) {\n let left = 0;\n let top = 0;\n if (element.offsetParent != null\n && (getComputedStyle(element.offsetParent).position === 'absolute' ||\n getComputedStyle(element.offsetParent).position === 'relative')) {\n let data = calculatePosition(element.offsetParent, 'left', 'top', false, elementRect);\n left = data.left;\n top = data.top;\n }\n element.style.top = (pos.position.top + pos.offsetY - (top)) + 'px';\n element.style.left = (pos.position.left + pos.offsetX - (left)) + 'px';\n}\nfunction updateElementData(target, edge, pos, fixedParent, elementRect) {\n pos.position = calculatePosition(target, pos.posX, pos.posY, fixedParent, elementRect);\n edge.TL = calculatePosition(target, 'left', 'top', fixedParent, elementRect);\n edge.TR = calculatePosition(target, 'right', 'top', fixedParent, elementRect);\n edge.BR = calculatePosition(target, 'left', 'bottom', fixedParent, elementRect);\n edge.BL = calculatePosition(target, 'right', 'bottom', fixedParent, elementRect);\n}\nfunction setPosition(eStatus, pos, elementRect) {\n eStatus.TL = { top: pos.position.top + pos.offsetY, left: pos.position.left + pos.offsetX };\n eStatus.TR = { top: eStatus.TL.top, left: eStatus.TL.left + elementRect.width };\n eStatus.BL = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left };\n eStatus.BR = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left + elementRect.width };\n}\nfunction leftCollideCheck(left, right) {\n let leftSide = false;\n let rightSide = false;\n if (((left - getBodyScrollLeft$1()) < ContainerLeft())) {\n leftSide = true;\n }\n if (right > ContainerRight()) {\n rightSide = true;\n }\n return { leftSide: leftSide, rightSide: rightSide };\n}\nfunction leftFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n let collideSide = leftCollideCheck(edge.TL.left, edge.TR.left);\n if ((tEdge.TL.left - getBodyScrollLeft$1()) <= ContainerLeft()) {\n collideSide.leftSide = false;\n }\n if (tEdge.TR.left >= ContainerRight()) {\n collideSide.rightSide = false;\n }\n if ((collideSide.leftSide && !collideSide.rightSide) || (!collideSide.leftSide && collideSide.rightSide)) {\n if (pos.posX === 'right') {\n pos.posX = 'left';\n }\n else {\n pos.posX = 'right';\n }\n pos.offsetX = pos.offsetX + elementRect.width;\n pos.offsetX = -1 * pos.offsetX;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n leftFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\nfunction topFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n let collideSide = topCollideCheck(edge.TL.top, edge.BL.top);\n if ((tEdge.TL.top - getBodyScrollTop$1()) <= ContainerTop()) {\n collideSide.topSide = false;\n }\n if (tEdge.BL.top >= ContainerBottom()) {\n collideSide.bottomSide = false;\n }\n if ((collideSide.topSide && !collideSide.bottomSide) || (!collideSide.topSide && collideSide.bottomSide)) {\n if (pos.posY === 'top') {\n pos.posY = 'bottom';\n }\n else {\n pos.posY = 'top';\n }\n pos.offsetY = pos.offsetY + elementRect.height;\n pos.offsetY = -1 * pos.offsetY;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false, elementRect);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n topFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\nfunction topCollideCheck(top, bottom) {\n let topSide = false;\n let bottomSide = false;\n if ((top - getBodyScrollTop$1()) < ContainerTop()) {\n topSide = true;\n }\n if (bottom > ContainerBottom()) {\n bottomSide = true;\n }\n return { topSide: topSide, bottomSide: bottomSide };\n}\nfunction getTargetContainerWidth() {\n return targetContainer.getBoundingClientRect().width;\n}\nfunction getTargetContainerHeight() {\n return targetContainer.getBoundingClientRect().height;\n}\nfunction getTargetContainerLeft() {\n return targetContainer.getBoundingClientRect().left;\n}\nfunction getTargetContainerTop() {\n return targetContainer.getBoundingClientRect().top;\n}\nfunction ContainerTop() {\n if (targetContainer) {\n return getTargetContainerTop();\n }\n return 0;\n}\nfunction ContainerLeft() {\n if (targetContainer) {\n return getTargetContainerLeft();\n }\n return 0;\n}\nfunction ContainerRight() {\n if (targetContainer) {\n return (getBodyScrollLeft$1() + getTargetContainerLeft() + getTargetContainerWidth());\n }\n return (getBodyScrollLeft$1() + getViewPortWidth());\n}\nfunction ContainerBottom() {\n if (targetContainer) {\n return (getBodyScrollTop$1() + getTargetContainerTop() + getTargetContainerHeight());\n }\n return (getBodyScrollTop$1() + getViewPortHeight());\n}\nfunction getBodyScrollTop$1() {\n // if(targetContainer)\n // return targetContainer.scrollTop;\n return parentDocument$1.documentElement.scrollTop || parentDocument$1.body.scrollTop;\n}\nfunction getBodyScrollLeft$1() {\n // if(targetContainer)\n // return targetContainer.scrollLeft;\n return parentDocument$1.documentElement.scrollLeft || parentDocument$1.body.scrollLeft;\n}\nfunction getViewPortHeight() {\n return window.innerHeight;\n}\nfunction getViewPortWidth() {\n let windowWidth = window.innerWidth;\n let offsetWidth = (isNullOrUndefined(document.documentElement)) ? 0 : document.documentElement.offsetWidth;\n return windowWidth - (windowWidth - offsetWidth);\n}\n\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Specifies the offset position values.\n */\nclass PositionData extends ChildProperty {\n}\n__decorate([\n Property('left')\n], PositionData.prototype, \"X\", void 0);\n__decorate([\n Property('top')\n], PositionData.prototype, \"Y\", void 0);\n// don't use space in classNames\nconst CLASSNAMES = {\n ROOT: 'e-popup',\n RTL: 'e-rtl',\n OPEN: 'e-popup-open',\n CLOSE: 'e-popup-close'\n};\n/**\n * Represents the Popup Component\n * ```html\n *
      \n *
      Popup Content
      \n * ```\n * ```typescript\n * \n * ```\n */\nlet Popup = class Popup extends Component {\n constructor(element, options) {\n super(options, element);\n }\n /**\n * Called internally if any of the property value changed.\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'zIndex':\n setStyleAttribute(this.element, { 'zIndex': newProp.zIndex });\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'position':\n case 'relateTo':\n this.refreshPosition();\n break;\n case 'offsetX':\n let x = newProp.offsetX - oldProp.offsetX;\n this.element.style.left = (parseInt(this.element.style.left, 10) + (x)).toString() + 'px';\n break;\n case 'offsetY':\n let y = newProp.offsetY - oldProp.offsetY;\n this.element.style.top = (parseInt(this.element.style.top, 10) + (y)).toString() + 'px';\n break;\n case 'content':\n this.setContent();\n break;\n case 'actionOnScroll':\n if (newProp.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n else {\n this.unwireScrollEvents();\n }\n break;\n }\n }\n }\n /**\n * gets the Component module name.\n * @private\n */\n getModuleName() {\n return 'popup';\n }\n /**\n * To resolve if any collision occurs.\n */\n resolveCollision() {\n this.checkCollision();\n }\n /**\n * gets the persisted state properties of the Component.\n */\n getPersistData() {\n return this.addOnPersist([]);\n }\n /**\n * To destroy the control.\n */\n destroy() {\n this.element.classList.remove(CLASSNAMES.ROOT, CLASSNAMES.RTL, CLASSNAMES.OPEN, CLASSNAMES.CLOSE);\n this.unwireEvents();\n super.destroy();\n }\n /**\n * To Initialize the control rendering\n * @private\n */\n render() {\n this.element.classList.add(CLASSNAMES.ROOT);\n let styles = {};\n if (this.zIndex !== 1000) {\n styles.zIndex = this.zIndex;\n }\n if (this.width !== 'auto') {\n styles.width = formatUnit(this.width);\n }\n if (this.height !== 'auto') {\n styles.height = formatUnit(this.height);\n }\n setStyleAttribute(this.element, styles);\n this.fixedParent = false;\n this.setEnableRtl();\n this.setContent();\n }\n wireEvents() {\n if (Browser.isDevice) {\n EventHandler.add(window, 'orientationchange', this.orientationOnChange, this);\n }\n if (this.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n }\n wireScrollEvents() {\n if (this.getRelateToElement()) {\n for (let parent of this.getScrollableParent(this.getRelateToElement())) {\n EventHandler.add(parent, 'scroll', this.scrollRefresh, this);\n }\n }\n }\n unwireEvents() {\n if (Browser.isDevice) {\n EventHandler.remove(window, 'orientationchange', this.orientationOnChange);\n }\n if (this.actionOnScroll !== 'none') {\n this.unwireScrollEvents();\n }\n }\n unwireScrollEvents() {\n if (this.getRelateToElement()) {\n for (let parent of this.getScrollableParent(this.getRelateToElement())) {\n EventHandler.remove(parent, 'scroll', this.scrollRefresh);\n }\n }\n }\n getRelateToElement() {\n let relateToElement = this.relateTo === '' || isNullOrUndefined(this.relateTo) ?\n document.body : this.relateTo;\n this.setProperties({ relateTo: relateToElement }, true);\n return ((typeof this.relateTo) === 'string') ?\n document.querySelector(this.relateTo) : this.relateTo;\n }\n scrollRefresh(e) {\n if (this.actionOnScroll === 'reposition') {\n if (!(this.element.offsetParent === e.target ||\n (this.element.offsetParent && this.element.offsetParent.tagName === 'BODY' &&\n e.target.parentElement == null))) {\n this.refreshPosition();\n }\n }\n else if (this.actionOnScroll === 'hide') {\n this.hide();\n }\n if (this.actionOnScroll !== 'none') {\n if (this.getRelateToElement()) {\n let targetVisible = this.isElementOnViewport(this.getRelateToElement(), e.target);\n if (!targetVisible && !this.targetInvisibleStatus) {\n this.trigger('targetExitViewport');\n this.targetInvisibleStatus = true;\n }\n else if (targetVisible) {\n this.targetInvisibleStatus = false;\n }\n }\n }\n }\n /**\n * This method is to get the element visibility on viewport when scroll\n * the page. This method will returns true even though 1 px of element\n * part is in visible.\n */\n isElementOnViewport(relateToElement, scrollElement) {\n let scrollParents = this.getScrollableParent(relateToElement);\n for (let parent = 0; parent < scrollParents.length; parent++) {\n if (this.isElementVisible(relateToElement, scrollParents[parent])) {\n continue;\n }\n else {\n return false;\n }\n }\n return true;\n }\n isElementVisible(relateToElement, scrollElement) {\n let rect = this.checkGetBoundingClientRect(relateToElement);\n if (!rect.height || !rect.width) {\n return false;\n }\n if (!isNullOrUndefined(this.checkGetBoundingClientRect(scrollElement))) {\n let parent = scrollElement.getBoundingClientRect();\n return !(rect.bottom < parent.top) &&\n (!(rect.bottom > parent.bottom) &&\n (!(rect.right > parent.right) &&\n !(rect.left < parent.left)));\n }\n else {\n let win = window;\n let windowView = {\n top: win.scrollY,\n left: win.scrollX,\n right: win.scrollX + win.outerWidth,\n bottom: win.scrollY + win.outerHeight\n };\n let off = calculatePosition(relateToElement);\n let ele = {\n top: off.top,\n left: off.left,\n right: off.left + rect.width,\n bottom: off.top + rect.height\n };\n let elementView = {\n top: windowView.bottom - ele.top,\n left: windowView.right - ele.left,\n bottom: ele.bottom - windowView.top,\n right: ele.right - windowView.left\n };\n return elementView.top > 0\n && elementView.left > 0\n && elementView.right > 0\n && elementView.bottom > 0;\n }\n }\n /**\n * Initialize the event handler\n * @private\n */\n preRender() {\n //There is no event handler\n }\n setEnableRtl() {\n this.reposition();\n this.enableRtl ? this.element.classList.add(CLASSNAMES.RTL) : this.element.classList.remove(CLASSNAMES.RTL);\n }\n setContent() {\n if (!isNullOrUndefined(this.content)) {\n this.element.innerHTML = '';\n if (typeof (this.content) === 'string') {\n this.element.textContent = this.content;\n }\n else {\n this.element.appendChild(this.content);\n }\n }\n }\n orientationOnChange() {\n setTimeout(() => {\n this.refreshPosition();\n }, 200);\n }\n /**\n * Based on the `relative` element and `offset` values, `Popup` element position will refreshed.\n */\n refreshPosition(target, collision) {\n if (!isNullOrUndefined(target)) {\n this.checkFixedParent(target);\n }\n this.reposition();\n if (!collision) {\n this.checkCollision();\n }\n }\n reposition() {\n let pos;\n let position;\n let relateToElement = this.getRelateToElement();\n if (typeof this.position.X === 'number' && typeof this.position.Y === 'number') {\n pos = { left: this.position.X, top: this.position.Y };\n }\n else if ((typeof this.position.X === 'string' && typeof this.position.Y === 'number') ||\n (typeof this.position.X === 'number' && typeof this.position.Y === 'string')) {\n let display = this.element.style.display;\n let parentDisplay;\n this.element.style.display = 'block';\n if (this.element.classList.contains('e-dlg-modal')) {\n parentDisplay = this.element.parentElement.style.display;\n this.element.parentElement.style.display = 'block';\n }\n position = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY);\n if (typeof this.position.X === 'string') {\n pos = { left: position.left, top: this.position.Y };\n }\n else {\n pos = { left: this.position.X, top: position.top };\n }\n this.element.style.display = display;\n if (this.element.classList.contains('e-dlg-modal')) {\n this.element.parentElement.style.display = parentDisplay;\n }\n }\n else if (relateToElement) {\n let display = this.element.style.display;\n this.element.style.display = 'block';\n pos = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY);\n this.element.style.display = display;\n }\n else {\n pos = { left: 0, top: 0 };\n }\n if (!isNullOrUndefined(pos)) {\n this.element.style.left = pos.left + 'px';\n this.element.style.top = pos.top + 'px';\n }\n }\n checkGetBoundingClientRect(ele) {\n let eleRect;\n try {\n eleRect = ele.getBoundingClientRect();\n return eleRect;\n }\n catch (error) {\n return null;\n }\n }\n getAnchorPosition(anchorEle, ele, position, offsetX, offsetY) {\n let eleRect = this.checkGetBoundingClientRect(ele);\n let anchorRect = this.checkGetBoundingClientRect(anchorEle);\n if (isNullOrUndefined(eleRect) || isNullOrUndefined(anchorRect)) {\n return null;\n }\n let anchor = anchorEle;\n let anchorPos = { left: 0, top: 0 };\n if (ele.offsetParent && ele.offsetParent.tagName === 'BODY' && anchorEle.tagName === 'BODY') {\n anchorPos = calculatePosition(anchorEle);\n }\n else {\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName !== 'BODY')) {\n ele = ele.parentElement;\n }\n anchorPos = calculateRelativeBasedPosition(anchor, ele);\n }\n switch (position.X) {\n default:\n case 'left':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth / 2 - eleRect.width / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width / 2 - eleRect.width / 2);\n }\n else {\n anchorPos.left += (anchorRect.width / 2);\n }\n break;\n case 'right':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth - eleRect.width);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width - eleRect.width);\n }\n else {\n anchorPos.left += (anchorRect.width);\n }\n break;\n }\n switch (position.Y) {\n default:\n case 'top':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight / 2 - eleRect.height / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.top += (anchorRect.height / 2 - eleRect.height / 2);\n }\n else {\n anchorPos.top += (anchorRect.height / 2);\n }\n break;\n case 'bottom':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight - eleRect.height);\n }\n else if (this.targetType === 'container') {\n anchorPos.top += (anchorRect.height - eleRect.height);\n }\n else {\n anchorPos.top += (anchorRect.height);\n }\n break;\n }\n anchorPos.left += offsetX;\n anchorPos.top += offsetY;\n return anchorPos;\n }\n callFlip(param) {\n let relateToElement = this.getRelateToElement();\n flip(this.element, relateToElement, this.offsetX, this.offsetY, this.position.X, this.position.Y, this.viewPortElement, param, this.fixedParent);\n }\n callFit(param) {\n if (isCollide(this.element, this.viewPortElement).length !== 0) {\n if (isNullOrUndefined(this.viewPortElement)) {\n let data = fit(this.element, this.viewPortElement, param);\n if (param.X) {\n this.element.style.left = data.left + 'px';\n }\n if (param.Y) {\n this.element.style.top = data.top + 'px';\n }\n }\n else {\n let elementRect = this.checkGetBoundingClientRect(this.element);\n let viewPortRect = this.checkGetBoundingClientRect(this.viewPortElement);\n if (isNullOrUndefined(elementRect) || isNullOrUndefined(viewPortRect)) {\n return null;\n }\n if (param && param.Y === true) {\n if (viewPortRect.top > elementRect.top) {\n this.element.style.top = '0px';\n }\n else if (viewPortRect.bottom < elementRect.bottom) {\n this.element.style.top = parseInt(this.element.style.top, 10) - (elementRect.bottom - viewPortRect.bottom) + 'px';\n }\n }\n if (param && param.X === true) {\n if (viewPortRect.right < elementRect.right) {\n this.element.style.left = parseInt(this.element.style.left, 10) - (elementRect.right - viewPortRect.right) + 'px';\n }\n else if (viewPortRect.left > elementRect.left) {\n this.element.style.left = parseInt(this.element.style.left, 10) + (viewPortRect.left - elementRect.left) + 'px';\n }\n }\n }\n }\n }\n checkCollision() {\n let horz = this.collision.X;\n let vert = this.collision.Y;\n if (horz === 'none' && vert === 'none') {\n return;\n }\n if (horz === 'flip' && vert === 'flip') {\n this.callFlip({ X: true, Y: true });\n }\n else if (horz === 'fit' && vert === 'fit') {\n this.callFit({ X: true, Y: true });\n }\n else {\n if (horz === 'flip') {\n this.callFlip({ X: true, Y: false });\n }\n else if (vert === 'flip') {\n this.callFlip({ Y: true, X: false });\n }\n if (horz === 'fit') {\n this.callFit({ X: true, Y: false });\n }\n else if (vert === 'fit') {\n this.callFit({ X: false, Y: true });\n }\n }\n }\n /**\n * Shows the popup element from screen.\n * @param { AnimationModel | Function } collisionOrAnimationOptions? - To pass animation options or collision function.\n * @param { Function } collision? - To pass the collision function.\n * @param { HTMLElement } relativeElement? - To calculate the zIndex value dynamically.\n */\n show(animationOptions, relativeElement) {\n this.wireEvents();\n if (this.zIndex === 1000 || !isNullOrUndefined(relativeElement)) {\n let zIndexElement = (isNullOrUndefined(relativeElement)) ? this.element : relativeElement;\n this.zIndex = getZindexPartial(zIndexElement);\n setStyleAttribute(this.element, { 'zIndex': this.zIndex });\n }\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.showAnimation;\n if (this.collision.X !== 'none' || this.collision.Y !== 'none') {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.checkCollision();\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n }\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.begin = () => {\n if (!this.isDestroyed) {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n }\n };\n animationOptions.end = () => {\n if (!this.isDestroyed) {\n this.trigger('open');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.trigger('open');\n }\n }\n /**\n * Hides the popup element from screen.\n * @param { AnimationModel } animationOptions? - To give the animation options.\n */\n hide(animationOptions) {\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.hideAnimation;\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.end = () => {\n if (!this.isDestroyed) {\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n this.trigger('close');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n this.trigger('close');\n }\n this.unwireEvents();\n }\n /**\n * Gets scrollable parent elements for the given element.\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n */\n getScrollableParent(element) {\n this.checkFixedParent(element);\n return getScrollableParent(element, this.fixedParent);\n }\n checkFixedParent(element) {\n let parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n let parentStyle = getComputedStyle(parent);\n if (parentStyle.position === 'fixed' && this.element.offsetParent && this.element.offsetParent.tagName === 'BODY') {\n this.element.style.position = 'fixed';\n this.fixedParent = true;\n }\n parent = parent.parentElement;\n if (isNullOrUndefined(this.element.offsetParent) && parentStyle.position === 'fixed'\n && this.element.style.position === 'fixed') {\n this.fixedParent = true;\n }\n }\n }\n};\n__decorate([\n Property('auto')\n], Popup.prototype, \"height\", void 0);\n__decorate([\n Property('auto')\n], Popup.prototype, \"width\", void 0);\n__decorate([\n Property(null)\n], Popup.prototype, \"content\", void 0);\n__decorate([\n Property('container')\n], Popup.prototype, \"targetType\", void 0);\n__decorate([\n Property(null)\n], Popup.prototype, \"viewPortElement\", void 0);\n__decorate([\n Property({ X: 'none', Y: 'none' })\n], Popup.prototype, \"collision\", void 0);\n__decorate([\n Property('')\n], Popup.prototype, \"relateTo\", void 0);\n__decorate([\n Complex({}, PositionData)\n], Popup.prototype, \"position\", void 0);\n__decorate([\n Property(0)\n], Popup.prototype, \"offsetX\", void 0);\n__decorate([\n Property(0)\n], Popup.prototype, \"offsetY\", void 0);\n__decorate([\n Property(1000)\n], Popup.prototype, \"zIndex\", void 0);\n__decorate([\n Property(false)\n], Popup.prototype, \"enableRtl\", void 0);\n__decorate([\n Property('reposition')\n], Popup.prototype, \"actionOnScroll\", void 0);\n__decorate([\n Property(null)\n], Popup.prototype, \"showAnimation\", void 0);\n__decorate([\n Property(null)\n], Popup.prototype, \"hideAnimation\", void 0);\n__decorate([\n Event()\n], Popup.prototype, \"open\", void 0);\n__decorate([\n Event()\n], Popup.prototype, \"close\", void 0);\n__decorate([\n Event()\n], Popup.prototype, \"targetExitViewport\", void 0);\nPopup = __decorate([\n NotifyPropertyChanges\n], Popup);\n/**\n * Gets scrollable parent elements for the given element.\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n * @private\n */\nfunction getScrollableParent(element, fixedParent) {\n let eleStyle = getComputedStyle(element);\n let scrollParents = [];\n let overflowRegex = /(auto|scroll)/;\n let parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n let parentStyle = getComputedStyle(parent);\n if (!(eleStyle.position === 'absolute' && parentStyle.position === 'static')\n && overflowRegex.test(parentStyle.overflow + parentStyle.overflowY + parentStyle.overflowX)) {\n scrollParents.push(parent);\n }\n parent = parent.parentElement;\n }\n if (!fixedParent) {\n scrollParents.push(document);\n }\n return scrollParents;\n}\n/**\n * Gets the maximum z-index of the given element.\n * @param { HTMLElement } element - Specify the element to get the maximum z-index of it.\n * @private\n */\nfunction getZindexPartial(element) {\n // upto body traversal\n let parent = element.parentElement;\n let parentZindex = [];\n while (parent) {\n if (parent.tagName !== 'BODY') {\n let index = document.defaultView.getComputedStyle(parent, null).getPropertyValue('z-index');\n let position = document.defaultView.getComputedStyle(parent, null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n parentZindex.push(index);\n }\n parent = parent.parentElement;\n }\n else {\n break;\n }\n }\n //Body direct children element traversal\n let childrenZindex = [];\n for (let i = 0; i < document.body.children.length; i++) {\n if (!element.isEqualNode(document.body.children[i])) {\n let index = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('z-index');\n let position = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n childrenZindex.push(index);\n }\n }\n }\n childrenZindex.push('999');\n let siblingsZindex = [];\n if (!isNullOrUndefined(element.parentElement) && element.parentElement.tagName !== 'BODY') {\n let childNodes = [].slice.call(element.parentElement.children);\n for (let i = 0; i < childNodes.length; i++) {\n let index = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('z-index');\n let position = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n siblingsZindex.push(index);\n }\n }\n }\n let finalValue = parentZindex.concat(childrenZindex, siblingsZindex);\n let currentZindexValue = Math.max.apply(Math, finalValue) + 1;\n // Checking the max-zindex value\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n/**\n * Gets the maximum z-index of the page.\n * @param { HTMLElement } tagName - Specify the tagName to get the maximum z-index of it.\n * @private\n */\nfunction getMaxZindex(tagName = ['*']) {\n let maxZindex = [];\n for (let i = 0; i < tagName.length; i++) {\n let elements = document.getElementsByTagName(tagName[i]);\n for (let i = 0; i < elements.length; i++) {\n let index = document.defaultView.getComputedStyle(elements[i], null).getPropertyValue('z-index');\n let position = document.defaultView.getComputedStyle(elements[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n maxZindex.push(index);\n }\n }\n }\n let currentZindexValue = Math.max.apply(Math, maxZindex) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n\n/**\n * Popup Components\n */\n\n/**\n * Popup Components\n */\n\n/**\n * Resize library\n */\nlet elementClass = ['north-west', 'north', 'north-east', 'west', 'east', 'south-west', 'south', 'south-east'];\nlet targetElement;\nlet selectedHandler;\nlet originalWidth = 0;\nlet originalHeight = 0;\nlet originalX = 0;\nlet originalY = 0;\nlet originalMouseX = 0;\nlet originalMouseY = 0;\nconst RESIZE_HANDLER = 'e-resize-handle';\nconst FOCUSED_HANDLER = 'e-focused-handle';\nlet RESTRICT_LEFT = ['e-restrict-left'];\nconst RESIZE_WITHIN_VIEWPORT = 'e-resize-viewport';\nlet minHeight;\nlet maxHeight;\nlet minWidth;\nlet maxWidth;\nlet containerElement;\nlet resizeStart = null;\nlet resize = null;\nlet resizeEnd = null;\nlet resizeWestWidth;\nlet setLeft = true;\nlet previousWidth = 0;\nlet setWidth = true;\n// tslint:disable-next-line\nlet proxy;\nfunction createResize(args) {\n resizeStart = args.resizeBegin;\n resize = args.resizing;\n resizeEnd = args.resizeComplete;\n targetElement = getDOMElement(args.element);\n containerElement = getDOMElement(args.boundary);\n let directions = args.direction.split(' ');\n for (let i = 0; i < directions.length; i++) {\n let resizeHandler = createElement('div', { className: 'e-icons ' + RESIZE_HANDLER + ' ' + 'e-' + directions[i] });\n targetElement.appendChild(resizeHandler);\n }\n minHeight = args.minHeight;\n minWidth = args.minWidth;\n maxWidth = args.maxWidth;\n maxHeight = args.maxHeight;\n if (args.proxy && args.proxy.element && args.proxy.element.classList.contains('e-dialog')) {\n wireEvents(args.proxy);\n }\n else {\n wireEvents();\n }\n}\nfunction getDOMElement(element) {\n let domElement;\n if (!isNullOrUndefined(element)) {\n if (typeof (element) === 'string') {\n domElement = document.querySelector(element);\n }\n else {\n domElement = element;\n }\n }\n return domElement;\n}\n// tslint:disable-next-line\nfunction wireEvents(args) {\n if (isNullOrUndefined(args)) {\n args = this;\n }\n let resizers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (let i = 0; i < resizers.length; i++) {\n selectedHandler = resizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, args);\n let eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, args);\n }\n}\n/* istanbul ignore next */\nfunction getEventType(e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n}\n/* istanbul ignore next */\nfunction onMouseDown(e) {\n e.preventDefault();\n targetElement = e.target.parentElement;\n calculateValues();\n originalMouseX = e.pageX;\n originalMouseY = e.pageY;\n e.target.classList.add(FOCUSED_HANDLER);\n if (!isNullOrUndefined(resizeStart)) {\n proxy = this;\n if (resizeStart(e, proxy) === true) {\n return;\n }\n }\n let target = (isNullOrUndefined(containerElement)) ? document : containerElement;\n EventHandler.add(target, 'mousemove', onMouseMove, this);\n EventHandler.add(document, 'mouseup', onMouseUp, this);\n for (let i = 0; i < RESTRICT_LEFT.length; i++) {\n if (targetElement.classList.contains(RESTRICT_LEFT[i])) {\n setLeft = false;\n }\n else {\n setLeft = true;\n }\n }\n}\n/* istanbul ignore next */\nfunction onMouseUp(e) {\n let touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n let touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n let target = (isNullOrUndefined(containerElement)) ? document : containerElement;\n EventHandler.remove(target, 'mousemove', onMouseMove);\n EventHandler.remove(target, touchMoveEvent, onMouseMove);\n let eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.remove(target, eventName, onMouseMove);\n if (!isNullOrUndefined(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n document.body.querySelector('.' + FOCUSED_HANDLER).classList.remove(FOCUSED_HANDLER);\n }\n if (!isNullOrUndefined(resizeEnd)) {\n proxy = this;\n resizeEnd(e, proxy);\n }\n EventHandler.remove(document, 'mouseup', onMouseUp);\n EventHandler.remove(document, touchEndEvent, onMouseUp);\n}\n/* istanbul ignore next */\nfunction calculateValues() {\n originalWidth = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('width').replace('px', ''));\n originalHeight = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('height').replace('px', ''));\n originalX = targetElement.getBoundingClientRect().left;\n originalY = targetElement.getBoundingClientRect().top;\n}\n/* istanbul ignore next */\nfunction onTouchStart(e) {\n targetElement = e.target.parentElement;\n calculateValues();\n let coordinates = e.touches ? e.changedTouches[0] : e;\n originalMouseX = coordinates.pageX;\n originalMouseY = coordinates.pageY;\n if (!isNullOrUndefined(resizeStart)) {\n proxy = this;\n if (resizeStart(e, proxy) === true) {\n return;\n }\n }\n let touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n let touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n let target = (isNullOrUndefined(containerElement)) ? document : containerElement;\n EventHandler.add(target, touchMoveEvent, onMouseMove, this);\n EventHandler.add(document, touchEndEvent, onMouseUp);\n}\n/* istanbul ignore next */\nfunction onMouseMove(e) {\n if (e.target.classList.contains(RESIZE_HANDLER) && e.target.classList.contains(FOCUSED_HANDLER)) {\n selectedHandler = e.target;\n }\n else if (!isNullOrUndefined(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n selectedHandler = document.body.querySelector('.' + FOCUSED_HANDLER);\n }\n if (!isNullOrUndefined(selectedHandler)) {\n let resizeTowards = '';\n for (let i = 0; i < elementClass.length; i++) {\n if (selectedHandler.classList.contains('e-' + elementClass[i])) {\n resizeTowards = elementClass[i];\n }\n }\n if (!isNullOrUndefined(resize)) {\n proxy = this;\n resize(e, proxy);\n }\n switch (resizeTowards) {\n case 'south':\n resizeSouth(e);\n break;\n case 'north':\n resizeNorth(e);\n break;\n case 'west':\n resizeWest(e);\n break;\n case 'east':\n resizeEast(e);\n break;\n case 'south-east':\n resizeSouth(e);\n resizeEast(e);\n break;\n case 'south-west':\n resizeSouth(e);\n resizeWest(e);\n break;\n case 'north-east':\n resizeNorth(e);\n resizeEast(e);\n break;\n case 'north-west':\n resizeNorth(e);\n resizeWest(e);\n break;\n default: break;\n }\n }\n}\n/* istanbul ignore next */\nfunction getClientRectValues(element) {\n return element.getBoundingClientRect();\n}\n/* istanbul ignore next */\n// tslint:disable-next-line\nfunction resizeSouth(e) {\n let documentHeight = document.documentElement.clientHeight;\n let calculateValue = false;\n let containerRectValues;\n let coordinates = e.touches ? e.changedTouches[0] : e;\n let currentpageY = coordinates.pageY;\n let targetRectValues = getClientRectValues(targetElement);\n if (!isNullOrUndefined(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n if (!isNullOrUndefined(containerElement)) {\n calculateValue = true;\n }\n else if (isNullOrUndefined(containerElement) && ((documentHeight - currentpageY) >= 0 || (targetRectValues.top < 0))) {\n calculateValue = true;\n }\n let calculatedHeight = originalHeight + (currentpageY - originalMouseY);\n calculatedHeight = (calculatedHeight > minHeight) ? calculatedHeight : minHeight;\n let containerTop = 0;\n if (!isNullOrUndefined(containerElement)) {\n containerTop = containerRectValues.top;\n }\n let borderValue = isNullOrUndefined(containerElement) ? 0 : containerElement.offsetHeight - containerElement.clientHeight;\n let topWithoutborder = (targetRectValues.top - containerTop) - (borderValue / 2);\n topWithoutborder = (topWithoutborder < 0) ? 0 : topWithoutborder;\n if (targetRectValues.top > 0 && (topWithoutborder + calculatedHeight) > maxHeight) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.height = (maxHeight - parseInt(topWithoutborder.toString(), 10)) + 'px';\n return;\n }\n let targetTop = 0;\n if (calculateValue) {\n if (targetRectValues.top < 0 && (documentHeight + (targetRectValues.height + targetRectValues.top) > 0)) {\n targetTop = targetRectValues.top;\n if ((calculatedHeight + targetTop) <= 30) {\n calculatedHeight = (targetRectValues.height - (targetRectValues.height + targetRectValues.top)) + 30;\n }\n }\n if (((calculatedHeight + targetRectValues.top) >= maxHeight)) {\n targetElement.style.height = targetRectValues.height +\n (documentHeight - (targetRectValues.height + targetRectValues.top)) + 'px';\n }\n let calculatedTop = (isNullOrUndefined(containerElement)) ? targetTop : topWithoutborder;\n if (calculatedHeight >= minHeight && ((calculatedHeight + calculatedTop) <= maxHeight)) {\n targetElement.style.height = calculatedHeight + 'px';\n }\n }\n}\n/* istanbul ignore next */\n// tslint:disable-next-line\nfunction resizeNorth(e) {\n let calculateValue = false;\n let boundaryRectValues;\n let pageY = (getEventType(e.type) === 'mouse') ? e.pageY : e.touches[0].pageY;\n let targetRectValues = getClientRectValues(targetElement);\n if (!isNullOrUndefined(containerElement)) {\n boundaryRectValues = getClientRectValues(containerElement);\n }\n if (!isNullOrUndefined(containerElement) && (targetRectValues.top - boundaryRectValues.top) > 0) {\n calculateValue = true;\n }\n else if (isNullOrUndefined(containerElement) && pageY > 0) {\n calculateValue = true;\n }\n let currentHeight = originalHeight - (pageY - originalMouseY);\n if ((getClientRectValues(targetElement).bottom + currentHeight) > maxHeight) {\n calculateValue = false;\n targetElement.style.height = maxHeight - getClientRectValues(targetElement).bottom + 'px';\n }\n if (calculateValue) {\n if (currentHeight >= minHeight && currentHeight <= maxHeight) {\n let containerTop = 0;\n if (!isNullOrUndefined(containerElement)) {\n containerTop = boundaryRectValues.top;\n }\n let top = (originalY - containerTop) + (pageY - originalMouseY);\n top = top > 0 ? top : 1;\n targetElement.style.height = currentHeight + 'px';\n targetElement.style.top = top + 'px';\n }\n }\n}\n/* istanbul ignore next */\n// tslint:disable-next-line\nfunction resizeWest(e) {\n let documentWidth = document.documentElement.clientWidth;\n let calculateValue = false;\n let rectValues;\n if (!isNullOrUndefined(containerElement)) {\n rectValues = getClientRectValues(containerElement);\n }\n let pageX = (getEventType(e.type) === 'mouse') ? e.pageX : e.touches[0].pageX;\n let targetRectValues = getClientRectValues(targetElement);\n let borderValue = isNullOrUndefined(containerElement) ? 0 : containerElement.offsetWidth - containerElement.clientWidth;\n let left = isNullOrUndefined(containerElement) ? 0 : rectValues.left;\n let containerWidth = isNullOrUndefined(containerElement) ? 0 : rectValues.width;\n if (isNullOrUndefined(resizeWestWidth)) {\n if (!isNullOrUndefined(containerElement)) {\n resizeWestWidth = (((targetRectValues.left - left) - borderValue / 2)) + targetRectValues.width;\n resizeWestWidth = resizeWestWidth + (containerWidth - borderValue - resizeWestWidth);\n }\n else {\n resizeWestWidth = documentWidth;\n }\n }\n if (!isNullOrUndefined(containerElement) &&\n (((targetRectValues.left - rectValues.left) + targetRectValues.width +\n (rectValues.right - targetRectValues.right)) - borderValue) <= maxWidth) {\n calculateValue = true;\n }\n else if (isNullOrUndefined(containerElement) && pageX >= 0) {\n calculateValue = true;\n }\n let calculatedWidth = originalWidth - (pageX - originalMouseX);\n if (setLeft) {\n calculatedWidth = (calculatedWidth > resizeWestWidth) ? resizeWestWidth : calculatedWidth;\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n let containerLeft = 0;\n if (!isNullOrUndefined(containerElement)) {\n containerLeft = rectValues.left;\n }\n let left = (originalX - containerLeft) + (pageX - originalMouseX);\n left = (left > 0) ? left : 1;\n if (calculatedWidth !== previousWidth && setWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n if (setLeft) {\n targetElement.style.left = left + 'px';\n if (left === 1) {\n setWidth = false;\n }\n else {\n setWidth = true;\n }\n }\n }\n }\n previousWidth = calculatedWidth;\n}\n/* istanbul ignore next */\n// tslint:disable-next-line\nfunction resizeEast(e) {\n let documentWidth = document.documentElement.clientWidth;\n let calculateValue = false;\n let containerRectValues;\n if (!isNullOrUndefined(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n let coordinates = e.touches ? e.changedTouches[0] : e;\n let pageX = coordinates.pageX;\n let targetRectValues = getClientRectValues(targetElement);\n if (!isNullOrUndefined(containerElement) && (((targetRectValues.left - containerRectValues.left) + targetRectValues.width) < maxWidth\n || (targetRectValues.right - containerRectValues.left) > targetRectValues.width)) {\n calculateValue = true;\n }\n else if (isNullOrUndefined(containerElement) && (documentWidth - pageX) > 0) {\n calculateValue = true;\n }\n let calculatedWidth = originalWidth + (pageX - originalMouseX);\n let containerLeft = 0;\n if (!isNullOrUndefined(containerElement)) {\n containerLeft = containerRectValues.left;\n }\n if (((targetRectValues.left - containerLeft) + calculatedWidth) > maxWidth) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.width = maxWidth - (targetRectValues.left - containerLeft) + 'px';\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n }\n}\n/* istanbul ignore next */\nfunction setMinHeight(minimumHeight) {\n minHeight = minimumHeight;\n}\nfunction removeResize() {\n let handlers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (let i = 0; i < handlers.length; i++) {\n detach(handlers[i]);\n }\n}\n\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nclass ButtonProps extends ChildProperty {\n}\n__decorate$1([\n Property()\n], ButtonProps.prototype, \"buttonModel\", void 0);\n__decorate$1([\n Property('Button')\n], ButtonProps.prototype, \"type\", void 0);\n__decorate$1([\n Event()\n], ButtonProps.prototype, \"click\", void 0);\n/**\n * Configures the animation properties for both open and close the dialog.\n */\nclass AnimationSettings extends ChildProperty {\n}\n__decorate$1([\n Property('Fade')\n], AnimationSettings.prototype, \"effect\", void 0);\n__decorate$1([\n Property(400)\n], AnimationSettings.prototype, \"duration\", void 0);\n__decorate$1([\n Property(0)\n], AnimationSettings.prototype, \"delay\", void 0);\nconst ROOT = 'e-dialog';\nconst RTL = 'e-rtl';\nconst DLG_HEADER_CONTENT = 'e-dlg-header-content';\nconst DLG_HEADER = 'e-dlg-header';\nconst DLG_FOOTER_CONTENT = 'e-footer-content';\nconst MODAL_DLG = 'e-dlg-modal';\nconst DLG_CONTENT = 'e-dlg-content';\nconst DLG_CLOSE_ICON = 'e-icon-dlg-close';\nconst DLG_OVERLAY = 'e-dlg-overlay';\nconst DLG_TARGET = 'e-dlg-target';\nconst DLG_CONTAINER = 'e-dlg-container';\nconst SCROLL_DISABLED = 'e-scroll-disabled';\nconst DLG_PRIMARY_BUTTON = 'e-primary';\nconst ICON = 'e-icons';\nconst POPUP_ROOT = 'e-popup';\nconst DEVICE = 'e-device';\nconst FULLSCREEN = 'e-dlg-fullscreen';\nconst DLG_CLOSE_ICON_BTN = 'e-dlg-closeicon-btn';\nconst DLG_HIDE = 'e-popup-close';\nconst DLG_SHOW = 'e-popup-open';\nconst DLG_UTIL_DEFAULT_TITLE = 'Information';\nconst DLG_UTIL_ROOT = 'e-scroll-disabled';\nconst DLG_UTIL_ALERT = 'e-alert-dialog';\nconst DLG_UTIL_CONFIRM = 'e-confirm-dialog';\nconst DLG_RESIZABLE = 'e-dlg-resizable';\nconst DLG_RESTRICT_LEFT_VALUE = 'e-restrict-left';\nconst DLG_RESTRICT_WIDTH_VALUE = 'e-resize-viewport';\nconst DLG_REF_ELEMENT = 'e-dlg-ref-element';\n/**\n * Represents the dialog component that displays the information and get input from the user.\n * Two types of dialog components are `Modal and Modeless (non-modal)` depending on its interaction with parent application.\n * ```html\n *
      \n * ```\n * ```typescript\n * \n * ```\n */\nlet Dialog = class Dialog extends Component {\n /**\n * Constructor for creating the widget\n * @hidden\n */\n constructor(options, element) {\n super(options, element);\n }\n /**\n * Initialize the control rendering\n * @private\n */\n render() {\n this.initialize();\n this.initRender();\n this.wireEvents();\n if (this.width === '100%') {\n this.element.style.width = '';\n }\n if (this.minHeight !== '') {\n this.element.style.minHeight = this.minHeight.toString();\n }\n if (this.enableResize) {\n this.setResize();\n if (this.animationSettings.effect === 'None') {\n this.getMinHeight();\n }\n }\n this.renderComplete();\n }\n /**\n * Initialize the event handler\n * @private\n */\n preRender() {\n this.headerContent = null;\n this.allowMaxHeight = true;\n this.preventVisibility = true;\n this.clonedEle = this.element.cloneNode(true);\n this.closeIconClickEventHandler = (event) => {\n this.hide(event);\n };\n this.dlgOverlayClickEventHandler = (event) => {\n this.trigger('overlayClick', event);\n this.focusContent();\n };\n let localeText = { close: 'Close' };\n this.l10n = new L10n('dialog', localeText, this.locale);\n this.checkPositionData();\n if (isNullOrUndefined(this.target)) {\n let prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.target = document.body;\n this.isProtectedOnChange = prevOnChange;\n }\n }\n ;\n isNumberValue(value) {\n let isNumber = /^[-+]?\\d*\\.?\\d+$/.test(value);\n return isNumber;\n }\n checkPositionData() {\n if (!isNullOrUndefined(this.position)) {\n if (!isNullOrUndefined(this.position.X) && (typeof (this.position.X) !== 'number')) {\n let isNumber = this.isNumberValue(this.position.X);\n if (isNumber) {\n let prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.X = parseFloat(this.position.X);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n if (!isNullOrUndefined(this.position.Y) && (typeof (this.position.Y) !== 'number')) {\n let isNumber = this.isNumberValue(this.position.Y);\n if (isNumber) {\n let prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.Y = parseFloat(this.position.Y);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n }\n }\n getEle(list, selector) {\n let element = undefined;\n for (let i = 0; i < list.length; i++) {\n if (list[i].classList.contains(selector)) {\n element = list[i];\n break;\n }\n }\n return element;\n }\n /* istanbul ignore next */\n getMinHeight() {\n let computedHeaderHeight = '0px';\n let computedFooterHeight = '0px';\n if (!isNullOrUndefined(this.element.querySelector('.' + DLG_HEADER_CONTENT))) {\n computedHeaderHeight = getComputedStyle(this.headerContent).height;\n }\n let footerEle = this.getEle(this.element.children, DLG_FOOTER_CONTENT);\n if (!isNullOrUndefined(footerEle)) {\n computedFooterHeight = getComputedStyle(footerEle).height;\n }\n let headerHeight = parseInt(computedHeaderHeight.slice(0, computedHeaderHeight.indexOf('p')), 10);\n let footerHeight = parseInt(computedFooterHeight.slice(0, computedFooterHeight.indexOf('p')), 10);\n setMinHeight(headerHeight + 30 + footerHeight);\n return (headerHeight + 30 + footerHeight);\n }\n onResizeStart(args, dialogObj) {\n dialogObj.trigger('resizeStart', args);\n return args.cancel;\n }\n onResizing(args, dialogObj) {\n dialogObj.trigger('resizing', args);\n }\n onResizeComplete(args, dialogObj) {\n dialogObj.trigger('resizeStop', args);\n }\n setResize() {\n if (this.enableResize) {\n if (this.isBlazorServerRender() && !isNullOrUndefined(this.element.querySelector('.e-icons.e-resize-handle'))) {\n return;\n }\n this.element.classList.add(DLG_RESIZABLE);\n let computedHeight = getComputedStyle(this.element).minHeight;\n let computedWidth = getComputedStyle(this.element).minWidth;\n let direction = this.enableRtl ? 'south-west' : 'south-east';\n if (this.isModal && this.enableRtl) {\n this.element.classList.add(DLG_RESTRICT_LEFT_VALUE);\n }\n else if (this.isModal && this.target === document.body) {\n this.element.classList.add(DLG_RESTRICT_WIDTH_VALUE);\n }\n createResize({\n element: this.element,\n direction: direction,\n minHeight: parseInt(computedHeight.slice(0, computedWidth.indexOf('p')), 10),\n maxHeight: this.targetEle.clientHeight,\n minWidth: parseInt(computedWidth.slice(0, computedWidth.indexOf('p')), 10),\n maxWidth: this.targetEle.clientWidth,\n boundary: this.target === document.body ? null : this.targetEle,\n resizeBegin: this.onResizeStart.bind(this),\n resizeComplete: this.onResizeComplete.bind(this),\n resizing: this.onResizing.bind(this),\n proxy: this\n });\n }\n else {\n removeResize();\n if (this.isModal) {\n this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n }\n else {\n this.element.classList.remove(DLG_RESTRICT_WIDTH_VALUE);\n }\n this.element.classList.remove(DLG_RESIZABLE);\n }\n }\n /* istanbul ignore next */\n keyDown(event) {\n if (event.keyCode === 9) {\n if (this.isModal) {\n let buttonObj;\n if (!isNullOrUndefined(this.btnObj)) {\n buttonObj = this.btnObj[this.btnObj.length - 1];\n }\n if ((isNullOrUndefined(this.btnObj)) && (!isNullOrUndefined(this.ftrTemplateContent))) {\n let value = 'input,select,textarea,button,a,[contenteditable=\"true\"],[tabindex]';\n let items = this.ftrTemplateContent.querySelectorAll(value);\n buttonObj = { element: items[items.length - 1] };\n }\n if (!isNullOrUndefined(buttonObj) && document.activeElement === buttonObj.element && !event.shiftKey) {\n event.preventDefault();\n this.focusableElements(this.element).focus();\n }\n if (document.activeElement === this.focusableElements(this.element) && event.shiftKey) {\n event.preventDefault();\n if (!isNullOrUndefined(buttonObj)) {\n buttonObj.element.focus();\n }\n }\n }\n }\n let element = document.activeElement;\n let isTagName = (['input', 'textarea'].indexOf(element.tagName.toLowerCase()) > -1);\n let isContentEdit = false;\n if (!isTagName) {\n isContentEdit = element.hasAttribute('contenteditable') && element.getAttribute('contenteditable') === 'true';\n }\n if (event.keyCode === 27 && this.closeOnEscape) {\n this.hide(event);\n }\n if ((event.keyCode === 13 && !event.ctrlKey && element.tagName.toLowerCase() !== 'textarea' &&\n isTagName && !isNullOrUndefined(this.primaryButtonEle)) ||\n (event.keyCode === 13 && event.ctrlKey && (element.tagName.toLowerCase() === 'textarea' ||\n isContentEdit)) && !isNullOrUndefined(this.primaryButtonEle)) {\n let buttonIndex;\n let firstPrimary = this.buttons.some((data, index) => {\n buttonIndex = index;\n let buttonModel = data.buttonModel;\n return !isNullOrUndefined(buttonModel) && buttonModel.isPrimary === true;\n });\n if (firstPrimary && typeof (this.buttons[buttonIndex].click) === 'function') {\n setTimeout(() => {\n this.buttons[buttonIndex].click.call(this, event);\n });\n }\n }\n }\n /**\n * Initialize the control rendering\n * @private\n */\n initialize() {\n if (!isNullOrUndefined(this.target)) {\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n }\n if (!this.isBlazorServerRender()) {\n addClass([this.element], ROOT);\n }\n if (Browser.isDevice) {\n addClass([this.element], DEVICE);\n }\n if (!this.isBlazorServerRender()) {\n this.setCSSClass();\n }\n this.setMaxHeight();\n }\n /**\n * Initialize the rendering\n * @private\n */\n initRender() {\n this.initialRender = true;\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { role: 'dialog' });\n }\n if (this.zIndex === 1000) {\n this.setzIndex(this.element, false);\n this.calculatezIndex = true;\n }\n else {\n this.calculatezIndex = false;\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.element.getElementsByClassName('e-dlg-header-content')[0];\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.contentEle)) {\n this.contentEle = this.element.querySelector('#' + this.element.id + '_dialog-content');\n }\n if (!this.isBlazorServerRender()) {\n this.setTargetContent();\n if (this.header !== '' && !isNullOrUndefined(this.header)) {\n this.setHeader();\n }\n if (this.showCloseIcon) {\n this.renderCloseIcon();\n }\n this.setContent();\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setFooterTemplate();\n }\n else if (!isNullOrUndefined(this.buttons[0].buttonModel)) {\n this.setButton();\n }\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n this.setButton();\n }\n }\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { 'aria-modal': (this.isModal ? 'true' : 'false') });\n if (this.isModal) {\n this.setIsModal();\n }\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.dlgContainer)) {\n this.dlgContainer = this.element.parentElement;\n for (let i = 0, childNodes = this.dlgContainer.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains('e-dlg-overlay')) {\n this.dlgOverlay = childNodes[i];\n }\n }\n }\n if (this.element.classList.contains(DLG_UTIL_ALERT) !== true && this.element.classList.contains(DLG_UTIL_CONFIRM) !== true\n && !isNullOrUndefined(this.element.parentElement)) {\n let parentEle = this.isModal ? this.dlgContainer.parentElement : this.element.parentElement;\n this.refElement = this.createElement('div', { className: DLG_REF_ELEMENT });\n parentEle.insertBefore(this.refElement, (this.isModal ? this.dlgContainer : this.element));\n }\n if (!isNullOrUndefined(this.targetEle)) {\n this.isModal ? this.targetEle.appendChild(this.dlgContainer) : this.targetEle.appendChild(this.element);\n }\n this.popupObj = new Popup(this.element, {\n height: this.height,\n width: this.width,\n zIndex: this.zIndex,\n relateTo: this.target,\n actionOnScroll: 'none',\n enableRtl: this.enableRtl,\n open: (event) => {\n let eventArgs = {\n container: this.isModal ? this.dlgContainer : this.element,\n element: this.element,\n target: this.target,\n preventFocus: false\n };\n if (this.enableResize) {\n this.resetResizeIcon();\n }\n this.trigger('open', eventArgs, (openEventArgs) => {\n if (!openEventArgs.preventFocus) {\n this.focusContent();\n }\n });\n },\n close: (event) => {\n if (this.isModal) {\n addClass([this.dlgOverlay], 'e-fade');\n }\n this.unBindEvent(this.element);\n if (this.isModal) {\n this.dlgContainer.style.display = 'none';\n }\n this.trigger('close', this.closeArgs);\n let activeEle = document.activeElement;\n if (!isNullOrUndefined(activeEle) && !isNullOrUndefined((activeEle).blur)) {\n activeEle.blur();\n }\n if (!isNullOrUndefined(this.storeActiveElement) && !isNullOrUndefined(this.storeActiveElement.focus)) {\n this.storeActiveElement.focus();\n }\n }\n });\n this.positionChange();\n this.setEnableRTL();\n if (!this.isBlazorServerRender()) {\n addClass([this.element], DLG_HIDE);\n if (this.isModal) {\n this.setOverlayZindex();\n }\n }\n if (this.visible) {\n this.show();\n }\n else {\n if (this.isModal) {\n this.dlgOverlay.style.display = 'none';\n }\n }\n this.initialRender = false;\n }\n resetResizeIcon() {\n let dialogConHeight = this.getMinHeight();\n if (this.targetEle.offsetHeight < dialogConHeight) {\n let className = this.enableRtl ? 'e-south-west' : 'e-south-east';\n let resizeIcon = this.element.querySelector('.' + className);\n if (!isNullOrUndefined(resizeIcon)) {\n resizeIcon.style.bottom = '-' + dialogConHeight.toString() + 'px';\n }\n }\n }\n setOverlayZindex(zIndexValue) {\n let zIndex;\n if (isNullOrUndefined(zIndexValue)) {\n zIndex = parseInt(this.element.style.zIndex, 10) ? parseInt(this.element.style.zIndex, 10) : this.zIndex;\n }\n else {\n zIndex = zIndexValue;\n }\n this.dlgOverlay.style.zIndex = (zIndex - 1).toString();\n this.dlgContainer.style.zIndex = zIndex.toString();\n }\n positionChange() {\n if (this.isModal) {\n if (!isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y))) {\n this.setPopupPosition();\n }\n else if ((!isNaN(parseFloat(this.position.X)) && isNaN(parseFloat(this.position.Y)))\n || (isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y)))) {\n this.setPopupPosition();\n }\n else {\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n this.dlgContainer.classList.add('e-dlg-' + this.position.X + '-' + this.position.Y);\n }\n }\n else {\n this.setPopupPosition();\n }\n }\n setPopupPosition() {\n this.popupObj.setProperties({\n position: {\n X: this.position.X, Y: this.position.Y\n }\n });\n }\n setAllowDragging() {\n let handleContent = '.' + DLG_HEADER_CONTENT;\n this.dragObj = new Draggable(this.element, {\n clone: false,\n abort: '.e-dlg-closeicon-btn',\n handle: handleContent,\n dragStart: (event) => {\n this.trigger('dragStart', event, (dragEventArgs) => {\n if (isBlazor()) {\n dragEventArgs.bindEvents(event.dragElement);\n }\n });\n },\n dragStop: (event) => {\n if (this.isModal) {\n if (!isNullOrUndefined(this.position)) {\n this.dlgContainer.classList.remove('e-dlg-' + this.position.X + '-' + this.position.Y);\n }\n // Reset the dialog position after drag completion.\n this.element.style.position = 'relative';\n }\n this.trigger('dragStop', event);\n this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n },\n drag: (event) => {\n this.trigger('drag', event);\n }\n });\n if (!isNullOrUndefined(this.targetEle)) {\n this.dragObj.dragArea = this.targetEle;\n }\n }\n setButton() {\n if (!this.isBlazorServerRender()) {\n this.buttonContent = [];\n this.btnObj = [];\n for (let i = 0; i < this.buttons.length; i++) {\n let buttonType = !isNullOrUndefined(this.buttons[i].type) ? this.buttons[i].type.toLowerCase() : 'button';\n let btn = this.createElement('button', { attrs: { type: buttonType } });\n this.buttonContent.push(btn.outerHTML);\n }\n this.setFooterTemplate();\n }\n let footerBtn;\n for (let i = 0, childNodes = this.element.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(DLG_FOOTER_CONTENT)) {\n footerBtn = childNodes[i].querySelectorAll('button');\n }\n }\n for (let i = 0; i < this.buttons.length; i++) {\n if (!this.isBlazorServerRender()) {\n this.btnObj[i] = new Button(this.buttons[i].buttonModel);\n }\n if (this.isBlazorServerRender()) {\n this.ftrTemplateContent = this.element.querySelector('.' + DLG_FOOTER_CONTENT);\n }\n if (!isNullOrUndefined(this.ftrTemplateContent) && typeof (this.buttons[i].click) === 'function' && footerBtn.length > 0) {\n EventHandler.add(footerBtn[i], 'click', this.buttons[i].click, this);\n }\n if (!this.isBlazorServerRender() && !isNullOrUndefined(this.ftrTemplateContent)) {\n this.btnObj[i].appendTo(this.ftrTemplateContent.children[i]);\n this.btnObj[i].element.classList.add('e-flat');\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n }\n }\n setContent() {\n attributes(this.element, { 'aria-describedby': this.element.id + '_dialog-content' });\n this.contentEle = this.createElement('div', { className: DLG_CONTENT, id: this.element.id + '_dialog-content' });\n if (this.innerContentElement) {\n this.contentEle.appendChild(this.innerContentElement);\n }\n else if (!isNullOrUndefined(this.content) && this.content !== '' || !this.initialRender) {\n if (typeof (this.content) === 'string' && !isBlazor()) {\n this.contentEle.innerHTML = this.sanitizeHelper(this.content);\n }\n else if (this.content instanceof HTMLElement) {\n this.contentEle.appendChild(this.content);\n }\n else {\n this.setTemplate(this.content, this.contentEle);\n }\n }\n if (!isNullOrUndefined(this.headerContent)) {\n this.element.insertBefore(this.contentEle, this.element.children[1]);\n }\n else {\n this.element.insertBefore(this.contentEle, this.element.children[0]);\n }\n if (this.height === 'auto') {\n if (!this.isBlazorServerRender() && Browser.isIE && this.element.style.width === '' && !isNullOrUndefined(this.width)) {\n this.element.style.width = formatUnit(this.width);\n }\n this.setMaxHeight();\n }\n }\n setTemplate(template, toElement) {\n let templateFn;\n let templateProps;\n if (toElement.classList.contains(DLG_HEADER)) {\n templateProps = this.element.id + 'header';\n }\n else if (toElement.classList.contains(DLG_FOOTER_CONTENT)) {\n templateProps = this.element.id + 'footerTemplate';\n }\n else {\n templateProps = this.element.id + 'content';\n }\n let templateValue;\n if (!isNullOrUndefined(template.outerHTML)) {\n toElement.appendChild(template);\n }\n else if ((typeof template !== 'string') || (isBlazor() && !this.isStringTemplate)) {\n templateFn = compile(template);\n templateValue = template;\n }\n else {\n toElement.innerHTML = this.sanitizeHelper(template);\n }\n let fromElements = [];\n if (!isNullOrUndefined(templateFn)) {\n let isString = (isBlazor() &&\n !this.isStringTemplate && (templateValue).indexOf('
      Blazor') === 0) ?\n this.isStringTemplate : true;\n for (let item of templateFn({}, null, null, templateProps, isString)) {\n fromElements.push(item);\n }\n append([].slice.call(fromElements), toElement);\n }\n }\n /**\n * @hidden\n */\n sanitizeHelper(value) {\n if (this.enableHtmlSanitizer) {\n let dialogItem = SanitizeHtmlHelper.beforeSanitize();\n let beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(dialogItem, dialogItem, beforeEvent);\n this.trigger('beforeSanitizeHtml', dialogItem);\n if (dialogItem.cancel && !isNullOrUndefined(dialogItem.helper)) {\n value = dialogItem.helper(value);\n }\n else if (!dialogItem.cancel) {\n value = SanitizeHtmlHelper.serializeValue(dialogItem, value);\n }\n }\n return value;\n }\n setMaxHeight() {\n if (!this.allowMaxHeight) {\n return;\n }\n let display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) && (this.targetEle.offsetHeight < window.innerHeight) ?\n (this.targetEle.offsetHeight - 20) + 'px' : (window.innerHeight - 20) + 'px';\n this.element.style.display = display;\n if (Browser.isIE && this.height === 'auto' && !isNullOrUndefined(this.contentEle)\n && this.element.offsetHeight < this.contentEle.offsetHeight) {\n this.element.style.height = 'inherit';\n }\n }\n setEnableRTL() {\n if (!this.isBlazorServerRender()) {\n this.enableRtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\n }\n if (!isNullOrUndefined(this.element.querySelector('.e-resize-handle'))) {\n removeResize();\n this.setResize();\n }\n }\n setTargetContent() {\n if (isNullOrUndefined(this.content) || this.content === '') {\n let isContent = this.element.innerHTML.replace(/\\s|<(\\/?|\\!?)(!--!--)>/g, '') !== '';\n if (this.element.children.length > 0 || isContent) {\n this.innerContentElement = document.createDocumentFragment();\n [].slice.call(this.element.childNodes).forEach((el) => {\n if (el.nodeType !== 8) {\n this.innerContentElement.appendChild(el);\n }\n });\n }\n }\n }\n setHeader() {\n if (this.headerEle) {\n this.headerEle.innerHTML = '';\n }\n else {\n this.headerEle = this.createElement('div', { id: this.element.id + '_title', className: DLG_HEADER });\n }\n this.createHeaderContent();\n this.headerContent.appendChild(this.headerEle);\n this.setTemplate(this.header, this.headerEle);\n attributes(this.element, { 'aria-labelledby': this.element.id + '_title' });\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n }\n setFooterTemplate() {\n if (this.ftrTemplateContent) {\n this.ftrTemplateContent.innerHTML = '';\n }\n else {\n this.ftrTemplateContent = this.createElement('div', {\n className: DLG_FOOTER_CONTENT\n });\n }\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setTemplate(this.footerTemplate, this.ftrTemplateContent);\n }\n else {\n this.ftrTemplateContent.innerHTML = this.buttonContent.join('');\n }\n this.element.appendChild(this.ftrTemplateContent);\n }\n createHeaderContent() {\n if (isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.createElement('div', { id: this.element.id + '_dialog-header', className: DLG_HEADER_CONTENT });\n }\n }\n renderCloseIcon() {\n this.closeIcon = this.createElement('button', { className: DLG_CLOSE_ICON_BTN, attrs: { type: 'button' } });\n this.closeIconBtnObj = new Button({ cssClass: 'e-flat', iconCss: DLG_CLOSE_ICON + ' ' + ICON });\n this.closeIconTitle();\n if (!isNullOrUndefined(this.headerContent)) {\n prepend([this.closeIcon], this.headerContent);\n }\n else {\n this.createHeaderContent();\n prepend([this.closeIcon], this.headerContent);\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n }\n this.closeIconBtnObj.appendTo(this.closeIcon);\n }\n closeIconTitle() {\n this.l10n.setLocale(this.locale);\n let closeIconTitle = this.l10n.getConstant('close');\n this.closeIcon.setAttribute('title', closeIconTitle);\n this.closeIcon.setAttribute('aria-label', closeIconTitle);\n }\n setCSSClass(oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n }\n }\n setIsModal() {\n this.dlgContainer = this.createElement('div', { className: DLG_CONTAINER });\n this.element.classList.remove(DLG_SHOW);\n this.element.parentNode.insertBefore(this.dlgContainer, this.element);\n this.dlgContainer.appendChild(this.element);\n addClass([this.element], MODAL_DLG);\n this.dlgOverlay = this.createElement('div', { className: DLG_OVERLAY });\n this.dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.dlgContainer.appendChild(this.dlgOverlay);\n }\n getValidFocusNode(items) {\n let node;\n for (let u = 0; u < items.length; u++) {\n node = items[u];\n if ((node.clientHeight > 0 || (node.tagName.toLowerCase() === 'a' && node.hasAttribute('href'))) && node.tabIndex > -1 &&\n !node.disabled && !this.disableElement(node, '[disabled],[aria-disabled=\"true\"],[type=\"hidden\"]')) {\n return node;\n }\n }\n return node;\n }\n focusableElements(content) {\n if (!isNullOrUndefined(content)) {\n let value = 'input,select,textarea,button,a,[contenteditable=\"true\"],[tabindex]';\n let items = content.querySelectorAll(value);\n return this.getValidFocusNode(items);\n }\n return null;\n }\n getAutoFocusNode(container) {\n let node = container.querySelector('.' + DLG_CLOSE_ICON_BTN);\n let value = '[autofocus]';\n let items = container.querySelectorAll(value);\n let validNode = this.getValidFocusNode(items);\n if (isBlazor()) {\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n if (!isNullOrUndefined(validNode)) {\n node = validNode;\n }\n else {\n validNode = this.focusableElements(this.contentEle);\n if (!isNullOrUndefined(validNode)) {\n return node = validNode;\n }\n else if (!isNullOrUndefined(this.primaryButtonEle)) {\n return this.element.querySelector('.' + DLG_PRIMARY_BUTTON);\n }\n }\n return node;\n }\n disableElement(element, t) {\n let elementMatch = element ? element.matches || element.webkitMatchesSelector || element.msMatchesSelector : null;\n if (elementMatch) {\n for (; element; element = element.parentNode) {\n if (element instanceof Element && elementMatch.call(element, t)) {\n /* istanbul ignore next */\n return element;\n }\n }\n }\n return null;\n }\n focusContent() {\n let element = this.getAutoFocusNode(this.element);\n let node = !isNullOrUndefined(element) ? element : this.element;\n node.focus();\n this.bindEvent(this.element);\n }\n bindEvent(element) {\n EventHandler.add(element, 'keydown', this.keyDown, this);\n }\n unBindEvent(element) {\n EventHandler.remove(element, 'keydown', this.keyDown);\n }\n updateSanitizeContent() {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = this.sanitizeHelper(this.content);\n }\n }\n isBlazorServerRender() {\n return isBlazor() && this.isServerRendered;\n }\n /**\n * Module required function\n * @private\n */\n getModuleName() {\n return 'dialog';\n }\n /**\n * Called internally if any of the property value changed\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'content':\n if (!isNullOrUndefined(this.content) && this.content !== '') {\n if (this.isBlazorServerRender()) {\n this.contentEle = this.element.querySelector('.e-dlg-content');\n }\n if (!isNullOrUndefined(this.contentEle) && this.contentEle.getAttribute('role') !== 'dialog') {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = '';\n }\n typeof (this.content) === 'string' ? (this.isBlazorServerRender()\n && (this.contentEle.innerText === '')) ?\n this.contentEle.insertAdjacentHTML('beforeend', this.sanitizeHelper(this.content)) :\n this.updateSanitizeContent() :\n this.contentEle.appendChild(this.content);\n this.setMaxHeight();\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-content'))) {\n this.setContent();\n }\n }\n }\n else if (!isNullOrUndefined(this.contentEle)) {\n detach(this.contentEle);\n this.contentEle = null;\n }\n break;\n case 'header':\n if (this.header === '' || isNullOrUndefined(this.header)) {\n if (this.headerEle) {\n detach(this.headerEle);\n this.headerEle = null;\n }\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-header-content'))) {\n this.setHeader();\n }\n }\n break;\n case 'footerTemplate':\n if (this.footerTemplate === '' || isNullOrUndefined(this.footerTemplate)) {\n if (!this.ftrTemplateContent) {\n return;\n }\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n this.buttons = [{}];\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-footer-content'))) {\n this.setFooterTemplate();\n }\n this.buttons = [{}];\n }\n break;\n case 'showCloseIcon':\n if (this.element.getElementsByClassName(DLG_CLOSE_ICON).length > 0) {\n if (!this.showCloseIcon && (this.header === '' || isNullOrUndefined(this.header))) {\n detach(this.headerContent);\n this.headerContent = null;\n }\n else if (!this.showCloseIcon) {\n detach(this.closeIcon);\n }\n else {\n if (this.isBlazorServerRender()) {\n this.wireEvents();\n }\n }\n }\n else {\n if (!this.isBlazorServerRender()) {\n this.renderCloseIcon();\n }\n this.wireEvents();\n }\n break;\n case 'locale':\n if (this.showCloseIcon) {\n this.closeIconTitle();\n }\n break;\n case 'visible':\n this.visible ? this.show() : this.hide();\n break;\n case 'isModal':\n this.updateIsModal();\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'zIndex':\n this.popupObj.zIndex = this.zIndex;\n if (this.isModal) {\n this.setOverlayZindex(this.zIndex);\n }\n if (this.element.style.zIndex !== this.zIndex.toString()) {\n this.calculatezIndex = false;\n }\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'buttons':\n let buttonCount = this.buttons.length;\n if (!isNullOrUndefined(this.ftrTemplateContent) && !this.isBlazorServerRender()) {\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n }\n for (let i = 0; i < buttonCount; i++) {\n if (!isNullOrUndefined(this.buttons[i].buttonModel)) {\n this.footerTemplate = '';\n this.setButton();\n }\n }\n break;\n case 'allowDragging':\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n else {\n this.dragObj.destroy();\n }\n break;\n case 'target':\n this.setTarget(newProp.target);\n break;\n case 'position':\n this.checkPositionData();\n if (this.isModal) {\n let positionX = isNullOrUndefined(oldProp.position.X) ? this.position.X : oldProp.position.X;\n let positionY = isNullOrUndefined(oldProp.position.Y) ? this.position.Y : oldProp.position.Y;\n if (this.dlgContainer.classList.contains('e-dlg-' + positionX + '-' + positionY)) {\n this.dlgContainer.classList.remove('e-dlg-' + positionX + '-' + positionY);\n }\n }\n this.positionChange();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'enableResize':\n this.setResize();\n break;\n }\n }\n }\n setTarget(target) {\n this.popupObj.relateTo = target;\n this.target = target;\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n if (this.dragObj) {\n this.dragObj.dragArea = this.targetEle;\n }\n this.setMaxHeight();\n if (this.isModal) {\n this.updateIsModal();\n }\n if (this.enableResize) {\n this.setResize();\n }\n }\n updateIsModal() {\n this.element.setAttribute('aria-modal', this.isModal ? 'true' : 'false');\n if (this.isModal) {\n this.setIsModal();\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n if (!isNullOrUndefined(this.targetEle)) {\n this.targetEle.appendChild(this.dlgContainer);\n }\n }\n else {\n removeClass([this.element], MODAL_DLG);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n detach(this.dlgOverlay);\n while (this.dlgContainer.firstChild) {\n this.dlgContainer.parentElement.insertBefore(this.dlgContainer.firstChild, this.dlgContainer);\n }\n this.dlgContainer.parentElement.removeChild(this.dlgContainer);\n }\n if (this.visible) {\n this.show();\n }\n this.positionChange();\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n }\n setzIndex(zIndexElement, setPopupZindex) {\n let prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.zIndex = getZindexPartial(zIndexElement);\n this.isProtectedOnChange = prevOnChange;\n if (setPopupZindex) {\n this.popupObj.zIndex = this.zIndex;\n }\n }\n /**\n * Get the properties to be maintained in the persisted state.\n * @private\n */\n getPersistData() {\n return this.addOnPersist([]);\n }\n /**\n * To destroy the widget\n * @method destroy\n * @return {void}\n * @memberof dialog\n */\n destroy() {\n if (this.isDestroyed) {\n return;\n }\n let classArray = [RTL, MODAL_DLG, DLG_RESIZABLE, DLG_RESTRICT_LEFT_VALUE, FULLSCREEN, DEVICE];\n let attrs = ['role', 'aria-modal', 'aria-labelledby', 'aria-describedby', 'aria-grabbed', 'tabindex', 'style'];\n removeClass([this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.element.classList.contains(FULLSCREEN)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n if (this.isModal) {\n removeClass([(!isNullOrUndefined(this.targetEle) ? this.targetEle : document.body)], SCROLL_DISABLED);\n }\n this.unWireEvents();\n if (!isNullOrUndefined(this.btnObj)) {\n for (let i = 0; i < this.btnObj.length; i++) {\n this.btnObj[i].destroy();\n }\n }\n if (!isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n if (this.popupObj.element.classList.contains(POPUP_ROOT)) {\n this.popupObj.destroy();\n }\n removeClass([this.element], classArray);\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n removeClass([this.element], this.cssClass.split(' '));\n }\n if (!isNullOrUndefined(this.refElement) && !isNullOrUndefined(this.refElement.parentElement)) {\n this.refElement.parentElement.insertBefore((this.isModal ? this.dlgContainer : this.element), this.refElement);\n detach(this.refElement);\n this.refElement = undefined;\n }\n if (this.isModal && !this.isBlazorServerRender()) {\n detach(this.dlgOverlay);\n this.dlgContainer.parentNode.insertBefore(this.element, this.dlgContainer);\n detach(this.dlgContainer);\n }\n if (!this.isBlazorServerRender()) {\n this.element.innerHTML = this.clonedEle.innerHTML;\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.element.children)) {\n for (let i = 0; i <= this.element.children.length; i++) {\n i = i - i;\n detach(this.element.children[i]);\n }\n }\n }\n for (let i = 0; i < attrs.length; i++) {\n this.element.removeAttribute(attrs[i]);\n }\n if (!this.isBlazorServerRender()) {\n super.destroy();\n }\n else {\n this.isDestroyed = true;\n }\n }\n /**\n * Binding event to the element while widget creation\n * @hidden\n */\n wireEvents() {\n if (this.isBlazorServerRender() && this.showCloseIcon) {\n this.closeIcon = this.element.getElementsByClassName('e-dlg-closeicon-btn')[0];\n }\n if (this.showCloseIcon) {\n EventHandler.add(this.closeIcon, 'click', this.closeIconClickEventHandler, this);\n }\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n }\n /**\n * Unbinding event to the element while widget destroy\n * @hidden\n */\n unWireEvents() {\n if (this.showCloseIcon) {\n EventHandler.remove(this.closeIcon, 'click', this.closeIconClickEventHandler);\n }\n if (this.isModal) {\n EventHandler.remove(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler);\n }\n if (this.buttons.length > 0 && !isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n for (let i = 0; i < this.buttons.length; i++) {\n if (typeof (this.buttons[i].click) === 'function') {\n EventHandler.remove(this.ftrTemplateContent.children[i], 'click', this.buttons[i].click);\n }\n }\n }\n }\n /**\n * Refreshes the dialog's position when the user changes its header and footer height/width dynamically.\n * @return {void}\n */\n refreshPosition() {\n this.popupObj.refreshPosition();\n }\n /**\n * Opens the dialog if it is in hidden state.\n * To open the dialog with full screen width, set the parameter to true.\n * @param { boolean } isFullScreen - Enable the fullScreen Dialog.\n * @return {void}\n */\n show(isFullScreen) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (!this.element.classList.contains(DLG_SHOW) || (!isNullOrUndefined(isFullScreen))) {\n if (!isNullOrUndefined(isFullScreen)) {\n this.fullScreen(isFullScreen);\n }\n let eventArgs = isBlazor() ? {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n maxHeight: this.element.style.maxHeight\n } : {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n target: this.target,\n maxHeight: this.element.style.maxHeight\n };\n this.trigger('beforeOpen', eventArgs, (beforeOpenArgs) => {\n if (!beforeOpenArgs.cancel) {\n if (this.element.style.maxHeight !== eventArgs.maxHeight) {\n this.allowMaxHeight = false;\n this.element.style.maxHeight = eventArgs.maxHeight;\n }\n this.storeActiveElement = document.activeElement;\n this.element.tabIndex = -1;\n if (this.isModal && (!isNullOrUndefined(this.dlgOverlay))) {\n this.dlgOverlay.style.display = 'block';\n this.dlgContainer.style.display = 'flex';\n removeClass([this.dlgOverlay], 'e-fade');\n if (!isNullOrUndefined(this.targetEle)) {\n if (this.targetEle === document.body) {\n this.dlgContainer.style.position = 'fixed';\n }\n else {\n this.dlgContainer.style.position = 'absolute';\n }\n this.dlgOverlay.style.position = 'absolute';\n this.element.style.position = 'relative';\n addClass([this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n else {\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n let openAnimation = {\n name: this.animationSettings.effect + 'In',\n duration: this.animationSettings.duration,\n delay: this.animationSettings.delay\n };\n let zIndexElement = (this.isModal) ? this.element.parentElement : this.element;\n if (this.calculatezIndex) {\n this.setzIndex(zIndexElement, true);\n setStyleAttribute(this.element, { 'zIndex': this.zIndex });\n if (this.isModal) {\n this.setOverlayZindex(this.zIndex);\n }\n }\n this.animationSettings.effect === 'None' ? this.popupObj.show() : this.popupObj.show(openAnimation);\n this.dialogOpen = true;\n let prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.visible = true;\n this.preventVisibility = true;\n this.isProtectedOnChange = prevOnChange;\n }\n });\n }\n }\n /**\n * Closes the dialog if it is in visible state.\n * @return {void}\n */\n hide(event) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (this.preventVisibility) {\n let eventArgs = isBlazor() ? {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event\n } : {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n target: this.target,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event\n };\n this.closeArgs = eventArgs;\n this.trigger('beforeClose', eventArgs, (beforeCloseArgs) => {\n if (!beforeCloseArgs.cancel) {\n if (this.isModal) {\n !isNullOrUndefined(this.targetEle) ? removeClass([this.targetEle], [DLG_TARGET, SCROLL_DISABLED]) :\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n let closeAnimation = {\n name: this.animationSettings.effect + 'Out',\n duration: this.animationSettings.duration,\n delay: this.animationSettings.delay\n };\n this.animationSettings.effect === 'None' ? this.popupObj.hide() : this.popupObj.hide(closeAnimation);\n this.dialogOpen = false;\n let prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.visible = false;\n this.preventVisibility = false;\n this.isProtectedOnChange = prevOnChange;\n }\n });\n }\n }\n /**\n * Specifies to view the Full screen Dialog.\n * @private\n */\n fullScreen(args) {\n let top = this.element.offsetTop;\n let left = this.element.offsetLeft;\n if (args) {\n addClass([this.element], FULLSCREEN);\n let display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) ?\n (this.targetEle.offsetHeight) + 'px' : (window.innerHeight) + 'px';\n this.element.style.display = display;\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && !isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n }\n else {\n removeClass([this.element], FULLSCREEN);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n }\n return args;\n }\n /**\n * Returns the dialog button instances.\n * Based on that, you can dynamically change the button states.\n * @param { number } index - Index of the button.\n * @return {Button}\n */\n getButtons(index) {\n if (!isNullOrUndefined(index)) {\n return this.btnObj[index];\n }\n return this.btnObj;\n }\n};\n__decorate$1([\n Property('')\n], Dialog.prototype, \"content\", void 0);\n__decorate$1([\n Property(true)\n], Dialog.prototype, \"enableHtmlSanitizer\", void 0);\n__decorate$1([\n Property(false)\n], Dialog.prototype, \"showCloseIcon\", void 0);\n__decorate$1([\n Property(false)\n], Dialog.prototype, \"isModal\", void 0);\n__decorate$1([\n Property('')\n], Dialog.prototype, \"header\", void 0);\n__decorate$1([\n Property(true)\n], Dialog.prototype, \"visible\", void 0);\n__decorate$1([\n Property(false)\n], Dialog.prototype, \"enableResize\", void 0);\n__decorate$1([\n Property('auto')\n], Dialog.prototype, \"height\", void 0);\n__decorate$1([\n Property('')\n], Dialog.prototype, \"minHeight\", void 0);\n__decorate$1([\n Property('100%')\n], Dialog.prototype, \"width\", void 0);\n__decorate$1([\n Property('')\n], Dialog.prototype, \"cssClass\", void 0);\n__decorate$1([\n Property(1000)\n], Dialog.prototype, \"zIndex\", void 0);\n__decorate$1([\n Property(null)\n], Dialog.prototype, \"target\", void 0);\n__decorate$1([\n Property('')\n], Dialog.prototype, \"footerTemplate\", void 0);\n__decorate$1([\n Property(false)\n], Dialog.prototype, \"allowDragging\", void 0);\n__decorate$1([\n Collection([{}], ButtonProps)\n], Dialog.prototype, \"buttons\", void 0);\n__decorate$1([\n Property(true)\n], Dialog.prototype, \"closeOnEscape\", void 0);\n__decorate$1([\n Complex({}, AnimationSettings)\n], Dialog.prototype, \"animationSettings\", void 0);\n__decorate$1([\n Complex({ X: 'center', Y: 'center' }, PositionData)\n], Dialog.prototype, \"position\", void 0);\n__decorate$1([\n Event()\n], Dialog.prototype, \"created\", void 0);\n__decorate$1([\n Event()\n], Dialog.prototype, \"open\", void 0);\n__decorate$1([\n Event()\n], Dialog.prototype, \"beforeSanitizeHtml\", void 0);\n__decorate$1([\n Event()\n], Dialog.prototype, \"beforeOpen\", void 0);\n__decorate$1([\n Event()\n], Dialog.prototype, \"close\", void 0);\n__decorate$1([\n Event()\n], Dialog.prototype, \"beforeClose\", void 0);\n__decorate$1([\n Event()\n], Dialog.prototype, \"dragStart\", void 0);\n__decorate$1([\n Event()\n], Dialog.prototype, \"dragStop\", void 0);\n__decorate$1([\n Event()\n], Dialog.prototype, \"drag\", void 0);\n__decorate$1([\n Event()\n], Dialog.prototype, \"overlayClick\", void 0);\n__decorate$1([\n Event()\n], Dialog.prototype, \"resizeStart\", void 0);\n__decorate$1([\n Event()\n], Dialog.prototype, \"resizing\", void 0);\n__decorate$1([\n Event()\n], Dialog.prototype, \"resizeStop\", void 0);\n__decorate$1([\n Event()\n], Dialog.prototype, \"destroyed\", void 0);\nDialog = __decorate$1([\n NotifyPropertyChanges\n], Dialog);\n/**\n * Base for creating Alert and Confirmation Dialog through util method.\n */\nvar DialogUtility;\n(function (DialogUtility) {\n /**\n * An alert dialog box is used to display warning like messages to the users.\n * ```\n * Eg : DialogUtility.alert('Alert message');\n *\n * ```\n */\n /* istanbul ignore next */\n function alert(args) {\n let dialogElement = createElement('div', { 'className': DLG_UTIL_ALERT });\n document.body.appendChild(dialogElement);\n let alertDialogObj;\n let okButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n alertDialogObj = createDialog({ content: args,\n position: { X: 'center', Y: 'top' },\n isModal: true, header: DLG_UTIL_DEFAULT_TITLE,\n buttons: okButtonModel }, dialogElement);\n }\n else {\n alertDialogObj = createDialog(alertOptions(args), dialogElement);\n }\n alertDialogObj.close = () => {\n if (args && args.close) {\n args.close.apply(alertDialogObj);\n }\n alertDialogObj.destroy();\n if (alertDialogObj.element.classList.contains('e-dlg-modal')) {\n alertDialogObj.element.parentElement.remove();\n alertDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n alertDialogObj.element.remove();\n }\n };\n return alertDialogObj;\n }\n DialogUtility.alert = alert;\n /**\n * A confirm dialog displays a specified message along with ‘OK’ and ‘Cancel’ button.\n * ```\n * Eg : DialogUtility.confirm('Confirm dialog message');\n *\n * ```\n */\n /* istanbul ignore next */\n function confirm(args) {\n let dialogElement = createElement('div', { 'className': DLG_UTIL_CONFIRM });\n document.body.appendChild(dialogElement);\n let confirmDialogObj;\n let okCancelButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }, {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n confirmDialogObj = createDialog({ position: { X: 'center', Y: 'top' }, content: args, isModal: true,\n header: DLG_UTIL_DEFAULT_TITLE, buttons: okCancelButtonModel\n }, dialogElement);\n }\n else {\n confirmDialogObj = createDialog(confirmOptions(args), dialogElement);\n }\n confirmDialogObj.close = () => {\n if (args && args.close) {\n args.close.apply(confirmDialogObj);\n }\n confirmDialogObj.destroy();\n if (confirmDialogObj.element.classList.contains('e-dlg-modal')) {\n confirmDialogObj.element.parentElement.remove();\n confirmDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n confirmDialogObj.element.remove();\n }\n };\n return confirmDialogObj;\n }\n DialogUtility.confirm = confirm;\n function createDialog(options, element) {\n let dialogObject = new Dialog(options);\n dialogObject.appendTo(element);\n return dialogObject;\n }\n function alertOptions(option) {\n let options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setAlertButtonModel(options, option);\n return options;\n }\n function confirmOptions(option) {\n let options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setConfirmButtonModel(options, option);\n return options;\n }\n function formOptions(options, option) {\n options.header = !isNullOrUndefined(option.title) ? option.title : DLG_UTIL_DEFAULT_TITLE;\n options.content = !isNullOrUndefined(option.content) ? option.content : '';\n options.isModal = !isNullOrUndefined(option.isModal) ? option.isModal : true;\n options.showCloseIcon = !isNullOrUndefined(option.showCloseIcon) ? option.showCloseIcon : false;\n options.allowDragging = !isNullOrUndefined(option.isDraggable) ? option.isDraggable : false;\n options.closeOnEscape = !isNullOrUndefined(option.closeOnEscape) ? option.closeOnEscape : false;\n options.position = !isNullOrUndefined(option.position) ? option.position : { X: 'center', Y: 'top' };\n options.animationSettings = !isNullOrUndefined(option.animationSettings) ? option.animationSettings :\n { effect: 'Fade', duration: 400, delay: 0 };\n options.cssClass = !isNullOrUndefined(option.cssClass) ? option.cssClass : '';\n options.zIndex = !isNullOrUndefined(option.zIndex) ? option.zIndex : 1000;\n options.open = !isNullOrUndefined(option.open) ? option.open : null;\n return options;\n }\n function setAlertButtonModel(options, option) {\n let alertButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, alertButtonModel[0]);\n }\n else {\n options.buttons = alertButtonModel;\n }\n return options;\n }\n function setConfirmButtonModel(options, option) {\n let okButtonModel = {\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n };\n let cancelButtonModel = {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n };\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, okButtonModel);\n }\n else {\n options.buttons[0] = okButtonModel;\n }\n if (!isNullOrUndefined(option.cancelButton)) {\n options.buttons[1] = formButtonModel(options.buttons[1], option.cancelButton, cancelButtonModel);\n }\n else {\n options.buttons[1] = cancelButtonModel;\n }\n return options;\n }\n function formButtonModel(buttonModel, option, buttonPropModel) {\n let buttonProps = buttonPropModel;\n if (!isNullOrUndefined(option.text)) {\n buttonProps.buttonModel.content = option.text;\n }\n if (!isNullOrUndefined(option.icon)) {\n buttonProps.buttonModel.iconCss = option.icon;\n }\n if (!isNullOrUndefined(option.cssClass)) {\n buttonProps.buttonModel.cssClass = option.cssClass;\n }\n if (!isNullOrUndefined(option.click)) {\n buttonProps.click = option.click;\n }\n return buttonProps;\n }\n})(DialogUtility || (DialogUtility = {}));\n\n/**\n * Dialog Component\n */\n\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst TOUCHEND_HIDE_DELAY = 1500;\nconst TAPHOLD_THRESHOLD = 500;\nconst SHOW_POINTER_TIP_GAP = 0;\nconst HIDE_POINTER_TIP_GAP = 8;\nconst MOUSE_TRAIL_GAP = 2;\nconst POINTER_ADJUST = 2;\nconst ROOT$1 = 'e-tooltip';\nconst RTL$1 = 'e-rtl';\nconst DEVICE$1 = 'e-bigger';\nconst ICON$1 = 'e-icons';\nconst CLOSE = 'e-tooltip-close';\nconst TOOLTIP_WRAP = 'e-tooltip-wrap';\nconst CONTENT = 'e-tip-content';\nconst ARROW_TIP = 'e-arrow-tip';\nconst ARROW_TIP_OUTER = 'e-arrow-tip-outer';\nconst ARROW_TIP_INNER = 'e-arrow-tip-inner';\nconst TIP_BOTTOM = 'e-tip-bottom';\nconst TIP_TOP = 'e-tip-top';\nconst TIP_LEFT = 'e-tip-left';\nconst TIP_RIGHT = 'e-tip-right';\nconst POPUP_ROOT$1 = 'e-popup';\nconst POPUP_OPEN = 'e-popup-open';\nconst POPUP_CLOSE = 'e-popup-close';\nconst POPUP_LIB = 'e-lib';\nconst HIDE_POPUP = 'e-hidden';\nclass Animation$1 extends ChildProperty {\n}\n__decorate$2([\n Property({ effect: 'FadeIn', duration: 150, delay: 0 })\n], Animation$1.prototype, \"open\", void 0);\n__decorate$2([\n Property({ effect: 'FadeOut', duration: 150, delay: 0 })\n], Animation$1.prototype, \"close\", void 0);\n/**\n * Represents the Tooltip component that displays a piece of information about the target element on mouse hover.\n * ```html\n *
      Show Tooltip
      \n * ```\n * ```typescript\n * \n * ```\n */\nlet Tooltip = class Tooltip extends Component {\n /**\n * Constructor for creating the Tooltip Component\n */\n constructor(options, element) {\n super(options, element);\n this.isBlazorTooltip = false;\n this.contentTargetValue = null;\n this.contentEvent = null;\n this.contentAnimation = null;\n }\n initialize() {\n this.formatPosition();\n if (!(this.isServerRender())) {\n addClass([this.element], ROOT$1);\n }\n }\n isServerRender() {\n return isBlazor() && this.isServerRendered;\n }\n formatPosition() {\n if (this.position.indexOf('Top') === 0 || this.position.indexOf('Bottom') === 0) {\n [this.tooltipPositionY, this.tooltipPositionX] = this.position.split(/(?=[A-Z])/);\n }\n else {\n [this.tooltipPositionX, this.tooltipPositionY] = this.position.split(/(?=[A-Z])/);\n }\n }\n renderArrow() {\n this.setTipClass(this.position);\n if (!(this.isServerRender())) {\n let tip = this.createElement('div', { className: ARROW_TIP + ' ' + this.tipClass });\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_OUTER + ' ' + this.tipClass }));\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_INNER + ' ' + this.tipClass }));\n this.tooltipEle.appendChild(tip);\n }\n else {\n let tip = this.tooltipEle.querySelector('.' + ARROW_TIP);\n addClass([tip.querySelector('.' + ARROW_TIP_OUTER)], this.tipClass);\n addClass([tip.querySelector('.' + ARROW_TIP_INNER)], this.tipClass);\n this.tooltipEle.appendChild(tip);\n }\n }\n setTipClass(position) {\n if (position.indexOf('Right') === 0) {\n this.tipClass = TIP_LEFT;\n }\n else if (position.indexOf('Bottom') === 0) {\n this.tipClass = TIP_TOP;\n }\n else if (position.indexOf('Left') === 0) {\n this.tipClass = TIP_RIGHT;\n }\n else {\n this.tipClass = TIP_BOTTOM;\n }\n }\n renderPopup(target) {\n let elePos = this.mouseTrail ? { top: 0, left: 0 } : this.getTooltipPosition(target);\n this.tooltipEle.classList.remove(POPUP_LIB);\n this.popupObj = new Popup(this.tooltipEle, {\n height: this.height,\n width: this.width,\n position: { X: elePos.left, Y: elePos.top },\n enableRtl: this.enableRtl,\n open: this.openPopupHandler.bind(this),\n close: this.closePopupHandler.bind(this)\n });\n }\n getTooltipPosition(target) {\n this.tooltipEle.style.display = 'block';\n let pos = calculatePosition(target, this.tooltipPositionX, this.tooltipPositionY);\n let offsetPos = this.calculateTooltipOffset(this.position);\n let elePos = this.collisionFlipFit(target, pos.left + offsetPos.left, pos.top + offsetPos.top);\n this.tooltipEle.style.display = '';\n return elePos;\n }\n reposition(target) {\n let elePos = this.getTooltipPosition(target);\n this.popupObj.position = { X: elePos.left, Y: elePos.top };\n this.popupObj.dataBind();\n }\n openPopupHandler() {\n if (!this.mouseTrail && this.needTemplateReposition()) {\n this.reposition(this.findTarget());\n }\n this.trigger('afterOpen', this.tooltipEventArgs);\n }\n closePopupHandler() {\n resetBlazorTemplate(this.element.id + 'content', 'Content');\n this.clear();\n this.trigger('afterClose', this.tooltipEventArgs);\n }\n calculateTooltipOffset(position) {\n let pos = { top: 0, left: 0 };\n let tooltipEleWidth = this.tooltipEle.offsetWidth;\n let tooltipEleHeight = this.tooltipEle.offsetHeight;\n let arrowEle = this.tooltipEle.querySelector('.' + ARROW_TIP);\n let tipWidth = arrowEle ? arrowEle.offsetWidth : 0;\n let tipHeight = arrowEle ? arrowEle.offsetHeight : 0;\n let tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n let tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (this.tooltipEle.offsetHeight - this.tooltipEle.clientHeight);\n let tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (this.tooltipEle.offsetWidth - this.tooltipEle.clientWidth);\n if (this.mouseTrail) {\n tipAdjust += MOUSE_TRAIL_GAP;\n }\n switch (position) {\n case 'RightTop':\n pos.left += tipWidth + tipAdjust;\n pos.top -= tooltipEleHeight - tipHeightAdjust;\n break;\n case 'RightCenter':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'RightBottom':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tipHeightAdjust);\n break;\n case 'BottomRight':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n case 'BottomCenter':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n case 'BottomLeft':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'LeftBottom':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tipHeightAdjust);\n break;\n case 'LeftCenter':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'LeftTop':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight - tipHeightAdjust);\n break;\n case 'TopLeft':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'TopRight':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n default:\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n }\n pos.left += this.offsetX;\n pos.top += this.offsetY;\n return pos;\n }\n updateTipPosition(position) {\n let selEle = this.tooltipEle.querySelectorAll('.' + ARROW_TIP + ',.' + ARROW_TIP_OUTER + ',.' + ARROW_TIP_INNER);\n let removeList = [TIP_BOTTOM, TIP_TOP, TIP_LEFT, TIP_RIGHT];\n removeClass(selEle, removeList);\n this.setTipClass(position);\n addClass(selEle, this.tipClass);\n }\n adjustArrow(target, position, tooltipPositionX, tooltipPositionY) {\n if (this.showTipPointer === false) {\n return;\n }\n this.updateTipPosition(position);\n let leftValue;\n let topValue;\n this.tooltipEle.style.display = 'block';\n let tooltipWidth = this.tooltipEle.clientWidth;\n let tooltipHeight = this.tooltipEle.clientHeight;\n let arrowEle = this.tooltipEle.querySelector('.' + ARROW_TIP);\n let arrowInnerELe = this.tooltipEle.querySelector('.' + ARROW_TIP_INNER);\n let tipWidth = arrowEle.offsetWidth;\n let tipHeight = arrowEle.offsetHeight;\n this.tooltipEle.style.display = '';\n if (this.tipClass === TIP_BOTTOM || this.tipClass === TIP_TOP) {\n if (this.tipClass === TIP_BOTTOM) {\n topValue = '99.9%';\n // Arrow icon aligned -2px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 2) + 'px';\n }\n else {\n topValue = -(tipHeight - 1) + 'px';\n // Arrow icon aligned -6px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 6) + 'px';\n }\n if (target) {\n let tipPosExclude = tooltipPositionX !== 'Center' || (tooltipWidth > target.offsetWidth) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionX === 'Left') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n leftValue = (tooltipWidth - tipWidth - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionX === 'Right') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n leftValue = POINTER_ADJUST + 'px';\n }\n else {\n leftValue = ((tooltipWidth / 2) - (tipWidth / 2)) + 'px';\n }\n }\n }\n else {\n if (this.tipClass === TIP_RIGHT) {\n leftValue = '99.9%';\n // Arrow icon aligned -2px left from ArrowOuterTip div\n arrowInnerELe.style.left = '-' + (tipWidth - 2) + 'px';\n }\n else {\n leftValue = -(tipWidth - 1) + 'px';\n // Arrow icon aligned -2px from ArrowOuterTip width\n arrowInnerELe.style.left = (-(tipWidth) + (tipWidth - 2)) + 'px';\n }\n let tipPosExclude = tooltipPositionY !== 'Center' || (tooltipHeight > target.offsetHeight) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionY === 'Top') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n topValue = (tooltipHeight - tipHeight - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionY === 'Bottom') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n topValue = POINTER_ADJUST + 'px';\n }\n else {\n topValue = ((tooltipHeight / 2) - (tipHeight / 2)) + 'px';\n }\n }\n arrowEle.style.top = topValue;\n arrowEle.style.left = leftValue;\n }\n renderContent(target) {\n let tooltipContent = this.tooltipEle.querySelector('.' + CONTENT);\n if (this.cssClass) {\n addClass([this.tooltipEle], this.cssClass.split(' '));\n }\n if (target && !isNullOrUndefined(target.getAttribute('title'))) {\n target.setAttribute('data-content', target.getAttribute('title'));\n target.removeAttribute('title');\n }\n if (!isNullOrUndefined(this.content)) {\n if (this.isBlazorTooltip || !(this.isServerRender())) {\n tooltipContent.innerHTML = '';\n if (this.content instanceof HTMLElement) {\n tooltipContent.appendChild(this.content);\n }\n else if (typeof this.content === 'string' && this.content.indexOf('
      Blazor') < 0) {\n if (this.enableHtmlSanitizer) {\n this.setProperties({ content: SanitizeHtmlHelper.sanitize(this.content) }, true);\n }\n tooltipContent.innerHTML = this.content;\n }\n else {\n let templateFunction = compile(this.content);\n append(templateFunction({}, null, null, this.element.id + 'content'), tooltipContent);\n if (typeof this.content === 'string' && this.content.indexOf('
      Blazor') >= 0) {\n this.isBlazorTemplate = true;\n updateBlazorTemplate(this.element.id + 'content', 'Content', this);\n }\n }\n }\n }\n else {\n if (target && !isNullOrUndefined(target.getAttribute('data-content'))) {\n tooltipContent.innerHTML = target.getAttribute('data-content');\n }\n }\n }\n renderCloseIcon() {\n if (!this.isSticky) {\n return;\n }\n let tipClose = this.createElement('div', { className: ICON$1 + ' ' + CLOSE });\n this.tooltipEle.appendChild(tipClose);\n EventHandler.add(tipClose, Browser.touchStartEvent, this.onStickyClose, this);\n }\n addDescribedBy(target, id) {\n let describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n if (describedby.indexOf(id) < 0) {\n describedby.push(id);\n }\n attributes(target, { 'aria-describedby': describedby.join(' ').trim(), 'data-tooltip-id': id });\n }\n removeDescribedBy(target) {\n let id = target.getAttribute('data-tooltip-id');\n let describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n let index = describedby.indexOf(id);\n if (index !== -1) {\n describedby.splice(index, 1);\n }\n target.removeAttribute('data-tooltip-id');\n let orgdescribedby = describedby.join(' ').trim();\n if (orgdescribedby) {\n target.setAttribute('aria-describedby', orgdescribedby);\n }\n else {\n target.removeAttribute('aria-describedby');\n }\n }\n tapHoldHandler(evt) {\n clearTimeout(this.autoCloseTimer);\n this.targetHover(evt.originalEvent);\n }\n touchEndHandler(e) {\n if (this.isSticky) {\n return;\n }\n let close = () => {\n this.close();\n };\n this.autoCloseTimer = setTimeout(close, TOUCHEND_HIDE_DELAY);\n }\n targetClick(e) {\n let target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target)) {\n return;\n }\n if (target.getAttribute('data-tooltip-id') === null) {\n this.targetHover(e);\n }\n else if (!this.isSticky) {\n this.hideTooltip(this.animation.close, e, target);\n }\n }\n targetHover(e) {\n let target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target) || target.getAttribute('data-tooltip-id') !== null) {\n return;\n }\n let targetList = [].slice.call(document.querySelectorAll('[data-tooltip-id= ' + this.ctrlId + '_content]'));\n for (let target of targetList) {\n this.restoreElement(target);\n }\n this.showTooltip(target, this.animation.open, e);\n }\n showTooltip(target, showAnimation, e) {\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n const observeCallback = (beforeRenderArgs) => {\n this.beforeRenderCallback(beforeRenderArgs, target, e, showAnimation);\n };\n this.trigger('beforeRender', this.tooltipEventArgs, observeCallback.bind(this));\n }\n beforeRenderCallback(beforeRenderArgs, target, e, showAnimation) {\n let isBlazorTooltipRendered = false;\n if (beforeRenderArgs.cancel) {\n this.isHidden = true;\n this.clear();\n }\n else {\n this.isHidden = false;\n if (isNullOrUndefined(this.tooltipEle)) {\n if (this.isServerRender()) {\n this.contentTargetValue = target;\n this.contentEvent = e;\n this.contentAnimation = showAnimation;\n let args = { 'enableTooltip': 'true' };\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnTooltipServerCall', args);\n // tslint:enable\n isBlazorTooltipRendered = true;\n }\n else {\n this.ctrlId = this.element.getAttribute('id') ?\n getUniqueID(this.element.getAttribute('id')) : getUniqueID('tooltip');\n this.tooltipEle = this.createElement('div', {\n className: TOOLTIP_WRAP + ' ' + POPUP_ROOT$1 + ' ' + POPUP_LIB, attrs: {\n role: 'tooltip', 'aria-hidden': 'false', 'id': this.ctrlId + '_content'\n }, styles: 'width:' +\n formatUnit(this.width) + ';height:' + formatUnit(this.height) + ';position:absolute;'\n });\n this.beforeRenderBlazor(target, this);\n }\n if (!isBlazorTooltipRendered) {\n this.afterRenderBlazor(target, e, showAnimation, this);\n }\n }\n else {\n if (this.isServerRender()) {\n addClass([this.tooltipEle], POPUP_OPEN);\n document.body.appendChild(this.tooltipEle);\n this.renderCloseIcon();\n this.renderPopup(target);\n }\n if (target) {\n this.adjustArrow(target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n this.addDescribedBy(target, this.ctrlId + '_content');\n this.renderContent(target);\n Animation.stop(this.tooltipEle);\n this.reposition(target);\n this.afterRenderBlazor(target, e, showAnimation, this);\n }\n }\n }\n }\n ;\n contentUpdated(args) {\n if (isNullOrUndefined(this.tooltipEle)) {\n if (this.isServerRender()) {\n this.ctrlId = this.element.id;\n this.tooltipEle = document.querySelector('#' + this.ctrlId + '_content');\n if (this.tooltipEle) {\n this.tooltipEle.setAttribute('style', 'width:' + formatUnit(this.width) +\n ';height:' + formatUnit(this.height) + ';position:absolute;');\n this.beforeRenderBlazor(this.contentTargetValue, this);\n this.afterRenderBlazor(this.contentTargetValue, this.contentEvent, this.contentAnimation, this);\n this.contentTargetValue = this.contentEvent = this.contentAnimation = null;\n }\n }\n }\n }\n ;\n beforeRenderBlazor(target, ctrlObj) {\n if (target) {\n if (Browser.isDevice) {\n addClass([ctrlObj.tooltipEle], DEVICE$1);\n }\n if (ctrlObj.width !== 'auto') {\n ctrlObj.tooltipEle.style.maxWidth = formatUnit(ctrlObj.width);\n }\n if (!(this.isServerRender())) {\n ctrlObj.tooltipEle.appendChild(ctrlObj.createElement('div', { className: CONTENT }));\n }\n document.body.appendChild(ctrlObj.tooltipEle);\n removeClass([ctrlObj.tooltipEle], HIDE_POPUP);\n ctrlObj.addDescribedBy(target, ctrlObj.ctrlId + '_content');\n ctrlObj.renderContent(target);\n addClass([ctrlObj.tooltipEle], POPUP_OPEN);\n if (ctrlObj.showTipPointer) {\n ctrlObj.renderArrow();\n }\n ctrlObj.renderCloseIcon();\n ctrlObj.renderPopup(target);\n ctrlObj.adjustArrow(target, ctrlObj.position, ctrlObj.tooltipPositionX, ctrlObj.tooltipPositionY);\n Animation.stop(ctrlObj.tooltipEle);\n ctrlObj.reposition(target);\n }\n }\n afterRenderBlazor(target, e, showAnimation, ctrlObj) {\n if (target) {\n removeClass([ctrlObj.tooltipEle], POPUP_OPEN);\n addClass([ctrlObj.tooltipEle], POPUP_CLOSE);\n ctrlObj.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: ctrlObj.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n if (ctrlObj.needTemplateReposition() && !ctrlObj.mouseTrail) {\n ctrlObj.tooltipEle.style.display = 'none';\n }\n const observeCallback = (observedArgs) => {\n ctrlObj.beforeOpenCallback(observedArgs, target, showAnimation, e);\n };\n ctrlObj.trigger('beforeOpen', ctrlObj.tooltipEventArgs, observeCallback.bind(ctrlObj));\n }\n }\n beforeOpenCallback(observedArgs, target, showAnimation, e) {\n if (observedArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.restoreElement(target);\n }\n else {\n let openAnimation = {\n name: showAnimation.effect,\n duration: showAnimation.duration,\n delay: showAnimation.delay,\n timingFunction: 'easeOut'\n };\n if (showAnimation.effect === 'None') {\n openAnimation = undefined;\n }\n if (this.openDelay > 0) {\n let show = () => {\n if (this.popupObj) {\n this.popupObj.show(openAnimation, target);\n }\n };\n this.showTimer = setTimeout(show, this.openDelay);\n }\n else {\n if (this.popupObj) {\n this.popupObj.show(openAnimation, target);\n }\n }\n }\n if (e) {\n this.wireMouseEvents(e, target);\n }\n }\n needTemplateReposition() {\n // tslint:disable-next-line:no-any\n const tooltip = this;\n return !isNullOrUndefined(tooltip.viewContainerRef)\n && typeof tooltip.viewContainerRef !== 'string'\n || (this.isServerRender()) && this.isBlazorTemplate;\n }\n checkCollision(target, x, y) {\n let elePos = {\n left: x, top: y, position: this.position,\n horizontal: this.tooltipPositionX, vertical: this.tooltipPositionY\n };\n let affectedPos = isCollide(this.tooltipEle, (this.target ? this.element : null), x, y);\n if (affectedPos.length > 0) {\n elePos.horizontal = affectedPos.indexOf('left') >= 0 ? 'Right' : affectedPos.indexOf('right') >= 0 ? 'Left' :\n this.tooltipPositionX;\n elePos.vertical = affectedPos.indexOf('top') >= 0 ? 'Bottom' : affectedPos.indexOf('bottom') >= 0 ? 'Top' :\n this.tooltipPositionY;\n }\n return elePos;\n }\n collisionFlipFit(target, x, y) {\n let elePos = this.checkCollision(target, x, y);\n let newpos = elePos.position;\n if (this.tooltipPositionY !== elePos.vertical) {\n newpos = ((this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + this.tooltipPositionX : this.tooltipPositionX + elePos.vertical);\n }\n if (this.tooltipPositionX !== elePos.horizontal) {\n if (newpos.indexOf('Left') === 0) {\n elePos.vertical = (newpos === 'LeftTop' || newpos === 'LeftCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Left');\n }\n if (newpos.indexOf('Right') === 0) {\n elePos.vertical = (newpos === 'RightTop' || newpos === 'RightCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Right');\n }\n elePos.horizontal = this.tooltipPositionX;\n }\n this.tooltipEventArgs = {\n type: null, cancel: false, target: target, event: null,\n element: this.tooltipEle, collidedPosition: newpos\n };\n this.trigger('beforeCollision', this.tooltipEventArgs);\n if (elePos.position !== newpos) {\n let pos = calculatePosition(target, elePos.horizontal, elePos.vertical);\n this.adjustArrow(target, newpos, elePos.horizontal, elePos.vertical);\n let offsetPos = this.calculateTooltipOffset(newpos);\n offsetPos.top -= (('TopBottom'.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n ('TopBottom'.indexOf(newpos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * this.offsetY) : 0;\n offsetPos.left -= (('RightLeft'.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n ('RightLeft'.indexOf(newpos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * this.offsetX) : 0;\n elePos.position = newpos;\n elePos.left = pos.left + offsetPos.left;\n elePos.top = pos.top + offsetPos.top;\n }\n else {\n this.adjustArrow(target, newpos, elePos.horizontal, elePos.vertical);\n }\n let eleOffset = { left: elePos.left, top: elePos.top };\n let left = fit(this.tooltipEle, (this.target ? this.element : null), { X: true, Y: false }, eleOffset).left;\n this.tooltipEle.style.display = 'block';\n if (this.showTipPointer && (newpos.indexOf('Bottom') === 0 || newpos.indexOf('Top') === 0)) {\n let arrowEle = this.tooltipEle.querySelector('.' + ARROW_TIP);\n let arrowleft = parseInt(arrowEle.style.left, 10) - (left - elePos.left);\n if (arrowleft < 0) {\n arrowleft = 0;\n }\n else if ((arrowleft + arrowEle.offsetWidth) > this.tooltipEle.clientWidth) {\n arrowleft = this.tooltipEle.clientWidth - arrowEle.offsetWidth;\n }\n arrowEle.style.left = arrowleft.toString() + 'px';\n }\n this.tooltipEle.style.display = '';\n eleOffset.left = left;\n return eleOffset;\n }\n hideTooltip(hideAnimation, e, targetElement) {\n let target;\n if (e) {\n target = this.target ? (targetElement || e.target) : this.element;\n }\n else {\n target = document.querySelector('[data-tooltip-id= ' + this.ctrlId + '_content]');\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n // this line commented for close the tooltip popup element even the target element destroyed in a page.\n //if (isNullOrUndefined(target)) { return; }\n this.trigger('beforeClose', this.tooltipEventArgs, (observedArgs) => {\n if (!observedArgs.cancel) {\n if (this.isServerRender()) {\n this.blazorHide(hideAnimation, target);\n }\n else {\n this.popupHide(hideAnimation, target);\n }\n }\n else {\n this.isHidden = false;\n }\n });\n }\n /* istanbul ignore next */\n blazorHide(hideAnimation, target) {\n let proxy = this;\n let hide = () => {\n proxy.popupHide(hideAnimation, target);\n };\n if (this.popupObj) {\n this.popupHide(hideAnimation, target);\n }\n else {\n setTimeout(hide, 200);\n }\n }\n popupHide(hideAnimation, target) {\n this.clearTemplate();\n if (target) {\n this.restoreElement(target);\n }\n this.isHidden = true;\n let closeAnimation = {\n name: hideAnimation.effect,\n duration: hideAnimation.duration,\n delay: hideAnimation.delay,\n timingFunction: 'easeIn'\n };\n if (hideAnimation.effect === 'None') {\n closeAnimation = undefined;\n }\n if (this.closeDelay > 0) {\n let hide = () => {\n if (this.popupObj) {\n this.popupObj.hide(closeAnimation);\n }\n };\n this.hideTimer = setTimeout(hide, this.closeDelay);\n }\n else {\n if (this.popupObj) {\n this.popupObj.hide(closeAnimation);\n }\n }\n }\n restoreElement(target) {\n this.unwireMouseEvents(target);\n if (!isNullOrUndefined(target.getAttribute('data-content'))) {\n target.setAttribute('title', target.getAttribute('data-content'));\n target.removeAttribute('data-content');\n }\n this.removeDescribedBy(target);\n }\n clear() {\n if (this.tooltipEle) {\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n }\n if (this.isHidden) {\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n if (this.isServerRender() && this.tooltipEle) {\n this.tooltipEle.style.display = 'none';\n let args = { 'enableTooltip': 'false' };\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnTooltipServerCall', args);\n // tslint:enable\n remove(this.tooltipEle);\n }\n else if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n this.tooltipEle = null;\n this.popupObj = null;\n }\n }\n onMouseOut(e) {\n const enteredElement = e.relatedTarget;\n // don't close the tooltip only if it is tooltip content element\n if (enteredElement && !this.mouseTrail) {\n const checkForTooltipElement = closest(enteredElement, `.${TOOLTIP_WRAP}.${POPUP_LIB}.${POPUP_ROOT$1}`);\n if (checkForTooltipElement) {\n EventHandler.add(checkForTooltipElement, 'mouseleave', this.tooltipElementMouseOut, this);\n this.unwireMouseEvents(e.target);\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n if (this.closeDelay === 0) {\n this.clear();\n }\n }\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n this.clear();\n }\n }\n tooltipElementMouseOut(e) {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n EventHandler.remove(this.element, 'mouseleave', this.tooltipElementMouseOut);\n this.clear();\n }\n onStickyClose(e) {\n this.close();\n }\n onMouseMove(event) {\n let eventPageX = 0;\n let eventPageY = 0;\n if (event.type.indexOf('touch') > -1) {\n event.preventDefault();\n eventPageX = event.touches[0].pageX;\n eventPageY = event.touches[0].pageY;\n }\n else {\n eventPageX = event.pageX;\n eventPageY = event.pageY;\n }\n Animation.stop(this.tooltipEle);\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n this.adjustArrow(event.target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n let pos = this.calculateTooltipOffset(this.position);\n let x = eventPageX + pos.left + this.offsetX;\n let y = eventPageY + pos.top + this.offsetY;\n let elePos = this.checkCollision(event.target, x, y);\n if (this.tooltipPositionX !== elePos.horizontal || this.tooltipPositionY !== elePos.vertical) {\n let newpos = (this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + elePos.horizontal : elePos.horizontal + elePos.vertical;\n elePos.position = newpos;\n this.adjustArrow(event.target, elePos.position, elePos.horizontal, elePos.vertical);\n let colpos = this.calculateTooltipOffset(elePos.position);\n elePos.left = eventPageX + colpos.left - this.offsetX;\n elePos.top = eventPageY + colpos.top - this.offsetY;\n }\n this.tooltipEle.style.left = elePos.left + 'px';\n this.tooltipEle.style.top = elePos.top + 'px';\n }\n keyDown(event) {\n if (this.tooltipEle && event.keyCode === 27) {\n this.close();\n }\n }\n touchEnd(e) {\n if (this.tooltipEle && closest(e.target, '.' + ROOT$1) === null) {\n this.close();\n }\n }\n scrollHandler(e) {\n if (this.tooltipEle) {\n if (!(closest(e.target, `.${TOOLTIP_WRAP}.${POPUP_LIB}.${POPUP_ROOT$1}`))) {\n this.close();\n }\n }\n }\n /**\n * Core method that initializes the control rendering.\n * @private\n */\n render() {\n this.initialize();\n this.wireEvents(this.opensOn);\n this.renderComplete();\n }\n /**\n * Initializes the values of private members.\n * @private\n */\n preRender() {\n this.tipClass = TIP_BOTTOM;\n this.tooltipPositionX = 'Center';\n this.tooltipPositionY = 'Top';\n this.isHidden = true;\n }\n /**\n * Binding events to the Tooltip element.\n * @hidden\n */\n wireEvents(trigger) {\n let triggerList = this.getTriggerList(trigger);\n for (let opensOn of triggerList) {\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.wireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.add(this.element, Browser.touchStartEvent, this.targetClick, this);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n this.touchModule = new Touch(this.element, {\n tapHoldThreshold: TAPHOLD_THRESHOLD,\n tapHold: this.tapHoldHandler.bind(this)\n });\n EventHandler.add(this.element, Browser.touchEndEvent, this.touchEndHandler, this);\n }\n else {\n EventHandler.add(this.element, 'mouseover', this.targetHover, this);\n if (this.isServerRender() && !this.isSticky) {\n EventHandler.add(this.element, 'mouseleave', this.onMouseOut, this);\n }\n }\n }\n }\n EventHandler.add(document, 'touchend', this.touchEnd, this);\n EventHandler.add(document, 'scroll wheel', this.scrollHandler, this);\n EventHandler.add(document, 'keydown', this.keyDown, this);\n }\n getTriggerList(trigger) {\n if (trigger === 'Auto') {\n trigger = (Browser.isDevice) ? 'Hover' : 'Hover Focus';\n }\n return trigger.split(' ');\n }\n wireFocusEvents() {\n if (!isNullOrUndefined(this.target)) {\n let targetList = [].slice.call(this.element.querySelectorAll(this.target));\n for (let target of targetList) {\n EventHandler.add(target, 'focus', this.targetHover, this);\n }\n }\n else {\n EventHandler.add(this.element, 'focus', this.targetHover, this);\n }\n }\n wireMouseEvents(e, target) {\n if (this.tooltipEle) {\n if (!this.isSticky) {\n if (e.type === 'focus') {\n EventHandler.add(target, 'blur', this.onMouseOut, this);\n }\n if (e.type === 'mouseover') {\n if (!this.isServerRender()) {\n EventHandler.add(target, 'mouseleave', this.onMouseOut, this);\n }\n }\n }\n if (this.mouseTrail) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', this.onMouseMove, this);\n }\n }\n }\n /**\n * Unbinding events from the element on widget destroy.\n * @hidden\n */\n unwireEvents(trigger) {\n let triggerList = this.getTriggerList(trigger);\n for (let opensOn of triggerList) {\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.unwireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.targetClick);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n EventHandler.remove(this.element, Browser.touchEndEvent, this.touchEndHandler);\n }\n else {\n EventHandler.remove(this.element, 'mouseover', this.targetHover);\n if (this.isServerRender() && !this.isSticky) {\n EventHandler.remove(this.element, 'mouseleave', this.onMouseOut);\n }\n }\n }\n }\n EventHandler.remove(document, 'touchend', this.touchEnd);\n EventHandler.remove(document, 'scroll wheel', this.scrollHandler);\n EventHandler.remove(document, 'keydown', this.keyDown);\n }\n unwireFocusEvents() {\n if (!isNullOrUndefined(this.target)) {\n let targetList = [].slice.call(this.element.querySelectorAll(this.target));\n for (let target of targetList) {\n EventHandler.remove(target, 'focus', this.targetHover);\n }\n }\n else {\n EventHandler.remove(this.element, 'focus', this.targetHover);\n }\n }\n unwireMouseEvents(target) {\n if (!this.isSticky) {\n let triggerList = this.getTriggerList(this.opensOn);\n for (let opensOn of triggerList) {\n if (opensOn === 'Focus') {\n EventHandler.remove(target, 'blur', this.onMouseOut);\n }\n if (opensOn === 'Hover' && !Browser.isDevice) {\n if (!this.isServerRender()) {\n EventHandler.remove(target, 'mouseleave', this.onMouseOut);\n }\n }\n }\n }\n if (this.mouseTrail) {\n EventHandler.remove(target, 'mousemove touchstart mouseenter', this.onMouseMove);\n }\n }\n findTarget() {\n let target = document.querySelector('[data-tooltip-id= ' + this.ctrlId + '_content]');\n return target;\n }\n /**\n * Core method to return the component name.\n * @private\n */\n getModuleName() {\n return 'tooltip';\n }\n /**\n * Returns the properties to be maintained in the persisted state.\n * @private\n */\n getPersistData() {\n return this.addOnPersist([]);\n }\n /**\n * Called internally, if any of the property value changed.\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n let targetElement = this.findTarget();\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'width':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.width = this.tooltipEle.style.maxWidth = formatUnit(newProp.width);\n this.reposition(targetElement);\n }\n break;\n case 'height':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.height = formatUnit(newProp.height);\n this.reposition(targetElement);\n }\n break;\n case 'content':\n if (this.tooltipEle) {\n if (this.isServerRender()) {\n this.isBlazorTooltip = true;\n }\n this.renderContent();\n }\n else if (this.isServerRender()) {\n let args = { 'content': newProp.content };\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnTooltipServerCall', args);\n // tslint:enable\n }\n break;\n case 'opensOn':\n this.unwireEvents(oldProp.opensOn);\n this.wireEvents(newProp.opensOn);\n break;\n case 'position':\n this.formatPosition();\n if (this.tooltipEle && targetElement) {\n let arrowInnerELe = this.tooltipEle.querySelector('.' + ARROW_TIP_INNER);\n arrowInnerELe.style.top = arrowInnerELe.style.left = null;\n this.reposition(targetElement);\n }\n break;\n case 'tipPointerPosition':\n if (this.tooltipEle && targetElement) {\n this.reposition(targetElement);\n }\n break;\n case 'offsetX':\n if (this.tooltipEle) {\n let x = newProp.offsetX - oldProp.offsetX;\n this.tooltipEle.style.left = (parseInt(this.tooltipEle.style.left, 10) + (x)).toString() + 'px';\n }\n break;\n case 'offsetY':\n if (this.tooltipEle) {\n let y = newProp.offsetY - oldProp.offsetY;\n this.tooltipEle.style.top = (parseInt(this.tooltipEle.style.top, 10) + (y)).toString() + 'px';\n }\n break;\n case 'cssClass':\n if (this.tooltipEle) {\n if (oldProp.cssClass) {\n removeClass([this.tooltipEle], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.tooltipEle], newProp.cssClass.split(' '));\n }\n }\n break;\n case 'enableRtl':\n if (this.tooltipEle) {\n if (this.enableRtl) {\n addClass([this.tooltipEle], RTL$1);\n }\n else {\n removeClass([this.tooltipEle], RTL$1);\n }\n }\n break;\n }\n }\n }\n /**\n * It is used to show the Tooltip on the specified target with specific animation settings.\n * @param element Target element where the Tooltip is to be displayed. (It is an optional parameter)\n * @param animation Sets the specific animation, while showing the Tooltip on the screen. (It is an optional parameter)\n * @return {void}\n */\n open(element, animation) {\n if (isNullOrUndefined(animation)) {\n animation = this.animation.open;\n }\n if (isNullOrUndefined(element)) {\n element = this.element;\n }\n if (element.style.display === 'none') {\n return;\n }\n this.showTooltip(element, animation);\n }\n /**\n * It is used to hide the Tooltip with specific animation effect.\n * @param animation Sets the specific animation when hiding Tooltip from the screen. (It is an optional parameter)\n * @return {void}\n */\n close(animation) {\n if (!animation) {\n animation = this.animation.close;\n }\n this.hideTooltip(animation);\n }\n /**\n * It is used to refresh the Tooltip content and its position.\n * @param target Target element where the Tooltip content or position needs to be refreshed.\n * @return {void}\n */\n refresh(target) {\n if (this.tooltipEle) {\n this.renderContent(target);\n }\n if (this.popupObj && target) {\n this.reposition(target);\n }\n }\n /**\n * It is used to destroy the Tooltip component.\n * @method destroy\n * @return {void}\n * @memberof Tooltip\n */\n destroy() {\n if (!this.isServerRender()) {\n super.destroy();\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n }\n if (this.isServerRender() && this.tooltipEle) {\n let placeholder = document.querySelector('#' + this.ctrlId + '_content_placeholder');\n if (placeholder) {\n placeholder.appendChild(this.tooltipEle);\n }\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n removeClass([this.element], ROOT$1);\n this.unwireEvents(this.opensOn);\n this.unwireMouseEvents(this.element);\n this.tooltipEle = null;\n this.popupObj = null;\n }\n};\n__decorate$2([\n Property('auto')\n], Tooltip.prototype, \"width\", void 0);\n__decorate$2([\n Property('auto')\n], Tooltip.prototype, \"height\", void 0);\n__decorate$2([\n Property()\n], Tooltip.prototype, \"content\", void 0);\n__decorate$2([\n Property()\n], Tooltip.prototype, \"target\", void 0);\n__decorate$2([\n Property('TopCenter')\n], Tooltip.prototype, \"position\", void 0);\n__decorate$2([\n Property(0)\n], Tooltip.prototype, \"offsetX\", void 0);\n__decorate$2([\n Property(0)\n], Tooltip.prototype, \"offsetY\", void 0);\n__decorate$2([\n Property(true)\n], Tooltip.prototype, \"showTipPointer\", void 0);\n__decorate$2([\n Property('Auto')\n], Tooltip.prototype, \"tipPointerPosition\", void 0);\n__decorate$2([\n Property('Auto')\n], Tooltip.prototype, \"opensOn\", void 0);\n__decorate$2([\n Property(false)\n], Tooltip.prototype, \"mouseTrail\", void 0);\n__decorate$2([\n Property(false)\n], Tooltip.prototype, \"isSticky\", void 0);\n__decorate$2([\n Complex({}, Animation$1)\n], Tooltip.prototype, \"animation\", void 0);\n__decorate$2([\n Property(0)\n], Tooltip.prototype, \"openDelay\", void 0);\n__decorate$2([\n Property(0)\n], Tooltip.prototype, \"closeDelay\", void 0);\n__decorate$2([\n Property()\n], Tooltip.prototype, \"cssClass\", void 0);\n__decorate$2([\n Property(false)\n], Tooltip.prototype, \"enableHtmlSanitizer\", void 0);\n__decorate$2([\n Event()\n], Tooltip.prototype, \"beforeRender\", void 0);\n__decorate$2([\n Event()\n], Tooltip.prototype, \"beforeOpen\", void 0);\n__decorate$2([\n Event()\n], Tooltip.prototype, \"afterOpen\", void 0);\n__decorate$2([\n Event()\n], Tooltip.prototype, \"beforeClose\", void 0);\n__decorate$2([\n Event()\n], Tooltip.prototype, \"afterClose\", void 0);\n__decorate$2([\n Event()\n], Tooltip.prototype, \"beforeCollision\", void 0);\n__decorate$2([\n Event()\n], Tooltip.prototype, \"created\", void 0);\n__decorate$2([\n Event()\n], Tooltip.prototype, \"destroyed\", void 0);\nTooltip = __decorate$2([\n NotifyPropertyChanges\n], Tooltip);\n\n/**\n * Tooltip modules\n */\n\nlet globalTimeOut = {};\nlet spinTemplate = null;\nlet spinCSSClass = null;\nconst DEFT_MAT_WIDTH = 30;\nconst DEFT_FAB_WIDTH = 30;\nconst DEFT_BOOT_WIDTH = 30;\nconst DEFT_BOOT4_WIDTH = 36;\nconst CLS_SHOWSPIN = 'e-spin-show';\nconst CLS_HIDESPIN = 'e-spin-hide';\nconst CLS_MATERIALSPIN = 'e-spin-material';\nconst CLS_FABRICSPIN = 'e-spin-fabric';\nconst CLS_BOOTSPIN = 'e-spin-bootstrap';\nconst CLS_BOOT4SPIN = 'e-spin-bootstrap4';\nconst CLS_HIGHCONTRASTSPIN = 'e-spin-high-contrast';\nconst CLS_SPINWRAP = 'e-spinner-pane';\nconst CLS_SPININWRAP = 'e-spinner-inner';\nconst CLS_SPINCIRCLE = 'e-path-circle';\nconst CLS_SPINARC = 'e-path-arc';\nconst CLS_SPINLABEL = 'e-spin-label';\nconst CLS_SPINTEMPLATE = 'e-spin-template';\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : blazorSpinner({ action: \"Create\", options: {target: targetElement}, type: \"\" });\n * ```\n * @param args\n * @private\n */\nfunction Spinner(action, options, target, type) {\n switch (action) {\n case 'Create':\n let element = document.querySelector(options.target);\n let args = { type: type, target: element, cssClass: options.cssClass,\n label: options.label, width: options.width };\n createSpinner(args);\n break;\n case 'Show':\n showSpinner(document.querySelector(target));\n break;\n case 'Hide':\n hideSpinner(document.querySelector(target));\n break;\n case 'Set':\n let setArgs = { cssClass: options.cssClass, type: type };\n setSpinner(setArgs);\n break;\n }\n}\n/**\n * Create a spinner for the specified target element.\n * ```\n * E.g : createSpinner({ target: targetElement, width: '34px', label: 'Loading..' });\n * ```\n * @param args\n * @private\n */\nfunction createSpinner(args, internalCreateElement) {\n if (!args.target) {\n return;\n }\n let radius;\n let makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n let container = create_spinner_container(args.target, makeElement);\n if (!isNullOrUndefined(args.cssClass)) {\n container.wrap.classList.add(args.cssClass);\n }\n if (!isNullOrUndefined(args.template) || !isNullOrUndefined(spinTemplate)) {\n let template = !isNullOrUndefined(args.template) ? args.template : spinTemplate;\n container.wrap.classList.add(CLS_SPINTEMPLATE);\n replaceContent(container.wrap, template, spinCSSClass);\n }\n else {\n let theme = !isNullOrUndefined(args.type) ? args.type : getTheme(container.wrap);\n let width = !isNullOrUndefined(args.width) ? args.width : undefined;\n radius = calculateRadius(width, theme);\n setTheme(theme, container.wrap, radius, makeElement);\n if (!isNullOrUndefined(args.label)) {\n createLabel(container.inner_wrap, args.label, makeElement);\n }\n }\n container.wrap.classList.add(CLS_HIDESPIN);\n container = null;\n}\nfunction createLabel(container, label, makeElement) {\n let labelEle = makeElement('div', {});\n labelEle.classList.add(CLS_SPINLABEL);\n labelEle.textContent = label;\n container.appendChild(labelEle);\n return labelEle;\n}\nfunction createMaterialSpinner(container, radius, makeElement) {\n let uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'Material', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIALSPIN);\n mat_calculate_attributes(radius, container, 'Material', CLS_MATERIALSPIN);\n}\nfunction createBootstrap4Spinner(container, radius, makeElement) {\n let uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'Bootstrap4', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT4SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap4', CLS_BOOT4SPIN);\n}\nfunction startMatAnimate(container, uniqueID, radius) {\n let globalObject = {};\n let timeOutVar = 0;\n globalTimeOut[uniqueID].timeOut = 0;\n globalObject[uniqueID] = globalVariables(uniqueID, radius, 0, 0);\n let spinnerInfo = { uniqueID: uniqueID, container: container, globalInfo: globalObject, timeOutVar: timeOutVar };\n animateMaterial(spinnerInfo);\n}\nfunction createFabricSpinner(container, radius, makeElement) {\n let uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'Fabric', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FABRICSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FABRICSPIN);\n}\nfunction createHighContrastSpinner(container, radius, makeElement) {\n let uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'HighContrast', radius: radius };\n create_fabric_element(container, uniqueID, CLS_HIGHCONTRASTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_HIGHCONTRASTSPIN);\n}\nfunction getTheme(container) {\n let theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n}\nfunction setTheme(theme, container, radius, makeElement) {\n let innerContainer = container.querySelector('.' + CLS_SPININWRAP);\n let svg = innerContainer.querySelector('svg');\n if (!isNullOrUndefined(svg)) {\n innerContainer.removeChild(svg);\n }\n switch (theme) {\n case 'Material':\n createMaterialSpinner(innerContainer, radius, makeElement);\n break;\n case 'Fabric':\n createFabricSpinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap':\n createBootstrapSpinner(innerContainer, radius, makeElement);\n break;\n case 'HighContrast':\n createHighContrastSpinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap4':\n createBootstrap4Spinner(innerContainer, radius, makeElement);\n break;\n }\n}\nfunction createBootstrapSpinner(innerContainer, radius, makeElement) {\n let uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'Bootstrap', radius: radius };\n create_bootstrap_element(innerContainer, uniqueID, makeElement);\n boot_calculate_attributes(innerContainer, radius);\n}\nfunction create_bootstrap_element(innerContainer, uniqueID, makeElement) {\n let svgBoot = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n let viewBoxValue = 64;\n let trans = 32;\n let defaultRadius = 2;\n svgBoot.setAttribute('id', uniqueID);\n svgBoot.setAttribute('class', CLS_BOOTSPIN);\n svgBoot.setAttribute('viewBox', '0 0 ' + viewBoxValue + ' ' + viewBoxValue);\n innerContainer.insertBefore(svgBoot, innerContainer.firstChild);\n for (let item = 0; item <= 7; item++) {\n let bootCircle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n bootCircle.setAttribute('class', CLS_SPINCIRCLE + '_' + item);\n bootCircle.setAttribute('r', defaultRadius + '');\n bootCircle.setAttribute('transform', 'translate(' + trans + ',' + trans + ')');\n svgBoot.appendChild(bootCircle);\n }\n}\nfunction boot_calculate_attributes(innerContainer, radius) {\n let svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n svg.style.width = svg.style.height = radius + 'px';\n let x = 0;\n let y = 0;\n let rad = 24;\n let startArc = 90;\n for (let item = 0; item <= 7; item++) {\n let start = defineArcPoints(x, y, rad, startArc);\n let circleEle = svg.querySelector('.' + CLS_SPINCIRCLE + '_' + item);\n circleEle.setAttribute('cx', start.x + '');\n circleEle.setAttribute('cy', start.y + '');\n startArc = startArc >= 360 ? 0 : startArc;\n startArc = startArc + 45;\n }\n}\nfunction generateSeries(begin, stop) {\n let series = [];\n let start = begin;\n let end = stop;\n let increment = false;\n let count = 1;\n formSeries(start);\n function formSeries(i) {\n series.push(i);\n if (i !== end || count === 1) {\n if (i <= start && i > 1 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n else if (i === 1) {\n i = 7;\n i = parseFloat((i + 0.2).toFixed(2));\n increment = true;\n }\n else if (i < 8 && increment) {\n i = parseFloat((i + 0.2).toFixed(2));\n if (i === 8) {\n increment = false;\n }\n }\n else if (i <= 8 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n ++count;\n formSeries(i);\n }\n }\n return series;\n}\nfunction animateBootstrap(innerContainer) {\n let svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n let id = svg.getAttribute('id');\n for (let i = 1; i <= 8; i++) {\n let circleEle = (innerContainer.getElementsByClassName('e-path-circle_' +\n (i === 8 ? 0 : i))[0]);\n rotation(circleEle, i, i, generateSeries(i, i), id);\n }\n function rotation(circle, start, end, series, id) {\n let count = 0;\n boot_animate(start);\n function boot_animate(radius) {\n if (globalTimeOut[id].isAnimate) {\n ++count;\n circle.setAttribute('r', radius + '');\n if (count >= series.length) {\n count = 0;\n }\n globalTimeOut[id].timeOut = setTimeout(boot_animate.bind(null, series[count]), 18);\n }\n }\n }\n}\nfunction replaceContent(container, template, cssClass) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n let inner = container.querySelector('.e-spinner-inner');\n inner.innerHTML = template;\n}\nfunction calculateRadius(width, theme) {\n let defaultSize;\n switch (theme) {\n case 'Material':\n defaultSize = DEFT_MAT_WIDTH;\n break;\n case 'Fabric':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Bootstrap4':\n defaultSize = DEFT_BOOT4_WIDTH;\n break;\n default:\n defaultSize = DEFT_BOOT_WIDTH;\n }\n width = width ? parseFloat(width + '') : defaultSize;\n return theme === 'Bootstrap' ? width : width / 2;\n}\nfunction globalVariables(id, radius, count, previousId) {\n return {\n radius: radius,\n count: count,\n previousId: previousId\n };\n}\nfunction random_generator() {\n let random = '';\n let combine = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n for (let i = 0; i < 5; i++) {\n random += combine.charAt(Math.floor(Math.random() * combine.length));\n }\n return random;\n}\nfunction create_fabric_element(innerCon, uniqueID, themeClass, makeElement) {\n let svgFabric = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgFabric.setAttribute('id', uniqueID);\n svgFabric.setAttribute('class', themeClass);\n let fabricCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n let fabricCircleArc = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCircleArc.setAttribute('class', CLS_SPINARC);\n innerCon.insertBefore(svgFabric, innerCon.firstChild);\n svgFabric.appendChild(fabricCirclePath);\n svgFabric.appendChild(fabricCircleArc);\n}\nfunction create_material_element(innerContainer, uniqueID, makeElement, cls) {\n let svgMaterial = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgMaterial.setAttribute('class', cls);\n svgMaterial.setAttribute('id', uniqueID);\n let matCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n matCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n innerContainer.insertBefore(svgMaterial, innerContainer.firstChild);\n svgMaterial.appendChild(matCirclePath);\n}\nfunction create_spinner_container(target, makeElement) {\n let spinnerContainer = makeElement('div', {});\n spinnerContainer.classList.add(CLS_SPINWRAP);\n let spinnerInnerContainer = makeElement('div', {});\n spinnerInnerContainer.classList.add(CLS_SPININWRAP);\n target.appendChild(spinnerContainer);\n spinnerContainer.appendChild(spinnerInnerContainer);\n return { wrap: spinnerContainer, inner_wrap: spinnerInnerContainer };\n}\nfunction animateMaterial(spinnerInfo) {\n let start = 1;\n let end = 149;\n let duration = 1333;\n let max = 75;\n createCircle(start, end, easeAnimation, duration, spinnerInfo.globalInfo[spinnerInfo.uniqueID].count, max, spinnerInfo);\n spinnerInfo.globalInfo[spinnerInfo.uniqueID].count = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].count % 4;\n}\nfunction createCircle(start, end, easing, duration, count, max, spinnerInfo) {\n let id = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId;\n let startTime = new Date().getTime();\n let change = end - start;\n let diameter = getSize((spinnerInfo.globalInfo[spinnerInfo.uniqueID].radius * 2) + '');\n let strokeSize = getStrokeSize(diameter);\n let rotate = -90 * (spinnerInfo.globalInfo[spinnerInfo.uniqueID].count || 0);\n mat_animation(spinnerInfo);\n function mat_animation(spinnerInfo) {\n let currentTime = Math.max(0, Math.min(new Date().getTime() - startTime, duration));\n updatePath(easing(currentTime, start, change, duration), spinnerInfo.container);\n if (id === spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId && currentTime < duration) {\n globalTimeOut[spinnerInfo.uniqueID].timeOut = setTimeout(mat_animation.bind(null, spinnerInfo), 1);\n }\n else {\n animateMaterial(spinnerInfo);\n }\n }\n function updatePath(value, container) {\n if ((!isNullOrUndefined(container.querySelector('svg.e-spin-material')))\n && (!isNullOrUndefined(container.querySelector('svg.e-spin-material').querySelector('path.e-path-circle')))) {\n let svg = container.querySelector('svg.e-spin-material');\n let path = svg.querySelector('path.e-path-circle');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, value, max) + '');\n path.setAttribute('transform', 'rotate(' + (rotate) + ' ' + diameter / 2 + ' ' + diameter / 2 + ')');\n }\n }\n}\nfunction mat_calculate_attributes(radius, container, type, cls) {\n let diameter = radius * 2;\n let svg = container.querySelector('svg.' + cls);\n let path = svg.querySelector('path.e-path-circle');\n let strokeSize = getStrokeSize(diameter);\n let transformOrigin = (diameter / 2) + 'px';\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.width = svg.style.height = diameter + 'px';\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n path.setAttribute('d', drawArc(diameter, strokeSize));\n if (type === 'Material') {\n path.setAttribute('stroke-width', strokeSize + '');\n path.setAttribute('stroke-dasharray', ((diameter - strokeSize) * Math.PI * 0.75) + '');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, 1, 75) + '');\n }\n}\nfunction getSize(value) {\n let parsed = parseFloat(value);\n return parsed;\n}\nfunction drawArc(diameter, strokeSize) {\n let radius = diameter / 2;\n let offset = strokeSize / 2;\n return 'M' + radius + ',' + offset\n + 'A' + (radius - offset) + ',' + (radius - offset) + ' 0 1 1 ' + offset + ',' + radius;\n}\nfunction getStrokeSize(diameter) {\n return 10 / 100 * diameter;\n}\nfunction getDashOffset(diameter, strokeSize, value, max) {\n return (diameter - strokeSize) * Math.PI * ((3 * (max) / 100) - (value / 100));\n}\nfunction easeAnimation(current, start, change, duration) {\n let timestamp = (current /= duration) * current;\n let timecount = timestamp * current;\n return start + change * (6 * timecount * timestamp + -15 * timestamp * timestamp + 10 * timecount);\n}\nfunction fb_calculate_attributes(radius, innerConainer, trgClass) {\n let centerX = radius;\n let centerY = radius;\n let diameter = radius * 2;\n let startArc = 315;\n let endArc = 45;\n let svg = innerConainer.querySelector('.' + trgClass);\n let circle = svg.querySelector('.e-path-circle');\n let path = svg.querySelector('.e-path-arc');\n let transformOrigin = (diameter / 2) + 'px';\n circle.setAttribute('d', defineCircle(centerX, centerY, radius));\n path.setAttribute('d', defineArc(centerX, centerY, radius, startArc, endArc));\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n svg.style.width = svg.style.height = diameter + 'px';\n}\nfunction defineArcPoints(centerX, centerY, radius, angle) {\n let radians = (angle - 90) * Math.PI / 180.0;\n return {\n x: centerX + (radius * Math.cos(radians)),\n y: centerY + (radius * Math.sin(radians))\n };\n}\nfunction defineArc(x, y, radius, startArc, endArc) {\n let start = defineArcPoints(x, y, radius, endArc);\n let end = defineArcPoints(x, y, radius, startArc);\n let d = [\n 'M', start.x, start.y,\n 'A', radius, radius, 0, 0, 0, end.x, end.y\n ].join(' ');\n return d;\n}\nfunction defineCircle(x, y, radius) {\n let d = [\n 'M', x, y,\n 'm', -radius, 0,\n 'a', radius, radius, 0, 1, 0, radius * 2, 0,\n 'a', radius, radius, 0, 1, 0, -radius * 2, 0,\n ].join(' ');\n return d;\n}\n/**\n * Function to show the Spinner.\n * @param container - Specify the target of the Spinner.\n * @private\n */\nfunction showSpinner(container) {\n showHideSpinner(container, false);\n container = null;\n}\nfunction showHideSpinner(container, isHide) {\n let spinnerWrap;\n if (container) {\n spinnerWrap = container.classList.contains(CLS_SPINWRAP) ? container :\n container.querySelector('.' + CLS_SPINWRAP);\n }\n if (container && spinnerWrap) {\n let inner = spinnerWrap.querySelector('.' + CLS_SPININWRAP);\n let spinCheck;\n spinCheck = isHide ? !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_HIDESPIN) :\n !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_SHOWSPIN);\n if (spinCheck) {\n let svgEle = spinnerWrap.querySelector('svg');\n if (isNullOrUndefined(svgEle)) {\n return;\n }\n let id = svgEle.getAttribute('id');\n globalTimeOut[id].isAnimate = !isHide;\n switch (globalTimeOut[id].type) {\n case 'Material':\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : startMatAnimate(inner, id, globalTimeOut[id].radius);\n break;\n case 'Bootstrap':\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : animateBootstrap(inner);\n break;\n }\n }\n isHide ? classList(spinnerWrap, [CLS_HIDESPIN], [CLS_SHOWSPIN]) : classList(spinnerWrap, [CLS_SHOWSPIN], [CLS_HIDESPIN]);\n container = null;\n }\n}\n/**\n * Function to hide the Spinner.\n * @param container - Specify the target of the Spinner.\n * @private\n */\nfunction hideSpinner(container) {\n showHideSpinner(container, true);\n container = null;\n}\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : setSpinner({ cssClass: 'custom-css'; type: 'Material' });\n * ```\n * @param args\n * @private\n */\nfunction setSpinner(args, internalCreateElement) {\n let makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.template !== undefined) {\n spinTemplate = args.template;\n if (args.template !== undefined) {\n spinCSSClass = args.cssClass;\n }\n }\n let container = document.querySelectorAll('.' + CLS_SPINWRAP);\n for (let index = 0; index < container.length; index++) {\n ensureTemplate(args.template, container[index], args.type, args.cssClass, makeElement);\n }\n}\nfunction ensureTemplate(template, container, theme, cssClass, makeEle) {\n if (isNullOrUndefined(template) && !container.classList.contains(CLS_SPINTEMPLATE)) {\n replaceTheme(container, theme, cssClass, makeEle);\n if (container.classList.contains(CLS_SHOWSPIN)) {\n container.classList.remove(CLS_SHOWSPIN);\n showSpinner(container);\n }\n else {\n container.classList.remove(CLS_HIDESPIN);\n hideSpinner(container);\n }\n }\n else {\n spinTemplate = template;\n if (!isNullOrUndefined(cssClass)) {\n spinCSSClass = cssClass;\n }\n }\n}\nfunction replaceTheme(container, theme, cssClass, makeEle) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n let svgElement = container.querySelector('svg');\n let radius = theme === 'Bootstrap' ? parseFloat(svgElement.style.height) : parseFloat(svgElement.style.height) / 2;\n let classNames = svgElement.getAttribute('class');\n let svgClassList = classNames.split(/\\s/);\n if (svgClassList.indexOf('e-spin-material') >= 0) {\n let id = svgElement.getAttribute('id');\n clearTimeout(globalTimeOut[id].timeOut);\n }\n setTheme(theme, container, radius, makeEle);\n}\n\n/**\n * spinner modules\n */\n\n/**\n * Popup Components\n */\n\nexport { PositionData, Popup, getScrollableParent, getZindexPartial, getMaxZindex, calculateRelativeBasedPosition, calculatePosition, fit, isCollide, flip, ButtonProps, AnimationSettings, Dialog, DialogUtility, Animation$1 as Animation, Tooltip, Spinner, createSpinner, showSpinner, hideSpinner, setSpinner };\n//# sourceMappingURL=ej2-popups.es2015.js.map\n","import { Animation, ChildProperty, Collection, Complex, Component, Event, EventHandler, KeyboardEvents, NotifyPropertyChanges, Property, SanitizeHtmlHelper, addClass, attributes, classList, closest, createElement, deleteObject, detach, extend, getInstance, getUniqueID, getValue, isBlazor, isNullOrUndefined, remove, removeClass, rippleEffect, select, setValue } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup, createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\n\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * @param props\n * @param model\n */\nfunction getModel(props, model) {\n let obj = extend({}, props);\n for (let prop of Object.keys(obj)) {\n if ((model).indexOf(prop) < 0) {\n deleteObject(obj, prop);\n }\n }\n return obj;\n}\n/** @hidden */\nfunction upDownKeyHandler(ul, keyCode) {\n let defaultIdx = keyCode === 40 ? 0 : ul.childElementCount - 1;\n let liIdx = defaultIdx;\n let li;\n let selectedLi = ul.querySelector('.e-selected');\n if (selectedLi) {\n selectedLi.classList.remove('e-selected');\n }\n for (let i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains('e-focused')) {\n li = ul.children[i];\n liIdx = i;\n li.classList.remove('e-focused');\n keyCode === 40 ? liIdx++ : liIdx--;\n if (liIdx === (keyCode === 40 ? ul.childElementCount : -1)) {\n liIdx = defaultIdx;\n }\n }\n }\n li = ul.children[liIdx];\n liIdx = isValidLI(ul, li, liIdx, keyCode);\n if (liIdx !== -1) {\n addClass([ul.children[liIdx]], 'e-focused');\n ul.children[liIdx].focus();\n }\n}\nfunction isValidLI(ul, li, index, keyCode, count = 0) {\n if (li.classList.contains('e-separator') || li.classList.contains('e-disabled')) {\n if (index === (keyCode === 40 ? ul.childElementCount - 1 : 0)) {\n index = keyCode === 40 ? 0 : ul.childElementCount - 1;\n }\n else {\n keyCode === 40 ? index++ : index--;\n }\n }\n li = ul.children[index];\n if (li.classList.contains('e-separator') || li.classList.contains('e-disabled')) {\n count++;\n if (count === ul.childElementCount) {\n return index = -1;\n }\n index = isValidLI(ul, li, index, keyCode, count);\n }\n return index;\n}\n/** @hidden */\nfunction setBlankIconStyle(popup) {\n let blankIconList = [].slice.call(popup.getElementsByClassName('e-blank-icon'));\n if (!blankIconList.length) {\n return;\n }\n let iconLi = popup.querySelector('.e-item:not(.e-blank-icon):not(.e-separator)');\n if (iconLi.classList.contains('e-url')) {\n iconLi = iconLi.querySelector('.e-menu-url');\n }\n let icon = iconLi.querySelector('.e-menu-icon');\n let cssProp;\n let enableRtl = popup.classList.contains('e-rtl');\n if (enableRtl) {\n cssProp = { padding: 'paddingRight', margin: 'marginLeft' };\n }\n else {\n cssProp = { padding: 'paddingLeft', margin: 'marginRight' };\n }\n // tslint:disable\n let size = `${parseInt(getComputedStyle(icon).fontSize, 10) + parseInt((enableRtl ? getComputedStyle(icon)[cssProp.margin] : getComputedStyle(icon)[cssProp.margin]), 10)\n + parseInt(getComputedStyle(iconLi).paddingLeft, 10)}px`;\n blankIconList.forEach((li) => {\n if (li.classList.contains('e-url')) {\n li.querySelector('.e-menu-url').style[cssProp.padding] = size;\n }\n else {\n li.style[cssProp.padding] = size;\n }\n });\n // tslint:enable\n}\n/**\n * Defines the items of Split Button/DropDownButton.\n */\nclass Item extends ChildProperty {\n}\n__decorate([\n Property('')\n], Item.prototype, \"iconCss\", void 0);\n__decorate([\n Property('')\n], Item.prototype, \"id\", void 0);\n__decorate([\n Property(false)\n], Item.prototype, \"separator\", void 0);\n__decorate([\n Property('')\n], Item.prototype, \"text\", void 0);\n__decorate([\n Property('')\n], Item.prototype, \"url\", void 0);\n\n/**\n * Common modules\n */\n\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst classNames = {\n DISABLED: 'e-disabled',\n FOCUS: 'e-focused',\n ICON: 'e-menu-icon',\n ITEM: 'e-item',\n POPUP: 'e-dropdown-popup',\n RTL: 'e-rtl',\n SEPARATOR: 'e-separator',\n VERTICAL: 'e-vertical'\n};\n/**\n * DropDownButton component is used to toggle contextual overlays for displaying list of action items.\n * It can contain both text and images.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nlet DropDownButton = class DropDownButton extends Component {\n /**\n * Constructor for creating the widget\n * @param {DropDownButtonModel} options?\n * @param {string|HTMLButtonElement} element?\n */\n constructor(options, element) {\n super(options, element);\n }\n preRender() {\n /** */\n }\n /**\n * Get the properties to be maintained in the persisted state.\n * @returns string\n */\n getPersistData() {\n return this.addOnPersist([]);\n }\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n * @returns void\n */\n toggle() {\n this.canOpen() ? this.openPopUp() : this.closePopup();\n }\n /**\n * Initialize the Component rendering\n * @returns void\n * @private\n */\n render() {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n }\n /**\n * Adds a new item to the menu. By default, new item appends to the list as the last item,\n * but you can insert based on the text parameter.\n * @param { ItemModel[] } items - Specifies an array of JSON data.\n * @param { string } text - Specifies the text to insert the newly added item in the menu.\n * @returns {void}.\n */\n addItems(items, text) {\n let newItem;\n let idx = this.items.length;\n for (let j = 0, len = this.items.length; j < len; j++) {\n if (text === this.items[j].text) {\n idx = j;\n break;\n }\n }\n for (let i = items.length - 1; i >= 0; i--) {\n // tslint:disable-next-line\n newItem = new Item(this, 'items', items[i], true);\n this.items.splice(idx, 0, newItem);\n }\n if (!this.canOpen()) {\n this.createItems();\n }\n }\n /**\n * Removes the items from the menu.\n * @param { string[] } items - Specifies an array of string to remove the items.\n * @returns {void}.\n */\n removeItems(items) {\n for (let i = 0, len = items.length; i < len; i++) {\n for (let j = 0, len = this.items.length; j < len; j++) {\n if (items[i] === this.items[j].text) {\n this.items.splice(j, 1);\n break;\n }\n }\n }\n if (!this.canOpen()) {\n this.createItems();\n }\n }\n createPopup() {\n let div = this.createElement('div', {\n className: classNames.POPUP,\n id: this.element.id + '-popup'\n });\n document.body.appendChild(div);\n this.dropDown = new Popup(div, {\n relateTo: this.element,\n collision: { X: 'fit', Y: 'flip' },\n position: { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n content: this.target ? this.getTargetElement() : '',\n enableRtl: this.enableRtl\n });\n if (this.dropDown.element.style.position === 'fixed') {\n this.dropDown.refreshPosition(this.element);\n }\n this.dropDown.hide();\n attributes(this.element, {\n ['aria-haspopup']: this.items.length || this.target ? 'true' : 'false', ['aria-expanded']: 'false',\n ['aria-owns']: this.getPopUpElement().id, ['type']: 'button',\n ['aria-label']: this.element.textContent + ' dropdownbutton'\n });\n if (this.cssClass) {\n addClass([div], this.cssClass.split(' '));\n }\n }\n getTargetElement() {\n return typeof (this.target) === 'string' ? select(this.target) : this.target;\n }\n createItems(appendItems) {\n let items = this.items;\n let showIcon = this.hasIcon(this.items, 'iconCss');\n let span;\n let item;\n let li;\n let eventArgs;\n let ul = this.getULElement();\n if (ul) {\n ul.innerHTML = '';\n }\n else {\n ul = this.createElement('ul', {\n attrs: { 'role': 'menu', 'tabindex': '0' }\n });\n }\n for (let i = 0; i < items.length; i++) {\n item = items[i];\n let tempItem = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(item.text) : item.text;\n li = this.createElement('li', {\n innerHTML: item.url ? '' : tempItem,\n className: item.separator ? classNames.ITEM + ' ' + classNames.SEPARATOR : classNames.ITEM,\n attrs: { 'role': 'menuItem', 'tabindex': '-1' },\n id: item.id ? item.id : getUniqueID('e-' + this.getModuleName() + '-item')\n });\n if (item.url) {\n li.appendChild(this.createAnchor(item));\n li.classList.add('e-url');\n }\n if (item.iconCss) {\n span = this.createElement('span', { className: classNames.ICON + ' ' + item.iconCss });\n (item.url) ? li.childNodes[0].appendChild(span) : li.insertBefore(span, li.childNodes[0]);\n }\n else {\n if (showIcon && !item.separator) {\n li.classList.add('e-blank-icon');\n }\n }\n eventArgs = { item: item, element: li };\n this.trigger('beforeItemRender', eventArgs);\n ul.appendChild(li);\n }\n if (appendItems) {\n this.getPopUpElement().appendChild(ul);\n }\n if (showIcon) {\n setBlankIconStyle(this.getPopUpElement());\n }\n }\n hasIcon(items, field) {\n for (let i = 0, len = items.length; i < len; i++) {\n if (items[i][field]) {\n return true;\n }\n }\n return false;\n }\n createAnchor(item) {\n let tempItem = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(item.text) : item.text;\n return this.createElement('a', { className: 'e-menu-text e-menu-url', innerHTML: tempItem, attrs: { 'href': item.url } });\n }\n initialize() {\n this.button = new Button({\n iconCss: this.iconCss, iconPosition: this.iconPosition, cssClass: this.cssClass, content: this.content,\n disabled: this.disabled, enableRtl: this.enableRtl, enablePersistence: this.enablePersistence\n });\n this.button.createElement = this.createElement;\n this.button.appendTo(this.element);\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.appendArrowSpan();\n this.createPopup();\n this.setActiveElem([this.element]);\n }\n appendArrowSpan() {\n this.element.appendChild(this.createElement('span', {\n className: 'e-btn-icon e-icons ' + 'e-icon-' + (this.cssClass.indexOf(classNames.VERTICAL) > -1\n ? 'bottom' : 'right') + ' e-caret'\n }));\n }\n setActiveElem(elem) {\n this.activeElem = elem;\n }\n /**\n * Get component name.\n * @returns string\n * @private\n */\n getModuleName() {\n return 'dropdown-btn';\n }\n canOpen() {\n return this.getPopUpElement().classList.contains('e-popup-close');\n }\n /**\n * Destroys the widget.\n * @returns void\n */\n destroy() {\n super.destroy();\n if (this.getModuleName() === 'dropdown-btn') {\n let attrList;\n let classList$$1;\n if (this.element.querySelector('span.e-caret')) {\n detach(this.element.querySelector('span.e-caret'));\n }\n if (this.cssClass) {\n classList$$1 = this.cssClass.split(' ');\n }\n this.button.destroy();\n if (classList$$1) {\n removeClass([this.element], classList$$1);\n }\n removeClass(this.activeElem, ['e-active']);\n attrList = this.element.getAttribute('class') ? ['aria-haspopup', 'aria-expanded', 'aria-owns', 'type']\n : ['aria-haspopup', 'aria-expanded', 'aria-owns', 'type', 'class'];\n attrList.forEach((key) => {\n this.element.removeAttribute(key);\n });\n this.dropDown.destroy();\n let popupEle = document.getElementById(this.getPopUpElement().id);\n if (popupEle) {\n removeClass([popupEle], ['e-popup-open', 'e-popup-close']);\n detach(popupEle);\n }\n if (!this.disabled) {\n this.unWireEvents();\n }\n }\n }\n getPopUpElement() {\n return this.dropDown.element;\n }\n getULElement() {\n return this.getPopUpElement().children[0];\n }\n wireEvents() {\n let popupElement = this.getPopUpElement();\n this.delegateMousedownHandler = this.mousedownHandler.bind(this);\n EventHandler.add(document, 'mousedown touchstart', this.delegateMousedownHandler, this);\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(popupElement, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyBoardHandler, this);\n EventHandler.add(popupElement, 'keydown', this.keyBoardHandler, this);\n this.rippleFn = rippleEffect(popupElement, { selector: '.' + classNames.ITEM });\n }\n /** @hidden */\n keyBoardHandler(e) {\n if (e.target === this.element && (e.keyCode === 9 || (!e.altKey && e.keyCode === 40) || e.keyCode === 38)) {\n return;\n }\n switch (e.keyCode) {\n case 38:\n case 40:\n if (e.altKey && (e.keyCode === 38 || e.keyCode === 40)) {\n this.keyEventHandler(e);\n }\n else {\n this.upDownKeyHandler(e);\n }\n break;\n case 9:\n case 13:\n case 27:\n case 32:\n this.keyEventHandler(e);\n break;\n }\n }\n upDownKeyHandler(e) {\n if (this.target && (e.keyCode === 38 || e.keyCode === 40)) {\n return;\n }\n e.preventDefault();\n upDownKeyHandler(this.getULElement(), e.keyCode);\n }\n keyEventHandler(e) {\n if (this.target && (e.keyCode === 13 || e.keyCode === 9)) {\n return;\n }\n if (e.keyCode !== 9) {\n e.preventDefault();\n }\n if (e.keyCode === 27 || e.keyCode === 38 || e.keyCode === 9) {\n if (!this.canOpen()) {\n this.closePopup(e, this.element);\n }\n }\n else {\n this.clickHandler(e);\n }\n }\n getLI(elem) {\n return elem.tagName === 'LI' ? elem : closest(elem, 'li');\n }\n mousedownHandler(e) {\n let trgt = e.target;\n if (!this.canOpen() && !(closest(trgt, '#' + this.getPopUpElement().id) || closest(trgt, '#' + this.element.id))) {\n this.closePopup(e);\n }\n }\n clickHandler(e) {\n let trgt = e.target;\n let canOpen = this.canOpen();\n if (closest(trgt, '#' + this.element.id)) {\n if (canOpen) {\n this.openPopUp(e);\n }\n else {\n this.closePopup(e, this.activeElem[0]);\n }\n }\n else {\n if (closest(trgt, '#' + this.getPopUpElement().id)) {\n let eventArgs;\n let liIdx;\n let item;\n let li = this.getLI(trgt);\n if (li) {\n liIdx = Array.prototype.indexOf.call(this.getULElement().children, li);\n item = this.items[liIdx];\n if (item) {\n eventArgs = { element: li, item: item };\n this.trigger('select', eventArgs);\n }\n this.closePopup(e, this.activeElem[0]);\n }\n }\n }\n }\n openPopUp(e = null) {\n if (!this.target) {\n this.createItems(true);\n }\n let ul = this.getULElement();\n let beforeOpenArgs = { element: ul, items: this.items, event: e, cancel: false };\n this.trigger('beforeOpen', beforeOpenArgs, (observedArgs) => {\n if (!observedArgs.cancel) {\n let ul = this.getULElement();\n this.dropDown.show(null, this.element);\n addClass([this.element], 'e-active');\n this.element.setAttribute('aria-expanded', 'true');\n ul.focus();\n let openArgs = { element: ul, items: this.items };\n this.trigger('open', openArgs);\n }\n });\n }\n closePopup(e = null, focusEle) {\n let ul = this.getULElement();\n let beforeCloseArgs = { element: ul, items: this.items, event: e, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, (observedArgs) => {\n if (!observedArgs.cancel) {\n let ul = this.getULElement();\n let selectedLi = ul.querySelector('.e-selected');\n if (selectedLi) {\n selectedLi.classList.remove('e-selected');\n }\n this.dropDown.hide();\n removeClass(this.activeElem, 'e-active');\n this.element.setAttribute('aria-expanded', 'false');\n if (focusEle) {\n focusEle.focus();\n }\n let closeArgs = { element: ul, items: this.items };\n this.trigger('close', closeArgs);\n if (!this.target && ul) {\n detach(ul);\n }\n }\n });\n }\n unWireEvents() {\n EventHandler.remove(document, 'mousedown touchstart', this.delegateMousedownHandler);\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.getPopUpElement(), 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keydown', this.keyBoardHandler);\n EventHandler.remove(this.getPopUpElement(), 'keydown', this.keyBoardHandler);\n this.rippleFn();\n }\n /**\n * Called internally if any of the property value changed.\n * @param {DropDownButtonModel} newProp\n * @param {DropDownButtonModel} oldProp\n * @returns void\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n let btnModel = ['content', 'cssClass', 'iconCss', 'iconPosition', 'disabled', 'enableRtl'];\n this.button.setProperties(getModel(newProp, btnModel));\n this.dropDown.setProperties(getModel(newProp, ['enableRtl']));\n let popupElement = this.getPopUpElement();\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'content':\n if (!this.element.querySelector('span.e-caret')) {\n this.appendArrowSpan();\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.unWireEvents();\n if (!this.canOpen()) {\n this.closePopup();\n }\n }\n else {\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (newProp.cssClass.indexOf(classNames.VERTICAL) > -1) {\n let arrowSpan = this.element.querySelector('span.e-caret');\n classList(arrowSpan, ['e-icon-bottom'], ['e-icon-right']);\n }\n if (oldProp.cssClass) {\n removeClass([popupElement], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([popupElement], newProp.cssClass.split(' '));\n }\n break;\n case 'target':\n this.dropDown.content = this.getTargetElement();\n this.dropDown.dataBind();\n break;\n case 'items':\n if (!this.canOpen()) {\n this.createItems();\n }\n break;\n }\n }\n }\n /**\n * Sets the focus to DropDownButton\n * its native method\n * @public\n */\n focusIn() {\n this.element.focus();\n }\n};\n__decorate$1([\n Property('')\n], DropDownButton.prototype, \"content\", void 0);\n__decorate$1([\n Property('')\n], DropDownButton.prototype, \"cssClass\", void 0);\n__decorate$1([\n Property(false)\n], DropDownButton.prototype, \"disabled\", void 0);\n__decorate$1([\n Property('')\n], DropDownButton.prototype, \"iconCss\", void 0);\n__decorate$1([\n Property('Left')\n], DropDownButton.prototype, \"iconPosition\", void 0);\n__decorate$1([\n Property(false)\n], DropDownButton.prototype, \"enableHtmlSanitizer\", void 0);\n__decorate$1([\n Collection([], Item)\n], DropDownButton.prototype, \"items\", void 0);\n__decorate$1([\n Property('')\n], DropDownButton.prototype, \"target\", void 0);\n__decorate$1([\n Event()\n], DropDownButton.prototype, \"beforeItemRender\", void 0);\n__decorate$1([\n Event()\n], DropDownButton.prototype, \"beforeOpen\", void 0);\n__decorate$1([\n Event()\n], DropDownButton.prototype, \"beforeClose\", void 0);\n__decorate$1([\n Event()\n], DropDownButton.prototype, \"close\", void 0);\n__decorate$1([\n Event()\n], DropDownButton.prototype, \"open\", void 0);\n__decorate$1([\n Event()\n], DropDownButton.prototype, \"select\", void 0);\n__decorate$1([\n Event()\n], DropDownButton.prototype, \"created\", void 0);\nDropDownButton = __decorate$1([\n NotifyPropertyChanges\n], DropDownButton);\n\n/**\n * DropDownButton modules\n */\n\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/// \nconst RTL = 'e-rtl';\nconst TAGNAME = 'EJS-SPLITBUTTON';\n/**\n * SplitButton component has primary and secondary button. Primary button is used to select\n * default action and secondary button is used to toggle contextual overlays for displaying list of\n * action items. It can contain both text and images.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nlet SplitButton = class SplitButton extends DropDownButton {\n /**\n * Constructor for creating the widget\n * @param {SplitButtonModel} options?\n * @param {string|HTMLButtonElement} element?\n */\n constructor(options, element) {\n super(options, element);\n }\n /**\n * Initialize Angular support.\n * @private\n */\n preRender() {\n let ele = this.element;\n if (ele.tagName === TAGNAME) {\n let ejInstance = getValue('ej2_instances', ele);\n let btn = this.createElement('button', { attrs: { 'type': 'button' } });\n let wrapper = this.createElement(TAGNAME, { className: 'e-' + this.getModuleName() + '-wrapper' });\n for (let idx = 0, len = ele.attributes.length; idx < len; idx++) {\n btn.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = btn;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.wrapper = wrapper;\n this.element = ele;\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n }\n /**\n * Initialize the Component rendering\n * @returns void\n * @private\n */\n render() {\n this.initWrapper();\n this.createPrimaryButton();\n this.renderControl();\n }\n renderControl() {\n this.createSecondaryButton();\n this.setActiveElem([this.element, this.secondaryBtnObj.element]);\n this.setAria();\n this.wireEvents();\n this.renderComplete();\n }\n /**\n * Adds a new item to the menu. By default, new item appends to the list as the last item,\n * but you can insert based on the text parameter.\n * @param { ItemModel[] } items - Specifies an array of JSON data.\n * @param { string } text - Specifies the text to insert the newly added item in the menu.\n * @returns {void}.\n */\n addItems(items, text) {\n super.addItems(items, text);\n this.secondaryBtnObj.items = this.items;\n }\n /**\n * Removes the items from the menu.\n * @param { string[] } items - Specifies an array of string to remove the items.\n * @returns {void}.\n */\n removeItems(items) {\n super.removeItems(items);\n this.secondaryBtnObj.items = this.items;\n }\n initWrapper() {\n if (!this.wrapper) {\n this.wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n this.element.parentNode.insertBefore(this.wrapper, this.element);\n }\n this.element.classList.remove('e-' + this.getModuleName());\n if (this.enableRtl) {\n this.wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([this.wrapper], this.cssClass.split(' '));\n }\n }\n createPrimaryButton() {\n let btnModel = {\n cssClass: this.cssClass,\n enableRtl: this.enableRtl,\n iconCss: this.iconCss,\n iconPosition: this.iconPosition,\n content: this.content,\n disabled: this.disabled\n };\n this.primaryBtnObj = new Button(btnModel);\n this.primaryBtnObj.createElement = this.createElement;\n this.primaryBtnObj.appendTo(this.element);\n this.element.classList.add('e-' + this.getModuleName());\n this.element.type = 'button';\n this.wrapper.appendChild(this.element);\n }\n createSecondaryButton() {\n let dropDownBtnModel;\n let btnElem;\n btnElem = this.createElement('button', {\n className: 'e-icon-btn',\n attrs: { 'tabindex': '-1' },\n id: this.element.id + '_dropdownbtn'\n });\n this.wrapper.appendChild(btnElem);\n dropDownBtnModel = {\n cssClass: this.cssClass,\n disabled: this.disabled,\n enableRtl: this.enableRtl,\n items: this.items,\n target: this.target,\n };\n dropDownBtnModel.beforeItemRender = (args) => {\n this.trigger('beforeItemRender', args);\n };\n dropDownBtnModel.open = (args) => {\n this.trigger('open', args);\n };\n dropDownBtnModel.close = (args) => {\n this.trigger('close', args);\n };\n dropDownBtnModel.select = (args) => {\n this.trigger('select', args);\n };\n dropDownBtnModel.beforeOpen = (args) => {\n let callBackPromise = new Deferred();\n this.trigger('beforeOpen', args, (observedArgs) => {\n callBackPromise.resolve(observedArgs);\n });\n return callBackPromise;\n };\n dropDownBtnModel.beforeClose = (args) => {\n let callBackPromise = new Deferred();\n this.trigger('beforeClose', args, (observedArgs) => {\n callBackPromise.resolve(observedArgs);\n });\n return callBackPromise;\n };\n this.secondaryBtnObj = new DropDownButton(dropDownBtnModel);\n this.secondaryBtnObj.createElement = this.createElement;\n this.secondaryBtnObj.appendTo(btnElem);\n this.secondaryBtnObj.dropDown.relateTo = this.wrapper;\n this.dropDown = this.secondaryBtnObj.dropDown;\n this.secondaryBtnObj.activeElem = [this.element, this.secondaryBtnObj.element];\n EventHandler.remove(this.getPopUpElement(), 'keydown', this.secondaryBtnObj.keyBoardHandler);\n this.secondaryBtnObj.element.querySelector('.e-btn-icon').classList.remove('e-icon-right');\n }\n setAria() {\n attributes(this.element, {\n 'aria-expanded': 'false', 'aria-haspopup': 'true',\n 'aria-label': this.element.textContent + ' splitbutton', 'aria-owns': this.secondaryBtnObj.dropDown.element.id\n });\n }\n /**\n * Get component name.\n * @returns string\n * @private\n */\n getModuleName() {\n return 'split-btn';\n }\n /**\n * To open/close SplitButton popup based on current state of the SplitButton.\n * @returns void\n */\n toggle() {\n this.secondaryBtnObj.toggle();\n }\n destroy() {\n let classList$$1 = [RTL];\n let element = document.getElementById(this.element.id);\n if (this.cssClass) {\n classList$$1 = classList$$1.concat(this.cssClass.split(' '));\n }\n if (element && element.parentElement === this.wrapper) {\n if (this.wrapper.tagName === TAGNAME) {\n this.wrapper.innerHTML = '';\n removeClass([this.wrapper], ['e-rtl', 'e-' + this.getModuleName() + '-wrapper']);\n removeClass([this.wrapper], this.cssClass.split(' '));\n }\n else {\n removeClass([this.element], classList$$1);\n ['aria-label', 'aria-haspopup', 'aria-expanded',\n 'aria-owns', 'type'].forEach((key) => {\n this.element.removeAttribute(key);\n });\n this.wrapper.parentNode.insertBefore(this.element, this.wrapper);\n remove(this.wrapper);\n }\n this.unWireEvents();\n }\n this.primaryBtnObj.destroy();\n this.secondaryBtnObj.destroy();\n super.destroy();\n if (!this.element.getAttribute('class')) {\n this.element.removeAttribute('class');\n }\n }\n wireEvents() {\n EventHandler.add(this.element, 'click', this.primaryBtnClickHandler, this);\n EventHandler.add(this.getPopUpElement(), 'keydown', this.keyBoardHandler, this);\n new KeyboardEvents(this.element, {\n keyAction: this.btnKeyBoardHandler.bind(this),\n keyConfigs: {\n altdownarrow: 'alt+downarrow'\n }\n });\n }\n unWireEvents() {\n EventHandler.remove(this.element, 'click', this.primaryBtnClickHandler);\n getInstance(this.element, KeyboardEvents).destroy();\n }\n primaryBtnClickHandler() {\n this.trigger('click', { element: this.element });\n }\n btnKeyBoardHandler(e) {\n switch (e.action) {\n case 'altdownarrow':\n this.clickHandler(e);\n break;\n }\n }\n /**\n * Called internally if any of the property value changed.\n * @param {SplitButtonModel} newProp\n * @param {SplitButtonModel} oldProp\n * @returns void\n */\n onPropertyChanged(newProp, oldProp) {\n let model = ['content', 'iconCss', 'iconPosition', 'cssClass', 'disabled', 'enableRtl'];\n this.primaryBtnObj.setProperties(getModel(newProp, model));\n model = ['beforeOpen', 'beforeItemRender', 'select', 'open',\n 'close', 'cssClass', 'disabled', 'enableRtl'];\n if (Object.keys(newProp).indexOf('items') > -1) {\n this.secondaryBtnObj.items = newProp.items;\n this.secondaryBtnObj.dataBind();\n }\n this.secondaryBtnObj.setProperties(getModel(newProp, model));\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.wrapper], oldProp.cssClass.split(' '));\n }\n addClass([this.wrapper], newProp.cssClass.split(' '));\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n addClass([this.wrapper], RTL);\n }\n else {\n removeClass([this.wrapper], RTL);\n }\n break;\n }\n }\n }\n /**\n * Sets the focus to SplitButton\n * its native method\n * @public\n */\n focusIn() {\n this.element.focus();\n }\n};\n__decorate$2([\n Property('')\n], SplitButton.prototype, \"content\", void 0);\n__decorate$2([\n Property('')\n], SplitButton.prototype, \"cssClass\", void 0);\n__decorate$2([\n Property(false)\n], SplitButton.prototype, \"disabled\", void 0);\n__decorate$2([\n Property('')\n], SplitButton.prototype, \"iconCss\", void 0);\n__decorate$2([\n Property('Left')\n], SplitButton.prototype, \"iconPosition\", void 0);\n__decorate$2([\n Collection([], Item)\n], SplitButton.prototype, \"items\", void 0);\n__decorate$2([\n Property('')\n], SplitButton.prototype, \"target\", void 0);\n__decorate$2([\n Event()\n], SplitButton.prototype, \"beforeItemRender\", void 0);\n__decorate$2([\n Event()\n], SplitButton.prototype, \"beforeOpen\", void 0);\n__decorate$2([\n Event()\n], SplitButton.prototype, \"beforeClose\", void 0);\n__decorate$2([\n Event()\n], SplitButton.prototype, \"click\", void 0);\n__decorate$2([\n Event()\n], SplitButton.prototype, \"close\", void 0);\n__decorate$2([\n Event()\n], SplitButton.prototype, \"open\", void 0);\n__decorate$2([\n Event()\n], SplitButton.prototype, \"select\", void 0);\n__decorate$2([\n Event()\n], SplitButton.prototype, \"created\", void 0);\nSplitButton = __decorate$2([\n NotifyPropertyChanges\n], SplitButton);\n/**\n * Deferred is used to handle asynchronous operation.\n */\nclass Deferred {\n constructor() {\n /**\n * Promise is an object that represents a value that may not be available yet, but will be resolved at some point in the future.\n */\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n /**\n * Defines the callback function triggers when the Deferred object is rejected.\n */\n this.catch = this.promise.catch.bind(this.promise);\n /**\n * Defines the callback function triggers when the Deferred object is resolved.\n */\n this.then = this.promise.then.bind(this.promise);\n }\n}\n\n/**\n * Split Button modules\n */\n\n/**\n * Initialize ButtonGroup CSS component with specified properties.\n * ```html\n *
      \n * \n * \n * \n *
      \n * ```\n * ```typescript\n * createButtonGroup('#buttongroup', {\n * cssClass: 'e-outline',\n * buttons: [\n * { content: 'Day' },\n * { content: 'Week' },\n * { content: 'Work Week'}\n * ]\n * });\n * ```\n * @param {string} selector\n * @param {CreateButtonGroupModel} options\n * @returns HTMLElement\n */\nfunction createButtonGroup(selector, options = {}, createElement$$1) {\n let child;\n let btnElem;\n let nextChild;\n let btnModel;\n if (isNullOrUndefined(createElement$$1)) {\n createElement$$1 = createElement;\n }\n let wrapper = document.querySelector(selector);\n addClass([wrapper], ['e-btn-group', 'e-css']);\n wrapper.setAttribute('role', 'group');\n let childs = wrapper.children;\n options.buttons = options.buttons || [];\n for (let i = 0, j = 0; j < childs.length; i++, j++) {\n child = childs[j];\n btnModel = options.buttons[i];\n if (btnModel !== null) {\n if (child.tagName === 'BUTTON') {\n btnElem = child;\n }\n else {\n btnElem = createElement$$1('label');\n nextChild = childs[j + 1];\n if (nextChild) {\n wrapper.insertBefore(btnElem, nextChild);\n }\n else {\n wrapper.appendChild(btnElem);\n }\n if (child.id) {\n btnElem.setAttribute('for', child.id);\n }\n if (btnModel && btnModel.disabled) {\n child.disabled = true;\n }\n j++;\n }\n if (options.cssClass && btnModel && !btnModel.cssClass) {\n btnModel.cssClass = options.cssClass;\n }\n new Button(btnModel || {}, btnElem);\n }\n }\n return wrapper;\n}\n\n/**\n * ButtonGroup modules\n */\n\nvar __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst HIDESPINNER = 'e-hide-spinner';\nconst PROGRESS = 'e-progress';\nconst PROGRESSACTIVE = 'e-progress-active';\nconst CONTENTCLS = 'e-btn-content';\n/**\n * Defines the spin settings.\n */\nclass SpinSettings extends ChildProperty {\n}\n__decorate$3([\n Property(null)\n], SpinSettings.prototype, \"template\", void 0);\n__decorate$3([\n Property(16)\n], SpinSettings.prototype, \"width\", void 0);\n__decorate$3([\n Property('Left')\n], SpinSettings.prototype, \"position\", void 0);\n/**\n * Defines the animation settings.\n */\nclass AnimationSettings extends ChildProperty {\n}\n__decorate$3([\n Property(400)\n], AnimationSettings.prototype, \"duration\", void 0);\n__decorate$3([\n Property('None')\n], AnimationSettings.prototype, \"effect\", void 0);\n__decorate$3([\n Property('ease')\n], AnimationSettings.prototype, \"easing\", void 0);\n/**\n * The ProgressButton visualizes the progression of an operation to indicate the user\n * that a process is happening in the background with visual representation.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nlet ProgressButton = class ProgressButton extends Button {\n /**\n * Constructor for creating the widget\n * @param {ProgressButtonModel} options?\n * @param {string|HTMLButtonElement} element?\n */\n constructor(options, element) {\n super(options, element);\n this.step = 1;\n }\n preRender() {\n super.preRender();\n }\n /**\n * Initialize the Component rendering\n * @returns void\n * @private\n */\n render() {\n if (isBlazor()) {\n this.isServerRendered = false;\n }\n super.render();\n this.init();\n this.wireEvents();\n this.setAria();\n this.renderComplete();\n }\n /**\n * Starts the button progress at the specified percent.\n * @param percent Starts the button progress at this percent.\n * @returns void\n */\n start(percent) {\n this.isPaused = false;\n this.startProgress(percent ? percent : this.percent, this.progressTime);\n }\n /**\n * Stops the button progress.\n * @returns void\n */\n stop() {\n this.isPaused = true;\n cancelAnimationFrame(this.timerId);\n }\n /**\n * Complete the button progress.\n * @returns void\n */\n progressComplete() {\n this.isPaused = false;\n this.finishProgress();\n }\n /**\n * Get component name.\n * @returns string\n * @private\n */\n getModuleName() {\n return 'progress-btn';\n }\n /**\n * Destroys the widget.\n * @returns void\n */\n destroy() {\n let classList$$1 = [HIDESPINNER, PROGRESSACTIVE, 'e-round-corner', 'e-' + super.getModuleName(),\n 'e-spin-' + this.spinSettings.position.toLowerCase()];\n let css;\n super.destroy();\n this.unWireEvents();\n this.element.innerHTML = '';\n if (this.cssClass) {\n classList$$1 = classList$$1.concat(this.cssClass.split(' '));\n }\n removeClass([this.element], classList$$1);\n css = this.element.getAttribute('class') ? ['aria-label', 'aria-valuemin', 'aria-valuemax', 'aria-valuenow']\n : ['aria-label', 'aria-valuemin', 'aria-valuemax', 'aria-valuenow', 'class'];\n css.forEach((key) => {\n this.element.removeAttribute(key);\n });\n if (this.disabled) {\n this.element.removeAttribute('disabled');\n }\n }\n init() {\n this.element.classList.add('e-' + super.getModuleName());\n this.setContent();\n this.createSpinner();\n if (this.enableProgress) {\n this.createProgress();\n }\n }\n createSpinner() {\n let spinner = this.createElement('span', { className: 'e-spinner' });\n this.setSpinPosition(spinner);\n createSpinner({\n target: spinner, width: this.spinSettings.width || 16, template: this.spinSettings.template\n }, this.createElement);\n }\n getSpinner() {\n return this.element.getElementsByClassName('e-spinner')[0];\n }\n getProgress() {\n return this.element.getElementsByClassName(PROGRESS)[0];\n }\n setSpinPosition(ele) {\n let position = this.spinSettings.position || 'Left';\n if (position === 'Left' || position === 'Top') {\n this.element.insertBefore(ele, this.element.getElementsByClassName(CONTENTCLS)[0]);\n }\n else {\n this.element.appendChild(ele);\n }\n this.element.classList.add('e-spin-' + position.toLowerCase());\n }\n createProgress() {\n this.element.appendChild(this.createElement('span', { className: PROGRESS }));\n }\n setContent() {\n let cont;\n if (isBlazor()) {\n cont = this.content;\n if (this.enableHtmlSanitizer) {\n cont = SanitizeHtmlHelper.sanitize(this.content);\n }\n this.setContentIcon(cont);\n }\n else {\n cont = this.element.innerHTML;\n if (this.enableHtmlSanitizer) {\n cont = SanitizeHtmlHelper.sanitize(this.element.innerHTML);\n }\n this.element.innerHTML = '';\n this.element.appendChild(this.createElement('span', { className: CONTENTCLS, innerHTML: cont }));\n }\n }\n setContentIcon(content) {\n let contElem = this.createElement('span', { className: CONTENTCLS, innerHTML: content });\n if (this.iconCss) {\n let span = this.createElement('span', { className: 'e-btn-icon ' + this.iconCss });\n if (!this.element.textContent.trim()) {\n this.element.classList.add('e-icon-btn');\n }\n else {\n span.classList.add('e-icon-' + this.iconPosition.toLowerCase());\n if (this.iconPosition === 'Top' || this.iconPosition === 'Bottom') {\n this.element.classList.add('e-' + this.iconPosition.toLowerCase() + '-icon-btn');\n }\n }\n let node = contElem.childNodes[0];\n if (node && (this.iconPosition === 'Left' || this.iconPosition === 'Top')) {\n contElem.insertBefore(span, node);\n }\n else {\n contElem.appendChild(span);\n }\n }\n this.element.appendChild(contElem);\n }\n clickHandler() {\n if (this.element.classList.contains(PROGRESSACTIVE)) {\n return;\n }\n this.startProgress();\n }\n startProgress(percent, progressTime) {\n let clsList = this.element.classList;\n let isVertical = clsList.contains('e-vertical');\n clsList.add(PROGRESSACTIVE);\n if (!(clsList.contains(HIDESPINNER))) {\n showSpinner(this.element);\n }\n this.startAnimate(Date.now(), progressTime ? progressTime : 0, progressTime ? Date.now() - (this.duration * 1 / 100) : Date.now(), percent ? percent : 0, 0, this.step, 0, isVertical);\n this.startContAnimate();\n }\n startAnimate(timestamp, progressTime, prevTime, percent, prevPercent, step, prevProgressTime, isVertical) {\n try {\n let args;\n let timeDiff = timestamp - prevTime;\n let stepTime = this.duration * step / 100;\n let timeDiffBuffer = timeDiff ? (timeDiff < stepTime ? timeDiff - stepTime : timeDiff % stepTime) : 0;\n this.progressTime = progressTime = progressTime + timeDiff - timeDiffBuffer;\n prevTime = timestamp - timeDiffBuffer;\n percent = percent + (timeDiff - timeDiffBuffer) / this.duration * 100;\n prevPercent = ((progressTime - prevProgressTime) % stepTime === 0 || percent === 100) ? percent : prevPercent;\n args = { percent: prevPercent, currentDuration: progressTime, step: step };\n this.eIsVertical = isVertical;\n if (percent === 0) {\n this.trigger('begin', args, (observedArgs) => {\n this.successCallback(observedArgs, percent, prevPercent, progressTime, prevProgressTime, timeDiffBuffer, prevTime);\n });\n }\n else if (percent === 100 || progressTime === this.duration) {\n this.trigger('end', args, (observedArgs) => {\n this.successCallback(observedArgs, percent, prevPercent, progressTime, prevProgressTime, timeDiffBuffer, prevTime);\n });\n }\n else {\n this.trigger('progress', args, (observedArgs) => {\n this.successCallback(observedArgs, percent, prevPercent, progressTime, prevProgressTime, timeDiffBuffer, prevTime);\n });\n }\n }\n catch (e) {\n cancelAnimationFrame(this.timerId);\n this.trigger('fail', e);\n }\n }\n successCallback(args, perc, pPerc, prgTim, pPrgTim, timDif, pTim) {\n let percent = perc;\n let prevPercent = pPerc;\n let timeDiffBuffer = timDif;\n let progressTime = prgTim;\n let prevProgressTime = pPrgTim;\n let prevTime = pTim;\n let isVertical = this.eIsVertical;\n if (percent !== args.percent && args.percent !== prevPercent) {\n percent = args.percent;\n }\n this.percent = percent;\n this.step = args.step;\n if ((progressTime - prevProgressTime) % (this.duration * args.step / 100) === 0 || percent === 100) {\n this.timerId = requestAnimationFrame(() => {\n if (this.enableProgress) {\n this.getProgress().style[isVertical ? 'height' : 'width'] = percent + '%';\n }\n this.element.setAttribute('aria-valuenow', percent.toString());\n });\n prevPercent = percent;\n prevProgressTime = progressTime;\n }\n if (!this.isPaused) {\n if (progressTime < this.duration && percent < 100) {\n this.interval = window.setTimeout(() => {\n this.startAnimate(Date.now(), progressTime, prevTime, percent, prevPercent, args.step, prevProgressTime, isVertical);\n // tslint:disable-next-line\n }, (this.duration / 100) - timeDiffBuffer);\n }\n else {\n this.interval = window.setTimeout(() => {\n this.progressTime = this.percent = 0;\n if (this.enableProgress) {\n this.getProgress().style[isVertical ? 'height' : 'width'] = '0%';\n }\n this.element.setAttribute('aria-valuenow', '0');\n this.hideSpin();\n // tslint:disable-next-line\n }, 100);\n }\n }\n }\n startContAnimate() {\n let ele = this.element.getElementsByClassName(CONTENTCLS)[0];\n if (this.animationSettings.effect !== 'None') {\n (new Animation({})).animate(ele, {\n duration: this.animationSettings.duration,\n name: 'Progress' + this.animationSettings.effect,\n timingFunction: this.animationSettings.easing,\n begin: () => {\n if (this.spinSettings.position === 'Center') {\n this.setSpinnerSize();\n }\n },\n end: () => {\n ele.classList.add('e-animate-end');\n }\n });\n }\n else if (this.spinSettings.position === 'Center') {\n this.setSpinnerSize();\n }\n }\n finishProgress() {\n let clsList = this.element.classList;\n let isVertical = clsList.contains('e-vertical');\n clsList.add(PROGRESSACTIVE);\n let args;\n let count = 100;\n for (let i = this.percent; i < count; i++) {\n i += 10;\n if (i > 100) {\n i = 100;\n }\n if (this.enableProgress) {\n this.getProgress().style[isVertical ? 'height' : 'width'] = (this.percent < 100) ? (i + '%') : '100%';\n }\n }\n this.element.setAttribute('aria-valuenow', '0');\n this.hideSpin();\n args = { step: this.step, currentDuration: this.progressTime, percent: 100 };\n clearTimeout(this.interval);\n this.trigger('end', args);\n this.progressTime = this.percent = 0;\n }\n setSpinnerSize() {\n let ele = this.element.getElementsByClassName(CONTENTCLS)[0];\n let spinner = this.getSpinner();\n spinner.style.width = Math.max(spinner.offsetWidth, ele.offsetWidth) + 'px';\n spinner.style.height = Math.max(spinner.offsetHeight, ele.offsetHeight) + 'px';\n ele.classList.add('e-cont-animate');\n }\n hideSpin() {\n let cont = this.element.getElementsByClassName(CONTENTCLS)[0];\n if (!(this.element.classList.contains(HIDESPINNER))) {\n hideSpinner(this.element);\n }\n this.element.classList.remove(PROGRESSACTIVE);\n if (this.animationSettings.effect !== 'None') {\n cont.classList.remove('e-animate-end');\n }\n if (this.spinSettings.position === 'Center') {\n let ele = this.getSpinner();\n cont.classList.remove('e-cont-animate');\n ele.style.width = 'auto';\n ele.style.height = 'auto';\n }\n }\n setIconSpan() {\n let cont = this.element.getElementsByClassName(CONTENTCLS)[0];\n let iconSpan = this.element.getElementsByClassName('e-btn-icon')[0];\n if (cont.childNodes[0] && (this.iconPosition === 'Left' || this.iconPosition === 'Top')) {\n cont.insertBefore(iconSpan, cont.childNodes[0]);\n }\n else {\n cont.appendChild(iconSpan);\n }\n }\n setAria() {\n attributes(this.element, {\n 'aria-label': this.element.textContent + ' progress', 'aria-valuemin': '0', 'aria-valuemax': '100', 'aria-valuenow': '0'\n });\n }\n wireEvents() {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n }\n unWireEvents() {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n }\n /**\n * Called internally if any of the property value changed.\n * @param {ProgressButtonModel} newProp\n * @param {ProgressButtonModel} oldProp\n * @returns void\n * @private\n */\n onPropertyChanged(newProp, oldProp) {\n let ele = this.element;\n super.onPropertyChanged(newProp, oldProp);\n for (let prop of Object.keys(newProp)) {\n switch (prop) {\n case 'content':\n if (isBlazor()) {\n let btnElem = this.element.querySelector('.e-btn-content');\n if (this.iconCss) {\n if (this.iconPosition === 'Left' || this.iconPosition === 'Top') {\n btnElem.childNodes[1].textContent = this.content;\n }\n else {\n btnElem.childNodes[0].textContent = this.content;\n }\n }\n else {\n btnElem.textContent = this.content;\n }\n }\n else {\n this.setContent();\n this.createSpinner();\n if (this.enableProgress) {\n this.createProgress();\n }\n }\n ele.setAttribute('aria-label', ele.textContent + ' progress');\n break;\n case 'iconCss':\n if (!oldProp.iconCss) {\n this.setIconSpan();\n }\n break;\n case 'iconPosition':\n this.setIconSpan();\n break;\n case 'enableProgress':\n if (newProp.enableProgress) {\n this.createProgress();\n }\n else {\n remove(this.getProgress());\n }\n break;\n case 'spinSettings':\n if (newProp.spinSettings.position) {\n ele.classList.remove('e-spin-' + oldProp.spinSettings.position.toLowerCase());\n this.setSpinPosition(this.getSpinner());\n }\n if (newProp.spinSettings.template || newProp.spinSettings.width) {\n ele.removeChild(this.getSpinner());\n this.createSpinner();\n }\n break;\n }\n }\n }\n /**\n * Sets the focus to ProgressButton\n * its native method\n * @public\n */\n focusIn() {\n this.element.focus();\n }\n};\n__decorate$3([\n Property(false)\n], ProgressButton.prototype, \"enableProgress\", void 0);\n__decorate$3([\n Property(2000)\n], ProgressButton.prototype, \"duration\", void 0);\n__decorate$3([\n Property('Left')\n], ProgressButton.prototype, \"iconPosition\", void 0);\n__decorate$3([\n Property('')\n], ProgressButton.prototype, \"iconCss\", void 0);\n__decorate$3([\n Property(false)\n], ProgressButton.prototype, \"disabled\", void 0);\n__decorate$3([\n Property(false)\n], ProgressButton.prototype, \"isPrimary\", void 0);\n__decorate$3([\n Property('')\n], ProgressButton.prototype, \"cssClass\", void 0);\n__decorate$3([\n Property('')\n], ProgressButton.prototype, \"content\", void 0);\n__decorate$3([\n Property(false)\n], ProgressButton.prototype, \"isToggle\", void 0);\n__decorate$3([\n Property(false)\n], ProgressButton.prototype, \"enableHtmlSanitizer\", void 0);\n__decorate$3([\n Complex({}, SpinSettings)\n], ProgressButton.prototype, \"spinSettings\", void 0);\n__decorate$3([\n Complex({}, AnimationSettings)\n], ProgressButton.prototype, \"animationSettings\", void 0);\n__decorate$3([\n Event()\n], ProgressButton.prototype, \"created\", void 0);\n__decorate$3([\n Event()\n], ProgressButton.prototype, \"begin\", void 0);\n__decorate$3([\n Event()\n], ProgressButton.prototype, \"progress\", void 0);\n__decorate$3([\n Event()\n], ProgressButton.prototype, \"end\", void 0);\n__decorate$3([\n Event()\n], ProgressButton.prototype, \"fail\", void 0);\nProgressButton = __decorate$3([\n NotifyPropertyChanges\n], ProgressButton);\n\n/**\n * ProgressButton modules\n */\n\n/**\n * SplitButton all module\n */\n\nexport { getModel, upDownKeyHandler, setBlankIconStyle, Item, DropDownButton, SplitButton, Deferred, createButtonGroup, SpinSettings, AnimationSettings, ProgressButton };\n//# sourceMappingURL=ej2-splitbuttons.es2015.js.map\n","/**\r\n * alertifyjs 1.13.1 http://alertifyjs.com\r\n * AlertifyJS is a javascript framework for developing pretty browser dialogs and notifications.\r\n * Copyright 2019 Mohammad Younes (http://alertifyjs.com) \r\n * Licensed under GPL 3 */\r\n( function ( window ) {\r\n 'use strict';\r\n var NOT_DISABLED_NOT_RESET = ':not(:disabled):not(.ajs-reset)';\r\n /**\r\n * Keys enum\r\n * @type {Object}\r\n */\r\n var keys = {\r\n ENTER: 13,\r\n ESC: 27,\r\n F1: 112,\r\n F12: 123,\r\n LEFT: 37,\r\n RIGHT: 39,\r\n TAB: 9\r\n };\r\n /**\r\n * Default options \r\n * @type {Object}\r\n */\r\n var defaults = {\r\n autoReset:true,\r\n basic:false,\r\n closable:true,\r\n closableByDimmer:true,\r\n invokeOnCloseOff:false,\r\n frameless:false,\r\n defaultFocusOff:false,\r\n maintainFocus:true, //global default not per instance, applies to all dialogs\r\n maximizable:true,\r\n modal:true,\r\n movable:true,\r\n moveBounded:false,\r\n overflow:true,\r\n padding: true,\r\n pinnable:true,\r\n pinned:true,\r\n preventBodyShift:false, //global default not per instance, applies to all dialogs\r\n resizable:true,\r\n startMaximized:false,\r\n transition:'pulse',\r\n transitionOff:false,\r\n tabbable:['button', '[href]', 'input', 'select', 'textarea', '[tabindex]:not([tabindex^=\"-\"])'+NOT_DISABLED_NOT_RESET].join(NOT_DISABLED_NOT_RESET+','),//global\r\n notifier:{\r\n delay:5,\r\n position:'bottom-right',\r\n closeButton:false,\r\n classes: {\r\n base: 'alertify-notifier',\r\n prefix:'ajs-',\r\n message: 'ajs-message',\r\n top: 'ajs-top',\r\n right: 'ajs-right',\r\n bottom: 'ajs-bottom',\r\n left: 'ajs-left',\r\n center: 'ajs-center',\r\n visible: 'ajs-visible',\r\n hidden: 'ajs-hidden',\r\n close: 'ajs-close'\r\n }\r\n },\r\n glossary:{\r\n title:'AlertifyJS',\r\n ok: 'OK',\r\n cancel: 'Cancel',\r\n acccpt: 'Accept',\r\n deny: 'Deny',\r\n confirm: 'Confirm',\r\n decline: 'Decline',\r\n close: 'Close',\r\n maximize: 'Maximize',\r\n restore: 'Restore',\r\n },\r\n theme:{\r\n input:'ajs-input',\r\n ok:'ajs-ok',\r\n cancel:'ajs-cancel',\r\n },\r\n hooks:{\r\n preinit:function(){},\r\n postinit:function(){}\r\n }\r\n };\r\n \r\n //holds open dialogs instances\r\n var openDialogs = [];\r\n\r\n /**\r\n * [Helper] Adds the specified class(es) to the element.\r\n *\r\n * @element {node} The element\r\n * @className {string} One or more space-separated classes to be added to the class attribute of the element.\r\n * \r\n * @return {undefined}\r\n */\r\n function addClass(element,classNames){\r\n element.className += ' ' + classNames;\r\n }\r\n \r\n /**\r\n * [Helper] Removes the specified class(es) from the element.\r\n *\r\n * @element {node} The element\r\n * @className {string} One or more space-separated classes to be removed from the class attribute of the element.\r\n * \r\n * @return {undefined}\r\n */\r\n function removeClass(element, classNames) {\r\n var original = element.className.split(' ');\r\n var toBeRemoved = classNames.split(' ');\r\n for (var x = 0; x < toBeRemoved.length; x += 1) {\r\n var index = original.indexOf(toBeRemoved[x]);\r\n if (index > -1){\r\n original.splice(index,1);\r\n }\r\n }\r\n element.className = original.join(' ');\r\n }\r\n\r\n /**\r\n * [Helper] Checks if the document is RTL\r\n *\r\n * @return {Boolean} True if the document is RTL, false otherwise.\r\n */\r\n function isRightToLeft(){\r\n return window.getComputedStyle(document.body).direction === 'rtl';\r\n }\r\n /**\r\n * [Helper] Get the document current scrollTop\r\n *\r\n * @return {Number} current document scrollTop value\r\n */\r\n function getScrollTop(){\r\n return ((document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop);\r\n }\r\n\r\n /**\r\n * [Helper] Get the document current scrollLeft\r\n *\r\n * @return {Number} current document scrollLeft value\r\n */\r\n function getScrollLeft(){\r\n return ((document.documentElement && document.documentElement.scrollLeft) || document.body.scrollLeft);\r\n }\r\n\r\n /**\r\n * Helper: clear contents\r\n *\r\n */\r\n function clearContents(element){\r\n while (element.lastChild) {\r\n element.removeChild(element.lastChild);\r\n }\r\n }\r\n /**\r\n * Extends a given prototype by merging properties from base into sub.\r\n *\r\n * @sub {Object} sub The prototype being overwritten.\r\n * @base {Object} base The prototype being written.\r\n *\r\n * @return {Object} The extended prototype.\r\n */\r\n function copy(src) {\r\n if(null === src){\r\n return src;\r\n }\r\n var cpy;\r\n if(Array.isArray(src)){\r\n cpy = [];\r\n for(var x=0;x 0) {\r\n var args = [];\r\n for (var x = 0; x < arguments.length; x += 1) {\r\n args.push(arguments[x]);\r\n }\r\n args.push(context);\r\n return method.apply(context, args);\r\n }\r\n return method.apply(context, [null, context]);\r\n };\r\n }\r\n /**\r\n * Helper for creating a dialog close event.\r\n * \r\n * @return {object}\r\n */\r\n function createCloseEvent(index, button) {\r\n return {\r\n index: index,\r\n button: button,\r\n cancel: false\r\n };\r\n }\r\n /**\r\n * Helper for dispatching events.\r\n *\r\n * @param {string} evenType The type of the event to disptach.\r\n * @param {object} instance The dialog instance disptaching the event.\r\n *\r\n * @return {any} The result of the invoked function.\r\n */\r\n function dispatchEvent(eventType, instance) {\r\n if ( typeof instance.get(eventType) === 'function' ) {\r\n return instance.get(eventType).call(instance);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Super class for all dialogs\r\n *\r\n * @return {Object}\t\tbase dialog prototype\r\n */\r\n var dialog = (function () {\r\n var //holds the list of used keys.\r\n usedKeys = [],\r\n //dummy variable, used to trigger dom reflow.\r\n reflow = null,\r\n //holds body tab index in case it has any.\r\n tabindex = false,\r\n //condition for detecting safari\r\n isSafari = window.navigator.userAgent.indexOf('Safari') > -1 && window.navigator.userAgent.indexOf('Chrome') < 0,\r\n //dialog building blocks\r\n templates = {\r\n dimmer:'
      ',\r\n /*tab index required to fire click event before body focus*/\r\n modal: '
      ',\r\n dialog: '
      ',\r\n reset: '',\r\n commands: '
      ',\r\n header: '
      ',\r\n body: '
      ',\r\n content: '
      ',\r\n footer: '
      ',\r\n buttons: { primary: '
      ', auxiliary: '
      ' },\r\n button: '',\r\n resizeHandle: '
      ',\r\n },\r\n //common class names\r\n classes = {\r\n animationIn: 'ajs-in',\r\n animationOut: 'ajs-out',\r\n base: 'alertify',\r\n basic:'ajs-basic',\r\n capture: 'ajs-capture',\r\n closable:'ajs-closable',\r\n fixed: 'ajs-fixed',\r\n frameless:'ajs-frameless',\r\n hidden: 'ajs-hidden',\r\n maximize: 'ajs-maximize',\r\n maximized: 'ajs-maximized',\r\n maximizable:'ajs-maximizable',\r\n modeless: 'ajs-modeless',\r\n movable: 'ajs-movable',\r\n noSelection: 'ajs-no-selection',\r\n noOverflow: 'ajs-no-overflow',\r\n noPadding:'ajs-no-padding',\r\n pin:'ajs-pin',\r\n pinnable:'ajs-pinnable',\r\n prefix: 'ajs-',\r\n resizable: 'ajs-resizable',\r\n restore: 'ajs-restore',\r\n shake:'ajs-shake',\r\n unpinned:'ajs-unpinned',\r\n noTransition:'ajs-no-transition'\r\n };\r\n\r\n /**\r\n * Helper: initializes the dialog instance\r\n * \r\n * @return\t{Number}\tThe total count of currently open modals.\r\n */\r\n function initialize(instance){\r\n \r\n if(!instance.__internal){\r\n //invoke preinit global hook\r\n alertify.defaults.hooks.preinit(instance);\r\n //no need to expose init after this.\r\n delete instance.__init;\r\n \r\n //keep a copy of initial dialog settings\r\n if(!instance.__settings){\r\n instance.__settings = copy(instance.settings);\r\n }\r\n \r\n //get dialog buttons/focus setup\r\n var setup;\r\n if(typeof instance.setup === 'function'){\r\n setup = instance.setup();\r\n setup.options = setup.options || {};\r\n setup.focus = setup.focus || {};\r\n }else{\r\n setup = {\r\n buttons:[],\r\n focus:{\r\n element:null,\r\n select:false\r\n },\r\n options:{\r\n }\r\n };\r\n }\r\n \r\n //initialize hooks object.\r\n if(typeof instance.hooks !== 'object'){\r\n instance.hooks = {};\r\n }\r\n\r\n //copy buttons defintion\r\n var buttonsDefinition = [];\r\n if(Array.isArray(setup.buttons)){\r\n for(var b=0;b= 0){\r\n //last open modal or last maximized one\r\n removeClass(document.body, classes.noOverflow);\r\n preventBodyShift(false);\r\n }else if(requiresNoOverflow > 0 && document.body.className.indexOf(classes.noOverflow) < 0){\r\n //first open modal or first maximized one\r\n preventBodyShift(true);\r\n addClass(document.body, classes.noOverflow);\r\n }\r\n }\r\n var top = '', topScroll = 0;\r\n /**\r\n * Helper: prevents body shift.\r\n *\r\n */\r\n function preventBodyShift(add){\r\n if(alertify.defaults.preventBodyShift){\r\n if(add && document.documentElement.scrollHeight > document.documentElement.clientHeight ){//&& openDialogs[openDialogs.length-1].elements.dialog.clientHeight <= document.documentElement.clientHeight){\r\n topScroll = scrollY;\r\n top = window.getComputedStyle(document.body).top;\r\n addClass(document.body, classes.fixed);\r\n document.body.style.top = -scrollY + 'px';\r\n } else if(!add) {\r\n scrollY = topScroll;\r\n document.body.style.top = top;\r\n removeClass(document.body, classes.fixed);\r\n restoreScrollPosition();\r\n }\r\n }\r\n }\r\n\t\t\r\n /**\r\n * Sets the name of the transition used to show/hide the dialog\r\n * \r\n * @param {Object} instance The dilog instance.\r\n *\r\n */\r\n function updateTransition(instance, value, oldValue){\r\n if(typeof oldValue === 'string'){\r\n removeClass(instance.elements.root,classes.prefix + oldValue);\r\n }\r\n addClass(instance.elements.root, classes.prefix + value);\r\n reflow = instance.elements.root.offsetWidth;\r\n }\r\n\r\n /**\r\n * Toggles the dialog no transition \r\n *\r\n * @param {Object} instance The dilog instance.\r\n *\r\n * @return {undefined}\r\n */\r\n function updateTransitionOff(instance){\r\n if (instance.get('transitionOff')) {\r\n // add class\r\n addClass(instance.elements.root, classes.noTransition);\r\n } else {\r\n // remove class\r\n removeClass(instance.elements.root, classes.noTransition);\r\n }\r\n }\r\n\r\n /**\r\n * Toggles the dialog display mode\r\n *\r\n * @param {Object} instance The dilog instance.\r\n *\r\n * @return {undefined}\r\n */\r\n function updateDisplayMode(instance){\r\n if(instance.get('modal')){\r\n\r\n //make modal\r\n removeClass(instance.elements.root, classes.modeless);\r\n\r\n //only if open\r\n if(instance.isOpen()){\r\n unbindModelessEvents(instance);\r\n\r\n //in case a pinned modless dialog was made modal while open.\r\n updateAbsPositionFix(instance);\r\n\r\n ensureNoOverflow();\r\n }\r\n }else{\r\n //make modelss\r\n addClass(instance.elements.root, classes.modeless);\r\n\r\n //only if open\r\n if(instance.isOpen()){\r\n bindModelessEvents(instance);\r\n\r\n //in case pin/unpin was called while a modal is open\r\n updateAbsPositionFix(instance);\r\n\r\n ensureNoOverflow();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Toggles the dialog basic view mode \r\n *\r\n * @param {Object} instance The dilog instance.\r\n *\r\n * @return {undefined}\r\n */\r\n function updateBasicMode(instance){\r\n if (instance.get('basic')) {\r\n // add class\r\n addClass(instance.elements.root, classes.basic);\r\n } else {\r\n // remove class\r\n removeClass(instance.elements.root, classes.basic);\r\n }\r\n }\r\n\r\n /**\r\n * Toggles the dialog frameless view mode \r\n *\r\n * @param {Object} instance The dilog instance.\r\n *\r\n * @return {undefined}\r\n */\r\n function updateFramelessMode(instance){\r\n if (instance.get('frameless')) {\r\n // add class\r\n addClass(instance.elements.root, classes.frameless);\r\n } else {\r\n // remove class\r\n removeClass(instance.elements.root, classes.frameless);\r\n }\r\n }\r\n\t\t\r\n /**\r\n * Helper: Brings the modeless dialog to front, attached to modeless dialogs.\r\n *\r\n * @param {Event} event Focus event\r\n * @param {Object} instance The dilog instance.\r\n *\r\n * @return {undefined}\r\n */\r\n function bringToFront(event, instance){\r\n \r\n // Do not bring to front if preceeded by an open modal\r\n var index = openDialogs.indexOf(instance);\r\n for(var x=index+1;x 200 && (modalClickHandlerTS = event.timeStamp) && !cancelClick){\r\n var target = event.srcElement || event.target;\r\n if (instance.get('closableByDimmer') === true && target === instance.elements.modal) {\r\n triggerClose(instance);\r\n }\r\n }\r\n cancelClick = false;\r\n }\r\n\r\n // stores last call timestamp to prevent triggering the callback twice.\r\n var callbackTS = 0;\r\n // flag to cancel keyup event if already handled by click event (pressing Enter on a focusted button).\r\n var cancelKeyup = false;\r\n /** \r\n * Helper: triggers a button callback\r\n *\r\n * @param {Object}\t\tThe dilog instance.\r\n * @param {Function}\tCallback to check which button triggered the event.\r\n *\r\n * @return {undefined}\r\n */\r\n function triggerCallback(instance, check) {\r\n if(Date.now() - callbackTS > 200 && (callbackTS = Date.now())){\r\n for (var idx = 0; idx < instance.__internal.buttons.length; idx += 1) {\r\n var button = instance.__internal.buttons[idx];\r\n if (!button.element.disabled && check(button)) {\r\n var closeEvent = createCloseEvent(idx, button);\r\n if (typeof instance.callback === 'function') {\r\n instance.callback.apply(instance, [closeEvent]);\r\n }\r\n //close the dialog only if not canceled.\r\n if (closeEvent.cancel === false) {\r\n instance.close();\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Clicks event handler, attached to the dialog footer.\r\n *\r\n * @param {Event}\t\tDOM event object.\r\n * @param {Object}\t\tThe dilog instance.\r\n * \r\n * @return {undefined}\r\n */\r\n function buttonsClickHandler(event, instance) {\r\n var target = event.srcElement || event.target;\r\n triggerCallback(instance, function (button) {\r\n // if this button caused the click, cancel keyup event\r\n return button.element === target && (cancelKeyup = true);\r\n });\r\n }\r\n\r\n /**\r\n * Keyup event handler, attached to the document.body\r\n *\r\n * @param {Event}\t\tDOM event object.\r\n * @param {Object}\t\tThe dilog instance.\r\n * \r\n * @return {undefined}\r\n */\r\n function keyupHandler(event) {\r\n //hitting enter while button has focus will trigger keyup too.\r\n //ignore if handled by clickHandler\r\n if (cancelKeyup) {\r\n cancelKeyup = false;\r\n return;\r\n }\r\n var instance = openDialogs[openDialogs.length - 1];\r\n var keyCode = event.keyCode;\r\n if (instance.__internal.buttons.length === 0 && keyCode === keys.ESC && instance.get('closable') === true) {\r\n triggerClose(instance);\r\n return false;\r\n }else if (usedKeys.indexOf(keyCode) > -1) {\r\n triggerCallback(instance, function (button) {\r\n return button.key === keyCode;\r\n });\r\n return false;\r\n }\r\n }\r\n /**\r\n * Keydown event handler, attached to the document.body\r\n *\r\n * @param {Event}\t\tDOM event object.\r\n * @param {Object}\t\tThe dilog instance.\r\n * \r\n * @return {undefined}\r\n */\r\n function keydownHandler(event) {\r\n var instance = openDialogs[openDialogs.length - 1];\r\n var keyCode = event.keyCode;\r\n if (keyCode === keys.LEFT || keyCode === keys.RIGHT) {\r\n var buttons = instance.__internal.buttons;\r\n for (var x = 0; x < buttons.length; x += 1) {\r\n if (document.activeElement === buttons[x].element) {\r\n switch (keyCode) {\r\n case keys.LEFT:\r\n buttons[(x || buttons.length) - 1].element.focus();\r\n return;\r\n case keys.RIGHT:\r\n buttons[(x + 1) % buttons.length].element.focus();\r\n return;\r\n }\r\n }\r\n }\r\n }else if (keyCode < keys.F12 + 1 && keyCode > keys.F1 - 1 && usedKeys.indexOf(keyCode) > -1) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n triggerCallback(instance, function (button) {\r\n return button.key === keyCode;\r\n });\r\n return false;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Sets focus to proper dialog element\r\n *\r\n * @param {Object} instance The dilog instance.\r\n * @param {Node} [resetTarget=undefined] DOM element to reset focus to.\r\n *\r\n * @return {undefined}\r\n */\r\n function setFocus(instance, resetTarget) {\r\n // reset target has already been determined.\r\n if (resetTarget) {\r\n resetTarget.focus();\r\n } else {\r\n // current instance focus settings\r\n var focus = instance.__internal.focus;\r\n // the focus element.\r\n var element = focus.element;\r\n\r\n switch (typeof focus.element) {\r\n // a number means a button index\r\n case 'number':\r\n if (instance.__internal.buttons.length > focus.element) {\r\n //in basic view, skip focusing the buttons.\r\n if (instance.get('basic') === true) {\r\n element = instance.elements.reset[0];\r\n } else {\r\n element = instance.__internal.buttons[focus.element].element;\r\n }\r\n }\r\n break;\r\n // a string means querySelector to select from dialog body contents.\r\n case 'string':\r\n element = instance.elements.body.querySelector(focus.element);\r\n break;\r\n // a function should return the focus element.\r\n case 'function':\r\n element = focus.element.call(instance);\r\n break;\r\n }\r\n\r\n // if no focus element, default to first reset element.\r\n if (instance.get('defaultFocusOff') === true || ((typeof element === 'undefined' || element === null) && instance.__internal.buttons.length === 0)) {\r\n element = instance.elements.reset[0];\r\n }\r\n // focus\r\n if (element && element.focus) {\r\n element.focus();\r\n // if selectable\r\n if (focus.select && element.select) {\r\n element.select();\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Focus event handler, attached to document.body and dialogs own reset links.\r\n * handles the focus for modal dialogs only.\r\n *\r\n * @param {Event} event DOM focus event object.\r\n * @param {Object} instance The dilog instance.\r\n *\r\n * @return {undefined}\r\n */\r\n function onReset(event, instance) {\r\n\r\n // should work on last modal if triggered from document.body \r\n if (!instance) {\r\n for (var x = openDialogs.length - 1; x > -1; x -= 1) {\r\n if (openDialogs[x].isModal()) {\r\n instance = openDialogs[x];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if(instance) {\r\n // if modal\r\n if (instance.isModal()) {\r\n // determine reset target to enable forward/backward tab cycle.\r\n var firstReset = instance.elements.reset[0],\r\n lastReset = instance.elements.reset[1],\r\n lastFocusedElement = event.relatedTarget,\r\n within = instance.elements.root.contains(lastFocusedElement),\r\n target = event.srcElement || event.target,\r\n resetTarget;\r\n\r\n //if the previous focused element element was outside the modal do nthing\r\n if( /*first show */\r\n (target === firstReset && !within) ||\r\n /*focus cycle */\r\n (target === lastReset && lastFocusedElement === firstReset)){\r\n return;\r\n }else if(target === lastReset || target === document.body){\r\n resetTarget = firstReset;\r\n }else if(target === firstReset && lastFocusedElement === lastReset){\r\n resetTarget = findTabbable(instance);\r\n }else if(target === firstReset && within){\r\n resetTarget = findTabbable(instance, true);\r\n }\r\n // focus\r\n setFocus(instance, resetTarget);\r\n }\r\n }\r\n }\r\n function findTabbable(instance, last){\r\n var tabbables = [].slice.call(instance.elements.dialog.querySelectorAll(defaults.tabbable));\r\n if(last){\r\n tabbables.reverse();\r\n }\r\n for(var x=0;x startingWidth) {\r\n //growing\r\n element.style.left = (startingLeft + diff) + 'px';\r\n } else if (element.offsetWidth >= minWidth) {\r\n //shrinking\r\n element.style.left = (startingLeft - diff) + 'px';\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Triggers the start of a resize event, attached to the resize handle element mouse down event.\r\n * Adds no-selection class to the body, disabling selection while moving.\r\n *\r\n * @param {Event} event\tDOM event object.\r\n * @param {Object} instance The dilog instance.\r\n * \r\n * @return {Boolean} false\r\n */\r\n function beginResize(event, instance) {\r\n if (!instance.isMaximized()) {\r\n var eventSrc;\r\n if (event.type === 'touchstart') {\r\n event.preventDefault();\r\n eventSrc = event.targetTouches[0];\r\n } else if (event.button === 0) {\r\n eventSrc = event;\r\n }\r\n if (eventSrc) {\r\n // allow custom `onresize` method\r\n dispatchEvent('onresize', instance);\r\n \r\n resizable = instance;\r\n handleOffset = instance.elements.resizeHandle.offsetHeight / 2;\r\n var element = instance.elements.dialog;\r\n addClass(element, classes.capture);\r\n startingLeft = parseInt(element.style.left, 10);\r\n element.style.height = element.offsetHeight + 'px';\r\n element.style.minHeight = instance.elements.header.offsetHeight + instance.elements.footer.offsetHeight + 'px';\r\n element.style.width = (startingWidth = element.offsetWidth) + 'px';\r\n\r\n if (element.style.maxWidth !== 'none') {\r\n element.style.minWidth = (minWidth = element.offsetWidth) + 'px';\r\n }\r\n element.style.maxWidth = 'none';\r\n addClass(document.body, classes.noSelection);\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * The actual resize handler, attached to document.body mousemove event.\r\n *\r\n * @param {Event} event\tDOM event object.\r\n * \r\n * @return {undefined}\r\n */\r\n function resize(event) {\r\n if (resizable) {\r\n var eventSrc;\r\n if (event.type === 'touchmove') {\r\n event.preventDefault();\r\n eventSrc = event.targetTouches[0];\r\n } else if (event.button === 0) {\r\n eventSrc = event;\r\n }\r\n if (eventSrc) {\r\n resizeElement(eventSrc, resizable.elements.dialog, !resizable.get('modal') && !resizable.get('pinned'));\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Triggers the end of a resize event, attached to document.body mouseup event.\r\n * Removes no-selection class from document.body, allowing selection.\r\n *\r\n * @return {undefined}\r\n */\r\n function endResize() {\r\n if (resizable) {\r\n var instance = resizable;\r\n resizable = null;\r\n removeClass(document.body, classes.noSelection);\r\n removeClass(instance.elements.dialog, classes.capture);\r\n cancelClick = true;\r\n // allow custom `onresized` method\r\n dispatchEvent('onresized', instance);\r\n }\r\n }\r\n\r\n /**\r\n * Resets any changes made by resizing the element to its original state.\r\n *\r\n * @param {Object} instance The dilog instance.\r\n *\r\n * @return {undefined}\r\n */\r\n function resetResize(instance) {\r\n resizable = null;\r\n var element = instance.elements.dialog;\r\n if (element.style.maxWidth === 'none') {\r\n //clear inline styles.\r\n element.style.maxWidth = element.style.minWidth = element.style.width = element.style.height = element.style.minHeight = element.style.left = '';\r\n //reset variables.\r\n startingLeft = Number.Nan;\r\n startingWidth = minWidth = handleOffset = 0;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Updates the dialog move behavior.\r\n *\r\n * @param {Object} instance The dilog instance.\r\n * @param {Boolean} on True to add the behavior, removes it otherwise.\r\n *\r\n * @return {undefined}\r\n */\r\n function updateResizable(instance) {\r\n if (instance.get('resizable')) {\r\n // add class\r\n addClass(instance.elements.root, classes.resizable);\r\n if (instance.isOpen()) {\r\n bindResizableEvents(instance);\r\n }\r\n } else {\r\n //reset\r\n resetResize(instance);\r\n // remove class\r\n removeClass(instance.elements.root, classes.resizable);\r\n if (instance.isOpen()) {\r\n unbindResizableEvents(instance);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Reset move/resize on window resize.\r\n *\r\n * @param {Event} event\twindow resize event object.\r\n *\r\n * @return {undefined}\r\n */\r\n function windowResize(/*event*/) {\r\n for (var x = 0; x < openDialogs.length; x += 1) {\r\n var instance = openDialogs[x];\r\n if (instance.get('autoReset')) {\r\n resetMove(instance);\r\n resetResize(instance);\r\n }\r\n }\r\n }\r\n /**\r\n * Bind dialogs events\r\n *\r\n * @param {Object} instance The dilog instance.\r\n *\r\n * @return {undefined}\r\n */\r\n function bindEvents(instance) {\r\n // if first dialog, hook global handlers\r\n if (openDialogs.length === 1) {\r\n //global\r\n on(window, 'resize', windowResize);\r\n on(document.body, 'keyup', keyupHandler);\r\n on(document.body, 'keydown', keydownHandler);\r\n on(document.body, 'focus', onReset);\r\n\r\n //move\r\n on(document.documentElement, 'mousemove', move);\r\n on(document.documentElement, 'touchmove', move, false, false);\r\n on(document.documentElement, 'mouseup', endMove);\r\n on(document.documentElement, 'touchend', endMove);\r\n //resize\r\n on(document.documentElement, 'mousemove', resize);\r\n on(document.documentElement, 'touchmove', resize, false, false);\r\n on(document.documentElement, 'mouseup', endResize);\r\n on(document.documentElement, 'touchend', endResize);\r\n }\r\n\r\n // common events\r\n on(instance.elements.commands.container, 'click', instance.__internal.commandsClickHandler);\r\n on(instance.elements.footer, 'click', instance.__internal.buttonsClickHandler);\r\n on(instance.elements.reset[0], 'focusin', instance.__internal.resetHandler);\r\n on(instance.elements.reset[0], 'keydown', recycleTab);\r\n on(instance.elements.reset[1], 'focusin', instance.__internal.resetHandler);\r\n\r\n //prevent handling key up when dialog is being opened by a key stroke.\r\n cancelKeyup = true;\r\n // hook in transition handler\r\n on(instance.elements.dialog, transition.type, instance.__internal.transitionInHandler);\r\n\r\n // modelss only events\r\n if (!instance.get('modal')) {\r\n bindModelessEvents(instance);\r\n }\r\n\r\n // resizable\r\n if (instance.get('resizable')) {\r\n bindResizableEvents(instance);\r\n }\r\n\r\n // movable\r\n if (instance.get('movable')) {\r\n bindMovableEvents(instance);\r\n }\r\n }\r\n\r\n /**\r\n * Unbind dialogs events\r\n *\r\n * @param {Object} instance The dilog instance.\r\n *\r\n * @return {undefined}\r\n */\r\n function unbindEvents(instance) {\r\n // if last dialog, remove global handlers\r\n if (openDialogs.length === 1) {\r\n //global\r\n off(window, 'resize', windowResize);\r\n off(document.body, 'keyup', keyupHandler);\r\n off(document.body, 'keydown', keydownHandler);\r\n off(document.body, 'focus', onReset);\r\n //move\r\n off(document.documentElement, 'mousemove', move);\r\n off(document.documentElement, 'mouseup', endMove);\r\n //resize\r\n off(document.documentElement, 'mousemove', resize);\r\n off(document.documentElement, 'mouseup', endResize);\r\n }\r\n\r\n // common events\r\n off(instance.elements.commands.container, 'click', instance.__internal.commandsClickHandler);\r\n off(instance.elements.footer, 'click', instance.__internal.buttonsClickHandler);\r\n off(instance.elements.reset[0], 'focusin', instance.__internal.resetHandler);\r\n off(instance.elements.reset[0], 'keydown', recycleTab);\r\n off(instance.elements.reset[1], 'focusin', instance.__internal.resetHandler);\r\n\r\n // hook out transition handler\r\n on(instance.elements.dialog, transition.type, instance.__internal.transitionOutHandler);\r\n\r\n // modelss only events\r\n if (!instance.get('modal')) {\r\n unbindModelessEvents(instance);\r\n }\r\n\r\n // movable\r\n if (instance.get('movable')) {\r\n unbindMovableEvents(instance);\r\n }\r\n\r\n // resizable\r\n if (instance.get('resizable')) {\r\n unbindResizableEvents(instance);\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Bind modeless specific events\r\n *\r\n * @param {Object} instance The dilog instance.\r\n *\r\n * @return {undefined}\r\n */\r\n function bindModelessEvents(instance) {\r\n on(instance.elements.dialog, 'focus', instance.__internal.bringToFrontHandler, true);\r\n }\r\n\r\n /**\r\n * Unbind modeless specific events\r\n *\r\n * @param {Object} instance The dilog instance.\r\n *\r\n * @return {undefined}\r\n */\r\n function unbindModelessEvents(instance) {\r\n off(instance.elements.dialog, 'focus', instance.__internal.bringToFrontHandler, true);\r\n }\r\n\r\n\r\n\r\n /**\r\n * Bind movable specific events\r\n *\r\n * @param {Object} instance The dilog instance.\r\n *\r\n * @return {undefined}\r\n */\r\n function bindMovableEvents(instance) {\r\n on(instance.elements.header, 'mousedown', instance.__internal.beginMoveHandler);\r\n on(instance.elements.header, 'touchstart', instance.__internal.beginMoveHandler, false, false);\r\n }\r\n\r\n /**\r\n * Unbind movable specific events\r\n *\r\n * @param {Object} instance The dilog instance.\r\n *\r\n * @return {undefined}\r\n */\r\n function unbindMovableEvents(instance) {\r\n off(instance.elements.header, 'mousedown', instance.__internal.beginMoveHandler);\r\n off(instance.elements.header, 'touchstart', instance.__internal.beginMoveHandler, false, false);\r\n }\r\n\r\n\r\n\r\n /**\r\n * Bind resizable specific events\r\n *\r\n * @param {Object} instance The dilog instance.\r\n *\r\n * @return {undefined}\r\n */\r\n function bindResizableEvents(instance) {\r\n on(instance.elements.resizeHandle, 'mousedown', instance.__internal.beginResizeHandler);\r\n on(instance.elements.resizeHandle, 'touchstart', instance.__internal.beginResizeHandler, false, false);\r\n }\r\n\r\n /**\r\n * Unbind resizable specific events\r\n *\r\n * @param {Object} instance The dilog instance.\r\n *\r\n * @return {undefined}\r\n */\r\n function unbindResizableEvents(instance) {\r\n off(instance.elements.resizeHandle, 'mousedown', instance.__internal.beginResizeHandler);\r\n off(instance.elements.resizeHandle, 'touchstart', instance.__internal.beginResizeHandler, false, false);\r\n }\r\n\r\n /**\r\n * Bind closable events\r\n *\r\n * @param {Object} instance The dilog instance.\r\n *\r\n * @return {undefined}\r\n */\r\n function bindClosableEvents(instance) {\r\n on(instance.elements.modal, 'click', instance.__internal.modalClickHandler);\r\n }\r\n\r\n /**\r\n * Unbind closable specific events\r\n *\r\n * @param {Object} instance The dilog instance.\r\n *\r\n * @return {undefined}\r\n */\r\n function unbindClosableEvents(instance) {\r\n off(instance.elements.modal, 'click', instance.__internal.modalClickHandler);\r\n }\r\n // dialog API\r\n return {\r\n __init:initialize,\r\n /**\r\n * Check if dialog is currently open\r\n *\r\n * @return {Boolean}\r\n */\r\n isOpen: function () {\r\n return this.__internal.isOpen;\r\n },\r\n isModal: function (){\r\n return this.elements.root.className.indexOf(classes.modeless) < 0;\r\n },\r\n isMaximized:function(){\r\n return this.elements.root.className.indexOf(classes.maximized) > -1;\r\n },\r\n isPinned:function(){\r\n return this.elements.root.className.indexOf(classes.unpinned) < 0;\r\n },\r\n maximize:function(){\r\n if(!this.isMaximized()){\r\n maximize(this);\r\n }\r\n return this;\r\n },\r\n restore:function(){\r\n if(this.isMaximized()){\r\n restore(this);\r\n }\r\n return this;\r\n },\r\n pin:function(){\r\n if(!this.isPinned()){\r\n pin(this);\r\n }\r\n return this;\r\n },\r\n unpin:function(){\r\n if(this.isPinned()){\r\n unpin(this);\r\n }\r\n return this;\r\n },\r\n bringToFront:function(){\r\n bringToFront(null, this);\r\n return this;\r\n },\r\n /**\r\n * Move the dialog to a specific x/y coordinates\r\n *\r\n * @param {Number} x The new dialog x coordinate in pixels.\r\n * @param {Number} y The new dialog y coordinate in pixels.\r\n *\r\n * @return {Object} The dialog instance.\r\n */\r\n moveTo:function(x,y){\r\n if(!isNaN(x) && !isNaN(y)){\r\n // allow custom `onmove` method\r\n dispatchEvent('onmove', this);\r\n \r\n var element = this.elements.dialog,\r\n current = element,\r\n offsetLeft = 0,\r\n offsetTop = 0;\r\n \r\n //subtract existing left,top\r\n if (element.style.left) {\r\n offsetLeft -= parseInt(element.style.left, 10);\r\n }\r\n if (element.style.top) {\r\n offsetTop -= parseInt(element.style.top, 10);\r\n }\r\n //calc offset\r\n do {\r\n offsetLeft += current.offsetLeft;\r\n offsetTop += current.offsetTop;\r\n } while (current = current.offsetParent);\r\n\r\n //calc left, top\r\n var left = (x - offsetLeft);\r\n var top = (y - offsetTop);\r\n\r\n //// rtl handling\r\n if (isRightToLeft()) {\r\n left *= -1;\r\n }\r\n\r\n element.style.left = left + 'px';\r\n element.style.top = top + 'px';\r\n \r\n // allow custom `onmoved` method\r\n dispatchEvent('onmoved', this);\r\n }\r\n return this;\r\n },\r\n /**\r\n * Resize the dialog to a specific width/height (the dialog must be 'resizable').\r\n * The dialog can be resized to:\r\n * A minimum width equal to the initial display width\r\n * A minimum height equal to the sum of header/footer heights.\r\n *\r\n *\r\n * @param {Number or String} width The new dialog width in pixels or in percent.\r\n * @param {Number or String} height The new dialog height in pixels or in percent.\r\n *\r\n * @return {Object} The dialog instance.\r\n */\r\n resizeTo:function(width,height){\r\n var w = parseFloat(width),\r\n h = parseFloat(height),\r\n regex = /(\\d*\\.\\d+|\\d+)%/\r\n ;\r\n\r\n if(!isNaN(w) && !isNaN(h) && this.get('resizable') === true){\r\n \r\n // allow custom `onresize` method\r\n dispatchEvent('onresize', this);\r\n \r\n if(('' + width).match(regex)){\r\n w = w / 100 * document.documentElement.clientWidth ;\r\n }\r\n\r\n if(('' + height).match(regex)){\r\n h = h / 100 * document.documentElement.clientHeight;\r\n }\r\n\r\n var element = this.elements.dialog;\r\n if (element.style.maxWidth !== 'none') {\r\n element.style.minWidth = (minWidth = element.offsetWidth) + 'px';\r\n }\r\n element.style.maxWidth = 'none';\r\n element.style.minHeight = this.elements.header.offsetHeight + this.elements.footer.offsetHeight + 'px';\r\n element.style.width = w + 'px';\r\n element.style.height = h + 'px';\r\n \r\n // allow custom `onresized` method\r\n dispatchEvent('onresized', this);\r\n }\r\n return this;\r\n },\r\n /**\r\n * Gets or Sets dialog settings/options \r\n *\r\n * @param {String|Object} key A string specifying a propery name or a collection of key/value pairs.\r\n * @param {Object} value Optional, the value associated with the key (in case it was a string).\r\n *\r\n * @return {undefined}\r\n */\r\n setting : function (key, value) {\r\n var self = this;\r\n var result = update(this, this.__internal.options, function(k,o,n){ optionUpdated(self,k,o,n); }, key, value);\r\n if(result.op === 'get'){\r\n if(result.found){\r\n return result.value;\r\n }else if(typeof this.settings !== 'undefined'){\r\n return update(this, this.settings, this.settingUpdated || function(){}, key, value).value;\r\n }else{\r\n return undefined;\r\n }\r\n }else if(result.op === 'set'){\r\n if(result.items.length > 0){\r\n var callback = this.settingUpdated || function(){};\r\n for(var x=0;x 0) {\r\n var self = this;\r\n this.__internal.timer = setTimeout(function () { self.dismiss(); }, this.__internal.delay * 1000);\r\n }\r\n return this;\r\n },\r\n /*\r\n * Sets the notification message contents\r\n * @param {string or DOMElement} content The notification message content\r\n *\r\n */\r\n setContent: function (content) {\r\n if (typeof content === 'string') {\r\n clearContents(this.element);\r\n this.element.innerHTML = content;\r\n } else if (content instanceof window.HTMLElement && this.element.firstChild !== content) {\r\n clearContents(this.element);\r\n this.element.appendChild(content);\r\n }\r\n if(this.__internal.closeButton){\r\n var close = document.createElement('span');\r\n addClass(close, classes.close);\r\n close.setAttribute('data-close', true);\r\n this.element.appendChild(close);\r\n }\r\n return this;\r\n },\r\n /*\r\n * Dismisses all open notifications except this.\r\n *\r\n */\r\n dismissOthers: function () {\r\n notifier.dismissAll(this);\r\n return this;\r\n }\r\n });\r\n }\r\n\r\n //notifier api\r\n return {\r\n /**\r\n * Gets or Sets notifier settings.\r\n *\r\n * @param {string} key The setting name\r\n * @param {Variant} value The setting value.\r\n *\r\n * @return {Object}\tif the called as a setter, return the notifier instance.\r\n */\r\n setting: function (key, value) {\r\n //ensure init\r\n initialize(this);\r\n\r\n if (typeof value === 'undefined') {\r\n //get\r\n return this.__internal[key];\r\n } else {\r\n //set\r\n switch (key) {\r\n case 'position':\r\n this.__internal.position = value;\r\n updatePosition(this);\r\n break;\r\n case 'delay':\r\n this.__internal.delay = value;\r\n break;\r\n }\r\n }\r\n return this;\r\n },\r\n /**\r\n * [Alias] Sets dialog settings/options\r\n */\r\n set:function(key,value){\r\n this.setting(key,value);\r\n return this;\r\n },\r\n /**\r\n * [Alias] Gets dialog settings/options\r\n */\r\n get:function(key){\r\n return this.setting(key);\r\n },\r\n /**\r\n * Creates a new notification message\r\n *\r\n * @param {string} type The type of notification message (simply a CSS class name 'ajs-{type}' to be added).\r\n * @param {Function} callback A callback function to be invoked when the message is dismissed.\r\n *\r\n * @return {undefined}\r\n */\r\n create: function (type, callback) {\r\n //ensure notifier init\r\n initialize(this);\r\n //create new notification message\r\n var div = document.createElement('div');\r\n div.className = classes.message + ((typeof type === 'string' && type !== '') ? ' ' + classes.prefix + type : '');\r\n return create(div, callback);\r\n },\r\n /**\r\n * Dismisses all open notifications.\r\n *\r\n * @param {Object} excpet [optional] The notification object to exclude from dismissal.\r\n *\r\n */\r\n dismissAll: function (except) {\r\n var clone = openInstances.slice(0);\r\n for (var x = 0; x < clone.length; x += 1) {\r\n var instance = clone[x];\r\n if (except === undefined || except !== instance) {\r\n instance.dismiss();\r\n }\r\n }\r\n }\r\n };\r\n })();\r\n\r\n /**\r\n * Alertify public API\r\n * This contains everything that is exposed through the alertify object.\r\n *\r\n * @return {Object}\r\n */\r\n function Alertify() {\r\n\r\n // holds a references of created dialogs\r\n var dialogs = {};\r\n\r\n /**\r\n * Extends a given prototype by merging properties from base into sub.\r\n *\r\n * @sub {Object} sub The prototype being overwritten.\r\n * @base {Object} base The prototype being written.\r\n *\r\n * @return {Object} The extended prototype.\r\n */\r\n function extend(sub, base) {\r\n // copy dialog pototype over definition.\r\n for (var prop in base) {\r\n if (base.hasOwnProperty(prop)) {\r\n sub[prop] = base[prop];\r\n }\r\n }\r\n return sub;\r\n }\r\n\r\n\r\n /**\r\n * Helper: returns a dialog instance from saved dialogs.\r\n * and initializes the dialog if its not already initialized.\r\n *\r\n * @name {String} name The dialog name.\r\n *\r\n * @return {Object} The dialog instance.\r\n */\r\n function get_dialog(name) {\r\n var dialog = dialogs[name].dialog;\r\n //initialize the dialog if its not already initialized.\r\n if (dialog && typeof dialog.__init === 'function') {\r\n dialog.__init(dialog);\r\n }\r\n return dialog;\r\n }\r\n\r\n /**\r\n * Helper: registers a new dialog definition.\r\n *\r\n * @name {String} name The dialog name.\r\n * @Factory {Function} Factory a function resposible for creating dialog prototype.\r\n * @transient {Boolean} transient True to create a new dialog instance each time the dialog is invoked, false otherwise.\r\n * @base {String} base the name of another dialog to inherit from.\r\n *\r\n * @return {Object} The dialog definition.\r\n */\r\n function register(name, Factory, transient, base) {\r\n var definition = {\r\n dialog: null,\r\n factory: Factory\r\n };\r\n\r\n //if this is based on an existing dialog, create a new definition\r\n //by applying the new protoype over the existing one.\r\n if (base !== undefined) {\r\n definition.factory = function () {\r\n return extend(new dialogs[base].factory(), new Factory());\r\n };\r\n }\r\n\r\n if (!transient) {\r\n //create a new definition based on dialog\r\n definition.dialog = extend(new definition.factory(), dialog);\r\n }\r\n return dialogs[name] = definition;\r\n }\r\n\r\n return {\r\n /**\r\n * Alertify defaults\r\n * \r\n * @type {Object}\r\n */\r\n defaults: defaults,\r\n /**\r\n * Dialogs factory \r\n *\r\n * @param {string} Dialog name.\r\n * @param {Function} A Dialog factory function.\r\n * @param {Boolean} Indicates whether to create a singleton or transient dialog.\r\n * @param {String} The name of the base type to inherit from.\r\n */\r\n dialog: function (name, Factory, transient, base) {\r\n\r\n // get request, create a new instance and return it.\r\n if (typeof Factory !== 'function') {\r\n return get_dialog(name);\r\n }\r\n\r\n if (this.hasOwnProperty(name)) {\r\n throw new Error('alertify.dialog: name already exists');\r\n }\r\n\r\n // register the dialog\r\n var definition = register(name, Factory, transient, base);\r\n\r\n if (transient) {\r\n\r\n // make it public\r\n this[name] = function () {\r\n //if passed with no params, consider it a get request\r\n if (arguments.length === 0) {\r\n return definition.dialog;\r\n } else {\r\n var instance = extend(new definition.factory(), dialog);\r\n //ensure init\r\n if (instance && typeof instance.__init === 'function') {\r\n instance.__init(instance);\r\n }\r\n instance['main'].apply(instance, arguments);\r\n return instance['show'].apply(instance);\r\n }\r\n };\r\n } else {\r\n // make it public\r\n this[name] = function () {\r\n //ensure init\r\n if (definition.dialog && typeof definition.dialog.__init === 'function') {\r\n definition.dialog.__init(definition.dialog);\r\n }\r\n //if passed with no params, consider it a get request\r\n if (arguments.length === 0) {\r\n return definition.dialog;\r\n } else {\r\n var dialog = definition.dialog;\r\n dialog['main'].apply(definition.dialog, arguments);\r\n return dialog['show'].apply(definition.dialog);\r\n }\r\n };\r\n }\r\n },\r\n /**\r\n * Close all open dialogs.\r\n *\r\n * @param {Object} excpet [optional] The dialog object to exclude from closing.\r\n *\r\n * @return {undefined}\r\n */\r\n closeAll: function (except) {\r\n var clone = openDialogs.slice(0);\r\n for (var x = 0; x < clone.length; x += 1) {\r\n var instance = clone[x];\r\n if (except === undefined || except !== instance) {\r\n instance.close();\r\n }\r\n }\r\n },\r\n /**\r\n * Gets or Sets dialog settings/options. if the dialog is transient, this call does nothing.\r\n *\r\n * @param {string} name The dialog name.\r\n * @param {String|Object} key A string specifying a propery name or a collection of key/value pairs.\r\n * @param {Variant} value Optional, the value associated with the key (in case it was a string).\r\n *\r\n * @return {undefined}\r\n */\r\n setting: function (name, key, value) {\r\n\r\n if (name === 'notifier') {\r\n return notifier.setting(key, value);\r\n }\r\n\r\n var dialog = get_dialog(name);\r\n if (dialog) {\r\n return dialog.setting(key, value);\r\n }\r\n },\r\n /**\r\n * [Alias] Sets dialog settings/options \r\n */\r\n set: function(name,key,value){\r\n return this.setting(name, key,value);\r\n },\r\n /**\r\n * [Alias] Gets dialog settings/options \r\n */\r\n get: function(name, key){\r\n return this.setting(name, key);\r\n },\r\n /**\r\n * Creates a new notification message.\r\n * If a type is passed, a class name \"ajs-{type}\" will be added.\r\n * This allows for custom look and feel for various types of notifications.\r\n *\r\n * @param {String | DOMElement} [message=undefined]\t\tMessage text\r\n * @param {String} [type='']\t\t\t\tType of log message\r\n * @param {String} [wait='']\t\t\t\tTime (in seconds) to wait before auto-close\r\n * @param {Function} [callback=undefined]\tA callback function to be invoked when the log is closed.\r\n *\r\n * @return {Object} Notification object.\r\n */\r\n notify: function (message, type, wait, callback) {\r\n return notifier.create(type, callback).push(message, wait);\r\n },\r\n /**\r\n * Creates a new notification message.\r\n *\r\n * @param {String}\t\t[message=undefined]\t\tMessage text\r\n * @param {String} [wait='']\t\t\t\tTime (in seconds) to wait before auto-close\r\n * @param {Function}\t[callback=undefined]\tA callback function to be invoked when the log is closed.\r\n *\r\n * @return {Object} Notification object.\r\n */\r\n message: function (message, wait, callback) {\r\n return notifier.create(null, callback).push(message, wait);\r\n },\r\n /**\r\n * Creates a new notification message of type 'success'.\r\n *\r\n * @param {String}\t\t[message=undefined]\t\tMessage text\r\n * @param {String} [wait='']\t\t\t\tTime (in seconds) to wait before auto-close\r\n * @param {Function}\t[callback=undefined]\tA callback function to be invoked when the log is closed.\r\n *\r\n * @return {Object} Notification object.\r\n */\r\n success: function (message, wait, callback) {\r\n return notifier.create('success', callback).push(message, wait);\r\n },\r\n /**\r\n * Creates a new notification message of type 'error'.\r\n *\r\n * @param {String}\t\t[message=undefined]\t\tMessage text\r\n * @param {String} [wait='']\t\t\t\tTime (in seconds) to wait before auto-close\r\n * @param {Function}\t[callback=undefined]\tA callback function to be invoked when the log is closed.\r\n *\r\n * @return {Object} Notification object.\r\n */\r\n error: function (message, wait, callback) {\r\n return notifier.create('error', callback).push(message, wait);\r\n },\r\n /**\r\n * Creates a new notification message of type 'warning'.\r\n *\r\n * @param {String}\t\t[message=undefined]\t\tMessage text\r\n * @param {String} [wait='']\t\t\t\tTime (in seconds) to wait before auto-close\r\n * @param {Function}\t[callback=undefined]\tA callback function to be invoked when the log is closed.\r\n *\r\n * @return {Object} Notification object.\r\n */\r\n warning: function (message, wait, callback) {\r\n return notifier.create('warning', callback).push(message, wait);\r\n },\r\n /**\r\n * Dismisses all open notifications\r\n *\r\n * @return {undefined}\r\n */\r\n dismissAll: function () {\r\n notifier.dismissAll();\r\n }\r\n };\r\n }\r\n var alertify = new Alertify();\r\n\r\n /**\r\n * Alert dialog definition\r\n *\r\n * invoked by:\r\n *\talertify.alert(message);\r\n *\talertify.alert(title, message);\r\n *\talertify.alert(message, onok);\r\n *\talertify.alert(title, message, onok);\r\n */\r\n alertify.dialog('alert', function () {\r\n return {\r\n main: function (_title, _message, _onok) {\r\n var title, message, onok;\r\n switch (arguments.length) {\r\n case 1:\r\n message = _title;\r\n break;\r\n case 2:\r\n if (typeof _message === 'function') {\r\n message = _title;\r\n onok = _message;\r\n } else {\r\n title = _title;\r\n message = _message;\r\n }\r\n break;\r\n case 3:\r\n title = _title;\r\n message = _message;\r\n onok = _onok;\r\n break;\r\n }\r\n this.set('title', title);\r\n this.set('message', message);\r\n this.set('onok', onok);\r\n return this;\r\n },\r\n setup: function () {\r\n return {\r\n buttons: [\r\n {\r\n text: alertify.defaults.glossary.ok,\r\n key: keys.ESC,\r\n invokeOnClose: true,\r\n className: alertify.defaults.theme.ok,\r\n }\r\n ],\r\n focus: {\r\n element: 0,\r\n select: false\r\n },\r\n options: {\r\n maximizable: false,\r\n resizable: false\r\n }\r\n };\r\n },\r\n build: function () {\r\n // nothing\r\n },\r\n prepare: function () {\r\n //nothing\r\n },\r\n setMessage: function (message) {\r\n this.setContent(message);\r\n },\r\n settings: {\r\n message: undefined,\r\n onok: undefined,\r\n label: undefined,\r\n },\r\n settingUpdated: function (key, oldValue, newValue) {\r\n switch (key) {\r\n case 'message':\r\n this.setMessage(newValue);\r\n break;\r\n case 'label':\r\n if (this.__internal.buttons[0].element) {\r\n this.__internal.buttons[0].element.innerHTML = newValue;\r\n }\r\n break;\r\n }\r\n },\r\n callback: function (closeEvent) {\r\n if (typeof this.get('onok') === 'function') {\r\n var returnValue = this.get('onok').call(this, closeEvent);\r\n if (typeof returnValue !== 'undefined') {\r\n closeEvent.cancel = !returnValue;\r\n }\r\n }\r\n }\r\n };\r\n });\r\n /**\r\n * Confirm dialog object\r\n *\r\n *\talertify.confirm(message);\r\n *\talertify.confirm(message, onok);\r\n *\talertify.confirm(message, onok, oncancel);\r\n *\talertify.confirm(title, message, onok, oncancel);\r\n */\r\n alertify.dialog('confirm', function () {\r\n\r\n var autoConfirm = {\r\n timer: null,\r\n index: null,\r\n text: null,\r\n duration: null,\r\n task: function (event, self) {\r\n if (self.isOpen()) {\r\n self.__internal.buttons[autoConfirm.index].element.innerHTML = autoConfirm.text + ' (‏' + autoConfirm.duration + '‏) ';\r\n autoConfirm.duration -= 1;\r\n if (autoConfirm.duration === -1) {\r\n clearAutoConfirm(self);\r\n var button = self.__internal.buttons[autoConfirm.index];\r\n var closeEvent = createCloseEvent(autoConfirm.index, button);\r\n\r\n if (typeof self.callback === 'function') {\r\n self.callback.apply(self, [closeEvent]);\r\n }\r\n //close the dialog.\r\n if (closeEvent.close !== false) {\r\n self.close();\r\n }\r\n }\r\n } else {\r\n clearAutoConfirm(self);\r\n }\r\n }\r\n };\r\n\r\n function clearAutoConfirm(self) {\r\n if (autoConfirm.timer !== null) {\r\n clearInterval(autoConfirm.timer);\r\n autoConfirm.timer = null;\r\n self.__internal.buttons[autoConfirm.index].element.innerHTML = autoConfirm.text;\r\n }\r\n }\r\n\r\n function startAutoConfirm(self, index, duration) {\r\n clearAutoConfirm(self);\r\n autoConfirm.duration = duration;\r\n autoConfirm.index = index;\r\n autoConfirm.text = self.__internal.buttons[index].element.innerHTML;\r\n autoConfirm.timer = setInterval(delegate(self, autoConfirm.task), 1000);\r\n autoConfirm.task(null, self);\r\n }\r\n\r\n\r\n return {\r\n main: function (_title, _message, _onok, _oncancel) {\r\n var title, message, onok, oncancel;\r\n switch (arguments.length) {\r\n case 1:\r\n message = _title;\r\n break;\r\n case 2:\r\n message = _title;\r\n onok = _message;\r\n break;\r\n case 3:\r\n message = _title;\r\n onok = _message;\r\n oncancel = _onok;\r\n break;\r\n case 4:\r\n title = _title;\r\n message = _message;\r\n onok = _onok;\r\n oncancel = _oncancel;\r\n break;\r\n }\r\n this.set('title', title);\r\n this.set('message', message);\r\n this.set('onok', onok);\r\n this.set('oncancel', oncancel);\r\n return this;\r\n },\r\n setup: function () {\r\n return {\r\n buttons: [\r\n {\r\n text: alertify.defaults.glossary.ok,\r\n key: keys.ENTER,\r\n className: alertify.defaults.theme.ok,\r\n },\r\n {\r\n text: alertify.defaults.glossary.cancel,\r\n key: keys.ESC,\r\n invokeOnClose: true,\r\n className: alertify.defaults.theme.cancel,\r\n }\r\n ],\r\n focus: {\r\n element: 0,\r\n select: false\r\n },\r\n options: {\r\n maximizable: false,\r\n resizable: false\r\n }\r\n };\r\n },\r\n build: function () {\r\n //nothing\r\n },\r\n prepare: function () {\r\n //nothing\r\n },\r\n setMessage: function (message) {\r\n this.setContent(message);\r\n },\r\n settings: {\r\n message: null,\r\n labels: null,\r\n onok: null,\r\n oncancel: null,\r\n defaultFocus: null,\r\n reverseButtons: null,\r\n },\r\n settingUpdated: function (key, oldValue, newValue) {\r\n switch (key) {\r\n case 'message':\r\n this.setMessage(newValue);\r\n break;\r\n case 'labels':\r\n if ('ok' in newValue && this.__internal.buttons[0].element) {\r\n this.__internal.buttons[0].text = newValue.ok;\r\n this.__internal.buttons[0].element.innerHTML = newValue.ok;\r\n }\r\n if ('cancel' in newValue && this.__internal.buttons[1].element) {\r\n this.__internal.buttons[1].text = newValue.cancel;\r\n this.__internal.buttons[1].element.innerHTML = newValue.cancel;\r\n }\r\n break;\r\n case 'reverseButtons':\r\n if (newValue === true) {\r\n this.elements.buttons.primary.appendChild(this.__internal.buttons[0].element);\r\n } else {\r\n this.elements.buttons.primary.appendChild(this.__internal.buttons[1].element);\r\n }\r\n break;\r\n case 'defaultFocus':\r\n this.__internal.focus.element = newValue === 'ok' ? 0 : 1;\r\n break;\r\n }\r\n },\r\n callback: function (closeEvent) {\r\n clearAutoConfirm(this);\r\n var returnValue;\r\n switch (closeEvent.index) {\r\n case 0:\r\n if (typeof this.get('onok') === 'function') {\r\n returnValue = this.get('onok').call(this, closeEvent);\r\n if (typeof returnValue !== 'undefined') {\r\n closeEvent.cancel = !returnValue;\r\n }\r\n }\r\n break;\r\n case 1:\r\n if (typeof this.get('oncancel') === 'function') {\r\n returnValue = this.get('oncancel').call(this, closeEvent);\r\n if (typeof returnValue !== 'undefined') {\r\n closeEvent.cancel = !returnValue;\r\n }\r\n }\r\n break;\r\n }\r\n },\r\n autoOk: function (duration) {\r\n startAutoConfirm(this, 0, duration);\r\n return this;\r\n },\r\n autoCancel: function (duration) {\r\n startAutoConfirm(this, 1, duration);\r\n return this;\r\n }\r\n };\r\n });\r\n /**\r\n * Prompt dialog object\r\n *\r\n * invoked by:\r\n *\talertify.prompt(message);\r\n *\talertify.prompt(message, value);\r\n *\talertify.prompt(message, value, onok);\r\n *\talertify.prompt(message, value, onok, oncancel);\r\n *\talertify.prompt(title, message, value, onok, oncancel);\r\n */\r\n alertify.dialog('prompt', function () {\r\n var input = document.createElement('INPUT');\r\n var p = document.createElement('P');\r\n return {\r\n main: function (_title, _message, _value, _onok, _oncancel) {\r\n var title, message, value, onok, oncancel;\r\n switch (arguments.length) {\r\n case 1:\r\n message = _title;\r\n break;\r\n case 2:\r\n message = _title;\r\n value = _message;\r\n break;\r\n case 3:\r\n message = _title;\r\n value = _message;\r\n onok = _value;\r\n break;\r\n case 4:\r\n message = _title;\r\n value = _message;\r\n onok = _value;\r\n oncancel = _onok;\r\n break;\r\n case 5:\r\n title = _title;\r\n message = _message;\r\n value = _value;\r\n onok = _onok;\r\n oncancel = _oncancel;\r\n break;\r\n }\r\n this.set('title', title);\r\n this.set('message', message);\r\n this.set('value', value);\r\n this.set('onok', onok);\r\n this.set('oncancel', oncancel);\r\n return this;\r\n },\r\n setup: function () {\r\n return {\r\n buttons: [\r\n {\r\n text: alertify.defaults.glossary.ok,\r\n key: keys.ENTER,\r\n className: alertify.defaults.theme.ok,\r\n },\r\n {\r\n text: alertify.defaults.glossary.cancel,\r\n key: keys.ESC,\r\n invokeOnClose: true,\r\n className: alertify.defaults.theme.cancel,\r\n }\r\n ],\r\n focus: {\r\n element: input,\r\n select: true\r\n },\r\n options: {\r\n maximizable: false,\r\n resizable: false\r\n }\r\n };\r\n },\r\n build: function () {\r\n input.className = alertify.defaults.theme.input;\r\n input.setAttribute('type', 'text');\r\n input.value = this.get('value');\r\n this.elements.content.appendChild(p);\r\n this.elements.content.appendChild(input);\r\n },\r\n prepare: function () {\r\n //nothing\r\n },\r\n setMessage: function (message) {\r\n if (typeof message === 'string') {\r\n clearContents(p);\r\n p.innerHTML = message;\r\n } else if (message instanceof window.HTMLElement && p.firstChild !== message) {\r\n clearContents(p);\r\n p.appendChild(message);\r\n }\r\n },\r\n settings: {\r\n message: undefined,\r\n labels: undefined,\r\n onok: undefined,\r\n oncancel: undefined,\r\n value: '',\r\n type:'text',\r\n reverseButtons: undefined,\r\n },\r\n settingUpdated: function (key, oldValue, newValue) {\r\n switch (key) {\r\n case 'message':\r\n this.setMessage(newValue);\r\n break;\r\n case 'value':\r\n input.value = newValue;\r\n break;\r\n case 'type':\r\n switch (newValue) {\r\n case 'text':\r\n case 'color':\r\n case 'date':\r\n case 'datetime-local':\r\n case 'email':\r\n case 'month':\r\n case 'number':\r\n case 'password':\r\n case 'search':\r\n case 'tel':\r\n case 'time':\r\n case 'week':\r\n input.type = newValue;\r\n break;\r\n default:\r\n input.type = 'text';\r\n break;\r\n }\r\n break;\r\n case 'labels':\r\n if (newValue.ok && this.__internal.buttons[0].element) {\r\n this.__internal.buttons[0].element.innerHTML = newValue.ok;\r\n }\r\n if (newValue.cancel && this.__internal.buttons[1].element) {\r\n this.__internal.buttons[1].element.innerHTML = newValue.cancel;\r\n }\r\n break;\r\n case 'reverseButtons':\r\n if (newValue === true) {\r\n this.elements.buttons.primary.appendChild(this.__internal.buttons[0].element);\r\n } else {\r\n this.elements.buttons.primary.appendChild(this.__internal.buttons[1].element);\r\n }\r\n break;\r\n }\r\n },\r\n callback: function (closeEvent) {\r\n var returnValue;\r\n switch (closeEvent.index) {\r\n case 0:\r\n this.settings.value = input.value;\r\n if (typeof this.get('onok') === 'function') {\r\n returnValue = this.get('onok').call(this, closeEvent, this.settings.value);\r\n if (typeof returnValue !== 'undefined') {\r\n closeEvent.cancel = !returnValue;\r\n }\r\n }\r\n break;\r\n case 1:\r\n if (typeof this.get('oncancel') === 'function') {\r\n returnValue = this.get('oncancel').call(this, closeEvent);\r\n if (typeof returnValue !== 'undefined') {\r\n closeEvent.cancel = !returnValue;\r\n }\r\n }\r\n if(!closeEvent.cancel){\r\n input.value = this.settings.value;\r\n }\r\n break;\r\n }\r\n }\r\n };\r\n });\r\n\r\n // CommonJS\r\n if ( typeof module === 'object' && typeof module.exports === 'object' ) {\r\n module.exports = alertify;\r\n // AMD\r\n } else if ( typeof define === 'function' && define.amd) {\r\n define( [], function () {\r\n return alertify;\r\n } );\r\n // window\r\n } else if ( !window.alertify ) {\r\n window.alertify = alertify;\r\n }\r\n\r\n} ( typeof window !== 'undefined' ? window : this ) );\r\n","\"use strict\";\r\n/* angular2-moment (c) 2015, 2016 Uri Shaked / MIT Licence */\r\nvar __decorate = (this && this.__decorate) || function (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\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar core_1 = require(\"@angular/core\");\r\nvar moment = require(\"moment\");\r\nvar AddPipe = /** @class */ (function () {\r\n function AddPipe() {\r\n }\r\n AddPipe.prototype.transform = function (value, amount, unit) {\r\n if (typeof amount === 'undefined' || (typeof amount === 'number' && typeof unit === 'undefined')) {\r\n throw new Error('AddPipe: missing required arguments');\r\n }\r\n return moment(value).add(amount, unit);\r\n };\r\n AddPipe = __decorate([\r\n core_1.Pipe({ name: 'amAdd' })\r\n ], AddPipe);\r\n return AddPipe;\r\n}());\r\nexports.AddPipe = AddPipe;\r\n//# sourceMappingURL=add.pipe.js.map","\"use strict\";\r\n/* angular2-moment (c) 2015, 2016 Uri Shaked / MIT Licence */\r\nvar __decorate = (this && this.__decorate) || function (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\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar core_1 = require(\"@angular/core\");\r\nvar moment = require(\"moment\");\r\n// under systemjs, moment is actually exported as the default export, so we account for that\r\nvar momentConstructor = moment.default || moment;\r\nvar CalendarPipe = /** @class */ (function () {\r\n function CalendarPipe(cdRef, ngZone) {\r\n var _this = this;\r\n this.cdRef = cdRef;\r\n this.ngZone = ngZone;\r\n // using a single static timer for all instances of this pipe for performance reasons\r\n CalendarPipe_1.initTimer(ngZone);\r\n CalendarPipe_1.refs++;\r\n // values such as Today will need to be replaced with Yesterday after midnight,\r\n // so make sure we subscribe to an EventEmitter that we set up to emit at midnight\r\n this.midnightSub = CalendarPipe_1.midnight.subscribe(function () {\r\n _this.ngZone.run(function () { return _this.cdRef.markForCheck(); });\r\n });\r\n }\r\n CalendarPipe_1 = CalendarPipe;\r\n CalendarPipe.prototype.transform = function (value) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n var formats = null;\r\n var referenceTime = null;\r\n for (var i = 0, len = args.length; i < len; i++) {\r\n if (args[i] !== null) {\r\n if (typeof args[i] === 'object' && !moment.isMoment(args[i])) {\r\n formats = args[i];\r\n }\r\n else {\r\n referenceTime = momentConstructor(args[i]);\r\n }\r\n }\r\n }\r\n return momentConstructor(value).calendar(referenceTime, formats);\r\n };\r\n CalendarPipe.prototype.ngOnDestroy = function () {\r\n if (CalendarPipe_1.refs > 0) {\r\n CalendarPipe_1.refs--;\r\n }\r\n if (CalendarPipe_1.refs === 0) {\r\n CalendarPipe_1.removeTimer();\r\n }\r\n this.midnightSub.unsubscribe();\r\n };\r\n CalendarPipe.initTimer = function (ngZone) {\r\n // initialize the timer\r\n if (!CalendarPipe_1.midnight) {\r\n CalendarPipe_1.midnight = new core_1.EventEmitter();\r\n if (typeof window !== 'undefined') {\r\n var timeToUpdate_1 = CalendarPipe_1._getMillisecondsUntilUpdate();\r\n CalendarPipe_1.timer = ngZone.runOutsideAngular(function () {\r\n return window.setTimeout(function () {\r\n // emit the current date\r\n CalendarPipe_1.midnight.emit(new Date());\r\n // refresh the timer\r\n CalendarPipe_1.removeTimer();\r\n CalendarPipe_1.initTimer(ngZone);\r\n }, timeToUpdate_1);\r\n });\r\n }\r\n }\r\n };\r\n CalendarPipe.removeTimer = function () {\r\n if (CalendarPipe_1.timer) {\r\n window.clearTimeout(CalendarPipe_1.timer);\r\n CalendarPipe_1.timer = null;\r\n CalendarPipe_1.midnight = null;\r\n }\r\n };\r\n CalendarPipe._getMillisecondsUntilUpdate = function () {\r\n var now = momentConstructor();\r\n var tomorrow = momentConstructor().startOf('day').add(1, 'days');\r\n var timeToMidnight = tomorrow.valueOf() - now.valueOf();\r\n return timeToMidnight + 1000; // 1 second after midnight\r\n };\r\n /**\r\n * @private Internal reference counter, so we can clean up when no instances are in use\r\n * @type {number}\r\n */\r\n CalendarPipe.refs = 0;\r\n CalendarPipe = CalendarPipe_1 = __decorate([\r\n core_1.Pipe({ name: 'amCalendar', pure: false }),\r\n __metadata(\"design:paramtypes\", [core_1.ChangeDetectorRef, core_1.NgZone])\r\n ], CalendarPipe);\r\n return CalendarPipe;\r\n var CalendarPipe_1;\r\n}());\r\nexports.CalendarPipe = CalendarPipe;\r\n//# sourceMappingURL=calendar.pipe.js.map","\"use strict\";\r\n/* angular2-moment (c) 2015, 2016 Uri Shaked / MIT Licence */\r\nvar __decorate = (this && this.__decorate) || function (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\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar core_1 = require(\"@angular/core\");\r\nvar moment = require(\"moment\");\r\n// under systemjs, moment is actually exported as the default export, so we account for that\r\nvar momentConstructor = moment.default || moment;\r\nvar DateFormatPipe = /** @class */ (function () {\r\n function DateFormatPipe() {\r\n }\r\n DateFormatPipe.prototype.transform = function (value) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n if (!value)\r\n return '';\r\n return momentConstructor(value).format(args[0]);\r\n };\r\n DateFormatPipe = __decorate([\r\n core_1.Pipe({ name: 'amDateFormat' })\r\n ], DateFormatPipe);\r\n return DateFormatPipe;\r\n}());\r\nexports.DateFormatPipe = DateFormatPipe;\r\n//# sourceMappingURL=date-format.pipe.js.map","\"use strict\";\r\n/* angular2-moment (c) 2015, 2016 Uri Shaked / MIT Licence */\r\nvar __decorate = (this && this.__decorate) || function (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\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar core_1 = require(\"@angular/core\");\r\nvar moment = require(\"moment\");\r\n// under systemjs, moment is actually exported as the default export, so we account for that\r\nvar momentConstructor = moment.default || moment;\r\nvar DifferencePipe = /** @class */ (function () {\r\n function DifferencePipe() {\r\n }\r\n DifferencePipe.prototype.transform = function (value, otherValue, unit, precision) {\r\n var date = momentConstructor(value);\r\n var date2 = (otherValue !== null) ? momentConstructor(otherValue) : momentConstructor();\r\n return date.diff(date2, unit, precision);\r\n };\r\n DifferencePipe = __decorate([\r\n core_1.Pipe({ name: 'amDifference' })\r\n ], DifferencePipe);\r\n return DifferencePipe;\r\n}());\r\nexports.DifferencePipe = DifferencePipe;\r\n//# sourceMappingURL=difference.pipe.js.map","\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (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\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar core_1 = require(\"@angular/core\");\r\nvar moment = require(\"moment\");\r\nvar DurationPipe = /** @class */ (function () {\r\n function DurationPipe() {\r\n }\r\n DurationPipe.prototype.transform = function (value) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n if (typeof args === 'undefined' || args.length !== 1) {\r\n throw new Error('DurationPipe: missing required time unit argument');\r\n }\r\n return moment.duration(value, args[0]).humanize();\r\n };\r\n DurationPipe = __decorate([\r\n core_1.Pipe({ name: 'amDuration' })\r\n ], DurationPipe);\r\n return DurationPipe;\r\n}());\r\nexports.DurationPipe = DurationPipe;\r\n//# sourceMappingURL=duration.pipe.js.map","\"use strict\";\r\n/* angular2-moment (c) 2015, 2016 Uri Shaked / MIT Licence */\r\nvar __decorate = (this && this.__decorate) || function (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\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar core_1 = require(\"@angular/core\");\r\nvar moment = require(\"moment\");\r\nvar FromUnixPipe = /** @class */ (function () {\r\n function FromUnixPipe() {\r\n }\r\n FromUnixPipe.prototype.transform = function (value) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n if (typeof value === 'string') {\r\n value = +value;\r\n }\r\n return moment.unix(value);\r\n };\r\n FromUnixPipe = __decorate([\r\n core_1.Pipe({ name: 'amFromUnix' })\r\n ], FromUnixPipe);\r\n return FromUnixPipe;\r\n}());\r\nexports.FromUnixPipe = FromUnixPipe;\r\n//# sourceMappingURL=from-unix.pipe.js.map","\"use strict\";\r\n/* angular2-moment (c) 2015, 2016 Uri Shaked / MIT Licence */\r\nvar __decorate = (this && this.__decorate) || function (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\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar core_1 = require(\"@angular/core\");\r\nvar moment = require(\"moment\");\r\nvar FromUtcPipe = /** @class */ (function () {\r\n function FromUtcPipe() {\r\n }\r\n FromUtcPipe.prototype.transform = function (value) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n return moment.utc(value);\r\n };\r\n FromUtcPipe = __decorate([\r\n core_1.Pipe({ name: 'amFromUtc' })\r\n ], FromUtcPipe);\r\n return FromUtcPipe;\r\n}());\r\nexports.FromUtcPipe = FromUtcPipe;\r\n//# sourceMappingURL=from-utc.pipe.js.map","\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (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\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar core_1 = require(\"@angular/core\");\r\nvar moment = require(\"moment\");\r\n// under systemjs, moment is actually exported as the default export, so we account for that\r\nvar momentConstructor = moment.default || moment;\r\nvar LocalTimePipe = /** @class */ (function () {\r\n function LocalTimePipe() {\r\n }\r\n LocalTimePipe.prototype.transform = function (value) {\r\n return moment(value).local();\r\n };\r\n LocalTimePipe = __decorate([\r\n core_1.Pipe({ name: 'amLocal' })\r\n ], LocalTimePipe);\r\n return LocalTimePipe;\r\n}());\r\nexports.LocalTimePipe = LocalTimePipe;\r\n//# sourceMappingURL=local.pipe.js.map","\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (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\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar core_1 = require(\"@angular/core\");\r\nvar moment = require(\"moment\");\r\n// under systemjs, moment is actually exported as the default export, so we account for that\r\nvar momentConstructor = moment.default || moment;\r\nvar LocalePipe = /** @class */ (function () {\r\n function LocalePipe() {\r\n }\r\n LocalePipe.prototype.transform = function (value, locale) {\r\n return moment(value).locale(locale);\r\n };\r\n LocalePipe = __decorate([\r\n core_1.Pipe({ name: 'amLocale' })\r\n ], LocalePipe);\r\n return LocalePipe;\r\n}());\r\nexports.LocalePipe = LocalePipe;\r\n//# sourceMappingURL=locale.pipe.js.map","\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (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\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar core_1 = require(\"@angular/core\");\r\nvar add_pipe_1 = require(\"./add.pipe\");\r\nvar calendar_pipe_1 = require(\"./calendar.pipe\");\r\nvar date_format_pipe_1 = require(\"./date-format.pipe\");\r\nvar difference_pipe_1 = require(\"./difference.pipe\");\r\nvar duration_pipe_1 = require(\"./duration.pipe\");\r\nvar from_unix_pipe_1 = require(\"./from-unix.pipe\");\r\nvar parse_pipe_1 = require(\"./parse.pipe\");\r\nvar subtract_pipe_1 = require(\"./subtract.pipe\");\r\nvar time_ago_pipe_1 = require(\"./time-ago.pipe\");\r\nvar utc_pipe_1 = require(\"./utc.pipe\");\r\nvar from_utc_pipe_1 = require(\"./from-utc.pipe\");\r\nvar local_pipe_1 = require(\"./local.pipe\");\r\nvar locale_pipe_1 = require(\"./locale.pipe\");\r\nvar ANGULAR_MOMENT_PIPES = [\r\n add_pipe_1.AddPipe,\r\n calendar_pipe_1.CalendarPipe,\r\n date_format_pipe_1.DateFormatPipe,\r\n difference_pipe_1.DifferencePipe,\r\n duration_pipe_1.DurationPipe,\r\n from_unix_pipe_1.FromUnixPipe,\r\n parse_pipe_1.ParsePipe,\r\n subtract_pipe_1.SubtractPipe,\r\n time_ago_pipe_1.TimeAgoPipe,\r\n utc_pipe_1.UtcPipe,\r\n from_utc_pipe_1.FromUtcPipe,\r\n local_pipe_1.LocalTimePipe,\r\n locale_pipe_1.LocalePipe\r\n];\r\nvar MomentModule = /** @class */ (function () {\r\n function MomentModule() {\r\n }\r\n MomentModule = __decorate([\r\n core_1.NgModule({\r\n declarations: ANGULAR_MOMENT_PIPES,\r\n exports: ANGULAR_MOMENT_PIPES\r\n })\r\n ], MomentModule);\r\n return MomentModule;\r\n}());\r\nexports.MomentModule = MomentModule;\r\n//# sourceMappingURL=moment.module.js.map","\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (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\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar core_1 = require(\"@angular/core\");\r\nvar moment = require(\"moment\");\r\n// under systemjs, moment is actually exported as the default export, so we account for that\r\nvar momentConstructor = moment.default || moment;\r\nvar ParsePipe = /** @class */ (function () {\r\n function ParsePipe() {\r\n }\r\n ParsePipe.prototype.transform = function (value, format) {\r\n return moment(value, format);\r\n };\r\n ParsePipe = __decorate([\r\n core_1.Pipe({ name: 'amParse' })\r\n ], ParsePipe);\r\n return ParsePipe;\r\n}());\r\nexports.ParsePipe = ParsePipe;\r\n//# sourceMappingURL=parse.pipe.js.map","\"use strict\";\r\n/* angular2-moment (c) 2015, 2016 Uri Shaked / MIT Licence */\r\nvar __decorate = (this && this.__decorate) || function (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\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar core_1 = require(\"@angular/core\");\r\nvar moment = require(\"moment\");\r\nvar SubtractPipe = /** @class */ (function () {\r\n function SubtractPipe() {\r\n }\r\n SubtractPipe.prototype.transform = function (value, amount, unit) {\r\n if (typeof amount === 'undefined' || (typeof amount === 'number' && typeof unit === 'undefined')) {\r\n throw new Error('SubtractPipe: missing required arguments');\r\n }\r\n return moment(value).subtract(amount, unit);\r\n };\r\n SubtractPipe = __decorate([\r\n core_1.Pipe({ name: 'amSubtract' })\r\n ], SubtractPipe);\r\n return SubtractPipe;\r\n}());\r\nexports.SubtractPipe = SubtractPipe;\r\n//# sourceMappingURL=subtract.pipe.js.map","\"use strict\";\r\n/* angular2-moment (c) 2015, 2016 Uri Shaked / MIT Licence */\r\nvar __decorate = (this && this.__decorate) || function (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\nvar __metadata = (this && this.__metadata) || function (k, v) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar core_1 = require(\"@angular/core\");\r\nvar moment = require(\"moment\");\r\n// under systemjs, moment is actually exported as the default export, so we account for that\r\nvar momentConstructor = moment.default || moment;\r\nvar TimeAgoPipe = /** @class */ (function () {\r\n function TimeAgoPipe(cdRef, ngZone) {\r\n this.cdRef = cdRef;\r\n this.ngZone = ngZone;\r\n }\r\n TimeAgoPipe.prototype.transform = function (value, omitSuffix) {\r\n if (this.hasChanged(value, omitSuffix)) {\r\n this.lastTime = this.getTime(value);\r\n this.lastValue = value;\r\n this.lastOmitSuffix = omitSuffix;\r\n this.lastLocale = this.getLocale(value);\r\n this.removeTimer();\r\n this.createTimer();\r\n this.lastText = momentConstructor(value).from(momentConstructor(), omitSuffix);\r\n }\r\n else {\r\n this.createTimer();\r\n }\r\n return this.lastText;\r\n };\r\n TimeAgoPipe.prototype.ngOnDestroy = function () {\r\n this.removeTimer();\r\n };\r\n TimeAgoPipe.prototype.createTimer = function () {\r\n var _this = this;\r\n if (this.currentTimer) {\r\n return;\r\n }\r\n var momentInstance = momentConstructor(this.lastValue);\r\n var timeToUpdate = this.getSecondsUntilUpdate(momentInstance) * 1000;\r\n this.currentTimer = this.ngZone.runOutsideAngular(function () {\r\n if (typeof window !== 'undefined') {\r\n return window.setTimeout(function () {\r\n _this.lastText = momentConstructor(_this.lastValue).from(momentConstructor(), _this.lastOmitSuffix);\r\n _this.currentTimer = null;\r\n _this.ngZone.run(function () { return _this.cdRef.markForCheck(); });\r\n }, timeToUpdate);\r\n }\r\n });\r\n };\r\n TimeAgoPipe.prototype.removeTimer = function () {\r\n if (this.currentTimer) {\r\n window.clearTimeout(this.currentTimer);\r\n this.currentTimer = null;\r\n }\r\n };\r\n TimeAgoPipe.prototype.getSecondsUntilUpdate = function (momentInstance) {\r\n var howOld = Math.abs(momentConstructor().diff(momentInstance, 'minute'));\r\n if (howOld < 1) {\r\n return 1;\r\n }\r\n else if (howOld < 60) {\r\n return 30;\r\n }\r\n else if (howOld < 180) {\r\n return 300;\r\n }\r\n else {\r\n return 3600;\r\n }\r\n };\r\n TimeAgoPipe.prototype.hasChanged = function (value, omitSuffix) {\r\n return this.getTime(value) !== this.lastTime\r\n || this.getLocale(value) !== this.lastLocale\r\n || omitSuffix !== this.lastOmitSuffix;\r\n };\r\n TimeAgoPipe.prototype.getTime = function (value) {\r\n if (moment.isDate(value)) {\r\n return value.getTime();\r\n }\r\n else if (moment.isMoment(value)) {\r\n return value.valueOf();\r\n }\r\n else {\r\n return momentConstructor(value).valueOf();\r\n }\r\n };\r\n TimeAgoPipe.prototype.getLocale = function (value) {\r\n return moment.isMoment(value) ? value.locale() : null;\r\n };\r\n TimeAgoPipe = __decorate([\r\n core_1.Pipe({ name: 'amTimeAgo', pure: false }),\r\n __metadata(\"design:paramtypes\", [core_1.ChangeDetectorRef, core_1.NgZone])\r\n ], TimeAgoPipe);\r\n return TimeAgoPipe;\r\n}());\r\nexports.TimeAgoPipe = TimeAgoPipe;\r\n//# sourceMappingURL=time-ago.pipe.js.map","\"use strict\";\r\nvar __decorate = (this && this.__decorate) || function (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\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar core_1 = require(\"@angular/core\");\r\nvar moment = require(\"moment\");\r\n// under systemjs, moment is actually exported as the default export, so we account for that\r\nvar momentConstructor = moment.default || moment;\r\nvar UtcPipe = /** @class */ (function () {\r\n function UtcPipe() {\r\n }\r\n UtcPipe.prototype.transform = function (value) {\r\n return moment(value).utc();\r\n };\r\n UtcPipe = __decorate([\r\n core_1.Pipe({ name: 'amUtc' })\r\n ], UtcPipe);\r\n return UtcPipe;\r\n}());\r\nexports.UtcPipe = UtcPipe;\r\n//# sourceMappingURL=utc.pipe.js.map","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar firebase = _interopDefault(require('@firebase/app'));\n\nvar name = \"firebase\";\nvar version = \"7.14.0\";\n\n/**\r\n * @license\r\n * Copyright 2018 Google Inc.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfirebase.registerVersion(name, version, 'app');\n\nmodule.exports = firebase;\n//# sourceMappingURL=index.cjs.js.map\n","import '@firebase/auth';\n//# sourceMappingURL=index.esm.js.map\n","import '@firebase/firestore';\n//# sourceMappingURL=index.esm.js.map\n","/*!\n* metismenujs - v1.1.0\n* MetisMenu with Vanilla-JS\n* https://github.com/onokumus/metismenujs#readme\n*\n* Made by Osman Nuri Okumus (https://github.com/onokumus)\n* Under MIT License\n*/\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.MetisMenu = factory());\n}(this, function () { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n\r\n 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 };\n\n var Default = {\n parentTrigger: \"li\",\n subMenu: \"ul\",\n toggle: true,\n triggerElement: \"a\"\n };\n var ClassName = {\n ACTIVE: \"mm-active\",\n COLLAPSE: \"mm-collapse\",\n COLLAPSED: \"mm-collapsed\",\n COLLAPSING: \"mm-collapsing\",\n METIS: \"metismenu\",\n SHOW: \"mm-show\"\n };\n\n var MetisMenu = /** @class */ (function () {\n /**\n * Creates an instance of MetisMenu.\n *\n * @constructor\n * @param {HTMLElement | string} element\n * @param {IMMOptions} [options]\n * @memberof MetisMenu\n */\n function MetisMenu(element, options) {\n this.element =\n typeof element === \"string\" ? document.querySelector(element) : element;\n this.cacheEl = this.element;\n this.config = __assign({}, Default, options);\n this.cacheConfig = this.config;\n this.disposed = false;\n this.ulArr = [];\n this.listenerOb = [];\n this.init();\n }\n MetisMenu.prototype.update = function () {\n this.disposed = false;\n this.element = this.cacheEl;\n this.config = this.cacheConfig;\n this.init();\n };\n MetisMenu.prototype.dispose = function () {\n for (var _i = 0, _a = this.listenerOb; _i < _a.length; _i++) {\n var lo = _a[_i];\n for (var key in lo) {\n if (lo.hasOwnProperty(key)) {\n var el = lo[key];\n el[1].removeEventListener(el[0], el[2]);\n }\n }\n }\n this.ulArr = [];\n this.listenerOb = [];\n this.config = null;\n this.element = null;\n this.disposed = true;\n };\n MetisMenu.prototype.on = function (event, fn) {\n this.element.addEventListener(event, fn, false);\n return this;\n };\n MetisMenu.prototype.off = function (event, fn) {\n this.element.removeEventListener(event, fn);\n return this;\n };\n MetisMenu.prototype.emit = function (event, eventDetail, shouldBubble) {\n if (shouldBubble === void 0) { shouldBubble = false; }\n var evt;\n if (typeof CustomEvent === \"function\") {\n evt = new CustomEvent(event, {\n bubbles: shouldBubble,\n detail: eventDetail\n });\n }\n else {\n evt = document.createEvent(\"CustomEvent\");\n evt.initCustomEvent(event, shouldBubble, false, eventDetail);\n }\n this.element.dispatchEvent(evt);\n return this;\n };\n MetisMenu.prototype.init = function () {\n this.element.classList.add(ClassName.METIS);\n this.ulArr = [].slice.call(this.element.querySelectorAll(this.config.subMenu));\n for (var _i = 0, _a = this.ulArr; _i < _a.length; _i++) {\n var ul = _a[_i];\n var li = ul.parentNode;\n ul.classList.add(ClassName.COLLAPSE);\n if (li.classList.contains(ClassName.ACTIVE)) {\n this.show(ul);\n }\n else {\n this.hide(ul);\n }\n var a = li.querySelector(this.config.triggerElement);\n if (a.getAttribute(\"aria-disabled\") === \"true\") {\n return;\n }\n a.setAttribute(\"aria-expanded\", \"false\");\n var listenerOb = {\n aClick: [\"click\", a, this.clickEvent.bind(this)]\n };\n for (var key in listenerOb) {\n if (listenerOb.hasOwnProperty(key)) {\n var listener = listenerOb[key];\n listener[1].addEventListener(listener[0], listener[2]);\n }\n }\n this.listenerOb.push(listenerOb);\n }\n };\n MetisMenu.prototype.clickEvent = function (ev) {\n if (!this.disposed) {\n if (ev.currentTarget.tagName === \"A\") {\n ev.preventDefault();\n }\n var li = ev.currentTarget.parentNode;\n var ul = li.querySelector(this.config.subMenu);\n this.toggle(ul);\n }\n };\n MetisMenu.prototype.toggle = function (ul) {\n if (ul.parentNode.classList.contains(ClassName.ACTIVE)) {\n this.hide(ul);\n }\n else {\n this.show(ul);\n }\n };\n MetisMenu.prototype.show = function (ul) {\n var _this = this;\n if (this.isTransitioning || ul.classList.contains(ClassName.COLLAPSING)) {\n return;\n }\n var complete = function () {\n ul.classList.remove(ClassName.COLLAPSING);\n ul.style.height = \"\";\n ul.removeEventListener(\"transitionend\", complete);\n _this.setTransitioning(false);\n _this.emit(\"shown.metisMenu\", {\n shownElement: ul\n });\n };\n var li = ul.parentNode;\n li.classList.add(ClassName.ACTIVE);\n var a = li.querySelector(this.config.triggerElement);\n a.setAttribute(\"aria-expanded\", \"true\");\n a.classList.remove(ClassName.COLLAPSED);\n ul.style.height = \"0px\";\n ul.classList.remove(ClassName.COLLAPSE);\n ul.classList.remove(ClassName.SHOW);\n ul.classList.add(ClassName.COLLAPSING);\n var eleParentSiblins = [].slice\n .call(li.parentNode.children)\n .filter(function (c) { return c !== li; });\n if (this.config.toggle && eleParentSiblins.length > 0) {\n for (var _i = 0, eleParentSiblins_1 = eleParentSiblins; _i < eleParentSiblins_1.length; _i++) {\n var sibli = eleParentSiblins_1[_i];\n var sibUl = sibli.querySelector(this.config.subMenu);\n if (sibUl !== null) {\n this.hide(sibUl);\n }\n }\n }\n this.setTransitioning(true);\n ul.classList.add(ClassName.COLLAPSE);\n ul.classList.add(ClassName.SHOW);\n ul.style.height = ul.scrollHeight + \"px\";\n this.emit(\"show.metisMenu\", {\n showElement: ul\n });\n ul.addEventListener(\"transitionend\", complete);\n };\n MetisMenu.prototype.hide = function (ul) {\n var _this = this;\n if (this.isTransitioning || !ul.classList.contains(ClassName.SHOW)) {\n return;\n }\n this.emit(\"hide.metisMenu\", {\n hideElement: ul\n });\n var li = ul.parentNode;\n li.classList.remove(ClassName.ACTIVE);\n var complete = function () {\n ul.classList.remove(ClassName.COLLAPSING);\n ul.classList.add(ClassName.COLLAPSE);\n ul.style.height = \"\";\n ul.removeEventListener(\"transitionend\", complete);\n _this.setTransitioning(false);\n _this.emit(\"hidden.metisMenu\", {\n hiddenElement: ul\n });\n };\n ul.style.height = ul.getBoundingClientRect().height + \"px\";\n ul.style.height = ul.offsetHeight + \"px\";\n ul.classList.add(ClassName.COLLAPSING);\n ul.classList.remove(ClassName.COLLAPSE);\n ul.classList.remove(ClassName.SHOW);\n this.setTransitioning(true);\n ul.addEventListener(\"transitionend\", complete);\n ul.style.height = \"0px\";\n var a = li.querySelector(this.config.triggerElement);\n a.setAttribute(\"aria-expanded\", \"false\");\n a.classList.add(ClassName.COLLAPSED);\n };\n MetisMenu.prototype.setTransitioning = function (isTransitioning) {\n this.isTransitioning = isTransitioning;\n };\n return MetisMenu;\n }());\n\n return MetisMenu;\n\n}));\n//# sourceMappingURL=metismenujs.js.map\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'جانفي',\n 'فيفري',\n 'مارس',\n 'أفريل',\n 'ماي',\n 'جوان',\n 'جويلية',\n 'أوت',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Lybia) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 0: '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'bir neçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n '_'\n ),\n standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split(\n '_'\n ),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-і'\n : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bg = moment.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n w: 'седмица',\n ww: '%d седмици',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bnBd = moment.defineLocale('bn-bd', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n\n meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'রাত') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ভোর') {\n return hour;\n } else if (meridiem === 'সকাল') {\n return hour;\n } else if (meridiem === 'দুপুর') {\n return hour >= 3 ? hour : hour + 12;\n } else if (meridiem === 'বিকাল') {\n return hour + 12;\n } else if (meridiem === 'সন্ধ্যা') {\n return hour + 12;\n }\n },\n\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 6) {\n return 'ভোর';\n } else if (hour < 12) {\n return 'সকাল';\n } else if (hour < 15) {\n return 'দুপুর';\n } else if (hour < 18) {\n return 'বিকাল';\n } else if (hour < 20) {\n return 'সন্ধ্যা';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bnBd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bn = moment.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠',\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[ʼ\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex = /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[ʼ\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse = [\n /^led/i,\n /^úno/i,\n /^bře/i,\n /^dub/i,\n /^kvě/i,\n /^(čvn|červen$|června)/i,\n /^(čvc|červenec|července)/i,\n /^srp/i,\n /^zář/i,\n /^říj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esMx = moment.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return esMx;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split(\n '_'\n ),\n weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '۱',\n 2: '۲',\n 3: '۳',\n 4: '۴',\n 5: '۵',\n 6: '۶',\n 7: '۷',\n 8: '۸',\n 9: '۹',\n 0: '۰',\n },\n numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0',\n };\n\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsStrictRegex = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [\n /^janv/i,\n /^févr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^août/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^déc/i,\n ];\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split(\n '_'\n );\n\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '૧',\n 2: '૨',\n 3: '૩',\n 4: '૪',\n 5: '૫',\n 6: '૬',\n 7: '૭',\n 8: '૮',\n 9: '૯',\n 0: '૦',\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var he = moment.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n '_'\n ),\n monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split(\n '_'\n ),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d: 'יום',\n dd: function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n },\n },\n meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n },\n });\n\n return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n },\n monthsParse = [\n /^जन/i,\n /^फ़र|फर/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सितं|सित/i,\n /^अक्टू/i,\n /^नव|नवं/i,\n /^दिसं|दिस/i,\n ],\n shortMonthsParse = [\n /^जन/i,\n /^फ़र/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सित/i,\n /^अक्टू/i,\n /^नव/i,\n /^दिस/i,\n ];\n\n var hi = moment.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n standalone: 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n '_'\n ),\n },\n monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split(\n '_'\n ),\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: shortMonthsParse,\n\n monthsRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsShortRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsStrictRegex: /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n monthsShortStrictRegex: /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt : https://github.com/passatgt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(\n ' '\n );\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort: 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ka = moment.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n '_'\n ),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n '_'\n ),\n isFormat: /(წინა|შემდეგ)/,\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function (\n $0,\n $1,\n $2\n ) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n });\n },\n past: function (s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი',\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '១',\n 2: '២',\n 3: '៣',\n 4: '៤',\n 5: '៥',\n 6: '៦',\n 7: '៧',\n 8: '៨',\n 9: '៩',\n 0: '០',\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '೧',\n 2: '೨',\n 3: '೩',\n 4: '೪',\n 5: '೫',\n 6: '೬',\n 7: '೭',\n 8: '೮',\n 9: '೯',\n 0: '೦',\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee \n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ko = moment.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n '_'\n ),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n },\n });\n\n return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n var ky = moment.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var lo = moment.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ',\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n },\n });\n\n return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n '_'\n ),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n '_'\n ),\n standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač : https://github.com/miodragnikac\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan : https://github.com/johnideal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n '_'\n ),\n monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'एक मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'एक तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'एक दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'एक महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'एक वर्ष';\n break;\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'एका मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'एका तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'एका दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'एका महिन्या';\n break;\n case 'MM':\n output = '%d महिन्यां';\n break;\n case 'y':\n output = 'एका वर्षा';\n break;\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दुपारी' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रात्री'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '၁',\n 2: '၂',\n 3: '၃',\n 4: '၄',\n 5: '၅',\n 6: '၆',\n 7: '၇',\n 8: '၈',\n 9: '၉',\n 0: '၀',\n },\n numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0',\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n w: 'en uke',\n ww: '%d uker',\n M: 'en måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n '_'\n ),\n monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n w: 'één week',\n ww: '%d weken',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n w: 'ei veke',\n ww: '%d veker',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '੧',\n 2: '੨',\n 3: '੩',\n 4: '੪',\n 5: '੫',\n 6: '੬',\n 7: '੭',\n 8: '੮',\n 9: '੯',\n 0: '੦',\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0',\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n '_'\n ),\n monthsParse = [\n /^sty/i,\n /^lut/i,\n /^mar/i,\n /^kwi/i,\n /^maj/i,\n /^cze/i,\n /^lip/i,\n /^sie/i,\n /^wrz/i,\n /^paź/i,\n /^lis/i,\n /^gru/i,\n ];\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'ww':\n return result + (plural(number) ? 'tygodnie' : 'tygodni');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split(\n '_'\n ),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n w: 'tydzień',\n ww: translate,\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida',\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n ww: 'săptămâni',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n w: 'o săptămână',\n ww: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n ww: 'неделя_недели_недель',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n w: 'неделя',\n ww: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split(\n '_'\n ),\n weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једне минуте'],\n mm: ['минут', 'минуте', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n dd: ['дан', 'дана', 'дана'],\n MM: ['месец', 'месеца', 'месеци'],\n yy: ['година', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'дан',\n dd: translator.translate,\n M: 'месец',\n MM: translator.translate,\n y: 'годину',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jedne minute'],\n mm: ['minut', 'minute', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mesec', 'meseca', 'meseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '௧',\n 2: '௨',\n 3: '௩',\n 4: '௪',\n 5: '௫',\n 6: '௬',\n 7: '௭',\n 8: '௮',\n 9: '௯',\n 0: '௦',\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n var tg = moment.defineLocale('tg', {\n months: {\n format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n '_'\n ),\n standalone: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n },\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Фардо соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол',\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var th = moment.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n '_'\n ),\n monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n w: '1 สัปดาห์',\n ww: '%d สัปดาห์',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\",\n };\n\n var tk = moment.defineLocale('tk', {\n months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n '_'\n ),\n weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n '_'\n ),\n standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uz = moment.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort: 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n w: 'một tuần',\n ww: '%d tuần',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var yo = moment.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d',\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhTw;\n\n})));\n","//! moment.js\n//! version : 2.29.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key;\n for (i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i;\n for (i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n matched,\n p1,\n p2,\n p3,\n p4\n ) {\n return p1 || p2 || p3 || p4;\n })\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n '_'\n ),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n input,\n array,\n config,\n token\n ) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n });\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@angular/core\");\nvar common_1 = require(\"@angular/common\");\nvar ClickOutsideDirective = (function () {\n function ClickOutsideDirective(_el, _ngZone, platformId) {\n this._el = _el;\n this._ngZone = _ngZone;\n this.platformId = platformId;\n this.clickOutsideEnabled = true;\n this.attachOutsideOnClick = false;\n this.delayClickOutsideInit = false;\n this.emitOnBlur = false;\n this.exclude = '';\n this.excludeBeforeClick = false;\n this.clickOutsideEvents = '';\n this.clickOutside = new core_1.EventEmitter();\n this._nodesExcluded = [];\n this._events = ['click'];\n this._initOnClickBody = this._initOnClickBody.bind(this);\n this._onClickBody = this._onClickBody.bind(this);\n this._onWindowBlur = this._onWindowBlur.bind(this);\n }\n ClickOutsideDirective.prototype.ngOnInit = function () {\n if (!common_1.isPlatformBrowser(this.platformId)) {\n return;\n }\n this._init();\n };\n ClickOutsideDirective.prototype.ngOnDestroy = function () {\n if (!common_1.isPlatformBrowser(this.platformId)) {\n return;\n }\n this._removeClickOutsideListener();\n this._removeAttachOutsideOnClickListener();\n this._removeWindowBlurListener();\n };\n ClickOutsideDirective.prototype.ngOnChanges = function (changes) {\n if (!common_1.isPlatformBrowser(this.platformId)) {\n return;\n }\n if (changes['attachOutsideOnClick'] || changes['exclude'] || changes['emitOnBlur']) {\n this._init();\n }\n };\n ClickOutsideDirective.prototype._init = function () {\n if (this.clickOutsideEvents !== '') {\n this._events = this.clickOutsideEvents.split(',').map(function (e) { return e.trim(); });\n }\n this._excludeCheck();\n if (this.attachOutsideOnClick) {\n this._initAttachOutsideOnClickListener();\n }\n else {\n this._initOnClickBody();\n }\n if (this.emitOnBlur) {\n this._initWindowBlurListener();\n }\n };\n ClickOutsideDirective.prototype._initOnClickBody = function () {\n if (this.delayClickOutsideInit) {\n setTimeout(this._initClickOutsideListener.bind(this));\n }\n else {\n this._initClickOutsideListener();\n }\n };\n ClickOutsideDirective.prototype._excludeCheck = function () {\n if (this.exclude) {\n try {\n var nodes = Array.from(document.querySelectorAll(this.exclude));\n if (nodes) {\n this._nodesExcluded = nodes;\n }\n }\n catch (err) {\n console.error('[ng-click-outside] Check your exclude selector syntax.', err);\n }\n }\n };\n ClickOutsideDirective.prototype._onClickBody = function (ev) {\n if (!this.clickOutsideEnabled) {\n return;\n }\n if (this.excludeBeforeClick) {\n this._excludeCheck();\n }\n if (!this._el.nativeElement.contains(ev.target) && !this._shouldExclude(ev.target)) {\n this._emit(ev);\n if (this.attachOutsideOnClick) {\n this._removeClickOutsideListener();\n }\n }\n };\n ClickOutsideDirective.prototype._onWindowBlur = function (ev) {\n var _this = this;\n setTimeout(function () {\n if (!document.hidden) {\n _this._emit(ev);\n }\n });\n };\n ClickOutsideDirective.prototype._emit = function (ev) {\n var _this = this;\n if (!this.clickOutsideEnabled) {\n return;\n }\n this._ngZone.run(function () { return _this.clickOutside.emit(ev); });\n };\n ClickOutsideDirective.prototype._shouldExclude = function (target) {\n for (var _i = 0, _a = this._nodesExcluded; _i < _a.length; _i++) {\n var excludedNode = _a[_i];\n if (excludedNode.contains(target)) {\n return true;\n }\n }\n return false;\n };\n ClickOutsideDirective.prototype._initClickOutsideListener = function () {\n var _this = this;\n this._ngZone.runOutsideAngular(function () {\n _this._events.forEach(function (e) { return document.addEventListener(e, _this._onClickBody); });\n });\n };\n ClickOutsideDirective.prototype._removeClickOutsideListener = function () {\n var _this = this;\n this._ngZone.runOutsideAngular(function () {\n _this._events.forEach(function (e) { return document.removeEventListener(e, _this._onClickBody); });\n });\n };\n ClickOutsideDirective.prototype._initAttachOutsideOnClickListener = function () {\n var _this = this;\n this._ngZone.runOutsideAngular(function () {\n _this._events.forEach(function (e) { return _this._el.nativeElement.addEventListener(e, _this._initOnClickBody); });\n });\n };\n ClickOutsideDirective.prototype._removeAttachOutsideOnClickListener = function () {\n var _this = this;\n this._ngZone.runOutsideAngular(function () {\n _this._events.forEach(function (e) { return _this._el.nativeElement.removeEventListener(e, _this._initOnClickBody); });\n });\n };\n ClickOutsideDirective.prototype._initWindowBlurListener = function () {\n var _this = this;\n this._ngZone.runOutsideAngular(function () {\n window.addEventListener('blur', _this._onWindowBlur);\n });\n };\n ClickOutsideDirective.prototype._removeWindowBlurListener = function () {\n var _this = this;\n this._ngZone.runOutsideAngular(function () {\n window.removeEventListener('blur', _this._onWindowBlur);\n });\n };\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", Boolean)\n ], ClickOutsideDirective.prototype, \"clickOutsideEnabled\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", Boolean)\n ], ClickOutsideDirective.prototype, \"attachOutsideOnClick\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", Boolean)\n ], ClickOutsideDirective.prototype, \"delayClickOutsideInit\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", Boolean)\n ], ClickOutsideDirective.prototype, \"emitOnBlur\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", String)\n ], ClickOutsideDirective.prototype, \"exclude\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", Boolean)\n ], ClickOutsideDirective.prototype, \"excludeBeforeClick\", void 0);\n __decorate([\n core_1.Input(),\n __metadata(\"design:type\", String)\n ], ClickOutsideDirective.prototype, \"clickOutsideEvents\", void 0);\n __decorate([\n core_1.Output(),\n __metadata(\"design:type\", core_1.EventEmitter)\n ], ClickOutsideDirective.prototype, \"clickOutside\", void 0);\n ClickOutsideDirective = __decorate([\n core_1.Injectable(),\n core_1.Directive({ selector: '[clickOutside]' }),\n __param(2, core_1.Inject(core_1.PLATFORM_ID)),\n __metadata(\"design:paramtypes\", [core_1.ElementRef,\n core_1.NgZone,\n Object])\n ], ClickOutsideDirective);\n return ClickOutsideDirective;\n}());\nexports.ClickOutsideDirective = ClickOutsideDirective;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"@angular/core\");\nvar click_outside_directive_1 = require(\"./click-outside.directive\");\nvar ClickOutsideModule = (function () {\n function ClickOutsideModule() {\n }\n ClickOutsideModule = __decorate([\n core_1.NgModule({\n declarations: [click_outside_directive_1.ClickOutsideDirective],\n exports: [click_outside_directive_1.ClickOutsideDirective]\n })\n ], ClickOutsideModule);\n return ClickOutsideModule;\n}());\nexports.ClickOutsideModule = ClickOutsideModule;\n","import { __decorate, __param } from 'tslib';\nimport { Subject, fromEvent, merge } from 'rxjs';\nimport { auditTime, takeUntil, distinctUntilChanged, mapTo } from 'rxjs/operators';\nimport { InjectionToken, EventEmitter, NgZone, KeyValueDiffers, ElementRef, Inject, PLATFORM_ID, Optional, Input, Output, Directive, ChangeDetectorRef, HostBinding, ViewChild, Component, ViewEncapsulation, NgModule } from '@angular/core';\nimport { isPlatformBrowser, CommonModule } from '@angular/common';\nimport PerfectScrollbar from 'perfect-scrollbar';\nimport ResizeObserver from 'resize-observer-polyfill';\n\nconst PERFECT_SCROLLBAR_CONFIG = new InjectionToken('PERFECT_SCROLLBAR_CONFIG');\nclass Geometry {\n constructor(x, y, w, h) {\n this.x = x;\n this.y = y;\n this.w = w;\n this.h = h;\n }\n}\nclass Position {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n}\nconst PerfectScrollbarEvents = [\n 'psScrollY',\n 'psScrollX',\n 'psScrollUp',\n 'psScrollDown',\n 'psScrollLeft',\n 'psScrollRight',\n 'psYReachEnd',\n 'psYReachStart',\n 'psXReachEnd',\n 'psXReachStart'\n];\nclass PerfectScrollbarConfig {\n constructor(config = {}) {\n this.assign(config);\n }\n assign(config = {}) {\n for (const key in config) {\n this[key] = config[key];\n }\n }\n}\n\nlet PerfectScrollbarDirective = class PerfectScrollbarDirective {\n constructor(zone, differs, elementRef, platformId, defaults) {\n this.zone = zone;\n this.differs = differs;\n this.elementRef = elementRef;\n this.platformId = platformId;\n this.defaults = defaults;\n this.instance = null;\n this.ro = null;\n this.timeout = null;\n this.animation = null;\n this.configDiff = null;\n this.ngDestroy = new Subject();\n this.disabled = false;\n this.psScrollY = new EventEmitter();\n this.psScrollX = new EventEmitter();\n this.psScrollUp = new EventEmitter();\n this.psScrollDown = new EventEmitter();\n this.psScrollLeft = new EventEmitter();\n this.psScrollRight = new EventEmitter();\n this.psYReachEnd = new EventEmitter();\n this.psYReachStart = new EventEmitter();\n this.psXReachEnd = new EventEmitter();\n this.psXReachStart = new EventEmitter();\n }\n ngOnInit() {\n if (!this.disabled && isPlatformBrowser(this.platformId)) {\n const config = new PerfectScrollbarConfig(this.defaults);\n config.assign(this.config); // Custom configuration\n this.zone.runOutsideAngular(() => {\n this.instance = new PerfectScrollbar(this.elementRef.nativeElement, config);\n });\n if (!this.configDiff) {\n this.configDiff = this.differs.find(this.config || {}).create();\n this.configDiff.diff(this.config || {});\n }\n this.zone.runOutsideAngular(() => {\n this.ro = new ResizeObserver(() => {\n this.update();\n });\n if (this.elementRef.nativeElement.children[0]) {\n this.ro.observe(this.elementRef.nativeElement.children[0]);\n }\n this.ro.observe(this.elementRef.nativeElement);\n });\n this.zone.runOutsideAngular(() => {\n PerfectScrollbarEvents.forEach((eventName) => {\n const eventType = eventName.replace(/([A-Z])/g, (c) => `-${c.toLowerCase()}`);\n fromEvent(this.elementRef.nativeElement, eventType)\n .pipe(auditTime(20), takeUntil(this.ngDestroy))\n .subscribe((event) => {\n this[eventName].emit(event);\n });\n });\n });\n }\n }\n ngOnDestroy() {\n if (isPlatformBrowser(this.platformId)) {\n this.ngDestroy.next();\n this.ngDestroy.complete();\n if (this.ro) {\n this.ro.disconnect();\n }\n if (this.timeout && typeof window !== 'undefined') {\n window.clearTimeout(this.timeout);\n }\n this.zone.runOutsideAngular(() => {\n if (this.instance) {\n this.instance.destroy();\n }\n });\n this.instance = null;\n }\n }\n ngDoCheck() {\n if (!this.disabled && this.configDiff && isPlatformBrowser(this.platformId)) {\n const changes = this.configDiff.diff(this.config || {});\n if (changes) {\n this.ngOnDestroy();\n this.ngOnInit();\n }\n }\n }\n ngOnChanges(changes) {\n if (changes['disabled'] && !changes['disabled'].isFirstChange() && isPlatformBrowser(this.platformId)) {\n if (changes['disabled'].currentValue !== changes['disabled'].previousValue) {\n if (changes['disabled'].currentValue === true) {\n this.ngOnDestroy();\n }\n else if (changes['disabled'].currentValue === false) {\n this.ngOnInit();\n }\n }\n }\n }\n ps() {\n return this.instance;\n }\n update() {\n if (typeof window !== 'undefined') {\n if (this.timeout) {\n window.clearTimeout(this.timeout);\n }\n this.timeout = window.setTimeout(() => {\n if (!this.disabled && this.configDiff) {\n try {\n this.zone.runOutsideAngular(() => {\n if (this.instance) {\n this.instance.update();\n }\n });\n }\n catch (error) {\n // Update can be finished after destroy so catch errors\n }\n }\n }, 0);\n }\n }\n geometry(prefix = 'scroll') {\n return new Geometry(this.elementRef.nativeElement[prefix + 'Left'], this.elementRef.nativeElement[prefix + 'Top'], this.elementRef.nativeElement[prefix + 'Width'], this.elementRef.nativeElement[prefix + 'Height']);\n }\n position(absolute = false) {\n if (!absolute && this.instance) {\n return new Position(this.instance.reach.x || 0, this.instance.reach.y || 0);\n }\n else {\n return new Position(this.elementRef.nativeElement.scrollLeft, this.elementRef.nativeElement.scrollTop);\n }\n }\n scrollable(direction = 'any') {\n const element = this.elementRef.nativeElement;\n if (direction === 'any') {\n return element.classList.contains('ps--active-x') ||\n element.classList.contains('ps--active-y');\n }\n else if (direction === 'both') {\n return element.classList.contains('ps--active-x') &&\n element.classList.contains('ps--active-y');\n }\n else {\n return element.classList.contains('ps--active-' + direction);\n }\n }\n scrollTo(x, y, speed) {\n if (!this.disabled) {\n if (y == null && speed == null) {\n this.animateScrolling('scrollTop', x, speed);\n }\n else {\n if (x != null) {\n this.animateScrolling('scrollLeft', x, speed);\n }\n if (y != null) {\n this.animateScrolling('scrollTop', y, speed);\n }\n }\n }\n }\n scrollToX(x, speed) {\n this.animateScrolling('scrollLeft', x, speed);\n }\n scrollToY(y, speed) {\n this.animateScrolling('scrollTop', y, speed);\n }\n scrollToTop(offset, speed) {\n this.animateScrolling('scrollTop', (offset || 0), speed);\n }\n scrollToLeft(offset, speed) {\n this.animateScrolling('scrollLeft', (offset || 0), speed);\n }\n scrollToRight(offset, speed) {\n const left = this.elementRef.nativeElement.scrollWidth -\n this.elementRef.nativeElement.clientWidth;\n this.animateScrolling('scrollLeft', left - (offset || 0), speed);\n }\n scrollToBottom(offset, speed) {\n const top = this.elementRef.nativeElement.scrollHeight -\n this.elementRef.nativeElement.clientHeight;\n this.animateScrolling('scrollTop', top - (offset || 0), speed);\n }\n scrollToElement(qs, offset, speed) {\n const element = this.elementRef.nativeElement.querySelector(qs);\n if (element) {\n const elementPos = element.getBoundingClientRect();\n const scrollerPos = this.elementRef.nativeElement.getBoundingClientRect();\n if (this.elementRef.nativeElement.classList.contains('ps--active-x')) {\n const currentPos = this.elementRef.nativeElement['scrollLeft'];\n const position = elementPos.left - scrollerPos.left + currentPos;\n this.animateScrolling('scrollLeft', position + (offset || 0), speed);\n }\n if (this.elementRef.nativeElement.classList.contains('ps--active-y')) {\n const currentPos = this.elementRef.nativeElement['scrollTop'];\n const position = elementPos.top - scrollerPos.top + currentPos;\n this.animateScrolling('scrollTop', position + (offset || 0), speed);\n }\n }\n }\n animateScrolling(target, value, speed) {\n if (this.animation) {\n window.cancelAnimationFrame(this.animation);\n this.animation = null;\n }\n if (!speed || typeof window === 'undefined') {\n this.elementRef.nativeElement[target] = value;\n }\n else if (value !== this.elementRef.nativeElement[target]) {\n let newValue = 0;\n let scrollCount = 0;\n let oldTimestamp = performance.now();\n let oldValue = this.elementRef.nativeElement[target];\n const cosParameter = (oldValue - value) / 2;\n const step = (newTimestamp) => {\n scrollCount += Math.PI / (speed / (newTimestamp - oldTimestamp));\n newValue = Math.round(value + cosParameter + cosParameter * Math.cos(scrollCount));\n // Only continue animation if scroll position has not changed\n if (this.elementRef.nativeElement[target] === oldValue) {\n if (scrollCount >= Math.PI) {\n this.animateScrolling(target, value, 0);\n }\n else {\n this.elementRef.nativeElement[target] = newValue;\n // On a zoomed out page the resulting offset may differ\n oldValue = this.elementRef.nativeElement[target];\n oldTimestamp = newTimestamp;\n this.animation = window.requestAnimationFrame(step);\n }\n }\n };\n window.requestAnimationFrame(step);\n }\n }\n};\nPerfectScrollbarDirective.ctorParameters = () => [\n { type: NgZone },\n { type: KeyValueDiffers },\n { type: ElementRef },\n { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [PERFECT_SCROLLBAR_CONFIG,] }] }\n];\n__decorate([\n Input()\n], PerfectScrollbarDirective.prototype, \"disabled\", void 0);\n__decorate([\n Input('perfectScrollbar')\n], PerfectScrollbarDirective.prototype, \"config\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psScrollY\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psScrollX\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psScrollUp\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psScrollDown\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psScrollLeft\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psScrollRight\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psYReachEnd\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psYReachStart\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psXReachEnd\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarDirective.prototype, \"psXReachStart\", void 0);\nPerfectScrollbarDirective = __decorate([\n Directive({\n selector: '[perfectScrollbar]',\n exportAs: 'ngxPerfectScrollbar'\n }),\n __param(3, Inject(PLATFORM_ID)),\n __param(4, Optional()), __param(4, Inject(PERFECT_SCROLLBAR_CONFIG))\n], PerfectScrollbarDirective);\n\nlet PerfectScrollbarComponent = class PerfectScrollbarComponent {\n constructor(zone, cdRef, platformId) {\n this.zone = zone;\n this.cdRef = cdRef;\n this.platformId = platformId;\n this.states = {};\n this.indicatorX = false;\n this.indicatorY = false;\n this.interaction = false;\n this.scrollPositionX = 0;\n this.scrollPositionY = 0;\n this.scrollDirectionX = 0;\n this.scrollDirectionY = 0;\n this.usePropagationX = false;\n this.usePropagationY = false;\n this.allowPropagationX = false;\n this.allowPropagationY = false;\n this.stateTimeout = null;\n this.ngDestroy = new Subject();\n this.stateUpdate = new Subject();\n this.disabled = false;\n this.usePSClass = true;\n this.autoPropagation = false;\n this.scrollIndicators = false;\n this.psScrollY = new EventEmitter();\n this.psScrollX = new EventEmitter();\n this.psScrollUp = new EventEmitter();\n this.psScrollDown = new EventEmitter();\n this.psScrollLeft = new EventEmitter();\n this.psScrollRight = new EventEmitter();\n this.psYReachEnd = new EventEmitter();\n this.psYReachStart = new EventEmitter();\n this.psXReachEnd = new EventEmitter();\n this.psXReachStart = new EventEmitter();\n }\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.stateUpdate\n .pipe(takeUntil(this.ngDestroy), distinctUntilChanged((a, b) => (a === b && !this.stateTimeout)))\n .subscribe((state) => {\n if (this.stateTimeout && typeof window !== 'undefined') {\n window.clearTimeout(this.stateTimeout);\n this.stateTimeout = null;\n }\n if (state === 'x' || state === 'y') {\n this.interaction = false;\n if (state === 'x') {\n this.indicatorX = false;\n this.states.left = false;\n this.states.right = false;\n if (this.autoPropagation && this.usePropagationX) {\n this.allowPropagationX = false;\n }\n }\n else if (state === 'y') {\n this.indicatorY = false;\n this.states.top = false;\n this.states.bottom = false;\n if (this.autoPropagation && this.usePropagationY) {\n this.allowPropagationY = false;\n }\n }\n }\n else {\n if (state === 'left' || state === 'right') {\n this.states.left = false;\n this.states.right = false;\n this.states[state] = true;\n if (this.autoPropagation && this.usePropagationX) {\n this.indicatorX = true;\n }\n }\n else if (state === 'top' || state === 'bottom') {\n this.states.top = false;\n this.states.bottom = false;\n this.states[state] = true;\n if (this.autoPropagation && this.usePropagationY) {\n this.indicatorY = true;\n }\n }\n if (this.autoPropagation && typeof window !== 'undefined') {\n this.stateTimeout = window.setTimeout(() => {\n this.indicatorX = false;\n this.indicatorY = false;\n this.stateTimeout = null;\n if (this.interaction && (this.states.left || this.states.right)) {\n this.allowPropagationX = true;\n }\n if (this.interaction && (this.states.top || this.states.bottom)) {\n this.allowPropagationY = true;\n }\n this.cdRef.markForCheck();\n }, 500);\n }\n }\n this.cdRef.markForCheck();\n this.cdRef.detectChanges();\n });\n this.zone.runOutsideAngular(() => {\n if (this.directiveRef) {\n const element = this.directiveRef.elementRef.nativeElement;\n fromEvent(element, 'wheel')\n .pipe(takeUntil(this.ngDestroy))\n .subscribe((event) => {\n if (!this.disabled && this.autoPropagation) {\n const scrollDeltaX = event.deltaX;\n const scrollDeltaY = event.deltaY;\n this.checkPropagation(event, scrollDeltaX, scrollDeltaY);\n }\n });\n fromEvent(element, 'touchmove')\n .pipe(takeUntil(this.ngDestroy))\n .subscribe((event) => {\n if (!this.disabled && this.autoPropagation) {\n const scrollPositionX = event.touches[0].clientX;\n const scrollPositionY = event.touches[0].clientY;\n const scrollDeltaX = scrollPositionX - this.scrollPositionX;\n const scrollDeltaY = scrollPositionY - this.scrollPositionY;\n this.checkPropagation(event, scrollDeltaX, scrollDeltaY);\n this.scrollPositionX = scrollPositionX;\n this.scrollPositionY = scrollPositionY;\n }\n });\n merge(fromEvent(element, 'ps-scroll-x')\n .pipe(mapTo('x')), fromEvent(element, 'ps-scroll-y')\n .pipe(mapTo('y')), fromEvent(element, 'ps-x-reach-end')\n .pipe(mapTo('right')), fromEvent(element, 'ps-y-reach-end')\n .pipe(mapTo('bottom')), fromEvent(element, 'ps-x-reach-start')\n .pipe(mapTo('left')), fromEvent(element, 'ps-y-reach-start')\n .pipe(mapTo('top')))\n .pipe(takeUntil(this.ngDestroy))\n .subscribe((state) => {\n if (!this.disabled && (this.autoPropagation || this.scrollIndicators)) {\n this.stateUpdate.next(state);\n }\n });\n }\n });\n window.setTimeout(() => {\n PerfectScrollbarEvents.forEach((eventName) => {\n if (this.directiveRef) {\n this.directiveRef[eventName] = this[eventName];\n }\n });\n }, 0);\n }\n }\n ngOnDestroy() {\n if (isPlatformBrowser(this.platformId)) {\n this.ngDestroy.next();\n this.ngDestroy.unsubscribe();\n if (this.stateTimeout && typeof window !== 'undefined') {\n window.clearTimeout(this.stateTimeout);\n }\n }\n }\n ngDoCheck() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.disabled && this.autoPropagation && this.directiveRef) {\n const element = this.directiveRef.elementRef.nativeElement;\n this.usePropagationX = element.classList.contains('ps--active-x');\n this.usePropagationY = element.classList.contains('ps--active-y');\n }\n }\n }\n checkPropagation(event, deltaX, deltaY) {\n this.interaction = true;\n const scrollDirectionX = (deltaX < 0) ? -1 : 1;\n const scrollDirectionY = (deltaY < 0) ? -1 : 1;\n if ((this.usePropagationX && this.usePropagationY) ||\n (this.usePropagationX && (!this.allowPropagationX ||\n (this.scrollDirectionX !== scrollDirectionX))) ||\n (this.usePropagationY && (!this.allowPropagationY ||\n (this.scrollDirectionY !== scrollDirectionY)))) {\n event.preventDefault();\n event.stopPropagation();\n }\n if (!!deltaX) {\n this.scrollDirectionX = scrollDirectionX;\n }\n if (!!deltaY) {\n this.scrollDirectionY = scrollDirectionY;\n }\n this.stateUpdate.next('interaction');\n this.cdRef.detectChanges();\n }\n};\nPerfectScrollbarComponent.ctorParameters = () => [\n { type: NgZone },\n { type: ChangeDetectorRef },\n { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }\n];\n__decorate([\n Input()\n], PerfectScrollbarComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input()\n], PerfectScrollbarComponent.prototype, \"usePSClass\", void 0);\n__decorate([\n HostBinding('class.ps-show-limits'),\n Input()\n], PerfectScrollbarComponent.prototype, \"autoPropagation\", void 0);\n__decorate([\n HostBinding('class.ps-show-active'),\n Input()\n], PerfectScrollbarComponent.prototype, \"scrollIndicators\", void 0);\n__decorate([\n Input()\n], PerfectScrollbarComponent.prototype, \"config\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psScrollY\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psScrollX\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psScrollUp\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psScrollDown\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psScrollLeft\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psScrollRight\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psYReachEnd\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psYReachStart\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psXReachEnd\", void 0);\n__decorate([\n Output()\n], PerfectScrollbarComponent.prototype, \"psXReachStart\", void 0);\n__decorate([\n ViewChild(PerfectScrollbarDirective, { static: true })\n], PerfectScrollbarComponent.prototype, \"directiveRef\", void 0);\nPerfectScrollbarComponent = __decorate([\n Component({\n selector: 'perfect-scrollbar',\n exportAs: 'ngxPerfectScrollbar',\n template: \"
      \\n
      \\n \\n
      \\n\\n
      \\n
      \\n
      \\n
      \\n
      \\n
      \\n
      \\n\",\n encapsulation: ViewEncapsulation.None,\n styles: [\"perfect-scrollbar{position:relative;display:block;overflow:hidden;width:100%;height:100%;max-width:100%;max-height:100%}perfect-scrollbar[hidden]{display:none}perfect-scrollbar[fxflex]{display:-webkit-box;display:flex;flex-direction:column;height:auto;min-width:0;min-height:0;-webkit-box-direction:column;-webkit-box-orient:column}perfect-scrollbar[fxflex]>.ps{flex:1 1 auto;width:auto;height:auto;min-width:0;min-height:0;-webkit-box-flex:1}perfect-scrollbar[fxlayout]>.ps,perfect-scrollbar[fxlayout]>.ps>.ps-content{display:-webkit-box;display:flex;flex:1 1 auto;flex-direction:inherit;align-items:inherit;align-content:inherit;justify-content:inherit;width:100%;height:100%;-webkit-box-align:inherit;-webkit-box-direction:inherit;-webkit-box-flex:1;-webkit-box-orient:inherit;-webkit-box-pack:inherit},perfect-scrollbar[fxlayout=row]>.ps,perfect-scrollbar[fxlayout=row]>.ps>.ps-content{flex-direction:row!important;-webkit-box-direction:row!important;-webkit-box-orient:row!important}perfect-scrollbar[fxlayout=column]>.ps,perfect-scrollbar[fxlayout=column]>.ps>.ps-content{flex-direction:column!important;-webkit-box-direction:column!important;-webkit-box-orient:column!important}perfect-scrollbar>.ps{position:static;display:block;width:100%;height:100%;max-width:100%;max-height:100%}perfect-scrollbar>.ps textarea{-ms-overflow-style:scrollbar}perfect-scrollbar>.ps>.ps-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:block;overflow:hidden;pointer-events:none}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-bottom,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-left,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-right,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-top{position:absolute;opacity:0;-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-bottom,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-top{left:0;min-width:100%;min-height:24px}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-left,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-right{top:0;min-width:24px;min-height:100%}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-top{top:0}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-left{left:0}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-right{right:0}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-bottom{bottom:0}perfect-scrollbar>.ps.ps--active-y>.ps__rail-y{top:0!important;right:0!important;left:auto!important;width:10px;cursor:default;-webkit-transition:width .2s linear,opacity .2s linear,background-color .2s linear;transition:width .2s linear,opacity .2s linear,background-color .2s linear}perfect-scrollbar>.ps.ps--active-y>.ps__rail-y.ps--clicking,perfect-scrollbar>.ps.ps--active-y>.ps__rail-y:hover{width:15px}perfect-scrollbar>.ps.ps--active-x>.ps__rail-x{top:auto!important;bottom:0!important;left:0!important;height:10px;cursor:default;-webkit-transition:height .2s linear,opacity .2s linear,background-color .2s linear;transition:height .2s linear,opacity .2s linear,background-color .2s linear}perfect-scrollbar>.ps.ps--active-x>.ps__rail-x.ps--clicking,perfect-scrollbar>.ps.ps--active-x>.ps__rail-x:hover{height:15px}perfect-scrollbar>.ps.ps--active-x.ps--active-y>.ps__rail-y{margin:0 0 10px}perfect-scrollbar>.ps.ps--active-x.ps--active-y>.ps__rail-x{margin:0 10px 0 0}perfect-scrollbar>.ps.ps--scrolling-x>.ps__rail-x,perfect-scrollbar>.ps.ps--scrolling-y>.ps__rail-y{opacity:.9;background-color:#eee}perfect-scrollbar.ps-show-always>.ps.ps--active-x>.ps__rail-x,perfect-scrollbar.ps-show-always>.ps.ps--active-y>.ps__rail-y{opacity:.6}perfect-scrollbar.ps-show-active>.ps.ps--active-y>.ps-overlay:not(.ps-at-top) .ps-indicator-top{opacity:1;background:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,.5)),to(rgba(255,255,255,0)));background:linear-gradient(to bottom,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%)}perfect-scrollbar.ps-show-active>.ps.ps--active-y>.ps-overlay:not(.ps-at-bottom) .ps-indicator-bottom{opacity:1;background:-webkit-gradient(linear,left bottom,left top,from(rgba(255,255,255,.5)),to(rgba(255,255,255,0)));background:linear-gradient(to top,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%)}perfect-scrollbar.ps-show-active>.ps.ps--active-x>.ps-overlay:not(.ps-at-left) .ps-indicator-left{opacity:1;background:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,.5)),to(rgba(255,255,255,0)));background:linear-gradient(to right,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%)}perfect-scrollbar.ps-show-active>.ps.ps--active-x>.ps-overlay:not(.ps-at-right) .ps-indicator-right{opacity:1;background:-webkit-gradient(linear,right top,left top,from(rgba(255,255,255,.5)),to(rgba(255,255,255,0)));background:linear-gradient(to left,rgba(255,255,255,.5) 0,rgba(255,255,255,0) 100%)}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-y>.ps-overlay.ps-at-top .ps-indicator-top{background:-webkit-gradient(linear,left top,left bottom,from(rgba(170,170,170,.5)),to(rgba(170,170,170,0)));background:linear-gradient(to bottom,rgba(170,170,170,.5) 0,rgba(170,170,170,0) 100%)}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-y>.ps-overlay.ps-at-bottom .ps-indicator-bottom{background:-webkit-gradient(linear,left bottom,left top,from(rgba(170,170,170,.5)),to(rgba(170,170,170,0)));background:linear-gradient(to top,rgba(170,170,170,.5) 0,rgba(170,170,170,0) 100%)}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-x>.ps-overlay.ps-at-left .ps-indicator-left{background:-webkit-gradient(linear,left top,right top,from(rgba(170,170,170,.5)),to(rgba(170,170,170,0)));background:linear-gradient(to right,rgba(170,170,170,.5) 0,rgba(170,170,170,0) 100%)}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-x>.ps-overlay.ps-at-right .ps-indicator-right{background:-webkit-gradient(linear,right top,left top,from(rgba(170,170,170,.5)),to(rgba(170,170,170,0)));background:linear-gradient(to left,rgba(170,170,170,.5) 0,rgba(170,170,170,0) 100%)}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-x>.ps-overlay.ps-at-left .ps-indicator-left.ps-indicator-show,perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-x>.ps-overlay.ps-at-right .ps-indicator-right.ps-indicator-show,perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-y>.ps-overlay.ps-at-bottom .ps-indicator-bottom.ps-indicator-show,perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-y>.ps-overlay.ps-at-top .ps-indicator-top.ps-indicator-show{opacity:1}\", \".ps{overflow:hidden!important;overflow-anchor:none;-ms-overflow-style:none;touch-action:auto;-ms-touch-action:auto}.ps__rail-x{display:none;opacity:0;transition:background-color .2s linear,opacity .2s linear;-webkit-transition:background-color .2s linear,opacity .2s linear;height:15px;bottom:0;position:absolute}.ps__rail-y{display:none;opacity:0;transition:background-color .2s linear,opacity .2s linear;-webkit-transition:background-color .2s linear,opacity .2s linear;width:15px;right:0;position:absolute}.ps--active-x>.ps__rail-x,.ps--active-y>.ps__rail-y{display:block;background-color:transparent}.ps--focus>.ps__rail-x,.ps--focus>.ps__rail-y,.ps--scrolling-x>.ps__rail-x,.ps--scrolling-y>.ps__rail-y,.ps:hover>.ps__rail-x,.ps:hover>.ps__rail-y{opacity:.6}.ps .ps__rail-x.ps--clicking,.ps .ps__rail-x:focus,.ps .ps__rail-x:hover,.ps .ps__rail-y.ps--clicking,.ps .ps__rail-y:focus,.ps .ps__rail-y:hover{background-color:#eee;opacity:.9}.ps__thumb-x{background-color:#aaa;border-radius:6px;transition:background-color .2s linear,height .2s ease-in-out;-webkit-transition:background-color .2s linear,height .2s ease-in-out;height:6px;bottom:2px;position:absolute}.ps__thumb-y{background-color:#aaa;border-radius:6px;transition:background-color .2s linear,width .2s ease-in-out;-webkit-transition:background-color .2s linear,width .2s ease-in-out;width:6px;right:2px;position:absolute}.ps__rail-x.ps--clicking .ps__thumb-x,.ps__rail-x:focus>.ps__thumb-x,.ps__rail-x:hover>.ps__thumb-x{background-color:#999;height:11px}.ps__rail-y.ps--clicking .ps__thumb-y,.ps__rail-y:focus>.ps__thumb-y,.ps__rail-y:hover>.ps__thumb-y{background-color:#999;width:11px}@supports (-ms-overflow-style:none){.ps{overflow:auto!important}}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.ps{overflow:auto!important}}\"]\n }),\n __param(2, Inject(PLATFORM_ID))\n], PerfectScrollbarComponent);\n\nlet PerfectScrollbarModule = class PerfectScrollbarModule {\n};\nPerfectScrollbarModule = __decorate([\n NgModule({\n imports: [CommonModule],\n declarations: [PerfectScrollbarComponent, PerfectScrollbarDirective],\n exports: [CommonModule, PerfectScrollbarComponent, PerfectScrollbarDirective]\n })\n], PerfectScrollbarModule);\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Geometry, PERFECT_SCROLLBAR_CONFIG, PerfectScrollbarComponent, PerfectScrollbarConfig, PerfectScrollbarDirective, PerfectScrollbarModule, Position };\n//# sourceMappingURL=ngx-perfect-scrollbar.js.map\n","
      \n
      \n \n
      \n\n
      \n
      \n
      \n
      \n
      \n
      \n
      \n","import { ɵɵdefineInjectable, Injectable, Component, ChangeDetectionStrategy, ChangeDetectorRef, Input, Pipe, NgModule } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nconst LOADERS = {\n 'ball-8bits': 16,\n 'ball-atom': 4,\n 'ball-beat': 3,\n 'ball-circus': 5,\n 'ball-climbing-dot': 4,\n 'ball-clip-rotate': 1,\n 'ball-clip-rotate-multiple': 2,\n 'ball-clip-rotate-pulse': 2,\n 'ball-elastic-dots': 5,\n 'ball-fall': 3,\n 'ball-fussion': 4,\n 'ball-grid-beat': 9,\n 'ball-grid-pulse': 9,\n 'ball-newton-cradle': 4,\n 'ball-pulse': 3,\n 'ball-pulse-rise': 5,\n 'ball-pulse-sync': 3,\n 'ball-rotate': 1,\n 'ball-running-dots': 5,\n 'ball-scale': 1,\n 'ball-scale-multiple': 3,\n 'ball-scale-pulse': 2,\n 'ball-scale-ripple': 1,\n 'ball-scale-ripple-multiple': 3,\n 'ball-spin': 8,\n 'ball-spin-clockwise': 8,\n 'ball-spin-clockwise-fade': 8,\n 'ball-spin-clockwise-fade-rotating': 8,\n 'ball-spin-fade': 8,\n 'ball-spin-fade-rotating': 8,\n 'ball-spin-rotate': 2,\n 'ball-square-clockwise-spin': 8,\n 'ball-square-spin': 8,\n 'ball-triangle-path': 3,\n 'ball-zig-zag': 2,\n 'ball-zig-zag-deflect': 2,\n 'cog': 1,\n 'cube-transition': 2,\n 'fire': 3,\n 'line-scale': 5,\n 'line-scale-party': 5,\n 'line-scale-pulse-out': 5,\n 'line-scale-pulse-out-rapid': 5,\n 'line-spin-clockwise-fade': 8,\n 'line-spin-clockwise-fade-rotating': 8,\n 'line-spin-fade': 8,\n 'line-spin-fade-rotating': 8,\n 'pacman': 6,\n 'square-jelly-box': 2,\n 'square-loader': 1,\n 'square-spin': 1,\n 'timer': 1,\n 'triangle-skew-spin': 1\n};\nconst DEFAULTS = {\n BD_COLOR: 'rgba(51,51,51,0.8)',\n SPINNER_COLOR: '#fff',\n SPINNER_TYPE: 'ball-scale-multiple',\n Z_INDEX: 99999,\n};\nconst PRIMARY_SPINNER = 'primary';\nclass NgxSpinner {\n constructor(init) {\n Object.assign(this, init);\n }\n}\n\nclass NgxSpinnerService {\n /**\n * Creates an instance of NgxSpinnerService.\n * @memberof NgxSpinnerService\n */\n constructor() {\n /**\n * Spinner observable\n *\n * @memberof NgxSpinnerService\n */\n // private spinnerObservable = new ReplaySubject(1);\n this.spinnerObservable = new BehaviorSubject(null);\n }\n /**\n * Get subscription of desired spinner\n * @memberof NgxSpinnerService\n **/\n getSpinner(name) {\n return this.spinnerObservable.asObservable().pipe(filter((x) => x && x.name === name));\n }\n /**\n * To show spinner\n *\n * @memberof NgxSpinnerService\n */\n show(name = PRIMARY_SPINNER, spinner) {\n setTimeout(() => {\n const showPromise = new Promise((resolve, _reject) => {\n if (spinner && Object.keys(spinner).length) {\n spinner['name'] = name;\n this.spinnerObservable.next(new NgxSpinner(Object.assign(Object.assign({}, spinner), { show: true })));\n resolve(true);\n }\n else {\n this.spinnerObservable.next(new NgxSpinner({ name, show: true }));\n resolve(true);\n }\n });\n return showPromise;\n }, 10);\n }\n /**\n * To hide spinner\n *\n * @memberof NgxSpinnerService\n */\n hide(name = PRIMARY_SPINNER, debounce = 10) {\n setTimeout(() => {\n const hidePromise = new Promise((resolve, _reject) => {\n this.spinnerObservable.next(new NgxSpinner({ name, show: false }));\n resolve(true);\n });\n return hidePromise;\n }, debounce);\n }\n}\nNgxSpinnerService.ɵprov = ɵɵdefineInjectable({ factory: function NgxSpinnerService_Factory() { return new NgxSpinnerService(); }, token: NgxSpinnerService, providedIn: \"root\" });\nNgxSpinnerService.decorators = [\n { type: Injectable, args: [{\n providedIn: 'root'\n },] }\n];\nNgxSpinnerService.ctorParameters = () => [];\n\nclass NgxSpinnerComponent {\n /**\n * Creates an instance of NgxSpinnerComponent.\n *\n * @memberof NgxSpinnerComponent\n */\n constructor(spinnerService, changeDetector) {\n this.spinnerService = spinnerService;\n this.changeDetector = changeDetector;\n /**\n * Spinner Object\n *\n * @memberof NgxSpinnerComponent\n */\n this.spinner = new NgxSpinner();\n /**\n * Unsubscribe from spinner's observable\n *\n * @memberof NgxSpinnerComponent\n **/\n this.ngUnsubscribe = new Subject();\n /**\n * To set default ngx-spinner options\n *\n * @memberof NgxSpinnerComponent\n */\n this.setDefaultOptions = () => {\n this.spinner = new NgxSpinner({\n name: this.name,\n bdColor: this.bdColor,\n size: this.size,\n color: this.color,\n type: this.type,\n fullScreen: this.fullScreen,\n divArray: this.divArray,\n divCount: this.divCount,\n show: this.show,\n zIndex: this.zIndex,\n template: this.template,\n });\n };\n this.bdColor = DEFAULTS.BD_COLOR;\n this.zIndex = DEFAULTS.Z_INDEX;\n this.color = DEFAULTS.SPINNER_COLOR;\n this.type = DEFAULTS.SPINNER_TYPE;\n this.size = 'large';\n this.fullScreen = true;\n this.name = PRIMARY_SPINNER;\n this.template = null;\n this.divArray = [];\n this.divCount = 0;\n this.show = false;\n }\n /**\n * Initialization method\n *\n * @memberof NgxSpinnerComponent\n */\n ngOnInit() {\n this.setDefaultOptions();\n this.spinnerService.getSpinner(this.name)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((spinner) => {\n this.setDefaultOptions();\n Object.assign(this.spinner, spinner);\n if (spinner.show) {\n this.onInputChange();\n }\n this.changeDetector.markForCheck();\n });\n }\n /**\n * On changes event for input variables\n *\n * @memberof NgxSpinnerComponent\n */\n ngOnChanges(changes) {\n for (const propName in changes) {\n if (propName) {\n const changedProp = changes[propName];\n if (changedProp.isFirstChange()) {\n return;\n }\n else if (typeof changedProp.currentValue !== 'undefined' && changedProp.currentValue !== changedProp.previousValue) {\n if (changedProp.currentValue !== '') {\n this.spinner[propName] = changedProp.currentValue;\n }\n }\n }\n }\n }\n /**\n * To get class for spinner\n *\n * @memberof NgxSpinnerComponent\n */\n getClass(type, size) {\n this.spinner.divCount = LOADERS[type];\n this.spinner.divArray = Array(this.spinner.divCount).fill(0).map((x, i) => i);\n let sizeClass = '';\n switch (size.toLowerCase()) {\n case 'small':\n sizeClass = 'la-sm';\n break;\n case 'medium':\n sizeClass = 'la-2x';\n break;\n case 'large':\n sizeClass = 'la-3x';\n break;\n default:\n break;\n }\n return 'la-' + type + ' ' + sizeClass;\n }\n /**\n * Check if input variables have changed\n *\n * @memberof NgxSpinnerComponent\n */\n onInputChange() {\n this.spinner.class = this.getClass(this.spinner.type, this.spinner.size);\n }\n /**\n * Component destroy event\n *\n * @memberof NgxSpinnerComponent\n */\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n}\nNgxSpinnerComponent.decorators = [\n { type: Component, args: [{\n selector: 'ngx-spinner',\n template: \"
      \\n
      \\n
      \\n
      \\n
      \\n
      \\n \\n
      \\n
      \",\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('fadeIn', [\n state('in', style({ opacity: 1 })),\n transition(':enter', [\n style({ opacity: 0 }),\n animate(300)\n ]),\n transition(':leave', animate(200, style({ opacity: 0 })))\n ])\n ],\n styles: [\"/*!\\n * Load Awesome v1.1.0 (http://github.danielcardoso.net/load-awesome/)\\n * Copyright 2015 Daniel Cardoso <@DanielCardoso>\\n * Licensed under MIT\\n */.la-ball-8bits,.la-ball-8bits>div{box-sizing:border-box;position:relative}.la-ball-8bits{color:#fff;display:block;font-size:0}.la-ball-8bits.la-dark{color:#333}.la-ball-8bits>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-8bits{height:12px;width:12px}.la-ball-8bits>div{-webkit-animation:ball-8bits 1s ease 0s infinite;animation:ball-8bits 1s ease 0s infinite;border-radius:0;height:4px;left:50%;opacity:0;position:absolute;top:50%;transform:translate(100%,100%);width:4px}.la-ball-8bits>div:first-child{-webkit-animation-delay:-.9375s;animation-delay:-.9375s}.la-ball-8bits>div:nth-child(2){-webkit-animation-delay:-.875s;animation-delay:-.875s}.la-ball-8bits>div:nth-child(3){-webkit-animation-delay:-.8125s;animation-delay:-.8125s}.la-ball-8bits>div:nth-child(4){-webkit-animation-delay:-.75s;animation-delay:-.75s}.la-ball-8bits>div:nth-child(5){-webkit-animation-delay:-.6875s;animation-delay:-.6875s}.la-ball-8bits>div:nth-child(6){-webkit-animation-delay:-.625s;animation-delay:-.625s}.la-ball-8bits>div:nth-child(7){-webkit-animation-delay:-.5625s;animation-delay:-.5625s}.la-ball-8bits>div:nth-child(8){-webkit-animation-delay:-.5s;animation-delay:-.5s}.la-ball-8bits>div:nth-child(9){-webkit-animation-delay:-.4375s;animation-delay:-.4375s}.la-ball-8bits>div:nth-child(10){-webkit-animation-delay:-.375s;animation-delay:-.375s}.la-ball-8bits>div:nth-child(11){-webkit-animation-delay:-.3125s;animation-delay:-.3125s}.la-ball-8bits>div:nth-child(12){-webkit-animation-delay:-.25s;animation-delay:-.25s}.la-ball-8bits>div:nth-child(13){-webkit-animation-delay:-.1875s;animation-delay:-.1875s}.la-ball-8bits>div:nth-child(14){-webkit-animation-delay:-.125s;animation-delay:-.125s}.la-ball-8bits>div:nth-child(15){-webkit-animation-delay:-.0625s;animation-delay:-.0625s}.la-ball-8bits>div:nth-child(16){-webkit-animation-delay:0s;animation-delay:0s}.la-ball-8bits>div:first-child{left:0;top:-100%}.la-ball-8bits>div:nth-child(2){left:33.3333333333%;top:-100%}.la-ball-8bits>div:nth-child(3){left:66.6666666667%;top:-66.6666666667%}.la-ball-8bits>div:nth-child(4){left:100%;top:-33.3333333333%}.la-ball-8bits>div:nth-child(5){left:100%;top:0}.la-ball-8bits>div:nth-child(6){left:100%;top:33.3333333333%}.la-ball-8bits>div:nth-child(7){left:66.6666666667%;top:66.6666666667%}.la-ball-8bits>div:nth-child(8){left:33.3333333333%;top:100%}.la-ball-8bits>div:nth-child(9){left:0;top:100%}.la-ball-8bits>div:nth-child(10){left:-33.3333333333%;top:100%}.la-ball-8bits>div:nth-child(11){left:-66.6666666667%;top:66.6666666667%}.la-ball-8bits>div:nth-child(12){left:-100%;top:33.3333333333%}.la-ball-8bits>div:nth-child(13){left:-100%;top:0}.la-ball-8bits>div:nth-child(14){left:-100%;top:-33.3333333333%}.la-ball-8bits>div:nth-child(15){left:-66.6666666667%;top:-66.6666666667%}.la-ball-8bits>div:nth-child(16){left:-33.3333333333%;top:-100%}.la-ball-8bits.la-sm{height:6px;width:6px}.la-ball-8bits.la-sm>div{height:2px;width:2px}.la-ball-8bits.la-2x{height:24px;width:24px}.la-ball-8bits.la-2x>div{height:8px;width:8px}.la-ball-8bits.la-3x{height:36px;width:36px}.la-ball-8bits.la-3x>div{height:12px;width:12px}@-webkit-keyframes ball-8bits{0%{opacity:1}50%{opacity:1}51%{opacity:0}}@keyframes ball-8bits{0%{opacity:1}50%{opacity:1}51%{opacity:0}}.la-ball-atom,.la-ball-atom>div{box-sizing:border-box;position:relative}.la-ball-atom{color:#fff;display:block;font-size:0}.la-ball-atom.la-dark{color:#333}.la-ball-atom>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-atom{height:32px;width:32px}.la-ball-atom>div:first-child{-webkit-animation:ball-atom-shrink 4.5s linear infinite;animation:ball-atom-shrink 4.5s linear infinite;background:#aaa;border-radius:100%;height:60%;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:60%;z-index:1}.la-ball-atom>div:not(:first-child){-webkit-animation:ball-atom-zindex 1.5s steps(2) 0s infinite;animation:ball-atom-zindex 1.5s steps(2) 0s infinite;background:none;height:100%;left:0;position:absolute;width:100%;z-index:0}.la-ball-atom>div:not(:first-child):before{-webkit-animation:ball-atom-position 1.5s ease 0s infinite,ball-atom-size 1.5s ease 0s infinite;animation:ball-atom-position 1.5s ease 0s infinite,ball-atom-size 1.5s ease 0s infinite;background:currentColor;border-radius:50%;content:\\\"\\\";height:10px;left:0;margin-left:-5px;margin-top:-5px;opacity:.75;position:absolute;top:0;width:10px}.la-ball-atom>div:nth-child(2){-webkit-animation-delay:.75s;animation-delay:.75s}.la-ball-atom>div:nth-child(2):before{-webkit-animation-delay:0s,-1.125s;animation-delay:0s,-1.125s}.la-ball-atom>div:nth-child(3){-webkit-animation-delay:-.25s;animation-delay:-.25s;transform:rotate(120deg)}.la-ball-atom>div:nth-child(3):before{-webkit-animation-delay:-1s,-.75s;animation-delay:-1s,-.75s}.la-ball-atom>div:nth-child(4){-webkit-animation-delay:.25s;animation-delay:.25s;transform:rotate(240deg)}.la-ball-atom>div:nth-child(4):before{-webkit-animation-delay:-.5s,-.125s;animation-delay:-.5s,-.125s}.la-ball-atom.la-sm{height:16px;width:16px}.la-ball-atom.la-sm>div:not(:first-child):before{height:4px;margin-left:-2px;margin-top:-2px;width:4px}.la-ball-atom.la-2x{height:64px;width:64px}.la-ball-atom.la-2x>div:not(:first-child):before{height:20px;margin-left:-10px;margin-top:-10px;width:20px}.la-ball-atom.la-3x{height:96px;width:96px}.la-ball-atom.la-3x>div:not(:first-child):before{height:30px;margin-left:-15px;margin-top:-15px;width:30px}@-webkit-keyframes ball-atom-position{50%{left:100%;top:100%}}@keyframes ball-atom-position{50%{left:100%;top:100%}}@-webkit-keyframes ball-atom-size{50%{transform:scale(.5)}}@keyframes ball-atom-size{50%{transform:scale(.5)}}@-webkit-keyframes ball-atom-zindex{50%{z-index:10}}@keyframes ball-atom-zindex{50%{z-index:10}}@-webkit-keyframes ball-atom-shrink{50%{transform:translate(-50%,-50%) scale(.8)}}@keyframes ball-atom-shrink{50%{transform:translate(-50%,-50%) scale(.8)}}.la-ball-beat,.la-ball-beat>div{box-sizing:border-box;position:relative}.la-ball-beat{color:#fff;display:block;font-size:0}.la-ball-beat.la-dark{color:#333}.la-ball-beat>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-beat{height:18px;width:54px}.la-ball-beat>div{-webkit-animation:ball-beat .7s linear -.15s infinite;animation:ball-beat .7s linear -.15s infinite;border-radius:100%;height:10px;margin:4px;width:10px}.la-ball-beat>div:nth-child(2n-1){-webkit-animation-delay:-.5s;animation-delay:-.5s}.la-ball-beat.la-sm{height:8px;width:26px}.la-ball-beat.la-sm>div{height:4px;margin:2px;width:4px}.la-ball-beat.la-2x{height:36px;width:108px}.la-ball-beat.la-2x>div{height:20px;margin:8px;width:20px}.la-ball-beat.la-3x{height:54px;width:162px}.la-ball-beat.la-3x>div{height:30px;margin:12px;width:30px}@-webkit-keyframes ball-beat{50%{opacity:.2;transform:scale(.75)}to{opacity:1;transform:scale(1)}}@keyframes ball-beat{50%{opacity:.2;transform:scale(.75)}to{opacity:1;transform:scale(1)}}.la-ball-circus,.la-ball-circus>div{box-sizing:border-box;position:relative}.la-ball-circus{color:#fff;display:block;font-size:0}.la-ball-circus.la-dark{color:#333}.la-ball-circus>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-circus{height:16px;width:16px}.la-ball-circus>div{-webkit-animation:ball-circus-position 2.5s cubic-bezier(.25,0,.75,1) infinite,ball-circus-size 2.5s cubic-bezier(.25,0,.75,1) infinite;animation:ball-circus-position 2.5s cubic-bezier(.25,0,.75,1) infinite,ball-circus-size 2.5s cubic-bezier(.25,0,.75,1) infinite;border-radius:100%;display:block;height:16px;height:100%;left:-100%;opacity:.5;position:absolute;top:0;width:16px;width:100%}.la-ball-circus>div:first-child{-webkit-animation-delay:0s,-.5s;animation-delay:0s,-.5s}.la-ball-circus>div:nth-child(2){-webkit-animation-delay:-.5s,-1s;animation-delay:-.5s,-1s}.la-ball-circus>div:nth-child(3){-webkit-animation-delay:-1s,-1.5s;animation-delay:-1s,-1.5s}.la-ball-circus>div:nth-child(4){-webkit-animation-delay:-1.5s,-2s;animation-delay:-1.5s,-2s}.la-ball-circus>div:nth-child(5){-webkit-animation-delay:-2s,-2.5s;animation-delay:-2s,-2.5s}.la-ball-circus.la-sm,.la-ball-circus.la-sm>div{height:8px;width:8px}.la-ball-circus.la-2x,.la-ball-circus.la-2x>div{height:32px;width:32px}.la-ball-circus.la-3x,.la-ball-circus.la-3x>div{height:48px;width:48px}@-webkit-keyframes ball-circus-position{50%{left:100%}}@keyframes ball-circus-position{50%{left:100%}}@-webkit-keyframes ball-circus-size{50%{transform:scale(.3)}}@keyframes ball-circus-size{50%{transform:scale(.3)}}.la-ball-climbing-dot,.la-ball-climbing-dot>div{box-sizing:border-box;position:relative}.la-ball-climbing-dot{color:#fff;display:block;font-size:0}.la-ball-climbing-dot.la-dark{color:#333}.la-ball-climbing-dot>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-climbing-dot{height:32px;width:42px}.la-ball-climbing-dot>div:first-child{-webkit-animation:ball-climbing-dot-jump .6s ease-in-out infinite;animation:ball-climbing-dot-jump .6s ease-in-out infinite;border-radius:100%;bottom:32%;height:14px;left:18%;position:absolute;transform-origin:center bottom;width:14px}.la-ball-climbing-dot>div:not(:first-child){-webkit-animation:ball-climbing-dot-steps 1.8s linear infinite;animation:ball-climbing-dot-steps 1.8s linear infinite;border-radius:0;height:2px;position:absolute;right:0;top:0;transform:translate(60%);width:14px}.la-ball-climbing-dot>div:not(:first-child):nth-child(2){-webkit-animation-delay:0ms;animation-delay:0ms}.la-ball-climbing-dot>div:not(:first-child):nth-child(3){-webkit-animation-delay:-.6s;animation-delay:-.6s}.la-ball-climbing-dot>div:not(:first-child):nth-child(4){-webkit-animation-delay:-1.2s;animation-delay:-1.2s}.la-ball-climbing-dot.la-sm{height:16px;width:20px}.la-ball-climbing-dot.la-sm>div:first-child{height:6px;width:6px}.la-ball-climbing-dot.la-sm>div:not(:first-child){height:1px;width:6px}.la-ball-climbing-dot.la-2x{height:64px;width:84px}.la-ball-climbing-dot.la-2x>div:first-child{height:28px;width:28px}.la-ball-climbing-dot.la-2x>div:not(:first-child){height:4px;width:28px}.la-ball-climbing-dot.la-3x{height:96px;width:126px}.la-ball-climbing-dot.la-3x>div:first-child{height:42px;width:42px}.la-ball-climbing-dot.la-3x>div:not(:first-child){height:6px;width:42px}@-webkit-keyframes ball-climbing-dot-jump{0%{transform:scaleY(.7)}20%{transform:scale(.7,1.2)}40%{transform:scale(1)}50%{bottom:125%}46%{transform:scale(1)}80%{transform:scale(.7,1.2)}90%{transform:scale(.7,1.2)}to{transform:scaleY(.7)}}@keyframes ball-climbing-dot-jump{0%{transform:scaleY(.7)}20%{transform:scale(.7,1.2)}40%{transform:scale(1)}50%{bottom:125%}46%{transform:scale(1)}80%{transform:scale(.7,1.2)}90%{transform:scale(.7,1.2)}to{transform:scaleY(.7)}}@-webkit-keyframes ball-climbing-dot-steps{0%{opacity:0;right:0;top:0}50%{opacity:1}to{opacity:0;right:100%;top:100%}}@keyframes ball-climbing-dot-steps{0%{opacity:0;right:0;top:0}50%{opacity:1}to{opacity:0;right:100%;top:100%}}.la-ball-clip-rotate-multiple,.la-ball-clip-rotate-multiple>div{box-sizing:border-box;position:relative}.la-ball-clip-rotate-multiple{color:#fff;display:block;font-size:0}.la-ball-clip-rotate-multiple.la-dark{color:#333}.la-ball-clip-rotate-multiple>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-clip-rotate-multiple{height:32px;width:32px}.la-ball-clip-rotate-multiple>div{-webkit-animation:ball-clip-rotate-multiple-rotate 1s ease-in-out infinite;animation:ball-clip-rotate-multiple-rotate 1s ease-in-out infinite;background:transparent;border-radius:100%;border-style:solid;border-width:2px;left:50%;position:absolute;top:50%}.la-ball-clip-rotate-multiple>div:first-child{border-left-color:transparent;border-right-color:transparent;height:32px;position:absolute;width:32px}.la-ball-clip-rotate-multiple>div:last-child{-webkit-animation-direction:reverse;-webkit-animation-duration:.5s;animation-direction:reverse;animation-duration:.5s;border-bottom-color:transparent;border-top-color:transparent;height:16px;width:16px}.la-ball-clip-rotate-multiple.la-sm{height:16px;width:16px}.la-ball-clip-rotate-multiple.la-sm>div{border-width:1px}.la-ball-clip-rotate-multiple.la-sm>div:first-child{height:16px;width:16px}.la-ball-clip-rotate-multiple.la-sm>div:last-child{height:8px;width:8px}.la-ball-clip-rotate-multiple.la-2x{height:64px;width:64px}.la-ball-clip-rotate-multiple.la-2x>div{border-width:4px}.la-ball-clip-rotate-multiple.la-2x>div:first-child{height:64px;width:64px}.la-ball-clip-rotate-multiple.la-2x>div:last-child{height:32px;width:32px}.la-ball-clip-rotate-multiple.la-3x{height:96px;width:96px}.la-ball-clip-rotate-multiple.la-3x>div{border-width:6px}.la-ball-clip-rotate-multiple.la-3x>div:first-child{height:96px;width:96px}.la-ball-clip-rotate-multiple.la-3x>div:last-child{height:48px;width:48px}@-webkit-keyframes ball-clip-rotate-multiple-rotate{0%{transform:translate(-50%,-50%) rotate(0deg)}50%{transform:translate(-50%,-50%) rotate(180deg)}to{transform:translate(-50%,-50%) rotate(1turn)}}@keyframes ball-clip-rotate-multiple-rotate{0%{transform:translate(-50%,-50%) rotate(0deg)}50%{transform:translate(-50%,-50%) rotate(180deg)}to{transform:translate(-50%,-50%) rotate(1turn)}}.la-ball-clip-rotate-pulse,.la-ball-clip-rotate-pulse>div{box-sizing:border-box;position:relative}.la-ball-clip-rotate-pulse{color:#fff;display:block;font-size:0}.la-ball-clip-rotate-pulse.la-dark{color:#333}.la-ball-clip-rotate-pulse>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-clip-rotate-pulse{height:32px;width:32px}.la-ball-clip-rotate-pulse>div{border-radius:100%;left:50%;position:absolute;top:50%}.la-ball-clip-rotate-pulse>div:first-child{-webkit-animation:ball-clip-rotate-pulse-rotate 1s cubic-bezier(.09,.57,.49,.9) infinite;animation:ball-clip-rotate-pulse-rotate 1s cubic-bezier(.09,.57,.49,.9) infinite;background:transparent;border-bottom-style:solid;border-bottom-width:2px;border-left:2px solid transparent;border-right:2px solid transparent;border-top-style:solid;border-top-width:2px;height:32px;position:absolute;width:32px}.la-ball-clip-rotate-pulse>div:last-child{-webkit-animation:ball-clip-rotate-pulse-scale 1s cubic-bezier(.09,.57,.49,.9) infinite;animation:ball-clip-rotate-pulse-scale 1s cubic-bezier(.09,.57,.49,.9) infinite;height:16px;width:16px}.la-ball-clip-rotate-pulse.la-sm{height:16px;width:16px}.la-ball-clip-rotate-pulse.la-sm>div:first-child{border-width:1px;height:16px;width:16px}.la-ball-clip-rotate-pulse.la-sm>div:last-child{height:8px;width:8px}.la-ball-clip-rotate-pulse.la-2x{height:64px;width:64px}.la-ball-clip-rotate-pulse.la-2x>div:first-child{border-width:4px;height:64px;width:64px}.la-ball-clip-rotate-pulse.la-2x>div:last-child{height:32px;width:32px}.la-ball-clip-rotate-pulse.la-3x{height:96px;width:96px}.la-ball-clip-rotate-pulse.la-3x>div:first-child{border-width:6px;height:96px;width:96px}.la-ball-clip-rotate-pulse.la-3x>div:last-child{height:48px;width:48px}@-webkit-keyframes ball-clip-rotate-pulse-rotate{0%{transform:translate(-50%,-50%) rotate(0deg)}50%{transform:translate(-50%,-50%) rotate(180deg)}to{transform:translate(-50%,-50%) rotate(1turn)}}@keyframes ball-clip-rotate-pulse-rotate{0%{transform:translate(-50%,-50%) rotate(0deg)}50%{transform:translate(-50%,-50%) rotate(180deg)}to{transform:translate(-50%,-50%) rotate(1turn)}}@-webkit-keyframes ball-clip-rotate-pulse-scale{0%,to{opacity:1;transform:translate(-50%,-50%) scale(1)}30%{opacity:.3;transform:translate(-50%,-50%) scale(.15)}}@keyframes ball-clip-rotate-pulse-scale{0%,to{opacity:1;transform:translate(-50%,-50%) scale(1)}30%{opacity:.3;transform:translate(-50%,-50%) scale(.15)}}.la-ball-clip-rotate,.la-ball-clip-rotate>div{box-sizing:border-box;position:relative}.la-ball-clip-rotate{color:#fff;display:block;font-size:0}.la-ball-clip-rotate.la-dark{color:#333}.la-ball-clip-rotate>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-clip-rotate{height:32px;width:32px}.la-ball-clip-rotate>div{-webkit-animation:ball-clip-rotate .75s linear infinite;animation:ball-clip-rotate .75s linear infinite;background:transparent;border-bottom-color:transparent;border-radius:100%;border-width:2px;height:32px;width:32px}.la-ball-clip-rotate.la-sm{height:16px;width:16px}.la-ball-clip-rotate.la-sm>div{border-width:1px;height:16px;width:16px}.la-ball-clip-rotate.la-2x{height:64px;width:64px}.la-ball-clip-rotate.la-2x>div{border-width:4px;height:64px;width:64px}.la-ball-clip-rotate.la-3x{height:96px;width:96px}.la-ball-clip-rotate.la-3x>div{border-width:6px;height:96px;width:96px}@-webkit-keyframes ball-clip-rotate{0%{transform:rotate(0deg)}50%{transform:rotate(180deg)}to{transform:rotate(1turn)}}@keyframes ball-clip-rotate{0%{transform:rotate(0deg)}50%{transform:rotate(180deg)}to{transform:rotate(1turn)}}.la-ball-elastic-dots,.la-ball-elastic-dots>div{box-sizing:border-box;position:relative}.la-ball-elastic-dots{color:#fff;display:block}.la-ball-elastic-dots.la-dark{color:#333}.la-ball-elastic-dots>div{background-color:currentColor;border:0 solid;float:none}.la-ball-elastic-dots{font-size:0;height:10px;text-align:center;width:120px}.la-ball-elastic-dots>div{-webkit-animation:ball-elastic-dots-anim 1s infinite;animation:ball-elastic-dots-anim 1s infinite;border-radius:100%;display:inline-block;height:10px;white-space:nowrap;width:10px}.la-ball-elastic-dots.la-sm{height:4px;width:60px}.la-ball-elastic-dots.la-sm>div{height:4px;width:4px}.la-ball-elastic-dots.la-2x{height:20px;width:240px}.la-ball-elastic-dots.la-2x>div{height:20px;width:20px}.la-ball-elastic-dots.la-3x{height:30px;width:360px}.la-ball-elastic-dots.la-3x>div{height:30px;width:30px}@-webkit-keyframes ball-elastic-dots-anim{0%,to{margin:0;transform:scale(1)}50%{margin:0 5%;transform:scale(.65)}}@keyframes ball-elastic-dots-anim{0%,to{margin:0;transform:scale(1)}50%{margin:0 5%;transform:scale(.65)}}.la-ball-fall,.la-ball-fall>div{box-sizing:border-box;position:relative}.la-ball-fall{color:#fff;display:block;font-size:0}.la-ball-fall.la-dark{color:#333}.la-ball-fall>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-fall{height:18px;width:54px}.la-ball-fall>div{-webkit-animation:ball-fall 1s ease-in-out infinite;animation:ball-fall 1s ease-in-out infinite;border-radius:100%;height:10px;margin:4px;opacity:0;width:10px}.la-ball-fall>div:first-child{-webkit-animation-delay:-.2s;animation-delay:-.2s}.la-ball-fall>div:nth-child(2){-webkit-animation-delay:-.1s;animation-delay:-.1s}.la-ball-fall>div:nth-child(3){-webkit-animation-delay:0ms;animation-delay:0ms}.la-ball-fall.la-sm{height:8px;width:26px}.la-ball-fall.la-sm>div{height:4px;margin:2px;width:4px}.la-ball-fall.la-2x{height:36px;width:108px}.la-ball-fall.la-2x>div{height:20px;margin:8px;width:20px}.la-ball-fall.la-3x{height:54px;width:162px}.la-ball-fall.la-3x>div{height:30px;margin:12px;width:30px}@-webkit-keyframes ball-fall{0%{opacity:0;transform:translateY(-145%)}10%{opacity:.5}20%{opacity:1;transform:translateY(0)}80%{opacity:1;transform:translateY(0)}90%{opacity:.5}to{opacity:0;transform:translateY(145%)}}@keyframes ball-fall{0%{opacity:0;transform:translateY(-145%)}10%{opacity:.5}20%{opacity:1;transform:translateY(0)}80%{opacity:1;transform:translateY(0)}90%{opacity:.5}to{opacity:0;transform:translateY(145%)}}.la-ball-fussion,.la-ball-fussion>div{box-sizing:border-box;position:relative}.la-ball-fussion{color:#fff;display:block;font-size:0}.la-ball-fussion.la-dark{color:#333}.la-ball-fussion>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-fussion{height:8px;width:8px}.la-ball-fussion>div{-webkit-animation:ball-fussion-ball1 1s ease 0s infinite;animation:ball-fussion-ball1 1s ease 0s infinite;border-radius:100%;height:12px;position:absolute;transform:translate(-50%,-50%);width:12px}.la-ball-fussion>div:first-child{left:50%;top:0;z-index:1}.la-ball-fussion>div:nth-child(2){-webkit-animation-name:ball-fussion-ball2;animation-name:ball-fussion-ball2;left:100%;top:50%;z-index:2}.la-ball-fussion>div:nth-child(3){-webkit-animation-name:ball-fussion-ball3;animation-name:ball-fussion-ball3;left:50%;top:100%;z-index:1}.la-ball-fussion>div:nth-child(4){-webkit-animation-name:ball-fussion-ball4;animation-name:ball-fussion-ball4;left:0;top:50%;z-index:2}.la-ball-fussion.la-sm{height:4px;width:4px}.la-ball-fussion.la-sm>div{height:6px;width:6px}.la-ball-fussion.la-2x{height:16px;width:16px}.la-ball-fussion.la-2x>div,.la-ball-fussion.la-3x{height:24px;width:24px}.la-ball-fussion.la-3x>div{height:36px;width:36px}@-webkit-keyframes ball-fussion-ball1{0%{opacity:.35}50%{left:200%;opacity:1;top:-100%}to{left:100%;opacity:.35;top:50%;z-index:2}}@keyframes ball-fussion-ball1{0%{opacity:.35}50%{left:200%;opacity:1;top:-100%}to{left:100%;opacity:.35;top:50%;z-index:2}}@-webkit-keyframes ball-fussion-ball2{0%{opacity:.35}50%{left:200%;opacity:1;top:200%}to{left:50%;opacity:.35;top:100%;z-index:1}}@keyframes ball-fussion-ball2{0%{opacity:.35}50%{left:200%;opacity:1;top:200%}to{left:50%;opacity:.35;top:100%;z-index:1}}@-webkit-keyframes ball-fussion-ball3{0%{opacity:.35}50%{left:-100%;opacity:1;top:200%}to{left:0;opacity:.35;top:50%;z-index:2}}@keyframes ball-fussion-ball3{0%{opacity:.35}50%{left:-100%;opacity:1;top:200%}to{left:0;opacity:.35;top:50%;z-index:2}}@-webkit-keyframes ball-fussion-ball4{0%{opacity:.35}50%{left:-100%;opacity:1;top:-100%}to{left:50%;opacity:.35;top:0;z-index:1}}@keyframes ball-fussion-ball4{0%{opacity:.35}50%{left:-100%;opacity:1;top:-100%}to{left:50%;opacity:.35;top:0;z-index:1}}.la-ball-grid-beat,.la-ball-grid-beat>div{box-sizing:border-box;position:relative}.la-ball-grid-beat{color:#fff;display:block;font-size:0}.la-ball-grid-beat.la-dark{color:#333}.la-ball-grid-beat>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-grid-beat{height:36px;width:36px}.la-ball-grid-beat>div{-webkit-animation-iteration-count:infinite;-webkit-animation-name:ball-grid-beat;animation-iteration-count:infinite;animation-name:ball-grid-beat;border-radius:100%;height:8px;margin:2px;width:8px}.la-ball-grid-beat>div:first-child{-webkit-animation-delay:.03s;-webkit-animation-duration:.65s;animation-delay:.03s;animation-duration:.65s}.la-ball-grid-beat>div:nth-child(2){-webkit-animation-delay:.09s;-webkit-animation-duration:1.02s;animation-delay:.09s;animation-duration:1.02s}.la-ball-grid-beat>div:nth-child(3){-webkit-animation-delay:-.69s;-webkit-animation-duration:1.06s;animation-delay:-.69s;animation-duration:1.06s}.la-ball-grid-beat>div:nth-child(4){-webkit-animation-delay:-.41s;-webkit-animation-duration:1.5s;animation-delay:-.41s;animation-duration:1.5s}.la-ball-grid-beat>div:nth-child(5){-webkit-animation-delay:.04s;-webkit-animation-duration:1.6s;animation-delay:.04s;animation-duration:1.6s}.la-ball-grid-beat>div:nth-child(6){-webkit-animation-delay:.07s;-webkit-animation-duration:.84s;animation-delay:.07s;animation-duration:.84s}.la-ball-grid-beat>div:nth-child(7){-webkit-animation-delay:-.66s;-webkit-animation-duration:.68s;animation-delay:-.66s;animation-duration:.68s}.la-ball-grid-beat>div:nth-child(8){-webkit-animation-delay:-.76s;-webkit-animation-duration:.93s;animation-delay:-.76s;animation-duration:.93s}.la-ball-grid-beat>div:nth-child(9){-webkit-animation-delay:-.76s;-webkit-animation-duration:1.24s;animation-delay:-.76s;animation-duration:1.24s}.la-ball-grid-beat.la-sm{height:18px;width:18px}.la-ball-grid-beat.la-sm>div{height:4px;margin:1px;width:4px}.la-ball-grid-beat.la-2x{height:72px;width:72px}.la-ball-grid-beat.la-2x>div{height:16px;margin:4px;width:16px}.la-ball-grid-beat.la-3x{height:108px;width:108px}.la-ball-grid-beat.la-3x>div{height:24px;margin:6px;width:24px}@-webkit-keyframes ball-grid-beat{0%{opacity:1}50%{opacity:.35}to{opacity:1}}@keyframes ball-grid-beat{0%{opacity:1}50%{opacity:.35}to{opacity:1}}.la-ball-grid-pulse,.la-ball-grid-pulse>div{box-sizing:border-box;position:relative}.la-ball-grid-pulse{color:#fff;display:block;font-size:0}.la-ball-grid-pulse.la-dark{color:#333}.la-ball-grid-pulse>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-grid-pulse{height:36px;width:36px}.la-ball-grid-pulse>div{-webkit-animation-iteration-count:infinite;-webkit-animation-name:ball-grid-pulse;animation-iteration-count:infinite;animation-name:ball-grid-pulse;border-radius:100%;height:8px;margin:2px;width:8px}.la-ball-grid-pulse>div:first-child{-webkit-animation-delay:.03s;-webkit-animation-duration:.65s;animation-delay:.03s;animation-duration:.65s}.la-ball-grid-pulse>div:nth-child(2){-webkit-animation-delay:.09s;-webkit-animation-duration:1.02s;animation-delay:.09s;animation-duration:1.02s}.la-ball-grid-pulse>div:nth-child(3){-webkit-animation-delay:-.69s;-webkit-animation-duration:1.06s;animation-delay:-.69s;animation-duration:1.06s}.la-ball-grid-pulse>div:nth-child(4){-webkit-animation-delay:-.41s;-webkit-animation-duration:1.5s;animation-delay:-.41s;animation-duration:1.5s}.la-ball-grid-pulse>div:nth-child(5){-webkit-animation-delay:.04s;-webkit-animation-duration:1.6s;animation-delay:.04s;animation-duration:1.6s}.la-ball-grid-pulse>div:nth-child(6){-webkit-animation-delay:.07s;-webkit-animation-duration:.84s;animation-delay:.07s;animation-duration:.84s}.la-ball-grid-pulse>div:nth-child(7){-webkit-animation-delay:-.66s;-webkit-animation-duration:.68s;animation-delay:-.66s;animation-duration:.68s}.la-ball-grid-pulse>div:nth-child(8){-webkit-animation-delay:-.76s;-webkit-animation-duration:.93s;animation-delay:-.76s;animation-duration:.93s}.la-ball-grid-pulse>div:nth-child(9){-webkit-animation-delay:-.76s;-webkit-animation-duration:1.24s;animation-delay:-.76s;animation-duration:1.24s}.la-ball-grid-pulse.la-sm{height:18px;width:18px}.la-ball-grid-pulse.la-sm>div{height:4px;margin:1px;width:4px}.la-ball-grid-pulse.la-2x{height:72px;width:72px}.la-ball-grid-pulse.la-2x>div{height:16px;margin:4px;width:16px}.la-ball-grid-pulse.la-3x{height:108px;width:108px}.la-ball-grid-pulse.la-3x>div{height:24px;margin:6px;width:24px}@-webkit-keyframes ball-grid-pulse{0%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.45)}to{opacity:1;transform:scale(1)}}@keyframes ball-grid-pulse{0%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.45)}to{opacity:1;transform:scale(1)}}.la-ball-newton-cradle,.la-ball-newton-cradle>div{box-sizing:border-box;position:relative}.la-ball-newton-cradle{color:#fff;display:block;font-size:0}.la-ball-newton-cradle.la-dark{color:#333}.la-ball-newton-cradle>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-newton-cradle{height:10px;width:40px}.la-ball-newton-cradle>div{border-radius:100%;height:10px;width:10px}.la-ball-newton-cradle>div:first-child{-webkit-animation:ball-newton-cradle-left 1s ease-out 0s infinite;animation:ball-newton-cradle-left 1s ease-out 0s infinite;transform:translateX(0)}.la-ball-newton-cradle>div:last-child{-webkit-animation:ball-newton-cradle-right 1s ease-out 0s infinite;animation:ball-newton-cradle-right 1s ease-out 0s infinite;transform:translateX(0)}.la-ball-newton-cradle.la-sm{height:4px;width:20px}.la-ball-newton-cradle.la-sm>div{height:4px;width:4px}.la-ball-newton-cradle.la-2x{height:20px;width:80px}.la-ball-newton-cradle.la-2x>div{height:20px;width:20px}.la-ball-newton-cradle.la-3x{height:30px;width:120px}.la-ball-newton-cradle.la-3x>div{height:30px;width:30px}@-webkit-keyframes ball-newton-cradle-left{25%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;transform:translateX(-100%)}50%{transform:translateX(0)}}@keyframes ball-newton-cradle-left{25%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;transform:translateX(-100%)}50%{transform:translateX(0)}}@-webkit-keyframes ball-newton-cradle-right{50%{transform:translateX(0)}75%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;transform:translateX(100%)}to{transform:translateX(0)}}@keyframes ball-newton-cradle-right{50%{transform:translateX(0)}75%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;transform:translateX(100%)}to{transform:translateX(0)}}.la-ball-pulse-rise,.la-ball-pulse-rise>div{box-sizing:border-box;position:relative}.la-ball-pulse-rise{color:#fff;display:block;font-size:0}.la-ball-pulse-rise.la-dark{color:#333}.la-ball-pulse-rise>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-pulse-rise{height:14px;width:70px}.la-ball-pulse-rise>div{-webkit-animation:ball-pulse-rise-even 1s cubic-bezier(.15,.36,.9,.6) 0s infinite;animation:ball-pulse-rise-even 1s cubic-bezier(.15,.36,.9,.6) 0s infinite;border-radius:100%;height:10px;margin:2px;width:10px}.la-ball-pulse-rise>div:nth-child(2n-1){-webkit-animation-name:ball-pulse-rise-odd;animation-name:ball-pulse-rise-odd}.la-ball-pulse-rise.la-sm{height:6px;width:34px}.la-ball-pulse-rise.la-sm>div{height:4px;margin:1px;width:4px}.la-ball-pulse-rise.la-2x{height:28px;width:140px}.la-ball-pulse-rise.la-2x>div{height:20px;margin:4px;width:20px}.la-ball-pulse-rise.la-3x{height:42px;width:210px}.la-ball-pulse-rise.la-3x>div{height:30px;margin:6px;width:30px}@-webkit-keyframes ball-pulse-rise-even{0%{opacity:1;transform:scale(1.1)}25%{transform:translateY(-200%)}50%{opacity:.35;transform:scale(.3)}75%{transform:translateY(200%)}to{opacity:1;transform:translateY(0);transform:scale(1)}}@keyframes ball-pulse-rise-even{0%{opacity:1;transform:scale(1.1)}25%{transform:translateY(-200%)}50%{opacity:.35;transform:scale(.3)}75%{transform:translateY(200%)}to{opacity:1;transform:translateY(0);transform:scale(1)}}@-webkit-keyframes ball-pulse-rise-odd{0%{opacity:.35;transform:scale(.4)}25%{transform:translateY(200%)}50%{opacity:1;transform:scale(1.1)}75%{transform:translateY(-200%)}to{opacity:.35;transform:translateY(0);transform:scale(.75)}}@keyframes ball-pulse-rise-odd{0%{opacity:.35;transform:scale(.4)}25%{transform:translateY(200%)}50%{opacity:1;transform:scale(1.1)}75%{transform:translateY(-200%)}to{opacity:.35;transform:translateY(0);transform:scale(.75)}}.la-ball-pulse-sync,.la-ball-pulse-sync>div{box-sizing:border-box;position:relative}.la-ball-pulse-sync{color:#fff;display:block;font-size:0}.la-ball-pulse-sync.la-dark{color:#333}.la-ball-pulse-sync>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-pulse-sync{height:18px;width:54px}.la-ball-pulse-sync>div{-webkit-animation:ball-pulse-sync .6s ease-in-out infinite;animation:ball-pulse-sync .6s ease-in-out infinite;border-radius:100%;height:10px;margin:4px;width:10px}.la-ball-pulse-sync>div:first-child{-webkit-animation-delay:-.14s;animation-delay:-.14s}.la-ball-pulse-sync>div:nth-child(2){-webkit-animation-delay:-.07s;animation-delay:-.07s}.la-ball-pulse-sync>div:nth-child(3){-webkit-animation-delay:0s;animation-delay:0s}.la-ball-pulse-sync.la-sm{height:8px;width:26px}.la-ball-pulse-sync.la-sm>div{height:4px;margin:2px;width:4px}.la-ball-pulse-sync.la-2x{height:36px;width:108px}.la-ball-pulse-sync.la-2x>div{height:20px;margin:8px;width:20px}.la-ball-pulse-sync.la-3x{height:54px;width:162px}.la-ball-pulse-sync.la-3x>div{height:30px;margin:12px;width:30px}@-webkit-keyframes ball-pulse-sync{33%{transform:translateY(100%)}66%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes ball-pulse-sync{33%{transform:translateY(100%)}66%{transform:translateY(-100%)}to{transform:translateY(0)}}.la-ball-pulse,.la-ball-pulse>div{box-sizing:border-box;position:relative}.la-ball-pulse{color:#fff;display:block;font-size:0}.la-ball-pulse.la-dark{color:#333}.la-ball-pulse>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-pulse{height:18px;width:54px}.la-ball-pulse>div:first-child{-webkit-animation-delay:-.2s;animation-delay:-.2s}.la-ball-pulse>div:nth-child(2){-webkit-animation-delay:-.1s;animation-delay:-.1s}.la-ball-pulse>div:nth-child(3){-webkit-animation-delay:0ms;animation-delay:0ms}.la-ball-pulse>div{-webkit-animation:ball-pulse 1s ease infinite;animation:ball-pulse 1s ease infinite;border-radius:100%;height:10px;margin:4px;width:10px}.la-ball-pulse.la-sm{height:8px;width:26px}.la-ball-pulse.la-sm>div{height:4px;margin:2px;width:4px}.la-ball-pulse.la-2x{height:36px;width:108px}.la-ball-pulse.la-2x>div{height:20px;margin:8px;width:20px}.la-ball-pulse.la-3x{height:54px;width:162px}.la-ball-pulse.la-3x>div{height:30px;margin:12px;width:30px}@-webkit-keyframes ball-pulse{0%,60%,to{opacity:1;transform:scale(1)}30%{opacity:.1;transform:scale(.01)}}@keyframes ball-pulse{0%,60%,to{opacity:1;transform:scale(1)}30%{opacity:.1;transform:scale(.01)}}.la-ball-rotate,.la-ball-rotate>div{box-sizing:border-box;position:relative}.la-ball-rotate{color:#fff;display:block;font-size:0}.la-ball-rotate.la-dark{color:#333}.la-ball-rotate>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-rotate,.la-ball-rotate>div{height:10px;width:10px}.la-ball-rotate>div{-webkit-animation:ball-rotate-animation 1s cubic-bezier(.7,-.13,.22,.86) infinite;animation:ball-rotate-animation 1s cubic-bezier(.7,-.13,.22,.86) infinite;border-radius:100%}.la-ball-rotate>div:after,.la-ball-rotate>div:before{background:currentColor;border-radius:inherit;content:\\\"\\\";height:inherit;margin:inherit;opacity:.8;position:absolute;width:inherit}.la-ball-rotate>div:before{left:-150%;top:0}.la-ball-rotate>div:after{left:150%;top:0}.la-ball-rotate.la-sm,.la-ball-rotate.la-sm>div{height:4px;width:4px}.la-ball-rotate.la-2x,.la-ball-rotate.la-2x>div{height:20px;width:20px}.la-ball-rotate.la-3x,.la-ball-rotate.la-3x>div{height:30px;width:30px}@-webkit-keyframes ball-rotate-animation{0%{transform:rotate(0deg)}50%{transform:rotate(180deg)}to{transform:rotate(1turn)}}@keyframes ball-rotate-animation{0%{transform:rotate(0deg)}50%{transform:rotate(180deg)}to{transform:rotate(1turn)}}.la-ball-running-dots,.la-ball-running-dots>div{box-sizing:border-box;position:relative}.la-ball-running-dots{color:#fff;display:block;font-size:0}.la-ball-running-dots.la-dark{color:#333}.la-ball-running-dots>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-running-dots{height:10px;width:10px}.la-ball-running-dots>div{-webkit-animation:ball-running-dots-animate 2s linear infinite;animation:ball-running-dots-animate 2s linear infinite;border-radius:100%;height:10px;margin-left:-25px;position:absolute;width:10px}.la-ball-running-dots>div:first-child{-webkit-animation-delay:0s;animation-delay:0s}.la-ball-running-dots>div:nth-child(2){-webkit-animation-delay:-.4s;animation-delay:-.4s}.la-ball-running-dots>div:nth-child(3){-webkit-animation-delay:-.8s;animation-delay:-.8s}.la-ball-running-dots>div:nth-child(4){-webkit-animation-delay:-1.2s;animation-delay:-1.2s}.la-ball-running-dots>div:nth-child(5){-webkit-animation-delay:-1.6s;animation-delay:-1.6s}.la-ball-running-dots>div:nth-child(6){-webkit-animation-delay:-2s;animation-delay:-2s}.la-ball-running-dots>div:nth-child(7){-webkit-animation-delay:-2.4s;animation-delay:-2.4s}.la-ball-running-dots>div:nth-child(8){-webkit-animation-delay:-2.8s;animation-delay:-2.8s}.la-ball-running-dots>div:nth-child(9){-webkit-animation-delay:-3.2s;animation-delay:-3.2s}.la-ball-running-dots>div:nth-child(10){-webkit-animation-delay:-3.6s;animation-delay:-3.6s}.la-ball-running-dots.la-sm{height:4px;width:4px}.la-ball-running-dots.la-sm>div{height:4px;margin-left:-12px;width:4px}.la-ball-running-dots.la-2x{height:20px;width:20px}.la-ball-running-dots.la-2x>div{height:20px;margin-left:-50px;width:20px}.la-ball-running-dots.la-3x{height:30px;width:30px}.la-ball-running-dots.la-3x>div{height:30px;margin-left:-75px;width:30px}@-webkit-keyframes ball-running-dots-animate{0%,to{height:100%;transform:translateY(0) translateX(500%);width:100%}80%{transform:translateY(0) translateX(0)}85%{height:100%;transform:translateY(-125%) translateX(0);width:100%}90%{height:75%;width:200%}95%{height:100%;transform:translateY(-100%) translateX(500%);width:100%}}@keyframes ball-running-dots-animate{0%,to{height:100%;transform:translateY(0) translateX(500%);width:100%}80%{transform:translateY(0) translateX(0)}85%{height:100%;transform:translateY(-125%) translateX(0);width:100%}90%{height:75%;width:200%}95%{height:100%;transform:translateY(-100%) translateX(500%);width:100%}}.la-ball-scale-multiple,.la-ball-scale-multiple>div{box-sizing:border-box;position:relative}.la-ball-scale-multiple{color:#fff;display:block;font-size:0}.la-ball-scale-multiple.la-dark{color:#333}.la-ball-scale-multiple>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-scale-multiple{height:32px;width:32px}.la-ball-scale-multiple>div{-webkit-animation:ball-scale-multiple 1s linear 0s infinite;animation:ball-scale-multiple 1s linear 0s infinite;border-radius:100%;height:32px;left:0;opacity:0;position:absolute;top:0;width:32px}.la-ball-scale-multiple>div:nth-child(2){-webkit-animation-delay:.2s;animation-delay:.2s}.la-ball-scale-multiple>div:nth-child(3){-webkit-animation-delay:.4s;animation-delay:.4s}.la-ball-scale-multiple.la-sm,.la-ball-scale-multiple.la-sm>div{height:16px;width:16px}.la-ball-scale-multiple.la-2x,.la-ball-scale-multiple.la-2x>div{height:64px;width:64px}.la-ball-scale-multiple.la-3x,.la-ball-scale-multiple.la-3x>div{height:96px;width:96px}@-webkit-keyframes ball-scale-multiple{0%{opacity:0;transform:scale(0)}5%{opacity:.75}to{opacity:0;transform:scale(1)}}@keyframes ball-scale-multiple{0%{opacity:0;transform:scale(0)}5%{opacity:.75}to{opacity:0;transform:scale(1)}}.la-ball-scale-pulse,.la-ball-scale-pulse>div{box-sizing:border-box;position:relative}.la-ball-scale-pulse{color:#fff;display:block;font-size:0}.la-ball-scale-pulse.la-dark{color:#333}.la-ball-scale-pulse>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-scale-pulse{height:32px;width:32px}.la-ball-scale-pulse>div{-webkit-animation:ball-scale-pulse 2s ease-in-out infinite;animation:ball-scale-pulse 2s ease-in-out infinite;border-radius:100%;height:32px;left:0;opacity:.5;position:absolute;top:0;width:32px}.la-ball-scale-pulse>div:last-child{-webkit-animation-delay:-1s;animation-delay:-1s}.la-ball-scale-pulse.la-sm,.la-ball-scale-pulse.la-sm>div{height:16px;width:16px}.la-ball-scale-pulse.la-2x,.la-ball-scale-pulse.la-2x>div{height:64px;width:64px}.la-ball-scale-pulse.la-3x,.la-ball-scale-pulse.la-3x>div{height:96px;width:96px}@-webkit-keyframes ball-scale-pulse{0%,to{transform:scale(0)}50%{transform:scale(1)}}@keyframes ball-scale-pulse{0%,to{transform:scale(0)}50%{transform:scale(1)}}.la-ball-scale-ripple-multiple,.la-ball-scale-ripple-multiple>div{box-sizing:border-box;position:relative}.la-ball-scale-ripple-multiple{color:#fff;display:block;font-size:0}.la-ball-scale-ripple-multiple.la-dark{color:#333}.la-ball-scale-ripple-multiple>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-scale-ripple-multiple{height:32px;width:32px}.la-ball-scale-ripple-multiple>div{-webkit-animation:ball-scale-ripple-multiple 1.25s cubic-bezier(.21,.53,.56,.8) 0s infinite;animation:ball-scale-ripple-multiple 1.25s cubic-bezier(.21,.53,.56,.8) 0s infinite;background:transparent;border-radius:100%;border-width:2px;height:32px;left:0;opacity:0;position:absolute;top:0;width:32px}.la-ball-scale-ripple-multiple>div:first-child{-webkit-animation-delay:0s;animation-delay:0s}.la-ball-scale-ripple-multiple>div:nth-child(2){-webkit-animation-delay:.25s;animation-delay:.25s}.la-ball-scale-ripple-multiple>div:nth-child(3){-webkit-animation-delay:.5s;animation-delay:.5s}.la-ball-scale-ripple-multiple.la-sm{height:16px;width:16px}.la-ball-scale-ripple-multiple.la-sm>div{border-width:1px;height:16px;width:16px}.la-ball-scale-ripple-multiple.la-2x{height:64px;width:64px}.la-ball-scale-ripple-multiple.la-2x>div{border-width:4px;height:64px;width:64px}.la-ball-scale-ripple-multiple.la-3x{height:96px;width:96px}.la-ball-scale-ripple-multiple.la-3x>div{border-width:6px;height:96px;width:96px}@-webkit-keyframes ball-scale-ripple-multiple{0%{opacity:1;transform:scale(.1)}70%{opacity:.5;transform:scale(1)}95%{opacity:0}}@keyframes ball-scale-ripple-multiple{0%{opacity:1;transform:scale(.1)}70%{opacity:.5;transform:scale(1)}95%{opacity:0}}.la-ball-scale-ripple,.la-ball-scale-ripple>div{box-sizing:border-box;position:relative}.la-ball-scale-ripple{color:#fff;display:block;font-size:0}.la-ball-scale-ripple.la-dark{color:#333}.la-ball-scale-ripple>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-scale-ripple{height:32px;width:32px}.la-ball-scale-ripple>div{-webkit-animation:ball-scale-ripple 1s cubic-bezier(.21,.53,.56,.8) 0s infinite;animation:ball-scale-ripple 1s cubic-bezier(.21,.53,.56,.8) 0s infinite;background:transparent;border-radius:100%;border-width:2px;height:32px;opacity:0;width:32px}.la-ball-scale-ripple.la-sm{height:16px;width:16px}.la-ball-scale-ripple.la-sm>div{border-width:1px;height:16px;width:16px}.la-ball-scale-ripple.la-2x{height:64px;width:64px}.la-ball-scale-ripple.la-2x>div{border-width:4px;height:64px;width:64px}.la-ball-scale-ripple.la-3x{height:96px;width:96px}.la-ball-scale-ripple.la-3x>div{border-width:6px;height:96px;width:96px}@-webkit-keyframes ball-scale-ripple{0%{opacity:1;transform:scale(.1)}70%{opacity:.65;transform:scale(1)}to{opacity:0}}@keyframes ball-scale-ripple{0%{opacity:1;transform:scale(.1)}70%{opacity:.65;transform:scale(1)}to{opacity:0}}.la-ball-scale,.la-ball-scale>div{box-sizing:border-box;position:relative}.la-ball-scale{color:#fff;display:block;font-size:0}.la-ball-scale.la-dark{color:#333}.la-ball-scale>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-scale,.la-ball-scale>div{height:32px;width:32px}.la-ball-scale>div{-webkit-animation:ball-scale 1s ease-in-out 0s infinite;animation:ball-scale 1s ease-in-out 0s infinite;border-radius:100%;opacity:0}.la-ball-scale.la-sm,.la-ball-scale.la-sm>div{height:16px;width:16px}.la-ball-scale.la-2x,.la-ball-scale.la-2x>div{height:64px;width:64px}.la-ball-scale.la-3x,.la-ball-scale.la-3x>div{height:96px;width:96px}@-webkit-keyframes ball-scale{0%{opacity:1;transform:scale(0)}to{opacity:0;transform:scale(1)}}@keyframes ball-scale{0%{opacity:1;transform:scale(0)}to{opacity:0;transform:scale(1)}}.la-ball-spin-clockwise-fade-rotating,.la-ball-spin-clockwise-fade-rotating>div{box-sizing:border-box;position:relative}.la-ball-spin-clockwise-fade-rotating{color:#fff;display:block;font-size:0}.la-ball-spin-clockwise-fade-rotating.la-dark{color:#333}.la-ball-spin-clockwise-fade-rotating>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-spin-clockwise-fade-rotating{-webkit-animation:ball-spin-clockwise-fade-rotating-rotate 6s linear infinite;animation:ball-spin-clockwise-fade-rotating-rotate 6s linear infinite;height:32px;width:32px}.la-ball-spin-clockwise-fade-rotating>div{-webkit-animation:ball-spin-clockwise-fade-rotating 1s linear infinite;animation:ball-spin-clockwise-fade-rotating 1s linear infinite;border-radius:100%;height:8px;left:50%;margin-left:-4px;margin-top:-4px;position:absolute;top:50%;width:8px}.la-ball-spin-clockwise-fade-rotating>div:first-child{-webkit-animation-delay:-.875s;animation-delay:-.875s;left:50%;top:5%}.la-ball-spin-clockwise-fade-rotating>div:nth-child(2){-webkit-animation-delay:-.75s;animation-delay:-.75s;left:81.8198051534%;top:18.1801948466%}.la-ball-spin-clockwise-fade-rotating>div:nth-child(3){-webkit-animation-delay:-.625s;animation-delay:-.625s;left:95%;top:50%}.la-ball-spin-clockwise-fade-rotating>div:nth-child(4){-webkit-animation-delay:-.5s;animation-delay:-.5s;left:81.8198051534%;top:81.8198051534%}.la-ball-spin-clockwise-fade-rotating>div:nth-child(5){-webkit-animation-delay:-.375s;animation-delay:-.375s;left:50.0000000005%;top:94.9999999966%}.la-ball-spin-clockwise-fade-rotating>div:nth-child(6){-webkit-animation-delay:-.25s;animation-delay:-.25s;left:18.1801949248%;top:81.8198046966%}.la-ball-spin-clockwise-fade-rotating>div:nth-child(7){-webkit-animation-delay:-.125s;animation-delay:-.125s;left:5.0000051215%;top:49.9999750815%}.la-ball-spin-clockwise-fade-rotating>div:nth-child(8){-webkit-animation-delay:0s;animation-delay:0s;left:18.1803700518%;top:18.179464974%}.la-ball-spin-clockwise-fade-rotating.la-sm{height:16px;width:16px}.la-ball-spin-clockwise-fade-rotating.la-sm>div{height:4px;margin-left:-2px;margin-top:-2px;width:4px}.la-ball-spin-clockwise-fade-rotating.la-2x{height:64px;width:64px}.la-ball-spin-clockwise-fade-rotating.la-2x>div{height:16px;margin-left:-8px;margin-top:-8px;width:16px}.la-ball-spin-clockwise-fade-rotating.la-3x{height:96px;width:96px}.la-ball-spin-clockwise-fade-rotating.la-3x>div{height:24px;margin-left:-12px;margin-top:-12px;width:24px}@-webkit-keyframes ball-spin-clockwise-fade-rotating-rotate{to{transform:rotate(-1turn)}}@keyframes ball-spin-clockwise-fade-rotating-rotate{to{transform:rotate(-1turn)}}@-webkit-keyframes ball-spin-clockwise-fade-rotating{50%{opacity:.25;transform:scale(.5)}to{opacity:1;transform:scale(1)}}@keyframes ball-spin-clockwise-fade-rotating{50%{opacity:.25;transform:scale(.5)}to{opacity:1;transform:scale(1)}}.la-ball-spin-clockwise-fade,.la-ball-spin-clockwise-fade>div{box-sizing:border-box;position:relative}.la-ball-spin-clockwise-fade{color:#fff;display:block;font-size:0}.la-ball-spin-clockwise-fade.la-dark{color:#333}.la-ball-spin-clockwise-fade>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-spin-clockwise-fade{height:32px;width:32px}.la-ball-spin-clockwise-fade>div{-webkit-animation:ball-spin-clockwise-fade 1s linear infinite;animation:ball-spin-clockwise-fade 1s linear infinite;border-radius:100%;height:8px;left:50%;margin-left:-4px;margin-top:-4px;position:absolute;top:50%;width:8px}.la-ball-spin-clockwise-fade>div:first-child{-webkit-animation-delay:-.875s;animation-delay:-.875s;left:50%;top:5%}.la-ball-spin-clockwise-fade>div:nth-child(2){-webkit-animation-delay:-.75s;animation-delay:-.75s;left:81.8198051534%;top:18.1801948466%}.la-ball-spin-clockwise-fade>div:nth-child(3){-webkit-animation-delay:-.625s;animation-delay:-.625s;left:95%;top:50%}.la-ball-spin-clockwise-fade>div:nth-child(4){-webkit-animation-delay:-.5s;animation-delay:-.5s;left:81.8198051534%;top:81.8198051534%}.la-ball-spin-clockwise-fade>div:nth-child(5){-webkit-animation-delay:-.375s;animation-delay:-.375s;left:50.0000000005%;top:94.9999999966%}.la-ball-spin-clockwise-fade>div:nth-child(6){-webkit-animation-delay:-.25s;animation-delay:-.25s;left:18.1801949248%;top:81.8198046966%}.la-ball-spin-clockwise-fade>div:nth-child(7){-webkit-animation-delay:-.125s;animation-delay:-.125s;left:5.0000051215%;top:49.9999750815%}.la-ball-spin-clockwise-fade>div:nth-child(8){-webkit-animation-delay:0s;animation-delay:0s;left:18.1803700518%;top:18.179464974%}.la-ball-spin-clockwise-fade.la-sm{height:16px;width:16px}.la-ball-spin-clockwise-fade.la-sm>div{height:4px;margin-left:-2px;margin-top:-2px;width:4px}.la-ball-spin-clockwise-fade.la-2x{height:64px;width:64px}.la-ball-spin-clockwise-fade.la-2x>div{height:16px;margin-left:-8px;margin-top:-8px;width:16px}.la-ball-spin-clockwise-fade.la-3x{height:96px;width:96px}.la-ball-spin-clockwise-fade.la-3x>div{height:24px;margin-left:-12px;margin-top:-12px;width:24px}@-webkit-keyframes ball-spin-clockwise-fade{50%{opacity:.25;transform:scale(.5)}to{opacity:1;transform:scale(1)}}@keyframes ball-spin-clockwise-fade{50%{opacity:.25;transform:scale(.5)}to{opacity:1;transform:scale(1)}}.la-ball-spin-clockwise,.la-ball-spin-clockwise>div{box-sizing:border-box;position:relative}.la-ball-spin-clockwise{color:#fff;display:block;font-size:0}.la-ball-spin-clockwise.la-dark{color:#333}.la-ball-spin-clockwise>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-spin-clockwise{height:32px;width:32px}.la-ball-spin-clockwise>div{-webkit-animation:ball-spin-clockwise 1s ease-in-out infinite;animation:ball-spin-clockwise 1s ease-in-out infinite;border-radius:100%;height:8px;left:50%;margin-left:-4px;margin-top:-4px;position:absolute;top:50%;width:8px}.la-ball-spin-clockwise>div:first-child{-webkit-animation-delay:-.875s;animation-delay:-.875s;left:50%;top:5%}.la-ball-spin-clockwise>div:nth-child(2){-webkit-animation-delay:-.75s;animation-delay:-.75s;left:81.8198051534%;top:18.1801948466%}.la-ball-spin-clockwise>div:nth-child(3){-webkit-animation-delay:-.625s;animation-delay:-.625s;left:95%;top:50%}.la-ball-spin-clockwise>div:nth-child(4){-webkit-animation-delay:-.5s;animation-delay:-.5s;left:81.8198051534%;top:81.8198051534%}.la-ball-spin-clockwise>div:nth-child(5){-webkit-animation-delay:-.375s;animation-delay:-.375s;left:50.0000000005%;top:94.9999999966%}.la-ball-spin-clockwise>div:nth-child(6){-webkit-animation-delay:-.25s;animation-delay:-.25s;left:18.1801949248%;top:81.8198046966%}.la-ball-spin-clockwise>div:nth-child(7){-webkit-animation-delay:-.125s;animation-delay:-.125s;left:5.0000051215%;top:49.9999750815%}.la-ball-spin-clockwise>div:nth-child(8){-webkit-animation-delay:0s;animation-delay:0s;left:18.1803700518%;top:18.179464974%}.la-ball-spin-clockwise.la-sm{height:16px;width:16px}.la-ball-spin-clockwise.la-sm>div{height:4px;margin-left:-2px;margin-top:-2px;width:4px}.la-ball-spin-clockwise.la-2x{height:64px;width:64px}.la-ball-spin-clockwise.la-2x>div{height:16px;margin-left:-8px;margin-top:-8px;width:16px}.la-ball-spin-clockwise.la-3x{height:96px;width:96px}.la-ball-spin-clockwise.la-3x>div{height:24px;margin-left:-12px;margin-top:-12px;width:24px}@-webkit-keyframes ball-spin-clockwise{0%,to{opacity:1;transform:scale(1)}20%{opacity:1}80%{opacity:0;transform:scale(0)}}@keyframes ball-spin-clockwise{0%,to{opacity:1;transform:scale(1)}20%{opacity:1}80%{opacity:0;transform:scale(0)}}.la-ball-spin-fade-rotating,.la-ball-spin-fade-rotating>div{box-sizing:border-box;position:relative}.la-ball-spin-fade-rotating{color:#fff;display:block;font-size:0}.la-ball-spin-fade-rotating.la-dark{color:#333}.la-ball-spin-fade-rotating>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-spin-fade-rotating{-webkit-animation:ball-spin-fade-rotate 6s linear infinite;animation:ball-spin-fade-rotate 6s linear infinite;height:32px;width:32px}.la-ball-spin-fade-rotating>div{-webkit-animation:ball-spin-fade 1s linear infinite;animation:ball-spin-fade 1s linear infinite;border-radius:100%;height:8px;left:50%;margin-left:-4px;margin-top:-4px;position:absolute;top:50%;width:8px}.la-ball-spin-fade-rotating>div:first-child{-webkit-animation-delay:-1.125s;animation-delay:-1.125s;left:50%;top:5%}.la-ball-spin-fade-rotating>div:nth-child(2){-webkit-animation-delay:-1.25s;animation-delay:-1.25s;left:81.8198051534%;top:18.1801948466%}.la-ball-spin-fade-rotating>div:nth-child(3){-webkit-animation-delay:-1.375s;animation-delay:-1.375s;left:95%;top:50%}.la-ball-spin-fade-rotating>div:nth-child(4){-webkit-animation-delay:-1.5s;animation-delay:-1.5s;left:81.8198051534%;top:81.8198051534%}.la-ball-spin-fade-rotating>div:nth-child(5){-webkit-animation-delay:-1.625s;animation-delay:-1.625s;left:50.0000000005%;top:94.9999999966%}.la-ball-spin-fade-rotating>div:nth-child(6){-webkit-animation-delay:-1.75s;animation-delay:-1.75s;left:18.1801949248%;top:81.8198046966%}.la-ball-spin-fade-rotating>div:nth-child(7){-webkit-animation-delay:-1.875s;animation-delay:-1.875s;left:5.0000051215%;top:49.9999750815%}.la-ball-spin-fade-rotating>div:nth-child(8){-webkit-animation-delay:-2s;animation-delay:-2s;left:18.1803700518%;top:18.179464974%}.la-ball-spin-fade-rotating.la-sm{height:16px;width:16px}.la-ball-spin-fade-rotating.la-sm>div{height:4px;margin-left:-2px;margin-top:-2px;width:4px}.la-ball-spin-fade-rotating.la-2x{height:64px;width:64px}.la-ball-spin-fade-rotating.la-2x>div{height:16px;margin-left:-8px;margin-top:-8px;width:16px}.la-ball-spin-fade-rotating.la-3x{height:96px;width:96px}.la-ball-spin-fade-rotating.la-3x>div{height:24px;margin-left:-12px;margin-top:-12px;width:24px}@-webkit-keyframes ball-spin-fade-rotate{to{transform:rotate(1turn)}}@keyframes ball-spin-fade-rotate{to{transform:rotate(1turn)}}.la-ball-spin-fade,.la-ball-spin-fade>div{box-sizing:border-box;position:relative}.la-ball-spin-fade{color:#fff;display:block;font-size:0}.la-ball-spin-fade.la-dark{color:#333}.la-ball-spin-fade>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-spin-fade{height:32px;width:32px}.la-ball-spin-fade>div{-webkit-animation:ball-spin-fade 1s linear infinite;animation:ball-spin-fade 1s linear infinite;border-radius:100%;height:8px;left:50%;margin-left:-4px;margin-top:-4px;position:absolute;top:50%;width:8px}.la-ball-spin-fade>div:first-child{-webkit-animation-delay:-1.125s;animation-delay:-1.125s;left:50%;top:5%}.la-ball-spin-fade>div:nth-child(2){-webkit-animation-delay:-1.25s;animation-delay:-1.25s;left:81.8198051534%;top:18.1801948466%}.la-ball-spin-fade>div:nth-child(3){-webkit-animation-delay:-1.375s;animation-delay:-1.375s;left:95%;top:50%}.la-ball-spin-fade>div:nth-child(4){-webkit-animation-delay:-1.5s;animation-delay:-1.5s;left:81.8198051534%;top:81.8198051534%}.la-ball-spin-fade>div:nth-child(5){-webkit-animation-delay:-1.625s;animation-delay:-1.625s;left:50.0000000005%;top:94.9999999966%}.la-ball-spin-fade>div:nth-child(6){-webkit-animation-delay:-1.75s;animation-delay:-1.75s;left:18.1801949248%;top:81.8198046966%}.la-ball-spin-fade>div:nth-child(7){-webkit-animation-delay:-1.875s;animation-delay:-1.875s;left:5.0000051215%;top:49.9999750815%}.la-ball-spin-fade>div:nth-child(8){-webkit-animation-delay:-2s;animation-delay:-2s;left:18.1803700518%;top:18.179464974%}.la-ball-spin-fade.la-sm{height:16px;width:16px}.la-ball-spin-fade.la-sm>div{height:4px;margin-left:-2px;margin-top:-2px;width:4px}.la-ball-spin-fade.la-2x{height:64px;width:64px}.la-ball-spin-fade.la-2x>div{height:16px;margin-left:-8px;margin-top:-8px;width:16px}.la-ball-spin-fade.la-3x{height:96px;width:96px}.la-ball-spin-fade.la-3x>div{height:24px;margin-left:-12px;margin-top:-12px;width:24px}@-webkit-keyframes ball-spin-fade{0%,to{opacity:1;transform:scale(1)}50%{opacity:.25;transform:scale(.5)}}@keyframes ball-spin-fade{0%,to{opacity:1;transform:scale(1)}50%{opacity:.25;transform:scale(.5)}}.la-ball-spin-rotate,.la-ball-spin-rotate>div{box-sizing:border-box;position:relative}.la-ball-spin-rotate{color:#fff;display:block;font-size:0}.la-ball-spin-rotate.la-dark{color:#333}.la-ball-spin-rotate>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-spin-rotate{-webkit-animation:ball-spin-rotate 2s linear infinite;animation:ball-spin-rotate 2s linear infinite;height:32px;width:32px}.la-ball-spin-rotate>div{-webkit-animation:ball-spin-bounce 2s ease-in-out infinite;animation:ball-spin-bounce 2s ease-in-out infinite;border-radius:100%;height:60%;position:absolute;top:0;width:60%}.la-ball-spin-rotate>div:last-child{-webkit-animation-delay:-1s;animation-delay:-1s;bottom:0;top:auto}.la-ball-spin-rotate.la-sm{height:16px;width:16px}.la-ball-spin-rotate.la-2x{height:64px;width:64px}.la-ball-spin-rotate.la-3x{height:96px;width:96px}@-webkit-keyframes ball-spin-rotate{to{transform:rotate(1turn)}}@keyframes ball-spin-rotate{to{transform:rotate(1turn)}}@-webkit-keyframes ball-spin-bounce{0%,to{transform:scale(0)}50%{transform:scale(1)}}@keyframes ball-spin-bounce{0%,to{transform:scale(0)}50%{transform:scale(1)}}.la-ball-spin,.la-ball-spin>div{box-sizing:border-box;position:relative}.la-ball-spin{color:#fff;display:block;font-size:0}.la-ball-spin.la-dark{color:#333}.la-ball-spin>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-spin{height:32px;width:32px}.la-ball-spin>div{-webkit-animation:ball-spin 1s ease-in-out infinite;animation:ball-spin 1s ease-in-out infinite;border-radius:100%;height:8px;left:50%;margin-left:-4px;margin-top:-4px;position:absolute;top:50%;width:8px}.la-ball-spin>div:first-child{-webkit-animation-delay:-1.125s;animation-delay:-1.125s;left:50%;top:5%}.la-ball-spin>div:nth-child(2){-webkit-animation-delay:-1.25s;animation-delay:-1.25s;left:81.8198051534%;top:18.1801948466%}.la-ball-spin>div:nth-child(3){-webkit-animation-delay:-1.375s;animation-delay:-1.375s;left:95%;top:50%}.la-ball-spin>div:nth-child(4){-webkit-animation-delay:-1.5s;animation-delay:-1.5s;left:81.8198051534%;top:81.8198051534%}.la-ball-spin>div:nth-child(5){-webkit-animation-delay:-1.625s;animation-delay:-1.625s;left:50.0000000005%;top:94.9999999966%}.la-ball-spin>div:nth-child(6){-webkit-animation-delay:-1.75s;animation-delay:-1.75s;left:18.1801949248%;top:81.8198046966%}.la-ball-spin>div:nth-child(7){-webkit-animation-delay:-1.875s;animation-delay:-1.875s;left:5.0000051215%;top:49.9999750815%}.la-ball-spin>div:nth-child(8){-webkit-animation-delay:-2s;animation-delay:-2s;left:18.1803700518%;top:18.179464974%}.la-ball-spin.la-sm{height:16px;width:16px}.la-ball-spin.la-sm>div{height:4px;margin-left:-2px;margin-top:-2px;width:4px}.la-ball-spin.la-2x{height:64px;width:64px}.la-ball-spin.la-2x>div{height:16px;margin-left:-8px;margin-top:-8px;width:16px}.la-ball-spin.la-3x{height:96px;width:96px}.la-ball-spin.la-3x>div{height:24px;margin-left:-12px;margin-top:-12px;width:24px}@-webkit-keyframes ball-spin{0%,to{opacity:1;transform:scale(1)}20%{opacity:1}80%{opacity:0;transform:scale(0)}}@keyframes ball-spin{0%,to{opacity:1;transform:scale(1)}20%{opacity:1}80%{opacity:0;transform:scale(0)}}.la-ball-square-clockwise-spin,.la-ball-square-clockwise-spin>div{box-sizing:border-box;position:relative}.la-ball-square-clockwise-spin{color:#fff;display:block;font-size:0}.la-ball-square-clockwise-spin.la-dark{color:#333}.la-ball-square-clockwise-spin>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-square-clockwise-spin{height:26px;width:26px}.la-ball-square-clockwise-spin>div{-webkit-animation:ball-square-clockwise-spin 1s ease-in-out infinite;animation:ball-square-clockwise-spin 1s ease-in-out infinite;border-radius:100%;height:12px;left:50%;margin-left:-6px;margin-top:-6px;position:absolute;top:50%;width:12px}.la-ball-square-clockwise-spin>div:first-child{-webkit-animation-delay:-.875s;animation-delay:-.875s;left:0;top:0}.la-ball-square-clockwise-spin>div:nth-child(2){-webkit-animation-delay:-.75s;animation-delay:-.75s;left:50%;top:0}.la-ball-square-clockwise-spin>div:nth-child(3){-webkit-animation-delay:-.625s;animation-delay:-.625s;left:100%;top:0}.la-ball-square-clockwise-spin>div:nth-child(4){-webkit-animation-delay:-.5s;animation-delay:-.5s;left:100%;top:50%}.la-ball-square-clockwise-spin>div:nth-child(5){-webkit-animation-delay:-.375s;animation-delay:-.375s;left:100%;top:100%}.la-ball-square-clockwise-spin>div:nth-child(6){-webkit-animation-delay:-.25s;animation-delay:-.25s;left:50%;top:100%}.la-ball-square-clockwise-spin>div:nth-child(7){-webkit-animation-delay:-.125s;animation-delay:-.125s;left:0;top:100%}.la-ball-square-clockwise-spin>div:nth-child(8){-webkit-animation-delay:0s;animation-delay:0s;left:0;top:50%}.la-ball-square-clockwise-spin.la-sm{height:12px;width:12px}.la-ball-square-clockwise-spin.la-sm>div{height:6px;margin-left:-3px;margin-top:-3px;width:6px}.la-ball-square-clockwise-spin.la-2x{height:52px;width:52px}.la-ball-square-clockwise-spin.la-2x>div{height:24px;margin-left:-12px;margin-top:-12px;width:24px}.la-ball-square-clockwise-spin.la-3x{height:78px;width:78px}.la-ball-square-clockwise-spin.la-3x>div{height:36px;margin-left:-18px;margin-top:-18px;width:36px}@-webkit-keyframes ball-square-clockwise-spin{0%,40%,to{transform:scale(.4)}70%{transform:scale(1)}}@keyframes ball-square-clockwise-spin{0%,40%,to{transform:scale(.4)}70%{transform:scale(1)}}.la-ball-square-spin,.la-ball-square-spin>div{box-sizing:border-box;position:relative}.la-ball-square-spin{color:#fff;display:block;font-size:0}.la-ball-square-spin.la-dark{color:#333}.la-ball-square-spin>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-square-spin{height:26px;width:26px}.la-ball-square-spin>div{-webkit-animation:ball-square-spin 1s ease-in-out infinite;animation:ball-square-spin 1s ease-in-out infinite;border-radius:100%;height:12px;left:50%;margin-left:-6px;margin-top:-6px;position:absolute;top:50%;width:12px}.la-ball-square-spin>div:first-child{-webkit-animation-delay:-1.125s;animation-delay:-1.125s;left:0;top:0}.la-ball-square-spin>div:nth-child(2){-webkit-animation-delay:-1.25s;animation-delay:-1.25s;left:50%;top:0}.la-ball-square-spin>div:nth-child(3){-webkit-animation-delay:-1.375s;animation-delay:-1.375s;left:100%;top:0}.la-ball-square-spin>div:nth-child(4){-webkit-animation-delay:-1.5s;animation-delay:-1.5s;left:100%;top:50%}.la-ball-square-spin>div:nth-child(5){-webkit-animation-delay:-1.625s;animation-delay:-1.625s;left:100%;top:100%}.la-ball-square-spin>div:nth-child(6){-webkit-animation-delay:-1.75s;animation-delay:-1.75s;left:50%;top:100%}.la-ball-square-spin>div:nth-child(7){-webkit-animation-delay:-1.875s;animation-delay:-1.875s;left:0;top:100%}.la-ball-square-spin>div:nth-child(8){-webkit-animation-delay:-2s;animation-delay:-2s;left:0;top:50%}.la-ball-square-spin.la-sm{height:12px;width:12px}.la-ball-square-spin.la-sm>div{height:6px;margin-left:-3px;margin-top:-3px;width:6px}.la-ball-square-spin.la-2x{height:52px;width:52px}.la-ball-square-spin.la-2x>div{height:24px;margin-left:-12px;margin-top:-12px;width:24px}.la-ball-square-spin.la-3x{height:78px;width:78px}.la-ball-square-spin.la-3x>div{height:36px;margin-left:-18px;margin-top:-18px;width:36px}@-webkit-keyframes ball-square-spin{0%,40%,to{transform:scale(.4)}70%{transform:scale(1)}}@keyframes ball-square-spin{0%,40%,to{transform:scale(.4)}70%{transform:scale(1)}}.la-ball-triangle-path,.la-ball-triangle-path>div{box-sizing:border-box;position:relative}.la-ball-triangle-path{color:#fff;display:block;font-size:0}.la-ball-triangle-path.la-dark{color:#333}.la-ball-triangle-path>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-triangle-path{height:32px;width:32px}.la-ball-triangle-path>div{border-radius:100%;height:10px;left:0;position:absolute;top:0;width:10px}.la-ball-triangle-path>div:first-child{-webkit-animation:ball-triangle-path-ball-one 2s ease-in-out 0s infinite;animation:ball-triangle-path-ball-one 2s ease-in-out 0s infinite}.la-ball-triangle-path>div:nth-child(2){-webkit-animation:ball-triangle-path-ball-two 2s ease-in-out 0s infinite;animation:ball-triangle-path-ball-two 2s ease-in-out 0s infinite}.la-ball-triangle-path>div:nth-child(3){-webkit-animation:ball-triangle-path-ball-tree 2s ease-in-out 0s infinite;animation:ball-triangle-path-ball-tree 2s ease-in-out 0s infinite}.la-ball-triangle-path.la-sm{height:16px;width:16px}.la-ball-triangle-path.la-sm>div{height:4px;width:4px}.la-ball-triangle-path.la-2x{height:64px;width:64px}.la-ball-triangle-path.la-2x>div{height:20px;width:20px}.la-ball-triangle-path.la-3x{height:96px;width:96px}.la-ball-triangle-path.la-3x>div{height:30px;width:30px}@-webkit-keyframes ball-triangle-path-ball-one{0%{transform:translateY(220%)}17%{opacity:.25}33%{opacity:1;transform:translate(110%)}50%{opacity:.25}66%{opacity:1;transform:translate(220%,220%)}83%{opacity:.25}to{opacity:1;transform:translateY(220%)}}@keyframes ball-triangle-path-ball-one{0%{transform:translateY(220%)}17%{opacity:.25}33%{opacity:1;transform:translate(110%)}50%{opacity:.25}66%{opacity:1;transform:translate(220%,220%)}83%{opacity:.25}to{opacity:1;transform:translateY(220%)}}@-webkit-keyframes ball-triangle-path-ball-two{0%{transform:translate(110%)}17%{opacity:.25}33%{opacity:1;transform:translate(220%,220%)}50%{opacity:.25}66%{opacity:1;transform:translateY(220%)}83%{opacity:.25}to{opacity:1;transform:translate(110%)}}@keyframes ball-triangle-path-ball-two{0%{transform:translate(110%)}17%{opacity:.25}33%{opacity:1;transform:translate(220%,220%)}50%{opacity:.25}66%{opacity:1;transform:translateY(220%)}83%{opacity:.25}to{opacity:1;transform:translate(110%)}}@-webkit-keyframes ball-triangle-path-ball-tree{0%{transform:translate(220%,220%)}17%{opacity:.25}33%{opacity:1;transform:translateY(220%)}50%{opacity:.25}66%{opacity:1;transform:translate(110%)}83%{opacity:.25}to{opacity:1;transform:translate(220%,220%)}}@keyframes ball-triangle-path-ball-tree{0%{transform:translate(220%,220%)}17%{opacity:.25}33%{opacity:1;transform:translateY(220%)}50%{opacity:.25}66%{opacity:1;transform:translate(110%)}83%{opacity:.25}to{opacity:1;transform:translate(220%,220%)}}.la-ball-zig-zag-deflect,.la-ball-zig-zag-deflect>div{box-sizing:border-box;position:relative}.la-ball-zig-zag-deflect{color:#fff;display:block;font-size:0}.la-ball-zig-zag-deflect.la-dark{color:#333}.la-ball-zig-zag-deflect>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-zig-zag-deflect{height:32px;position:relative;width:32px}.la-ball-zig-zag-deflect>div{border-radius:100%;height:10px;left:50%;margin-left:-5px;margin-top:-5px;position:absolute;top:50%;width:10px}.la-ball-zig-zag-deflect>div:first-child{-webkit-animation:ball-zig-deflect 1.5s linear 0s infinite;animation:ball-zig-deflect 1.5s linear 0s infinite}.la-ball-zig-zag-deflect>div:last-child{-webkit-animation:ball-zag-deflect 1.5s linear 0s infinite;animation:ball-zag-deflect 1.5s linear 0s infinite}.la-ball-zig-zag-deflect.la-sm{height:16px;width:16px}.la-ball-zig-zag-deflect.la-sm>div{height:4px;margin-left:-2px;margin-top:-2px;width:4px}.la-ball-zig-zag-deflect.la-2x{height:64px;width:64px}.la-ball-zig-zag-deflect.la-2x>div{height:20px;margin-left:-10px;margin-top:-10px;width:20px}.la-ball-zig-zag-deflect.la-3x{height:96px;width:96px}.la-ball-zig-zag-deflect.la-3x>div{height:30px;margin-left:-15px;margin-top:-15px;width:30px}@-webkit-keyframes ball-zig-deflect{17%{transform:translate(-80%,-160%)}34%{transform:translate(80%,-160%)}50%{transform:translate(0)}67%{transform:translate(80%,-160%)}84%{transform:translate(-80%,-160%)}to{transform:translate(0)}}@keyframes ball-zig-deflect{17%{transform:translate(-80%,-160%)}34%{transform:translate(80%,-160%)}50%{transform:translate(0)}67%{transform:translate(80%,-160%)}84%{transform:translate(-80%,-160%)}to{transform:translate(0)}}@-webkit-keyframes ball-zag-deflect{17%{transform:translate(80%,160%)}34%{transform:translate(-80%,160%)}50%{transform:translate(0)}67%{transform:translate(-80%,160%)}84%{transform:translate(80%,160%)}to{transform:translate(0)}}@keyframes ball-zag-deflect{17%{transform:translate(80%,160%)}34%{transform:translate(-80%,160%)}50%{transform:translate(0)}67%{transform:translate(-80%,160%)}84%{transform:translate(80%,160%)}to{transform:translate(0)}}.la-ball-zig-zag,.la-ball-zig-zag>div{box-sizing:border-box;position:relative}.la-ball-zig-zag{color:#fff;display:block;font-size:0}.la-ball-zig-zag.la-dark{color:#333}.la-ball-zig-zag>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-ball-zig-zag{height:32px;position:relative;width:32px}.la-ball-zig-zag>div{border-radius:100%;height:10px;left:50%;margin-left:-5px;margin-top:-5px;position:absolute;top:50%;width:10px}.la-ball-zig-zag>div:first-child{-webkit-animation:ball-zig-effect .7s linear 0s infinite;animation:ball-zig-effect .7s linear 0s infinite}.la-ball-zig-zag>div:last-child{-webkit-animation:ball-zag-effect .7s linear 0s infinite;animation:ball-zag-effect .7s linear 0s infinite}.la-ball-zig-zag.la-sm{height:16px;width:16px}.la-ball-zig-zag.la-sm>div{height:4px;margin-left:-2px;margin-top:-2px;width:4px}.la-ball-zig-zag.la-2x{height:64px;width:64px}.la-ball-zig-zag.la-2x>div{height:20px;margin-left:-10px;margin-top:-10px;width:20px}.la-ball-zig-zag.la-3x{height:96px;width:96px}.la-ball-zig-zag.la-3x>div{height:30px;margin-left:-15px;margin-top:-15px;width:30px}@-webkit-keyframes ball-zig-effect{0%{transform:translate(0)}33%{transform:translate(-75%,-150%)}66%{transform:translate(75%,-150%)}to{transform:translate(0)}}@keyframes ball-zig-effect{0%{transform:translate(0)}33%{transform:translate(-75%,-150%)}66%{transform:translate(75%,-150%)}to{transform:translate(0)}}@-webkit-keyframes ball-zag-effect{0%{transform:translate(0)}33%{transform:translate(75%,150%)}66%{transform:translate(-75%,150%)}to{transform:translate(0)}}@keyframes ball-zag-effect{0%{transform:translate(0)}33%{transform:translate(75%,150%)}66%{transform:translate(-75%,150%)}to{transform:translate(0)}}.la-cog,.la-cog>div{box-sizing:border-box;position:relative}.la-cog{color:#fff;display:block;font-size:0}.la-cog.la-dark{color:#333}.la-cog>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-cog{height:31px;width:31px}.la-cog>div{-webkit-animation:cog-rotate 4s linear infinite;animation:cog-rotate 4s linear infinite;background-color:transparent;border-radius:100%;border-style:dashed;border-width:2px;height:100%;width:100%}.la-cog>div:after{border:2px solid;border-radius:100%;content:\\\"\\\";height:100%;left:0;position:absolute;top:0;width:100%}.la-cog.la-sm{height:15px;width:15px}.la-cog.la-sm>div,.la-cog.la-sm>div:after{border-width:1px}.la-cog.la-2x{height:61px;width:61px}.la-cog.la-2x>div,.la-cog.la-2x>div:after{border-width:4px}.la-cog.la-3x{height:91px;width:91px}.la-cog.la-3x>div,.la-cog.la-3x>div:after{border-width:6px}@-webkit-keyframes cog-rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes cog-rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.la-cube-transition,.la-cube-transition>div{box-sizing:border-box;position:relative}.la-cube-transition{color:#fff;display:block;font-size:0}.la-cube-transition.la-dark{color:#333}.la-cube-transition>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-cube-transition{height:32px;width:32px}.la-cube-transition>div{-webkit-animation:cube-transition 1.6s ease-in-out 0s infinite;animation:cube-transition 1.6s ease-in-out 0s infinite;border-radius:0;height:14px;left:0;margin-left:-7px;margin-top:-7px;position:absolute;top:0;width:14px}.la-cube-transition>div:last-child{-webkit-animation-delay:-.8s;animation-delay:-.8s}.la-cube-transition.la-sm{height:16px;width:16px}.la-cube-transition.la-sm>div{height:6px;margin-left:-3px;margin-top:-3px;width:6px}.la-cube-transition.la-2x{height:64px;width:64px}.la-cube-transition.la-2x>div{height:28px;margin-left:-14px;margin-top:-14px;width:28px}.la-cube-transition.la-3x{height:96px;width:96px}.la-cube-transition.la-3x>div{height:42px;margin-left:-21px;margin-top:-21px;width:42px}@-webkit-keyframes cube-transition{25%{left:100%;top:0;transform:scale(.5) rotate(-90deg)}50%{left:100%;top:100%;transform:scale(1) rotate(-180deg)}75%{left:0;top:100%;transform:scale(.5) rotate(-270deg)}to{left:0;top:0;transform:scale(1) rotate(-1turn)}}@keyframes cube-transition{25%{left:100%;top:0;transform:scale(.5) rotate(-90deg)}50%{left:100%;top:100%;transform:scale(1) rotate(-180deg)}75%{left:0;top:100%;transform:scale(.5) rotate(-270deg)}to{left:0;top:0;transform:scale(1) rotate(-1turn)}}.la-fire,.la-fire>div{box-sizing:border-box;position:relative}.la-fire{color:#fff;display:block;font-size:0}.la-fire.la-dark{color:#333}.la-fire>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-fire{height:32px;width:32px}.la-fire>div{-webkit-animation:fire-diamonds 1.5s linear infinite;animation:fire-diamonds 1.5s linear infinite;border-radius:0;border-radius:2px;bottom:0;height:12px;left:50%;position:absolute;transform:translateY(0) translateX(-50%) rotate(45deg) scale(0);width:12px}.la-fire>div:first-child{-webkit-animation-delay:-.85s;animation-delay:-.85s}.la-fire>div:nth-child(2){-webkit-animation-delay:-1.85s;animation-delay:-1.85s}.la-fire>div:nth-child(3){-webkit-animation-delay:-2.85s;animation-delay:-2.85s}.la-fire.la-sm{height:16px;width:16px}.la-fire.la-sm>div{height:6px;width:6px}.la-fire.la-2x{height:64px;width:64px}.la-fire.la-2x>div{height:24px;width:24px}.la-fire.la-3x{height:96px;width:96px}.la-fire.la-3x>div{height:36px;width:36px}@-webkit-keyframes fire-diamonds{0%{transform:translateY(75%) translateX(-50%) rotate(45deg) scale(0)}50%{transform:translateY(-87.5%) translateX(-50%) rotate(45deg) scale(1)}to{transform:translateY(-212.5%) translateX(-50%) rotate(45deg) scale(0)}}@keyframes fire-diamonds{0%{transform:translateY(75%) translateX(-50%) rotate(45deg) scale(0)}50%{transform:translateY(-87.5%) translateX(-50%) rotate(45deg) scale(1)}to{transform:translateY(-212.5%) translateX(-50%) rotate(45deg) scale(0)}}.la-line-scale-party,.la-line-scale-party>div{box-sizing:border-box;position:relative}.la-line-scale-party{color:#fff;display:block;font-size:0}.la-line-scale-party.la-dark{color:#333}.la-line-scale-party>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-line-scale-party{height:32px;width:40px}.la-line-scale-party>div{-webkit-animation-iteration-count:infinite;-webkit-animation-name:line-scale-party;animation-iteration-count:infinite;animation-name:line-scale-party;border-radius:0;height:32px;margin:0 2px;width:4px}.la-line-scale-party>div:first-child{-webkit-animation-delay:-.23s;-webkit-animation-duration:.43s;animation-delay:-.23s;animation-duration:.43s}.la-line-scale-party>div:nth-child(2){-webkit-animation-delay:-.32s;-webkit-animation-duration:.62s;animation-delay:-.32s;animation-duration:.62s}.la-line-scale-party>div:nth-child(3){-webkit-animation-delay:-.44s;-webkit-animation-duration:.43s;animation-delay:-.44s;animation-duration:.43s}.la-line-scale-party>div:nth-child(4){-webkit-animation-delay:-.31s;-webkit-animation-duration:.8s;animation-delay:-.31s;animation-duration:.8s}.la-line-scale-party>div:nth-child(5){-webkit-animation-delay:-.24s;-webkit-animation-duration:.74s;animation-delay:-.24s;animation-duration:.74s}.la-line-scale-party.la-sm{height:16px;width:20px}.la-line-scale-party.la-sm>div{height:16px;margin:0 1px;width:2px}.la-line-scale-party.la-2x{height:64px;width:80px}.la-line-scale-party.la-2x>div{height:64px;margin:0 4px;width:8px}.la-line-scale-party.la-3x{height:96px;width:120px}.la-line-scale-party.la-3x>div{height:96px;margin:0 6px;width:12px}@-webkit-keyframes line-scale-party{0%{transform:scaleY(1)}50%{transform:scaleY(.3)}to{transform:scaleY(1)}}@keyframes line-scale-party{0%{transform:scaleY(1)}50%{transform:scaleY(.3)}to{transform:scaleY(1)}}.la-line-scale-pulse-out-rapid,.la-line-scale-pulse-out-rapid>div{box-sizing:border-box;position:relative}.la-line-scale-pulse-out-rapid{color:#fff;display:block;font-size:0}.la-line-scale-pulse-out-rapid.la-dark{color:#333}.la-line-scale-pulse-out-rapid>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-line-scale-pulse-out-rapid{height:32px;width:40px}.la-line-scale-pulse-out-rapid>div{-webkit-animation:line-scale-pulse-out-rapid .9s cubic-bezier(.11,.49,.38,.78) infinite;animation:line-scale-pulse-out-rapid .9s cubic-bezier(.11,.49,.38,.78) infinite;border-radius:0;height:32px;margin:0 2px;width:4px}.la-line-scale-pulse-out-rapid>div:nth-child(3){-webkit-animation-delay:-.9s;animation-delay:-.9s}.la-line-scale-pulse-out-rapid>div:nth-child(2),.la-line-scale-pulse-out-rapid>div:nth-child(4){-webkit-animation-delay:-.65s;animation-delay:-.65s}.la-line-scale-pulse-out-rapid>div:first-child,.la-line-scale-pulse-out-rapid>div:nth-child(5){-webkit-animation-delay:-.4s;animation-delay:-.4s}.la-line-scale-pulse-out-rapid.la-sm{height:16px;width:20px}.la-line-scale-pulse-out-rapid.la-sm>div{height:16px;margin:0 1px;width:2px}.la-line-scale-pulse-out-rapid.la-2x{height:64px;width:80px}.la-line-scale-pulse-out-rapid.la-2x>div{height:64px;margin:0 4px;width:8px}.la-line-scale-pulse-out-rapid.la-3x{height:96px;width:120px}.la-line-scale-pulse-out-rapid.la-3x>div{height:96px;margin:0 6px;width:12px}@-webkit-keyframes line-scale-pulse-out-rapid{0%{transform:scaley(1)}80%{transform:scaley(.3)}90%{transform:scaley(1)}}@keyframes line-scale-pulse-out-rapid{0%{transform:scaley(1)}80%{transform:scaley(.3)}90%{transform:scaley(1)}}.la-line-scale-pulse-out,.la-line-scale-pulse-out>div{box-sizing:border-box;position:relative}.la-line-scale-pulse-out{color:#fff;display:block;font-size:0}.la-line-scale-pulse-out.la-dark{color:#333}.la-line-scale-pulse-out>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-line-scale-pulse-out{height:32px;width:40px}.la-line-scale-pulse-out>div{-webkit-animation:line-scale-pulse-out .9s cubic-bezier(.85,.25,.37,.85) infinite;animation:line-scale-pulse-out .9s cubic-bezier(.85,.25,.37,.85) infinite;border-radius:0;height:32px;margin:0 2px;width:4px}.la-line-scale-pulse-out>div:nth-child(3){-webkit-animation-delay:-.9s;animation-delay:-.9s}.la-line-scale-pulse-out>div:nth-child(2),.la-line-scale-pulse-out>div:nth-child(4){-webkit-animation-delay:-.7s;animation-delay:-.7s}.la-line-scale-pulse-out>div:first-child,.la-line-scale-pulse-out>div:nth-child(5){-webkit-animation-delay:-.5s;animation-delay:-.5s}.la-line-scale-pulse-out.la-sm{height:16px;width:20px}.la-line-scale-pulse-out.la-sm>div{height:16px;margin:0 1px;width:2px}.la-line-scale-pulse-out.la-2x{height:64px;width:80px}.la-line-scale-pulse-out.la-2x>div{height:64px;margin:0 4px;width:8px}.la-line-scale-pulse-out.la-3x{height:96px;width:120px}.la-line-scale-pulse-out.la-3x>div{height:96px;margin:0 6px;width:12px}@-webkit-keyframes line-scale-pulse-out{0%{transform:scaley(1)}50%{transform:scaley(.3)}to{transform:scaley(1)}}@keyframes line-scale-pulse-out{0%{transform:scaley(1)}50%{transform:scaley(.3)}to{transform:scaley(1)}}.la-line-scale,.la-line-scale>div{box-sizing:border-box;position:relative}.la-line-scale{color:#fff;display:block;font-size:0}.la-line-scale.la-dark{color:#333}.la-line-scale>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-line-scale{height:32px;width:40px}.la-line-scale>div{-webkit-animation:line-scale 1.2s ease infinite;animation:line-scale 1.2s ease infinite;border-radius:0;height:32px;margin:0 2px;width:4px}.la-line-scale>div:first-child{-webkit-animation-delay:-1.2s;animation-delay:-1.2s}.la-line-scale>div:nth-child(2){-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.la-line-scale>div:nth-child(3){-webkit-animation-delay:-1s;animation-delay:-1s}.la-line-scale>div:nth-child(4){-webkit-animation-delay:-.9s;animation-delay:-.9s}.la-line-scale>div:nth-child(5){-webkit-animation-delay:-.8s;animation-delay:-.8s}.la-line-scale.la-sm{height:16px;width:20px}.la-line-scale.la-sm>div{height:16px;margin:0 1px;width:2px}.la-line-scale.la-2x{height:64px;width:80px}.la-line-scale.la-2x>div{height:64px;margin:0 4px;width:8px}.la-line-scale.la-3x{height:96px;width:120px}.la-line-scale.la-3x>div{height:96px;margin:0 6px;width:12px}@-webkit-keyframes line-scale{0%,40%,to{transform:scaleY(.4)}20%{transform:scaleY(1)}}@keyframes line-scale{0%,40%,to{transform:scaleY(.4)}20%{transform:scaleY(1)}}.la-line-spin-clockwise-fade-rotating,.la-line-spin-clockwise-fade-rotating>div{box-sizing:border-box;position:relative}.la-line-spin-clockwise-fade-rotating{color:#fff;display:block;font-size:0}.la-line-spin-clockwise-fade-rotating.la-dark{color:#333}.la-line-spin-clockwise-fade-rotating>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-line-spin-clockwise-fade-rotating{-webkit-animation:line-spin-clockwise-fade-rotating-rotate 6s linear infinite;animation:line-spin-clockwise-fade-rotating-rotate 6s linear infinite;height:32px;width:32px}.la-line-spin-clockwise-fade-rotating>div{-webkit-animation:line-spin-clockwise-fade-rotating 1s ease-in-out infinite;animation:line-spin-clockwise-fade-rotating 1s ease-in-out infinite;border-radius:0;height:10px;margin:-5px 2px 2px -1px;position:absolute;width:2px}.la-line-spin-clockwise-fade-rotating>div:first-child{-webkit-animation-delay:-.875s;animation-delay:-.875s;left:50%;top:15%;transform:rotate(0deg)}.la-line-spin-clockwise-fade-rotating>div:nth-child(2){-webkit-animation-delay:-.75s;animation-delay:-.75s;left:74.7487373415%;top:25.2512626585%;transform:rotate(45deg)}.la-line-spin-clockwise-fade-rotating>div:nth-child(3){-webkit-animation-delay:-.625s;animation-delay:-.625s;left:85%;top:50%;transform:rotate(90deg)}.la-line-spin-clockwise-fade-rotating>div:nth-child(4){-webkit-animation-delay:-.5s;animation-delay:-.5s;left:74.7487373415%;top:74.7487373415%;transform:rotate(135deg)}.la-line-spin-clockwise-fade-rotating>div:nth-child(5){-webkit-animation-delay:-.375s;animation-delay:-.375s;left:50.0000000004%;top:84.9999999974%;transform:rotate(180deg)}.la-line-spin-clockwise-fade-rotating>div:nth-child(6){-webkit-animation-delay:-.25s;animation-delay:-.25s;left:25.2512627193%;top:74.7487369862%;transform:rotate(225deg)}.la-line-spin-clockwise-fade-rotating>div:nth-child(7){-webkit-animation-delay:-.125s;animation-delay:-.125s;left:15.0000039834%;top:49.9999806189%;transform:rotate(270deg)}.la-line-spin-clockwise-fade-rotating>div:nth-child(8){-webkit-animation-delay:0s;animation-delay:0s;left:25.2513989292%;top:25.2506949798%;transform:rotate(315deg)}.la-line-spin-clockwise-fade-rotating.la-sm{height:16px;width:16px}.la-line-spin-clockwise-fade-rotating.la-sm>div{height:4px;margin-left:0;margin-top:-2px;width:1px}.la-line-spin-clockwise-fade-rotating.la-2x{height:64px;width:64px}.la-line-spin-clockwise-fade-rotating.la-2x>div{height:20px;margin-left:-2px;margin-top:-10px;width:4px}.la-line-spin-clockwise-fade-rotating.la-3x{height:96px;width:96px}.la-line-spin-clockwise-fade-rotating.la-3x>div{height:30px;margin-left:-3px;margin-top:-15px;width:6px}@-webkit-keyframes line-spin-clockwise-fade-rotating-rotate{to{transform:rotate(-1turn)}}@keyframes line-spin-clockwise-fade-rotating-rotate{to{transform:rotate(-1turn)}}@-webkit-keyframes line-spin-clockwise-fade-rotating{50%{opacity:.2}to{opacity:1}}@keyframes line-spin-clockwise-fade-rotating{50%{opacity:.2}to{opacity:1}}.la-line-spin-clockwise-fade,.la-line-spin-clockwise-fade>div{box-sizing:border-box;position:relative}.la-line-spin-clockwise-fade{color:#fff;display:block;font-size:0}.la-line-spin-clockwise-fade.la-dark{color:#333}.la-line-spin-clockwise-fade>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-line-spin-clockwise-fade{height:32px;width:32px}.la-line-spin-clockwise-fade>div{-webkit-animation:line-spin-clockwise-fade 1s ease-in-out infinite;animation:line-spin-clockwise-fade 1s ease-in-out infinite;border-radius:0;height:10px;margin:-5px 2px 2px -1px;position:absolute;width:2px}.la-line-spin-clockwise-fade>div:first-child{-webkit-animation-delay:-.875s;animation-delay:-.875s;left:50%;top:15%;transform:rotate(0deg)}.la-line-spin-clockwise-fade>div:nth-child(2){-webkit-animation-delay:-.75s;animation-delay:-.75s;left:74.7487373415%;top:25.2512626585%;transform:rotate(45deg)}.la-line-spin-clockwise-fade>div:nth-child(3){-webkit-animation-delay:-.625s;animation-delay:-.625s;left:85%;top:50%;transform:rotate(90deg)}.la-line-spin-clockwise-fade>div:nth-child(4){-webkit-animation-delay:-.5s;animation-delay:-.5s;left:74.7487373415%;top:74.7487373415%;transform:rotate(135deg)}.la-line-spin-clockwise-fade>div:nth-child(5){-webkit-animation-delay:-.375s;animation-delay:-.375s;left:50.0000000004%;top:84.9999999974%;transform:rotate(180deg)}.la-line-spin-clockwise-fade>div:nth-child(6){-webkit-animation-delay:-.25s;animation-delay:-.25s;left:25.2512627193%;top:74.7487369862%;transform:rotate(225deg)}.la-line-spin-clockwise-fade>div:nth-child(7){-webkit-animation-delay:-.125s;animation-delay:-.125s;left:15.0000039834%;top:49.9999806189%;transform:rotate(270deg)}.la-line-spin-clockwise-fade>div:nth-child(8){-webkit-animation-delay:0s;animation-delay:0s;left:25.2513989292%;top:25.2506949798%;transform:rotate(315deg)}.la-line-spin-clockwise-fade.la-sm{height:16px;width:16px}.la-line-spin-clockwise-fade.la-sm>div{height:4px;margin-left:0;margin-top:-2px;width:1px}.la-line-spin-clockwise-fade.la-2x{height:64px;width:64px}.la-line-spin-clockwise-fade.la-2x>div{height:20px;margin-left:-2px;margin-top:-10px;width:4px}.la-line-spin-clockwise-fade.la-3x{height:96px;width:96px}.la-line-spin-clockwise-fade.la-3x>div{height:30px;margin-left:-3px;margin-top:-15px;width:6px}@-webkit-keyframes line-spin-clockwise-fade{50%{opacity:.2}to{opacity:1}}@keyframes line-spin-clockwise-fade{50%{opacity:.2}to{opacity:1}}.la-line-spin-fade-rotating,.la-line-spin-fade-rotating>div{box-sizing:border-box;position:relative}.la-line-spin-fade-rotating{color:#fff;display:block;font-size:0}.la-line-spin-fade-rotating.la-dark{color:#333}.la-line-spin-fade-rotating>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-line-spin-fade-rotating{-webkit-animation:ball-spin-fade-rotating-rotate 6s linear infinite;animation:ball-spin-fade-rotating-rotate 6s linear infinite;height:32px;width:32px}.la-line-spin-fade-rotating>div{-webkit-animation:line-spin-fade-rotating 1s ease-in-out infinite;animation:line-spin-fade-rotating 1s ease-in-out infinite;border-radius:0;height:10px;margin:-5px 2px 2px -1px;position:absolute;width:2px}.la-line-spin-fade-rotating>div:first-child{-webkit-animation-delay:-1.125s;animation-delay:-1.125s;left:50%;top:15%;transform:rotate(0deg)}.la-line-spin-fade-rotating>div:nth-child(2){-webkit-animation-delay:-1.25s;animation-delay:-1.25s;left:74.7487373415%;top:25.2512626585%;transform:rotate(45deg)}.la-line-spin-fade-rotating>div:nth-child(3){-webkit-animation-delay:-1.375s;animation-delay:-1.375s;left:85%;top:50%;transform:rotate(90deg)}.la-line-spin-fade-rotating>div:nth-child(4){-webkit-animation-delay:-1.5s;animation-delay:-1.5s;left:74.7487373415%;top:74.7487373415%;transform:rotate(135deg)}.la-line-spin-fade-rotating>div:nth-child(5){-webkit-animation-delay:-1.625s;animation-delay:-1.625s;left:50.0000000004%;top:84.9999999974%;transform:rotate(180deg)}.la-line-spin-fade-rotating>div:nth-child(6){-webkit-animation-delay:-1.75s;animation-delay:-1.75s;left:25.2512627193%;top:74.7487369862%;transform:rotate(225deg)}.la-line-spin-fade-rotating>div:nth-child(7){-webkit-animation-delay:-1.875s;animation-delay:-1.875s;left:15.0000039834%;top:49.9999806189%;transform:rotate(270deg)}.la-line-spin-fade-rotating>div:nth-child(8){-webkit-animation-delay:-2s;animation-delay:-2s;left:25.2513989292%;top:25.2506949798%;transform:rotate(315deg)}.la-line-spin-fade-rotating.la-sm{height:16px;width:16px}.la-line-spin-fade-rotating.la-sm>div{height:4px;margin-left:0;margin-top:-2px;width:1px}.la-line-spin-fade-rotating.la-2x{height:64px;width:64px}.la-line-spin-fade-rotating.la-2x>div{height:20px;margin-left:-2px;margin-top:-10px;width:4px}.la-line-spin-fade-rotating.la-3x{height:96px;width:96px}.la-line-spin-fade-rotating.la-3x>div{height:30px;margin-left:-3px;margin-top:-15px;width:6px}@-webkit-keyframes ball-spin-fade-rotating-rotate{to{transform:rotate(1turn)}}@keyframes ball-spin-fade-rotating-rotate{to{transform:rotate(1turn)}}@-webkit-keyframes line-spin-fade-rotating{50%{opacity:.2}to{opacity:1}}@keyframes line-spin-fade-rotating{50%{opacity:.2}to{opacity:1}}.la-line-spin-fade,.la-line-spin-fade>div{box-sizing:border-box;position:relative}.la-line-spin-fade{color:#fff;display:block;font-size:0}.la-line-spin-fade.la-dark{color:#333}.la-line-spin-fade>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-line-spin-fade{height:32px;width:32px}.la-line-spin-fade>div{-webkit-animation:line-spin-fade 1s ease-in-out infinite;animation:line-spin-fade 1s ease-in-out infinite;border-radius:0;height:10px;margin:-5px 2px 2px -1px;position:absolute;width:2px}.la-line-spin-fade>div:first-child{-webkit-animation-delay:-1.125s;animation-delay:-1.125s;left:50%;top:15%;transform:rotate(0deg)}.la-line-spin-fade>div:nth-child(2){-webkit-animation-delay:-1.25s;animation-delay:-1.25s;left:74.7487373415%;top:25.2512626585%;transform:rotate(45deg)}.la-line-spin-fade>div:nth-child(3){-webkit-animation-delay:-1.375s;animation-delay:-1.375s;left:85%;top:50%;transform:rotate(90deg)}.la-line-spin-fade>div:nth-child(4){-webkit-animation-delay:-1.5s;animation-delay:-1.5s;left:74.7487373415%;top:74.7487373415%;transform:rotate(135deg)}.la-line-spin-fade>div:nth-child(5){-webkit-animation-delay:-1.625s;animation-delay:-1.625s;left:50.0000000004%;top:84.9999999974%;transform:rotate(180deg)}.la-line-spin-fade>div:nth-child(6){-webkit-animation-delay:-1.75s;animation-delay:-1.75s;left:25.2512627193%;top:74.7487369862%;transform:rotate(225deg)}.la-line-spin-fade>div:nth-child(7){-webkit-animation-delay:-1.875s;animation-delay:-1.875s;left:15.0000039834%;top:49.9999806189%;transform:rotate(270deg)}.la-line-spin-fade>div:nth-child(8){-webkit-animation-delay:-2s;animation-delay:-2s;left:25.2513989292%;top:25.2506949798%;transform:rotate(315deg)}.la-line-spin-fade.la-sm{height:16px;width:16px}.la-line-spin-fade.la-sm>div{height:4px;margin-left:0;margin-top:-2px;width:1px}.la-line-spin-fade.la-2x{height:64px;width:64px}.la-line-spin-fade.la-2x>div{height:20px;margin-left:-2px;margin-top:-10px;width:4px}.la-line-spin-fade.la-3x{height:96px;width:96px}.la-line-spin-fade.la-3x>div{height:30px;margin-left:-3px;margin-top:-15px;width:6px}@-webkit-keyframes line-spin-fade{50%{opacity:.2}to{opacity:1}}@keyframes line-spin-fade{50%{opacity:.2}to{opacity:1}}.la-pacman,.la-pacman>div{box-sizing:border-box;position:relative}.la-pacman{color:#fff;display:block;font-size:0}.la-pacman.la-dark{color:#333}.la-pacman>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-pacman{height:32px;width:32px}.la-pacman>div:first-child,.la-pacman>div:nth-child(2){-webkit-animation:pacman-rotate-half-up .5s 0s infinite;animation:pacman-rotate-half-up .5s 0s infinite;background:transparent;border-radius:100%;border-right:solid transparent;border-style:solid;border-width:16px;height:0;position:absolute;width:0}.la-pacman>div:nth-child(2){-webkit-animation-name:pacman-rotate-half-down;animation-name:pacman-rotate-half-down;top:0}.la-pacman>div:nth-child(3),.la-pacman>div:nth-child(4),.la-pacman>div:nth-child(5),.la-pacman>div:nth-child(6){-webkit-animation:pacman-balls 2s linear 0s infinite;animation:pacman-balls 2s linear 0s infinite;border-radius:100%;height:8px;left:200%;opacity:0;position:absolute;top:50%;width:8px}.la-pacman>div:nth-child(3){-webkit-animation-delay:-1.44s;animation-delay:-1.44s}.la-pacman>div:nth-child(4){-webkit-animation-delay:-1.94s;animation-delay:-1.94s}.la-pacman>div:nth-child(5){-webkit-animation-delay:-2.44s;animation-delay:-2.44s}.la-pacman>div:nth-child(6){-webkit-animation-delay:-2.94s;animation-delay:-2.94s}.la-pacman.la-sm{height:16px;width:16px}.la-pacman.la-sm>div:first-child,.la-pacman.la-sm>div:nth-child(2){border-width:8px;position:absolute}.la-pacman.la-sm>div:nth-child(2){top:0}.la-pacman.la-sm>div:nth-child(3),.la-pacman.la-sm>div:nth-child(4),.la-pacman.la-sm>div:nth-child(5),.la-pacman.la-sm>div:nth-child(6){height:4px;width:4px}.la-pacman.la-2x{height:64px;width:64px}.la-pacman.la-2x>div:first-child,.la-pacman.la-2x>div:nth-child(2){border-width:32px;position:absolute}.la-pacman.la-2x>div:nth-child(2){top:0}.la-pacman.la-2x>div:nth-child(3),.la-pacman.la-2x>div:nth-child(4),.la-pacman.la-2x>div:nth-child(5),.la-pacman.la-2x>div:nth-child(6){height:16px;width:16px}.la-pacman.la-3x{height:96px;width:96px}.la-pacman.la-3x>div:first-child,.la-pacman.la-3x>div:nth-child(2){border-width:48px;position:absolute}.la-pacman.la-3x>div:nth-child(2){top:0}.la-pacman.la-3x>div:nth-child(3),.la-pacman.la-3x>div:nth-child(4),.la-pacman.la-3x>div:nth-child(5),.la-pacman.la-3x>div:nth-child(6){height:24px;width:24px}@-webkit-keyframes pacman-rotate-half-up{0%,to{transform:rotate(270deg)}50%{transform:rotate(1turn)}}@keyframes pacman-rotate-half-up{0%,to{transform:rotate(270deg)}50%{transform:rotate(1turn)}}@-webkit-keyframes pacman-rotate-half-down{0%,to{transform:rotate(90deg)}50%{transform:rotate(0deg)}}@keyframes pacman-rotate-half-down{0%,to{transform:rotate(90deg)}50%{transform:rotate(0deg)}}@-webkit-keyframes pacman-balls{0%{left:200%;opacity:0;transform:translateY(-50%)}5%{opacity:.5}66%{opacity:1}67%{opacity:0}to{left:0;transform:translateY(-50%)}}@keyframes pacman-balls{0%{left:200%;opacity:0;transform:translateY(-50%)}5%{opacity:.5}66%{opacity:1}67%{opacity:0}to{left:0;transform:translateY(-50%)}}.la-square-jelly-box,.la-square-jelly-box>div{box-sizing:border-box;position:relative}.la-square-jelly-box{color:#fff;display:block;font-size:0}.la-square-jelly-box.la-dark{color:#333}.la-square-jelly-box>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-square-jelly-box{height:32px;width:32px}.la-square-jelly-box>div:first-child,.la-square-jelly-box>div:nth-child(2){left:0;position:absolute;width:100%}.la-square-jelly-box>div:first-child{-webkit-animation:square-jelly-box-animate .6s linear -.1s infinite;animation:square-jelly-box-animate .6s linear -.1s infinite;border-radius:10%;height:100%;top:-25%;z-index:1}.la-square-jelly-box>div:nth-child(2){-webkit-animation:square-jelly-box-shadow .6s linear -.1s infinite;animation:square-jelly-box-shadow .6s linear -.1s infinite;background:#000;border-radius:50%;bottom:-9%;height:10%;opacity:.2}.la-square-jelly-box.la-sm{height:16px;width:16px}.la-square-jelly-box.la-2x{height:64px;width:64px}.la-square-jelly-box.la-3x{height:96px;width:96px}@-webkit-keyframes square-jelly-box-animate{17%{border-bottom-right-radius:10%}25%{transform:translateY(25%) rotate(22.5deg)}50%{border-bottom-right-radius:100%;transform:translateY(50%) scaleY(.9) rotate(45deg)}75%{transform:translateY(25%) rotate(67.5deg)}to{transform:translateY(0) rotate(90deg)}}@keyframes square-jelly-box-animate{17%{border-bottom-right-radius:10%}25%{transform:translateY(25%) rotate(22.5deg)}50%{border-bottom-right-radius:100%;transform:translateY(50%) scaleY(.9) rotate(45deg)}75%{transform:translateY(25%) rotate(67.5deg)}to{transform:translateY(0) rotate(90deg)}}@-webkit-keyframes square-jelly-box-shadow{50%{transform:scaleX(1.25)}}@keyframes square-jelly-box-shadow{50%{transform:scaleX(1.25)}}.la-square-loader,.la-square-loader>div{box-sizing:border-box;position:relative}.la-square-loader{color:#fff;display:block;font-size:0}.la-square-loader.la-dark{color:#333}.la-square-loader>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-square-loader{height:32px;width:32px}.la-square-loader>div{-webkit-animation:square-loader 2s ease infinite;animation:square-loader 2s ease infinite;background:transparent;border-radius:0;border-width:2px;height:100%;width:100%}.la-square-loader>div:after{-webkit-animation:square-loader-inner 2s ease-in infinite;animation:square-loader-inner 2s ease-in infinite;background-color:currentColor;content:\\\"\\\";display:inline-block;vertical-align:top;width:100%}.la-square-loader.la-sm{height:16px;width:16px}.la-square-loader.la-sm>div{border-width:1px}.la-square-loader.la-2x{height:64px;width:64px}.la-square-loader.la-2x>div{border-width:4px}.la-square-loader.la-3x{height:96px;width:96px}.la-square-loader.la-3x>div{border-width:6px}@-webkit-keyframes square-loader{0%{transform:rotate(0deg)}25%{transform:rotate(180deg)}50%{transform:rotate(180deg)}75%{transform:rotate(1turn)}to{transform:rotate(1turn)}}@keyframes square-loader{0%{transform:rotate(0deg)}25%{transform:rotate(180deg)}50%{transform:rotate(180deg)}75%{transform:rotate(1turn)}to{transform:rotate(1turn)}}@-webkit-keyframes square-loader-inner{0%{height:0}25%{height:0}50%{height:100%}75%{height:100%}to{height:0}}@keyframes square-loader-inner{0%{height:0}25%{height:0}50%{height:100%}75%{height:100%}to{height:0}}.la-square-spin,.la-square-spin>div{box-sizing:border-box;position:relative}.la-square-spin{color:#fff;display:block;font-size:0}.la-square-spin.la-dark{color:#333}.la-square-spin>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-square-spin{height:32px;width:32px}.la-square-spin>div{-webkit-animation:square-spin 3s cubic-bezier(.09,.57,.49,.9) 0s infinite;animation:square-spin 3s cubic-bezier(.09,.57,.49,.9) 0s infinite;border-radius:0;height:100%;width:100%}.la-square-spin.la-sm{height:16px;width:16px}.la-square-spin.la-2x{height:64px;width:64px}.la-square-spin.la-3x{height:96px;width:96px}@-webkit-keyframes square-spin{0%{transform:perspective(100px) rotateX(0) rotateY(0)}25%{transform:perspective(100px) rotateX(180deg) rotateY(0)}50%{transform:perspective(100px) rotateX(180deg) rotateY(180deg)}75%{transform:perspective(100px) rotateX(0) rotateY(180deg)}to{transform:perspective(100px) rotateX(0) rotateY(1turn)}}@keyframes square-spin{0%{transform:perspective(100px) rotateX(0) rotateY(0)}25%{transform:perspective(100px) rotateX(180deg) rotateY(0)}50%{transform:perspective(100px) rotateX(180deg) rotateY(180deg)}75%{transform:perspective(100px) rotateX(0) rotateY(180deg)}to{transform:perspective(100px) rotateX(0) rotateY(1turn)}}.la-timer,.la-timer>div{box-sizing:border-box;position:relative}.la-timer{color:#fff;display:block;font-size:0}.la-timer.la-dark{color:#333}.la-timer>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-timer,.la-timer>div{height:32px;width:32px}.la-timer>div{background:transparent;border-radius:100%;border-width:2px}.la-timer>div:after,.la-timer>div:before{-webkit-animation:timer-loader 1.25s linear infinite;-webkit-animation-delay:-625ms;animation:timer-loader 1.25s linear infinite;animation-delay:-625ms;background:currentColor;border-radius:2px;content:\\\"\\\";display:block;left:14px;margin-left:-1px;margin-top:-1px;position:absolute;top:14px;transform-origin:1px 1px 0;width:2px}.la-timer>div:before{height:12px}.la-timer>div:after{-webkit-animation-delay:-7.5s;-webkit-animation-duration:15s;animation-delay:-7.5s;animation-duration:15s;height:8px}.la-timer.la-sm,.la-timer.la-sm>div{height:16px;width:16px}.la-timer.la-sm>div{border-width:1px}.la-timer.la-sm>div:after,.la-timer.la-sm>div:before{border-radius:1px;left:7px;margin-left:-.5px;margin-top:-.5px;top:7px;transform-origin:.5px .5px 0;width:1px}.la-timer.la-sm>div:before{height:6px}.la-timer.la-sm>div:after{height:4px}.la-timer.la-2x,.la-timer.la-2x>div{height:64px;width:64px}.la-timer.la-2x>div{border-width:4px}.la-timer.la-2x>div:after,.la-timer.la-2x>div:before{border-radius:4px;left:28px;margin-left:-2px;margin-top:-2px;top:28px;transform-origin:2px 2px 0;width:4px}.la-timer.la-2x>div:before{height:24px}.la-timer.la-2x>div:after{height:16px}.la-timer.la-3x,.la-timer.la-3x>div{height:96px;width:96px}.la-timer.la-3x>div{border-width:6px}.la-timer.la-3x>div:after,.la-timer.la-3x>div:before{border-radius:6px;left:42px;margin-left:-3px;margin-top:-3px;top:42px;transform-origin:3px 3px 0;width:6px}.la-timer.la-3x>div:before{height:36px}.la-timer.la-3x>div:after{height:24px}@-webkit-keyframes timer-loader{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes timer-loader{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.la-triangle-skew-spin,.la-triangle-skew-spin>div{box-sizing:border-box;position:relative}.la-triangle-skew-spin{color:#fff;display:block;font-size:0}.la-triangle-skew-spin.la-dark{color:#333}.la-triangle-skew-spin>div{background-color:currentColor;border:0 solid;display:inline-block;float:none}.la-triangle-skew-spin{height:16px;width:32px}.la-triangle-skew-spin>div{-webkit-animation:triangle-skew-spin 3s cubic-bezier(.09,.57,.49,.9) 0s infinite;animation:triangle-skew-spin 3s cubic-bezier(.09,.57,.49,.9) 0s infinite;background:transparent;border-color:currentcolor transparent;border-left:none;border-right:none;border-style:solid;border-width:0 16px 16px;height:0;width:0}.la-triangle-skew-spin.la-sm{height:8px;width:16px}.la-triangle-skew-spin.la-sm>div{border-width:0 8px 8px}.la-triangle-skew-spin.la-2x{height:32px;width:64px}.la-triangle-skew-spin.la-2x>div{border-width:0 32px 32px}.la-triangle-skew-spin.la-3x{height:48px;width:96px}.la-triangle-skew-spin.la-3x>div{border-width:0 48px 48px}@-webkit-keyframes triangle-skew-spin{0%{transform:perspective(100px) rotateX(0) rotateY(0)}25%{transform:perspective(100px) rotateX(180deg) rotateY(0)}50%{transform:perspective(100px) rotateX(180deg) rotateY(180deg)}75%{transform:perspective(100px) rotateX(0) rotateY(180deg)}to{transform:perspective(100px) rotateX(0) rotateY(1turn)}}@keyframes triangle-skew-spin{0%{transform:perspective(100px) rotateX(0) rotateY(0)}25%{transform:perspective(100px) rotateX(180deg) rotateY(0)}50%{transform:perspective(100px) rotateX(180deg) rotateY(180deg)}75%{transform:perspective(100px) rotateX(0) rotateY(180deg)}to{transform:perspective(100px) rotateX(0) rotateY(1turn)}}.overlay{height:100%;left:0;position:fixed;top:0;width:100%}.overlay>div:not(.loading-text){left:50%;margin:0;position:absolute;top:50%;transform:translate(-50%,-50%)}.loading-text{left:50%;position:absolute;top:60%;transform:translate(-50%,-60%)}\"]\n },] }\n];\nNgxSpinnerComponent.ctorParameters = () => [\n { type: NgxSpinnerService },\n { type: ChangeDetectorRef }\n];\nNgxSpinnerComponent.propDecorators = {\n bdColor: [{ type: Input }],\n size: [{ type: Input }],\n color: [{ type: Input }],\n type: [{ type: Input }],\n fullScreen: [{ type: Input }],\n name: [{ type: Input }],\n zIndex: [{ type: Input }],\n template: [{ type: Input }]\n};\n\nclass SafeHtmlPipe {\n constructor(_sanitizer) {\n this._sanitizer = _sanitizer;\n }\n transform(v) {\n if (v) {\n return this._sanitizer.bypassSecurityTrustHtml(v);\n }\n }\n}\nSafeHtmlPipe.decorators = [\n { type: Pipe, args: [{\n name: 'safeHtml'\n },] }\n];\nSafeHtmlPipe.ctorParameters = () => [\n { type: DomSanitizer }\n];\n\nclass NgxSpinnerModule {\n}\nNgxSpinnerModule.decorators = [\n { type: NgModule, args: [{\n imports: [\n CommonModule\n ],\n declarations: [NgxSpinnerComponent, SafeHtmlPipe],\n exports: [NgxSpinnerComponent]\n },] }\n];\n\n/*\n * Public API Surface of ngx-spinner\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NgxSpinnerComponent, NgxSpinnerModule, NgxSpinnerService, SafeHtmlPipe as ɵa };\n//# sourceMappingURL=ngx-spinner.js.map\n","
      \n
      \n
      \n
      \n
      \n
      \n \n
      \n
      ","/*!\n * perfect-scrollbar v1.5.0\n * Copyright 2020 Hyunje Jun, MDBootstrap and Contributors\n * Licensed under MIT\n */\n\nfunction get(element) {\n return getComputedStyle(element);\n}\n\nfunction set(element, obj) {\n for (var key in obj) {\n var val = obj[key];\n if (typeof val === 'number') {\n val = val + \"px\";\n }\n element.style[key] = val;\n }\n return element;\n}\n\nfunction div(className) {\n var div = document.createElement('div');\n div.className = className;\n return div;\n}\n\nvar elMatches =\n typeof Element !== 'undefined' &&\n (Element.prototype.matches ||\n Element.prototype.webkitMatchesSelector ||\n Element.prototype.mozMatchesSelector ||\n Element.prototype.msMatchesSelector);\n\nfunction matches(element, query) {\n if (!elMatches) {\n throw new Error('No element matching method supported');\n }\n\n return elMatches.call(element, query);\n}\n\nfunction remove(element) {\n if (element.remove) {\n element.remove();\n } else {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n}\n\nfunction queryChildren(element, selector) {\n return Array.prototype.filter.call(element.children, function (child) { return matches(child, selector); }\n );\n}\n\nvar cls = {\n main: 'ps',\n rtl: 'ps__rtl',\n element: {\n thumb: function (x) { return (\"ps__thumb-\" + x); },\n rail: function (x) { return (\"ps__rail-\" + x); },\n consuming: 'ps__child--consume',\n },\n state: {\n focus: 'ps--focus',\n clicking: 'ps--clicking',\n active: function (x) { return (\"ps--active-\" + x); },\n scrolling: function (x) { return (\"ps--scrolling-\" + x); },\n },\n};\n\n/*\n * Helper methods\n */\nvar scrollingClassTimeout = { x: null, y: null };\n\nfunction addScrollingClass(i, x) {\n var classList = i.element.classList;\n var className = cls.state.scrolling(x);\n\n if (classList.contains(className)) {\n clearTimeout(scrollingClassTimeout[x]);\n } else {\n classList.add(className);\n }\n}\n\nfunction removeScrollingClass(i, x) {\n scrollingClassTimeout[x] = setTimeout(\n function () { return i.isAlive && i.element.classList.remove(cls.state.scrolling(x)); },\n i.settings.scrollingThreshold\n );\n}\n\nfunction setScrollingClassInstantly(i, x) {\n addScrollingClass(i, x);\n removeScrollingClass(i, x);\n}\n\nvar EventElement = function EventElement(element) {\n this.element = element;\n this.handlers = {};\n};\n\nvar prototypeAccessors = { isEmpty: { configurable: true } };\n\nEventElement.prototype.bind = function bind (eventName, handler) {\n if (typeof this.handlers[eventName] === 'undefined') {\n this.handlers[eventName] = [];\n }\n this.handlers[eventName].push(handler);\n this.element.addEventListener(eventName, handler, false);\n};\n\nEventElement.prototype.unbind = function unbind (eventName, target) {\n var this$1 = this;\n\n this.handlers[eventName] = this.handlers[eventName].filter(function (handler) {\n if (target && handler !== target) {\n return true;\n }\n this$1.element.removeEventListener(eventName, handler, false);\n return false;\n });\n};\n\nEventElement.prototype.unbindAll = function unbindAll () {\n for (var name in this.handlers) {\n this.unbind(name);\n }\n};\n\nprototypeAccessors.isEmpty.get = function () {\n var this$1 = this;\n\n return Object.keys(this.handlers).every(\n function (key) { return this$1.handlers[key].length === 0; }\n );\n};\n\nObject.defineProperties( EventElement.prototype, prototypeAccessors );\n\nvar EventManager = function EventManager() {\n this.eventElements = [];\n};\n\nEventManager.prototype.eventElement = function eventElement (element) {\n var ee = this.eventElements.filter(function (ee) { return ee.element === element; })[0];\n if (!ee) {\n ee = new EventElement(element);\n this.eventElements.push(ee);\n }\n return ee;\n};\n\nEventManager.prototype.bind = function bind (element, eventName, handler) {\n this.eventElement(element).bind(eventName, handler);\n};\n\nEventManager.prototype.unbind = function unbind (element, eventName, handler) {\n var ee = this.eventElement(element);\n ee.unbind(eventName, handler);\n\n if (ee.isEmpty) {\n // remove\n this.eventElements.splice(this.eventElements.indexOf(ee), 1);\n }\n};\n\nEventManager.prototype.unbindAll = function unbindAll () {\n this.eventElements.forEach(function (e) { return e.unbindAll(); });\n this.eventElements = [];\n};\n\nEventManager.prototype.once = function once (element, eventName, handler) {\n var ee = this.eventElement(element);\n var onceHandler = function (evt) {\n ee.unbind(eventName, onceHandler);\n handler(evt);\n };\n ee.bind(eventName, onceHandler);\n};\n\nfunction createEvent(name) {\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(name);\n } else {\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(name, false, false, undefined);\n return evt;\n }\n}\n\nfunction processScrollDiff(\n i,\n axis,\n diff,\n useScrollingClass,\n forceFireReachEvent\n) {\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var fields;\n if (axis === 'top') {\n fields = [\n 'contentHeight',\n 'containerHeight',\n 'scrollTop',\n 'y',\n 'up',\n 'down' ];\n } else if (axis === 'left') {\n fields = [\n 'contentWidth',\n 'containerWidth',\n 'scrollLeft',\n 'x',\n 'left',\n 'right' ];\n } else {\n throw new Error('A proper axis should be provided');\n }\n\n processScrollDiff$1(i, diff, fields, useScrollingClass, forceFireReachEvent);\n}\n\nfunction processScrollDiff$1(\n i,\n diff,\n ref,\n useScrollingClass,\n forceFireReachEvent\n) {\n var contentHeight = ref[0];\n var containerHeight = ref[1];\n var scrollTop = ref[2];\n var y = ref[3];\n var up = ref[4];\n var down = ref[5];\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var element = i.element;\n\n // reset reach\n i.reach[y] = null;\n\n // 1 for subpixel rounding\n if (element[scrollTop] < 1) {\n i.reach[y] = 'start';\n }\n\n // 1 for subpixel rounding\n if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) {\n i.reach[y] = 'end';\n }\n\n if (diff) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + y)));\n\n if (diff < 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + up)));\n } else if (diff > 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + down)));\n }\n\n if (useScrollingClass) {\n setScrollingClassInstantly(i, y);\n }\n }\n\n if (i.reach[y] && (diff || forceFireReachEvent)) {\n element.dispatchEvent(createEvent((\"ps-\" + y + \"-reach-\" + (i.reach[y]))));\n }\n}\n\nfunction toInt(x) {\n return parseInt(x, 10) || 0;\n}\n\nfunction isEditable(el) {\n return (\n matches(el, 'input,[contenteditable]') ||\n matches(el, 'select,[contenteditable]') ||\n matches(el, 'textarea,[contenteditable]') ||\n matches(el, 'button,[contenteditable]')\n );\n}\n\nfunction outerWidth(element) {\n var styles = get(element);\n return (\n toInt(styles.width) +\n toInt(styles.paddingLeft) +\n toInt(styles.paddingRight) +\n toInt(styles.borderLeftWidth) +\n toInt(styles.borderRightWidth)\n );\n}\n\nvar env = {\n isWebKit:\n typeof document !== 'undefined' &&\n 'WebkitAppearance' in document.documentElement.style,\n supportsTouch:\n typeof window !== 'undefined' &&\n ('ontouchstart' in window ||\n ('maxTouchPoints' in window.navigator &&\n window.navigator.maxTouchPoints > 0) ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)),\n supportsIePointer:\n typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,\n isChrome:\n typeof navigator !== 'undefined' &&\n /Chrome/i.test(navigator && navigator.userAgent),\n};\n\nfunction updateGeometry(i) {\n var element = i.element;\n var roundedScrollTop = Math.floor(element.scrollTop);\n var rect = element.getBoundingClientRect();\n\n i.containerWidth = Math.ceil(rect.width);\n i.containerHeight = Math.ceil(rect.height);\n i.contentWidth = element.scrollWidth;\n i.contentHeight = element.scrollHeight;\n\n if (!element.contains(i.scrollbarXRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarXRail);\n }\n if (!element.contains(i.scrollbarYRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarYRail);\n }\n\n if (\n !i.settings.suppressScrollX &&\n i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth\n ) {\n i.scrollbarXActive = true;\n i.railXWidth = i.containerWidth - i.railXMarginWidth;\n i.railXRatio = i.containerWidth / i.railXWidth;\n i.scrollbarXWidth = getThumbSize(\n i,\n toInt((i.railXWidth * i.containerWidth) / i.contentWidth)\n );\n i.scrollbarXLeft = toInt(\n ((i.negativeScrollAdjustment + element.scrollLeft) *\n (i.railXWidth - i.scrollbarXWidth)) /\n (i.contentWidth - i.containerWidth)\n );\n } else {\n i.scrollbarXActive = false;\n }\n\n if (\n !i.settings.suppressScrollY &&\n i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight\n ) {\n i.scrollbarYActive = true;\n i.railYHeight = i.containerHeight - i.railYMarginHeight;\n i.railYRatio = i.containerHeight / i.railYHeight;\n i.scrollbarYHeight = getThumbSize(\n i,\n toInt((i.railYHeight * i.containerHeight) / i.contentHeight)\n );\n i.scrollbarYTop = toInt(\n (roundedScrollTop * (i.railYHeight - i.scrollbarYHeight)) /\n (i.contentHeight - i.containerHeight)\n );\n } else {\n i.scrollbarYActive = false;\n }\n\n if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) {\n i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth;\n }\n if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) {\n i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight;\n }\n\n updateCss(element, i);\n\n if (i.scrollbarXActive) {\n element.classList.add(cls.state.active('x'));\n } else {\n element.classList.remove(cls.state.active('x'));\n i.scrollbarXWidth = 0;\n i.scrollbarXLeft = 0;\n element.scrollLeft = i.isRtl === true ? i.contentWidth : 0;\n }\n if (i.scrollbarYActive) {\n element.classList.add(cls.state.active('y'));\n } else {\n element.classList.remove(cls.state.active('y'));\n i.scrollbarYHeight = 0;\n i.scrollbarYTop = 0;\n element.scrollTop = 0;\n }\n}\n\nfunction getThumbSize(i, thumbSize) {\n if (i.settings.minScrollbarLength) {\n thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength);\n }\n if (i.settings.maxScrollbarLength) {\n thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength);\n }\n return thumbSize;\n}\n\nfunction updateCss(element, i) {\n var xRailOffset = { width: i.railXWidth };\n var roundedScrollTop = Math.floor(element.scrollTop);\n\n if (i.isRtl) {\n xRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth -\n i.contentWidth;\n } else {\n xRailOffset.left = element.scrollLeft;\n }\n if (i.isScrollbarXUsingBottom) {\n xRailOffset.bottom = i.scrollbarXBottom - roundedScrollTop;\n } else {\n xRailOffset.top = i.scrollbarXTop + roundedScrollTop;\n }\n set(i.scrollbarXRail, xRailOffset);\n\n var yRailOffset = { top: roundedScrollTop, height: i.railYHeight };\n if (i.isScrollbarYUsingRight) {\n if (i.isRtl) {\n yRailOffset.right =\n i.contentWidth -\n (i.negativeScrollAdjustment + element.scrollLeft) -\n i.scrollbarYRight -\n i.scrollbarYOuterWidth -\n 9;\n } else {\n yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\n }\n } else {\n if (i.isRtl) {\n yRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth * 2 -\n i.contentWidth -\n i.scrollbarYLeft -\n i.scrollbarYOuterWidth;\n } else {\n yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\n }\n }\n set(i.scrollbarYRail, yRailOffset);\n\n set(i.scrollbarX, {\n left: i.scrollbarXLeft,\n width: i.scrollbarXWidth - i.railBorderXWidth,\n });\n set(i.scrollbarY, {\n top: i.scrollbarYTop,\n height: i.scrollbarYHeight - i.railBorderYWidth,\n });\n}\n\nfunction clickRail(i) {\n var element = i.element;\n\n i.event.bind(i.scrollbarY, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarYRail, 'mousedown', function (e) {\n var positionTop =\n e.pageY -\n window.pageYOffset -\n i.scrollbarYRail.getBoundingClientRect().top;\n var direction = positionTop > i.scrollbarYTop ? 1 : -1;\n\n i.element.scrollTop += direction * i.containerHeight;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n\n i.event.bind(i.scrollbarX, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarXRail, 'mousedown', function (e) {\n var positionLeft =\n e.pageX -\n window.pageXOffset -\n i.scrollbarXRail.getBoundingClientRect().left;\n var direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n i.element.scrollLeft += direction * i.containerWidth;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n}\n\nfunction dragThumb(i) {\n bindMouseScrollHandler(i, [\n 'containerWidth',\n 'contentWidth',\n 'pageX',\n 'railXWidth',\n 'scrollbarX',\n 'scrollbarXWidth',\n 'scrollLeft',\n 'x',\n 'scrollbarXRail' ]);\n bindMouseScrollHandler(i, [\n 'containerHeight',\n 'contentHeight',\n 'pageY',\n 'railYHeight',\n 'scrollbarY',\n 'scrollbarYHeight',\n 'scrollTop',\n 'y',\n 'scrollbarYRail' ]);\n}\n\nfunction bindMouseScrollHandler(\n i,\n ref\n) {\n var containerHeight = ref[0];\n var contentHeight = ref[1];\n var pageY = ref[2];\n var railYHeight = ref[3];\n var scrollbarY = ref[4];\n var scrollbarYHeight = ref[5];\n var scrollTop = ref[6];\n var y = ref[7];\n var scrollbarYRail = ref[8];\n\n var element = i.element;\n\n var startingScrollTop = null;\n var startingMousePageY = null;\n var scrollBy = null;\n\n function mouseMoveHandler(e) {\n if (e.touches && e.touches[0]) {\n e[pageY] = e.touches[0].pageY;\n }\n element[scrollTop] =\n startingScrollTop + scrollBy * (e[pageY] - startingMousePageY);\n addScrollingClass(i, y);\n updateGeometry(i);\n\n e.stopPropagation();\n e.preventDefault();\n }\n\n function mouseUpHandler() {\n removeScrollingClass(i, y);\n i[scrollbarYRail].classList.remove(cls.state.clicking);\n i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n }\n\n function bindMoves(e, touchMode) {\n startingScrollTop = element[scrollTop];\n if (touchMode && e.touches) {\n e[pageY] = e.touches[0].pageY;\n }\n startingMousePageY = e[pageY];\n scrollBy =\n (i[contentHeight] - i[containerHeight]) /\n (i[railYHeight] - i[scrollbarYHeight]);\n if (!touchMode) {\n i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n e.preventDefault();\n } else {\n i.event.bind(i.ownerDocument, 'touchmove', mouseMoveHandler);\n }\n\n i[scrollbarYRail].classList.add(cls.state.clicking);\n\n e.stopPropagation();\n }\n\n i.event.bind(i[scrollbarY], 'mousedown', function (e) {\n bindMoves(e);\n });\n i.event.bind(i[scrollbarY], 'touchstart', function (e) {\n bindMoves(e, true);\n });\n}\n\nfunction keyboard(i) {\n var element = i.element;\n\n var elementHovered = function () { return matches(element, ':hover'); };\n var scrollbarFocused = function () { return matches(i.scrollbarX, ':focus') || matches(i.scrollbarY, ':focus'); };\n\n function shouldPreventDefault(deltaX, deltaY) {\n var scrollTop = Math.floor(element.scrollTop);\n if (deltaX === 0) {\n if (!i.scrollbarYActive) {\n return false;\n }\n if (\n (scrollTop === 0 && deltaY > 0) ||\n (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n\n var scrollLeft = element.scrollLeft;\n if (deltaY === 0) {\n if (!i.scrollbarXActive) {\n return false;\n }\n if (\n (scrollLeft === 0 && deltaX < 0) ||\n (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n return true;\n }\n\n i.event.bind(i.ownerDocument, 'keydown', function (e) {\n if (\n (e.isDefaultPrevented && e.isDefaultPrevented()) ||\n e.defaultPrevented\n ) {\n return;\n }\n\n if (!elementHovered() && !scrollbarFocused()) {\n return;\n }\n\n var activeElement = document.activeElement\n ? document.activeElement\n : i.ownerDocument.activeElement;\n if (activeElement) {\n if (activeElement.tagName === 'IFRAME') {\n activeElement = activeElement.contentDocument.activeElement;\n } else {\n // go deeper if element is a webcomponent\n while (activeElement.shadowRoot) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n }\n if (isEditable(activeElement)) {\n return;\n }\n }\n\n var deltaX = 0;\n var deltaY = 0;\n\n switch (e.which) {\n case 37: // left\n if (e.metaKey) {\n deltaX = -i.contentWidth;\n } else if (e.altKey) {\n deltaX = -i.containerWidth;\n } else {\n deltaX = -30;\n }\n break;\n case 38: // up\n if (e.metaKey) {\n deltaY = i.contentHeight;\n } else if (e.altKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = 30;\n }\n break;\n case 39: // right\n if (e.metaKey) {\n deltaX = i.contentWidth;\n } else if (e.altKey) {\n deltaX = i.containerWidth;\n } else {\n deltaX = 30;\n }\n break;\n case 40: // down\n if (e.metaKey) {\n deltaY = -i.contentHeight;\n } else if (e.altKey) {\n deltaY = -i.containerHeight;\n } else {\n deltaY = -30;\n }\n break;\n case 32: // space bar\n if (e.shiftKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = -i.containerHeight;\n }\n break;\n case 33: // page up\n deltaY = i.containerHeight;\n break;\n case 34: // page down\n deltaY = -i.containerHeight;\n break;\n case 36: // home\n deltaY = i.contentHeight;\n break;\n case 35: // end\n deltaY = -i.contentHeight;\n break;\n default:\n return;\n }\n\n if (i.settings.suppressScrollX && deltaX !== 0) {\n return;\n }\n if (i.settings.suppressScrollY && deltaY !== 0) {\n return;\n }\n\n element.scrollTop -= deltaY;\n element.scrollLeft += deltaX;\n updateGeometry(i);\n\n if (shouldPreventDefault(deltaX, deltaY)) {\n e.preventDefault();\n }\n });\n}\n\nfunction wheel(i) {\n var element = i.element;\n\n function shouldPreventDefault(deltaX, deltaY) {\n var roundedScrollTop = Math.floor(element.scrollTop);\n var isTop = element.scrollTop === 0;\n var isBottom =\n roundedScrollTop + element.offsetHeight === element.scrollHeight;\n var isLeft = element.scrollLeft === 0;\n var isRight =\n element.scrollLeft + element.offsetWidth === element.scrollWidth;\n\n var hitsBound;\n\n // pick axis with primary direction\n if (Math.abs(deltaY) > Math.abs(deltaX)) {\n hitsBound = isTop || isBottom;\n } else {\n hitsBound = isLeft || isRight;\n }\n\n return hitsBound ? !i.settings.wheelPropagation : true;\n }\n\n function getDeltaFromEvent(e) {\n var deltaX = e.deltaX;\n var deltaY = -1 * e.deltaY;\n\n if (typeof deltaX === 'undefined' || typeof deltaY === 'undefined') {\n // OS X Safari\n deltaX = (-1 * e.wheelDeltaX) / 6;\n deltaY = e.wheelDeltaY / 6;\n }\n\n if (e.deltaMode && e.deltaMode === 1) {\n // Firefox in deltaMode 1: Line scrolling\n deltaX *= 10;\n deltaY *= 10;\n }\n\n if (deltaX !== deltaX && deltaY !== deltaY /* NaN checks */) {\n // IE in some mouse drivers\n deltaX = 0;\n deltaY = e.wheelDelta;\n }\n\n if (e.shiftKey) {\n // reverse axis with shift key\n return [-deltaY, -deltaX];\n }\n return [deltaX, deltaY];\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n // FIXME: this is a workaround for \\n \\n
      \\n \\n \\n
      \\n \\n
      \\n \\n \\n
      \\n
      \\n
      \\n \\n \\n
      \\n
      \\n
      \\n
      \\n
      \\n
      \\n\").replace(/(^|\\n)\\s*/g, '');\n\n var resetOldContainer = function resetOldContainer() {\n var oldContainer = getContainer();\n\n if (!oldContainer) {\n return false;\n }\n\n oldContainer.parentNode.removeChild(oldContainer);\n removeClass([document.documentElement, document.body], [swalClasses['no-backdrop'], swalClasses['toast-shown'], swalClasses['has-column']]);\n return true;\n };\n\n var oldInputVal; // IE11 workaround, see #1109 for details\n\n var resetValidationMessage = function resetValidationMessage(e) {\n if (Swal.isVisible() && oldInputVal !== e.target.value) {\n Swal.resetValidationMessage();\n }\n\n oldInputVal = e.target.value;\n };\n\n var addInputChangeListeners = function addInputChangeListeners() {\n var content = getContent();\n var input = getChildByClass(content, swalClasses.input);\n var file = getChildByClass(content, swalClasses.file);\n var range = content.querySelector(\".\".concat(swalClasses.range, \" input\"));\n var rangeOutput = content.querySelector(\".\".concat(swalClasses.range, \" output\"));\n var select = getChildByClass(content, swalClasses.select);\n var checkbox = content.querySelector(\".\".concat(swalClasses.checkbox, \" input\"));\n var textarea = getChildByClass(content, swalClasses.textarea);\n input.oninput = resetValidationMessage;\n file.onchange = resetValidationMessage;\n select.onchange = resetValidationMessage;\n checkbox.onchange = resetValidationMessage;\n textarea.oninput = resetValidationMessage;\n\n range.oninput = function (e) {\n resetValidationMessage(e);\n rangeOutput.value = range.value;\n };\n\n range.onchange = function (e) {\n resetValidationMessage(e);\n range.nextSibling.value = range.value;\n };\n };\n\n var getTarget = function getTarget(target) {\n return typeof target === 'string' ? document.querySelector(target) : target;\n };\n\n var setupAccessibility = function setupAccessibility(params) {\n var popup = getPopup();\n popup.setAttribute('role', params.toast ? 'alert' : 'dialog');\n popup.setAttribute('aria-live', params.toast ? 'polite' : 'assertive');\n\n if (!params.toast) {\n popup.setAttribute('aria-modal', 'true');\n }\n };\n\n var setupRTL = function setupRTL(targetElement) {\n if (window.getComputedStyle(targetElement).direction === 'rtl') {\n addClass(getContainer(), swalClasses.rtl);\n }\n };\n /*\n * Add modal + backdrop to DOM\n */\n\n\n var init = function init(params) {\n // Clean up the old popup container if it exists\n var oldContainerExisted = resetOldContainer();\n /* istanbul ignore if */\n\n if (isNodeEnv()) {\n error('SweetAlert2 requires document to initialize');\n return;\n }\n\n var container = document.createElement('div');\n container.className = swalClasses.container;\n\n if (oldContainerExisted) {\n addClass(container, swalClasses['no-transition']);\n }\n\n setInnerHtml(container, sweetHTML);\n var targetElement = getTarget(params.target);\n targetElement.appendChild(container);\n setupAccessibility(params);\n setupRTL(targetElement);\n addInputChangeListeners();\n };\n\n var parseHtmlToContainer = function parseHtmlToContainer(param, target) {\n // DOM element\n if (param instanceof HTMLElement) {\n target.appendChild(param); // Object\n } else if (_typeof(param) === 'object') {\n handleObject(param, target); // Plain string\n } else if (param) {\n setInnerHtml(target, param);\n }\n };\n\n var handleObject = function handleObject(param, target) {\n // JQuery element(s)\n if (param.jquery) {\n handleJqueryElem(target, param); // For other objects use their string representation\n } else {\n setInnerHtml(target, param.toString());\n }\n };\n\n var handleJqueryElem = function handleJqueryElem(target, elem) {\n target.textContent = '';\n\n if (0 in elem) {\n for (var i = 0; (i in elem); i++) {\n target.appendChild(elem[i].cloneNode(true));\n }\n } else {\n target.appendChild(elem.cloneNode(true));\n }\n };\n\n var animationEndEvent = function () {\n // Prevent run in Node env\n\n /* istanbul ignore if */\n if (isNodeEnv()) {\n return false;\n }\n\n var testEl = document.createElement('div');\n var transEndEventNames = {\n WebkitAnimation: 'webkitAnimationEnd',\n OAnimation: 'oAnimationEnd oanimationend',\n animation: 'animationend'\n };\n\n for (var i in transEndEventNames) {\n if (Object.prototype.hasOwnProperty.call(transEndEventNames, i) && typeof testEl.style[i] !== 'undefined') {\n return transEndEventNames[i];\n }\n }\n\n return false;\n }();\n\n // https://github.com/twbs/bootstrap/blob/master/js/src/modal.js\n\n var measureScrollbar = function measureScrollbar() {\n var scrollDiv = document.createElement('div');\n scrollDiv.className = swalClasses['scrollbar-measure'];\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n };\n\n var renderActions = function renderActions(instance, params) {\n var actions = getActions();\n var confirmButton = getConfirmButton();\n var cancelButton = getCancelButton(); // Actions (buttons) wrapper\n\n if (!params.showConfirmButton && !params.showCancelButton) {\n hide(actions);\n } // Custom class\n\n\n applyCustomClass(actions, params, 'actions'); // Render confirm button\n\n renderButton(confirmButton, 'confirm', params); // render Cancel Button\n\n renderButton(cancelButton, 'cancel', params);\n\n if (params.buttonsStyling) {\n handleButtonsStyling(confirmButton, cancelButton, params);\n } else {\n removeClass([confirmButton, cancelButton], swalClasses.styled);\n confirmButton.style.backgroundColor = confirmButton.style.borderLeftColor = confirmButton.style.borderRightColor = '';\n cancelButton.style.backgroundColor = cancelButton.style.borderLeftColor = cancelButton.style.borderRightColor = '';\n }\n\n if (params.reverseButtons) {\n confirmButton.parentNode.insertBefore(cancelButton, confirmButton);\n }\n };\n\n function handleButtonsStyling(confirmButton, cancelButton, params) {\n addClass([confirmButton, cancelButton], swalClasses.styled); // Buttons background colors\n\n if (params.confirmButtonColor) {\n confirmButton.style.backgroundColor = params.confirmButtonColor;\n }\n\n if (params.cancelButtonColor) {\n cancelButton.style.backgroundColor = params.cancelButtonColor;\n } // Loading state\n\n\n if (!isLoading()) {\n var confirmButtonBackgroundColor = window.getComputedStyle(confirmButton).getPropertyValue('background-color');\n confirmButton.style.borderLeftColor = confirmButtonBackgroundColor;\n confirmButton.style.borderRightColor = confirmButtonBackgroundColor;\n }\n }\n\n function renderButton(button, buttonType, params) {\n toggle(button, params[\"show\".concat(capitalizeFirstLetter(buttonType), \"Button\")], 'inline-block');\n setInnerHtml(button, params[\"\".concat(buttonType, \"ButtonText\")]); // Set caption text\n\n button.setAttribute('aria-label', params[\"\".concat(buttonType, \"ButtonAriaLabel\")]); // ARIA label\n // Add buttons custom classes\n\n button.className = swalClasses[buttonType];\n applyCustomClass(button, params, \"\".concat(buttonType, \"Button\"));\n addClass(button, params[\"\".concat(buttonType, \"ButtonClass\")]);\n }\n\n function handleBackdropParam(container, backdrop) {\n if (typeof backdrop === 'string') {\n container.style.background = backdrop;\n } else if (!backdrop) {\n addClass([document.documentElement, document.body], swalClasses['no-backdrop']);\n }\n }\n\n function handlePositionParam(container, position) {\n if (position in swalClasses) {\n addClass(container, swalClasses[position]);\n } else {\n warn('The \"position\" parameter is not valid, defaulting to \"center\"');\n addClass(container, swalClasses.center);\n }\n }\n\n function handleGrowParam(container, grow) {\n if (grow && typeof grow === 'string') {\n var growClass = \"grow-\".concat(grow);\n\n if (growClass in swalClasses) {\n addClass(container, swalClasses[growClass]);\n }\n }\n }\n\n var renderContainer = function renderContainer(instance, params) {\n var container = getContainer();\n\n if (!container) {\n return;\n }\n\n handleBackdropParam(container, params.backdrop);\n\n if (!params.backdrop && params.allowOutsideClick) {\n warn('\"allowOutsideClick\" parameter requires `backdrop` parameter to be set to `true`');\n }\n\n handlePositionParam(container, params.position);\n handleGrowParam(container, params.grow); // Custom class\n\n applyCustomClass(container, params, 'container'); // Set queue step attribute for getQueueStep() method\n\n var queueStep = document.body.getAttribute('data-swal2-queue-step');\n\n if (queueStep) {\n container.setAttribute('data-queue-step', queueStep);\n document.body.removeAttribute('data-swal2-queue-step');\n }\n };\n\n /**\n * This module containts `WeakMap`s for each effectively-\"private property\" that a `Swal` has.\n * For example, to set the private property \"foo\" of `this` to \"bar\", you can `privateProps.foo.set(this, 'bar')`\n * This is the approach that Babel will probably take to implement private methods/fields\n * https://github.com/tc39/proposal-private-methods\n * https://github.com/babel/babel/pull/7555\n * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module*\n * then we can use that language feature.\n */\n var privateProps = {\n promise: new WeakMap(),\n innerParams: new WeakMap(),\n domCache: new WeakMap()\n };\n\n var inputTypes = ['input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea'];\n var renderInput = function renderInput(instance, params) {\n var content = getContent();\n var innerParams = privateProps.innerParams.get(instance);\n var rerender = !innerParams || params.input !== innerParams.input;\n inputTypes.forEach(function (inputType) {\n var inputClass = swalClasses[inputType];\n var inputContainer = getChildByClass(content, inputClass); // set attributes\n\n setAttributes(inputType, params.inputAttributes); // set class\n\n inputContainer.className = inputClass;\n\n if (rerender) {\n hide(inputContainer);\n }\n });\n\n if (params.input) {\n if (rerender) {\n showInput(params);\n } // set custom class\n\n\n setCustomClass(params);\n }\n };\n\n var showInput = function showInput(params) {\n if (!renderInputType[params.input]) {\n return error(\"Unexpected type of input! Expected \\\"text\\\", \\\"email\\\", \\\"password\\\", \\\"number\\\", \\\"tel\\\", \\\"select\\\", \\\"radio\\\", \\\"checkbox\\\", \\\"textarea\\\", \\\"file\\\" or \\\"url\\\", got \\\"\".concat(params.input, \"\\\"\"));\n }\n\n var inputContainer = getInputContainer(params.input);\n var input = renderInputType[params.input](inputContainer, params);\n show(input); // input autofocus\n\n setTimeout(function () {\n focusInput(input);\n });\n };\n\n var removeAttributes = function removeAttributes(input) {\n for (var i = 0; i < input.attributes.length; i++) {\n var attrName = input.attributes[i].name;\n\n if (!(['type', 'value', 'style'].indexOf(attrName) !== -1)) {\n input.removeAttribute(attrName);\n }\n }\n };\n\n var setAttributes = function setAttributes(inputType, inputAttributes) {\n var input = getInput(getContent(), inputType);\n\n if (!input) {\n return;\n }\n\n removeAttributes(input);\n\n for (var attr in inputAttributes) {\n // Do not set a placeholder for \n // it'll crash Edge, #1298\n if (inputType === 'range' && attr === 'placeholder') {\n continue;\n }\n\n input.setAttribute(attr, inputAttributes[attr]);\n }\n };\n\n var setCustomClass = function setCustomClass(params) {\n var inputContainer = getInputContainer(params.input);\n\n if (params.customClass) {\n addClass(inputContainer, params.customClass.input);\n }\n };\n\n var setInputPlaceholder = function setInputPlaceholder(input, params) {\n if (!input.placeholder || params.inputPlaceholder) {\n input.placeholder = params.inputPlaceholder;\n }\n };\n\n var getInputContainer = function getInputContainer(inputType) {\n var inputClass = swalClasses[inputType] ? swalClasses[inputType] : swalClasses.input;\n return getChildByClass(getContent(), inputClass);\n };\n\n var renderInputType = {};\n\n renderInputType.text = renderInputType.email = renderInputType.password = renderInputType.number = renderInputType.tel = renderInputType.url = function (input, params) {\n if (typeof params.inputValue === 'string' || typeof params.inputValue === 'number') {\n input.value = params.inputValue;\n } else if (!isPromise(params.inputValue)) {\n warn(\"Unexpected type of inputValue! Expected \\\"string\\\", \\\"number\\\" or \\\"Promise\\\", got \\\"\".concat(_typeof(params.inputValue), \"\\\"\"));\n }\n\n setInputPlaceholder(input, params);\n input.type = params.input;\n return input;\n };\n\n renderInputType.file = function (input, params) {\n setInputPlaceholder(input, params);\n return input;\n };\n\n renderInputType.range = function (range, params) {\n var rangeInput = range.querySelector('input');\n var rangeOutput = range.querySelector('output');\n rangeInput.value = params.inputValue;\n rangeInput.type = params.input;\n rangeOutput.value = params.inputValue;\n return range;\n };\n\n renderInputType.select = function (select, params) {\n select.textContent = '';\n\n if (params.inputPlaceholder) {\n var placeholder = document.createElement('option');\n setInnerHtml(placeholder, params.inputPlaceholder);\n placeholder.value = '';\n placeholder.disabled = true;\n placeholder.selected = true;\n select.appendChild(placeholder);\n }\n\n return select;\n };\n\n renderInputType.radio = function (radio) {\n radio.textContent = '';\n return radio;\n };\n\n renderInputType.checkbox = function (checkboxContainer, params) {\n var checkbox = getInput(getContent(), 'checkbox');\n checkbox.value = 1;\n checkbox.id = swalClasses.checkbox;\n checkbox.checked = Boolean(params.inputValue);\n var label = checkboxContainer.querySelector('span');\n setInnerHtml(label, params.inputPlaceholder);\n return checkboxContainer;\n };\n\n renderInputType.textarea = function (textarea, params) {\n textarea.value = params.inputValue;\n setInputPlaceholder(textarea, params);\n\n if ('MutationObserver' in window) {\n // #1699\n var initialPopupWidth = parseInt(window.getComputedStyle(getPopup()).width);\n var popupPadding = parseInt(window.getComputedStyle(getPopup()).paddingLeft) + parseInt(window.getComputedStyle(getPopup()).paddingRight);\n\n var outputsize = function outputsize() {\n var contentWidth = textarea.offsetWidth + popupPadding;\n\n if (contentWidth > initialPopupWidth) {\n getPopup().style.width = \"\".concat(contentWidth, \"px\");\n } else {\n getPopup().style.width = null;\n }\n };\n\n new MutationObserver(outputsize).observe(textarea, {\n attributes: true,\n attributeFilter: ['style']\n });\n }\n\n return textarea;\n };\n\n var renderContent = function renderContent(instance, params) {\n var content = getContent().querySelector(\"#\".concat(swalClasses.content)); // Content as HTML\n\n if (params.html) {\n parseHtmlToContainer(params.html, content);\n show(content, 'block'); // Content as plain text\n } else if (params.text) {\n content.textContent = params.text;\n show(content, 'block'); // No content\n } else {\n hide(content);\n }\n\n renderInput(instance, params); // Custom class\n\n applyCustomClass(getContent(), params, 'content');\n };\n\n var renderFooter = function renderFooter(instance, params) {\n var footer = getFooter();\n toggle(footer, params.footer);\n\n if (params.footer) {\n parseHtmlToContainer(params.footer, footer);\n } // Custom class\n\n\n applyCustomClass(footer, params, 'footer');\n };\n\n var renderCloseButton = function renderCloseButton(instance, params) {\n var closeButton = getCloseButton();\n setInnerHtml(closeButton, params.closeButtonHtml); // Custom class\n\n applyCustomClass(closeButton, params, 'closeButton');\n toggle(closeButton, params.showCloseButton);\n closeButton.setAttribute('aria-label', params.closeButtonAriaLabel);\n };\n\n var renderIcon = function renderIcon(instance, params) {\n var innerParams = privateProps.innerParams.get(instance); // if the give icon already rendered, apply the custom class without re-rendering the icon\n\n if (innerParams && params.icon === innerParams.icon && getIcon()) {\n applyCustomClass(getIcon(), params, 'icon');\n return;\n }\n\n hideAllIcons();\n\n if (!params.icon) {\n return;\n }\n\n if (Object.keys(iconTypes).indexOf(params.icon) !== -1) {\n var icon = elementBySelector(\".\".concat(swalClasses.icon, \".\").concat(iconTypes[params.icon]));\n show(icon); // Custom or default content\n\n setContent(icon, params);\n adjustSuccessIconBackgoundColor(); // Custom class\n\n applyCustomClass(icon, params, 'icon'); // Animate icon\n\n addClass(icon, params.showClass.icon);\n } else {\n error(\"Unknown icon! Expected \\\"success\\\", \\\"error\\\", \\\"warning\\\", \\\"info\\\" or \\\"question\\\", got \\\"\".concat(params.icon, \"\\\"\"));\n }\n };\n\n var hideAllIcons = function hideAllIcons() {\n var icons = getIcons();\n\n for (var i = 0; i < icons.length; i++) {\n hide(icons[i]);\n }\n }; // Adjust success icon background color to match the popup background color\n\n\n var adjustSuccessIconBackgoundColor = function adjustSuccessIconBackgoundColor() {\n var popup = getPopup();\n var popupBackgroundColor = window.getComputedStyle(popup).getPropertyValue('background-color');\n var successIconParts = popup.querySelectorAll('[class^=swal2-success-circular-line], .swal2-success-fix');\n\n for (var i = 0; i < successIconParts.length; i++) {\n successIconParts[i].style.backgroundColor = popupBackgroundColor;\n }\n };\n\n var setContent = function setContent(icon, params) {\n icon.textContent = '';\n\n if (params.iconHtml) {\n setInnerHtml(icon, iconContent(params.iconHtml));\n } else if (params.icon === 'success') {\n setInnerHtml(icon, \"\\n
      \\n \\n
      \\n
      \\n \");\n } else if (params.icon === 'error') {\n setInnerHtml(icon, \"\\n \\n \\n \\n \\n \");\n } else {\n var defaultIconHtml = {\n question: '?',\n warning: '!',\n info: 'i'\n };\n setInnerHtml(icon, iconContent(defaultIconHtml[params.icon]));\n }\n };\n\n var iconContent = function iconContent(content) {\n return \"
      \").concat(content, \"
      \");\n };\n\n var renderImage = function renderImage(instance, params) {\n var image = getImage();\n\n if (!params.imageUrl) {\n return hide(image);\n }\n\n show(image, ''); // Src, alt\n\n image.setAttribute('src', params.imageUrl);\n image.setAttribute('alt', params.imageAlt); // Width, height\n\n applyNumericalStyle(image, 'width', params.imageWidth);\n applyNumericalStyle(image, 'height', params.imageHeight); // Class\n\n image.className = swalClasses.image;\n applyCustomClass(image, params, 'image');\n };\n\n var currentSteps = [];\n /*\n * Global function for chaining sweetAlert popups\n */\n\n var queue = function queue(steps) {\n var Swal = this;\n currentSteps = steps;\n\n var resetAndResolve = function resetAndResolve(resolve, value) {\n currentSteps = [];\n resolve(value);\n };\n\n var queueResult = [];\n return new Promise(function (resolve) {\n (function step(i, callback) {\n if (i < currentSteps.length) {\n document.body.setAttribute('data-swal2-queue-step', i);\n Swal.fire(currentSteps[i]).then(function (result) {\n if (typeof result.value !== 'undefined') {\n queueResult.push(result.value);\n step(i + 1, callback);\n } else {\n resetAndResolve(resolve, {\n dismiss: result.dismiss\n });\n }\n });\n } else {\n resetAndResolve(resolve, {\n value: queueResult\n });\n }\n })(0);\n });\n };\n /*\n * Global function for getting the index of current popup in queue\n */\n\n var getQueueStep = function getQueueStep() {\n return getContainer() && getContainer().getAttribute('data-queue-step');\n };\n /*\n * Global function for inserting a popup to the queue\n */\n\n var insertQueueStep = function insertQueueStep(step, index) {\n if (index && index < currentSteps.length) {\n return currentSteps.splice(index, 0, step);\n }\n\n return currentSteps.push(step);\n };\n /*\n * Global function for deleting a popup from the queue\n */\n\n var deleteQueueStep = function deleteQueueStep(index) {\n if (typeof currentSteps[index] !== 'undefined') {\n currentSteps.splice(index, 1);\n }\n };\n\n var createStepElement = function createStepElement(step) {\n var stepEl = document.createElement('li');\n addClass(stepEl, swalClasses['progress-step']);\n setInnerHtml(stepEl, step);\n return stepEl;\n };\n\n var createLineElement = function createLineElement(params) {\n var lineEl = document.createElement('li');\n addClass(lineEl, swalClasses['progress-step-line']);\n\n if (params.progressStepsDistance) {\n lineEl.style.width = params.progressStepsDistance;\n }\n\n return lineEl;\n };\n\n var renderProgressSteps = function renderProgressSteps(instance, params) {\n var progressStepsContainer = getProgressSteps();\n\n if (!params.progressSteps || params.progressSteps.length === 0) {\n return hide(progressStepsContainer);\n }\n\n show(progressStepsContainer);\n progressStepsContainer.textContent = '';\n var currentProgressStep = parseInt(params.currentProgressStep === undefined ? getQueueStep() : params.currentProgressStep);\n\n if (currentProgressStep >= params.progressSteps.length) {\n warn('Invalid currentProgressStep parameter, it should be less than progressSteps.length ' + '(currentProgressStep like JS arrays starts from 0)');\n }\n\n params.progressSteps.forEach(function (step, index) {\n var stepEl = createStepElement(step);\n progressStepsContainer.appendChild(stepEl);\n\n if (index === currentProgressStep) {\n addClass(stepEl, swalClasses['active-progress-step']);\n }\n\n if (index !== params.progressSteps.length - 1) {\n var lineEl = createLineElement(params);\n progressStepsContainer.appendChild(lineEl);\n }\n });\n };\n\n var renderTitle = function renderTitle(instance, params) {\n var title = getTitle();\n toggle(title, params.title || params.titleText);\n\n if (params.title) {\n parseHtmlToContainer(params.title, title);\n }\n\n if (params.titleText) {\n title.innerText = params.titleText;\n } // Custom class\n\n\n applyCustomClass(title, params, 'title');\n };\n\n var renderHeader = function renderHeader(instance, params) {\n var header = getHeader(); // Custom class\n\n applyCustomClass(header, params, 'header'); // Progress steps\n\n renderProgressSteps(instance, params); // Icon\n\n renderIcon(instance, params); // Image\n\n renderImage(instance, params); // Title\n\n renderTitle(instance, params); // Close button\n\n renderCloseButton(instance, params);\n };\n\n var renderPopup = function renderPopup(instance, params) {\n var popup = getPopup(); // Width\n\n applyNumericalStyle(popup, 'width', params.width); // Padding\n\n applyNumericalStyle(popup, 'padding', params.padding); // Background\n\n if (params.background) {\n popup.style.background = params.background;\n } // Classes\n\n\n addClasses(popup, params);\n };\n\n var addClasses = function addClasses(popup, params) {\n // Default Class + showClass when updating Swal.update({})\n popup.className = \"\".concat(swalClasses.popup, \" \").concat(isVisible(popup) ? params.showClass.popup : '');\n\n if (params.toast) {\n addClass([document.documentElement, document.body], swalClasses['toast-shown']);\n addClass(popup, swalClasses.toast);\n } else {\n addClass(popup, swalClasses.modal);\n } // Custom class\n\n\n applyCustomClass(popup, params, 'popup');\n\n if (typeof params.customClass === 'string') {\n addClass(popup, params.customClass);\n } // Icon class (#1842)\n\n\n if (params.icon) {\n addClass(popup, swalClasses[\"icon-\".concat(params.icon)]);\n }\n };\n\n var render = function render(instance, params) {\n renderPopup(instance, params);\n renderContainer(instance, params);\n renderHeader(instance, params);\n renderContent(instance, params);\n renderActions(instance, params);\n renderFooter(instance, params);\n\n if (typeof params.onRender === 'function') {\n params.onRender(getPopup());\n }\n };\n\n /*\n * Global function to determine if SweetAlert2 popup is shown\n */\n\n var isVisible$1 = function isVisible$$1() {\n return isVisible(getPopup());\n };\n /*\n * Global function to click 'Confirm' button\n */\n\n var clickConfirm = function clickConfirm() {\n return getConfirmButton() && getConfirmButton().click();\n };\n /*\n * Global function to click 'Cancel' button\n */\n\n var clickCancel = function clickCancel() {\n return getCancelButton() && getCancelButton().click();\n };\n\n function fire() {\n var Swal = this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _construct(Swal, args);\n }\n\n /**\n * Returns an extended version of `Swal` containing `params` as defaults.\n * Useful for reusing Swal configuration.\n *\n * For example:\n *\n * Before:\n * const textPromptOptions = { input: 'text', showCancelButton: true }\n * const {value: firstName} = await Swal.fire({ ...textPromptOptions, title: 'What is your first name?' })\n * const {value: lastName} = await Swal.fire({ ...textPromptOptions, title: 'What is your last name?' })\n *\n * After:\n * const TextPrompt = Swal.mixin({ input: 'text', showCancelButton: true })\n * const {value: firstName} = await TextPrompt('What is your first name?')\n * const {value: lastName} = await TextPrompt('What is your last name?')\n *\n * @param mixinParams\n */\n function mixin(mixinParams) {\n var MixinSwal = /*#__PURE__*/function (_this) {\n _inherits(MixinSwal, _this);\n\n var _super = _createSuper(MixinSwal);\n\n function MixinSwal() {\n _classCallCheck(this, MixinSwal);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(MixinSwal, [{\n key: \"_main\",\n value: function _main(params) {\n return _get(_getPrototypeOf(MixinSwal.prototype), \"_main\", this).call(this, _extends({}, mixinParams, params));\n }\n }]);\n\n return MixinSwal;\n }(this);\n\n return MixinSwal;\n }\n\n /**\n * Show spinner instead of Confirm button\n */\n\n var showLoading = function showLoading() {\n var popup = getPopup();\n\n if (!popup) {\n Swal.fire();\n }\n\n popup = getPopup();\n var actions = getActions();\n var confirmButton = getConfirmButton();\n show(actions);\n show(confirmButton, 'inline-block');\n addClass([popup, actions], swalClasses.loading);\n confirmButton.disabled = true;\n popup.setAttribute('data-loading', true);\n popup.setAttribute('aria-busy', true);\n popup.focus();\n };\n\n var RESTORE_FOCUS_TIMEOUT = 100;\n\n var globalState = {};\n\n var focusPreviousActiveElement = function focusPreviousActiveElement() {\n if (globalState.previousActiveElement && globalState.previousActiveElement.focus) {\n globalState.previousActiveElement.focus();\n globalState.previousActiveElement = null;\n } else if (document.body) {\n document.body.focus();\n }\n }; // Restore previous active (focused) element\n\n\n var restoreActiveElement = function restoreActiveElement() {\n return new Promise(function (resolve) {\n var x = window.scrollX;\n var y = window.scrollY;\n globalState.restoreFocusTimeout = setTimeout(function () {\n focusPreviousActiveElement();\n resolve();\n }, RESTORE_FOCUS_TIMEOUT); // issues/900\n\n /* istanbul ignore if */\n\n if (typeof x !== 'undefined' && typeof y !== 'undefined') {\n // IE doesn't have scrollX/scrollY support\n window.scrollTo(x, y);\n }\n });\n };\n\n /**\n * If `timer` parameter is set, returns number of milliseconds of timer remained.\n * Otherwise, returns undefined.\n */\n\n var getTimerLeft = function getTimerLeft() {\n return globalState.timeout && globalState.timeout.getTimerLeft();\n };\n /**\n * Stop timer. Returns number of milliseconds of timer remained.\n * If `timer` parameter isn't set, returns undefined.\n */\n\n var stopTimer = function stopTimer() {\n if (globalState.timeout) {\n stopTimerProgressBar();\n return globalState.timeout.stop();\n }\n };\n /**\n * Resume timer. Returns number of milliseconds of timer remained.\n * If `timer` parameter isn't set, returns undefined.\n */\n\n var resumeTimer = function resumeTimer() {\n if (globalState.timeout) {\n var remaining = globalState.timeout.start();\n animateTimerProgressBar(remaining);\n return remaining;\n }\n };\n /**\n * Resume timer. Returns number of milliseconds of timer remained.\n * If `timer` parameter isn't set, returns undefined.\n */\n\n var toggleTimer = function toggleTimer() {\n var timer = globalState.timeout;\n return timer && (timer.running ? stopTimer() : resumeTimer());\n };\n /**\n * Increase timer. Returns number of milliseconds of an updated timer.\n * If `timer` parameter isn't set, returns undefined.\n */\n\n var increaseTimer = function increaseTimer(n) {\n if (globalState.timeout) {\n var remaining = globalState.timeout.increase(n);\n animateTimerProgressBar(remaining, true);\n return remaining;\n }\n };\n /**\n * Check if timer is running. Returns true if timer is running\n * or false if timer is paused or stopped.\n * If `timer` parameter isn't set, returns undefined\n */\n\n var isTimerRunning = function isTimerRunning() {\n return globalState.timeout && globalState.timeout.isRunning();\n };\n\n var defaultParams = {\n title: '',\n titleText: '',\n text: '',\n html: '',\n footer: '',\n icon: undefined,\n iconHtml: undefined,\n toast: false,\n animation: true,\n showClass: {\n popup: 'swal2-show',\n backdrop: 'swal2-backdrop-show',\n icon: 'swal2-icon-show'\n },\n hideClass: {\n popup: 'swal2-hide',\n backdrop: 'swal2-backdrop-hide',\n icon: 'swal2-icon-hide'\n },\n customClass: undefined,\n target: 'body',\n backdrop: true,\n heightAuto: true,\n allowOutsideClick: true,\n allowEscapeKey: true,\n allowEnterKey: true,\n stopKeydownPropagation: true,\n keydownListenerCapture: false,\n showConfirmButton: true,\n showCancelButton: false,\n preConfirm: undefined,\n confirmButtonText: 'OK',\n confirmButtonAriaLabel: '',\n confirmButtonColor: undefined,\n cancelButtonText: 'Cancel',\n cancelButtonAriaLabel: '',\n cancelButtonColor: undefined,\n buttonsStyling: true,\n reverseButtons: false,\n focusConfirm: true,\n focusCancel: false,\n showCloseButton: false,\n closeButtonHtml: '×',\n closeButtonAriaLabel: 'Close this dialog',\n showLoaderOnConfirm: false,\n imageUrl: undefined,\n imageWidth: undefined,\n imageHeight: undefined,\n imageAlt: '',\n timer: undefined,\n timerProgressBar: false,\n width: undefined,\n padding: undefined,\n background: undefined,\n input: undefined,\n inputPlaceholder: '',\n inputValue: '',\n inputOptions: {},\n inputAutoTrim: true,\n inputAttributes: {},\n inputValidator: undefined,\n validationMessage: undefined,\n grow: false,\n position: 'center',\n progressSteps: [],\n currentProgressStep: undefined,\n progressStepsDistance: undefined,\n onBeforeOpen: undefined,\n onOpen: undefined,\n onRender: undefined,\n onClose: undefined,\n onAfterClose: undefined,\n onDestroy: undefined,\n scrollbarPadding: true\n };\n var updatableParams = ['title', 'titleText', 'text', 'html', 'footer', 'icon', 'hideClass', 'customClass', 'allowOutsideClick', 'allowEscapeKey', 'showConfirmButton', 'showCancelButton', 'confirmButtonText', 'confirmButtonAriaLabel', 'confirmButtonColor', 'cancelButtonText', 'cancelButtonAriaLabel', 'cancelButtonColor', 'buttonsStyling', 'reverseButtons', 'imageUrl', 'imageWidth', 'imageHeight', 'imageAlt', 'progressSteps', 'currentProgressStep', 'onClose', 'onAfterClose', 'onDestroy'];\n var deprecatedParams = {\n animation: 'showClass\" and \"hideClass'\n };\n var toastIncompatibleParams = ['allowOutsideClick', 'allowEnterKey', 'backdrop', 'focusConfirm', 'focusCancel', 'heightAuto', 'keydownListenerCapture'];\n /**\n * Is valid parameter\n * @param {String} paramName\n */\n\n var isValidParameter = function isValidParameter(paramName) {\n return Object.prototype.hasOwnProperty.call(defaultParams, paramName);\n };\n /**\n * Is valid parameter for Swal.update() method\n * @param {String} paramName\n */\n\n var isUpdatableParameter = function isUpdatableParameter(paramName) {\n return updatableParams.indexOf(paramName) !== -1;\n };\n /**\n * Is deprecated parameter\n * @param {String} paramName\n */\n\n var isDeprecatedParameter = function isDeprecatedParameter(paramName) {\n return deprecatedParams[paramName];\n };\n\n var checkIfParamIsValid = function checkIfParamIsValid(param) {\n if (!isValidParameter(param)) {\n warn(\"Unknown parameter \\\"\".concat(param, \"\\\"\"));\n }\n };\n\n var checkIfToastParamIsValid = function checkIfToastParamIsValid(param) {\n if (toastIncompatibleParams.indexOf(param) !== -1) {\n warn(\"The parameter \\\"\".concat(param, \"\\\" is incompatible with toasts\"));\n }\n };\n\n var checkIfParamIsDeprecated = function checkIfParamIsDeprecated(param) {\n if (isDeprecatedParameter(param)) {\n warnAboutDepreation(param, isDeprecatedParameter(param));\n }\n };\n /**\n * Show relevant warnings for given params\n *\n * @param params\n */\n\n\n var showWarningsForParams = function showWarningsForParams(params) {\n for (var param in params) {\n checkIfParamIsValid(param);\n\n if (params.toast) {\n checkIfToastParamIsValid(param);\n }\n\n checkIfParamIsDeprecated(param);\n }\n };\n\n\n\n var staticMethods = /*#__PURE__*/Object.freeze({\n isValidParameter: isValidParameter,\n isUpdatableParameter: isUpdatableParameter,\n isDeprecatedParameter: isDeprecatedParameter,\n argsToParams: argsToParams,\n isVisible: isVisible$1,\n clickConfirm: clickConfirm,\n clickCancel: clickCancel,\n getContainer: getContainer,\n getPopup: getPopup,\n getTitle: getTitle,\n getContent: getContent,\n getHtmlContainer: getHtmlContainer,\n getImage: getImage,\n getIcon: getIcon,\n getIcons: getIcons,\n getCloseButton: getCloseButton,\n getActions: getActions,\n getConfirmButton: getConfirmButton,\n getCancelButton: getCancelButton,\n getHeader: getHeader,\n getFooter: getFooter,\n getTimerProgressBar: getTimerProgressBar,\n getFocusableElements: getFocusableElements,\n getValidationMessage: getValidationMessage,\n isLoading: isLoading,\n fire: fire,\n mixin: mixin,\n queue: queue,\n getQueueStep: getQueueStep,\n insertQueueStep: insertQueueStep,\n deleteQueueStep: deleteQueueStep,\n showLoading: showLoading,\n enableLoading: showLoading,\n getTimerLeft: getTimerLeft,\n stopTimer: stopTimer,\n resumeTimer: resumeTimer,\n toggleTimer: toggleTimer,\n increaseTimer: increaseTimer,\n isTimerRunning: isTimerRunning\n });\n\n /**\n * Enables buttons and hide loader.\n */\n\n function hideLoading() {\n // do nothing if popup is closed\n var innerParams = privateProps.innerParams.get(this);\n\n if (!innerParams) {\n return;\n }\n\n var domCache = privateProps.domCache.get(this);\n\n if (!innerParams.showConfirmButton) {\n hide(domCache.confirmButton);\n\n if (!innerParams.showCancelButton) {\n hide(domCache.actions);\n }\n }\n\n removeClass([domCache.popup, domCache.actions], swalClasses.loading);\n domCache.popup.removeAttribute('aria-busy');\n domCache.popup.removeAttribute('data-loading');\n domCache.confirmButton.disabled = false;\n domCache.cancelButton.disabled = false;\n }\n\n function getInput$1(instance) {\n var innerParams = privateProps.innerParams.get(instance || this);\n var domCache = privateProps.domCache.get(instance || this);\n\n if (!domCache) {\n return null;\n }\n\n return getInput(domCache.content, innerParams.input);\n }\n\n var fixScrollbar = function fixScrollbar() {\n // for queues, do not do this more than once\n if (states.previousBodyPadding !== null) {\n return;\n } // if the body has overflow\n\n\n if (document.body.scrollHeight > window.innerHeight) {\n // add padding so the content doesn't shift after removal of scrollbar\n states.previousBodyPadding = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right'));\n document.body.style.paddingRight = \"\".concat(states.previousBodyPadding + measureScrollbar(), \"px\");\n }\n };\n var undoScrollbar = function undoScrollbar() {\n if (states.previousBodyPadding !== null) {\n document.body.style.paddingRight = \"\".concat(states.previousBodyPadding, \"px\");\n states.previousBodyPadding = null;\n }\n };\n\n /* istanbul ignore file */\n\n var iOSfix = function iOSfix() {\n var iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1;\n\n if (iOS && !hasClass(document.body, swalClasses.iosfix)) {\n var offset = document.body.scrollTop;\n document.body.style.top = \"\".concat(offset * -1, \"px\");\n addClass(document.body, swalClasses.iosfix);\n lockBodyScroll();\n addBottomPaddingForTallPopups(); // #1948\n }\n };\n\n var addBottomPaddingForTallPopups = function addBottomPaddingForTallPopups() {\n var safari = !navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i);\n\n if (safari) {\n var bottomPanelHeight = 44;\n\n if (getPopup().scrollHeight > window.innerHeight - bottomPanelHeight) {\n getContainer().style.paddingBottom = \"\".concat(bottomPanelHeight, \"px\");\n }\n }\n };\n\n var lockBodyScroll = function lockBodyScroll() {\n // #1246\n var container = getContainer();\n var preventTouchMove;\n\n container.ontouchstart = function (e) {\n preventTouchMove = shouldPreventTouchMove(e.target);\n };\n\n container.ontouchmove = function (e) {\n if (preventTouchMove) {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n };\n\n var shouldPreventTouchMove = function shouldPreventTouchMove(target) {\n var container = getContainer();\n\n if (target === container) {\n return true;\n }\n\n if (!isScrollable(container) && target.tagName !== 'INPUT' && // #1603\n !(isScrollable(getContent()) && // #1944\n getContent().contains(target))) {\n return true;\n }\n\n return false;\n };\n\n var undoIOSfix = function undoIOSfix() {\n if (hasClass(document.body, swalClasses.iosfix)) {\n var offset = parseInt(document.body.style.top, 10);\n removeClass(document.body, swalClasses.iosfix);\n document.body.style.top = '';\n document.body.scrollTop = offset * -1;\n }\n };\n\n /* istanbul ignore file */\n\n var isIE11 = function isIE11() {\n return !!window.MSInputMethodContext && !!document.documentMode;\n }; // Fix IE11 centering sweetalert2/issues/933\n\n\n var fixVerticalPositionIE = function fixVerticalPositionIE() {\n var container = getContainer();\n var popup = getPopup();\n container.style.removeProperty('align-items');\n\n if (popup.offsetTop < 0) {\n container.style.alignItems = 'flex-start';\n }\n };\n\n var IEfix = function IEfix() {\n if (typeof window !== 'undefined' && isIE11()) {\n fixVerticalPositionIE();\n window.addEventListener('resize', fixVerticalPositionIE);\n }\n };\n var undoIEfix = function undoIEfix() {\n if (typeof window !== 'undefined' && isIE11()) {\n window.removeEventListener('resize', fixVerticalPositionIE);\n }\n };\n\n // Adding aria-hidden=\"true\" to elements outside of the active modal dialog ensures that\n // elements not within the active modal dialog will not be surfaced if a user opens a screen\n // reader’s list of elements (headings, form controls, landmarks, etc.) in the document.\n\n var setAriaHidden = function setAriaHidden() {\n var bodyChildren = toArray(document.body.children);\n bodyChildren.forEach(function (el) {\n if (el === getContainer() || contains(el, getContainer())) {\n return;\n }\n\n if (el.hasAttribute('aria-hidden')) {\n el.setAttribute('data-previous-aria-hidden', el.getAttribute('aria-hidden'));\n }\n\n el.setAttribute('aria-hidden', 'true');\n });\n };\n var unsetAriaHidden = function unsetAriaHidden() {\n var bodyChildren = toArray(document.body.children);\n bodyChildren.forEach(function (el) {\n if (el.hasAttribute('data-previous-aria-hidden')) {\n el.setAttribute('aria-hidden', el.getAttribute('data-previous-aria-hidden'));\n el.removeAttribute('data-previous-aria-hidden');\n } else {\n el.removeAttribute('aria-hidden');\n }\n });\n };\n\n /**\n * This module containts `WeakMap`s for each effectively-\"private property\" that a `Swal` has.\n * For example, to set the private property \"foo\" of `this` to \"bar\", you can `privateProps.foo.set(this, 'bar')`\n * This is the approach that Babel will probably take to implement private methods/fields\n * https://github.com/tc39/proposal-private-methods\n * https://github.com/babel/babel/pull/7555\n * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module*\n * then we can use that language feature.\n */\n var privateMethods = {\n swalPromiseResolve: new WeakMap()\n };\n\n /*\n * Instance method to close sweetAlert\n */\n\n function removePopupAndResetState(instance, container, isToast$$1, onAfterClose) {\n if (isToast$$1) {\n triggerOnAfterCloseAndDispose(instance, onAfterClose);\n } else {\n restoreActiveElement().then(function () {\n return triggerOnAfterCloseAndDispose(instance, onAfterClose);\n });\n globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, {\n capture: globalState.keydownListenerCapture\n });\n globalState.keydownHandlerAdded = false;\n }\n\n if (container.parentNode && !document.body.getAttribute('data-swal2-queue-step')) {\n container.parentNode.removeChild(container);\n }\n\n if (isModal()) {\n undoScrollbar();\n undoIOSfix();\n undoIEfix();\n unsetAriaHidden();\n }\n\n removeBodyClasses();\n }\n\n function removeBodyClasses() {\n removeClass([document.documentElement, document.body], [swalClasses.shown, swalClasses['height-auto'], swalClasses['no-backdrop'], swalClasses['toast-shown'], swalClasses['toast-column']]);\n }\n\n function close(resolveValue) {\n var popup = getPopup();\n\n if (!popup) {\n return;\n }\n\n var innerParams = privateProps.innerParams.get(this);\n\n if (!innerParams || hasClass(popup, innerParams.hideClass.popup)) {\n return;\n }\n\n var swalPromiseResolve = privateMethods.swalPromiseResolve.get(this);\n removeClass(popup, innerParams.showClass.popup);\n addClass(popup, innerParams.hideClass.popup);\n var backdrop = getContainer();\n removeClass(backdrop, innerParams.showClass.backdrop);\n addClass(backdrop, innerParams.hideClass.backdrop);\n handlePopupAnimation(this, popup, innerParams);\n\n if (typeof resolveValue !== 'undefined') {\n resolveValue.isDismissed = typeof resolveValue.dismiss !== 'undefined';\n resolveValue.isConfirmed = typeof resolveValue.dismiss === 'undefined';\n } else {\n resolveValue = {\n isDismissed: true,\n isConfirmed: false\n };\n } // Resolve Swal promise\n\n\n swalPromiseResolve(resolveValue || {});\n }\n\n var handlePopupAnimation = function handlePopupAnimation(instance, popup, innerParams) {\n var container = getContainer(); // If animation is supported, animate\n\n var animationIsSupported = animationEndEvent && hasCssAnimation(popup);\n var onClose = innerParams.onClose,\n onAfterClose = innerParams.onAfterClose;\n\n if (onClose !== null && typeof onClose === 'function') {\n onClose(popup);\n }\n\n if (animationIsSupported) {\n animatePopup(instance, popup, container, onAfterClose);\n } else {\n // Otherwise, remove immediately\n removePopupAndResetState(instance, container, isToast(), onAfterClose);\n }\n };\n\n var animatePopup = function animatePopup(instance, popup, container, onAfterClose) {\n globalState.swalCloseEventFinishedCallback = removePopupAndResetState.bind(null, instance, container, isToast(), onAfterClose);\n popup.addEventListener(animationEndEvent, function (e) {\n if (e.target === popup) {\n globalState.swalCloseEventFinishedCallback();\n delete globalState.swalCloseEventFinishedCallback;\n }\n });\n };\n\n var triggerOnAfterCloseAndDispose = function triggerOnAfterCloseAndDispose(instance, onAfterClose) {\n setTimeout(function () {\n if (typeof onAfterClose === 'function') {\n onAfterClose();\n }\n\n instance._destroy();\n });\n };\n\n function setButtonsDisabled(instance, buttons, disabled) {\n var domCache = privateProps.domCache.get(instance);\n buttons.forEach(function (button) {\n domCache[button].disabled = disabled;\n });\n }\n\n function setInputDisabled(input, disabled) {\n if (!input) {\n return false;\n }\n\n if (input.type === 'radio') {\n var radiosContainer = input.parentNode.parentNode;\n var radios = radiosContainer.querySelectorAll('input');\n\n for (var i = 0; i < radios.length; i++) {\n radios[i].disabled = disabled;\n }\n } else {\n input.disabled = disabled;\n }\n }\n\n function enableButtons() {\n setButtonsDisabled(this, ['confirmButton', 'cancelButton'], false);\n }\n function disableButtons() {\n setButtonsDisabled(this, ['confirmButton', 'cancelButton'], true);\n }\n function enableInput() {\n return setInputDisabled(this.getInput(), false);\n }\n function disableInput() {\n return setInputDisabled(this.getInput(), true);\n }\n\n function showValidationMessage(error) {\n var domCache = privateProps.domCache.get(this);\n setInnerHtml(domCache.validationMessage, error);\n var popupComputedStyle = window.getComputedStyle(domCache.popup);\n domCache.validationMessage.style.marginLeft = \"-\".concat(popupComputedStyle.getPropertyValue('padding-left'));\n domCache.validationMessage.style.marginRight = \"-\".concat(popupComputedStyle.getPropertyValue('padding-right'));\n show(domCache.validationMessage);\n var input = this.getInput();\n\n if (input) {\n input.setAttribute('aria-invalid', true);\n input.setAttribute('aria-describedBy', swalClasses['validation-message']);\n focusInput(input);\n addClass(input, swalClasses.inputerror);\n }\n } // Hide block with validation message\n\n function resetValidationMessage$1() {\n var domCache = privateProps.domCache.get(this);\n\n if (domCache.validationMessage) {\n hide(domCache.validationMessage);\n }\n\n var input = this.getInput();\n\n if (input) {\n input.removeAttribute('aria-invalid');\n input.removeAttribute('aria-describedBy');\n removeClass(input, swalClasses.inputerror);\n }\n }\n\n function getProgressSteps$1() {\n var domCache = privateProps.domCache.get(this);\n return domCache.progressSteps;\n }\n\n var Timer = /*#__PURE__*/function () {\n function Timer(callback, delay) {\n _classCallCheck(this, Timer);\n\n this.callback = callback;\n this.remaining = delay;\n this.running = false;\n this.start();\n }\n\n _createClass(Timer, [{\n key: \"start\",\n value: function start() {\n if (!this.running) {\n this.running = true;\n this.started = new Date();\n this.id = setTimeout(this.callback, this.remaining);\n }\n\n return this.remaining;\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.running) {\n this.running = false;\n clearTimeout(this.id);\n this.remaining -= new Date() - this.started;\n }\n\n return this.remaining;\n }\n }, {\n key: \"increase\",\n value: function increase(n) {\n var running = this.running;\n\n if (running) {\n this.stop();\n }\n\n this.remaining += n;\n\n if (running) {\n this.start();\n }\n\n return this.remaining;\n }\n }, {\n key: \"getTimerLeft\",\n value: function getTimerLeft() {\n if (this.running) {\n this.stop();\n this.start();\n }\n\n return this.remaining;\n }\n }, {\n key: \"isRunning\",\n value: function isRunning() {\n return this.running;\n }\n }]);\n\n return Timer;\n }();\n\n var defaultInputValidators = {\n email: function email(string, validationMessage) {\n return /^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z0-9-]{2,24}$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid email address');\n },\n url: function url(string, validationMessage) {\n // taken from https://stackoverflow.com/a/3809435 with a small change from #1306\n return /^https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._+~#=]{2,256}\\.[a-z]{2,63}\\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid URL');\n }\n };\n\n function setDefaultInputValidators(params) {\n // Use default `inputValidator` for supported input types if not provided\n if (!params.inputValidator) {\n Object.keys(defaultInputValidators).forEach(function (key) {\n if (params.input === key) {\n params.inputValidator = defaultInputValidators[key];\n }\n });\n }\n }\n\n function validateCustomTargetElement(params) {\n // Determine if the custom target element is valid\n if (!params.target || typeof params.target === 'string' && !document.querySelector(params.target) || typeof params.target !== 'string' && !params.target.appendChild) {\n warn('Target parameter is not valid, defaulting to \"body\"');\n params.target = 'body';\n }\n }\n /**\n * Set type, text and actions on popup\n *\n * @param params\n * @returns {boolean}\n */\n\n\n function setParameters(params) {\n setDefaultInputValidators(params); // showLoaderOnConfirm && preConfirm\n\n if (params.showLoaderOnConfirm && !params.preConfirm) {\n warn('showLoaderOnConfirm is set to true, but preConfirm is not defined.\\n' + 'showLoaderOnConfirm should be used together with preConfirm, see usage example:\\n' + 'https://sweetalert2.github.io/#ajax-request');\n } // params.animation will be actually used in renderPopup.js\n // but in case when params.animation is a function, we need to call that function\n // before popup (re)initialization, so it'll be possible to check Swal.isVisible()\n // inside the params.animation function\n\n\n params.animation = callIfFunction(params.animation);\n validateCustomTargetElement(params); // Replace newlines with
      in title\n\n if (typeof params.title === 'string') {\n params.title = params.title.split('\\n').join('
      ');\n }\n\n init(params);\n }\n\n /**\n * Open popup, add necessary classes and styles, fix scrollbar\n *\n * @param {Array} params\n */\n\n var openPopup = function openPopup(params) {\n var container = getContainer();\n var popup = getPopup();\n\n if (typeof params.onBeforeOpen === 'function') {\n params.onBeforeOpen(popup);\n }\n\n var bodyStyles = window.getComputedStyle(document.body);\n var initialBodyOverflow = bodyStyles.overflowY;\n addClasses$1(container, popup, params); // scrolling is 'hidden' until animation is done, after that 'auto'\n\n setScrollingVisibility(container, popup);\n\n if (isModal()) {\n fixScrollContainer(container, params.scrollbarPadding, initialBodyOverflow);\n setAriaHidden();\n }\n\n if (!isToast() && !globalState.previousActiveElement) {\n globalState.previousActiveElement = document.activeElement;\n }\n\n if (typeof params.onOpen === 'function') {\n setTimeout(function () {\n return params.onOpen(popup);\n });\n }\n\n removeClass(container, swalClasses['no-transition']);\n };\n\n function swalOpenAnimationFinished(event) {\n var popup = getPopup();\n\n if (event.target !== popup) {\n return;\n }\n\n var container = getContainer();\n popup.removeEventListener(animationEndEvent, swalOpenAnimationFinished);\n container.style.overflowY = 'auto';\n }\n\n var setScrollingVisibility = function setScrollingVisibility(container, popup) {\n if (animationEndEvent && hasCssAnimation(popup)) {\n container.style.overflowY = 'hidden';\n popup.addEventListener(animationEndEvent, swalOpenAnimationFinished);\n } else {\n container.style.overflowY = 'auto';\n }\n };\n\n var fixScrollContainer = function fixScrollContainer(container, scrollbarPadding, initialBodyOverflow) {\n iOSfix();\n IEfix();\n\n if (scrollbarPadding && initialBodyOverflow !== 'hidden') {\n fixScrollbar();\n } // sweetalert2/issues/1247\n\n\n setTimeout(function () {\n container.scrollTop = 0;\n });\n };\n\n var addClasses$1 = function addClasses(container, popup, params) {\n addClass(container, params.showClass.backdrop);\n show(popup); // Animate popup right after showing it\n\n addClass(popup, params.showClass.popup);\n addClass([document.documentElement, document.body], swalClasses.shown);\n\n if (params.heightAuto && params.backdrop && !params.toast) {\n addClass([document.documentElement, document.body], swalClasses['height-auto']);\n }\n };\n\n var handleInputOptionsAndValue = function handleInputOptionsAndValue(instance, params) {\n if (params.input === 'select' || params.input === 'radio') {\n handleInputOptions(instance, params);\n } else if (['text', 'email', 'number', 'tel', 'textarea'].indexOf(params.input) !== -1 && (hasToPromiseFn(params.inputValue) || isPromise(params.inputValue))) {\n handleInputValue(instance, params);\n }\n };\n var getInputValue = function getInputValue(instance, innerParams) {\n var input = instance.getInput();\n\n if (!input) {\n return null;\n }\n\n switch (innerParams.input) {\n case 'checkbox':\n return getCheckboxValue(input);\n\n case 'radio':\n return getRadioValue(input);\n\n case 'file':\n return getFileValue(input);\n\n default:\n return innerParams.inputAutoTrim ? input.value.trim() : input.value;\n }\n };\n\n var getCheckboxValue = function getCheckboxValue(input) {\n return input.checked ? 1 : 0;\n };\n\n var getRadioValue = function getRadioValue(input) {\n return input.checked ? input.value : null;\n };\n\n var getFileValue = function getFileValue(input) {\n return input.files.length ? input.getAttribute('multiple') !== null ? input.files : input.files[0] : null;\n };\n\n var handleInputOptions = function handleInputOptions(instance, params) {\n var content = getContent();\n\n var processInputOptions = function processInputOptions(inputOptions) {\n return populateInputOptions[params.input](content, formatInputOptions(inputOptions), params);\n };\n\n if (hasToPromiseFn(params.inputOptions) || isPromise(params.inputOptions)) {\n showLoading();\n asPromise(params.inputOptions).then(function (inputOptions) {\n instance.hideLoading();\n processInputOptions(inputOptions);\n });\n } else if (_typeof(params.inputOptions) === 'object') {\n processInputOptions(params.inputOptions);\n } else {\n error(\"Unexpected type of inputOptions! Expected object, Map or Promise, got \".concat(_typeof(params.inputOptions)));\n }\n };\n\n var handleInputValue = function handleInputValue(instance, params) {\n var input = instance.getInput();\n hide(input);\n asPromise(params.inputValue).then(function (inputValue) {\n input.value = params.input === 'number' ? parseFloat(inputValue) || 0 : \"\".concat(inputValue);\n show(input);\n input.focus();\n instance.hideLoading();\n })[\"catch\"](function (err) {\n error(\"Error in inputValue promise: \".concat(err));\n input.value = '';\n show(input);\n input.focus();\n instance.hideLoading();\n });\n };\n\n var populateInputOptions = {\n select: function select(content, inputOptions, params) {\n var select = getChildByClass(content, swalClasses.select);\n\n var renderOption = function renderOption(parent, optionLabel, optionValue) {\n var option = document.createElement('option');\n option.value = optionValue;\n setInnerHtml(option, optionLabel);\n\n if (params.inputValue.toString() === optionValue.toString()) {\n option.selected = true;\n }\n\n parent.appendChild(option);\n };\n\n inputOptions.forEach(function (inputOption) {\n var optionValue = inputOption[0];\n var optionLabel = inputOption[1]; // spec:\n // https://www.w3.org/TR/html401/interact/forms.html#h-17.6\n // \"...all OPTGROUP elements must be specified directly within a SELECT element (i.e., groups may not be nested)...\"\n // check whether this is a \n\n if (Array.isArray(optionLabel)) {\n // if it is an array, then it is an \n var optgroup = document.createElement('optgroup');\n optgroup.label = optionValue;\n optgroup.disabled = false; // not configurable for now\n\n select.appendChild(optgroup);\n optionLabel.forEach(function (o) {\n return renderOption(optgroup, o[1], o[0]);\n });\n } else {\n // case of \n valueFormatted = formatInputOptions(valueFormatted);\n }\n\n result.push([key, valueFormatted]);\n });\n } else {\n Object.keys(inputOptions).forEach(function (key) {\n var valueFormatted = inputOptions[key];\n\n if (_typeof(valueFormatted) === 'object') {\n // case of \n valueFormatted = formatInputOptions(valueFormatted);\n }\n\n result.push([key, valueFormatted]);\n });\n }\n\n return result;\n };\n\n var handleConfirmButtonClick = function handleConfirmButtonClick(instance, innerParams) {\n instance.disableButtons();\n\n if (innerParams.input) {\n handleConfirmWithInput(instance, innerParams);\n } else {\n confirm(instance, innerParams, true);\n }\n };\n var handleCancelButtonClick = function handleCancelButtonClick(instance, dismissWith) {\n instance.disableButtons();\n dismissWith(DismissReason.cancel);\n };\n\n var handleConfirmWithInput = function handleConfirmWithInput(instance, innerParams) {\n var inputValue = getInputValue(instance, innerParams);\n\n if (innerParams.inputValidator) {\n instance.disableInput();\n var validationPromise = Promise.resolve().then(function () {\n return asPromise(innerParams.inputValidator(inputValue, innerParams.validationMessage));\n });\n validationPromise.then(function (validationMessage) {\n instance.enableButtons();\n instance.enableInput();\n\n if (validationMessage) {\n instance.showValidationMessage(validationMessage);\n } else {\n confirm(instance, innerParams, inputValue);\n }\n });\n } else if (!instance.getInput().checkValidity()) {\n instance.enableButtons();\n instance.showValidationMessage(innerParams.validationMessage);\n } else {\n confirm(instance, innerParams, inputValue);\n }\n };\n\n var succeedWith = function succeedWith(instance, value) {\n instance.closePopup({\n value: value\n });\n };\n\n var confirm = function confirm(instance, innerParams, value) {\n if (innerParams.showLoaderOnConfirm) {\n showLoading(); // TODO: make showLoading an *instance* method\n }\n\n if (innerParams.preConfirm) {\n instance.resetValidationMessage();\n var preConfirmPromise = Promise.resolve().then(function () {\n return asPromise(innerParams.preConfirm(value, innerParams.validationMessage));\n });\n preConfirmPromise.then(function (preConfirmValue) {\n if (isVisible(getValidationMessage()) || preConfirmValue === false) {\n instance.hideLoading();\n } else {\n succeedWith(instance, typeof preConfirmValue === 'undefined' ? value : preConfirmValue);\n }\n });\n } else {\n succeedWith(instance, value);\n }\n };\n\n var addKeydownHandler = function addKeydownHandler(instance, globalState, innerParams, dismissWith) {\n if (globalState.keydownTarget && globalState.keydownHandlerAdded) {\n globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, {\n capture: globalState.keydownListenerCapture\n });\n globalState.keydownHandlerAdded = false;\n }\n\n if (!innerParams.toast) {\n globalState.keydownHandler = function (e) {\n return keydownHandler(instance, e, dismissWith);\n };\n\n globalState.keydownTarget = innerParams.keydownListenerCapture ? window : getPopup();\n globalState.keydownListenerCapture = innerParams.keydownListenerCapture;\n globalState.keydownTarget.addEventListener('keydown', globalState.keydownHandler, {\n capture: globalState.keydownListenerCapture\n });\n globalState.keydownHandlerAdded = true;\n }\n }; // Focus handling\n\n var setFocus = function setFocus(innerParams, index, increment) {\n var focusableElements = getFocusableElements(); // search for visible elements and select the next possible match\n\n for (var i = 0; i < focusableElements.length; i++) {\n index = index + increment; // rollover to first item\n\n if (index === focusableElements.length) {\n index = 0; // go to last item\n } else if (index === -1) {\n index = focusableElements.length - 1;\n }\n\n return focusableElements[index].focus();\n } // no visible focusable elements, focus the popup\n\n\n getPopup().focus();\n };\n var arrowKeys = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Left', 'Right', 'Up', 'Down' // IE11\n ];\n var escKeys = ['Escape', 'Esc' // IE11\n ];\n\n var keydownHandler = function keydownHandler(instance, e, dismissWith) {\n var innerParams = privateProps.innerParams.get(instance);\n\n if (innerParams.stopKeydownPropagation) {\n e.stopPropagation();\n } // ENTER\n\n\n if (e.key === 'Enter') {\n handleEnter(instance, e, innerParams); // TAB\n } else if (e.key === 'Tab') {\n handleTab(e, innerParams); // ARROWS - switch focus between buttons\n } else if (arrowKeys.indexOf(e.key) !== -1) {\n handleArrows(); // ESC\n } else if (escKeys.indexOf(e.key) !== -1) {\n handleEsc(e, innerParams, dismissWith);\n }\n };\n\n var handleEnter = function handleEnter(instance, e, innerParams) {\n // #720 #721\n if (e.isComposing) {\n return;\n }\n\n if (e.target && instance.getInput() && e.target.outerHTML === instance.getInput().outerHTML) {\n if (['textarea', 'file'].indexOf(innerParams.input) !== -1) {\n return; // do not submit\n }\n\n clickConfirm();\n e.preventDefault();\n }\n };\n\n var handleTab = function handleTab(e, innerParams) {\n var targetElement = e.target;\n var focusableElements = getFocusableElements();\n var btnIndex = -1;\n\n for (var i = 0; i < focusableElements.length; i++) {\n if (targetElement === focusableElements[i]) {\n btnIndex = i;\n break;\n }\n }\n\n if (!e.shiftKey) {\n // Cycle to the next button\n setFocus(innerParams, btnIndex, 1);\n } else {\n // Cycle to the prev button\n setFocus(innerParams, btnIndex, -1);\n }\n\n e.stopPropagation();\n e.preventDefault();\n };\n\n var handleArrows = function handleArrows() {\n var confirmButton = getConfirmButton();\n var cancelButton = getCancelButton(); // focus Cancel button if Confirm button is currently focused\n\n if (document.activeElement === confirmButton && isVisible(cancelButton)) {\n cancelButton.focus(); // and vice versa\n } else if (document.activeElement === cancelButton && isVisible(confirmButton)) {\n confirmButton.focus();\n }\n };\n\n var handleEsc = function handleEsc(e, innerParams, dismissWith) {\n if (callIfFunction(innerParams.allowEscapeKey)) {\n e.preventDefault();\n dismissWith(DismissReason.esc);\n }\n };\n\n var handlePopupClick = function handlePopupClick(instance, domCache, dismissWith) {\n var innerParams = privateProps.innerParams.get(instance);\n\n if (innerParams.toast) {\n handleToastClick(instance, domCache, dismissWith);\n } else {\n // Ignore click events that had mousedown on the popup but mouseup on the container\n // This can happen when the user drags a slider\n handleModalMousedown(domCache); // Ignore click events that had mousedown on the container but mouseup on the popup\n\n handleContainerMousedown(domCache);\n handleModalClick(instance, domCache, dismissWith);\n }\n };\n\n var handleToastClick = function handleToastClick(instance, domCache, dismissWith) {\n // Closing toast by internal click\n domCache.popup.onclick = function () {\n var innerParams = privateProps.innerParams.get(instance);\n\n if (innerParams.showConfirmButton || innerParams.showCancelButton || innerParams.showCloseButton || innerParams.input) {\n return;\n }\n\n dismissWith(DismissReason.close);\n };\n };\n\n var ignoreOutsideClick = false;\n\n var handleModalMousedown = function handleModalMousedown(domCache) {\n domCache.popup.onmousedown = function () {\n domCache.container.onmouseup = function (e) {\n domCache.container.onmouseup = undefined; // We only check if the mouseup target is the container because usually it doesn't\n // have any other direct children aside of the popup\n\n if (e.target === domCache.container) {\n ignoreOutsideClick = true;\n }\n };\n };\n };\n\n var handleContainerMousedown = function handleContainerMousedown(domCache) {\n domCache.container.onmousedown = function () {\n domCache.popup.onmouseup = function (e) {\n domCache.popup.onmouseup = undefined; // We also need to check if the mouseup target is a child of the popup\n\n if (e.target === domCache.popup || domCache.popup.contains(e.target)) {\n ignoreOutsideClick = true;\n }\n };\n };\n };\n\n var handleModalClick = function handleModalClick(instance, domCache, dismissWith) {\n domCache.container.onclick = function (e) {\n var innerParams = privateProps.innerParams.get(instance);\n\n if (ignoreOutsideClick) {\n ignoreOutsideClick = false;\n return;\n }\n\n if (e.target === domCache.container && callIfFunction(innerParams.allowOutsideClick)) {\n dismissWith(DismissReason.backdrop);\n }\n };\n };\n\n function _main(userParams) {\n showWarningsForParams(userParams);\n\n if (globalState.currentInstance) {\n globalState.currentInstance._destroy();\n }\n\n globalState.currentInstance = this;\n var innerParams = prepareParams(userParams);\n setParameters(innerParams);\n Object.freeze(innerParams); // clear the previous timer\n\n if (globalState.timeout) {\n globalState.timeout.stop();\n delete globalState.timeout;\n } // clear the restore focus timeout\n\n\n clearTimeout(globalState.restoreFocusTimeout);\n var domCache = populateDomCache(this);\n render(this, innerParams);\n privateProps.innerParams.set(this, innerParams);\n return swalPromise(this, domCache, innerParams);\n }\n\n var prepareParams = function prepareParams(userParams) {\n var showClass = _extends({}, defaultParams.showClass, userParams.showClass);\n\n var hideClass = _extends({}, defaultParams.hideClass, userParams.hideClass);\n\n var params = _extends({}, defaultParams, userParams);\n\n params.showClass = showClass;\n params.hideClass = hideClass; // @deprecated\n\n if (userParams.animation === false) {\n params.showClass = {\n popup: 'swal2-noanimation',\n backdrop: 'swal2-noanimation'\n };\n params.hideClass = {};\n }\n\n return params;\n };\n\n var swalPromise = function swalPromise(instance, domCache, innerParams) {\n return new Promise(function (resolve) {\n // functions to handle all closings/dismissals\n var dismissWith = function dismissWith(dismiss) {\n instance.closePopup({\n dismiss: dismiss\n });\n };\n\n privateMethods.swalPromiseResolve.set(instance, resolve);\n\n domCache.confirmButton.onclick = function () {\n return handleConfirmButtonClick(instance, innerParams);\n };\n\n domCache.cancelButton.onclick = function () {\n return handleCancelButtonClick(instance, dismissWith);\n };\n\n domCache.closeButton.onclick = function () {\n return dismissWith(DismissReason.close);\n };\n\n handlePopupClick(instance, domCache, dismissWith);\n addKeydownHandler(instance, globalState, innerParams, dismissWith);\n\n if (innerParams.toast && (innerParams.input || innerParams.footer || innerParams.showCloseButton)) {\n addClass(document.body, swalClasses['toast-column']);\n } else {\n removeClass(document.body, swalClasses['toast-column']);\n }\n\n handleInputOptionsAndValue(instance, innerParams);\n openPopup(innerParams);\n setupTimer(globalState, innerParams, dismissWith);\n initFocus(domCache, innerParams); // Scroll container to top on open (#1247, #1946)\n\n setTimeout(function () {\n domCache.container.scrollTop = 0;\n });\n });\n };\n\n var populateDomCache = function populateDomCache(instance) {\n var domCache = {\n popup: getPopup(),\n container: getContainer(),\n content: getContent(),\n actions: getActions(),\n confirmButton: getConfirmButton(),\n cancelButton: getCancelButton(),\n closeButton: getCloseButton(),\n validationMessage: getValidationMessage(),\n progressSteps: getProgressSteps()\n };\n privateProps.domCache.set(instance, domCache);\n return domCache;\n };\n\n var setupTimer = function setupTimer(globalState$$1, innerParams, dismissWith) {\n var timerProgressBar = getTimerProgressBar();\n hide(timerProgressBar);\n\n if (innerParams.timer) {\n globalState$$1.timeout = new Timer(function () {\n dismissWith('timer');\n delete globalState$$1.timeout;\n }, innerParams.timer);\n\n if (innerParams.timerProgressBar) {\n show(timerProgressBar);\n setTimeout(function () {\n if (globalState$$1.timeout.running) {\n // timer can be already stopped at this point\n animateTimerProgressBar(innerParams.timer);\n }\n });\n }\n }\n };\n\n var initFocus = function initFocus(domCache, innerParams) {\n if (innerParams.toast) {\n return;\n }\n\n if (!callIfFunction(innerParams.allowEnterKey)) {\n return blurActiveElement();\n }\n\n if (innerParams.focusCancel && isVisible(domCache.cancelButton)) {\n return domCache.cancelButton.focus();\n }\n\n if (innerParams.focusConfirm && isVisible(domCache.confirmButton)) {\n return domCache.confirmButton.focus();\n }\n\n setFocus(innerParams, -1, 1);\n };\n\n var blurActiveElement = function blurActiveElement() {\n if (document.activeElement && typeof document.activeElement.blur === 'function') {\n document.activeElement.blur();\n }\n };\n\n /**\n * Updates popup parameters.\n */\n\n function update(params) {\n var popup = getPopup();\n var innerParams = privateProps.innerParams.get(this);\n\n if (!popup || hasClass(popup, innerParams.hideClass.popup)) {\n return warn(\"You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.\");\n }\n\n var validUpdatableParams = {}; // assign valid params from `params` to `defaults`\n\n Object.keys(params).forEach(function (param) {\n if (Swal.isUpdatableParameter(param)) {\n validUpdatableParams[param] = params[param];\n } else {\n warn(\"Invalid parameter to update: \\\"\".concat(param, \"\\\". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\"));\n }\n });\n\n var updatedParams = _extends({}, innerParams, validUpdatableParams);\n\n render(this, updatedParams);\n privateProps.innerParams.set(this, updatedParams);\n Object.defineProperties(this, {\n params: {\n value: _extends({}, this.params, params),\n writable: false,\n enumerable: true\n }\n });\n }\n\n function _destroy() {\n var domCache = privateProps.domCache.get(this);\n var innerParams = privateProps.innerParams.get(this);\n\n if (!innerParams) {\n return; // This instance has already been destroyed\n } // Check if there is another Swal closing\n\n\n if (domCache.popup && globalState.swalCloseEventFinishedCallback) {\n globalState.swalCloseEventFinishedCallback();\n delete globalState.swalCloseEventFinishedCallback;\n } // Check if there is a swal disposal defer timer\n\n\n if (globalState.deferDisposalTimer) {\n clearTimeout(globalState.deferDisposalTimer);\n delete globalState.deferDisposalTimer;\n }\n\n if (typeof innerParams.onDestroy === 'function') {\n innerParams.onDestroy();\n }\n\n disposeSwal(this);\n }\n\n var disposeSwal = function disposeSwal(instance) {\n // Unset this.params so GC will dispose it (#1569)\n delete instance.params; // Unset globalState props so GC will dispose globalState (#1569)\n\n delete globalState.keydownHandler;\n delete globalState.keydownTarget; // Unset WeakMaps so GC will be able to dispose them (#1569)\n\n unsetWeakMaps(privateProps);\n unsetWeakMaps(privateMethods);\n };\n\n var unsetWeakMaps = function unsetWeakMaps(obj) {\n for (var i in obj) {\n obj[i] = new WeakMap();\n }\n };\n\n\n\n var instanceMethods = /*#__PURE__*/Object.freeze({\n hideLoading: hideLoading,\n disableLoading: hideLoading,\n getInput: getInput$1,\n close: close,\n closePopup: close,\n closeModal: close,\n closeToast: close,\n enableButtons: enableButtons,\n disableButtons: disableButtons,\n enableInput: enableInput,\n disableInput: disableInput,\n showValidationMessage: showValidationMessage,\n resetValidationMessage: resetValidationMessage$1,\n getProgressSteps: getProgressSteps$1,\n _main: _main,\n update: update,\n _destroy: _destroy\n });\n\n var currentInstance;\n\n var SweetAlert = /*#__PURE__*/function () {\n function SweetAlert() {\n _classCallCheck(this, SweetAlert);\n\n // Prevent run in Node env\n if (typeof window === 'undefined') {\n return;\n } // Check for the existence of Promise\n\n\n if (typeof Promise === 'undefined') {\n error('This package requires a Promise library, please include a shim to enable it in this browser (See: https://github.com/sweetalert2/sweetalert2/wiki/Migration-from-SweetAlert-to-SweetAlert2#1-ie-support)');\n }\n\n currentInstance = this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var outerParams = Object.freeze(this.constructor.argsToParams(args));\n Object.defineProperties(this, {\n params: {\n value: outerParams,\n writable: false,\n enumerable: true,\n configurable: true\n }\n });\n\n var promise = this._main(this.params);\n\n privateProps.promise.set(this, promise);\n } // `catch` cannot be the name of a module export, so we define our thenable methods here instead\n\n\n _createClass(SweetAlert, [{\n key: \"then\",\n value: function then(onFulfilled) {\n var promise = privateProps.promise.get(this);\n return promise.then(onFulfilled);\n }\n }, {\n key: \"finally\",\n value: function _finally(onFinally) {\n var promise = privateProps.promise.get(this);\n return promise[\"finally\"](onFinally);\n }\n }]);\n\n return SweetAlert;\n }(); // Assign instance methods from src/instanceMethods/*.js to prototype\n\n\n _extends(SweetAlert.prototype, instanceMethods); // Assign static methods from src/staticMethods/*.js to constructor\n\n\n _extends(SweetAlert, staticMethods); // Proxy to instance methods to constructor, for now, for backwards compatibility\n\n\n Object.keys(instanceMethods).forEach(function (key) {\n SweetAlert[key] = function () {\n if (currentInstance) {\n var _currentInstance;\n\n return (_currentInstance = currentInstance)[key].apply(_currentInstance, arguments);\n }\n };\n });\n SweetAlert.DismissReason = DismissReason;\n SweetAlert.version = '9.15.2';\n\n var Swal = SweetAlert;\n Swal[\"default\"] = Swal;\n\n return Swal;\n\n}));\nif (typeof this !== 'undefined' && this.Sweetalert2){ this.swal = this.sweetAlert = this.Swal = this.SweetAlert = this.Sweetalert2}\n\n\"undefined\"!=typeof document&&function(e,t){var n=e.createElement(\"style\");if(e.getElementsByTagName(\"head\")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,\".swal2-popup.swal2-toast{flex-direction:row;align-items:center;width:auto;padding:.625em;overflow-y:hidden;background:#fff;box-shadow:0 0 .625em #d9d9d9}.swal2-popup.swal2-toast .swal2-header{flex-direction:row}.swal2-popup.swal2-toast .swal2-title{flex-grow:1;justify-content:flex-start;margin:0 .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{position:static;width:.8em;height:.8em;line-height:.8}.swal2-popup.swal2-toast .swal2-content{justify-content:flex-start;font-size:1em}.swal2-popup.swal2-toast .swal2-icon{width:2em;min-width:2em;height:2em;margin:0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{font-size:.25em}}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{flex-basis:auto!important;width:auto;height:auto;margin:0 .3125em}.swal2-popup.swal2-toast .swal2-styled{margin:0 .3125em;padding:.3125em .625em;font-size:1em}.swal2-popup.swal2-toast .swal2-styled:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(50,100,150,.4)}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:flex;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;flex-direction:row;align-items:center;justify-content:center;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-top{align-items:flex-start}.swal2-container.swal2-top-left,.swal2-container.swal2-top-start{align-items:flex-start;justify-content:flex-start}.swal2-container.swal2-top-end,.swal2-container.swal2-top-right{align-items:flex-start;justify-content:flex-end}.swal2-container.swal2-center{align-items:center}.swal2-container.swal2-center-left,.swal2-container.swal2-center-start{align-items:center;justify-content:flex-start}.swal2-container.swal2-center-end,.swal2-container.swal2-center-right{align-items:center;justify-content:flex-end}.swal2-container.swal2-bottom{align-items:flex-end}.swal2-container.swal2-bottom-left,.swal2-container.swal2-bottom-start{align-items:flex-end;justify-content:flex-start}.swal2-container.swal2-bottom-end,.swal2-container.swal2-bottom-right{align-items:flex-end;justify-content:flex-end}.swal2-container.swal2-bottom-end>:first-child,.swal2-container.swal2-bottom-left>:first-child,.swal2-container.swal2-bottom-right>:first-child,.swal2-container.swal2-bottom-start>:first-child,.swal2-container.swal2-bottom>:first-child{margin-top:auto}.swal2-container.swal2-grow-fullscreen>.swal2-modal{display:flex!important;flex:1;align-self:stretch;justify-content:center}.swal2-container.swal2-grow-row>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-grow-column{flex:1;flex-direction:column}.swal2-container.swal2-grow-column.swal2-bottom,.swal2-container.swal2-grow-column.swal2-center,.swal2-container.swal2-grow-column.swal2-top{align-items:center}.swal2-container.swal2-grow-column.swal2-bottom-left,.swal2-container.swal2-grow-column.swal2-bottom-start,.swal2-container.swal2-grow-column.swal2-center-left,.swal2-container.swal2-grow-column.swal2-center-start,.swal2-container.swal2-grow-column.swal2-top-left,.swal2-container.swal2-grow-column.swal2-top-start{align-items:flex-start}.swal2-container.swal2-grow-column.swal2-bottom-end,.swal2-container.swal2-grow-column.swal2-bottom-right,.swal2-container.swal2-grow-column.swal2-center-end,.swal2-container.swal2-grow-column.swal2-center-right,.swal2-container.swal2-grow-column.swal2-top-end,.swal2-container.swal2-grow-column.swal2-top-right{align-items:flex-end}.swal2-container.swal2-grow-column>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-no-transition{transition:none!important}.swal2-container:not(.swal2-top):not(.swal2-top-start):not(.swal2-top-end):not(.swal2-top-left):not(.swal2-top-right):not(.swal2-center-start):not(.swal2-center-end):not(.swal2-center-left):not(.swal2-center-right):not(.swal2-bottom):not(.swal2-bottom-start):not(.swal2-bottom-end):not(.swal2-bottom-left):not(.swal2-bottom-right):not(.swal2-grow-fullscreen)>.swal2-modal{margin:auto}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-container .swal2-modal{margin:0!important}}.swal2-popup{display:none;position:relative;box-sizing:border-box;flex-direction:column;justify-content:center;width:32em;max-width:100%;padding:1.25em;border:none;border-radius:.3125em;background:#fff;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-header{display:flex;flex-direction:column;align-items:center}.swal2-title{position:relative;max-width:100%;margin:0 0 .4em;padding:0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;flex-wrap:wrap;align-items:center;justify-content:center;width:100%;margin:1.25em auto 0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-actions.swal2-loading .swal2-styled.swal2-confirm{box-sizing:border-box;width:2.5em;height:2.5em;margin:.46875em;padding:0;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border:.25em solid transparent;border-radius:100%;border-color:transparent;background-color:transparent!important;color:transparent!important;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-actions.swal2-loading .swal2-styled.swal2-cancel{margin-right:30px;margin-left:30px}.swal2-actions.swal2-loading :not(.swal2-styled).swal2-confirm::after{content:\\\"\\\";display:inline-block;width:15px;height:15px;margin-left:5px;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border:3px solid #999;border-radius:50%;border-right-color:transparent;box-shadow:1px 1px 1px #fff}.swal2-styled{margin:.3125em;padding:.625em 2em;box-shadow:none;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#3085d6;color:#fff;font-size:1.0625em}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#aaa;color:#fff;font-size:1.0625em}.swal2-styled:focus{outline:0;box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(50,100,150,.4)}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1.25em 0 0;padding:1em 0 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;height:.25em;overflow:hidden;border-bottom-right-radius:.3125em;border-bottom-left-radius:.3125em}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:1.25em auto}.swal2-close{position:absolute;z-index:2;top:0;right:0;align-items:center;justify-content:center;width:1.2em;height:1.2em;padding:0;overflow:hidden;transition:color .1s ease-out;border:none;border-radius:0;background:0 0;color:#ccc;font-family:serif;font-size:2.5em;line-height:1.2;cursor:pointer}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close::-moz-focus-inner{border:0}.swal2-content{z-index:1;justify-content:center;margin:0;padding:0;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em auto}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:100%;transition:border-color .3s,box-shadow .3s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06);color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:0 0 3px #c4e6f5}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::-ms-input-placeholder,.swal2-input::-ms-input-placeholder,.swal2-textarea::-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em auto;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-input[type=number]{max-width:10em}.swal2-file{background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{margin:0 .4em}.swal2-validation-message{display:none;align-items:center;justify-content:center;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:\\\"!\\\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:1.25em auto 1.875em;border:.25em solid transparent;border-radius:50%;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{align-items:center;margin:0 0 1.25em;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;width:2em;height:2em;border-radius:2em;background:#3085d6;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#3085d6}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;width:2.5em;height:.4em;margin:0 -1px;background:#3085d6}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{right:auto;left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@supports (-ms-accelerator:true){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@-moz-document url-prefix(){.swal2-close:focus{outline:2px solid rgba(50,100,150,.4)}}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{top:auto;right:auto;bottom:auto;left:auto;max-width:calc(100% - .625em * 2);background-color:transparent!important}body.swal2-no-backdrop .swal2-container>.swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}body.swal2-no-backdrop .swal2-container.swal2-top{top:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-top-left,body.swal2-no-backdrop .swal2-container.swal2-top-start{top:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-top-end,body.swal2-no-backdrop .swal2-container.swal2-top-right{top:0;right:0}body.swal2-no-backdrop .swal2-container.swal2-center{top:50%;left:50%;transform:translate(-50%,-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-left,body.swal2-no-backdrop .swal2-container.swal2-center-start{top:50%;left:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-end,body.swal2-no-backdrop .swal2-container.swal2-center-right{top:50%;right:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom{bottom:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom-left,body.swal2-no-backdrop .swal2-container.swal2-bottom-start{bottom:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-bottom-end,body.swal2-no-backdrop .swal2-container.swal2-bottom-right{right:0;bottom:0}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{background-color:transparent}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}body.swal2-toast-column .swal2-toast{flex-direction:column;align-items:stretch}body.swal2-toast-column .swal2-toast .swal2-actions{flex:1;align-self:stretch;height:2.2em;margin-top:.3125em}body.swal2-toast-column .swal2-toast .swal2-loading{justify-content:center}body.swal2-toast-column .swal2-toast .swal2-input{height:2em;margin:.3125em auto;font-size:1em}body.swal2-toast-column .swal2-toast .swal2-validation-message{font-size:1em}\");","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = 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\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\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 __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/*! https://mths.be/punycode v1.3.2 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n"],"sourceRoot":"webpack:///"}