diff --git a/.angular/cache/17.0.7/high-web/.tsbuildinfo b/.angular/cache/17.0.7/high-web/.tsbuildinfo index 4d85aba..0ffe1b1 100644 --- a/.angular/cache/17.0.7/high-web/.tsbuildinfo +++ b/.angular/cache/17.0.7/high-web/.tsbuildinfo @@ -1 +1 @@ -{"program":{"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../node_modules/tslib/tslib.d.ts","../../../../src/main.ngtypecheck.ts","../../../../node_modules/rxjs/dist/types/internal/subscription.d.ts","../../../../node_modules/rxjs/dist/types/internal/subscriber.d.ts","../../../../node_modules/rxjs/dist/types/internal/operator.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable.d.ts","../../../../node_modules/rxjs/dist/types/internal/types.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/audit.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/audittime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/buffer.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/buffercount.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/buffertime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/buffertoggle.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/bufferwhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/catcherror.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/combinelatestall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/combineall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/combinelatest.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/combinelatestwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concat.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concatall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concatmap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concatmapto.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concatwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/connect.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/count.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/debounce.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/debouncetime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/defaultifempty.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/delay.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/delaywhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/dematerialize.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/distinct.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/distinctuntilchanged.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/distinctuntilkeychanged.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/elementat.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/endwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/every.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/exhaustall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/exhaust.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/exhaustmap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/expand.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/filter.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/finalize.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/find.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/findindex.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/first.d.ts","../../../../node_modules/rxjs/dist/types/internal/subject.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/groupby.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/ignoreelements.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/isempty.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/last.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/map.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mapto.d.ts","../../../../node_modules/rxjs/dist/types/internal/notification.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/materialize.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/max.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/merge.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergeall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergemap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/flatmap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergemapto.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergescan.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergewith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/min.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/connectableobservable.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/multicast.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/observeon.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/onerrorresumenextwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/pairwise.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/partition.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/pluck.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/publish.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/publishbehavior.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/publishlast.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/publishreplay.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/race.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/racewith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/reduce.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/repeat.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/repeatwhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/retry.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/retrywhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/refcount.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/sample.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/sampletime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/scan.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/sequenceequal.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/share.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/sharereplay.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/single.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/skip.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/skiplast.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/skipuntil.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/skipwhile.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/startwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/subscribeon.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/switchall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/switchmap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/switchmapto.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/switchscan.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/take.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/takelast.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/takeuntil.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/takewhile.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/tap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/throttle.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/throttletime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/throwifempty.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/timeinterval.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/timeout.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/timeoutwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/timestamp.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/toarray.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/window.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/windowcount.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/windowtime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/windowtoggle.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/windowwhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/withlatestfrom.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/zip.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/zipall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/zipwith.d.ts","../../../../node_modules/rxjs/dist/types/operators/index.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/action.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/testmessage.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/subscriptionlog.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/subscriptionloggable.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/coldobservable.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/hotobservable.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/asyncscheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/timerhandle.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/asyncaction.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/virtualtimescheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/testscheduler.d.ts","../../../../node_modules/rxjs/dist/types/testing/index.d.ts","../../../../node_modules/rxjs/dist/types/internal/symbol/observable.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/dom/animationframes.d.ts","../../../../node_modules/rxjs/dist/types/internal/behaviorsubject.d.ts","../../../../node_modules/rxjs/dist/types/internal/replaysubject.d.ts","../../../../node_modules/rxjs/dist/types/internal/asyncsubject.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/asapscheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/asap.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/async.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/queuescheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/queue.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/animationframescheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/animationframe.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/identity.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/pipe.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/noop.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/isobservable.d.ts","../../../../node_modules/rxjs/dist/types/internal/lastvaluefrom.d.ts","../../../../node_modules/rxjs/dist/types/internal/firstvaluefrom.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/argumentoutofrangeerror.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/emptyerror.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/notfounderror.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/objectunsubscribederror.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/sequenceerror.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/unsubscriptionerror.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/bindcallback.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/bindnodecallback.d.ts","../../../../node_modules/rxjs/dist/types/internal/anycatcher.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/combinelatest.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/concat.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/connectable.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/defer.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/empty.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/forkjoin.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/from.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/fromevent.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/fromeventpattern.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/generate.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/iif.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/interval.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/merge.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/never.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/of.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/onerrorresumenext.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/pairs.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/partition.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/race.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/range.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/throwerror.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/timer.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/using.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/zip.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduled/scheduled.d.ts","../../../../node_modules/rxjs/dist/types/internal/config.d.ts","../../../../node_modules/rxjs/dist/types/index.d.ts","../../../../node_modules/@angular/core/primitives/signals/index.d.ts","../../../../node_modules/@angular/core/index.d.ts","../../../../node_modules/@angular/common/index.d.ts","../../../../node_modules/@angular/common/http/index.d.ts","../../../../node_modules/@angular/platform-browser/index.d.ts","../../../../src/app/app.config.ngtypecheck.ts","../../../../node_modules/@angular/router/index.d.ts","../../../../src/app/app.routes.ngtypecheck.ts","../../../../src/app/pages/login/login.routes.ngtypecheck.ts","../../../../src/app/pages/login/login/login.component.ngtypecheck.ts","../../../../node_modules/@angular/cdk/bidi/index.d.ts","../../../../node_modules/@angular/cdk/platform/index.d.ts","../../../../node_modules/ng-zorro-antd/core/types/any.d.ts","../../../../node_modules/ng-zorro-antd/core/types/common-wrap.d.ts","../../../../node_modules/ng-zorro-antd/core/types/direction.d.ts","../../../../node_modules/ng-zorro-antd/core/types/indexable.d.ts","../../../../node_modules/ng-zorro-antd/core/types/ng-class.d.ts","../../../../node_modules/ng-zorro-antd/core/types/size.d.ts","../../../../node_modules/ng-zorro-antd/core/types/template.d.ts","../../../../node_modules/ng-zorro-antd/core/types/shape.d.ts","../../../../node_modules/ng-zorro-antd/core/types/compare-with.d.ts","../../../../node_modules/ng-zorro-antd/core/types/control-value-accessor.d.ts","../../../../node_modules/ng-zorro-antd/core/types/convert-input.d.ts","../../../../node_modules/ng-zorro-antd/core/types/input-observable.d.ts","../../../../node_modules/ng-zorro-antd/core/types/type.d.ts","../../../../node_modules/ng-zorro-antd/core/types/status.d.ts","../../../../node_modules/ng-zorro-antd/core/types/public-api.d.ts","../../../../node_modules/ng-zorro-antd/core/types/index.d.ts","../../../../node_modules/@ant-design/icons-angular/types.d.ts","../../../../node_modules/@ant-design/icons-angular/component/icon.service.d.ts","../../../../node_modules/@ant-design/icons-angular/component/icon.directive.d.ts","../../../../node_modules/@ant-design/icons-angular/component/icon.module.d.ts","../../../../node_modules/@ant-design/icons-angular/component/icon.error.d.ts","../../../../node_modules/@ant-design/icons-angular/utils.d.ts","../../../../node_modules/@ant-design/icons-angular/manifest.d.ts","../../../../node_modules/@ant-design/icons-angular/public_api.d.ts","../../../../node_modules/@ant-design/icons-angular/index.d.ts","../../../../node_modules/ng-zorro-antd/core/services/resize.d.ts","../../../../node_modules/ng-zorro-antd/core/services/singleton.d.ts","../../../../node_modules/ng-zorro-antd/core/services/drag.d.ts","../../../../node_modules/ng-zorro-antd/core/services/scroll.d.ts","../../../../node_modules/@angular/cdk/layout/index.d.ts","../../../../node_modules/ng-zorro-antd/core/services/breakpoint.d.ts","../../../../node_modules/ng-zorro-antd/core/services/destroy.d.ts","../../../../node_modules/ng-zorro-antd/core/services/image-preload.d.ts","../../../../node_modules/ng-zorro-antd/core/services/public-api.d.ts","../../../../node_modules/ng-zorro-antd/core/services/index.d.ts","../../../../node_modules/ng-zorro-antd/core/config/config.d.ts","../../../../node_modules/ng-zorro-antd/core/config/config.service.d.ts","../../../../node_modules/ng-zorro-antd/core/config/css-variables.d.ts","../../../../node_modules/ng-zorro-antd/core/config/public-api.d.ts","../../../../node_modules/ng-zorro-antd/core/config/index.d.ts","../../../../node_modules/ng-zorro-antd/carousel/carousel-content.directive.d.ts","../../../../node_modules/ng-zorro-antd/carousel/typings.d.ts","../../../../node_modules/ng-zorro-antd/carousel/strategies/base-strategy.d.ts","../../../../node_modules/ng-zorro-antd/carousel/carousel.component.d.ts","../../../../node_modules/ng-zorro-antd/carousel/carousel.module.d.ts","../../../../node_modules/ng-zorro-antd/carousel/strategies/opacity-strategy.d.ts","../../../../node_modules/ng-zorro-antd/carousel/strategies/transform-strategy.d.ts","../../../../node_modules/ng-zorro-antd/carousel/strategies/experimental/transform-no-loop-strategy.d.ts","../../../../node_modules/ng-zorro-antd/carousel/strategies/experimental/flip-strategy.d.ts","../../../../node_modules/ng-zorro-antd/carousel/public-api.d.ts","../../../../node_modules/ng-zorro-antd/carousel/index.d.ts","../../../../node_modules/ng-zorro-antd/form/form.directive.d.ts","../../../../node_modules/ng-zorro-antd/form/form-item.component.d.ts","../../../../node_modules/ng-zorro-antd/form/form-label.component.d.ts","../../../../node_modules/@angular/forms/index.d.ts","../../../../node_modules/ng-zorro-antd/core/form/nz-form-status.service.d.ts","../../../../node_modules/ng-zorro-antd/core/form/nz-form-no-status.service.d.ts","../../../../node_modules/ng-zorro-antd/core/form/nz-form-item-feedback-icon.component.d.ts","../../../../node_modules/ng-zorro-antd/icon/icon.service.d.ts","../../../../node_modules/ng-zorro-antd/icon/icon.directive.d.ts","../../../../node_modules/ng-zorro-antd/icon/icon.module.d.ts","../../../../node_modules/ng-zorro-antd/icon/icons.d.ts","../../../../node_modules/ng-zorro-antd/icon/public-api.d.ts","../../../../node_modules/ng-zorro-antd/icon/index.d.ts","../../../../node_modules/ng-zorro-antd/core/form/nz-form-patch.module.d.ts","../../../../node_modules/ng-zorro-antd/core/form/public-api.d.ts","../../../../node_modules/ng-zorro-antd/core/form/index.d.ts","../../../../node_modules/date-fns/typings.d.ts","../../../../node_modules/ng-zorro-antd/i18n/nz-i18n.interface.d.ts","../../../../node_modules/ng-zorro-antd/i18n/nz-i18n.service.d.ts","../../../../node_modules/ng-zorro-antd/i18n/nz-i18n.pipe.d.ts","../../../../node_modules/ng-zorro-antd/i18n/nz-i18n.module.d.ts","../../../../node_modules/ng-zorro-antd/core/time/candy-date.d.ts","../../../../node_modules/ng-zorro-antd/core/time/time.d.ts","../../../../node_modules/ng-zorro-antd/core/time/time-parser.d.ts","../../../../node_modules/ng-zorro-antd/core/time/public-api.d.ts","../../../../node_modules/ng-zorro-antd/core/time/index.d.ts","../../../../node_modules/ng-zorro-antd/i18n/date-config.d.ts","../../../../node_modules/ng-zorro-antd/i18n/nz-i18n.token.d.ts","../../../../node_modules/ng-zorro-antd/i18n/date-helper.service.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/ar_eg.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/az_az.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/bg_bg.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/bn_bd.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/by_by.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/ca_es.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/cs_cz.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/da_dk.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/de_de.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/el_gr.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/en_gb.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/en_us.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/es_es.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/et_ee.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/fa_ir.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/fi_fi.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/fr_be.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/fr_ca.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/fr_fr.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/ga_ie.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/gl_es.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/he_il.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/hi_in.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/hr_hr.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/hu_hu.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/hy_am.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/id_id.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/is_is.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/it_it.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/ja_jp.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/ka_ge.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/km_kh.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/kk_kz.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/kmr_iq.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/kn_in.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/ko_kr.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/ku_iq.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/lt_lt.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/lv_lv.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/mk_mk.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/ml_in.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/mn_mn.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/ms_my.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/nb_no.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/ne_np.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/nl_be.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/nl_nl.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/pl_pl.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/pt_br.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/pt_pt.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/ro_ro.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/ru_ru.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/sk_sk.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/sl_si.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/sr_rs.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/sv_se.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/ta_in.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/th_th.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/tr_tr.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/uk_ua.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/ur_pk.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/vi_vn.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/zh_cn.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/zh_hk.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/zh_tw.d.ts","../../../../node_modules/ng-zorro-antd/i18n/public-api.d.ts","../../../../node_modules/ng-zorro-antd/i18n/index.d.ts","../../../../node_modules/ng-zorro-antd/form/form-control.component.d.ts","../../../../node_modules/ng-zorro-antd/form/form-text.component.d.ts","../../../../node_modules/ng-zorro-antd/form/form-split.component.d.ts","../../../../node_modules/ng-zorro-antd/grid/row.directive.d.ts","../../../../node_modules/ng-zorro-antd/grid/col.directive.d.ts","../../../../node_modules/ng-zorro-antd/grid/grid.module.d.ts","../../../../node_modules/ng-zorro-antd/grid/public-api.d.ts","../../../../node_modules/ng-zorro-antd/grid/index.d.ts","../../../../node_modules/ng-zorro-antd/form/form.module.d.ts","../../../../node_modules/ng-zorro-antd/form/public-api.d.ts","../../../../node_modules/ng-zorro-antd/form/index.d.ts","../../../../node_modules/@angular/cdk/coercion/index.d.ts","../../../../node_modules/@angular/cdk/observers/index.d.ts","../../../../node_modules/@angular/cdk/a11y/index.d.ts","../../../../node_modules/ng-zorro-antd/input/input.directive.d.ts","../../../../node_modules/ng-zorro-antd/input/input-group.component.d.ts","../../../../node_modules/ng-zorro-antd/input/textarea-count.component.d.ts","../../../../node_modules/ng-zorro-antd/input/autosize.directive.d.ts","../../../../node_modules/ng-zorro-antd/input/input-group-slot.component.d.ts","../../../../node_modules/ng-zorro-antd/input/input.module.d.ts","../../../../node_modules/ng-zorro-antd/input/public-api.d.ts","../../../../node_modules/ng-zorro-antd/input/index.d.ts","../../../../node_modules/ng-zorro-antd/button/button.component.d.ts","../../../../node_modules/ng-zorro-antd/button/button-group.component.d.ts","../../../../node_modules/ng-zorro-antd/core/transition-patch/transition-patch.directive.d.ts","../../../../node_modules/ng-zorro-antd/core/transition-patch/transition-patch.module.d.ts","../../../../node_modules/ng-zorro-antd/core/transition-patch/public-api.d.ts","../../../../node_modules/ng-zorro-antd/core/transition-patch/index.d.ts","../../../../node_modules/ng-zorro-antd/core/wave/nz-wave-renderer.d.ts","../../../../node_modules/ng-zorro-antd/core/wave/nz-wave.directive.d.ts","../../../../node_modules/ng-zorro-antd/core/wave/nz-wave.module.d.ts","../../../../node_modules/ng-zorro-antd/core/wave/public-api.d.ts","../../../../node_modules/ng-zorro-antd/core/wave/index.d.ts","../../../../node_modules/ng-zorro-antd/button/button.module.d.ts","../../../../node_modules/ng-zorro-antd/button/public-api.d.ts","../../../../node_modules/ng-zorro-antd/button/index.d.ts","../../../../node_modules/ng-zorro-antd/checkbox/checkbox-wrapper.component.d.ts","../../../../node_modules/ng-zorro-antd/checkbox/checkbox.component.d.ts","../../../../node_modules/ng-zorro-antd/checkbox/checkbox-group.component.d.ts","../../../../node_modules/ng-zorro-antd/checkbox/checkbox.module.d.ts","../../../../node_modules/ng-zorro-antd/checkbox/public-api.d.ts","../../../../node_modules/ng-zorro-antd/checkbox/index.d.ts","../../../../src/app/data/login/login.namespace.ngtypecheck.ts","../../../../src/app/data/login/login.namespace.ts","../../../../node_modules/ng-zorro-antd/core/color/color.d.ts","../../../../node_modules/ng-zorro-antd/core/color/generate.d.ts","../../../../node_modules/ng-zorro-antd/core/color/public-api.d.ts","../../../../node_modules/ng-zorro-antd/core/color/index.d.ts","../../../../node_modules/ng-zorro-antd/core/no-animation/nz-no-animation.directive.d.ts","../../../../node_modules/ng-zorro-antd/core/no-animation/nz-no-animation.module.d.ts","../../../../node_modules/ng-zorro-antd/core/no-animation/public-api.d.ts","../../../../node_modules/ng-zorro-antd/core/no-animation/index.d.ts","../../../../node_modules/@angular/cdk/collections/index.d.ts","../../../../node_modules/@angular/cdk/scrolling/index.d.ts","../../../../node_modules/@angular/cdk/portal/index.d.ts","../../../../node_modules/@angular/cdk/overlay/index.d.ts","../../../../node_modules/ng-zorro-antd/core/overlay/nz-connected-overlay.d.ts","../../../../node_modules/ng-zorro-antd/core/overlay/nz-overlay.module.d.ts","../../../../node_modules/ng-zorro-antd/core/overlay/overlay-position.d.ts","../../../../node_modules/ng-zorro-antd/core/overlay/public-api.d.ts","../../../../node_modules/ng-zorro-antd/core/overlay/index.d.ts","../../../../node_modules/ng-zorro-antd/tooltip/base.d.ts","../../../../node_modules/ng-zorro-antd/tooltip/tooltip.d.ts","../../../../node_modules/ng-zorro-antd/tooltip/tooltip.module.d.ts","../../../../node_modules/ng-zorro-antd/tooltip/public-api.d.ts","../../../../node_modules/ng-zorro-antd/tooltip/index.d.ts","../../../../node_modules/ng-zorro-antd/slider/slider.service.d.ts","../../../../node_modules/ng-zorro-antd/slider/typings.d.ts","../../../../node_modules/ng-zorro-antd/slider/handle.component.d.ts","../../../../node_modules/ng-zorro-antd/slider/slider.component.d.ts","../../../../node_modules/ng-zorro-antd/slider/track.component.d.ts","../../../../node_modules/ng-zorro-antd/slider/step.component.d.ts","../../../../node_modules/ng-zorro-antd/slider/marks.component.d.ts","../../../../node_modules/ng-zorro-antd/slider/slider.module.d.ts","../../../../node_modules/ng-zorro-antd/slider/public-api.d.ts","../../../../node_modules/ng-zorro-antd/slider/index.d.ts","../../../../src/app/utils/mathutils.service.ngtypecheck.ts","../../../../src/app/utils/mathutils.service.ts","../../../../node_modules/@angular/animations/index.d.ts","../../../../node_modules/ng-zorro-antd/message/typings.d.ts","../../../../node_modules/ng-zorro-antd/message/base.d.ts","../../../../node_modules/ng-zorro-antd/message/message-container.component.d.ts","../../../../node_modules/ng-zorro-antd/message/message.component.d.ts","../../../../node_modules/ng-zorro-antd/message/message.module.d.ts","../../../../node_modules/ng-zorro-antd/message/message.service.d.ts","../../../../node_modules/ng-zorro-antd/message/public-api.d.ts","../../../../node_modules/ng-zorro-antd/message/index.d.ts","../../../../src/app/pages/login/login/login.component.ts","../../../../src/app/pages/login/login.routes.ts","../../../../src/app/app.routes.ts","../../../../node_modules/@angular/common/locales/zh.d.ts","../../../../node_modules/@angular/animations/browser/index.d.ts","../../../../node_modules/@angular/platform-browser/animations/index.d.ts","../../../../src/app/app.config.ts","../../../../src/app/app.component.ngtypecheck.ts","../../../../src/app/app.component.ts","../../../../src/main.ts","../../../../src/main.server.ngtypecheck.ts","../../../../src/app/app.config.server.ngtypecheck.ts","../../../../node_modules/@angular/platform-server/index.d.ts","../../../../src/app/app.config.server.ts","../../../../src/main.server.ts","../../../../server.ngtypecheck.ts","../../../../node_modules/@angular/ssr/index.d.ts","../../../../node_modules/@types/node/assert.d.ts","../../../../node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/buffer/index.d.ts","../../../../node_modules/undici-types/header.d.ts","../../../../node_modules/undici-types/readable.d.ts","../../../../node_modules/undici-types/file.d.ts","../../../../node_modules/undici-types/fetch.d.ts","../../../../node_modules/undici-types/formdata.d.ts","../../../../node_modules/undici-types/connector.d.ts","../../../../node_modules/undici-types/client.d.ts","../../../../node_modules/undici-types/errors.d.ts","../../../../node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/undici-types/global-origin.d.ts","../../../../node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/undici-types/pool.d.ts","../../../../node_modules/undici-types/handlers.d.ts","../../../../node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/undici-types/agent.d.ts","../../../../node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/undici-types/mock-client.d.ts","../../../../node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/undici-types/api.d.ts","../../../../node_modules/undici-types/cookies.d.ts","../../../../node_modules/undici-types/patch.d.ts","../../../../node_modules/undici-types/filereader.d.ts","../../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/undici-types/websocket.d.ts","../../../../node_modules/undici-types/content-type.d.ts","../../../../node_modules/undici-types/cache.d.ts","../../../../node_modules/undici-types/interceptors.d.ts","../../../../node_modules/undici-types/index.d.ts","../../../../node_modules/@types/node/globals.d.ts","../../../../node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/@types/node/buffer.d.ts","../../../../node_modules/@types/node/child_process.d.ts","../../../../node_modules/@types/node/cluster.d.ts","../../../../node_modules/@types/node/console.d.ts","../../../../node_modules/@types/node/constants.d.ts","../../../../node_modules/@types/node/crypto.d.ts","../../../../node_modules/@types/node/dgram.d.ts","../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/@types/node/dns.d.ts","../../../../node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/@types/node/domain.d.ts","../../../../node_modules/@types/node/dom-events.d.ts","../../../../node_modules/@types/node/events.d.ts","../../../../node_modules/@types/node/fs.d.ts","../../../../node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/@types/node/http.d.ts","../../../../node_modules/@types/node/http2.d.ts","../../../../node_modules/@types/node/https.d.ts","../../../../node_modules/@types/node/inspector.d.ts","../../../../node_modules/@types/node/module.d.ts","../../../../node_modules/@types/node/net.d.ts","../../../../node_modules/@types/node/os.d.ts","../../../../node_modules/@types/node/path.d.ts","../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/@types/node/process.d.ts","../../../../node_modules/@types/node/punycode.d.ts","../../../../node_modules/@types/node/querystring.d.ts","../../../../node_modules/@types/node/readline.d.ts","../../../../node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/@types/node/repl.d.ts","../../../../node_modules/@types/node/stream.d.ts","../../../../node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/@types/node/stream/web.d.ts","../../../../node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/@types/node/test.d.ts","../../../../node_modules/@types/node/timers.d.ts","../../../../node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/@types/node/tls.d.ts","../../../../node_modules/@types/node/trace_events.d.ts","../../../../node_modules/@types/node/tty.d.ts","../../../../node_modules/@types/node/url.d.ts","../../../../node_modules/@types/node/util.d.ts","../../../../node_modules/@types/node/v8.d.ts","../../../../node_modules/@types/node/vm.d.ts","../../../../node_modules/@types/node/wasi.d.ts","../../../../node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/@types/node/zlib.d.ts","../../../../node_modules/@types/node/globals.global.d.ts","../../../../node_modules/@types/node/index.d.ts","../../../../node_modules/@types/mime/index.d.ts","../../../../node_modules/@types/send/index.d.ts","../../../../node_modules/@types/qs/index.d.ts","../../../../node_modules/@types/range-parser/index.d.ts","../../../../node_modules/@types/express-serve-static-core/index.d.ts","../../../../node_modules/@types/http-errors/index.d.ts","../../../../node_modules/@types/serve-static/index.d.ts","../../../../node_modules/@types/connect/index.d.ts","../../../../node_modules/@types/body-parser/index.d.ts","../../../../node_modules/@types/express/index.d.ts","../../../../server.ts"],"fileInfos":[{"version":"2ac9cdcfb8f8875c18d14ec5796a8b029c426f73ad6dc3ffb580c228b58d1c44","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc",{"version":"0075fa5ceda385bcdf3488e37786b5a33be730e8bc4aa3cf1e78c63891752ce8","affectsGlobalScope":true},{"version":"f296963760430fb65b4e5d91f0ed770a91c6e77455bacf8fa23a1501654ede0e","affectsGlobalScope":true},{"version":"09226e53d1cfda217317074a97724da3e71e2c545e18774484b61562afc53cd2","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"8b41361862022eb72fcc8a7f34680ac842aca802cf4bc1f915e8c620c9ce4331","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"b7e9f95a7387e3f66be0ed6db43600c49cec33a3900437ce2fd350d9b7cb16f2","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"709efdae0cb5df5f49376cde61daacc95cdd44ae4671da13a540da5088bf3f30","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"bc496ef4377553e461efcf7cc5a5a57cf59f9962aea06b5e722d54a36bf66ea1","affectsGlobalScope":true},{"version":"038a2f66a34ee7a9c2fbc3584c8ab43dff2995f8c68e3f566f4c300d2175e31e","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"f5c92f2c27b06c1a41b88f6db8299205aee52c2a2943f7ed29bd585977f254e8","affectsGlobalScope":true},{"version":"930b0e15811f84e203d3c23508674d5ded88266df4b10abee7b31b2ac77632d2","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"b9ea5778ff8b50d7c04c9890170db34c26a5358cccba36844fe319f50a43a61a","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"f35a831e4f0fe3b3697f4a0fe0e3caa7624c92b78afbecaf142c0f93abfaf379","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","ecf5cb089ea438f2545e04b6c52828c68d0b0f4bfaa661986faf36da273e9892","95444fb6292d5e2f7050d7021383b719c0252bf5f88854973977db9e3e3d8006","241bd4add06f06f0699dcd58f3b334718d85e3045d9e9d4fa556f11f4d1569c1","06540a9f3f2f88375ada0b89712de1c4310f7398d821c4c10ab5c6477dafb4bc",{"version":"de2d3120ed0989dbc776de71e6c0e8a6b4bf1935760cf468ff9d0e9986ef4c09","affectsGlobalScope":true},"b8bff8a60af0173430b18d9c3e5c443eaa3c515617210c0c7b3d2e1743c19ecb","97bdf234f5db52085d99c6842db560bca133f8a0413ff76bf830f5f38f088ce3","a76ebdf2579e68e4cfe618269c47e5a12a4e045c2805ed7f7ab37af8daa6b091","b493ff8a5175cbbb4e6e8bcfa9506c08f5a7318b2278365cfca3b397c9710ebc","e59d36b7b6e8ba2dd36d032a5f5c279d2460968c8b4e691ca384f118fb09b52a","e96885c0684c9042ec72a9a43ef977f6b4b4a2728f4b9e737edcbaa0c74e5bf6","303ee143a869e8f605e7b1d12be6c7269d4cab90d230caba792495be595d4f56","89e061244da3fc21b7330f4bd32f47c1813dd4d7f1dc3d0883d88943f035b993","e46558c2e04d06207b080138678020448e7fc201f3d69c2601b0d1456105f29a","71549375db52b1163411dba383b5f4618bdf35dc57fa327a1c7d135cf9bf67d1","7e6b2d61d6215a4e82ea75bc31a80ebb8ad0c2b37a60c10c70dd671e8d9d6d5d","78bea05df2896083cca28ed75784dde46d4b194984e8fc559123b56873580a23","5dd04ced37b7ea09f29d277db11f160df7fd73ba8b9dba86cb25552e0653a637","f74b81712e06605677ae1f061600201c425430151f95b5ef4d04387ad7617e6a","9a72847fcf4ac937e352d40810f7b7aec7422d9178451148296cf1aa19467620","3ae18f60e0b96fa1e025059b7d25b3247ba4dcb5f4372f6d6e67ce2adac74eac","2b9260f44a2e071450ae82c110f5dc8f330c9e5c3e85567ed97248330f2bf639","4f196e13684186bda6f5115fc4677a87cf84a0c9c4fc17b8f51e0984f3697b6d","61419f2c5822b28c1ea483258437c1faab87d00c6f84481aa22afb3380d8e9a4","64479aee03812264e421c0bf5104a953ca7b02740ba80090aead1330d0effe91","a5eb4835ab561c140ffc4634bb039387d5d0cceebb86918f1696c7ac156d26fd","c5570e504be103e255d80c60b56c367bf45d502ca52ee35c55dec882f6563b5c","4252b852dd791305da39f6e1242694c2e560d5e46f9bb26e2aca77252057c026","0520b5093712c10c6ef23b5fea2f833bf5481771977112500045e5ea7e8e2b69","5c3cf26654cf762ac4d7fd7b83f09acfe08eef88d2d6983b9a5a423cb4004ca3","e60fa19cf7911c1623b891155d7eb6b7e844e9afdf5738e3b46f3b687730a2bd","b1fd72ff2bb0ba91bb588f3e5329f8fc884eb859794f1c4657a2bfa122ae54d0","6cf42a4f3cfec648545925d43afaa8bb364ac10a839ffed88249da109361b275","ba13c7d46a560f3d4df8ffb1110e2bbec5801449af3b1240a718514b5576156e","6df52b70d7f7702202f672541a5f4a424d478ee5be51a9d37b8ccbe1dbf3c0f2","0ca7f997e9a4d8985e842b7c882e521b6f63233c4086e9fe79dd7a9dc4742b5e","91046b5c6b55d3b194c81fd4df52f687736fad3095e9d103ead92bb64dc160ee","db5704fdad56c74dfc5941283c1182ed471bd17598209d3ac4a49faa72e43cfc","758e8e89559b02b81bc0f8fd395b17ad5aff75490c862cbe369bb1a3d1577c40","2ee64342c077b1868f1834c063f575063051edd6e2964257d34aad032d6b657c","6f6b4b3d670b6a5f0e24ea001c1b3d36453c539195e875687950a178f1730fa7","05c4e2a992bb83066a3a648bad1c310cecd4d0628d7e19545bb107ac9596103a","b48b83a86dd9cfe36f8776b3ff52fcd45b0e043c0538dc4a4b149ba45fe367b9","792de5c062444bd2ee0413fb766e57e03cce7cdaebbfc52fc0c7c8e95069c96b","a79e3e81094c7a04a885bad9b049c519aace53300fb8a0fe4f26727cb5a746ce","dd6c3362aaaec60be028b4ba292806da8e7020eef7255c7414ce4a5c3a7138ef","8a4e89564d8ea66ad87ee3762e07540f9f0656a62043c910d819b4746fc429c5","b9011d99942889a0f95e120d06b698c628b0b6fdc3e6b7ecb459b97ed7d5bcc6","4d639cbbcc2f8f9ce6d55d5d503830d6c2556251df332dc5255d75af53c8a0e7","cdb48277f600ab5f429ecf1c5ea046683bc6b9f73f3deab9a100adac4b34969c","75be84956a29040a1afbe864c0a7a369dfdb739380072484eff153905ef867ee","b06b4adc2ae03331a92abd1b19af8eb91ec2bf8541747ee355887a167d53145e","3114b315cd0687aad8b57cff36f9c8c51f5b1bc6254f1b1e8446ae583d8e2474","0d417c15c5c635384d5f1819cc253a540fe786cc3fda32f6a2ae266671506a21","af733cb878419f3012f0d4df36f918a69ba38d73f3232ba1ab46ef9ede6cb29c","cb59317243a11379a101eb2f27b9df1022674c3df1df0727360a0a3f963f523b","0a01b0b5a9e87d04737084731212106add30f63ec640169f1462ba2e44b6b3a8","06b8a7d46195b6b3980e523ef59746702fd210b71681a83a5cf73799623621f9","860e4405959f646c101b8005a191298b2381af8f33716dc5f42097e4620608f8","f7e32adf714b8f25d3c1783473abec3f2e82d5724538d8dcf6f51baaaff1ca7a","e07d62a8a9a3bb65433a62e9bbf400c6bfd2df4de60652af4d738303ee3670a1","bfbf80f9cd4558af2d7b2006065340aaaced15947d590045253ded50aabb9bc5","851e8d57d6dd17c71e9fa0319abd20ab2feb3fb674d0801611a09b7a25fd281c","c3bd2b94e4298f81743d92945b80e9b56c1cdfb2bef43c149b7106a2491b1fc9","a246cce57f558f9ebaffd55c1e5673da44ea603b4da3b2b47eb88915d30a9181","d993eacc103c5a065227153c9aae8acea3a4322fe1a169ee7c70b77015bf0bb2","fc2b03d0c042aa1627406e753a26a1eaad01b3c496510a78016822ef8d456bb6","063c7ebbe756f0155a8b453f410ca6b76ffa1bbc1048735bcaf9c7c81a1ce35f","748e79252a7f476f8f28923612d7696b214e270cc909bc685afefaac8f052af0","9669075ac38ce36b638b290ba468233980d9f38bdc62f0519213b2fd3e2552ec","4d123de012c24e2f373925100be73d50517ac490f9ed3578ac82d0168bfbd303","656c9af789629aa36b39092bee3757034009620439d9a39912f587538033ce28","3ac3f4bdb8c0905d4c3035d6f7fb20118c21e8a17bee46d3735195b0c2a9f39f","1f453e6798ed29c86f703e9b41662640d4f2e61337007f27ac1c616f20093f69","af43b7871ff21c62bf1a54ec5c488e31a8d3408d5b51ff2e9f8581b6c55f2fc7","70550511d25cbb0b6a64dcac7fffc3c1397fd4cbeb6b23ccc7f9b794ab8a6954","af0fbf08386603a62f2a78c42d998c90353b1f1d22e05a384545f7accf881e0a","c3f32a185cd27ac232d3428a8d9b362c3f7b4892a58adaaa022828a7dcd13eed","3139c3e5e09251feec7a87f457084bee383717f3626a7f1459d053db2f34eb76","4888fd2bcfee9a0ce89d0df860d233e0cee8ee9c479b6bd5a5d5f9aae98342fe","3be870c8e17ec14f1c18fc248f5d2c4669e576404744ff5c63e6dafcf05b97ea","56654d2c5923598384e71cb808fac2818ca3f07dd23bb018988a39d5e64f268b","8b6719d3b9e65863da5390cb26994602c10a315aa16e7d70778a63fee6c4c079","6ab380571d87bd1d6f644fb6ab7837239d54b59f07dc84347b1341f866194214","547d3c406a21b30e2b78629ecc0b2ddaf652d9e0bdb2d59ceebce5612906df33","b3a4f9385279443c3a5568ec914a9492b59a723386161fd5ef0619d9f8982f97","3fe66aba4fbe0c3ba196a4f9ed2a776fe99dc4d1567a558fb11693e9fcc4e6ed","140eef237c7db06fc5adcb5df434ee21e81ee3a6fd57e1a75b8b3750aa2df2d8","0944ec553e4744efae790c68807a461720cff9f3977d4911ac0d918a17c9dd99","7c9ed7ffdc6f843ab69e5b2a3e7f667b050dd8d24d0052db81e35480f6d4e15d","7c7d9e116fe51100ff766703e6b5e4424f51ad8977fe474ddd8d0959aa6de257","af70a2567e586be0083df3938b6a6792e6821363d8ef559ad8d721a33a5bcdaf","006cff3a8bcb92d77953f49a94cd7d5272fef4ab488b9052ef82b6a1260d870b","7d44bfdc8ee5e9af70738ff652c622ae3ad81815e63ab49bdc593d34cb3a68e5","339814517abd4dbc7b5f013dfd3b5e37ef0ea914a8bbe65413ecffd668792bc6","34d5bc0a6958967ec237c99f980155b5145b76e6eb927c9ffc57d8680326b5d8","9eae79b70c9d8288032cbe1b21d0941f6bd4f315e14786b2c1d10bccc634e897","18ce015ed308ea469b13b17f99ce53bbb97975855b2a09b86c052eefa4aa013a","5a931bc4106194e474be141e0bc1046629510dc95b9a0e4b02a3783847222965","5e5f371bf23d5ced2212a5ff56675aefbd0c9b3f4d4fdda1b6123ac6e28f058c","907c17ad5a05eecb29b42b36cc8fec6437be27cc4986bb3a218e4f74f606911c","3656f0584d5a7ee0d0f2cc2b9cffbb43af92e80186b2ce160ebd4421d1506655","a726ad2d0a98bfffbe8bc1cd2d90b6d831638c0adc750ce73103a471eb9a891c","f44c0c8ce58d3dacac016607a1a90e5342d830ea84c48d2e571408087ae55894","75a315a098e630e734d9bc932d9841b64b30f7a349a20cf4717bf93044eff113","9131d95e32b3d4611d4046a613e022637348f6cebfe68230d4e81b691e4761a1","b03aa292cfdcd4edc3af00a7dbd71136dd067ec70a7536b655b82f4dd444e857","90f690a1c5fcb4c2d19c80fea05c8ab590d8f6534c4c296d70af6293ede67366","be95e987818530082c43909be722a838315a0fc5deb6043de0a76f5221cbad24","9ed5b799c50467b0c9f81ddf544b6bcda3e34d92076d6cab183c84511e45c39f","b4fa87cc1833839e51c49f20de71230e259c15b2c9c3e89e4814acc1d1ef10de","e90ac9e4ac0326faa1bc39f37af38ace0f9d4a655cd6d147713c653139cf4928","ea27110249d12e072956473a86fd1965df8e1be985f3b686b4e277afefdde584","1f6058d60eaa8825f59d4b76bbf6cc0e6ad9770948be58de68587b0931da00cc","5666075052877fe2fdddd5b16de03168076cf0f03fbca5c1d4a3b8f43cba570c","50100b1a91f61d81ca3329a98e64b7f05cddc5e3cb26b3411adc137c9c631aca","11aceaee5663b4ed597544567d6e6a5a94b66857d7ebd62a9875ea061018cd2c","6e30d0b5a1441d831d19fe02300ab3d83726abd5141cbcc0e2993fa0efd33db4","423f28126b2fc8d8d6fa558035309000a1297ed24473c595b7dec52e5c7ebae5","fb30734f82083d4790775dae393cd004924ebcbfde49849d9430bf0f0229dd16","2c92b04a7a4a1cd9501e1be338bf435738964130fb2ad5bd6c339ee41224ac4c","c5c5f0157b41833180419dacfbd2bcce78fb1a51c136bd4bcba5249864d8b9b5","669b754ec246dd7471e19b655b73bda6c2ca5bb7ccb1a4dff44a9ae45b6a716a","4bb6035e906946163ecfaec982389d0247ceeac6bdee7f1d07c03d9c224db3aa","8a44b424edee7bb17dc35a558cc15f92555f14a0441205613e0e50452ab3a602","24a00d0f98b799e6f628373249ece352b328089c3383b5606214357e9107e7d5","33637e3bc64edd2075d4071c55d60b32bdb0d243652977c66c964021b6fc8066","0f0ad9f14dedfdca37260931fac1edf0f6b951c629e84027255512f06a6ebc4c","16ad86c48bf950f5a480dc812b64225ca4a071827d3d18ffc5ec1ae176399e36","8cbf55a11ff59fd2b8e39a4aa08e25c5ddce46e3af0ed71fb51610607a13c505","d5bc4544938741f5daf8f3a339bfbf0d880da9e89e79f44a6383aaf056fe0159","c82857a876075e665bbcc78213abfe9e9b0206d502379576d7abd481ade3a569","4f71d883ed6f398ba8fe11fcd003b44bb5f220f840b3eac3c395ad91304e4620","5229c3934f58413f34f1b26c01323c93a5a65a2d9f2a565f216590dfbed1fe32","9fd7466b77020847dbc9d2165829796bf7ea00895b2520ff3752ffdcff53564b","fbfc12d54a4488c2eb166ed63bab0fb34413e97069af273210cf39da5280c8d6","85a84240002b7cf577cec637167f0383409d086e3c4443852ca248fc6e16711e","4c754b03f36ff35fc539f9ebb5f024adbb73ec2d3e4bfb35b385a05abb36a50e","59507446213e73654d6979f3b82dadc4efb0ed177425ae052d96a3f5a5be0d35","a914be97ca7a5be670d1545fc0691ac3fbabd023d7d084b338f6934349798a1f","8f62cbd3afbd6a07bb8c934294b6bfbe437021b89e53a4da7de2648ecfc7af25","62c3621d34fb2567c17a2c4b89914ebefbfbd1b1b875b070391a7d4f722e55dc","c05ac811542e0b59cb9c2e8f60e983461f0b0e39cea93e320fad447ff8e474f3","8e7a5b8f867b99cc8763c0b024068fb58e09f7da2c4810c12833e1ca6eb11c4f","132351cbd8437a463757d3510258d0fa98fd3ebef336f56d6f359cf3e177a3ce","df877050b04c29b9f8409aa10278d586825f511f0841d1ec41b6554f8362092b","33d1888c3c27d3180b7fd20bac84e97ecad94b49830d5dd306f9e770213027d1","ee942c58036a0de88505ffd7c129f86125b783888288c2389330168677d6347f","a3f317d500c30ea56d41501632cdcc376dae6d24770563a5e59c039e1c2a08ec","eb21ddc3a8136a12e69176531197def71dc28ffaf357b74d4bf83407bd845991","0c1651a159995dfa784c57b4ea9944f16bdf8d924ed2d8b3db5c25d25749a343","aaa13958e03409d72e179b5d7f6ec5c6cc666b7be14773ae7b6b5ee4921e52db","0a86e049843ad02977a94bb9cdfec287a6c5a0a4b6b5391a6648b1a122072c5a","87437ca9dabab3a41d483441696ff9220a19e713f58e0b6a99f1731af10776d7","26c5dfa9aa4e6428f4bb7d14cbf72917ace69f738fa92480b9749eebce933370","8e94328e7ca1a7a517d1aa3c569eac0f6a44f67473f6e22c2c4aff5f9f4a9b38","d604d413aff031f4bfbdae1560e54ebf503d374464d76d50a2c6ded4df525712","299f0af797897d77685d606502be72846b3d1f0dc6a2d8c964e9ea3ccbacf5bc","12bfd290936824373edda13f48a4094adee93239b9a73432db603127881a300d","340ceb3ea308f8e98264988a663640e567c553b8d6dc7d5e43a8f3b64f780374","c5a769564e530fba3ec696d0a5cff1709b9095a0bdf5b0826d940d2fc9786413","7124ef724c3fc833a17896f2d994c368230a8d4b235baed39aa8037db31de54f","5de1c0759a76e7710f76899dcae601386424eab11fb2efaf190f2b0f09c3d3d3","9c5ee8f7e581f045b6be979f062a61bf076d362bf89c7f966b993a23424e8b0d","1a11df987948a86aa1ec4867907c59bdf431f13ed2270444bf47f788a5c7f92d","3c97b5ea66276cf463525a6aa9d5bb086bf5e05beac70a0597cda2575503b57b","b756781cd40d465da57d1fc6a442c34ae61fe8c802d752aace24f6a43fedacee","0fe76167c87289ea094e01616dcbab795c11b56bad23e1ef8aba9aa37e93432a","3a45029dba46b1f091e8dc4d784e7be970e209cd7d4ff02bd15270a98a9ba24b","032c1581f921f8874cf42966f27fd04afcabbb7878fa708a8251cac5415a2a06","69c68ed9652842ce4b8e495d63d2cd425862104c9fb7661f72e7aa8a9ef836f8","a31383256374723b47d8b5497a9558bbbcf95bcecfb586a36caf7bfd3693eb0e","06f62a14599a68bcde148d1efd60c2e52e8fa540cc7dcfa4477af132bb3de271","64aa66c7458cbfd0f48f88070b08c2f66ae94aba099dac981f17c2322d147c06","11f19ce32d21222419cecab448fa335017ebebf4f9e5457c4fa9df42fa2dcca7","2e8ee2cbb5e9159764e2189cf5547aebd0e6b0d9a64d479397bb051cd1991744","1b0471d75f5adb7f545c1a97c02a0f825851b95fe6e069ac6ecaa461b8bb321d","1d157c31a02b1e5cca9bc495b3d8d39f4b42b409da79f863fb953fbe3c7d4884","07baaceaec03d88a4b78cb0651b25f1ae0322ac1aa0b555ae3749a79a41cba86","619a132f634b4ebe5b4b4179ea5870f62f2cb09916a25957bff17b408de8b56d","f60fa446a397eb1aead9c4e568faf2df8068b4d0306ebc075fb4be16ed26b741","f3cb784be4d9e91f966a0b5052a098d9b53b0af0d341f690585b0cc05c6ca412","350f63439f8fe2e06c97368ddc7fb6d6c676d54f59520966f7dbbe6a4586014e","eba613b9b357ac8c50a925fa31dc7e65ff3b95a07efbaa684b624f143d8d34ba","9814545517193cf51127d7fbdc3b7335688206ec04ee3a46bba2ee036bd0dcac","0f6199602df09bdb12b95b5434f5d7474b1490d2cd8cc036364ab3ba6fd24263","c8ca7fd9ec7a3ec82185bfc8213e4a7f63ae748fd6fced931741d23ef4ea3c0f","5c6a8a3c2a8d059f0592d4eab59b062210a1c871117968b10797dee36d991ef7","ad77fd25ece8e09247040826a777dc181f974d28257c9cd5acb4921b51967bd8","2a25d0b3b0c0d5aa9a70635ee33a96f7e0bec5801386954c30680895b214c933","140500c8700a92c38e83d4fd45ac8286a253196956eec51421972e545a4ebb98","071bb591c12282944182a8f6deb88db0e40cbac7865440d884ffcbd2c22a71e1","a13adf241eff1ea22356848130ec6f1a50ca1ec1261a8c16d9cb8e395316462a","2e04efd4f8cf3f3e7feb461b3c43152de857800f52ec0b0abfc23e3f505e5781","ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","40108ecf79f6e648c451725e01a462ee234a5e90d40430b14744728a334042bc","ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93",{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},"f9b8fedff6c1b0e53221b7890999346cf22f3ffe5fae4e94438530e8e131f5ac","2a7e6241c05770b21ac324f8d6162f53d54f2278cc532a90d21ad7f3c9d6d5f2","7f8d4c66991cc8beabba3f6cd41c95a083be5f26216ec602b9d0dc7041e04e52","6b443897b39aa381a121d5ed377dc116a6bfc00bcedd069c1406a813dcb4252b","79df8ad48f1e6dfc725f12370cbef8368dd0270bc5c509b2d2100eb62bd32d92","3eac1a527c1a699a01c80aefc247faab8f6fc57b8a18c5dbb50fe7ac9b40de3f","5efc06564f1cf26ef2368c78efdcff70bc62bca08318b02323e2a8b08aa0f608","c62dd22be9abc5c964da33d130b00c4161d7701b8061120b0bd0acf523c42bbd","35aab9cfabc7fad736427e2ed3876257d20cb0826a6c5772401f70b624490d73","5bd166ebcd6c1cb758e70b1866ada6ec23fcaef8633107563ed3ebf95608a2dd","ab470f41a5c3d537b6fc6dd97824ea42f19df285dd2730e22a03f4140eb6a7b9","bb5748a92eed1968ba874b09fe4443a862bf83dd4454aa413a82a6bddf1a629c","e467429b5d588a6cdcb76587d8538ff1e88c6a574c7855029b99e9faa81502a7","b1e513cfe8a71d242ebdca2b04edb7c33624a5e46e3f72c7387478537144ff3b","2ce9f335f847338d25e74b6a800dfa460d1c02959f9d837052e7d47d0396c1ae","a2ec3c64e012294320eca1e860a234abc98f891a25cef5b92d8240601b89ae9b","a4f0485fd9c6133d2cf6574b70288ea49f4544d8fe6da2e367e0702b030c4fc4","ba5e4c01dfcd9c3e1a84ada9a6f9547ebfcd9bf76fc1e0f8250aa63112d410b5","3bd88eac730cafb5ee35b5ae13ded04c7821d949c34b5849238bd5c026311ebf","8dd98bf3983a25cdb076d31d5a6b4b18039d463e2c0e23b7307384c4edb5ead6","9c8cf5aa465386f10353efb80823dbed51e0d0196565f176c8111cc6026688b6","91e6bca66381ac9a853e5483050f7835d094fa0bfc0c5544d9b2519411b86706","57133d9d582a4f4fd436a33f0f42e682b1d39d69c5d9a5adad5d7e369c248b98","ef7990368a6a8c09ec4dabe518d15978718013846e6ca18523c2c283b9bc74ab","1fd6fea9b14ffa264260465cbb09991d42da07c6f95235e85bc1281d93e2ad08","fc8db740d2a63c970b913f2969f5ae4b8997deb46c337b8a11a81c03068360ea","9ca73f6ee630cecd2179636661e7b19094370b6851875dfcb6f80132f5c3a387","cccbd41eadd9eb95b06ae129f9fdc2bd97af2fb74edaa4d0feb608488ae0b358","829ccc49b6d32f39fef37a4f3cd964df11439719cfd05a633479bbd4a8116227","4100aee047b0ae7d2314abeba45180b11e396e2b77839c8a701776924ab748b1","9de4f0200c0a6648bfd081cd08b13039f8a89296943ef689ff708bb85d348b1c","1401c9b5b14a8ed7c26f0a504904e1e14bd98b6cbfa4789b0c58eb4ed3e0c799","f4bbdd4ab3199fc9ce2589211af7b6fd4ed6cebf0088599a6fecc4d11f6a9136","bcd04a5a0a86e67dda69b13b12ce66132863f9730de3a26b292729272367541f","2d86a6efd9a3924bd088c2e14a38bb584c2afd1833ddfb45e9a4a711869c4903","a11ba77c32b76a5d3bfbed16ed4bcdc321f3374e2a0f8e8ea5ed7704b5c3ba0a","3d21cfae4c52397c19fc6cb4decfc839e41532d00c6d4264b730e747022ab15e","c60fbfe5d019ce9b911a4ccfcfa9e5229dc9fb1e67cb78495518b08490ac913d","f5e15285963a3485170f709701e8a0a867d637a0ba8ac75ba92a48b4b6c05afb","51cf45d64866a264925a9eeb41713bb427101c11f99e93defb3e72658c4af803","cbc60fb36a57868c4387e622948c3ada0b2953a9f1648e7178690ea37be380f6","b4e6ef7b866196bf46009551a7dd2b01300f95917f24d58d004eb72be6432553","f9f3f98dca5ea378cce212d4cd89733ec2d976c6da66b4c75f33f5bc1093d2f6","30f1c7606e663da2fcbb7a040bff88a163812d2ad5e3895479e8470b58f07c0f","10140f9820b668e6bf65d747437068df02a9f6e994e55e4c6422259ecee084b3","4e36ea5aee2a66e82249367d813966b0916097cf9ea420349036c6fbef4146c0","495114c33cf472e7fb7d1a423b5fd75427fa82bfe6c2807a99ec373bed518d72","3a8751b6fd22b4dd21e04fd1a61512bcfe8a0600c33c6b091b0d95e814e7b177","d94a6011e6638c44150188268695489a332214b3835b3697ddbd78fb062d9dd0","4531c4e014df4d29708e55174bdf64520323dbb9254e2034b5b8f6e9490d97bf","573a6f2379b3f6d5e7fc36e691e34600ebb8ab0a6bd2682b96d9721b1a8059d1","15e2c5015d44a2b55df5eeba50dae228f404c7daf8910a50a8bfb159f63ab9e6","73c8b895ae734fc095273ed81f6e2ee2108c9268626bc9bc295ef72b3a1ce8ef","e3cd075e7df0038318e173732a8d326f6cd040da92045a78af1140f9261f2568","d5499fb1feedc46b53f0e77c7201a24bcaba04a6bf9ce11bf0a2b96c32f10a68","85fd3e2ca5bd2381e08e45c370af340bf4308c9039a40d37cc250185f91eb330","8639d3940e64e07c47579793f7c4add0422cc985e9f2cb0e9579f81f149504ae","6b136cfef6ac0e1cfde0ea2fd4d1c17c022c5b3d51592dccfb3b56353c2e6b1a","97babe2c3c84a74019559529a296f94a2d0e84356ffb837f2d3d653da6de1fbf","429349e6b779053c191cb29b12bae9f06d0970571fe47ead5d8ddc588f23818b","a3dd80e71a8239407f2d906d1d838f45db15a1e433142334b1616fb1f74afdbf","fad4dab531c4e5c79f783f2d59aa4c695a9142be27c451462481f6531b7aaa4b","2e7768cb0e8204575fa0f1488d3d31ac95f2d5e920838c1df16fd34149807aff","c344ba0d586fb697b66bc665bd8d0b35e128b6baa5aca93a0b4c55a6fc9bd210","c2641084cb01af256e9c17fadf95749e6999d1a51259aa543111ce18d2ce133d","62f01f1e1ec4144979d99b918d3cbe443d14b4d8fe6d390e1e44549e9a217489","fda3da7aa15d73fa44ac99822f31bf4767a576db7c726291317d876e7846b937","36ee3b67458d308f7f75f8a8907e41b4a269de73c84c354935332af87797921d","b46e6db5aa43eabb567741d2dc92ca5eb9f0fc368357ebec02c42c8ebb4b14e3",{"version":"d204bd5d20ca52a553f7ba993dc2a422e9d1fce0b8178ce2bfe55fbd027c11ae","affectsGlobalScope":true},"f2d2d91de69fce66ae234019bf19498a996db213872fdc93b156d10eeff5a024","b3a98e8b67d802052c0ad867922743c87cda4c1fc53ae47faed880917f316022","0700aa0e353f816c408d4397cd77ef1509342588f45b65d9d3d616f421502f60","7f4f21af940c59c8f73d432c2a1c33084a861e9af63051ae0995d7bc36a87083","47db7253e3a5b0751035de3a5cb7781ab69885f82021ce5829aeacc9dc3f800f","5a22bf3611194a0d76884b3db71ed6ce1b187784cc6e82eb640f6f90615d2ac7","10a98655b5004f205d644bcdf76dab8fb3a24e9b4d16c6a662646c505d063ab5","e91c0d18807b1554682e1b6e1ab4b1163c2a7bd0e7bf0e1db95a5f370dc88521","12d55621010f9bbf7c3f350ce2ee65196e1868831f7e6cf72662f9c56ef3de6c","8834542917db95340d2f54a5da2cc4dafa2d6fea37d66707c9ba2c0fbd65ac56","1e38e79884cbd440fefc5af70b3d39e12cd9fb2e91bfb0c6d547b4347996e723","d68b8f1244eb6ad752dc795c9ce124bb50eddc2558179ae5610d100e7b5b814c","bfcecc03930b4a53ea87fe95683e4f1a6a0dde7381681ad48097c6ff76a54102","95b40beddb339052d70695b5d92bf6dab9a9c6217094328391901f57501de42b","7ae9bdbc119d322babb1805ccc2d3c6917b9eb5835749a2ad88f7ec1f5ee0ba8","25478f7c35c6cc147786fa39aee2ef41f1e9dae95a947f00c9a9f6ff5d8dfc2e","28cac2e4cd57b4a5a21d52af678c33e0f4e59d7429678891a821f198db50a454","5e315f58156c203360b5925dc469f830a13d83655c42ade472aee07fef269de0","032b5f9e36a973da01d121491ad023656ba756854c9db6c0516e9c336fbb7862","7aa1161bc4ccec053b6c1e2b9e641fdabac7169779cf35fcd54d63212677c288","c5bcfb5b3606412b008f3babe6846b4927e369159916d3e31528882e25587b67","7ae9bdbc119d322babb1805ccc2d3c6917b9eb5835749a2ad88f7ec1f5ee0ba8","3435cec2d6928caab4a2c43ae290a72e34c89682a6a6887f8dff768529a2b8d7","b561cd703ca0b908c800355587c02e0c661156122530a5ca8f38a6f7ca76d9f1","7d09685dced16070e0092e5801dd6ea996ce76ac0df9852604982fcedb31becc","1303b3f08025ede7993a094b1e91e22bcb62758ca6e31a47ccdaed86de34453f","b561cd703ca0b908c800355587c02e0c661156122530a5ca8f38a6f7ca76d9f1","a2060daabf477596c79dd0ff40e7fffdd5f891b452335cf1e2b76e49e9801b49","c4165b29627fca8c10d1abec3e021dbcc1281f08eee0ab95afab821918651958","c4165b29627fca8c10d1abec3e021dbcc1281f08eee0ab95afab821918651958","c4165b29627fca8c10d1abec3e021dbcc1281f08eee0ab95afab821918651958","87f0b178eb55e73830caaee7919ebf1268fb5c40fe47bce767cd2d7629a44717","d8cb69683211b609db45d7d446cf31ef4a9f30ecb1b4583ebfa42828cc613f8e","0d7ac69770bc84f7d1aed70a0f2d82206d149604b5ddf0cbf5ff392406f0f27a","a798d0d15869f63b9f383c5e1265e8d7b5e0f84181d62b0806072e53ad52d6e0","dfd7e342b20e0766f8752179f13d49f9c0f43c4cc1fed9954bdad782651ba902","3435cec2d6928caab4a2c43ae290a72e34c89682a6a6887f8dff768529a2b8d7","8cff76d263a287a10227241ee1fefa4ec5cdc7026d503b278837bb295c22568c","d0b951e00ba5730b4c31a83e50bcb8faf3945042309a92fa22d18b738cc8ad1c","7ae9bdbc119d322babb1805ccc2d3c6917b9eb5835749a2ad88f7ec1f5ee0ba8","b0ac49c3fc1ea98cc2e02e245de2bc98c0d80062e9fedca379d7704652661723","8620ca455bd084145a8cac4cfcc82fc89b6ddd23a604f4a67fa3ec0da71da315","c03f1378b65ff3b24845cb6d0c4ab5822dc828558dcb65433a0b2d45bcdc6cc8","f6241bdd3e97c582e867bdb0ad44787898e664f25372ba65da185e127fd3c09e","ad687590f999dacf925752b19aeeefee0da0eed59aaaf7aca093c68c2d70d031","7ae9bdbc119d322babb1805ccc2d3c6917b9eb5835749a2ad88f7ec1f5ee0ba8","78afeb65ace2d2c73d8a490e4862c414f8d7548fd8c3a2442e0acae7455f697d","fdbc67a48a8bdfda11eba5895a10c646b42df1ff36ac972bb68b8cd30fcf54d7","7ae9bdbc119d322babb1805ccc2d3c6917b9eb5835749a2ad88f7ec1f5ee0ba8","b8558f896e7b51cd5ec060a4414d192013520d0655a5c9afba5602e239b68cc4","7ae9bdbc119d322babb1805ccc2d3c6917b9eb5835749a2ad88f7ec1f5ee0ba8","fb724be8946142e90d685e6cc5685f4744f972a9a4f637297533d07dbbd9d6ce","25478f7c35c6cc147786fa39aee2ef41f1e9dae95a947f00c9a9f6ff5d8dfc2e","81a0056c95c5894f04778e642403d61f190ff7a5287e3558e9481d59868e2c51","319376b531de69c15e647ebe15e4dc4cdb7576a28f4a81380f97f84d89e3be80","c7e26262caaf8fc70ac97ef41a37e50c98973704d62dd7f79f72ca80e6443c9b","7347450f058389e5cd0aeb7b4a205e8a225baee820b2ed28d5e8971793f2ee94","b39bb4b6ce62a15b986f85f9f75e111bfa1cc7059f8cfadd83094353be051408","6eca582f214127d5e70fb5c7d7a52ddaccbcd4990f1886b0d684518ea89807ab","31ada020d9a7668ff1899f1cbf31dacd65d5ca4cb731c74b5493a0f5dce271f5","f82984b8375de304eadcd43938f0b9967f993cff251e762fba49526d9b921d14","09898b8db1dfdfb0aea25a70adffff507671e643e4a112e033350c06eeaf989b","fcb4a735202385a30e97e9d8f5d00aa17105e5e6e68af176fadf250f2a500e37","83488bc112bbd43d904a0b96911d1b71d9725a0004aac7fc46de8e09b1d53a23","1174c1d2ad97c769186616321a2145d022668a7e74ce0ff341971daedfa6154c","c22c37ac8f707477b4d69c280c4ff8cdcc6bf5907f061280eca0072f38e04810","2888895b1588e20afbea35fc92ece80c310af5b7b3fa2bb5576142e6add41442","4b993221700523a05782de87bc71c74bbdb0e791f7cfdc11aa7b4ce6ecfeb300","2d3b5d752096f82e05f8664741ab2dbeff26750cadabf65877653357b785ed43","9b66005a7e5c58c20fac57cafcb0d1ec5cc243df91d355035b5b93fe9c811e41","ca4df64273cc7d0e96254e02d6ceae366eace4df6bbb2b8caf35f38d9348341d","fdc516ece7d33203cbbf503fd1b43fb89b969365b6c5b6552c65a37fcc2138af","25478f7c35c6cc147786fa39aee2ef41f1e9dae95a947f00c9a9f6ff5d8dfc2e","81a0056c95c5894f04778e642403d61f190ff7a5287e3558e9481d59868e2c51","7aa3dde497f25b65d420acebd19354a4495368f6de1cb9d82074da62133db9c2","eef99c2d020325efd8fc2b21de171f71dddcfdededbe3acb797039e1aecb367e","eef99c2d020325efd8fc2b21de171f71dddcfdededbe3acb797039e1aecb367e","775780594dd67c23713ab139f06935f890b1b1b394c85d3522bc79393bdcbb4d","a2ff87dfedb2ec15723094a0b8370d1e5f795838fed73f69bab109b237515c38","2c6609d5a162dabef6404ad6f731327aabb6eaf30a877bb9001fa393f349a680","2e6e36f9c27ddc01b2a104b92ca3f178945b4ec375a3bd556073a3af0a4365d3","b01ec93f00d618730c453dd3fe453926c5fe452a500245014b8fb64e104adcee","6b67105ed49975c125f4472161bc996c19564b8eed07d67d762b0bd3a2cdba56","d85333b813aa0175226d8736c8320037fdf2f7f19afd1c553f9f05196116bf1c","3e7d04c9c7a4a8966226eed8fd1bd12462368914d2157460a06fd775dbefa0cd","5c445c08257e713b5bfe67eee956a5befe88be9a05b1534275e5265aca6eb896","82a1d9f11bbccdab1911e55017c45b723aa6c3a5c5da785f14ff9aa2def55514","fabc6f872dcd6208ab4ee5328c46ffe029e285d936a36152abee239ee1fb99c7","adde1222d7d49b91834b20b75686a762ed0726f5d34dcbda10a1aafa9ba419a4","ba3c7425794b5fe14eb7329ff97aa00f649e82d4891061e033db161b599663af","ddf66648b065311cbc226d6585caa14b37f461698d525857aff60c988b66a6c9","b5782eecab1e0c4dc090000bffe710cfe76649d3c4480eaa142ca8a8e5eafa24","e7d5b3fe910be641ad98b54072c90423a90d285108b1aa0fb440b27bb31bd0ed","ba2b1305141ede23483b0f247b2ec3637d7b038b37598346692f7e9e08c75d2a","becea824046b5a36370b7956d271d7fd5ec033af2ebc78c166e360e602e97b92","f945d505b83c966214b80c53d8e7a2d77ec36a7e7a477a88cd09542d183ec83c","af1a9850747573f5c950082157276400d8612fede62af01f8b45629ff61bc975","4d3da7d3b12b46bc9d226706c12cb04387c74038f6fc651d0ece5fe6987230a3","f08169e1605cc96786b8e4a0cf19d853b8f585d25084daf009dc63e212e35c59","cde20424d6e6995855f4cb9f61c067cd215fc1dfeab88749350a4f76253ffae4","c8311ce839580c0875f9ff6aca0a9041f199aac8f674856b77c388983212bdf5","6f42db9e79ef2f8f75b792eebb389950497a58cfe1932acd09b09bd256acdf58","3ac44a422e919afdc3e21a9b4d626673172e18b76b97f730f8d4c0bfa6411565","a433c2f564a3c941eb05cbc41caf7c0d55c0d3c4a86d3e6db793a83dd4ac1599","af62115326b735db1b0ffaceda6fda2e1dcbbb14c5d752a99323d4a65b8a4198","aa5faf80aa97adbf6767faf1c28df7ac42aaaa8ca1066d7e03bc64a1cdb0056e","ca0fc466697d8a2252e0f721b1a88fd165fddd73497c1859491035aa61a0cebd","6f1c5a6ae31084488f48fc78f8acdc9f17b0833004102a9e1c8ad405335a2777","7b04f9659dceea386d3e7a71417a88636cbf7942b0cf313a973db9e79fd4011d","a60d106fc617d5a4ef1d784b430847d270ea334fe2531ae2a4c06c6cc15cb614","d2d9657fb39bca36caecb3d9d08e8197cbf639e6e33b661131fd656f3ea15b1c","e3a60f48af0a29cfc9238f1e2a8fa21624f1c8f80150814c2f6489934dd9c889","b4e723b6cebfdab805a6d63f9127cdc8d6c310993ea2503523247095f973d4ec","7f5b3c5d1485d10d9f6bb1e48b6467331688d23a7fbc4257664a78e971cf9985","60ca9978647761b3c40c18068a1aaa8cd477899dc92df68b4f2e1e92c4d9b8e1","892621c0131da61968e74ecdb17cdc1cd456e5d1a2db6d77f297c61e4c0773e8","6a8cb539556c1fb6054fa624bc691d0560e7334c06da3f1fc82e0b18e61614b8","de360cd42110490e00c1bb52af87118d5044a8a8054d8dc574087821c9f10b75","8a6ccbe6549c01938fa62d1682f5f1e987ac1924672ed8c8f5ab8d825719decd","7ab9bda66d3066b6164fb656c0c4598fcea5aac89ca96c2da1e049e41769acc8","12f6b1e992132ff669f790beece38ecaa19f2f0db75b7eae92e8dcc5f22b0a34",{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"ffc06cc59bfc4559f4845fd58694e934c20e4271413c48e4b3ec35a2afbd80a7","signature":"b4c749acb1b02fe0b336d3e89a98d3ee797f41144e7a2917d69a86c012fe9c5b"},"24cf439dc53195a9a22676407e7011c58a362eb5fa2fc32971820556959432d2","fb1fe16e53cea82b5ed56575c7c56671bb7ce502858e7ad5be512cfc816da29b","cd8b02b35bb2cdda78cf08448d5771a4b4f911c5743512a0fd6a6f23979c4dac","4392be558b8509e9624975f047d73286a08d97381ee55899b0227b670b2284bd","9982b7049712023c649e877e6812e2e06ed9249296f2a2d3b51d917f244be4c4","0b8f8981fa81638ca5a3d10174cfc199038b168cb3e7ac4548803f96a0d39d82","516160edba90fe695dabece2f2061b1f4410e1918e9e7d0d57c61c9ffafb3a5e","395981256c3a1af362058fe97f7195d44ec3443260b96766649e6f4d85513b42","ef32a2c8f06426f20a08d801238e167e9155a8341d1177a7446077be50c8a63e","c7e95e3e3988837ae5dc96a6f8b1360de33aaffe12be966418a7e00c8fc7f6c9","7172d4edfc661bc427a1b0f16cfd0261f5255a5a96f3c5add90eca4cf5c4eb1a","93b9f9aac69e01179892697a9d7dd1582f68582ddccc31e94d2c87f063fc700a","6a26538b86e3044028bd01bba54f4efc5c62a7595f96191834513f506109df74","a6c6c2e81efb6c03547bcbe8b09b2a94f0f7f5ec3234cc2123bebe7487749c83","bdec7c3a64765eaace37f2dbf32944f26cec6a8cee4d5b77ae4d07c90e6fc970","d537ee66e2554c96c63ce60caf28076a7478bb34cdd8f88809abeca7931862c0","91252869322804ff931952f9a4c12301681f0728ffc2e574d7c858d04fb54a6d","b7341adf64ef336742c7b4a68945f9c6e715d15c0ccd2eb6eeda503b39d92653","8fe0068df1a39fb8ecc14562adb77f5923d93f049e3d8a14a76982d0ef49ed80","a56df75b4f9e15358ec312a4ac991e2ab4cbe9656a99114c44530a51b1a0329a","2c37d3aed9fd6034ada2871eed49aa1e532444bca0bbdb27fe6d9cd4e4ba1d6e","8c6b5041b4b9dcc18c40d8d0615028e759d470a4810b1537bacfbd20c92243c4","e53e2f59a1b10434a1eeea3ad2bf0ed363ba88aa01681d68422dc9044ef50d52","af8f17871b68bfcc90f5941444844266c7c0a9328db0dee1414f47d0d1fd8e88","13fdf424f48b67e5fd7e4f25b6400a7fbdd28a0cff99d7d0400b76e4587a8879","13fe00c8acf8d4d8a50aee4c6805faa237b832e8b182154142647ab097808f6b","3cb14bc0d01a1bb99bda29c2366d570954496704ba8ac1f73060ba6ae99a18df","50f9dfb63997fcc83723ec64d6e7c07394022e994dff7984c55c31ffbc028e5e","b1e295cf3c02dee08816417f57ab7559906e55d706dd2b78f8dc045f88d93aaa","9bb720df292acbfd7e53bc0e8110b291f7ef83c16189da325eca9a58ca26ff82","f8a8c916f284fd68e8124f98110847d724fc503bf472a32eab36c95298920b2b","9803c925f6d559f0bce9a0e938b3ca5b192eec1fc5f0e727a75f514dc08f4e49",{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"87da5085862d6579f203c6f5327caa469cf5c15d7bcd5986d54a5dbeb03b4f8c","signature":"0c4b24fb96b928e6e05c5107efa093062b277fd069f57e1c2df6c1cf1fee7c1a"},"91514ad47ab59e654f4a71943fc6ddf477b06f821fc04ff698e7340ecaedbac1","ad46be6d7b16fde6ba09fa11a8bdaa963a076d10fa85e8f7cd6a0904062993e1","e657d17c2b9494dfd8a9c6ea35a50214c324f9640c3fd9d63f414bd1f806623e","caf99be297c13988c93dcbd85ac2a65e1a44a428de6c6281478f21686c18a11f","1de8238b7283b31b2cfc8bf4c08c836223d8cefe4fdbdebebf580c59c0b539a6","451a214b2ce4d71b0c6c87a8a10bd4f0bb9d70d6630527da1f3a6fbce0abbffe","21c91e8fd1c8469ac883a5d0e88ee2328f21e761f0d266ef413b0177cdd14a8f","028a4ca49c9f57503e269e11143d17fe86d07b57aa6ad0ff033e37f90069720c","8d0d9d6605b72eb8a2ddb127b630898497fa49ed0adc018f8af55b6bc008c04f",{"version":"7b6c900f41598ed3dafafa4154e8e7fd20ca300d2478cb306576f45b7c9fcd91","signature":"539433cf263fbcb4023136a1b7c55e7d052876e1a32fa8d94bc37c4a81beb17d"},{"version":"aa2e2fb470b9f0efd1408e01d648287c7421ad4b7d0b6892057045fd8e59d941","signature":"1b4bc52d62538394067e2e45bb81666386775598c8b664ea21acb13bd68c168a"},"6503e23284b21e9b4cccd4dd9a5045dd005598c23d3d781349772a7fcf6e3549","9f516737132195476737f2113aa684138738d1285a8bc4d36f403fdcb220fb35","947ce778adc2efb03431cf740955df030620dd160bf6176c0a6e414e57d1423e","780821233ebeb2dd4134de92da1a24f5f56bcc558a2e0dddf76b7c5dd572e20d",{"version":"7a3bbb59a6e084b7a46a50360089f7f8decda1f20083d37cd1d179696eb8ce44","signature":"55bb18d80ab4836734d6b6075750b673bec340bcaed10fed842407a1fdeb3657"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"81e7e3e4fec13fe30428a3c05b4b4256958317f21ec489cceb8718d5a85eea32","signature":"fdfbd78f7f5c54884fc2efd20efbd81968b887f3335c974c94dc3db6dd58c02f"},{"version":"98f31b67b543962dfae3f3e55e5fbd56c77d1bc6835a5c317dd92fa7d4a022c8","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","c5a251297fd8eeb861c0e98430de6ea5099e8febac0985edcf5d75feb4c6ce27",{"version":"187f8eb60ad38d6154426da013f33ee48e8bf82b86d77dd2368970b8106bc8f0","signature":"776e8ea041798d892337df5348635cfcbc1fe9bad68b87d2a8a6f6cbacbbd72b"},{"version":"185b2a171da126f5c6c53ce0812588d3ba46575eeba352368c5414b6e5c0f1de","signature":"9c60c89de612b6471ab99cd4b57bb1e2b3b5821d9cf81723838d6c8324ed2c36"},"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","955133b47df2272da61dbb50fda84b0e0732d96f5614a373718719b4bc429641","3846d0dcf468a1d1a07e6d00eaa37ec542956fb5fe0357590a6407af20d2ff90","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"49026435d21e3d7559d723af3ae48f73ec28f9cba651b41bd2ac991012836122","affectsGlobalScope":true},"39b1a50d543770780b0409a4caacb87f3ff1d510aedfeb7dc06ed44188256f89",{"version":"b6a4a51bc749ad882c33d98563ff5a94716ca884bfde949a8c97bad530e4ee2c","affectsGlobalScope":true},"16b872cf5432818bdbf405428b4a1d77bb2a7ab908e8bd6609f9a541cea92f81","fe39ceafa361b6d339b518936275eff89a77e7dfe92f2efa5fb97abf9a95ca49",{"version":"4009dd21843fe4a62d1d97b584a2937ca9f045df6fbd65c8b264d8dd04b656fd","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","c9e6ea53a25729dbb5b5bb6960db4387df2f8e88add9cbf36b6ff590481134f9","3e95e6310d49db6d575ac6c2896c02761426aa5aab0b18169f971151c709b770","7eb0662b995994db248290a0f0a1d8ed685991a162ff9eb4dee36f099cccd0d9","bea5c9fc0843a6961411ab4a04df856a8372448bc0d180da0c3a054ff31044b8","715873cecbfcebb49f293f0521bd0955d6298486e2eeb9c7bbf5e9f20a6ed152","c6cf9428f45f3d78b07df7d7aab1569994c177d36549e3a962f952d89f026bc4",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"6c7b9d2139abd8f2e83ed8fa018c3799ab3187755a6665621feb6e93d3429ac3","affectsGlobalScope":true},"a019c9782ea4e21c83881c780cebce8ad86e3f78122619336eacbd87e47fe674","021ca24be8eb8c46f99b4e03ebf872931f590c9b07b88d715c68bd30495b6c44","5899ab1898582115c432cccef063298f75477bf2cebe5473360043fddd67bcc6","6b97f4106d72ae6b4ebf4e46d2fe90f4d04dd04b3dbff6e294572440a428209d","e3baa0c5780c2c805ec33a999722a2f740b572eb3746fd0a5f93a0a5c3dbf7f6","48fedd2f8549a2ae7e62f30fdb015779c2a7b536760730c5269406cd3d17cab2",{"version":"089867511b37a534ae71f3d9bc97acc0b925b7f5dbec113f98c4b49224c694eb","affectsGlobalScope":true},"c874bfffe38a94b129077eaba4e26575972d545d5d04cd64e90c02d2c029ead6","f5ce35485541e817c2d4105d3eb78e3e538bbb009515ed014694363fa3e94ceb","323506ce173f7f865f42f493885ee3dacd18db6359ea1141d57676d3781ce10c",{"version":"bd88055918cf8bf30ad7c9269177f7ebeafd4c5f0d28919edccd1c1d24f7e73c","affectsGlobalScope":true},{"version":"4ee9304173804c2c6dff4fcb8ad900619a4078b30d37f7e455236836e8e87a45","affectsGlobalScope":true},"ea3ab3727cd6c222d94003ecafa30e8550c61eadcdabbf59514aee76e86211a5","d3cdd41693c5ed6bec4f1a1c399d9501372b14bd341bc46eedacf2854c5df5a7","2de7a21c92226fb8abbeed7a0a9bd8aa6d37e4c68a8c7ff7938c644267e9fcc1","6d6070c5c81ba0bfe58988c69e3ba3149fc86421fd383f253aeb071cbf29cd41","48dab0d6e633b8052e7eaa0efb0bb3d58a733777b248765eafcb0b0349439834","d3e22aaa84d935196f465fff6645f88bb41352736c3130285eea0f2489c5f183","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","cdaaf046791d7d588f28f32197c5d6acc43343e62540a67eed194c9c20535fdc","4b1ff655bd8edd879dd4f04f15338ce0109f58ccb424165d44fa07e7ea39c4bf",{"version":"6fa61015444e843013443f2e5ca6bee5f033cbf361f953fd932abb0c029b73b2","affectsGlobalScope":true},{"version":"300f8e9de0b0c3482be3e749462b6ebc3dab8a316801f1da0def94aed0cd2018","affectsGlobalScope":true},"4e228e78c1e9b0a75c70588d59288f63a6258e8b1fe4a67b0c53fe03461421d9","24b8c93eb91a64a6fbb877a295cfac4c10aa4660599970c954a99d33697534a3","76a89af04f2ba1807309320dab5169c0d1243b80738b4a2005989e40a136733e","c045b664abf3fc2a4750fa96117ab2735e4ed45ddd571b2a6a91b9917e231a02",{"version":"ca619678b887ae262316673b55bb358c517593d3b6b96c1271972716c699da32","affectsGlobalScope":true},{"version":"0c312a7c5dec6c616f754d3a4b16318ce8d1cb912dfb3dfa0e808f45e66cbb21","affectsGlobalScope":true},"d1ef1d8516286380fd0a6f498f1650d374a8cb5f03d91633b6124e4fb8fb131d","fecdf44bec4ee9c5188e5f2f58c292c9689c02520900dceaaa6e76594de6da90","2641e5e19268b6f5038ad48a6e2598965301df8a77c48c99d8df760a6a154204",{"version":"6a4a80787c57c10b3ea8314c80d9cc6e1deb99d20adca16106a337825f582420","affectsGlobalScope":true},"f2b9440f98d6f94c8105883a2b65aee2fce0248f71f41beafd0a80636f3a565d",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447","d3f2d715f57df3f04bf7b16dde01dec10366f64fce44503c92b8f78f614c1769","b78cd10245a90e27e62d0558564f5d9a16576294eee724a59ae21b91f9269e4a","fedd311d427fdafac411b4e0edc0d1014668853679e021e04717a6de45ff5c0c","2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed",{"version":"50072f976cfa86af1a3044f55cd729d992abe39222d2f6cdf929266c77a42b0b","affectsGlobalScope":true},"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","34118be360cdd3381bbebbfd4b093c394460c8fc5df40688d58f45d86ab1448b","104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","5c45abf1e13e4463eacfd5dedda06855da8748a6a6cb3334f582b52e219acc04",{"version":"eb938d816e6a680b8b52174cac4b0c53a101e40076a18dba7997b284165fb227","signature":"cdb9a6bec80e1b795ce332c1ce77969dd94d800d45da3b25253d5fcce74f53ae"}],"root":[60,505,506,510,511,610],"options":{"declaration":false,"declarationMap":false,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"inlineSourceMap":true,"inlineSources":true,"module":7,"noEmitOnError":false,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noPropertyAccessFromIndexSignature":true,"outDir":"../../../..","skipLibCheck":true,"sourceMap":false,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo","useDefineForClassFields":false},"fileIdsList":[[251,329,487],[251,329],[249,251,261,329,421],[249,251,329],[249,251,261,329],[249,251,329,420],[249,251,252,260,261,329,462,463],[249,251,260,261,329,420,461],[249,251,252,329],[329],[249,250,329],[251,254,329,500],[251,252,253,329],[251,253,254,329,501],[249,251,252,254,256,329],[251,278,279,329],[251,280,329],[249,251,253,254,278,329],[285,329],[278,329],[278,279,280,281,282,283,284,329],[329,565,599,607],[329,565,599],[329,562,565,599,601,602,603],[329,602,604,606,608],[329,513],[329,549],[329,550,555,583],[329,551,562,563,570,580,591],[329,551,552,562,570],[329,553,592],[329,554,555,563,571],[329,555,580,588],[329,556,558,562,570],[329,557],[329,558,559],[329,562],[329,560,562],[329,549,562],[329,562,563,564,580,591],[329,562,563,564,577,580,583],[329,547,596],[329,558,562,565,570,580,591],[329,562,563,565,566,570,580,588,591],[329,565,567,580,588,591],[329,513,514,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598],[329,562,568],[329,569,591,596],[329,558,562,570,580],[329,571],[329,572],[329,549,573],[329,574,590,596],[329,575],[329,576],[329,562,577,578],[329,577,579,592,594],[329,550,562,580,581,582,583],[329,550,580,582],[329,580,581],[329,583],[329,584],[329,549,580],[329,562,586,587],[329,586,587],[329,555,570,580,588],[329,589],[329,570,590],[329,550,565,576,591],[329,555,592],[329,580,593],[329,569,594],[329,595],[329,550,555,562,564,573,580,591,594,596],[329,580,597],[329,563,580,599,600],[329,565,599,600,605],[251,260,329],[251,260,277,301,329],[251,329,431,432,436,441],[329,443],[329,431,432,442],[251,260,261,277,296,301,302,303,304,329],[251,302,305,329],[311,329],[302,303,304,305,306,307,308,309,310,329],[249,251,261,277,302,303,329],[249,251,302,304,329],[249,251,261,302,303,304,329],[251,260,302,304,329],[251,260,277,316,329,422],[251,329,446],[251,260,277,316,328,329,422,445],[251,329,445,446,447],[329,449],[329,445,446,447,448],[329,455],[329,453,454],[251,254,260,277,286,296,329],[249,251,277,297,329],[297,329],[300,329],[297,298,299,329],[327,329],[251,277,329],[251,252,319,325,329],[249,251,277,329],[317,318,319,326,329],[329,459],[251,329,457],[329,457,458],[329,468],[251,296,329,464],[251,329,465],[329,464],[329,465,466,467],[249,251,287,291,329],[251,261,277,329],[295,329],[287,288,289,290,292,293,294,329],[277,329],[329,337],[329,334,335,336],[329,435],[329,433,434],[251,329,433],[262,329],[276,329],[262,263,264,265,266,267,268,269,270,271,272,273,274,275,329],[329,440],[251,277,329,437],[251,329,438],[329,437,438,439],[251,277,313,314,316,328,329,408],[251,277,286,313,329],[249,251,260,277,286,301,329],[251,313,314,315,329,409,410,411,416],[329,418],[313,314,315,329,409,410,411,417],[251,260,329,412],[251,329,412,413],[329,415],[329,412,413,414],[249,251,260,261,277,291,296,329],[251,329,338],[251,329,331,338,339],[329,407],[251,329,332],[251,329,331],[249,251,277,329,330],[251,329,330],[329,330,331,332,333,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406],[251,277,286,320,329],[251,286,321,329],[249,251,253,254,261,277,286,301,329],[286,329],[324,329],[320,321,322,323,329],[251,261,296,329],[329,429],[251,260,277,328,329,422,423],[249,251,260,277,316,328,329],[251,329,423,424,425,426,427],[329,423,424,425,426,427,428],[251,329,423],[249,251,296,301,329,464,487,488],[329,494],[251,260,301,329,489],[251,329,488,489],[251,329,490,491],[251,296,329,464,488,489,490],[329,488,489,490,491,492,493],[251,260,277,329,474,475,476],[329,483],[251,277,329,476],[329,475,476,477,478,479,480,481,482],[251,260,261,277,316,329,475,476,477],[251,329,477,478,479,480,481],[251,260,277,329],[249,251,260,277,301,329,460,464,469],[329,473],[329,470,471,472],[251,260,277,329,456,460,470],[251,329,471],[61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,77,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,117,118,119,120,121,122,123,124,125,126,127,128,130,131,132,133,134,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,180,181,182,184,193,195,196,197,198,199,200,202,203,205,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,329],[106,329],[62,65,329],[64,329],[64,65,329],[61,62,63,65,329],[62,64,65,222,329],[65,329],[61,64,106,329],[64,65,222,329],[64,230,329],[62,64,65,329],[74,329],[97,329],[118,329],[64,65,106,329],[65,113,329],[64,65,106,124,329],[64,65,124,329],[65,165,329],[65,106,329],[61,65,183,329],[61,65,184,329],[206,329],[190,192,329],[201,329],[190,329],[61,65,183,190,191,329],[183,184,192,329],[204,329],[61,65,190,191,192,329],[63,64,65,329],[61,65,329],[62,64,184,185,186,187,329],[106,184,185,186,187,329],[184,186,329],[64,185,186,188,189,193,329],[61,64,329],[65,208,329],[66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,107,108,109,110,111,112,114,115,116,117,118,119,120,121,122,123,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,329],[194,329],[329,524,528,591],[329,524,580,591],[329,519],[329,521,524,588,591],[329,570,588],[329,599],[329,519,599],[329,521,524,570,591],[329,516,517,520,523,550,562,580,591],[329,516,522],[329,520,524,550,583,591,599],[329,550,599],[329,540,550,599],[329,518,519,599],[329,524],[329,518,519,520,521,522,523,524,525,526,528,529,530,531,532,533,534,535,536,537,538,539,541,542,543,544,545,546],[329,524,531,532],[329,522,524,532,533],[329,523],[329,516,519,524],[329,524,528,532,533],[329,528],[329,522,524,527,591],[329,516,521,522,524,528,531],[329,550,580],[329,519,524,540,550,596,599],[59,329],[59,252,329,510,512,572,591,609],[59,251,252,256,329],[59,251,329,502,508],[59,251,252,253,254,256,316,329,408,498,499,501],[59,256,329,497],[59,256,329,496],[59,251,252,312,316,329,416,419,430,433,444,450,452,484,486,495,551],[59,254,329,504,509],[59,254,329,502,504],[609],[251],[256],[316,495]],"referencedMap":[[500,1],[487,2],[422,3],[260,2],[420,2],[461,4],[291,5],[421,6],[464,7],[261,2],[463,2],[462,8],[253,9],[252,4],[499,10],[251,11],[250,10],[316,4],[501,12],[254,13],[508,14],[256,15],[512,2],[280,16],[282,10],[281,17],[279,18],[286,19],[284,20],[285,21],[278,10],[283,20],[608,22],[607,23],[604,24],[609,25],[605,10],[600,10],[513,26],[514,26],[549,27],[550,28],[551,29],[552,30],[553,31],[554,32],[555,33],[556,34],[557,35],[558,36],[559,36],[561,37],[560,38],[562,39],[563,40],[564,41],[548,42],[598,10],[565,43],[566,44],[567,45],[599,46],[568,47],[569,48],[570,49],[571,50],[572,51],[573,52],[574,53],[575,54],[576,55],[577,56],[578,56],[579,57],[580,58],[582,59],[581,60],[583,61],[584,62],[585,63],[586,64],[587,65],[588,66],[589,67],[590,68],[591,69],[592,70],[593,71],[594,72],[595,73],[596,74],[597,75],[602,10],[603,10],[601,76],[606,77],[515,10],[329,10],[432,78],[431,79],[442,80],[444,81],[443,82],[302,2],[305,83],[306,84],[312,85],[311,86],[304,87],[310,88],[309,89],[307,88],[308,89],[303,90],[447,91],[445,92],[446,93],[448,94],[450,95],[449,96],[453,10],[454,10],[456,97],[455,98],[297,99],[298,100],[299,101],[301,102],[300,103],[328,104],[319,105],[318,4],[326,106],[317,107],[327,108],[460,109],[457,105],[458,110],[459,111],[469,112],[465,113],[466,114],[467,115],[468,116],[292,117],[293,4],[289,4],[294,118],[296,119],[295,120],[287,4],[290,105],[288,105],[334,121],[338,122],[337,123],[336,10],[335,10],[436,124],[435,125],[433,105],[434,126],[262,10],[263,127],[270,127],[271,127],[272,10],[264,10],[277,128],[265,127],[273,4],[266,127],[276,129],[269,10],[267,10],[275,10],[268,2],[274,10],[441,130],[437,105],[438,131],[439,132],[440,133],[409,134],[314,2],[315,135],[411,2],[410,2],[313,136],[417,137],[419,138],[418,139],[413,140],[414,141],[416,142],[415,143],[412,144],[339,145],[341,146],[408,147],[342,10],[343,10],[344,10],[345,10],[346,10],[347,10],[348,10],[349,10],[350,10],[351,10],[352,10],[353,10],[354,10],[355,10],[356,10],[357,10],[358,10],[359,10],[360,10],[361,10],[362,10],[363,10],[364,10],[365,10],[366,10],[367,10],[368,10],[369,10],[370,10],[371,10],[372,10],[374,10],[373,10],[375,10],[376,10],[377,10],[378,10],[379,10],[380,10],[381,10],[382,10],[383,10],[384,10],[385,10],[386,10],[387,10],[388,10],[389,10],[390,10],[391,10],[392,10],[393,10],[394,10],[395,10],[396,10],[397,10],[398,10],[399,10],[400,10],[401,10],[402,10],[403,10],[404,10],[405,10],[406,10],[330,10],[333,148],[332,149],[331,150],[340,151],[407,152],[321,153],[322,154],[320,155],[323,156],[325,157],[324,158],[426,159],[430,160],[427,2],[424,161],[423,162],[428,163],[429,164],[425,165],[489,166],[495,167],[490,168],[491,169],[492,170],[493,171],[494,172],[488,4],[477,173],[484,174],[481,175],[483,176],[478,177],[482,178],[475,2],[480,175],[479,179],[476,10],[470,180],[474,181],[473,182],[471,183],[472,184],[249,185],[222,10],[200,186],[198,186],[248,187],[213,188],[212,188],[113,189],[64,190],[220,189],[221,189],[223,191],[224,189],[225,192],[124,193],[226,189],[197,189],[227,189],[228,194],[229,189],[230,188],[231,195],[232,189],[233,189],[234,189],[235,189],[236,188],[237,189],[238,189],[239,189],[240,189],[241,196],[242,189],[243,189],[244,189],[245,189],[246,189],[63,187],[66,192],[67,192],[68,192],[69,192],[70,192],[71,192],[72,192],[73,189],[75,197],[76,192],[74,192],[77,192],[78,192],[79,192],[80,192],[81,192],[82,192],[83,189],[84,192],[85,192],[86,192],[87,192],[88,192],[89,189],[90,192],[91,192],[92,192],[93,192],[94,192],[95,192],[96,189],[98,198],[97,192],[99,192],[100,192],[101,192],[102,192],[103,196],[104,189],[105,189],[119,199],[107,200],[108,192],[109,192],[110,189],[111,192],[112,192],[114,201],[115,192],[116,192],[117,192],[118,192],[120,192],[121,192],[122,192],[123,192],[125,202],[126,192],[127,192],[128,192],[129,189],[130,192],[131,203],[132,203],[133,203],[134,189],[135,192],[136,192],[137,192],[142,192],[138,192],[139,189],[140,192],[141,189],[143,192],[144,192],[145,192],[146,192],[147,192],[148,192],[149,189],[150,192],[151,192],[152,192],[153,192],[154,192],[155,192],[156,192],[157,192],[158,192],[159,192],[160,192],[161,192],[162,192],[163,192],[164,192],[165,192],[166,204],[167,192],[168,192],[169,192],[170,192],[171,192],[172,192],[173,189],[174,189],[175,189],[176,189],[177,189],[178,192],[179,192],[180,192],[181,192],[199,205],[247,189],[184,206],[183,207],[207,208],[206,209],[202,210],[201,209],[203,211],[192,212],[190,213],[205,214],[204,211],[191,10],[193,215],[106,216],[62,217],[61,192],[196,10],[188,218],[189,219],[186,10],[187,220],[185,192],[194,221],[65,222],[214,10],[215,10],[208,10],[211,188],[210,10],[216,10],[217,10],[209,223],[218,10],[219,10],[182,224],[195,225],[59,10],[57,10],[58,10],[10,10],[12,10],[11,10],[2,10],[13,10],[14,10],[15,10],[16,10],[17,10],[18,10],[19,10],[20,10],[3,10],[4,10],[21,10],[25,10],[22,10],[23,10],[24,10],[26,10],[27,10],[28,10],[5,10],[29,10],[30,10],[31,10],[32,10],[6,10],[36,10],[33,10],[34,10],[35,10],[37,10],[7,10],[38,10],[43,10],[44,10],[39,10],[40,10],[41,10],[42,10],[8,10],[48,10],[45,10],[46,10],[47,10],[49,10],[9,10],[50,10],[51,10],[52,10],[55,10],[53,10],[54,10],[1,10],[56,10],[531,226],[538,227],[530,226],[545,228],[522,229],[521,230],[544,231],[539,232],[542,233],[524,234],[523,235],[519,236],[518,237],[541,238],[520,239],[525,240],[526,10],[529,240],[516,10],[547,241],[546,240],[533,242],[534,243],[536,244],[532,245],[535,246],[540,231],[527,247],[528,248],[537,249],[517,250],[543,251],[511,252],[610,253],[503,252],[504,254],[255,252],[507,252],[509,255],[502,256],[257,252],[498,257],[451,252],[452,252],[258,252],[497,258],[259,252],[496,259],[485,252],[486,252],[60,252],[506,252],[510,260],[505,261]],"exportedModulesMap":[[500,1],[487,2],[422,3],[260,2],[420,2],[461,4],[291,5],[421,6],[464,7],[261,2],[463,2],[462,8],[253,9],[252,4],[499,10],[251,11],[250,10],[316,4],[501,12],[254,13],[508,14],[256,15],[512,2],[280,16],[282,10],[281,17],[279,18],[286,19],[284,20],[285,21],[278,10],[283,20],[608,22],[607,23],[604,24],[609,25],[605,10],[600,10],[513,26],[514,26],[549,27],[550,28],[551,29],[552,30],[553,31],[554,32],[555,33],[556,34],[557,35],[558,36],[559,36],[561,37],[560,38],[562,39],[563,40],[564,41],[548,42],[598,10],[565,43],[566,44],[567,45],[599,46],[568,47],[569,48],[570,49],[571,50],[572,51],[573,52],[574,53],[575,54],[576,55],[577,56],[578,56],[579,57],[580,58],[582,59],[581,60],[583,61],[584,62],[585,63],[586,64],[587,65],[588,66],[589,67],[590,68],[591,69],[592,70],[593,71],[594,72],[595,73],[596,74],[597,75],[602,10],[603,10],[601,76],[606,77],[515,10],[329,10],[432,78],[431,79],[442,80],[444,81],[443,82],[302,2],[305,83],[306,84],[312,85],[311,86],[304,87],[310,88],[309,89],[307,88],[308,89],[303,90],[447,91],[445,92],[446,93],[448,94],[450,95],[449,96],[453,10],[454,10],[456,97],[455,98],[297,99],[298,100],[299,101],[301,102],[300,103],[328,104],[319,105],[318,4],[326,106],[317,107],[327,108],[460,109],[457,105],[458,110],[459,111],[469,112],[465,113],[466,114],[467,115],[468,116],[292,117],[293,4],[289,4],[294,118],[296,119],[295,120],[287,4],[290,105],[288,105],[334,121],[338,122],[337,123],[336,10],[335,10],[436,124],[435,125],[433,105],[434,126],[262,10],[263,127],[270,127],[271,127],[272,10],[264,10],[277,128],[265,127],[273,4],[266,127],[276,129],[269,10],[267,10],[275,10],[268,2],[274,10],[441,130],[437,105],[438,131],[439,132],[440,133],[409,134],[314,2],[315,135],[411,2],[410,2],[313,136],[417,137],[419,138],[418,139],[413,140],[414,141],[416,142],[415,143],[412,144],[339,145],[341,146],[408,147],[342,10],[343,10],[344,10],[345,10],[346,10],[347,10],[348,10],[349,10],[350,10],[351,10],[352,10],[353,10],[354,10],[355,10],[356,10],[357,10],[358,10],[359,10],[360,10],[361,10],[362,10],[363,10],[364,10],[365,10],[366,10],[367,10],[368,10],[369,10],[370,10],[371,10],[372,10],[374,10],[373,10],[375,10],[376,10],[377,10],[378,10],[379,10],[380,10],[381,10],[382,10],[383,10],[384,10],[385,10],[386,10],[387,10],[388,10],[389,10],[390,10],[391,10],[392,10],[393,10],[394,10],[395,10],[396,10],[397,10],[398,10],[399,10],[400,10],[401,10],[402,10],[403,10],[404,10],[405,10],[406,10],[330,10],[333,148],[332,149],[331,150],[340,151],[407,152],[321,153],[322,154],[320,155],[323,156],[325,157],[324,158],[426,159],[430,160],[427,2],[424,161],[423,162],[428,163],[429,164],[425,165],[489,166],[495,167],[490,168],[491,169],[492,170],[493,171],[494,172],[488,4],[477,173],[484,174],[481,175],[483,176],[478,177],[482,178],[475,2],[480,175],[479,179],[476,10],[470,180],[474,181],[473,182],[471,183],[472,184],[249,185],[222,10],[200,186],[198,186],[248,187],[213,188],[212,188],[113,189],[64,190],[220,189],[221,189],[223,191],[224,189],[225,192],[124,193],[226,189],[197,189],[227,189],[228,194],[229,189],[230,188],[231,195],[232,189],[233,189],[234,189],[235,189],[236,188],[237,189],[238,189],[239,189],[240,189],[241,196],[242,189],[243,189],[244,189],[245,189],[246,189],[63,187],[66,192],[67,192],[68,192],[69,192],[70,192],[71,192],[72,192],[73,189],[75,197],[76,192],[74,192],[77,192],[78,192],[79,192],[80,192],[81,192],[82,192],[83,189],[84,192],[85,192],[86,192],[87,192],[88,192],[89,189],[90,192],[91,192],[92,192],[93,192],[94,192],[95,192],[96,189],[98,198],[97,192],[99,192],[100,192],[101,192],[102,192],[103,196],[104,189],[105,189],[119,199],[107,200],[108,192],[109,192],[110,189],[111,192],[112,192],[114,201],[115,192],[116,192],[117,192],[118,192],[120,192],[121,192],[122,192],[123,192],[125,202],[126,192],[127,192],[128,192],[129,189],[130,192],[131,203],[132,203],[133,203],[134,189],[135,192],[136,192],[137,192],[142,192],[138,192],[139,189],[140,192],[141,189],[143,192],[144,192],[145,192],[146,192],[147,192],[148,192],[149,189],[150,192],[151,192],[152,192],[153,192],[154,192],[155,192],[156,192],[157,192],[158,192],[159,192],[160,192],[161,192],[162,192],[163,192],[164,192],[165,192],[166,204],[167,192],[168,192],[169,192],[170,192],[171,192],[172,192],[173,189],[174,189],[175,189],[176,189],[177,189],[178,192],[179,192],[180,192],[181,192],[199,205],[247,189],[184,206],[183,207],[207,208],[206,209],[202,210],[201,209],[203,211],[192,212],[190,213],[205,214],[204,211],[191,10],[193,215],[106,216],[62,217],[61,192],[196,10],[188,218],[189,219],[186,10],[187,220],[185,192],[194,221],[65,222],[214,10],[215,10],[208,10],[211,188],[210,10],[216,10],[217,10],[209,223],[218,10],[219,10],[182,224],[195,225],[59,10],[57,10],[58,10],[10,10],[12,10],[11,10],[2,10],[13,10],[14,10],[15,10],[16,10],[17,10],[18,10],[19,10],[20,10],[3,10],[4,10],[21,10],[25,10],[22,10],[23,10],[24,10],[26,10],[27,10],[28,10],[5,10],[29,10],[30,10],[31,10],[32,10],[6,10],[36,10],[33,10],[34,10],[35,10],[37,10],[7,10],[38,10],[43,10],[44,10],[39,10],[40,10],[41,10],[42,10],[8,10],[48,10],[45,10],[46,10],[47,10],[49,10],[9,10],[50,10],[51,10],[52,10],[55,10],[53,10],[54,10],[1,10],[56,10],[531,226],[538,227],[530,226],[545,228],[522,229],[521,230],[544,231],[539,232],[542,233],[524,234],[523,235],[519,236],[518,237],[541,238],[520,239],[525,240],[526,10],[529,240],[516,10],[547,241],[546,240],[533,242],[534,243],[536,244],[532,245],[535,246],[540,231],[527,247],[528,248],[537,249],[517,250],[543,251],[511,252],[610,262],[255,252],[507,252],[509,263],[502,263],[257,252],[498,257],[497,264],[496,265],[60,252],[506,252],[510,263]],"semanticDiagnosticsPerFile":[500,487,422,260,420,461,291,421,464,261,463,462,253,252,499,251,250,316,501,254,508,256,512,280,282,281,279,286,284,285,278,283,608,607,604,609,605,600,513,514,549,550,551,552,553,554,555,556,557,558,559,561,560,562,563,564,548,598,565,566,567,599,568,569,570,571,572,573,574,575,576,577,578,579,580,582,581,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,602,603,601,606,515,329,432,431,442,444,443,302,305,306,312,311,304,310,309,307,308,303,447,445,446,448,450,449,453,454,456,455,297,298,299,301,300,328,319,318,326,317,327,460,457,458,459,469,465,466,467,468,292,293,289,294,296,295,287,290,288,334,338,337,336,335,436,435,433,434,262,263,270,271,272,264,277,265,273,266,276,269,267,275,268,274,441,437,438,439,440,409,314,315,411,410,313,417,419,418,413,414,416,415,412,339,341,408,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,374,373,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,330,333,332,331,340,407,321,322,320,323,325,324,426,430,427,424,423,428,429,425,489,495,490,491,492,493,494,488,477,484,481,483,478,482,475,480,479,476,470,474,473,471,472,249,222,200,198,248,213,212,113,64,220,221,223,224,225,124,226,197,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,63,66,67,68,69,70,71,72,73,75,76,74,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,98,97,99,100,101,102,103,104,105,119,107,108,109,110,111,112,114,115,116,117,118,120,121,122,123,125,126,127,128,129,130,131,132,133,134,135,136,137,142,138,139,140,141,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,199,247,184,183,207,206,202,201,203,192,190,205,204,191,193,106,62,61,196,188,189,186,187,185,194,65,214,215,208,211,210,216,217,209,218,219,182,195,59,57,58,10,12,11,2,13,14,15,16,17,18,19,20,3,4,21,25,22,23,24,26,27,28,5,29,30,31,32,6,36,33,34,35,37,7,38,43,44,39,40,41,42,8,48,45,46,47,49,9,50,51,52,55,53,54,1,56,531,538,530,545,522,521,544,539,542,524,523,519,518,541,520,525,526,529,516,547,546,533,534,536,532,535,540,527,528,537,517,543,610,504,509,502,498,452,497,496,486,510,505]},"version":"5.2.2"} \ No newline at end of file +{"program":{"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../node_modules/tslib/tslib.d.ts","../../../../src/main.ngtypecheck.ts","../../../../node_modules/rxjs/dist/types/internal/subscription.d.ts","../../../../node_modules/rxjs/dist/types/internal/subscriber.d.ts","../../../../node_modules/rxjs/dist/types/internal/operator.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable.d.ts","../../../../node_modules/rxjs/dist/types/internal/types.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/audit.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/audittime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/buffer.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/buffercount.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/buffertime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/buffertoggle.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/bufferwhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/catcherror.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/combinelatestall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/combineall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/combinelatest.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/combinelatestwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concat.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concatall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concatmap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concatmapto.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concatwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/connect.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/count.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/debounce.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/debouncetime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/defaultifempty.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/delay.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/delaywhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/dematerialize.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/distinct.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/distinctuntilchanged.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/distinctuntilkeychanged.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/elementat.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/endwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/every.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/exhaustall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/exhaust.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/exhaustmap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/expand.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/filter.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/finalize.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/find.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/findindex.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/first.d.ts","../../../../node_modules/rxjs/dist/types/internal/subject.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/groupby.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/ignoreelements.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/isempty.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/last.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/map.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mapto.d.ts","../../../../node_modules/rxjs/dist/types/internal/notification.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/materialize.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/max.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/merge.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergeall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergemap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/flatmap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergemapto.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergescan.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergewith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/min.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/connectableobservable.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/multicast.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/observeon.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/onerrorresumenextwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/pairwise.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/partition.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/pluck.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/publish.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/publishbehavior.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/publishlast.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/publishreplay.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/race.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/racewith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/reduce.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/repeat.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/repeatwhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/retry.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/retrywhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/refcount.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/sample.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/sampletime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/scan.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/sequenceequal.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/share.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/sharereplay.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/single.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/skip.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/skiplast.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/skipuntil.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/skipwhile.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/startwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/subscribeon.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/switchall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/switchmap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/switchmapto.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/switchscan.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/take.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/takelast.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/takeuntil.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/takewhile.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/tap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/throttle.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/throttletime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/throwifempty.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/timeinterval.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/timeout.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/timeoutwith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/timestamp.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/toarray.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/window.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/windowcount.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/windowtime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/windowtoggle.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/windowwhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/withlatestfrom.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/zip.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/zipall.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/zipwith.d.ts","../../../../node_modules/rxjs/dist/types/operators/index.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/action.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/testmessage.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/subscriptionlog.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/subscriptionloggable.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/coldobservable.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/hotobservable.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/asyncscheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/timerhandle.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/asyncaction.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/virtualtimescheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/testscheduler.d.ts","../../../../node_modules/rxjs/dist/types/testing/index.d.ts","../../../../node_modules/rxjs/dist/types/internal/symbol/observable.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/dom/animationframes.d.ts","../../../../node_modules/rxjs/dist/types/internal/behaviorsubject.d.ts","../../../../node_modules/rxjs/dist/types/internal/replaysubject.d.ts","../../../../node_modules/rxjs/dist/types/internal/asyncsubject.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/asapscheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/asap.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/async.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/queuescheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/queue.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/animationframescheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/animationframe.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/identity.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/pipe.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/noop.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/isobservable.d.ts","../../../../node_modules/rxjs/dist/types/internal/lastvaluefrom.d.ts","../../../../node_modules/rxjs/dist/types/internal/firstvaluefrom.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/argumentoutofrangeerror.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/emptyerror.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/notfounderror.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/objectunsubscribederror.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/sequenceerror.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/unsubscriptionerror.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/bindcallback.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/bindnodecallback.d.ts","../../../../node_modules/rxjs/dist/types/internal/anycatcher.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/combinelatest.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/concat.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/connectable.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/defer.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/empty.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/forkjoin.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/from.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/fromevent.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/fromeventpattern.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/generate.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/iif.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/interval.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/merge.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/never.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/of.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/onerrorresumenext.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/pairs.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/partition.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/race.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/range.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/throwerror.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/timer.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/using.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/zip.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduled/scheduled.d.ts","../../../../node_modules/rxjs/dist/types/internal/config.d.ts","../../../../node_modules/rxjs/dist/types/index.d.ts","../../../../node_modules/@angular/core/primitives/signals/index.d.ts","../../../../node_modules/@angular/core/index.d.ts","../../../../node_modules/@angular/common/index.d.ts","../../../../node_modules/@angular/common/http/index.d.ts","../../../../node_modules/@angular/platform-browser/index.d.ts","../../../../src/app/app.config.ngtypecheck.ts","../../../../node_modules/@angular/router/index.d.ts","../../../../src/app/app.routes.ngtypecheck.ts","../../../../node_modules/@angular/cdk/bidi/index.d.ts","../../../../node_modules/@angular/cdk/platform/index.d.ts","../../../../node_modules/@angular/cdk/layout/index.d.ts","../../../../node_modules/ng-zorro-antd/core/services/resize.d.ts","../../../../node_modules/ng-zorro-antd/core/types/any.d.ts","../../../../node_modules/ng-zorro-antd/core/types/common-wrap.d.ts","../../../../node_modules/ng-zorro-antd/core/types/direction.d.ts","../../../../node_modules/ng-zorro-antd/core/types/indexable.d.ts","../../../../node_modules/ng-zorro-antd/core/types/ng-class.d.ts","../../../../node_modules/ng-zorro-antd/core/types/size.d.ts","../../../../node_modules/ng-zorro-antd/core/types/template.d.ts","../../../../node_modules/ng-zorro-antd/core/types/shape.d.ts","../../../../node_modules/ng-zorro-antd/core/types/compare-with.d.ts","../../../../node_modules/ng-zorro-antd/core/types/control-value-accessor.d.ts","../../../../node_modules/ng-zorro-antd/core/types/convert-input.d.ts","../../../../node_modules/ng-zorro-antd/core/types/input-observable.d.ts","../../../../node_modules/ng-zorro-antd/core/types/type.d.ts","../../../../node_modules/ng-zorro-antd/core/types/status.d.ts","../../../../node_modules/ng-zorro-antd/core/types/public-api.d.ts","../../../../node_modules/ng-zorro-antd/core/types/index.d.ts","../../../../node_modules/ng-zorro-antd/core/services/singleton.d.ts","../../../../node_modules/ng-zorro-antd/core/services/drag.d.ts","../../../../node_modules/ng-zorro-antd/core/services/scroll.d.ts","../../../../node_modules/ng-zorro-antd/core/services/breakpoint.d.ts","../../../../node_modules/ng-zorro-antd/core/services/destroy.d.ts","../../../../node_modules/ng-zorro-antd/core/services/image-preload.d.ts","../../../../node_modules/ng-zorro-antd/core/services/public-api.d.ts","../../../../node_modules/ng-zorro-antd/core/services/index.d.ts","../../../../node_modules/ng-zorro-antd/grid/row.directive.d.ts","../../../../node_modules/ng-zorro-antd/grid/col.directive.d.ts","../../../../node_modules/ng-zorro-antd/grid/grid.module.d.ts","../../../../node_modules/ng-zorro-antd/grid/public-api.d.ts","../../../../node_modules/ng-zorro-antd/grid/index.d.ts","../../../../node_modules/@ant-design/icons-angular/types.d.ts","../../../../node_modules/@ant-design/icons-angular/component/icon.service.d.ts","../../../../node_modules/@ant-design/icons-angular/component/icon.directive.d.ts","../../../../node_modules/@ant-design/icons-angular/component/icon.module.d.ts","../../../../node_modules/@ant-design/icons-angular/component/icon.error.d.ts","../../../../node_modules/@ant-design/icons-angular/utils.d.ts","../../../../node_modules/@ant-design/icons-angular/manifest.d.ts","../../../../node_modules/@ant-design/icons-angular/public_api.d.ts","../../../../node_modules/@ant-design/icons-angular/index.d.ts","../../../../node_modules/ng-zorro-antd/core/config/config.d.ts","../../../../node_modules/ng-zorro-antd/core/config/config.service.d.ts","../../../../node_modules/ng-zorro-antd/core/config/css-variables.d.ts","../../../../node_modules/ng-zorro-antd/core/config/public-api.d.ts","../../../../node_modules/ng-zorro-antd/core/config/index.d.ts","../../../../node_modules/ng-zorro-antd/icon/icon.service.d.ts","../../../../node_modules/ng-zorro-antd/icon/icon.directive.d.ts","../../../../node_modules/ng-zorro-antd/icon/icon.module.d.ts","../../../../node_modules/ng-zorro-antd/icon/icons.d.ts","../../../../node_modules/ng-zorro-antd/icon/public-api.d.ts","../../../../node_modules/ng-zorro-antd/icon/index.d.ts","../../../../node_modules/ng-zorro-antd/menu/menu.types.d.ts","../../../../node_modules/ng-zorro-antd/menu/menu.service.d.ts","../../../../node_modules/ng-zorro-antd/menu/submenu.service.d.ts","../../../../node_modules/ng-zorro-antd/menu/menu-item.component.d.ts","../../../../node_modules/@angular/cdk/collections/index.d.ts","../../../../node_modules/@angular/cdk/coercion/index.d.ts","../../../../node_modules/@angular/cdk/scrolling/index.d.ts","../../../../node_modules/@angular/cdk/portal/index.d.ts","../../../../node_modules/@angular/cdk/overlay/index.d.ts","../../../../node_modules/ng-zorro-antd/core/no-animation/nz-no-animation.directive.d.ts","../../../../node_modules/ng-zorro-antd/core/no-animation/nz-no-animation.module.d.ts","../../../../node_modules/ng-zorro-antd/core/no-animation/public-api.d.ts","../../../../node_modules/ng-zorro-antd/core/no-animation/index.d.ts","../../../../node_modules/ng-zorro-antd/core/overlay/nz-connected-overlay.d.ts","../../../../node_modules/ng-zorro-antd/core/overlay/nz-overlay.module.d.ts","../../../../node_modules/ng-zorro-antd/core/overlay/overlay-position.d.ts","../../../../node_modules/ng-zorro-antd/core/overlay/public-api.d.ts","../../../../node_modules/ng-zorro-antd/core/overlay/index.d.ts","../../../../node_modules/ng-zorro-antd/menu/submenu.component.d.ts","../../../../node_modules/ng-zorro-antd/menu/menu.directive.d.ts","../../../../node_modules/ng-zorro-antd/menu/menu-group.component.d.ts","../../../../node_modules/ng-zorro-antd/menu/menu-divider.directive.d.ts","../../../../node_modules/ng-zorro-antd/menu/submenu-title.component.d.ts","../../../../node_modules/ng-zorro-antd/menu/submenu-inline-child.component.d.ts","../../../../node_modules/ng-zorro-antd/menu/submenu-non-inline-child.component.d.ts","../../../../node_modules/ng-zorro-antd/menu/menu.module.d.ts","../../../../node_modules/ng-zorro-antd/menu/menu.token.d.ts","../../../../node_modules/ng-zorro-antd/menu/public-api.d.ts","../../../../node_modules/ng-zorro-antd/menu/index.d.ts","../../../../src/app/pages/body/index/index.component.ngtypecheck.ts","../../../../node_modules/ng-zorro-antd/layout/content.component.d.ts","../../../../node_modules/ng-zorro-antd/layout/footer.component.d.ts","../../../../node_modules/ng-zorro-antd/layout/header.component.d.ts","../../../../node_modules/ng-zorro-antd/layout/sider.component.d.ts","../../../../node_modules/ng-zorro-antd/layout/layout.component.d.ts","../../../../node_modules/ng-zorro-antd/layout/sider-trigger.component.d.ts","../../../../node_modules/ng-zorro-antd/layout/layout.module.d.ts","../../../../node_modules/ng-zorro-antd/layout/public-api.d.ts","../../../../node_modules/ng-zorro-antd/layout/index.d.ts","../../../../node_modules/@angular/animations/index.d.ts","../../../../node_modules/ng-zorro-antd/dropdown/dropdown-menu.component.d.ts","../../../../node_modules/ng-zorro-antd/dropdown/dropdown.directive.d.ts","../../../../node_modules/ng-zorro-antd/dropdown/dropdown-a.directive.d.ts","../../../../node_modules/ng-zorro-antd/button/button.component.d.ts","../../../../node_modules/ng-zorro-antd/button/button-group.component.d.ts","../../../../node_modules/ng-zorro-antd/core/transition-patch/transition-patch.directive.d.ts","../../../../node_modules/ng-zorro-antd/core/transition-patch/transition-patch.module.d.ts","../../../../node_modules/ng-zorro-antd/core/transition-patch/public-api.d.ts","../../../../node_modules/ng-zorro-antd/core/transition-patch/index.d.ts","../../../../node_modules/ng-zorro-antd/core/wave/nz-wave-renderer.d.ts","../../../../node_modules/ng-zorro-antd/core/wave/nz-wave.directive.d.ts","../../../../node_modules/ng-zorro-antd/core/wave/nz-wave.module.d.ts","../../../../node_modules/ng-zorro-antd/core/wave/public-api.d.ts","../../../../node_modules/ng-zorro-antd/core/wave/index.d.ts","../../../../node_modules/ng-zorro-antd/button/button.module.d.ts","../../../../node_modules/ng-zorro-antd/button/public-api.d.ts","../../../../node_modules/ng-zorro-antd/button/index.d.ts","../../../../node_modules/ng-zorro-antd/dropdown/dropdown-button.directive.d.ts","../../../../node_modules/ng-zorro-antd/dropdown/context-menu.service.module.d.ts","../../../../node_modules/ng-zorro-antd/dropdown/dropdown.module.d.ts","../../../../node_modules/ng-zorro-antd/dropdown/context-menu.service.d.ts","../../../../node_modules/ng-zorro-antd/dropdown/public-api.d.ts","../../../../node_modules/ng-zorro-antd/dropdown/index.d.ts","../../../../node_modules/ng-zorro-antd/breadcrumb/breadcrumb.d.ts","../../../../node_modules/ng-zorro-antd/breadcrumb/breadcrumb-item.component.d.ts","../../../../node_modules/ng-zorro-antd/breadcrumb/breadcrumb.component.d.ts","../../../../node_modules/ng-zorro-antd/breadcrumb/breadcrumb-separator.component.d.ts","../../../../node_modules/ng-zorro-antd/breadcrumb/breadcrumb.module.d.ts","../../../../node_modules/ng-zorro-antd/breadcrumb/public-api.d.ts","../../../../node_modules/ng-zorro-antd/breadcrumb/index.d.ts","../../../../src/app/data/menu/menu.namespace.ngtypecheck.ts","../../../../src/app/data/menu/menu.namespace.ts","../../../../node_modules/ng-zorro-antd/tabs/tab-add-button.component.d.ts","../../../../node_modules/ng-zorro-antd/tabs/interfaces.d.ts","../../../../node_modules/ng-zorro-antd/tabs/tabs-ink-bar.directive.d.ts","../../../../node_modules/ng-zorro-antd/cdk/resize-observer/resize-observer.service.d.ts","../../../../node_modules/ng-zorro-antd/cdk/resize-observer/resize-observer.directive.d.ts","../../../../node_modules/ng-zorro-antd/cdk/resize-observer/resize-observer.module.d.ts","../../../../node_modules/ng-zorro-antd/cdk/resize-observer/public-api.d.ts","../../../../node_modules/ng-zorro-antd/cdk/resize-observer/index.d.ts","../../../../node_modules/@angular/cdk/observers/index.d.ts","../../../../node_modules/@angular/cdk/a11y/index.d.ts","../../../../node_modules/ng-zorro-antd/tabs/tab-link.directive.d.ts","../../../../node_modules/ng-zorro-antd/tabs/tab.component.d.ts","../../../../node_modules/ng-zorro-antd/tabs/tab-nav-item.directive.d.ts","../../../../node_modules/ng-zorro-antd/tabs/tab-nav-operation.component.d.ts","../../../../node_modules/ng-zorro-antd/tabs/tab-nav-bar.component.d.ts","../../../../node_modules/ng-zorro-antd/tabs/tab-body.component.d.ts","../../../../node_modules/ng-zorro-antd/tabs/tab-scroll-list.directive.d.ts","../../../../node_modules/ng-zorro-antd/tabs/tab-close-button.component.d.ts","../../../../node_modules/ng-zorro-antd/tabs/tab.directive.d.ts","../../../../node_modules/ng-zorro-antd/tabs/tabset.component.d.ts","../../../../node_modules/ng-zorro-antd/tabs/tabs.module.d.ts","../../../../node_modules/ng-zorro-antd/tabs/public-api.d.ts","../../../../node_modules/ng-zorro-antd/tabs/index.d.ts","../../../../src/app/pages/body/tab/tab.component.ngtypecheck.ts","../../../../src/app/pages/body/tab/tab.component.ts","../../../../src/app/pages/body/index/index.component.ts","../../../../src/app/utils/initguard.service.ngtypecheck.ts","../../../../src/app/data/login/localstorage.namespace.ngtypecheck.ts","../../../../src/app/data/login/localstorage.namespace.ts","../../../../src/app/utils/localstorage.service.ngtypecheck.ts","../../../../src/app/utils/localstorage.service.ts","../../../../src/app/utils/initguard.service.ts","../../../../src/app/pages/login/login.routes.ngtypecheck.ts","../../../../node_modules/ng-zorro-antd/carousel/carousel-content.directive.d.ts","../../../../node_modules/ng-zorro-antd/carousel/typings.d.ts","../../../../node_modules/ng-zorro-antd/carousel/strategies/base-strategy.d.ts","../../../../node_modules/ng-zorro-antd/carousel/carousel.component.d.ts","../../../../node_modules/ng-zorro-antd/carousel/carousel.module.d.ts","../../../../node_modules/ng-zorro-antd/carousel/strategies/opacity-strategy.d.ts","../../../../node_modules/ng-zorro-antd/carousel/strategies/transform-strategy.d.ts","../../../../node_modules/ng-zorro-antd/carousel/strategies/experimental/transform-no-loop-strategy.d.ts","../../../../node_modules/ng-zorro-antd/carousel/strategies/experimental/flip-strategy.d.ts","../../../../node_modules/ng-zorro-antd/carousel/public-api.d.ts","../../../../node_modules/ng-zorro-antd/carousel/index.d.ts","../../../../node_modules/@angular/forms/index.d.ts","../../../../node_modules/ng-zorro-antd/form/form.directive.d.ts","../../../../node_modules/ng-zorro-antd/form/form-item.component.d.ts","../../../../node_modules/ng-zorro-antd/form/form-label.component.d.ts","../../../../node_modules/ng-zorro-antd/core/form/nz-form-status.service.d.ts","../../../../node_modules/ng-zorro-antd/core/form/nz-form-no-status.service.d.ts","../../../../node_modules/ng-zorro-antd/core/form/nz-form-item-feedback-icon.component.d.ts","../../../../node_modules/ng-zorro-antd/core/form/nz-form-patch.module.d.ts","../../../../node_modules/ng-zorro-antd/core/form/public-api.d.ts","../../../../node_modules/ng-zorro-antd/core/form/index.d.ts","../../../../node_modules/date-fns/typings.d.ts","../../../../node_modules/ng-zorro-antd/i18n/nz-i18n.interface.d.ts","../../../../node_modules/ng-zorro-antd/i18n/nz-i18n.service.d.ts","../../../../node_modules/ng-zorro-antd/i18n/nz-i18n.pipe.d.ts","../../../../node_modules/ng-zorro-antd/i18n/nz-i18n.module.d.ts","../../../../node_modules/ng-zorro-antd/core/time/candy-date.d.ts","../../../../node_modules/ng-zorro-antd/core/time/time.d.ts","../../../../node_modules/ng-zorro-antd/core/time/time-parser.d.ts","../../../../node_modules/ng-zorro-antd/core/time/public-api.d.ts","../../../../node_modules/ng-zorro-antd/core/time/index.d.ts","../../../../node_modules/ng-zorro-antd/i18n/date-config.d.ts","../../../../node_modules/ng-zorro-antd/i18n/nz-i18n.token.d.ts","../../../../node_modules/ng-zorro-antd/i18n/date-helper.service.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/ar_eg.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/az_az.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/bg_bg.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/bn_bd.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/by_by.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/ca_es.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/cs_cz.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/da_dk.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/de_de.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/el_gr.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/en_gb.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/en_us.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/es_es.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/et_ee.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/fa_ir.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/fi_fi.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/fr_be.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/fr_ca.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/fr_fr.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/ga_ie.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/gl_es.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/he_il.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/hi_in.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/hr_hr.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/hu_hu.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/hy_am.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/id_id.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/is_is.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/it_it.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/ja_jp.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/ka_ge.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/km_kh.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/kk_kz.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/kmr_iq.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/kn_in.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/ko_kr.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/ku_iq.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/lt_lt.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/lv_lv.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/mk_mk.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/ml_in.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/mn_mn.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/ms_my.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/nb_no.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/ne_np.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/nl_be.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/nl_nl.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/pl_pl.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/pt_br.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/pt_pt.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/ro_ro.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/ru_ru.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/sk_sk.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/sl_si.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/sr_rs.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/sv_se.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/ta_in.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/th_th.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/tr_tr.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/uk_ua.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/ur_pk.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/vi_vn.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/zh_cn.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/zh_hk.d.ts","../../../../node_modules/ng-zorro-antd/i18n/languages/zh_tw.d.ts","../../../../node_modules/ng-zorro-antd/i18n/public-api.d.ts","../../../../node_modules/ng-zorro-antd/i18n/index.d.ts","../../../../node_modules/ng-zorro-antd/form/form-control.component.d.ts","../../../../node_modules/ng-zorro-antd/form/form-text.component.d.ts","../../../../node_modules/ng-zorro-antd/form/form-split.component.d.ts","../../../../node_modules/ng-zorro-antd/form/form.module.d.ts","../../../../node_modules/ng-zorro-antd/form/public-api.d.ts","../../../../node_modules/ng-zorro-antd/form/index.d.ts","../../../../node_modules/ng-zorro-antd/input/input.directive.d.ts","../../../../node_modules/ng-zorro-antd/input/input-group.component.d.ts","../../../../node_modules/ng-zorro-antd/input/textarea-count.component.d.ts","../../../../node_modules/ng-zorro-antd/input/autosize.directive.d.ts","../../../../node_modules/ng-zorro-antd/input/input-group-slot.component.d.ts","../../../../node_modules/ng-zorro-antd/input/input.module.d.ts","../../../../node_modules/ng-zorro-antd/input/public-api.d.ts","../../../../node_modules/ng-zorro-antd/input/index.d.ts","../../../../node_modules/ng-zorro-antd/core/color/color.d.ts","../../../../node_modules/ng-zorro-antd/core/color/generate.d.ts","../../../../node_modules/ng-zorro-antd/core/color/public-api.d.ts","../../../../node_modules/ng-zorro-antd/core/color/index.d.ts","../../../../node_modules/ng-zorro-antd/tooltip/base.d.ts","../../../../node_modules/ng-zorro-antd/tooltip/tooltip.d.ts","../../../../node_modules/ng-zorro-antd/tooltip/tooltip.module.d.ts","../../../../node_modules/ng-zorro-antd/tooltip/public-api.d.ts","../../../../node_modules/ng-zorro-antd/tooltip/index.d.ts","../../../../node_modules/ng-zorro-antd/slider/slider.service.d.ts","../../../../node_modules/ng-zorro-antd/slider/typings.d.ts","../../../../node_modules/ng-zorro-antd/slider/handle.component.d.ts","../../../../node_modules/ng-zorro-antd/slider/slider.component.d.ts","../../../../node_modules/ng-zorro-antd/slider/track.component.d.ts","../../../../node_modules/ng-zorro-antd/slider/step.component.d.ts","../../../../node_modules/ng-zorro-antd/slider/marks.component.d.ts","../../../../node_modules/ng-zorro-antd/slider/slider.module.d.ts","../../../../node_modules/ng-zorro-antd/slider/public-api.d.ts","../../../../node_modules/ng-zorro-antd/slider/index.d.ts","../../../../src/app/pages/login/login/login.component.ngtypecheck.ts","../../../../node_modules/ng-zorro-antd/checkbox/checkbox-wrapper.component.d.ts","../../../../node_modules/ng-zorro-antd/checkbox/checkbox.component.d.ts","../../../../node_modules/ng-zorro-antd/checkbox/checkbox-group.component.d.ts","../../../../node_modules/ng-zorro-antd/checkbox/checkbox.module.d.ts","../../../../node_modules/ng-zorro-antd/checkbox/public-api.d.ts","../../../../node_modules/ng-zorro-antd/checkbox/index.d.ts","../../../../src/app/data/login/login.namespace.ngtypecheck.ts","../../../../src/app/data/login/login.namespace.ts","../../../../src/app/utils/mathutils.service.ngtypecheck.ts","../../../../src/app/utils/mathutils.service.ts","../../../../node_modules/ng-zorro-antd/message/typings.d.ts","../../../../node_modules/ng-zorro-antd/message/base.d.ts","../../../../node_modules/ng-zorro-antd/message/message-container.component.d.ts","../../../../node_modules/ng-zorro-antd/message/message.component.d.ts","../../../../node_modules/ng-zorro-antd/message/message.module.d.ts","../../../../node_modules/ng-zorro-antd/message/message.service.d.ts","../../../../node_modules/ng-zorro-antd/message/public-api.d.ts","../../../../node_modules/ng-zorro-antd/message/index.d.ts","../../../../src/app/servies/login/login.service.ngtypecheck.ts","../../../../src/environments/environment.ngtypecheck.ts","../../../../src/environments/environment.ts","../../../../src/app/servies/login/login.service.ts","../../../../src/app/pages/login/login/login.component.ts","../../../../src/app/pages/login/login.routes.ts","../../../../src/app/pages/index/index.routes.ngtypecheck.ts","../../../../src/app/pages/index/index/index.component.ngtypecheck.ts","../../../../src/app/pages/index/index/index.component.ts","../../../../src/app/pages/index/index.routes.ts","../../../../src/app/app.routes.ts","../../../../node_modules/@angular/common/locales/zh.d.ts","../../../../node_modules/@angular/animations/browser/index.d.ts","../../../../node_modules/@angular/platform-browser/animations/index.d.ts","../../../../src/app/app.config.ts","../../../../src/app/app.component.ngtypecheck.ts","../../../../src/app/app.component.ts","../../../../src/main.ts","../../../../src/main.server.ngtypecheck.ts","../../../../src/app/app.config.server.ngtypecheck.ts","../../../../node_modules/@angular/platform-server/index.d.ts","../../../../src/app/app.config.server.ts","../../../../src/main.server.ts","../../../../server.ngtypecheck.ts","../../../../node_modules/@angular/ssr/index.d.ts","../../../../node_modules/@types/node/assert.d.ts","../../../../node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/buffer/index.d.ts","../../../../node_modules/undici-types/header.d.ts","../../../../node_modules/undici-types/readable.d.ts","../../../../node_modules/undici-types/file.d.ts","../../../../node_modules/undici-types/fetch.d.ts","../../../../node_modules/undici-types/formdata.d.ts","../../../../node_modules/undici-types/connector.d.ts","../../../../node_modules/undici-types/client.d.ts","../../../../node_modules/undici-types/errors.d.ts","../../../../node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/undici-types/global-origin.d.ts","../../../../node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/undici-types/pool.d.ts","../../../../node_modules/undici-types/handlers.d.ts","../../../../node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/undici-types/agent.d.ts","../../../../node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/undici-types/mock-client.d.ts","../../../../node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/undici-types/api.d.ts","../../../../node_modules/undici-types/cookies.d.ts","../../../../node_modules/undici-types/patch.d.ts","../../../../node_modules/undici-types/filereader.d.ts","../../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/undici-types/websocket.d.ts","../../../../node_modules/undici-types/content-type.d.ts","../../../../node_modules/undici-types/cache.d.ts","../../../../node_modules/undici-types/interceptors.d.ts","../../../../node_modules/undici-types/index.d.ts","../../../../node_modules/@types/node/globals.d.ts","../../../../node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/@types/node/buffer.d.ts","../../../../node_modules/@types/node/child_process.d.ts","../../../../node_modules/@types/node/cluster.d.ts","../../../../node_modules/@types/node/console.d.ts","../../../../node_modules/@types/node/constants.d.ts","../../../../node_modules/@types/node/crypto.d.ts","../../../../node_modules/@types/node/dgram.d.ts","../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/@types/node/dns.d.ts","../../../../node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/@types/node/domain.d.ts","../../../../node_modules/@types/node/dom-events.d.ts","../../../../node_modules/@types/node/events.d.ts","../../../../node_modules/@types/node/fs.d.ts","../../../../node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/@types/node/http.d.ts","../../../../node_modules/@types/node/http2.d.ts","../../../../node_modules/@types/node/https.d.ts","../../../../node_modules/@types/node/inspector.d.ts","../../../../node_modules/@types/node/module.d.ts","../../../../node_modules/@types/node/net.d.ts","../../../../node_modules/@types/node/os.d.ts","../../../../node_modules/@types/node/path.d.ts","../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/@types/node/process.d.ts","../../../../node_modules/@types/node/punycode.d.ts","../../../../node_modules/@types/node/querystring.d.ts","../../../../node_modules/@types/node/readline.d.ts","../../../../node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/@types/node/repl.d.ts","../../../../node_modules/@types/node/stream.d.ts","../../../../node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/@types/node/stream/web.d.ts","../../../../node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/@types/node/test.d.ts","../../../../node_modules/@types/node/timers.d.ts","../../../../node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/@types/node/tls.d.ts","../../../../node_modules/@types/node/trace_events.d.ts","../../../../node_modules/@types/node/tty.d.ts","../../../../node_modules/@types/node/url.d.ts","../../../../node_modules/@types/node/util.d.ts","../../../../node_modules/@types/node/v8.d.ts","../../../../node_modules/@types/node/vm.d.ts","../../../../node_modules/@types/node/wasi.d.ts","../../../../node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/@types/node/zlib.d.ts","../../../../node_modules/@types/node/globals.global.d.ts","../../../../node_modules/@types/node/index.d.ts","../../../../node_modules/@types/mime/index.d.ts","../../../../node_modules/@types/send/index.d.ts","../../../../node_modules/@types/qs/index.d.ts","../../../../node_modules/@types/range-parser/index.d.ts","../../../../node_modules/@types/express-serve-static-core/index.d.ts","../../../../node_modules/@types/http-errors/index.d.ts","../../../../node_modules/@types/serve-static/index.d.ts","../../../../node_modules/@types/connect/index.d.ts","../../../../node_modules/@types/body-parser/index.d.ts","../../../../node_modules/@types/express/index.d.ts","../../../../server.ts"],"fileInfos":[{"version":"2ac9cdcfb8f8875c18d14ec5796a8b029c426f73ad6dc3ffb580c228b58d1c44","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc",{"version":"0075fa5ceda385bcdf3488e37786b5a33be730e8bc4aa3cf1e78c63891752ce8","affectsGlobalScope":true},{"version":"f296963760430fb65b4e5d91f0ed770a91c6e77455bacf8fa23a1501654ede0e","affectsGlobalScope":true},{"version":"09226e53d1cfda217317074a97724da3e71e2c545e18774484b61562afc53cd2","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"8b41361862022eb72fcc8a7f34680ac842aca802cf4bc1f915e8c620c9ce4331","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"b7e9f95a7387e3f66be0ed6db43600c49cec33a3900437ce2fd350d9b7cb16f2","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"709efdae0cb5df5f49376cde61daacc95cdd44ae4671da13a540da5088bf3f30","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"bc496ef4377553e461efcf7cc5a5a57cf59f9962aea06b5e722d54a36bf66ea1","affectsGlobalScope":true},{"version":"038a2f66a34ee7a9c2fbc3584c8ab43dff2995f8c68e3f566f4c300d2175e31e","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"f5c92f2c27b06c1a41b88f6db8299205aee52c2a2943f7ed29bd585977f254e8","affectsGlobalScope":true},{"version":"930b0e15811f84e203d3c23508674d5ded88266df4b10abee7b31b2ac77632d2","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"b9ea5778ff8b50d7c04c9890170db34c26a5358cccba36844fe319f50a43a61a","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"f35a831e4f0fe3b3697f4a0fe0e3caa7624c92b78afbecaf142c0f93abfaf379","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","ecf5cb089ea438f2545e04b6c52828c68d0b0f4bfaa661986faf36da273e9892","95444fb6292d5e2f7050d7021383b719c0252bf5f88854973977db9e3e3d8006","241bd4add06f06f0699dcd58f3b334718d85e3045d9e9d4fa556f11f4d1569c1","06540a9f3f2f88375ada0b89712de1c4310f7398d821c4c10ab5c6477dafb4bc",{"version":"de2d3120ed0989dbc776de71e6c0e8a6b4bf1935760cf468ff9d0e9986ef4c09","affectsGlobalScope":true},"b8bff8a60af0173430b18d9c3e5c443eaa3c515617210c0c7b3d2e1743c19ecb","97bdf234f5db52085d99c6842db560bca133f8a0413ff76bf830f5f38f088ce3","a76ebdf2579e68e4cfe618269c47e5a12a4e045c2805ed7f7ab37af8daa6b091","b493ff8a5175cbbb4e6e8bcfa9506c08f5a7318b2278365cfca3b397c9710ebc","e59d36b7b6e8ba2dd36d032a5f5c279d2460968c8b4e691ca384f118fb09b52a","e96885c0684c9042ec72a9a43ef977f6b4b4a2728f4b9e737edcbaa0c74e5bf6","303ee143a869e8f605e7b1d12be6c7269d4cab90d230caba792495be595d4f56","89e061244da3fc21b7330f4bd32f47c1813dd4d7f1dc3d0883d88943f035b993","e46558c2e04d06207b080138678020448e7fc201f3d69c2601b0d1456105f29a","71549375db52b1163411dba383b5f4618bdf35dc57fa327a1c7d135cf9bf67d1","7e6b2d61d6215a4e82ea75bc31a80ebb8ad0c2b37a60c10c70dd671e8d9d6d5d","78bea05df2896083cca28ed75784dde46d4b194984e8fc559123b56873580a23","5dd04ced37b7ea09f29d277db11f160df7fd73ba8b9dba86cb25552e0653a637","f74b81712e06605677ae1f061600201c425430151f95b5ef4d04387ad7617e6a","9a72847fcf4ac937e352d40810f7b7aec7422d9178451148296cf1aa19467620","3ae18f60e0b96fa1e025059b7d25b3247ba4dcb5f4372f6d6e67ce2adac74eac","2b9260f44a2e071450ae82c110f5dc8f330c9e5c3e85567ed97248330f2bf639","4f196e13684186bda6f5115fc4677a87cf84a0c9c4fc17b8f51e0984f3697b6d","61419f2c5822b28c1ea483258437c1faab87d00c6f84481aa22afb3380d8e9a4","64479aee03812264e421c0bf5104a953ca7b02740ba80090aead1330d0effe91","a5eb4835ab561c140ffc4634bb039387d5d0cceebb86918f1696c7ac156d26fd","c5570e504be103e255d80c60b56c367bf45d502ca52ee35c55dec882f6563b5c","4252b852dd791305da39f6e1242694c2e560d5e46f9bb26e2aca77252057c026","0520b5093712c10c6ef23b5fea2f833bf5481771977112500045e5ea7e8e2b69","5c3cf26654cf762ac4d7fd7b83f09acfe08eef88d2d6983b9a5a423cb4004ca3","e60fa19cf7911c1623b891155d7eb6b7e844e9afdf5738e3b46f3b687730a2bd","b1fd72ff2bb0ba91bb588f3e5329f8fc884eb859794f1c4657a2bfa122ae54d0","6cf42a4f3cfec648545925d43afaa8bb364ac10a839ffed88249da109361b275","ba13c7d46a560f3d4df8ffb1110e2bbec5801449af3b1240a718514b5576156e","6df52b70d7f7702202f672541a5f4a424d478ee5be51a9d37b8ccbe1dbf3c0f2","0ca7f997e9a4d8985e842b7c882e521b6f63233c4086e9fe79dd7a9dc4742b5e","91046b5c6b55d3b194c81fd4df52f687736fad3095e9d103ead92bb64dc160ee","db5704fdad56c74dfc5941283c1182ed471bd17598209d3ac4a49faa72e43cfc","758e8e89559b02b81bc0f8fd395b17ad5aff75490c862cbe369bb1a3d1577c40","2ee64342c077b1868f1834c063f575063051edd6e2964257d34aad032d6b657c","6f6b4b3d670b6a5f0e24ea001c1b3d36453c539195e875687950a178f1730fa7","05c4e2a992bb83066a3a648bad1c310cecd4d0628d7e19545bb107ac9596103a","b48b83a86dd9cfe36f8776b3ff52fcd45b0e043c0538dc4a4b149ba45fe367b9","792de5c062444bd2ee0413fb766e57e03cce7cdaebbfc52fc0c7c8e95069c96b","a79e3e81094c7a04a885bad9b049c519aace53300fb8a0fe4f26727cb5a746ce","dd6c3362aaaec60be028b4ba292806da8e7020eef7255c7414ce4a5c3a7138ef","8a4e89564d8ea66ad87ee3762e07540f9f0656a62043c910d819b4746fc429c5","b9011d99942889a0f95e120d06b698c628b0b6fdc3e6b7ecb459b97ed7d5bcc6","4d639cbbcc2f8f9ce6d55d5d503830d6c2556251df332dc5255d75af53c8a0e7","cdb48277f600ab5f429ecf1c5ea046683bc6b9f73f3deab9a100adac4b34969c","75be84956a29040a1afbe864c0a7a369dfdb739380072484eff153905ef867ee","b06b4adc2ae03331a92abd1b19af8eb91ec2bf8541747ee355887a167d53145e","3114b315cd0687aad8b57cff36f9c8c51f5b1bc6254f1b1e8446ae583d8e2474","0d417c15c5c635384d5f1819cc253a540fe786cc3fda32f6a2ae266671506a21","af733cb878419f3012f0d4df36f918a69ba38d73f3232ba1ab46ef9ede6cb29c","cb59317243a11379a101eb2f27b9df1022674c3df1df0727360a0a3f963f523b","0a01b0b5a9e87d04737084731212106add30f63ec640169f1462ba2e44b6b3a8","06b8a7d46195b6b3980e523ef59746702fd210b71681a83a5cf73799623621f9","860e4405959f646c101b8005a191298b2381af8f33716dc5f42097e4620608f8","f7e32adf714b8f25d3c1783473abec3f2e82d5724538d8dcf6f51baaaff1ca7a","e07d62a8a9a3bb65433a62e9bbf400c6bfd2df4de60652af4d738303ee3670a1","bfbf80f9cd4558af2d7b2006065340aaaced15947d590045253ded50aabb9bc5","851e8d57d6dd17c71e9fa0319abd20ab2feb3fb674d0801611a09b7a25fd281c","c3bd2b94e4298f81743d92945b80e9b56c1cdfb2bef43c149b7106a2491b1fc9","a246cce57f558f9ebaffd55c1e5673da44ea603b4da3b2b47eb88915d30a9181","d993eacc103c5a065227153c9aae8acea3a4322fe1a169ee7c70b77015bf0bb2","fc2b03d0c042aa1627406e753a26a1eaad01b3c496510a78016822ef8d456bb6","063c7ebbe756f0155a8b453f410ca6b76ffa1bbc1048735bcaf9c7c81a1ce35f","748e79252a7f476f8f28923612d7696b214e270cc909bc685afefaac8f052af0","9669075ac38ce36b638b290ba468233980d9f38bdc62f0519213b2fd3e2552ec","4d123de012c24e2f373925100be73d50517ac490f9ed3578ac82d0168bfbd303","656c9af789629aa36b39092bee3757034009620439d9a39912f587538033ce28","3ac3f4bdb8c0905d4c3035d6f7fb20118c21e8a17bee46d3735195b0c2a9f39f","1f453e6798ed29c86f703e9b41662640d4f2e61337007f27ac1c616f20093f69","af43b7871ff21c62bf1a54ec5c488e31a8d3408d5b51ff2e9f8581b6c55f2fc7","70550511d25cbb0b6a64dcac7fffc3c1397fd4cbeb6b23ccc7f9b794ab8a6954","af0fbf08386603a62f2a78c42d998c90353b1f1d22e05a384545f7accf881e0a","c3f32a185cd27ac232d3428a8d9b362c3f7b4892a58adaaa022828a7dcd13eed","3139c3e5e09251feec7a87f457084bee383717f3626a7f1459d053db2f34eb76","4888fd2bcfee9a0ce89d0df860d233e0cee8ee9c479b6bd5a5d5f9aae98342fe","3be870c8e17ec14f1c18fc248f5d2c4669e576404744ff5c63e6dafcf05b97ea","56654d2c5923598384e71cb808fac2818ca3f07dd23bb018988a39d5e64f268b","8b6719d3b9e65863da5390cb26994602c10a315aa16e7d70778a63fee6c4c079","6ab380571d87bd1d6f644fb6ab7837239d54b59f07dc84347b1341f866194214","547d3c406a21b30e2b78629ecc0b2ddaf652d9e0bdb2d59ceebce5612906df33","b3a4f9385279443c3a5568ec914a9492b59a723386161fd5ef0619d9f8982f97","3fe66aba4fbe0c3ba196a4f9ed2a776fe99dc4d1567a558fb11693e9fcc4e6ed","140eef237c7db06fc5adcb5df434ee21e81ee3a6fd57e1a75b8b3750aa2df2d8","0944ec553e4744efae790c68807a461720cff9f3977d4911ac0d918a17c9dd99","7c9ed7ffdc6f843ab69e5b2a3e7f667b050dd8d24d0052db81e35480f6d4e15d","7c7d9e116fe51100ff766703e6b5e4424f51ad8977fe474ddd8d0959aa6de257","af70a2567e586be0083df3938b6a6792e6821363d8ef559ad8d721a33a5bcdaf","006cff3a8bcb92d77953f49a94cd7d5272fef4ab488b9052ef82b6a1260d870b","7d44bfdc8ee5e9af70738ff652c622ae3ad81815e63ab49bdc593d34cb3a68e5","339814517abd4dbc7b5f013dfd3b5e37ef0ea914a8bbe65413ecffd668792bc6","34d5bc0a6958967ec237c99f980155b5145b76e6eb927c9ffc57d8680326b5d8","9eae79b70c9d8288032cbe1b21d0941f6bd4f315e14786b2c1d10bccc634e897","18ce015ed308ea469b13b17f99ce53bbb97975855b2a09b86c052eefa4aa013a","5a931bc4106194e474be141e0bc1046629510dc95b9a0e4b02a3783847222965","5e5f371bf23d5ced2212a5ff56675aefbd0c9b3f4d4fdda1b6123ac6e28f058c","907c17ad5a05eecb29b42b36cc8fec6437be27cc4986bb3a218e4f74f606911c","3656f0584d5a7ee0d0f2cc2b9cffbb43af92e80186b2ce160ebd4421d1506655","a726ad2d0a98bfffbe8bc1cd2d90b6d831638c0adc750ce73103a471eb9a891c","f44c0c8ce58d3dacac016607a1a90e5342d830ea84c48d2e571408087ae55894","75a315a098e630e734d9bc932d9841b64b30f7a349a20cf4717bf93044eff113","9131d95e32b3d4611d4046a613e022637348f6cebfe68230d4e81b691e4761a1","b03aa292cfdcd4edc3af00a7dbd71136dd067ec70a7536b655b82f4dd444e857","90f690a1c5fcb4c2d19c80fea05c8ab590d8f6534c4c296d70af6293ede67366","be95e987818530082c43909be722a838315a0fc5deb6043de0a76f5221cbad24","9ed5b799c50467b0c9f81ddf544b6bcda3e34d92076d6cab183c84511e45c39f","b4fa87cc1833839e51c49f20de71230e259c15b2c9c3e89e4814acc1d1ef10de","e90ac9e4ac0326faa1bc39f37af38ace0f9d4a655cd6d147713c653139cf4928","ea27110249d12e072956473a86fd1965df8e1be985f3b686b4e277afefdde584","1f6058d60eaa8825f59d4b76bbf6cc0e6ad9770948be58de68587b0931da00cc","5666075052877fe2fdddd5b16de03168076cf0f03fbca5c1d4a3b8f43cba570c","50100b1a91f61d81ca3329a98e64b7f05cddc5e3cb26b3411adc137c9c631aca","11aceaee5663b4ed597544567d6e6a5a94b66857d7ebd62a9875ea061018cd2c","6e30d0b5a1441d831d19fe02300ab3d83726abd5141cbcc0e2993fa0efd33db4","423f28126b2fc8d8d6fa558035309000a1297ed24473c595b7dec52e5c7ebae5","fb30734f82083d4790775dae393cd004924ebcbfde49849d9430bf0f0229dd16","2c92b04a7a4a1cd9501e1be338bf435738964130fb2ad5bd6c339ee41224ac4c","c5c5f0157b41833180419dacfbd2bcce78fb1a51c136bd4bcba5249864d8b9b5","669b754ec246dd7471e19b655b73bda6c2ca5bb7ccb1a4dff44a9ae45b6a716a","4bb6035e906946163ecfaec982389d0247ceeac6bdee7f1d07c03d9c224db3aa","8a44b424edee7bb17dc35a558cc15f92555f14a0441205613e0e50452ab3a602","24a00d0f98b799e6f628373249ece352b328089c3383b5606214357e9107e7d5","33637e3bc64edd2075d4071c55d60b32bdb0d243652977c66c964021b6fc8066","0f0ad9f14dedfdca37260931fac1edf0f6b951c629e84027255512f06a6ebc4c","16ad86c48bf950f5a480dc812b64225ca4a071827d3d18ffc5ec1ae176399e36","8cbf55a11ff59fd2b8e39a4aa08e25c5ddce46e3af0ed71fb51610607a13c505","d5bc4544938741f5daf8f3a339bfbf0d880da9e89e79f44a6383aaf056fe0159","c82857a876075e665bbcc78213abfe9e9b0206d502379576d7abd481ade3a569","4f71d883ed6f398ba8fe11fcd003b44bb5f220f840b3eac3c395ad91304e4620","5229c3934f58413f34f1b26c01323c93a5a65a2d9f2a565f216590dfbed1fe32","9fd7466b77020847dbc9d2165829796bf7ea00895b2520ff3752ffdcff53564b","fbfc12d54a4488c2eb166ed63bab0fb34413e97069af273210cf39da5280c8d6","85a84240002b7cf577cec637167f0383409d086e3c4443852ca248fc6e16711e","4c754b03f36ff35fc539f9ebb5f024adbb73ec2d3e4bfb35b385a05abb36a50e","59507446213e73654d6979f3b82dadc4efb0ed177425ae052d96a3f5a5be0d35","a914be97ca7a5be670d1545fc0691ac3fbabd023d7d084b338f6934349798a1f","8f62cbd3afbd6a07bb8c934294b6bfbe437021b89e53a4da7de2648ecfc7af25","62c3621d34fb2567c17a2c4b89914ebefbfbd1b1b875b070391a7d4f722e55dc","c05ac811542e0b59cb9c2e8f60e983461f0b0e39cea93e320fad447ff8e474f3","8e7a5b8f867b99cc8763c0b024068fb58e09f7da2c4810c12833e1ca6eb11c4f","132351cbd8437a463757d3510258d0fa98fd3ebef336f56d6f359cf3e177a3ce","df877050b04c29b9f8409aa10278d586825f511f0841d1ec41b6554f8362092b","33d1888c3c27d3180b7fd20bac84e97ecad94b49830d5dd306f9e770213027d1","ee942c58036a0de88505ffd7c129f86125b783888288c2389330168677d6347f","a3f317d500c30ea56d41501632cdcc376dae6d24770563a5e59c039e1c2a08ec","eb21ddc3a8136a12e69176531197def71dc28ffaf357b74d4bf83407bd845991","0c1651a159995dfa784c57b4ea9944f16bdf8d924ed2d8b3db5c25d25749a343","aaa13958e03409d72e179b5d7f6ec5c6cc666b7be14773ae7b6b5ee4921e52db","0a86e049843ad02977a94bb9cdfec287a6c5a0a4b6b5391a6648b1a122072c5a","87437ca9dabab3a41d483441696ff9220a19e713f58e0b6a99f1731af10776d7","26c5dfa9aa4e6428f4bb7d14cbf72917ace69f738fa92480b9749eebce933370","8e94328e7ca1a7a517d1aa3c569eac0f6a44f67473f6e22c2c4aff5f9f4a9b38","d604d413aff031f4bfbdae1560e54ebf503d374464d76d50a2c6ded4df525712","299f0af797897d77685d606502be72846b3d1f0dc6a2d8c964e9ea3ccbacf5bc","12bfd290936824373edda13f48a4094adee93239b9a73432db603127881a300d","340ceb3ea308f8e98264988a663640e567c553b8d6dc7d5e43a8f3b64f780374","c5a769564e530fba3ec696d0a5cff1709b9095a0bdf5b0826d940d2fc9786413","7124ef724c3fc833a17896f2d994c368230a8d4b235baed39aa8037db31de54f","5de1c0759a76e7710f76899dcae601386424eab11fb2efaf190f2b0f09c3d3d3","9c5ee8f7e581f045b6be979f062a61bf076d362bf89c7f966b993a23424e8b0d","1a11df987948a86aa1ec4867907c59bdf431f13ed2270444bf47f788a5c7f92d","3c97b5ea66276cf463525a6aa9d5bb086bf5e05beac70a0597cda2575503b57b","b756781cd40d465da57d1fc6a442c34ae61fe8c802d752aace24f6a43fedacee","0fe76167c87289ea094e01616dcbab795c11b56bad23e1ef8aba9aa37e93432a","3a45029dba46b1f091e8dc4d784e7be970e209cd7d4ff02bd15270a98a9ba24b","032c1581f921f8874cf42966f27fd04afcabbb7878fa708a8251cac5415a2a06","69c68ed9652842ce4b8e495d63d2cd425862104c9fb7661f72e7aa8a9ef836f8","a31383256374723b47d8b5497a9558bbbcf95bcecfb586a36caf7bfd3693eb0e","06f62a14599a68bcde148d1efd60c2e52e8fa540cc7dcfa4477af132bb3de271","64aa66c7458cbfd0f48f88070b08c2f66ae94aba099dac981f17c2322d147c06","11f19ce32d21222419cecab448fa335017ebebf4f9e5457c4fa9df42fa2dcca7","2e8ee2cbb5e9159764e2189cf5547aebd0e6b0d9a64d479397bb051cd1991744","1b0471d75f5adb7f545c1a97c02a0f825851b95fe6e069ac6ecaa461b8bb321d","1d157c31a02b1e5cca9bc495b3d8d39f4b42b409da79f863fb953fbe3c7d4884","07baaceaec03d88a4b78cb0651b25f1ae0322ac1aa0b555ae3749a79a41cba86","619a132f634b4ebe5b4b4179ea5870f62f2cb09916a25957bff17b408de8b56d","f60fa446a397eb1aead9c4e568faf2df8068b4d0306ebc075fb4be16ed26b741","f3cb784be4d9e91f966a0b5052a098d9b53b0af0d341f690585b0cc05c6ca412","350f63439f8fe2e06c97368ddc7fb6d6c676d54f59520966f7dbbe6a4586014e","eba613b9b357ac8c50a925fa31dc7e65ff3b95a07efbaa684b624f143d8d34ba","9814545517193cf51127d7fbdc3b7335688206ec04ee3a46bba2ee036bd0dcac","0f6199602df09bdb12b95b5434f5d7474b1490d2cd8cc036364ab3ba6fd24263","c8ca7fd9ec7a3ec82185bfc8213e4a7f63ae748fd6fced931741d23ef4ea3c0f","5c6a8a3c2a8d059f0592d4eab59b062210a1c871117968b10797dee36d991ef7","ad77fd25ece8e09247040826a777dc181f974d28257c9cd5acb4921b51967bd8","2a25d0b3b0c0d5aa9a70635ee33a96f7e0bec5801386954c30680895b214c933","140500c8700a92c38e83d4fd45ac8286a253196956eec51421972e545a4ebb98","071bb591c12282944182a8f6deb88db0e40cbac7865440d884ffcbd2c22a71e1","a13adf241eff1ea22356848130ec6f1a50ca1ec1261a8c16d9cb8e395316462a","2e04efd4f8cf3f3e7feb461b3c43152de857800f52ec0b0abfc23e3f505e5781","ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","40108ecf79f6e648c451725e01a462ee234a5e90d40430b14744728a334042bc","ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","f9b8fedff6c1b0e53221b7890999346cf22f3ffe5fae4e94438530e8e131f5ac","2a7e6241c05770b21ac324f8d6162f53d54f2278cc532a90d21ad7f3c9d6d5f2","1401c9b5b14a8ed7c26f0a504904e1e14bd98b6cbfa4789b0c58eb4ed3e0c799","cccbd41eadd9eb95b06ae129f9fdc2bd97af2fb74edaa4d0feb608488ae0b358","7f8d4c66991cc8beabba3f6cd41c95a083be5f26216ec602b9d0dc7041e04e52","6b443897b39aa381a121d5ed377dc116a6bfc00bcedd069c1406a813dcb4252b","79df8ad48f1e6dfc725f12370cbef8368dd0270bc5c509b2d2100eb62bd32d92","3eac1a527c1a699a01c80aefc247faab8f6fc57b8a18c5dbb50fe7ac9b40de3f","5efc06564f1cf26ef2368c78efdcff70bc62bca08318b02323e2a8b08aa0f608","c62dd22be9abc5c964da33d130b00c4161d7701b8061120b0bd0acf523c42bbd","35aab9cfabc7fad736427e2ed3876257d20cb0826a6c5772401f70b624490d73","5bd166ebcd6c1cb758e70b1866ada6ec23fcaef8633107563ed3ebf95608a2dd","ab470f41a5c3d537b6fc6dd97824ea42f19df285dd2730e22a03f4140eb6a7b9","bb5748a92eed1968ba874b09fe4443a862bf83dd4454aa413a82a6bddf1a629c","e467429b5d588a6cdcb76587d8538ff1e88c6a574c7855029b99e9faa81502a7","b1e513cfe8a71d242ebdca2b04edb7c33624a5e46e3f72c7387478537144ff3b","2ce9f335f847338d25e74b6a800dfa460d1c02959f9d837052e7d47d0396c1ae","a2ec3c64e012294320eca1e860a234abc98f891a25cef5b92d8240601b89ae9b","a4f0485fd9c6133d2cf6574b70288ea49f4544d8fe6da2e367e0702b030c4fc4","ba5e4c01dfcd9c3e1a84ada9a6f9547ebfcd9bf76fc1e0f8250aa63112d410b5","829ccc49b6d32f39fef37a4f3cd964df11439719cfd05a633479bbd4a8116227","4100aee047b0ae7d2314abeba45180b11e396e2b77839c8a701776924ab748b1","9de4f0200c0a6648bfd081cd08b13039f8a89296943ef689ff708bb85d348b1c","f4bbdd4ab3199fc9ce2589211af7b6fd4ed6cebf0088599a6fecc4d11f6a9136","bcd04a5a0a86e67dda69b13b12ce66132863f9730de3a26b292729272367541f","2d86a6efd9a3924bd088c2e14a38bb584c2afd1833ddfb45e9a4a711869c4903","a11ba77c32b76a5d3bfbed16ed4bcdc321f3374e2a0f8e8ea5ed7704b5c3ba0a","3d21cfae4c52397c19fc6cb4decfc839e41532d00c6d4264b730e747022ab15e","6b67105ed49975c125f4472161bc996c19564b8eed07d67d762b0bd3a2cdba56","d85333b813aa0175226d8736c8320037fdf2f7f19afd1c553f9f05196116bf1c","3e7d04c9c7a4a8966226eed8fd1bd12462368914d2157460a06fd775dbefa0cd","5c445c08257e713b5bfe67eee956a5befe88be9a05b1534275e5265aca6eb896","82a1d9f11bbccdab1911e55017c45b723aa6c3a5c5da785f14ff9aa2def55514","3bd88eac730cafb5ee35b5ae13ded04c7821d949c34b5849238bd5c026311ebf","8dd98bf3983a25cdb076d31d5a6b4b18039d463e2c0e23b7307384c4edb5ead6","9c8cf5aa465386f10353efb80823dbed51e0d0196565f176c8111cc6026688b6","91e6bca66381ac9a853e5483050f7835d094fa0bfc0c5544d9b2519411b86706","57133d9d582a4f4fd436a33f0f42e682b1d39d69c5d9a5adad5d7e369c248b98","ef7990368a6a8c09ec4dabe518d15978718013846e6ca18523c2c283b9bc74ab","1fd6fea9b14ffa264260465cbb09991d42da07c6f95235e85bc1281d93e2ad08","fc8db740d2a63c970b913f2969f5ae4b8997deb46c337b8a11a81c03068360ea","9ca73f6ee630cecd2179636661e7b19094370b6851875dfcb6f80132f5c3a387","c60fbfe5d019ce9b911a4ccfcfa9e5229dc9fb1e67cb78495518b08490ac913d","f5e15285963a3485170f709701e8a0a867d637a0ba8ac75ba92a48b4b6c05afb","51cf45d64866a264925a9eeb41713bb427101c11f99e93defb3e72658c4af803","cbc60fb36a57868c4387e622948c3ada0b2953a9f1648e7178690ea37be380f6","b4e6ef7b866196bf46009551a7dd2b01300f95917f24d58d004eb72be6432553","a3dd80e71a8239407f2d906d1d838f45db15a1e433142334b1616fb1f74afdbf","fad4dab531c4e5c79f783f2d59aa4c695a9142be27c451462481f6531b7aaa4b","2e7768cb0e8204575fa0f1488d3d31ac95f2d5e920838c1df16fd34149807aff","c344ba0d586fb697b66bc665bd8d0b35e128b6baa5aca93a0b4c55a6fc9bd210","c2641084cb01af256e9c17fadf95749e6999d1a51259aa543111ce18d2ce133d","62f01f1e1ec4144979d99b918d3cbe443d14b4d8fe6d390e1e44549e9a217489","0c9d432c1c1c69cbdfc63f578b5a6bcd3a06c5be803c26a4b297b57f1da2312e","eec0fd4c7832b9d121698c7ee244bc98cd197a6ee42534d486cd9574eee40a0b","7ecea4c9a6cdd58e40a1f256acfd5a5c4b00e5adf7310f71a660bb2c4d1f7c23","cafa24b3e301a16117e5494de3505a8827c40849fe921b1f75a11f79eeb74ae3","ef32a2c8f06426f20a08d801238e167e9155a8341d1177a7446077be50c8a63e","ddf66648b065311cbc226d6585caa14b37f461698d525857aff60c988b66a6c9","c7e95e3e3988837ae5dc96a6f8b1360de33aaffe12be966418a7e00c8fc7f6c9","7172d4edfc661bc427a1b0f16cfd0261f5255a5a96f3c5add90eca4cf5c4eb1a","93b9f9aac69e01179892697a9d7dd1582f68582ddccc31e94d2c87f063fc700a","9982b7049712023c649e877e6812e2e06ed9249296f2a2d3b51d917f244be4c4","0b8f8981fa81638ca5a3d10174cfc199038b168cb3e7ac4548803f96a0d39d82","516160edba90fe695dabece2f2061b1f4410e1918e9e7d0d57c61c9ffafb3a5e","395981256c3a1af362058fe97f7195d44ec3443260b96766649e6f4d85513b42","6a26538b86e3044028bd01bba54f4efc5c62a7595f96191834513f506109df74","a6c6c2e81efb6c03547bcbe8b09b2a94f0f7f5ec3234cc2123bebe7487749c83","bdec7c3a64765eaace37f2dbf32944f26cec6a8cee4d5b77ae4d07c90e6fc970","d537ee66e2554c96c63ce60caf28076a7478bb34cdd8f88809abeca7931862c0","91252869322804ff931952f9a4c12301681f0728ffc2e574d7c858d04fb54a6d","86de9d676578eb21786318470077f0764a0d2669b032bcf463397142a1c9a163","0aa40ede23b85ee78889e97ae8fec583dafa733b32d269d5928911f62600219c","50a28aa624aba5300de078cee97311cd1da1bd2a9f936493c423e34b96dd9a0c","a9db178b3a5707bd21d051cb626988b29b61baa60d212d4d0fe90b62c7d58716","7ecf0b80eded1937eecbddb36f20cb2d7144fd430d5b1d25a1855207a0fcd381","c88ded4dc1952ec6f5f56b398dff49eb07b8a2838cbe5f0e9cc7553d74236685","845a152b65ac30d47142fbbfa19c73c7d849a0a9232b01589ca847cb96d74c16","28ff71809d8e0194822b92fcaffc2a4f22e56603e0e5fcd6f286fc5b2398c1b0","0d8fad4fc16a5a0f5568e4ff597e5c9556fe2a1c942d6bb84fa8dc228f9bfe14","868be3b56c220bf33cbd7fceee7818aec5d4bc2e0e49a382ea1a53497c4933db","fda33341c6373ec91c0c4b1ab8af633cf7da2a9848aa797997ec2351285e5178",{"version":"ffed33e0ea42887ea82d6cef263b736da8e4994b1bc3c7354ceeeecd75d51743","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},"47f84f10b9c759f75c0a9ecf8f367baf4995c4fe018228391cb65e689ba46cf0","9294e09a3396e7adb3470248873caec3de1d771bf2d233fa5bab1b150870a6fa","c28b8ec18d8fc89d4117d18c278a850de5a29cb3147195489709bdfa1474dc5c","4fb47e3c233f3597f6543977f8d2af03d350c0a6a3483176be2550606cf8202e","a9d0ff42c7dbf3edb3d2bfaf0ec9e6921f97f0a9de070852a985fedfa35e48f7","42453b0f1789cd76ab9b9fed3ad6acedf70ba10c7d0dc6c40cb95951db618d6b","a845229f3a271bc00e95882a44e74f2dda5551e399bbbc066d6ef508eed99916","06ea97d41486ec229c47a5e16144e373e2fffd4a26181a987338ab13d189efb4","1c24693cb55fb0478c6b446ed9d5ba4e076139601a84fc16717987b974077b44","91514ad47ab59e654f4a71943fc6ddf477b06f821fc04ff698e7340ecaedbac1","35653f4b93ee91e2220f372f6bdb446759e0806df2c2948f3e718424161a688c","9c2db9c634f77374074ba35536c510d7abee72b748c6f584254acecc3d9a06b5","fd2b097c9361b5a9910b56e0805a38ef62cb09af726fcc0002b7a993b7838f22","6f42db9e79ef2f8f75b792eebb389950497a58cfe1932acd09b09bd256acdf58","3ac44a422e919afdc3e21a9b4d626673172e18b76b97f730f8d4c0bfa6411565","a433c2f564a3c941eb05cbc41caf7c0d55c0d3c4a86d3e6db793a83dd4ac1599","af62115326b735db1b0ffaceda6fda2e1dcbbb14c5d752a99323d4a65b8a4198","aa5faf80aa97adbf6767faf1c28df7ac42aaaa8ca1066d7e03bc64a1cdb0056e","ca0fc466697d8a2252e0f721b1a88fd165fddd73497c1859491035aa61a0cebd","6f1c5a6ae31084488f48fc78f8acdc9f17b0833004102a9e1c8ad405335a2777","7b04f9659dceea386d3e7a71417a88636cbf7942b0cf313a973db9e79fd4011d","a60d106fc617d5a4ef1d784b430847d270ea334fe2531ae2a4c06c6cc15cb614","d2d9657fb39bca36caecb3d9d08e8197cbf639e6e33b661131fd656f3ea15b1c","e3a60f48af0a29cfc9238f1e2a8fa21624f1c8f80150814c2f6489934dd9c889","b4e723b6cebfdab805a6d63f9127cdc8d6c310993ea2503523247095f973d4ec","7f5b3c5d1485d10d9f6bb1e48b6467331688d23a7fbc4257664a78e971cf9985","60ca9978647761b3c40c18068a1aaa8cd477899dc92df68b4f2e1e92c4d9b8e1","1e218fb115c7f697af3fd2b276ffc101ead9cbff02a69779123c24afc6b8cf9d","c54217bffbff1434b1f05c0abd161e315f2cca16ceb2274077348a789f914f67","b6f843360b25e775baaca51ea2a574fa18fd59294998925ea720fa95b44134c9","503408eaf5058213cba791a6b7d06b66aa5538872131316283335e0afa90f8c6","31781da84adf99ff7412d91c3b592854f4c13685bbc85f781fbd5bb08bf8cb0c","75aafd13ea88e55ac6bbe55813ba03ecaa31b0d7d8128f3959108cb4f91c1ea5","89b2af233f8878bf95ecb8557b39d18ca821c6aca5273044a1d9496a4aa1ec33","a31dc99e8a4fa673b3e4251c6e5d741572af7936dca59978eba45817114f23c5","fe2e77e59c5bdb8fc8ba9823d21b3b21960a5702dca86e82c097065860f14b25","5634484f094491a24dfa775e2be5d6304b4517fbc54065e7ae4e6589b9f46563","d18160b08927fbc0370511df6bf3c6147fb472a8c2638f82096ba4b92aee8103","d75b6926bb6986e3319419943ae6660d487f483a8995aa1489a47046a387cb0e","d301931e78a7bf83720b67937598beaf2fa1604b6dfeb24d256881ab439c717b",{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"b9bca31471abd55f6bf648641a3267c7176ab0052de43ef614646284809c3990","signature":"8fff57dfffe7f0bddd41267bbbcb9034d0f836c7cdfbbe3d998dbda9851b7538"},"77461e08bea619444df98b1e404a4eee2320ff30e7db7e657db70a3c799ca1ae","b1b98a42f3f6de2b9661cb1dae8f6a3bc514533d11ba54efd531e09adcac5d6f","5e5e278a6c6fe064c0ff74094f13d09a9608b8ea49c8ad06b37b457e5c822f21","d4b09a3550aae362905da95d0120246ff166dd5fa63a0a5faa069761484efc1e","bda9470a90487aafeda418220fa98d8c58f2d0764d5f25f517dd8734ee9774dd","73e31e7ab4cf17f89c7c3f9118282b871ebf8c648205c2b684ce3c6b1ab8dd38","506ef97ba37c3153a83c53aa742b8bc271e295e68a7f7f3015db7770696a17a3","c7133873697db1e243d43b206b6ec01b961793bd94b0285ad1621565e10825eb","b5782eecab1e0c4dc090000bffe710cfe76649d3c4480eaa142ca8a8e5eafa24","e7d5b3fe910be641ad98b54072c90423a90d285108b1aa0fb440b27bb31bd0ed","eb698b0678be92d270fa5ca69c70c374e0c9b772493c1131a383113ca8816e41","a46345bb2e9bc9d4997808442d6b6000764bea01e82c5097b8d32bce1a29ad06","1795d21b51b716119ec2ab8358c6161f39f039b95489e2964331a0fb3fc2fb91","5c0280f649695c072e81977028ffdb862d696ae3e2a291457784ad65407dcf45","a80c0352e00303ff7024dc349b538b3be352e425ee7774e4c699379359fe0cfa","6fd3d7ca0eee74a1fdd80cbf29a1fc65d8d187e0b53c2478dc7a257fdea7ad14","c2e0b5c4fea9d7356c237f123c25def45a91460155e9bde4d2bf54b7bde6fef8","3e458159a6f8b1fdc6abfc84d64e922547b5c29a59e8bf1024848dcfa350eb01","4564829f496d3b88a825693afe441f4d64c342487e7b2b3e27cd81edd2865b6e","a565a3f0158a047840f6057866a28369791df2d3868389166db88d05cd73f0ad","664c4264d4ff2df0fcc2215e3b4ed49a1ad4991a60999c2025fbe0d81637c443","ec3ceccf5b3a0b7aa261fbe09fb4a88199f193de54c6578490e6f6c949e7b182","6df84c050f9b624825247c3a35b27b90005b40dd61ce395bba26b08a86da0173",{"version":"9b7d4e335757e73864bb8c12c4e41231313ddfc66016f6efbebc441adde9ed4d","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},{"version":"3c2af37a741e9b008aca4862ee81849753f870ff3f43a1921e982f32970f7bcf","signature":"101e579eb19f10045cab5eb436804e03b315faa6a08c303017424f53e71d89d5"},{"version":"04e8a1111721e17c382d8cf08912558f0031500325c38d459ea6ed4ca35066ed","signature":"5e30cba15886757c7ef704ba5204a316e3fcf1077cf3391589a0abfb834548f3"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"1139f32dae7d552a6debc96d36389108606f8dabb4fb6c313d8f9ca0b0ebf96b","signature":"f347a3f9f9105a8c6a5e34d17ff8a2b28cef41c774b68f2e3e868312ab8428ba"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"4ee3bf01747944bde62be7db61a11a23575475f8e540cfcec24ce326da318948","signature":"22acfb60e12c9e194f5e66c2a7c2cc5bbaf83857aecb053b1cdd53efdbc8288e"},{"version":"69ce9796b121256de68180643d8f418b5551fc17c6e37be0a8615b2b73fb064a","signature":"877c71e6a7dc8bcb1ca727453f53cbca541a55562e3600f0f0de42d325a3212f"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},"f9f3f98dca5ea378cce212d4cd89733ec2d976c6da66b4c75f33f5bc1093d2f6","30f1c7606e663da2fcbb7a040bff88a163812d2ad5e3895479e8470b58f07c0f","10140f9820b668e6bf65d747437068df02a9f6e994e55e4c6422259ecee084b3","4e36ea5aee2a66e82249367d813966b0916097cf9ea420349036c6fbef4146c0","495114c33cf472e7fb7d1a423b5fd75427fa82bfe6c2807a99ec373bed518d72","3a8751b6fd22b4dd21e04fd1a61512bcfe8a0600c33c6b091b0d95e814e7b177","d94a6011e6638c44150188268695489a332214b3835b3697ddbd78fb062d9dd0","4531c4e014df4d29708e55174bdf64520323dbb9254e2034b5b8f6e9490d97bf","573a6f2379b3f6d5e7fc36e691e34600ebb8ab0a6bd2682b96d9721b1a8059d1","15e2c5015d44a2b55df5eeba50dae228f404c7daf8910a50a8bfb159f63ab9e6","73c8b895ae734fc095273ed81f6e2ee2108c9268626bc9bc295ef72b3a1ce8ef","8639d3940e64e07c47579793f7c4add0422cc985e9f2cb0e9579f81f149504ae","e3cd075e7df0038318e173732a8d326f6cd040da92045a78af1140f9261f2568","d5499fb1feedc46b53f0e77c7201a24bcaba04a6bf9ce11bf0a2b96c32f10a68","85fd3e2ca5bd2381e08e45c370af340bf4308c9039a40d37cc250185f91eb330","6b136cfef6ac0e1cfde0ea2fd4d1c17c022c5b3d51592dccfb3b56353c2e6b1a","97babe2c3c84a74019559529a296f94a2d0e84356ffb837f2d3d653da6de1fbf","429349e6b779053c191cb29b12bae9f06d0970571fe47ead5d8ddc588f23818b","fda3da7aa15d73fa44ac99822f31bf4767a576db7c726291317d876e7846b937","36ee3b67458d308f7f75f8a8907e41b4a269de73c84c354935332af87797921d","b46e6db5aa43eabb567741d2dc92ca5eb9f0fc368357ebec02c42c8ebb4b14e3",{"version":"d204bd5d20ca52a553f7ba993dc2a422e9d1fce0b8178ce2bfe55fbd027c11ae","affectsGlobalScope":true},"f2d2d91de69fce66ae234019bf19498a996db213872fdc93b156d10eeff5a024","b3a98e8b67d802052c0ad867922743c87cda4c1fc53ae47faed880917f316022","0700aa0e353f816c408d4397cd77ef1509342588f45b65d9d3d616f421502f60","7f4f21af940c59c8f73d432c2a1c33084a861e9af63051ae0995d7bc36a87083","47db7253e3a5b0751035de3a5cb7781ab69885f82021ce5829aeacc9dc3f800f","5a22bf3611194a0d76884b3db71ed6ce1b187784cc6e82eb640f6f90615d2ac7","10a98655b5004f205d644bcdf76dab8fb3a24e9b4d16c6a662646c505d063ab5","e91c0d18807b1554682e1b6e1ab4b1163c2a7bd0e7bf0e1db95a5f370dc88521","12d55621010f9bbf7c3f350ce2ee65196e1868831f7e6cf72662f9c56ef3de6c","8834542917db95340d2f54a5da2cc4dafa2d6fea37d66707c9ba2c0fbd65ac56","1e38e79884cbd440fefc5af70b3d39e12cd9fb2e91bfb0c6d547b4347996e723","d68b8f1244eb6ad752dc795c9ce124bb50eddc2558179ae5610d100e7b5b814c","bfcecc03930b4a53ea87fe95683e4f1a6a0dde7381681ad48097c6ff76a54102","95b40beddb339052d70695b5d92bf6dab9a9c6217094328391901f57501de42b","7ae9bdbc119d322babb1805ccc2d3c6917b9eb5835749a2ad88f7ec1f5ee0ba8","25478f7c35c6cc147786fa39aee2ef41f1e9dae95a947f00c9a9f6ff5d8dfc2e","28cac2e4cd57b4a5a21d52af678c33e0f4e59d7429678891a821f198db50a454","5e315f58156c203360b5925dc469f830a13d83655c42ade472aee07fef269de0","032b5f9e36a973da01d121491ad023656ba756854c9db6c0516e9c336fbb7862","7aa1161bc4ccec053b6c1e2b9e641fdabac7169779cf35fcd54d63212677c288","c5bcfb5b3606412b008f3babe6846b4927e369159916d3e31528882e25587b67","7ae9bdbc119d322babb1805ccc2d3c6917b9eb5835749a2ad88f7ec1f5ee0ba8","3435cec2d6928caab4a2c43ae290a72e34c89682a6a6887f8dff768529a2b8d7","b561cd703ca0b908c800355587c02e0c661156122530a5ca8f38a6f7ca76d9f1","7d09685dced16070e0092e5801dd6ea996ce76ac0df9852604982fcedb31becc","1303b3f08025ede7993a094b1e91e22bcb62758ca6e31a47ccdaed86de34453f","b561cd703ca0b908c800355587c02e0c661156122530a5ca8f38a6f7ca76d9f1","a2060daabf477596c79dd0ff40e7fffdd5f891b452335cf1e2b76e49e9801b49","c4165b29627fca8c10d1abec3e021dbcc1281f08eee0ab95afab821918651958","c4165b29627fca8c10d1abec3e021dbcc1281f08eee0ab95afab821918651958","c4165b29627fca8c10d1abec3e021dbcc1281f08eee0ab95afab821918651958","87f0b178eb55e73830caaee7919ebf1268fb5c40fe47bce767cd2d7629a44717","d8cb69683211b609db45d7d446cf31ef4a9f30ecb1b4583ebfa42828cc613f8e","0d7ac69770bc84f7d1aed70a0f2d82206d149604b5ddf0cbf5ff392406f0f27a","a798d0d15869f63b9f383c5e1265e8d7b5e0f84181d62b0806072e53ad52d6e0","dfd7e342b20e0766f8752179f13d49f9c0f43c4cc1fed9954bdad782651ba902","3435cec2d6928caab4a2c43ae290a72e34c89682a6a6887f8dff768529a2b8d7","8cff76d263a287a10227241ee1fefa4ec5cdc7026d503b278837bb295c22568c","d0b951e00ba5730b4c31a83e50bcb8faf3945042309a92fa22d18b738cc8ad1c","7ae9bdbc119d322babb1805ccc2d3c6917b9eb5835749a2ad88f7ec1f5ee0ba8","b0ac49c3fc1ea98cc2e02e245de2bc98c0d80062e9fedca379d7704652661723","8620ca455bd084145a8cac4cfcc82fc89b6ddd23a604f4a67fa3ec0da71da315","c03f1378b65ff3b24845cb6d0c4ab5822dc828558dcb65433a0b2d45bcdc6cc8","f6241bdd3e97c582e867bdb0ad44787898e664f25372ba65da185e127fd3c09e","ad687590f999dacf925752b19aeeefee0da0eed59aaaf7aca093c68c2d70d031","7ae9bdbc119d322babb1805ccc2d3c6917b9eb5835749a2ad88f7ec1f5ee0ba8","78afeb65ace2d2c73d8a490e4862c414f8d7548fd8c3a2442e0acae7455f697d","fdbc67a48a8bdfda11eba5895a10c646b42df1ff36ac972bb68b8cd30fcf54d7","7ae9bdbc119d322babb1805ccc2d3c6917b9eb5835749a2ad88f7ec1f5ee0ba8","b8558f896e7b51cd5ec060a4414d192013520d0655a5c9afba5602e239b68cc4","7ae9bdbc119d322babb1805ccc2d3c6917b9eb5835749a2ad88f7ec1f5ee0ba8","fb724be8946142e90d685e6cc5685f4744f972a9a4f637297533d07dbbd9d6ce","25478f7c35c6cc147786fa39aee2ef41f1e9dae95a947f00c9a9f6ff5d8dfc2e","81a0056c95c5894f04778e642403d61f190ff7a5287e3558e9481d59868e2c51","319376b531de69c15e647ebe15e4dc4cdb7576a28f4a81380f97f84d89e3be80","c7e26262caaf8fc70ac97ef41a37e50c98973704d62dd7f79f72ca80e6443c9b","7347450f058389e5cd0aeb7b4a205e8a225baee820b2ed28d5e8971793f2ee94","b39bb4b6ce62a15b986f85f9f75e111bfa1cc7059f8cfadd83094353be051408","6eca582f214127d5e70fb5c7d7a52ddaccbcd4990f1886b0d684518ea89807ab","31ada020d9a7668ff1899f1cbf31dacd65d5ca4cb731c74b5493a0f5dce271f5","f82984b8375de304eadcd43938f0b9967f993cff251e762fba49526d9b921d14","09898b8db1dfdfb0aea25a70adffff507671e643e4a112e033350c06eeaf989b","fcb4a735202385a30e97e9d8f5d00aa17105e5e6e68af176fadf250f2a500e37","83488bc112bbd43d904a0b96911d1b71d9725a0004aac7fc46de8e09b1d53a23","1174c1d2ad97c769186616321a2145d022668a7e74ce0ff341971daedfa6154c","c22c37ac8f707477b4d69c280c4ff8cdcc6bf5907f061280eca0072f38e04810","2888895b1588e20afbea35fc92ece80c310af5b7b3fa2bb5576142e6add41442","4b993221700523a05782de87bc71c74bbdb0e791f7cfdc11aa7b4ce6ecfeb300","2d3b5d752096f82e05f8664741ab2dbeff26750cadabf65877653357b785ed43","9b66005a7e5c58c20fac57cafcb0d1ec5cc243df91d355035b5b93fe9c811e41","ca4df64273cc7d0e96254e02d6ceae366eace4df6bbb2b8caf35f38d9348341d","fdc516ece7d33203cbbf503fd1b43fb89b969365b6c5b6552c65a37fcc2138af","25478f7c35c6cc147786fa39aee2ef41f1e9dae95a947f00c9a9f6ff5d8dfc2e","81a0056c95c5894f04778e642403d61f190ff7a5287e3558e9481d59868e2c51","7aa3dde497f25b65d420acebd19354a4495368f6de1cb9d82074da62133db9c2","eef99c2d020325efd8fc2b21de171f71dddcfdededbe3acb797039e1aecb367e","eef99c2d020325efd8fc2b21de171f71dddcfdededbe3acb797039e1aecb367e","775780594dd67c23713ab139f06935f890b1b1b394c85d3522bc79393bdcbb4d","a2ff87dfedb2ec15723094a0b8370d1e5f795838fed73f69bab109b237515c38","2c6609d5a162dabef6404ad6f731327aabb6eaf30a877bb9001fa393f349a680","2e6e36f9c27ddc01b2a104b92ca3f178945b4ec375a3bd556073a3af0a4365d3","b01ec93f00d618730c453dd3fe453926c5fe452a500245014b8fb64e104adcee","fabc6f872dcd6208ab4ee5328c46ffe029e285d936a36152abee239ee1fb99c7","adde1222d7d49b91834b20b75686a762ed0726f5d34dcbda10a1aafa9ba419a4","ba3c7425794b5fe14eb7329ff97aa00f649e82d4891061e033db161b599663af","ba2b1305141ede23483b0f247b2ec3637d7b038b37598346692f7e9e08c75d2a","becea824046b5a36370b7956d271d7fd5ec033af2ebc78c166e360e602e97b92","f945d505b83c966214b80c53d8e7a2d77ec36a7e7a477a88cd09542d183ec83c","af1a9850747573f5c950082157276400d8612fede62af01f8b45629ff61bc975","4d3da7d3b12b46bc9d226706c12cb04387c74038f6fc651d0ece5fe6987230a3","f08169e1605cc96786b8e4a0cf19d853b8f585d25084daf009dc63e212e35c59","cde20424d6e6995855f4cb9f61c067cd215fc1dfeab88749350a4f76253ffae4","c8311ce839580c0875f9ff6aca0a9041f199aac8f674856b77c388983212bdf5","24cf439dc53195a9a22676407e7011c58a362eb5fa2fc32971820556959432d2","fb1fe16e53cea82b5ed56575c7c56671bb7ce502858e7ad5be512cfc816da29b","cd8b02b35bb2cdda78cf08448d5771a4b4f911c5743512a0fd6a6f23979c4dac","4392be558b8509e9624975f047d73286a08d97381ee55899b0227b670b2284bd","b7341adf64ef336742c7b4a68945f9c6e715d15c0ccd2eb6eeda503b39d92653","8fe0068df1a39fb8ecc14562adb77f5923d93f049e3d8a14a76982d0ef49ed80","a56df75b4f9e15358ec312a4ac991e2ab4cbe9656a99114c44530a51b1a0329a","2c37d3aed9fd6034ada2871eed49aa1e532444bca0bbdb27fe6d9cd4e4ba1d6e","8c6b5041b4b9dcc18c40d8d0615028e759d470a4810b1537bacfbd20c92243c4","e53e2f59a1b10434a1eeea3ad2bf0ed363ba88aa01681d68422dc9044ef50d52","af8f17871b68bfcc90f5941444844266c7c0a9328db0dee1414f47d0d1fd8e88","13fdf424f48b67e5fd7e4f25b6400a7fbdd28a0cff99d7d0400b76e4587a8879","13fe00c8acf8d4d8a50aee4c6805faa237b832e8b182154142647ab097808f6b","3cb14bc0d01a1bb99bda29c2366d570954496704ba8ac1f73060ba6ae99a18df","50f9dfb63997fcc83723ec64d6e7c07394022e994dff7984c55c31ffbc028e5e","b1e295cf3c02dee08816417f57ab7559906e55d706dd2b78f8dc045f88d93aaa","9bb720df292acbfd7e53bc0e8110b291f7ef83c16189da325eca9a58ca26ff82","f8a8c916f284fd68e8124f98110847d724fc503bf472a32eab36c95298920b2b","9803c925f6d559f0bce9a0e938b3ca5b192eec1fc5f0e727a75f514dc08f4e49",{"version":"b93e7bb0b556ded822cdcf1fdf2def46dc9dec23f9283101c592885e6a9586df","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},"892621c0131da61968e74ecdb17cdc1cd456e5d1a2db6d77f297c61e4c0773e8","6a8cb539556c1fb6054fa624bc691d0560e7334c06da3f1fc82e0b18e61614b8","de360cd42110490e00c1bb52af87118d5044a8a8054d8dc574087821c9f10b75","8a6ccbe6549c01938fa62d1682f5f1e987ac1924672ed8c8f5ab8d825719decd","7ab9bda66d3066b6164fb656c0c4598fcea5aac89ca96c2da1e049e41769acc8","12f6b1e992132ff669f790beece38ecaa19f2f0db75b7eae92e8dcc5f22b0a34",{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"ffc06cc59bfc4559f4845fd58694e934c20e4271413c48e4b3ec35a2afbd80a7","signature":"b4c749acb1b02fe0b336d3e89a98d3ee797f41144e7a2917d69a86c012fe9c5b"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"224212aaf624457d4d33e5b8f2bdc2a97ba1e7e487577ee239121a7be84a92c8","signature":"9ee11ad4f320cc402171301b600f529964208d145c82f986d89762679ba43d81"},"ad46be6d7b16fde6ba09fa11a8bdaa963a076d10fa85e8f7cd6a0904062993e1","e657d17c2b9494dfd8a9c6ea35a50214c324f9640c3fd9d63f414bd1f806623e","caf99be297c13988c93dcbd85ac2a65e1a44a428de6c6281478f21686c18a11f","1de8238b7283b31b2cfc8bf4c08c836223d8cefe4fdbdebebf580c59c0b539a6","451a214b2ce4d71b0c6c87a8a10bd4f0bb9d70d6630527da1f3a6fbce0abbffe","21c91e8fd1c8469ac883a5d0e88ee2328f21e761f0d266ef413b0177cdd14a8f","028a4ca49c9f57503e269e11143d17fe86d07b57aa6ad0ff033e37f90069720c","8d0d9d6605b72eb8a2ddb127b630898497fa49ed0adc018f8af55b6bc008c04f",{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"76352867f048fb1d055fc08a535f66368a3da114087bb4dfbc5745b73326a9b4","signature":"fe91775da1ed96e5f3cce5a0d62e81419cd4d9c32f478d2913b6fe2a199f6446"},{"version":"a6a5edb26bbc5319a89418e10393eb4f2f61319678b36dcd6394f4963626becf","signature":"5d0aa813eab35a144b4a18ce7beb91d9f22e61452f89b89cf892b404c810804e"},{"version":"17b09eb510cb668276e7436893c1419927f032eddcf579a349b42cb722c9c4d3","signature":"30bb526fbe0a8035ee3a97f62a7a15e126f5f3b4049f306ab134cca27fdbd877"},"ac607c31d42e0aeadc871af07a970af6e76295d63a89d78b5cb8ca27cfea1c8f",{"version":"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","signature":"da14a67372982ca6e605fea114900b492b3316618581634e0ce72afbcb09baca"},{"version":"3a77ffcd5fccbfeeb51ae6b89047dc3658a172db8038782c8b06d367bd63360d","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},{"version":"b3f712d9f966913ef45b1c9564ec16a0b9ea8368ca40f4dd5f6cfad368f17ebe","signature":"5d36df79871ce6b50ba986cabef382fa5727402ffadc2f6e75eafbc71f3000e1"},{"version":"a894e61b2be096d05faae4a0a57f1710e77ac4b7b9d1be3439fe817f816e8bff","signature":"f281d14d888f10a1131ba9da34445667a044737805d87cd4b1854219abce4814"},"e4edffdb2ef5251caba9aa8a541bdb1158e454c4ceba7301174a10d009af6bcf","9f516737132195476737f2113aa684138738d1285a8bc4d36f403fdcb220fb35","947ce778adc2efb03431cf740955df030620dd160bf6176c0a6e414e57d1423e","780821233ebeb2dd4134de92da1a24f5f56bcc558a2e0dddf76b7c5dd572e20d",{"version":"38a6de73d94fddd9e0c6debc7d8790d1050b8b3c23c9a71865de74c26d31b83d","signature":"55bb18d80ab4836734d6b6075750b673bec340bcaed10fed842407a1fdeb3657"},{"version":"3a14e17beb52aaf8f037bbeff8c0479407bb5893e8f55407143430cda8ef96aa","signature":"b52dcd199c97746007e4589749483d8b943e6bac0bbf6a90c0b9c7be86f9b793"},{"version":"e389f6f63acbbf67132e3bb8c2780884bc4769abe8e19f18a45418e5af21e08b","signature":"fdfbd78f7f5c54884fc2efd20efbd81968b887f3335c974c94dc3db6dd58c02f"},{"version":"abed2fcecfc488c97265276567a7eaeac7acb0abf954ab6fd6ccfbab2243b3e5","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","c5a251297fd8eeb861c0e98430de6ea5099e8febac0985edcf5d75feb4c6ce27",{"version":"fd66a97fb95c2ba224478a122a335c2d89202bc5b989a2d58db6aae3db2f85ce","signature":"776e8ea041798d892337df5348635cfcbc1fe9bad68b87d2a8a6f6cbacbbd72b"},{"version":"7adc736dd362f3694bfa0ead421710e99a78f81ba82ca176f190f95d452ea921","signature":"9c60c89de612b6471ab99cd4b57bb1e2b3b5821d9cf81723838d6c8324ed2c36"},"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","955133b47df2272da61dbb50fda84b0e0732d96f5614a373718719b4bc429641","3846d0dcf468a1d1a07e6d00eaa37ec542956fb5fe0357590a6407af20d2ff90","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"49026435d21e3d7559d723af3ae48f73ec28f9cba651b41bd2ac991012836122","affectsGlobalScope":true},"39b1a50d543770780b0409a4caacb87f3ff1d510aedfeb7dc06ed44188256f89",{"version":"b6a4a51bc749ad882c33d98563ff5a94716ca884bfde949a8c97bad530e4ee2c","affectsGlobalScope":true},"16b872cf5432818bdbf405428b4a1d77bb2a7ab908e8bd6609f9a541cea92f81","fe39ceafa361b6d339b518936275eff89a77e7dfe92f2efa5fb97abf9a95ca49",{"version":"4009dd21843fe4a62d1d97b584a2937ca9f045df6fbd65c8b264d8dd04b656fd","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","c9e6ea53a25729dbb5b5bb6960db4387df2f8e88add9cbf36b6ff590481134f9","3e95e6310d49db6d575ac6c2896c02761426aa5aab0b18169f971151c709b770","7eb0662b995994db248290a0f0a1d8ed685991a162ff9eb4dee36f099cccd0d9","bea5c9fc0843a6961411ab4a04df856a8372448bc0d180da0c3a054ff31044b8","715873cecbfcebb49f293f0521bd0955d6298486e2eeb9c7bbf5e9f20a6ed152","c6cf9428f45f3d78b07df7d7aab1569994c177d36549e3a962f952d89f026bc4",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"6c7b9d2139abd8f2e83ed8fa018c3799ab3187755a6665621feb6e93d3429ac3","affectsGlobalScope":true},"a019c9782ea4e21c83881c780cebce8ad86e3f78122619336eacbd87e47fe674","021ca24be8eb8c46f99b4e03ebf872931f590c9b07b88d715c68bd30495b6c44","5899ab1898582115c432cccef063298f75477bf2cebe5473360043fddd67bcc6","6b97f4106d72ae6b4ebf4e46d2fe90f4d04dd04b3dbff6e294572440a428209d","e3baa0c5780c2c805ec33a999722a2f740b572eb3746fd0a5f93a0a5c3dbf7f6","48fedd2f8549a2ae7e62f30fdb015779c2a7b536760730c5269406cd3d17cab2",{"version":"089867511b37a534ae71f3d9bc97acc0b925b7f5dbec113f98c4b49224c694eb","affectsGlobalScope":true},"c874bfffe38a94b129077eaba4e26575972d545d5d04cd64e90c02d2c029ead6","f5ce35485541e817c2d4105d3eb78e3e538bbb009515ed014694363fa3e94ceb","323506ce173f7f865f42f493885ee3dacd18db6359ea1141d57676d3781ce10c",{"version":"bd88055918cf8bf30ad7c9269177f7ebeafd4c5f0d28919edccd1c1d24f7e73c","affectsGlobalScope":true},{"version":"4ee9304173804c2c6dff4fcb8ad900619a4078b30d37f7e455236836e8e87a45","affectsGlobalScope":true},"ea3ab3727cd6c222d94003ecafa30e8550c61eadcdabbf59514aee76e86211a5","d3cdd41693c5ed6bec4f1a1c399d9501372b14bd341bc46eedacf2854c5df5a7","2de7a21c92226fb8abbeed7a0a9bd8aa6d37e4c68a8c7ff7938c644267e9fcc1","6d6070c5c81ba0bfe58988c69e3ba3149fc86421fd383f253aeb071cbf29cd41","48dab0d6e633b8052e7eaa0efb0bb3d58a733777b248765eafcb0b0349439834","d3e22aaa84d935196f465fff6645f88bb41352736c3130285eea0f2489c5f183","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","cdaaf046791d7d588f28f32197c5d6acc43343e62540a67eed194c9c20535fdc","4b1ff655bd8edd879dd4f04f15338ce0109f58ccb424165d44fa07e7ea39c4bf",{"version":"6fa61015444e843013443f2e5ca6bee5f033cbf361f953fd932abb0c029b73b2","affectsGlobalScope":true},{"version":"300f8e9de0b0c3482be3e749462b6ebc3dab8a316801f1da0def94aed0cd2018","affectsGlobalScope":true},"4e228e78c1e9b0a75c70588d59288f63a6258e8b1fe4a67b0c53fe03461421d9","24b8c93eb91a64a6fbb877a295cfac4c10aa4660599970c954a99d33697534a3","76a89af04f2ba1807309320dab5169c0d1243b80738b4a2005989e40a136733e","c045b664abf3fc2a4750fa96117ab2735e4ed45ddd571b2a6a91b9917e231a02",{"version":"ca619678b887ae262316673b55bb358c517593d3b6b96c1271972716c699da32","affectsGlobalScope":true},{"version":"0c312a7c5dec6c616f754d3a4b16318ce8d1cb912dfb3dfa0e808f45e66cbb21","affectsGlobalScope":true},"d1ef1d8516286380fd0a6f498f1650d374a8cb5f03d91633b6124e4fb8fb131d","fecdf44bec4ee9c5188e5f2f58c292c9689c02520900dceaaa6e76594de6da90","2641e5e19268b6f5038ad48a6e2598965301df8a77c48c99d8df760a6a154204",{"version":"6a4a80787c57c10b3ea8314c80d9cc6e1deb99d20adca16106a337825f582420","affectsGlobalScope":true},"f2b9440f98d6f94c8105883a2b65aee2fce0248f71f41beafd0a80636f3a565d",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447","d3f2d715f57df3f04bf7b16dde01dec10366f64fce44503c92b8f78f614c1769","b78cd10245a90e27e62d0558564f5d9a16576294eee724a59ae21b91f9269e4a","fedd311d427fdafac411b4e0edc0d1014668853679e021e04717a6de45ff5c0c","2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed",{"version":"50072f976cfa86af1a3044f55cd729d992abe39222d2f6cdf929266c77a42b0b","affectsGlobalScope":true},"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","34118be360cdd3381bbebbfd4b093c394460c8fc5df40688d58f45d86ab1448b","104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","5c45abf1e13e4463eacfd5dedda06855da8748a6a6cb3334f582b52e219acc04",{"version":"5c0aca385504ae10a42d367e71b6ca644f5012c56568a23495f44d1868e0a5f7","signature":"cdb9a6bec80e1b795ce332c1ce77969dd94d800d45da3b25253d5fcce74f53ae"}],"root":[60,586,587,591,592,691],"options":{"declaration":false,"declarationMap":false,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"inlineSourceMap":true,"inlineSources":true,"module":7,"noEmitOnError":false,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noPropertyAccessFromIndexSignature":true,"outDir":"../../../..","skipLibCheck":true,"sourceMap":false,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo","useDefineForClassFields":false},"fileIdsList":[[251,350,437],[251,437],[249,251,259,391,437],[249,251,437],[249,251,259,437],[249,251,316,437],[249,251,252,258,259,317,318,437],[249,251,258,259,315,316,437],[249,251,252,437],[437],[249,250,437],[251,254,437,581],[251,252,253,437],[251,253,254,437,582],[249,251,252,254,256,437],[251,291,292,437],[251,293,437],[249,251,253,254,291,437],[298,437],[291,437],[291,292,293,294,295,296,297,437],[437,646,680,688],[437,646,680],[437,643,646,680,682,683,684],[437,683,685,687,689],[437,594],[437,630],[437,631,636,664],[437,632,643,644,651,661,672],[437,632,633,643,651],[437,634,673],[437,635,636,644,652],[437,636,661,669],[437,637,639,643,651],[437,638],[437,639,640],[437,643],[437,641,643],[437,630,643],[437,643,644,645,661,672],[437,643,644,645,658,661,664],[437,628,677],[437,639,643,646,651,661,672],[437,643,644,646,647,651,661,669,672],[437,646,648,661,669,672],[437,594,595,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679],[437,643,649],[437,650,672,677],[437,639,643,651,661],[437,652],[437,653],[437,630,654],[437,655,671,677],[437,656],[437,657],[437,643,658,659],[437,658,660,673,675],[437,631,643,661,662,663,664],[437,631,661,663],[437,661,662],[437,664],[437,665],[437,630,661],[437,643,667,668],[437,667,668],[437,636,651,661,669],[437,670],[437,651,671],[437,631,646,657,672],[437,636,673],[437,661,674],[437,650,675],[437,676],[437,631,636,643,645,654,661,672,675,677],[437,661,678],[437,644,661,680,681],[437,646,680,681,686],[251,373,374,437],[251,256,258,277,374,437],[251,375,376,377,437],[379,437],[375,376,377,378,437],[251,258,437],[251,258,277,304,437],[251,354,355,359,364,437],[366,437],[354,355,365,437],[251,258,259,277,285,304,416,417,418,437],[251,416,419,437],[425,437],[416,417,418,419,420,421,422,423,424,437],[249,251,259,277,416,417,437],[249,251,416,418,437],[249,251,259,416,417,418,437],[251,258,416,418,437],[389,437],[386,387,388,437],[251,277,386,437],[251,387,437],[251,258,277,392,427,437],[251,437,552],[251,258,277,392,427,436,437,551],[251,437,551,552,553],[437,555],[437,551,552,553,554],[437,533],[437,531,532],[251,254,258,277,285,299,437],[249,251,277,300,437],[300,437],[303,437],[300,301,302,437],[435,437],[251,277,437],[251,252,310,433,437],[249,251,277,437],[431,432,433,434,437],[322,437],[251,320,437],[320,321,437],[327,437],[251,285,319,437],[251,324,437],[319,437],[324,325,326,437],[249,251,260,261,437],[251,259,277,437],[284,437],[261,278,279,280,281,282,283,437],[277,437],[437,445],[437,442,443,444],[358,437],[356,357,437],[251,356,437],[262,437],[276,437],[262,263,264,265,266,267,268,269,270,271,272,273,274,275,437],[363,437],[251,277,360,437],[251,361,437],[360,361,362,437],[251,277,319,351,437],[251,367,437],[249,251,258,277,323,339,350,437],[251,259,277,304,319,351,437],[251,339,351,352,353,368,369,437],[372,437],[351,352,353,368,369,370,371,437],[251,277,427,428,429,436,437,516],[251,277,299,428,437],[249,251,258,277,299,304,437],[251,290,428,429,430,437,517,518,519],[437,521],[428,429,430,437,517,518,519,520],[251,258,286,437],[251,286,287,437],[289,437],[286,287,288,437],[249,251,258,259,260,277,285,437],[251,437,446],[251,437,439,446,447],[437,515],[251,437,440],[251,437,439],[249,251,277,437,438],[251,437,438],[437,438,439,440,441,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514],[251,277,299,305,437],[251,299,306,437],[249,251,253,254,259,277,299,304,437],[299,437],[309,437],[305,306,307,308,437],[251,259,285,437],[437,529],[251,258,277,392,436,437,523],[249,251,258,277,427,436,437],[251,437,523,524,525,526,527],[437,523,524,525,526,527,528],[251,437,523],[348,437],[251,258,344,437],[251,341,342,343,344,345,346,437],[341,342,343,344,345,346,347,437],[251,285,437],[251,259,277,285,339,437],[338,437],[249,251,256,258,277,312,313,437],[251,258,277,311,312,314,329,437],[251,314,329,330,331,332,333,334,335,437],[249,251,277,311,437],[251,312,437],[311,312,313,314,329,330,331,332,333,334,335,336,337,437],[251,258,277,311,437],[251,258,311,437],[251,258,259,277,311,312,313,314,319,323,328,437],[249,251,277,311,312,437],[249,251,285,304,319,350,437,561],[437,567],[251,258,304,437,562],[251,437,561,562],[251,437,563,564],[251,285,319,437,561,562,563],[437,561,562,563,564,565,566],[251,258,277,437,539,540,541],[437,548],[251,277,437,541],[437,540,541,542,543,544,545,546,547],[251,258,259,277,427,437,540,541,542],[251,437,542,543,544,545,546],[251,258,277,437],[404,437],[249,277,437],[383,384,385,393,394,395,396,397,398,399,400,401,402,403,437],[251,256,384,437],[251,258,277,319,383,384,385,390,395,396,437],[251,392,394,437],[251,277,395,437],[249,251,384,437],[249,251,277,384,393,437],[251,384,437],[251,383,385,393,394,395,396,397,398,399,400,401,402,437],[249,251,256,258,277,304,384,394,397,437],[249,251,258,277,304,319,323,328,437],[437,538],[437,535,536,537],[251,258,277,323,437,534,535],[251,437,536],[61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,77,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,117,118,119,120,121,122,123,124,125,126,127,128,130,131,132,133,134,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,180,181,182,184,193,195,196,197,198,199,200,202,203,205,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,437],[106,437],[62,65,437],[64,437],[64,65,437],[61,62,63,65,437],[62,64,65,222,437],[65,437],[61,64,106,437],[64,65,222,437],[64,230,437],[62,64,65,437],[74,437],[97,437],[118,437],[64,65,106,437],[65,113,437],[64,65,106,124,437],[64,65,124,437],[65,165,437],[65,106,437],[61,65,183,437],[61,65,184,437],[206,437],[190,192,437],[201,437],[190,437],[61,65,183,190,191,437],[183,184,192,437],[204,437],[61,65,190,191,192,437],[63,64,65,437],[61,65,437],[62,64,184,185,186,187,437],[106,184,185,186,187,437],[184,186,437],[64,185,186,188,189,193,437],[61,64,437],[65,208,437],[66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,107,108,109,110,111,112,114,115,116,117,118,119,120,121,122,123,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,437],[194,437],[437,605,609,672],[437,605,661,672],[437,600],[437,602,605,669,672],[437,651,669],[437,680],[437,600,680],[437,602,605,651,672],[437,597,598,601,604,631,643,661,672],[437,597,603],[437,601,605,631,664,672,680],[437,631,680],[437,621,631,680],[437,599,600,680],[437,605],[437,599,600,601,602,603,604,605,606,607,609,610,611,612,613,614,615,616,617,618,619,620,622,623,624,625,626,627],[437,605,612,613],[437,603,605,613,614],[437,604],[437,597,600,605],[437,605,609,613,614],[437,609],[437,603,605,608,672],[437,597,602,603,605,609,612],[437,631,661],[437,600,605,621,631,677,680],[59,437],[59,252,437,591,593,653,672,690],[59,437,585],[59,251,252,256,437],[59,251,437,583,589],[59,251,252,253,254,256,414,427,437,516,579,580,582],[59,256,408,414,437,574,578],[59,251,252,290,310,339,408,437],[59,251,252,256,290,310,339,349,350,380,382,405,407,437],[59,251,252,405,407,437],[59,251,252,256,405,437],[59,256,437,577],[59,437,577],[59,251,252,405,437],[59,256,437,573],[59,251,252,290,367,426,427,437,522,530,549,573],[59,251,252,256,290,367,411,413,426,427,437,522,530,549,556,558,560,568,572,632],[59,251,253,437,571],[59,251,256,411,413,437],[59,251,437],[59,254,437,585,590],[59,254,437,583,585],[690],[251],[256],[256,413,427,568,572],[253],[256,413]],"referencedMap":[[581,1],[350,2],[392,3],[258,2],[316,2],[315,4],[260,5],[391,6],[319,7],[259,2],[318,2],[317,8],[253,9],[252,4],[580,10],[251,11],[250,10],[427,4],[582,12],[254,13],[589,14],[256,15],[593,2],[293,16],[295,10],[294,17],[292,18],[299,19],[297,20],[298,21],[291,10],[296,20],[689,22],[688,23],[685,24],[690,25],[686,10],[681,10],[594,26],[595,26],[630,27],[631,28],[632,29],[633,30],[634,31],[635,32],[636,33],[637,34],[638,35],[639,36],[640,36],[642,37],[641,38],[643,39],[644,40],[645,41],[629,42],[679,10],[646,43],[647,44],[648,45],[680,46],[649,47],[650,48],[651,49],[652,50],[653,51],[654,52],[655,53],[656,54],[657,55],[658,56],[659,56],[660,57],[661,58],[663,59],[662,60],[664,61],[665,62],[666,63],[667,64],[668,65],[669,66],[670,67],[671,68],[672,69],[673,70],[674,71],[675,72],[676,73],[677,74],[678,75],[683,10],[684,10],[682,76],[687,77],[596,10],[437,10],[375,78],[377,2],[376,79],[374,2],[378,80],[380,81],[379,82],[355,83],[354,84],[365,85],[367,86],[366,87],[416,2],[419,88],[420,89],[426,90],[425,91],[418,92],[424,93],[423,94],[421,93],[422,94],[417,95],[390,96],[389,97],[387,98],[388,99],[386,4],[553,100],[551,101],[552,102],[554,103],[556,104],[555,105],[531,10],[532,10],[534,106],[533,107],[300,108],[301,109],[302,110],[304,111],[303,112],[436,113],[433,114],[432,4],[434,115],[431,116],[435,117],[323,118],[320,114],[321,119],[322,120],[328,121],[324,122],[325,123],[326,124],[327,125],[281,126],[282,4],[279,4],[283,127],[285,128],[284,129],[261,4],[280,114],[278,114],[442,130],[446,131],[445,132],[444,10],[443,10],[359,133],[358,134],[356,114],[357,135],[262,10],[263,136],[270,136],[271,136],[272,10],[264,10],[277,137],[265,136],[273,4],[266,136],[276,138],[269,10],[267,10],[275,10],[268,2],[274,10],[364,139],[360,114],[361,140],[362,141],[363,142],[371,143],[369,2],[353,2],[368,144],[351,145],[352,146],[370,147],[373,148],[372,149],[517,150],[429,2],[430,151],[519,2],[518,2],[428,152],[520,153],[522,154],[521,155],[287,156],[288,157],[290,158],[289,159],[286,160],[447,161],[449,162],[516,163],[450,10],[451,10],[452,10],[453,10],[454,10],[455,10],[456,10],[457,10],[458,10],[459,10],[460,10],[461,10],[462,10],[463,10],[464,10],[465,10],[466,10],[467,10],[468,10],[469,10],[470,10],[471,10],[472,10],[473,10],[474,10],[475,10],[476,10],[477,10],[478,10],[479,10],[480,10],[482,10],[481,10],[483,10],[484,10],[485,10],[486,10],[487,10],[488,10],[489,10],[490,10],[491,10],[492,10],[493,10],[494,10],[495,10],[496,10],[497,10],[498,10],[499,10],[500,10],[501,10],[502,10],[503,10],[504,10],[505,10],[506,10],[507,10],[508,10],[509,10],[510,10],[511,10],[512,10],[513,10],[514,10],[438,10],[441,164],[440,165],[439,166],[448,167],[515,168],[306,169],[307,170],[305,171],[308,172],[310,173],[309,174],[526,175],[530,176],[527,2],[524,177],[523,178],[528,179],[529,180],[525,181],[341,2],[342,2],[343,2],[349,182],[345,183],[347,184],[348,185],[346,186],[344,187],[339,188],[332,2],[331,2],[314,189],[330,190],[336,191],[312,192],[337,193],[311,10],[338,194],[334,195],[335,195],[333,196],[329,197],[313,198],[562,199],[568,200],[563,201],[564,202],[565,203],[566,204],[567,205],[561,4],[542,206],[549,207],[546,208],[548,209],[543,210],[547,211],[540,2],[545,208],[544,212],[541,10],[405,213],[384,214],[404,215],[383,114],[398,2],[400,114],[393,216],[397,217],[395,218],[396,219],[399,220],[394,221],[401,2],[385,222],[403,223],[402,224],[535,225],[539,226],[538,227],[536,228],[537,229],[249,230],[222,10],[200,231],[198,231],[248,232],[213,233],[212,233],[113,234],[64,235],[220,234],[221,234],[223,236],[224,234],[225,237],[124,238],[226,234],[197,234],[227,234],[228,239],[229,234],[230,233],[231,240],[232,234],[233,234],[234,234],[235,234],[236,233],[237,234],[238,234],[239,234],[240,234],[241,241],[242,234],[243,234],[244,234],[245,234],[246,234],[63,232],[66,237],[67,237],[68,237],[69,237],[70,237],[71,237],[72,237],[73,234],[75,242],[76,237],[74,237],[77,237],[78,237],[79,237],[80,237],[81,237],[82,237],[83,234],[84,237],[85,237],[86,237],[87,237],[88,237],[89,234],[90,237],[91,237],[92,237],[93,237],[94,237],[95,237],[96,234],[98,243],[97,237],[99,237],[100,237],[101,237],[102,237],[103,241],[104,234],[105,234],[119,244],[107,245],[108,237],[109,237],[110,234],[111,237],[112,237],[114,246],[115,237],[116,237],[117,237],[118,237],[120,237],[121,237],[122,237],[123,237],[125,247],[126,237],[127,237],[128,237],[129,234],[130,237],[131,248],[132,248],[133,248],[134,234],[135,237],[136,237],[137,237],[142,237],[138,237],[139,234],[140,237],[141,234],[143,237],[144,237],[145,237],[146,237],[147,237],[148,237],[149,234],[150,237],[151,237],[152,237],[153,237],[154,237],[155,237],[156,237],[157,237],[158,237],[159,237],[160,237],[161,237],[162,237],[163,237],[164,237],[165,237],[166,249],[167,237],[168,237],[169,237],[170,237],[171,237],[172,237],[173,234],[174,234],[175,234],[176,234],[177,234],[178,237],[179,237],[180,237],[181,237],[199,250],[247,234],[184,251],[183,252],[207,253],[206,254],[202,255],[201,254],[203,256],[192,257],[190,258],[205,259],[204,256],[191,10],[193,260],[106,261],[62,262],[61,237],[196,10],[188,263],[189,264],[186,10],[187,265],[185,237],[194,266],[65,267],[214,10],[215,10],[208,10],[211,233],[210,10],[216,10],[217,10],[209,268],[218,10],[219,10],[182,269],[195,270],[59,10],[57,10],[58,10],[10,10],[12,10],[11,10],[2,10],[13,10],[14,10],[15,10],[16,10],[17,10],[18,10],[19,10],[20,10],[3,10],[4,10],[21,10],[25,10],[22,10],[23,10],[24,10],[26,10],[27,10],[28,10],[5,10],[29,10],[30,10],[31,10],[32,10],[6,10],[36,10],[33,10],[34,10],[35,10],[37,10],[7,10],[38,10],[43,10],[44,10],[39,10],[40,10],[41,10],[42,10],[8,10],[48,10],[45,10],[46,10],[47,10],[49,10],[9,10],[50,10],[51,10],[52,10],[55,10],[53,10],[54,10],[1,10],[56,10],[612,271],[619,272],[611,271],[626,273],[603,274],[602,275],[625,276],[620,277],[623,278],[605,279],[604,280],[600,281],[599,282],[622,283],[601,284],[606,285],[607,10],[610,285],[597,10],[628,286],[627,285],[614,287],[615,288],[617,289],[613,290],[616,291],[621,276],[608,292],[609,293],[618,294],[598,295],[624,296],[592,297],[691,298],[584,299],[585,300],[255,297],[588,297],[590,301],[583,302],[257,297],[579,303],[410,297],[411,297],[557,297],[558,297],[381,297],[382,297],[340,304],[408,305],[406,306],[407,307],[575,297],[578,308],[576,309],[577,310],[415,297],[574,311],[550,312],[573,313],[569,297],[572,314],[409,297],[414,315],[412,297],[413,316],[559,297],[560,297],[570,297],[571,297],[60,297],[587,297],[591,317],[586,318]],"exportedModulesMap":[[581,1],[350,2],[392,3],[258,2],[316,2],[315,4],[260,5],[391,6],[319,7],[259,2],[318,2],[317,8],[253,9],[252,4],[580,10],[251,11],[250,10],[427,4],[582,12],[254,13],[589,14],[256,15],[593,2],[293,16],[295,10],[294,17],[292,18],[299,19],[297,20],[298,21],[291,10],[296,20],[689,22],[688,23],[685,24],[690,25],[686,10],[681,10],[594,26],[595,26],[630,27],[631,28],[632,29],[633,30],[634,31],[635,32],[636,33],[637,34],[638,35],[639,36],[640,36],[642,37],[641,38],[643,39],[644,40],[645,41],[629,42],[679,10],[646,43],[647,44],[648,45],[680,46],[649,47],[650,48],[651,49],[652,50],[653,51],[654,52],[655,53],[656,54],[657,55],[658,56],[659,56],[660,57],[661,58],[663,59],[662,60],[664,61],[665,62],[666,63],[667,64],[668,65],[669,66],[670,67],[671,68],[672,69],[673,70],[674,71],[675,72],[676,73],[677,74],[678,75],[683,10],[684,10],[682,76],[687,77],[596,10],[437,10],[375,78],[377,2],[376,79],[374,2],[378,80],[380,81],[379,82],[355,83],[354,84],[365,85],[367,86],[366,87],[416,2],[419,88],[420,89],[426,90],[425,91],[418,92],[424,93],[423,94],[421,93],[422,94],[417,95],[390,96],[389,97],[387,98],[388,99],[386,4],[553,100],[551,101],[552,102],[554,103],[556,104],[555,105],[531,10],[532,10],[534,106],[533,107],[300,108],[301,109],[302,110],[304,111],[303,112],[436,113],[433,114],[432,4],[434,115],[431,116],[435,117],[323,118],[320,114],[321,119],[322,120],[328,121],[324,122],[325,123],[326,124],[327,125],[281,126],[282,4],[279,4],[283,127],[285,128],[284,129],[261,4],[280,114],[278,114],[442,130],[446,131],[445,132],[444,10],[443,10],[359,133],[358,134],[356,114],[357,135],[262,10],[263,136],[270,136],[271,136],[272,10],[264,10],[277,137],[265,136],[273,4],[266,136],[276,138],[269,10],[267,10],[275,10],[268,2],[274,10],[364,139],[360,114],[361,140],[362,141],[363,142],[371,143],[369,2],[353,2],[368,144],[351,145],[352,146],[370,147],[373,148],[372,149],[517,150],[429,2],[430,151],[519,2],[518,2],[428,152],[520,153],[522,154],[521,155],[287,156],[288,157],[290,158],[289,159],[286,160],[447,161],[449,162],[516,163],[450,10],[451,10],[452,10],[453,10],[454,10],[455,10],[456,10],[457,10],[458,10],[459,10],[460,10],[461,10],[462,10],[463,10],[464,10],[465,10],[466,10],[467,10],[468,10],[469,10],[470,10],[471,10],[472,10],[473,10],[474,10],[475,10],[476,10],[477,10],[478,10],[479,10],[480,10],[482,10],[481,10],[483,10],[484,10],[485,10],[486,10],[487,10],[488,10],[489,10],[490,10],[491,10],[492,10],[493,10],[494,10],[495,10],[496,10],[497,10],[498,10],[499,10],[500,10],[501,10],[502,10],[503,10],[504,10],[505,10],[506,10],[507,10],[508,10],[509,10],[510,10],[511,10],[512,10],[513,10],[514,10],[438,10],[441,164],[440,165],[439,166],[448,167],[515,168],[306,169],[307,170],[305,171],[308,172],[310,173],[309,174],[526,175],[530,176],[527,2],[524,177],[523,178],[528,179],[529,180],[525,181],[341,2],[342,2],[343,2],[349,182],[345,183],[347,184],[348,185],[346,186],[344,187],[339,188],[332,2],[331,2],[314,189],[330,190],[336,191],[312,192],[337,193],[311,10],[338,194],[334,195],[335,195],[333,196],[329,197],[313,198],[562,199],[568,200],[563,201],[564,202],[565,203],[566,204],[567,205],[561,4],[542,206],[549,207],[546,208],[548,209],[543,210],[547,211],[540,2],[545,208],[544,212],[541,10],[405,213],[384,214],[404,215],[383,114],[398,2],[400,114],[393,216],[397,217],[395,218],[396,219],[399,220],[394,221],[401,2],[385,222],[403,223],[402,224],[535,225],[539,226],[538,227],[536,228],[537,229],[249,230],[222,10],[200,231],[198,231],[248,232],[213,233],[212,233],[113,234],[64,235],[220,234],[221,234],[223,236],[224,234],[225,237],[124,238],[226,234],[197,234],[227,234],[228,239],[229,234],[230,233],[231,240],[232,234],[233,234],[234,234],[235,234],[236,233],[237,234],[238,234],[239,234],[240,234],[241,241],[242,234],[243,234],[244,234],[245,234],[246,234],[63,232],[66,237],[67,237],[68,237],[69,237],[70,237],[71,237],[72,237],[73,234],[75,242],[76,237],[74,237],[77,237],[78,237],[79,237],[80,237],[81,237],[82,237],[83,234],[84,237],[85,237],[86,237],[87,237],[88,237],[89,234],[90,237],[91,237],[92,237],[93,237],[94,237],[95,237],[96,234],[98,243],[97,237],[99,237],[100,237],[101,237],[102,237],[103,241],[104,234],[105,234],[119,244],[107,245],[108,237],[109,237],[110,234],[111,237],[112,237],[114,246],[115,237],[116,237],[117,237],[118,237],[120,237],[121,237],[122,237],[123,237],[125,247],[126,237],[127,237],[128,237],[129,234],[130,237],[131,248],[132,248],[133,248],[134,234],[135,237],[136,237],[137,237],[142,237],[138,237],[139,234],[140,237],[141,234],[143,237],[144,237],[145,237],[146,237],[147,237],[148,237],[149,234],[150,237],[151,237],[152,237],[153,237],[154,237],[155,237],[156,237],[157,237],[158,237],[159,237],[160,237],[161,237],[162,237],[163,237],[164,237],[165,237],[166,249],[167,237],[168,237],[169,237],[170,237],[171,237],[172,237],[173,234],[174,234],[175,234],[176,234],[177,234],[178,237],[179,237],[180,237],[181,237],[199,250],[247,234],[184,251],[183,252],[207,253],[206,254],[202,255],[201,254],[203,256],[192,257],[190,258],[205,259],[204,256],[191,10],[193,260],[106,261],[62,262],[61,237],[196,10],[188,263],[189,264],[186,10],[187,265],[185,237],[194,266],[65,267],[214,10],[215,10],[208,10],[211,233],[210,10],[216,10],[217,10],[209,268],[218,10],[219,10],[182,269],[195,270],[59,10],[57,10],[58,10],[10,10],[12,10],[11,10],[2,10],[13,10],[14,10],[15,10],[16,10],[17,10],[18,10],[19,10],[20,10],[3,10],[4,10],[21,10],[25,10],[22,10],[23,10],[24,10],[26,10],[27,10],[28,10],[5,10],[29,10],[30,10],[31,10],[32,10],[6,10],[36,10],[33,10],[34,10],[35,10],[37,10],[7,10],[38,10],[43,10],[44,10],[39,10],[40,10],[41,10],[42,10],[8,10],[48,10],[45,10],[46,10],[47,10],[49,10],[9,10],[50,10],[51,10],[52,10],[55,10],[53,10],[54,10],[1,10],[56,10],[612,271],[619,272],[611,271],[626,273],[603,274],[602,275],[625,276],[620,277],[623,278],[605,279],[604,280],[600,281],[599,282],[622,283],[601,284],[606,285],[607,10],[610,285],[597,10],[628,286],[627,285],[614,287],[615,288],[617,289],[613,290],[616,291],[621,276],[608,292],[609,293],[618,294],[598,295],[624,296],[592,297],[691,319],[255,297],[588,297],[590,320],[583,320],[257,297],[579,303],[578,321],[574,311],[573,322],[572,323],[414,324],[413,320],[60,297],[587,297],[591,320]],"semanticDiagnosticsPerFile":[581,350,392,258,316,315,260,391,319,259,318,317,253,252,580,251,250,427,582,254,589,256,593,293,295,294,292,299,297,298,291,296,689,688,685,690,686,681,594,595,630,631,632,633,634,635,636,637,638,639,640,642,641,643,644,645,629,679,646,647,648,680,649,650,651,652,653,654,655,656,657,658,659,660,661,663,662,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,683,684,682,687,596,437,375,377,376,374,378,380,379,355,354,365,367,366,416,419,420,426,425,418,424,423,421,422,417,390,389,387,388,386,553,551,552,554,556,555,531,532,534,533,300,301,302,304,303,436,433,432,434,431,435,323,320,321,322,328,324,325,326,327,281,282,279,283,285,284,261,280,278,442,446,445,444,443,359,358,356,357,262,263,270,271,272,264,277,265,273,266,276,269,267,275,268,274,364,360,361,362,363,371,369,353,368,351,352,370,373,372,517,429,430,519,518,428,520,522,521,287,288,290,289,286,447,449,516,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,482,481,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,438,441,440,439,448,515,306,307,305,308,310,309,526,530,527,524,523,528,529,525,341,342,343,349,345,347,348,346,344,339,332,331,314,330,336,312,337,311,338,334,335,333,329,313,562,568,563,564,565,566,567,561,542,549,546,548,543,547,540,545,544,541,405,384,404,383,398,400,393,397,395,396,399,394,401,385,403,402,535,539,538,536,537,249,222,200,198,248,213,212,113,64,220,221,223,224,225,124,226,197,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,63,66,67,68,69,70,71,72,73,75,76,74,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,98,97,99,100,101,102,103,104,105,119,107,108,109,110,111,112,114,115,116,117,118,120,121,122,123,125,126,127,128,129,130,131,132,133,134,135,136,137,142,138,139,140,141,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,199,247,184,183,207,206,202,201,203,192,190,205,204,191,193,106,62,61,196,188,189,186,187,185,194,65,214,215,208,211,210,216,217,209,218,219,182,195,59,57,58,10,12,11,2,13,14,15,16,17,18,19,20,3,4,21,25,22,23,24,26,27,28,5,29,30,31,32,6,36,33,34,35,37,7,38,43,44,39,40,41,42,8,48,45,46,47,49,9,50,51,52,55,53,54,1,56,612,619,611,626,603,602,625,620,623,605,604,600,599,622,601,606,607,610,597,628,627,614,615,617,613,616,621,608,609,618,598,624,691,585,590,583,579,411,558,382,408,407,578,577,574,573,572,414,413,560,571,591,586]},"version":"5.2.2"} \ No newline at end of file diff --git a/.angular/cache/17.0.7/vite/deps/@angular_animations.js b/.angular/cache/17.0.7/vite/deps/@angular_animations.js new file mode 100644 index 0000000..e17caf9 --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/@angular_animations.js @@ -0,0 +1,48 @@ +import { + AUTO_STYLE, + AnimationBuilder, + AnimationFactory, + AnimationGroupPlayer, + BrowserAnimationBuilder, + NoopAnimationPlayer, + animate, + animateChild, + animation, + group, + keyframes, + query, + sequence, + stagger, + state, + style, + transition, + trigger, + useAnimation, + ɵPRE_STYLE +} from "./chunk-KI2JSLP6.js"; +import "./chunk-OSQBUYO6.js"; +import "./chunk-FGESKT7O.js"; +import "./chunk-HSNDBVJ3.js"; +export { + AUTO_STYLE, + AnimationBuilder, + AnimationFactory, + NoopAnimationPlayer, + animate, + animateChild, + animation, + group, + keyframes, + query, + sequence, + stagger, + state, + style, + transition, + trigger, + useAnimation, + AnimationGroupPlayer as ɵAnimationGroupPlayer, + BrowserAnimationBuilder as ɵBrowserAnimationBuilder, + ɵPRE_STYLE +}; +//# sourceMappingURL=@angular_animations.js.map diff --git a/.angular/cache/17.0.7/vite/deps/@angular_animations.js.map b/.angular/cache/17.0.7/vite/deps/@angular_animations.js.map new file mode 100644 index 0000000..9865211 --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/@angular_animations.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": [], + "sourcesContent": [], + "mappings": "", + "names": [] +} diff --git a/.angular/cache/17.0.7/vite/deps/@angular_platform-browser_animations.js b/.angular/cache/17.0.7/vite/deps/@angular_platform-browser_animations.js index cbdbfbb..928f2ac 100644 --- a/.angular/cache/17.0.7/vite/deps/@angular_platform-browser_animations.js +++ b/.angular/cache/17.0.7/vite/deps/@angular_platform-browser_animations.js @@ -4,8 +4,8 @@ import { NoopAnimationsModule, provideAnimations, provideNoopAnimations -} from "./chunk-FILHFU6K.js"; -import "./chunk-BNCUYWOH.js"; +} from "./chunk-ECVKT3ZH.js"; +import "./chunk-KI2JSLP6.js"; import "./chunk-Y4CEYMY2.js"; import "./chunk-X7WBA24Z.js"; import "./chunk-OSQBUYO6.js"; diff --git a/.angular/cache/17.0.7/vite/deps/@angular_router.js b/.angular/cache/17.0.7/vite/deps/@angular_router.js index ebe7e64..b19618d 100644 --- a/.angular/cache/17.0.7/vite/deps/@angular_router.js +++ b/.angular/cache/17.0.7/vite/deps/@angular_router.js @@ -1,5507 +1,82 @@ import { - Title -} from "./chunk-Y4CEYMY2.js"; -import "./chunk-X7WBA24Z.js"; -import { - DOCUMENT, - HashLocationStrategy, - LOCATION_INITIALIZED, - Location, - LocationStrategy, - PathLocationStrategy, - ViewportScroller -} from "./chunk-OSQBUYO6.js"; -import { - APP_BOOTSTRAP_LISTENER, - APP_INITIALIZER, - ApplicationRef, - Attribute, - BehaviorSubject, - ChangeDetectorRef, - Compiler, - Component, - ConnectableObservable, - Console, - ContentChildren, - Directive, - EMPTY, - ENVIRONMENT_INITIALIZER, - ElementRef, - EmptyError, - EnvironmentInjector, - EventEmitter, - HostBinding, - HostListener, - InitialRenderPendingTasks, - Inject, - InjectFlags, - Injectable, - InjectionToken, - Injector, - Input, - NgModule, - NgModuleFactory$1, - NgZone, - Optional, - Output, - Renderer2, - RuntimeError, - SkipSelf, - Subject, - Subscription, - Version, - ViewContainerRef, - afterNextRender, - booleanAttribute, - catchError, - combineLatest, - concat, - concatMap, - createEnvironmentInjector, - defaultIfEmpty, - defer, - filter, - finalize, - first, - from, - inject, - isInjectable, - isNgModule, - isObservable, - isPromise, - isStandalone, - last, - makeEnvironmentProviders, - map, - mapTo, - mergeAll, - mergeMap, - of, - pipe, - refCount, - reflectComponentType, - runInInjectionContext, - scan, - setClassMetadata, - startWith, - switchMap, - take, - takeLast, - takeUntil, - tap, - throwError, - ɵɵInputTransformsFeature, - ɵɵNgOnChangesFeature, - ɵɵStandaloneFeature, - ɵɵattribute, - ɵɵcontentQuery, - ɵɵdefineComponent, - ɵɵdefineDirective, - ɵɵdefineInjectable, - ɵɵdefineInjector, - ɵɵdefineNgModule, - ɵɵdirectiveInject, - ɵɵelement, - ɵɵgetInheritedFactory, - ɵɵinject, - ɵɵinjectAttribute, - ɵɵinvalidFactory, - ɵɵlistener, - ɵɵloadQuery, - ɵɵqueryRefresh, - ɵɵsanitizeUrlOrResourceUrl -} from "./chunk-FGESKT7O.js"; -import { - __spreadProps, - __spreadValues -} from "./chunk-HSNDBVJ3.js"; - -// node_modules/@angular/router/fesm2022/router.mjs -var PRIMARY_OUTLET = "primary"; -var RouteTitleKey = Symbol("RouteTitle"); -var ParamsAsMap = class { - constructor(params) { - this.params = params || {}; - } - has(name) { - return Object.prototype.hasOwnProperty.call(this.params, name); - } - get(name) { - if (this.has(name)) { - const v = this.params[name]; - return Array.isArray(v) ? v[0] : v; - } - return null; - } - getAll(name) { - if (this.has(name)) { - const v = this.params[name]; - return Array.isArray(v) ? v : [v]; - } - return []; - } - get keys() { - return Object.keys(this.params); - } -}; -function convertToParamMap(params) { - return new ParamsAsMap(params); -} -function defaultUrlMatcher(segments, segmentGroup, route) { - const parts = route.path.split("/"); - if (parts.length > segments.length) { - return null; - } - if (route.pathMatch === "full" && (segmentGroup.hasChildren() || parts.length < segments.length)) { - return null; - } - const posParams = {}; - for (let index = 0; index < parts.length; index++) { - const part = parts[index]; - const segment = segments[index]; - const isParameter = part.startsWith(":"); - if (isParameter) { - posParams[part.substring(1)] = segment; - } else if (part !== segment.path) { - return null; - } - } - return { - consumed: segments.slice(0, parts.length), - posParams - }; -} -function shallowEqualArrays(a, b) { - if (a.length !== b.length) - return false; - for (let i = 0; i < a.length; ++i) { - if (!shallowEqual(a[i], b[i])) - return false; - } - return true; -} -function shallowEqual(a, b) { - const k1 = a ? getDataKeys(a) : void 0; - const k2 = b ? getDataKeys(b) : void 0; - if (!k1 || !k2 || k1.length != k2.length) { - return false; - } - let key; - for (let i = 0; i < k1.length; i++) { - key = k1[i]; - if (!equalArraysOrString(a[key], b[key])) { - return false; - } - } - return true; -} -function getDataKeys(obj) { - return [...Object.keys(obj), ...Object.getOwnPropertySymbols(obj)]; -} -function equalArraysOrString(a, b) { - if (Array.isArray(a) && Array.isArray(b)) { - if (a.length !== b.length) - return false; - const aSorted = [...a].sort(); - const bSorted = [...b].sort(); - return aSorted.every((val, index) => bSorted[index] === val); - } else { - return a === b; - } -} -function last2(a) { - return a.length > 0 ? a[a.length - 1] : null; -} -function wrapIntoObservable(value) { - if (isObservable(value)) { - return value; - } - if (isPromise(value)) { - return from(Promise.resolve(value)); - } - return of(value); -} -var pathCompareMap = { - "exact": equalSegmentGroups, - "subset": containsSegmentGroup -}; -var paramCompareMap = { - "exact": equalParams, - "subset": containsParams, - "ignored": () => true -}; -function containsTree(container, containee, options) { - return pathCompareMap[options.paths](container.root, containee.root, options.matrixParams) && paramCompareMap[options.queryParams](container.queryParams, containee.queryParams) && !(options.fragment === "exact" && container.fragment !== containee.fragment); -} -function equalParams(container, containee) { - return shallowEqual(container, containee); -} -function equalSegmentGroups(container, containee, matrixParams) { - if (!equalPath(container.segments, containee.segments)) - return false; - if (!matrixParamsMatch(container.segments, containee.segments, matrixParams)) { - return false; - } - if (container.numberOfChildren !== containee.numberOfChildren) - return false; - for (const c in containee.children) { - if (!container.children[c]) - return false; - if (!equalSegmentGroups(container.children[c], containee.children[c], matrixParams)) - return false; - } - return true; -} -function containsParams(container, containee) { - return Object.keys(containee).length <= Object.keys(container).length && Object.keys(containee).every((key) => equalArraysOrString(container[key], containee[key])); -} -function containsSegmentGroup(container, containee, matrixParams) { - return containsSegmentGroupHelper(container, containee, containee.segments, matrixParams); -} -function containsSegmentGroupHelper(container, containee, containeePaths, matrixParams) { - if (container.segments.length > containeePaths.length) { - const current = container.segments.slice(0, containeePaths.length); - if (!equalPath(current, containeePaths)) - return false; - if (containee.hasChildren()) - return false; - if (!matrixParamsMatch(current, containeePaths, matrixParams)) - return false; - return true; - } else if (container.segments.length === containeePaths.length) { - if (!equalPath(container.segments, containeePaths)) - return false; - if (!matrixParamsMatch(container.segments, containeePaths, matrixParams)) - return false; - for (const c in containee.children) { - if (!container.children[c]) - return false; - if (!containsSegmentGroup(container.children[c], containee.children[c], matrixParams)) { - return false; - } - } - return true; - } else { - const current = containeePaths.slice(0, container.segments.length); - const next = containeePaths.slice(container.segments.length); - if (!equalPath(container.segments, current)) - return false; - if (!matrixParamsMatch(container.segments, current, matrixParams)) - return false; - if (!container.children[PRIMARY_OUTLET]) - return false; - return containsSegmentGroupHelper(container.children[PRIMARY_OUTLET], containee, next, matrixParams); - } -} -function matrixParamsMatch(containerPaths, containeePaths, options) { - return containeePaths.every((containeeSegment, i) => { - return paramCompareMap[options](containerPaths[i].parameters, containeeSegment.parameters); - }); -} -var UrlTree = class { - constructor(root = new UrlSegmentGroup([], {}), queryParams = {}, fragment = null) { - this.root = root; - this.queryParams = queryParams; - this.fragment = fragment; - if (typeof ngDevMode === "undefined" || ngDevMode) { - if (root.segments.length > 0) { - throw new RuntimeError(4015, "The root `UrlSegmentGroup` should not contain `segments`. Instead, these segments belong in the `children` so they can be associated with a named outlet."); - } - } - } - get queryParamMap() { - if (!this._queryParamMap) { - this._queryParamMap = convertToParamMap(this.queryParams); - } - return this._queryParamMap; - } - /** @docsNotRequired */ - toString() { - return DEFAULT_SERIALIZER.serialize(this); - } -}; -var UrlSegmentGroup = class { - constructor(segments, children) { - this.segments = segments; - this.children = children; - this.parent = null; - Object.values(children).forEach((v) => v.parent = this); - } - /** Whether the segment has child segments */ - hasChildren() { - return this.numberOfChildren > 0; - } - /** Number of child segments */ - get numberOfChildren() { - return Object.keys(this.children).length; - } - /** @docsNotRequired */ - toString() { - return serializePaths(this); - } -}; -var UrlSegment = class { - constructor(path, parameters) { - this.path = path; - this.parameters = parameters; - } - get parameterMap() { - if (!this._parameterMap) { - this._parameterMap = convertToParamMap(this.parameters); - } - return this._parameterMap; - } - /** @docsNotRequired */ - toString() { - return serializePath(this); - } -}; -function equalSegments(as, bs) { - return equalPath(as, bs) && as.every((a, i) => shallowEqual(a.parameters, bs[i].parameters)); -} -function equalPath(as, bs) { - if (as.length !== bs.length) - return false; - return as.every((a, i) => a.path === bs[i].path); -} -function mapChildrenIntoArray(segment, fn) { - let res = []; - Object.entries(segment.children).forEach(([childOutlet, child]) => { - if (childOutlet === PRIMARY_OUTLET) { - res = res.concat(fn(child, childOutlet)); - } - }); - Object.entries(segment.children).forEach(([childOutlet, child]) => { - if (childOutlet !== PRIMARY_OUTLET) { - res = res.concat(fn(child, childOutlet)); - } - }); - return res; -} -var _UrlSerializer = class _UrlSerializer { -}; -_UrlSerializer.ɵfac = function UrlSerializer_Factory(t) { - return new (t || _UrlSerializer)(); -}; -_UrlSerializer.ɵprov = ɵɵdefineInjectable({ - token: _UrlSerializer, - factory: () => (() => new DefaultUrlSerializer())(), - providedIn: "root" -}); -var UrlSerializer = _UrlSerializer; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(UrlSerializer, [{ - type: Injectable, - args: [{ - providedIn: "root", - useFactory: () => new DefaultUrlSerializer() - }] - }], null, null); -})(); -var DefaultUrlSerializer = class { - /** Parses a url into a `UrlTree` */ - parse(url) { - const p = new UrlParser(url); - return new UrlTree(p.parseRootSegment(), p.parseQueryParams(), p.parseFragment()); - } - /** Converts a `UrlTree` into a url */ - serialize(tree2) { - const segment = `/${serializeSegment(tree2.root, true)}`; - const query = serializeQueryParams(tree2.queryParams); - const fragment = typeof tree2.fragment === `string` ? `#${encodeUriFragment(tree2.fragment)}` : ""; - return `${segment}${query}${fragment}`; - } -}; -var DEFAULT_SERIALIZER = new DefaultUrlSerializer(); -function serializePaths(segment) { - return segment.segments.map((p) => serializePath(p)).join("/"); -} -function serializeSegment(segment, root) { - if (!segment.hasChildren()) { - return serializePaths(segment); - } - if (root) { - const primary = segment.children[PRIMARY_OUTLET] ? serializeSegment(segment.children[PRIMARY_OUTLET], false) : ""; - const children = []; - Object.entries(segment.children).forEach(([k, v]) => { - if (k !== PRIMARY_OUTLET) { - children.push(`${k}:${serializeSegment(v, false)}`); - } - }); - return children.length > 0 ? `${primary}(${children.join("//")})` : primary; - } else { - const children = mapChildrenIntoArray(segment, (v, k) => { - if (k === PRIMARY_OUTLET) { - return [serializeSegment(segment.children[PRIMARY_OUTLET], false)]; - } - return [`${k}:${serializeSegment(v, false)}`]; - }); - if (Object.keys(segment.children).length === 1 && segment.children[PRIMARY_OUTLET] != null) { - return `${serializePaths(segment)}/${children[0]}`; - } - return `${serializePaths(segment)}/(${children.join("//")})`; - } -} -function encodeUriString(s) { - return encodeURIComponent(s).replace(/%40/g, "@").replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ","); -} -function encodeUriQuery(s) { - return encodeUriString(s).replace(/%3B/gi, ";"); -} -function encodeUriFragment(s) { - return encodeURI(s); -} -function encodeUriSegment(s) { - return encodeUriString(s).replace(/\(/g, "%28").replace(/\)/g, "%29").replace(/%26/gi, "&"); -} -function decode(s) { - return decodeURIComponent(s); -} -function decodeQuery(s) { - return decode(s.replace(/\+/g, "%20")); -} -function serializePath(path) { - return `${encodeUriSegment(path.path)}${serializeMatrixParams(path.parameters)}`; -} -function serializeMatrixParams(params) { - return Object.keys(params).map((key) => `;${encodeUriSegment(key)}=${encodeUriSegment(params[key])}`).join(""); -} -function serializeQueryParams(params) { - const strParams = Object.keys(params).map((name) => { - const value = params[name]; - return Array.isArray(value) ? value.map((v) => `${encodeUriQuery(name)}=${encodeUriQuery(v)}`).join("&") : `${encodeUriQuery(name)}=${encodeUriQuery(value)}`; - }).filter((s) => !!s); - return strParams.length ? `?${strParams.join("&")}` : ""; -} -var SEGMENT_RE = /^[^\/()?;#]+/; -function matchSegments(str) { - const match2 = str.match(SEGMENT_RE); - return match2 ? match2[0] : ""; -} -var MATRIX_PARAM_SEGMENT_RE = /^[^\/()?;=#]+/; -function matchMatrixKeySegments(str) { - const match2 = str.match(MATRIX_PARAM_SEGMENT_RE); - return match2 ? match2[0] : ""; -} -var QUERY_PARAM_RE = /^[^=?&#]+/; -function matchQueryParams(str) { - const match2 = str.match(QUERY_PARAM_RE); - return match2 ? match2[0] : ""; -} -var QUERY_PARAM_VALUE_RE = /^[^&#]+/; -function matchUrlQueryParamValue(str) { - const match2 = str.match(QUERY_PARAM_VALUE_RE); - return match2 ? match2[0] : ""; -} -var UrlParser = class { - constructor(url) { - this.url = url; - this.remaining = url; - } - parseRootSegment() { - this.consumeOptional("/"); - if (this.remaining === "" || this.peekStartsWith("?") || this.peekStartsWith("#")) { - return new UrlSegmentGroup([], {}); - } - return new UrlSegmentGroup([], this.parseChildren()); - } - parseQueryParams() { - const params = {}; - if (this.consumeOptional("?")) { - do { - this.parseQueryParam(params); - } while (this.consumeOptional("&")); - } - return params; - } - parseFragment() { - return this.consumeOptional("#") ? decodeURIComponent(this.remaining) : null; - } - parseChildren() { - if (this.remaining === "") { - return {}; - } - this.consumeOptional("/"); - const segments = []; - if (!this.peekStartsWith("(")) { - segments.push(this.parseSegment()); - } - while (this.peekStartsWith("/") && !this.peekStartsWith("//") && !this.peekStartsWith("/(")) { - this.capture("/"); - segments.push(this.parseSegment()); - } - let children = {}; - if (this.peekStartsWith("/(")) { - this.capture("/"); - children = this.parseParens(true); - } - let res = {}; - if (this.peekStartsWith("(")) { - res = this.parseParens(false); - } - if (segments.length > 0 || Object.keys(children).length > 0) { - res[PRIMARY_OUTLET] = new UrlSegmentGroup(segments, children); - } - return res; - } - // parse a segment with its matrix parameters - // ie `name;k1=v1;k2` - parseSegment() { - const path = matchSegments(this.remaining); - if (path === "" && this.peekStartsWith(";")) { - throw new RuntimeError(4009, (typeof ngDevMode === "undefined" || ngDevMode) && `Empty path url segment cannot have parameters: '${this.remaining}'.`); - } - this.capture(path); - return new UrlSegment(decode(path), this.parseMatrixParams()); - } - parseMatrixParams() { - const params = {}; - while (this.consumeOptional(";")) { - this.parseParam(params); - } - return params; - } - parseParam(params) { - const key = matchMatrixKeySegments(this.remaining); - if (!key) { - return; - } - this.capture(key); - let value = ""; - if (this.consumeOptional("=")) { - const valueMatch = matchSegments(this.remaining); - if (valueMatch) { - value = valueMatch; - this.capture(value); - } - } - params[decode(key)] = decode(value); - } - // Parse a single query parameter `name[=value]` - parseQueryParam(params) { - const key = matchQueryParams(this.remaining); - if (!key) { - return; - } - this.capture(key); - let value = ""; - if (this.consumeOptional("=")) { - const valueMatch = matchUrlQueryParamValue(this.remaining); - if (valueMatch) { - value = valueMatch; - this.capture(value); - } - } - const decodedKey = decodeQuery(key); - const decodedVal = decodeQuery(value); - if (params.hasOwnProperty(decodedKey)) { - let currentVal = params[decodedKey]; - if (!Array.isArray(currentVal)) { - currentVal = [currentVal]; - params[decodedKey] = currentVal; - } - currentVal.push(decodedVal); - } else { - params[decodedKey] = decodedVal; - } - } - // parse `(a/b//outlet_name:c/d)` - parseParens(allowPrimary) { - const segments = {}; - this.capture("("); - while (!this.consumeOptional(")") && this.remaining.length > 0) { - const path = matchSegments(this.remaining); - const next = this.remaining[path.length]; - if (next !== "/" && next !== ")" && next !== ";") { - throw new RuntimeError(4010, (typeof ngDevMode === "undefined" || ngDevMode) && `Cannot parse url '${this.url}'`); - } - let outletName = void 0; - if (path.indexOf(":") > -1) { - outletName = path.slice(0, path.indexOf(":")); - this.capture(outletName); - this.capture(":"); - } else if (allowPrimary) { - outletName = PRIMARY_OUTLET; - } - const children = this.parseChildren(); - segments[outletName] = Object.keys(children).length === 1 ? children[PRIMARY_OUTLET] : new UrlSegmentGroup([], children); - this.consumeOptional("//"); - } - return segments; - } - peekStartsWith(str) { - return this.remaining.startsWith(str); - } - // Consumes the prefix when it is present and returns whether it has been consumed - consumeOptional(str) { - if (this.peekStartsWith(str)) { - this.remaining = this.remaining.substring(str.length); - return true; - } - return false; - } - capture(str) { - if (!this.consumeOptional(str)) { - throw new RuntimeError(4011, (typeof ngDevMode === "undefined" || ngDevMode) && `Expected "${str}".`); - } - } -}; -function createRoot(rootCandidate) { - return rootCandidate.segments.length > 0 ? new UrlSegmentGroup([], { - [PRIMARY_OUTLET]: rootCandidate - }) : rootCandidate; -} -function squashSegmentGroup(segmentGroup) { - const newChildren = {}; - for (const childOutlet of Object.keys(segmentGroup.children)) { - const child = segmentGroup.children[childOutlet]; - const childCandidate = squashSegmentGroup(child); - if (childOutlet === PRIMARY_OUTLET && childCandidate.segments.length === 0 && childCandidate.hasChildren()) { - for (const [grandChildOutlet, grandChild] of Object.entries(childCandidate.children)) { - newChildren[grandChildOutlet] = grandChild; - } - } else if (childCandidate.segments.length > 0 || childCandidate.hasChildren()) { - newChildren[childOutlet] = childCandidate; - } - } - const s = new UrlSegmentGroup(segmentGroup.segments, newChildren); - return mergeTrivialChildren(s); -} -function mergeTrivialChildren(s) { - if (s.numberOfChildren === 1 && s.children[PRIMARY_OUTLET]) { - const c = s.children[PRIMARY_OUTLET]; - return new UrlSegmentGroup(s.segments.concat(c.segments), c.children); - } - return s; -} -function isUrlTree(v) { - return v instanceof UrlTree; -} -function createUrlTreeFromSnapshot(relativeTo, commands, queryParams = null, fragment = null) { - const relativeToUrlSegmentGroup = createSegmentGroupFromRoute(relativeTo); - return createUrlTreeFromSegmentGroup(relativeToUrlSegmentGroup, commands, queryParams, fragment); -} -function createSegmentGroupFromRoute(route) { - let targetGroup; - function createSegmentGroupFromRouteRecursive(currentRoute) { - const childOutlets = {}; - for (const childSnapshot of currentRoute.children) { - const root = createSegmentGroupFromRouteRecursive(childSnapshot); - childOutlets[childSnapshot.outlet] = root; - } - const segmentGroup = new UrlSegmentGroup(currentRoute.url, childOutlets); - if (currentRoute === route) { - targetGroup = segmentGroup; - } - return segmentGroup; - } - const rootCandidate = createSegmentGroupFromRouteRecursive(route.root); - const rootSegmentGroup = createRoot(rootCandidate); - return targetGroup ?? rootSegmentGroup; -} -function createUrlTreeFromSegmentGroup(relativeTo, commands, queryParams, fragment) { - let root = relativeTo; - while (root.parent) { - root = root.parent; - } - if (commands.length === 0) { - return tree(root, root, root, queryParams, fragment); - } - const nav = computeNavigation(commands); - if (nav.toRoot()) { - return tree(root, root, new UrlSegmentGroup([], {}), queryParams, fragment); - } - const position = findStartingPositionForTargetGroup(nav, root, relativeTo); - const newSegmentGroup = position.processChildren ? updateSegmentGroupChildren(position.segmentGroup, position.index, nav.commands) : updateSegmentGroup(position.segmentGroup, position.index, nav.commands); - return tree(root, position.segmentGroup, newSegmentGroup, queryParams, fragment); -} -function isMatrixParams(command) { - return typeof command === "object" && command != null && !command.outlets && !command.segmentPath; -} -function isCommandWithOutlets(command) { - return typeof command === "object" && command != null && command.outlets; -} -function tree(oldRoot, oldSegmentGroup, newSegmentGroup, queryParams, fragment) { - let qp = {}; - if (queryParams) { - Object.entries(queryParams).forEach(([name, value]) => { - qp[name] = Array.isArray(value) ? value.map((v) => `${v}`) : `${value}`; - }); - } - let rootCandidate; - if (oldRoot === oldSegmentGroup) { - rootCandidate = newSegmentGroup; - } else { - rootCandidate = replaceSegment(oldRoot, oldSegmentGroup, newSegmentGroup); - } - const newRoot = createRoot(squashSegmentGroup(rootCandidate)); - return new UrlTree(newRoot, qp, fragment); -} -function replaceSegment(current, oldSegment, newSegment) { - const children = {}; - Object.entries(current.children).forEach(([outletName, c]) => { - if (c === oldSegment) { - children[outletName] = newSegment; - } else { - children[outletName] = replaceSegment(c, oldSegment, newSegment); - } - }); - return new UrlSegmentGroup(current.segments, children); -} -var Navigation = class { - constructor(isAbsolute, numberOfDoubleDots, commands) { - this.isAbsolute = isAbsolute; - this.numberOfDoubleDots = numberOfDoubleDots; - this.commands = commands; - if (isAbsolute && commands.length > 0 && isMatrixParams(commands[0])) { - throw new RuntimeError(4003, (typeof ngDevMode === "undefined" || ngDevMode) && "Root segment cannot have matrix parameters"); - } - const cmdWithOutlet = commands.find(isCommandWithOutlets); - if (cmdWithOutlet && cmdWithOutlet !== last2(commands)) { - throw new RuntimeError(4004, (typeof ngDevMode === "undefined" || ngDevMode) && "{outlets:{}} has to be the last command"); - } - } - toRoot() { - return this.isAbsolute && this.commands.length === 1 && this.commands[0] == "/"; - } -}; -function computeNavigation(commands) { - if (typeof commands[0] === "string" && commands.length === 1 && commands[0] === "/") { - return new Navigation(true, 0, commands); - } - let numberOfDoubleDots = 0; - let isAbsolute = false; - const res = commands.reduce((res2, cmd, cmdIdx) => { - if (typeof cmd === "object" && cmd != null) { - if (cmd.outlets) { - const outlets = {}; - Object.entries(cmd.outlets).forEach(([name, commands2]) => { - outlets[name] = typeof commands2 === "string" ? commands2.split("/") : commands2; - }); - return [...res2, { - outlets - }]; - } - if (cmd.segmentPath) { - return [...res2, cmd.segmentPath]; - } - } - if (!(typeof cmd === "string")) { - return [...res2, cmd]; - } - if (cmdIdx === 0) { - cmd.split("/").forEach((urlPart, partIndex) => { - if (partIndex == 0 && urlPart === ".") { - } else if (partIndex == 0 && urlPart === "") { - isAbsolute = true; - } else if (urlPart === "..") { - numberOfDoubleDots++; - } else if (urlPart != "") { - res2.push(urlPart); - } - }); - return res2; - } - return [...res2, cmd]; - }, []); - return new Navigation(isAbsolute, numberOfDoubleDots, res); -} -var Position = class { - constructor(segmentGroup, processChildren, index) { - this.segmentGroup = segmentGroup; - this.processChildren = processChildren; - this.index = index; - } -}; -function findStartingPositionForTargetGroup(nav, root, target) { - if (nav.isAbsolute) { - return new Position(root, true, 0); - } - if (!target) { - return new Position(root, false, NaN); - } - if (target.parent === null) { - return new Position(target, true, 0); - } - const modifier = isMatrixParams(nav.commands[0]) ? 0 : 1; - const index = target.segments.length - 1 + modifier; - return createPositionApplyingDoubleDots(target, index, nav.numberOfDoubleDots); -} -function createPositionApplyingDoubleDots(group, index, numberOfDoubleDots) { - let g = group; - let ci = index; - let dd = numberOfDoubleDots; - while (dd > ci) { - dd -= ci; - g = g.parent; - if (!g) { - throw new RuntimeError(4005, (typeof ngDevMode === "undefined" || ngDevMode) && "Invalid number of '../'"); - } - ci = g.segments.length; - } - return new Position(g, false, ci - dd); -} -function getOutlets(commands) { - if (isCommandWithOutlets(commands[0])) { - return commands[0].outlets; - } - return { - [PRIMARY_OUTLET]: commands - }; -} -function updateSegmentGroup(segmentGroup, startIndex, commands) { - if (!segmentGroup) { - segmentGroup = new UrlSegmentGroup([], {}); - } - if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) { - return updateSegmentGroupChildren(segmentGroup, startIndex, commands); - } - const m = prefixedWith(segmentGroup, startIndex, commands); - const slicedCommands = commands.slice(m.commandIndex); - if (m.match && m.pathIndex < segmentGroup.segments.length) { - const g = new UrlSegmentGroup(segmentGroup.segments.slice(0, m.pathIndex), {}); - g.children[PRIMARY_OUTLET] = new UrlSegmentGroup(segmentGroup.segments.slice(m.pathIndex), segmentGroup.children); - return updateSegmentGroupChildren(g, 0, slicedCommands); - } else if (m.match && slicedCommands.length === 0) { - return new UrlSegmentGroup(segmentGroup.segments, {}); - } else if (m.match && !segmentGroup.hasChildren()) { - return createNewSegmentGroup(segmentGroup, startIndex, commands); - } else if (m.match) { - return updateSegmentGroupChildren(segmentGroup, 0, slicedCommands); - } else { - return createNewSegmentGroup(segmentGroup, startIndex, commands); - } -} -function updateSegmentGroupChildren(segmentGroup, startIndex, commands) { - if (commands.length === 0) { - return new UrlSegmentGroup(segmentGroup.segments, {}); - } else { - const outlets = getOutlets(commands); - const children = {}; - if (Object.keys(outlets).some((o) => o !== PRIMARY_OUTLET) && segmentGroup.children[PRIMARY_OUTLET] && segmentGroup.numberOfChildren === 1 && segmentGroup.children[PRIMARY_OUTLET].segments.length === 0) { - const childrenOfEmptyChild = updateSegmentGroupChildren(segmentGroup.children[PRIMARY_OUTLET], startIndex, commands); - return new UrlSegmentGroup(segmentGroup.segments, childrenOfEmptyChild.children); - } - Object.entries(outlets).forEach(([outlet, commands2]) => { - if (typeof commands2 === "string") { - commands2 = [commands2]; - } - if (commands2 !== null) { - children[outlet] = updateSegmentGroup(segmentGroup.children[outlet], startIndex, commands2); - } - }); - Object.entries(segmentGroup.children).forEach(([childOutlet, child]) => { - if (outlets[childOutlet] === void 0) { - children[childOutlet] = child; - } - }); - return new UrlSegmentGroup(segmentGroup.segments, children); - } -} -function prefixedWith(segmentGroup, startIndex, commands) { - let currentCommandIndex = 0; - let currentPathIndex = startIndex; - const noMatch2 = { - match: false, - pathIndex: 0, - commandIndex: 0 - }; - while (currentPathIndex < segmentGroup.segments.length) { - if (currentCommandIndex >= commands.length) - return noMatch2; - const path = segmentGroup.segments[currentPathIndex]; - const command = commands[currentCommandIndex]; - if (isCommandWithOutlets(command)) { - break; - } - const curr = `${command}`; - const next = currentCommandIndex < commands.length - 1 ? commands[currentCommandIndex + 1] : null; - if (currentPathIndex > 0 && curr === void 0) - break; - if (curr && next && typeof next === "object" && next.outlets === void 0) { - if (!compare(curr, next, path)) - return noMatch2; - currentCommandIndex += 2; - } else { - if (!compare(curr, {}, path)) - return noMatch2; - currentCommandIndex++; - } - currentPathIndex++; - } - return { - match: true, - pathIndex: currentPathIndex, - commandIndex: currentCommandIndex - }; -} -function createNewSegmentGroup(segmentGroup, startIndex, commands) { - const paths = segmentGroup.segments.slice(0, startIndex); - let i = 0; - while (i < commands.length) { - const command = commands[i]; - if (isCommandWithOutlets(command)) { - const children = createNewSegmentChildren(command.outlets); - return new UrlSegmentGroup(paths, children); - } - if (i === 0 && isMatrixParams(commands[0])) { - const p = segmentGroup.segments[startIndex]; - paths.push(new UrlSegment(p.path, stringify(commands[0]))); - i++; - continue; - } - const curr = isCommandWithOutlets(command) ? command.outlets[PRIMARY_OUTLET] : `${command}`; - const next = i < commands.length - 1 ? commands[i + 1] : null; - if (curr && next && isMatrixParams(next)) { - paths.push(new UrlSegment(curr, stringify(next))); - i += 2; - } else { - paths.push(new UrlSegment(curr, {})); - i++; - } - } - return new UrlSegmentGroup(paths, {}); -} -function createNewSegmentChildren(outlets) { - const children = {}; - Object.entries(outlets).forEach(([outlet, commands]) => { - if (typeof commands === "string") { - commands = [commands]; - } - if (commands !== null) { - children[outlet] = createNewSegmentGroup(new UrlSegmentGroup([], {}), 0, commands); - } - }); - return children; -} -function stringify(params) { - const res = {}; - Object.entries(params).forEach(([k, v]) => res[k] = `${v}`); - return res; -} -function compare(path, params, segment) { - return path == segment.path && shallowEqual(params, segment.parameters); -} -var IMPERATIVE_NAVIGATION = "imperative"; -var RouterEvent = class { - constructor(id, url) { - this.id = id; - this.url = url; - } -}; -var NavigationStart = class extends RouterEvent { - constructor(id, url, navigationTrigger = "imperative", restoredState = null) { - super(id, url); - this.type = 0; - this.navigationTrigger = navigationTrigger; - this.restoredState = restoredState; - } - /** @docsNotRequired */ - toString() { - return `NavigationStart(id: ${this.id}, url: '${this.url}')`; - } -}; -var NavigationEnd = class extends RouterEvent { - constructor(id, url, urlAfterRedirects) { - super(id, url); - this.urlAfterRedirects = urlAfterRedirects; - this.type = 1; - } - /** @docsNotRequired */ - toString() { - return `NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`; - } -}; -var NavigationCancel = class extends RouterEvent { - constructor(id, url, reason, code) { - super(id, url); - this.reason = reason; - this.code = code; - this.type = 2; - } - /** @docsNotRequired */ - toString() { - return `NavigationCancel(id: ${this.id}, url: '${this.url}')`; - } -}; -var NavigationSkipped = class extends RouterEvent { - constructor(id, url, reason, code) { - super(id, url); - this.reason = reason; - this.code = code; - this.type = 16; - } -}; -var NavigationError = class extends RouterEvent { - constructor(id, url, error, target) { - super(id, url); - this.error = error; - this.target = target; - this.type = 3; - } - /** @docsNotRequired */ - toString() { - return `NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`; - } -}; -var RoutesRecognized = class extends RouterEvent { - constructor(id, url, urlAfterRedirects, state) { - super(id, url); - this.urlAfterRedirects = urlAfterRedirects; - this.state = state; - this.type = 4; - } - /** @docsNotRequired */ - toString() { - return `RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`; - } -}; -var GuardsCheckStart = class extends RouterEvent { - constructor(id, url, urlAfterRedirects, state) { - super(id, url); - this.urlAfterRedirects = urlAfterRedirects; - this.state = state; - this.type = 7; - } - toString() { - return `GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`; - } -}; -var GuardsCheckEnd = class extends RouterEvent { - constructor(id, url, urlAfterRedirects, state, shouldActivate) { - super(id, url); - this.urlAfterRedirects = urlAfterRedirects; - this.state = state; - this.shouldActivate = shouldActivate; - this.type = 8; - } - toString() { - return `GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`; - } -}; -var ResolveStart = class extends RouterEvent { - constructor(id, url, urlAfterRedirects, state) { - super(id, url); - this.urlAfterRedirects = urlAfterRedirects; - this.state = state; - this.type = 5; - } - toString() { - return `ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`; - } -}; -var ResolveEnd = class extends RouterEvent { - constructor(id, url, urlAfterRedirects, state) { - super(id, url); - this.urlAfterRedirects = urlAfterRedirects; - this.state = state; - this.type = 6; - } - toString() { - return `ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`; - } -}; -var RouteConfigLoadStart = class { - constructor(route) { - this.route = route; - this.type = 9; - } - toString() { - return `RouteConfigLoadStart(path: ${this.route.path})`; - } -}; -var RouteConfigLoadEnd = class { - constructor(route) { - this.route = route; - this.type = 10; - } - toString() { - return `RouteConfigLoadEnd(path: ${this.route.path})`; - } -}; -var ChildActivationStart = class { - constructor(snapshot) { - this.snapshot = snapshot; - this.type = 11; - } - toString() { - const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || ""; - return `ChildActivationStart(path: '${path}')`; - } -}; -var ChildActivationEnd = class { - constructor(snapshot) { - this.snapshot = snapshot; - this.type = 12; - } - toString() { - const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || ""; - return `ChildActivationEnd(path: '${path}')`; - } -}; -var ActivationStart = class { - constructor(snapshot) { - this.snapshot = snapshot; - this.type = 13; - } - toString() { - const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || ""; - return `ActivationStart(path: '${path}')`; - } -}; -var ActivationEnd = class { - constructor(snapshot) { - this.snapshot = snapshot; - this.type = 14; - } - toString() { - const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || ""; - return `ActivationEnd(path: '${path}')`; - } -}; -var Scroll = class { - constructor(routerEvent, position, anchor) { - this.routerEvent = routerEvent; - this.position = position; - this.anchor = anchor; - this.type = 15; - } - toString() { - const pos = this.position ? `${this.position[0]}, ${this.position[1]}` : null; - return `Scroll(anchor: '${this.anchor}', position: '${pos}')`; - } -}; -var BeforeActivateRoutes = class { -}; -var RedirectRequest = class { - constructor(url) { - this.url = url; - } -}; -function stringifyEvent(routerEvent) { - switch (routerEvent.type) { - case 14: - return `ActivationEnd(path: '${routerEvent.snapshot.routeConfig?.path || ""}')`; - case 13: - return `ActivationStart(path: '${routerEvent.snapshot.routeConfig?.path || ""}')`; - case 12: - return `ChildActivationEnd(path: '${routerEvent.snapshot.routeConfig?.path || ""}')`; - case 11: - return `ChildActivationStart(path: '${routerEvent.snapshot.routeConfig?.path || ""}')`; - case 8: - return `GuardsCheckEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state}, shouldActivate: ${routerEvent.shouldActivate})`; - case 7: - return `GuardsCheckStart(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`; - case 2: - return `NavigationCancel(id: ${routerEvent.id}, url: '${routerEvent.url}')`; - case 16: - return `NavigationSkipped(id: ${routerEvent.id}, url: '${routerEvent.url}')`; - case 1: - return `NavigationEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}')`; - case 3: - return `NavigationError(id: ${routerEvent.id}, url: '${routerEvent.url}', error: ${routerEvent.error})`; - case 0: - return `NavigationStart(id: ${routerEvent.id}, url: '${routerEvent.url}')`; - case 6: - return `ResolveEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`; - case 5: - return `ResolveStart(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`; - case 10: - return `RouteConfigLoadEnd(path: ${routerEvent.route.path})`; - case 9: - return `RouteConfigLoadStart(path: ${routerEvent.route.path})`; - case 4: - return `RoutesRecognized(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`; - case 15: - const pos = routerEvent.position ? `${routerEvent.position[0]}, ${routerEvent.position[1]}` : null; - return `Scroll(anchor: '${routerEvent.anchor}', position: '${pos}')`; - } -} -var OutletContext = class { - constructor() { - this.outlet = null; - this.route = null; - this.injector = null; - this.children = new ChildrenOutletContexts(); - this.attachRef = null; - } -}; -var _ChildrenOutletContexts = class _ChildrenOutletContexts { - constructor() { - this.contexts = /* @__PURE__ */ new Map(); - } - /** Called when a `RouterOutlet` directive is instantiated */ - onChildOutletCreated(childName, outlet) { - const context = this.getOrCreateContext(childName); - context.outlet = outlet; - this.contexts.set(childName, context); - } - /** - * Called when a `RouterOutlet` directive is destroyed. - * We need to keep the context as the outlet could be destroyed inside a NgIf and might be - * re-created later. - */ - onChildOutletDestroyed(childName) { - const context = this.getContext(childName); - if (context) { - context.outlet = null; - context.attachRef = null; - } - } - /** - * Called when the corresponding route is deactivated during navigation. - * Because the component get destroyed, all children outlet are destroyed. - */ - onOutletDeactivated() { - const contexts = this.contexts; - this.contexts = /* @__PURE__ */ new Map(); - return contexts; - } - onOutletReAttached(contexts) { - this.contexts = contexts; - } - getOrCreateContext(childName) { - let context = this.getContext(childName); - if (!context) { - context = new OutletContext(); - this.contexts.set(childName, context); - } - return context; - } - getContext(childName) { - return this.contexts.get(childName) || null; - } -}; -_ChildrenOutletContexts.ɵfac = function ChildrenOutletContexts_Factory(t) { - return new (t || _ChildrenOutletContexts)(); -}; -_ChildrenOutletContexts.ɵprov = ɵɵdefineInjectable({ - token: _ChildrenOutletContexts, - factory: _ChildrenOutletContexts.ɵfac, - providedIn: "root" -}); -var ChildrenOutletContexts = _ChildrenOutletContexts; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ChildrenOutletContexts, [{ - type: Injectable, - args: [{ - providedIn: "root" - }] - }], null, null); -})(); -var Tree = class { - constructor(root) { - this._root = root; - } - get root() { - return this._root.value; - } - /** - * @internal - */ - parent(t) { - const p = this.pathFromRoot(t); - return p.length > 1 ? p[p.length - 2] : null; - } - /** - * @internal - */ - children(t) { - const n = findNode(t, this._root); - return n ? n.children.map((t2) => t2.value) : []; - } - /** - * @internal - */ - firstChild(t) { - const n = findNode(t, this._root); - return n && n.children.length > 0 ? n.children[0].value : null; - } - /** - * @internal - */ - siblings(t) { - const p = findPath(t, this._root); - if (p.length < 2) - return []; - const c = p[p.length - 2].children.map((c2) => c2.value); - return c.filter((cc) => cc !== t); - } - /** - * @internal - */ - pathFromRoot(t) { - return findPath(t, this._root).map((s) => s.value); - } -}; -function findNode(value, node) { - if (value === node.value) - return node; - for (const child of node.children) { - const node2 = findNode(value, child); - if (node2) - return node2; - } - return null; -} -function findPath(value, node) { - if (value === node.value) - return [node]; - for (const child of node.children) { - const path = findPath(value, child); - if (path.length) { - path.unshift(node); - return path; - } - } - return []; -} -var TreeNode = class { - constructor(value, children) { - this.value = value; - this.children = children; - } - toString() { - return `TreeNode(${this.value})`; - } -}; -function nodeChildrenAsMap(node) { - const map2 = {}; - if (node) { - node.children.forEach((child) => map2[child.value.outlet] = child); - } - return map2; -} -var RouterState = class extends Tree { - /** @internal */ - constructor(root, snapshot) { - super(root); - this.snapshot = snapshot; - setRouterState(this, root); - } - toString() { - return this.snapshot.toString(); - } -}; -function createEmptyState(urlTree, rootComponent) { - const snapshot = createEmptyStateSnapshot(urlTree, rootComponent); - const emptyUrl = new BehaviorSubject([new UrlSegment("", {})]); - const emptyParams = new BehaviorSubject({}); - const emptyData = new BehaviorSubject({}); - const emptyQueryParams = new BehaviorSubject({}); - const fragment = new BehaviorSubject(""); - const activated = new ActivatedRoute(emptyUrl, emptyParams, emptyQueryParams, fragment, emptyData, PRIMARY_OUTLET, rootComponent, snapshot.root); - activated.snapshot = snapshot.root; - return new RouterState(new TreeNode(activated, []), snapshot); -} -function createEmptyStateSnapshot(urlTree, rootComponent) { - const emptyParams = {}; - const emptyData = {}; - const emptyQueryParams = {}; - const fragment = ""; - const activated = new ActivatedRouteSnapshot([], emptyParams, emptyQueryParams, fragment, emptyData, PRIMARY_OUTLET, rootComponent, null, {}); - return new RouterStateSnapshot("", new TreeNode(activated, [])); -} -var ActivatedRoute = class { - /** @internal */ - constructor(urlSubject, paramsSubject, queryParamsSubject, fragmentSubject, dataSubject, outlet, component, futureSnapshot) { - this.urlSubject = urlSubject; - this.paramsSubject = paramsSubject; - this.queryParamsSubject = queryParamsSubject; - this.fragmentSubject = fragmentSubject; - this.dataSubject = dataSubject; - this.outlet = outlet; - this.component = component; - this._futureSnapshot = futureSnapshot; - this.title = this.dataSubject?.pipe(map((d) => d[RouteTitleKey])) ?? of(void 0); - this.url = urlSubject; - this.params = paramsSubject; - this.queryParams = queryParamsSubject; - this.fragment = fragmentSubject; - this.data = dataSubject; - } - /** The configuration used to match this route. */ - get routeConfig() { - return this._futureSnapshot.routeConfig; - } - /** The root of the router state. */ - get root() { - return this._routerState.root; - } - /** The parent of this route in the router state tree. */ - get parent() { - return this._routerState.parent(this); - } - /** The first child of this route in the router state tree. */ - get firstChild() { - return this._routerState.firstChild(this); - } - /** The children of this route in the router state tree. */ - get children() { - return this._routerState.children(this); - } - /** The path from the root of the router state tree to this route. */ - get pathFromRoot() { - return this._routerState.pathFromRoot(this); - } - /** - * An Observable that contains a map of the required and optional parameters - * specific to the route. - * The map supports retrieving single and multiple values from the same parameter. - */ - get paramMap() { - if (!this._paramMap) { - this._paramMap = this.params.pipe(map((p) => convertToParamMap(p))); - } - return this._paramMap; - } - /** - * An Observable that contains a map of the query parameters available to all routes. - * The map supports retrieving single and multiple values from the query parameter. - */ - get queryParamMap() { - if (!this._queryParamMap) { - this._queryParamMap = this.queryParams.pipe(map((p) => convertToParamMap(p))); - } - return this._queryParamMap; - } - toString() { - return this.snapshot ? this.snapshot.toString() : `Future(${this._futureSnapshot})`; - } -}; -function getInherited(route, parent, paramsInheritanceStrategy = "emptyOnly") { - let inherited; - const { - routeConfig - } = route; - if (parent !== null && (paramsInheritanceStrategy === "always" || // inherit parent data if route is empty path - routeConfig?.path === "" || // inherit parent data if parent was componentless - !parent.component && !parent.routeConfig?.loadComponent)) { - inherited = { - params: __spreadValues(__spreadValues({}, parent.params), route.params), - data: __spreadValues(__spreadValues({}, parent.data), route.data), - resolve: __spreadValues(__spreadValues(__spreadValues(__spreadValues({}, route.data), parent.data), routeConfig?.data), route._resolvedData) - }; - } else { - inherited = { - params: route.params, - data: route.data, - resolve: __spreadValues(__spreadValues({}, route.data), route._resolvedData ?? {}) - }; - } - if (routeConfig && hasStaticTitle(routeConfig)) { - inherited.resolve[RouteTitleKey] = routeConfig.title; - } - return inherited; -} -var ActivatedRouteSnapshot = class { - /** The resolved route title */ - get title() { - return this.data?.[RouteTitleKey]; - } - /** @internal */ - constructor(url, params, queryParams, fragment, data, outlet, component, routeConfig, resolve) { - this.url = url; - this.params = params; - this.queryParams = queryParams; - this.fragment = fragment; - this.data = data; - this.outlet = outlet; - this.component = component; - this.routeConfig = routeConfig; - this._resolve = resolve; - } - /** The root of the router state */ - get root() { - return this._routerState.root; - } - /** The parent of this route in the router state tree */ - get parent() { - return this._routerState.parent(this); - } - /** The first child of this route in the router state tree */ - get firstChild() { - return this._routerState.firstChild(this); - } - /** The children of this route in the router state tree */ - get children() { - return this._routerState.children(this); - } - /** The path from the root of the router state tree to this route */ - get pathFromRoot() { - return this._routerState.pathFromRoot(this); - } - get paramMap() { - if (!this._paramMap) { - this._paramMap = convertToParamMap(this.params); - } - return this._paramMap; - } - get queryParamMap() { - if (!this._queryParamMap) { - this._queryParamMap = convertToParamMap(this.queryParams); - } - return this._queryParamMap; - } - toString() { - const url = this.url.map((segment) => segment.toString()).join("/"); - const matched = this.routeConfig ? this.routeConfig.path : ""; - return `Route(url:'${url}', path:'${matched}')`; - } -}; -var RouterStateSnapshot = class extends Tree { - /** @internal */ - constructor(url, root) { - super(root); - this.url = url; - setRouterState(this, root); - } - toString() { - return serializeNode(this._root); - } -}; -function setRouterState(state, node) { - node.value._routerState = state; - node.children.forEach((c) => setRouterState(state, c)); -} -function serializeNode(node) { - const c = node.children.length > 0 ? ` { ${node.children.map(serializeNode).join(", ")} } ` : ""; - return `${node.value}${c}`; -} -function advanceActivatedRoute(route) { - if (route.snapshot) { - const currentSnapshot = route.snapshot; - const nextSnapshot = route._futureSnapshot; - route.snapshot = nextSnapshot; - if (!shallowEqual(currentSnapshot.queryParams, nextSnapshot.queryParams)) { - route.queryParamsSubject.next(nextSnapshot.queryParams); - } - if (currentSnapshot.fragment !== nextSnapshot.fragment) { - route.fragmentSubject.next(nextSnapshot.fragment); - } - if (!shallowEqual(currentSnapshot.params, nextSnapshot.params)) { - route.paramsSubject.next(nextSnapshot.params); - } - if (!shallowEqualArrays(currentSnapshot.url, nextSnapshot.url)) { - route.urlSubject.next(nextSnapshot.url); - } - if (!shallowEqual(currentSnapshot.data, nextSnapshot.data)) { - route.dataSubject.next(nextSnapshot.data); - } - } else { - route.snapshot = route._futureSnapshot; - route.dataSubject.next(route._futureSnapshot.data); - } -} -function equalParamsAndUrlSegments(a, b) { - const equalUrlParams = shallowEqual(a.params, b.params) && equalSegments(a.url, b.url); - const parentsMismatch = !a.parent !== !b.parent; - return equalUrlParams && !parentsMismatch && (!a.parent || equalParamsAndUrlSegments(a.parent, b.parent)); -} -function hasStaticTitle(config) { - return typeof config.title === "string" || config.title === null; -} -var _RouterOutlet = class _RouterOutlet { - constructor() { - this.activated = null; - this._activatedRoute = null; - this.name = PRIMARY_OUTLET; - this.activateEvents = new EventEmitter(); - this.deactivateEvents = new EventEmitter(); - this.attachEvents = new EventEmitter(); - this.detachEvents = new EventEmitter(); - this.parentContexts = inject(ChildrenOutletContexts); - this.location = inject(ViewContainerRef); - this.changeDetector = inject(ChangeDetectorRef); - this.environmentInjector = inject(EnvironmentInjector); - this.inputBinder = inject(INPUT_BINDER, { - optional: true - }); - this.supportsBindingToComponentInputs = true; - } - /** @internal */ - get activatedComponentRef() { - return this.activated; - } - /** @nodoc */ - ngOnChanges(changes) { - if (changes["name"]) { - const { - firstChange, - previousValue - } = changes["name"]; - if (firstChange) { - return; - } - if (this.isTrackedInParentContexts(previousValue)) { - this.deactivate(); - this.parentContexts.onChildOutletDestroyed(previousValue); - } - this.initializeOutletWithName(); - } - } - /** @nodoc */ - ngOnDestroy() { - if (this.isTrackedInParentContexts(this.name)) { - this.parentContexts.onChildOutletDestroyed(this.name); - } - this.inputBinder?.unsubscribeFromRouteData(this); - } - isTrackedInParentContexts(outletName) { - return this.parentContexts.getContext(outletName)?.outlet === this; - } - /** @nodoc */ - ngOnInit() { - this.initializeOutletWithName(); - } - initializeOutletWithName() { - this.parentContexts.onChildOutletCreated(this.name, this); - if (this.activated) { - return; - } - const context = this.parentContexts.getContext(this.name); - if (context?.route) { - if (context.attachRef) { - this.attach(context.attachRef, context.route); - } else { - this.activateWith(context.route, context.injector); - } - } - } - get isActivated() { - return !!this.activated; - } - /** - * @returns The currently activated component instance. - * @throws An error if the outlet is not activated. - */ - get component() { - if (!this.activated) - throw new RuntimeError(4012, (typeof ngDevMode === "undefined" || ngDevMode) && "Outlet is not activated"); - return this.activated.instance; - } - get activatedRoute() { - if (!this.activated) - throw new RuntimeError(4012, (typeof ngDevMode === "undefined" || ngDevMode) && "Outlet is not activated"); - return this._activatedRoute; - } - get activatedRouteData() { - if (this._activatedRoute) { - return this._activatedRoute.snapshot.data; - } - return {}; - } - /** - * Called when the `RouteReuseStrategy` instructs to detach the subtree - */ - detach() { - if (!this.activated) - throw new RuntimeError(4012, (typeof ngDevMode === "undefined" || ngDevMode) && "Outlet is not activated"); - this.location.detach(); - const cmp = this.activated; - this.activated = null; - this._activatedRoute = null; - this.detachEvents.emit(cmp.instance); - return cmp; - } - /** - * Called when the `RouteReuseStrategy` instructs to re-attach a previously detached subtree - */ - attach(ref, activatedRoute) { - this.activated = ref; - this._activatedRoute = activatedRoute; - this.location.insert(ref.hostView); - this.inputBinder?.bindActivatedRouteToOutletComponent(this); - this.attachEvents.emit(ref.instance); - } - deactivate() { - if (this.activated) { - const c = this.component; - this.activated.destroy(); - this.activated = null; - this._activatedRoute = null; - this.deactivateEvents.emit(c); - } - } - activateWith(activatedRoute, environmentInjector) { - if (this.isActivated) { - throw new RuntimeError(4013, (typeof ngDevMode === "undefined" || ngDevMode) && "Cannot activate an already activated outlet"); - } - this._activatedRoute = activatedRoute; - const location = this.location; - const snapshot = activatedRoute.snapshot; - const component = snapshot.component; - const childContexts = this.parentContexts.getOrCreateContext(this.name).children; - const injector = new OutletInjector(activatedRoute, childContexts, location.injector); - this.activated = location.createComponent(component, { - index: location.length, - injector, - environmentInjector: environmentInjector ?? this.environmentInjector - }); - this.changeDetector.markForCheck(); - this.inputBinder?.bindActivatedRouteToOutletComponent(this); - this.activateEvents.emit(this.activated.instance); - } -}; -_RouterOutlet.ɵfac = function RouterOutlet_Factory(t) { - return new (t || _RouterOutlet)(); -}; -_RouterOutlet.ɵdir = ɵɵdefineDirective({ - type: _RouterOutlet, - selectors: [["router-outlet"]], - inputs: { - name: "name" - }, - outputs: { - activateEvents: "activate", - deactivateEvents: "deactivate", - attachEvents: "attach", - detachEvents: "detach" - }, - exportAs: ["outlet"], - standalone: true, - features: [ɵɵNgOnChangesFeature] -}); -var RouterOutlet = _RouterOutlet; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RouterOutlet, [{ - type: Directive, - args: [{ - selector: "router-outlet", - exportAs: "outlet", - standalone: true - }] - }], null, { - name: [{ - type: Input - }], - activateEvents: [{ - type: Output, - args: ["activate"] - }], - deactivateEvents: [{ - type: Output, - args: ["deactivate"] - }], - attachEvents: [{ - type: Output, - args: ["attach"] - }], - detachEvents: [{ - type: Output, - args: ["detach"] - }] - }); -})(); -var OutletInjector = class { - constructor(route, childContexts, parent) { - this.route = route; - this.childContexts = childContexts; - this.parent = parent; - } - get(token, notFoundValue) { - if (token === ActivatedRoute) { - return this.route; - } - if (token === ChildrenOutletContexts) { - return this.childContexts; - } - return this.parent.get(token, notFoundValue); - } -}; -var INPUT_BINDER = new InjectionToken(""); -var _RoutedComponentInputBinder = class _RoutedComponentInputBinder { - constructor() { - this.outletDataSubscriptions = /* @__PURE__ */ new Map(); - } - bindActivatedRouteToOutletComponent(outlet) { - this.unsubscribeFromRouteData(outlet); - this.subscribeToRouteData(outlet); - } - unsubscribeFromRouteData(outlet) { - this.outletDataSubscriptions.get(outlet)?.unsubscribe(); - this.outletDataSubscriptions.delete(outlet); - } - subscribeToRouteData(outlet) { - const { - activatedRoute - } = outlet; - const dataSubscription = combineLatest([activatedRoute.queryParams, activatedRoute.params, activatedRoute.data]).pipe(switchMap(([queryParams, params, data], index) => { - data = __spreadValues(__spreadValues(__spreadValues({}, queryParams), params), data); - if (index === 0) { - return of(data); - } - return Promise.resolve(data); - })).subscribe((data) => { - if (!outlet.isActivated || !outlet.activatedComponentRef || outlet.activatedRoute !== activatedRoute || activatedRoute.component === null) { - this.unsubscribeFromRouteData(outlet); - return; - } - const mirror = reflectComponentType(activatedRoute.component); - if (!mirror) { - this.unsubscribeFromRouteData(outlet); - return; - } - for (const { - templateName - } of mirror.inputs) { - outlet.activatedComponentRef.setInput(templateName, data[templateName]); - } - }); - this.outletDataSubscriptions.set(outlet, dataSubscription); - } -}; -_RoutedComponentInputBinder.ɵfac = function RoutedComponentInputBinder_Factory(t) { - return new (t || _RoutedComponentInputBinder)(); -}; -_RoutedComponentInputBinder.ɵprov = ɵɵdefineInjectable({ - token: _RoutedComponentInputBinder, - factory: _RoutedComponentInputBinder.ɵfac -}); -var RoutedComponentInputBinder = _RoutedComponentInputBinder; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RoutedComponentInputBinder, [{ - type: Injectable - }], null, null); -})(); -function createRouterState(routeReuseStrategy, curr, prevState) { - const root = createNode(routeReuseStrategy, curr._root, prevState ? prevState._root : void 0); - return new RouterState(root, curr); -} -function createNode(routeReuseStrategy, curr, prevState) { - if (prevState && routeReuseStrategy.shouldReuseRoute(curr.value, prevState.value.snapshot)) { - const value = prevState.value; - value._futureSnapshot = curr.value; - const children = createOrReuseChildren(routeReuseStrategy, curr, prevState); - return new TreeNode(value, children); - } else { - if (routeReuseStrategy.shouldAttach(curr.value)) { - const detachedRouteHandle = routeReuseStrategy.retrieve(curr.value); - if (detachedRouteHandle !== null) { - const tree2 = detachedRouteHandle.route; - tree2.value._futureSnapshot = curr.value; - tree2.children = curr.children.map((c) => createNode(routeReuseStrategy, c)); - return tree2; - } - } - const value = createActivatedRoute(curr.value); - const children = curr.children.map((c) => createNode(routeReuseStrategy, c)); - return new TreeNode(value, children); - } -} -function createOrReuseChildren(routeReuseStrategy, curr, prevState) { - return curr.children.map((child) => { - for (const p of prevState.children) { - if (routeReuseStrategy.shouldReuseRoute(child.value, p.value.snapshot)) { - return createNode(routeReuseStrategy, child, p); - } - } - return createNode(routeReuseStrategy, child); - }); -} -function createActivatedRoute(c) { - return new ActivatedRoute(new BehaviorSubject(c.url), new BehaviorSubject(c.params), new BehaviorSubject(c.queryParams), new BehaviorSubject(c.fragment), new BehaviorSubject(c.data), c.outlet, c.component, c); -} -var NAVIGATION_CANCELING_ERROR = "ngNavigationCancelingError"; -function redirectingNavigationError(urlSerializer, redirect) { - const { - redirectTo, - navigationBehaviorOptions - } = isUrlTree(redirect) ? { - redirectTo: redirect, - navigationBehaviorOptions: void 0 - } : redirect; - const error = navigationCancelingError(ngDevMode && `Redirecting to "${urlSerializer.serialize(redirectTo)}"`, 0, redirect); - error.url = redirectTo; - error.navigationBehaviorOptions = navigationBehaviorOptions; - return error; -} -function navigationCancelingError(message, code, redirectUrl) { - const error = new Error("NavigationCancelingError: " + (message || "")); - error[NAVIGATION_CANCELING_ERROR] = true; - error.cancellationCode = code; - if (redirectUrl) { - error.url = redirectUrl; - } - return error; -} -function isRedirectingNavigationCancelingError$1(error) { - return isNavigationCancelingError$1(error) && isUrlTree(error.url); -} -function isNavigationCancelingError$1(error) { - return error && error[NAVIGATION_CANCELING_ERROR]; -} -var _ɵEmptyOutletComponent = class _ɵEmptyOutletComponent { -}; -_ɵEmptyOutletComponent.ɵfac = function ɵEmptyOutletComponent_Factory(t) { - return new (t || _ɵEmptyOutletComponent)(); -}; -_ɵEmptyOutletComponent.ɵcmp = ɵɵdefineComponent({ - type: _ɵEmptyOutletComponent, - selectors: [["ng-component"]], - standalone: true, - features: [ɵɵStandaloneFeature], - decls: 1, - vars: 0, - template: function ɵEmptyOutletComponent_Template(rf, ctx) { - if (rf & 1) { - ɵɵelement(0, "router-outlet"); - } - }, - dependencies: [RouterOutlet], - encapsulation: 2 -}); -var ɵEmptyOutletComponent = _ɵEmptyOutletComponent; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ɵEmptyOutletComponent, [{ - type: Component, - args: [{ - template: ``, - imports: [RouterOutlet], - standalone: true - }] - }], null, null); -})(); -function getOrCreateRouteInjectorIfNeeded(route, currentInjector) { - if (route.providers && !route._injector) { - route._injector = createEnvironmentInjector(route.providers, currentInjector, `Route: ${route.path}`); - } - return route._injector ?? currentInjector; -} -function validateConfig(config, parentPath = "", requireStandaloneComponents = false) { - for (let i = 0; i < config.length; i++) { - const route = config[i]; - const fullPath = getFullPath(parentPath, route); - validateNode(route, fullPath, requireStandaloneComponents); - } -} -function assertStandalone(fullPath, component) { - if (component && isNgModule(component)) { - throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}'. You are using 'loadComponent' with a module, but it must be used with standalone components. Use 'loadChildren' instead.`); - } else if (component && !isStandalone(component)) { - throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}'. The component must be standalone.`); - } -} -function validateNode(route, fullPath, requireStandaloneComponents) { - if (typeof ngDevMode === "undefined" || ngDevMode) { - if (!route) { - throw new RuntimeError(4014, ` - Invalid configuration of route '${fullPath}': Encountered undefined route. - The reason might be an extra comma. - - Example: - const routes: Routes = [ - { path: '', redirectTo: '/dashboard', pathMatch: 'full' }, - { path: 'dashboard', component: DashboardComponent },, << two commas - { path: 'detail/:id', component: HeroDetailComponent } - ]; - `); - } - if (Array.isArray(route)) { - throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': Array cannot be specified`); - } - if (!route.redirectTo && !route.component && !route.loadComponent && !route.children && !route.loadChildren && route.outlet && route.outlet !== PRIMARY_OUTLET) { - throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': a componentless route without children or loadChildren cannot have a named outlet set`); - } - if (route.redirectTo && route.children) { - throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': redirectTo and children cannot be used together`); - } - if (route.redirectTo && route.loadChildren) { - throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': redirectTo and loadChildren cannot be used together`); - } - if (route.children && route.loadChildren) { - throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': children and loadChildren cannot be used together`); - } - if (route.redirectTo && (route.component || route.loadComponent)) { - throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': redirectTo and component/loadComponent cannot be used together`); - } - if (route.component && route.loadComponent) { - throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': component and loadComponent cannot be used together`); - } - if (route.redirectTo && route.canActivate) { - throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': redirectTo and canActivate cannot be used together. Redirects happen before activation so canActivate will never be executed.`); - } - if (route.path && route.matcher) { - throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': path and matcher cannot be used together`); - } - if (route.redirectTo === void 0 && !route.component && !route.loadComponent && !route.children && !route.loadChildren) { - throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}'. One of the following must be provided: component, loadComponent, redirectTo, children or loadChildren`); - } - if (route.path === void 0 && route.matcher === void 0) { - throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': routes must have either a path or a matcher specified`); - } - if (typeof route.path === "string" && route.path.charAt(0) === "/") { - throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': path cannot start with a slash`); - } - if (route.path === "" && route.redirectTo !== void 0 && route.pathMatch === void 0) { - const exp = `The default value of 'pathMatch' is 'prefix', but often the intent is to use 'full'.`; - throw new RuntimeError(4014, `Invalid configuration of route '{path: "${fullPath}", redirectTo: "${route.redirectTo}"}': please provide 'pathMatch'. ${exp}`); - } - if (requireStandaloneComponents) { - assertStandalone(fullPath, route.component); - } - } - if (route.children) { - validateConfig(route.children, fullPath, requireStandaloneComponents); - } -} -function getFullPath(parentPath, currentRoute) { - if (!currentRoute) { - return parentPath; - } - if (!parentPath && !currentRoute.path) { - return ""; - } else if (parentPath && !currentRoute.path) { - return `${parentPath}/`; - } else if (!parentPath && currentRoute.path) { - return currentRoute.path; - } else { - return `${parentPath}/${currentRoute.path}`; - } -} -function standardizeConfig(r) { - const children = r.children && r.children.map(standardizeConfig); - const c = children ? __spreadProps(__spreadValues({}, r), { - children - }) : __spreadValues({}, r); - if (!c.component && !c.loadComponent && (children || c.loadChildren) && c.outlet && c.outlet !== PRIMARY_OUTLET) { - c.component = ɵEmptyOutletComponent; - } - return c; -} -function getOutlet(route) { - return route.outlet || PRIMARY_OUTLET; -} -function sortByMatchingOutlets(routes, outletName) { - const sortedConfig = routes.filter((r) => getOutlet(r) === outletName); - sortedConfig.push(...routes.filter((r) => getOutlet(r) !== outletName)); - return sortedConfig; -} -function getClosestRouteInjector(snapshot) { - if (!snapshot) - return null; - if (snapshot.routeConfig?._injector) { - return snapshot.routeConfig._injector; - } - for (let s = snapshot.parent; s; s = s.parent) { - const route = s.routeConfig; - if (route?._loadedInjector) - return route._loadedInjector; - if (route?._injector) - return route._injector; - } - return null; -} -var warnedAboutUnsupportedInputBinding = false; -var activateRoutes = (rootContexts, routeReuseStrategy, forwardEvent, inputBindingEnabled) => map((t) => { - new ActivateRoutes(routeReuseStrategy, t.targetRouterState, t.currentRouterState, forwardEvent, inputBindingEnabled).activate(rootContexts); - return t; -}); -var ActivateRoutes = class { - constructor(routeReuseStrategy, futureState, currState, forwardEvent, inputBindingEnabled) { - this.routeReuseStrategy = routeReuseStrategy; - this.futureState = futureState; - this.currState = currState; - this.forwardEvent = forwardEvent; - this.inputBindingEnabled = inputBindingEnabled; - } - activate(parentContexts) { - const futureRoot = this.futureState._root; - const currRoot = this.currState ? this.currState._root : null; - this.deactivateChildRoutes(futureRoot, currRoot, parentContexts); - advanceActivatedRoute(this.futureState.root); - this.activateChildRoutes(futureRoot, currRoot, parentContexts); - } - // De-activate the child route that are not re-used for the future state - deactivateChildRoutes(futureNode, currNode, contexts) { - const children = nodeChildrenAsMap(currNode); - futureNode.children.forEach((futureChild) => { - const childOutletName = futureChild.value.outlet; - this.deactivateRoutes(futureChild, children[childOutletName], contexts); - delete children[childOutletName]; - }); - Object.values(children).forEach((v) => { - this.deactivateRouteAndItsChildren(v, contexts); - }); - } - deactivateRoutes(futureNode, currNode, parentContext) { - const future = futureNode.value; - const curr = currNode ? currNode.value : null; - if (future === curr) { - if (future.component) { - const context = parentContext.getContext(future.outlet); - if (context) { - this.deactivateChildRoutes(futureNode, currNode, context.children); - } - } else { - this.deactivateChildRoutes(futureNode, currNode, parentContext); - } - } else { - if (curr) { - this.deactivateRouteAndItsChildren(currNode, parentContext); - } - } - } - deactivateRouteAndItsChildren(route, parentContexts) { - if (route.value.component && this.routeReuseStrategy.shouldDetach(route.value.snapshot)) { - this.detachAndStoreRouteSubtree(route, parentContexts); - } else { - this.deactivateRouteAndOutlet(route, parentContexts); - } - } - detachAndStoreRouteSubtree(route, parentContexts) { - const context = parentContexts.getContext(route.value.outlet); - const contexts = context && route.value.component ? context.children : parentContexts; - const children = nodeChildrenAsMap(route); - for (const childOutlet of Object.keys(children)) { - this.deactivateRouteAndItsChildren(children[childOutlet], contexts); - } - if (context && context.outlet) { - const componentRef = context.outlet.detach(); - const contexts2 = context.children.onOutletDeactivated(); - this.routeReuseStrategy.store(route.value.snapshot, { - componentRef, - route, - contexts: contexts2 - }); - } - } - deactivateRouteAndOutlet(route, parentContexts) { - const context = parentContexts.getContext(route.value.outlet); - const contexts = context && route.value.component ? context.children : parentContexts; - const children = nodeChildrenAsMap(route); - for (const childOutlet of Object.keys(children)) { - this.deactivateRouteAndItsChildren(children[childOutlet], contexts); - } - if (context) { - if (context.outlet) { - context.outlet.deactivate(); - context.children.onOutletDeactivated(); - } - context.attachRef = null; - context.route = null; - } - } - activateChildRoutes(futureNode, currNode, contexts) { - const children = nodeChildrenAsMap(currNode); - futureNode.children.forEach((c) => { - this.activateRoutes(c, children[c.value.outlet], contexts); - this.forwardEvent(new ActivationEnd(c.value.snapshot)); - }); - if (futureNode.children.length) { - this.forwardEvent(new ChildActivationEnd(futureNode.value.snapshot)); - } - } - activateRoutes(futureNode, currNode, parentContexts) { - const future = futureNode.value; - const curr = currNode ? currNode.value : null; - advanceActivatedRoute(future); - if (future === curr) { - if (future.component) { - const context = parentContexts.getOrCreateContext(future.outlet); - this.activateChildRoutes(futureNode, currNode, context.children); - } else { - this.activateChildRoutes(futureNode, currNode, parentContexts); - } - } else { - if (future.component) { - const context = parentContexts.getOrCreateContext(future.outlet); - if (this.routeReuseStrategy.shouldAttach(future.snapshot)) { - const stored = this.routeReuseStrategy.retrieve(future.snapshot); - this.routeReuseStrategy.store(future.snapshot, null); - context.children.onOutletReAttached(stored.contexts); - context.attachRef = stored.componentRef; - context.route = stored.route.value; - if (context.outlet) { - context.outlet.attach(stored.componentRef, stored.route.value); - } - advanceActivatedRoute(stored.route.value); - this.activateChildRoutes(futureNode, null, context.children); - } else { - const injector = getClosestRouteInjector(future.snapshot); - context.attachRef = null; - context.route = future; - context.injector = injector; - if (context.outlet) { - context.outlet.activateWith(future, context.injector); - } - this.activateChildRoutes(futureNode, null, context.children); - } - } else { - this.activateChildRoutes(futureNode, null, parentContexts); - } - } - if (typeof ngDevMode === "undefined" || ngDevMode) { - const context = parentContexts.getOrCreateContext(future.outlet); - const outlet = context.outlet; - if (outlet && this.inputBindingEnabled && !outlet.supportsBindingToComponentInputs && !warnedAboutUnsupportedInputBinding) { - console.warn(`'withComponentInputBinding' feature is enabled but this application is using an outlet that may not support binding to component inputs.`); - warnedAboutUnsupportedInputBinding = true; - } - } - } -}; -var CanActivate = class { - constructor(path) { - this.path = path; - this.route = this.path[this.path.length - 1]; - } -}; -var CanDeactivate = class { - constructor(component, route) { - this.component = component; - this.route = route; - } -}; -function getAllRouteGuards(future, curr, parentContexts) { - const futureRoot = future._root; - const currRoot = curr ? curr._root : null; - return getChildRouteGuards(futureRoot, currRoot, parentContexts, [futureRoot.value]); -} -function getCanActivateChild(p) { - const canActivateChild = p.routeConfig ? p.routeConfig.canActivateChild : null; - if (!canActivateChild || canActivateChild.length === 0) - return null; - return { - node: p, - guards: canActivateChild - }; -} -function getTokenOrFunctionIdentity(tokenOrFunction, injector) { - const NOT_FOUND = Symbol(); - const result = injector.get(tokenOrFunction, NOT_FOUND); - if (result === NOT_FOUND) { - if (typeof tokenOrFunction === "function" && !isInjectable(tokenOrFunction)) { - return tokenOrFunction; - } else { - return injector.get(tokenOrFunction); - } - } - return result; -} -function getChildRouteGuards(futureNode, currNode, contexts, futurePath, checks = { - canDeactivateChecks: [], - canActivateChecks: [] -}) { - const prevChildren = nodeChildrenAsMap(currNode); - futureNode.children.forEach((c) => { - getRouteGuards(c, prevChildren[c.value.outlet], contexts, futurePath.concat([c.value]), checks); - delete prevChildren[c.value.outlet]; - }); - Object.entries(prevChildren).forEach(([k, v]) => deactivateRouteAndItsChildren(v, contexts.getContext(k), checks)); - return checks; -} -function getRouteGuards(futureNode, currNode, parentContexts, futurePath, checks = { - canDeactivateChecks: [], - canActivateChecks: [] -}) { - const future = futureNode.value; - const curr = currNode ? currNode.value : null; - const context = parentContexts ? parentContexts.getContext(futureNode.value.outlet) : null; - if (curr && future.routeConfig === curr.routeConfig) { - const shouldRun = shouldRunGuardsAndResolvers(curr, future, future.routeConfig.runGuardsAndResolvers); - if (shouldRun) { - checks.canActivateChecks.push(new CanActivate(futurePath)); - } else { - future.data = curr.data; - future._resolvedData = curr._resolvedData; - } - if (future.component) { - getChildRouteGuards(futureNode, currNode, context ? context.children : null, futurePath, checks); - } else { - getChildRouteGuards(futureNode, currNode, parentContexts, futurePath, checks); - } - if (shouldRun && context && context.outlet && context.outlet.isActivated) { - checks.canDeactivateChecks.push(new CanDeactivate(context.outlet.component, curr)); - } - } else { - if (curr) { - deactivateRouteAndItsChildren(currNode, context, checks); - } - checks.canActivateChecks.push(new CanActivate(futurePath)); - if (future.component) { - getChildRouteGuards(futureNode, null, context ? context.children : null, futurePath, checks); - } else { - getChildRouteGuards(futureNode, null, parentContexts, futurePath, checks); - } - } - return checks; -} -function shouldRunGuardsAndResolvers(curr, future, mode) { - if (typeof mode === "function") { - return mode(curr, future); - } - switch (mode) { - case "pathParamsChange": - return !equalPath(curr.url, future.url); - case "pathParamsOrQueryParamsChange": - return !equalPath(curr.url, future.url) || !shallowEqual(curr.queryParams, future.queryParams); - case "always": - return true; - case "paramsOrQueryParamsChange": - return !equalParamsAndUrlSegments(curr, future) || !shallowEqual(curr.queryParams, future.queryParams); - case "paramsChange": - default: - return !equalParamsAndUrlSegments(curr, future); - } -} -function deactivateRouteAndItsChildren(route, context, checks) { - const children = nodeChildrenAsMap(route); - const r = route.value; - Object.entries(children).forEach(([childName, node]) => { - if (!r.component) { - deactivateRouteAndItsChildren(node, context, checks); - } else if (context) { - deactivateRouteAndItsChildren(node, context.children.getContext(childName), checks); - } else { - deactivateRouteAndItsChildren(node, null, checks); - } - }); - if (!r.component) { - checks.canDeactivateChecks.push(new CanDeactivate(null, r)); - } else if (context && context.outlet && context.outlet.isActivated) { - checks.canDeactivateChecks.push(new CanDeactivate(context.outlet.component, r)); - } else { - checks.canDeactivateChecks.push(new CanDeactivate(null, r)); - } -} -function isFunction(v) { - return typeof v === "function"; -} -function isBoolean(v) { - return typeof v === "boolean"; -} -function isCanLoad(guard) { - return guard && isFunction(guard.canLoad); -} -function isCanActivate(guard) { - return guard && isFunction(guard.canActivate); -} -function isCanActivateChild(guard) { - return guard && isFunction(guard.canActivateChild); -} -function isCanDeactivate(guard) { - return guard && isFunction(guard.canDeactivate); -} -function isCanMatch(guard) { - return guard && isFunction(guard.canMatch); -} -function isEmptyError(e) { - return e instanceof EmptyError || e?.name === "EmptyError"; -} -var INITIAL_VALUE = Symbol("INITIAL_VALUE"); -function prioritizedGuardValue() { - return switchMap((obs) => { - return combineLatest(obs.map((o) => o.pipe(take(1), startWith(INITIAL_VALUE)))).pipe(map((results) => { - for (const result of results) { - if (result === true) { - continue; - } else if (result === INITIAL_VALUE) { - return INITIAL_VALUE; - } else if (result === false || result instanceof UrlTree) { - return result; - } - } - return true; - }), filter((item) => item !== INITIAL_VALUE), take(1)); - }); -} -function checkGuards(injector, forwardEvent) { - return mergeMap((t) => { - const { - targetSnapshot, - currentSnapshot, - guards: { - canActivateChecks, - canDeactivateChecks - } - } = t; - if (canDeactivateChecks.length === 0 && canActivateChecks.length === 0) { - return of(__spreadProps(__spreadValues({}, t), { - guardsResult: true - })); - } - return runCanDeactivateChecks(canDeactivateChecks, targetSnapshot, currentSnapshot, injector).pipe(mergeMap((canDeactivate) => { - return canDeactivate && isBoolean(canDeactivate) ? runCanActivateChecks(targetSnapshot, canActivateChecks, injector, forwardEvent) : of(canDeactivate); - }), map((guardsResult) => __spreadProps(__spreadValues({}, t), { - guardsResult - }))); - }); -} -function runCanDeactivateChecks(checks, futureRSS, currRSS, injector) { - return from(checks).pipe(mergeMap((check) => runCanDeactivate(check.component, check.route, currRSS, futureRSS, injector)), first((result) => { - return result !== true; - }, true)); -} -function runCanActivateChecks(futureSnapshot, checks, injector, forwardEvent) { - return from(checks).pipe(concatMap((check) => { - return concat(fireChildActivationStart(check.route.parent, forwardEvent), fireActivationStart(check.route, forwardEvent), runCanActivateChild(futureSnapshot, check.path, injector), runCanActivate(futureSnapshot, check.route, injector)); - }), first((result) => { - return result !== true; - }, true)); -} -function fireActivationStart(snapshot, forwardEvent) { - if (snapshot !== null && forwardEvent) { - forwardEvent(new ActivationStart(snapshot)); - } - return of(true); -} -function fireChildActivationStart(snapshot, forwardEvent) { - if (snapshot !== null && forwardEvent) { - forwardEvent(new ChildActivationStart(snapshot)); - } - return of(true); -} -function runCanActivate(futureRSS, futureARS, injector) { - const canActivate = futureARS.routeConfig ? futureARS.routeConfig.canActivate : null; - if (!canActivate || canActivate.length === 0) - return of(true); - const canActivateObservables = canActivate.map((canActivate2) => { - return defer(() => { - const closestInjector = getClosestRouteInjector(futureARS) ?? injector; - const guard = getTokenOrFunctionIdentity(canActivate2, closestInjector); - const guardVal = isCanActivate(guard) ? guard.canActivate(futureARS, futureRSS) : runInInjectionContext(closestInjector, () => guard(futureARS, futureRSS)); - return wrapIntoObservable(guardVal).pipe(first()); - }); - }); - return of(canActivateObservables).pipe(prioritizedGuardValue()); -} -function runCanActivateChild(futureRSS, path, injector) { - const futureARS = path[path.length - 1]; - const canActivateChildGuards = path.slice(0, path.length - 1).reverse().map((p) => getCanActivateChild(p)).filter((_) => _ !== null); - const canActivateChildGuardsMapped = canActivateChildGuards.map((d) => { - return defer(() => { - const guardsMapped = d.guards.map((canActivateChild) => { - const closestInjector = getClosestRouteInjector(d.node) ?? injector; - const guard = getTokenOrFunctionIdentity(canActivateChild, closestInjector); - const guardVal = isCanActivateChild(guard) ? guard.canActivateChild(futureARS, futureRSS) : runInInjectionContext(closestInjector, () => guard(futureARS, futureRSS)); - return wrapIntoObservable(guardVal).pipe(first()); - }); - return of(guardsMapped).pipe(prioritizedGuardValue()); - }); - }); - return of(canActivateChildGuardsMapped).pipe(prioritizedGuardValue()); -} -function runCanDeactivate(component, currARS, currRSS, futureRSS, injector) { - const canDeactivate = currARS && currARS.routeConfig ? currARS.routeConfig.canDeactivate : null; - if (!canDeactivate || canDeactivate.length === 0) - return of(true); - const canDeactivateObservables = canDeactivate.map((c) => { - const closestInjector = getClosestRouteInjector(currARS) ?? injector; - const guard = getTokenOrFunctionIdentity(c, closestInjector); - const guardVal = isCanDeactivate(guard) ? guard.canDeactivate(component, currARS, currRSS, futureRSS) : runInInjectionContext(closestInjector, () => guard(component, currARS, currRSS, futureRSS)); - return wrapIntoObservable(guardVal).pipe(first()); - }); - return of(canDeactivateObservables).pipe(prioritizedGuardValue()); -} -function runCanLoadGuards(injector, route, segments, urlSerializer) { - const canLoad = route.canLoad; - if (canLoad === void 0 || canLoad.length === 0) { - return of(true); - } - const canLoadObservables = canLoad.map((injectionToken) => { - const guard = getTokenOrFunctionIdentity(injectionToken, injector); - const guardVal = isCanLoad(guard) ? guard.canLoad(route, segments) : runInInjectionContext(injector, () => guard(route, segments)); - return wrapIntoObservable(guardVal); - }); - return of(canLoadObservables).pipe(prioritizedGuardValue(), redirectIfUrlTree(urlSerializer)); -} -function redirectIfUrlTree(urlSerializer) { - return pipe(tap((result) => { - if (!isUrlTree(result)) - return; - throw redirectingNavigationError(urlSerializer, result); - }), map((result) => result === true)); -} -function runCanMatchGuards(injector, route, segments, urlSerializer) { - const canMatch = route.canMatch; - if (!canMatch || canMatch.length === 0) - return of(true); - const canMatchObservables = canMatch.map((injectionToken) => { - const guard = getTokenOrFunctionIdentity(injectionToken, injector); - const guardVal = isCanMatch(guard) ? guard.canMatch(route, segments) : runInInjectionContext(injector, () => guard(route, segments)); - return wrapIntoObservable(guardVal); - }); - return of(canMatchObservables).pipe(prioritizedGuardValue(), redirectIfUrlTree(urlSerializer)); -} -var NoMatch = class { - constructor(segmentGroup) { - this.segmentGroup = segmentGroup || null; - } -}; -var AbsoluteRedirect = class extends Error { - constructor(urlTree) { - super(); - this.urlTree = urlTree; - } -}; -function noMatch$1(segmentGroup) { - return throwError(new NoMatch(segmentGroup)); -} -function namedOutletsRedirect(redirectTo) { - return throwError(new RuntimeError(4e3, (typeof ngDevMode === "undefined" || ngDevMode) && `Only absolute redirects can have named outlets. redirectTo: '${redirectTo}'`)); -} -function canLoadFails(route) { - return throwError(navigationCancelingError( - (typeof ngDevMode === "undefined" || ngDevMode) && `Cannot load children because the guard of the route "path: '${route.path}'" returned false`, - 3 - /* NavigationCancellationCode.GuardRejected */ - )); -} -var ApplyRedirects = class { - constructor(urlSerializer, urlTree) { - this.urlSerializer = urlSerializer; - this.urlTree = urlTree; - } - lineralizeSegments(route, urlTree) { - let res = []; - let c = urlTree.root; - while (true) { - res = res.concat(c.segments); - if (c.numberOfChildren === 0) { - return of(res); - } - if (c.numberOfChildren > 1 || !c.children[PRIMARY_OUTLET]) { - return namedOutletsRedirect(route.redirectTo); - } - c = c.children[PRIMARY_OUTLET]; - } - } - applyRedirectCommands(segments, redirectTo, posParams) { - const newTree = this.applyRedirectCreateUrlTree(redirectTo, this.urlSerializer.parse(redirectTo), segments, posParams); - if (redirectTo.startsWith("/")) { - throw new AbsoluteRedirect(newTree); - } - return newTree; - } - applyRedirectCreateUrlTree(redirectTo, urlTree, segments, posParams) { - const newRoot = this.createSegmentGroup(redirectTo, urlTree.root, segments, posParams); - return new UrlTree(newRoot, this.createQueryParams(urlTree.queryParams, this.urlTree.queryParams), urlTree.fragment); - } - createQueryParams(redirectToParams, actualParams) { - const res = {}; - Object.entries(redirectToParams).forEach(([k, v]) => { - const copySourceValue = typeof v === "string" && v.startsWith(":"); - if (copySourceValue) { - const sourceName = v.substring(1); - res[k] = actualParams[sourceName]; - } else { - res[k] = v; - } - }); - return res; - } - createSegmentGroup(redirectTo, group, segments, posParams) { - const updatedSegments = this.createSegments(redirectTo, group.segments, segments, posParams); - let children = {}; - Object.entries(group.children).forEach(([name, child]) => { - children[name] = this.createSegmentGroup(redirectTo, child, segments, posParams); - }); - return new UrlSegmentGroup(updatedSegments, children); - } - createSegments(redirectTo, redirectToSegments, actualSegments, posParams) { - return redirectToSegments.map((s) => s.path.startsWith(":") ? this.findPosParam(redirectTo, s, posParams) : this.findOrReturn(s, actualSegments)); - } - findPosParam(redirectTo, redirectToUrlSegment, posParams) { - const pos = posParams[redirectToUrlSegment.path.substring(1)]; - if (!pos) - throw new RuntimeError(4001, (typeof ngDevMode === "undefined" || ngDevMode) && `Cannot redirect to '${redirectTo}'. Cannot find '${redirectToUrlSegment.path}'.`); - return pos; - } - findOrReturn(redirectToUrlSegment, actualSegments) { - let idx = 0; - for (const s of actualSegments) { - if (s.path === redirectToUrlSegment.path) { - actualSegments.splice(idx); - return s; - } - idx++; - } - return redirectToUrlSegment; - } -}; -var noMatch = { - matched: false, - consumedSegments: [], - remainingSegments: [], - parameters: {}, - positionalParamSegments: {} -}; -function matchWithChecks(segmentGroup, route, segments, injector, urlSerializer) { - const result = match(segmentGroup, route, segments); - if (!result.matched) { - return of(result); - } - injector = getOrCreateRouteInjectorIfNeeded(route, injector); - return runCanMatchGuards(injector, route, segments, urlSerializer).pipe(map((v) => v === true ? result : __spreadValues({}, noMatch))); -} -function match(segmentGroup, route, segments) { - if (route.path === "**") { - return createWildcardMatchResult(segments); - } - if (route.path === "") { - if (route.pathMatch === "full" && (segmentGroup.hasChildren() || segments.length > 0)) { - return __spreadValues({}, noMatch); - } - return { - matched: true, - consumedSegments: [], - remainingSegments: segments, - parameters: {}, - positionalParamSegments: {} - }; - } - const matcher = route.matcher || defaultUrlMatcher; - const res = matcher(segments, segmentGroup, route); - if (!res) - return __spreadValues({}, noMatch); - const posParams = {}; - Object.entries(res.posParams ?? {}).forEach(([k, v]) => { - posParams[k] = v.path; - }); - const parameters = res.consumed.length > 0 ? __spreadValues(__spreadValues({}, posParams), res.consumed[res.consumed.length - 1].parameters) : posParams; - return { - matched: true, - consumedSegments: res.consumed, - remainingSegments: segments.slice(res.consumed.length), - // TODO(atscott): investigate combining parameters and positionalParamSegments - parameters, - positionalParamSegments: res.posParams ?? {} - }; -} -function createWildcardMatchResult(segments) { - return { - matched: true, - parameters: segments.length > 0 ? last2(segments).parameters : {}, - consumedSegments: segments, - remainingSegments: [], - positionalParamSegments: {} - }; -} -function split(segmentGroup, consumedSegments, slicedSegments, config) { - if (slicedSegments.length > 0 && containsEmptyPathMatchesWithNamedOutlets(segmentGroup, slicedSegments, config)) { - const s2 = new UrlSegmentGroup(consumedSegments, createChildrenForEmptyPaths(config, new UrlSegmentGroup(slicedSegments, segmentGroup.children))); - return { - segmentGroup: s2, - slicedSegments: [] - }; - } - if (slicedSegments.length === 0 && containsEmptyPathMatches(segmentGroup, slicedSegments, config)) { - const s2 = new UrlSegmentGroup(segmentGroup.segments, addEmptyPathsToChildrenIfNeeded(segmentGroup, consumedSegments, slicedSegments, config, segmentGroup.children)); - return { - segmentGroup: s2, - slicedSegments - }; - } - const s = new UrlSegmentGroup(segmentGroup.segments, segmentGroup.children); - return { - segmentGroup: s, - slicedSegments - }; -} -function addEmptyPathsToChildrenIfNeeded(segmentGroup, consumedSegments, slicedSegments, routes, children) { - const res = {}; - for (const r of routes) { - if (emptyPathMatch(segmentGroup, slicedSegments, r) && !children[getOutlet(r)]) { - const s = new UrlSegmentGroup([], {}); - res[getOutlet(r)] = s; - } - } - return __spreadValues(__spreadValues({}, children), res); -} -function createChildrenForEmptyPaths(routes, primarySegment) { - const res = {}; - res[PRIMARY_OUTLET] = primarySegment; - for (const r of routes) { - if (r.path === "" && getOutlet(r) !== PRIMARY_OUTLET) { - const s = new UrlSegmentGroup([], {}); - res[getOutlet(r)] = s; - } - } - return res; -} -function containsEmptyPathMatchesWithNamedOutlets(segmentGroup, slicedSegments, routes) { - return routes.some((r) => emptyPathMatch(segmentGroup, slicedSegments, r) && getOutlet(r) !== PRIMARY_OUTLET); -} -function containsEmptyPathMatches(segmentGroup, slicedSegments, routes) { - return routes.some((r) => emptyPathMatch(segmentGroup, slicedSegments, r)); -} -function emptyPathMatch(segmentGroup, slicedSegments, r) { - if ((segmentGroup.hasChildren() || slicedSegments.length > 0) && r.pathMatch === "full") { - return false; - } - return r.path === ""; -} -function isImmediateMatch(route, rawSegment, segments, outlet) { - if (getOutlet(route) !== outlet && (outlet === PRIMARY_OUTLET || !emptyPathMatch(rawSegment, segments, route))) { - return false; - } - return match(rawSegment, route, segments).matched; -} -function noLeftoversInUrl(segmentGroup, segments, outlet) { - return segments.length === 0 && !segmentGroup.children[outlet]; -} -var NoLeftoversInUrl = class { -}; -function recognize$1(injector, configLoader, rootComponentType, config, urlTree, urlSerializer, paramsInheritanceStrategy = "emptyOnly") { - return new Recognizer(injector, configLoader, rootComponentType, config, urlTree, paramsInheritanceStrategy, urlSerializer).recognize(); -} -var MAX_ALLOWED_REDIRECTS = 31; -var Recognizer = class { - constructor(injector, configLoader, rootComponentType, config, urlTree, paramsInheritanceStrategy, urlSerializer) { - this.injector = injector; - this.configLoader = configLoader; - this.rootComponentType = rootComponentType; - this.config = config; - this.urlTree = urlTree; - this.paramsInheritanceStrategy = paramsInheritanceStrategy; - this.urlSerializer = urlSerializer; - this.applyRedirects = new ApplyRedirects(this.urlSerializer, this.urlTree); - this.absoluteRedirectCount = 0; - this.allowRedirects = true; - } - noMatchError(e) { - return new RuntimeError(4002, typeof ngDevMode === "undefined" || ngDevMode ? `Cannot match any routes. URL Segment: '${e.segmentGroup}'` : `'${e.segmentGroup}'`); - } - recognize() { - const rootSegmentGroup = split(this.urlTree.root, [], [], this.config).segmentGroup; - return this.match(rootSegmentGroup).pipe(map((children) => { - const root = new ActivatedRouteSnapshot([], Object.freeze({}), Object.freeze(__spreadValues({}, this.urlTree.queryParams)), this.urlTree.fragment, {}, PRIMARY_OUTLET, this.rootComponentType, null, {}); - const rootNode = new TreeNode(root, children); - const routeState = new RouterStateSnapshot("", rootNode); - const tree2 = createUrlTreeFromSnapshot(root, [], this.urlTree.queryParams, this.urlTree.fragment); - tree2.queryParams = this.urlTree.queryParams; - routeState.url = this.urlSerializer.serialize(tree2); - this.inheritParamsAndData(routeState._root, null); - return { - state: routeState, - tree: tree2 - }; - })); - } - match(rootSegmentGroup) { - const expanded$ = this.processSegmentGroup(this.injector, this.config, rootSegmentGroup, PRIMARY_OUTLET); - return expanded$.pipe(catchError((e) => { - if (e instanceof AbsoluteRedirect) { - this.urlTree = e.urlTree; - return this.match(e.urlTree.root); - } - if (e instanceof NoMatch) { - throw this.noMatchError(e); - } - throw e; - })); - } - inheritParamsAndData(routeNode, parent) { - const route = routeNode.value; - const i = getInherited(route, parent, this.paramsInheritanceStrategy); - route.params = Object.freeze(i.params); - route.data = Object.freeze(i.data); - routeNode.children.forEach((n) => this.inheritParamsAndData(n, route)); - } - processSegmentGroup(injector, config, segmentGroup, outlet) { - if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) { - return this.processChildren(injector, config, segmentGroup); - } - return this.processSegment(injector, config, segmentGroup, segmentGroup.segments, outlet, true).pipe(map((child) => child instanceof TreeNode ? [child] : [])); - } - /** - * Matches every child outlet in the `segmentGroup` to a `Route` in the config. Returns `null` if - * we cannot find a match for _any_ of the children. - * - * @param config - The `Routes` to match against - * @param segmentGroup - The `UrlSegmentGroup` whose children need to be matched against the - * config. - */ - processChildren(injector, config, segmentGroup) { - const childOutlets = []; - for (const child of Object.keys(segmentGroup.children)) { - if (child === "primary") { - childOutlets.unshift(child); - } else { - childOutlets.push(child); - } - } - return from(childOutlets).pipe(concatMap((childOutlet) => { - const child = segmentGroup.children[childOutlet]; - const sortedConfig = sortByMatchingOutlets(config, childOutlet); - return this.processSegmentGroup(injector, sortedConfig, child, childOutlet); - }), scan((children, outletChildren) => { - children.push(...outletChildren); - return children; - }), defaultIfEmpty(null), last(), mergeMap((children) => { - if (children === null) - return noMatch$1(segmentGroup); - const mergedChildren = mergeEmptyPathMatches(children); - if (typeof ngDevMode === "undefined" || ngDevMode) { - checkOutletNameUniqueness(mergedChildren); - } - sortActivatedRouteSnapshots(mergedChildren); - return of(mergedChildren); - })); - } - processSegment(injector, routes, segmentGroup, segments, outlet, allowRedirects) { - return from(routes).pipe(concatMap((r) => { - return this.processSegmentAgainstRoute(r._injector ?? injector, routes, r, segmentGroup, segments, outlet, allowRedirects).pipe(catchError((e) => { - if (e instanceof NoMatch) { - return of(null); - } - throw e; - })); - }), first((x) => !!x), catchError((e) => { - if (isEmptyError(e)) { - if (noLeftoversInUrl(segmentGroup, segments, outlet)) { - return of(new NoLeftoversInUrl()); - } - return noMatch$1(segmentGroup); - } - throw e; - })); - } - processSegmentAgainstRoute(injector, routes, route, rawSegment, segments, outlet, allowRedirects) { - if (!isImmediateMatch(route, rawSegment, segments, outlet)) - return noMatch$1(rawSegment); - if (route.redirectTo === void 0) { - return this.matchSegmentAgainstRoute(injector, rawSegment, route, segments, outlet); - } - if (this.allowRedirects && allowRedirects) { - return this.expandSegmentAgainstRouteUsingRedirect(injector, rawSegment, routes, route, segments, outlet); - } - return noMatch$1(rawSegment); - } - expandSegmentAgainstRouteUsingRedirect(injector, segmentGroup, routes, route, segments, outlet) { - const { - matched, - consumedSegments, - positionalParamSegments, - remainingSegments - } = match(segmentGroup, route, segments); - if (!matched) - return noMatch$1(segmentGroup); - if (route.redirectTo.startsWith("/")) { - this.absoluteRedirectCount++; - if (this.absoluteRedirectCount > MAX_ALLOWED_REDIRECTS) { - if (ngDevMode) { - throw new RuntimeError(4016, `Detected possible infinite redirect when redirecting from '${this.urlTree}' to '${route.redirectTo}'. -This is currently a dev mode only error but will become a call stack size exceeded error in production in a future major version.`); - } - this.allowRedirects = false; - } - } - const newTree = this.applyRedirects.applyRedirectCommands(consumedSegments, route.redirectTo, positionalParamSegments); - return this.applyRedirects.lineralizeSegments(route, newTree).pipe(mergeMap((newSegments) => { - return this.processSegment(injector, routes, segmentGroup, newSegments.concat(remainingSegments), outlet, false); - })); - } - matchSegmentAgainstRoute(injector, rawSegment, route, segments, outlet) { - const matchResult = matchWithChecks(rawSegment, route, segments, injector, this.urlSerializer); - if (route.path === "**") { - rawSegment.children = {}; - } - return matchResult.pipe(switchMap((result) => { - if (!result.matched) { - return noMatch$1(rawSegment); - } - injector = route._injector ?? injector; - return this.getChildConfig(injector, route, segments).pipe(switchMap(({ - routes: childConfig - }) => { - const childInjector = route._loadedInjector ?? injector; - const { - consumedSegments, - remainingSegments, - parameters - } = result; - const snapshot = new ActivatedRouteSnapshot(consumedSegments, parameters, Object.freeze(__spreadValues({}, this.urlTree.queryParams)), this.urlTree.fragment, getData(route), getOutlet(route), route.component ?? route._loadedComponent ?? null, route, getResolve(route)); - const { - segmentGroup, - slicedSegments - } = split(rawSegment, consumedSegments, remainingSegments, childConfig); - if (slicedSegments.length === 0 && segmentGroup.hasChildren()) { - return this.processChildren(childInjector, childConfig, segmentGroup).pipe(map((children) => { - if (children === null) { - return null; - } - return new TreeNode(snapshot, children); - })); - } - if (childConfig.length === 0 && slicedSegments.length === 0) { - return of(new TreeNode(snapshot, [])); - } - const matchedOnOutlet = getOutlet(route) === outlet; - return this.processSegment(childInjector, childConfig, segmentGroup, slicedSegments, matchedOnOutlet ? PRIMARY_OUTLET : outlet, true).pipe(map((child) => { - return new TreeNode(snapshot, child instanceof TreeNode ? [child] : []); - })); - })); - })); - } - getChildConfig(injector, route, segments) { - if (route.children) { - return of({ - routes: route.children, - injector - }); - } - if (route.loadChildren) { - if (route._loadedRoutes !== void 0) { - return of({ - routes: route._loadedRoutes, - injector: route._loadedInjector - }); - } - return runCanLoadGuards(injector, route, segments, this.urlSerializer).pipe(mergeMap((shouldLoadResult) => { - if (shouldLoadResult) { - return this.configLoader.loadChildren(injector, route).pipe(tap((cfg) => { - route._loadedRoutes = cfg.routes; - route._loadedInjector = cfg.injector; - })); - } - return canLoadFails(route); - })); - } - return of({ - routes: [], - injector - }); - } -}; -function sortActivatedRouteSnapshots(nodes) { - nodes.sort((a, b) => { - if (a.value.outlet === PRIMARY_OUTLET) - return -1; - if (b.value.outlet === PRIMARY_OUTLET) - return 1; - return a.value.outlet.localeCompare(b.value.outlet); - }); -} -function hasEmptyPathConfig(node) { - const config = node.value.routeConfig; - return config && config.path === ""; -} -function mergeEmptyPathMatches(nodes) { - const result = []; - const mergedNodes = /* @__PURE__ */ new Set(); - for (const node of nodes) { - if (!hasEmptyPathConfig(node)) { - result.push(node); - continue; - } - const duplicateEmptyPathNode = result.find((resultNode) => node.value.routeConfig === resultNode.value.routeConfig); - if (duplicateEmptyPathNode !== void 0) { - duplicateEmptyPathNode.children.push(...node.children); - mergedNodes.add(duplicateEmptyPathNode); - } else { - result.push(node); - } - } - for (const mergedNode of mergedNodes) { - const mergedChildren = mergeEmptyPathMatches(mergedNode.children); - result.push(new TreeNode(mergedNode.value, mergedChildren)); - } - return result.filter((n) => !mergedNodes.has(n)); -} -function checkOutletNameUniqueness(nodes) { - const names = {}; - nodes.forEach((n) => { - const routeWithSameOutletName = names[n.value.outlet]; - if (routeWithSameOutletName) { - const p = routeWithSameOutletName.url.map((s) => s.toString()).join("/"); - const c = n.value.url.map((s) => s.toString()).join("/"); - throw new RuntimeError(4006, (typeof ngDevMode === "undefined" || ngDevMode) && `Two segments cannot have the same outlet name: '${p}' and '${c}'.`); - } - names[n.value.outlet] = n.value; - }); -} -function getData(route) { - return route.data || {}; -} -function getResolve(route) { - return route.resolve || {}; -} -function recognize(injector, configLoader, rootComponentType, config, serializer, paramsInheritanceStrategy) { - return mergeMap((t) => recognize$1(injector, configLoader, rootComponentType, config, t.extractedUrl, serializer, paramsInheritanceStrategy).pipe(map(({ - state: targetSnapshot, - tree: urlAfterRedirects - }) => { - return __spreadProps(__spreadValues({}, t), { - targetSnapshot, - urlAfterRedirects - }); - }))); -} -function resolveData(paramsInheritanceStrategy, injector) { - return mergeMap((t) => { - const { - targetSnapshot, - guards: { - canActivateChecks - } - } = t; - if (!canActivateChecks.length) { - return of(t); - } - const routesWithResolversToRun = new Set(canActivateChecks.map((check) => check.route)); - const routesNeedingDataUpdates = /* @__PURE__ */ new Set(); - for (const route of routesWithResolversToRun) { - if (routesNeedingDataUpdates.has(route)) { - continue; - } - for (const newRoute of flattenRouteTree(route)) { - routesNeedingDataUpdates.add(newRoute); - } - } - let routesProcessed = 0; - return from(routesNeedingDataUpdates).pipe(concatMap((route) => { - if (routesWithResolversToRun.has(route)) { - return runResolve(route, targetSnapshot, paramsInheritanceStrategy, injector); - } else { - route.data = getInherited(route, route.parent, paramsInheritanceStrategy).resolve; - return of(void 0); - } - }), tap(() => routesProcessed++), takeLast(1), mergeMap((_) => routesProcessed === routesNeedingDataUpdates.size ? of(t) : EMPTY)); - }); -} -function flattenRouteTree(route) { - const descendants = route.children.map((child) => flattenRouteTree(child)).flat(); - return [route, ...descendants]; -} -function runResolve(futureARS, futureRSS, paramsInheritanceStrategy, injector) { - const config = futureARS.routeConfig; - const resolve = futureARS._resolve; - if (config?.title !== void 0 && !hasStaticTitle(config)) { - resolve[RouteTitleKey] = config.title; - } - return resolveNode(resolve, futureARS, futureRSS, injector).pipe(map((resolvedData) => { - futureARS._resolvedData = resolvedData; - futureARS.data = getInherited(futureARS, futureARS.parent, paramsInheritanceStrategy).resolve; - return null; - })); -} -function resolveNode(resolve, futureARS, futureRSS, injector) { - const keys = getDataKeys(resolve); - if (keys.length === 0) { - return of({}); - } - const data = {}; - return from(keys).pipe(mergeMap((key) => getResolver(resolve[key], futureARS, futureRSS, injector).pipe(first(), tap((value) => { - data[key] = value; - }))), takeLast(1), mapTo(data), catchError((e) => isEmptyError(e) ? EMPTY : throwError(e))); -} -function getResolver(injectionToken, futureARS, futureRSS, injector) { - const closestInjector = getClosestRouteInjector(futureARS) ?? injector; - const resolver = getTokenOrFunctionIdentity(injectionToken, closestInjector); - const resolverValue = resolver.resolve ? resolver.resolve(futureARS, futureRSS) : runInInjectionContext(closestInjector, () => resolver(futureARS, futureRSS)); - return wrapIntoObservable(resolverValue); -} -function switchTap(next) { - return switchMap((v) => { - const nextResult = next(v); - if (nextResult) { - return from(nextResult).pipe(map(() => v)); - } - return of(v); - }); -} -var _TitleStrategy = class _TitleStrategy { - /** - * @returns The `title` of the deepest primary route. - */ - buildTitle(snapshot) { - let pageTitle; - let route = snapshot.root; - while (route !== void 0) { - pageTitle = this.getResolvedTitleForRoute(route) ?? pageTitle; - route = route.children.find((child) => child.outlet === PRIMARY_OUTLET); - } - return pageTitle; - } - /** - * Given an `ActivatedRouteSnapshot`, returns the final value of the - * `Route.title` property, which can either be a static string or a resolved value. - */ - getResolvedTitleForRoute(snapshot) { - return snapshot.data[RouteTitleKey]; - } -}; -_TitleStrategy.ɵfac = function TitleStrategy_Factory(t) { - return new (t || _TitleStrategy)(); -}; -_TitleStrategy.ɵprov = ɵɵdefineInjectable({ - token: _TitleStrategy, - factory: () => (() => inject(DefaultTitleStrategy))(), - providedIn: "root" -}); -var TitleStrategy = _TitleStrategy; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(TitleStrategy, [{ - type: Injectable, - args: [{ - providedIn: "root", - useFactory: () => inject(DefaultTitleStrategy) - }] - }], null, null); -})(); -var _DefaultTitleStrategy = class _DefaultTitleStrategy extends TitleStrategy { - constructor(title) { - super(); - this.title = title; - } - /** - * Sets the title of the browser to the given value. - * - * @param title The `pageTitle` from the deepest primary route. - */ - updateTitle(snapshot) { - const title = this.buildTitle(snapshot); - if (title !== void 0) { - this.title.setTitle(title); - } - } -}; -_DefaultTitleStrategy.ɵfac = function DefaultTitleStrategy_Factory(t) { - return new (t || _DefaultTitleStrategy)(ɵɵinject(Title)); -}; -_DefaultTitleStrategy.ɵprov = ɵɵdefineInjectable({ - token: _DefaultTitleStrategy, - factory: _DefaultTitleStrategy.ɵfac, - providedIn: "root" -}); -var DefaultTitleStrategy = _DefaultTitleStrategy; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DefaultTitleStrategy, [{ - type: Injectable, - args: [{ - providedIn: "root" - }] - }], () => [{ - type: Title - }], null); -})(); -var ROUTER_CONFIGURATION = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "router config" : "", { - providedIn: "root", - factory: () => ({}) -}); -var ROUTES = new InjectionToken("ROUTES"); -var _RouterConfigLoader = class _RouterConfigLoader { - constructor() { - this.componentLoaders = /* @__PURE__ */ new WeakMap(); - this.childrenLoaders = /* @__PURE__ */ new WeakMap(); - this.compiler = inject(Compiler); - } - loadComponent(route) { - if (this.componentLoaders.get(route)) { - return this.componentLoaders.get(route); - } else if (route._loadedComponent) { - return of(route._loadedComponent); - } - if (this.onLoadStartListener) { - this.onLoadStartListener(route); - } - const loadRunner = wrapIntoObservable(route.loadComponent()).pipe(map(maybeUnwrapDefaultExport), tap((component) => { - if (this.onLoadEndListener) { - this.onLoadEndListener(route); - } - (typeof ngDevMode === "undefined" || ngDevMode) && assertStandalone(route.path ?? "", component); - route._loadedComponent = component; - }), finalize(() => { - this.componentLoaders.delete(route); - })); - const loader = new ConnectableObservable(loadRunner, () => new Subject()).pipe(refCount()); - this.componentLoaders.set(route, loader); - return loader; - } - loadChildren(parentInjector, route) { - if (this.childrenLoaders.get(route)) { - return this.childrenLoaders.get(route); - } else if (route._loadedRoutes) { - return of({ - routes: route._loadedRoutes, - injector: route._loadedInjector - }); - } - if (this.onLoadStartListener) { - this.onLoadStartListener(route); - } - const moduleFactoryOrRoutes$ = loadChildren(route, this.compiler, parentInjector, this.onLoadEndListener); - const loadRunner = moduleFactoryOrRoutes$.pipe(finalize(() => { - this.childrenLoaders.delete(route); - })); - const loader = new ConnectableObservable(loadRunner, () => new Subject()).pipe(refCount()); - this.childrenLoaders.set(route, loader); - return loader; - } -}; -_RouterConfigLoader.ɵfac = function RouterConfigLoader_Factory(t) { - return new (t || _RouterConfigLoader)(); -}; -_RouterConfigLoader.ɵprov = ɵɵdefineInjectable({ - token: _RouterConfigLoader, - factory: _RouterConfigLoader.ɵfac, - providedIn: "root" -}); -var RouterConfigLoader = _RouterConfigLoader; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RouterConfigLoader, [{ - type: Injectable, - args: [{ - providedIn: "root" - }] - }], null, null); -})(); -function loadChildren(route, compiler, parentInjector, onLoadEndListener) { - return wrapIntoObservable(route.loadChildren()).pipe(map(maybeUnwrapDefaultExport), mergeMap((t) => { - if (t instanceof NgModuleFactory$1 || Array.isArray(t)) { - return of(t); - } else { - return from(compiler.compileModuleAsync(t)); - } - }), map((factoryOrRoutes) => { - if (onLoadEndListener) { - onLoadEndListener(route); - } - let injector; - let rawRoutes; - let requireStandaloneComponents = false; - if (Array.isArray(factoryOrRoutes)) { - rawRoutes = factoryOrRoutes; - requireStandaloneComponents = true; - } else { - injector = factoryOrRoutes.create(parentInjector).injector; - rawRoutes = injector.get(ROUTES, [], { - optional: true, - self: true - }).flat(); - } - const routes = rawRoutes.map(standardizeConfig); - (typeof ngDevMode === "undefined" || ngDevMode) && validateConfig(routes, route.path, requireStandaloneComponents); - return { - routes, - injector - }; - })); -} -function isWrappedDefaultExport(value) { - return value && typeof value === "object" && "default" in value; -} -function maybeUnwrapDefaultExport(input) { - return isWrappedDefaultExport(input) ? input["default"] : input; -} -var _UrlHandlingStrategy = class _UrlHandlingStrategy { -}; -_UrlHandlingStrategy.ɵfac = function UrlHandlingStrategy_Factory(t) { - return new (t || _UrlHandlingStrategy)(); -}; -_UrlHandlingStrategy.ɵprov = ɵɵdefineInjectable({ - token: _UrlHandlingStrategy, - factory: () => (() => inject(DefaultUrlHandlingStrategy))(), - providedIn: "root" -}); -var UrlHandlingStrategy = _UrlHandlingStrategy; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(UrlHandlingStrategy, [{ - type: Injectable, - args: [{ - providedIn: "root", - useFactory: () => inject(DefaultUrlHandlingStrategy) - }] - }], null, null); -})(); -var _DefaultUrlHandlingStrategy = class _DefaultUrlHandlingStrategy { - shouldProcessUrl(url) { - return true; - } - extract(url) { - return url; - } - merge(newUrlPart, wholeUrl) { - return newUrlPart; - } -}; -_DefaultUrlHandlingStrategy.ɵfac = function DefaultUrlHandlingStrategy_Factory(t) { - return new (t || _DefaultUrlHandlingStrategy)(); -}; -_DefaultUrlHandlingStrategy.ɵprov = ɵɵdefineInjectable({ - token: _DefaultUrlHandlingStrategy, - factory: _DefaultUrlHandlingStrategy.ɵfac, - providedIn: "root" -}); -var DefaultUrlHandlingStrategy = _DefaultUrlHandlingStrategy; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DefaultUrlHandlingStrategy, [{ - type: Injectable, - args: [{ - providedIn: "root" - }] - }], null, null); -})(); -var CREATE_VIEW_TRANSITION = new InjectionToken(ngDevMode ? "view transition helper" : ""); -var VIEW_TRANSITION_OPTIONS = new InjectionToken(ngDevMode ? "view transition options" : ""); -function createViewTransition(injector, from2, to) { - const transitionOptions = injector.get(VIEW_TRANSITION_OPTIONS); - const document = injector.get(DOCUMENT); - return injector.get(NgZone).runOutsideAngular(() => { - if (!document.startViewTransition || transitionOptions.skipNextTransition) { - transitionOptions.skipNextTransition = false; - return Promise.resolve(); - } - let resolveViewTransitionStarted; - const viewTransitionStarted = new Promise((resolve) => { - resolveViewTransitionStarted = resolve; - }); - const transition = document.startViewTransition(() => { - resolveViewTransitionStarted(); - return createRenderPromise(injector); - }); - const { - onViewTransitionCreated - } = transitionOptions; - if (onViewTransitionCreated) { - runInInjectionContext(injector, () => onViewTransitionCreated({ - transition, - from: from2, - to - })); - } - return viewTransitionStarted; - }); -} -function createRenderPromise(injector) { - return new Promise((resolve) => { - afterNextRender(resolve, { - injector - }); - }); -} -var _NavigationTransitions = class _NavigationTransitions { - get hasRequestedNavigation() { - return this.navigationId !== 0; - } - constructor() { - this.currentNavigation = null; - this.currentTransition = null; - this.lastSuccessfulNavigation = null; - this.events = new Subject(); - this.transitionAbortSubject = new Subject(); - this.configLoader = inject(RouterConfigLoader); - this.environmentInjector = inject(EnvironmentInjector); - this.urlSerializer = inject(UrlSerializer); - this.rootContexts = inject(ChildrenOutletContexts); - this.location = inject(Location); - this.inputBindingEnabled = inject(INPUT_BINDER, { - optional: true - }) !== null; - this.titleStrategy = inject(TitleStrategy); - this.options = inject(ROUTER_CONFIGURATION, { - optional: true - }) || {}; - this.paramsInheritanceStrategy = this.options.paramsInheritanceStrategy || "emptyOnly"; - this.urlHandlingStrategy = inject(UrlHandlingStrategy); - this.createViewTransition = inject(CREATE_VIEW_TRANSITION, { - optional: true - }); - this.navigationId = 0; - this.afterPreactivation = () => of(void 0); - this.rootComponentType = null; - const onLoadStart = (r) => this.events.next(new RouteConfigLoadStart(r)); - const onLoadEnd = (r) => this.events.next(new RouteConfigLoadEnd(r)); - this.configLoader.onLoadEndListener = onLoadEnd; - this.configLoader.onLoadStartListener = onLoadStart; - } - complete() { - this.transitions?.complete(); - } - handleNavigationRequest(request) { - const id = ++this.navigationId; - this.transitions?.next(__spreadProps(__spreadValues(__spreadValues({}, this.transitions.value), request), { - id - })); - } - setupNavigations(router, initialUrlTree, initialRouterState) { - this.transitions = new BehaviorSubject({ - id: 0, - currentUrlTree: initialUrlTree, - currentRawUrl: initialUrlTree, - extractedUrl: this.urlHandlingStrategy.extract(initialUrlTree), - urlAfterRedirects: this.urlHandlingStrategy.extract(initialUrlTree), - rawUrl: initialUrlTree, - extras: {}, - resolve: null, - reject: null, - promise: Promise.resolve(true), - source: IMPERATIVE_NAVIGATION, - restoredState: null, - currentSnapshot: initialRouterState.snapshot, - targetSnapshot: null, - currentRouterState: initialRouterState, - targetRouterState: null, - guards: { - canActivateChecks: [], - canDeactivateChecks: [] - }, - guardsResult: null - }); - return this.transitions.pipe( - filter((t) => t.id !== 0), - // Extract URL - map((t) => __spreadProps(__spreadValues({}, t), { - extractedUrl: this.urlHandlingStrategy.extract(t.rawUrl) - })), - // Using switchMap so we cancel executing navigations when a new one comes in - switchMap((overallTransitionState) => { - this.currentTransition = overallTransitionState; - let completed = false; - let errored = false; - return of(overallTransitionState).pipe( - // Store the Navigation object - tap((t) => { - this.currentNavigation = { - id: t.id, - initialUrl: t.rawUrl, - extractedUrl: t.extractedUrl, - trigger: t.source, - extras: t.extras, - previousNavigation: !this.lastSuccessfulNavigation ? null : __spreadProps(__spreadValues({}, this.lastSuccessfulNavigation), { - previousNavigation: null - }) - }; - }), - switchMap((t) => { - const urlTransition = !router.navigated || this.isUpdatingInternalState() || this.isUpdatedBrowserUrl(); - const onSameUrlNavigation = t.extras.onSameUrlNavigation ?? router.onSameUrlNavigation; - if (!urlTransition && onSameUrlNavigation !== "reload") { - const reason = typeof ngDevMode === "undefined" || ngDevMode ? `Navigation to ${t.rawUrl} was ignored because it is the same as the current Router URL.` : ""; - this.events.next(new NavigationSkipped( - t.id, - this.urlSerializer.serialize(t.rawUrl), - reason, - 0 - /* NavigationSkippedCode.IgnoredSameUrlNavigation */ - )); - t.resolve(null); - return EMPTY; - } - if (this.urlHandlingStrategy.shouldProcessUrl(t.rawUrl)) { - return of(t).pipe( - // Fire NavigationStart event - switchMap((t2) => { - const transition = this.transitions?.getValue(); - this.events.next(new NavigationStart(t2.id, this.urlSerializer.serialize(t2.extractedUrl), t2.source, t2.restoredState)); - if (transition !== this.transitions?.getValue()) { - return EMPTY; - } - return Promise.resolve(t2); - }), - // Recognize - recognize(this.environmentInjector, this.configLoader, this.rootComponentType, router.config, this.urlSerializer, this.paramsInheritanceStrategy), - // Update URL if in `eager` update mode - tap((t2) => { - overallTransitionState.targetSnapshot = t2.targetSnapshot; - overallTransitionState.urlAfterRedirects = t2.urlAfterRedirects; - this.currentNavigation = __spreadProps(__spreadValues({}, this.currentNavigation), { - finalUrl: t2.urlAfterRedirects - }); - const routesRecognized = new RoutesRecognized(t2.id, this.urlSerializer.serialize(t2.extractedUrl), this.urlSerializer.serialize(t2.urlAfterRedirects), t2.targetSnapshot); - this.events.next(routesRecognized); - }) - ); - } else if (urlTransition && this.urlHandlingStrategy.shouldProcessUrl(t.currentRawUrl)) { - const { - id, - extractedUrl, - source, - restoredState, - extras - } = t; - const navStart = new NavigationStart(id, this.urlSerializer.serialize(extractedUrl), source, restoredState); - this.events.next(navStart); - const targetSnapshot = createEmptyState(extractedUrl, this.rootComponentType).snapshot; - this.currentTransition = overallTransitionState = __spreadProps(__spreadValues({}, t), { - targetSnapshot, - urlAfterRedirects: extractedUrl, - extras: __spreadProps(__spreadValues({}, extras), { - skipLocationChange: false, - replaceUrl: false - }) - }); - this.currentNavigation.finalUrl = extractedUrl; - return of(overallTransitionState); - } else { - const reason = typeof ngDevMode === "undefined" || ngDevMode ? `Navigation was ignored because the UrlHandlingStrategy indicated neither the current URL ${t.currentRawUrl} nor target URL ${t.rawUrl} should be processed.` : ""; - this.events.next(new NavigationSkipped( - t.id, - this.urlSerializer.serialize(t.extractedUrl), - reason, - 1 - /* NavigationSkippedCode.IgnoredByUrlHandlingStrategy */ - )); - t.resolve(null); - return EMPTY; - } - }), - // --- GUARDS --- - tap((t) => { - const guardsStart = new GuardsCheckStart(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects), t.targetSnapshot); - this.events.next(guardsStart); - }), - map((t) => { - this.currentTransition = overallTransitionState = __spreadProps(__spreadValues({}, t), { - guards: getAllRouteGuards(t.targetSnapshot, t.currentSnapshot, this.rootContexts) - }); - return overallTransitionState; - }), - checkGuards(this.environmentInjector, (evt) => this.events.next(evt)), - tap((t) => { - overallTransitionState.guardsResult = t.guardsResult; - if (isUrlTree(t.guardsResult)) { - throw redirectingNavigationError(this.urlSerializer, t.guardsResult); - } - const guardsEnd = new GuardsCheckEnd(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects), t.targetSnapshot, !!t.guardsResult); - this.events.next(guardsEnd); - }), - filter((t) => { - if (!t.guardsResult) { - this.cancelNavigationTransition( - t, - "", - 3 - /* NavigationCancellationCode.GuardRejected */ - ); - return false; - } - return true; - }), - // --- RESOLVE --- - switchTap((t) => { - if (t.guards.canActivateChecks.length) { - return of(t).pipe(tap((t2) => { - const resolveStart = new ResolveStart(t2.id, this.urlSerializer.serialize(t2.extractedUrl), this.urlSerializer.serialize(t2.urlAfterRedirects), t2.targetSnapshot); - this.events.next(resolveStart); - }), switchMap((t2) => { - let dataResolved = false; - return of(t2).pipe(resolveData(this.paramsInheritanceStrategy, this.environmentInjector), tap({ - next: () => dataResolved = true, - complete: () => { - if (!dataResolved) { - this.cancelNavigationTransition( - t2, - typeof ngDevMode === "undefined" || ngDevMode ? `At least one route resolver didn't emit any value.` : "", - 2 - /* NavigationCancellationCode.NoDataFromResolver */ - ); - } - } - })); - }), tap((t2) => { - const resolveEnd = new ResolveEnd(t2.id, this.urlSerializer.serialize(t2.extractedUrl), this.urlSerializer.serialize(t2.urlAfterRedirects), t2.targetSnapshot); - this.events.next(resolveEnd); - })); - } - return void 0; - }), - // --- LOAD COMPONENTS --- - switchTap((t) => { - const loadComponents = (route) => { - const loaders = []; - if (route.routeConfig?.loadComponent && !route.routeConfig._loadedComponent) { - loaders.push(this.configLoader.loadComponent(route.routeConfig).pipe(tap((loadedComponent) => { - route.component = loadedComponent; - }), map(() => void 0))); - } - for (const child of route.children) { - loaders.push(...loadComponents(child)); - } - return loaders; - }; - return combineLatest(loadComponents(t.targetSnapshot.root)).pipe(defaultIfEmpty(), take(1)); - }), - switchTap(() => this.afterPreactivation()), - switchMap(() => { - const { - currentSnapshot, - targetSnapshot - } = overallTransitionState; - const viewTransitionStarted = this.createViewTransition?.(this.environmentInjector, currentSnapshot.root, targetSnapshot.root); - return viewTransitionStarted ? from(viewTransitionStarted).pipe(map(() => overallTransitionState)) : of(overallTransitionState); - }), - map((t) => { - const targetRouterState = createRouterState(router.routeReuseStrategy, t.targetSnapshot, t.currentRouterState); - this.currentTransition = overallTransitionState = __spreadProps(__spreadValues({}, t), { - targetRouterState - }); - this.currentNavigation.targetRouterState = targetRouterState; - return overallTransitionState; - }), - tap(() => { - this.events.next(new BeforeActivateRoutes()); - }), - activateRoutes(this.rootContexts, router.routeReuseStrategy, (evt) => this.events.next(evt), this.inputBindingEnabled), - // Ensure that if some observable used to drive the transition doesn't - // complete, the navigation still finalizes This should never happen, but - // this is done as a safety measure to avoid surfacing this error (#49567). - take(1), - tap({ - next: (t) => { - completed = true; - this.lastSuccessfulNavigation = this.currentNavigation; - this.events.next(new NavigationEnd(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects))); - this.titleStrategy?.updateTitle(t.targetRouterState.snapshot); - t.resolve(true); - }, - complete: () => { - completed = true; - } - }), - // There used to be a lot more logic happening directly within the - // transition Observable. Some of this logic has been refactored out to - // other places but there may still be errors that happen there. This gives - // us a way to cancel the transition from the outside. This may also be - // required in the future to support something like the abort signal of the - // Navigation API where the navigation gets aborted from outside the - // transition. - takeUntil(this.transitionAbortSubject.pipe(tap((err) => { - throw err; - }))), - finalize(() => { - if (!completed && !errored) { - const cancelationReason = typeof ngDevMode === "undefined" || ngDevMode ? `Navigation ID ${overallTransitionState.id} is not equal to the current navigation id ${this.navigationId}` : ""; - this.cancelNavigationTransition( - overallTransitionState, - cancelationReason, - 1 - /* NavigationCancellationCode.SupersededByNewNavigation */ - ); - } - if (this.currentNavigation?.id === overallTransitionState.id) { - this.currentNavigation = null; - } - }), - catchError((e) => { - errored = true; - if (isNavigationCancelingError$1(e)) { - this.events.next(new NavigationCancel(overallTransitionState.id, this.urlSerializer.serialize(overallTransitionState.extractedUrl), e.message, e.cancellationCode)); - if (!isRedirectingNavigationCancelingError$1(e)) { - overallTransitionState.resolve(false); - } else { - this.events.next(new RedirectRequest(e.url)); - } - } else { - this.events.next(new NavigationError(overallTransitionState.id, this.urlSerializer.serialize(overallTransitionState.extractedUrl), e, overallTransitionState.targetSnapshot ?? void 0)); - try { - overallTransitionState.resolve(router.errorHandler(e)); - } catch (ee) { - overallTransitionState.reject(ee); - } - } - return EMPTY; - }) - ); - }) - ); - } - cancelNavigationTransition(t, reason, code) { - const navCancel = new NavigationCancel(t.id, this.urlSerializer.serialize(t.extractedUrl), reason, code); - this.events.next(navCancel); - t.resolve(false); - } - /** - * @returns Whether we're navigating to somewhere that is not what the Router is - * currently set to. - */ - isUpdatingInternalState() { - return this.currentTransition?.extractedUrl.toString() !== this.currentTransition?.currentUrlTree.toString(); - } - /** - * @returns Whether we're updating the browser URL to something new (navigation is going - * to somewhere not displayed in the URL bar and we will update the URL - * bar if navigation succeeds). - */ - isUpdatedBrowserUrl() { - const extractedBrowserUrl = this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(true))); - return extractedBrowserUrl.toString() !== this.currentTransition?.extractedUrl.toString() && !this.currentTransition?.extras.skipLocationChange; - } -}; -_NavigationTransitions.ɵfac = function NavigationTransitions_Factory(t) { - return new (t || _NavigationTransitions)(); -}; -_NavigationTransitions.ɵprov = ɵɵdefineInjectable({ - token: _NavigationTransitions, - factory: _NavigationTransitions.ɵfac, - providedIn: "root" -}); -var NavigationTransitions = _NavigationTransitions; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NavigationTransitions, [{ - type: Injectable, - args: [{ - providedIn: "root" - }] - }], () => [], null); -})(); -function isBrowserTriggeredNavigation(source) { - return source !== IMPERATIVE_NAVIGATION; -} -var _RouteReuseStrategy = class _RouteReuseStrategy { -}; -_RouteReuseStrategy.ɵfac = function RouteReuseStrategy_Factory(t) { - return new (t || _RouteReuseStrategy)(); -}; -_RouteReuseStrategy.ɵprov = ɵɵdefineInjectable({ - token: _RouteReuseStrategy, - factory: () => (() => inject(DefaultRouteReuseStrategy))(), - providedIn: "root" -}); -var RouteReuseStrategy = _RouteReuseStrategy; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RouteReuseStrategy, [{ - type: Injectable, - args: [{ - providedIn: "root", - useFactory: () => inject(DefaultRouteReuseStrategy) - }] - }], null, null); -})(); -var BaseRouteReuseStrategy = class { - /** - * Whether the given route should detach for later reuse. - * Always returns false for `BaseRouteReuseStrategy`. - * */ - shouldDetach(route) { - return false; - } - /** - * A no-op; the route is never stored since this strategy never detaches routes for later re-use. - */ - store(route, detachedTree) { - } - /** Returns `false`, meaning the route (and its subtree) is never reattached */ - shouldAttach(route) { - return false; - } - /** Returns `null` because this strategy does not store routes for later re-use. */ - retrieve(route) { - return null; - } - /** - * Determines if a route should be reused. - * This strategy returns `true` when the future route config and current route config are - * identical. - */ - shouldReuseRoute(future, curr) { - return future.routeConfig === curr.routeConfig; - } -}; -var _DefaultRouteReuseStrategy = class _DefaultRouteReuseStrategy extends BaseRouteReuseStrategy { -}; -_DefaultRouteReuseStrategy.ɵfac = (() => { - let ɵDefaultRouteReuseStrategy_BaseFactory; - return function DefaultRouteReuseStrategy_Factory(t) { - return (ɵDefaultRouteReuseStrategy_BaseFactory || (ɵDefaultRouteReuseStrategy_BaseFactory = ɵɵgetInheritedFactory(_DefaultRouteReuseStrategy)))(t || _DefaultRouteReuseStrategy); - }; -})(); -_DefaultRouteReuseStrategy.ɵprov = ɵɵdefineInjectable({ - token: _DefaultRouteReuseStrategy, - factory: _DefaultRouteReuseStrategy.ɵfac, - providedIn: "root" -}); -var DefaultRouteReuseStrategy = _DefaultRouteReuseStrategy; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DefaultRouteReuseStrategy, [{ - type: Injectable, - args: [{ - providedIn: "root" - }] - }], null, null); -})(); -var _StateManager = class _StateManager { -}; -_StateManager.ɵfac = function StateManager_Factory(t) { - return new (t || _StateManager)(); -}; -_StateManager.ɵprov = ɵɵdefineInjectable({ - token: _StateManager, - factory: () => (() => inject(HistoryStateManager))(), - providedIn: "root" -}); -var StateManager = _StateManager; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(StateManager, [{ - type: Injectable, - args: [{ - providedIn: "root", - useFactory: () => inject(HistoryStateManager) - }] - }], null, null); -})(); -var _HistoryStateManager = class _HistoryStateManager extends StateManager { - constructor() { - super(...arguments); - this.location = inject(Location); - this.urlSerializer = inject(UrlSerializer); - this.options = inject(ROUTER_CONFIGURATION, { - optional: true - }) || {}; - this.canceledNavigationResolution = this.options.canceledNavigationResolution || "replace"; - this.urlHandlingStrategy = inject(UrlHandlingStrategy); - this.urlUpdateStrategy = this.options.urlUpdateStrategy || "deferred"; - this.currentUrlTree = new UrlTree(); - this.rawUrlTree = this.currentUrlTree; - this.currentPageId = 0; - this.lastSuccessfulId = -1; - this.routerState = createEmptyState(this.currentUrlTree, null); - this.stateMemento = this.createStateMemento(); - } - getCurrentUrlTree() { - return this.currentUrlTree; - } - getRawUrlTree() { - return this.rawUrlTree; - } - restoredState() { - return this.location.getState(); - } - /** - * The ɵrouterPageId of whatever page is currently active in the browser history. This is - * important for computing the target page id for new navigations because we need to ensure each - * page id in the browser history is 1 more than the previous entry. - */ - get browserPageId() { - if (this.canceledNavigationResolution !== "computed") { - return this.currentPageId; - } - return this.restoredState()?.ɵrouterPageId ?? this.currentPageId; - } - getRouterState() { - return this.routerState; - } - createStateMemento() { - return { - rawUrlTree: this.rawUrlTree, - currentUrlTree: this.currentUrlTree, - routerState: this.routerState - }; - } - registerNonRouterCurrentEntryChangeListener(listener) { - return this.location.subscribe((event) => { - if (event["type"] === "popstate") { - listener(event["url"], event.state); - } - }); - } - handleRouterEvent(e, currentTransition) { - if (e instanceof NavigationStart) { - this.stateMemento = this.createStateMemento(); - } else if (e instanceof NavigationSkipped) { - this.rawUrlTree = currentTransition.initialUrl; - } else if (e instanceof RoutesRecognized) { - if (this.urlUpdateStrategy === "eager") { - if (!currentTransition.extras.skipLocationChange) { - const rawUrl = this.urlHandlingStrategy.merge(currentTransition.finalUrl, currentTransition.initialUrl); - this.setBrowserUrl(rawUrl, currentTransition); - } - } - } else if (e instanceof BeforeActivateRoutes) { - this.currentUrlTree = currentTransition.finalUrl; - this.rawUrlTree = this.urlHandlingStrategy.merge(currentTransition.finalUrl, currentTransition.initialUrl); - this.routerState = currentTransition.targetRouterState; - if (this.urlUpdateStrategy === "deferred") { - if (!currentTransition.extras.skipLocationChange) { - this.setBrowserUrl(this.rawUrlTree, currentTransition); - } - } - } else if (e instanceof NavigationCancel && (e.code === 3 || e.code === 2)) { - this.restoreHistory(currentTransition); - } else if (e instanceof NavigationError) { - this.restoreHistory(currentTransition, true); - } else if (e instanceof NavigationEnd) { - this.lastSuccessfulId = e.id; - this.currentPageId = this.browserPageId; - } - } - setBrowserUrl(url, transition) { - const path = this.urlSerializer.serialize(url); - if (this.location.isCurrentPathEqualTo(path) || !!transition.extras.replaceUrl) { - const currentBrowserPageId = this.browserPageId; - const state = __spreadValues(__spreadValues({}, transition.extras.state), this.generateNgRouterState(transition.id, currentBrowserPageId)); - this.location.replaceState(path, "", state); - } else { - const state = __spreadValues(__spreadValues({}, transition.extras.state), this.generateNgRouterState(transition.id, this.browserPageId + 1)); - this.location.go(path, "", state); - } - } - /** - * Performs the necessary rollback action to restore the browser URL to the - * state before the transition. - */ - restoreHistory(navigation, restoringFromCaughtError = false) { - if (this.canceledNavigationResolution === "computed") { - const currentBrowserPageId = this.browserPageId; - const targetPagePosition = this.currentPageId - currentBrowserPageId; - if (targetPagePosition !== 0) { - this.location.historyGo(targetPagePosition); - } else if (this.currentUrlTree === navigation.finalUrl && targetPagePosition === 0) { - this.resetState(navigation); - this.resetUrlToCurrentUrlTree(); - } else { - } - } else if (this.canceledNavigationResolution === "replace") { - if (restoringFromCaughtError) { - this.resetState(navigation); - } - this.resetUrlToCurrentUrlTree(); - } - } - resetState(navigation) { - this.routerState = this.stateMemento.routerState; - this.currentUrlTree = this.stateMemento.currentUrlTree; - this.rawUrlTree = this.urlHandlingStrategy.merge(this.currentUrlTree, navigation.finalUrl ?? this.rawUrlTree); - } - resetUrlToCurrentUrlTree() { - this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree), "", this.generateNgRouterState(this.lastSuccessfulId, this.currentPageId)); - } - generateNgRouterState(navigationId, routerPageId) { - if (this.canceledNavigationResolution === "computed") { - return { - navigationId, - ɵrouterPageId: routerPageId - }; - } - return { - navigationId - }; - } -}; -_HistoryStateManager.ɵfac = (() => { - let ɵHistoryStateManager_BaseFactory; - return function HistoryStateManager_Factory(t) { - return (ɵHistoryStateManager_BaseFactory || (ɵHistoryStateManager_BaseFactory = ɵɵgetInheritedFactory(_HistoryStateManager)))(t || _HistoryStateManager); - }; -})(); -_HistoryStateManager.ɵprov = ɵɵdefineInjectable({ - token: _HistoryStateManager, - factory: _HistoryStateManager.ɵfac, - providedIn: "root" -}); -var HistoryStateManager = _HistoryStateManager; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(HistoryStateManager, [{ - type: Injectable, - args: [{ - providedIn: "root" - }] - }], null, null); -})(); -var NavigationResult; -(function(NavigationResult2) { - NavigationResult2[NavigationResult2["COMPLETE"] = 0] = "COMPLETE"; - NavigationResult2[NavigationResult2["FAILED"] = 1] = "FAILED"; - NavigationResult2[NavigationResult2["REDIRECTING"] = 2] = "REDIRECTING"; -})(NavigationResult || (NavigationResult = {})); -function afterNextNavigation(router, action) { - router.events.pipe(filter((e) => e instanceof NavigationEnd || e instanceof NavigationCancel || e instanceof NavigationError || e instanceof NavigationSkipped), map((e) => { - if (e instanceof NavigationEnd || e instanceof NavigationSkipped) { - return NavigationResult.COMPLETE; - } - const redirecting = e instanceof NavigationCancel ? e.code === 0 || e.code === 1 : false; - return redirecting ? NavigationResult.REDIRECTING : NavigationResult.FAILED; - }), filter((result) => result !== NavigationResult.REDIRECTING), take(1)).subscribe(() => { - action(); - }); -} -function defaultErrorHandler(error) { - throw error; -} -var exactMatchOptions = { - paths: "exact", - fragment: "ignored", - matrixParams: "ignored", - queryParams: "exact" -}; -var subsetMatchOptions = { - paths: "subset", - fragment: "ignored", - matrixParams: "ignored", - queryParams: "subset" -}; -var _Router = class _Router { - get currentUrlTree() { - return this.stateManager.getCurrentUrlTree(); - } - get rawUrlTree() { - return this.stateManager.getRawUrlTree(); - } - /** - * An event stream for routing events. - */ - get events() { - return this._events; - } - /** - * The current state of routing in this NgModule. - */ - get routerState() { - return this.stateManager.getRouterState(); - } - constructor() { - this.disposed = false; - this.isNgZoneEnabled = false; - this.console = inject(Console); - this.stateManager = inject(StateManager); - this.options = inject(ROUTER_CONFIGURATION, { - optional: true - }) || {}; - this.pendingTasks = inject(InitialRenderPendingTasks); - this.urlUpdateStrategy = this.options.urlUpdateStrategy || "deferred"; - this.navigationTransitions = inject(NavigationTransitions); - this.urlSerializer = inject(UrlSerializer); - this.location = inject(Location); - this.urlHandlingStrategy = inject(UrlHandlingStrategy); - this._events = new Subject(); - this.errorHandler = this.options.errorHandler || defaultErrorHandler; - this.navigated = false; - this.routeReuseStrategy = inject(RouteReuseStrategy); - this.onSameUrlNavigation = this.options.onSameUrlNavigation || "ignore"; - this.config = inject(ROUTES, { - optional: true - })?.flat() ?? []; - this.componentInputBindingEnabled = !!inject(INPUT_BINDER, { - optional: true - }); - this.eventsSubscription = new Subscription(); - this.isNgZoneEnabled = inject(NgZone) instanceof NgZone && NgZone.isInAngularZone(); - this.resetConfig(this.config); - this.navigationTransitions.setupNavigations(this, this.currentUrlTree, this.routerState).subscribe({ - error: (e) => { - this.console.warn(ngDevMode ? `Unhandled Navigation Error: ${e}` : e); - } - }); - this.subscribeToNavigationEvents(); - } - subscribeToNavigationEvents() { - const subscription = this.navigationTransitions.events.subscribe((e) => { - try { - const currentTransition = this.navigationTransitions.currentTransition; - const currentNavigation = this.navigationTransitions.currentNavigation; - if (currentTransition !== null && currentNavigation !== null) { - this.stateManager.handleRouterEvent(e, currentNavigation); - if (e instanceof NavigationCancel && e.code !== 0 && e.code !== 1) { - this.navigated = true; - } else if (e instanceof NavigationEnd) { - this.navigated = true; - } else if (e instanceof RedirectRequest) { - const mergedTree = this.urlHandlingStrategy.merge(e.url, currentTransition.currentRawUrl); - const extras = { - skipLocationChange: currentTransition.extras.skipLocationChange, - // The URL is already updated at this point if we have 'eager' URL - // updates or if the navigation was triggered by the browser (back - // button, URL bar, etc). We want to replace that item in history - // if the navigation is rejected. - replaceUrl: this.urlUpdateStrategy === "eager" || isBrowserTriggeredNavigation(currentTransition.source) - }; - this.scheduleNavigation(mergedTree, IMPERATIVE_NAVIGATION, null, extras, { - resolve: currentTransition.resolve, - reject: currentTransition.reject, - promise: currentTransition.promise - }); - } - } - if (isPublicRouterEvent(e)) { - this._events.next(e); - } - } catch (e2) { - this.navigationTransitions.transitionAbortSubject.next(e2); - } - }); - this.eventsSubscription.add(subscription); - } - /** @internal */ - resetRootComponentType(rootComponentType) { - this.routerState.root.component = rootComponentType; - this.navigationTransitions.rootComponentType = rootComponentType; - } - /** - * Sets up the location change listener and performs the initial navigation. - */ - initialNavigation() { - this.setUpLocationChangeListener(); - if (!this.navigationTransitions.hasRequestedNavigation) { - this.navigateToSyncWithBrowser(this.location.path(true), IMPERATIVE_NAVIGATION, this.stateManager.restoredState()); - } - } - /** - * Sets up the location change listener. This listener detects navigations triggered from outside - * the Router (the browser back/forward buttons, for example) and schedules a corresponding Router - * navigation so that the correct events, guards, etc. are triggered. - */ - setUpLocationChangeListener() { - if (!this.nonRouterCurrentEntryChangeSubscription) { - this.nonRouterCurrentEntryChangeSubscription = this.stateManager.registerNonRouterCurrentEntryChangeListener((url, state) => { - setTimeout(() => { - this.navigateToSyncWithBrowser(url, "popstate", state); - }, 0); - }); - } - } - /** - * Schedules a router navigation to synchronize Router state with the browser state. - * - * This is done as a response to a popstate event and the initial navigation. These - * two scenarios represent times when the browser URL/state has been updated and - * the Router needs to respond to ensure its internal state matches. - */ - navigateToSyncWithBrowser(url, source, state) { - const extras = { - replaceUrl: true - }; - const restoredState = state?.navigationId ? state : null; - if (state) { - const stateCopy = __spreadValues({}, state); - delete stateCopy.navigationId; - delete stateCopy.ɵrouterPageId; - if (Object.keys(stateCopy).length !== 0) { - extras.state = stateCopy; - } - } - const urlTree = this.parseUrl(url); - this.scheduleNavigation(urlTree, source, restoredState, extras); - } - /** The current URL. */ - get url() { - return this.serializeUrl(this.currentUrlTree); - } - /** - * Returns the current `Navigation` object when the router is navigating, - * and `null` when idle. - */ - getCurrentNavigation() { - return this.navigationTransitions.currentNavigation; - } - /** - * The `Navigation` object of the most recent navigation to succeed and `null` if there - * has not been a successful navigation yet. - */ - get lastSuccessfulNavigation() { - return this.navigationTransitions.lastSuccessfulNavigation; - } - /** - * Resets the route configuration used for navigation and generating links. - * - * @param config The route array for the new configuration. - * - * @usageNotes - * - * ``` - * router.resetConfig([ - * { path: 'team/:id', component: TeamCmp, children: [ - * { path: 'simple', component: SimpleCmp }, - * { path: 'user/:name', component: UserCmp } - * ]} - * ]); - * ``` - */ - resetConfig(config) { - (typeof ngDevMode === "undefined" || ngDevMode) && validateConfig(config); - this.config = config.map(standardizeConfig); - this.navigated = false; - } - /** @nodoc */ - ngOnDestroy() { - this.dispose(); - } - /** Disposes of the router. */ - dispose() { - this.navigationTransitions.complete(); - if (this.nonRouterCurrentEntryChangeSubscription) { - this.nonRouterCurrentEntryChangeSubscription.unsubscribe(); - this.nonRouterCurrentEntryChangeSubscription = void 0; - } - this.disposed = true; - this.eventsSubscription.unsubscribe(); - } - /** - * Appends URL segments to the current URL tree to create a new URL tree. - * - * @param commands An array of URL fragments with which to construct the new URL tree. - * If the path is static, can be the literal URL string. For a dynamic path, pass an array of path - * segments, followed by the parameters for each segment. - * The fragments are applied to the current URL tree or the one provided in the `relativeTo` - * property of the options object, if supplied. - * @param navigationExtras Options that control the navigation strategy. - * @returns The new URL tree. - * - * @usageNotes - * - * ``` - * // create /team/33/user/11 - * router.createUrlTree(['/team', 33, 'user', 11]); - * - * // create /team/33;expand=true/user/11 - * router.createUrlTree(['/team', 33, {expand: true}, 'user', 11]); - * - * // you can collapse static segments like this (this works only with the first passed-in value): - * router.createUrlTree(['/team/33/user', userId]); - * - * // If the first segment can contain slashes, and you do not want the router to split it, - * // you can do the following: - * router.createUrlTree([{segmentPath: '/one/two'}]); - * - * // create /team/33/(user/11//right:chat) - * router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: 'chat'}}]); - * - * // remove the right secondary node - * router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: null}}]); - * - * // assuming the current url is `/team/33/user/11` and the route points to `user/11` - * - * // navigate to /team/33/user/11/details - * router.createUrlTree(['details'], {relativeTo: route}); - * - * // navigate to /team/33/user/22 - * router.createUrlTree(['../22'], {relativeTo: route}); - * - * // navigate to /team/44/user/22 - * router.createUrlTree(['../../team/44/user/22'], {relativeTo: route}); - * - * Note that a value of `null` or `undefined` for `relativeTo` indicates that the - * tree should be created relative to the root. - * ``` - */ - createUrlTree(commands, navigationExtras = {}) { - const { - relativeTo, - queryParams, - fragment, - queryParamsHandling, - preserveFragment - } = navigationExtras; - const f = preserveFragment ? this.currentUrlTree.fragment : fragment; - let q = null; - switch (queryParamsHandling) { - case "merge": - q = __spreadValues(__spreadValues({}, this.currentUrlTree.queryParams), queryParams); - break; - case "preserve": - q = this.currentUrlTree.queryParams; - break; - default: - q = queryParams || null; - } - if (q !== null) { - q = this.removeEmptyProps(q); - } - let relativeToUrlSegmentGroup; - try { - const relativeToSnapshot = relativeTo ? relativeTo.snapshot : this.routerState.snapshot.root; - relativeToUrlSegmentGroup = createSegmentGroupFromRoute(relativeToSnapshot); - } catch (e) { - if (typeof commands[0] !== "string" || !commands[0].startsWith("/")) { - commands = []; - } - relativeToUrlSegmentGroup = this.currentUrlTree.root; - } - return createUrlTreeFromSegmentGroup(relativeToUrlSegmentGroup, commands, q, f ?? null); - } - /** - * Navigates to a view using an absolute route path. - * - * @param url An absolute path for a defined route. The function does not apply any delta to the - * current URL. - * @param extras An object containing properties that modify the navigation strategy. - * - * @returns A Promise that resolves to 'true' when navigation succeeds, - * to 'false' when navigation fails, or is rejected on error. - * - * @usageNotes - * - * The following calls request navigation to an absolute path. - * - * ``` - * router.navigateByUrl("/team/33/user/11"); - * - * // Navigate without updating the URL - * router.navigateByUrl("/team/33/user/11", { skipLocationChange: true }); - * ``` - * - * @see [Routing and Navigation guide](guide/router) - * - */ - navigateByUrl(url, extras = { - skipLocationChange: false - }) { - if (typeof ngDevMode === "undefined" || ngDevMode) { - if (this.isNgZoneEnabled && !NgZone.isInAngularZone()) { - this.console.warn(`Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?`); - } - } - const urlTree = isUrlTree(url) ? url : this.parseUrl(url); - const mergedTree = this.urlHandlingStrategy.merge(urlTree, this.rawUrlTree); - return this.scheduleNavigation(mergedTree, IMPERATIVE_NAVIGATION, null, extras); - } - /** - * Navigate based on the provided array of commands and a starting point. - * If no starting route is provided, the navigation is absolute. - * - * @param commands An array of URL fragments with which to construct the target URL. - * If the path is static, can be the literal URL string. For a dynamic path, pass an array of path - * segments, followed by the parameters for each segment. - * The fragments are applied to the current URL or the one provided in the `relativeTo` property - * of the options object, if supplied. - * @param extras An options object that determines how the URL should be constructed or - * interpreted. - * - * @returns A Promise that resolves to `true` when navigation succeeds, to `false` when navigation - * fails, - * or is rejected on error. - * - * @usageNotes - * - * The following calls request navigation to a dynamic route path relative to the current URL. - * - * ``` - * router.navigate(['team', 33, 'user', 11], {relativeTo: route}); - * - * // Navigate without updating the URL, overriding the default behavior - * router.navigate(['team', 33, 'user', 11], {relativeTo: route, skipLocationChange: true}); - * ``` - * - * @see [Routing and Navigation guide](guide/router) - * - */ - navigate(commands, extras = { - skipLocationChange: false - }) { - validateCommands(commands); - return this.navigateByUrl(this.createUrlTree(commands, extras), extras); - } - /** Serializes a `UrlTree` into a string */ - serializeUrl(url) { - return this.urlSerializer.serialize(url); - } - /** Parses a string into a `UrlTree` */ - parseUrl(url) { - try { - return this.urlSerializer.parse(url); - } catch { - return this.urlSerializer.parse("/"); - } - } - isActive(url, matchOptions) { - let options; - if (matchOptions === true) { - options = __spreadValues({}, exactMatchOptions); - } else if (matchOptions === false) { - options = __spreadValues({}, subsetMatchOptions); - } else { - options = matchOptions; - } - if (isUrlTree(url)) { - return containsTree(this.currentUrlTree, url, options); - } - const urlTree = this.parseUrl(url); - return containsTree(this.currentUrlTree, urlTree, options); - } - removeEmptyProps(params) { - return Object.keys(params).reduce((result, key) => { - const value = params[key]; - if (value !== null && value !== void 0) { - result[key] = value; - } - return result; - }, {}); - } - scheduleNavigation(rawUrl, source, restoredState, extras, priorPromise) { - if (this.disposed) { - return Promise.resolve(false); - } - let resolve; - let reject; - let promise; - if (priorPromise) { - resolve = priorPromise.resolve; - reject = priorPromise.reject; - promise = priorPromise.promise; - } else { - promise = new Promise((res, rej) => { - resolve = res; - reject = rej; - }); - } - const taskId = this.pendingTasks.add(); - afterNextNavigation(this, () => { - queueMicrotask(() => this.pendingTasks.remove(taskId)); - }); - this.navigationTransitions.handleNavigationRequest({ - source, - restoredState, - currentUrlTree: this.currentUrlTree, - currentRawUrl: this.currentUrlTree, - rawUrl, - extras, - resolve, - reject, - promise, - currentSnapshot: this.routerState.snapshot, - currentRouterState: this.routerState - }); - return promise.catch((e) => { - return Promise.reject(e); - }); - } -}; -_Router.ɵfac = function Router_Factory(t) { - return new (t || _Router)(); -}; -_Router.ɵprov = ɵɵdefineInjectable({ - token: _Router, - factory: _Router.ɵfac, - providedIn: "root" -}); -var Router = _Router; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Router, [{ - type: Injectable, - args: [{ - providedIn: "root" - }] - }], () => [], null); -})(); -function validateCommands(commands) { - for (let i = 0; i < commands.length; i++) { - const cmd = commands[i]; - if (cmd == null) { - throw new RuntimeError(4008, (typeof ngDevMode === "undefined" || ngDevMode) && `The requested path contains ${cmd} segment at index ${i}`); - } - } -} -function isPublicRouterEvent(e) { - return !(e instanceof BeforeActivateRoutes) && !(e instanceof RedirectRequest); -} -var _RouterLink = class _RouterLink { - constructor(router, route, tabIndexAttribute, renderer, el, locationStrategy) { - this.router = router; - this.route = route; - this.tabIndexAttribute = tabIndexAttribute; - this.renderer = renderer; - this.el = el; - this.locationStrategy = locationStrategy; - this.href = null; - this.commands = null; - this.onChanges = new Subject(); - this.preserveFragment = false; - this.skipLocationChange = false; - this.replaceUrl = false; - const tagName = el.nativeElement.tagName?.toLowerCase(); - this.isAnchorElement = tagName === "a" || tagName === "area"; - if (this.isAnchorElement) { - this.subscription = router.events.subscribe((s) => { - if (s instanceof NavigationEnd) { - this.updateHref(); - } - }); - } else { - this.setTabIndexIfNotOnNativeEl("0"); - } - } - /** - * Modifies the tab index if there was not a tabindex attribute on the element during - * instantiation. - */ - setTabIndexIfNotOnNativeEl(newTabIndex) { - if (this.tabIndexAttribute != null || this.isAnchorElement) { - return; - } - this.applyAttributeValue("tabindex", newTabIndex); - } - /** @nodoc */ - ngOnChanges(changes) { - if (this.isAnchorElement) { - this.updateHref(); - } - this.onChanges.next(this); - } - /** - * Commands to pass to {@link Router#createUrlTree}. - * - **array**: commands to pass to {@link Router#createUrlTree}. - * - **string**: shorthand for array of commands with just the string, i.e. `['/route']` - * - **null|undefined**: effectively disables the `routerLink` - * @see {@link Router#createUrlTree} - */ - set routerLink(commands) { - if (commands != null) { - this.commands = Array.isArray(commands) ? commands : [commands]; - this.setTabIndexIfNotOnNativeEl("0"); - } else { - this.commands = null; - this.setTabIndexIfNotOnNativeEl(null); - } - } - /** @nodoc */ - onClick(button, ctrlKey, shiftKey, altKey, metaKey) { - if (this.urlTree === null) { - return true; - } - if (this.isAnchorElement) { - if (button !== 0 || ctrlKey || shiftKey || altKey || metaKey) { - return true; - } - if (typeof this.target === "string" && this.target != "_self") { - return true; - } - } - const extras = { - skipLocationChange: this.skipLocationChange, - replaceUrl: this.replaceUrl, - state: this.state - }; - this.router.navigateByUrl(this.urlTree, extras); - return !this.isAnchorElement; - } - /** @nodoc */ - ngOnDestroy() { - this.subscription?.unsubscribe(); - } - updateHref() { - this.href = this.urlTree !== null && this.locationStrategy ? this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(this.urlTree)) : null; - const sanitizedValue = this.href === null ? null : ( - // This class represents a directive that can be added to both `` elements, - // as well as other elements. As a result, we can't define security context at - // compile time. So the security context is deferred to runtime. - // The `ɵɵsanitizeUrlOrResourceUrl` selects the necessary sanitizer function - // based on the tag and property names. The logic mimics the one from - // `packages/compiler/src/schema/dom_security_schema.ts`, which is used at compile time. - // - // Note: we should investigate whether we can switch to using `@HostBinding('attr.href')` - // instead of applying a value via a renderer, after a final merge of the - // `RouterLinkWithHref` directive. - ɵɵsanitizeUrlOrResourceUrl(this.href, this.el.nativeElement.tagName.toLowerCase(), "href") - ); - this.applyAttributeValue("href", sanitizedValue); - } - applyAttributeValue(attrName, attrValue) { - const renderer = this.renderer; - const nativeElement = this.el.nativeElement; - if (attrValue !== null) { - renderer.setAttribute(nativeElement, attrName, attrValue); - } else { - renderer.removeAttribute(nativeElement, attrName); - } - } - get urlTree() { - if (this.commands === null) { - return null; - } - return this.router.createUrlTree(this.commands, { - // If the `relativeTo` input is not defined, we want to use `this.route` by default. - // Otherwise, we should use the value provided by the user in the input. - relativeTo: this.relativeTo !== void 0 ? this.relativeTo : this.route, - queryParams: this.queryParams, - fragment: this.fragment, - queryParamsHandling: this.queryParamsHandling, - preserveFragment: this.preserveFragment - }); - } -}; -_RouterLink.ɵfac = function RouterLink_Factory(t) { - return new (t || _RouterLink)(ɵɵdirectiveInject(Router), ɵɵdirectiveInject(ActivatedRoute), ɵɵinjectAttribute("tabindex"), ɵɵdirectiveInject(Renderer2), ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(LocationStrategy)); -}; -_RouterLink.ɵdir = ɵɵdefineDirective({ - type: _RouterLink, - selectors: [["", "routerLink", ""]], - hostVars: 1, - hostBindings: function RouterLink_HostBindings(rf, ctx) { - if (rf & 1) { - ɵɵlistener("click", function RouterLink_click_HostBindingHandler($event) { - return ctx.onClick($event.button, $event.ctrlKey, $event.shiftKey, $event.altKey, $event.metaKey); - }); - } - if (rf & 2) { - ɵɵattribute("target", ctx.target); - } - }, - inputs: { - target: "target", - queryParams: "queryParams", - fragment: "fragment", - queryParamsHandling: "queryParamsHandling", - state: "state", - relativeTo: "relativeTo", - preserveFragment: ["preserveFragment", "preserveFragment", booleanAttribute], - skipLocationChange: ["skipLocationChange", "skipLocationChange", booleanAttribute], - replaceUrl: ["replaceUrl", "replaceUrl", booleanAttribute], - routerLink: "routerLink" - }, - standalone: true, - features: [ɵɵInputTransformsFeature, ɵɵNgOnChangesFeature] -}); -var RouterLink = _RouterLink; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RouterLink, [{ - type: Directive, - args: [{ - selector: "[routerLink]", - standalone: true - }] - }], () => [{ - type: Router - }, { - type: ActivatedRoute - }, { - type: void 0, - decorators: [{ - type: Attribute, - args: ["tabindex"] - }] - }, { - type: Renderer2 - }, { - type: ElementRef - }, { - type: LocationStrategy - }], { - target: [{ - type: HostBinding, - args: ["attr.target"] - }, { - type: Input - }], - queryParams: [{ - type: Input - }], - fragment: [{ - type: Input - }], - queryParamsHandling: [{ - type: Input - }], - state: [{ - type: Input - }], - relativeTo: [{ - type: Input - }], - preserveFragment: [{ - type: Input, - args: [{ - transform: booleanAttribute - }] - }], - skipLocationChange: [{ - type: Input, - args: [{ - transform: booleanAttribute - }] - }], - replaceUrl: [{ - type: Input, - args: [{ - transform: booleanAttribute - }] - }], - routerLink: [{ - type: Input - }], - onClick: [{ - type: HostListener, - args: ["click", ["$event.button", "$event.ctrlKey", "$event.shiftKey", "$event.altKey", "$event.metaKey"]] - }] - }); -})(); -var _RouterLinkActive = class _RouterLinkActive { - get isActive() { - return this._isActive; - } - constructor(router, element, renderer, cdr, link) { - this.router = router; - this.element = element; - this.renderer = renderer; - this.cdr = cdr; - this.link = link; - this.classes = []; - this._isActive = false; - this.routerLinkActiveOptions = { - exact: false - }; - this.isActiveChange = new EventEmitter(); - this.routerEventsSubscription = router.events.subscribe((s) => { - if (s instanceof NavigationEnd) { - this.update(); - } - }); - } - /** @nodoc */ - ngAfterContentInit() { - of(this.links.changes, of(null)).pipe(mergeAll()).subscribe((_) => { - this.update(); - this.subscribeToEachLinkOnChanges(); - }); - } - subscribeToEachLinkOnChanges() { - this.linkInputChangesSubscription?.unsubscribe(); - const allLinkChanges = [...this.links.toArray(), this.link].filter((link) => !!link).map((link) => link.onChanges); - this.linkInputChangesSubscription = from(allLinkChanges).pipe(mergeAll()).subscribe((link) => { - if (this._isActive !== this.isLinkActive(this.router)(link)) { - this.update(); - } - }); - } - set routerLinkActive(data) { - const classes = Array.isArray(data) ? data : data.split(" "); - this.classes = classes.filter((c) => !!c); - } - /** @nodoc */ - ngOnChanges(changes) { - this.update(); - } - /** @nodoc */ - ngOnDestroy() { - this.routerEventsSubscription.unsubscribe(); - this.linkInputChangesSubscription?.unsubscribe(); - } - update() { - if (!this.links || !this.router.navigated) - return; - queueMicrotask(() => { - const hasActiveLinks = this.hasActiveLinks(); - if (this._isActive !== hasActiveLinks) { - this._isActive = hasActiveLinks; - this.cdr.markForCheck(); - this.classes.forEach((c) => { - if (hasActiveLinks) { - this.renderer.addClass(this.element.nativeElement, c); - } else { - this.renderer.removeClass(this.element.nativeElement, c); - } - }); - if (hasActiveLinks && this.ariaCurrentWhenActive !== void 0) { - this.renderer.setAttribute(this.element.nativeElement, "aria-current", this.ariaCurrentWhenActive.toString()); - } else { - this.renderer.removeAttribute(this.element.nativeElement, "aria-current"); - } - this.isActiveChange.emit(hasActiveLinks); - } - }); - } - isLinkActive(router) { - const options = isActiveMatchOptions(this.routerLinkActiveOptions) ? this.routerLinkActiveOptions : ( - // While the types should disallow `undefined` here, it's possible without strict inputs - this.routerLinkActiveOptions.exact || false - ); - return (link) => link.urlTree ? router.isActive(link.urlTree, options) : false; - } - hasActiveLinks() { - const isActiveCheckFn = this.isLinkActive(this.router); - return this.link && isActiveCheckFn(this.link) || this.links.some(isActiveCheckFn); - } -}; -_RouterLinkActive.ɵfac = function RouterLinkActive_Factory(t) { - return new (t || _RouterLinkActive)(ɵɵdirectiveInject(Router), ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(Renderer2), ɵɵdirectiveInject(ChangeDetectorRef), ɵɵdirectiveInject(RouterLink, 8)); -}; -_RouterLinkActive.ɵdir = ɵɵdefineDirective({ - type: _RouterLinkActive, - selectors: [["", "routerLinkActive", ""]], - contentQueries: function RouterLinkActive_ContentQueries(rf, ctx, dirIndex) { - if (rf & 1) { - ɵɵcontentQuery(dirIndex, RouterLink, 5); - } - if (rf & 2) { - let _t; - ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.links = _t); - } - }, - inputs: { - routerLinkActiveOptions: "routerLinkActiveOptions", - ariaCurrentWhenActive: "ariaCurrentWhenActive", - routerLinkActive: "routerLinkActive" - }, - outputs: { - isActiveChange: "isActiveChange" - }, - exportAs: ["routerLinkActive"], - standalone: true, - features: [ɵɵNgOnChangesFeature] -}); -var RouterLinkActive = _RouterLinkActive; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RouterLinkActive, [{ - type: Directive, - args: [{ - selector: "[routerLinkActive]", - exportAs: "routerLinkActive", - standalone: true - }] - }], () => [{ - type: Router - }, { - type: ElementRef - }, { - type: Renderer2 - }, { - type: ChangeDetectorRef - }, { - type: RouterLink, - decorators: [{ - type: Optional - }] - }], { - links: [{ - type: ContentChildren, - args: [RouterLink, { - descendants: true - }] - }], - routerLinkActiveOptions: [{ - type: Input - }], - ariaCurrentWhenActive: [{ - type: Input - }], - isActiveChange: [{ - type: Output - }], - routerLinkActive: [{ - type: Input - }] - }); -})(); -function isActiveMatchOptions(options) { - return !!options.paths; -} -var PreloadingStrategy = class { -}; -var _PreloadAllModules = class _PreloadAllModules { - preload(route, fn) { - return fn().pipe(catchError(() => of(null))); - } -}; -_PreloadAllModules.ɵfac = function PreloadAllModules_Factory(t) { - return new (t || _PreloadAllModules)(); -}; -_PreloadAllModules.ɵprov = ɵɵdefineInjectable({ - token: _PreloadAllModules, - factory: _PreloadAllModules.ɵfac, - providedIn: "root" -}); -var PreloadAllModules = _PreloadAllModules; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(PreloadAllModules, [{ - type: Injectable, - args: [{ - providedIn: "root" - }] - }], null, null); -})(); -var _NoPreloading = class _NoPreloading { - preload(route, fn) { - return of(null); - } -}; -_NoPreloading.ɵfac = function NoPreloading_Factory(t) { - return new (t || _NoPreloading)(); -}; -_NoPreloading.ɵprov = ɵɵdefineInjectable({ - token: _NoPreloading, - factory: _NoPreloading.ɵfac, - providedIn: "root" -}); -var NoPreloading = _NoPreloading; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NoPreloading, [{ - type: Injectable, - args: [{ - providedIn: "root" - }] - }], null, null); -})(); -var _RouterPreloader = class _RouterPreloader { - constructor(router, compiler, injector, preloadingStrategy, loader) { - this.router = router; - this.injector = injector; - this.preloadingStrategy = preloadingStrategy; - this.loader = loader; - } - setUpPreloading() { - this.subscription = this.router.events.pipe(filter((e) => e instanceof NavigationEnd), concatMap(() => this.preload())).subscribe(() => { - }); - } - preload() { - return this.processRoutes(this.injector, this.router.config); - } - /** @nodoc */ - ngOnDestroy() { - if (this.subscription) { - this.subscription.unsubscribe(); - } - } - processRoutes(injector, routes) { - const res = []; - for (const route of routes) { - if (route.providers && !route._injector) { - route._injector = createEnvironmentInjector(route.providers, injector, `Route: ${route.path}`); - } - const injectorForCurrentRoute = route._injector ?? injector; - const injectorForChildren = route._loadedInjector ?? injectorForCurrentRoute; - if (route.loadChildren && !route._loadedRoutes && route.canLoad === void 0 || route.loadComponent && !route._loadedComponent) { - res.push(this.preloadConfig(injectorForCurrentRoute, route)); - } - if (route.children || route._loadedRoutes) { - res.push(this.processRoutes(injectorForChildren, route.children ?? route._loadedRoutes)); - } - } - return from(res).pipe(mergeAll()); - } - preloadConfig(injector, route) { - return this.preloadingStrategy.preload(route, () => { - let loadedChildren$; - if (route.loadChildren && route.canLoad === void 0) { - loadedChildren$ = this.loader.loadChildren(injector, route); - } else { - loadedChildren$ = of(null); - } - const recursiveLoadChildren$ = loadedChildren$.pipe(mergeMap((config) => { - if (config === null) { - return of(void 0); - } - route._loadedRoutes = config.routes; - route._loadedInjector = config.injector; - return this.processRoutes(config.injector ?? injector, config.routes); - })); - if (route.loadComponent && !route._loadedComponent) { - const loadComponent$ = this.loader.loadComponent(route); - return from([recursiveLoadChildren$, loadComponent$]).pipe(mergeAll()); - } else { - return recursiveLoadChildren$; - } - }); - } -}; -_RouterPreloader.ɵfac = function RouterPreloader_Factory(t) { - return new (t || _RouterPreloader)(ɵɵinject(Router), ɵɵinject(Compiler), ɵɵinject(EnvironmentInjector), ɵɵinject(PreloadingStrategy), ɵɵinject(RouterConfigLoader)); -}; -_RouterPreloader.ɵprov = ɵɵdefineInjectable({ - token: _RouterPreloader, - factory: _RouterPreloader.ɵfac, - providedIn: "root" -}); -var RouterPreloader = _RouterPreloader; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RouterPreloader, [{ - type: Injectable, - args: [{ - providedIn: "root" - }] - }], () => [{ - type: Router - }, { - type: Compiler - }, { - type: EnvironmentInjector - }, { - type: PreloadingStrategy - }, { - type: RouterConfigLoader - }], null); -})(); -var ROUTER_SCROLLER = new InjectionToken(""); -var _RouterScroller = class _RouterScroller { - /** @nodoc */ - constructor(urlSerializer, transitions, viewportScroller, zone, options = {}) { - this.urlSerializer = urlSerializer; - this.transitions = transitions; - this.viewportScroller = viewportScroller; - this.zone = zone; - this.options = options; - this.lastId = 0; - this.lastSource = "imperative"; - this.restoredId = 0; - this.store = {}; - options.scrollPositionRestoration = options.scrollPositionRestoration || "disabled"; - options.anchorScrolling = options.anchorScrolling || "disabled"; - } - init() { - if (this.options.scrollPositionRestoration !== "disabled") { - this.viewportScroller.setHistoryScrollRestoration("manual"); - } - this.routerEventsSubscription = this.createScrollEvents(); - this.scrollEventsSubscription = this.consumeScrollEvents(); - } - createScrollEvents() { - return this.transitions.events.subscribe((e) => { - if (e instanceof NavigationStart) { - this.store[this.lastId] = this.viewportScroller.getScrollPosition(); - this.lastSource = e.navigationTrigger; - this.restoredId = e.restoredState ? e.restoredState.navigationId : 0; - } else if (e instanceof NavigationEnd) { - this.lastId = e.id; - this.scheduleScrollEvent(e, this.urlSerializer.parse(e.urlAfterRedirects).fragment); - } else if (e instanceof NavigationSkipped && e.code === 0) { - this.lastSource = void 0; - this.restoredId = 0; - this.scheduleScrollEvent(e, this.urlSerializer.parse(e.url).fragment); - } - }); - } - consumeScrollEvents() { - return this.transitions.events.subscribe((e) => { - if (!(e instanceof Scroll)) - return; - if (e.position) { - if (this.options.scrollPositionRestoration === "top") { - this.viewportScroller.scrollToPosition([0, 0]); - } else if (this.options.scrollPositionRestoration === "enabled") { - this.viewportScroller.scrollToPosition(e.position); - } - } else { - if (e.anchor && this.options.anchorScrolling === "enabled") { - this.viewportScroller.scrollToAnchor(e.anchor); - } else if (this.options.scrollPositionRestoration !== "disabled") { - this.viewportScroller.scrollToPosition([0, 0]); - } - } - }); - } - scheduleScrollEvent(routerEvent, anchor) { - this.zone.runOutsideAngular(() => { - setTimeout(() => { - this.zone.run(() => { - this.transitions.events.next(new Scroll(routerEvent, this.lastSource === "popstate" ? this.store[this.restoredId] : null, anchor)); - }); - }, 0); - }); - } - /** @nodoc */ - ngOnDestroy() { - this.routerEventsSubscription?.unsubscribe(); - this.scrollEventsSubscription?.unsubscribe(); - } -}; -_RouterScroller.ɵfac = function RouterScroller_Factory(t) { - ɵɵinvalidFactory(); -}; -_RouterScroller.ɵprov = ɵɵdefineInjectable({ - token: _RouterScroller, - factory: _RouterScroller.ɵfac -}); -var RouterScroller = _RouterScroller; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RouterScroller, [{ - type: Injectable - }], () => [{ - type: UrlSerializer - }, { - type: NavigationTransitions - }, { - type: ViewportScroller - }, { - type: NgZone - }, { - type: void 0 - }], null); -})(); -function provideRouter(routes, ...features) { - return makeEnvironmentProviders([{ - provide: ROUTES, - multi: true, - useValue: routes - }, typeof ngDevMode === "undefined" || ngDevMode ? { - provide: ROUTER_IS_PROVIDED, - useValue: true - } : [], { - provide: ActivatedRoute, - useFactory: rootRoute, - deps: [Router] - }, { - provide: APP_BOOTSTRAP_LISTENER, - multi: true, - useFactory: getBootstrapListener - }, features.map((feature) => feature.ɵproviders)]); -} -function rootRoute(router) { - return router.routerState.root; -} -function routerFeature(kind, providers) { - return { - ɵkind: kind, - ɵproviders: providers - }; -} -var ROUTER_IS_PROVIDED = new InjectionToken("", { - providedIn: "root", - factory: () => false -}); -var routerIsProvidedDevModeCheck = { - provide: ENVIRONMENT_INITIALIZER, - multi: true, - useFactory() { - return () => { - if (!inject(ROUTER_IS_PROVIDED)) { - console.warn("`provideRoutes` was called without `provideRouter` or `RouterModule.forRoot`. This is likely a mistake."); - } - }; - } -}; -function provideRoutes(routes) { - return [{ - provide: ROUTES, - multi: true, - useValue: routes - }, typeof ngDevMode === "undefined" || ngDevMode ? routerIsProvidedDevModeCheck : []]; -} -function withInMemoryScrolling(options = {}) { - const providers = [{ - provide: ROUTER_SCROLLER, - useFactory: () => { - const viewportScroller = inject(ViewportScroller); - const zone = inject(NgZone); - const transitions = inject(NavigationTransitions); - const urlSerializer = inject(UrlSerializer); - return new RouterScroller(urlSerializer, transitions, viewportScroller, zone, options); - } - }]; - return routerFeature(4, providers); -} -function getBootstrapListener() { - const injector = inject(Injector); - return (bootstrappedComponentRef) => { - const ref = injector.get(ApplicationRef); - if (bootstrappedComponentRef !== ref.components[0]) { - return; - } - const router = injector.get(Router); - const bootstrapDone = injector.get(BOOTSTRAP_DONE); - if (injector.get(INITIAL_NAVIGATION) === 1) { - router.initialNavigation(); - } - injector.get(ROUTER_PRELOADER, null, InjectFlags.Optional)?.setUpPreloading(); - injector.get(ROUTER_SCROLLER, null, InjectFlags.Optional)?.init(); - router.resetRootComponentType(ref.componentTypes[0]); - if (!bootstrapDone.closed) { - bootstrapDone.next(); - bootstrapDone.complete(); - bootstrapDone.unsubscribe(); - } - }; -} -var BOOTSTRAP_DONE = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "bootstrap done indicator" : "", { - factory: () => { - return new Subject(); - } -}); -var INITIAL_NAVIGATION = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "initial navigation" : "", { - providedIn: "root", - factory: () => 1 - /* InitialNavigation.EnabledNonBlocking */ -}); -function withEnabledBlockingInitialNavigation() { - const providers = [{ - provide: INITIAL_NAVIGATION, - useValue: 0 - /* InitialNavigation.EnabledBlocking */ - }, { - provide: APP_INITIALIZER, - multi: true, - deps: [Injector], - useFactory: (injector) => { - const locationInitialized = injector.get(LOCATION_INITIALIZED, Promise.resolve()); - return () => { - return locationInitialized.then(() => { - return new Promise((resolve) => { - const router = injector.get(Router); - const bootstrapDone = injector.get(BOOTSTRAP_DONE); - afterNextNavigation(router, () => { - resolve(true); - }); - injector.get(NavigationTransitions).afterPreactivation = () => { - resolve(true); - return bootstrapDone.closed ? of(void 0) : bootstrapDone; - }; - router.initialNavigation(); - }); - }); - }; - } - }]; - return routerFeature(2, providers); -} -function withDisabledInitialNavigation() { - const providers = [{ - provide: APP_INITIALIZER, - multi: true, - useFactory: () => { - const router = inject(Router); - return () => { - router.setUpLocationChangeListener(); - }; - } - }, { - provide: INITIAL_NAVIGATION, - useValue: 2 - /* InitialNavigation.Disabled */ - }]; - return routerFeature(3, providers); -} -function withDebugTracing() { - let providers = []; - if (typeof ngDevMode === "undefined" || ngDevMode) { - providers = [{ - provide: ENVIRONMENT_INITIALIZER, - multi: true, - useFactory: () => { - const router = inject(Router); - return () => router.events.subscribe((e) => { - console.group?.(`Router Event: ${e.constructor.name}`); - console.log(stringifyEvent(e)); - console.log(e); - console.groupEnd?.(); - }); - } - }]; - } else { - providers = []; - } - return routerFeature(1, providers); -} -var ROUTER_PRELOADER = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "router preloader" : ""); -function withPreloading(preloadingStrategy) { - const providers = [{ - provide: ROUTER_PRELOADER, - useExisting: RouterPreloader - }, { - provide: PreloadingStrategy, - useExisting: preloadingStrategy - }]; - return routerFeature(0, providers); -} -function withRouterConfig(options) { - const providers = [{ - provide: ROUTER_CONFIGURATION, - useValue: options - }]; - return routerFeature(5, providers); -} -function withHashLocation() { - const providers = [{ - provide: LocationStrategy, - useClass: HashLocationStrategy - }]; - return routerFeature(6, providers); -} -function withNavigationErrorHandler(fn) { - const providers = [{ - provide: ENVIRONMENT_INITIALIZER, - multi: true, - useValue: () => { - const injector = inject(EnvironmentInjector); - inject(Router).events.subscribe((e) => { - if (e instanceof NavigationError) { - runInInjectionContext(injector, () => fn(e)); - } - }); - } - }]; - return routerFeature(7, providers); -} -function withComponentInputBinding() { - const providers = [RoutedComponentInputBinder, { - provide: INPUT_BINDER, - useExisting: RoutedComponentInputBinder - }]; - return routerFeature(8, providers); -} -function withViewTransitions(options) { - const providers = [{ - provide: CREATE_VIEW_TRANSITION, - useValue: createViewTransition - }, { - provide: VIEW_TRANSITION_OPTIONS, - useValue: __spreadValues({ - skipNextTransition: !!options?.skipInitialTransition - }, options) - }]; - return routerFeature(9, providers); -} -var ROUTER_DIRECTIVES = [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent]; -var ROUTER_FORROOT_GUARD = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "router duplicate forRoot guard" : "ROUTER_FORROOT_GUARD"); -var ROUTER_PROVIDERS = [ - Location, - { - provide: UrlSerializer, - useClass: DefaultUrlSerializer - }, - Router, + ActivatedRoute, + ActivatedRouteSnapshot, + ActivationEnd, + ActivationStart, + BaseRouteReuseStrategy, + ChildActivationEnd, + ChildActivationStart, ChildrenOutletContexts, - { - provide: ActivatedRoute, - useFactory: rootRoute, - deps: [Router] - }, - RouterConfigLoader, - // Only used to warn when `provideRoutes` is used without `RouterModule` or `provideRouter`. Can - // be removed when `provideRoutes` is removed. - typeof ngDevMode === "undefined" || ngDevMode ? { - provide: ROUTER_IS_PROVIDED, - useValue: true - } : [] -]; -var _RouterModule = class _RouterModule { - constructor(guard) { - } - /** - * Creates and configures a module with all the router providers and directives. - * Optionally sets up an application listener to perform an initial navigation. - * - * When registering the NgModule at the root, import as follows: - * - * ``` - * @NgModule({ - * imports: [RouterModule.forRoot(ROUTES)] - * }) - * class MyNgModule {} - * ``` - * - * @param routes An array of `Route` objects that define the navigation paths for the application. - * @param config An `ExtraOptions` configuration object that controls how navigation is performed. - * @return The new `NgModule`. - * - */ - static forRoot(routes, config) { - return { - ngModule: _RouterModule, - providers: [ROUTER_PROVIDERS, typeof ngDevMode === "undefined" || ngDevMode ? config?.enableTracing ? withDebugTracing().ɵproviders : [] : [], { - provide: ROUTES, - multi: true, - useValue: routes - }, { - provide: ROUTER_FORROOT_GUARD, - useFactory: provideForRootGuard, - deps: [[Router, new Optional(), new SkipSelf()]] - }, { - provide: ROUTER_CONFIGURATION, - useValue: config ? config : {} - }, config?.useHash ? provideHashLocationStrategy() : providePathLocationStrategy(), provideRouterScroller(), config?.preloadingStrategy ? withPreloading(config.preloadingStrategy).ɵproviders : [], config?.initialNavigation ? provideInitialNavigation(config) : [], config?.bindToComponentInputs ? withComponentInputBinding().ɵproviders : [], config?.enableViewTransitions ? withViewTransitions().ɵproviders : [], provideRouterInitializer()] - }; - } - /** - * Creates a module with all the router directives and a provider registering routes, - * without creating a new Router service. - * When registering for submodules and lazy-loaded submodules, create the NgModule as follows: - * - * ``` - * @NgModule({ - * imports: [RouterModule.forChild(ROUTES)] - * }) - * class MyNgModule {} - * ``` - * - * @param routes An array of `Route` objects that define the navigation paths for the submodule. - * @return The new NgModule. - * - */ - static forChild(routes) { - return { - ngModule: _RouterModule, - providers: [{ - provide: ROUTES, - multi: true, - useValue: routes - }] - }; - } -}; -_RouterModule.ɵfac = function RouterModule_Factory(t) { - return new (t || _RouterModule)(ɵɵinject(ROUTER_FORROOT_GUARD, 8)); -}; -_RouterModule.ɵmod = ɵɵdefineNgModule({ - type: _RouterModule, - imports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent], - exports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent] -}); -_RouterModule.ɵinj = ɵɵdefineInjector({}); -var RouterModule = _RouterModule; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RouterModule, [{ - type: NgModule, - args: [{ - imports: ROUTER_DIRECTIVES, - exports: ROUTER_DIRECTIVES - }] - }], () => [{ - type: void 0, - decorators: [{ - type: Optional - }, { - type: Inject, - args: [ROUTER_FORROOT_GUARD] - }] - }], null); -})(); -function provideRouterScroller() { - return { - provide: ROUTER_SCROLLER, - useFactory: () => { - const viewportScroller = inject(ViewportScroller); - const zone = inject(NgZone); - const config = inject(ROUTER_CONFIGURATION); - const transitions = inject(NavigationTransitions); - const urlSerializer = inject(UrlSerializer); - if (config.scrollOffset) { - viewportScroller.setOffset(config.scrollOffset); - } - return new RouterScroller(urlSerializer, transitions, viewportScroller, zone, config); - } - }; -} -function provideHashLocationStrategy() { - return { - provide: LocationStrategy, - useClass: HashLocationStrategy - }; -} -function providePathLocationStrategy() { - return { - provide: LocationStrategy, - useClass: PathLocationStrategy - }; -} -function provideForRootGuard(router) { - if ((typeof ngDevMode === "undefined" || ngDevMode) && router) { - throw new RuntimeError(4007, `The Router was provided more than once. This can happen if 'forRoot' is used outside of the root injector. Lazy loaded modules should use RouterModule.forChild() instead.`); - } - return "guarded"; -} -function provideInitialNavigation(config) { - return [config.initialNavigation === "disabled" ? withDisabledInitialNavigation().ɵproviders : [], config.initialNavigation === "enabledBlocking" ? withEnabledBlockingInitialNavigation().ɵproviders : []]; -} -var ROUTER_INITIALIZER = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "Router Initializer" : ""); -function provideRouterInitializer() { - return [ - // ROUTER_INITIALIZER token should be removed. It's public API but shouldn't be. We can just - // have `getBootstrapListener` directly attached to APP_BOOTSTRAP_LISTENER. - { - provide: ROUTER_INITIALIZER, - useFactory: getBootstrapListener - }, - { - provide: APP_BOOTSTRAP_LISTENER, - multi: true, - useExisting: ROUTER_INITIALIZER - } - ]; -} -function mapToCanMatch(providers) { - return providers.map((provider) => (...params) => inject(provider).canMatch(...params)); -} -function mapToCanActivate(providers) { - return providers.map((provider) => (...params) => inject(provider).canActivate(...params)); -} -function mapToCanActivateChild(providers) { - return providers.map((provider) => (...params) => inject(provider).canActivateChild(...params)); -} -function mapToCanDeactivate(providers) { - return providers.map((provider) => (...params) => inject(provider).canDeactivate(...params)); -} -function mapToResolve(provider) { - return (...params) => inject(provider).resolve(...params); -} -var VERSION = new Version("17.0.7"); + DefaultTitleStrategy, + DefaultUrlSerializer, + GuardsCheckEnd, + GuardsCheckStart, + NavigationCancel, + NavigationEnd, + NavigationError, + NavigationSkipped, + NavigationStart, + NoPreloading, + OutletContext, + PRIMARY_OUTLET, + PreloadAllModules, + PreloadingStrategy, + ROUTER_CONFIGURATION, + ROUTER_INITIALIZER, + ROUTER_PROVIDERS, + ROUTES, + ResolveEnd, + ResolveStart, + RouteConfigLoadEnd, + RouteConfigLoadStart, + RouteReuseStrategy, + Router, + RouterEvent, + RouterLink, + RouterLinkActive, + RouterModule, + RouterOutlet, + RouterPreloader, + RouterState, + RouterStateSnapshot, + RoutesRecognized, + Scroll, + TitleStrategy, + UrlHandlingStrategy, + UrlSegment, + UrlSegmentGroup, + UrlSerializer, + UrlTree, + VERSION, + afterNextNavigation, + convertToParamMap, + createUrlTreeFromSnapshot, + defaultUrlMatcher, + loadChildren, + mapToCanActivate, + mapToCanActivateChild, + mapToCanDeactivate, + mapToCanMatch, + mapToResolve, + provideRouter, + provideRoutes, + withComponentInputBinding, + withDebugTracing, + withDisabledInitialNavigation, + withEnabledBlockingInitialNavigation, + withHashLocation, + withInMemoryScrolling, + withNavigationErrorHandler, + withPreloading, + withRouterConfig, + withViewTransitions, + ɵEmptyOutletComponent +} from "./chunk-CZEXXPIB.js"; +import "./chunk-Y4CEYMY2.js"; +import "./chunk-X7WBA24Z.js"; +import "./chunk-OSQBUYO6.js"; +import "./chunk-FGESKT7O.js"; +import "./chunk-HSNDBVJ3.js"; export { ActivatedRoute, ActivatedRouteSnapshot, @@ -5577,13 +152,4 @@ export { afterNextNavigation as ɵafterNextNavigation, loadChildren as ɵloadChildren }; -/*! Bundled license information: - -@angular/router/fesm2022/router.mjs: - (** - * @license Angular v17.0.7 - * (c) 2010-2022 Google LLC. https://angular.io/ - * License: MIT - *) -*/ //# sourceMappingURL=@angular_router.js.map diff --git a/.angular/cache/17.0.7/vite/deps/@angular_router.js.map b/.angular/cache/17.0.7/vite/deps/@angular_router.js.map index 7f92168..9865211 100644 --- a/.angular/cache/17.0.7/vite/deps/@angular_router.js.map +++ b/.angular/cache/17.0.7/vite/deps/@angular_router.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../../../../../node_modules/@angular/router/fesm2022/router.mjs"], - "sourcesContent": ["/**\n * @license Angular v17.0.7\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { ɵisPromise, ɵRuntimeError, Injectable, EventEmitter, inject, ViewContainerRef, ChangeDetectorRef, EnvironmentInjector, Directive, Input, Output, InjectionToken, reflectComponentType, Component, createEnvironmentInjector, ɵisNgModule, isStandalone, ɵisInjectable, runInInjectionContext, Compiler, NgModuleFactory, NgZone, afterNextRender, ɵConsole, ɵInitialRenderPendingTasks, ɵɵsanitizeUrlOrResourceUrl, booleanAttribute, Attribute, HostBinding, HostListener, Optional, ContentChildren, makeEnvironmentProviders, APP_BOOTSTRAP_LISTENER, ENVIRONMENT_INITIALIZER, Injector, ApplicationRef, InjectFlags, APP_INITIALIZER, SkipSelf, NgModule, Inject, Version } from '@angular/core';\nimport { isObservable, from, of, BehaviorSubject, combineLatest, EmptyError, concat, defer, pipe, throwError, EMPTY, ConnectableObservable, Subject, Subscription } from 'rxjs';\nimport * as i3 from '@angular/common';\nimport { DOCUMENT, Location, ViewportScroller, LOCATION_INITIALIZED, LocationStrategy, HashLocationStrategy, PathLocationStrategy } from '@angular/common';\nimport { map, switchMap, take, startWith, filter, mergeMap, first, concatMap, tap, catchError, scan, defaultIfEmpty, last as last$1, takeLast, mapTo, finalize, refCount, takeUntil, mergeAll } from 'rxjs/operators';\nimport * as i1 from '@angular/platform-browser';\n\n/**\n * The primary routing outlet.\n *\n * @publicApi\n */\nconst PRIMARY_OUTLET = 'primary';\n/**\n * A private symbol used to store the value of `Route.title` inside the `Route.data` if it is a\n * static string or `Route.resolve` if anything else. This allows us to reuse the existing route\n * data/resolvers to support the title feature without new instrumentation in the `Router` pipeline.\n */\nconst RouteTitleKey = /* @__PURE__ */Symbol('RouteTitle');\nclass ParamsAsMap {\n constructor(params) {\n this.params = params || {};\n }\n has(name) {\n return Object.prototype.hasOwnProperty.call(this.params, name);\n }\n get(name) {\n if (this.has(name)) {\n const v = this.params[name];\n return Array.isArray(v) ? v[0] : v;\n }\n return null;\n }\n getAll(name) {\n if (this.has(name)) {\n const v = this.params[name];\n return Array.isArray(v) ? v : [v];\n }\n return [];\n }\n get keys() {\n return Object.keys(this.params);\n }\n}\n/**\n * Converts a `Params` instance to a `ParamMap`.\n * @param params The instance to convert.\n * @returns The new map instance.\n *\n * @publicApi\n */\nfunction convertToParamMap(params) {\n return new ParamsAsMap(params);\n}\n/**\n * Matches the route configuration (`route`) against the actual URL (`segments`).\n *\n * When no matcher is defined on a `Route`, this is the matcher used by the Router by default.\n *\n * @param segments The remaining unmatched segments in the current navigation\n * @param segmentGroup The current segment group being matched\n * @param route The `Route` to match against.\n *\n * @see {@link UrlMatchResult}\n * @see {@link Route}\n *\n * @returns The resulting match information or `null` if the `route` should not match.\n * @publicApi\n */\nfunction defaultUrlMatcher(segments, segmentGroup, route) {\n const parts = route.path.split('/');\n if (parts.length > segments.length) {\n // The actual URL is shorter than the config, no match\n return null;\n }\n if (route.pathMatch === 'full' && (segmentGroup.hasChildren() || parts.length < segments.length)) {\n // The config is longer than the actual URL but we are looking for a full match, return null\n return null;\n }\n const posParams = {};\n // Check each config part against the actual URL\n for (let index = 0; index < parts.length; index++) {\n const part = parts[index];\n const segment = segments[index];\n const isParameter = part.startsWith(':');\n if (isParameter) {\n posParams[part.substring(1)] = segment;\n } else if (part !== segment.path) {\n // The actual URL part does not match the config, no match\n return null;\n }\n }\n return {\n consumed: segments.slice(0, parts.length),\n posParams\n };\n}\nfunction shallowEqualArrays(a, b) {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; ++i) {\n if (!shallowEqual(a[i], b[i])) return false;\n }\n return true;\n}\nfunction shallowEqual(a, b) {\n // While `undefined` should never be possible, it would sometimes be the case in IE 11\n // and pre-chromium Edge. The check below accounts for this edge case.\n const k1 = a ? getDataKeys(a) : undefined;\n const k2 = b ? getDataKeys(b) : undefined;\n if (!k1 || !k2 || k1.length != k2.length) {\n return false;\n }\n let key;\n for (let i = 0; i < k1.length; i++) {\n key = k1[i];\n if (!equalArraysOrString(a[key], b[key])) {\n return false;\n }\n }\n return true;\n}\n/**\n * Gets the keys of an object, including `symbol` keys.\n */\nfunction getDataKeys(obj) {\n return [...Object.keys(obj), ...Object.getOwnPropertySymbols(obj)];\n}\n/**\n * Test equality for arrays of strings or a string.\n */\nfunction equalArraysOrString(a, b) {\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n const aSorted = [...a].sort();\n const bSorted = [...b].sort();\n return aSorted.every((val, index) => bSorted[index] === val);\n } else {\n return a === b;\n }\n}\n/**\n * Return the last element of an array.\n */\nfunction last(a) {\n return a.length > 0 ? a[a.length - 1] : null;\n}\nfunction wrapIntoObservable(value) {\n if (isObservable(value)) {\n return value;\n }\n if (ɵisPromise(value)) {\n // Use `Promise.resolve()` to wrap promise-like instances.\n // Required ie when a Resolver returns a AngularJS `$q` promise to correctly trigger the\n // change detection.\n return from(Promise.resolve(value));\n }\n return of(value);\n}\nconst pathCompareMap = {\n 'exact': equalSegmentGroups,\n 'subset': containsSegmentGroup\n};\nconst paramCompareMap = {\n 'exact': equalParams,\n 'subset': containsParams,\n 'ignored': () => true\n};\nfunction containsTree(container, containee, options) {\n return pathCompareMap[options.paths](container.root, containee.root, options.matrixParams) && paramCompareMap[options.queryParams](container.queryParams, containee.queryParams) && !(options.fragment === 'exact' && container.fragment !== containee.fragment);\n}\nfunction equalParams(container, containee) {\n // TODO: This does not handle array params correctly.\n return shallowEqual(container, containee);\n}\nfunction equalSegmentGroups(container, containee, matrixParams) {\n if (!equalPath(container.segments, containee.segments)) return false;\n if (!matrixParamsMatch(container.segments, containee.segments, matrixParams)) {\n return false;\n }\n if (container.numberOfChildren !== containee.numberOfChildren) return false;\n for (const c in containee.children) {\n if (!container.children[c]) return false;\n if (!equalSegmentGroups(container.children[c], containee.children[c], matrixParams)) return false;\n }\n return true;\n}\nfunction containsParams(container, containee) {\n return Object.keys(containee).length <= Object.keys(container).length && Object.keys(containee).every(key => equalArraysOrString(container[key], containee[key]));\n}\nfunction containsSegmentGroup(container, containee, matrixParams) {\n return containsSegmentGroupHelper(container, containee, containee.segments, matrixParams);\n}\nfunction containsSegmentGroupHelper(container, containee, containeePaths, matrixParams) {\n if (container.segments.length > containeePaths.length) {\n const current = container.segments.slice(0, containeePaths.length);\n if (!equalPath(current, containeePaths)) return false;\n if (containee.hasChildren()) return false;\n if (!matrixParamsMatch(current, containeePaths, matrixParams)) return false;\n return true;\n } else if (container.segments.length === containeePaths.length) {\n if (!equalPath(container.segments, containeePaths)) return false;\n if (!matrixParamsMatch(container.segments, containeePaths, matrixParams)) return false;\n for (const c in containee.children) {\n if (!container.children[c]) return false;\n if (!containsSegmentGroup(container.children[c], containee.children[c], matrixParams)) {\n return false;\n }\n }\n return true;\n } else {\n const current = containeePaths.slice(0, container.segments.length);\n const next = containeePaths.slice(container.segments.length);\n if (!equalPath(container.segments, current)) return false;\n if (!matrixParamsMatch(container.segments, current, matrixParams)) return false;\n if (!container.children[PRIMARY_OUTLET]) return false;\n return containsSegmentGroupHelper(container.children[PRIMARY_OUTLET], containee, next, matrixParams);\n }\n}\nfunction matrixParamsMatch(containerPaths, containeePaths, options) {\n return containeePaths.every((containeeSegment, i) => {\n return paramCompareMap[options](containerPaths[i].parameters, containeeSegment.parameters);\n });\n}\n/**\n * @description\n *\n * Represents the parsed URL.\n *\n * Since a router state is a tree, and the URL is nothing but a serialized state, the URL is a\n * serialized tree.\n * UrlTree is a data structure that provides a lot of affordances in dealing with URLs\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * @Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const tree: UrlTree =\n * router.parseUrl('/team/33/(user/victor//support:help)?debug=true#fragment');\n * const f = tree.fragment; // return 'fragment'\n * const q = tree.queryParams; // returns {debug: 'true'}\n * const g: UrlSegmentGroup = tree.root.children[PRIMARY_OUTLET];\n * const s: UrlSegment[] = g.segments; // returns 2 segments 'team' and '33'\n * g.children[PRIMARY_OUTLET].segments; // returns 2 segments 'user' and 'victor'\n * g.children['support'].segments; // return 1 segment 'help'\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass UrlTree {\n constructor( /** The root segment group of the URL tree */\n root = new UrlSegmentGroup([], {}), /** The query params of the URL */\n queryParams = {}, /** The fragment of the URL */\n fragment = null) {\n this.root = root;\n this.queryParams = queryParams;\n this.fragment = fragment;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (root.segments.length > 0) {\n throw new ɵRuntimeError(4015 /* RuntimeErrorCode.INVALID_ROOT_URL_SEGMENT */, 'The root `UrlSegmentGroup` should not contain `segments`. ' + 'Instead, these segments belong in the `children` so they can be associated with a named outlet.');\n }\n }\n }\n get queryParamMap() {\n if (!this._queryParamMap) {\n this._queryParamMap = convertToParamMap(this.queryParams);\n }\n return this._queryParamMap;\n }\n /** @docsNotRequired */\n toString() {\n return DEFAULT_SERIALIZER.serialize(this);\n }\n}\n/**\n * @description\n *\n * Represents the parsed URL segment group.\n *\n * See `UrlTree` for more information.\n *\n * @publicApi\n */\nclass UrlSegmentGroup {\n constructor( /** The URL segments of this group. See `UrlSegment` for more information */\n segments, /** The list of children of this group */\n children) {\n this.segments = segments;\n this.children = children;\n /** The parent node in the url tree */\n this.parent = null;\n Object.values(children).forEach(v => v.parent = this);\n }\n /** Whether the segment has child segments */\n hasChildren() {\n return this.numberOfChildren > 0;\n }\n /** Number of child segments */\n get numberOfChildren() {\n return Object.keys(this.children).length;\n }\n /** @docsNotRequired */\n toString() {\n return serializePaths(this);\n }\n}\n/**\n * @description\n *\n * Represents a single URL segment.\n *\n * A UrlSegment is a part of a URL between the two slashes. It contains a path and the matrix\n * parameters associated with the segment.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * @Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const tree: UrlTree = router.parseUrl('/team;id=33');\n * const g: UrlSegmentGroup = tree.root.children[PRIMARY_OUTLET];\n * const s: UrlSegment[] = g.segments;\n * s[0].path; // returns 'team'\n * s[0].parameters; // returns {id: 33}\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass UrlSegment {\n constructor( /** The path part of a URL segment */\n path, /** The matrix parameters associated with a segment */\n parameters) {\n this.path = path;\n this.parameters = parameters;\n }\n get parameterMap() {\n if (!this._parameterMap) {\n this._parameterMap = convertToParamMap(this.parameters);\n }\n return this._parameterMap;\n }\n /** @docsNotRequired */\n toString() {\n return serializePath(this);\n }\n}\nfunction equalSegments(as, bs) {\n return equalPath(as, bs) && as.every((a, i) => shallowEqual(a.parameters, bs[i].parameters));\n}\nfunction equalPath(as, bs) {\n if (as.length !== bs.length) return false;\n return as.every((a, i) => a.path === bs[i].path);\n}\nfunction mapChildrenIntoArray(segment, fn) {\n let res = [];\n Object.entries(segment.children).forEach(([childOutlet, child]) => {\n if (childOutlet === PRIMARY_OUTLET) {\n res = res.concat(fn(child, childOutlet));\n }\n });\n Object.entries(segment.children).forEach(([childOutlet, child]) => {\n if (childOutlet !== PRIMARY_OUTLET) {\n res = res.concat(fn(child, childOutlet));\n }\n });\n return res;\n}\n/**\n * @description\n *\n * Serializes and deserializes a URL string into a URL tree.\n *\n * The url serialization strategy is customizable. You can\n * make all URLs case insensitive by providing a custom UrlSerializer.\n *\n * See `DefaultUrlSerializer` for an example of a URL serializer.\n *\n * @publicApi\n */\nclass UrlSerializer {\n static {\n this.ɵfac = function UrlSerializer_Factory(t) {\n return new (t || UrlSerializer)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: UrlSerializer,\n factory: () => (() => new DefaultUrlSerializer())(),\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(UrlSerializer, [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: () => new DefaultUrlSerializer()\n }]\n }], null, null);\n})();\n/**\n * @description\n *\n * A default implementation of the `UrlSerializer`.\n *\n * Example URLs:\n *\n * ```\n * /inbox/33(popup:compose)\n * /inbox/33;open=true/messages/44\n * ```\n *\n * DefaultUrlSerializer uses parentheses to serialize secondary segments (e.g., popup:compose), the\n * colon syntax to specify the outlet, and the ';parameter=value' syntax (e.g., open=true) to\n * specify route specific parameters.\n *\n * @publicApi\n */\nclass DefaultUrlSerializer {\n /** Parses a url into a `UrlTree` */\n parse(url) {\n const p = new UrlParser(url);\n return new UrlTree(p.parseRootSegment(), p.parseQueryParams(), p.parseFragment());\n }\n /** Converts a `UrlTree` into a url */\n serialize(tree) {\n const segment = `/${serializeSegment(tree.root, true)}`;\n const query = serializeQueryParams(tree.queryParams);\n const fragment = typeof tree.fragment === `string` ? `#${encodeUriFragment(tree.fragment)}` : '';\n return `${segment}${query}${fragment}`;\n }\n}\nconst DEFAULT_SERIALIZER = new DefaultUrlSerializer();\nfunction serializePaths(segment) {\n return segment.segments.map(p => serializePath(p)).join('/');\n}\nfunction serializeSegment(segment, root) {\n if (!segment.hasChildren()) {\n return serializePaths(segment);\n }\n if (root) {\n const primary = segment.children[PRIMARY_OUTLET] ? serializeSegment(segment.children[PRIMARY_OUTLET], false) : '';\n const children = [];\n Object.entries(segment.children).forEach(([k, v]) => {\n if (k !== PRIMARY_OUTLET) {\n children.push(`${k}:${serializeSegment(v, false)}`);\n }\n });\n return children.length > 0 ? `${primary}(${children.join('//')})` : primary;\n } else {\n const children = mapChildrenIntoArray(segment, (v, k) => {\n if (k === PRIMARY_OUTLET) {\n return [serializeSegment(segment.children[PRIMARY_OUTLET], false)];\n }\n return [`${k}:${serializeSegment(v, false)}`];\n });\n // use no parenthesis if the only child is a primary outlet route\n if (Object.keys(segment.children).length === 1 && segment.children[PRIMARY_OUTLET] != null) {\n return `${serializePaths(segment)}/${children[0]}`;\n }\n return `${serializePaths(segment)}/(${children.join('//')})`;\n }\n}\n/**\n * Encodes a URI string with the default encoding. This function will only ever be called from\n * `encodeUriQuery` or `encodeUriSegment` as it's the base set of encodings to be used. We need\n * a custom encoding because encodeURIComponent is too aggressive and encodes stuff that doesn't\n * have to be encoded per https://url.spec.whatwg.org.\n */\nfunction encodeUriString(s) {\n return encodeURIComponent(s).replace(/%40/g, '@').replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',');\n}\n/**\n * This function should be used to encode both keys and values in a query string key/value. In\n * the following URL, you need to call encodeUriQuery on \"k\" and \"v\":\n *\n * http://www.site.org/html;mk=mv?k=v#f\n */\nfunction encodeUriQuery(s) {\n return encodeUriString(s).replace(/%3B/gi, ';');\n}\n/**\n * This function should be used to encode a URL fragment. In the following URL, you need to call\n * encodeUriFragment on \"f\":\n *\n * http://www.site.org/html;mk=mv?k=v#f\n */\nfunction encodeUriFragment(s) {\n return encodeURI(s);\n}\n/**\n * This function should be run on any URI segment as well as the key and value in a key/value\n * pair for matrix params. In the following URL, you need to call encodeUriSegment on \"html\",\n * \"mk\", and \"mv\":\n *\n * http://www.site.org/html;mk=mv?k=v#f\n */\nfunction encodeUriSegment(s) {\n return encodeUriString(s).replace(/\\(/g, '%28').replace(/\\)/g, '%29').replace(/%26/gi, '&');\n}\nfunction decode(s) {\n return decodeURIComponent(s);\n}\n// Query keys/values should have the \"+\" replaced first, as \"+\" in a query string is \" \".\n// decodeURIComponent function will not decode \"+\" as a space.\nfunction decodeQuery(s) {\n return decode(s.replace(/\\+/g, '%20'));\n}\nfunction serializePath(path) {\n return `${encodeUriSegment(path.path)}${serializeMatrixParams(path.parameters)}`;\n}\nfunction serializeMatrixParams(params) {\n return Object.keys(params).map(key => `;${encodeUriSegment(key)}=${encodeUriSegment(params[key])}`).join('');\n}\nfunction serializeQueryParams(params) {\n const strParams = Object.keys(params).map(name => {\n const value = params[name];\n return Array.isArray(value) ? value.map(v => `${encodeUriQuery(name)}=${encodeUriQuery(v)}`).join('&') : `${encodeUriQuery(name)}=${encodeUriQuery(value)}`;\n }).filter(s => !!s);\n return strParams.length ? `?${strParams.join('&')}` : '';\n}\nconst SEGMENT_RE = /^[^\\/()?;#]+/;\nfunction matchSegments(str) {\n const match = str.match(SEGMENT_RE);\n return match ? match[0] : '';\n}\nconst MATRIX_PARAM_SEGMENT_RE = /^[^\\/()?;=#]+/;\nfunction matchMatrixKeySegments(str) {\n const match = str.match(MATRIX_PARAM_SEGMENT_RE);\n return match ? match[0] : '';\n}\nconst QUERY_PARAM_RE = /^[^=?&#]+/;\n// Return the name of the query param at the start of the string or an empty string\nfunction matchQueryParams(str) {\n const match = str.match(QUERY_PARAM_RE);\n return match ? match[0] : '';\n}\nconst QUERY_PARAM_VALUE_RE = /^[^&#]+/;\n// Return the value of the query param at the start of the string or an empty string\nfunction matchUrlQueryParamValue(str) {\n const match = str.match(QUERY_PARAM_VALUE_RE);\n return match ? match[0] : '';\n}\nclass UrlParser {\n constructor(url) {\n this.url = url;\n this.remaining = url;\n }\n parseRootSegment() {\n this.consumeOptional('/');\n if (this.remaining === '' || this.peekStartsWith('?') || this.peekStartsWith('#')) {\n return new UrlSegmentGroup([], {});\n }\n // The root segment group never has segments\n return new UrlSegmentGroup([], this.parseChildren());\n }\n parseQueryParams() {\n const params = {};\n if (this.consumeOptional('?')) {\n do {\n this.parseQueryParam(params);\n } while (this.consumeOptional('&'));\n }\n return params;\n }\n parseFragment() {\n return this.consumeOptional('#') ? decodeURIComponent(this.remaining) : null;\n }\n parseChildren() {\n if (this.remaining === '') {\n return {};\n }\n this.consumeOptional('/');\n const segments = [];\n if (!this.peekStartsWith('(')) {\n segments.push(this.parseSegment());\n }\n while (this.peekStartsWith('/') && !this.peekStartsWith('//') && !this.peekStartsWith('/(')) {\n this.capture('/');\n segments.push(this.parseSegment());\n }\n let children = {};\n if (this.peekStartsWith('/(')) {\n this.capture('/');\n children = this.parseParens(true);\n }\n let res = {};\n if (this.peekStartsWith('(')) {\n res = this.parseParens(false);\n }\n if (segments.length > 0 || Object.keys(children).length > 0) {\n res[PRIMARY_OUTLET] = new UrlSegmentGroup(segments, children);\n }\n return res;\n }\n // parse a segment with its matrix parameters\n // ie `name;k1=v1;k2`\n parseSegment() {\n const path = matchSegments(this.remaining);\n if (path === '' && this.peekStartsWith(';')) {\n throw new ɵRuntimeError(4009 /* RuntimeErrorCode.EMPTY_PATH_WITH_PARAMS */, (typeof ngDevMode === 'undefined' || ngDevMode) && `Empty path url segment cannot have parameters: '${this.remaining}'.`);\n }\n this.capture(path);\n return new UrlSegment(decode(path), this.parseMatrixParams());\n }\n parseMatrixParams() {\n const params = {};\n while (this.consumeOptional(';')) {\n this.parseParam(params);\n }\n return params;\n }\n parseParam(params) {\n const key = matchMatrixKeySegments(this.remaining);\n if (!key) {\n return;\n }\n this.capture(key);\n let value = '';\n if (this.consumeOptional('=')) {\n const valueMatch = matchSegments(this.remaining);\n if (valueMatch) {\n value = valueMatch;\n this.capture(value);\n }\n }\n params[decode(key)] = decode(value);\n }\n // Parse a single query parameter `name[=value]`\n parseQueryParam(params) {\n const key = matchQueryParams(this.remaining);\n if (!key) {\n return;\n }\n this.capture(key);\n let value = '';\n if (this.consumeOptional('=')) {\n const valueMatch = matchUrlQueryParamValue(this.remaining);\n if (valueMatch) {\n value = valueMatch;\n this.capture(value);\n }\n }\n const decodedKey = decodeQuery(key);\n const decodedVal = decodeQuery(value);\n if (params.hasOwnProperty(decodedKey)) {\n // Append to existing values\n let currentVal = params[decodedKey];\n if (!Array.isArray(currentVal)) {\n currentVal = [currentVal];\n params[decodedKey] = currentVal;\n }\n currentVal.push(decodedVal);\n } else {\n // Create a new value\n params[decodedKey] = decodedVal;\n }\n }\n // parse `(a/b//outlet_name:c/d)`\n parseParens(allowPrimary) {\n const segments = {};\n this.capture('(');\n while (!this.consumeOptional(')') && this.remaining.length > 0) {\n const path = matchSegments(this.remaining);\n const next = this.remaining[path.length];\n // if is is not one of these characters, then the segment was unescaped\n // or the group was not closed\n if (next !== '/' && next !== ')' && next !== ';') {\n throw new ɵRuntimeError(4010 /* RuntimeErrorCode.UNPARSABLE_URL */, (typeof ngDevMode === 'undefined' || ngDevMode) && `Cannot parse url '${this.url}'`);\n }\n let outletName = undefined;\n if (path.indexOf(':') > -1) {\n outletName = path.slice(0, path.indexOf(':'));\n this.capture(outletName);\n this.capture(':');\n } else if (allowPrimary) {\n outletName = PRIMARY_OUTLET;\n }\n const children = this.parseChildren();\n segments[outletName] = Object.keys(children).length === 1 ? children[PRIMARY_OUTLET] : new UrlSegmentGroup([], children);\n this.consumeOptional('//');\n }\n return segments;\n }\n peekStartsWith(str) {\n return this.remaining.startsWith(str);\n }\n // Consumes the prefix when it is present and returns whether it has been consumed\n consumeOptional(str) {\n if (this.peekStartsWith(str)) {\n this.remaining = this.remaining.substring(str.length);\n return true;\n }\n return false;\n }\n capture(str) {\n if (!this.consumeOptional(str)) {\n throw new ɵRuntimeError(4011 /* RuntimeErrorCode.UNEXPECTED_VALUE_IN_URL */, (typeof ngDevMode === 'undefined' || ngDevMode) && `Expected \"${str}\".`);\n }\n }\n}\nfunction createRoot(rootCandidate) {\n return rootCandidate.segments.length > 0 ? new UrlSegmentGroup([], {\n [PRIMARY_OUTLET]: rootCandidate\n }) : rootCandidate;\n}\n/**\n * Recursively\n * - merges primary segment children into their parents\n * - drops empty children (those which have no segments and no children themselves). This latter\n * prevents serializing a group into something like `/a(aux:)`, where `aux` is an empty child\n * segment.\n * - merges named outlets without a primary segment sibling into the children. This prevents\n * serializing a URL like `//(a:a)(b:b) instead of `/(a:a//b:b)` when the aux b route lives on the\n * root but the `a` route lives under an empty path primary route.\n */\nfunction squashSegmentGroup(segmentGroup) {\n const newChildren = {};\n for (const childOutlet of Object.keys(segmentGroup.children)) {\n const child = segmentGroup.children[childOutlet];\n const childCandidate = squashSegmentGroup(child);\n // moves named children in an empty path primary child into this group\n if (childOutlet === PRIMARY_OUTLET && childCandidate.segments.length === 0 && childCandidate.hasChildren()) {\n for (const [grandChildOutlet, grandChild] of Object.entries(childCandidate.children)) {\n newChildren[grandChildOutlet] = grandChild;\n }\n } // don't add empty children\n else if (childCandidate.segments.length > 0 || childCandidate.hasChildren()) {\n newChildren[childOutlet] = childCandidate;\n }\n }\n const s = new UrlSegmentGroup(segmentGroup.segments, newChildren);\n return mergeTrivialChildren(s);\n}\n/**\n * When possible, merges the primary outlet child into the parent `UrlSegmentGroup`.\n *\n * When a segment group has only one child which is a primary outlet, merges that child into the\n * parent. That is, the child segment group's segments are merged into the `s` and the child's\n * children become the children of `s`. Think of this like a 'squash', merging the child segment\n * group into the parent.\n */\nfunction mergeTrivialChildren(s) {\n if (s.numberOfChildren === 1 && s.children[PRIMARY_OUTLET]) {\n const c = s.children[PRIMARY_OUTLET];\n return new UrlSegmentGroup(s.segments.concat(c.segments), c.children);\n }\n return s;\n}\nfunction isUrlTree(v) {\n return v instanceof UrlTree;\n}\n\n/**\n * Creates a `UrlTree` relative to an `ActivatedRouteSnapshot`.\n *\n * @publicApi\n *\n *\n * @param relativeTo The `ActivatedRouteSnapshot` to apply the commands to\n * @param commands An array of URL fragments with which to construct the new URL tree.\n * If the path is static, can be the literal URL string. For a dynamic path, pass an array of path\n * segments, followed by the parameters for each segment.\n * The fragments are applied to the one provided in the `relativeTo` parameter.\n * @param queryParams The query parameters for the `UrlTree`. `null` if the `UrlTree` does not have\n * any query parameters.\n * @param fragment The fragment for the `UrlTree`. `null` if the `UrlTree` does not have a fragment.\n *\n * @usageNotes\n *\n * ```\n * // create /team/33/user/11\n * createUrlTreeFromSnapshot(snapshot, ['/team', 33, 'user', 11]);\n *\n * // create /team/33;expand=true/user/11\n * createUrlTreeFromSnapshot(snapshot, ['/team', 33, {expand: true}, 'user', 11]);\n *\n * // you can collapse static segments like this (this works only with the first passed-in value):\n * createUrlTreeFromSnapshot(snapshot, ['/team/33/user', userId]);\n *\n * // If the first segment can contain slashes, and you do not want the router to split it,\n * // you can do the following:\n * createUrlTreeFromSnapshot(snapshot, [{segmentPath: '/one/two'}]);\n *\n * // create /team/33/(user/11//right:chat)\n * createUrlTreeFromSnapshot(snapshot, ['/team', 33, {outlets: {primary: 'user/11', right:\n * 'chat'}}], null, null);\n *\n * // remove the right secondary node\n * createUrlTreeFromSnapshot(snapshot, ['/team', 33, {outlets: {primary: 'user/11', right: null}}]);\n *\n * // For the examples below, assume the current URL is for the `/team/33/user/11` and the\n * `ActivatedRouteSnapshot` points to `user/11`:\n *\n * // navigate to /team/33/user/11/details\n * createUrlTreeFromSnapshot(snapshot, ['details']);\n *\n * // navigate to /team/33/user/22\n * createUrlTreeFromSnapshot(snapshot, ['../22']);\n *\n * // navigate to /team/44/user/22\n * createUrlTreeFromSnapshot(snapshot, ['../../team/44/user/22']);\n * ```\n */\nfunction createUrlTreeFromSnapshot(relativeTo, commands, queryParams = null, fragment = null) {\n const relativeToUrlSegmentGroup = createSegmentGroupFromRoute(relativeTo);\n return createUrlTreeFromSegmentGroup(relativeToUrlSegmentGroup, commands, queryParams, fragment);\n}\nfunction createSegmentGroupFromRoute(route) {\n let targetGroup;\n function createSegmentGroupFromRouteRecursive(currentRoute) {\n const childOutlets = {};\n for (const childSnapshot of currentRoute.children) {\n const root = createSegmentGroupFromRouteRecursive(childSnapshot);\n childOutlets[childSnapshot.outlet] = root;\n }\n const segmentGroup = new UrlSegmentGroup(currentRoute.url, childOutlets);\n if (currentRoute === route) {\n targetGroup = segmentGroup;\n }\n return segmentGroup;\n }\n const rootCandidate = createSegmentGroupFromRouteRecursive(route.root);\n const rootSegmentGroup = createRoot(rootCandidate);\n return targetGroup ?? rootSegmentGroup;\n}\nfunction createUrlTreeFromSegmentGroup(relativeTo, commands, queryParams, fragment) {\n let root = relativeTo;\n while (root.parent) {\n root = root.parent;\n }\n // There are no commands so the `UrlTree` goes to the same path as the one created from the\n // `UrlSegmentGroup`. All we need to do is update the `queryParams` and `fragment` without\n // applying any other logic.\n if (commands.length === 0) {\n return tree(root, root, root, queryParams, fragment);\n }\n const nav = computeNavigation(commands);\n if (nav.toRoot()) {\n return tree(root, root, new UrlSegmentGroup([], {}), queryParams, fragment);\n }\n const position = findStartingPositionForTargetGroup(nav, root, relativeTo);\n const newSegmentGroup = position.processChildren ? updateSegmentGroupChildren(position.segmentGroup, position.index, nav.commands) : updateSegmentGroup(position.segmentGroup, position.index, nav.commands);\n return tree(root, position.segmentGroup, newSegmentGroup, queryParams, fragment);\n}\nfunction isMatrixParams(command) {\n return typeof command === 'object' && command != null && !command.outlets && !command.segmentPath;\n}\n/**\n * Determines if a given command has an `outlets` map. When we encounter a command\n * with an outlets k/v map, we need to apply each outlet individually to the existing segment.\n */\nfunction isCommandWithOutlets(command) {\n return typeof command === 'object' && command != null && command.outlets;\n}\nfunction tree(oldRoot, oldSegmentGroup, newSegmentGroup, queryParams, fragment) {\n let qp = {};\n if (queryParams) {\n Object.entries(queryParams).forEach(([name, value]) => {\n qp[name] = Array.isArray(value) ? value.map(v => `${v}`) : `${value}`;\n });\n }\n let rootCandidate;\n if (oldRoot === oldSegmentGroup) {\n rootCandidate = newSegmentGroup;\n } else {\n rootCandidate = replaceSegment(oldRoot, oldSegmentGroup, newSegmentGroup);\n }\n const newRoot = createRoot(squashSegmentGroup(rootCandidate));\n return new UrlTree(newRoot, qp, fragment);\n}\n/**\n * Replaces the `oldSegment` which is located in some child of the `current` with the `newSegment`.\n * This also has the effect of creating new `UrlSegmentGroup` copies to update references. This\n * shouldn't be necessary but the fallback logic for an invalid ActivatedRoute in the creation uses\n * the Router's current url tree. If we don't create new segment groups, we end up modifying that\n * value.\n */\nfunction replaceSegment(current, oldSegment, newSegment) {\n const children = {};\n Object.entries(current.children).forEach(([outletName, c]) => {\n if (c === oldSegment) {\n children[outletName] = newSegment;\n } else {\n children[outletName] = replaceSegment(c, oldSegment, newSegment);\n }\n });\n return new UrlSegmentGroup(current.segments, children);\n}\nclass Navigation {\n constructor(isAbsolute, numberOfDoubleDots, commands) {\n this.isAbsolute = isAbsolute;\n this.numberOfDoubleDots = numberOfDoubleDots;\n this.commands = commands;\n if (isAbsolute && commands.length > 0 && isMatrixParams(commands[0])) {\n throw new ɵRuntimeError(4003 /* RuntimeErrorCode.ROOT_SEGMENT_MATRIX_PARAMS */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Root segment cannot have matrix parameters');\n }\n const cmdWithOutlet = commands.find(isCommandWithOutlets);\n if (cmdWithOutlet && cmdWithOutlet !== last(commands)) {\n throw new ɵRuntimeError(4004 /* RuntimeErrorCode.MISPLACED_OUTLETS_COMMAND */, (typeof ngDevMode === 'undefined' || ngDevMode) && '{outlets:{}} has to be the last command');\n }\n }\n toRoot() {\n return this.isAbsolute && this.commands.length === 1 && this.commands[0] == '/';\n }\n}\n/** Transforms commands to a normalized `Navigation` */\nfunction computeNavigation(commands) {\n if (typeof commands[0] === 'string' && commands.length === 1 && commands[0] === '/') {\n return new Navigation(true, 0, commands);\n }\n let numberOfDoubleDots = 0;\n let isAbsolute = false;\n const res = commands.reduce((res, cmd, cmdIdx) => {\n if (typeof cmd === 'object' && cmd != null) {\n if (cmd.outlets) {\n const outlets = {};\n Object.entries(cmd.outlets).forEach(([name, commands]) => {\n outlets[name] = typeof commands === 'string' ? commands.split('/') : commands;\n });\n return [...res, {\n outlets\n }];\n }\n if (cmd.segmentPath) {\n return [...res, cmd.segmentPath];\n }\n }\n if (!(typeof cmd === 'string')) {\n return [...res, cmd];\n }\n if (cmdIdx === 0) {\n cmd.split('/').forEach((urlPart, partIndex) => {\n if (partIndex == 0 && urlPart === '.') {\n // skip './a'\n } else if (partIndex == 0 && urlPart === '') {\n // '/a'\n isAbsolute = true;\n } else if (urlPart === '..') {\n // '../a'\n numberOfDoubleDots++;\n } else if (urlPart != '') {\n res.push(urlPart);\n }\n });\n return res;\n }\n return [...res, cmd];\n }, []);\n return new Navigation(isAbsolute, numberOfDoubleDots, res);\n}\nclass Position {\n constructor(segmentGroup, processChildren, index) {\n this.segmentGroup = segmentGroup;\n this.processChildren = processChildren;\n this.index = index;\n }\n}\nfunction findStartingPositionForTargetGroup(nav, root, target) {\n if (nav.isAbsolute) {\n return new Position(root, true, 0);\n }\n if (!target) {\n // `NaN` is used only to maintain backwards compatibility with incorrectly mocked\n // `ActivatedRouteSnapshot` in tests. In prior versions of this code, the position here was\n // determined based on an internal property that was rarely mocked, resulting in `NaN`. In\n // reality, this code path should _never_ be touched since `target` is not allowed to be falsey.\n return new Position(root, false, NaN);\n }\n if (target.parent === null) {\n return new Position(target, true, 0);\n }\n const modifier = isMatrixParams(nav.commands[0]) ? 0 : 1;\n const index = target.segments.length - 1 + modifier;\n return createPositionApplyingDoubleDots(target, index, nav.numberOfDoubleDots);\n}\nfunction createPositionApplyingDoubleDots(group, index, numberOfDoubleDots) {\n let g = group;\n let ci = index;\n let dd = numberOfDoubleDots;\n while (dd > ci) {\n dd -= ci;\n g = g.parent;\n if (!g) {\n throw new ɵRuntimeError(4005 /* RuntimeErrorCode.INVALID_DOUBLE_DOTS */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Invalid number of \\'../\\'');\n }\n ci = g.segments.length;\n }\n return new Position(g, false, ci - dd);\n}\nfunction getOutlets(commands) {\n if (isCommandWithOutlets(commands[0])) {\n return commands[0].outlets;\n }\n return {\n [PRIMARY_OUTLET]: commands\n };\n}\nfunction updateSegmentGroup(segmentGroup, startIndex, commands) {\n if (!segmentGroup) {\n segmentGroup = new UrlSegmentGroup([], {});\n }\n if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) {\n return updateSegmentGroupChildren(segmentGroup, startIndex, commands);\n }\n const m = prefixedWith(segmentGroup, startIndex, commands);\n const slicedCommands = commands.slice(m.commandIndex);\n if (m.match && m.pathIndex < segmentGroup.segments.length) {\n const g = new UrlSegmentGroup(segmentGroup.segments.slice(0, m.pathIndex), {});\n g.children[PRIMARY_OUTLET] = new UrlSegmentGroup(segmentGroup.segments.slice(m.pathIndex), segmentGroup.children);\n return updateSegmentGroupChildren(g, 0, slicedCommands);\n } else if (m.match && slicedCommands.length === 0) {\n return new UrlSegmentGroup(segmentGroup.segments, {});\n } else if (m.match && !segmentGroup.hasChildren()) {\n return createNewSegmentGroup(segmentGroup, startIndex, commands);\n } else if (m.match) {\n return updateSegmentGroupChildren(segmentGroup, 0, slicedCommands);\n } else {\n return createNewSegmentGroup(segmentGroup, startIndex, commands);\n }\n}\nfunction updateSegmentGroupChildren(segmentGroup, startIndex, commands) {\n if (commands.length === 0) {\n return new UrlSegmentGroup(segmentGroup.segments, {});\n } else {\n const outlets = getOutlets(commands);\n const children = {};\n // If the set of commands applies to anything other than the primary outlet and the child\n // segment is an empty path primary segment on its own, we want to apply the commands to the\n // empty child path rather than here. The outcome is that the empty primary child is effectively\n // removed from the final output UrlTree. Imagine the following config:\n //\n // {path: '', children: [{path: '**', outlet: 'popup'}]}.\n //\n // Navigation to /(popup:a) will activate the child outlet correctly Given a follow-up\n // navigation with commands\n // ['/', {outlets: {'popup': 'b'}}], we _would not_ want to apply the outlet commands to the\n // root segment because that would result in\n // //(popup:a)(popup:b) since the outlet command got applied one level above where it appears in\n // the `ActivatedRoute` rather than updating the existing one.\n //\n // Because empty paths do not appear in the URL segments and the fact that the segments used in\n // the output `UrlTree` are squashed to eliminate these empty paths where possible\n // https://github.com/angular/angular/blob/13f10de40e25c6900ca55bd83b36bd533dacfa9e/packages/router/src/url_tree.ts#L755\n // it can be hard to determine what is the right thing to do when applying commands to a\n // `UrlSegmentGroup` that is created from an \"unsquashed\"/expanded `ActivatedRoute` tree.\n // This code effectively \"squashes\" empty path primary routes when they have no siblings on\n // the same level of the tree.\n if (Object.keys(outlets).some(o => o !== PRIMARY_OUTLET) && segmentGroup.children[PRIMARY_OUTLET] && segmentGroup.numberOfChildren === 1 && segmentGroup.children[PRIMARY_OUTLET].segments.length === 0) {\n const childrenOfEmptyChild = updateSegmentGroupChildren(segmentGroup.children[PRIMARY_OUTLET], startIndex, commands);\n return new UrlSegmentGroup(segmentGroup.segments, childrenOfEmptyChild.children);\n }\n Object.entries(outlets).forEach(([outlet, commands]) => {\n if (typeof commands === 'string') {\n commands = [commands];\n }\n if (commands !== null) {\n children[outlet] = updateSegmentGroup(segmentGroup.children[outlet], startIndex, commands);\n }\n });\n Object.entries(segmentGroup.children).forEach(([childOutlet, child]) => {\n if (outlets[childOutlet] === undefined) {\n children[childOutlet] = child;\n }\n });\n return new UrlSegmentGroup(segmentGroup.segments, children);\n }\n}\nfunction prefixedWith(segmentGroup, startIndex, commands) {\n let currentCommandIndex = 0;\n let currentPathIndex = startIndex;\n const noMatch = {\n match: false,\n pathIndex: 0,\n commandIndex: 0\n };\n while (currentPathIndex < segmentGroup.segments.length) {\n if (currentCommandIndex >= commands.length) return noMatch;\n const path = segmentGroup.segments[currentPathIndex];\n const command = commands[currentCommandIndex];\n // Do not try to consume command as part of the prefixing if it has outlets because it can\n // contain outlets other than the one being processed. Consuming the outlets command would\n // result in other outlets being ignored.\n if (isCommandWithOutlets(command)) {\n break;\n }\n const curr = `${command}`;\n const next = currentCommandIndex < commands.length - 1 ? commands[currentCommandIndex + 1] : null;\n if (currentPathIndex > 0 && curr === undefined) break;\n if (curr && next && typeof next === 'object' && next.outlets === undefined) {\n if (!compare(curr, next, path)) return noMatch;\n currentCommandIndex += 2;\n } else {\n if (!compare(curr, {}, path)) return noMatch;\n currentCommandIndex++;\n }\n currentPathIndex++;\n }\n return {\n match: true,\n pathIndex: currentPathIndex,\n commandIndex: currentCommandIndex\n };\n}\nfunction createNewSegmentGroup(segmentGroup, startIndex, commands) {\n const paths = segmentGroup.segments.slice(0, startIndex);\n let i = 0;\n while (i < commands.length) {\n const command = commands[i];\n if (isCommandWithOutlets(command)) {\n const children = createNewSegmentChildren(command.outlets);\n return new UrlSegmentGroup(paths, children);\n }\n // if we start with an object literal, we need to reuse the path part from the segment\n if (i === 0 && isMatrixParams(commands[0])) {\n const p = segmentGroup.segments[startIndex];\n paths.push(new UrlSegment(p.path, stringify(commands[0])));\n i++;\n continue;\n }\n const curr = isCommandWithOutlets(command) ? command.outlets[PRIMARY_OUTLET] : `${command}`;\n const next = i < commands.length - 1 ? commands[i + 1] : null;\n if (curr && next && isMatrixParams(next)) {\n paths.push(new UrlSegment(curr, stringify(next)));\n i += 2;\n } else {\n paths.push(new UrlSegment(curr, {}));\n i++;\n }\n }\n return new UrlSegmentGroup(paths, {});\n}\nfunction createNewSegmentChildren(outlets) {\n const children = {};\n Object.entries(outlets).forEach(([outlet, commands]) => {\n if (typeof commands === 'string') {\n commands = [commands];\n }\n if (commands !== null) {\n children[outlet] = createNewSegmentGroup(new UrlSegmentGroup([], {}), 0, commands);\n }\n });\n return children;\n}\nfunction stringify(params) {\n const res = {};\n Object.entries(params).forEach(([k, v]) => res[k] = `${v}`);\n return res;\n}\nfunction compare(path, params, segment) {\n return path == segment.path && shallowEqual(params, segment.parameters);\n}\nconst IMPERATIVE_NAVIGATION = 'imperative';\n/**\n * Base for events the router goes through, as opposed to events tied to a specific\n * route. Fired one time for any given navigation.\n *\n * The following code shows how a class subscribes to router events.\n *\n * ```ts\n * import {Event, RouterEvent, Router} from '@angular/router';\n *\n * class MyService {\n * constructor(public router: Router) {\n * router.events.pipe(\n * filter((e: Event | RouterEvent): e is RouterEvent => e instanceof RouterEvent)\n * ).subscribe((e: RouterEvent) => {\n * // Do something\n * });\n * }\n * }\n * ```\n *\n * @see {@link Event}\n * @see [Router events summary](guide/router-reference#router-events)\n * @publicApi\n */\nclass RouterEvent {\n constructor( /** A unique ID that the router assigns to every router navigation. */\n id, /** The URL that is the destination for this navigation. */\n url) {\n this.id = id;\n this.url = url;\n }\n}\n/**\n * An event triggered when a navigation starts.\n *\n * @publicApi\n */\nclass NavigationStart extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url, /** @docsNotRequired */\n navigationTrigger = 'imperative', /** @docsNotRequired */\n restoredState = null) {\n super(id, url);\n this.type = 0 /* EventType.NavigationStart */;\n this.navigationTrigger = navigationTrigger;\n this.restoredState = restoredState;\n }\n /** @docsNotRequired */\n toString() {\n return `NavigationStart(id: ${this.id}, url: '${this.url}')`;\n }\n}\n/**\n * An event triggered when a navigation ends successfully.\n *\n * @see {@link NavigationStart}\n * @see {@link NavigationCancel}\n * @see {@link NavigationError}\n *\n * @publicApi\n */\nclass NavigationEnd extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url, /** @docsNotRequired */\n urlAfterRedirects) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.type = 1 /* EventType.NavigationEnd */;\n }\n /** @docsNotRequired */\n toString() {\n return `NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`;\n }\n}\n/**\n * An event triggered when a navigation is canceled, directly or indirectly.\n * This can happen for several reasons including when a route guard\n * returns `false` or initiates a redirect by returning a `UrlTree`.\n *\n * @see {@link NavigationStart}\n * @see {@link NavigationEnd}\n * @see {@link NavigationError}\n *\n * @publicApi\n */\nclass NavigationCancel extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url,\n /**\n * A description of why the navigation was cancelled. For debug purposes only. Use `code`\n * instead for a stable cancellation reason that can be used in production.\n */\n reason,\n /**\n * A code to indicate why the navigation was canceled. This cancellation code is stable for\n * the reason and can be relied on whereas the `reason` string could change and should not be\n * used in production.\n */\n code) {\n super(id, url);\n this.reason = reason;\n this.code = code;\n this.type = 2 /* EventType.NavigationCancel */;\n }\n /** @docsNotRequired */\n toString() {\n return `NavigationCancel(id: ${this.id}, url: '${this.url}')`;\n }\n}\n/**\n * An event triggered when a navigation is skipped.\n * This can happen for a couple reasons including onSameUrlHandling\n * is set to `ignore` and the navigation URL is not different than the\n * current state.\n *\n * @publicApi\n */\nclass NavigationSkipped extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url,\n /**\n * A description of why the navigation was skipped. For debug purposes only. Use `code`\n * instead for a stable skipped reason that can be used in production.\n */\n reason,\n /**\n * A code to indicate why the navigation was skipped. This code is stable for\n * the reason and can be relied on whereas the `reason` string could change and should not be\n * used in production.\n */\n code) {\n super(id, url);\n this.reason = reason;\n this.code = code;\n this.type = 16 /* EventType.NavigationSkipped */;\n }\n}\n/**\n * An event triggered when a navigation fails due to an unexpected error.\n *\n * @see {@link NavigationStart}\n * @see {@link NavigationEnd}\n * @see {@link NavigationCancel}\n *\n * @publicApi\n */\nclass NavigationError extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url, /** @docsNotRequired */\n error,\n /**\n * The target of the navigation when the error occurred.\n *\n * Note that this can be `undefined` because an error could have occurred before the\n * `RouterStateSnapshot` was created for the navigation.\n */\n target) {\n super(id, url);\n this.error = error;\n this.target = target;\n this.type = 3 /* EventType.NavigationError */;\n }\n /** @docsNotRequired */\n toString() {\n return `NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`;\n }\n}\n/**\n * An event triggered when routes are recognized.\n *\n * @publicApi\n */\nclass RoutesRecognized extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url, /** @docsNotRequired */\n urlAfterRedirects, /** @docsNotRequired */\n state) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n this.type = 4 /* EventType.RoutesRecognized */;\n }\n /** @docsNotRequired */\n toString() {\n return `RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;\n }\n}\n/**\n * An event triggered at the start of the Guard phase of routing.\n *\n * @see {@link GuardsCheckEnd}\n *\n * @publicApi\n */\nclass GuardsCheckStart extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url, /** @docsNotRequired */\n urlAfterRedirects, /** @docsNotRequired */\n state) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n this.type = 7 /* EventType.GuardsCheckStart */;\n }\n\n toString() {\n return `GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;\n }\n}\n/**\n * An event triggered at the end of the Guard phase of routing.\n *\n * @see {@link GuardsCheckStart}\n *\n * @publicApi\n */\nclass GuardsCheckEnd extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url, /** @docsNotRequired */\n urlAfterRedirects, /** @docsNotRequired */\n state, /** @docsNotRequired */\n shouldActivate) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n this.shouldActivate = shouldActivate;\n this.type = 8 /* EventType.GuardsCheckEnd */;\n }\n\n toString() {\n return `GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`;\n }\n}\n/**\n * An event triggered at the start of the Resolve phase of routing.\n *\n * Runs in the \"resolve\" phase whether or not there is anything to resolve.\n * In future, may change to only run when there are things to be resolved.\n *\n * @see {@link ResolveEnd}\n *\n * @publicApi\n */\nclass ResolveStart extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url, /** @docsNotRequired */\n urlAfterRedirects, /** @docsNotRequired */\n state) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n this.type = 5 /* EventType.ResolveStart */;\n }\n\n toString() {\n return `ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;\n }\n}\n/**\n * An event triggered at the end of the Resolve phase of routing.\n * @see {@link ResolveStart}\n *\n * @publicApi\n */\nclass ResolveEnd extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url, /** @docsNotRequired */\n urlAfterRedirects, /** @docsNotRequired */\n state) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n this.type = 6 /* EventType.ResolveEnd */;\n }\n\n toString() {\n return `ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;\n }\n}\n/**\n * An event triggered before lazy loading a route configuration.\n *\n * @see {@link RouteConfigLoadEnd}\n *\n * @publicApi\n */\nclass RouteConfigLoadStart {\n constructor( /** @docsNotRequired */\n route) {\n this.route = route;\n this.type = 9 /* EventType.RouteConfigLoadStart */;\n }\n\n toString() {\n return `RouteConfigLoadStart(path: ${this.route.path})`;\n }\n}\n/**\n * An event triggered when a route has been lazy loaded.\n *\n * @see {@link RouteConfigLoadStart}\n *\n * @publicApi\n */\nclass RouteConfigLoadEnd {\n constructor( /** @docsNotRequired */\n route) {\n this.route = route;\n this.type = 10 /* EventType.RouteConfigLoadEnd */;\n }\n\n toString() {\n return `RouteConfigLoadEnd(path: ${this.route.path})`;\n }\n}\n/**\n * An event triggered at the start of the child-activation\n * part of the Resolve phase of routing.\n * @see {@link ChildActivationEnd}\n * @see {@link ResolveStart}\n *\n * @publicApi\n */\nclass ChildActivationStart {\n constructor( /** @docsNotRequired */\n snapshot) {\n this.snapshot = snapshot;\n this.type = 11 /* EventType.ChildActivationStart */;\n }\n\n toString() {\n const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return `ChildActivationStart(path: '${path}')`;\n }\n}\n/**\n * An event triggered at the end of the child-activation part\n * of the Resolve phase of routing.\n * @see {@link ChildActivationStart}\n * @see {@link ResolveStart}\n * @publicApi\n */\nclass ChildActivationEnd {\n constructor( /** @docsNotRequired */\n snapshot) {\n this.snapshot = snapshot;\n this.type = 12 /* EventType.ChildActivationEnd */;\n }\n\n toString() {\n const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return `ChildActivationEnd(path: '${path}')`;\n }\n}\n/**\n * An event triggered at the start of the activation part\n * of the Resolve phase of routing.\n * @see {@link ActivationEnd}\n * @see {@link ResolveStart}\n *\n * @publicApi\n */\nclass ActivationStart {\n constructor( /** @docsNotRequired */\n snapshot) {\n this.snapshot = snapshot;\n this.type = 13 /* EventType.ActivationStart */;\n }\n\n toString() {\n const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return `ActivationStart(path: '${path}')`;\n }\n}\n/**\n * An event triggered at the end of the activation part\n * of the Resolve phase of routing.\n * @see {@link ActivationStart}\n * @see {@link ResolveStart}\n *\n * @publicApi\n */\nclass ActivationEnd {\n constructor( /** @docsNotRequired */\n snapshot) {\n this.snapshot = snapshot;\n this.type = 14 /* EventType.ActivationEnd */;\n }\n\n toString() {\n const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return `ActivationEnd(path: '${path}')`;\n }\n}\n/**\n * An event triggered by scrolling.\n *\n * @publicApi\n */\nclass Scroll {\n constructor( /** @docsNotRequired */\n routerEvent, /** @docsNotRequired */\n position, /** @docsNotRequired */\n anchor) {\n this.routerEvent = routerEvent;\n this.position = position;\n this.anchor = anchor;\n this.type = 15 /* EventType.Scroll */;\n }\n\n toString() {\n const pos = this.position ? `${this.position[0]}, ${this.position[1]}` : null;\n return `Scroll(anchor: '${this.anchor}', position: '${pos}')`;\n }\n}\nclass BeforeActivateRoutes {}\nclass RedirectRequest {\n constructor(url) {\n this.url = url;\n }\n}\nfunction stringifyEvent(routerEvent) {\n switch (routerEvent.type) {\n case 14 /* EventType.ActivationEnd */:\n return `ActivationEnd(path: '${routerEvent.snapshot.routeConfig?.path || ''}')`;\n case 13 /* EventType.ActivationStart */:\n return `ActivationStart(path: '${routerEvent.snapshot.routeConfig?.path || ''}')`;\n case 12 /* EventType.ChildActivationEnd */:\n return `ChildActivationEnd(path: '${routerEvent.snapshot.routeConfig?.path || ''}')`;\n case 11 /* EventType.ChildActivationStart */:\n return `ChildActivationStart(path: '${routerEvent.snapshot.routeConfig?.path || ''}')`;\n case 8 /* EventType.GuardsCheckEnd */:\n return `GuardsCheckEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state}, shouldActivate: ${routerEvent.shouldActivate})`;\n case 7 /* EventType.GuardsCheckStart */:\n return `GuardsCheckStart(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`;\n case 2 /* EventType.NavigationCancel */:\n return `NavigationCancel(id: ${routerEvent.id}, url: '${routerEvent.url}')`;\n case 16 /* EventType.NavigationSkipped */:\n return `NavigationSkipped(id: ${routerEvent.id}, url: '${routerEvent.url}')`;\n case 1 /* EventType.NavigationEnd */:\n return `NavigationEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}')`;\n case 3 /* EventType.NavigationError */:\n return `NavigationError(id: ${routerEvent.id}, url: '${routerEvent.url}', error: ${routerEvent.error})`;\n case 0 /* EventType.NavigationStart */:\n return `NavigationStart(id: ${routerEvent.id}, url: '${routerEvent.url}')`;\n case 6 /* EventType.ResolveEnd */:\n return `ResolveEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`;\n case 5 /* EventType.ResolveStart */:\n return `ResolveStart(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`;\n case 10 /* EventType.RouteConfigLoadEnd */:\n return `RouteConfigLoadEnd(path: ${routerEvent.route.path})`;\n case 9 /* EventType.RouteConfigLoadStart */:\n return `RouteConfigLoadStart(path: ${routerEvent.route.path})`;\n case 4 /* EventType.RoutesRecognized */:\n return `RoutesRecognized(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`;\n case 15 /* EventType.Scroll */:\n const pos = routerEvent.position ? `${routerEvent.position[0]}, ${routerEvent.position[1]}` : null;\n return `Scroll(anchor: '${routerEvent.anchor}', position: '${pos}')`;\n }\n}\n\n/**\n * Store contextual information about a `RouterOutlet`\n *\n * @publicApi\n */\nclass OutletContext {\n constructor() {\n this.outlet = null;\n this.route = null;\n this.injector = null;\n this.children = new ChildrenOutletContexts();\n this.attachRef = null;\n }\n}\n/**\n * Store contextual information about the children (= nested) `RouterOutlet`\n *\n * @publicApi\n */\nclass ChildrenOutletContexts {\n constructor() {\n // contexts for child outlets, by name.\n this.contexts = new Map();\n }\n /** Called when a `RouterOutlet` directive is instantiated */\n onChildOutletCreated(childName, outlet) {\n const context = this.getOrCreateContext(childName);\n context.outlet = outlet;\n this.contexts.set(childName, context);\n }\n /**\n * Called when a `RouterOutlet` directive is destroyed.\n * We need to keep the context as the outlet could be destroyed inside a NgIf and might be\n * re-created later.\n */\n onChildOutletDestroyed(childName) {\n const context = this.getContext(childName);\n if (context) {\n context.outlet = null;\n context.attachRef = null;\n }\n }\n /**\n * Called when the corresponding route is deactivated during navigation.\n * Because the component get destroyed, all children outlet are destroyed.\n */\n onOutletDeactivated() {\n const contexts = this.contexts;\n this.contexts = new Map();\n return contexts;\n }\n onOutletReAttached(contexts) {\n this.contexts = contexts;\n }\n getOrCreateContext(childName) {\n let context = this.getContext(childName);\n if (!context) {\n context = new OutletContext();\n this.contexts.set(childName, context);\n }\n return context;\n }\n getContext(childName) {\n return this.contexts.get(childName) || null;\n }\n static {\n this.ɵfac = function ChildrenOutletContexts_Factory(t) {\n return new (t || ChildrenOutletContexts)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ChildrenOutletContexts,\n factory: ChildrenOutletContexts.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ChildrenOutletContexts, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\nclass Tree {\n constructor(root) {\n this._root = root;\n }\n get root() {\n return this._root.value;\n }\n /**\n * @internal\n */\n parent(t) {\n const p = this.pathFromRoot(t);\n return p.length > 1 ? p[p.length - 2] : null;\n }\n /**\n * @internal\n */\n children(t) {\n const n = findNode(t, this._root);\n return n ? n.children.map(t => t.value) : [];\n }\n /**\n * @internal\n */\n firstChild(t) {\n const n = findNode(t, this._root);\n return n && n.children.length > 0 ? n.children[0].value : null;\n }\n /**\n * @internal\n */\n siblings(t) {\n const p = findPath(t, this._root);\n if (p.length < 2) return [];\n const c = p[p.length - 2].children.map(c => c.value);\n return c.filter(cc => cc !== t);\n }\n /**\n * @internal\n */\n pathFromRoot(t) {\n return findPath(t, this._root).map(s => s.value);\n }\n}\n// DFS for the node matching the value\nfunction findNode(value, node) {\n if (value === node.value) return node;\n for (const child of node.children) {\n const node = findNode(value, child);\n if (node) return node;\n }\n return null;\n}\n// Return the path to the node with the given value using DFS\nfunction findPath(value, node) {\n if (value === node.value) return [node];\n for (const child of node.children) {\n const path = findPath(value, child);\n if (path.length) {\n path.unshift(node);\n return path;\n }\n }\n return [];\n}\nclass TreeNode {\n constructor(value, children) {\n this.value = value;\n this.children = children;\n }\n toString() {\n return `TreeNode(${this.value})`;\n }\n}\n// Return the list of T indexed by outlet name\nfunction nodeChildrenAsMap(node) {\n const map = {};\n if (node) {\n node.children.forEach(child => map[child.value.outlet] = child);\n }\n return map;\n}\n\n/**\n * Represents the state of the router as a tree of activated routes.\n *\n * @usageNotes\n *\n * Every node in the route tree is an `ActivatedRoute` instance\n * that knows about the \"consumed\" URL segments, the extracted parameters,\n * and the resolved data.\n * Use the `ActivatedRoute` properties to traverse the tree from any node.\n *\n * The following fragment shows how a component gets the root node\n * of the current state to establish its own route tree:\n *\n * ```\n * @Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const state: RouterState = router.routerState;\n * const root: ActivatedRoute = state.root;\n * const child = root.firstChild;\n * const id: Observable = child.params.map(p => p.id);\n * //...\n * }\n * }\n * ```\n *\n * @see {@link ActivatedRoute}\n * @see [Getting route information](guide/router#getting-route-information)\n *\n * @publicApi\n */\nclass RouterState extends Tree {\n /** @internal */\n constructor(root, /** The current snapshot of the router state */\n snapshot) {\n super(root);\n this.snapshot = snapshot;\n setRouterState(this, root);\n }\n toString() {\n return this.snapshot.toString();\n }\n}\nfunction createEmptyState(urlTree, rootComponent) {\n const snapshot = createEmptyStateSnapshot(urlTree, rootComponent);\n const emptyUrl = new BehaviorSubject([new UrlSegment('', {})]);\n const emptyParams = new BehaviorSubject({});\n const emptyData = new BehaviorSubject({});\n const emptyQueryParams = new BehaviorSubject({});\n const fragment = new BehaviorSubject('');\n const activated = new ActivatedRoute(emptyUrl, emptyParams, emptyQueryParams, fragment, emptyData, PRIMARY_OUTLET, rootComponent, snapshot.root);\n activated.snapshot = snapshot.root;\n return new RouterState(new TreeNode(activated, []), snapshot);\n}\nfunction createEmptyStateSnapshot(urlTree, rootComponent) {\n const emptyParams = {};\n const emptyData = {};\n const emptyQueryParams = {};\n const fragment = '';\n const activated = new ActivatedRouteSnapshot([], emptyParams, emptyQueryParams, fragment, emptyData, PRIMARY_OUTLET, rootComponent, null, {});\n return new RouterStateSnapshot('', new TreeNode(activated, []));\n}\n/**\n * Provides access to information about a route associated with a component\n * that is loaded in an outlet.\n * Use to traverse the `RouterState` tree and extract information from nodes.\n *\n * The following example shows how to construct a component using information from a\n * currently activated route.\n *\n * Note: the observables in this class only emit when the current and previous values differ based\n * on shallow equality. For example, changing deeply nested properties in resolved `data` will not\n * cause the `ActivatedRoute.data` `Observable` to emit a new value.\n *\n * {@example router/activated-route/module.ts region=\"activated-route\"\n * header=\"activated-route.component.ts\"}\n *\n * @see [Getting route information](guide/router#getting-route-information)\n *\n * @publicApi\n */\nclass ActivatedRoute {\n /** @internal */\n constructor( /** @internal */\n urlSubject, /** @internal */\n paramsSubject, /** @internal */\n queryParamsSubject, /** @internal */\n fragmentSubject, /** @internal */\n dataSubject, /** The outlet name of the route, a constant. */\n outlet, /** The component of the route, a constant. */\n component, futureSnapshot) {\n this.urlSubject = urlSubject;\n this.paramsSubject = paramsSubject;\n this.queryParamsSubject = queryParamsSubject;\n this.fragmentSubject = fragmentSubject;\n this.dataSubject = dataSubject;\n this.outlet = outlet;\n this.component = component;\n this._futureSnapshot = futureSnapshot;\n this.title = this.dataSubject?.pipe(map(d => d[RouteTitleKey])) ?? of(undefined);\n // TODO(atscott): Verify that these can be changed to `.asObservable()` with TGP.\n this.url = urlSubject;\n this.params = paramsSubject;\n this.queryParams = queryParamsSubject;\n this.fragment = fragmentSubject;\n this.data = dataSubject;\n }\n /** The configuration used to match this route. */\n get routeConfig() {\n return this._futureSnapshot.routeConfig;\n }\n /** The root of the router state. */\n get root() {\n return this._routerState.root;\n }\n /** The parent of this route in the router state tree. */\n get parent() {\n return this._routerState.parent(this);\n }\n /** The first child of this route in the router state tree. */\n get firstChild() {\n return this._routerState.firstChild(this);\n }\n /** The children of this route in the router state tree. */\n get children() {\n return this._routerState.children(this);\n }\n /** The path from the root of the router state tree to this route. */\n get pathFromRoot() {\n return this._routerState.pathFromRoot(this);\n }\n /**\n * An Observable that contains a map of the required and optional parameters\n * specific to the route.\n * The map supports retrieving single and multiple values from the same parameter.\n */\n get paramMap() {\n if (!this._paramMap) {\n this._paramMap = this.params.pipe(map(p => convertToParamMap(p)));\n }\n return this._paramMap;\n }\n /**\n * An Observable that contains a map of the query parameters available to all routes.\n * The map supports retrieving single and multiple values from the query parameter.\n */\n get queryParamMap() {\n if (!this._queryParamMap) {\n this._queryParamMap = this.queryParams.pipe(map(p => convertToParamMap(p)));\n }\n return this._queryParamMap;\n }\n toString() {\n return this.snapshot ? this.snapshot.toString() : `Future(${this._futureSnapshot})`;\n }\n}\n/**\n * Returns the inherited params, data, and resolve for a given route.\n *\n * By default, we do not inherit parent data unless the current route is path-less or the parent\n * route is component-less.\n */\nfunction getInherited(route, parent, paramsInheritanceStrategy = 'emptyOnly') {\n let inherited;\n const {\n routeConfig\n } = route;\n if (parent !== null && (paramsInheritanceStrategy === 'always' ||\n // inherit parent data if route is empty path\n routeConfig?.path === '' ||\n // inherit parent data if parent was componentless\n !parent.component && !parent.routeConfig?.loadComponent)) {\n inherited = {\n params: {\n ...parent.params,\n ...route.params\n },\n data: {\n ...parent.data,\n ...route.data\n },\n resolve: {\n // Snapshots are created with data inherited from parent and guards (i.e. canActivate) can\n // change data because it's not frozen...\n // This first line could be deleted chose to break/disallow mutating the `data` object in\n // guards.\n // Note that data from parents still override this mutated data so anyone relying on this\n // might be surprised that it doesn't work if parent data is inherited but otherwise does.\n ...route.data,\n // Ensure inherited resolved data overrides inherited static data\n ...parent.data,\n // static data from the current route overrides any inherited data\n ...routeConfig?.data,\n // resolved data from current route overrides everything\n ...route._resolvedData\n }\n };\n } else {\n inherited = {\n params: route.params,\n data: route.data,\n resolve: {\n ...route.data,\n ...(route._resolvedData ?? {})\n }\n };\n }\n if (routeConfig && hasStaticTitle(routeConfig)) {\n inherited.resolve[RouteTitleKey] = routeConfig.title;\n }\n return inherited;\n}\n/**\n * @description\n *\n * Contains the information about a route associated with a component loaded in an\n * outlet at a particular moment in time. ActivatedRouteSnapshot can also be used to\n * traverse the router state tree.\n *\n * The following example initializes a component with route information extracted\n * from the snapshot of the root node at the time of creation.\n *\n * ```\n * @Component({templateUrl:'./my-component.html'})\n * class MyComponent {\n * constructor(route: ActivatedRoute) {\n * const id: string = route.snapshot.params.id;\n * const url: string = route.snapshot.url.join('');\n * const user = route.snapshot.data.user;\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass ActivatedRouteSnapshot {\n /** The resolved route title */\n get title() {\n // Note: This _must_ be a getter because the data is mutated in the resolvers. Title will not be\n // available at the time of class instantiation.\n return this.data?.[RouteTitleKey];\n }\n /** @internal */\n constructor( /** The URL segments matched by this route */\n url,\n /**\n * The matrix parameters scoped to this route.\n *\n * You can compute all params (or data) in the router state or to get params outside\n * of an activated component by traversing the `RouterState` tree as in the following\n * example:\n * ```\n * collectRouteParams(router: Router) {\n * let params = {};\n * let stack: ActivatedRouteSnapshot[] = [router.routerState.snapshot.root];\n * while (stack.length > 0) {\n * const route = stack.pop()!;\n * params = {...params, ...route.params};\n * stack.push(...route.children);\n * }\n * return params;\n * }\n * ```\n */\n params, /** The query parameters shared by all the routes */\n queryParams, /** The URL fragment shared by all the routes */\n fragment, /** The static and resolved data of this route */\n data, /** The outlet name of the route */\n outlet, /** The component of the route */\n component, routeConfig, resolve) {\n this.url = url;\n this.params = params;\n this.queryParams = queryParams;\n this.fragment = fragment;\n this.data = data;\n this.outlet = outlet;\n this.component = component;\n this.routeConfig = routeConfig;\n this._resolve = resolve;\n }\n /** The root of the router state */\n get root() {\n return this._routerState.root;\n }\n /** The parent of this route in the router state tree */\n get parent() {\n return this._routerState.parent(this);\n }\n /** The first child of this route in the router state tree */\n get firstChild() {\n return this._routerState.firstChild(this);\n }\n /** The children of this route in the router state tree */\n get children() {\n return this._routerState.children(this);\n }\n /** The path from the root of the router state tree to this route */\n get pathFromRoot() {\n return this._routerState.pathFromRoot(this);\n }\n get paramMap() {\n if (!this._paramMap) {\n this._paramMap = convertToParamMap(this.params);\n }\n return this._paramMap;\n }\n get queryParamMap() {\n if (!this._queryParamMap) {\n this._queryParamMap = convertToParamMap(this.queryParams);\n }\n return this._queryParamMap;\n }\n toString() {\n const url = this.url.map(segment => segment.toString()).join('/');\n const matched = this.routeConfig ? this.routeConfig.path : '';\n return `Route(url:'${url}', path:'${matched}')`;\n }\n}\n/**\n * @description\n *\n * Represents the state of the router at a moment in time.\n *\n * This is a tree of activated route snapshots. Every node in this tree knows about\n * the \"consumed\" URL segments, the extracted parameters, and the resolved data.\n *\n * The following example shows how a component is initialized with information\n * from the snapshot of the root node's state at the time of creation.\n *\n * ```\n * @Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const state: RouterState = router.routerState;\n * const snapshot: RouterStateSnapshot = state.snapshot;\n * const root: ActivatedRouteSnapshot = snapshot.root;\n * const child = root.firstChild;\n * const id: Observable = child.params.map(p => p.id);\n * //...\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass RouterStateSnapshot extends Tree {\n /** @internal */\n constructor( /** The url from which this snapshot was created */\n url, root) {\n super(root);\n this.url = url;\n setRouterState(this, root);\n }\n toString() {\n return serializeNode(this._root);\n }\n}\nfunction setRouterState(state, node) {\n node.value._routerState = state;\n node.children.forEach(c => setRouterState(state, c));\n}\nfunction serializeNode(node) {\n const c = node.children.length > 0 ? ` { ${node.children.map(serializeNode).join(', ')} } ` : '';\n return `${node.value}${c}`;\n}\n/**\n * The expectation is that the activate route is created with the right set of parameters.\n * So we push new values into the observables only when they are not the initial values.\n * And we detect that by checking if the snapshot field is set.\n */\nfunction advanceActivatedRoute(route) {\n if (route.snapshot) {\n const currentSnapshot = route.snapshot;\n const nextSnapshot = route._futureSnapshot;\n route.snapshot = nextSnapshot;\n if (!shallowEqual(currentSnapshot.queryParams, nextSnapshot.queryParams)) {\n route.queryParamsSubject.next(nextSnapshot.queryParams);\n }\n if (currentSnapshot.fragment !== nextSnapshot.fragment) {\n route.fragmentSubject.next(nextSnapshot.fragment);\n }\n if (!shallowEqual(currentSnapshot.params, nextSnapshot.params)) {\n route.paramsSubject.next(nextSnapshot.params);\n }\n if (!shallowEqualArrays(currentSnapshot.url, nextSnapshot.url)) {\n route.urlSubject.next(nextSnapshot.url);\n }\n if (!shallowEqual(currentSnapshot.data, nextSnapshot.data)) {\n route.dataSubject.next(nextSnapshot.data);\n }\n } else {\n route.snapshot = route._futureSnapshot;\n // this is for resolved data\n route.dataSubject.next(route._futureSnapshot.data);\n }\n}\nfunction equalParamsAndUrlSegments(a, b) {\n const equalUrlParams = shallowEqual(a.params, b.params) && equalSegments(a.url, b.url);\n const parentsMismatch = !a.parent !== !b.parent;\n return equalUrlParams && !parentsMismatch && (!a.parent || equalParamsAndUrlSegments(a.parent, b.parent));\n}\nfunction hasStaticTitle(config) {\n return typeof config.title === 'string' || config.title === null;\n}\n\n/**\n * @description\n *\n * Acts as a placeholder that Angular dynamically fills based on the current router state.\n *\n * Each outlet can have a unique name, determined by the optional `name` attribute.\n * The name cannot be set or changed dynamically. If not set, default value is \"primary\".\n *\n * ```\n * \n * \n * \n * ```\n *\n * Named outlets can be the targets of secondary routes.\n * The `Route` object for a secondary route has an `outlet` property to identify the target outlet:\n *\n * `{path: , component: , outlet: }`\n *\n * Using named outlets and secondary routes, you can target multiple outlets in\n * the same `RouterLink` directive.\n *\n * The router keeps track of separate branches in a navigation tree for each named outlet and\n * generates a representation of that tree in the URL.\n * The URL for a secondary route uses the following syntax to specify both the primary and secondary\n * routes at the same time:\n *\n * `http://base-path/primary-route-path(outlet-name:route-path)`\n *\n * A router outlet emits an activate event when a new component is instantiated,\n * deactivate event when a component is destroyed.\n * An attached event emits when the `RouteReuseStrategy` instructs the outlet to reattach the\n * subtree, and the detached event emits when the `RouteReuseStrategy` instructs the outlet to\n * detach the subtree.\n *\n * ```\n * \n * ```\n *\n * @see [Routing tutorial](guide/router-tutorial-toh#named-outlets \"Example of a named\n * outlet and secondary route configuration\").\n * @see {@link RouterLink}\n * @see {@link Route}\n * @ngModule RouterModule\n *\n * @publicApi\n */\nclass RouterOutlet {\n constructor() {\n this.activated = null;\n this._activatedRoute = null;\n /**\n * The name of the outlet\n *\n * @see [named outlets](guide/router-tutorial-toh#displaying-multiple-routes-in-named-outlets)\n */\n this.name = PRIMARY_OUTLET;\n this.activateEvents = new EventEmitter();\n this.deactivateEvents = new EventEmitter();\n /**\n * Emits an attached component instance when the `RouteReuseStrategy` instructs to re-attach a\n * previously detached subtree.\n **/\n this.attachEvents = new EventEmitter();\n /**\n * Emits a detached component instance when the `RouteReuseStrategy` instructs to detach the\n * subtree.\n */\n this.detachEvents = new EventEmitter();\n this.parentContexts = inject(ChildrenOutletContexts);\n this.location = inject(ViewContainerRef);\n this.changeDetector = inject(ChangeDetectorRef);\n this.environmentInjector = inject(EnvironmentInjector);\n this.inputBinder = inject(INPUT_BINDER, {\n optional: true\n });\n /** @nodoc */\n this.supportsBindingToComponentInputs = true;\n }\n /** @internal */\n get activatedComponentRef() {\n return this.activated;\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (changes['name']) {\n const {\n firstChange,\n previousValue\n } = changes['name'];\n if (firstChange) {\n // The first change is handled by ngOnInit. Because ngOnChanges doesn't get called when no\n // input is set at all, we need to centrally handle the first change there.\n return;\n }\n // unregister with the old name\n if (this.isTrackedInParentContexts(previousValue)) {\n this.deactivate();\n this.parentContexts.onChildOutletDestroyed(previousValue);\n }\n // register the new name\n this.initializeOutletWithName();\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n // Ensure that the registered outlet is this one before removing it on the context.\n if (this.isTrackedInParentContexts(this.name)) {\n this.parentContexts.onChildOutletDestroyed(this.name);\n }\n this.inputBinder?.unsubscribeFromRouteData(this);\n }\n isTrackedInParentContexts(outletName) {\n return this.parentContexts.getContext(outletName)?.outlet === this;\n }\n /** @nodoc */\n ngOnInit() {\n this.initializeOutletWithName();\n }\n initializeOutletWithName() {\n this.parentContexts.onChildOutletCreated(this.name, this);\n if (this.activated) {\n return;\n }\n // If the outlet was not instantiated at the time the route got activated we need to populate\n // the outlet when it is initialized (ie inside a NgIf)\n const context = this.parentContexts.getContext(this.name);\n if (context?.route) {\n if (context.attachRef) {\n // `attachRef` is populated when there is an existing component to mount\n this.attach(context.attachRef, context.route);\n } else {\n // otherwise the component defined in the configuration is created\n this.activateWith(context.route, context.injector);\n }\n }\n }\n get isActivated() {\n return !!this.activated;\n }\n /**\n * @returns The currently activated component instance.\n * @throws An error if the outlet is not activated.\n */\n get component() {\n if (!this.activated) throw new ɵRuntimeError(4012 /* RuntimeErrorCode.OUTLET_NOT_ACTIVATED */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Outlet is not activated');\n return this.activated.instance;\n }\n get activatedRoute() {\n if (!this.activated) throw new ɵRuntimeError(4012 /* RuntimeErrorCode.OUTLET_NOT_ACTIVATED */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Outlet is not activated');\n return this._activatedRoute;\n }\n get activatedRouteData() {\n if (this._activatedRoute) {\n return this._activatedRoute.snapshot.data;\n }\n return {};\n }\n /**\n * Called when the `RouteReuseStrategy` instructs to detach the subtree\n */\n detach() {\n if (!this.activated) throw new ɵRuntimeError(4012 /* RuntimeErrorCode.OUTLET_NOT_ACTIVATED */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Outlet is not activated');\n this.location.detach();\n const cmp = this.activated;\n this.activated = null;\n this._activatedRoute = null;\n this.detachEvents.emit(cmp.instance);\n return cmp;\n }\n /**\n * Called when the `RouteReuseStrategy` instructs to re-attach a previously detached subtree\n */\n attach(ref, activatedRoute) {\n this.activated = ref;\n this._activatedRoute = activatedRoute;\n this.location.insert(ref.hostView);\n this.inputBinder?.bindActivatedRouteToOutletComponent(this);\n this.attachEvents.emit(ref.instance);\n }\n deactivate() {\n if (this.activated) {\n const c = this.component;\n this.activated.destroy();\n this.activated = null;\n this._activatedRoute = null;\n this.deactivateEvents.emit(c);\n }\n }\n activateWith(activatedRoute, environmentInjector) {\n if (this.isActivated) {\n throw new ɵRuntimeError(4013 /* RuntimeErrorCode.OUTLET_ALREADY_ACTIVATED */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Cannot activate an already activated outlet');\n }\n this._activatedRoute = activatedRoute;\n const location = this.location;\n const snapshot = activatedRoute.snapshot;\n const component = snapshot.component;\n const childContexts = this.parentContexts.getOrCreateContext(this.name).children;\n const injector = new OutletInjector(activatedRoute, childContexts, location.injector);\n this.activated = location.createComponent(component, {\n index: location.length,\n injector,\n environmentInjector: environmentInjector ?? this.environmentInjector\n });\n // Calling `markForCheck` to make sure we will run the change detection when the\n // `RouterOutlet` is inside a `ChangeDetectionStrategy.OnPush` component.\n this.changeDetector.markForCheck();\n this.inputBinder?.bindActivatedRouteToOutletComponent(this);\n this.activateEvents.emit(this.activated.instance);\n }\n static {\n this.ɵfac = function RouterOutlet_Factory(t) {\n return new (t || RouterOutlet)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: RouterOutlet,\n selectors: [[\"router-outlet\"]],\n inputs: {\n name: \"name\"\n },\n outputs: {\n activateEvents: \"activate\",\n deactivateEvents: \"deactivate\",\n attachEvents: \"attach\",\n detachEvents: \"detach\"\n },\n exportAs: [\"outlet\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RouterOutlet, [{\n type: Directive,\n args: [{\n selector: 'router-outlet',\n exportAs: 'outlet',\n standalone: true\n }]\n }], null, {\n name: [{\n type: Input\n }],\n activateEvents: [{\n type: Output,\n args: ['activate']\n }],\n deactivateEvents: [{\n type: Output,\n args: ['deactivate']\n }],\n attachEvents: [{\n type: Output,\n args: ['attach']\n }],\n detachEvents: [{\n type: Output,\n args: ['detach']\n }]\n });\n})();\nclass OutletInjector {\n constructor(route, childContexts, parent) {\n this.route = route;\n this.childContexts = childContexts;\n this.parent = parent;\n }\n get(token, notFoundValue) {\n if (token === ActivatedRoute) {\n return this.route;\n }\n if (token === ChildrenOutletContexts) {\n return this.childContexts;\n }\n return this.parent.get(token, notFoundValue);\n }\n}\nconst INPUT_BINDER = new InjectionToken('');\n/**\n * Injectable used as a tree-shakable provider for opting in to binding router data to component\n * inputs.\n *\n * The RouterOutlet registers itself with this service when an `ActivatedRoute` is attached or\n * activated. When this happens, the service subscribes to the `ActivatedRoute` observables (params,\n * queryParams, data) and sets the inputs of the component using `ComponentRef.setInput`.\n * Importantly, when an input does not have an item in the route data with a matching key, this\n * input is set to `undefined`. If it were not done this way, the previous information would be\n * retained if the data got removed from the route (i.e. if a query parameter is removed).\n *\n * The `RouterOutlet` should unregister itself when destroyed via `unsubscribeFromRouteData` so that\n * the subscriptions are cleaned up.\n */\nclass RoutedComponentInputBinder {\n constructor() {\n this.outletDataSubscriptions = new Map();\n }\n bindActivatedRouteToOutletComponent(outlet) {\n this.unsubscribeFromRouteData(outlet);\n this.subscribeToRouteData(outlet);\n }\n unsubscribeFromRouteData(outlet) {\n this.outletDataSubscriptions.get(outlet)?.unsubscribe();\n this.outletDataSubscriptions.delete(outlet);\n }\n subscribeToRouteData(outlet) {\n const {\n activatedRoute\n } = outlet;\n const dataSubscription = combineLatest([activatedRoute.queryParams, activatedRoute.params, activatedRoute.data]).pipe(switchMap(([queryParams, params, data], index) => {\n data = {\n ...queryParams,\n ...params,\n ...data\n };\n // Get the first result from the data subscription synchronously so it's available to\n // the component as soon as possible (and doesn't require a second change detection).\n if (index === 0) {\n return of(data);\n }\n // Promise.resolve is used to avoid synchronously writing the wrong data when\n // two of the Observables in the `combineLatest` stream emit one after\n // another.\n return Promise.resolve(data);\n })).subscribe(data => {\n // Outlet may have been deactivated or changed names to be associated with a different\n // route\n if (!outlet.isActivated || !outlet.activatedComponentRef || outlet.activatedRoute !== activatedRoute || activatedRoute.component === null) {\n this.unsubscribeFromRouteData(outlet);\n return;\n }\n const mirror = reflectComponentType(activatedRoute.component);\n if (!mirror) {\n this.unsubscribeFromRouteData(outlet);\n return;\n }\n for (const {\n templateName\n } of mirror.inputs) {\n outlet.activatedComponentRef.setInput(templateName, data[templateName]);\n }\n });\n this.outletDataSubscriptions.set(outlet, dataSubscription);\n }\n static {\n this.ɵfac = function RoutedComponentInputBinder_Factory(t) {\n return new (t || RoutedComponentInputBinder)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RoutedComponentInputBinder,\n factory: RoutedComponentInputBinder.ɵfac\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RoutedComponentInputBinder, [{\n type: Injectable\n }], null, null);\n})();\nfunction createRouterState(routeReuseStrategy, curr, prevState) {\n const root = createNode(routeReuseStrategy, curr._root, prevState ? prevState._root : undefined);\n return new RouterState(root, curr);\n}\nfunction createNode(routeReuseStrategy, curr, prevState) {\n // reuse an activated route that is currently displayed on the screen\n if (prevState && routeReuseStrategy.shouldReuseRoute(curr.value, prevState.value.snapshot)) {\n const value = prevState.value;\n value._futureSnapshot = curr.value;\n const children = createOrReuseChildren(routeReuseStrategy, curr, prevState);\n return new TreeNode(value, children);\n } else {\n if (routeReuseStrategy.shouldAttach(curr.value)) {\n // retrieve an activated route that is used to be displayed, but is not currently displayed\n const detachedRouteHandle = routeReuseStrategy.retrieve(curr.value);\n if (detachedRouteHandle !== null) {\n const tree = detachedRouteHandle.route;\n tree.value._futureSnapshot = curr.value;\n tree.children = curr.children.map(c => createNode(routeReuseStrategy, c));\n return tree;\n }\n }\n const value = createActivatedRoute(curr.value);\n const children = curr.children.map(c => createNode(routeReuseStrategy, c));\n return new TreeNode(value, children);\n }\n}\nfunction createOrReuseChildren(routeReuseStrategy, curr, prevState) {\n return curr.children.map(child => {\n for (const p of prevState.children) {\n if (routeReuseStrategy.shouldReuseRoute(child.value, p.value.snapshot)) {\n return createNode(routeReuseStrategy, child, p);\n }\n }\n return createNode(routeReuseStrategy, child);\n });\n}\nfunction createActivatedRoute(c) {\n return new ActivatedRoute(new BehaviorSubject(c.url), new BehaviorSubject(c.params), new BehaviorSubject(c.queryParams), new BehaviorSubject(c.fragment), new BehaviorSubject(c.data), c.outlet, c.component, c);\n}\nconst NAVIGATION_CANCELING_ERROR = 'ngNavigationCancelingError';\nfunction redirectingNavigationError(urlSerializer, redirect) {\n const {\n redirectTo,\n navigationBehaviorOptions\n } = isUrlTree(redirect) ? {\n redirectTo: redirect,\n navigationBehaviorOptions: undefined\n } : redirect;\n const error = navigationCancelingError(ngDevMode && `Redirecting to \"${urlSerializer.serialize(redirectTo)}\"`, 0 /* NavigationCancellationCode.Redirect */, redirect);\n error.url = redirectTo;\n error.navigationBehaviorOptions = navigationBehaviorOptions;\n return error;\n}\nfunction navigationCancelingError(message, code, redirectUrl) {\n const error = new Error('NavigationCancelingError: ' + (message || ''));\n error[NAVIGATION_CANCELING_ERROR] = true;\n error.cancellationCode = code;\n if (redirectUrl) {\n error.url = redirectUrl;\n }\n return error;\n}\nfunction isRedirectingNavigationCancelingError$1(error) {\n return isNavigationCancelingError$1(error) && isUrlTree(error.url);\n}\nfunction isNavigationCancelingError$1(error) {\n return error && error[NAVIGATION_CANCELING_ERROR];\n}\n\n/**\n * This component is used internally within the router to be a placeholder when an empty\n * router-outlet is needed. For example, with a config such as:\n *\n * `{path: 'parent', outlet: 'nav', children: [...]}`\n *\n * In order to render, there needs to be a component on this config, which will default\n * to this `EmptyOutletComponent`.\n */\nclass ɵEmptyOutletComponent {\n static {\n this.ɵfac = function ɵEmptyOutletComponent_Factory(t) {\n return new (t || ɵEmptyOutletComponent)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ɵEmptyOutletComponent,\n selectors: [[\"ng-component\"]],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 1,\n vars: 0,\n template: function ɵEmptyOutletComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"router-outlet\");\n }\n },\n dependencies: [RouterOutlet],\n encapsulation: 2\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ɵEmptyOutletComponent, [{\n type: Component,\n args: [{\n template: ``,\n imports: [RouterOutlet],\n standalone: true\n }]\n }], null, null);\n})();\n\n/**\n * Creates an `EnvironmentInjector` if the `Route` has providers and one does not already exist\n * and returns the injector. Otherwise, if the `Route` does not have `providers`, returns the\n * `currentInjector`.\n *\n * @param route The route that might have providers\n * @param currentInjector The parent injector of the `Route`\n */\nfunction getOrCreateRouteInjectorIfNeeded(route, currentInjector) {\n if (route.providers && !route._injector) {\n route._injector = createEnvironmentInjector(route.providers, currentInjector, `Route: ${route.path}`);\n }\n return route._injector ?? currentInjector;\n}\nfunction getLoadedRoutes(route) {\n return route._loadedRoutes;\n}\nfunction getLoadedInjector(route) {\n return route._loadedInjector;\n}\nfunction getLoadedComponent(route) {\n return route._loadedComponent;\n}\nfunction getProvidersInjector(route) {\n return route._injector;\n}\nfunction validateConfig(config, parentPath = '', requireStandaloneComponents = false) {\n // forEach doesn't iterate undefined values\n for (let i = 0; i < config.length; i++) {\n const route = config[i];\n const fullPath = getFullPath(parentPath, route);\n validateNode(route, fullPath, requireStandaloneComponents);\n }\n}\nfunction assertStandalone(fullPath, component) {\n if (component && ɵisNgModule(component)) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}'. You are using 'loadComponent' with a module, ` + `but it must be used with standalone components. Use 'loadChildren' instead.`);\n } else if (component && !isStandalone(component)) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}'. The component must be standalone.`);\n }\n}\nfunction validateNode(route, fullPath, requireStandaloneComponents) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!route) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `\n Invalid configuration of route '${fullPath}': Encountered undefined route.\n The reason might be an extra comma.\n\n Example:\n const routes: Routes = [\n { path: '', redirectTo: '/dashboard', pathMatch: 'full' },\n { path: 'dashboard', component: DashboardComponent },, << two commas\n { path: 'detail/:id', component: HeroDetailComponent }\n ];\n `);\n }\n if (Array.isArray(route)) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': Array cannot be specified`);\n }\n if (!route.redirectTo && !route.component && !route.loadComponent && !route.children && !route.loadChildren && route.outlet && route.outlet !== PRIMARY_OUTLET) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': a componentless route without children or loadChildren cannot have a named outlet set`);\n }\n if (route.redirectTo && route.children) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': redirectTo and children cannot be used together`);\n }\n if (route.redirectTo && route.loadChildren) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': redirectTo and loadChildren cannot be used together`);\n }\n if (route.children && route.loadChildren) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': children and loadChildren cannot be used together`);\n }\n if (route.redirectTo && (route.component || route.loadComponent)) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': redirectTo and component/loadComponent cannot be used together`);\n }\n if (route.component && route.loadComponent) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': component and loadComponent cannot be used together`);\n }\n if (route.redirectTo && route.canActivate) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': redirectTo and canActivate cannot be used together. Redirects happen before activation ` + `so canActivate will never be executed.`);\n }\n if (route.path && route.matcher) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': path and matcher cannot be used together`);\n }\n if (route.redirectTo === void 0 && !route.component && !route.loadComponent && !route.children && !route.loadChildren) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}'. One of the following must be provided: component, loadComponent, redirectTo, children or loadChildren`);\n }\n if (route.path === void 0 && route.matcher === void 0) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': routes must have either a path or a matcher specified`);\n }\n if (typeof route.path === 'string' && route.path.charAt(0) === '/') {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': path cannot start with a slash`);\n }\n if (route.path === '' && route.redirectTo !== void 0 && route.pathMatch === void 0) {\n const exp = `The default value of 'pathMatch' is 'prefix', but often the intent is to use 'full'.`;\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '{path: \"${fullPath}\", redirectTo: \"${route.redirectTo}\"}': please provide 'pathMatch'. ${exp}`);\n }\n if (requireStandaloneComponents) {\n assertStandalone(fullPath, route.component);\n }\n }\n if (route.children) {\n validateConfig(route.children, fullPath, requireStandaloneComponents);\n }\n}\nfunction getFullPath(parentPath, currentRoute) {\n if (!currentRoute) {\n return parentPath;\n }\n if (!parentPath && !currentRoute.path) {\n return '';\n } else if (parentPath && !currentRoute.path) {\n return `${parentPath}/`;\n } else if (!parentPath && currentRoute.path) {\n return currentRoute.path;\n } else {\n return `${parentPath}/${currentRoute.path}`;\n }\n}\n/**\n * Makes a copy of the config and adds any default required properties.\n */\nfunction standardizeConfig(r) {\n const children = r.children && r.children.map(standardizeConfig);\n const c = children ? {\n ...r,\n children\n } : {\n ...r\n };\n if (!c.component && !c.loadComponent && (children || c.loadChildren) && c.outlet && c.outlet !== PRIMARY_OUTLET) {\n c.component = ɵEmptyOutletComponent;\n }\n return c;\n}\n/** Returns the `route.outlet` or PRIMARY_OUTLET if none exists. */\nfunction getOutlet(route) {\n return route.outlet || PRIMARY_OUTLET;\n}\n/**\n * Sorts the `routes` such that the ones with an outlet matching `outletName` come first.\n * The order of the configs is otherwise preserved.\n */\nfunction sortByMatchingOutlets(routes, outletName) {\n const sortedConfig = routes.filter(r => getOutlet(r) === outletName);\n sortedConfig.push(...routes.filter(r => getOutlet(r) !== outletName));\n return sortedConfig;\n}\n/**\n * Gets the first injector in the snapshot's parent tree.\n *\n * If the `Route` has a static list of providers, the returned injector will be the one created from\n * those. If it does not exist, the returned injector may come from the parents, which may be from a\n * loaded config or their static providers.\n *\n * Returns `null` if there is neither this nor any parents have a stored injector.\n *\n * Generally used for retrieving the injector to use for getting tokens for guards/resolvers and\n * also used for getting the correct injector to use for creating components.\n */\nfunction getClosestRouteInjector(snapshot) {\n if (!snapshot) return null;\n // If the current route has its own injector, which is created from the static providers on the\n // route itself, we should use that. Otherwise, we start at the parent since we do not want to\n // include the lazy loaded injector from this route.\n if (snapshot.routeConfig?._injector) {\n return snapshot.routeConfig._injector;\n }\n for (let s = snapshot.parent; s; s = s.parent) {\n const route = s.routeConfig;\n // Note that the order here is important. `_loadedInjector` stored on the route with\n // `loadChildren: () => NgModule` so it applies to child routes with priority. The `_injector`\n // is created from the static providers on that parent route, so it applies to the children as\n // well, but only if there is no lazy loaded NgModuleRef injector.\n if (route?._loadedInjector) return route._loadedInjector;\n if (route?._injector) return route._injector;\n }\n return null;\n}\nlet warnedAboutUnsupportedInputBinding = false;\nconst activateRoutes = (rootContexts, routeReuseStrategy, forwardEvent, inputBindingEnabled) => map(t => {\n new ActivateRoutes(routeReuseStrategy, t.targetRouterState, t.currentRouterState, forwardEvent, inputBindingEnabled).activate(rootContexts);\n return t;\n});\nclass ActivateRoutes {\n constructor(routeReuseStrategy, futureState, currState, forwardEvent, inputBindingEnabled) {\n this.routeReuseStrategy = routeReuseStrategy;\n this.futureState = futureState;\n this.currState = currState;\n this.forwardEvent = forwardEvent;\n this.inputBindingEnabled = inputBindingEnabled;\n }\n activate(parentContexts) {\n const futureRoot = this.futureState._root;\n const currRoot = this.currState ? this.currState._root : null;\n this.deactivateChildRoutes(futureRoot, currRoot, parentContexts);\n advanceActivatedRoute(this.futureState.root);\n this.activateChildRoutes(futureRoot, currRoot, parentContexts);\n }\n // De-activate the child route that are not re-used for the future state\n deactivateChildRoutes(futureNode, currNode, contexts) {\n const children = nodeChildrenAsMap(currNode);\n // Recurse on the routes active in the future state to de-activate deeper children\n futureNode.children.forEach(futureChild => {\n const childOutletName = futureChild.value.outlet;\n this.deactivateRoutes(futureChild, children[childOutletName], contexts);\n delete children[childOutletName];\n });\n // De-activate the routes that will not be re-used\n Object.values(children).forEach(v => {\n this.deactivateRouteAndItsChildren(v, contexts);\n });\n }\n deactivateRoutes(futureNode, currNode, parentContext) {\n const future = futureNode.value;\n const curr = currNode ? currNode.value : null;\n if (future === curr) {\n // Reusing the node, check to see if the children need to be de-activated\n if (future.component) {\n // If we have a normal route, we need to go through an outlet.\n const context = parentContext.getContext(future.outlet);\n if (context) {\n this.deactivateChildRoutes(futureNode, currNode, context.children);\n }\n } else {\n // if we have a componentless route, we recurse but keep the same outlet map.\n this.deactivateChildRoutes(futureNode, currNode, parentContext);\n }\n } else {\n if (curr) {\n // Deactivate the current route which will not be re-used\n this.deactivateRouteAndItsChildren(currNode, parentContext);\n }\n }\n }\n deactivateRouteAndItsChildren(route, parentContexts) {\n // If there is no component, the Route is never attached to an outlet (because there is no\n // component to attach).\n if (route.value.component && this.routeReuseStrategy.shouldDetach(route.value.snapshot)) {\n this.detachAndStoreRouteSubtree(route, parentContexts);\n } else {\n this.deactivateRouteAndOutlet(route, parentContexts);\n }\n }\n detachAndStoreRouteSubtree(route, parentContexts) {\n const context = parentContexts.getContext(route.value.outlet);\n const contexts = context && route.value.component ? context.children : parentContexts;\n const children = nodeChildrenAsMap(route);\n for (const childOutlet of Object.keys(children)) {\n this.deactivateRouteAndItsChildren(children[childOutlet], contexts);\n }\n if (context && context.outlet) {\n const componentRef = context.outlet.detach();\n const contexts = context.children.onOutletDeactivated();\n this.routeReuseStrategy.store(route.value.snapshot, {\n componentRef,\n route,\n contexts\n });\n }\n }\n deactivateRouteAndOutlet(route, parentContexts) {\n const context = parentContexts.getContext(route.value.outlet);\n // The context could be `null` if we are on a componentless route but there may still be\n // children that need deactivating.\n const contexts = context && route.value.component ? context.children : parentContexts;\n const children = nodeChildrenAsMap(route);\n for (const childOutlet of Object.keys(children)) {\n this.deactivateRouteAndItsChildren(children[childOutlet], contexts);\n }\n if (context) {\n if (context.outlet) {\n // Destroy the component\n context.outlet.deactivate();\n // Destroy the contexts for all the outlets that were in the component\n context.children.onOutletDeactivated();\n }\n // Clear the information about the attached component on the context but keep the reference to\n // the outlet. Clear even if outlet was not yet activated to avoid activating later with old\n // info\n context.attachRef = null;\n context.route = null;\n }\n }\n activateChildRoutes(futureNode, currNode, contexts) {\n const children = nodeChildrenAsMap(currNode);\n futureNode.children.forEach(c => {\n this.activateRoutes(c, children[c.value.outlet], contexts);\n this.forwardEvent(new ActivationEnd(c.value.snapshot));\n });\n if (futureNode.children.length) {\n this.forwardEvent(new ChildActivationEnd(futureNode.value.snapshot));\n }\n }\n activateRoutes(futureNode, currNode, parentContexts) {\n const future = futureNode.value;\n const curr = currNode ? currNode.value : null;\n advanceActivatedRoute(future);\n // reusing the node\n if (future === curr) {\n if (future.component) {\n // If we have a normal route, we need to go through an outlet.\n const context = parentContexts.getOrCreateContext(future.outlet);\n this.activateChildRoutes(futureNode, currNode, context.children);\n } else {\n // if we have a componentless route, we recurse but keep the same outlet map.\n this.activateChildRoutes(futureNode, currNode, parentContexts);\n }\n } else {\n if (future.component) {\n // if we have a normal route, we need to place the component into the outlet and recurse.\n const context = parentContexts.getOrCreateContext(future.outlet);\n if (this.routeReuseStrategy.shouldAttach(future.snapshot)) {\n const stored = this.routeReuseStrategy.retrieve(future.snapshot);\n this.routeReuseStrategy.store(future.snapshot, null);\n context.children.onOutletReAttached(stored.contexts);\n context.attachRef = stored.componentRef;\n context.route = stored.route.value;\n if (context.outlet) {\n // Attach right away when the outlet has already been instantiated\n // Otherwise attach from `RouterOutlet.ngOnInit` when it is instantiated\n context.outlet.attach(stored.componentRef, stored.route.value);\n }\n advanceActivatedRoute(stored.route.value);\n this.activateChildRoutes(futureNode, null, context.children);\n } else {\n const injector = getClosestRouteInjector(future.snapshot);\n context.attachRef = null;\n context.route = future;\n context.injector = injector;\n if (context.outlet) {\n // Activate the outlet when it has already been instantiated\n // Otherwise it will get activated from its `ngOnInit` when instantiated\n context.outlet.activateWith(future, context.injector);\n }\n this.activateChildRoutes(futureNode, null, context.children);\n }\n } else {\n // if we have a componentless route, we recurse but keep the same outlet map.\n this.activateChildRoutes(futureNode, null, parentContexts);\n }\n }\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const context = parentContexts.getOrCreateContext(future.outlet);\n const outlet = context.outlet;\n if (outlet && this.inputBindingEnabled && !outlet.supportsBindingToComponentInputs && !warnedAboutUnsupportedInputBinding) {\n console.warn(`'withComponentInputBinding' feature is enabled but ` + `this application is using an outlet that may not support binding to component inputs.`);\n warnedAboutUnsupportedInputBinding = true;\n }\n }\n }\n}\nclass CanActivate {\n constructor(path) {\n this.path = path;\n this.route = this.path[this.path.length - 1];\n }\n}\nclass CanDeactivate {\n constructor(component, route) {\n this.component = component;\n this.route = route;\n }\n}\nfunction getAllRouteGuards(future, curr, parentContexts) {\n const futureRoot = future._root;\n const currRoot = curr ? curr._root : null;\n return getChildRouteGuards(futureRoot, currRoot, parentContexts, [futureRoot.value]);\n}\nfunction getCanActivateChild(p) {\n const canActivateChild = p.routeConfig ? p.routeConfig.canActivateChild : null;\n if (!canActivateChild || canActivateChild.length === 0) return null;\n return {\n node: p,\n guards: canActivateChild\n };\n}\nfunction getTokenOrFunctionIdentity(tokenOrFunction, injector) {\n const NOT_FOUND = Symbol();\n const result = injector.get(tokenOrFunction, NOT_FOUND);\n if (result === NOT_FOUND) {\n if (typeof tokenOrFunction === 'function' && !ɵisInjectable(tokenOrFunction)) {\n // We think the token is just a function so return it as-is\n return tokenOrFunction;\n } else {\n // This will throw the not found error\n return injector.get(tokenOrFunction);\n }\n }\n return result;\n}\nfunction getChildRouteGuards(futureNode, currNode, contexts, futurePath, checks = {\n canDeactivateChecks: [],\n canActivateChecks: []\n}) {\n const prevChildren = nodeChildrenAsMap(currNode);\n // Process the children of the future route\n futureNode.children.forEach(c => {\n getRouteGuards(c, prevChildren[c.value.outlet], contexts, futurePath.concat([c.value]), checks);\n delete prevChildren[c.value.outlet];\n });\n // Process any children left from the current route (not active for the future route)\n Object.entries(prevChildren).forEach(([k, v]) => deactivateRouteAndItsChildren(v, contexts.getContext(k), checks));\n return checks;\n}\nfunction getRouteGuards(futureNode, currNode, parentContexts, futurePath, checks = {\n canDeactivateChecks: [],\n canActivateChecks: []\n}) {\n const future = futureNode.value;\n const curr = currNode ? currNode.value : null;\n const context = parentContexts ? parentContexts.getContext(futureNode.value.outlet) : null;\n // reusing the node\n if (curr && future.routeConfig === curr.routeConfig) {\n const shouldRun = shouldRunGuardsAndResolvers(curr, future, future.routeConfig.runGuardsAndResolvers);\n if (shouldRun) {\n checks.canActivateChecks.push(new CanActivate(futurePath));\n } else {\n // we need to set the data\n future.data = curr.data;\n future._resolvedData = curr._resolvedData;\n }\n // If we have a component, we need to go through an outlet.\n if (future.component) {\n getChildRouteGuards(futureNode, currNode, context ? context.children : null, futurePath, checks);\n // if we have a componentless route, we recurse but keep the same outlet map.\n } else {\n getChildRouteGuards(futureNode, currNode, parentContexts, futurePath, checks);\n }\n if (shouldRun && context && context.outlet && context.outlet.isActivated) {\n checks.canDeactivateChecks.push(new CanDeactivate(context.outlet.component, curr));\n }\n } else {\n if (curr) {\n deactivateRouteAndItsChildren(currNode, context, checks);\n }\n checks.canActivateChecks.push(new CanActivate(futurePath));\n // If we have a component, we need to go through an outlet.\n if (future.component) {\n getChildRouteGuards(futureNode, null, context ? context.children : null, futurePath, checks);\n // if we have a componentless route, we recurse but keep the same outlet map.\n } else {\n getChildRouteGuards(futureNode, null, parentContexts, futurePath, checks);\n }\n }\n return checks;\n}\nfunction shouldRunGuardsAndResolvers(curr, future, mode) {\n if (typeof mode === 'function') {\n return mode(curr, future);\n }\n switch (mode) {\n case 'pathParamsChange':\n return !equalPath(curr.url, future.url);\n case 'pathParamsOrQueryParamsChange':\n return !equalPath(curr.url, future.url) || !shallowEqual(curr.queryParams, future.queryParams);\n case 'always':\n return true;\n case 'paramsOrQueryParamsChange':\n return !equalParamsAndUrlSegments(curr, future) || !shallowEqual(curr.queryParams, future.queryParams);\n case 'paramsChange':\n default:\n return !equalParamsAndUrlSegments(curr, future);\n }\n}\nfunction deactivateRouteAndItsChildren(route, context, checks) {\n const children = nodeChildrenAsMap(route);\n const r = route.value;\n Object.entries(children).forEach(([childName, node]) => {\n if (!r.component) {\n deactivateRouteAndItsChildren(node, context, checks);\n } else if (context) {\n deactivateRouteAndItsChildren(node, context.children.getContext(childName), checks);\n } else {\n deactivateRouteAndItsChildren(node, null, checks);\n }\n });\n if (!r.component) {\n checks.canDeactivateChecks.push(new CanDeactivate(null, r));\n } else if (context && context.outlet && context.outlet.isActivated) {\n checks.canDeactivateChecks.push(new CanDeactivate(context.outlet.component, r));\n } else {\n checks.canDeactivateChecks.push(new CanDeactivate(null, r));\n }\n}\n\n/**\n * Simple function check, but generic so type inference will flow. Example:\n *\n * function product(a: number, b: number) {\n * return a * b;\n * }\n *\n * if (isFunction(fn)) {\n * return fn(1, 2);\n * } else {\n * throw \"Must provide the `product` function\";\n * }\n */\nfunction isFunction(v) {\n return typeof v === 'function';\n}\nfunction isBoolean(v) {\n return typeof v === 'boolean';\n}\nfunction isCanLoad(guard) {\n return guard && isFunction(guard.canLoad);\n}\nfunction isCanActivate(guard) {\n return guard && isFunction(guard.canActivate);\n}\nfunction isCanActivateChild(guard) {\n return guard && isFunction(guard.canActivateChild);\n}\nfunction isCanDeactivate(guard) {\n return guard && isFunction(guard.canDeactivate);\n}\nfunction isCanMatch(guard) {\n return guard && isFunction(guard.canMatch);\n}\nfunction isRedirectingNavigationCancelingError(error) {\n return isNavigationCancelingError(error) && isUrlTree(error.url);\n}\nfunction isNavigationCancelingError(error) {\n return error && error[NAVIGATION_CANCELING_ERROR];\n}\nfunction isEmptyError(e) {\n return e instanceof EmptyError || e?.name === 'EmptyError';\n}\nconst INITIAL_VALUE = /* @__PURE__ */Symbol('INITIAL_VALUE');\nfunction prioritizedGuardValue() {\n return switchMap(obs => {\n return combineLatest(obs.map(o => o.pipe(take(1), startWith(INITIAL_VALUE)))).pipe(map(results => {\n for (const result of results) {\n if (result === true) {\n // If result is true, check the next one\n continue;\n } else if (result === INITIAL_VALUE) {\n // If guard has not finished, we need to stop processing.\n return INITIAL_VALUE;\n } else if (result === false || result instanceof UrlTree) {\n // Result finished and was not true. Return the result.\n // Note that we only allow false/UrlTree. Other values are considered invalid and\n // ignored.\n return result;\n }\n }\n // Everything resolved to true. Return true.\n return true;\n }), filter(item => item !== INITIAL_VALUE), take(1));\n });\n}\nfunction checkGuards(injector, forwardEvent) {\n return mergeMap(t => {\n const {\n targetSnapshot,\n currentSnapshot,\n guards: {\n canActivateChecks,\n canDeactivateChecks\n }\n } = t;\n if (canDeactivateChecks.length === 0 && canActivateChecks.length === 0) {\n return of({\n ...t,\n guardsResult: true\n });\n }\n return runCanDeactivateChecks(canDeactivateChecks, targetSnapshot, currentSnapshot, injector).pipe(mergeMap(canDeactivate => {\n return canDeactivate && isBoolean(canDeactivate) ? runCanActivateChecks(targetSnapshot, canActivateChecks, injector, forwardEvent) : of(canDeactivate);\n }), map(guardsResult => ({\n ...t,\n guardsResult\n })));\n });\n}\nfunction runCanDeactivateChecks(checks, futureRSS, currRSS, injector) {\n return from(checks).pipe(mergeMap(check => runCanDeactivate(check.component, check.route, currRSS, futureRSS, injector)), first(result => {\n return result !== true;\n }, true));\n}\nfunction runCanActivateChecks(futureSnapshot, checks, injector, forwardEvent) {\n return from(checks).pipe(concatMap(check => {\n return concat(fireChildActivationStart(check.route.parent, forwardEvent), fireActivationStart(check.route, forwardEvent), runCanActivateChild(futureSnapshot, check.path, injector), runCanActivate(futureSnapshot, check.route, injector));\n }), first(result => {\n return result !== true;\n }, true));\n}\n/**\n * This should fire off `ActivationStart` events for each route being activated at this\n * level.\n * In other words, if you're activating `a` and `b` below, `path` will contain the\n * `ActivatedRouteSnapshot`s for both and we will fire `ActivationStart` for both. Always\n * return\n * `true` so checks continue to run.\n */\nfunction fireActivationStart(snapshot, forwardEvent) {\n if (snapshot !== null && forwardEvent) {\n forwardEvent(new ActivationStart(snapshot));\n }\n return of(true);\n}\n/**\n * This should fire off `ChildActivationStart` events for each route being activated at this\n * level.\n * In other words, if you're activating `a` and `b` below, `path` will contain the\n * `ActivatedRouteSnapshot`s for both and we will fire `ChildActivationStart` for both. Always\n * return\n * `true` so checks continue to run.\n */\nfunction fireChildActivationStart(snapshot, forwardEvent) {\n if (snapshot !== null && forwardEvent) {\n forwardEvent(new ChildActivationStart(snapshot));\n }\n return of(true);\n}\nfunction runCanActivate(futureRSS, futureARS, injector) {\n const canActivate = futureARS.routeConfig ? futureARS.routeConfig.canActivate : null;\n if (!canActivate || canActivate.length === 0) return of(true);\n const canActivateObservables = canActivate.map(canActivate => {\n return defer(() => {\n const closestInjector = getClosestRouteInjector(futureARS) ?? injector;\n const guard = getTokenOrFunctionIdentity(canActivate, closestInjector);\n const guardVal = isCanActivate(guard) ? guard.canActivate(futureARS, futureRSS) : runInInjectionContext(closestInjector, () => guard(futureARS, futureRSS));\n return wrapIntoObservable(guardVal).pipe(first());\n });\n });\n return of(canActivateObservables).pipe(prioritizedGuardValue());\n}\nfunction runCanActivateChild(futureRSS, path, injector) {\n const futureARS = path[path.length - 1];\n const canActivateChildGuards = path.slice(0, path.length - 1).reverse().map(p => getCanActivateChild(p)).filter(_ => _ !== null);\n const canActivateChildGuardsMapped = canActivateChildGuards.map(d => {\n return defer(() => {\n const guardsMapped = d.guards.map(canActivateChild => {\n const closestInjector = getClosestRouteInjector(d.node) ?? injector;\n const guard = getTokenOrFunctionIdentity(canActivateChild, closestInjector);\n const guardVal = isCanActivateChild(guard) ? guard.canActivateChild(futureARS, futureRSS) : runInInjectionContext(closestInjector, () => guard(futureARS, futureRSS));\n return wrapIntoObservable(guardVal).pipe(first());\n });\n return of(guardsMapped).pipe(prioritizedGuardValue());\n });\n });\n return of(canActivateChildGuardsMapped).pipe(prioritizedGuardValue());\n}\nfunction runCanDeactivate(component, currARS, currRSS, futureRSS, injector) {\n const canDeactivate = currARS && currARS.routeConfig ? currARS.routeConfig.canDeactivate : null;\n if (!canDeactivate || canDeactivate.length === 0) return of(true);\n const canDeactivateObservables = canDeactivate.map(c => {\n const closestInjector = getClosestRouteInjector(currARS) ?? injector;\n const guard = getTokenOrFunctionIdentity(c, closestInjector);\n const guardVal = isCanDeactivate(guard) ? guard.canDeactivate(component, currARS, currRSS, futureRSS) : runInInjectionContext(closestInjector, () => guard(component, currARS, currRSS, futureRSS));\n return wrapIntoObservable(guardVal).pipe(first());\n });\n return of(canDeactivateObservables).pipe(prioritizedGuardValue());\n}\nfunction runCanLoadGuards(injector, route, segments, urlSerializer) {\n const canLoad = route.canLoad;\n if (canLoad === undefined || canLoad.length === 0) {\n return of(true);\n }\n const canLoadObservables = canLoad.map(injectionToken => {\n const guard = getTokenOrFunctionIdentity(injectionToken, injector);\n const guardVal = isCanLoad(guard) ? guard.canLoad(route, segments) : runInInjectionContext(injector, () => guard(route, segments));\n return wrapIntoObservable(guardVal);\n });\n return of(canLoadObservables).pipe(prioritizedGuardValue(), redirectIfUrlTree(urlSerializer));\n}\nfunction redirectIfUrlTree(urlSerializer) {\n return pipe(tap(result => {\n if (!isUrlTree(result)) return;\n throw redirectingNavigationError(urlSerializer, result);\n }), map(result => result === true));\n}\nfunction runCanMatchGuards(injector, route, segments, urlSerializer) {\n const canMatch = route.canMatch;\n if (!canMatch || canMatch.length === 0) return of(true);\n const canMatchObservables = canMatch.map(injectionToken => {\n const guard = getTokenOrFunctionIdentity(injectionToken, injector);\n const guardVal = isCanMatch(guard) ? guard.canMatch(route, segments) : runInInjectionContext(injector, () => guard(route, segments));\n return wrapIntoObservable(guardVal);\n });\n return of(canMatchObservables).pipe(prioritizedGuardValue(), redirectIfUrlTree(urlSerializer));\n}\nclass NoMatch {\n constructor(segmentGroup) {\n this.segmentGroup = segmentGroup || null;\n }\n}\nclass AbsoluteRedirect extends Error {\n constructor(urlTree) {\n super();\n this.urlTree = urlTree;\n }\n}\nfunction noMatch$1(segmentGroup) {\n return throwError(new NoMatch(segmentGroup));\n}\nfunction absoluteRedirect(newTree) {\n return throwError(new AbsoluteRedirect(newTree));\n}\nfunction namedOutletsRedirect(redirectTo) {\n return throwError(new ɵRuntimeError(4000 /* RuntimeErrorCode.NAMED_OUTLET_REDIRECT */, (typeof ngDevMode === 'undefined' || ngDevMode) && `Only absolute redirects can have named outlets. redirectTo: '${redirectTo}'`));\n}\nfunction canLoadFails(route) {\n return throwError(navigationCancelingError((typeof ngDevMode === 'undefined' || ngDevMode) && `Cannot load children because the guard of the route \"path: '${route.path}'\" returned false`, 3 /* NavigationCancellationCode.GuardRejected */));\n}\n\nclass ApplyRedirects {\n constructor(urlSerializer, urlTree) {\n this.urlSerializer = urlSerializer;\n this.urlTree = urlTree;\n }\n lineralizeSegments(route, urlTree) {\n let res = [];\n let c = urlTree.root;\n while (true) {\n res = res.concat(c.segments);\n if (c.numberOfChildren === 0) {\n return of(res);\n }\n if (c.numberOfChildren > 1 || !c.children[PRIMARY_OUTLET]) {\n return namedOutletsRedirect(route.redirectTo);\n }\n c = c.children[PRIMARY_OUTLET];\n }\n }\n applyRedirectCommands(segments, redirectTo, posParams) {\n const newTree = this.applyRedirectCreateUrlTree(redirectTo, this.urlSerializer.parse(redirectTo), segments, posParams);\n if (redirectTo.startsWith('/')) {\n throw new AbsoluteRedirect(newTree);\n }\n return newTree;\n }\n applyRedirectCreateUrlTree(redirectTo, urlTree, segments, posParams) {\n const newRoot = this.createSegmentGroup(redirectTo, urlTree.root, segments, posParams);\n return new UrlTree(newRoot, this.createQueryParams(urlTree.queryParams, this.urlTree.queryParams), urlTree.fragment);\n }\n createQueryParams(redirectToParams, actualParams) {\n const res = {};\n Object.entries(redirectToParams).forEach(([k, v]) => {\n const copySourceValue = typeof v === 'string' && v.startsWith(':');\n if (copySourceValue) {\n const sourceName = v.substring(1);\n res[k] = actualParams[sourceName];\n } else {\n res[k] = v;\n }\n });\n return res;\n }\n createSegmentGroup(redirectTo, group, segments, posParams) {\n const updatedSegments = this.createSegments(redirectTo, group.segments, segments, posParams);\n let children = {};\n Object.entries(group.children).forEach(([name, child]) => {\n children[name] = this.createSegmentGroup(redirectTo, child, segments, posParams);\n });\n return new UrlSegmentGroup(updatedSegments, children);\n }\n createSegments(redirectTo, redirectToSegments, actualSegments, posParams) {\n return redirectToSegments.map(s => s.path.startsWith(':') ? this.findPosParam(redirectTo, s, posParams) : this.findOrReturn(s, actualSegments));\n }\n findPosParam(redirectTo, redirectToUrlSegment, posParams) {\n const pos = posParams[redirectToUrlSegment.path.substring(1)];\n if (!pos) throw new ɵRuntimeError(4001 /* RuntimeErrorCode.MISSING_REDIRECT */, (typeof ngDevMode === 'undefined' || ngDevMode) && `Cannot redirect to '${redirectTo}'. Cannot find '${redirectToUrlSegment.path}'.`);\n return pos;\n }\n findOrReturn(redirectToUrlSegment, actualSegments) {\n let idx = 0;\n for (const s of actualSegments) {\n if (s.path === redirectToUrlSegment.path) {\n actualSegments.splice(idx);\n return s;\n }\n idx++;\n }\n return redirectToUrlSegment;\n }\n}\nconst noMatch = {\n matched: false,\n consumedSegments: [],\n remainingSegments: [],\n parameters: {},\n positionalParamSegments: {}\n};\nfunction matchWithChecks(segmentGroup, route, segments, injector, urlSerializer) {\n const result = match(segmentGroup, route, segments);\n if (!result.matched) {\n return of(result);\n }\n // Only create the Route's `EnvironmentInjector` if it matches the attempted\n // navigation\n injector = getOrCreateRouteInjectorIfNeeded(route, injector);\n return runCanMatchGuards(injector, route, segments, urlSerializer).pipe(map(v => v === true ? result : {\n ...noMatch\n }));\n}\nfunction match(segmentGroup, route, segments) {\n if (route.path === '**') {\n return createWildcardMatchResult(segments);\n }\n if (route.path === '') {\n if (route.pathMatch === 'full' && (segmentGroup.hasChildren() || segments.length > 0)) {\n return {\n ...noMatch\n };\n }\n return {\n matched: true,\n consumedSegments: [],\n remainingSegments: segments,\n parameters: {},\n positionalParamSegments: {}\n };\n }\n const matcher = route.matcher || defaultUrlMatcher;\n const res = matcher(segments, segmentGroup, route);\n if (!res) return {\n ...noMatch\n };\n const posParams = {};\n Object.entries(res.posParams ?? {}).forEach(([k, v]) => {\n posParams[k] = v.path;\n });\n const parameters = res.consumed.length > 0 ? {\n ...posParams,\n ...res.consumed[res.consumed.length - 1].parameters\n } : posParams;\n return {\n matched: true,\n consumedSegments: res.consumed,\n remainingSegments: segments.slice(res.consumed.length),\n // TODO(atscott): investigate combining parameters and positionalParamSegments\n parameters,\n positionalParamSegments: res.posParams ?? {}\n };\n}\nfunction createWildcardMatchResult(segments) {\n return {\n matched: true,\n parameters: segments.length > 0 ? last(segments).parameters : {},\n consumedSegments: segments,\n remainingSegments: [],\n positionalParamSegments: {}\n };\n}\nfunction split(segmentGroup, consumedSegments, slicedSegments, config) {\n if (slicedSegments.length > 0 && containsEmptyPathMatchesWithNamedOutlets(segmentGroup, slicedSegments, config)) {\n const s = new UrlSegmentGroup(consumedSegments, createChildrenForEmptyPaths(config, new UrlSegmentGroup(slicedSegments, segmentGroup.children)));\n return {\n segmentGroup: s,\n slicedSegments: []\n };\n }\n if (slicedSegments.length === 0 && containsEmptyPathMatches(segmentGroup, slicedSegments, config)) {\n const s = new UrlSegmentGroup(segmentGroup.segments, addEmptyPathsToChildrenIfNeeded(segmentGroup, consumedSegments, slicedSegments, config, segmentGroup.children));\n return {\n segmentGroup: s,\n slicedSegments\n };\n }\n const s = new UrlSegmentGroup(segmentGroup.segments, segmentGroup.children);\n return {\n segmentGroup: s,\n slicedSegments\n };\n}\nfunction addEmptyPathsToChildrenIfNeeded(segmentGroup, consumedSegments, slicedSegments, routes, children) {\n const res = {};\n for (const r of routes) {\n if (emptyPathMatch(segmentGroup, slicedSegments, r) && !children[getOutlet(r)]) {\n const s = new UrlSegmentGroup([], {});\n res[getOutlet(r)] = s;\n }\n }\n return {\n ...children,\n ...res\n };\n}\nfunction createChildrenForEmptyPaths(routes, primarySegment) {\n const res = {};\n res[PRIMARY_OUTLET] = primarySegment;\n for (const r of routes) {\n if (r.path === '' && getOutlet(r) !== PRIMARY_OUTLET) {\n const s = new UrlSegmentGroup([], {});\n res[getOutlet(r)] = s;\n }\n }\n return res;\n}\nfunction containsEmptyPathMatchesWithNamedOutlets(segmentGroup, slicedSegments, routes) {\n return routes.some(r => emptyPathMatch(segmentGroup, slicedSegments, r) && getOutlet(r) !== PRIMARY_OUTLET);\n}\nfunction containsEmptyPathMatches(segmentGroup, slicedSegments, routes) {\n return routes.some(r => emptyPathMatch(segmentGroup, slicedSegments, r));\n}\nfunction emptyPathMatch(segmentGroup, slicedSegments, r) {\n if ((segmentGroup.hasChildren() || slicedSegments.length > 0) && r.pathMatch === 'full') {\n return false;\n }\n return r.path === '';\n}\n/**\n * Determines if `route` is a path match for the `rawSegment`, `segments`, and `outlet` without\n * verifying that its children are a full match for the remainder of the `rawSegment` children as\n * well.\n */\nfunction isImmediateMatch(route, rawSegment, segments, outlet) {\n // We allow matches to empty paths when the outlets differ so we can match a url like `/(b:b)` to\n // a config like\n // * `{path: '', children: [{path: 'b', outlet: 'b'}]}`\n // or even\n // * `{path: '', outlet: 'a', children: [{path: 'b', outlet: 'b'}]`\n //\n // The exception here is when the segment outlet is for the primary outlet. This would\n // result in a match inside the named outlet because all children there are written as primary\n // outlets. So we need to prevent child named outlet matches in a url like `/b` in a config like\n // * `{path: '', outlet: 'x' children: [{path: 'b'}]}`\n // This should only match if the url is `/(x:b)`.\n if (getOutlet(route) !== outlet && (outlet === PRIMARY_OUTLET || !emptyPathMatch(rawSegment, segments, route))) {\n return false;\n }\n return match(rawSegment, route, segments).matched;\n}\nfunction noLeftoversInUrl(segmentGroup, segments, outlet) {\n return segments.length === 0 && !segmentGroup.children[outlet];\n}\n\n/**\n * Class used to indicate there were no additional route config matches but that all segments of\n * the URL were consumed during matching so the route was URL matched. When this happens, we still\n * try to match child configs in case there are empty path children.\n */\nclass NoLeftoversInUrl {}\nfunction recognize$1(injector, configLoader, rootComponentType, config, urlTree, urlSerializer, paramsInheritanceStrategy = 'emptyOnly') {\n return new Recognizer(injector, configLoader, rootComponentType, config, urlTree, paramsInheritanceStrategy, urlSerializer).recognize();\n}\nconst MAX_ALLOWED_REDIRECTS = 31;\nclass Recognizer {\n constructor(injector, configLoader, rootComponentType, config, urlTree, paramsInheritanceStrategy, urlSerializer) {\n this.injector = injector;\n this.configLoader = configLoader;\n this.rootComponentType = rootComponentType;\n this.config = config;\n this.urlTree = urlTree;\n this.paramsInheritanceStrategy = paramsInheritanceStrategy;\n this.urlSerializer = urlSerializer;\n this.applyRedirects = new ApplyRedirects(this.urlSerializer, this.urlTree);\n this.absoluteRedirectCount = 0;\n this.allowRedirects = true;\n }\n noMatchError(e) {\n return new ɵRuntimeError(4002 /* RuntimeErrorCode.NO_MATCH */, typeof ngDevMode === 'undefined' || ngDevMode ? `Cannot match any routes. URL Segment: '${e.segmentGroup}'` : `'${e.segmentGroup}'`);\n }\n recognize() {\n const rootSegmentGroup = split(this.urlTree.root, [], [], this.config).segmentGroup;\n return this.match(rootSegmentGroup).pipe(map(children => {\n // Use Object.freeze to prevent readers of the Router state from modifying it outside\n // of a navigation, resulting in the router being out of sync with the browser.\n const root = new ActivatedRouteSnapshot([], Object.freeze({}), Object.freeze({\n ...this.urlTree.queryParams\n }), this.urlTree.fragment, {}, PRIMARY_OUTLET, this.rootComponentType, null, {});\n const rootNode = new TreeNode(root, children);\n const routeState = new RouterStateSnapshot('', rootNode);\n const tree = createUrlTreeFromSnapshot(root, [], this.urlTree.queryParams, this.urlTree.fragment);\n // https://github.com/angular/angular/issues/47307\n // Creating the tree stringifies the query params\n // We don't want to do this here so reassign them to the original.\n tree.queryParams = this.urlTree.queryParams;\n routeState.url = this.urlSerializer.serialize(tree);\n this.inheritParamsAndData(routeState._root, null);\n return {\n state: routeState,\n tree\n };\n }));\n }\n match(rootSegmentGroup) {\n const expanded$ = this.processSegmentGroup(this.injector, this.config, rootSegmentGroup, PRIMARY_OUTLET);\n return expanded$.pipe(catchError(e => {\n if (e instanceof AbsoluteRedirect) {\n this.urlTree = e.urlTree;\n return this.match(e.urlTree.root);\n }\n if (e instanceof NoMatch) {\n throw this.noMatchError(e);\n }\n throw e;\n }));\n }\n inheritParamsAndData(routeNode, parent) {\n const route = routeNode.value;\n const i = getInherited(route, parent, this.paramsInheritanceStrategy);\n route.params = Object.freeze(i.params);\n route.data = Object.freeze(i.data);\n routeNode.children.forEach(n => this.inheritParamsAndData(n, route));\n }\n processSegmentGroup(injector, config, segmentGroup, outlet) {\n if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) {\n return this.processChildren(injector, config, segmentGroup);\n }\n return this.processSegment(injector, config, segmentGroup, segmentGroup.segments, outlet, true).pipe(map(child => child instanceof TreeNode ? [child] : []));\n }\n /**\n * Matches every child outlet in the `segmentGroup` to a `Route` in the config. Returns `null` if\n * we cannot find a match for _any_ of the children.\n *\n * @param config - The `Routes` to match against\n * @param segmentGroup - The `UrlSegmentGroup` whose children need to be matched against the\n * config.\n */\n processChildren(injector, config, segmentGroup) {\n // Expand outlets one at a time, starting with the primary outlet. We need to do it this way\n // because an absolute redirect from the primary outlet takes precedence.\n const childOutlets = [];\n for (const child of Object.keys(segmentGroup.children)) {\n if (child === 'primary') {\n childOutlets.unshift(child);\n } else {\n childOutlets.push(child);\n }\n }\n return from(childOutlets).pipe(concatMap(childOutlet => {\n const child = segmentGroup.children[childOutlet];\n // Sort the config so that routes with outlets that match the one being activated\n // appear first, followed by routes for other outlets, which might match if they have\n // an empty path.\n const sortedConfig = sortByMatchingOutlets(config, childOutlet);\n return this.processSegmentGroup(injector, sortedConfig, child, childOutlet);\n }), scan((children, outletChildren) => {\n children.push(...outletChildren);\n return children;\n }), defaultIfEmpty(null), last$1(), mergeMap(children => {\n if (children === null) return noMatch$1(segmentGroup);\n // Because we may have matched two outlets to the same empty path segment, we can have\n // multiple activated results for the same outlet. We should merge the children of\n // these results so the final return value is only one `TreeNode` per outlet.\n const mergedChildren = mergeEmptyPathMatches(children);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // This should really never happen - we are only taking the first match for each\n // outlet and merge the empty path matches.\n checkOutletNameUniqueness(mergedChildren);\n }\n sortActivatedRouteSnapshots(mergedChildren);\n return of(mergedChildren);\n }));\n }\n processSegment(injector, routes, segmentGroup, segments, outlet, allowRedirects) {\n return from(routes).pipe(concatMap(r => {\n return this.processSegmentAgainstRoute(r._injector ?? injector, routes, r, segmentGroup, segments, outlet, allowRedirects).pipe(catchError(e => {\n if (e instanceof NoMatch) {\n return of(null);\n }\n throw e;\n }));\n }), first(x => !!x), catchError(e => {\n if (isEmptyError(e)) {\n if (noLeftoversInUrl(segmentGroup, segments, outlet)) {\n return of(new NoLeftoversInUrl());\n }\n return noMatch$1(segmentGroup);\n }\n throw e;\n }));\n }\n processSegmentAgainstRoute(injector, routes, route, rawSegment, segments, outlet, allowRedirects) {\n if (!isImmediateMatch(route, rawSegment, segments, outlet)) return noMatch$1(rawSegment);\n if (route.redirectTo === undefined) {\n return this.matchSegmentAgainstRoute(injector, rawSegment, route, segments, outlet);\n }\n if (this.allowRedirects && allowRedirects) {\n return this.expandSegmentAgainstRouteUsingRedirect(injector, rawSegment, routes, route, segments, outlet);\n }\n return noMatch$1(rawSegment);\n }\n expandSegmentAgainstRouteUsingRedirect(injector, segmentGroup, routes, route, segments, outlet) {\n const {\n matched,\n consumedSegments,\n positionalParamSegments,\n remainingSegments\n } = match(segmentGroup, route, segments);\n if (!matched) return noMatch$1(segmentGroup);\n // TODO(atscott): Move all of this under an if(ngDevMode) as a breaking change and allow stack\n // size exceeded in production\n if (route.redirectTo.startsWith('/')) {\n this.absoluteRedirectCount++;\n if (this.absoluteRedirectCount > MAX_ALLOWED_REDIRECTS) {\n if (ngDevMode) {\n throw new ɵRuntimeError(4016 /* RuntimeErrorCode.INFINITE_REDIRECT */, `Detected possible infinite redirect when redirecting from '${this.urlTree}' to '${route.redirectTo}'.\\n` + `This is currently a dev mode only error but will become a` + ` call stack size exceeded error in production in a future major version.`);\n }\n this.allowRedirects = false;\n }\n }\n const newTree = this.applyRedirects.applyRedirectCommands(consumedSegments, route.redirectTo, positionalParamSegments);\n return this.applyRedirects.lineralizeSegments(route, newTree).pipe(mergeMap(newSegments => {\n return this.processSegment(injector, routes, segmentGroup, newSegments.concat(remainingSegments), outlet, false);\n }));\n }\n matchSegmentAgainstRoute(injector, rawSegment, route, segments, outlet) {\n const matchResult = matchWithChecks(rawSegment, route, segments, injector, this.urlSerializer);\n if (route.path === '**') {\n // Prior versions of the route matching algorithm would stop matching at the wildcard route.\n // We should investigate a better strategy for any existing children. Otherwise, these\n // child segments are silently dropped from the navigation.\n // https://github.com/angular/angular/issues/40089\n rawSegment.children = {};\n }\n return matchResult.pipe(switchMap(result => {\n if (!result.matched) {\n return noMatch$1(rawSegment);\n }\n // If the route has an injector created from providers, we should start using that.\n injector = route._injector ?? injector;\n return this.getChildConfig(injector, route, segments).pipe(switchMap(({\n routes: childConfig\n }) => {\n const childInjector = route._loadedInjector ?? injector;\n const {\n consumedSegments,\n remainingSegments,\n parameters\n } = result;\n const snapshot = new ActivatedRouteSnapshot(consumedSegments, parameters, Object.freeze({\n ...this.urlTree.queryParams\n }), this.urlTree.fragment, getData(route), getOutlet(route), route.component ?? route._loadedComponent ?? null, route, getResolve(route));\n const {\n segmentGroup,\n slicedSegments\n } = split(rawSegment, consumedSegments, remainingSegments, childConfig);\n if (slicedSegments.length === 0 && segmentGroup.hasChildren()) {\n return this.processChildren(childInjector, childConfig, segmentGroup).pipe(map(children => {\n if (children === null) {\n return null;\n }\n return new TreeNode(snapshot, children);\n }));\n }\n if (childConfig.length === 0 && slicedSegments.length === 0) {\n return of(new TreeNode(snapshot, []));\n }\n const matchedOnOutlet = getOutlet(route) === outlet;\n // If we matched a config due to empty path match on a different outlet, we need to\n // continue passing the current outlet for the segment rather than switch to PRIMARY.\n // Note that we switch to primary when we have a match because outlet configs look like\n // this: {path: 'a', outlet: 'a', children: [\n // {path: 'b', component: B},\n // {path: 'c', component: C},\n // ]}\n // Notice that the children of the named outlet are configured with the primary outlet\n return this.processSegment(childInjector, childConfig, segmentGroup, slicedSegments, matchedOnOutlet ? PRIMARY_OUTLET : outlet, true).pipe(map(child => {\n return new TreeNode(snapshot, child instanceof TreeNode ? [child] : []);\n }));\n }));\n }));\n }\n getChildConfig(injector, route, segments) {\n if (route.children) {\n // The children belong to the same module\n return of({\n routes: route.children,\n injector\n });\n }\n if (route.loadChildren) {\n // lazy children belong to the loaded module\n if (route._loadedRoutes !== undefined) {\n return of({\n routes: route._loadedRoutes,\n injector: route._loadedInjector\n });\n }\n return runCanLoadGuards(injector, route, segments, this.urlSerializer).pipe(mergeMap(shouldLoadResult => {\n if (shouldLoadResult) {\n return this.configLoader.loadChildren(injector, route).pipe(tap(cfg => {\n route._loadedRoutes = cfg.routes;\n route._loadedInjector = cfg.injector;\n }));\n }\n return canLoadFails(route);\n }));\n }\n return of({\n routes: [],\n injector\n });\n }\n}\nfunction sortActivatedRouteSnapshots(nodes) {\n nodes.sort((a, b) => {\n if (a.value.outlet === PRIMARY_OUTLET) return -1;\n if (b.value.outlet === PRIMARY_OUTLET) return 1;\n return a.value.outlet.localeCompare(b.value.outlet);\n });\n}\nfunction hasEmptyPathConfig(node) {\n const config = node.value.routeConfig;\n return config && config.path === '';\n}\n/**\n * Finds `TreeNode`s with matching empty path route configs and merges them into `TreeNode` with\n * the children from each duplicate. This is necessary because different outlets can match a\n * single empty path route config and the results need to then be merged.\n */\nfunction mergeEmptyPathMatches(nodes) {\n const result = [];\n // The set of nodes which contain children that were merged from two duplicate empty path nodes.\n const mergedNodes = new Set();\n for (const node of nodes) {\n if (!hasEmptyPathConfig(node)) {\n result.push(node);\n continue;\n }\n const duplicateEmptyPathNode = result.find(resultNode => node.value.routeConfig === resultNode.value.routeConfig);\n if (duplicateEmptyPathNode !== undefined) {\n duplicateEmptyPathNode.children.push(...node.children);\n mergedNodes.add(duplicateEmptyPathNode);\n } else {\n result.push(node);\n }\n }\n // For each node which has children from multiple sources, we need to recompute a new `TreeNode`\n // by also merging those children. This is necessary when there are multiple empty path configs\n // in a row. Put another way: whenever we combine children of two nodes, we need to also check\n // if any of those children can be combined into a single node as well.\n for (const mergedNode of mergedNodes) {\n const mergedChildren = mergeEmptyPathMatches(mergedNode.children);\n result.push(new TreeNode(mergedNode.value, mergedChildren));\n }\n return result.filter(n => !mergedNodes.has(n));\n}\nfunction checkOutletNameUniqueness(nodes) {\n const names = {};\n nodes.forEach(n => {\n const routeWithSameOutletName = names[n.value.outlet];\n if (routeWithSameOutletName) {\n const p = routeWithSameOutletName.url.map(s => s.toString()).join('/');\n const c = n.value.url.map(s => s.toString()).join('/');\n throw new ɵRuntimeError(4006 /* RuntimeErrorCode.TWO_SEGMENTS_WITH_SAME_OUTLET */, (typeof ngDevMode === 'undefined' || ngDevMode) && `Two segments cannot have the same outlet name: '${p}' and '${c}'.`);\n }\n names[n.value.outlet] = n.value;\n });\n}\nfunction getData(route) {\n return route.data || {};\n}\nfunction getResolve(route) {\n return route.resolve || {};\n}\nfunction recognize(injector, configLoader, rootComponentType, config, serializer, paramsInheritanceStrategy) {\n return mergeMap(t => recognize$1(injector, configLoader, rootComponentType, config, t.extractedUrl, serializer, paramsInheritanceStrategy).pipe(map(({\n state: targetSnapshot,\n tree: urlAfterRedirects\n }) => {\n return {\n ...t,\n targetSnapshot,\n urlAfterRedirects\n };\n })));\n}\nfunction resolveData(paramsInheritanceStrategy, injector) {\n return mergeMap(t => {\n const {\n targetSnapshot,\n guards: {\n canActivateChecks\n }\n } = t;\n if (!canActivateChecks.length) {\n return of(t);\n }\n // Iterating a Set in javascript happens in insertion order so it is safe to use a `Set` to\n // preserve the correct order that the resolvers should run in.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set#description\n const routesWithResolversToRun = new Set(canActivateChecks.map(check => check.route));\n const routesNeedingDataUpdates = new Set();\n for (const route of routesWithResolversToRun) {\n if (routesNeedingDataUpdates.has(route)) {\n continue;\n }\n // All children under the route with a resolver to run need to recompute inherited data.\n for (const newRoute of flattenRouteTree(route)) {\n routesNeedingDataUpdates.add(newRoute);\n }\n }\n let routesProcessed = 0;\n return from(routesNeedingDataUpdates).pipe(concatMap(route => {\n if (routesWithResolversToRun.has(route)) {\n return runResolve(route, targetSnapshot, paramsInheritanceStrategy, injector);\n } else {\n route.data = getInherited(route, route.parent, paramsInheritanceStrategy).resolve;\n return of(void 0);\n }\n }), tap(() => routesProcessed++), takeLast(1), mergeMap(_ => routesProcessed === routesNeedingDataUpdates.size ? of(t) : EMPTY));\n });\n}\n/**\n * Returns the `ActivatedRouteSnapshot` tree as an array, using DFS to traverse the route tree.\n */\nfunction flattenRouteTree(route) {\n const descendants = route.children.map(child => flattenRouteTree(child)).flat();\n return [route, ...descendants];\n}\nfunction runResolve(futureARS, futureRSS, paramsInheritanceStrategy, injector) {\n const config = futureARS.routeConfig;\n const resolve = futureARS._resolve;\n if (config?.title !== undefined && !hasStaticTitle(config)) {\n resolve[RouteTitleKey] = config.title;\n }\n return resolveNode(resolve, futureARS, futureRSS, injector).pipe(map(resolvedData => {\n futureARS._resolvedData = resolvedData;\n futureARS.data = getInherited(futureARS, futureARS.parent, paramsInheritanceStrategy).resolve;\n return null;\n }));\n}\nfunction resolveNode(resolve, futureARS, futureRSS, injector) {\n const keys = getDataKeys(resolve);\n if (keys.length === 0) {\n return of({});\n }\n const data = {};\n return from(keys).pipe(mergeMap(key => getResolver(resolve[key], futureARS, futureRSS, injector).pipe(first(), tap(value => {\n data[key] = value;\n }))), takeLast(1), mapTo(data), catchError(e => isEmptyError(e) ? EMPTY : throwError(e)));\n}\nfunction getResolver(injectionToken, futureARS, futureRSS, injector) {\n const closestInjector = getClosestRouteInjector(futureARS) ?? injector;\n const resolver = getTokenOrFunctionIdentity(injectionToken, closestInjector);\n const resolverValue = resolver.resolve ? resolver.resolve(futureARS, futureRSS) : runInInjectionContext(closestInjector, () => resolver(futureARS, futureRSS));\n return wrapIntoObservable(resolverValue);\n}\n\n/**\n * Perform a side effect through a switchMap for every emission on the source Observable,\n * but return an Observable that is identical to the source. It's essentially the same as\n * the `tap` operator, but if the side effectful `next` function returns an ObservableInput,\n * it will wait before continuing with the original value.\n */\nfunction switchTap(next) {\n return switchMap(v => {\n const nextResult = next(v);\n if (nextResult) {\n return from(nextResult).pipe(map(() => v));\n }\n return of(v);\n });\n}\n\n/**\n * Provides a strategy for setting the page title after a router navigation.\n *\n * The built-in implementation traverses the router state snapshot and finds the deepest primary\n * outlet with `title` property. Given the `Routes` below, navigating to\n * `/base/child(popup:aux)` would result in the document title being set to \"child\".\n * ```\n * [\n * {path: 'base', title: 'base', children: [\n * {path: 'child', title: 'child'},\n * ],\n * {path: 'aux', outlet: 'popup', title: 'popupTitle'}\n * ]\n * ```\n *\n * This class can be used as a base class for custom title strategies. That is, you can create your\n * own class that extends the `TitleStrategy`. Note that in the above example, the `title`\n * from the named outlet is never used. However, a custom strategy might be implemented to\n * incorporate titles in named outlets.\n *\n * @publicApi\n * @see [Page title guide](guide/router#setting-the-page-title)\n */\nclass TitleStrategy {\n /**\n * @returns The `title` of the deepest primary route.\n */\n buildTitle(snapshot) {\n let pageTitle;\n let route = snapshot.root;\n while (route !== undefined) {\n pageTitle = this.getResolvedTitleForRoute(route) ?? pageTitle;\n route = route.children.find(child => child.outlet === PRIMARY_OUTLET);\n }\n return pageTitle;\n }\n /**\n * Given an `ActivatedRouteSnapshot`, returns the final value of the\n * `Route.title` property, which can either be a static string or a resolved value.\n */\n getResolvedTitleForRoute(snapshot) {\n return snapshot.data[RouteTitleKey];\n }\n static {\n this.ɵfac = function TitleStrategy_Factory(t) {\n return new (t || TitleStrategy)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: TitleStrategy,\n factory: () => (() => inject(DefaultTitleStrategy))(),\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(TitleStrategy, [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: () => inject(DefaultTitleStrategy)\n }]\n }], null, null);\n})();\n/**\n * The default `TitleStrategy` used by the router that updates the title using the `Title` service.\n */\nclass DefaultTitleStrategy extends TitleStrategy {\n constructor(title) {\n super();\n this.title = title;\n }\n /**\n * Sets the title of the browser to the given value.\n *\n * @param title The `pageTitle` from the deepest primary route.\n */\n updateTitle(snapshot) {\n const title = this.buildTitle(snapshot);\n if (title !== undefined) {\n this.title.setTitle(title);\n }\n }\n static {\n this.ɵfac = function DefaultTitleStrategy_Factory(t) {\n return new (t || DefaultTitleStrategy)(i0.ɵɵinject(i1.Title));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DefaultTitleStrategy,\n factory: DefaultTitleStrategy.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DefaultTitleStrategy, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: i1.Title\n }], null);\n})();\n\n/**\n * A [DI token](guide/glossary/#di-token) for the router service.\n *\n * @publicApi\n */\nconst ROUTER_CONFIGURATION = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'router config' : '', {\n providedIn: 'root',\n factory: () => ({})\n});\n\n/**\n * The [DI token](guide/glossary/#di-token) for a router configuration.\n *\n * `ROUTES` is a low level API for router configuration via dependency injection.\n *\n * We recommend that in almost all cases to use higher level APIs such as `RouterModule.forRoot()`,\n * `provideRouter`, or `Router.resetConfig()`.\n *\n * @publicApi\n */\nconst ROUTES = new InjectionToken('ROUTES');\nclass RouterConfigLoader {\n constructor() {\n this.componentLoaders = new WeakMap();\n this.childrenLoaders = new WeakMap();\n this.compiler = inject(Compiler);\n }\n loadComponent(route) {\n if (this.componentLoaders.get(route)) {\n return this.componentLoaders.get(route);\n } else if (route._loadedComponent) {\n return of(route._loadedComponent);\n }\n if (this.onLoadStartListener) {\n this.onLoadStartListener(route);\n }\n const loadRunner = wrapIntoObservable(route.loadComponent()).pipe(map(maybeUnwrapDefaultExport), tap(component => {\n if (this.onLoadEndListener) {\n this.onLoadEndListener(route);\n }\n (typeof ngDevMode === 'undefined' || ngDevMode) && assertStandalone(route.path ?? '', component);\n route._loadedComponent = component;\n }), finalize(() => {\n this.componentLoaders.delete(route);\n }));\n // Use custom ConnectableObservable as share in runners pipe increasing the bundle size too much\n const loader = new ConnectableObservable(loadRunner, () => new Subject()).pipe(refCount());\n this.componentLoaders.set(route, loader);\n return loader;\n }\n loadChildren(parentInjector, route) {\n if (this.childrenLoaders.get(route)) {\n return this.childrenLoaders.get(route);\n } else if (route._loadedRoutes) {\n return of({\n routes: route._loadedRoutes,\n injector: route._loadedInjector\n });\n }\n if (this.onLoadStartListener) {\n this.onLoadStartListener(route);\n }\n const moduleFactoryOrRoutes$ = loadChildren(route, this.compiler, parentInjector, this.onLoadEndListener);\n const loadRunner = moduleFactoryOrRoutes$.pipe(finalize(() => {\n this.childrenLoaders.delete(route);\n }));\n // Use custom ConnectableObservable as share in runners pipe increasing the bundle size too much\n const loader = new ConnectableObservable(loadRunner, () => new Subject()).pipe(refCount());\n this.childrenLoaders.set(route, loader);\n return loader;\n }\n static {\n this.ɵfac = function RouterConfigLoader_Factory(t) {\n return new (t || RouterConfigLoader)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RouterConfigLoader,\n factory: RouterConfigLoader.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RouterConfigLoader, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\n/**\n * Executes a `route.loadChildren` callback and converts the result to an array of child routes and\n * an injector if that callback returned a module.\n *\n * This function is used for the route discovery during prerendering\n * in @angular-devkit/build-angular. If there are any updates to the contract here, it will require\n * an update to the extractor.\n */\nfunction loadChildren(route, compiler, parentInjector, onLoadEndListener) {\n return wrapIntoObservable(route.loadChildren()).pipe(map(maybeUnwrapDefaultExport), mergeMap(t => {\n if (t instanceof NgModuleFactory || Array.isArray(t)) {\n return of(t);\n } else {\n return from(compiler.compileModuleAsync(t));\n }\n }), map(factoryOrRoutes => {\n if (onLoadEndListener) {\n onLoadEndListener(route);\n }\n // This injector comes from the `NgModuleRef` when lazy loading an `NgModule`. There is\n // no injector associated with lazy loading a `Route` array.\n let injector;\n let rawRoutes;\n let requireStandaloneComponents = false;\n if (Array.isArray(factoryOrRoutes)) {\n rawRoutes = factoryOrRoutes;\n requireStandaloneComponents = true;\n } else {\n injector = factoryOrRoutes.create(parentInjector).injector;\n // When loading a module that doesn't provide `RouterModule.forChild()` preloader\n // will get stuck in an infinite loop. The child module's Injector will look to\n // its parent `Injector` when it doesn't find any ROUTES so it will return routes\n // for it's parent module instead.\n rawRoutes = injector.get(ROUTES, [], {\n optional: true,\n self: true\n }).flat();\n }\n const routes = rawRoutes.map(standardizeConfig);\n (typeof ngDevMode === 'undefined' || ngDevMode) && validateConfig(routes, route.path, requireStandaloneComponents);\n return {\n routes,\n injector\n };\n }));\n}\nfunction isWrappedDefaultExport(value) {\n // We use `in` here with a string key `'default'`, because we expect `DefaultExport` objects to be\n // dynamically imported ES modules with a spec-mandated `default` key. Thus we don't expect that\n // `default` will be a renamed property.\n return value && typeof value === 'object' && 'default' in value;\n}\nfunction maybeUnwrapDefaultExport(input) {\n // As per `isWrappedDefaultExport`, the `default` key here is generated by the browser and not\n // subject to property renaming, so we reference it with bracket access.\n return isWrappedDefaultExport(input) ? input['default'] : input;\n}\n\n/**\n * @description\n *\n * Provides a way to migrate AngularJS applications to Angular.\n *\n * @publicApi\n */\nclass UrlHandlingStrategy {\n static {\n this.ɵfac = function UrlHandlingStrategy_Factory(t) {\n return new (t || UrlHandlingStrategy)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: UrlHandlingStrategy,\n factory: () => (() => inject(DefaultUrlHandlingStrategy))(),\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(UrlHandlingStrategy, [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: () => inject(DefaultUrlHandlingStrategy)\n }]\n }], null, null);\n})();\n/**\n * @publicApi\n */\nclass DefaultUrlHandlingStrategy {\n shouldProcessUrl(url) {\n return true;\n }\n extract(url) {\n return url;\n }\n merge(newUrlPart, wholeUrl) {\n return newUrlPart;\n }\n static {\n this.ɵfac = function DefaultUrlHandlingStrategy_Factory(t) {\n return new (t || DefaultUrlHandlingStrategy)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DefaultUrlHandlingStrategy,\n factory: DefaultUrlHandlingStrategy.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DefaultUrlHandlingStrategy, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\n\n/// \nconst CREATE_VIEW_TRANSITION = new InjectionToken(ngDevMode ? 'view transition helper' : '');\nconst VIEW_TRANSITION_OPTIONS = new InjectionToken(ngDevMode ? 'view transition options' : '');\n/**\n * A helper function for using browser view transitions. This function skips the call to\n * `startViewTransition` if the browser does not support it.\n *\n * @returns A Promise that resolves when the view transition callback begins.\n */\nfunction createViewTransition(injector, from, to) {\n const transitionOptions = injector.get(VIEW_TRANSITION_OPTIONS);\n const document = injector.get(DOCUMENT);\n // Create promises outside the Angular zone to avoid causing extra change detections\n return injector.get(NgZone).runOutsideAngular(() => {\n if (!document.startViewTransition || transitionOptions.skipNextTransition) {\n transitionOptions.skipNextTransition = false;\n return Promise.resolve();\n }\n let resolveViewTransitionStarted;\n const viewTransitionStarted = new Promise(resolve => {\n resolveViewTransitionStarted = resolve;\n });\n const transition = document.startViewTransition(() => {\n resolveViewTransitionStarted();\n // We don't actually update dom within the transition callback. The resolving of the above\n // promise unblocks the Router navigation, which synchronously activates and deactivates\n // routes (the DOM update). This view transition waits for the next change detection to\n // complete (below), which includes the update phase of the routed components.\n return createRenderPromise(injector);\n });\n const {\n onViewTransitionCreated\n } = transitionOptions;\n if (onViewTransitionCreated) {\n runInInjectionContext(injector, () => onViewTransitionCreated({\n transition,\n from,\n to\n }));\n }\n return viewTransitionStarted;\n });\n}\n/**\n * Creates a promise that resolves after next render.\n */\nfunction createRenderPromise(injector) {\n return new Promise(resolve => {\n afterNextRender(resolve, {\n injector\n });\n });\n}\nclass NavigationTransitions {\n get hasRequestedNavigation() {\n return this.navigationId !== 0;\n }\n constructor() {\n this.currentNavigation = null;\n this.currentTransition = null;\n this.lastSuccessfulNavigation = null;\n /**\n * These events are used to communicate back to the Router about the state of the transition. The\n * Router wants to respond to these events in various ways. Because the `NavigationTransition`\n * class is not public, this event subject is not publicly exposed.\n */\n this.events = new Subject();\n /**\n * Used to abort the current transition with an error.\n */\n this.transitionAbortSubject = new Subject();\n this.configLoader = inject(RouterConfigLoader);\n this.environmentInjector = inject(EnvironmentInjector);\n this.urlSerializer = inject(UrlSerializer);\n this.rootContexts = inject(ChildrenOutletContexts);\n this.location = inject(Location);\n this.inputBindingEnabled = inject(INPUT_BINDER, {\n optional: true\n }) !== null;\n this.titleStrategy = inject(TitleStrategy);\n this.options = inject(ROUTER_CONFIGURATION, {\n optional: true\n }) || {};\n this.paramsInheritanceStrategy = this.options.paramsInheritanceStrategy || 'emptyOnly';\n this.urlHandlingStrategy = inject(UrlHandlingStrategy);\n this.createViewTransition = inject(CREATE_VIEW_TRANSITION, {\n optional: true\n });\n this.navigationId = 0;\n /**\n * Hook that enables you to pause navigation after the preactivation phase.\n * Used by `RouterModule`.\n *\n * @internal\n */\n this.afterPreactivation = () => of(void 0);\n /** @internal */\n this.rootComponentType = null;\n const onLoadStart = r => this.events.next(new RouteConfigLoadStart(r));\n const onLoadEnd = r => this.events.next(new RouteConfigLoadEnd(r));\n this.configLoader.onLoadEndListener = onLoadEnd;\n this.configLoader.onLoadStartListener = onLoadStart;\n }\n complete() {\n this.transitions?.complete();\n }\n handleNavigationRequest(request) {\n const id = ++this.navigationId;\n this.transitions?.next({\n ...this.transitions.value,\n ...request,\n id\n });\n }\n setupNavigations(router, initialUrlTree, initialRouterState) {\n this.transitions = new BehaviorSubject({\n id: 0,\n currentUrlTree: initialUrlTree,\n currentRawUrl: initialUrlTree,\n extractedUrl: this.urlHandlingStrategy.extract(initialUrlTree),\n urlAfterRedirects: this.urlHandlingStrategy.extract(initialUrlTree),\n rawUrl: initialUrlTree,\n extras: {},\n resolve: null,\n reject: null,\n promise: Promise.resolve(true),\n source: IMPERATIVE_NAVIGATION,\n restoredState: null,\n currentSnapshot: initialRouterState.snapshot,\n targetSnapshot: null,\n currentRouterState: initialRouterState,\n targetRouterState: null,\n guards: {\n canActivateChecks: [],\n canDeactivateChecks: []\n },\n guardsResult: null\n });\n return this.transitions.pipe(filter(t => t.id !== 0),\n // Extract URL\n map(t => ({\n ...t,\n extractedUrl: this.urlHandlingStrategy.extract(t.rawUrl)\n })),\n // Using switchMap so we cancel executing navigations when a new one comes in\n switchMap(overallTransitionState => {\n this.currentTransition = overallTransitionState;\n let completed = false;\n let errored = false;\n return of(overallTransitionState).pipe(\n // Store the Navigation object\n tap(t => {\n this.currentNavigation = {\n id: t.id,\n initialUrl: t.rawUrl,\n extractedUrl: t.extractedUrl,\n trigger: t.source,\n extras: t.extras,\n previousNavigation: !this.lastSuccessfulNavigation ? null : {\n ...this.lastSuccessfulNavigation,\n previousNavigation: null\n }\n };\n }), switchMap(t => {\n const urlTransition = !router.navigated || this.isUpdatingInternalState() || this.isUpdatedBrowserUrl();\n const onSameUrlNavigation = t.extras.onSameUrlNavigation ?? router.onSameUrlNavigation;\n if (!urlTransition && onSameUrlNavigation !== 'reload') {\n const reason = typeof ngDevMode === 'undefined' || ngDevMode ? `Navigation to ${t.rawUrl} was ignored because it is the same as the current Router URL.` : '';\n this.events.next(new NavigationSkipped(t.id, this.urlSerializer.serialize(t.rawUrl), reason, 0 /* NavigationSkippedCode.IgnoredSameUrlNavigation */));\n t.resolve(null);\n return EMPTY;\n }\n if (this.urlHandlingStrategy.shouldProcessUrl(t.rawUrl)) {\n return of(t).pipe(\n // Fire NavigationStart event\n switchMap(t => {\n const transition = this.transitions?.getValue();\n this.events.next(new NavigationStart(t.id, this.urlSerializer.serialize(t.extractedUrl), t.source, t.restoredState));\n if (transition !== this.transitions?.getValue()) {\n return EMPTY;\n }\n // This delay is required to match old behavior that forced\n // navigation to always be async\n return Promise.resolve(t);\n }),\n // Recognize\n recognize(this.environmentInjector, this.configLoader, this.rootComponentType, router.config, this.urlSerializer, this.paramsInheritanceStrategy),\n // Update URL if in `eager` update mode\n tap(t => {\n overallTransitionState.targetSnapshot = t.targetSnapshot;\n overallTransitionState.urlAfterRedirects = t.urlAfterRedirects;\n this.currentNavigation = {\n ...this.currentNavigation,\n finalUrl: t.urlAfterRedirects\n };\n // Fire RoutesRecognized\n const routesRecognized = new RoutesRecognized(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects), t.targetSnapshot);\n this.events.next(routesRecognized);\n }));\n } else if (urlTransition && this.urlHandlingStrategy.shouldProcessUrl(t.currentRawUrl)) {\n /* When the current URL shouldn't be processed, but the previous one\n * was, we handle this \"error condition\" by navigating to the\n * previously successful URL, but leaving the URL intact.*/\n const {\n id,\n extractedUrl,\n source,\n restoredState,\n extras\n } = t;\n const navStart = new NavigationStart(id, this.urlSerializer.serialize(extractedUrl), source, restoredState);\n this.events.next(navStart);\n const targetSnapshot = createEmptyState(extractedUrl, this.rootComponentType).snapshot;\n this.currentTransition = overallTransitionState = {\n ...t,\n targetSnapshot,\n urlAfterRedirects: extractedUrl,\n extras: {\n ...extras,\n skipLocationChange: false,\n replaceUrl: false\n }\n };\n this.currentNavigation.finalUrl = extractedUrl;\n return of(overallTransitionState);\n } else {\n /* When neither the current or previous URL can be processed, do\n * nothing other than update router's internal reference to the\n * current \"settled\" URL. This way the next navigation will be coming\n * from the current URL in the browser.\n */\n const reason = typeof ngDevMode === 'undefined' || ngDevMode ? `Navigation was ignored because the UrlHandlingStrategy` + ` indicated neither the current URL ${t.currentRawUrl} nor target URL ${t.rawUrl} should be processed.` : '';\n this.events.next(new NavigationSkipped(t.id, this.urlSerializer.serialize(t.extractedUrl), reason, 1 /* NavigationSkippedCode.IgnoredByUrlHandlingStrategy */));\n t.resolve(null);\n return EMPTY;\n }\n }),\n // --- GUARDS ---\n tap(t => {\n const guardsStart = new GuardsCheckStart(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects), t.targetSnapshot);\n this.events.next(guardsStart);\n }), map(t => {\n this.currentTransition = overallTransitionState = {\n ...t,\n guards: getAllRouteGuards(t.targetSnapshot, t.currentSnapshot, this.rootContexts)\n };\n return overallTransitionState;\n }), checkGuards(this.environmentInjector, evt => this.events.next(evt)), tap(t => {\n overallTransitionState.guardsResult = t.guardsResult;\n if (isUrlTree(t.guardsResult)) {\n throw redirectingNavigationError(this.urlSerializer, t.guardsResult);\n }\n const guardsEnd = new GuardsCheckEnd(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects), t.targetSnapshot, !!t.guardsResult);\n this.events.next(guardsEnd);\n }), filter(t => {\n if (!t.guardsResult) {\n this.cancelNavigationTransition(t, '', 3 /* NavigationCancellationCode.GuardRejected */);\n return false;\n }\n return true;\n }),\n // --- RESOLVE ---\n switchTap(t => {\n if (t.guards.canActivateChecks.length) {\n return of(t).pipe(tap(t => {\n const resolveStart = new ResolveStart(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects), t.targetSnapshot);\n this.events.next(resolveStart);\n }), switchMap(t => {\n let dataResolved = false;\n return of(t).pipe(resolveData(this.paramsInheritanceStrategy, this.environmentInjector), tap({\n next: () => dataResolved = true,\n complete: () => {\n if (!dataResolved) {\n this.cancelNavigationTransition(t, typeof ngDevMode === 'undefined' || ngDevMode ? `At least one route resolver didn't emit any value.` : '', 2 /* NavigationCancellationCode.NoDataFromResolver */);\n }\n }\n }));\n }), tap(t => {\n const resolveEnd = new ResolveEnd(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects), t.targetSnapshot);\n this.events.next(resolveEnd);\n }));\n }\n return undefined;\n }),\n // --- LOAD COMPONENTS ---\n switchTap(t => {\n const loadComponents = route => {\n const loaders = [];\n if (route.routeConfig?.loadComponent && !route.routeConfig._loadedComponent) {\n loaders.push(this.configLoader.loadComponent(route.routeConfig).pipe(tap(loadedComponent => {\n route.component = loadedComponent;\n }), map(() => void 0)));\n }\n for (const child of route.children) {\n loaders.push(...loadComponents(child));\n }\n return loaders;\n };\n return combineLatest(loadComponents(t.targetSnapshot.root)).pipe(defaultIfEmpty(), take(1));\n }), switchTap(() => this.afterPreactivation()), switchMap(() => {\n const {\n currentSnapshot,\n targetSnapshot\n } = overallTransitionState;\n const viewTransitionStarted = this.createViewTransition?.(this.environmentInjector, currentSnapshot.root, targetSnapshot.root);\n // If view transitions are enabled, block the navigation until the view\n // transition callback starts. Otherwise, continue immediately.\n return viewTransitionStarted ? from(viewTransitionStarted).pipe(map(() => overallTransitionState)) : of(overallTransitionState);\n }), map(t => {\n const targetRouterState = createRouterState(router.routeReuseStrategy, t.targetSnapshot, t.currentRouterState);\n this.currentTransition = overallTransitionState = {\n ...t,\n targetRouterState\n };\n this.currentNavigation.targetRouterState = targetRouterState;\n return overallTransitionState;\n }), tap(() => {\n this.events.next(new BeforeActivateRoutes());\n }), activateRoutes(this.rootContexts, router.routeReuseStrategy, evt => this.events.next(evt), this.inputBindingEnabled),\n // Ensure that if some observable used to drive the transition doesn't\n // complete, the navigation still finalizes This should never happen, but\n // this is done as a safety measure to avoid surfacing this error (#49567).\n take(1), tap({\n next: t => {\n completed = true;\n this.lastSuccessfulNavigation = this.currentNavigation;\n this.events.next(new NavigationEnd(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects)));\n this.titleStrategy?.updateTitle(t.targetRouterState.snapshot);\n t.resolve(true);\n },\n complete: () => {\n completed = true;\n }\n }),\n // There used to be a lot more logic happening directly within the\n // transition Observable. Some of this logic has been refactored out to\n // other places but there may still be errors that happen there. This gives\n // us a way to cancel the transition from the outside. This may also be\n // required in the future to support something like the abort signal of the\n // Navigation API where the navigation gets aborted from outside the\n // transition.\n takeUntil(this.transitionAbortSubject.pipe(tap(err => {\n throw err;\n }))), finalize(() => {\n /* When the navigation stream finishes either through error or success,\n * we set the `completed` or `errored` flag. However, there are some\n * situations where we could get here without either of those being set.\n * For instance, a redirect during NavigationStart. Therefore, this is a\n * catch-all to make sure the NavigationCancel event is fired when a\n * navigation gets cancelled but not caught by other means. */\n if (!completed && !errored) {\n const cancelationReason = typeof ngDevMode === 'undefined' || ngDevMode ? `Navigation ID ${overallTransitionState.id} is not equal to the current navigation id ${this.navigationId}` : '';\n this.cancelNavigationTransition(overallTransitionState, cancelationReason, 1 /* NavigationCancellationCode.SupersededByNewNavigation */);\n }\n // Only clear current navigation if it is still set to the one that\n // finalized.\n if (this.currentNavigation?.id === overallTransitionState.id) {\n this.currentNavigation = null;\n }\n }), catchError(e => {\n errored = true;\n /* This error type is issued during Redirect, and is handled as a\n * cancellation rather than an error. */\n if (isNavigationCancelingError$1(e)) {\n this.events.next(new NavigationCancel(overallTransitionState.id, this.urlSerializer.serialize(overallTransitionState.extractedUrl), e.message, e.cancellationCode));\n // When redirecting, we need to delay resolving the navigation\n // promise and push it to the redirect navigation\n if (!isRedirectingNavigationCancelingError$1(e)) {\n overallTransitionState.resolve(false);\n } else {\n this.events.next(new RedirectRequest(e.url));\n }\n /* All other errors should reset to the router's internal URL reference\n * to the pre-error state. */\n } else {\n this.events.next(new NavigationError(overallTransitionState.id, this.urlSerializer.serialize(overallTransitionState.extractedUrl), e, overallTransitionState.targetSnapshot ?? undefined));\n try {\n overallTransitionState.resolve(router.errorHandler(e));\n } catch (ee) {\n overallTransitionState.reject(ee);\n }\n }\n return EMPTY;\n }));\n // casting because `pipe` returns observable({}) when called with 8+ arguments\n }));\n }\n\n cancelNavigationTransition(t, reason, code) {\n const navCancel = new NavigationCancel(t.id, this.urlSerializer.serialize(t.extractedUrl), reason, code);\n this.events.next(navCancel);\n t.resolve(false);\n }\n /**\n * @returns Whether we're navigating to somewhere that is not what the Router is\n * currently set to.\n */\n isUpdatingInternalState() {\n // TODO(atscott): The serializer should likely be used instead of\n // `UrlTree.toString()`. Custom serializers are often written to handle\n // things better than the default one (objects, for example will be\n // [Object object] with the custom serializer and be \"the same\" when they\n // aren't).\n // (Same for isUpdatedBrowserUrl)\n return this.currentTransition?.extractedUrl.toString() !== this.currentTransition?.currentUrlTree.toString();\n }\n /**\n * @returns Whether we're updating the browser URL to something new (navigation is going\n * to somewhere not displayed in the URL bar and we will update the URL\n * bar if navigation succeeds).\n */\n isUpdatedBrowserUrl() {\n // The extracted URL is the part of the URL that this application cares about. `extract` may\n // return only part of the browser URL and that part may have not changed even if some other\n // portion of the URL did.\n const extractedBrowserUrl = this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(true)));\n return extractedBrowserUrl.toString() !== this.currentTransition?.extractedUrl.toString() && !this.currentTransition?.extras.skipLocationChange;\n }\n static {\n this.ɵfac = function NavigationTransitions_Factory(t) {\n return new (t || NavigationTransitions)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NavigationTransitions,\n factory: NavigationTransitions.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NavigationTransitions, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [], null);\n})();\nfunction isBrowserTriggeredNavigation(source) {\n return source !== IMPERATIVE_NAVIGATION;\n}\n\n/**\n * @description\n *\n * Provides a way to customize when activated routes get reused.\n *\n * @publicApi\n */\nclass RouteReuseStrategy {\n static {\n this.ɵfac = function RouteReuseStrategy_Factory(t) {\n return new (t || RouteReuseStrategy)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RouteReuseStrategy,\n factory: () => (() => inject(DefaultRouteReuseStrategy))(),\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RouteReuseStrategy, [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: () => inject(DefaultRouteReuseStrategy)\n }]\n }], null, null);\n})();\n/**\n * @description\n *\n * This base route reuse strategy only reuses routes when the matched router configs are\n * identical. This prevents components from being destroyed and recreated\n * when just the route parameters, query parameters or fragment change\n * (that is, the existing component is _reused_).\n *\n * This strategy does not store any routes for later reuse.\n *\n * Angular uses this strategy by default.\n *\n *\n * It can be used as a base class for custom route reuse strategies, i.e. you can create your own\n * class that extends the `BaseRouteReuseStrategy` one.\n * @publicApi\n */\nclass BaseRouteReuseStrategy {\n /**\n * Whether the given route should detach for later reuse.\n * Always returns false for `BaseRouteReuseStrategy`.\n * */\n shouldDetach(route) {\n return false;\n }\n /**\n * A no-op; the route is never stored since this strategy never detaches routes for later re-use.\n */\n store(route, detachedTree) {}\n /** Returns `false`, meaning the route (and its subtree) is never reattached */\n shouldAttach(route) {\n return false;\n }\n /** Returns `null` because this strategy does not store routes for later re-use. */\n retrieve(route) {\n return null;\n }\n /**\n * Determines if a route should be reused.\n * This strategy returns `true` when the future route config and current route config are\n * identical.\n */\n shouldReuseRoute(future, curr) {\n return future.routeConfig === curr.routeConfig;\n }\n}\nclass DefaultRouteReuseStrategy extends BaseRouteReuseStrategy {\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵDefaultRouteReuseStrategy_BaseFactory;\n return function DefaultRouteReuseStrategy_Factory(t) {\n return (ɵDefaultRouteReuseStrategy_BaseFactory || (ɵDefaultRouteReuseStrategy_BaseFactory = i0.ɵɵgetInheritedFactory(DefaultRouteReuseStrategy)))(t || DefaultRouteReuseStrategy);\n };\n })();\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DefaultRouteReuseStrategy,\n factory: DefaultRouteReuseStrategy.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DefaultRouteReuseStrategy, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\nclass StateManager {\n static {\n this.ɵfac = function StateManager_Factory(t) {\n return new (t || StateManager)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: StateManager,\n factory: () => (() => inject(HistoryStateManager))(),\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(StateManager, [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: () => inject(HistoryStateManager)\n }]\n }], null, null);\n})();\nclass HistoryStateManager extends StateManager {\n constructor() {\n super(...arguments);\n this.location = inject(Location);\n this.urlSerializer = inject(UrlSerializer);\n this.options = inject(ROUTER_CONFIGURATION, {\n optional: true\n }) || {};\n this.canceledNavigationResolution = this.options.canceledNavigationResolution || 'replace';\n this.urlHandlingStrategy = inject(UrlHandlingStrategy);\n this.urlUpdateStrategy = this.options.urlUpdateStrategy || 'deferred';\n this.currentUrlTree = new UrlTree();\n this.rawUrlTree = this.currentUrlTree;\n /**\n * The id of the currently active page in the router.\n * Updated to the transition's target id on a successful navigation.\n *\n * This is used to track what page the router last activated. When an attempted navigation fails,\n * the router can then use this to compute how to restore the state back to the previously active\n * page.\n */\n this.currentPageId = 0;\n this.lastSuccessfulId = -1;\n this.routerState = createEmptyState(this.currentUrlTree, null);\n this.stateMemento = this.createStateMemento();\n }\n getCurrentUrlTree() {\n return this.currentUrlTree;\n }\n getRawUrlTree() {\n return this.rawUrlTree;\n }\n restoredState() {\n return this.location.getState();\n }\n /**\n * The ɵrouterPageId of whatever page is currently active in the browser history. This is\n * important for computing the target page id for new navigations because we need to ensure each\n * page id in the browser history is 1 more than the previous entry.\n */\n get browserPageId() {\n if (this.canceledNavigationResolution !== 'computed') {\n return this.currentPageId;\n }\n return this.restoredState()?.ɵrouterPageId ?? this.currentPageId;\n }\n getRouterState() {\n return this.routerState;\n }\n createStateMemento() {\n return {\n rawUrlTree: this.rawUrlTree,\n currentUrlTree: this.currentUrlTree,\n routerState: this.routerState\n };\n }\n registerNonRouterCurrentEntryChangeListener(listener) {\n return this.location.subscribe(event => {\n if (event['type'] === 'popstate') {\n listener(event['url'], event.state);\n }\n });\n }\n handleRouterEvent(e, currentTransition) {\n if (e instanceof NavigationStart) {\n this.stateMemento = this.createStateMemento();\n } else if (e instanceof NavigationSkipped) {\n this.rawUrlTree = currentTransition.initialUrl;\n } else if (e instanceof RoutesRecognized) {\n if (this.urlUpdateStrategy === 'eager') {\n if (!currentTransition.extras.skipLocationChange) {\n const rawUrl = this.urlHandlingStrategy.merge(currentTransition.finalUrl, currentTransition.initialUrl);\n this.setBrowserUrl(rawUrl, currentTransition);\n }\n }\n } else if (e instanceof BeforeActivateRoutes) {\n this.currentUrlTree = currentTransition.finalUrl;\n this.rawUrlTree = this.urlHandlingStrategy.merge(currentTransition.finalUrl, currentTransition.initialUrl);\n this.routerState = currentTransition.targetRouterState;\n if (this.urlUpdateStrategy === 'deferred') {\n if (!currentTransition.extras.skipLocationChange) {\n this.setBrowserUrl(this.rawUrlTree, currentTransition);\n }\n }\n } else if (e instanceof NavigationCancel && (e.code === 3 /* NavigationCancellationCode.GuardRejected */ || e.code === 2 /* NavigationCancellationCode.NoDataFromResolver */)) {\n this.restoreHistory(currentTransition);\n } else if (e instanceof NavigationError) {\n this.restoreHistory(currentTransition, true);\n } else if (e instanceof NavigationEnd) {\n this.lastSuccessfulId = e.id;\n this.currentPageId = this.browserPageId;\n }\n }\n setBrowserUrl(url, transition) {\n const path = this.urlSerializer.serialize(url);\n if (this.location.isCurrentPathEqualTo(path) || !!transition.extras.replaceUrl) {\n // replacements do not update the target page\n const currentBrowserPageId = this.browserPageId;\n const state = {\n ...transition.extras.state,\n ...this.generateNgRouterState(transition.id, currentBrowserPageId)\n };\n this.location.replaceState(path, '', state);\n } else {\n const state = {\n ...transition.extras.state,\n ...this.generateNgRouterState(transition.id, this.browserPageId + 1)\n };\n this.location.go(path, '', state);\n }\n }\n /**\n * Performs the necessary rollback action to restore the browser URL to the\n * state before the transition.\n */\n restoreHistory(navigation, restoringFromCaughtError = false) {\n if (this.canceledNavigationResolution === 'computed') {\n const currentBrowserPageId = this.browserPageId;\n const targetPagePosition = this.currentPageId - currentBrowserPageId;\n if (targetPagePosition !== 0) {\n this.location.historyGo(targetPagePosition);\n } else if (this.currentUrlTree === navigation.finalUrl && targetPagePosition === 0) {\n // We got to the activation stage (where currentUrlTree is set to the navigation's\n // finalUrl), but we weren't moving anywhere in history (skipLocationChange or replaceUrl).\n // We still need to reset the router state back to what it was when the navigation started.\n this.resetState(navigation);\n this.resetUrlToCurrentUrlTree();\n } else {\n // The browser URL and router state was not updated before the navigation cancelled so\n // there's no restoration needed.\n }\n } else if (this.canceledNavigationResolution === 'replace') {\n // TODO(atscott): It seems like we should _always_ reset the state here. It would be a no-op\n // for `deferred` navigations that haven't change the internal state yet because guards\n // reject. For 'eager' navigations, it seems like we also really should reset the state\n // because the navigation was cancelled. Investigate if this can be done by running TGP.\n if (restoringFromCaughtError) {\n this.resetState(navigation);\n }\n this.resetUrlToCurrentUrlTree();\n }\n }\n resetState(navigation) {\n this.routerState = this.stateMemento.routerState;\n this.currentUrlTree = this.stateMemento.currentUrlTree;\n // Note here that we use the urlHandlingStrategy to get the reset `rawUrlTree` because it may be\n // configured to handle only part of the navigation URL. This means we would only want to reset\n // the part of the navigation handled by the Angular router rather than the whole URL. In\n // addition, the URLHandlingStrategy may be configured to specifically preserve parts of the URL\n // when merging, such as the query params so they are not lost on a refresh.\n this.rawUrlTree = this.urlHandlingStrategy.merge(this.currentUrlTree, navigation.finalUrl ?? this.rawUrlTree);\n }\n resetUrlToCurrentUrlTree() {\n this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree), '', this.generateNgRouterState(this.lastSuccessfulId, this.currentPageId));\n }\n generateNgRouterState(navigationId, routerPageId) {\n if (this.canceledNavigationResolution === 'computed') {\n return {\n navigationId,\n ɵrouterPageId: routerPageId\n };\n }\n return {\n navigationId\n };\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵHistoryStateManager_BaseFactory;\n return function HistoryStateManager_Factory(t) {\n return (ɵHistoryStateManager_BaseFactory || (ɵHistoryStateManager_BaseFactory = i0.ɵɵgetInheritedFactory(HistoryStateManager)))(t || HistoryStateManager);\n };\n })();\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HistoryStateManager,\n factory: HistoryStateManager.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(HistoryStateManager, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\nvar NavigationResult;\n(function (NavigationResult) {\n NavigationResult[NavigationResult[\"COMPLETE\"] = 0] = \"COMPLETE\";\n NavigationResult[NavigationResult[\"FAILED\"] = 1] = \"FAILED\";\n NavigationResult[NavigationResult[\"REDIRECTING\"] = 2] = \"REDIRECTING\";\n})(NavigationResult || (NavigationResult = {}));\n/**\n * Performs the given action once the router finishes its next/current navigation.\n *\n * The navigation is considered complete under the following conditions:\n * - `NavigationCancel` event emits and the code is not `NavigationCancellationCode.Redirect` or\n * `NavigationCancellationCode.SupersededByNewNavigation`. In these cases, the\n * redirecting/superseding navigation must finish.\n * - `NavigationError`, `NavigationEnd`, or `NavigationSkipped` event emits\n */\nfunction afterNextNavigation(router, action) {\n router.events.pipe(filter(e => e instanceof NavigationEnd || e instanceof NavigationCancel || e instanceof NavigationError || e instanceof NavigationSkipped), map(e => {\n if (e instanceof NavigationEnd || e instanceof NavigationSkipped) {\n return NavigationResult.COMPLETE;\n }\n const redirecting = e instanceof NavigationCancel ? e.code === 0 /* NavigationCancellationCode.Redirect */ || e.code === 1 /* NavigationCancellationCode.SupersededByNewNavigation */ : false;\n return redirecting ? NavigationResult.REDIRECTING : NavigationResult.FAILED;\n }), filter(result => result !== NavigationResult.REDIRECTING), take(1)).subscribe(() => {\n action();\n });\n}\nfunction defaultErrorHandler(error) {\n throw error;\n}\n/**\n * The equivalent `IsActiveMatchOptions` options for `Router.isActive` is called with `true`\n * (exact = true).\n */\nconst exactMatchOptions = {\n paths: 'exact',\n fragment: 'ignored',\n matrixParams: 'ignored',\n queryParams: 'exact'\n};\n/**\n * The equivalent `IsActiveMatchOptions` options for `Router.isActive` is called with `false`\n * (exact = false).\n */\nconst subsetMatchOptions = {\n paths: 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored',\n queryParams: 'subset'\n};\n/**\n * @description\n *\n * A service that provides navigation among views and URL manipulation capabilities.\n *\n * @see {@link Route}\n * @see [Routing and Navigation Guide](guide/router).\n *\n * @ngModule RouterModule\n *\n * @publicApi\n */\nclass Router {\n get currentUrlTree() {\n return this.stateManager.getCurrentUrlTree();\n }\n get rawUrlTree() {\n return this.stateManager.getRawUrlTree();\n }\n /**\n * An event stream for routing events.\n */\n get events() {\n // TODO(atscott): This _should_ be events.asObservable(). However, this change requires internal\n // cleanup: tests are doing `(route.events as Subject).next(...)`. This isn't\n // allowed/supported but we still have to fix these or file bugs against the teams before making\n // the change.\n return this._events;\n }\n /**\n * The current state of routing in this NgModule.\n */\n get routerState() {\n return this.stateManager.getRouterState();\n }\n constructor() {\n this.disposed = false;\n this.isNgZoneEnabled = false;\n this.console = inject(ɵConsole);\n this.stateManager = inject(StateManager);\n this.options = inject(ROUTER_CONFIGURATION, {\n optional: true\n }) || {};\n this.pendingTasks = inject(ɵInitialRenderPendingTasks);\n this.urlUpdateStrategy = this.options.urlUpdateStrategy || 'deferred';\n this.navigationTransitions = inject(NavigationTransitions);\n this.urlSerializer = inject(UrlSerializer);\n this.location = inject(Location);\n this.urlHandlingStrategy = inject(UrlHandlingStrategy);\n /**\n * The private `Subject` type for the public events exposed in the getter. This is used internally\n * to push events to. The separate field allows us to expose separate types in the public API\n * (i.e., an Observable rather than the Subject).\n */\n this._events = new Subject();\n /**\n * A handler for navigation errors in this NgModule.\n *\n * @deprecated Subscribe to the `Router` events and watch for `NavigationError` instead.\n * `provideRouter` has the `withNavigationErrorHandler` feature to make this easier.\n * @see {@link withNavigationErrorHandler}\n */\n this.errorHandler = this.options.errorHandler || defaultErrorHandler;\n /**\n * True if at least one navigation event has occurred,\n * false otherwise.\n */\n this.navigated = false;\n /**\n * A strategy for re-using routes.\n *\n * @deprecated Configure using `providers` instead:\n * `{provide: RouteReuseStrategy, useClass: MyStrategy}`.\n */\n this.routeReuseStrategy = inject(RouteReuseStrategy);\n /**\n * How to handle a navigation request to the current URL.\n *\n *\n * @deprecated Configure this through `provideRouter` or `RouterModule.forRoot` instead.\n * @see {@link withRouterConfig}\n * @see {@link provideRouter}\n * @see {@link RouterModule}\n */\n this.onSameUrlNavigation = this.options.onSameUrlNavigation || 'ignore';\n this.config = inject(ROUTES, {\n optional: true\n })?.flat() ?? [];\n /**\n * Indicates whether the application has opted in to binding Router data to component inputs.\n *\n * This option is enabled by the `withComponentInputBinding` feature of `provideRouter` or\n * `bindToComponentInputs` in the `ExtraOptions` of `RouterModule.forRoot`.\n */\n this.componentInputBindingEnabled = !!inject(INPUT_BINDER, {\n optional: true\n });\n this.eventsSubscription = new Subscription();\n this.isNgZoneEnabled = inject(NgZone) instanceof NgZone && NgZone.isInAngularZone();\n this.resetConfig(this.config);\n this.navigationTransitions.setupNavigations(this, this.currentUrlTree, this.routerState).subscribe({\n error: e => {\n this.console.warn(ngDevMode ? `Unhandled Navigation Error: ${e}` : e);\n }\n });\n this.subscribeToNavigationEvents();\n }\n subscribeToNavigationEvents() {\n const subscription = this.navigationTransitions.events.subscribe(e => {\n try {\n const currentTransition = this.navigationTransitions.currentTransition;\n const currentNavigation = this.navigationTransitions.currentNavigation;\n if (currentTransition !== null && currentNavigation !== null) {\n this.stateManager.handleRouterEvent(e, currentNavigation);\n if (e instanceof NavigationCancel && e.code !== 0 /* NavigationCancellationCode.Redirect */ && e.code !== 1 /* NavigationCancellationCode.SupersededByNewNavigation */) {\n // It seems weird that `navigated` is set to `true` when the navigation is rejected,\n // however it's how things were written initially. Investigation would need to be done\n // to determine if this can be removed.\n this.navigated = true;\n } else if (e instanceof NavigationEnd) {\n this.navigated = true;\n } else if (e instanceof RedirectRequest) {\n const mergedTree = this.urlHandlingStrategy.merge(e.url, currentTransition.currentRawUrl);\n const extras = {\n skipLocationChange: currentTransition.extras.skipLocationChange,\n // The URL is already updated at this point if we have 'eager' URL\n // updates or if the navigation was triggered by the browser (back\n // button, URL bar, etc). We want to replace that item in history\n // if the navigation is rejected.\n replaceUrl: this.urlUpdateStrategy === 'eager' || isBrowserTriggeredNavigation(currentTransition.source)\n };\n this.scheduleNavigation(mergedTree, IMPERATIVE_NAVIGATION, null, extras, {\n resolve: currentTransition.resolve,\n reject: currentTransition.reject,\n promise: currentTransition.promise\n });\n }\n }\n // Note that it's important to have the Router process the events _before_ the event is\n // pushed through the public observable. This ensures the correct router state is in place\n // before applications observe the events.\n if (isPublicRouterEvent(e)) {\n this._events.next(e);\n }\n } catch (e) {\n this.navigationTransitions.transitionAbortSubject.next(e);\n }\n });\n this.eventsSubscription.add(subscription);\n }\n /** @internal */\n resetRootComponentType(rootComponentType) {\n // TODO: vsavkin router 4.0 should make the root component set to null\n // this will simplify the lifecycle of the router.\n this.routerState.root.component = rootComponentType;\n this.navigationTransitions.rootComponentType = rootComponentType;\n }\n /**\n * Sets up the location change listener and performs the initial navigation.\n */\n initialNavigation() {\n this.setUpLocationChangeListener();\n if (!this.navigationTransitions.hasRequestedNavigation) {\n this.navigateToSyncWithBrowser(this.location.path(true), IMPERATIVE_NAVIGATION, this.stateManager.restoredState());\n }\n }\n /**\n * Sets up the location change listener. This listener detects navigations triggered from outside\n * the Router (the browser back/forward buttons, for example) and schedules a corresponding Router\n * navigation so that the correct events, guards, etc. are triggered.\n */\n setUpLocationChangeListener() {\n // Don't need to use Zone.wrap any more, because zone.js\n // already patch onPopState, so location change callback will\n // run into ngZone\n if (!this.nonRouterCurrentEntryChangeSubscription) {\n this.nonRouterCurrentEntryChangeSubscription = this.stateManager.registerNonRouterCurrentEntryChangeListener((url, state) => {\n // The `setTimeout` was added in #12160 and is likely to support Angular/AngularJS\n // hybrid apps.\n setTimeout(() => {\n this.navigateToSyncWithBrowser(url, 'popstate', state);\n }, 0);\n });\n }\n }\n /**\n * Schedules a router navigation to synchronize Router state with the browser state.\n *\n * This is done as a response to a popstate event and the initial navigation. These\n * two scenarios represent times when the browser URL/state has been updated and\n * the Router needs to respond to ensure its internal state matches.\n */\n navigateToSyncWithBrowser(url, source, state) {\n const extras = {\n replaceUrl: true\n };\n // TODO: restoredState should always include the entire state, regardless\n // of navigationId. This requires a breaking change to update the type on\n // NavigationStart’s restoredState, which currently requires navigationId\n // to always be present. The Router used to only restore history state if\n // a navigationId was present.\n // The stored navigationId is used by the RouterScroller to retrieve the scroll\n // position for the page.\n const restoredState = state?.navigationId ? state : null;\n // Separate to NavigationStart.restoredState, we must also restore the state to\n // history.state and generate a new navigationId, since it will be overwritten\n if (state) {\n const stateCopy = {\n ...state\n };\n delete stateCopy.navigationId;\n delete stateCopy.ɵrouterPageId;\n if (Object.keys(stateCopy).length !== 0) {\n extras.state = stateCopy;\n }\n }\n const urlTree = this.parseUrl(url);\n this.scheduleNavigation(urlTree, source, restoredState, extras);\n }\n /** The current URL. */\n get url() {\n return this.serializeUrl(this.currentUrlTree);\n }\n /**\n * Returns the current `Navigation` object when the router is navigating,\n * and `null` when idle.\n */\n getCurrentNavigation() {\n return this.navigationTransitions.currentNavigation;\n }\n /**\n * The `Navigation` object of the most recent navigation to succeed and `null` if there\n * has not been a successful navigation yet.\n */\n get lastSuccessfulNavigation() {\n return this.navigationTransitions.lastSuccessfulNavigation;\n }\n /**\n * Resets the route configuration used for navigation and generating links.\n *\n * @param config The route array for the new configuration.\n *\n * @usageNotes\n *\n * ```\n * router.resetConfig([\n * { path: 'team/:id', component: TeamCmp, children: [\n * { path: 'simple', component: SimpleCmp },\n * { path: 'user/:name', component: UserCmp }\n * ]}\n * ]);\n * ```\n */\n resetConfig(config) {\n (typeof ngDevMode === 'undefined' || ngDevMode) && validateConfig(config);\n this.config = config.map(standardizeConfig);\n this.navigated = false;\n }\n /** @nodoc */\n ngOnDestroy() {\n this.dispose();\n }\n /** Disposes of the router. */\n dispose() {\n this.navigationTransitions.complete();\n if (this.nonRouterCurrentEntryChangeSubscription) {\n this.nonRouterCurrentEntryChangeSubscription.unsubscribe();\n this.nonRouterCurrentEntryChangeSubscription = undefined;\n }\n this.disposed = true;\n this.eventsSubscription.unsubscribe();\n }\n /**\n * Appends URL segments to the current URL tree to create a new URL tree.\n *\n * @param commands An array of URL fragments with which to construct the new URL tree.\n * If the path is static, can be the literal URL string. For a dynamic path, pass an array of path\n * segments, followed by the parameters for each segment.\n * The fragments are applied to the current URL tree or the one provided in the `relativeTo`\n * property of the options object, if supplied.\n * @param navigationExtras Options that control the navigation strategy.\n * @returns The new URL tree.\n *\n * @usageNotes\n *\n * ```\n * // create /team/33/user/11\n * router.createUrlTree(['/team', 33, 'user', 11]);\n *\n * // create /team/33;expand=true/user/11\n * router.createUrlTree(['/team', 33, {expand: true}, 'user', 11]);\n *\n * // you can collapse static segments like this (this works only with the first passed-in value):\n * router.createUrlTree(['/team/33/user', userId]);\n *\n * // If the first segment can contain slashes, and you do not want the router to split it,\n * // you can do the following:\n * router.createUrlTree([{segmentPath: '/one/two'}]);\n *\n * // create /team/33/(user/11//right:chat)\n * router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: 'chat'}}]);\n *\n * // remove the right secondary node\n * router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: null}}]);\n *\n * // assuming the current url is `/team/33/user/11` and the route points to `user/11`\n *\n * // navigate to /team/33/user/11/details\n * router.createUrlTree(['details'], {relativeTo: route});\n *\n * // navigate to /team/33/user/22\n * router.createUrlTree(['../22'], {relativeTo: route});\n *\n * // navigate to /team/44/user/22\n * router.createUrlTree(['../../team/44/user/22'], {relativeTo: route});\n *\n * Note that a value of `null` or `undefined` for `relativeTo` indicates that the\n * tree should be created relative to the root.\n * ```\n */\n createUrlTree(commands, navigationExtras = {}) {\n const {\n relativeTo,\n queryParams,\n fragment,\n queryParamsHandling,\n preserveFragment\n } = navigationExtras;\n const f = preserveFragment ? this.currentUrlTree.fragment : fragment;\n let q = null;\n switch (queryParamsHandling) {\n case 'merge':\n q = {\n ...this.currentUrlTree.queryParams,\n ...queryParams\n };\n break;\n case 'preserve':\n q = this.currentUrlTree.queryParams;\n break;\n default:\n q = queryParams || null;\n }\n if (q !== null) {\n q = this.removeEmptyProps(q);\n }\n let relativeToUrlSegmentGroup;\n try {\n const relativeToSnapshot = relativeTo ? relativeTo.snapshot : this.routerState.snapshot.root;\n relativeToUrlSegmentGroup = createSegmentGroupFromRoute(relativeToSnapshot);\n } catch (e) {\n // This is strictly for backwards compatibility with tests that create\n // invalid `ActivatedRoute` mocks.\n // Note: the difference between having this fallback for invalid `ActivatedRoute` setups and\n // just throwing is ~500 test failures. Fixing all of those tests by hand is not feasible at\n // the moment.\n if (typeof commands[0] !== 'string' || !commands[0].startsWith('/')) {\n // Navigations that were absolute in the old way of creating UrlTrees\n // would still work because they wouldn't attempt to match the\n // segments in the `ActivatedRoute` to the `currentUrlTree` but\n // instead just replace the root segment with the navigation result.\n // Non-absolute navigations would fail to apply the commands because\n // the logic could not find the segment to replace (so they'd act like there were no\n // commands).\n commands = [];\n }\n relativeToUrlSegmentGroup = this.currentUrlTree.root;\n }\n return createUrlTreeFromSegmentGroup(relativeToUrlSegmentGroup, commands, q, f ?? null);\n }\n /**\n * Navigates to a view using an absolute route path.\n *\n * @param url An absolute path for a defined route. The function does not apply any delta to the\n * current URL.\n * @param extras An object containing properties that modify the navigation strategy.\n *\n * @returns A Promise that resolves to 'true' when navigation succeeds,\n * to 'false' when navigation fails, or is rejected on error.\n *\n * @usageNotes\n *\n * The following calls request navigation to an absolute path.\n *\n * ```\n * router.navigateByUrl(\"/team/33/user/11\");\n *\n * // Navigate without updating the URL\n * router.navigateByUrl(\"/team/33/user/11\", { skipLocationChange: true });\n * ```\n *\n * @see [Routing and Navigation guide](guide/router)\n *\n */\n navigateByUrl(url, extras = {\n skipLocationChange: false\n }) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (this.isNgZoneEnabled && !NgZone.isInAngularZone()) {\n this.console.warn(`Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?`);\n }\n }\n const urlTree = isUrlTree(url) ? url : this.parseUrl(url);\n const mergedTree = this.urlHandlingStrategy.merge(urlTree, this.rawUrlTree);\n return this.scheduleNavigation(mergedTree, IMPERATIVE_NAVIGATION, null, extras);\n }\n /**\n * Navigate based on the provided array of commands and a starting point.\n * If no starting route is provided, the navigation is absolute.\n *\n * @param commands An array of URL fragments with which to construct the target URL.\n * If the path is static, can be the literal URL string. For a dynamic path, pass an array of path\n * segments, followed by the parameters for each segment.\n * The fragments are applied to the current URL or the one provided in the `relativeTo` property\n * of the options object, if supplied.\n * @param extras An options object that determines how the URL should be constructed or\n * interpreted.\n *\n * @returns A Promise that resolves to `true` when navigation succeeds, to `false` when navigation\n * fails,\n * or is rejected on error.\n *\n * @usageNotes\n *\n * The following calls request navigation to a dynamic route path relative to the current URL.\n *\n * ```\n * router.navigate(['team', 33, 'user', 11], {relativeTo: route});\n *\n * // Navigate without updating the URL, overriding the default behavior\n * router.navigate(['team', 33, 'user', 11], {relativeTo: route, skipLocationChange: true});\n * ```\n *\n * @see [Routing and Navigation guide](guide/router)\n *\n */\n navigate(commands, extras = {\n skipLocationChange: false\n }) {\n validateCommands(commands);\n return this.navigateByUrl(this.createUrlTree(commands, extras), extras);\n }\n /** Serializes a `UrlTree` into a string */\n serializeUrl(url) {\n return this.urlSerializer.serialize(url);\n }\n /** Parses a string into a `UrlTree` */\n parseUrl(url) {\n try {\n return this.urlSerializer.parse(url);\n } catch {\n return this.urlSerializer.parse('/');\n }\n }\n isActive(url, matchOptions) {\n let options;\n if (matchOptions === true) {\n options = {\n ...exactMatchOptions\n };\n } else if (matchOptions === false) {\n options = {\n ...subsetMatchOptions\n };\n } else {\n options = matchOptions;\n }\n if (isUrlTree(url)) {\n return containsTree(this.currentUrlTree, url, options);\n }\n const urlTree = this.parseUrl(url);\n return containsTree(this.currentUrlTree, urlTree, options);\n }\n removeEmptyProps(params) {\n return Object.keys(params).reduce((result, key) => {\n const value = params[key];\n if (value !== null && value !== undefined) {\n result[key] = value;\n }\n return result;\n }, {});\n }\n scheduleNavigation(rawUrl, source, restoredState, extras, priorPromise) {\n if (this.disposed) {\n return Promise.resolve(false);\n }\n let resolve;\n let reject;\n let promise;\n if (priorPromise) {\n resolve = priorPromise.resolve;\n reject = priorPromise.reject;\n promise = priorPromise.promise;\n } else {\n promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n }\n // Indicate that the navigation is happening.\n const taskId = this.pendingTasks.add();\n afterNextNavigation(this, () => {\n // Remove pending task in a microtask to allow for cancelled\n // initial navigations and redirects within the same task.\n queueMicrotask(() => this.pendingTasks.remove(taskId));\n });\n this.navigationTransitions.handleNavigationRequest({\n source,\n restoredState,\n currentUrlTree: this.currentUrlTree,\n currentRawUrl: this.currentUrlTree,\n rawUrl,\n extras,\n resolve,\n reject,\n promise,\n currentSnapshot: this.routerState.snapshot,\n currentRouterState: this.routerState\n });\n // Make sure that the error is propagated even though `processNavigations` catch\n // handler does not rethrow\n return promise.catch(e => {\n return Promise.reject(e);\n });\n }\n static {\n this.ɵfac = function Router_Factory(t) {\n return new (t || Router)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: Router,\n factory: Router.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Router, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [], null);\n})();\nfunction validateCommands(commands) {\n for (let i = 0; i < commands.length; i++) {\n const cmd = commands[i];\n if (cmd == null) {\n throw new ɵRuntimeError(4008 /* RuntimeErrorCode.NULLISH_COMMAND */, (typeof ngDevMode === 'undefined' || ngDevMode) && `The requested path contains ${cmd} segment at index ${i}`);\n }\n }\n}\nfunction isPublicRouterEvent(e) {\n return !(e instanceof BeforeActivateRoutes) && !(e instanceof RedirectRequest);\n}\n\n/**\n * @description\n *\n * When applied to an element in a template, makes that element a link\n * that initiates navigation to a route. Navigation opens one or more routed components\n * in one or more `` locations on the page.\n *\n * Given a route configuration `[{ path: 'user/:name', component: UserCmp }]`,\n * the following creates a static link to the route:\n * `link to user component`\n *\n * You can use dynamic values to generate the link.\n * For a dynamic link, pass an array of path segments,\n * followed by the params for each segment.\n * For example, `['/team', teamId, 'user', userName, {details: true}]`\n * generates a link to `/team/11/user/bob;details=true`.\n *\n * Multiple static segments can be merged into one term and combined with dynamic segments.\n * For example, `['/team/11/user', userName, {details: true}]`\n *\n * The input that you provide to the link is treated as a delta to the current URL.\n * For instance, suppose the current URL is `/user/(box//aux:team)`.\n * The link `Jim` creates the URL\n * `/user/(jim//aux:team)`.\n * See {@link Router#createUrlTree} for more information.\n *\n * @usageNotes\n *\n * You can use absolute or relative paths in a link, set query parameters,\n * control how parameters are handled, and keep a history of navigation states.\n *\n * ### Relative link paths\n *\n * The first segment name can be prepended with `/`, `./`, or `../`.\n * * If the first segment begins with `/`, the router looks up the route from the root of the\n * app.\n * * If the first segment begins with `./`, or doesn't begin with a slash, the router\n * looks in the children of the current activated route.\n * * If the first segment begins with `../`, the router goes up one level in the route tree.\n *\n * ### Setting and handling query params and fragments\n *\n * The following link adds a query parameter and a fragment to the generated URL:\n *\n * ```\n * \n * link to user component\n * \n * ```\n * By default, the directive constructs the new URL using the given query parameters.\n * The example generates the link: `/user/bob?debug=true#education`.\n *\n * You can instruct the directive to handle query parameters differently\n * by specifying the `queryParamsHandling` option in the link.\n * Allowed values are:\n *\n * - `'merge'`: Merge the given `queryParams` into the current query params.\n * - `'preserve'`: Preserve the current query params.\n *\n * For example:\n *\n * ```\n * \n * link to user component\n * \n * ```\n *\n * See {@link UrlCreationOptions#queryParamsHandling}.\n *\n * ### Preserving navigation history\n *\n * You can provide a `state` value to be persisted to the browser's\n * [`History.state` property](https://developer.mozilla.org/en-US/docs/Web/API/History#Properties).\n * For example:\n *\n * ```\n * \n * link to user component\n * \n * ```\n *\n * Use {@link Router#getCurrentNavigation} to retrieve a saved\n * navigation-state value. For example, to capture the `tracingId` during the `NavigationStart`\n * event:\n *\n * ```\n * // Get NavigationStart events\n * router.events.pipe(filter(e => e instanceof NavigationStart)).subscribe(e => {\n * const navigation = router.getCurrentNavigation();\n * tracingService.trace({id: navigation.extras.state.tracingId});\n * });\n * ```\n *\n * @ngModule RouterModule\n *\n * @publicApi\n */\nclass RouterLink {\n constructor(router, route, tabIndexAttribute, renderer, el, locationStrategy) {\n this.router = router;\n this.route = route;\n this.tabIndexAttribute = tabIndexAttribute;\n this.renderer = renderer;\n this.el = el;\n this.locationStrategy = locationStrategy;\n /**\n * Represents an `href` attribute value applied to a host element,\n * when a host element is ``. For other tags, the value is `null`.\n */\n this.href = null;\n this.commands = null;\n /** @internal */\n this.onChanges = new Subject();\n /**\n * Passed to {@link Router#createUrlTree} as part of the\n * `UrlCreationOptions`.\n * @see {@link UrlCreationOptions#preserveFragment}\n * @see {@link Router#createUrlTree}\n */\n this.preserveFragment = false;\n /**\n * Passed to {@link Router#navigateByUrl} as part of the\n * `NavigationBehaviorOptions`.\n * @see {@link NavigationBehaviorOptions#skipLocationChange}\n * @see {@link Router#navigateByUrl}\n */\n this.skipLocationChange = false;\n /**\n * Passed to {@link Router#navigateByUrl} as part of the\n * `NavigationBehaviorOptions`.\n * @see {@link NavigationBehaviorOptions#replaceUrl}\n * @see {@link Router#navigateByUrl}\n */\n this.replaceUrl = false;\n const tagName = el.nativeElement.tagName?.toLowerCase();\n this.isAnchorElement = tagName === 'a' || tagName === 'area';\n if (this.isAnchorElement) {\n this.subscription = router.events.subscribe(s => {\n if (s instanceof NavigationEnd) {\n this.updateHref();\n }\n });\n } else {\n this.setTabIndexIfNotOnNativeEl('0');\n }\n }\n /**\n * Modifies the tab index if there was not a tabindex attribute on the element during\n * instantiation.\n */\n setTabIndexIfNotOnNativeEl(newTabIndex) {\n if (this.tabIndexAttribute != null /* both `null` and `undefined` */ || this.isAnchorElement) {\n return;\n }\n this.applyAttributeValue('tabindex', newTabIndex);\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (this.isAnchorElement) {\n this.updateHref();\n }\n // This is subscribed to by `RouterLinkActive` so that it knows to update when there are changes\n // to the RouterLinks it's tracking.\n this.onChanges.next(this);\n }\n /**\n * Commands to pass to {@link Router#createUrlTree}.\n * - **array**: commands to pass to {@link Router#createUrlTree}.\n * - **string**: shorthand for array of commands with just the string, i.e. `['/route']`\n * - **null|undefined**: effectively disables the `routerLink`\n * @see {@link Router#createUrlTree}\n */\n set routerLink(commands) {\n if (commands != null) {\n this.commands = Array.isArray(commands) ? commands : [commands];\n this.setTabIndexIfNotOnNativeEl('0');\n } else {\n this.commands = null;\n this.setTabIndexIfNotOnNativeEl(null);\n }\n }\n /** @nodoc */\n onClick(button, ctrlKey, shiftKey, altKey, metaKey) {\n if (this.urlTree === null) {\n return true;\n }\n if (this.isAnchorElement) {\n if (button !== 0 || ctrlKey || shiftKey || altKey || metaKey) {\n return true;\n }\n if (typeof this.target === 'string' && this.target != '_self') {\n return true;\n }\n }\n const extras = {\n skipLocationChange: this.skipLocationChange,\n replaceUrl: this.replaceUrl,\n state: this.state\n };\n this.router.navigateByUrl(this.urlTree, extras);\n // Return `false` for `` elements to prevent default action\n // and cancel the native behavior, since the navigation is handled\n // by the Router.\n return !this.isAnchorElement;\n }\n /** @nodoc */\n ngOnDestroy() {\n this.subscription?.unsubscribe();\n }\n updateHref() {\n this.href = this.urlTree !== null && this.locationStrategy ? this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(this.urlTree)) : null;\n const sanitizedValue = this.href === null ? null :\n // This class represents a directive that can be added to both `` elements,\n // as well as other elements. As a result, we can't define security context at\n // compile time. So the security context is deferred to runtime.\n // The `ɵɵsanitizeUrlOrResourceUrl` selects the necessary sanitizer function\n // based on the tag and property names. The logic mimics the one from\n // `packages/compiler/src/schema/dom_security_schema.ts`, which is used at compile time.\n //\n // Note: we should investigate whether we can switch to using `@HostBinding('attr.href')`\n // instead of applying a value via a renderer, after a final merge of the\n // `RouterLinkWithHref` directive.\n ɵɵsanitizeUrlOrResourceUrl(this.href, this.el.nativeElement.tagName.toLowerCase(), 'href');\n this.applyAttributeValue('href', sanitizedValue);\n }\n applyAttributeValue(attrName, attrValue) {\n const renderer = this.renderer;\n const nativeElement = this.el.nativeElement;\n if (attrValue !== null) {\n renderer.setAttribute(nativeElement, attrName, attrValue);\n } else {\n renderer.removeAttribute(nativeElement, attrName);\n }\n }\n get urlTree() {\n if (this.commands === null) {\n return null;\n }\n return this.router.createUrlTree(this.commands, {\n // If the `relativeTo` input is not defined, we want to use `this.route` by default.\n // Otherwise, we should use the value provided by the user in the input.\n relativeTo: this.relativeTo !== undefined ? this.relativeTo : this.route,\n queryParams: this.queryParams,\n fragment: this.fragment,\n queryParamsHandling: this.queryParamsHandling,\n preserveFragment: this.preserveFragment\n });\n }\n static {\n this.ɵfac = function RouterLink_Factory(t) {\n return new (t || RouterLink)(i0.ɵɵdirectiveInject(Router), i0.ɵɵdirectiveInject(ActivatedRoute), i0.ɵɵinjectAttribute('tabindex'), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i3.LocationStrategy));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: RouterLink,\n selectors: [[\"\", \"routerLink\", \"\"]],\n hostVars: 1,\n hostBindings: function RouterLink_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function RouterLink_click_HostBindingHandler($event) {\n return ctx.onClick($event.button, $event.ctrlKey, $event.shiftKey, $event.altKey, $event.metaKey);\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"target\", ctx.target);\n }\n },\n inputs: {\n target: \"target\",\n queryParams: \"queryParams\",\n fragment: \"fragment\",\n queryParamsHandling: \"queryParamsHandling\",\n state: \"state\",\n relativeTo: \"relativeTo\",\n preserveFragment: [\"preserveFragment\", \"preserveFragment\", booleanAttribute],\n skipLocationChange: [\"skipLocationChange\", \"skipLocationChange\", booleanAttribute],\n replaceUrl: [\"replaceUrl\", \"replaceUrl\", booleanAttribute],\n routerLink: \"routerLink\"\n },\n standalone: true,\n features: [i0.ɵɵInputTransformsFeature, i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RouterLink, [{\n type: Directive,\n args: [{\n selector: '[routerLink]',\n standalone: true\n }]\n }], () => [{\n type: Router\n }, {\n type: ActivatedRoute\n }, {\n type: undefined,\n decorators: [{\n type: Attribute,\n args: ['tabindex']\n }]\n }, {\n type: i0.Renderer2\n }, {\n type: i0.ElementRef\n }, {\n type: i3.LocationStrategy\n }], {\n target: [{\n type: HostBinding,\n args: ['attr.target']\n }, {\n type: Input\n }],\n queryParams: [{\n type: Input\n }],\n fragment: [{\n type: Input\n }],\n queryParamsHandling: [{\n type: Input\n }],\n state: [{\n type: Input\n }],\n relativeTo: [{\n type: Input\n }],\n preserveFragment: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n skipLocationChange: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n replaceUrl: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n routerLink: [{\n type: Input\n }],\n onClick: [{\n type: HostListener,\n args: ['click', ['$event.button', '$event.ctrlKey', '$event.shiftKey', '$event.altKey', '$event.metaKey']]\n }]\n });\n})();\n\n/**\n *\n * @description\n *\n * Tracks whether the linked route of an element is currently active, and allows you\n * to specify one or more CSS classes to add to the element when the linked route\n * is active.\n *\n * Use this directive to create a visual distinction for elements associated with an active route.\n * For example, the following code highlights the word \"Bob\" when the router\n * activates the associated route:\n *\n * ```\n * Bob\n * ```\n *\n * Whenever the URL is either '/user' or '/user/bob', the \"active-link\" class is\n * added to the anchor tag. If the URL changes, the class is removed.\n *\n * You can set more than one class using a space-separated string or an array.\n * For example:\n *\n * ```\n * Bob\n * Bob\n * ```\n *\n * To add the classes only when the URL matches the link exactly, add the option `exact: true`:\n *\n * ```\n * Bob\n * ```\n *\n * To directly check the `isActive` status of the link, assign the `RouterLinkActive`\n * instance to a template variable.\n * For example, the following checks the status without assigning any CSS classes:\n *\n * ```\n * \n * Bob {{ rla.isActive ? '(already open)' : ''}}\n * \n * ```\n *\n * You can apply the `RouterLinkActive` directive to an ancestor of linked elements.\n * For example, the following sets the active-link class on the `
` parent tag\n * when the URL is either '/user/jim' or '/user/bob'.\n *\n * ```\n *
\n * Jim\n * Bob\n *
\n * ```\n *\n * The `RouterLinkActive` directive can also be used to set the aria-current attribute\n * to provide an alternative distinction for active elements to visually impaired users.\n *\n * For example, the following code adds the 'active' class to the Home Page link when it is\n * indeed active and in such case also sets its aria-current attribute to 'page':\n *\n * ```\n * Home Page\n * ```\n *\n * @ngModule RouterModule\n *\n * @publicApi\n */\nclass RouterLinkActive {\n get isActive() {\n return this._isActive;\n }\n constructor(router, element, renderer, cdr, link) {\n this.router = router;\n this.element = element;\n this.renderer = renderer;\n this.cdr = cdr;\n this.link = link;\n this.classes = [];\n this._isActive = false;\n /**\n * Options to configure how to determine if the router link is active.\n *\n * These options are passed to the `Router.isActive()` function.\n *\n * @see {@link Router#isActive}\n */\n this.routerLinkActiveOptions = {\n exact: false\n };\n /**\n *\n * You can use the output `isActiveChange` to get notified each time the link becomes\n * active or inactive.\n *\n * Emits:\n * true -> Route is active\n * false -> Route is inactive\n *\n * ```\n * Bob\n * ```\n */\n this.isActiveChange = new EventEmitter();\n this.routerEventsSubscription = router.events.subscribe(s => {\n if (s instanceof NavigationEnd) {\n this.update();\n }\n });\n }\n /** @nodoc */\n ngAfterContentInit() {\n // `of(null)` is used to force subscribe body to execute once immediately (like `startWith`).\n of(this.links.changes, of(null)).pipe(mergeAll()).subscribe(_ => {\n this.update();\n this.subscribeToEachLinkOnChanges();\n });\n }\n subscribeToEachLinkOnChanges() {\n this.linkInputChangesSubscription?.unsubscribe();\n const allLinkChanges = [...this.links.toArray(), this.link].filter(link => !!link).map(link => link.onChanges);\n this.linkInputChangesSubscription = from(allLinkChanges).pipe(mergeAll()).subscribe(link => {\n if (this._isActive !== this.isLinkActive(this.router)(link)) {\n this.update();\n }\n });\n }\n set routerLinkActive(data) {\n const classes = Array.isArray(data) ? data : data.split(' ');\n this.classes = classes.filter(c => !!c);\n }\n /** @nodoc */\n ngOnChanges(changes) {\n this.update();\n }\n /** @nodoc */\n ngOnDestroy() {\n this.routerEventsSubscription.unsubscribe();\n this.linkInputChangesSubscription?.unsubscribe();\n }\n update() {\n if (!this.links || !this.router.navigated) return;\n queueMicrotask(() => {\n const hasActiveLinks = this.hasActiveLinks();\n if (this._isActive !== hasActiveLinks) {\n this._isActive = hasActiveLinks;\n this.cdr.markForCheck();\n this.classes.forEach(c => {\n if (hasActiveLinks) {\n this.renderer.addClass(this.element.nativeElement, c);\n } else {\n this.renderer.removeClass(this.element.nativeElement, c);\n }\n });\n if (hasActiveLinks && this.ariaCurrentWhenActive !== undefined) {\n this.renderer.setAttribute(this.element.nativeElement, 'aria-current', this.ariaCurrentWhenActive.toString());\n } else {\n this.renderer.removeAttribute(this.element.nativeElement, 'aria-current');\n }\n // Emit on isActiveChange after classes are updated\n this.isActiveChange.emit(hasActiveLinks);\n }\n });\n }\n isLinkActive(router) {\n const options = isActiveMatchOptions(this.routerLinkActiveOptions) ? this.routerLinkActiveOptions :\n // While the types should disallow `undefined` here, it's possible without strict inputs\n this.routerLinkActiveOptions.exact || false;\n return link => link.urlTree ? router.isActive(link.urlTree, options) : false;\n }\n hasActiveLinks() {\n const isActiveCheckFn = this.isLinkActive(this.router);\n return this.link && isActiveCheckFn(this.link) || this.links.some(isActiveCheckFn);\n }\n static {\n this.ɵfac = function RouterLinkActive_Factory(t) {\n return new (t || RouterLinkActive)(i0.ɵɵdirectiveInject(Router), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(RouterLink, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: RouterLinkActive,\n selectors: [[\"\", \"routerLinkActive\", \"\"]],\n contentQueries: function RouterLinkActive_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, RouterLink, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.links = _t);\n }\n },\n inputs: {\n routerLinkActiveOptions: \"routerLinkActiveOptions\",\n ariaCurrentWhenActive: \"ariaCurrentWhenActive\",\n routerLinkActive: \"routerLinkActive\"\n },\n outputs: {\n isActiveChange: \"isActiveChange\"\n },\n exportAs: [\"routerLinkActive\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RouterLinkActive, [{\n type: Directive,\n args: [{\n selector: '[routerLinkActive]',\n exportAs: 'routerLinkActive',\n standalone: true\n }]\n }], () => [{\n type: Router\n }, {\n type: i0.ElementRef\n }, {\n type: i0.Renderer2\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: RouterLink,\n decorators: [{\n type: Optional\n }]\n }], {\n links: [{\n type: ContentChildren,\n args: [RouterLink, {\n descendants: true\n }]\n }],\n routerLinkActiveOptions: [{\n type: Input\n }],\n ariaCurrentWhenActive: [{\n type: Input\n }],\n isActiveChange: [{\n type: Output\n }],\n routerLinkActive: [{\n type: Input\n }]\n });\n})();\n/**\n * Use instead of `'paths' in options` to be compatible with property renaming\n */\nfunction isActiveMatchOptions(options) {\n return !!options.paths;\n}\n\n/**\n * @description\n *\n * Provides a preloading strategy.\n *\n * @publicApi\n */\nclass PreloadingStrategy {}\n/**\n * @description\n *\n * Provides a preloading strategy that preloads all modules as quickly as possible.\n *\n * ```\n * RouterModule.forRoot(ROUTES, {preloadingStrategy: PreloadAllModules})\n * ```\n *\n * @publicApi\n */\nclass PreloadAllModules {\n preload(route, fn) {\n return fn().pipe(catchError(() => of(null)));\n }\n static {\n this.ɵfac = function PreloadAllModules_Factory(t) {\n return new (t || PreloadAllModules)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: PreloadAllModules,\n factory: PreloadAllModules.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(PreloadAllModules, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\n/**\n * @description\n *\n * Provides a preloading strategy that does not preload any modules.\n *\n * This strategy is enabled by default.\n *\n * @publicApi\n */\nclass NoPreloading {\n preload(route, fn) {\n return of(null);\n }\n static {\n this.ɵfac = function NoPreloading_Factory(t) {\n return new (t || NoPreloading)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NoPreloading,\n factory: NoPreloading.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NoPreloading, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\n/**\n * The preloader optimistically loads all router configurations to\n * make navigations into lazily-loaded sections of the application faster.\n *\n * The preloader runs in the background. When the router bootstraps, the preloader\n * starts listening to all navigation events. After every such event, the preloader\n * will check if any configurations can be loaded lazily.\n *\n * If a route is protected by `canLoad` guards, the preloaded will not load it.\n *\n * @publicApi\n */\nclass RouterPreloader {\n constructor(router, compiler, injector, preloadingStrategy, loader) {\n this.router = router;\n this.injector = injector;\n this.preloadingStrategy = preloadingStrategy;\n this.loader = loader;\n }\n setUpPreloading() {\n this.subscription = this.router.events.pipe(filter(e => e instanceof NavigationEnd), concatMap(() => this.preload())).subscribe(() => {});\n }\n preload() {\n return this.processRoutes(this.injector, this.router.config);\n }\n /** @nodoc */\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n processRoutes(injector, routes) {\n const res = [];\n for (const route of routes) {\n if (route.providers && !route._injector) {\n route._injector = createEnvironmentInjector(route.providers, injector, `Route: ${route.path}`);\n }\n const injectorForCurrentRoute = route._injector ?? injector;\n const injectorForChildren = route._loadedInjector ?? injectorForCurrentRoute;\n // Note that `canLoad` is only checked as a condition that prevents `loadChildren` and not\n // `loadComponent`. `canLoad` guards only block loading of child routes by design. This\n // happens as a consequence of needing to descend into children for route matching immediately\n // while component loading is deferred until route activation. Because `canLoad` guards can\n // have side effects, we cannot execute them here so we instead skip preloading altogether\n // when present. Lastly, it remains to be decided whether `canLoad` should behave this way\n // at all. Code splitting and lazy loading is separate from client-side authorization checks\n // and should not be used as a security measure to prevent loading of code.\n if (route.loadChildren && !route._loadedRoutes && route.canLoad === undefined || route.loadComponent && !route._loadedComponent) {\n res.push(this.preloadConfig(injectorForCurrentRoute, route));\n }\n if (route.children || route._loadedRoutes) {\n res.push(this.processRoutes(injectorForChildren, route.children ?? route._loadedRoutes));\n }\n }\n return from(res).pipe(mergeAll());\n }\n preloadConfig(injector, route) {\n return this.preloadingStrategy.preload(route, () => {\n let loadedChildren$;\n if (route.loadChildren && route.canLoad === undefined) {\n loadedChildren$ = this.loader.loadChildren(injector, route);\n } else {\n loadedChildren$ = of(null);\n }\n const recursiveLoadChildren$ = loadedChildren$.pipe(mergeMap(config => {\n if (config === null) {\n return of(void 0);\n }\n route._loadedRoutes = config.routes;\n route._loadedInjector = config.injector;\n // If the loaded config was a module, use that as the module/module injector going\n // forward. Otherwise, continue using the current module/module injector.\n return this.processRoutes(config.injector ?? injector, config.routes);\n }));\n if (route.loadComponent && !route._loadedComponent) {\n const loadComponent$ = this.loader.loadComponent(route);\n return from([recursiveLoadChildren$, loadComponent$]).pipe(mergeAll());\n } else {\n return recursiveLoadChildren$;\n }\n });\n }\n static {\n this.ɵfac = function RouterPreloader_Factory(t) {\n return new (t || RouterPreloader)(i0.ɵɵinject(Router), i0.ɵɵinject(i0.Compiler), i0.ɵɵinject(i0.EnvironmentInjector), i0.ɵɵinject(PreloadingStrategy), i0.ɵɵinject(RouterConfigLoader));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RouterPreloader,\n factory: RouterPreloader.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RouterPreloader, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: Router\n }, {\n type: i0.Compiler\n }, {\n type: i0.EnvironmentInjector\n }, {\n type: PreloadingStrategy\n }, {\n type: RouterConfigLoader\n }], null);\n})();\nconst ROUTER_SCROLLER = new InjectionToken('');\nclass RouterScroller {\n /** @nodoc */\n constructor(urlSerializer, transitions, viewportScroller, zone, options = {}) {\n this.urlSerializer = urlSerializer;\n this.transitions = transitions;\n this.viewportScroller = viewportScroller;\n this.zone = zone;\n this.options = options;\n this.lastId = 0;\n this.lastSource = 'imperative';\n this.restoredId = 0;\n this.store = {};\n // Default both options to 'disabled'\n options.scrollPositionRestoration = options.scrollPositionRestoration || 'disabled';\n options.anchorScrolling = options.anchorScrolling || 'disabled';\n }\n init() {\n // we want to disable the automatic scrolling because having two places\n // responsible for scrolling results race conditions, especially given\n // that browser don't implement this behavior consistently\n if (this.options.scrollPositionRestoration !== 'disabled') {\n this.viewportScroller.setHistoryScrollRestoration('manual');\n }\n this.routerEventsSubscription = this.createScrollEvents();\n this.scrollEventsSubscription = this.consumeScrollEvents();\n }\n createScrollEvents() {\n return this.transitions.events.subscribe(e => {\n if (e instanceof NavigationStart) {\n // store the scroll position of the current stable navigations.\n this.store[this.lastId] = this.viewportScroller.getScrollPosition();\n this.lastSource = e.navigationTrigger;\n this.restoredId = e.restoredState ? e.restoredState.navigationId : 0;\n } else if (e instanceof NavigationEnd) {\n this.lastId = e.id;\n this.scheduleScrollEvent(e, this.urlSerializer.parse(e.urlAfterRedirects).fragment);\n } else if (e instanceof NavigationSkipped && e.code === 0 /* NavigationSkippedCode.IgnoredSameUrlNavigation */) {\n this.lastSource = undefined;\n this.restoredId = 0;\n this.scheduleScrollEvent(e, this.urlSerializer.parse(e.url).fragment);\n }\n });\n }\n consumeScrollEvents() {\n return this.transitions.events.subscribe(e => {\n if (!(e instanceof Scroll)) return;\n // a popstate event. The pop state event will always ignore anchor scrolling.\n if (e.position) {\n if (this.options.scrollPositionRestoration === 'top') {\n this.viewportScroller.scrollToPosition([0, 0]);\n } else if (this.options.scrollPositionRestoration === 'enabled') {\n this.viewportScroller.scrollToPosition(e.position);\n }\n // imperative navigation \"forward\"\n } else {\n if (e.anchor && this.options.anchorScrolling === 'enabled') {\n this.viewportScroller.scrollToAnchor(e.anchor);\n } else if (this.options.scrollPositionRestoration !== 'disabled') {\n this.viewportScroller.scrollToPosition([0, 0]);\n }\n }\n });\n }\n scheduleScrollEvent(routerEvent, anchor) {\n this.zone.runOutsideAngular(() => {\n // The scroll event needs to be delayed until after change detection. Otherwise, we may\n // attempt to restore the scroll position before the router outlet has fully rendered the\n // component by executing its update block of the template function.\n setTimeout(() => {\n this.zone.run(() => {\n this.transitions.events.next(new Scroll(routerEvent, this.lastSource === 'popstate' ? this.store[this.restoredId] : null, anchor));\n });\n }, 0);\n });\n }\n /** @nodoc */\n ngOnDestroy() {\n this.routerEventsSubscription?.unsubscribe();\n this.scrollEventsSubscription?.unsubscribe();\n }\n static {\n this.ɵfac = function RouterScroller_Factory(t) {\n i0.ɵɵinvalidFactory();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RouterScroller,\n factory: RouterScroller.ɵfac\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RouterScroller, [{\n type: Injectable\n }], () => [{\n type: UrlSerializer\n }, {\n type: NavigationTransitions\n }, {\n type: i3.ViewportScroller\n }, {\n type: i0.NgZone\n }, {\n type: undefined\n }], null);\n})();\n\n/**\n * Sets up providers necessary to enable `Router` functionality for the application.\n * Allows to configure a set of routes as well as extra features that should be enabled.\n *\n * @usageNotes\n *\n * Basic example of how you can add a Router to your application:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent, {\n * providers: [provideRouter(appRoutes)]\n * });\n * ```\n *\n * You can also enable optional features in the Router by adding functions from the `RouterFeatures`\n * type:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes,\n * withDebugTracing(),\n * withRouterConfig({paramsInheritanceStrategy: 'always'}))\n * ]\n * }\n * );\n * ```\n *\n * @see {@link RouterFeatures}\n *\n * @publicApi\n * @param routes A set of `Route`s to use for the application routing table.\n * @param features Optional features to configure additional router behaviors.\n * @returns A set of providers to setup a Router.\n */\nfunction provideRouter(routes, ...features) {\n return makeEnvironmentProviders([{\n provide: ROUTES,\n multi: true,\n useValue: routes\n }, typeof ngDevMode === 'undefined' || ngDevMode ? {\n provide: ROUTER_IS_PROVIDED,\n useValue: true\n } : [], {\n provide: ActivatedRoute,\n useFactory: rootRoute,\n deps: [Router]\n }, {\n provide: APP_BOOTSTRAP_LISTENER,\n multi: true,\n useFactory: getBootstrapListener\n }, features.map(feature => feature.ɵproviders)]);\n}\nfunction rootRoute(router) {\n return router.routerState.root;\n}\n/**\n * Helper function to create an object that represents a Router feature.\n */\nfunction routerFeature(kind, providers) {\n return {\n ɵkind: kind,\n ɵproviders: providers\n };\n}\n/**\n * An Injection token used to indicate whether `provideRouter` or `RouterModule.forRoot` was ever\n * called.\n */\nconst ROUTER_IS_PROVIDED = new InjectionToken('', {\n providedIn: 'root',\n factory: () => false\n});\nconst routerIsProvidedDevModeCheck = {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useFactory() {\n return () => {\n if (!inject(ROUTER_IS_PROVIDED)) {\n console.warn('`provideRoutes` was called without `provideRouter` or `RouterModule.forRoot`. ' + 'This is likely a mistake.');\n }\n };\n }\n};\n/**\n * Registers a [DI provider](guide/glossary#provider) for a set of routes.\n * @param routes The route configuration to provide.\n *\n * @usageNotes\n *\n * ```\n * @NgModule({\n * providers: [provideRoutes(ROUTES)]\n * })\n * class LazyLoadedChildModule {}\n * ```\n *\n * @deprecated If necessary, provide routes using the `ROUTES` `InjectionToken`.\n * @see {@link ROUTES}\n * @publicApi\n */\nfunction provideRoutes(routes) {\n return [{\n provide: ROUTES,\n multi: true,\n useValue: routes\n }, typeof ngDevMode === 'undefined' || ngDevMode ? routerIsProvidedDevModeCheck : []];\n}\n/**\n * Enables customizable scrolling behavior for router navigations.\n *\n * @usageNotes\n *\n * Basic example of how you can enable scrolling feature:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withInMemoryScrolling())\n * ]\n * }\n * );\n * ```\n *\n * @see {@link provideRouter}\n * @see {@link ViewportScroller}\n *\n * @publicApi\n * @param options Set of configuration parameters to customize scrolling behavior, see\n * `InMemoryScrollingOptions` for additional information.\n * @returns A set of providers for use with `provideRouter`.\n */\nfunction withInMemoryScrolling(options = {}) {\n const providers = [{\n provide: ROUTER_SCROLLER,\n useFactory: () => {\n const viewportScroller = inject(ViewportScroller);\n const zone = inject(NgZone);\n const transitions = inject(NavigationTransitions);\n const urlSerializer = inject(UrlSerializer);\n return new RouterScroller(urlSerializer, transitions, viewportScroller, zone, options);\n }\n }];\n return routerFeature(4 /* RouterFeatureKind.InMemoryScrollingFeature */, providers);\n}\nfunction getBootstrapListener() {\n const injector = inject(Injector);\n return bootstrappedComponentRef => {\n const ref = injector.get(ApplicationRef);\n if (bootstrappedComponentRef !== ref.components[0]) {\n return;\n }\n const router = injector.get(Router);\n const bootstrapDone = injector.get(BOOTSTRAP_DONE);\n if (injector.get(INITIAL_NAVIGATION) === 1 /* InitialNavigation.EnabledNonBlocking */) {\n router.initialNavigation();\n }\n injector.get(ROUTER_PRELOADER, null, InjectFlags.Optional)?.setUpPreloading();\n injector.get(ROUTER_SCROLLER, null, InjectFlags.Optional)?.init();\n router.resetRootComponentType(ref.componentTypes[0]);\n if (!bootstrapDone.closed) {\n bootstrapDone.next();\n bootstrapDone.complete();\n bootstrapDone.unsubscribe();\n }\n };\n}\n/**\n * A subject used to indicate that the bootstrapping phase is done. When initial navigation is\n * `enabledBlocking`, the first navigation waits until bootstrapping is finished before continuing\n * to the activation phase.\n */\nconst BOOTSTRAP_DONE = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'bootstrap done indicator' : '', {\n factory: () => {\n return new Subject();\n }\n});\nconst INITIAL_NAVIGATION = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'initial navigation' : '', {\n providedIn: 'root',\n factory: () => 1 /* InitialNavigation.EnabledNonBlocking */\n});\n/**\n * Configures initial navigation to start before the root component is created.\n *\n * The bootstrap is blocked until the initial navigation is complete. This value is required for\n * [server-side rendering](guide/ssr) to work.\n *\n * @usageNotes\n *\n * Basic example of how you can enable this navigation behavior:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withEnabledBlockingInitialNavigation())\n * ]\n * }\n * );\n * ```\n *\n * @see {@link provideRouter}\n *\n * @publicApi\n * @returns A set of providers for use with `provideRouter`.\n */\nfunction withEnabledBlockingInitialNavigation() {\n const providers = [{\n provide: INITIAL_NAVIGATION,\n useValue: 0 /* InitialNavigation.EnabledBlocking */\n }, {\n provide: APP_INITIALIZER,\n multi: true,\n deps: [Injector],\n useFactory: injector => {\n const locationInitialized = injector.get(LOCATION_INITIALIZED, Promise.resolve());\n return () => {\n return locationInitialized.then(() => {\n return new Promise(resolve => {\n const router = injector.get(Router);\n const bootstrapDone = injector.get(BOOTSTRAP_DONE);\n afterNextNavigation(router, () => {\n // Unblock APP_INITIALIZER in case the initial navigation was canceled or errored\n // without a redirect.\n resolve(true);\n });\n injector.get(NavigationTransitions).afterPreactivation = () => {\n // Unblock APP_INITIALIZER once we get to `afterPreactivation`. At this point, we\n // assume activation will complete successfully (even though this is not\n // guaranteed).\n resolve(true);\n return bootstrapDone.closed ? of(void 0) : bootstrapDone;\n };\n router.initialNavigation();\n });\n });\n };\n }\n }];\n return routerFeature(2 /* RouterFeatureKind.EnabledBlockingInitialNavigationFeature */, providers);\n}\n/**\n * Disables initial navigation.\n *\n * Use if there is a reason to have more control over when the router starts its initial navigation\n * due to some complex initialization logic.\n *\n * @usageNotes\n *\n * Basic example of how you can disable initial navigation:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withDisabledInitialNavigation())\n * ]\n * }\n * );\n * ```\n *\n * @see {@link provideRouter}\n *\n * @returns A set of providers for use with `provideRouter`.\n *\n * @publicApi\n */\nfunction withDisabledInitialNavigation() {\n const providers = [{\n provide: APP_INITIALIZER,\n multi: true,\n useFactory: () => {\n const router = inject(Router);\n return () => {\n router.setUpLocationChangeListener();\n };\n }\n }, {\n provide: INITIAL_NAVIGATION,\n useValue: 2 /* InitialNavigation.Disabled */\n }];\n\n return routerFeature(3 /* RouterFeatureKind.DisabledInitialNavigationFeature */, providers);\n}\n/**\n * Enables logging of all internal navigation events to the console.\n * Extra logging might be useful for debugging purposes to inspect Router event sequence.\n *\n * @usageNotes\n *\n * Basic example of how you can enable debug tracing:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withDebugTracing())\n * ]\n * }\n * );\n * ```\n *\n * @see {@link provideRouter}\n *\n * @returns A set of providers for use with `provideRouter`.\n *\n * @publicApi\n */\nfunction withDebugTracing() {\n let providers = [];\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n providers = [{\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useFactory: () => {\n const router = inject(Router);\n return () => router.events.subscribe(e => {\n // tslint:disable:no-console\n console.group?.(`Router Event: ${e.constructor.name}`);\n console.log(stringifyEvent(e));\n console.log(e);\n console.groupEnd?.();\n // tslint:enable:no-console\n });\n }\n }];\n } else {\n providers = [];\n }\n return routerFeature(1 /* RouterFeatureKind.DebugTracingFeature */, providers);\n}\nconst ROUTER_PRELOADER = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'router preloader' : '');\n/**\n * Allows to configure a preloading strategy to use. The strategy is configured by providing a\n * reference to a class that implements a `PreloadingStrategy`.\n *\n * @usageNotes\n *\n * Basic example of how you can configure preloading:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withPreloading(PreloadAllModules))\n * ]\n * }\n * );\n * ```\n *\n * @see {@link provideRouter}\n *\n * @param preloadingStrategy A reference to a class that implements a `PreloadingStrategy` that\n * should be used.\n * @returns A set of providers for use with `provideRouter`.\n *\n * @publicApi\n */\nfunction withPreloading(preloadingStrategy) {\n const providers = [{\n provide: ROUTER_PRELOADER,\n useExisting: RouterPreloader\n }, {\n provide: PreloadingStrategy,\n useExisting: preloadingStrategy\n }];\n return routerFeature(0 /* RouterFeatureKind.PreloadingFeature */, providers);\n}\n/**\n * Allows to provide extra parameters to configure Router.\n *\n * @usageNotes\n *\n * Basic example of how you can provide extra configuration options:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withRouterConfig({\n * onSameUrlNavigation: 'reload'\n * }))\n * ]\n * }\n * );\n * ```\n *\n * @see {@link provideRouter}\n *\n * @param options A set of parameters to configure Router, see `RouterConfigOptions` for\n * additional information.\n * @returns A set of providers for use with `provideRouter`.\n *\n * @publicApi\n */\nfunction withRouterConfig(options) {\n const providers = [{\n provide: ROUTER_CONFIGURATION,\n useValue: options\n }];\n return routerFeature(5 /* RouterFeatureKind.RouterConfigurationFeature */, providers);\n}\n/**\n * Provides the location strategy that uses the URL fragment instead of the history API.\n *\n * @usageNotes\n *\n * Basic example of how you can use the hash location option:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withHashLocation())\n * ]\n * }\n * );\n * ```\n *\n * @see {@link provideRouter}\n * @see {@link HashLocationStrategy}\n *\n * @returns A set of providers for use with `provideRouter`.\n *\n * @publicApi\n */\nfunction withHashLocation() {\n const providers = [{\n provide: LocationStrategy,\n useClass: HashLocationStrategy\n }];\n return routerFeature(6 /* RouterFeatureKind.RouterHashLocationFeature */, providers);\n}\n/**\n * Subscribes to the Router's navigation events and calls the given function when a\n * `NavigationError` happens.\n *\n * This function is run inside application's [injection context](guide/dependency-injection-context)\n * so you can use the [`inject`](api/core/inject) function.\n *\n * @usageNotes\n *\n * Basic example of how you can use the error handler option:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withNavigationErrorHandler((e: NavigationError) =>\n * inject(MyErrorTracker).trackError(e)))\n * ]\n * }\n * );\n * ```\n *\n * @see {@link NavigationError}\n * @see {@link core/inject}\n * @see {@link runInInjectionContext}\n *\n * @returns A set of providers for use with `provideRouter`.\n *\n * @publicApi\n */\nfunction withNavigationErrorHandler(fn) {\n const providers = [{\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useValue: () => {\n const injector = inject(EnvironmentInjector);\n inject(Router).events.subscribe(e => {\n if (e instanceof NavigationError) {\n runInInjectionContext(injector, () => fn(e));\n }\n });\n }\n }];\n return routerFeature(7 /* RouterFeatureKind.NavigationErrorHandlerFeature */, providers);\n}\n/**\n * Enables binding information from the `Router` state directly to the inputs of the component in\n * `Route` configurations.\n *\n * @usageNotes\n *\n * Basic example of how you can enable the feature:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withComponentInputBinding())\n * ]\n * }\n * );\n * ```\n *\n * @returns A set of providers for use with `provideRouter`.\n */\nfunction withComponentInputBinding() {\n const providers = [RoutedComponentInputBinder, {\n provide: INPUT_BINDER,\n useExisting: RoutedComponentInputBinder\n }];\n return routerFeature(8 /* RouterFeatureKind.ComponentInputBindingFeature */, providers);\n}\n/**\n * Enables view transitions in the Router by running the route activation and deactivation inside of\n * `document.startViewTransition`.\n *\n * Note: The View Transitions API is not available in all browsers. If the browser does not support\n * view transitions, the Router will not attempt to start a view transition and continue processing\n * the navigation as usual.\n *\n * @usageNotes\n *\n * Basic example of how you can enable the feature:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withViewTransitions())\n * ]\n * }\n * );\n * ```\n *\n * @returns A set of providers for use with `provideRouter`.\n * @see https://developer.chrome.com/docs/web-platform/view-transitions/\n * @see https://developer.mozilla.org/en-US/docs/Web/API/View_Transitions_API\n * @experimental\n */\nfunction withViewTransitions(options) {\n const providers = [{\n provide: CREATE_VIEW_TRANSITION,\n useValue: createViewTransition\n }, {\n provide: VIEW_TRANSITION_OPTIONS,\n useValue: {\n skipNextTransition: !!options?.skipInitialTransition,\n ...options\n }\n }];\n return routerFeature(9 /* RouterFeatureKind.ViewTransitionsFeature */, providers);\n}\n\n/**\n * The directives defined in the `RouterModule`.\n */\nconst ROUTER_DIRECTIVES = [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent];\n/**\n * @docsNotRequired\n */\nconst ROUTER_FORROOT_GUARD = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'router duplicate forRoot guard' : 'ROUTER_FORROOT_GUARD');\n// TODO(atscott): All of these except `ActivatedRoute` are `providedIn: 'root'`. They are only kept\n// here to avoid a breaking change whereby the provider order matters based on where the\n// `RouterModule`/`RouterTestingModule` is imported. These can/should be removed as a \"breaking\"\n// change in a major version.\nconst ROUTER_PROVIDERS = [Location, {\n provide: UrlSerializer,\n useClass: DefaultUrlSerializer\n}, Router, ChildrenOutletContexts, {\n provide: ActivatedRoute,\n useFactory: rootRoute,\n deps: [Router]\n}, RouterConfigLoader,\n// Only used to warn when `provideRoutes` is used without `RouterModule` or `provideRouter`. Can\n// be removed when `provideRoutes` is removed.\ntypeof ngDevMode === 'undefined' || ngDevMode ? {\n provide: ROUTER_IS_PROVIDED,\n useValue: true\n} : []];\n/**\n * @description\n *\n * Adds directives and providers for in-app navigation among views defined in an application.\n * Use the Angular `Router` service to declaratively specify application states and manage state\n * transitions.\n *\n * You can import this NgModule multiple times, once for each lazy-loaded bundle.\n * However, only one `Router` service can be active.\n * To ensure this, there are two ways to register routes when importing this module:\n *\n * * The `forRoot()` method creates an `NgModule` that contains all the directives, the given\n * routes, and the `Router` service itself.\n * * The `forChild()` method creates an `NgModule` that contains all the directives and the given\n * routes, but does not include the `Router` service.\n *\n * @see [Routing and Navigation guide](guide/router) for an\n * overview of how the `Router` service should be used.\n *\n * @publicApi\n */\nclass RouterModule {\n constructor(guard) {}\n /**\n * Creates and configures a module with all the router providers and directives.\n * Optionally sets up an application listener to perform an initial navigation.\n *\n * When registering the NgModule at the root, import as follows:\n *\n * ```\n * @NgModule({\n * imports: [RouterModule.forRoot(ROUTES)]\n * })\n * class MyNgModule {}\n * ```\n *\n * @param routes An array of `Route` objects that define the navigation paths for the application.\n * @param config An `ExtraOptions` configuration object that controls how navigation is performed.\n * @return The new `NgModule`.\n *\n */\n static forRoot(routes, config) {\n return {\n ngModule: RouterModule,\n providers: [ROUTER_PROVIDERS, typeof ngDevMode === 'undefined' || ngDevMode ? config?.enableTracing ? withDebugTracing().ɵproviders : [] : [], {\n provide: ROUTES,\n multi: true,\n useValue: routes\n }, {\n provide: ROUTER_FORROOT_GUARD,\n useFactory: provideForRootGuard,\n deps: [[Router, new Optional(), new SkipSelf()]]\n }, {\n provide: ROUTER_CONFIGURATION,\n useValue: config ? config : {}\n }, config?.useHash ? provideHashLocationStrategy() : providePathLocationStrategy(), provideRouterScroller(), config?.preloadingStrategy ? withPreloading(config.preloadingStrategy).ɵproviders : [], config?.initialNavigation ? provideInitialNavigation(config) : [], config?.bindToComponentInputs ? withComponentInputBinding().ɵproviders : [], config?.enableViewTransitions ? withViewTransitions().ɵproviders : [], provideRouterInitializer()]\n };\n }\n /**\n * Creates a module with all the router directives and a provider registering routes,\n * without creating a new Router service.\n * When registering for submodules and lazy-loaded submodules, create the NgModule as follows:\n *\n * ```\n * @NgModule({\n * imports: [RouterModule.forChild(ROUTES)]\n * })\n * class MyNgModule {}\n * ```\n *\n * @param routes An array of `Route` objects that define the navigation paths for the submodule.\n * @return The new NgModule.\n *\n */\n static forChild(routes) {\n return {\n ngModule: RouterModule,\n providers: [{\n provide: ROUTES,\n multi: true,\n useValue: routes\n }]\n };\n }\n static {\n this.ɵfac = function RouterModule_Factory(t) {\n return new (t || RouterModule)(i0.ɵɵinject(ROUTER_FORROOT_GUARD, 8));\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: RouterModule,\n imports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent],\n exports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RouterModule, [{\n type: NgModule,\n args: [{\n imports: ROUTER_DIRECTIVES,\n exports: ROUTER_DIRECTIVES\n }]\n }], () => [{\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ROUTER_FORROOT_GUARD]\n }]\n }], null);\n})();\n/**\n * For internal use by `RouterModule` only. Note that this differs from `withInMemoryRouterScroller`\n * because it reads from the `ExtraOptions` which should not be used in the standalone world.\n */\nfunction provideRouterScroller() {\n return {\n provide: ROUTER_SCROLLER,\n useFactory: () => {\n const viewportScroller = inject(ViewportScroller);\n const zone = inject(NgZone);\n const config = inject(ROUTER_CONFIGURATION);\n const transitions = inject(NavigationTransitions);\n const urlSerializer = inject(UrlSerializer);\n if (config.scrollOffset) {\n viewportScroller.setOffset(config.scrollOffset);\n }\n return new RouterScroller(urlSerializer, transitions, viewportScroller, zone, config);\n }\n };\n}\n// Note: For internal use only with `RouterModule`. Standalone setup via `provideRouter` should\n// provide hash location directly via `{provide: LocationStrategy, useClass: HashLocationStrategy}`.\nfunction provideHashLocationStrategy() {\n return {\n provide: LocationStrategy,\n useClass: HashLocationStrategy\n };\n}\n// Note: For internal use only with `RouterModule`. Standalone setup via `provideRouter` does not\n// need this at all because `PathLocationStrategy` is the default factory for `LocationStrategy`.\nfunction providePathLocationStrategy() {\n return {\n provide: LocationStrategy,\n useClass: PathLocationStrategy\n };\n}\nfunction provideForRootGuard(router) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && router) {\n throw new ɵRuntimeError(4007 /* RuntimeErrorCode.FOR_ROOT_CALLED_TWICE */, `The Router was provided more than once. This can happen if 'forRoot' is used outside of the root injector.` + ` Lazy loaded modules should use RouterModule.forChild() instead.`);\n }\n return 'guarded';\n}\n// Note: For internal use only with `RouterModule`. Standalone router setup with `provideRouter`\n// users call `withXInitialNavigation` directly.\nfunction provideInitialNavigation(config) {\n return [config.initialNavigation === 'disabled' ? withDisabledInitialNavigation().ɵproviders : [], config.initialNavigation === 'enabledBlocking' ? withEnabledBlockingInitialNavigation().ɵproviders : []];\n}\n// TODO(atscott): This should not be in the public API\n/**\n * A [DI token](guide/glossary/#di-token) for the router initializer that\n * is called after the app is bootstrapped.\n *\n * @publicApi\n */\nconst ROUTER_INITIALIZER = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'Router Initializer' : '');\nfunction provideRouterInitializer() {\n return [\n // ROUTER_INITIALIZER token should be removed. It's public API but shouldn't be. We can just\n // have `getBootstrapListener` directly attached to APP_BOOTSTRAP_LISTENER.\n {\n provide: ROUTER_INITIALIZER,\n useFactory: getBootstrapListener\n }, {\n provide: APP_BOOTSTRAP_LISTENER,\n multi: true,\n useExisting: ROUTER_INITIALIZER\n }];\n}\n\n/**\n * Maps an array of injectable classes with canMatch functions to an array of equivalent\n * `CanMatchFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nfunction mapToCanMatch(providers) {\n return providers.map(provider => (...params) => inject(provider).canMatch(...params));\n}\n/**\n * Maps an array of injectable classes with canActivate functions to an array of equivalent\n * `CanActivateFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nfunction mapToCanActivate(providers) {\n return providers.map(provider => (...params) => inject(provider).canActivate(...params));\n}\n/**\n * Maps an array of injectable classes with canActivateChild functions to an array of equivalent\n * `CanActivateChildFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nfunction mapToCanActivateChild(providers) {\n return providers.map(provider => (...params) => inject(provider).canActivateChild(...params));\n}\n/**\n * Maps an array of injectable classes with canDeactivate functions to an array of equivalent\n * `CanDeactivateFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nfunction mapToCanDeactivate(providers) {\n return providers.map(provider => (...params) => inject(provider).canDeactivate(...params));\n}\n/**\n * Maps an injectable class with a resolve function to an equivalent `ResolveFn`\n * for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='Resolve'}\n *\n * @publicApi\n * @see {@link Route}\n */\nfunction mapToResolve(provider) {\n return (...params) => inject(provider).resolve(...params);\n}\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the router package.\n */\n/**\n * @publicApi\n */\nconst VERSION = new Version('17.0.7');\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n// This file only reexports content of the `src` folder. Keep it that way.\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ActivatedRoute, ActivatedRouteSnapshot, ActivationEnd, ActivationStart, BaseRouteReuseStrategy, ChildActivationEnd, ChildActivationStart, ChildrenOutletContexts, DefaultTitleStrategy, DefaultUrlSerializer, GuardsCheckEnd, GuardsCheckStart, NavigationCancel, NavigationEnd, NavigationError, NavigationSkipped, NavigationStart, NoPreloading, OutletContext, PRIMARY_OUTLET, PreloadAllModules, PreloadingStrategy, ROUTER_CONFIGURATION, ROUTER_INITIALIZER, ROUTES, ResolveEnd, ResolveStart, RouteConfigLoadEnd, RouteConfigLoadStart, RouteReuseStrategy, Router, RouterEvent, RouterLink, RouterLinkActive, RouterLink as RouterLinkWithHref, RouterModule, RouterOutlet, RouterPreloader, RouterState, RouterStateSnapshot, RoutesRecognized, Scroll, TitleStrategy, UrlHandlingStrategy, UrlSegment, UrlSegmentGroup, UrlSerializer, UrlTree, VERSION, convertToParamMap, createUrlTreeFromSnapshot, defaultUrlMatcher, mapToCanActivate, mapToCanActivateChild, mapToCanDeactivate, mapToCanMatch, mapToResolve, provideRouter, provideRoutes, withComponentInputBinding, withDebugTracing, withDisabledInitialNavigation, withEnabledBlockingInitialNavigation, withHashLocation, withInMemoryScrolling, withNavigationErrorHandler, withPreloading, withRouterConfig, withViewTransitions, ɵEmptyOutletComponent, ROUTER_PROVIDERS as ɵROUTER_PROVIDERS, afterNextNavigation as ɵafterNextNavigation, loadChildren as ɵloadChildren };\n"], - "mappings": "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", - "names": ["last", "tree", "match", "res", "commands", "noMatch", "t", "c", "node", "map", "contexts", "canActivate", "last", "s", "tree", "from", "t", "NavigationResult", "e"] + "sources": [], + "sourcesContent": [], + "mappings": "", + "names": [] } diff --git a/.angular/cache/17.0.7/vite/deps/_metadata.json b/.angular/cache/17.0.7/vite/deps/_metadata.json index e719838..8997a26 100644 --- a/.angular/cache/17.0.7/vite/deps/_metadata.json +++ b/.angular/cache/17.0.7/vite/deps/_metadata.json @@ -1,162 +1,228 @@ { - "hash": "cc225bbb", - "browserHash": "dbe8d3c7", + "hash": "f2c549cf", + "browserHash": "6460fb2f", "optimized": { "@angular/common": { "src": "../../../../../node_modules/@angular/common/fesm2022/common.mjs", "file": "@angular_common.js", - "fileHash": "d661ed7d", + "fileHash": "59595a21", "needsInterop": false }, "@angular/common/http": { "src": "../../../../../node_modules/@angular/common/fesm2022/http.mjs", "file": "@angular_common_http.js", - "fileHash": "5b740f7b", + "fileHash": "2c57824c", "needsInterop": false }, "@angular/common/locales/zh": { "src": "../../../../../node_modules/@angular/common/locales/zh.mjs", "file": "@angular_common_locales_zh.js", - "fileHash": "7c33e27f", + "fileHash": "bb85227d", "needsInterop": false }, "@angular/core": { "src": "../../../../../node_modules/@angular/core/fesm2022/core.mjs", "file": "@angular_core.js", - "fileHash": "f0838544", + "fileHash": "f3b036a6", "needsInterop": false }, "@angular/forms": { "src": "../../../../../node_modules/@angular/forms/fesm2022/forms.mjs", "file": "@angular_forms.js", - "fileHash": "ae0cc6b3", + "fileHash": "895ea0a9", "needsInterop": false }, "@angular/platform-browser": { "src": "../../../../../node_modules/@angular/platform-browser/fesm2022/platform-browser.mjs", "file": "@angular_platform-browser.js", - "fileHash": "93683fb3", + "fileHash": "3477a2a2", "needsInterop": false }, "@angular/platform-browser/animations": { "src": "../../../../../node_modules/@angular/platform-browser/fesm2022/animations.mjs", "file": "@angular_platform-browser_animations.js", - "fileHash": "b6899561", + "fileHash": "37b95759", "needsInterop": false }, "@angular/router": { "src": "../../../../../node_modules/@angular/router/fesm2022/router.mjs", "file": "@angular_router.js", - "fileHash": "e640f2a0", + "fileHash": "03f6ea04", + "needsInterop": false + }, + "ng-zorro-antd/button": { + "src": "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-button.mjs", + "file": "ng-zorro-antd_button.js", + "fileHash": "10e41c15", "needsInterop": false }, "ng-zorro-antd/carousel": { "src": "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-carousel.mjs", "file": "ng-zorro-antd_carousel.js", - "fileHash": "c48acf28", + "fileHash": "e182053d", "needsInterop": false }, - "ng-zorro-antd/i18n": { - "src": "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-i18n.mjs", - "file": "ng-zorro-antd_i18n.js", - "fileHash": "5e035d5e", + "ng-zorro-antd/checkbox": { + "src": "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-checkbox.mjs", + "file": "ng-zorro-antd_checkbox.js", + "fileHash": "4236d5cd", "needsInterop": false }, "ng-zorro-antd/form": { "src": "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-form.mjs", "file": "ng-zorro-antd_form.js", - "fileHash": "51dcbecb", - "needsInterop": false - }, - "ng-zorro-antd/input": { - "src": "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-input.mjs", - "file": "ng-zorro-antd_input.js", - "fileHash": "c5664a3f", + "fileHash": "e14855e4", "needsInterop": false }, "ng-zorro-antd/grid": { "src": "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-grid.mjs", "file": "ng-zorro-antd_grid.js", - "fileHash": "37ac34ea", + "fileHash": "3f1a0f26", "needsInterop": false }, - "ng-zorro-antd/button": { - "src": "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-button.mjs", - "file": "ng-zorro-antd_button.js", - "fileHash": "2e1315f7", + "ng-zorro-antd/i18n": { + "src": "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-i18n.mjs", + "file": "ng-zorro-antd_i18n.js", + "fileHash": "f58def7c", "needsInterop": false }, - "ng-zorro-antd/checkbox": { - "src": "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-checkbox.mjs", - "file": "ng-zorro-antd_checkbox.js", - "fileHash": "398f6684", + "ng-zorro-antd/input": { + "src": "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-input.mjs", + "file": "ng-zorro-antd_input.js", + "fileHash": "039d5013", + "needsInterop": false + }, + "ng-zorro-antd/message": { + "src": "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-message.mjs", + "file": "ng-zorro-antd_message.js", + "fileHash": "ce0966f1", "needsInterop": false }, "ng-zorro-antd/slider": { "src": "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-slider.mjs", "file": "ng-zorro-antd_slider.js", - "fileHash": "8c8d415d", + "fileHash": "d5dd996a", "needsInterop": false }, - "ng-zorro-antd/message": { - "src": "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-message.mjs", - "file": "ng-zorro-antd_message.js", - "fileHash": "b9a4f3d4", + "ng-zorro-antd/layout": { + "src": "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-layout.mjs", + "file": "ng-zorro-antd_layout.js", + "fileHash": "5184b024", + "needsInterop": false + }, + "ng-zorro-antd/breadcrumb": { + "src": "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-breadcrumb.mjs", + "file": "ng-zorro-antd_breadcrumb.js", + "fileHash": "a30d135a", + "needsInterop": false + }, + "ng-zorro-antd/menu": { + "src": "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-menu.mjs", + "file": "ng-zorro-antd_menu.js", + "fileHash": "8c79e727", + "needsInterop": false + }, + "@angular/animations": { + "src": "../../../../../node_modules/@angular/animations/fesm2022/animations.mjs", + "file": "@angular_animations.js", + "fileHash": "4591f2a0", + "needsInterop": false + }, + "ng-zorro-antd/icon": { + "src": "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-icon.mjs", + "file": "ng-zorro-antd_icon.js", + "fileHash": "106b5b91", + "needsInterop": false + }, + "ng-zorro-antd/tabs": { + "src": "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-tabs.mjs", + "file": "ng-zorro-antd_tabs.js", + "fileHash": "bb33851d", + "needsInterop": false + }, + "ng-zorro-antd/drawer": { + "src": "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-drawer.mjs", + "file": "ng-zorro-antd_drawer.js", + "fileHash": "b3ae3835", "needsInterop": false } }, "chunks": { - "chunk-5W7CSQ4E": { - "file": "chunk-5W7CSQ4E.js" + "chunk-2CQTWQUI": { + "file": "chunk-2CQTWQUI.js" }, - "chunk-YSQE3J2Q": { - "file": "chunk-YSQE3J2Q.js" + "chunk-WKTPWT5U": { + "file": "chunk-WKTPWT5U.js" }, - "chunk-C2DNBB57": { - "file": "chunk-C2DNBB57.js" + "chunk-CZEXXPIB": { + "file": "chunk-CZEXXPIB.js" }, - "chunk-W2UE3A2Q": { - "file": "chunk-W2UE3A2Q.js" + "chunk-5MZJ5XYV": { + "file": "chunk-5MZJ5XYV.js" }, - "chunk-BXV7YWBX": { - "file": "chunk-BXV7YWBX.js" + "chunk-6RXUTAFR": { + "file": "chunk-6RXUTAFR.js" }, - "chunk-S7G3TSRW": { - "file": "chunk-S7G3TSRW.js" + "chunk-QP2OUFNR": { + "file": "chunk-QP2OUFNR.js" }, - "chunk-QI6CCAQD": { - "file": "chunk-QI6CCAQD.js" + "chunk-FGZVIKKA": { + "file": "chunk-FGZVIKKA.js" }, - "chunk-VOD2PKZN": { - "file": "chunk-VOD2PKZN.js" + "chunk-T745QDCV": { + "file": "chunk-T745QDCV.js" }, - "chunk-W3IYJMS2": { - "file": "chunk-W3IYJMS2.js" + "chunk-XAGDQPFO": { + "file": "chunk-XAGDQPFO.js" }, - "chunk-UMSNQQWJ": { - "file": "chunk-UMSNQQWJ.js" + "chunk-D5ODNR6D": { + "file": "chunk-D5ODNR6D.js" }, - "chunk-5OJ3CSUZ": { - "file": "chunk-5OJ3CSUZ.js" + "chunk-55A2ZGND": { + "file": "chunk-55A2ZGND.js" }, - "chunk-NOIPAY33": { - "file": "chunk-NOIPAY33.js" + "chunk-E6XJDY45": { + "file": "chunk-E6XJDY45.js" }, - "chunk-UPQZZZIG": { - "file": "chunk-UPQZZZIG.js" + "chunk-6U656R5M": { + "file": "chunk-6U656R5M.js" }, - "chunk-7XTJNSRU": { - "file": "chunk-7XTJNSRU.js" + "chunk-VOD2PKZN": { + "file": "chunk-VOD2PKZN.js" }, - "chunk-FILHFU6K": { - "file": "chunk-FILHFU6K.js" + "chunk-JGP5BR6B": { + "file": "chunk-JGP5BR6B.js" }, - "chunk-BNCUYWOH": { - "file": "chunk-BNCUYWOH.js" + "chunk-WB57DPWD": { + "file": "chunk-WB57DPWD.js" }, "chunk-D4IIJHV7": { "file": "chunk-D4IIJHV7.js" }, + "chunk-KMGBCF4T": { + "file": "chunk-KMGBCF4T.js" + }, + "chunk-VWMHIMW7": { + "file": "chunk-VWMHIMW7.js" + }, + "chunk-ZHMJ6SNN": { + "file": "chunk-ZHMJ6SNN.js" + }, + "chunk-6NZ2BEBG": { + "file": "chunk-6NZ2BEBG.js" + }, + "chunk-IAC53GOD": { + "file": "chunk-IAC53GOD.js" + }, + "chunk-M5GY4FCO": { + "file": "chunk-M5GY4FCO.js" + }, + "chunk-ECVKT3ZH": { + "file": "chunk-ECVKT3ZH.js" + }, + "chunk-KI2JSLP6": { + "file": "chunk-KI2JSLP6.js" + }, "chunk-Y4CEYMY2": { "file": "chunk-Y4CEYMY2.js" }, diff --git a/.angular/cache/17.0.7/vite/deps/chunk-2CQTWQUI.js b/.angular/cache/17.0.7/vite/deps/chunk-2CQTWQUI.js new file mode 100644 index 0000000..367ca55 --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/chunk-2CQTWQUI.js @@ -0,0 +1,720 @@ +import { + MenuService, + NzIsMenuInsideDropDownToken, + NzMenuModule +} from "./chunk-WKTPWT5U.js"; +import { + POSITION_MAP +} from "./chunk-6RXUTAFR.js"; +import { + slideMotion +} from "./chunk-XAGDQPFO.js"; +import { + NzNoAnimationDirective +} from "./chunk-55A2ZGND.js"; +import { + ConnectionPositionPair, + Overlay, + TemplatePortal +} from "./chunk-6U656R5M.js"; +import { + ESCAPE, + hasModifierKey +} from "./chunk-JGP5BR6B.js"; +import { + NzButtonGroupComponent +} from "./chunk-KMGBCF4T.js"; +import { + NzConfigService, + WithConfig +} from "./chunk-ZHMJ6SNN.js"; +import { + Directionality +} from "./chunk-6NZ2BEBG.js"; +import { + Platform +} from "./chunk-IAC53GOD.js"; +import { + InputBoolean +} from "./chunk-M5GY4FCO.js"; +import { + NgClass, + NgStyle +} from "./chunk-OSQBUYO6.js"; +import { + BehaviorSubject, + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + Directive, + EMPTY, + ElementRef, + EventEmitter, + Host, + Injectable, + Input, + NgModule, + NgZone, + Optional, + Output, + Renderer2, + Subject, + Subscription, + TemplateRef, + ViewChild, + ViewContainerRef, + ViewEncapsulation$1, + __decorate, + auditTime, + combineLatest, + distinctUntilChanged, + filter, + first, + fromEvent, + map, + mapTo, + merge, + setClassMetadata, + switchMap, + takeUntil, + ɵɵNgOnChangesFeature, + ɵɵProvidersFeature, + ɵɵStandaloneFeature, + ɵɵclassProp, + ɵɵdefineComponent, + ɵɵdefineDirective, + ɵɵdefineInjectable, + ɵɵdefineInjector, + ɵɵdefineNgModule, + ɵɵdirectiveInject, + ɵɵelementEnd, + ɵɵelementStart, + ɵɵgetCurrentView, + ɵɵinject, + ɵɵlistener, + ɵɵloadQuery, + ɵɵnextContext, + ɵɵprojection, + ɵɵprojectionDef, + ɵɵproperty, + ɵɵqueryRefresh, + ɵɵresetView, + ɵɵrestoreView, + ɵɵtemplate, + ɵɵviewQuery +} from "./chunk-FGESKT7O.js"; + +// node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-dropdown.mjs +function NzDropdownMenuComponent_ng_template_0_Template(rf, ctx) { + if (rf & 1) { + const _r2 = ɵɵgetCurrentView(); + ɵɵelementStart(0, "div", 0); + ɵɵlistener("@slideMotion.done", function NzDropdownMenuComponent_ng_template_0_Template_div_animation_slideMotion_done_0_listener($event) { + ɵɵrestoreView(_r2); + const ctx_r1 = ɵɵnextContext(); + return ɵɵresetView(ctx_r1.onAnimationEvent($event)); + })("mouseenter", function NzDropdownMenuComponent_ng_template_0_Template_div_mouseenter_0_listener() { + ɵɵrestoreView(_r2); + const ctx_r3 = ɵɵnextContext(); + return ɵɵresetView(ctx_r3.setMouseState(true)); + })("mouseleave", function NzDropdownMenuComponent_ng_template_0_Template_div_mouseleave_0_listener() { + ɵɵrestoreView(_r2); + const ctx_r4 = ɵɵnextContext(); + return ɵɵresetView(ctx_r4.setMouseState(false)); + }); + ɵɵprojection(1); + ɵɵelementEnd(); + } + if (rf & 2) { + const ctx_r0 = ɵɵnextContext(); + ɵɵclassProp("ant-dropdown-rtl", ctx_r0.dir === "rtl"); + ɵɵproperty("ngClass", ctx_r0.nzOverlayClassName)("ngStyle", ctx_r0.nzOverlayStyle)("@slideMotion", void 0)("@.disabled", !!(ctx_r0.noAnimation == null ? null : ctx_r0.noAnimation.nzNoAnimation))("nzNoAnimation", ctx_r0.noAnimation == null ? null : ctx_r0.noAnimation.nzNoAnimation); + } +} +var _c0 = ["*"]; +var NZ_CONFIG_MODULE_NAME = "dropDown"; +var listOfPositions = [POSITION_MAP.bottomLeft, POSITION_MAP.bottomRight, POSITION_MAP.topRight, POSITION_MAP.topLeft]; +var _NzDropDownDirective = class _NzDropDownDirective { + setDropdownMenuValue(key, value) { + if (this.nzDropdownMenu) { + this.nzDropdownMenu.setValue(key, value); + } + } + constructor(nzConfigService, elementRef, overlay, renderer, viewContainerRef, platform) { + this.nzConfigService = nzConfigService; + this.elementRef = elementRef; + this.overlay = overlay; + this.renderer = renderer; + this.viewContainerRef = viewContainerRef; + this.platform = platform; + this._nzModuleName = NZ_CONFIG_MODULE_NAME; + this.overlayRef = null; + this.destroy$ = new Subject(); + this.positionStrategy = this.overlay.position().flexibleConnectedTo(this.elementRef.nativeElement).withLockedPosition().withTransformOriginOn(".ant-dropdown"); + this.inputVisible$ = new BehaviorSubject(false); + this.nzTrigger$ = new BehaviorSubject("hover"); + this.overlayClose$ = new Subject(); + this.nzDropdownMenu = null; + this.nzTrigger = "hover"; + this.nzMatchWidthElement = null; + this.nzBackdrop = false; + this.nzClickHide = true; + this.nzDisabled = false; + this.nzVisible = false; + this.nzOverlayClassName = ""; + this.nzOverlayStyle = {}; + this.nzPlacement = "bottomLeft"; + this.nzVisibleChange = new EventEmitter(); + } + ngAfterViewInit() { + if (this.nzDropdownMenu) { + const nativeElement = this.elementRef.nativeElement; + const hostMouseState$ = merge(fromEvent(nativeElement, "mouseenter").pipe(mapTo(true)), fromEvent(nativeElement, "mouseleave").pipe(mapTo(false))); + const menuMouseState$ = this.nzDropdownMenu.mouseState$; + const mergedMouseState$ = merge(menuMouseState$, hostMouseState$); + const hostClickState$ = fromEvent(nativeElement, "click").pipe(map(() => !this.nzVisible)); + const visibleStateByTrigger$ = this.nzTrigger$.pipe(switchMap((trigger) => { + if (trigger === "hover") { + return mergedMouseState$; + } else if (trigger === "click") { + return hostClickState$; + } else { + return EMPTY; + } + })); + const descendantMenuItemClick$ = this.nzDropdownMenu.descendantMenuItemClick$.pipe(filter(() => this.nzClickHide), mapTo(false)); + const domTriggerVisible$ = merge(visibleStateByTrigger$, descendantMenuItemClick$, this.overlayClose$).pipe(filter(() => !this.nzDisabled)); + const visible$ = merge(this.inputVisible$, domTriggerVisible$); + combineLatest([visible$, this.nzDropdownMenu.isChildSubMenuOpen$]).pipe(map(([visible, sub]) => visible || sub), auditTime(150), distinctUntilChanged(), filter(() => this.platform.isBrowser), takeUntil(this.destroy$)).subscribe((visible) => { + const element = this.nzMatchWidthElement ? this.nzMatchWidthElement.nativeElement : nativeElement; + const triggerWidth = element.getBoundingClientRect().width; + if (this.nzVisible !== visible) { + this.nzVisibleChange.emit(visible); + } + this.nzVisible = visible; + if (visible) { + if (!this.overlayRef) { + this.overlayRef = this.overlay.create({ + positionStrategy: this.positionStrategy, + minWidth: triggerWidth, + disposeOnNavigation: true, + hasBackdrop: this.nzBackdrop && this.nzTrigger === "click", + scrollStrategy: this.overlay.scrollStrategies.reposition() + }); + merge(this.overlayRef.backdropClick(), this.overlayRef.detachments(), this.overlayRef.outsidePointerEvents().pipe(filter((e) => !this.elementRef.nativeElement.contains(e.target))), this.overlayRef.keydownEvents().pipe(filter((e) => e.keyCode === ESCAPE && !hasModifierKey(e)))).pipe(takeUntil(this.destroy$)).subscribe(() => { + this.overlayClose$.next(false); + }); + } else { + const overlayConfig = this.overlayRef.getConfig(); + overlayConfig.minWidth = triggerWidth; + } + this.positionStrategy.withPositions([POSITION_MAP[this.nzPlacement], ...listOfPositions]); + if (!this.portal || this.portal.templateRef !== this.nzDropdownMenu.templateRef) { + this.portal = new TemplatePortal(this.nzDropdownMenu.templateRef, this.viewContainerRef); + } + this.overlayRef.attach(this.portal); + } else { + if (this.overlayRef) { + this.overlayRef.detach(); + } + } + }); + this.nzDropdownMenu.animationStateChange$.pipe(takeUntil(this.destroy$)).subscribe((event) => { + if (event.toState === "void") { + if (this.overlayRef) { + this.overlayRef.dispose(); + } + this.overlayRef = null; + } + }); + } + } + ngOnDestroy() { + this.destroy$.next(true); + this.destroy$.complete(); + if (this.overlayRef) { + this.overlayRef.dispose(); + this.overlayRef = null; + } + } + ngOnChanges(changes) { + const { + nzVisible, + nzDisabled, + nzOverlayClassName, + nzOverlayStyle, + nzTrigger + } = changes; + if (nzTrigger) { + this.nzTrigger$.next(this.nzTrigger); + } + if (nzVisible) { + this.inputVisible$.next(this.nzVisible); + } + if (nzDisabled) { + const nativeElement = this.elementRef.nativeElement; + if (this.nzDisabled) { + this.renderer.setAttribute(nativeElement, "disabled", ""); + this.inputVisible$.next(false); + } else { + this.renderer.removeAttribute(nativeElement, "disabled"); + } + } + if (nzOverlayClassName) { + this.setDropdownMenuValue("nzOverlayClassName", this.nzOverlayClassName); + } + if (nzOverlayStyle) { + this.setDropdownMenuValue("nzOverlayStyle", this.nzOverlayStyle); + } + } +}; +_NzDropDownDirective.ɵfac = function NzDropDownDirective_Factory(t) { + return new (t || _NzDropDownDirective)(ɵɵdirectiveInject(NzConfigService), ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(Overlay), ɵɵdirectiveInject(Renderer2), ɵɵdirectiveInject(ViewContainerRef), ɵɵdirectiveInject(Platform)); +}; +_NzDropDownDirective.ɵdir = ɵɵdefineDirective({ + type: _NzDropDownDirective, + selectors: [["", "nz-dropdown", ""]], + hostAttrs: [1, "ant-dropdown-trigger"], + inputs: { + nzDropdownMenu: "nzDropdownMenu", + nzTrigger: "nzTrigger", + nzMatchWidthElement: "nzMatchWidthElement", + nzBackdrop: "nzBackdrop", + nzClickHide: "nzClickHide", + nzDisabled: "nzDisabled", + nzVisible: "nzVisible", + nzOverlayClassName: "nzOverlayClassName", + nzOverlayStyle: "nzOverlayStyle", + nzPlacement: "nzPlacement" + }, + outputs: { + nzVisibleChange: "nzVisibleChange" + }, + exportAs: ["nzDropdown"], + standalone: true, + features: [ɵɵNgOnChangesFeature] +}); +var NzDropDownDirective = _NzDropDownDirective; +__decorate([WithConfig(), InputBoolean()], NzDropDownDirective.prototype, "nzBackdrop", void 0); +__decorate([InputBoolean()], NzDropDownDirective.prototype, "nzClickHide", void 0); +__decorate([InputBoolean()], NzDropDownDirective.prototype, "nzDisabled", void 0); +__decorate([InputBoolean()], NzDropDownDirective.prototype, "nzVisible", void 0); +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzDropDownDirective, [{ + type: Directive, + args: [{ + selector: "[nz-dropdown]", + exportAs: "nzDropdown", + host: { + class: "ant-dropdown-trigger" + }, + standalone: true + }] + }], () => [{ + type: NzConfigService + }, { + type: ElementRef + }, { + type: Overlay + }, { + type: Renderer2 + }, { + type: ViewContainerRef + }, { + type: Platform + }], { + nzDropdownMenu: [{ + type: Input + }], + nzTrigger: [{ + type: Input + }], + nzMatchWidthElement: [{ + type: Input + }], + nzBackdrop: [{ + type: Input + }], + nzClickHide: [{ + type: Input + }], + nzDisabled: [{ + type: Input + }], + nzVisible: [{ + type: Input + }], + nzOverlayClassName: [{ + type: Input + }], + nzOverlayStyle: [{ + type: Input + }], + nzPlacement: [{ + type: Input + }], + nzVisibleChange: [{ + type: Output + }] + }); +})(); +var _NzContextMenuServiceModule = class _NzContextMenuServiceModule { +}; +_NzContextMenuServiceModule.ɵfac = function NzContextMenuServiceModule_Factory(t) { + return new (t || _NzContextMenuServiceModule)(); +}; +_NzContextMenuServiceModule.ɵmod = ɵɵdefineNgModule({ + type: _NzContextMenuServiceModule +}); +_NzContextMenuServiceModule.ɵinj = ɵɵdefineInjector({}); +var NzContextMenuServiceModule = _NzContextMenuServiceModule; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzContextMenuServiceModule, [{ + type: NgModule + }], null, null); +})(); +var _NzDropDownADirective = class _NzDropDownADirective { + constructor() { + } +}; +_NzDropDownADirective.ɵfac = function NzDropDownADirective_Factory(t) { + return new (t || _NzDropDownADirective)(); +}; +_NzDropDownADirective.ɵdir = ɵɵdefineDirective({ + type: _NzDropDownADirective, + selectors: [["a", "nz-dropdown", ""]], + hostAttrs: [1, "ant-dropdown-link"], + standalone: true +}); +var NzDropDownADirective = _NzDropDownADirective; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzDropDownADirective, [{ + type: Directive, + args: [{ + selector: "a[nz-dropdown]", + host: { + class: "ant-dropdown-link" + }, + standalone: true + }] + }], () => [], null); +})(); +var _NzDropdownButtonDirective = class _NzDropdownButtonDirective { + constructor(renderer, nzButtonGroupComponent, elementRef) { + this.renderer = renderer; + this.nzButtonGroupComponent = nzButtonGroupComponent; + this.elementRef = elementRef; + } + ngAfterViewInit() { + const parentElement = this.renderer.parentNode(this.elementRef.nativeElement); + if (this.nzButtonGroupComponent && parentElement) { + this.renderer.addClass(parentElement, "ant-dropdown-button"); + } + } +}; +_NzDropdownButtonDirective.ɵfac = function NzDropdownButtonDirective_Factory(t) { + return new (t || _NzDropdownButtonDirective)(ɵɵdirectiveInject(Renderer2), ɵɵdirectiveInject(NzButtonGroupComponent, 9), ɵɵdirectiveInject(ElementRef)); +}; +_NzDropdownButtonDirective.ɵdir = ɵɵdefineDirective({ + type: _NzDropdownButtonDirective, + selectors: [["", "nz-button", "", "nz-dropdown", ""]], + standalone: true +}); +var NzDropdownButtonDirective = _NzDropdownButtonDirective; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzDropdownButtonDirective, [{ + type: Directive, + args: [{ + selector: "[nz-button][nz-dropdown]", + standalone: true + }] + }], () => [{ + type: Renderer2 + }, { + type: NzButtonGroupComponent, + decorators: [{ + type: Host + }, { + type: Optional + }] + }, { + type: ElementRef + }], null); +})(); +var _NzDropdownMenuComponent = class _NzDropdownMenuComponent { + onAnimationEvent(event) { + this.animationStateChange$.emit(event); + } + setMouseState(visible) { + this.mouseState$.next(visible); + } + setValue(key, value) { + this[key] = value; + this.cdr.markForCheck(); + } + constructor(cdr, elementRef, renderer, viewContainerRef, nzMenuService, directionality, noAnimation) { + this.cdr = cdr; + this.elementRef = elementRef; + this.renderer = renderer; + this.viewContainerRef = viewContainerRef; + this.nzMenuService = nzMenuService; + this.directionality = directionality; + this.noAnimation = noAnimation; + this.mouseState$ = new BehaviorSubject(false); + this.isChildSubMenuOpen$ = this.nzMenuService.isChildSubMenuOpen$; + this.descendantMenuItemClick$ = this.nzMenuService.descendantMenuItemClick$; + this.animationStateChange$ = new EventEmitter(); + this.nzOverlayClassName = ""; + this.nzOverlayStyle = {}; + this.dir = "ltr"; + this.destroy$ = new Subject(); + } + ngOnInit() { + this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction) => { + this.dir = direction; + this.cdr.detectChanges(); + }); + this.dir = this.directionality.value; + } + ngAfterContentInit() { + this.renderer.removeChild(this.renderer.parentNode(this.elementRef.nativeElement), this.elementRef.nativeElement); + } + ngOnDestroy() { + this.destroy$.next(); + this.destroy$.complete(); + } +}; +_NzDropdownMenuComponent.ɵfac = function NzDropdownMenuComponent_Factory(t) { + return new (t || _NzDropdownMenuComponent)(ɵɵdirectiveInject(ChangeDetectorRef), ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(Renderer2), ɵɵdirectiveInject(ViewContainerRef), ɵɵdirectiveInject(MenuService), ɵɵdirectiveInject(Directionality, 8), ɵɵdirectiveInject(NzNoAnimationDirective, 9)); +}; +_NzDropdownMenuComponent.ɵcmp = ɵɵdefineComponent({ + type: _NzDropdownMenuComponent, + selectors: [["nz-dropdown-menu"]], + viewQuery: function NzDropdownMenuComponent_Query(rf, ctx) { + if (rf & 1) { + ɵɵviewQuery(TemplateRef, 7); + } + if (rf & 2) { + let _t; + ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.templateRef = _t.first); + } + }, + exportAs: ["nzDropdownMenu"], + standalone: true, + features: [ɵɵProvidersFeature([ + MenuService, + /** menu is inside dropdown-menu component **/ + { + provide: NzIsMenuInsideDropDownToken, + useValue: true + } + ]), ɵɵStandaloneFeature], + ngContentSelectors: _c0, + decls: 1, + vars: 0, + consts: [[1, "ant-dropdown", 3, "ngClass", "ngStyle", "nzNoAnimation", "mouseenter", "mouseleave"]], + template: function NzDropdownMenuComponent_Template(rf, ctx) { + if (rf & 1) { + ɵɵprojectionDef(); + ɵɵtemplate(0, NzDropdownMenuComponent_ng_template_0_Template, 2, 7, "ng-template"); + } + }, + dependencies: [NgClass, NgStyle, NzNoAnimationDirective], + encapsulation: 2, + data: { + animation: [slideMotion] + }, + changeDetection: 0 +}); +var NzDropdownMenuComponent = _NzDropdownMenuComponent; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzDropdownMenuComponent, [{ + type: Component, + args: [{ + selector: `nz-dropdown-menu`, + exportAs: `nzDropdownMenu`, + animations: [slideMotion], + providers: [ + MenuService, + /** menu is inside dropdown-menu component **/ + { + provide: NzIsMenuInsideDropDownToken, + useValue: true + } + ], + template: ` + +
+ +
+
+ `, + preserveWhitespaces: false, + encapsulation: ViewEncapsulation$1.None, + changeDetection: ChangeDetectionStrategy.OnPush, + imports: [NgClass, NgStyle, NzNoAnimationDirective], + standalone: true + }] + }], () => [{ + type: ChangeDetectorRef + }, { + type: ElementRef + }, { + type: Renderer2 + }, { + type: ViewContainerRef + }, { + type: MenuService + }, { + type: Directionality, + decorators: [{ + type: Optional + }] + }, { + type: NzNoAnimationDirective, + decorators: [{ + type: Host + }, { + type: Optional + }] + }], { + templateRef: [{ + type: ViewChild, + args: [TemplateRef, { + static: true + }] + }] + }); +})(); +var _NzDropDownModule = class _NzDropDownModule { +}; +_NzDropDownModule.ɵfac = function NzDropDownModule_Factory(t) { + return new (t || _NzDropDownModule)(); +}; +_NzDropDownModule.ɵmod = ɵɵdefineNgModule({ + type: _NzDropDownModule, + imports: [NzDropDownDirective, NzDropDownADirective, NzDropdownMenuComponent, NzDropdownButtonDirective, NzContextMenuServiceModule], + exports: [NzMenuModule, NzDropDownDirective, NzDropDownADirective, NzDropdownMenuComponent, NzDropdownButtonDirective] +}); +_NzDropDownModule.ɵinj = ɵɵdefineInjector({ + imports: [NzContextMenuServiceModule, NzMenuModule] +}); +var NzDropDownModule = _NzDropDownModule; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzDropDownModule, [{ + type: NgModule, + args: [{ + imports: [NzDropDownDirective, NzDropDownADirective, NzDropdownMenuComponent, NzDropdownButtonDirective, NzContextMenuServiceModule], + exports: [NzMenuModule, NzDropDownDirective, NzDropDownADirective, NzDropdownMenuComponent, NzDropdownButtonDirective] + }] + }], null, null); +})(); +var LIST_OF_POSITIONS = [new ConnectionPositionPair({ + originX: "start", + originY: "top" +}, { + overlayX: "start", + overlayY: "top" +}), new ConnectionPositionPair({ + originX: "start", + originY: "top" +}, { + overlayX: "start", + overlayY: "bottom" +}), new ConnectionPositionPair({ + originX: "start", + originY: "top" +}, { + overlayX: "end", + overlayY: "bottom" +}), new ConnectionPositionPair({ + originX: "start", + originY: "top" +}, { + overlayX: "end", + overlayY: "top" +})]; +var _NzContextMenuService = class _NzContextMenuService { + constructor(ngZone, overlay) { + this.ngZone = ngZone; + this.overlay = overlay; + this.overlayRef = null; + this.closeSubscription = Subscription.EMPTY; + } + create($event, nzDropdownMenuComponent) { + this.close(true); + const { + x, + y + } = $event; + if ($event instanceof MouseEvent) { + $event.preventDefault(); + } + const positionStrategy = this.overlay.position().flexibleConnectedTo({ + x, + y + }).withPositions(LIST_OF_POSITIONS).withTransformOriginOn(".ant-dropdown"); + this.overlayRef = this.overlay.create({ + positionStrategy, + disposeOnNavigation: true, + scrollStrategy: this.overlay.scrollStrategies.close() + }); + this.closeSubscription = new Subscription(); + this.closeSubscription.add(nzDropdownMenuComponent.descendantMenuItemClick$.subscribe(() => this.close())); + this.closeSubscription.add(this.ngZone.runOutsideAngular(() => merge(fromEvent(document, "click").pipe( + filter((event) => !!this.overlayRef && !this.overlayRef.overlayElement.contains(event.target)), + /** handle firefox contextmenu event **/ + filter((event) => event.button !== 2) + ), fromEvent(document, "keydown").pipe(filter((event) => event.key === "Escape"))).pipe(first()).subscribe(() => this.ngZone.run(() => this.close())))); + return this.overlayRef.attach(new TemplatePortal(nzDropdownMenuComponent.templateRef, nzDropdownMenuComponent.viewContainerRef)); + } + close(clear = false) { + if (this.overlayRef) { + this.overlayRef.detach(); + if (clear) { + this.overlayRef.dispose(); + } + this.overlayRef = null; + this.closeSubscription.unsubscribe(); + } + } +}; +_NzContextMenuService.ɵfac = function NzContextMenuService_Factory(t) { + return new (t || _NzContextMenuService)(ɵɵinject(NgZone), ɵɵinject(Overlay)); +}; +_NzContextMenuService.ɵprov = ɵɵdefineInjectable({ + token: _NzContextMenuService, + factory: _NzContextMenuService.ɵfac, + providedIn: NzContextMenuServiceModule +}); +var NzContextMenuService = _NzContextMenuService; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzContextMenuService, [{ + type: Injectable, + args: [{ + providedIn: NzContextMenuServiceModule + }] + }], () => [{ + type: NgZone + }, { + type: Overlay + }], null); +})(); + +export { + NzDropDownDirective, + NzDropdownMenuComponent, + NzDropDownModule +}; +//# sourceMappingURL=chunk-2CQTWQUI.js.map diff --git a/.angular/cache/17.0.7/vite/deps/chunk-2CQTWQUI.js.map b/.angular/cache/17.0.7/vite/deps/chunk-2CQTWQUI.js.map new file mode 100644 index 0000000..c3a9bba --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/chunk-2CQTWQUI.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-dropdown.mjs"], + "sourcesContent": ["import { __decorate } from 'tslib';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Directive, Input, Output, NgModule, Host, Optional, TemplateRef, Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, Injectable } from '@angular/core';\nimport { Subject, BehaviorSubject, fromEvent, merge, EMPTY, combineLatest, Subscription } from 'rxjs';\nimport { mapTo, map, switchMap, filter, takeUntil, auditTime, distinctUntilChanged, first } from 'rxjs/operators';\nimport * as i1 from 'ng-zorro-antd/core/config';\nimport { WithConfig } from 'ng-zorro-antd/core/config';\nimport { POSITION_MAP } from 'ng-zorro-antd/core/overlay';\nimport { InputBoolean } from 'ng-zorro-antd/core/util';\nimport * as i2 from '@angular/cdk/overlay';\nimport { ConnectionPositionPair } from '@angular/cdk/overlay';\nimport * as i3 from '@angular/cdk/platform';\nimport * as i1$2 from 'ng-zorro-antd/menu';\nimport { MenuService, NzIsMenuInsideDropDownToken, NzMenuModule } from 'ng-zorro-antd/menu';\nimport * as i1$1 from 'ng-zorro-antd/button';\nimport { NgClass, NgStyle } from '@angular/common';\nimport { slideMotion } from 'ng-zorro-antd/core/animation';\nimport * as i3$1 from 'ng-zorro-antd/core/no-animation';\nimport { NzNoAnimationDirective } from 'ng-zorro-antd/core/no-animation';\nimport * as i2$1 from '@angular/cdk/bidi';\nfunction NzDropdownMenuComponent_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r2 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 0);\n i0.ɵɵlistener(\"@slideMotion.done\", function NzDropdownMenuComponent_ng_template_0_Template_div_animation_slideMotion_done_0_listener($event) {\n i0.ɵɵrestoreView(_r2);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onAnimationEvent($event));\n })(\"mouseenter\", function NzDropdownMenuComponent_ng_template_0_Template_div_mouseenter_0_listener() {\n i0.ɵɵrestoreView(_r2);\n const ctx_r3 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r3.setMouseState(true));\n })(\"mouseleave\", function NzDropdownMenuComponent_ng_template_0_Template_div_mouseleave_0_listener() {\n i0.ɵɵrestoreView(_r2);\n const ctx_r4 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r4.setMouseState(false));\n });\n i0.ɵɵprojection(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"ant-dropdown-rtl\", ctx_r0.dir === \"rtl\");\n i0.ɵɵproperty(\"ngClass\", ctx_r0.nzOverlayClassName)(\"ngStyle\", ctx_r0.nzOverlayStyle)(\"@slideMotion\", undefined)(\"@.disabled\", !!(ctx_r0.noAnimation == null ? null : ctx_r0.noAnimation.nzNoAnimation))(\"nzNoAnimation\", ctx_r0.noAnimation == null ? null : ctx_r0.noAnimation.nzNoAnimation);\n }\n}\nconst _c0 = [\"*\"];\nconst NZ_CONFIG_MODULE_NAME = 'dropDown';\nconst listOfPositions = [POSITION_MAP.bottomLeft, POSITION_MAP.bottomRight, POSITION_MAP.topRight, POSITION_MAP.topLeft];\nclass NzDropDownDirective {\n setDropdownMenuValue(key, value) {\n if (this.nzDropdownMenu) {\n this.nzDropdownMenu.setValue(key, value);\n }\n }\n constructor(nzConfigService, elementRef, overlay, renderer, viewContainerRef, platform) {\n this.nzConfigService = nzConfigService;\n this.elementRef = elementRef;\n this.overlay = overlay;\n this.renderer = renderer;\n this.viewContainerRef = viewContainerRef;\n this.platform = platform;\n this._nzModuleName = NZ_CONFIG_MODULE_NAME;\n this.overlayRef = null;\n this.destroy$ = new Subject();\n this.positionStrategy = this.overlay.position().flexibleConnectedTo(this.elementRef.nativeElement).withLockedPosition().withTransformOriginOn('.ant-dropdown');\n this.inputVisible$ = new BehaviorSubject(false);\n this.nzTrigger$ = new BehaviorSubject('hover');\n this.overlayClose$ = new Subject();\n this.nzDropdownMenu = null;\n this.nzTrigger = 'hover';\n this.nzMatchWidthElement = null;\n this.nzBackdrop = false;\n this.nzClickHide = true;\n this.nzDisabled = false;\n this.nzVisible = false;\n this.nzOverlayClassName = '';\n this.nzOverlayStyle = {};\n this.nzPlacement = 'bottomLeft';\n this.nzVisibleChange = new EventEmitter();\n }\n ngAfterViewInit() {\n if (this.nzDropdownMenu) {\n const nativeElement = this.elementRef.nativeElement;\n /** host mouse state **/\n const hostMouseState$ = merge(fromEvent(nativeElement, 'mouseenter').pipe(mapTo(true)), fromEvent(nativeElement, 'mouseleave').pipe(mapTo(false)));\n /** menu mouse state **/\n const menuMouseState$ = this.nzDropdownMenu.mouseState$;\n /** merged mouse state **/\n const mergedMouseState$ = merge(menuMouseState$, hostMouseState$);\n /** host click state **/\n const hostClickState$ = fromEvent(nativeElement, 'click').pipe(map(() => !this.nzVisible));\n /** visible state switch by nzTrigger **/\n const visibleStateByTrigger$ = this.nzTrigger$.pipe(switchMap(trigger => {\n if (trigger === 'hover') {\n return mergedMouseState$;\n } else if (trigger === 'click') {\n return hostClickState$;\n } else {\n return EMPTY;\n }\n }));\n const descendantMenuItemClick$ = this.nzDropdownMenu.descendantMenuItemClick$.pipe(filter(() => this.nzClickHide), mapTo(false));\n const domTriggerVisible$ = merge(visibleStateByTrigger$, descendantMenuItemClick$, this.overlayClose$).pipe(filter(() => !this.nzDisabled));\n const visible$ = merge(this.inputVisible$, domTriggerVisible$);\n combineLatest([visible$, this.nzDropdownMenu.isChildSubMenuOpen$]).pipe(map(([visible, sub]) => visible || sub), auditTime(150), distinctUntilChanged(), filter(() => this.platform.isBrowser), takeUntil(this.destroy$)).subscribe(visible => {\n const element = this.nzMatchWidthElement ? this.nzMatchWidthElement.nativeElement : nativeElement;\n const triggerWidth = element.getBoundingClientRect().width;\n if (this.nzVisible !== visible) {\n this.nzVisibleChange.emit(visible);\n }\n this.nzVisible = visible;\n if (visible) {\n /** set up overlayRef **/\n if (!this.overlayRef) {\n /** new overlay **/\n this.overlayRef = this.overlay.create({\n positionStrategy: this.positionStrategy,\n minWidth: triggerWidth,\n disposeOnNavigation: true,\n hasBackdrop: this.nzBackdrop && this.nzTrigger === 'click',\n scrollStrategy: this.overlay.scrollStrategies.reposition()\n });\n merge(this.overlayRef.backdropClick(), this.overlayRef.detachments(), this.overlayRef.outsidePointerEvents().pipe(filter(e => !this.elementRef.nativeElement.contains(e.target))), this.overlayRef.keydownEvents().pipe(filter(e => e.keyCode === ESCAPE && !hasModifierKey(e)))).pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.overlayClose$.next(false);\n });\n } else {\n /** update overlay config **/\n const overlayConfig = this.overlayRef.getConfig();\n overlayConfig.minWidth = triggerWidth;\n }\n /** open dropdown with animation **/\n this.positionStrategy.withPositions([POSITION_MAP[this.nzPlacement], ...listOfPositions]);\n /** reset portal if needed **/\n if (!this.portal || this.portal.templateRef !== this.nzDropdownMenu.templateRef) {\n this.portal = new TemplatePortal(this.nzDropdownMenu.templateRef, this.viewContainerRef);\n }\n this.overlayRef.attach(this.portal);\n } else {\n /** detach overlayRef if needed **/\n if (this.overlayRef) {\n this.overlayRef.detach();\n }\n }\n });\n this.nzDropdownMenu.animationStateChange$.pipe(takeUntil(this.destroy$)).subscribe(event => {\n if (event.toState === 'void') {\n if (this.overlayRef) {\n this.overlayRef.dispose();\n }\n this.overlayRef = null;\n }\n });\n }\n }\n ngOnDestroy() {\n this.destroy$.next(true);\n this.destroy$.complete();\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n }\n ngOnChanges(changes) {\n const {\n nzVisible,\n nzDisabled,\n nzOverlayClassName,\n nzOverlayStyle,\n nzTrigger\n } = changes;\n if (nzTrigger) {\n this.nzTrigger$.next(this.nzTrigger);\n }\n if (nzVisible) {\n this.inputVisible$.next(this.nzVisible);\n }\n if (nzDisabled) {\n const nativeElement = this.elementRef.nativeElement;\n if (this.nzDisabled) {\n this.renderer.setAttribute(nativeElement, 'disabled', '');\n this.inputVisible$.next(false);\n } else {\n this.renderer.removeAttribute(nativeElement, 'disabled');\n }\n }\n if (nzOverlayClassName) {\n this.setDropdownMenuValue('nzOverlayClassName', this.nzOverlayClassName);\n }\n if (nzOverlayStyle) {\n this.setDropdownMenuValue('nzOverlayStyle', this.nzOverlayStyle);\n }\n }\n static {\n this.ɵfac = function NzDropDownDirective_Factory(t) {\n return new (t || NzDropDownDirective)(i0.ɵɵdirectiveInject(i1.NzConfigService), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i2.Overlay), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i3.Platform));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzDropDownDirective,\n selectors: [[\"\", \"nz-dropdown\", \"\"]],\n hostAttrs: [1, \"ant-dropdown-trigger\"],\n inputs: {\n nzDropdownMenu: \"nzDropdownMenu\",\n nzTrigger: \"nzTrigger\",\n nzMatchWidthElement: \"nzMatchWidthElement\",\n nzBackdrop: \"nzBackdrop\",\n nzClickHide: \"nzClickHide\",\n nzDisabled: \"nzDisabled\",\n nzVisible: \"nzVisible\",\n nzOverlayClassName: \"nzOverlayClassName\",\n nzOverlayStyle: \"nzOverlayStyle\",\n nzPlacement: \"nzPlacement\"\n },\n outputs: {\n nzVisibleChange: \"nzVisibleChange\"\n },\n exportAs: [\"nzDropdown\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n__decorate([WithConfig(), InputBoolean()], NzDropDownDirective.prototype, \"nzBackdrop\", void 0);\n__decorate([InputBoolean()], NzDropDownDirective.prototype, \"nzClickHide\", void 0);\n__decorate([InputBoolean()], NzDropDownDirective.prototype, \"nzDisabled\", void 0);\n__decorate([InputBoolean()], NzDropDownDirective.prototype, \"nzVisible\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzDropDownDirective, [{\n type: Directive,\n args: [{\n selector: '[nz-dropdown]',\n exportAs: 'nzDropdown',\n host: {\n class: 'ant-dropdown-trigger'\n },\n standalone: true\n }]\n }], () => [{\n type: i1.NzConfigService\n }, {\n type: i0.ElementRef\n }, {\n type: i2.Overlay\n }, {\n type: i0.Renderer2\n }, {\n type: i0.ViewContainerRef\n }, {\n type: i3.Platform\n }], {\n nzDropdownMenu: [{\n type: Input\n }],\n nzTrigger: [{\n type: Input\n }],\n nzMatchWidthElement: [{\n type: Input\n }],\n nzBackdrop: [{\n type: Input\n }],\n nzClickHide: [{\n type: Input\n }],\n nzDisabled: [{\n type: Input\n }],\n nzVisible: [{\n type: Input\n }],\n nzOverlayClassName: [{\n type: Input\n }],\n nzOverlayStyle: [{\n type: Input\n }],\n nzPlacement: [{\n type: Input\n }],\n nzVisibleChange: [{\n type: Output\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzContextMenuServiceModule {\n static {\n this.ɵfac = function NzContextMenuServiceModule_Factory(t) {\n return new (t || NzContextMenuServiceModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NzContextMenuServiceModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzContextMenuServiceModule, [{\n type: NgModule\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzDropDownADirective {\n constructor() {}\n static {\n this.ɵfac = function NzDropDownADirective_Factory(t) {\n return new (t || NzDropDownADirective)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzDropDownADirective,\n selectors: [[\"a\", \"nz-dropdown\", \"\"]],\n hostAttrs: [1, \"ant-dropdown-link\"],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzDropDownADirective, [{\n type: Directive,\n args: [{\n selector: 'a[nz-dropdown]',\n host: {\n class: 'ant-dropdown-link'\n },\n standalone: true\n }]\n }], () => [], null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzDropdownButtonDirective {\n constructor(renderer, nzButtonGroupComponent, elementRef) {\n this.renderer = renderer;\n this.nzButtonGroupComponent = nzButtonGroupComponent;\n this.elementRef = elementRef;\n }\n ngAfterViewInit() {\n const parentElement = this.renderer.parentNode(this.elementRef.nativeElement);\n if (this.nzButtonGroupComponent && parentElement) {\n this.renderer.addClass(parentElement, 'ant-dropdown-button');\n }\n }\n static {\n this.ɵfac = function NzDropdownButtonDirective_Factory(t) {\n return new (t || NzDropdownButtonDirective)(i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i1$1.NzButtonGroupComponent, 9), i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzDropdownButtonDirective,\n selectors: [[\"\", \"nz-button\", \"\", \"nz-dropdown\", \"\"]],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzDropdownButtonDirective, [{\n type: Directive,\n args: [{\n selector: '[nz-button][nz-dropdown]',\n standalone: true\n }]\n }], () => [{\n type: i0.Renderer2\n }, {\n type: i1$1.NzButtonGroupComponent,\n decorators: [{\n type: Host\n }, {\n type: Optional\n }]\n }, {\n type: i0.ElementRef\n }], null);\n})();\nclass NzDropdownMenuComponent {\n onAnimationEvent(event) {\n this.animationStateChange$.emit(event);\n }\n setMouseState(visible) {\n this.mouseState$.next(visible);\n }\n setValue(key, value) {\n this[key] = value;\n this.cdr.markForCheck();\n }\n constructor(cdr, elementRef, renderer, viewContainerRef, nzMenuService, directionality, noAnimation) {\n this.cdr = cdr;\n this.elementRef = elementRef;\n this.renderer = renderer;\n this.viewContainerRef = viewContainerRef;\n this.nzMenuService = nzMenuService;\n this.directionality = directionality;\n this.noAnimation = noAnimation;\n this.mouseState$ = new BehaviorSubject(false);\n this.isChildSubMenuOpen$ = this.nzMenuService.isChildSubMenuOpen$;\n this.descendantMenuItemClick$ = this.nzMenuService.descendantMenuItemClick$;\n this.animationStateChange$ = new EventEmitter();\n this.nzOverlayClassName = '';\n this.nzOverlayStyle = {};\n this.dir = 'ltr';\n this.destroy$ = new Subject();\n }\n ngOnInit() {\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe(direction => {\n this.dir = direction;\n this.cdr.detectChanges();\n });\n this.dir = this.directionality.value;\n }\n ngAfterContentInit() {\n this.renderer.removeChild(this.renderer.parentNode(this.elementRef.nativeElement), this.elementRef.nativeElement);\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n static {\n this.ɵfac = function NzDropdownMenuComponent_Factory(t) {\n return new (t || NzDropdownMenuComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i1$2.MenuService), i0.ɵɵdirectiveInject(i2$1.Directionality, 8), i0.ɵɵdirectiveInject(i3$1.NzNoAnimationDirective, 9));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzDropdownMenuComponent,\n selectors: [[\"nz-dropdown-menu\"]],\n viewQuery: function NzDropdownMenuComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(TemplateRef, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templateRef = _t.first);\n }\n },\n exportAs: [\"nzDropdownMenu\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([MenuService, /** menu is inside dropdown-menu component **/\n {\n provide: NzIsMenuInsideDropDownToken,\n useValue: true\n }]), i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n consts: [[1, \"ant-dropdown\", 3, \"ngClass\", \"ngStyle\", \"nzNoAnimation\", \"mouseenter\", \"mouseleave\"]],\n template: function NzDropdownMenuComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, NzDropdownMenuComponent_ng_template_0_Template, 2, 7, \"ng-template\");\n }\n },\n dependencies: [NgClass, NgStyle, NzNoAnimationDirective],\n encapsulation: 2,\n data: {\n animation: [slideMotion]\n },\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzDropdownMenuComponent, [{\n type: Component,\n args: [{\n selector: `nz-dropdown-menu`,\n exportAs: `nzDropdownMenu`,\n animations: [slideMotion],\n providers: [MenuService, /** menu is inside dropdown-menu component **/\n {\n provide: NzIsMenuInsideDropDownToken,\n useValue: true\n }],\n template: `\n \n \n \n
\n \n `,\n preserveWhitespaces: false,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, NgStyle, NzNoAnimationDirective],\n standalone: true\n }]\n }], () => [{\n type: i0.ChangeDetectorRef\n }, {\n type: i0.ElementRef\n }, {\n type: i0.Renderer2\n }, {\n type: i0.ViewContainerRef\n }, {\n type: i1$2.MenuService\n }, {\n type: i2$1.Directionality,\n decorators: [{\n type: Optional\n }]\n }, {\n type: i3$1.NzNoAnimationDirective,\n decorators: [{\n type: Host\n }, {\n type: Optional\n }]\n }], {\n templateRef: [{\n type: ViewChild,\n args: [TemplateRef, {\n static: true\n }]\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzDropDownModule {\n static {\n this.ɵfac = function NzDropDownModule_Factory(t) {\n return new (t || NzDropDownModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NzDropDownModule,\n imports: [NzDropDownDirective, NzDropDownADirective, NzDropdownMenuComponent, NzDropdownButtonDirective, NzContextMenuServiceModule],\n exports: [NzMenuModule, NzDropDownDirective, NzDropDownADirective, NzDropdownMenuComponent, NzDropdownButtonDirective]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [NzContextMenuServiceModule, NzMenuModule]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzDropDownModule, [{\n type: NgModule,\n args: [{\n imports: [NzDropDownDirective, NzDropDownADirective, NzDropdownMenuComponent, NzDropdownButtonDirective, NzContextMenuServiceModule],\n exports: [NzMenuModule, NzDropDownDirective, NzDropDownADirective, NzDropdownMenuComponent, NzDropdownButtonDirective]\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst LIST_OF_POSITIONS = [new ConnectionPositionPair({\n originX: 'start',\n originY: 'top'\n}, {\n overlayX: 'start',\n overlayY: 'top'\n}), new ConnectionPositionPair({\n originX: 'start',\n originY: 'top'\n}, {\n overlayX: 'start',\n overlayY: 'bottom'\n}), new ConnectionPositionPair({\n originX: 'start',\n originY: 'top'\n}, {\n overlayX: 'end',\n overlayY: 'bottom'\n}), new ConnectionPositionPair({\n originX: 'start',\n originY: 'top'\n}, {\n overlayX: 'end',\n overlayY: 'top'\n})];\nclass NzContextMenuService {\n constructor(ngZone, overlay) {\n this.ngZone = ngZone;\n this.overlay = overlay;\n this.overlayRef = null;\n this.closeSubscription = Subscription.EMPTY;\n }\n create($event, nzDropdownMenuComponent) {\n this.close(true);\n const {\n x,\n y\n } = $event;\n if ($event instanceof MouseEvent) {\n $event.preventDefault();\n }\n const positionStrategy = this.overlay.position().flexibleConnectedTo({\n x,\n y\n }).withPositions(LIST_OF_POSITIONS).withTransformOriginOn('.ant-dropdown');\n this.overlayRef = this.overlay.create({\n positionStrategy,\n disposeOnNavigation: true,\n scrollStrategy: this.overlay.scrollStrategies.close()\n });\n this.closeSubscription = new Subscription();\n this.closeSubscription.add(nzDropdownMenuComponent.descendantMenuItemClick$.subscribe(() => this.close()));\n this.closeSubscription.add(this.ngZone.runOutsideAngular(() => merge(fromEvent(document, 'click').pipe(filter(event => !!this.overlayRef && !this.overlayRef.overlayElement.contains(event.target)), /** handle firefox contextmenu event **/\n filter(event => event.button !== 2)), fromEvent(document, 'keydown').pipe(filter(event => event.key === 'Escape'))).pipe(first()).subscribe(() => this.ngZone.run(() => this.close()))));\n return this.overlayRef.attach(new TemplatePortal(nzDropdownMenuComponent.templateRef, nzDropdownMenuComponent.viewContainerRef));\n }\n close(clear = false) {\n if (this.overlayRef) {\n this.overlayRef.detach();\n if (clear) {\n this.overlayRef.dispose();\n }\n this.overlayRef = null;\n this.closeSubscription.unsubscribe();\n }\n }\n static {\n this.ɵfac = function NzContextMenuService_Factory(t) {\n return new (t || NzContextMenuService)(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i2.Overlay));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NzContextMenuService,\n factory: NzContextMenuService.ɵfac,\n providedIn: NzContextMenuServiceModule\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzContextMenuService, [{\n type: Injectable,\n args: [{\n providedIn: NzContextMenuServiceModule\n }]\n }], () => [{\n type: i0.NgZone\n }, {\n type: i2.Overlay\n }], null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NzContextMenuService, NzContextMenuServiceModule, NzDropDownADirective, NzDropDownDirective, NzDropDownModule, NzDropdownButtonDirective, NzDropdownMenuComponent };\n"], + "mappings": "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", + "names": [] +} diff --git a/.angular/cache/17.0.7/vite/deps/chunk-55A2ZGND.js b/.angular/cache/17.0.7/vite/deps/chunk-55A2ZGND.js new file mode 100644 index 0000000..d855a3b --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/chunk-55A2ZGND.js @@ -0,0 +1,116 @@ +import { + InputBoolean, + coerceElement +} from "./chunk-M5GY4FCO.js"; +import { + ANIMATION_MODULE_TYPE, + Directive, + ElementRef, + Inject, + Input, + NgModule, + Optional, + Renderer2, + __decorate, + setClassMetadata, + ɵɵNgOnChangesFeature, + ɵɵdefineDirective, + ɵɵdefineInjector, + ɵɵdefineNgModule, + ɵɵdirectiveInject +} from "./chunk-FGESKT7O.js"; + +// node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-no-animation.mjs +var DISABLED_CLASSNAME = "nz-animate-disabled"; +var _NzNoAnimationDirective = class _NzNoAnimationDirective { + constructor(element, renderer, animationType) { + this.element = element; + this.renderer = renderer; + this.animationType = animationType; + this.nzNoAnimation = false; + } + ngOnChanges() { + this.updateClass(); + } + ngAfterViewInit() { + this.updateClass(); + } + updateClass() { + const element = coerceElement(this.element); + if (!element) { + return; + } + if (this.nzNoAnimation || this.animationType === "NoopAnimations") { + this.renderer.addClass(element, DISABLED_CLASSNAME); + } else { + this.renderer.removeClass(element, DISABLED_CLASSNAME); + } + } +}; +_NzNoAnimationDirective.ɵfac = function NzNoAnimationDirective_Factory(t) { + return new (t || _NzNoAnimationDirective)(ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(Renderer2), ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8)); +}; +_NzNoAnimationDirective.ɵdir = ɵɵdefineDirective({ + type: _NzNoAnimationDirective, + selectors: [["", "nzNoAnimation", ""]], + inputs: { + nzNoAnimation: "nzNoAnimation" + }, + exportAs: ["nzNoAnimation"], + standalone: true, + features: [ɵɵNgOnChangesFeature] +}); +var NzNoAnimationDirective = _NzNoAnimationDirective; +__decorate([InputBoolean()], NzNoAnimationDirective.prototype, "nzNoAnimation", void 0); +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzNoAnimationDirective, [{ + type: Directive, + args: [{ + selector: "[nzNoAnimation]", + exportAs: "nzNoAnimation", + standalone: true + }] + }], () => [{ + type: ElementRef + }, { + type: Renderer2 + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Inject, + args: [ANIMATION_MODULE_TYPE] + }] + }], { + nzNoAnimation: [{ + type: Input + }] + }); +})(); +var _NzNoAnimationModule = class _NzNoAnimationModule { +}; +_NzNoAnimationModule.ɵfac = function NzNoAnimationModule_Factory(t) { + return new (t || _NzNoAnimationModule)(); +}; +_NzNoAnimationModule.ɵmod = ɵɵdefineNgModule({ + type: _NzNoAnimationModule, + imports: [NzNoAnimationDirective], + exports: [NzNoAnimationDirective] +}); +_NzNoAnimationModule.ɵinj = ɵɵdefineInjector({}); +var NzNoAnimationModule = _NzNoAnimationModule; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzNoAnimationModule, [{ + type: NgModule, + args: [{ + imports: [NzNoAnimationDirective], + exports: [NzNoAnimationDirective] + }] + }], null, null); +})(); + +export { + NzNoAnimationDirective +}; +//# sourceMappingURL=chunk-55A2ZGND.js.map diff --git a/.angular/cache/17.0.7/vite/deps/chunk-55A2ZGND.js.map b/.angular/cache/17.0.7/vite/deps/chunk-55A2ZGND.js.map new file mode 100644 index 0000000..e5361c8 --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/chunk-55A2ZGND.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-no-animation.mjs"], + "sourcesContent": ["import * as i0 from '@angular/core';\nimport { Directive, Optional, Inject, Input, NgModule } from '@angular/core';\nimport { __decorate } from 'tslib';\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { InputBoolean } from 'ng-zorro-antd/core/util';\nconst DISABLED_CLASSNAME = 'nz-animate-disabled';\nclass NzNoAnimationDirective {\n constructor(element, renderer, animationType) {\n this.element = element;\n this.renderer = renderer;\n this.animationType = animationType;\n this.nzNoAnimation = false;\n }\n ngOnChanges() {\n this.updateClass();\n }\n ngAfterViewInit() {\n this.updateClass();\n }\n updateClass() {\n const element = coerceElement(this.element);\n if (!element) {\n return;\n }\n if (this.nzNoAnimation || this.animationType === 'NoopAnimations') {\n this.renderer.addClass(element, DISABLED_CLASSNAME);\n } else {\n this.renderer.removeClass(element, DISABLED_CLASSNAME);\n }\n }\n static {\n this.ɵfac = function NzNoAnimationDirective_Factory(t) {\n return new (t || NzNoAnimationDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzNoAnimationDirective,\n selectors: [[\"\", \"nzNoAnimation\", \"\"]],\n inputs: {\n nzNoAnimation: \"nzNoAnimation\"\n },\n exportAs: [\"nzNoAnimation\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n__decorate([InputBoolean()], NzNoAnimationDirective.prototype, \"nzNoAnimation\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzNoAnimationDirective, [{\n type: Directive,\n args: [{\n selector: '[nzNoAnimation]',\n exportAs: 'nzNoAnimation',\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: i0.Renderer2\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }]\n }], {\n nzNoAnimation: [{\n type: Input\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzNoAnimationModule {\n static {\n this.ɵfac = function NzNoAnimationModule_Factory(t) {\n return new (t || NzNoAnimationModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NzNoAnimationModule,\n imports: [NzNoAnimationDirective],\n exports: [NzNoAnimationDirective]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzNoAnimationModule, [{\n type: NgModule,\n args: [{\n imports: [NzNoAnimationDirective],\n exports: [NzNoAnimationDirective]\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NzNoAnimationDirective, NzNoAnimationModule };\n"], + "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAM,qBAAqB;AAC3B,IAAM,0BAAN,MAAM,wBAAuB;AAAA,EAC3B,YAAY,SAAS,UAAU,eAAe;AAC5C,SAAK,UAAU;AACf,SAAK,WAAW;AAChB,SAAK,gBAAgB;AACrB,SAAK,gBAAgB;AAAA,EACvB;AAAA,EACA,cAAc;AACZ,SAAK,YAAY;AAAA,EACnB;AAAA,EACA,kBAAkB;AAChB,SAAK,YAAY;AAAA,EACnB;AAAA,EACA,cAAc;AACZ,UAAM,UAAU,cAAc,KAAK,OAAO;AAC1C,QAAI,CAAC,SAAS;AACZ;AAAA,IACF;AACA,QAAI,KAAK,iBAAiB,KAAK,kBAAkB,kBAAkB;AACjE,WAAK,SAAS,SAAS,SAAS,kBAAkB;AAAA,IACpD,OAAO;AACL,WAAK,SAAS,YAAY,SAAS,kBAAkB;AAAA,IACvD;AAAA,EACF;AAkBF;AAhBI,wBAAK,OAAO,SAAS,+BAA+B,GAAG;AACrD,SAAO,KAAK,KAAK,yBAA2B,kBAAqB,UAAU,GAAM,kBAAqB,SAAS,GAAM,kBAAkB,uBAAuB,CAAC,CAAC;AAClK;AAGA,wBAAK,OAAyB,kBAAkB;AAAA,EAC9C,MAAM;AAAA,EACN,WAAW,CAAC,CAAC,IAAI,iBAAiB,EAAE,CAAC;AAAA,EACrC,QAAQ;AAAA,IACN,eAAe;AAAA,EACjB;AAAA,EACA,UAAU,CAAC,eAAe;AAAA,EAC1B,YAAY;AAAA,EACZ,UAAU,CAAI,oBAAoB;AACpC,CAAC;AAvCL,IAAM,yBAAN;AA0CA,WAAW,CAAC,aAAa,CAAC,GAAG,uBAAuB,WAAW,iBAAiB,MAAM;AAAA,CACrF,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,wBAAwB,CAAC;AAAA,IAC/F,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,MACV,UAAU;AAAA,MACV,YAAY;AAAA,IACd,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,CAAC;AAAA,IACT,MAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,IACR,GAAG;AAAA,MACD,MAAM;AAAA,MACN,MAAM,CAAC,qBAAqB;AAAA,IAC9B,CAAC;AAAA,EACH,CAAC,GAAG;AAAA,IACF,eAAe,CAAC;AAAA,MACd,MAAM;AAAA,IACR,CAAC;AAAA,EACH,CAAC;AACH,GAAG;AAMH,IAAM,uBAAN,MAAM,qBAAoB;AAgB1B;AAdI,qBAAK,OAAO,SAAS,4BAA4B,GAAG;AAClD,SAAO,KAAK,KAAK,sBAAqB;AACxC;AAGA,qBAAK,OAAyB,iBAAiB;AAAA,EAC7C,MAAM;AAAA,EACN,SAAS,CAAC,sBAAsB;AAAA,EAChC,SAAS,CAAC,sBAAsB;AAClC,CAAC;AAGD,qBAAK,OAAyB,iBAAiB,CAAC,CAAC;AAdrD,IAAM,sBAAN;AAAA,CAiBC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,qBAAqB,CAAC;AAAA,IAC5F,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,SAAS,CAAC,sBAAsB;AAAA,MAChC,SAAS,CAAC,sBAAsB;AAAA,IAClC,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,IAAI;AAChB,GAAG;", + "names": [] +} diff --git a/.angular/cache/17.0.7/vite/deps/chunk-BXV7YWBX.js b/.angular/cache/17.0.7/vite/deps/chunk-5MZJ5XYV.js similarity index 68% rename from .angular/cache/17.0.7/vite/deps/chunk-BXV7YWBX.js rename to .angular/cache/17.0.7/vite/deps/chunk-5MZJ5XYV.js index 3f0084c..9f95f46 100644 --- a/.angular/cache/17.0.7/vite/deps/chunk-BXV7YWBX.js +++ b/.angular/cache/17.0.7/vite/deps/chunk-5MZJ5XYV.js @@ -1,36 +1,41 @@ import { - CdkConnectedOverlay, - CdkOverlayOrigin, - ConnectionPositionPair, - OverlayModule, + DEFAULT_TOOLTIP_POSITIONS, + NzConnectedOverlayDirective, + NzOverlayModule, + POSITION_MAP, + getPlacementName +} from "./chunk-6RXUTAFR.js"; +import { zoomBigMotion -} from "./chunk-QI6CCAQD.js"; +} from "./chunk-XAGDQPFO.js"; +import { + NzNoAnimationDirective +} from "./chunk-55A2ZGND.js"; +import { + CdkConnectedOverlay, + OverlayModule +} from "./chunk-6U656R5M.js"; import { NzOutletModule, NzStringTemplateOutletDirective } from "./chunk-VOD2PKZN.js"; -import { - NzDestroyService -} from "./chunk-W3IYJMS2.js"; import { NzConfigService, isPresetColor -} from "./chunk-NOIPAY33.js"; +} from "./chunk-ZHMJ6SNN.js"; import { Directionality -} from "./chunk-UPQZZZIG.js"; +} from "./chunk-6NZ2BEBG.js"; import { InputBoolean, - coerceElement, isNotNil, toBoolean -} from "./chunk-7XTJNSRU.js"; +} from "./chunk-M5GY4FCO.js"; import { NgClass, NgStyle } from "./chunk-OSQBUYO6.js"; import { - ANIMATION_MODULE_TYPE, ChangeDetectionStrategy, ChangeDetectorRef, Component, @@ -38,7 +43,6 @@ import { ElementRef, EventEmitter, Host, - Inject, Input, NgModule, Optional, @@ -58,7 +62,6 @@ import { takeUntil, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, - ɵɵProvidersFeature, ɵɵStandaloneFeature, ɵɵadvance, ɵɵclassProp, @@ -88,371 +91,6 @@ import { __spreadValues } from "./chunk-HSNDBVJ3.js"; -// node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-no-animation.mjs -var DISABLED_CLASSNAME = "nz-animate-disabled"; -var _NzNoAnimationDirective = class _NzNoAnimationDirective { - constructor(element, renderer, animationType) { - this.element = element; - this.renderer = renderer; - this.animationType = animationType; - this.nzNoAnimation = false; - } - ngOnChanges() { - this.updateClass(); - } - ngAfterViewInit() { - this.updateClass(); - } - updateClass() { - const element = coerceElement(this.element); - if (!element) { - return; - } - if (this.nzNoAnimation || this.animationType === "NoopAnimations") { - this.renderer.addClass(element, DISABLED_CLASSNAME); - } else { - this.renderer.removeClass(element, DISABLED_CLASSNAME); - } - } -}; -_NzNoAnimationDirective.ɵfac = function NzNoAnimationDirective_Factory(t) { - return new (t || _NzNoAnimationDirective)(ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(Renderer2), ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8)); -}; -_NzNoAnimationDirective.ɵdir = ɵɵdefineDirective({ - type: _NzNoAnimationDirective, - selectors: [["", "nzNoAnimation", ""]], - inputs: { - nzNoAnimation: "nzNoAnimation" - }, - exportAs: ["nzNoAnimation"], - standalone: true, - features: [ɵɵNgOnChangesFeature] -}); -var NzNoAnimationDirective = _NzNoAnimationDirective; -__decorate([InputBoolean()], NzNoAnimationDirective.prototype, "nzNoAnimation", void 0); -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzNoAnimationDirective, [{ - type: Directive, - args: [{ - selector: "[nzNoAnimation]", - exportAs: "nzNoAnimation", - standalone: true - }] - }], () => [{ - type: ElementRef - }, { - type: Renderer2 - }, { - type: void 0, - decorators: [{ - type: Optional - }, { - type: Inject, - args: [ANIMATION_MODULE_TYPE] - }] - }], { - nzNoAnimation: [{ - type: Input - }] - }); -})(); -var _NzNoAnimationModule = class _NzNoAnimationModule { -}; -_NzNoAnimationModule.ɵfac = function NzNoAnimationModule_Factory(t) { - return new (t || _NzNoAnimationModule)(); -}; -_NzNoAnimationModule.ɵmod = ɵɵdefineNgModule({ - type: _NzNoAnimationModule, - imports: [NzNoAnimationDirective], - exports: [NzNoAnimationDirective] -}); -_NzNoAnimationModule.ɵinj = ɵɵdefineInjector({}); -var NzNoAnimationModule = _NzNoAnimationModule; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzNoAnimationModule, [{ - type: NgModule, - args: [{ - imports: [NzNoAnimationDirective], - exports: [NzNoAnimationDirective] - }] - }], null, null); -})(); - -// node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-overlay.mjs -var POSITION_MAP = { - top: new ConnectionPositionPair({ - originX: "center", - originY: "top" - }, { - overlayX: "center", - overlayY: "bottom" - }), - topCenter: new ConnectionPositionPair({ - originX: "center", - originY: "top" - }, { - overlayX: "center", - overlayY: "bottom" - }), - topLeft: new ConnectionPositionPair({ - originX: "start", - originY: "top" - }, { - overlayX: "start", - overlayY: "bottom" - }), - topRight: new ConnectionPositionPair({ - originX: "end", - originY: "top" - }, { - overlayX: "end", - overlayY: "bottom" - }), - right: new ConnectionPositionPair({ - originX: "end", - originY: "center" - }, { - overlayX: "start", - overlayY: "center" - }), - rightTop: new ConnectionPositionPair({ - originX: "end", - originY: "top" - }, { - overlayX: "start", - overlayY: "top" - }), - rightBottom: new ConnectionPositionPair({ - originX: "end", - originY: "bottom" - }, { - overlayX: "start", - overlayY: "bottom" - }), - bottom: new ConnectionPositionPair({ - originX: "center", - originY: "bottom" - }, { - overlayX: "center", - overlayY: "top" - }), - bottomCenter: new ConnectionPositionPair({ - originX: "center", - originY: "bottom" - }, { - overlayX: "center", - overlayY: "top" - }), - bottomLeft: new ConnectionPositionPair({ - originX: "start", - originY: "bottom" - }, { - overlayX: "start", - overlayY: "top" - }), - bottomRight: new ConnectionPositionPair({ - originX: "end", - originY: "bottom" - }, { - overlayX: "end", - overlayY: "top" - }), - left: new ConnectionPositionPair({ - originX: "start", - originY: "center" - }, { - overlayX: "end", - overlayY: "center" - }), - leftTop: new ConnectionPositionPair({ - originX: "start", - originY: "top" - }, { - overlayX: "end", - overlayY: "top" - }), - leftBottom: new ConnectionPositionPair({ - originX: "start", - originY: "bottom" - }, { - overlayX: "end", - overlayY: "bottom" - }) -}; -var DEFAULT_TOOLTIP_POSITIONS = [POSITION_MAP.top, POSITION_MAP.right, POSITION_MAP.bottom, POSITION_MAP.left]; -var DEFAULT_CASCADER_POSITIONS = [POSITION_MAP.bottomLeft, POSITION_MAP.bottomRight, POSITION_MAP.topLeft, POSITION_MAP.topRight, POSITION_MAP.topCenter, POSITION_MAP.bottomCenter]; -var DEFAULT_MENTION_TOP_POSITIONS = [new ConnectionPositionPair({ - originX: "start", - originY: "bottom" -}, { - overlayX: "start", - overlayY: "bottom" -}), new ConnectionPositionPair({ - originX: "start", - originY: "bottom" -}, { - overlayX: "end", - overlayY: "bottom" -})]; -var DEFAULT_MENTION_BOTTOM_POSITIONS = [POSITION_MAP.bottomLeft, new ConnectionPositionPair({ - originX: "start", - originY: "bottom" -}, { - overlayX: "end", - overlayY: "top" -})]; -function getPlacementName(position) { - for (const placement in POSITION_MAP) { - if (position.connectionPair.originX === POSITION_MAP[placement].originX && position.connectionPair.originY === POSITION_MAP[placement].originY && position.connectionPair.overlayX === POSITION_MAP[placement].overlayX && position.connectionPair.overlayY === POSITION_MAP[placement].overlayY) { - return placement; - } - } - return void 0; -} -var DATE_PICKER_POSITION_MAP = { - bottomLeft: new ConnectionPositionPair({ - originX: "start", - originY: "bottom" - }, { - overlayX: "start", - overlayY: "top" - }, void 0, 2), - topLeft: new ConnectionPositionPair({ - originX: "start", - originY: "top" - }, { - overlayX: "start", - overlayY: "bottom" - }, void 0, -2), - bottomRight: new ConnectionPositionPair({ - originX: "end", - originY: "bottom" - }, { - overlayX: "end", - overlayY: "top" - }, void 0, 2), - topRight: new ConnectionPositionPair({ - originX: "end", - originY: "top" - }, { - overlayX: "end", - overlayY: "bottom" - }, void 0, -2) -}; -var DEFAULT_DATE_PICKER_POSITIONS = [DATE_PICKER_POSITION_MAP.bottomLeft, DATE_PICKER_POSITION_MAP.topLeft, DATE_PICKER_POSITION_MAP.bottomRight, DATE_PICKER_POSITION_MAP.topRight]; -var _NzConnectedOverlayDirective = class _NzConnectedOverlayDirective { - constructor(cdkConnectedOverlay, nzDestroyService) { - this.cdkConnectedOverlay = cdkConnectedOverlay; - this.nzDestroyService = nzDestroyService; - this.nzArrowPointAtCenter = false; - this.cdkConnectedOverlay.backdropClass = "nz-overlay-transparent-backdrop"; - this.cdkConnectedOverlay.positionChange.pipe(takeUntil(this.nzDestroyService)).subscribe((position) => { - if (this.nzArrowPointAtCenter) { - this.updateArrowPosition(position); - } - }); - } - updateArrowPosition(position) { - const originRect = this.getOriginRect(); - const placement = getPlacementName(position); - let offsetX = 0; - let offsetY = 0; - if (placement === "topLeft" || placement === "bottomLeft") { - offsetX = originRect.width / 2 - 14; - } else if (placement === "topRight" || placement === "bottomRight") { - offsetX = -(originRect.width / 2 - 14); - } else if (placement === "leftTop" || placement === "rightTop") { - offsetY = originRect.height / 2 - 10; - } else if (placement === "leftBottom" || placement === "rightBottom") { - offsetY = -(originRect.height / 2 - 10); - } - if (this.cdkConnectedOverlay.offsetX !== offsetX || this.cdkConnectedOverlay.offsetY !== offsetY) { - this.cdkConnectedOverlay.offsetY = offsetY; - this.cdkConnectedOverlay.offsetX = offsetX; - this.cdkConnectedOverlay.overlayRef.updatePosition(); - } - } - getFlexibleConnectedPositionStrategyOrigin() { - if (this.cdkConnectedOverlay.origin instanceof CdkOverlayOrigin) { - return this.cdkConnectedOverlay.origin.elementRef; - } else { - return this.cdkConnectedOverlay.origin; - } - } - getOriginRect() { - const origin = this.getFlexibleConnectedPositionStrategyOrigin(); - if (origin instanceof ElementRef) { - return origin.nativeElement.getBoundingClientRect(); - } - if (origin instanceof Element) { - return origin.getBoundingClientRect(); - } - const width = origin.width || 0; - const height = origin.height || 0; - return { - top: origin.y, - bottom: origin.y + height, - left: origin.x, - right: origin.x + width, - height, - width - }; - } -}; -_NzConnectedOverlayDirective.ɵfac = function NzConnectedOverlayDirective_Factory(t) { - return new (t || _NzConnectedOverlayDirective)(ɵɵdirectiveInject(CdkConnectedOverlay), ɵɵdirectiveInject(NzDestroyService)); -}; -_NzConnectedOverlayDirective.ɵdir = ɵɵdefineDirective({ - type: _NzConnectedOverlayDirective, - selectors: [["", "cdkConnectedOverlay", "", "nzConnectedOverlay", ""]], - inputs: { - nzArrowPointAtCenter: "nzArrowPointAtCenter" - }, - exportAs: ["nzConnectedOverlay"], - features: [ɵɵProvidersFeature([NzDestroyService])] -}); -var NzConnectedOverlayDirective = _NzConnectedOverlayDirective; -__decorate([InputBoolean()], NzConnectedOverlayDirective.prototype, "nzArrowPointAtCenter", void 0); -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzConnectedOverlayDirective, [{ - type: Directive, - args: [{ - selector: "[cdkConnectedOverlay][nzConnectedOverlay]", - exportAs: "nzConnectedOverlay", - providers: [NzDestroyService] - }] - }], () => [{ - type: CdkConnectedOverlay - }, { - type: NzDestroyService - }], { - nzArrowPointAtCenter: [{ - type: Input - }] - }); -})(); -var _NzOverlayModule = class _NzOverlayModule { -}; -_NzOverlayModule.ɵfac = function NzOverlayModule_Factory(t) { - return new (t || _NzOverlayModule)(); -}; -_NzOverlayModule.ɵmod = ɵɵdefineNgModule({ - type: _NzOverlayModule, - declarations: [NzConnectedOverlayDirective], - exports: [NzConnectedOverlayDirective] -}); -_NzOverlayModule.ɵinj = ɵɵdefineInjector({}); -var NzOverlayModule = _NzOverlayModule; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzOverlayModule, [{ - type: NgModule, - args: [{ - declarations: [NzConnectedOverlayDirective], - exports: [NzConnectedOverlayDirective] - }] - }], null, null); -})(); - // node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-tooltip.mjs var _c0 = ["overlay"]; function NzToolTipComponent_ng_template_0_ng_container_5_Template(rf, ctx) { @@ -1150,4 +788,4 @@ export { NzTooltipDirective, NzToolTipModule }; -//# sourceMappingURL=chunk-BXV7YWBX.js.map +//# sourceMappingURL=chunk-5MZJ5XYV.js.map diff --git a/.angular/cache/17.0.7/vite/deps/chunk-5MZJ5XYV.js.map b/.angular/cache/17.0.7/vite/deps/chunk-5MZJ5XYV.js.map new file mode 100644 index 0000000..4ab1ce7 --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/chunk-5MZJ5XYV.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-tooltip.mjs"], + "sourcesContent": ["import { __decorate } from 'tslib';\nimport * as i3$1 from '@angular/cdk/overlay';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { NgClass, NgStyle } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Directive, Optional, ViewChild, TemplateRef, Host, Input, Output, Component, ChangeDetectionStrategy, ViewEncapsulation, NgModule } from '@angular/core';\nimport { zoomBigMotion } from 'ng-zorro-antd/core/animation';\nimport { isPresetColor } from 'ng-zorro-antd/core/color';\nimport * as i1 from 'ng-zorro-antd/core/no-animation';\nimport { NzNoAnimationDirective } from 'ng-zorro-antd/core/no-animation';\nimport * as i4 from 'ng-zorro-antd/core/outlet';\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport * as i5 from 'ng-zorro-antd/core/overlay';\nimport { POSITION_MAP, DEFAULT_TOOLTIP_POSITIONS, getPlacementName, NzOverlayModule } from 'ng-zorro-antd/core/overlay';\nimport { toBoolean, isNotNil, InputBoolean } from 'ng-zorro-antd/core/util';\nimport { Subject, asapScheduler } from 'rxjs';\nimport { distinctUntilChanged, takeUntil, filter, delay } from 'rxjs/operators';\nimport * as i2 from 'ng-zorro-antd/core/config';\nimport * as i3 from '@angular/cdk/bidi';\nconst _c0 = [\"overlay\"];\nfunction NzToolTipComponent_ng_template_0_ng_container_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtext(1);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(1);\n i0.ɵɵtextInterpolate(ctx_r2.nzTitle);\n }\n}\nfunction NzToolTipComponent_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 2)(1, \"div\", 3)(2, \"div\", 4);\n i0.ɵɵelement(3, \"span\", 5);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(4, \"div\", 6);\n i0.ɵɵtemplate(5, NzToolTipComponent_ng_template_0_ng_container_5_Template, 2, 1, \"ng-container\", 7);\n i0.ɵɵelementEnd()()();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"ant-tooltip-rtl\", ctx_r0.dir === \"rtl\");\n i0.ɵɵproperty(\"ngClass\", ctx_r0._classMap)(\"ngStyle\", ctx_r0.nzOverlayStyle)(\"@.disabled\", !!(ctx_r0.noAnimation == null ? null : ctx_r0.noAnimation.nzNoAnimation))(\"nzNoAnimation\", ctx_r0.noAnimation == null ? null : ctx_r0.noAnimation.nzNoAnimation)(\"@zoomBigMotion\", \"active\");\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngStyle\", ctx_r0._contentStyleMap);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngStyle\", ctx_r0._contentStyleMap);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"nzStringTemplateOutlet\", ctx_r0.nzTitle)(\"nzStringTemplateOutletContext\", ctx_r0.nzTitleContext);\n }\n}\nclass NzTooltipBaseDirective {\n /**\n * This true title that would be used in other parts on this component.\n */\n get _title() {\n return this.title || this.directiveTitle || null;\n }\n get _content() {\n return this.content || this.directiveContent || null;\n }\n get _trigger() {\n return typeof this.trigger !== 'undefined' ? this.trigger : 'hover';\n }\n get _placement() {\n const p = this.placement;\n return Array.isArray(p) && p.length > 0 ? p : typeof p === 'string' && p ? [p] : ['top'];\n }\n get _visible() {\n return (typeof this.visible !== 'undefined' ? this.visible : this.internalVisible) || false;\n }\n get _mouseEnterDelay() {\n return this.mouseEnterDelay || 0.15;\n }\n get _mouseLeaveDelay() {\n return this.mouseLeaveDelay || 0.1;\n }\n get _overlayClassName() {\n return this.overlayClassName || null;\n }\n get _overlayStyle() {\n return this.overlayStyle || null;\n }\n getProxyPropertyMap() {\n return {\n noAnimation: ['noAnimation', () => !!this.noAnimation]\n };\n }\n constructor(elementRef, hostView, renderer, noAnimation, nzConfigService) {\n this.elementRef = elementRef;\n this.hostView = hostView;\n this.renderer = renderer;\n this.noAnimation = noAnimation;\n this.nzConfigService = nzConfigService;\n this.visibleChange = new EventEmitter();\n this.internalVisible = false;\n this.destroy$ = new Subject();\n this.triggerDisposables = [];\n }\n ngOnChanges(changes) {\n const {\n trigger\n } = changes;\n if (trigger && !trigger.isFirstChange()) {\n this.registerTriggers();\n }\n if (this.component) {\n this.updatePropertiesByChanges(changes);\n }\n }\n ngAfterViewInit() {\n this.createComponent();\n this.registerTriggers();\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n // Clear toggling timer. Issue #3875 #4317 #4386\n this.clearTogglingTimer();\n this.removeTriggerListeners();\n }\n show() {\n this.component?.show();\n }\n hide() {\n this.component?.hide();\n }\n /**\n * Force the component to update its position.\n */\n updatePosition() {\n if (this.component) {\n this.component.updatePosition();\n }\n }\n /**\n * Create a dynamic tooltip component. This method can be override.\n */\n createComponent() {\n const componentRef = this.componentRef;\n this.component = componentRef.instance;\n // Remove the component's DOM because it should be in the overlay container.\n this.renderer.removeChild(this.renderer.parentNode(this.elementRef.nativeElement), componentRef.location.nativeElement);\n this.component.setOverlayOrigin(this.origin || this.elementRef);\n this.initProperties();\n const ngVisibleChange$ = this.component.nzVisibleChange.pipe(distinctUntilChanged());\n ngVisibleChange$.pipe(takeUntil(this.destroy$)).subscribe(visible => {\n this.internalVisible = visible;\n this.visibleChange.emit(visible);\n });\n // In some cases, the rendering takes into account the height at which the `arrow` is in wrong place,\n // so `cdk` sets the container position incorrectly.\n // To avoid this, after placing the `arrow` in the correct position, we should `re-calculate` the position of the `overlay`.\n ngVisibleChange$.pipe(filter(visible => visible), delay(0, asapScheduler), filter(() => Boolean(this.component?.overlay?.overlayRef)), takeUntil(this.destroy$)).subscribe(() => {\n this.component?.updatePosition();\n });\n }\n registerTriggers() {\n // When the method gets invoked, all properties has been synced to the dynamic component.\n // After removing the old API, we can just check the directive's own `nzTrigger`.\n const el = this.elementRef.nativeElement;\n const trigger = this.trigger;\n this.removeTriggerListeners();\n if (trigger === 'hover') {\n let overlayElement;\n this.triggerDisposables.push(this.renderer.listen(el, 'mouseenter', () => {\n this.delayEnterLeave(true, true, this._mouseEnterDelay);\n }));\n this.triggerDisposables.push(this.renderer.listen(el, 'mouseleave', () => {\n this.delayEnterLeave(true, false, this._mouseLeaveDelay);\n if (this.component?.overlay.overlayRef && !overlayElement) {\n overlayElement = this.component.overlay.overlayRef.overlayElement;\n this.triggerDisposables.push(this.renderer.listen(overlayElement, 'mouseenter', () => {\n this.delayEnterLeave(false, true, this._mouseEnterDelay);\n }));\n this.triggerDisposables.push(this.renderer.listen(overlayElement, 'mouseleave', () => {\n this.delayEnterLeave(false, false, this._mouseLeaveDelay);\n }));\n }\n }));\n } else if (trigger === 'focus') {\n this.triggerDisposables.push(this.renderer.listen(el, 'focusin', () => this.show()));\n this.triggerDisposables.push(this.renderer.listen(el, 'focusout', () => this.hide()));\n } else if (trigger === 'click') {\n this.triggerDisposables.push(this.renderer.listen(el, 'click', e => {\n e.preventDefault();\n this.show();\n }));\n }\n // Else do nothing because user wants to control the visibility programmatically.\n }\n\n updatePropertiesByChanges(changes) {\n this.updatePropertiesByKeys(Object.keys(changes));\n }\n updatePropertiesByKeys(keys) {\n const mappingProperties = {\n // common mappings\n title: ['nzTitle', () => this._title],\n directiveTitle: ['nzTitle', () => this._title],\n content: ['nzContent', () => this._content],\n directiveContent: ['nzContent', () => this._content],\n trigger: ['nzTrigger', () => this._trigger],\n placement: ['nzPlacement', () => this._placement],\n visible: ['nzVisible', () => this._visible],\n mouseEnterDelay: ['nzMouseEnterDelay', () => this._mouseEnterDelay],\n mouseLeaveDelay: ['nzMouseLeaveDelay', () => this._mouseLeaveDelay],\n overlayClassName: ['nzOverlayClassName', () => this._overlayClassName],\n overlayStyle: ['nzOverlayStyle', () => this._overlayStyle],\n arrowPointAtCenter: ['nzArrowPointAtCenter', () => this.arrowPointAtCenter],\n cdkConnectedOverlayPush: ['cdkConnectedOverlayPush', () => this.cdkConnectedOverlayPush],\n ...this.getProxyPropertyMap()\n };\n (keys || Object.keys(mappingProperties).filter(key => !key.startsWith('directive'))).forEach(property => {\n if (mappingProperties[property]) {\n const [name, valueFn] = mappingProperties[property];\n this.updateComponentValue(name, valueFn());\n }\n });\n this.component?.updateByDirective();\n }\n initProperties() {\n this.updatePropertiesByKeys();\n }\n updateComponentValue(key, value) {\n if (typeof value !== 'undefined') {\n // @ts-ignore\n this.component[key] = value;\n }\n }\n delayEnterLeave(isOrigin, isEnter, delay = -1) {\n if (this.delayTimer) {\n this.clearTogglingTimer();\n } else if (delay > 0) {\n this.delayTimer = setTimeout(() => {\n this.delayTimer = undefined;\n isEnter ? this.show() : this.hide();\n }, delay * 1000);\n } else {\n // `isOrigin` is used due to the tooltip will not hide immediately\n // (may caused by the fade-out animation).\n isEnter && isOrigin ? this.show() : this.hide();\n }\n }\n removeTriggerListeners() {\n this.triggerDisposables.forEach(dispose => dispose());\n this.triggerDisposables.length = 0;\n }\n clearTogglingTimer() {\n if (this.delayTimer) {\n clearTimeout(this.delayTimer);\n this.delayTimer = undefined;\n }\n }\n static {\n this.ɵfac = function NzTooltipBaseDirective_Factory(t) {\n return new (t || NzTooltipBaseDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i1.NzNoAnimationDirective), i0.ɵɵdirectiveInject(i2.NzConfigService));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzTooltipBaseDirective,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzTooltipBaseDirective, [{\n type: Directive\n }], () => [{\n type: i0.ElementRef\n }, {\n type: i0.ViewContainerRef\n }, {\n type: i0.Renderer2\n }, {\n type: i1.NzNoAnimationDirective\n }, {\n type: i2.NzConfigService\n }], null);\n})();\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nclass NzTooltipBaseComponent {\n set nzVisible(value) {\n const visible = toBoolean(value);\n if (this._visible !== visible) {\n this._visible = visible;\n this.nzVisibleChange.next(visible);\n }\n }\n get nzVisible() {\n return this._visible;\n }\n set nzTrigger(value) {\n this._trigger = value;\n }\n get nzTrigger() {\n return this._trigger;\n }\n set nzPlacement(value) {\n const preferredPosition = value.map(placement => POSITION_MAP[placement]);\n this._positions = [...preferredPosition, ...DEFAULT_TOOLTIP_POSITIONS];\n }\n constructor(cdr, directionality, noAnimation) {\n this.cdr = cdr;\n this.directionality = directionality;\n this.noAnimation = noAnimation;\n this.nzTitle = null;\n this.nzContent = null;\n this.nzArrowPointAtCenter = false;\n this.nzOverlayStyle = {};\n this.nzBackdrop = false;\n this.cdkConnectedOverlayPush = true;\n this.nzVisibleChange = new Subject();\n this._visible = false;\n this._trigger = 'hover';\n this.preferredPlacement = 'top';\n this.dir = 'ltr';\n this._classMap = {};\n this._prefix = 'ant-tooltip';\n this._positions = [...DEFAULT_TOOLTIP_POSITIONS];\n this.destroy$ = new Subject();\n }\n ngOnInit() {\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe(direction => {\n this.dir = direction;\n this.cdr.detectChanges();\n });\n this.dir = this.directionality.value;\n }\n ngOnDestroy() {\n this.nzVisibleChange.complete();\n this.destroy$.next();\n this.destroy$.complete();\n }\n show() {\n if (this.nzVisible) {\n return;\n }\n if (!this.isEmpty()) {\n this.nzVisible = true;\n this.nzVisibleChange.next(true);\n this.cdr.detectChanges();\n }\n // for ltr for overlay to display tooltip in correct placement in rtl direction.\n if (this.origin && this.overlay && this.overlay.overlayRef && this.overlay.overlayRef.getDirection() === 'rtl') {\n this.overlay.overlayRef.setDirection('ltr');\n }\n }\n hide() {\n if (!this.nzVisible) {\n return;\n }\n this.nzVisible = false;\n this.nzVisibleChange.next(false);\n this.cdr.detectChanges();\n }\n updateByDirective() {\n this.updateStyles();\n this.cdr.detectChanges();\n Promise.resolve().then(() => {\n this.updatePosition();\n this.updateVisibilityByTitle();\n });\n }\n /**\n * Force the component to update its position.\n */\n updatePosition() {\n if (this.origin && this.overlay && this.overlay.overlayRef) {\n this.overlay.overlayRef.updatePosition();\n }\n }\n onPositionChange(position) {\n this.preferredPlacement = getPlacementName(position);\n this.updateStyles();\n // We have to trigger immediate change detection or the element would blink.\n this.cdr.detectChanges();\n }\n setOverlayOrigin(origin) {\n this.origin = origin;\n this.cdr.markForCheck();\n }\n onClickOutside(event) {\n if (!this.origin.nativeElement.contains(event.target) && this.nzTrigger !== null) {\n this.hide();\n }\n }\n /**\n * Hide the component while the content is empty.\n */\n updateVisibilityByTitle() {\n if (this.isEmpty()) {\n this.hide();\n }\n }\n updateStyles() {\n this._classMap = {\n [this.nzOverlayClassName]: true,\n [`${this._prefix}-placement-${this.preferredPlacement}`]: true\n };\n }\n static {\n this.ɵfac = function NzTooltipBaseComponent_Factory(t) {\n return new (t || NzTooltipBaseComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i3.Directionality, 8), i0.ɵɵdirectiveInject(i1.NzNoAnimationDirective));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzTooltipBaseComponent,\n viewQuery: function NzTooltipBaseComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c0, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.overlay = _t.first);\n }\n }\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzTooltipBaseComponent, [{\n type: Directive\n }], () => [{\n type: i0.ChangeDetectorRef\n }, {\n type: i3.Directionality,\n decorators: [{\n type: Optional\n }]\n }, {\n type: i1.NzNoAnimationDirective\n }], {\n overlay: [{\n type: ViewChild,\n args: ['overlay', {\n static: false\n }]\n }]\n });\n})();\nfunction isTooltipEmpty(value) {\n return value instanceof TemplateRef ? false : value === '' || !isNotNil(value);\n}\nclass NzTooltipDirective extends NzTooltipBaseDirective {\n constructor(elementRef, hostView, renderer, noAnimation) {\n super(elementRef, hostView, renderer, noAnimation);\n this.titleContext = null;\n this.trigger = 'hover';\n this.placement = 'top';\n this.cdkConnectedOverlayPush = true;\n // eslint-disable-next-line @angular-eslint/no-output-rename\n this.visibleChange = new EventEmitter();\n this.componentRef = this.hostView.createComponent(NzToolTipComponent);\n }\n getProxyPropertyMap() {\n return {\n ...super.getProxyPropertyMap(),\n nzTooltipColor: ['nzColor', () => this.nzTooltipColor],\n titleContext: ['nzTitleContext', () => this.titleContext]\n };\n }\n static {\n this.ɵfac = function NzTooltipDirective_Factory(t) {\n return new (t || NzTooltipDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i1.NzNoAnimationDirective, 9));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzTooltipDirective,\n selectors: [[\"\", \"nz-tooltip\", \"\"]],\n hostVars: 2,\n hostBindings: function NzTooltipDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"ant-tooltip-open\", ctx.visible);\n }\n },\n inputs: {\n title: [\"nzTooltipTitle\", \"title\"],\n titleContext: [\"nzTooltipTitleContext\", \"titleContext\"],\n directiveTitle: [\"nz-tooltip\", \"directiveTitle\"],\n trigger: [\"nzTooltipTrigger\", \"trigger\"],\n placement: [\"nzTooltipPlacement\", \"placement\"],\n origin: [\"nzTooltipOrigin\", \"origin\"],\n visible: [\"nzTooltipVisible\", \"visible\"],\n mouseEnterDelay: [\"nzTooltipMouseEnterDelay\", \"mouseEnterDelay\"],\n mouseLeaveDelay: [\"nzTooltipMouseLeaveDelay\", \"mouseLeaveDelay\"],\n overlayClassName: [\"nzTooltipOverlayClassName\", \"overlayClassName\"],\n overlayStyle: [\"nzTooltipOverlayStyle\", \"overlayStyle\"],\n arrowPointAtCenter: [\"nzTooltipArrowPointAtCenter\", \"arrowPointAtCenter\"],\n cdkConnectedOverlayPush: \"cdkConnectedOverlayPush\",\n nzTooltipColor: \"nzTooltipColor\"\n },\n outputs: {\n visibleChange: \"nzTooltipVisibleChange\"\n },\n exportAs: [\"nzTooltip\"],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n }\n}\n__decorate([InputBoolean()], NzTooltipDirective.prototype, \"arrowPointAtCenter\", void 0);\n__decorate([InputBoolean()], NzTooltipDirective.prototype, \"cdkConnectedOverlayPush\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzTooltipDirective, [{\n type: Directive,\n args: [{\n selector: '[nz-tooltip]',\n exportAs: 'nzTooltip',\n host: {\n '[class.ant-tooltip-open]': 'visible'\n },\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: i0.ViewContainerRef\n }, {\n type: i0.Renderer2\n }, {\n type: i1.NzNoAnimationDirective,\n decorators: [{\n type: Host\n }, {\n type: Optional\n }]\n }], {\n title: [{\n type: Input,\n args: ['nzTooltipTitle']\n }],\n titleContext: [{\n type: Input,\n args: ['nzTooltipTitleContext']\n }],\n directiveTitle: [{\n type: Input,\n args: ['nz-tooltip']\n }],\n trigger: [{\n type: Input,\n args: ['nzTooltipTrigger']\n }],\n placement: [{\n type: Input,\n args: ['nzTooltipPlacement']\n }],\n origin: [{\n type: Input,\n args: ['nzTooltipOrigin']\n }],\n visible: [{\n type: Input,\n args: ['nzTooltipVisible']\n }],\n mouseEnterDelay: [{\n type: Input,\n args: ['nzTooltipMouseEnterDelay']\n }],\n mouseLeaveDelay: [{\n type: Input,\n args: ['nzTooltipMouseLeaveDelay']\n }],\n overlayClassName: [{\n type: Input,\n args: ['nzTooltipOverlayClassName']\n }],\n overlayStyle: [{\n type: Input,\n args: ['nzTooltipOverlayStyle']\n }],\n arrowPointAtCenter: [{\n type: Input,\n args: ['nzTooltipArrowPointAtCenter']\n }],\n cdkConnectedOverlayPush: [{\n type: Input\n }],\n nzTooltipColor: [{\n type: Input\n }],\n visibleChange: [{\n type: Output,\n args: ['nzTooltipVisibleChange']\n }]\n });\n})();\nclass NzToolTipComponent extends NzTooltipBaseComponent {\n constructor(cdr, directionality, noAnimation) {\n super(cdr, directionality, noAnimation);\n this.nzTitle = null;\n this.nzTitleContext = null;\n this._contentStyleMap = {};\n }\n isEmpty() {\n return isTooltipEmpty(this.nzTitle);\n }\n updateStyles() {\n const isColorPreset = this.nzColor && isPresetColor(this.nzColor);\n this._classMap = {\n [this.nzOverlayClassName]: true,\n [`${this._prefix}-placement-${this.preferredPlacement}`]: true,\n [`${this._prefix}-${this.nzColor}`]: isColorPreset\n };\n this._contentStyleMap = {\n backgroundColor: !!this.nzColor && !isColorPreset ? this.nzColor : null,\n '--color': this.nzColor\n };\n }\n static {\n this.ɵfac = function NzToolTipComponent_Factory(t) {\n return new (t || NzToolTipComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i3.Directionality, 8), i0.ɵɵdirectiveInject(i1.NzNoAnimationDirective, 9));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzToolTipComponent,\n selectors: [[\"nz-tooltip\"]],\n exportAs: [\"nzTooltipComponent\"],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 2,\n vars: 5,\n consts: [[\"cdkConnectedOverlay\", \"\", \"nzConnectedOverlay\", \"\", 3, \"cdkConnectedOverlayOrigin\", \"cdkConnectedOverlayOpen\", \"cdkConnectedOverlayPositions\", \"cdkConnectedOverlayPush\", \"nzArrowPointAtCenter\", \"overlayOutsideClick\", \"detach\", \"positionChange\"], [\"overlay\", \"cdkConnectedOverlay\"], [1, \"ant-tooltip\", 3, \"ngClass\", \"ngStyle\", \"nzNoAnimation\"], [1, \"ant-tooltip-content\"], [1, \"ant-tooltip-arrow\"], [1, \"ant-tooltip-arrow-content\", 3, \"ngStyle\"], [1, \"ant-tooltip-inner\", 3, \"ngStyle\"], [4, \"nzStringTemplateOutlet\", \"nzStringTemplateOutletContext\"]],\n template: function NzToolTipComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NzToolTipComponent_ng_template_0_Template, 6, 11, \"ng-template\", 0, 1, i0.ɵɵtemplateRefExtractor);\n i0.ɵɵlistener(\"overlayOutsideClick\", function NzToolTipComponent_Template_ng_template_overlayOutsideClick_0_listener($event) {\n return ctx.onClickOutside($event);\n })(\"detach\", function NzToolTipComponent_Template_ng_template_detach_0_listener() {\n return ctx.hide();\n })(\"positionChange\", function NzToolTipComponent_Template_ng_template_positionChange_0_listener($event) {\n return ctx.onPositionChange($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"cdkConnectedOverlayOrigin\", ctx.origin)(\"cdkConnectedOverlayOpen\", ctx._visible)(\"cdkConnectedOverlayPositions\", ctx._positions)(\"cdkConnectedOverlayPush\", ctx.cdkConnectedOverlayPush)(\"nzArrowPointAtCenter\", ctx.nzArrowPointAtCenter);\n }\n },\n dependencies: [OverlayModule, i3$1.CdkConnectedOverlay, NgClass, NgStyle, NzNoAnimationDirective, NzOutletModule, i4.NzStringTemplateOutletDirective, NzOverlayModule, i5.NzConnectedOverlayDirective],\n encapsulation: 2,\n data: {\n animation: [zoomBigMotion]\n },\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzToolTipComponent, [{\n type: Component,\n args: [{\n selector: 'nz-tooltip',\n exportAs: 'nzTooltipComponent',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [zoomBigMotion],\n template: `\n \n \n
\n
\n \n
\n
\n {{ nzTitle }}\n
\n
\n \n \n `,\n preserveWhitespaces: false,\n imports: [OverlayModule, NgClass, NgStyle, NzNoAnimationDirective, NzOutletModule, NzOverlayModule],\n standalone: true\n }]\n }], () => [{\n type: i0.ChangeDetectorRef\n }, {\n type: i3.Directionality,\n decorators: [{\n type: Optional\n }]\n }, {\n type: i1.NzNoAnimationDirective,\n decorators: [{\n type: Host\n }, {\n type: Optional\n }]\n }], null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzToolTipModule {\n static {\n this.ɵfac = function NzToolTipModule_Factory(t) {\n return new (t || NzToolTipModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NzToolTipModule,\n imports: [NzToolTipComponent, NzTooltipDirective],\n exports: [NzToolTipComponent, NzTooltipDirective]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [NzToolTipComponent]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzToolTipModule, [{\n type: NgModule,\n args: [{\n imports: [NzToolTipComponent, NzTooltipDirective],\n exports: [NzToolTipComponent, NzTooltipDirective]\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NzToolTipComponent, NzToolTipModule, NzTooltipBaseComponent, NzTooltipBaseDirective, NzTooltipDirective, isTooltipEmpty };\n"], + "mappings": "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", + "names": ["delay"] +} diff --git a/.angular/cache/17.0.7/vite/deps/chunk-6NZ2BEBG.js b/.angular/cache/17.0.7/vite/deps/chunk-6NZ2BEBG.js new file mode 100644 index 0000000..f47600f --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/chunk-6NZ2BEBG.js @@ -0,0 +1,185 @@ +import { + DOCUMENT +} from "./chunk-OSQBUYO6.js"; +import { + Directive, + EventEmitter, + Inject, + Injectable, + InjectionToken, + Input, + NgModule, + Optional, + Output, + inject, + setClassMetadata, + ɵɵProvidersFeature, + ɵɵattribute, + ɵɵdefineDirective, + ɵɵdefineInjectable, + ɵɵdefineInjector, + ɵɵdefineNgModule, + ɵɵinject +} from "./chunk-FGESKT7O.js"; + +// node_modules/@angular/cdk/fesm2022/bidi.mjs +var DIR_DOCUMENT = new InjectionToken("cdk-dir-doc", { + providedIn: "root", + factory: DIR_DOCUMENT_FACTORY +}); +function DIR_DOCUMENT_FACTORY() { + return inject(DOCUMENT); +} +var RTL_LOCALE_PATTERN = /^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i; +function _resolveDirectionality(rawValue) { + const value = rawValue?.toLowerCase() || ""; + if (value === "auto" && typeof navigator !== "undefined" && navigator?.language) { + return RTL_LOCALE_PATTERN.test(navigator.language) ? "rtl" : "ltr"; + } + return value === "rtl" ? "rtl" : "ltr"; +} +var _Directionality = class _Directionality { + constructor(_document) { + this.value = "ltr"; + this.change = new EventEmitter(); + if (_document) { + const bodyDir = _document.body ? _document.body.dir : null; + const htmlDir = _document.documentElement ? _document.documentElement.dir : null; + this.value = _resolveDirectionality(bodyDir || htmlDir || "ltr"); + } + } + ngOnDestroy() { + this.change.complete(); + } +}; +_Directionality.ɵfac = function Directionality_Factory(t) { + return new (t || _Directionality)(ɵɵinject(DIR_DOCUMENT, 8)); +}; +_Directionality.ɵprov = ɵɵdefineInjectable({ + token: _Directionality, + factory: _Directionality.ɵfac, + providedIn: "root" +}); +var Directionality = _Directionality; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Directionality, [{ + type: Injectable, + args: [{ + providedIn: "root" + }] + }], () => [{ + type: void 0, + decorators: [{ + type: Optional + }, { + type: Inject, + args: [DIR_DOCUMENT] + }] + }], null); +})(); +var _Dir = class _Dir { + constructor() { + this._dir = "ltr"; + this._isInitialized = false; + this.change = new EventEmitter(); + } + /** @docs-private */ + get dir() { + return this._dir; + } + set dir(value) { + const previousValue = this._dir; + this._dir = _resolveDirectionality(value); + this._rawDir = value; + if (previousValue !== this._dir && this._isInitialized) { + this.change.emit(this._dir); + } + } + /** Current layout direction of the element. */ + get value() { + return this.dir; + } + /** Initialize once default value has been set. */ + ngAfterContentInit() { + this._isInitialized = true; + } + ngOnDestroy() { + this.change.complete(); + } +}; +_Dir.ɵfac = function Dir_Factory(t) { + return new (t || _Dir)(); +}; +_Dir.ɵdir = ɵɵdefineDirective({ + type: _Dir, + selectors: [["", "dir", ""]], + hostVars: 1, + hostBindings: function Dir_HostBindings(rf, ctx) { + if (rf & 2) { + ɵɵattribute("dir", ctx._rawDir); + } + }, + inputs: { + dir: "dir" + }, + outputs: { + change: "dirChange" + }, + exportAs: ["dir"], + features: [ɵɵProvidersFeature([{ + provide: Directionality, + useExisting: _Dir + }])] +}); +var Dir = _Dir; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Dir, [{ + type: Directive, + args: [{ + selector: "[dir]", + providers: [{ + provide: Directionality, + useExisting: Dir + }], + host: { + "[attr.dir]": "_rawDir" + }, + exportAs: "dir" + }] + }], null, { + change: [{ + type: Output, + args: ["dirChange"] + }], + dir: [{ + type: Input + }] + }); +})(); +var _BidiModule = class _BidiModule { +}; +_BidiModule.ɵfac = function BidiModule_Factory(t) { + return new (t || _BidiModule)(); +}; +_BidiModule.ɵmod = ɵɵdefineNgModule({ + type: _BidiModule, + declarations: [Dir], + exports: [Dir] +}); +_BidiModule.ɵinj = ɵɵdefineInjector({}); +var BidiModule = _BidiModule; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(BidiModule, [{ + type: NgModule, + args: [{ + exports: [Dir], + declarations: [Dir] + }] + }], null, null); +})(); + +export { + Directionality, + BidiModule +}; +//# sourceMappingURL=chunk-6NZ2BEBG.js.map diff --git a/.angular/cache/17.0.7/vite/deps/chunk-6NZ2BEBG.js.map b/.angular/cache/17.0.7/vite/deps/chunk-6NZ2BEBG.js.map new file mode 100644 index 0000000..c8d1bc8 --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/chunk-6NZ2BEBG.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../node_modules/@angular/cdk/fesm2022/bidi.mjs"], + "sourcesContent": ["import * as i0 from '@angular/core';\nimport { InjectionToken, inject, EventEmitter, Injectable, Optional, Inject, Directive, Output, Input, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * Injection token used to inject the document into Directionality.\n * This is used so that the value can be faked in tests.\n *\n * We can't use the real document in tests because changing the real `dir` causes geometry-based\n * tests in Safari to fail.\n *\n * We also can't re-provide the DOCUMENT token from platform-browser because the unit tests\n * themselves use things like `querySelector` in test code.\n *\n * This token is defined in a separate file from Directionality as a workaround for\n * https://github.com/angular/angular/issues/22559\n *\n * @docs-private\n */\nconst DIR_DOCUMENT = new InjectionToken('cdk-dir-doc', {\n providedIn: 'root',\n factory: DIR_DOCUMENT_FACTORY\n});\n/** @docs-private */\nfunction DIR_DOCUMENT_FACTORY() {\n return inject(DOCUMENT);\n}\n\n/** Regex that matches locales with an RTL script. Taken from `goog.i18n.bidi.isRtlLanguage`. */\nconst RTL_LOCALE_PATTERN = /^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;\n/** Resolves a string value to a specific direction. */\nfunction _resolveDirectionality(rawValue) {\n const value = rawValue?.toLowerCase() || '';\n if (value === 'auto' && typeof navigator !== 'undefined' && navigator?.language) {\n return RTL_LOCALE_PATTERN.test(navigator.language) ? 'rtl' : 'ltr';\n }\n return value === 'rtl' ? 'rtl' : 'ltr';\n}\n/**\n * The directionality (LTR / RTL) context for the application (or a subtree of it).\n * Exposes the current direction and a stream of direction changes.\n */\nclass Directionality {\n constructor(_document) {\n /** The current 'ltr' or 'rtl' value. */\n this.value = 'ltr';\n /** Stream that emits whenever the 'ltr' / 'rtl' state changes. */\n this.change = new EventEmitter();\n if (_document) {\n const bodyDir = _document.body ? _document.body.dir : null;\n const htmlDir = _document.documentElement ? _document.documentElement.dir : null;\n this.value = _resolveDirectionality(bodyDir || htmlDir || 'ltr');\n }\n }\n ngOnDestroy() {\n this.change.complete();\n }\n static {\n this.ɵfac = function Directionality_Factory(t) {\n return new (t || Directionality)(i0.ɵɵinject(DIR_DOCUMENT, 8));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: Directionality,\n factory: Directionality.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Directionality, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DIR_DOCUMENT]\n }]\n }], null);\n})();\n\n/**\n * Directive to listen for changes of direction of part of the DOM.\n *\n * Provides itself as Directionality such that descendant directives only need to ever inject\n * Directionality to get the closest direction.\n */\nclass Dir {\n constructor() {\n /** Normalized direction that accounts for invalid/unsupported values. */\n this._dir = 'ltr';\n /** Whether the `value` has been set to its initial value. */\n this._isInitialized = false;\n /** Event emitted when the direction changes. */\n this.change = new EventEmitter();\n }\n /** @docs-private */\n get dir() {\n return this._dir;\n }\n set dir(value) {\n const previousValue = this._dir;\n // Note: `_resolveDirectionality` resolves the language based on the browser's language,\n // whereas the browser does it based on the content of the element. Since doing so based\n // on the content can be expensive, for now we're doing the simpler matching.\n this._dir = _resolveDirectionality(value);\n this._rawDir = value;\n if (previousValue !== this._dir && this._isInitialized) {\n this.change.emit(this._dir);\n }\n }\n /** Current layout direction of the element. */\n get value() {\n return this.dir;\n }\n /** Initialize once default value has been set. */\n ngAfterContentInit() {\n this._isInitialized = true;\n }\n ngOnDestroy() {\n this.change.complete();\n }\n static {\n this.ɵfac = function Dir_Factory(t) {\n return new (t || Dir)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: Dir,\n selectors: [[\"\", \"dir\", \"\"]],\n hostVars: 1,\n hostBindings: function Dir_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"dir\", ctx._rawDir);\n }\n },\n inputs: {\n dir: \"dir\"\n },\n outputs: {\n change: \"dirChange\"\n },\n exportAs: [\"dir\"],\n features: [i0.ɵɵProvidersFeature([{\n provide: Directionality,\n useExisting: Dir\n }])]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Dir, [{\n type: Directive,\n args: [{\n selector: '[dir]',\n providers: [{\n provide: Directionality,\n useExisting: Dir\n }],\n host: {\n '[attr.dir]': '_rawDir'\n },\n exportAs: 'dir'\n }]\n }], null, {\n change: [{\n type: Output,\n args: ['dirChange']\n }],\n dir: [{\n type: Input\n }]\n });\n})();\nclass BidiModule {\n static {\n this.ɵfac = function BidiModule_Factory(t) {\n return new (t || BidiModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: BidiModule,\n declarations: [Dir],\n exports: [Dir]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(BidiModule, [{\n type: NgModule,\n args: [{\n exports: [Dir],\n declarations: [Dir]\n }]\n }], null, null);\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BidiModule, DIR_DOCUMENT, Dir, Directionality };\n"], + "mappings": "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", + "names": [] +} diff --git a/.angular/cache/17.0.7/vite/deps/chunk-6RXUTAFR.js b/.angular/cache/17.0.7/vite/deps/chunk-6RXUTAFR.js new file mode 100644 index 0000000..7fed394 --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/chunk-6RXUTAFR.js @@ -0,0 +1,309 @@ +import { + NzDestroyService +} from "./chunk-D5ODNR6D.js"; +import { + CdkConnectedOverlay, + CdkOverlayOrigin, + ConnectionPositionPair +} from "./chunk-6U656R5M.js"; +import { + InputBoolean +} from "./chunk-M5GY4FCO.js"; +import { + Directive, + ElementRef, + Input, + NgModule, + __decorate, + setClassMetadata, + takeUntil, + ɵɵProvidersFeature, + ɵɵdefineDirective, + ɵɵdefineInjector, + ɵɵdefineNgModule, + ɵɵdirectiveInject +} from "./chunk-FGESKT7O.js"; + +// node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-overlay.mjs +var POSITION_MAP = { + top: new ConnectionPositionPair({ + originX: "center", + originY: "top" + }, { + overlayX: "center", + overlayY: "bottom" + }), + topCenter: new ConnectionPositionPair({ + originX: "center", + originY: "top" + }, { + overlayX: "center", + overlayY: "bottom" + }), + topLeft: new ConnectionPositionPair({ + originX: "start", + originY: "top" + }, { + overlayX: "start", + overlayY: "bottom" + }), + topRight: new ConnectionPositionPair({ + originX: "end", + originY: "top" + }, { + overlayX: "end", + overlayY: "bottom" + }), + right: new ConnectionPositionPair({ + originX: "end", + originY: "center" + }, { + overlayX: "start", + overlayY: "center" + }), + rightTop: new ConnectionPositionPair({ + originX: "end", + originY: "top" + }, { + overlayX: "start", + overlayY: "top" + }), + rightBottom: new ConnectionPositionPair({ + originX: "end", + originY: "bottom" + }, { + overlayX: "start", + overlayY: "bottom" + }), + bottom: new ConnectionPositionPair({ + originX: "center", + originY: "bottom" + }, { + overlayX: "center", + overlayY: "top" + }), + bottomCenter: new ConnectionPositionPair({ + originX: "center", + originY: "bottom" + }, { + overlayX: "center", + overlayY: "top" + }), + bottomLeft: new ConnectionPositionPair({ + originX: "start", + originY: "bottom" + }, { + overlayX: "start", + overlayY: "top" + }), + bottomRight: new ConnectionPositionPair({ + originX: "end", + originY: "bottom" + }, { + overlayX: "end", + overlayY: "top" + }), + left: new ConnectionPositionPair({ + originX: "start", + originY: "center" + }, { + overlayX: "end", + overlayY: "center" + }), + leftTop: new ConnectionPositionPair({ + originX: "start", + originY: "top" + }, { + overlayX: "end", + overlayY: "top" + }), + leftBottom: new ConnectionPositionPair({ + originX: "start", + originY: "bottom" + }, { + overlayX: "end", + overlayY: "bottom" + }) +}; +var DEFAULT_TOOLTIP_POSITIONS = [POSITION_MAP.top, POSITION_MAP.right, POSITION_MAP.bottom, POSITION_MAP.left]; +var DEFAULT_CASCADER_POSITIONS = [POSITION_MAP.bottomLeft, POSITION_MAP.bottomRight, POSITION_MAP.topLeft, POSITION_MAP.topRight, POSITION_MAP.topCenter, POSITION_MAP.bottomCenter]; +var DEFAULT_MENTION_TOP_POSITIONS = [new ConnectionPositionPair({ + originX: "start", + originY: "bottom" +}, { + overlayX: "start", + overlayY: "bottom" +}), new ConnectionPositionPair({ + originX: "start", + originY: "bottom" +}, { + overlayX: "end", + overlayY: "bottom" +})]; +var DEFAULT_MENTION_BOTTOM_POSITIONS = [POSITION_MAP.bottomLeft, new ConnectionPositionPair({ + originX: "start", + originY: "bottom" +}, { + overlayX: "end", + overlayY: "top" +})]; +function getPlacementName(position) { + for (const placement in POSITION_MAP) { + if (position.connectionPair.originX === POSITION_MAP[placement].originX && position.connectionPair.originY === POSITION_MAP[placement].originY && position.connectionPair.overlayX === POSITION_MAP[placement].overlayX && position.connectionPair.overlayY === POSITION_MAP[placement].overlayY) { + return placement; + } + } + return void 0; +} +var DATE_PICKER_POSITION_MAP = { + bottomLeft: new ConnectionPositionPair({ + originX: "start", + originY: "bottom" + }, { + overlayX: "start", + overlayY: "top" + }, void 0, 2), + topLeft: new ConnectionPositionPair({ + originX: "start", + originY: "top" + }, { + overlayX: "start", + overlayY: "bottom" + }, void 0, -2), + bottomRight: new ConnectionPositionPair({ + originX: "end", + originY: "bottom" + }, { + overlayX: "end", + overlayY: "top" + }, void 0, 2), + topRight: new ConnectionPositionPair({ + originX: "end", + originY: "top" + }, { + overlayX: "end", + overlayY: "bottom" + }, void 0, -2) +}; +var DEFAULT_DATE_PICKER_POSITIONS = [DATE_PICKER_POSITION_MAP.bottomLeft, DATE_PICKER_POSITION_MAP.topLeft, DATE_PICKER_POSITION_MAP.bottomRight, DATE_PICKER_POSITION_MAP.topRight]; +var _NzConnectedOverlayDirective = class _NzConnectedOverlayDirective { + constructor(cdkConnectedOverlay, nzDestroyService) { + this.cdkConnectedOverlay = cdkConnectedOverlay; + this.nzDestroyService = nzDestroyService; + this.nzArrowPointAtCenter = false; + this.cdkConnectedOverlay.backdropClass = "nz-overlay-transparent-backdrop"; + this.cdkConnectedOverlay.positionChange.pipe(takeUntil(this.nzDestroyService)).subscribe((position) => { + if (this.nzArrowPointAtCenter) { + this.updateArrowPosition(position); + } + }); + } + updateArrowPosition(position) { + const originRect = this.getOriginRect(); + const placement = getPlacementName(position); + let offsetX = 0; + let offsetY = 0; + if (placement === "topLeft" || placement === "bottomLeft") { + offsetX = originRect.width / 2 - 14; + } else if (placement === "topRight" || placement === "bottomRight") { + offsetX = -(originRect.width / 2 - 14); + } else if (placement === "leftTop" || placement === "rightTop") { + offsetY = originRect.height / 2 - 10; + } else if (placement === "leftBottom" || placement === "rightBottom") { + offsetY = -(originRect.height / 2 - 10); + } + if (this.cdkConnectedOverlay.offsetX !== offsetX || this.cdkConnectedOverlay.offsetY !== offsetY) { + this.cdkConnectedOverlay.offsetY = offsetY; + this.cdkConnectedOverlay.offsetX = offsetX; + this.cdkConnectedOverlay.overlayRef.updatePosition(); + } + } + getFlexibleConnectedPositionStrategyOrigin() { + if (this.cdkConnectedOverlay.origin instanceof CdkOverlayOrigin) { + return this.cdkConnectedOverlay.origin.elementRef; + } else { + return this.cdkConnectedOverlay.origin; + } + } + getOriginRect() { + const origin = this.getFlexibleConnectedPositionStrategyOrigin(); + if (origin instanceof ElementRef) { + return origin.nativeElement.getBoundingClientRect(); + } + if (origin instanceof Element) { + return origin.getBoundingClientRect(); + } + const width = origin.width || 0; + const height = origin.height || 0; + return { + top: origin.y, + bottom: origin.y + height, + left: origin.x, + right: origin.x + width, + height, + width + }; + } +}; +_NzConnectedOverlayDirective.ɵfac = function NzConnectedOverlayDirective_Factory(t) { + return new (t || _NzConnectedOverlayDirective)(ɵɵdirectiveInject(CdkConnectedOverlay), ɵɵdirectiveInject(NzDestroyService)); +}; +_NzConnectedOverlayDirective.ɵdir = ɵɵdefineDirective({ + type: _NzConnectedOverlayDirective, + selectors: [["", "cdkConnectedOverlay", "", "nzConnectedOverlay", ""]], + inputs: { + nzArrowPointAtCenter: "nzArrowPointAtCenter" + }, + exportAs: ["nzConnectedOverlay"], + features: [ɵɵProvidersFeature([NzDestroyService])] +}); +var NzConnectedOverlayDirective = _NzConnectedOverlayDirective; +__decorate([InputBoolean()], NzConnectedOverlayDirective.prototype, "nzArrowPointAtCenter", void 0); +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzConnectedOverlayDirective, [{ + type: Directive, + args: [{ + selector: "[cdkConnectedOverlay][nzConnectedOverlay]", + exportAs: "nzConnectedOverlay", + providers: [NzDestroyService] + }] + }], () => [{ + type: CdkConnectedOverlay + }, { + type: NzDestroyService + }], { + nzArrowPointAtCenter: [{ + type: Input + }] + }); +})(); +var _NzOverlayModule = class _NzOverlayModule { +}; +_NzOverlayModule.ɵfac = function NzOverlayModule_Factory(t) { + return new (t || _NzOverlayModule)(); +}; +_NzOverlayModule.ɵmod = ɵɵdefineNgModule({ + type: _NzOverlayModule, + declarations: [NzConnectedOverlayDirective], + exports: [NzConnectedOverlayDirective] +}); +_NzOverlayModule.ɵinj = ɵɵdefineInjector({}); +var NzOverlayModule = _NzOverlayModule; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzOverlayModule, [{ + type: NgModule, + args: [{ + declarations: [NzConnectedOverlayDirective], + exports: [NzConnectedOverlayDirective] + }] + }], null, null); +})(); + +export { + POSITION_MAP, + DEFAULT_TOOLTIP_POSITIONS, + getPlacementName, + NzConnectedOverlayDirective, + NzOverlayModule +}; +//# sourceMappingURL=chunk-6RXUTAFR.js.map diff --git a/.angular/cache/17.0.7/vite/deps/chunk-6RXUTAFR.js.map b/.angular/cache/17.0.7/vite/deps/chunk-6RXUTAFR.js.map new file mode 100644 index 0000000..fc8983e --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/chunk-6RXUTAFR.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-overlay.mjs"], + "sourcesContent": ["import { __decorate } from 'tslib';\nimport * as i1 from '@angular/cdk/overlay';\nimport { ConnectionPositionPair, CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport * as i0 from '@angular/core';\nimport { ElementRef, Directive, Input, NgModule } from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport * as i2 from 'ng-zorro-antd/core/services';\nimport { NzDestroyService } from 'ng-zorro-antd/core/services';\nimport { InputBoolean } from 'ng-zorro-antd/core/util';\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst POSITION_MAP = {\n top: new ConnectionPositionPair({\n originX: 'center',\n originY: 'top'\n }, {\n overlayX: 'center',\n overlayY: 'bottom'\n }),\n topCenter: new ConnectionPositionPair({\n originX: 'center',\n originY: 'top'\n }, {\n overlayX: 'center',\n overlayY: 'bottom'\n }),\n topLeft: new ConnectionPositionPair({\n originX: 'start',\n originY: 'top'\n }, {\n overlayX: 'start',\n overlayY: 'bottom'\n }),\n topRight: new ConnectionPositionPair({\n originX: 'end',\n originY: 'top'\n }, {\n overlayX: 'end',\n overlayY: 'bottom'\n }),\n right: new ConnectionPositionPair({\n originX: 'end',\n originY: 'center'\n }, {\n overlayX: 'start',\n overlayY: 'center'\n }),\n rightTop: new ConnectionPositionPair({\n originX: 'end',\n originY: 'top'\n }, {\n overlayX: 'start',\n overlayY: 'top'\n }),\n rightBottom: new ConnectionPositionPair({\n originX: 'end',\n originY: 'bottom'\n }, {\n overlayX: 'start',\n overlayY: 'bottom'\n }),\n bottom: new ConnectionPositionPair({\n originX: 'center',\n originY: 'bottom'\n }, {\n overlayX: 'center',\n overlayY: 'top'\n }),\n bottomCenter: new ConnectionPositionPair({\n originX: 'center',\n originY: 'bottom'\n }, {\n overlayX: 'center',\n overlayY: 'top'\n }),\n bottomLeft: new ConnectionPositionPair({\n originX: 'start',\n originY: 'bottom'\n }, {\n overlayX: 'start',\n overlayY: 'top'\n }),\n bottomRight: new ConnectionPositionPair({\n originX: 'end',\n originY: 'bottom'\n }, {\n overlayX: 'end',\n overlayY: 'top'\n }),\n left: new ConnectionPositionPair({\n originX: 'start',\n originY: 'center'\n }, {\n overlayX: 'end',\n overlayY: 'center'\n }),\n leftTop: new ConnectionPositionPair({\n originX: 'start',\n originY: 'top'\n }, {\n overlayX: 'end',\n overlayY: 'top'\n }),\n leftBottom: new ConnectionPositionPair({\n originX: 'start',\n originY: 'bottom'\n }, {\n overlayX: 'end',\n overlayY: 'bottom'\n })\n};\nconst DEFAULT_TOOLTIP_POSITIONS = [POSITION_MAP.top, POSITION_MAP.right, POSITION_MAP.bottom, POSITION_MAP.left];\nconst DEFAULT_CASCADER_POSITIONS = [POSITION_MAP.bottomLeft, POSITION_MAP.bottomRight, POSITION_MAP.topLeft, POSITION_MAP.topRight, POSITION_MAP.topCenter, POSITION_MAP.bottomCenter];\nconst DEFAULT_MENTION_TOP_POSITIONS = [new ConnectionPositionPair({\n originX: 'start',\n originY: 'bottom'\n}, {\n overlayX: 'start',\n overlayY: 'bottom'\n}), new ConnectionPositionPair({\n originX: 'start',\n originY: 'bottom'\n}, {\n overlayX: 'end',\n overlayY: 'bottom'\n})];\nconst DEFAULT_MENTION_BOTTOM_POSITIONS = [POSITION_MAP.bottomLeft, new ConnectionPositionPair({\n originX: 'start',\n originY: 'bottom'\n}, {\n overlayX: 'end',\n overlayY: 'top'\n})];\nfunction getPlacementName(position) {\n for (const placement in POSITION_MAP) {\n if (position.connectionPair.originX === POSITION_MAP[placement].originX && position.connectionPair.originY === POSITION_MAP[placement].originY && position.connectionPair.overlayX === POSITION_MAP[placement].overlayX && position.connectionPair.overlayY === POSITION_MAP[placement].overlayY) {\n return placement;\n }\n }\n return undefined;\n}\nconst DATE_PICKER_POSITION_MAP = {\n bottomLeft: new ConnectionPositionPair({\n originX: 'start',\n originY: 'bottom'\n }, {\n overlayX: 'start',\n overlayY: 'top'\n }, undefined, 2),\n topLeft: new ConnectionPositionPair({\n originX: 'start',\n originY: 'top'\n }, {\n overlayX: 'start',\n overlayY: 'bottom'\n }, undefined, -2),\n bottomRight: new ConnectionPositionPair({\n originX: 'end',\n originY: 'bottom'\n }, {\n overlayX: 'end',\n overlayY: 'top'\n }, undefined, 2),\n topRight: new ConnectionPositionPair({\n originX: 'end',\n originY: 'top'\n }, {\n overlayX: 'end',\n overlayY: 'bottom'\n }, undefined, -2)\n};\nconst DEFAULT_DATE_PICKER_POSITIONS = [DATE_PICKER_POSITION_MAP.bottomLeft, DATE_PICKER_POSITION_MAP.topLeft, DATE_PICKER_POSITION_MAP.bottomRight, DATE_PICKER_POSITION_MAP.topRight];\nclass NzConnectedOverlayDirective {\n constructor(cdkConnectedOverlay, nzDestroyService) {\n this.cdkConnectedOverlay = cdkConnectedOverlay;\n this.nzDestroyService = nzDestroyService;\n this.nzArrowPointAtCenter = false;\n this.cdkConnectedOverlay.backdropClass = 'nz-overlay-transparent-backdrop';\n this.cdkConnectedOverlay.positionChange.pipe(takeUntil(this.nzDestroyService)).subscribe(position => {\n if (this.nzArrowPointAtCenter) {\n this.updateArrowPosition(position);\n }\n });\n }\n updateArrowPosition(position) {\n const originRect = this.getOriginRect();\n const placement = getPlacementName(position);\n let offsetX = 0;\n let offsetY = 0;\n if (placement === 'topLeft' || placement === 'bottomLeft') {\n offsetX = originRect.width / 2 - 14;\n } else if (placement === 'topRight' || placement === 'bottomRight') {\n offsetX = -(originRect.width / 2 - 14);\n } else if (placement === 'leftTop' || placement === 'rightTop') {\n offsetY = originRect.height / 2 - 10;\n } else if (placement === 'leftBottom' || placement === 'rightBottom') {\n offsetY = -(originRect.height / 2 - 10);\n }\n if (this.cdkConnectedOverlay.offsetX !== offsetX || this.cdkConnectedOverlay.offsetY !== offsetY) {\n this.cdkConnectedOverlay.offsetY = offsetY;\n this.cdkConnectedOverlay.offsetX = offsetX;\n this.cdkConnectedOverlay.overlayRef.updatePosition();\n }\n }\n getFlexibleConnectedPositionStrategyOrigin() {\n if (this.cdkConnectedOverlay.origin instanceof CdkOverlayOrigin) {\n return this.cdkConnectedOverlay.origin.elementRef;\n } else {\n return this.cdkConnectedOverlay.origin;\n }\n }\n getOriginRect() {\n const origin = this.getFlexibleConnectedPositionStrategyOrigin();\n if (origin instanceof ElementRef) {\n return origin.nativeElement.getBoundingClientRect();\n }\n // Check for Element so SVG elements are also supported.\n if (origin instanceof Element) {\n return origin.getBoundingClientRect();\n }\n const width = origin.width || 0;\n const height = origin.height || 0;\n // If the origin is a point, return a client rect as if it was a 0x0 element at the point.\n return {\n top: origin.y,\n bottom: origin.y + height,\n left: origin.x,\n right: origin.x + width,\n height,\n width\n };\n }\n static {\n this.ɵfac = function NzConnectedOverlayDirective_Factory(t) {\n return new (t || NzConnectedOverlayDirective)(i0.ɵɵdirectiveInject(i1.CdkConnectedOverlay), i0.ɵɵdirectiveInject(i2.NzDestroyService));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzConnectedOverlayDirective,\n selectors: [[\"\", \"cdkConnectedOverlay\", \"\", \"nzConnectedOverlay\", \"\"]],\n inputs: {\n nzArrowPointAtCenter: \"nzArrowPointAtCenter\"\n },\n exportAs: [\"nzConnectedOverlay\"],\n features: [i0.ɵɵProvidersFeature([NzDestroyService])]\n });\n }\n}\n__decorate([InputBoolean()], NzConnectedOverlayDirective.prototype, \"nzArrowPointAtCenter\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzConnectedOverlayDirective, [{\n type: Directive,\n args: [{\n selector: '[cdkConnectedOverlay][nzConnectedOverlay]',\n exportAs: 'nzConnectedOverlay',\n providers: [NzDestroyService]\n }]\n }], () => [{\n type: i1.CdkConnectedOverlay\n }, {\n type: i2.NzDestroyService\n }], {\n nzArrowPointAtCenter: [{\n type: Input\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzOverlayModule {\n static {\n this.ɵfac = function NzOverlayModule_Factory(t) {\n return new (t || NzOverlayModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NzOverlayModule,\n declarations: [NzConnectedOverlayDirective],\n exports: [NzConnectedOverlayDirective]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzOverlayModule, [{\n type: NgModule,\n args: [{\n declarations: [NzConnectedOverlayDirective],\n exports: [NzConnectedOverlayDirective]\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DATE_PICKER_POSITION_MAP, DEFAULT_CASCADER_POSITIONS, DEFAULT_DATE_PICKER_POSITIONS, DEFAULT_MENTION_BOTTOM_POSITIONS, DEFAULT_MENTION_TOP_POSITIONS, DEFAULT_TOOLTIP_POSITIONS, NzConnectedOverlayDirective, NzOverlayModule, POSITION_MAP, getPlacementName };\n"], + "mappings": "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", + "names": [] +} diff --git a/.angular/cache/17.0.7/vite/deps/chunk-QI6CCAQD.js b/.angular/cache/17.0.7/vite/deps/chunk-6U656R5M.js similarity index 95% rename from .angular/cache/17.0.7/vite/deps/chunk-QI6CCAQD.js rename to .angular/cache/17.0.7/vite/deps/chunk-6U656R5M.js index c41fd88..6f19629 100644 --- a/.angular/cache/17.0.7/vite/deps/chunk-QI6CCAQD.js +++ b/.angular/cache/17.0.7/vite/deps/chunk-6U656R5M.js @@ -1,31 +1,24 @@ import { ESCAPE, hasModifierKey -} from "./chunk-UMSNQQWJ.js"; +} from "./chunk-JGP5BR6B.js"; import { BidiModule, - Directionality, + Directionality +} from "./chunk-6NZ2BEBG.js"; +import { Platform, _getEventTarget, _isTestEnvironment, getRtlScrollAxisType, supportsScrollBehavior -} from "./chunk-UPQZZZIG.js"; +} from "./chunk-IAC53GOD.js"; import { coerceArray, coerceCssPixelValue, coerceElement, coerceNumberProperty -} from "./chunk-7XTJNSRU.js"; -import { - animate, - query, - stagger, - state, - style, - transition, - trigger -} from "./chunk-BNCUYWOH.js"; +} from "./chunk-M5GY4FCO.js"; import { DOCUMENT, Location @@ -109,1213 +102,779 @@ import { __spreadValues } from "./chunk-HSNDBVJ3.js"; -// node_modules/@angular/cdk/fesm2022/portal.mjs -function throwNullPortalError() { - throw Error("Must provide a portal to attach"); -} -function throwPortalAlreadyAttachedError() { - throw Error("Host already has a portal attached"); -} -function throwPortalOutletAlreadyDisposedError() { - throw Error("This PortalOutlet has already been disposed"); -} -function throwUnknownPortalTypeError() { - throw Error("Attempting to attach an unknown Portal type. BasePortalOutlet accepts either a ComponentPortal or a TemplatePortal."); -} -function throwNullPortalOutletError() { - throw Error("Attempting to attach a portal to a null PortalOutlet"); -} -function throwNoPortalAttachedError() { - throw Error("Attempting to detach a portal that is not attached to a host"); +// node_modules/@angular/cdk/fesm2022/collections.mjs +var DataSource = class { +}; +function isDataSource(value) { + return value && typeof value.connect === "function" && !(value instanceof ConnectableObservable); } -var Portal = class { - /** Attach this portal to a host. */ - attach(host) { - if (typeof ngDevMode === "undefined" || ngDevMode) { - if (host == null) { - throwNullPortalOutletError(); +var ArrayDataSource = class extends DataSource { + constructor(_data) { + super(); + this._data = _data; + } + connect() { + return isObservable(this._data) ? this._data : of(this._data); + } + disconnect() { + } +}; +var _RecycleViewRepeaterStrategy = class { + constructor() { + this.viewCacheSize = 20; + this._viewCache = []; + } + /** Apply changes to the DOM. */ + applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) { + changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => { + let view; + let operation; + if (record.previousIndex == null) { + const viewArgsFactory = () => itemContextFactory(record, adjustedPreviousIndex, currentIndex); + view = this._insertView(viewArgsFactory, currentIndex, viewContainerRef, itemValueResolver(record)); + operation = view ? 1 : 0; + } else if (currentIndex == null) { + this._detachAndCacheView(adjustedPreviousIndex, viewContainerRef); + operation = 3; + } else { + view = this._moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, itemValueResolver(record)); + operation = 2; } - if (host.hasAttached()) { - throwPortalAlreadyAttachedError(); + if (itemViewChanged) { + itemViewChanged({ + context: view?.context, + operation, + record + }); } - } - this._attachedHost = host; - return host.attach(this); + }); } - /** Detach this portal from its host */ detach() { - let host = this._attachedHost; - if (host != null) { - this._attachedHost = null; - host.detach(); - } else if (typeof ngDevMode === "undefined" || ngDevMode) { - throwNoPortalAttachedError(); + for (const view of this._viewCache) { + view.destroy(); } - } - /** Whether this portal is attached to a host. */ - get isAttached() { - return this._attachedHost != null; + this._viewCache = []; } /** - * Sets the PortalOutlet reference without performing `attach()`. This is used directly by - * the PortalOutlet when it is performing an `attach()` or `detach()`. + * Inserts a view for a new item, either from the cache or by creating a new + * one. Returns `undefined` if the item was inserted into a cached view. */ - setAttachedHost(host) { - this._attachedHost = host; - } -}; -var ComponentPortal = class extends Portal { - constructor(component, viewContainerRef, injector, componentFactoryResolver, projectableNodes) { - super(); - this.component = component; - this.viewContainerRef = viewContainerRef; - this.injector = injector; - this.componentFactoryResolver = componentFactoryResolver; - this.projectableNodes = projectableNodes; + _insertView(viewArgsFactory, currentIndex, viewContainerRef, value) { + const cachedView = this._insertViewFromCache(currentIndex, viewContainerRef); + if (cachedView) { + cachedView.context.$implicit = value; + return void 0; + } + const viewArgs = viewArgsFactory(); + return viewContainerRef.createEmbeddedView(viewArgs.templateRef, viewArgs.context, viewArgs.index); } -}; -var TemplatePortal = class extends Portal { - constructor(templateRef, viewContainerRef, context, injector) { - super(); - this.templateRef = templateRef; - this.viewContainerRef = viewContainerRef; - this.context = context; - this.injector = injector; + /** Detaches the view at the given index and inserts into the view cache. */ + _detachAndCacheView(index, viewContainerRef) { + const detachedView = viewContainerRef.detach(index); + this._maybeCacheView(detachedView, viewContainerRef); } - get origin() { - return this.templateRef.elementRef; + /** Moves view at the previous index to the current index. */ + _moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, value) { + const view = viewContainerRef.get(adjustedPreviousIndex); + viewContainerRef.move(view, currentIndex); + view.context.$implicit = value; + return view; } /** - * Attach the portal to the provided `PortalOutlet`. - * When a context is provided it will override the `context` property of the `TemplatePortal` - * instance. + * Cache the given detached view. If the cache is full, the view will be + * destroyed. */ - attach(host, context = this.context) { - this.context = context; - return super.attach(host); - } - detach() { - this.context = void 0; - return super.detach(); - } -}; -var DomPortal = class extends Portal { - constructor(element) { - super(); - this.element = element instanceof ElementRef ? element.nativeElement : element; - } -}; -var BasePortalOutlet = class { - constructor() { - this._isDisposed = false; - this.attachDomPortal = null; - } - /** Whether this host has an attached portal. */ - hasAttached() { - return !!this._attachedPortal; - } - /** Attaches a portal. */ - attach(portal) { - if (typeof ngDevMode === "undefined" || ngDevMode) { - if (!portal) { - throwNullPortalError(); - } - if (this.hasAttached()) { - throwPortalAlreadyAttachedError(); - } - if (this._isDisposed) { - throwPortalOutletAlreadyDisposedError(); + _maybeCacheView(view, viewContainerRef) { + if (this._viewCache.length < this.viewCacheSize) { + this._viewCache.push(view); + } else { + const index = viewContainerRef.indexOf(view); + if (index === -1) { + view.destroy(); + } else { + viewContainerRef.remove(index); } } - if (portal instanceof ComponentPortal) { - this._attachedPortal = portal; - return this.attachComponentPortal(portal); - } else if (portal instanceof TemplatePortal) { - this._attachedPortal = portal; - return this.attachTemplatePortal(portal); - } else if (this.attachDomPortal && portal instanceof DomPortal) { - this._attachedPortal = portal; - return this.attachDomPortal(portal); - } - if (typeof ngDevMode === "undefined" || ngDevMode) { - throwUnknownPortalTypeError(); - } - } - /** Detaches a previously attached portal. */ - detach() { - if (this._attachedPortal) { - this._attachedPortal.setAttachedHost(null); - this._attachedPortal = null; - } - this._invokeDisposeFn(); } - /** Permanently dispose of this portal host. */ - dispose() { - if (this.hasAttached()) { - this.detach(); + /** Inserts a recycled view from the cache at the given index. */ + _insertViewFromCache(index, viewContainerRef) { + const cachedView = this._viewCache.pop(); + if (cachedView) { + viewContainerRef.insert(cachedView, index); } - this._invokeDisposeFn(); - this._isDisposed = true; + return cachedView || null; } - /** @docs-private */ - setDisposeFn(fn) { - this._disposeFn = fn; +}; +var _UniqueSelectionDispatcher = class _UniqueSelectionDispatcher { + constructor() { + this._listeners = []; } - _invokeDisposeFn() { - if (this._disposeFn) { - this._disposeFn(); - this._disposeFn = null; + /** + * Notify other items that selection for the given name has been set. + * @param id ID of the item. + * @param name Name of the item. + */ + notify(id, name) { + for (let listener of this._listeners) { + listener(id, name); } } -}; -var DomPortalOutlet = class extends BasePortalOutlet { /** - * @param outletElement Element into which the content is projected. - * @param _componentFactoryResolver Used to resolve the component factory. - * Only required when attaching component portals. - * @param _appRef Reference to the application. Only used in component portals when there - * is no `ViewContainerRef` available. - * @param _defaultInjector Injector to use as a fallback when the portal being attached doesn't - * have one. Only used for component portals. - * @param _document Reference to the document. Used when attaching a DOM portal. Will eventually - * become a required parameter. + * Listen for future changes to item selection. + * @return Function used to deregister listener */ - constructor(outletElement, _componentFactoryResolver, _appRef, _defaultInjector, _document) { - super(); - this.outletElement = outletElement; - this._componentFactoryResolver = _componentFactoryResolver; - this._appRef = _appRef; - this._defaultInjector = _defaultInjector; - this.attachDomPortal = (portal) => { - if (!this._document && (typeof ngDevMode === "undefined" || ngDevMode)) { - throw Error("Cannot attach DOM portal without _document constructor parameter"); - } - const element = portal.element; - if (!element.parentNode && (typeof ngDevMode === "undefined" || ngDevMode)) { - throw Error("DOM portal content must be attached to a parent node."); - } - const anchorNode = this._document.createComment("dom-portal"); - element.parentNode.insertBefore(anchorNode, element); - this.outletElement.appendChild(element); - this._attachedPortal = portal; - super.setDisposeFn(() => { - if (anchorNode.parentNode) { - anchorNode.parentNode.replaceChild(element, anchorNode); - } + listen(listener) { + this._listeners.push(listener); + return () => { + this._listeners = this._listeners.filter((registered) => { + return listener !== registered; }); }; - this._document = _document; - } - /** - * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver. - * @param portal Portal to be attached - * @returns Reference to the created component. - */ - attachComponentPortal(portal) { - const resolver = portal.componentFactoryResolver || this._componentFactoryResolver; - if ((typeof ngDevMode === "undefined" || ngDevMode) && !resolver) { - throw Error("Cannot attach component portal to outlet without a ComponentFactoryResolver."); - } - const componentFactory = resolver.resolveComponentFactory(portal.component); - let componentRef; - if (portal.viewContainerRef) { - componentRef = portal.viewContainerRef.createComponent(componentFactory, portal.viewContainerRef.length, portal.injector || portal.viewContainerRef.injector, portal.projectableNodes || void 0); - this.setDisposeFn(() => componentRef.destroy()); - } else { - if ((typeof ngDevMode === "undefined" || ngDevMode) && !this._appRef) { - throw Error("Cannot attach component portal to outlet without an ApplicationRef."); - } - componentRef = componentFactory.create(portal.injector || this._defaultInjector || Injector.NULL); - this._appRef.attachView(componentRef.hostView); - this.setDisposeFn(() => { - if (this._appRef.viewCount > 0) { - this._appRef.detachView(componentRef.hostView); - } - componentRef.destroy(); - }); - } - this.outletElement.appendChild(this._getComponentRootNode(componentRef)); - this._attachedPortal = portal; - return componentRef; - } - /** - * Attaches a template portal to the DOM as an embedded view. - * @param portal Portal to be attached. - * @returns Reference to the created embedded view. - */ - attachTemplatePortal(portal) { - let viewContainer = portal.viewContainerRef; - let viewRef = viewContainer.createEmbeddedView(portal.templateRef, portal.context, { - injector: portal.injector - }); - viewRef.rootNodes.forEach((rootNode) => this.outletElement.appendChild(rootNode)); - viewRef.detectChanges(); - this.setDisposeFn(() => { - let index = viewContainer.indexOf(viewRef); - if (index !== -1) { - viewContainer.remove(index); - } - }); - this._attachedPortal = portal; - return viewRef; - } - /** - * Clears out a portal from the DOM. - */ - dispose() { - super.dispose(); - this.outletElement.remove(); - } - /** Gets the root HTMLElement for an instantiated component. */ - _getComponentRootNode(componentRef) { - return componentRef.hostView.rootNodes[0]; } -}; -var _CdkPortal = class _CdkPortal extends TemplatePortal { - constructor(templateRef, viewContainerRef) { - super(templateRef, viewContainerRef); + ngOnDestroy() { + this._listeners = []; } }; -_CdkPortal.ɵfac = function CdkPortal_Factory(t) { - return new (t || _CdkPortal)(ɵɵdirectiveInject(TemplateRef), ɵɵdirectiveInject(ViewContainerRef)); -}; -_CdkPortal.ɵdir = ɵɵdefineDirective({ - type: _CdkPortal, - selectors: [["", "cdkPortal", ""]], - exportAs: ["cdkPortal"], - features: [ɵɵInheritDefinitionFeature] -}); -var CdkPortal = _CdkPortal; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(CdkPortal, [{ - type: Directive, - args: [{ - selector: "[cdkPortal]", - exportAs: "cdkPortal" - }] - }], () => [{ - type: TemplateRef - }, { - type: ViewContainerRef - }], null); -})(); -var _TemplatePortalDirective = class _TemplatePortalDirective extends CdkPortal { +_UniqueSelectionDispatcher.ɵfac = function UniqueSelectionDispatcher_Factory(t) { + return new (t || _UniqueSelectionDispatcher)(); }; -_TemplatePortalDirective.ɵfac = (() => { - let ɵTemplatePortalDirective_BaseFactory; - return function TemplatePortalDirective_Factory(t) { - return (ɵTemplatePortalDirective_BaseFactory || (ɵTemplatePortalDirective_BaseFactory = ɵɵgetInheritedFactory(_TemplatePortalDirective)))(t || _TemplatePortalDirective); - }; -})(); -_TemplatePortalDirective.ɵdir = ɵɵdefineDirective({ - type: _TemplatePortalDirective, - selectors: [["", "cdk-portal", ""], ["", "portal", ""]], - exportAs: ["cdkPortal"], - features: [ɵɵProvidersFeature([{ - provide: CdkPortal, - useExisting: _TemplatePortalDirective - }]), ɵɵInheritDefinitionFeature] +_UniqueSelectionDispatcher.ɵprov = ɵɵdefineInjectable({ + token: _UniqueSelectionDispatcher, + factory: _UniqueSelectionDispatcher.ɵfac, + providedIn: "root" }); -var TemplatePortalDirective = _TemplatePortalDirective; +var UniqueSelectionDispatcher = _UniqueSelectionDispatcher; (() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(TemplatePortalDirective, [{ - type: Directive, + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(UniqueSelectionDispatcher, [{ + type: Injectable, args: [{ - selector: "[cdk-portal], [portal]", - exportAs: "cdkPortal", - providers: [{ - provide: CdkPortal, - useExisting: TemplatePortalDirective - }] + providedIn: "root" }] }], null, null); })(); -var _CdkPortalOutlet = class _CdkPortalOutlet extends BasePortalOutlet { - constructor(_componentFactoryResolver, _viewContainerRef, _document) { - super(); - this._componentFactoryResolver = _componentFactoryResolver; - this._viewContainerRef = _viewContainerRef; - this._isInitialized = false; - this.attached = new EventEmitter(); - this.attachDomPortal = (portal) => { - if (!this._document && (typeof ngDevMode === "undefined" || ngDevMode)) { - throw Error("Cannot attach DOM portal without _document constructor parameter"); - } - const element = portal.element; - if (!element.parentNode && (typeof ngDevMode === "undefined" || ngDevMode)) { - throw Error("DOM portal content must be attached to a parent node."); - } - const anchorNode = this._document.createComment("dom-portal"); - portal.setAttachedHost(this); - element.parentNode.insertBefore(anchorNode, element); - this._getRootNode().appendChild(element); - this._attachedPortal = portal; - super.setDisposeFn(() => { - if (anchorNode.parentNode) { - anchorNode.parentNode.replaceChild(element, anchorNode); - } - }); - }; - this._document = _document; +var _VIEW_REPEATER_STRATEGY = new InjectionToken("_ViewRepeater"); + +// node_modules/@angular/cdk/fesm2022/scrolling.mjs +var _c0 = ["contentWrapper"]; +var _c1 = ["*"]; +var VIRTUAL_SCROLL_STRATEGY = new InjectionToken("VIRTUAL_SCROLL_STRATEGY"); +var FixedSizeVirtualScrollStrategy = class { + /** + * @param itemSize The size of the items in the virtually scrolling list. + * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more + * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more. + */ + constructor(itemSize, minBufferPx, maxBufferPx) { + this._scrolledIndexChange = new Subject(); + this.scrolledIndexChange = this._scrolledIndexChange.pipe(distinctUntilChanged()); + this._viewport = null; + this._itemSize = itemSize; + this._minBufferPx = minBufferPx; + this._maxBufferPx = maxBufferPx; } - /** Portal associated with the Portal outlet. */ - get portal() { - return this._attachedPortal; + /** + * Attaches this scroll strategy to a viewport. + * @param viewport The viewport to attach this strategy to. + */ + attach(viewport) { + this._viewport = viewport; + this._updateTotalContentSize(); + this._updateRenderedRange(); } - set portal(portal) { - if (this.hasAttached() && !portal && !this._isInitialized) { - return; - } - if (this.hasAttached()) { - super.detach(); - } - if (portal) { - super.attach(portal); + /** Detaches this scroll strategy from the currently attached viewport. */ + detach() { + this._scrolledIndexChange.complete(); + this._viewport = null; + } + /** + * Update the item size and buffer size. + * @param itemSize The size of the items in the virtually scrolling list. + * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more + * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more. + */ + updateItemAndBufferSize(itemSize, minBufferPx, maxBufferPx) { + if (maxBufferPx < minBufferPx && (typeof ngDevMode === "undefined" || ngDevMode)) { + throw Error("CDK virtual scroll: maxBufferPx must be greater than or equal to minBufferPx"); } - this._attachedPortal = portal || null; + this._itemSize = itemSize; + this._minBufferPx = minBufferPx; + this._maxBufferPx = maxBufferPx; + this._updateTotalContentSize(); + this._updateRenderedRange(); } - /** Component or view reference that is attached to the portal. */ - get attachedRef() { - return this._attachedRef; + /** @docs-private Implemented as part of VirtualScrollStrategy. */ + onContentScrolled() { + this._updateRenderedRange(); } - ngOnInit() { - this._isInitialized = true; + /** @docs-private Implemented as part of VirtualScrollStrategy. */ + onDataLengthChanged() { + this._updateTotalContentSize(); + this._updateRenderedRange(); } - ngOnDestroy() { - super.dispose(); - this._attachedRef = this._attachedPortal = null; + /** @docs-private Implemented as part of VirtualScrollStrategy. */ + onContentRendered() { + } + /** @docs-private Implemented as part of VirtualScrollStrategy. */ + onRenderedOffsetChanged() { } /** - * Attach the given ComponentPortal to this PortalOutlet using the ComponentFactoryResolver. - * - * @param portal Portal to be attached to the portal outlet. - * @returns Reference to the created component. - */ - attachComponentPortal(portal) { - portal.setAttachedHost(this); - const viewContainerRef = portal.viewContainerRef != null ? portal.viewContainerRef : this._viewContainerRef; - const resolver = portal.componentFactoryResolver || this._componentFactoryResolver; - const componentFactory = resolver.resolveComponentFactory(portal.component); - const ref = viewContainerRef.createComponent(componentFactory, viewContainerRef.length, portal.injector || viewContainerRef.injector, portal.projectableNodes || void 0); - if (viewContainerRef !== this._viewContainerRef) { - this._getRootNode().appendChild(ref.hostView.rootNodes[0]); + * Scroll to the offset for the given index. + * @param index The index of the element to scroll to. + * @param behavior The ScrollBehavior to use when scrolling. + */ + scrollToIndex(index, behavior) { + if (this._viewport) { + this._viewport.scrollToOffset(index * this._itemSize, behavior); } - super.setDisposeFn(() => ref.destroy()); - this._attachedPortal = portal; - this._attachedRef = ref; - this.attached.emit(ref); - return ref; + } + /** Update the viewport's total content size. */ + _updateTotalContentSize() { + if (!this._viewport) { + return; + } + this._viewport.setTotalContentSize(this._viewport.getDataLength() * this._itemSize); + } + /** Update the viewport's rendered range. */ + _updateRenderedRange() { + if (!this._viewport) { + return; + } + const renderedRange = this._viewport.getRenderedRange(); + const newRange = { + start: renderedRange.start, + end: renderedRange.end + }; + const viewportSize = this._viewport.getViewportSize(); + const dataLength = this._viewport.getDataLength(); + let scrollOffset = this._viewport.measureScrollOffset(); + let firstVisibleIndex = this._itemSize > 0 ? scrollOffset / this._itemSize : 0; + if (newRange.end > dataLength) { + const maxVisibleItems = Math.ceil(viewportSize / this._itemSize); + const newVisibleIndex = Math.max(0, Math.min(firstVisibleIndex, dataLength - maxVisibleItems)); + if (firstVisibleIndex != newVisibleIndex) { + firstVisibleIndex = newVisibleIndex; + scrollOffset = newVisibleIndex * this._itemSize; + newRange.start = Math.floor(firstVisibleIndex); + } + newRange.end = Math.max(0, Math.min(dataLength, newRange.start + maxVisibleItems)); + } + const startBuffer = scrollOffset - newRange.start * this._itemSize; + if (startBuffer < this._minBufferPx && newRange.start != 0) { + const expandStart = Math.ceil((this._maxBufferPx - startBuffer) / this._itemSize); + newRange.start = Math.max(0, newRange.start - expandStart); + newRange.end = Math.min(dataLength, Math.ceil(firstVisibleIndex + (viewportSize + this._minBufferPx) / this._itemSize)); + } else { + const endBuffer = newRange.end * this._itemSize - (scrollOffset + viewportSize); + if (endBuffer < this._minBufferPx && newRange.end != dataLength) { + const expandEnd = Math.ceil((this._maxBufferPx - endBuffer) / this._itemSize); + if (expandEnd > 0) { + newRange.end = Math.min(dataLength, newRange.end + expandEnd); + newRange.start = Math.max(0, Math.floor(firstVisibleIndex - this._minBufferPx / this._itemSize)); + } + } + } + this._viewport.setRenderedRange(newRange); + this._viewport.setRenderedContentOffset(this._itemSize * newRange.start); + this._scrolledIndexChange.next(Math.floor(firstVisibleIndex)); + } +}; +function _fixedSizeVirtualScrollStrategyFactory(fixedSizeDir) { + return fixedSizeDir._scrollStrategy; +} +var _CdkFixedSizeVirtualScroll = class _CdkFixedSizeVirtualScroll { + constructor() { + this._itemSize = 20; + this._minBufferPx = 100; + this._maxBufferPx = 200; + this._scrollStrategy = new FixedSizeVirtualScrollStrategy(this.itemSize, this.minBufferPx, this.maxBufferPx); + } + /** The size of the items in the list (in pixels). */ + get itemSize() { + return this._itemSize; + } + set itemSize(value) { + this._itemSize = coerceNumberProperty(value); } /** - * Attach the given TemplatePortal to this PortalHost as an embedded View. - * @param portal Portal to be attached. - * @returns Reference to the created embedded view. + * The minimum amount of buffer rendered beyond the viewport (in pixels). + * If the amount of buffer dips below this number, more items will be rendered. Defaults to 100px. */ - attachTemplatePortal(portal) { - portal.setAttachedHost(this); - const viewRef = this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context, { - injector: portal.injector - }); - super.setDisposeFn(() => this._viewContainerRef.clear()); - this._attachedPortal = portal; - this._attachedRef = viewRef; - this.attached.emit(viewRef); - return viewRef; + get minBufferPx() { + return this._minBufferPx; } - /** Gets the root node of the portal outlet. */ - _getRootNode() { - const nativeElement = this._viewContainerRef.element.nativeElement; - return nativeElement.nodeType === nativeElement.ELEMENT_NODE ? nativeElement : nativeElement.parentNode; + set minBufferPx(value) { + this._minBufferPx = coerceNumberProperty(value); + } + /** + * The number of pixels worth of buffer to render for when rendering new items. Defaults to 200px. + */ + get maxBufferPx() { + return this._maxBufferPx; + } + set maxBufferPx(value) { + this._maxBufferPx = coerceNumberProperty(value); + } + ngOnChanges() { + this._scrollStrategy.updateItemAndBufferSize(this.itemSize, this.minBufferPx, this.maxBufferPx); } }; -_CdkPortalOutlet.ɵfac = function CdkPortalOutlet_Factory(t) { - return new (t || _CdkPortalOutlet)(ɵɵdirectiveInject(ComponentFactoryResolver$1), ɵɵdirectiveInject(ViewContainerRef), ɵɵdirectiveInject(DOCUMENT)); -}; -_CdkPortalOutlet.ɵdir = ɵɵdefineDirective({ - type: _CdkPortalOutlet, - selectors: [["", "cdkPortalOutlet", ""]], - inputs: { - portal: ["cdkPortalOutlet", "portal"] - }, - outputs: { - attached: "attached" - }, - exportAs: ["cdkPortalOutlet"], - features: [ɵɵInheritDefinitionFeature] -}); -var CdkPortalOutlet = _CdkPortalOutlet; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(CdkPortalOutlet, [{ - type: Directive, - args: [{ - selector: "[cdkPortalOutlet]", - exportAs: "cdkPortalOutlet", - inputs: ["portal: cdkPortalOutlet"] - }] - }], () => [{ - type: ComponentFactoryResolver$1 - }, { - type: ViewContainerRef - }, { - type: void 0, - decorators: [{ - type: Inject, - args: [DOCUMENT] - }] - }], { - attached: [{ - type: Output - }] - }); -})(); -var _PortalHostDirective = class _PortalHostDirective extends CdkPortalOutlet { +_CdkFixedSizeVirtualScroll.ɵfac = function CdkFixedSizeVirtualScroll_Factory(t) { + return new (t || _CdkFixedSizeVirtualScroll)(); }; -_PortalHostDirective.ɵfac = (() => { - let ɵPortalHostDirective_BaseFactory; - return function PortalHostDirective_Factory(t) { - return (ɵPortalHostDirective_BaseFactory || (ɵPortalHostDirective_BaseFactory = ɵɵgetInheritedFactory(_PortalHostDirective)))(t || _PortalHostDirective); - }; -})(); -_PortalHostDirective.ɵdir = ɵɵdefineDirective({ - type: _PortalHostDirective, - selectors: [["", "cdkPortalHost", ""], ["", "portalHost", ""]], +_CdkFixedSizeVirtualScroll.ɵdir = ɵɵdefineDirective({ + type: _CdkFixedSizeVirtualScroll, + selectors: [["cdk-virtual-scroll-viewport", "itemSize", ""]], inputs: { - portal: ["cdkPortalHost", "portal"] + itemSize: "itemSize", + minBufferPx: "minBufferPx", + maxBufferPx: "maxBufferPx" }, - exportAs: ["cdkPortalHost"], + standalone: true, features: [ɵɵProvidersFeature([{ - provide: CdkPortalOutlet, - useExisting: _PortalHostDirective - }]), ɵɵInheritDefinitionFeature] + provide: VIRTUAL_SCROLL_STRATEGY, + useFactory: _fixedSizeVirtualScrollStrategyFactory, + deps: [forwardRef(() => _CdkFixedSizeVirtualScroll)] + }]), ɵɵNgOnChangesFeature] }); -var PortalHostDirective = _PortalHostDirective; +var CdkFixedSizeVirtualScroll = _CdkFixedSizeVirtualScroll; (() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(PortalHostDirective, [{ + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(CdkFixedSizeVirtualScroll, [{ type: Directive, args: [{ - selector: "[cdkPortalHost], [portalHost]", - exportAs: "cdkPortalHost", - inputs: ["portal: cdkPortalHost"], + selector: "cdk-virtual-scroll-viewport[itemSize]", + standalone: true, providers: [{ - provide: CdkPortalOutlet, - useExisting: PortalHostDirective + provide: VIRTUAL_SCROLL_STRATEGY, + useFactory: _fixedSizeVirtualScrollStrategyFactory, + deps: [forwardRef(() => CdkFixedSizeVirtualScroll)] }] }] - }], null, null); -})(); -var _PortalModule = class _PortalModule { -}; -_PortalModule.ɵfac = function PortalModule_Factory(t) { - return new (t || _PortalModule)(); -}; -_PortalModule.ɵmod = ɵɵdefineNgModule({ - type: _PortalModule, - declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective], - exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective] -}); -_PortalModule.ɵinj = ɵɵdefineInjector({}); -var PortalModule = _PortalModule; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(PortalModule, [{ - type: NgModule, - args: [{ - exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective], - declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective] + }], null, { + itemSize: [{ + type: Input + }], + minBufferPx: [{ + type: Input + }], + maxBufferPx: [{ + type: Input }] - }], null, null); + }); })(); - -// node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-animation.mjs -var _AnimationDuration = class _AnimationDuration { - // Tooltip -}; -_AnimationDuration.SLOW = "0.3s"; -_AnimationDuration.BASE = "0.2s"; -_AnimationDuration.FAST = "0.1s"; -var AnimationDuration = _AnimationDuration; -var _AnimationCurves = class _AnimationCurves { -}; -_AnimationCurves.EASE_BASE_OUT = "cubic-bezier(0.7, 0.3, 0.1, 1)"; -_AnimationCurves.EASE_BASE_IN = "cubic-bezier(0.9, 0, 0.3, 0.7)"; -_AnimationCurves.EASE_OUT = "cubic-bezier(0.215, 0.61, 0.355, 1)"; -_AnimationCurves.EASE_IN = "cubic-bezier(0.55, 0.055, 0.675, 0.19)"; -_AnimationCurves.EASE_IN_OUT = "cubic-bezier(0.645, 0.045, 0.355, 1)"; -_AnimationCurves.EASE_OUT_BACK = "cubic-bezier(0.12, 0.4, 0.29, 1.46)"; -_AnimationCurves.EASE_IN_BACK = "cubic-bezier(0.71, -0.46, 0.88, 0.6)"; -_AnimationCurves.EASE_IN_OUT_BACK = "cubic-bezier(0.71, -0.46, 0.29, 1.46)"; -_AnimationCurves.EASE_OUT_CIRC = "cubic-bezier(0.08, 0.82, 0.17, 1)"; -_AnimationCurves.EASE_IN_CIRC = "cubic-bezier(0.6, 0.04, 0.98, 0.34)"; -_AnimationCurves.EASE_IN_OUT_CIRC = "cubic-bezier(0.78, 0.14, 0.15, 0.86)"; -_AnimationCurves.EASE_OUT_QUINT = "cubic-bezier(0.23, 1, 0.32, 1)"; -_AnimationCurves.EASE_IN_QUINT = "cubic-bezier(0.755, 0.05, 0.855, 0.06)"; -_AnimationCurves.EASE_IN_OUT_QUINT = "cubic-bezier(0.86, 0, 0.07, 1)"; -var AnimationCurves = _AnimationCurves; -var collapseMotion = trigger("collapseMotion", [ - state("expanded", style({ height: "*" })), - state("collapsed", style({ height: 0, overflow: "hidden" })), - state("hidden", style({ height: 0, overflow: "hidden", borderTopWidth: "0" })), - transition("expanded => collapsed", animate(`150ms ${AnimationCurves.EASE_IN_OUT}`)), - transition("expanded => hidden", animate(`150ms ${AnimationCurves.EASE_IN_OUT}`)), - transition("collapsed => expanded", animate(`150ms ${AnimationCurves.EASE_IN_OUT}`)), - transition("hidden => expanded", animate(`150ms ${AnimationCurves.EASE_IN_OUT}`)) -]); -var treeCollapseMotion = trigger("treeCollapseMotion", [ - transition("* => *", [ - query("nz-tree-node:leave,nz-tree-builtin-node:leave", [ - style({ overflow: "hidden" }), - stagger(0, [ - animate(`150ms ${AnimationCurves.EASE_IN_OUT}`, style({ height: 0, opacity: 0, "padding-bottom": 0 })) - ]) - ], { - optional: true - }), - query("nz-tree-node:enter,nz-tree-builtin-node:enter", [ - style({ overflow: "hidden", height: 0, opacity: 0, "padding-bottom": 0 }), - stagger(0, [ - animate(`150ms ${AnimationCurves.EASE_IN_OUT}`, style({ overflow: "hidden", height: "*", opacity: "*", "padding-bottom": "*" })) - ]) - ], { - optional: true - }) - ]) -]); -var fadeMotion = trigger("fadeMotion", [ - transition(":enter", [style({ opacity: 0 }), animate(`${AnimationDuration.BASE}`, style({ opacity: 1 }))]), - transition(":leave", [style({ opacity: 1 }), animate(`${AnimationDuration.BASE}`, style({ opacity: 0 }))]) -]); -var helpMotion = trigger("helpMotion", [ - transition(":enter", [ - style({ - opacity: 0, - transform: "translateY(-5px)" - }), - animate(`${AnimationDuration.SLOW} ${AnimationCurves.EASE_IN_OUT}`, style({ - opacity: 1, - transform: "translateY(0)" - })) - ]), - transition(":leave", [ - style({ - opacity: 1, - transform: "translateY(0)" - }), - animate(`${AnimationDuration.SLOW} ${AnimationCurves.EASE_IN_OUT}`, style({ - opacity: 0, - transform: "translateY(-5px)" - })) - ]) -]); -var moveUpMotion = trigger("moveUpMotion", [ - transition("* => enter", [ - style({ - transformOrigin: "0 0", - transform: "translateY(-100%)", - opacity: 0 - }), - animate(`${AnimationDuration.BASE}`, style({ - transformOrigin: "0 0", - transform: "translateY(0%)", - opacity: 1 - })) - ]), - transition("* => leave", [ - style({ - transformOrigin: "0 0", - transform: "translateY(0%)", - opacity: 1 - }), - animate(`${AnimationDuration.BASE}`, style({ - transformOrigin: "0 0", - transform: "translateY(-100%)", - opacity: 0 - })) - ]) -]); -var notificationMotion = trigger("notificationMotion", [ - state("enterRight", style({ opacity: 1, transform: "translateX(0)" })), - transition("* => enterRight", [style({ opacity: 0, transform: "translateX(5%)" }), animate("100ms linear")]), - state("enterLeft", style({ opacity: 1, transform: "translateX(0)" })), - transition("* => enterLeft", [style({ opacity: 0, transform: "translateX(-5%)" }), animate("100ms linear")]), - state("enterTop", style({ opacity: 1, transform: "translateY(0)" })), - transition("* => enterTop", [style({ opacity: 0, transform: "translateY(-5%)" }), animate("100ms linear")]), - state("enterBottom", style({ opacity: 1, transform: "translateY(0)" })), - transition("* => enterBottom", [style({ opacity: 0, transform: "translateY(5%)" }), animate("100ms linear")]), - state("leave", style({ - opacity: 0, - transform: "scaleY(0.8)", - transformOrigin: "0% 0%" - })), - transition("* => leave", [ - style({ - opacity: 1, - transform: "scaleY(1)", - transformOrigin: "0% 0%" - }), - animate("100ms linear") - ]) -]); -var ANIMATION_TRANSITION_IN = `${AnimationDuration.BASE} ${AnimationCurves.EASE_OUT_QUINT}`; -var ANIMATION_TRANSITION_OUT = `${AnimationDuration.BASE} ${AnimationCurves.EASE_IN_QUINT}`; -var slideMotion = trigger("slideMotion", [ - state("void", style({ - opacity: 0, - transform: "scaleY(0.8)" - })), - state("enter", style({ - opacity: 1, - transform: "scaleY(1)" - })), - transition("void => *", [animate(ANIMATION_TRANSITION_IN)]), - transition("* => void", [animate(ANIMATION_TRANSITION_OUT)]) -]); -var slideAlertMotion = trigger("slideAlertMotion", [ - transition(":leave", [ - style({ opacity: 1, transform: "scaleY(1)", transformOrigin: "0% 0%" }), - animate(`${AnimationDuration.SLOW} ${AnimationCurves.EASE_IN_OUT_CIRC}`, style({ - opacity: 0, - transform: "scaleY(0)", - transformOrigin: "0% 0%" - })) - ]) -]); -var zoomBigMotion = trigger("zoomBigMotion", [ - transition("void => active", [ - style({ opacity: 0, transform: "scale(0.8)" }), - animate(`${AnimationDuration.BASE} ${AnimationCurves.EASE_OUT_CIRC}`, style({ - opacity: 1, - transform: "scale(1)" - })) - ]), - transition("active => void", [ - style({ opacity: 1, transform: "scale(1)" }), - animate(`${AnimationDuration.BASE} ${AnimationCurves.EASE_IN_OUT_CIRC}`, style({ - opacity: 0, - transform: "scale(0.8)" - })) - ]) -]); -var zoomBadgeMotion = trigger("zoomBadgeMotion", [ - transition(":enter", [ - style({ opacity: 0, transform: "scale(0) translate(50%, -50%)" }), - animate(`${AnimationDuration.SLOW} ${AnimationCurves.EASE_OUT_BACK}`, style({ - opacity: 1, - transform: "scale(1) translate(50%, -50%)" - })) - ]), - transition(":leave", [ - style({ opacity: 1, transform: "scale(1) translate(50%, -50%)" }), - animate(`${AnimationDuration.SLOW} ${AnimationCurves.EASE_IN_BACK}`, style({ - opacity: 0, - transform: "scale(0) translate(50%, -50%)" - })) - ]) -]); -var thumbMotion = trigger("thumbMotion", [ - state("from", style({ transform: "translateX({{ transform }}px)", width: "{{ width }}px" }), { - params: { transform: 0, width: 0 } - }), - state("to", style({ transform: "translateX({{ transform }}px)", width: "{{ width }}px" }), { - params: { transform: 100, width: 0 } - }), - transition("from => to", animate(`300ms ${AnimationCurves.EASE_IN_OUT}`)) -]); - -// node_modules/@angular/cdk/fesm2022/collections.mjs -var DataSource = class { -}; -function isDataSource(value) { - return value && typeof value.connect === "function" && !(value instanceof ConnectableObservable); -} -var ArrayDataSource = class extends DataSource { - constructor(_data) { - super(); - this._data = _data; - } - connect() { - return isObservable(this._data) ? this._data : of(this._data); - } - disconnect() { - } -}; -var _RecycleViewRepeaterStrategy = class { - constructor() { - this.viewCacheSize = 20; - this._viewCache = []; - } - /** Apply changes to the DOM. */ - applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) { - changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => { - let view; - let operation; - if (record.previousIndex == null) { - const viewArgsFactory = () => itemContextFactory(record, adjustedPreviousIndex, currentIndex); - view = this._insertView(viewArgsFactory, currentIndex, viewContainerRef, itemValueResolver(record)); - operation = view ? 1 : 0; - } else if (currentIndex == null) { - this._detachAndCacheView(adjustedPreviousIndex, viewContainerRef); - operation = 3; - } else { - view = this._moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, itemValueResolver(record)); - operation = 2; - } - if (itemViewChanged) { - itemViewChanged({ - context: view?.context, - operation, - record - }); - } - }); - } - detach() { - for (const view of this._viewCache) { - view.destroy(); - } - this._viewCache = []; +var DEFAULT_SCROLL_TIME = 20; +var _ScrollDispatcher = class _ScrollDispatcher { + constructor(_ngZone, _platform, document2) { + this._ngZone = _ngZone; + this._platform = _platform; + this._scrolled = new Subject(); + this._globalSubscription = null; + this._scrolledCount = 0; + this.scrollContainers = /* @__PURE__ */ new Map(); + this._document = document2; } /** - * Inserts a view for a new item, either from the cache or by creating a new - * one. Returns `undefined` if the item was inserted into a cached view. + * Registers a scrollable instance with the service and listens for its scrolled events. When the + * scrollable is scrolled, the service emits the event to its scrolled observable. + * @param scrollable Scrollable instance to be registered. */ - _insertView(viewArgsFactory, currentIndex, viewContainerRef, value) { - const cachedView = this._insertViewFromCache(currentIndex, viewContainerRef); - if (cachedView) { - cachedView.context.$implicit = value; - return void 0; + register(scrollable) { + if (!this.scrollContainers.has(scrollable)) { + this.scrollContainers.set(scrollable, scrollable.elementScrolled().subscribe(() => this._scrolled.next(scrollable))); } - const viewArgs = viewArgsFactory(); - return viewContainerRef.createEmbeddedView(viewArgs.templateRef, viewArgs.context, viewArgs.index); - } - /** Detaches the view at the given index and inserts into the view cache. */ - _detachAndCacheView(index, viewContainerRef) { - const detachedView = viewContainerRef.detach(index); - this._maybeCacheView(detachedView, viewContainerRef); - } - /** Moves view at the previous index to the current index. */ - _moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, value) { - const view = viewContainerRef.get(adjustedPreviousIndex); - viewContainerRef.move(view, currentIndex); - view.context.$implicit = value; - return view; } /** - * Cache the given detached view. If the cache is full, the view will be - * destroyed. + * De-registers a Scrollable reference and unsubscribes from its scroll event observable. + * @param scrollable Scrollable instance to be deregistered. */ - _maybeCacheView(view, viewContainerRef) { - if (this._viewCache.length < this.viewCacheSize) { - this._viewCache.push(view); - } else { - const index = viewContainerRef.indexOf(view); - if (index === -1) { - view.destroy(); - } else { - viewContainerRef.remove(index); - } - } - } - /** Inserts a recycled view from the cache at the given index. */ - _insertViewFromCache(index, viewContainerRef) { - const cachedView = this._viewCache.pop(); - if (cachedView) { - viewContainerRef.insert(cachedView, index); + deregister(scrollable) { + const scrollableReference = this.scrollContainers.get(scrollable); + if (scrollableReference) { + scrollableReference.unsubscribe(); + this.scrollContainers.delete(scrollable); } - return cachedView || null; - } -}; -var _UniqueSelectionDispatcher = class _UniqueSelectionDispatcher { - constructor() { - this._listeners = []; } /** - * Notify other items that selection for the given name has been set. - * @param id ID of the item. - * @param name Name of the item. + * Returns an observable that emits an event whenever any of the registered Scrollable + * references (or window, document, or body) fire a scrolled event. Can provide a time in ms + * to override the default "throttle" time. + * + * **Note:** in order to avoid hitting change detection for every scroll event, + * all of the events emitted from this stream will be run outside the Angular zone. + * If you need to update any data bindings as a result of a scroll event, you have + * to run the callback using `NgZone.run`. */ - notify(id, name) { - for (let listener of this._listeners) { - listener(id, name); + scrolled(auditTimeInMs = DEFAULT_SCROLL_TIME) { + if (!this._platform.isBrowser) { + return of(); } + return new Observable((observer) => { + if (!this._globalSubscription) { + this._addGlobalListener(); + } + const subscription = auditTimeInMs > 0 ? this._scrolled.pipe(auditTime(auditTimeInMs)).subscribe(observer) : this._scrolled.subscribe(observer); + this._scrolledCount++; + return () => { + subscription.unsubscribe(); + this._scrolledCount--; + if (!this._scrolledCount) { + this._removeGlobalListener(); + } + }; + }); + } + ngOnDestroy() { + this._removeGlobalListener(); + this.scrollContainers.forEach((_, container) => this.deregister(container)); + this._scrolled.complete(); } /** - * Listen for future changes to item selection. - * @return Function used to deregister listener + * Returns an observable that emits whenever any of the + * scrollable ancestors of an element are scrolled. + * @param elementOrElementRef Element whose ancestors to listen for. + * @param auditTimeInMs Time to throttle the scroll events. */ - listen(listener) { - this._listeners.push(listener); - return () => { - this._listeners = this._listeners.filter((registered) => { - return listener !== registered; - }); - }; + ancestorScrolled(elementOrElementRef, auditTimeInMs) { + const ancestors = this.getAncestorScrollContainers(elementOrElementRef); + return this.scrolled(auditTimeInMs).pipe(filter((target) => { + return !target || ancestors.indexOf(target) > -1; + })); } - ngOnDestroy() { - this._listeners = []; + /** Returns all registered Scrollables that contain the provided element. */ + getAncestorScrollContainers(elementOrElementRef) { + const scrollingContainers = []; + this.scrollContainers.forEach((_subscription, scrollable) => { + if (this._scrollableContainsElement(scrollable, elementOrElementRef)) { + scrollingContainers.push(scrollable); + } + }); + return scrollingContainers; + } + /** Use defaultView of injected document if available or fallback to global window reference */ + _getWindow() { + return this._document.defaultView || window; + } + /** Returns true if the element is contained within the provided Scrollable. */ + _scrollableContainsElement(scrollable, elementOrElementRef) { + let element = coerceElement(elementOrElementRef); + let scrollableElement = scrollable.getElementRef().nativeElement; + do { + if (element == scrollableElement) { + return true; + } + } while (element = element.parentElement); + return false; + } + /** Sets up the global scroll listeners. */ + _addGlobalListener() { + this._globalSubscription = this._ngZone.runOutsideAngular(() => { + const window2 = this._getWindow(); + return fromEvent(window2.document, "scroll").subscribe(() => this._scrolled.next()); + }); + } + /** Cleans up the global scroll listener. */ + _removeGlobalListener() { + if (this._globalSubscription) { + this._globalSubscription.unsubscribe(); + this._globalSubscription = null; + } } }; -_UniqueSelectionDispatcher.ɵfac = function UniqueSelectionDispatcher_Factory(t) { - return new (t || _UniqueSelectionDispatcher)(); +_ScrollDispatcher.ɵfac = function ScrollDispatcher_Factory(t) { + return new (t || _ScrollDispatcher)(ɵɵinject(NgZone), ɵɵinject(Platform), ɵɵinject(DOCUMENT, 8)); }; -_UniqueSelectionDispatcher.ɵprov = ɵɵdefineInjectable({ - token: _UniqueSelectionDispatcher, - factory: _UniqueSelectionDispatcher.ɵfac, +_ScrollDispatcher.ɵprov = ɵɵdefineInjectable({ + token: _ScrollDispatcher, + factory: _ScrollDispatcher.ɵfac, providedIn: "root" }); -var UniqueSelectionDispatcher = _UniqueSelectionDispatcher; +var ScrollDispatcher = _ScrollDispatcher; (() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(UniqueSelectionDispatcher, [{ + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ScrollDispatcher, [{ type: Injectable, args: [{ providedIn: "root" }] - }], null, null); + }], () => [{ + type: NgZone + }, { + type: Platform + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Inject, + args: [DOCUMENT] + }] + }], null); })(); -var _VIEW_REPEATER_STRATEGY = new InjectionToken("_ViewRepeater"); - -// node_modules/@angular/cdk/fesm2022/scrolling.mjs -var _c0 = ["contentWrapper"]; -var _c1 = ["*"]; -var VIRTUAL_SCROLL_STRATEGY = new InjectionToken("VIRTUAL_SCROLL_STRATEGY"); -var FixedSizeVirtualScrollStrategy = class { - /** - * @param itemSize The size of the items in the virtually scrolling list. - * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more - * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more. - */ - constructor(itemSize, minBufferPx, maxBufferPx) { - this._scrolledIndexChange = new Subject(); - this.scrolledIndexChange = this._scrolledIndexChange.pipe(distinctUntilChanged()); - this._viewport = null; - this._itemSize = itemSize; - this._minBufferPx = minBufferPx; - this._maxBufferPx = maxBufferPx; +var _CdkScrollable = class _CdkScrollable { + constructor(elementRef, scrollDispatcher, ngZone, dir) { + this.elementRef = elementRef; + this.scrollDispatcher = scrollDispatcher; + this.ngZone = ngZone; + this.dir = dir; + this._destroyed = new Subject(); + this._elementScrolled = new Observable((observer) => this.ngZone.runOutsideAngular(() => fromEvent(this.elementRef.nativeElement, "scroll").pipe(takeUntil(this._destroyed)).subscribe(observer))); } - /** - * Attaches this scroll strategy to a viewport. - * @param viewport The viewport to attach this strategy to. - */ - attach(viewport) { - this._viewport = viewport; - this._updateTotalContentSize(); - this._updateRenderedRange(); - } - /** Detaches this scroll strategy from the currently attached viewport. */ - detach() { - this._scrolledIndexChange.complete(); - this._viewport = null; - } - /** - * Update the item size and buffer size. - * @param itemSize The size of the items in the virtually scrolling list. - * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more - * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more. - */ - updateItemAndBufferSize(itemSize, minBufferPx, maxBufferPx) { - if (maxBufferPx < minBufferPx && (typeof ngDevMode === "undefined" || ngDevMode)) { - throw Error("CDK virtual scroll: maxBufferPx must be greater than or equal to minBufferPx"); - } - this._itemSize = itemSize; - this._minBufferPx = minBufferPx; - this._maxBufferPx = maxBufferPx; - this._updateTotalContentSize(); - this._updateRenderedRange(); - } - /** @docs-private Implemented as part of VirtualScrollStrategy. */ - onContentScrolled() { - this._updateRenderedRange(); + ngOnInit() { + this.scrollDispatcher.register(this); } - /** @docs-private Implemented as part of VirtualScrollStrategy. */ - onDataLengthChanged() { - this._updateTotalContentSize(); - this._updateRenderedRange(); + ngOnDestroy() { + this.scrollDispatcher.deregister(this); + this._destroyed.next(); + this._destroyed.complete(); } - /** @docs-private Implemented as part of VirtualScrollStrategy. */ - onContentRendered() { + /** Returns observable that emits when a scroll event is fired on the host element. */ + elementScrolled() { + return this._elementScrolled; } - /** @docs-private Implemented as part of VirtualScrollStrategy. */ - onRenderedOffsetChanged() { + /** Gets the ElementRef for the viewport. */ + getElementRef() { + return this.elementRef; } /** - * Scroll to the offset for the given index. - * @param index The index of the element to scroll to. - * @param behavior The ScrollBehavior to use when scrolling. + * Scrolls to the specified offsets. This is a normalized version of the browser's native scrollTo + * method, since browsers are not consistent about what scrollLeft means in RTL. For this method + * left and right always refer to the left and right side of the scrolling container irrespective + * of the layout direction. start and end refer to left and right in an LTR context and vice-versa + * in an RTL context. + * @param options specified the offsets to scroll to. */ - scrollToIndex(index, behavior) { - if (this._viewport) { - this._viewport.scrollToOffset(index * this._itemSize, behavior); + scrollTo(options) { + const el = this.elementRef.nativeElement; + const isRtl = this.dir && this.dir.value == "rtl"; + if (options.left == null) { + options.left = isRtl ? options.end : options.start; } - } - /** Update the viewport's total content size. */ - _updateTotalContentSize() { - if (!this._viewport) { - return; + if (options.right == null) { + options.right = isRtl ? options.start : options.end; } - this._viewport.setTotalContentSize(this._viewport.getDataLength() * this._itemSize); - } - /** Update the viewport's rendered range. */ - _updateRenderedRange() { - if (!this._viewport) { - return; + if (options.bottom != null) { + options.top = el.scrollHeight - el.clientHeight - options.bottom; } - const renderedRange = this._viewport.getRenderedRange(); - const newRange = { - start: renderedRange.start, - end: renderedRange.end - }; - const viewportSize = this._viewport.getViewportSize(); - const dataLength = this._viewport.getDataLength(); - let scrollOffset = this._viewport.measureScrollOffset(); - let firstVisibleIndex = this._itemSize > 0 ? scrollOffset / this._itemSize : 0; - if (newRange.end > dataLength) { - const maxVisibleItems = Math.ceil(viewportSize / this._itemSize); - const newVisibleIndex = Math.max(0, Math.min(firstVisibleIndex, dataLength - maxVisibleItems)); - if (firstVisibleIndex != newVisibleIndex) { - firstVisibleIndex = newVisibleIndex; - scrollOffset = newVisibleIndex * this._itemSize; - newRange.start = Math.floor(firstVisibleIndex); + if (isRtl && getRtlScrollAxisType() != 0) { + if (options.left != null) { + options.right = el.scrollWidth - el.clientWidth - options.left; + } + if (getRtlScrollAxisType() == 2) { + options.left = options.right; + } else if (getRtlScrollAxisType() == 1) { + options.left = options.right ? -options.right : options.right; } - newRange.end = Math.max(0, Math.min(dataLength, newRange.start + maxVisibleItems)); - } - const startBuffer = scrollOffset - newRange.start * this._itemSize; - if (startBuffer < this._minBufferPx && newRange.start != 0) { - const expandStart = Math.ceil((this._maxBufferPx - startBuffer) / this._itemSize); - newRange.start = Math.max(0, newRange.start - expandStart); - newRange.end = Math.min(dataLength, Math.ceil(firstVisibleIndex + (viewportSize + this._minBufferPx) / this._itemSize)); } else { - const endBuffer = newRange.end * this._itemSize - (scrollOffset + viewportSize); - if (endBuffer < this._minBufferPx && newRange.end != dataLength) { - const expandEnd = Math.ceil((this._maxBufferPx - endBuffer) / this._itemSize); - if (expandEnd > 0) { - newRange.end = Math.min(dataLength, newRange.end + expandEnd); - newRange.start = Math.max(0, Math.floor(firstVisibleIndex - this._minBufferPx / this._itemSize)); - } + if (options.right != null) { + options.left = el.scrollWidth - el.clientWidth - options.right; } } - this._viewport.setRenderedRange(newRange); - this._viewport.setRenderedContentOffset(this._itemSize * newRange.start); - this._scrolledIndexChange.next(Math.floor(firstVisibleIndex)); - } -}; -function _fixedSizeVirtualScrollStrategyFactory(fixedSizeDir) { - return fixedSizeDir._scrollStrategy; -} -var _CdkFixedSizeVirtualScroll = class _CdkFixedSizeVirtualScroll { - constructor() { - this._itemSize = 20; - this._minBufferPx = 100; - this._maxBufferPx = 200; - this._scrollStrategy = new FixedSizeVirtualScrollStrategy(this.itemSize, this.minBufferPx, this.maxBufferPx); - } - /** The size of the items in the list (in pixels). */ - get itemSize() { - return this._itemSize; - } - set itemSize(value) { - this._itemSize = coerceNumberProperty(value); - } - /** - * The minimum amount of buffer rendered beyond the viewport (in pixels). - * If the amount of buffer dips below this number, more items will be rendered. Defaults to 100px. - */ - get minBufferPx() { - return this._minBufferPx; + this._applyScrollToOptions(options); } - set minBufferPx(value) { - this._minBufferPx = coerceNumberProperty(value); + _applyScrollToOptions(options) { + const el = this.elementRef.nativeElement; + if (supportsScrollBehavior()) { + el.scrollTo(options); + } else { + if (options.top != null) { + el.scrollTop = options.top; + } + if (options.left != null) { + el.scrollLeft = options.left; + } + } } /** - * The number of pixels worth of buffer to render for when rendering new items. Defaults to 200px. + * Measures the scroll offset relative to the specified edge of the viewport. This method can be + * used instead of directly checking scrollLeft or scrollTop, since browsers are not consistent + * about what scrollLeft means in RTL. The values returned by this method are normalized such that + * left and right always refer to the left and right side of the scrolling container irrespective + * of the layout direction. start and end refer to left and right in an LTR context and vice-versa + * in an RTL context. + * @param from The edge to measure from. */ - get maxBufferPx() { - return this._maxBufferPx; - } - set maxBufferPx(value) { - this._maxBufferPx = coerceNumberProperty(value); - } - ngOnChanges() { - this._scrollStrategy.updateItemAndBufferSize(this.itemSize, this.minBufferPx, this.maxBufferPx); + measureScrollOffset(from) { + const LEFT = "left"; + const RIGHT = "right"; + const el = this.elementRef.nativeElement; + if (from == "top") { + return el.scrollTop; + } + if (from == "bottom") { + return el.scrollHeight - el.clientHeight - el.scrollTop; + } + const isRtl = this.dir && this.dir.value == "rtl"; + if (from == "start") { + from = isRtl ? RIGHT : LEFT; + } else if (from == "end") { + from = isRtl ? LEFT : RIGHT; + } + if (isRtl && getRtlScrollAxisType() == 2) { + if (from == LEFT) { + return el.scrollWidth - el.clientWidth - el.scrollLeft; + } else { + return el.scrollLeft; + } + } else if (isRtl && getRtlScrollAxisType() == 1) { + if (from == LEFT) { + return el.scrollLeft + el.scrollWidth - el.clientWidth; + } else { + return -el.scrollLeft; + } + } else { + if (from == LEFT) { + return el.scrollLeft; + } else { + return el.scrollWidth - el.clientWidth - el.scrollLeft; + } + } } }; -_CdkFixedSizeVirtualScroll.ɵfac = function CdkFixedSizeVirtualScroll_Factory(t) { - return new (t || _CdkFixedSizeVirtualScroll)(); +_CdkScrollable.ɵfac = function CdkScrollable_Factory(t) { + return new (t || _CdkScrollable)(ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(ScrollDispatcher), ɵɵdirectiveInject(NgZone), ɵɵdirectiveInject(Directionality, 8)); }; -_CdkFixedSizeVirtualScroll.ɵdir = ɵɵdefineDirective({ - type: _CdkFixedSizeVirtualScroll, - selectors: [["cdk-virtual-scroll-viewport", "itemSize", ""]], - inputs: { - itemSize: "itemSize", - minBufferPx: "minBufferPx", - maxBufferPx: "maxBufferPx" - }, - standalone: true, - features: [ɵɵProvidersFeature([{ - provide: VIRTUAL_SCROLL_STRATEGY, - useFactory: _fixedSizeVirtualScrollStrategyFactory, - deps: [forwardRef(() => _CdkFixedSizeVirtualScroll)] - }]), ɵɵNgOnChangesFeature] +_CdkScrollable.ɵdir = ɵɵdefineDirective({ + type: _CdkScrollable, + selectors: [["", "cdk-scrollable", ""], ["", "cdkScrollable", ""]], + standalone: true }); -var CdkFixedSizeVirtualScroll = _CdkFixedSizeVirtualScroll; +var CdkScrollable = _CdkScrollable; (() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(CdkFixedSizeVirtualScroll, [{ + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(CdkScrollable, [{ type: Directive, args: [{ - selector: "cdk-virtual-scroll-viewport[itemSize]", - standalone: true, - providers: [{ - provide: VIRTUAL_SCROLL_STRATEGY, - useFactory: _fixedSizeVirtualScrollStrategyFactory, - deps: [forwardRef(() => CdkFixedSizeVirtualScroll)] - }] + selector: "[cdk-scrollable], [cdkScrollable]", + standalone: true }] - }], null, { - itemSize: [{ - type: Input - }], - minBufferPx: [{ - type: Input - }], - maxBufferPx: [{ - type: Input + }], () => [{ + type: ElementRef + }, { + type: ScrollDispatcher + }, { + type: NgZone + }, { + type: Directionality, + decorators: [{ + type: Optional }] - }); + }], null); })(); -var DEFAULT_SCROLL_TIME = 20; -var _ScrollDispatcher = class _ScrollDispatcher { - constructor(_ngZone, _platform, document2) { - this._ngZone = _ngZone; +var DEFAULT_RESIZE_TIME = 20; +var _ViewportRuler = class _ViewportRuler { + constructor(_platform, ngZone, document2) { this._platform = _platform; - this._scrolled = new Subject(); - this._globalSubscription = null; - this._scrolledCount = 0; - this.scrollContainers = /* @__PURE__ */ new Map(); + this._change = new Subject(); + this._changeListener = (event) => { + this._change.next(event); + }; this._document = document2; + ngZone.runOutsideAngular(() => { + if (_platform.isBrowser) { + const window2 = this._getWindow(); + window2.addEventListener("resize", this._changeListener); + window2.addEventListener("orientationchange", this._changeListener); + } + this.change().subscribe(() => this._viewportSize = null); + }); } - /** - * Registers a scrollable instance with the service and listens for its scrolled events. When the - * scrollable is scrolled, the service emits the event to its scrolled observable. - * @param scrollable Scrollable instance to be registered. - */ - register(scrollable) { - if (!this.scrollContainers.has(scrollable)) { - this.scrollContainers.set(scrollable, scrollable.elementScrolled().subscribe(() => this._scrolled.next(scrollable))); + ngOnDestroy() { + if (this._platform.isBrowser) { + const window2 = this._getWindow(); + window2.removeEventListener("resize", this._changeListener); + window2.removeEventListener("orientationchange", this._changeListener); } + this._change.complete(); } - /** - * De-registers a Scrollable reference and unsubscribes from its scroll event observable. - * @param scrollable Scrollable instance to be deregistered. - */ - deregister(scrollable) { - const scrollableReference = this.scrollContainers.get(scrollable); - if (scrollableReference) { - scrollableReference.unsubscribe(); - this.scrollContainers.delete(scrollable); + /** Returns the viewport's width and height. */ + getViewportSize() { + if (!this._viewportSize) { + this._updateViewportSize(); } - } - /** - * Returns an observable that emits an event whenever any of the registered Scrollable - * references (or window, document, or body) fire a scrolled event. Can provide a time in ms - * to override the default "throttle" time. - * - * **Note:** in order to avoid hitting change detection for every scroll event, - * all of the events emitted from this stream will be run outside the Angular zone. - * If you need to update any data bindings as a result of a scroll event, you have - * to run the callback using `NgZone.run`. - */ - scrolled(auditTimeInMs = DEFAULT_SCROLL_TIME) { + const output = { + width: this._viewportSize.width, + height: this._viewportSize.height + }; if (!this._platform.isBrowser) { - return of(); + this._viewportSize = null; } - return new Observable((observer) => { - if (!this._globalSubscription) { - this._addGlobalListener(); - } - const subscription = auditTimeInMs > 0 ? this._scrolled.pipe(auditTime(auditTimeInMs)).subscribe(observer) : this._scrolled.subscribe(observer); - this._scrolledCount++; - return () => { - subscription.unsubscribe(); - this._scrolledCount--; - if (!this._scrolledCount) { - this._removeGlobalListener(); - } - }; - }); + return output; } - ngOnDestroy() { - this._removeGlobalListener(); - this.scrollContainers.forEach((_, container) => this.deregister(container)); - this._scrolled.complete(); + /** Gets a ClientRect for the viewport's bounds. */ + getViewportRect() { + const scrollPosition = this.getViewportScrollPosition(); + const { + width, + height + } = this.getViewportSize(); + return { + top: scrollPosition.top, + left: scrollPosition.left, + bottom: scrollPosition.top + height, + right: scrollPosition.left + width, + height, + width + }; + } + /** Gets the (top, left) scroll position of the viewport. */ + getViewportScrollPosition() { + if (!this._platform.isBrowser) { + return { + top: 0, + left: 0 + }; + } + const document2 = this._document; + const window2 = this._getWindow(); + const documentElement = document2.documentElement; + const documentRect = documentElement.getBoundingClientRect(); + const top = -documentRect.top || document2.body.scrollTop || window2.scrollY || documentElement.scrollTop || 0; + const left = -documentRect.left || document2.body.scrollLeft || window2.scrollX || documentElement.scrollLeft || 0; + return { + top, + left + }; } /** - * Returns an observable that emits whenever any of the - * scrollable ancestors of an element are scrolled. - * @param elementOrElementRef Element whose ancestors to listen for. - * @param auditTimeInMs Time to throttle the scroll events. + * Returns a stream that emits whenever the size of the viewport changes. + * This stream emits outside of the Angular zone. + * @param throttleTime Time in milliseconds to throttle the stream. */ - ancestorScrolled(elementOrElementRef, auditTimeInMs) { - const ancestors = this.getAncestorScrollContainers(elementOrElementRef); - return this.scrolled(auditTimeInMs).pipe(filter((target) => { - return !target || ancestors.indexOf(target) > -1; - })); - } - /** Returns all registered Scrollables that contain the provided element. */ - getAncestorScrollContainers(elementOrElementRef) { - const scrollingContainers = []; - this.scrollContainers.forEach((_subscription, scrollable) => { - if (this._scrollableContainsElement(scrollable, elementOrElementRef)) { - scrollingContainers.push(scrollable); - } - }); - return scrollingContainers; + change(throttleTime = DEFAULT_RESIZE_TIME) { + return throttleTime > 0 ? this._change.pipe(auditTime(throttleTime)) : this._change; } /** Use defaultView of injected document if available or fallback to global window reference */ _getWindow() { return this._document.defaultView || window; } - /** Returns true if the element is contained within the provided Scrollable. */ - _scrollableContainsElement(scrollable, elementOrElementRef) { - let element = coerceElement(elementOrElementRef); - let scrollableElement = scrollable.getElementRef().nativeElement; - do { - if (element == scrollableElement) { - return true; - } - } while (element = element.parentElement); - return false; - } - /** Sets up the global scroll listeners. */ - _addGlobalListener() { - this._globalSubscription = this._ngZone.runOutsideAngular(() => { - const window2 = this._getWindow(); - return fromEvent(window2.document, "scroll").subscribe(() => this._scrolled.next()); - }); - } - /** Cleans up the global scroll listener. */ - _removeGlobalListener() { - if (this._globalSubscription) { - this._globalSubscription.unsubscribe(); - this._globalSubscription = null; - } + /** Updates the cached viewport size. */ + _updateViewportSize() { + const window2 = this._getWindow(); + this._viewportSize = this._platform.isBrowser ? { + width: window2.innerWidth, + height: window2.innerHeight + } : { + width: 0, + height: 0 + }; } }; -_ScrollDispatcher.ɵfac = function ScrollDispatcher_Factory(t) { - return new (t || _ScrollDispatcher)(ɵɵinject(NgZone), ɵɵinject(Platform), ɵɵinject(DOCUMENT, 8)); +_ViewportRuler.ɵfac = function ViewportRuler_Factory(t) { + return new (t || _ViewportRuler)(ɵɵinject(Platform), ɵɵinject(NgZone), ɵɵinject(DOCUMENT, 8)); }; -_ScrollDispatcher.ɵprov = ɵɵdefineInjectable({ - token: _ScrollDispatcher, - factory: _ScrollDispatcher.ɵfac, +_ViewportRuler.ɵprov = ɵɵdefineInjectable({ + token: _ViewportRuler, + factory: _ViewportRuler.ɵfac, providedIn: "root" }); -var ScrollDispatcher = _ScrollDispatcher; +var ViewportRuler = _ViewportRuler; (() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ScrollDispatcher, [{ + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ViewportRuler, [{ type: Injectable, args: [{ providedIn: "root" }] }], () => [{ - type: NgZone - }, { type: Platform + }, { + type: NgZone }, { type: void 0, decorators: [{ @@ -1326,292 +885,15 @@ var ScrollDispatcher = _ScrollDispatcher; }] }], null); })(); -var _CdkScrollable = class _CdkScrollable { +var VIRTUAL_SCROLLABLE = new InjectionToken("VIRTUAL_SCROLLABLE"); +var _CdkVirtualScrollable = class _CdkVirtualScrollable extends CdkScrollable { constructor(elementRef, scrollDispatcher, ngZone, dir) { - this.elementRef = elementRef; - this.scrollDispatcher = scrollDispatcher; - this.ngZone = ngZone; - this.dir = dir; - this._destroyed = new Subject(); - this._elementScrolled = new Observable((observer) => this.ngZone.runOutsideAngular(() => fromEvent(this.elementRef.nativeElement, "scroll").pipe(takeUntil(this._destroyed)).subscribe(observer))); - } - ngOnInit() { - this.scrollDispatcher.register(this); - } - ngOnDestroy() { - this.scrollDispatcher.deregister(this); - this._destroyed.next(); - this._destroyed.complete(); - } - /** Returns observable that emits when a scroll event is fired on the host element. */ - elementScrolled() { - return this._elementScrolled; - } - /** Gets the ElementRef for the viewport. */ - getElementRef() { - return this.elementRef; + super(elementRef, scrollDispatcher, ngZone, dir); } /** - * Scrolls to the specified offsets. This is a normalized version of the browser's native scrollTo - * method, since browsers are not consistent about what scrollLeft means in RTL. For this method - * left and right always refer to the left and right side of the scrolling container irrespective - * of the layout direction. start and end refer to left and right in an LTR context and vice-versa - * in an RTL context. - * @param options specified the offsets to scroll to. - */ - scrollTo(options) { - const el = this.elementRef.nativeElement; - const isRtl = this.dir && this.dir.value == "rtl"; - if (options.left == null) { - options.left = isRtl ? options.end : options.start; - } - if (options.right == null) { - options.right = isRtl ? options.start : options.end; - } - if (options.bottom != null) { - options.top = el.scrollHeight - el.clientHeight - options.bottom; - } - if (isRtl && getRtlScrollAxisType() != 0) { - if (options.left != null) { - options.right = el.scrollWidth - el.clientWidth - options.left; - } - if (getRtlScrollAxisType() == 2) { - options.left = options.right; - } else if (getRtlScrollAxisType() == 1) { - options.left = options.right ? -options.right : options.right; - } - } else { - if (options.right != null) { - options.left = el.scrollWidth - el.clientWidth - options.right; - } - } - this._applyScrollToOptions(options); - } - _applyScrollToOptions(options) { - const el = this.elementRef.nativeElement; - if (supportsScrollBehavior()) { - el.scrollTo(options); - } else { - if (options.top != null) { - el.scrollTop = options.top; - } - if (options.left != null) { - el.scrollLeft = options.left; - } - } - } - /** - * Measures the scroll offset relative to the specified edge of the viewport. This method can be - * used instead of directly checking scrollLeft or scrollTop, since browsers are not consistent - * about what scrollLeft means in RTL. The values returned by this method are normalized such that - * left and right always refer to the left and right side of the scrolling container irrespective - * of the layout direction. start and end refer to left and right in an LTR context and vice-versa - * in an RTL context. - * @param from The edge to measure from. - */ - measureScrollOffset(from) { - const LEFT = "left"; - const RIGHT = "right"; - const el = this.elementRef.nativeElement; - if (from == "top") { - return el.scrollTop; - } - if (from == "bottom") { - return el.scrollHeight - el.clientHeight - el.scrollTop; - } - const isRtl = this.dir && this.dir.value == "rtl"; - if (from == "start") { - from = isRtl ? RIGHT : LEFT; - } else if (from == "end") { - from = isRtl ? LEFT : RIGHT; - } - if (isRtl && getRtlScrollAxisType() == 2) { - if (from == LEFT) { - return el.scrollWidth - el.clientWidth - el.scrollLeft; - } else { - return el.scrollLeft; - } - } else if (isRtl && getRtlScrollAxisType() == 1) { - if (from == LEFT) { - return el.scrollLeft + el.scrollWidth - el.clientWidth; - } else { - return -el.scrollLeft; - } - } else { - if (from == LEFT) { - return el.scrollLeft; - } else { - return el.scrollWidth - el.clientWidth - el.scrollLeft; - } - } - } -}; -_CdkScrollable.ɵfac = function CdkScrollable_Factory(t) { - return new (t || _CdkScrollable)(ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(ScrollDispatcher), ɵɵdirectiveInject(NgZone), ɵɵdirectiveInject(Directionality, 8)); -}; -_CdkScrollable.ɵdir = ɵɵdefineDirective({ - type: _CdkScrollable, - selectors: [["", "cdk-scrollable", ""], ["", "cdkScrollable", ""]], - standalone: true -}); -var CdkScrollable = _CdkScrollable; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(CdkScrollable, [{ - type: Directive, - args: [{ - selector: "[cdk-scrollable], [cdkScrollable]", - standalone: true - }] - }], () => [{ - type: ElementRef - }, { - type: ScrollDispatcher - }, { - type: NgZone - }, { - type: Directionality, - decorators: [{ - type: Optional - }] - }], null); -})(); -var DEFAULT_RESIZE_TIME = 20; -var _ViewportRuler = class _ViewportRuler { - constructor(_platform, ngZone, document2) { - this._platform = _platform; - this._change = new Subject(); - this._changeListener = (event) => { - this._change.next(event); - }; - this._document = document2; - ngZone.runOutsideAngular(() => { - if (_platform.isBrowser) { - const window2 = this._getWindow(); - window2.addEventListener("resize", this._changeListener); - window2.addEventListener("orientationchange", this._changeListener); - } - this.change().subscribe(() => this._viewportSize = null); - }); - } - ngOnDestroy() { - if (this._platform.isBrowser) { - const window2 = this._getWindow(); - window2.removeEventListener("resize", this._changeListener); - window2.removeEventListener("orientationchange", this._changeListener); - } - this._change.complete(); - } - /** Returns the viewport's width and height. */ - getViewportSize() { - if (!this._viewportSize) { - this._updateViewportSize(); - } - const output = { - width: this._viewportSize.width, - height: this._viewportSize.height - }; - if (!this._platform.isBrowser) { - this._viewportSize = null; - } - return output; - } - /** Gets a ClientRect for the viewport's bounds. */ - getViewportRect() { - const scrollPosition = this.getViewportScrollPosition(); - const { - width, - height - } = this.getViewportSize(); - return { - top: scrollPosition.top, - left: scrollPosition.left, - bottom: scrollPosition.top + height, - right: scrollPosition.left + width, - height, - width - }; - } - /** Gets the (top, left) scroll position of the viewport. */ - getViewportScrollPosition() { - if (!this._platform.isBrowser) { - return { - top: 0, - left: 0 - }; - } - const document2 = this._document; - const window2 = this._getWindow(); - const documentElement = document2.documentElement; - const documentRect = documentElement.getBoundingClientRect(); - const top = -documentRect.top || document2.body.scrollTop || window2.scrollY || documentElement.scrollTop || 0; - const left = -documentRect.left || document2.body.scrollLeft || window2.scrollX || documentElement.scrollLeft || 0; - return { - top, - left - }; - } - /** - * Returns a stream that emits whenever the size of the viewport changes. - * This stream emits outside of the Angular zone. - * @param throttleTime Time in milliseconds to throttle the stream. - */ - change(throttleTime = DEFAULT_RESIZE_TIME) { - return throttleTime > 0 ? this._change.pipe(auditTime(throttleTime)) : this._change; - } - /** Use defaultView of injected document if available or fallback to global window reference */ - _getWindow() { - return this._document.defaultView || window; - } - /** Updates the cached viewport size. */ - _updateViewportSize() { - const window2 = this._getWindow(); - this._viewportSize = this._platform.isBrowser ? { - width: window2.innerWidth, - height: window2.innerHeight - } : { - width: 0, - height: 0 - }; - } -}; -_ViewportRuler.ɵfac = function ViewportRuler_Factory(t) { - return new (t || _ViewportRuler)(ɵɵinject(Platform), ɵɵinject(NgZone), ɵɵinject(DOCUMENT, 8)); -}; -_ViewportRuler.ɵprov = ɵɵdefineInjectable({ - token: _ViewportRuler, - factory: _ViewportRuler.ɵfac, - providedIn: "root" -}); -var ViewportRuler = _ViewportRuler; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ViewportRuler, [{ - type: Injectable, - args: [{ - providedIn: "root" - }] - }], () => [{ - type: Platform - }, { - type: NgZone - }, { - type: void 0, - decorators: [{ - type: Optional - }, { - type: Inject, - args: [DOCUMENT] - }] - }], null); -})(); -var VIRTUAL_SCROLLABLE = new InjectionToken("VIRTUAL_SCROLLABLE"); -var _CdkVirtualScrollable = class _CdkVirtualScrollable extends CdkScrollable { - constructor(elementRef, scrollDispatcher, ngZone, dir) { - super(elementRef, scrollDispatcher, ngZone, dir); - } - /** - * Measure the viewport size for the provided orientation. - * - * @param orientation The orientation to measure the size from. + * Measure the viewport size for the provided orientation. + * + * @param orientation The orientation to measure the size from. */ measureViewportSize(orientation) { const viewportEl = this.elementRef.nativeElement; @@ -2269,223 +1551,739 @@ var _CdkVirtualForOf = class _CdkVirtualForOf { context.even = context.index % 2 === 0; context.odd = !context.even; } - _getEmbeddedViewArgs(record, index) { - return { - templateRef: this._template, - context: { - $implicit: record.item, - // It's guaranteed that the iterable is not "undefined" or "null" because we only - // generate views for elements if the "cdkVirtualForOf" iterable has elements. - cdkVirtualForOf: this._cdkVirtualForOf, - index: -1, - count: -1, - first: false, - last: false, - odd: false, - even: false - }, - index - }; + _getEmbeddedViewArgs(record, index) { + return { + templateRef: this._template, + context: { + $implicit: record.item, + // It's guaranteed that the iterable is not "undefined" or "null" because we only + // generate views for elements if the "cdkVirtualForOf" iterable has elements. + cdkVirtualForOf: this._cdkVirtualForOf, + index: -1, + count: -1, + first: false, + last: false, + odd: false, + even: false + }, + index + }; + } +}; +_CdkVirtualForOf.ɵfac = function CdkVirtualForOf_Factory(t) { + return new (t || _CdkVirtualForOf)(ɵɵdirectiveInject(ViewContainerRef), ɵɵdirectiveInject(TemplateRef), ɵɵdirectiveInject(IterableDiffers), ɵɵdirectiveInject(_VIEW_REPEATER_STRATEGY), ɵɵdirectiveInject(CdkVirtualScrollViewport, 4), ɵɵdirectiveInject(NgZone)); +}; +_CdkVirtualForOf.ɵdir = ɵɵdefineDirective({ + type: _CdkVirtualForOf, + selectors: [["", "cdkVirtualFor", "", "cdkVirtualForOf", ""]], + inputs: { + cdkVirtualForOf: "cdkVirtualForOf", + cdkVirtualForTrackBy: "cdkVirtualForTrackBy", + cdkVirtualForTemplate: "cdkVirtualForTemplate", + cdkVirtualForTemplateCacheSize: "cdkVirtualForTemplateCacheSize" + }, + standalone: true, + features: [ɵɵProvidersFeature([{ + provide: _VIEW_REPEATER_STRATEGY, + useClass: _RecycleViewRepeaterStrategy + }])] +}); +var CdkVirtualForOf = _CdkVirtualForOf; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(CdkVirtualForOf, [{ + type: Directive, + args: [{ + selector: "[cdkVirtualFor][cdkVirtualForOf]", + providers: [{ + provide: _VIEW_REPEATER_STRATEGY, + useClass: _RecycleViewRepeaterStrategy + }], + standalone: true + }] + }], () => [{ + type: ViewContainerRef + }, { + type: TemplateRef + }, { + type: IterableDiffers + }, { + type: _RecycleViewRepeaterStrategy, + decorators: [{ + type: Inject, + args: [_VIEW_REPEATER_STRATEGY] + }] + }, { + type: CdkVirtualScrollViewport, + decorators: [{ + type: SkipSelf + }] + }, { + type: NgZone + }], { + cdkVirtualForOf: [{ + type: Input + }], + cdkVirtualForTrackBy: [{ + type: Input + }], + cdkVirtualForTemplate: [{ + type: Input + }], + cdkVirtualForTemplateCacheSize: [{ + type: Input + }] + }); +})(); +var _CdkVirtualScrollableElement = class _CdkVirtualScrollableElement extends CdkVirtualScrollable { + constructor(elementRef, scrollDispatcher, ngZone, dir) { + super(elementRef, scrollDispatcher, ngZone, dir); + } + measureBoundingClientRectWithScrollOffset(from) { + return this.getElementRef().nativeElement.getBoundingClientRect()[from] - this.measureScrollOffset(from); + } +}; +_CdkVirtualScrollableElement.ɵfac = function CdkVirtualScrollableElement_Factory(t) { + return new (t || _CdkVirtualScrollableElement)(ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(ScrollDispatcher), ɵɵdirectiveInject(NgZone), ɵɵdirectiveInject(Directionality, 8)); +}; +_CdkVirtualScrollableElement.ɵdir = ɵɵdefineDirective({ + type: _CdkVirtualScrollableElement, + selectors: [["", "cdkVirtualScrollingElement", ""]], + hostAttrs: [1, "cdk-virtual-scrollable"], + standalone: true, + features: [ɵɵProvidersFeature([{ + provide: VIRTUAL_SCROLLABLE, + useExisting: _CdkVirtualScrollableElement + }]), ɵɵInheritDefinitionFeature] +}); +var CdkVirtualScrollableElement = _CdkVirtualScrollableElement; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(CdkVirtualScrollableElement, [{ + type: Directive, + args: [{ + selector: "[cdkVirtualScrollingElement]", + providers: [{ + provide: VIRTUAL_SCROLLABLE, + useExisting: CdkVirtualScrollableElement + }], + standalone: true, + host: { + "class": "cdk-virtual-scrollable" + } + }] + }], () => [{ + type: ElementRef + }, { + type: ScrollDispatcher + }, { + type: NgZone + }, { + type: Directionality, + decorators: [{ + type: Optional + }] + }], null); +})(); +var _CdkVirtualScrollableWindow = class _CdkVirtualScrollableWindow extends CdkVirtualScrollable { + constructor(scrollDispatcher, ngZone, dir) { + super(new ElementRef(document.documentElement), scrollDispatcher, ngZone, dir); + this._elementScrolled = new Observable((observer) => this.ngZone.runOutsideAngular(() => fromEvent(document, "scroll").pipe(takeUntil(this._destroyed)).subscribe(observer))); + } + measureBoundingClientRectWithScrollOffset(from) { + return this.getElementRef().nativeElement.getBoundingClientRect()[from]; + } +}; +_CdkVirtualScrollableWindow.ɵfac = function CdkVirtualScrollableWindow_Factory(t) { + return new (t || _CdkVirtualScrollableWindow)(ɵɵdirectiveInject(ScrollDispatcher), ɵɵdirectiveInject(NgZone), ɵɵdirectiveInject(Directionality, 8)); +}; +_CdkVirtualScrollableWindow.ɵdir = ɵɵdefineDirective({ + type: _CdkVirtualScrollableWindow, + selectors: [["cdk-virtual-scroll-viewport", "scrollWindow", ""]], + standalone: true, + features: [ɵɵProvidersFeature([{ + provide: VIRTUAL_SCROLLABLE, + useExisting: _CdkVirtualScrollableWindow + }]), ɵɵInheritDefinitionFeature] +}); +var CdkVirtualScrollableWindow = _CdkVirtualScrollableWindow; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(CdkVirtualScrollableWindow, [{ + type: Directive, + args: [{ + selector: "cdk-virtual-scroll-viewport[scrollWindow]", + providers: [{ + provide: VIRTUAL_SCROLLABLE, + useExisting: CdkVirtualScrollableWindow + }], + standalone: true + }] + }], () => [{ + type: ScrollDispatcher + }, { + type: NgZone + }, { + type: Directionality, + decorators: [{ + type: Optional + }] + }], null); +})(); +var _CdkScrollableModule = class _CdkScrollableModule { +}; +_CdkScrollableModule.ɵfac = function CdkScrollableModule_Factory(t) { + return new (t || _CdkScrollableModule)(); +}; +_CdkScrollableModule.ɵmod = ɵɵdefineNgModule({ + type: _CdkScrollableModule, + imports: [CdkScrollable], + exports: [CdkScrollable] +}); +_CdkScrollableModule.ɵinj = ɵɵdefineInjector({}); +var CdkScrollableModule = _CdkScrollableModule; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(CdkScrollableModule, [{ + type: NgModule, + args: [{ + exports: [CdkScrollable], + imports: [CdkScrollable] + }] + }], null, null); +})(); +var _ScrollingModule = class _ScrollingModule { +}; +_ScrollingModule.ɵfac = function ScrollingModule_Factory(t) { + return new (t || _ScrollingModule)(); +}; +_ScrollingModule.ɵmod = ɵɵdefineNgModule({ + type: _ScrollingModule, + imports: [BidiModule, CdkScrollableModule, CdkVirtualScrollViewport, CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollableWindow, CdkVirtualScrollableElement], + exports: [BidiModule, CdkScrollableModule, CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport, CdkVirtualScrollableWindow, CdkVirtualScrollableElement] +}); +_ScrollingModule.ɵinj = ɵɵdefineInjector({ + imports: [BidiModule, CdkScrollableModule, BidiModule, CdkScrollableModule] +}); +var ScrollingModule = _ScrollingModule; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ScrollingModule, [{ + type: NgModule, + args: [{ + imports: [BidiModule, CdkScrollableModule, CdkVirtualScrollViewport, CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollableWindow, CdkVirtualScrollableElement], + exports: [BidiModule, CdkScrollableModule, CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport, CdkVirtualScrollableWindow, CdkVirtualScrollableElement] + }] + }], null, null); +})(); + +// node_modules/@angular/cdk/fesm2022/portal.mjs +function throwNullPortalError() { + throw Error("Must provide a portal to attach"); +} +function throwPortalAlreadyAttachedError() { + throw Error("Host already has a portal attached"); +} +function throwPortalOutletAlreadyDisposedError() { + throw Error("This PortalOutlet has already been disposed"); +} +function throwUnknownPortalTypeError() { + throw Error("Attempting to attach an unknown Portal type. BasePortalOutlet accepts either a ComponentPortal or a TemplatePortal."); +} +function throwNullPortalOutletError() { + throw Error("Attempting to attach a portal to a null PortalOutlet"); +} +function throwNoPortalAttachedError() { + throw Error("Attempting to detach a portal that is not attached to a host"); +} +var Portal = class { + /** Attach this portal to a host. */ + attach(host) { + if (typeof ngDevMode === "undefined" || ngDevMode) { + if (host == null) { + throwNullPortalOutletError(); + } + if (host.hasAttached()) { + throwPortalAlreadyAttachedError(); + } + } + this._attachedHost = host; + return host.attach(this); + } + /** Detach this portal from its host */ + detach() { + let host = this._attachedHost; + if (host != null) { + this._attachedHost = null; + host.detach(); + } else if (typeof ngDevMode === "undefined" || ngDevMode) { + throwNoPortalAttachedError(); + } + } + /** Whether this portal is attached to a host. */ + get isAttached() { + return this._attachedHost != null; + } + /** + * Sets the PortalOutlet reference without performing `attach()`. This is used directly by + * the PortalOutlet when it is performing an `attach()` or `detach()`. + */ + setAttachedHost(host) { + this._attachedHost = host; + } +}; +var ComponentPortal = class extends Portal { + constructor(component, viewContainerRef, injector, componentFactoryResolver, projectableNodes) { + super(); + this.component = component; + this.viewContainerRef = viewContainerRef; + this.injector = injector; + this.componentFactoryResolver = componentFactoryResolver; + this.projectableNodes = projectableNodes; + } +}; +var TemplatePortal = class extends Portal { + constructor(templateRef, viewContainerRef, context, injector) { + super(); + this.templateRef = templateRef; + this.viewContainerRef = viewContainerRef; + this.context = context; + this.injector = injector; + } + get origin() { + return this.templateRef.elementRef; + } + /** + * Attach the portal to the provided `PortalOutlet`. + * When a context is provided it will override the `context` property of the `TemplatePortal` + * instance. + */ + attach(host, context = this.context) { + this.context = context; + return super.attach(host); + } + detach() { + this.context = void 0; + return super.detach(); + } +}; +var DomPortal = class extends Portal { + constructor(element) { + super(); + this.element = element instanceof ElementRef ? element.nativeElement : element; + } +}; +var BasePortalOutlet = class { + constructor() { + this._isDisposed = false; + this.attachDomPortal = null; + } + /** Whether this host has an attached portal. */ + hasAttached() { + return !!this._attachedPortal; + } + /** Attaches a portal. */ + attach(portal) { + if (typeof ngDevMode === "undefined" || ngDevMode) { + if (!portal) { + throwNullPortalError(); + } + if (this.hasAttached()) { + throwPortalAlreadyAttachedError(); + } + if (this._isDisposed) { + throwPortalOutletAlreadyDisposedError(); + } + } + if (portal instanceof ComponentPortal) { + this._attachedPortal = portal; + return this.attachComponentPortal(portal); + } else if (portal instanceof TemplatePortal) { + this._attachedPortal = portal; + return this.attachTemplatePortal(portal); + } else if (this.attachDomPortal && portal instanceof DomPortal) { + this._attachedPortal = portal; + return this.attachDomPortal(portal); + } + if (typeof ngDevMode === "undefined" || ngDevMode) { + throwUnknownPortalTypeError(); + } + } + /** Detaches a previously attached portal. */ + detach() { + if (this._attachedPortal) { + this._attachedPortal.setAttachedHost(null); + this._attachedPortal = null; + } + this._invokeDisposeFn(); + } + /** Permanently dispose of this portal host. */ + dispose() { + if (this.hasAttached()) { + this.detach(); + } + this._invokeDisposeFn(); + this._isDisposed = true; + } + /** @docs-private */ + setDisposeFn(fn) { + this._disposeFn = fn; + } + _invokeDisposeFn() { + if (this._disposeFn) { + this._disposeFn(); + this._disposeFn = null; + } + } +}; +var DomPortalOutlet = class extends BasePortalOutlet { + /** + * @param outletElement Element into which the content is projected. + * @param _componentFactoryResolver Used to resolve the component factory. + * Only required when attaching component portals. + * @param _appRef Reference to the application. Only used in component portals when there + * is no `ViewContainerRef` available. + * @param _defaultInjector Injector to use as a fallback when the portal being attached doesn't + * have one. Only used for component portals. + * @param _document Reference to the document. Used when attaching a DOM portal. Will eventually + * become a required parameter. + */ + constructor(outletElement, _componentFactoryResolver, _appRef, _defaultInjector, _document) { + super(); + this.outletElement = outletElement; + this._componentFactoryResolver = _componentFactoryResolver; + this._appRef = _appRef; + this._defaultInjector = _defaultInjector; + this.attachDomPortal = (portal) => { + if (!this._document && (typeof ngDevMode === "undefined" || ngDevMode)) { + throw Error("Cannot attach DOM portal without _document constructor parameter"); + } + const element = portal.element; + if (!element.parentNode && (typeof ngDevMode === "undefined" || ngDevMode)) { + throw Error("DOM portal content must be attached to a parent node."); + } + const anchorNode = this._document.createComment("dom-portal"); + element.parentNode.insertBefore(anchorNode, element); + this.outletElement.appendChild(element); + this._attachedPortal = portal; + super.setDisposeFn(() => { + if (anchorNode.parentNode) { + anchorNode.parentNode.replaceChild(element, anchorNode); + } + }); + }; + this._document = _document; + } + /** + * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver. + * @param portal Portal to be attached + * @returns Reference to the created component. + */ + attachComponentPortal(portal) { + const resolver = portal.componentFactoryResolver || this._componentFactoryResolver; + if ((typeof ngDevMode === "undefined" || ngDevMode) && !resolver) { + throw Error("Cannot attach component portal to outlet without a ComponentFactoryResolver."); + } + const componentFactory = resolver.resolveComponentFactory(portal.component); + let componentRef; + if (portal.viewContainerRef) { + componentRef = portal.viewContainerRef.createComponent(componentFactory, portal.viewContainerRef.length, portal.injector || portal.viewContainerRef.injector, portal.projectableNodes || void 0); + this.setDisposeFn(() => componentRef.destroy()); + } else { + if ((typeof ngDevMode === "undefined" || ngDevMode) && !this._appRef) { + throw Error("Cannot attach component portal to outlet without an ApplicationRef."); + } + componentRef = componentFactory.create(portal.injector || this._defaultInjector || Injector.NULL); + this._appRef.attachView(componentRef.hostView); + this.setDisposeFn(() => { + if (this._appRef.viewCount > 0) { + this._appRef.detachView(componentRef.hostView); + } + componentRef.destroy(); + }); + } + this.outletElement.appendChild(this._getComponentRootNode(componentRef)); + this._attachedPortal = portal; + return componentRef; + } + /** + * Attaches a template portal to the DOM as an embedded view. + * @param portal Portal to be attached. + * @returns Reference to the created embedded view. + */ + attachTemplatePortal(portal) { + let viewContainer = portal.viewContainerRef; + let viewRef = viewContainer.createEmbeddedView(portal.templateRef, portal.context, { + injector: portal.injector + }); + viewRef.rootNodes.forEach((rootNode) => this.outletElement.appendChild(rootNode)); + viewRef.detectChanges(); + this.setDisposeFn(() => { + let index = viewContainer.indexOf(viewRef); + if (index !== -1) { + viewContainer.remove(index); + } + }); + this._attachedPortal = portal; + return viewRef; + } + /** + * Clears out a portal from the DOM. + */ + dispose() { + super.dispose(); + this.outletElement.remove(); + } + /** Gets the root HTMLElement for an instantiated component. */ + _getComponentRootNode(componentRef) { + return componentRef.hostView.rootNodes[0]; + } +}; +var _CdkPortal = class _CdkPortal extends TemplatePortal { + constructor(templateRef, viewContainerRef) { + super(templateRef, viewContainerRef); + } +}; +_CdkPortal.ɵfac = function CdkPortal_Factory(t) { + return new (t || _CdkPortal)(ɵɵdirectiveInject(TemplateRef), ɵɵdirectiveInject(ViewContainerRef)); +}; +_CdkPortal.ɵdir = ɵɵdefineDirective({ + type: _CdkPortal, + selectors: [["", "cdkPortal", ""]], + exportAs: ["cdkPortal"], + features: [ɵɵInheritDefinitionFeature] +}); +var CdkPortal = _CdkPortal; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(CdkPortal, [{ + type: Directive, + args: [{ + selector: "[cdkPortal]", + exportAs: "cdkPortal" + }] + }], () => [{ + type: TemplateRef + }, { + type: ViewContainerRef + }], null); +})(); +var _TemplatePortalDirective = class _TemplatePortalDirective extends CdkPortal { +}; +_TemplatePortalDirective.ɵfac = (() => { + let ɵTemplatePortalDirective_BaseFactory; + return function TemplatePortalDirective_Factory(t) { + return (ɵTemplatePortalDirective_BaseFactory || (ɵTemplatePortalDirective_BaseFactory = ɵɵgetInheritedFactory(_TemplatePortalDirective)))(t || _TemplatePortalDirective); + }; +})(); +_TemplatePortalDirective.ɵdir = ɵɵdefineDirective({ + type: _TemplatePortalDirective, + selectors: [["", "cdk-portal", ""], ["", "portal", ""]], + exportAs: ["cdkPortal"], + features: [ɵɵProvidersFeature([{ + provide: CdkPortal, + useExisting: _TemplatePortalDirective + }]), ɵɵInheritDefinitionFeature] +}); +var TemplatePortalDirective = _TemplatePortalDirective; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(TemplatePortalDirective, [{ + type: Directive, + args: [{ + selector: "[cdk-portal], [portal]", + exportAs: "cdkPortal", + providers: [{ + provide: CdkPortal, + useExisting: TemplatePortalDirective + }] + }] + }], null, null); +})(); +var _CdkPortalOutlet = class _CdkPortalOutlet extends BasePortalOutlet { + constructor(_componentFactoryResolver, _viewContainerRef, _document) { + super(); + this._componentFactoryResolver = _componentFactoryResolver; + this._viewContainerRef = _viewContainerRef; + this._isInitialized = false; + this.attached = new EventEmitter(); + this.attachDomPortal = (portal) => { + if (!this._document && (typeof ngDevMode === "undefined" || ngDevMode)) { + throw Error("Cannot attach DOM portal without _document constructor parameter"); + } + const element = portal.element; + if (!element.parentNode && (typeof ngDevMode === "undefined" || ngDevMode)) { + throw Error("DOM portal content must be attached to a parent node."); + } + const anchorNode = this._document.createComment("dom-portal"); + portal.setAttachedHost(this); + element.parentNode.insertBefore(anchorNode, element); + this._getRootNode().appendChild(element); + this._attachedPortal = portal; + super.setDisposeFn(() => { + if (anchorNode.parentNode) { + anchorNode.parentNode.replaceChild(element, anchorNode); + } + }); + }; + this._document = _document; + } + /** Portal associated with the Portal outlet. */ + get portal() { + return this._attachedPortal; + } + set portal(portal) { + if (this.hasAttached() && !portal && !this._isInitialized) { + return; + } + if (this.hasAttached()) { + super.detach(); + } + if (portal) { + super.attach(portal); + } + this._attachedPortal = portal || null; + } + /** Component or view reference that is attached to the portal. */ + get attachedRef() { + return this._attachedRef; + } + ngOnInit() { + this._isInitialized = true; + } + ngOnDestroy() { + super.dispose(); + this._attachedRef = this._attachedPortal = null; + } + /** + * Attach the given ComponentPortal to this PortalOutlet using the ComponentFactoryResolver. + * + * @param portal Portal to be attached to the portal outlet. + * @returns Reference to the created component. + */ + attachComponentPortal(portal) { + portal.setAttachedHost(this); + const viewContainerRef = portal.viewContainerRef != null ? portal.viewContainerRef : this._viewContainerRef; + const resolver = portal.componentFactoryResolver || this._componentFactoryResolver; + const componentFactory = resolver.resolveComponentFactory(portal.component); + const ref = viewContainerRef.createComponent(componentFactory, viewContainerRef.length, portal.injector || viewContainerRef.injector, portal.projectableNodes || void 0); + if (viewContainerRef !== this._viewContainerRef) { + this._getRootNode().appendChild(ref.hostView.rootNodes[0]); + } + super.setDisposeFn(() => ref.destroy()); + this._attachedPortal = portal; + this._attachedRef = ref; + this.attached.emit(ref); + return ref; + } + /** + * Attach the given TemplatePortal to this PortalHost as an embedded View. + * @param portal Portal to be attached. + * @returns Reference to the created embedded view. + */ + attachTemplatePortal(portal) { + portal.setAttachedHost(this); + const viewRef = this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context, { + injector: portal.injector + }); + super.setDisposeFn(() => this._viewContainerRef.clear()); + this._attachedPortal = portal; + this._attachedRef = viewRef; + this.attached.emit(viewRef); + return viewRef; + } + /** Gets the root node of the portal outlet. */ + _getRootNode() { + const nativeElement = this._viewContainerRef.element.nativeElement; + return nativeElement.nodeType === nativeElement.ELEMENT_NODE ? nativeElement : nativeElement.parentNode; } }; -_CdkVirtualForOf.ɵfac = function CdkVirtualForOf_Factory(t) { - return new (t || _CdkVirtualForOf)(ɵɵdirectiveInject(ViewContainerRef), ɵɵdirectiveInject(TemplateRef), ɵɵdirectiveInject(IterableDiffers), ɵɵdirectiveInject(_VIEW_REPEATER_STRATEGY), ɵɵdirectiveInject(CdkVirtualScrollViewport, 4), ɵɵdirectiveInject(NgZone)); +_CdkPortalOutlet.ɵfac = function CdkPortalOutlet_Factory(t) { + return new (t || _CdkPortalOutlet)(ɵɵdirectiveInject(ComponentFactoryResolver$1), ɵɵdirectiveInject(ViewContainerRef), ɵɵdirectiveInject(DOCUMENT)); }; -_CdkVirtualForOf.ɵdir = ɵɵdefineDirective({ - type: _CdkVirtualForOf, - selectors: [["", "cdkVirtualFor", "", "cdkVirtualForOf", ""]], +_CdkPortalOutlet.ɵdir = ɵɵdefineDirective({ + type: _CdkPortalOutlet, + selectors: [["", "cdkPortalOutlet", ""]], inputs: { - cdkVirtualForOf: "cdkVirtualForOf", - cdkVirtualForTrackBy: "cdkVirtualForTrackBy", - cdkVirtualForTemplate: "cdkVirtualForTemplate", - cdkVirtualForTemplateCacheSize: "cdkVirtualForTemplateCacheSize" + portal: ["cdkPortalOutlet", "portal"] }, - standalone: true, - features: [ɵɵProvidersFeature([{ - provide: _VIEW_REPEATER_STRATEGY, - useClass: _RecycleViewRepeaterStrategy - }])] + outputs: { + attached: "attached" + }, + exportAs: ["cdkPortalOutlet"], + features: [ɵɵInheritDefinitionFeature] }); -var CdkVirtualForOf = _CdkVirtualForOf; +var CdkPortalOutlet = _CdkPortalOutlet; (() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(CdkVirtualForOf, [{ + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(CdkPortalOutlet, [{ type: Directive, args: [{ - selector: "[cdkVirtualFor][cdkVirtualForOf]", - providers: [{ - provide: _VIEW_REPEATER_STRATEGY, - useClass: _RecycleViewRepeaterStrategy - }], - standalone: true + selector: "[cdkPortalOutlet]", + exportAs: "cdkPortalOutlet", + inputs: ["portal: cdkPortalOutlet"] }] }], () => [{ - type: ViewContainerRef - }, { - type: TemplateRef + type: ComponentFactoryResolver$1 }, { - type: IterableDiffers + type: ViewContainerRef }, { - type: _RecycleViewRepeaterStrategy, + type: void 0, decorators: [{ type: Inject, - args: [_VIEW_REPEATER_STRATEGY] - }] - }, { - type: CdkVirtualScrollViewport, - decorators: [{ - type: SkipSelf + args: [DOCUMENT] }] - }, { - type: NgZone }], { - cdkVirtualForOf: [{ - type: Input - }], - cdkVirtualForTrackBy: [{ - type: Input - }], - cdkVirtualForTemplate: [{ - type: Input - }], - cdkVirtualForTemplateCacheSize: [{ - type: Input + attached: [{ + type: Output }] }); })(); -var _CdkVirtualScrollableElement = class _CdkVirtualScrollableElement extends CdkVirtualScrollable { - constructor(elementRef, scrollDispatcher, ngZone, dir) { - super(elementRef, scrollDispatcher, ngZone, dir); - } - measureBoundingClientRectWithScrollOffset(from) { - return this.getElementRef().nativeElement.getBoundingClientRect()[from] - this.measureScrollOffset(from); - } -}; -_CdkVirtualScrollableElement.ɵfac = function CdkVirtualScrollableElement_Factory(t) { - return new (t || _CdkVirtualScrollableElement)(ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(ScrollDispatcher), ɵɵdirectiveInject(NgZone), ɵɵdirectiveInject(Directionality, 8)); +var _PortalHostDirective = class _PortalHostDirective extends CdkPortalOutlet { }; -_CdkVirtualScrollableElement.ɵdir = ɵɵdefineDirective({ - type: _CdkVirtualScrollableElement, - selectors: [["", "cdkVirtualScrollingElement", ""]], - hostAttrs: [1, "cdk-virtual-scrollable"], - standalone: true, - features: [ɵɵProvidersFeature([{ - provide: VIRTUAL_SCROLLABLE, - useExisting: _CdkVirtualScrollableElement - }]), ɵɵInheritDefinitionFeature] -}); -var CdkVirtualScrollableElement = _CdkVirtualScrollableElement; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(CdkVirtualScrollableElement, [{ - type: Directive, - args: [{ - selector: "[cdkVirtualScrollingElement]", - providers: [{ - provide: VIRTUAL_SCROLLABLE, - useExisting: CdkVirtualScrollableElement - }], - standalone: true, - host: { - "class": "cdk-virtual-scrollable" - } - }] - }], () => [{ - type: ElementRef - }, { - type: ScrollDispatcher - }, { - type: NgZone - }, { - type: Directionality, - decorators: [{ - type: Optional - }] - }], null); +_PortalHostDirective.ɵfac = (() => { + let ɵPortalHostDirective_BaseFactory; + return function PortalHostDirective_Factory(t) { + return (ɵPortalHostDirective_BaseFactory || (ɵPortalHostDirective_BaseFactory = ɵɵgetInheritedFactory(_PortalHostDirective)))(t || _PortalHostDirective); + }; })(); -var _CdkVirtualScrollableWindow = class _CdkVirtualScrollableWindow extends CdkVirtualScrollable { - constructor(scrollDispatcher, ngZone, dir) { - super(new ElementRef(document.documentElement), scrollDispatcher, ngZone, dir); - this._elementScrolled = new Observable((observer) => this.ngZone.runOutsideAngular(() => fromEvent(document, "scroll").pipe(takeUntil(this._destroyed)).subscribe(observer))); - } - measureBoundingClientRectWithScrollOffset(from) { - return this.getElementRef().nativeElement.getBoundingClientRect()[from]; - } -}; -_CdkVirtualScrollableWindow.ɵfac = function CdkVirtualScrollableWindow_Factory(t) { - return new (t || _CdkVirtualScrollableWindow)(ɵɵdirectiveInject(ScrollDispatcher), ɵɵdirectiveInject(NgZone), ɵɵdirectiveInject(Directionality, 8)); -}; -_CdkVirtualScrollableWindow.ɵdir = ɵɵdefineDirective({ - type: _CdkVirtualScrollableWindow, - selectors: [["cdk-virtual-scroll-viewport", "scrollWindow", ""]], - standalone: true, +_PortalHostDirective.ɵdir = ɵɵdefineDirective({ + type: _PortalHostDirective, + selectors: [["", "cdkPortalHost", ""], ["", "portalHost", ""]], + inputs: { + portal: ["cdkPortalHost", "portal"] + }, + exportAs: ["cdkPortalHost"], features: [ɵɵProvidersFeature([{ - provide: VIRTUAL_SCROLLABLE, - useExisting: _CdkVirtualScrollableWindow + provide: CdkPortalOutlet, + useExisting: _PortalHostDirective }]), ɵɵInheritDefinitionFeature] }); -var CdkVirtualScrollableWindow = _CdkVirtualScrollableWindow; +var PortalHostDirective = _PortalHostDirective; (() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(CdkVirtualScrollableWindow, [{ + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(PortalHostDirective, [{ type: Directive, args: [{ - selector: "cdk-virtual-scroll-viewport[scrollWindow]", + selector: "[cdkPortalHost], [portalHost]", + exportAs: "cdkPortalHost", + inputs: ["portal: cdkPortalHost"], providers: [{ - provide: VIRTUAL_SCROLLABLE, - useExisting: CdkVirtualScrollableWindow - }], - standalone: true - }] - }], () => [{ - type: ScrollDispatcher - }, { - type: NgZone - }, { - type: Directionality, - decorators: [{ - type: Optional - }] - }], null); -})(); -var _CdkScrollableModule = class _CdkScrollableModule { -}; -_CdkScrollableModule.ɵfac = function CdkScrollableModule_Factory(t) { - return new (t || _CdkScrollableModule)(); -}; -_CdkScrollableModule.ɵmod = ɵɵdefineNgModule({ - type: _CdkScrollableModule, - imports: [CdkScrollable], - exports: [CdkScrollable] -}); -_CdkScrollableModule.ɵinj = ɵɵdefineInjector({}); -var CdkScrollableModule = _CdkScrollableModule; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(CdkScrollableModule, [{ - type: NgModule, - args: [{ - exports: [CdkScrollable], - imports: [CdkScrollable] + provide: CdkPortalOutlet, + useExisting: PortalHostDirective + }] }] }], null, null); })(); -var _ScrollingModule = class _ScrollingModule { +var _PortalModule = class _PortalModule { }; -_ScrollingModule.ɵfac = function ScrollingModule_Factory(t) { - return new (t || _ScrollingModule)(); +_PortalModule.ɵfac = function PortalModule_Factory(t) { + return new (t || _PortalModule)(); }; -_ScrollingModule.ɵmod = ɵɵdefineNgModule({ - type: _ScrollingModule, - imports: [BidiModule, CdkScrollableModule, CdkVirtualScrollViewport, CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollableWindow, CdkVirtualScrollableElement], - exports: [BidiModule, CdkScrollableModule, CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport, CdkVirtualScrollableWindow, CdkVirtualScrollableElement] -}); -_ScrollingModule.ɵinj = ɵɵdefineInjector({ - imports: [BidiModule, CdkScrollableModule, BidiModule, CdkScrollableModule] +_PortalModule.ɵmod = ɵɵdefineNgModule({ + type: _PortalModule, + declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective], + exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective] }); -var ScrollingModule = _ScrollingModule; +_PortalModule.ɵinj = ɵɵdefineInjector({}); +var PortalModule = _PortalModule; (() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ScrollingModule, [{ + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(PortalModule, [{ type: NgModule, args: [{ - imports: [BidiModule, CdkScrollableModule, CdkVirtualScrollViewport, CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollableWindow, CdkVirtualScrollableElement], - exports: [BidiModule, CdkScrollableModule, CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport, CdkVirtualScrollableWindow, CdkVirtualScrollableElement] + exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective], + declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective] }] }], null, null); })(); @@ -3304,13 +3102,13 @@ var OverlayRef = class { if (!this._pane) { return; } - const style2 = this._pane.style; - style2.width = coerceCssPixelValue(this._config.width); - style2.height = coerceCssPixelValue(this._config.height); - style2.minWidth = coerceCssPixelValue(this._config.minWidth); - style2.minHeight = coerceCssPixelValue(this._config.minHeight); - style2.maxWidth = coerceCssPixelValue(this._config.maxWidth); - style2.maxHeight = coerceCssPixelValue(this._config.maxHeight); + const style = this._pane.style; + style.width = coerceCssPixelValue(this._config.width); + style.height = coerceCssPixelValue(this._config.height); + style.minWidth = coerceCssPixelValue(this._config.minWidth); + style.minHeight = coerceCssPixelValue(this._config.minHeight); + style.maxWidth = coerceCssPixelValue(this._config.maxWidth); + style.maxHeight = coerceCssPixelValue(this._config.maxHeight); } /** Toggles the pointer events for the overlay pane element. */ _togglePointerEvents(enablePointer) { @@ -5178,14 +4976,17 @@ var FullscreenOverlayContainer = _FullscreenOverlayContainer; })(); export { + ViewportRuler, ComponentPortal, - helpMotion, - moveUpMotion, - zoomBigMotion, + TemplatePortal, + CdkPortalOutlet, + PortalModule, + OverlayConfig, ConnectionPositionPair, + OverlayKeyboardDispatcher, Overlay, CdkOverlayOrigin, CdkConnectedOverlay, OverlayModule }; -//# sourceMappingURL=chunk-QI6CCAQD.js.map +//# sourceMappingURL=chunk-6U656R5M.js.map diff --git a/.angular/cache/17.0.7/vite/deps/chunk-6U656R5M.js.map b/.angular/cache/17.0.7/vite/deps/chunk-6U656R5M.js.map new file mode 100644 index 0000000..f0f030a --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/chunk-6U656R5M.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../node_modules/@angular/cdk/fesm2022/collections.mjs", "../../../../../node_modules/@angular/cdk/fesm2022/scrolling.mjs", "../../../../../node_modules/@angular/cdk/fesm2022/portal.mjs", "../../../../../node_modules/@angular/cdk/fesm2022/overlay.mjs"], + "sourcesContent": ["import { ConnectableObservable, isObservable, of, Subject } from 'rxjs';\nimport * as i0 from '@angular/core';\nimport { Injectable, InjectionToken } from '@angular/core';\nclass DataSource {}\n/** Checks whether an object is a data source. */\nfunction isDataSource(value) {\n // Check if the value is a DataSource by observing if it has a connect function. Cannot\n // be checked as an `instanceof DataSource` since people could create their own sources\n // that match the interface, but don't extend DataSource. We also can't use `isObservable`\n // here, because of some internal apps.\n return value && typeof value.connect === 'function' && !(value instanceof ConnectableObservable);\n}\n\n/** DataSource wrapper for a native array. */\nclass ArrayDataSource extends DataSource {\n constructor(_data) {\n super();\n this._data = _data;\n }\n connect() {\n return isObservable(this._data) ? this._data : of(this._data);\n }\n disconnect() {}\n}\n\n/**\n * A repeater that destroys views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will always construct a new embedded view for each item.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\nclass _DisposeViewRepeaterStrategy {\n applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n let view;\n let operation;\n if (record.previousIndex == null) {\n const insertContext = itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n view = viewContainerRef.createEmbeddedView(insertContext.templateRef, insertContext.context, insertContext.index);\n operation = 1 /* _ViewRepeaterOperation.INSERTED */;\n } else if (currentIndex == null) {\n viewContainerRef.remove(adjustedPreviousIndex);\n operation = 3 /* _ViewRepeaterOperation.REMOVED */;\n } else {\n view = viewContainerRef.get(adjustedPreviousIndex);\n viewContainerRef.move(view, currentIndex);\n operation = 2 /* _ViewRepeaterOperation.MOVED */;\n }\n\n if (itemViewChanged) {\n itemViewChanged({\n context: view?.context,\n operation,\n record\n });\n }\n });\n }\n detach() {}\n}\n\n/**\n * A repeater that caches views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will reuse one of the cached views instead of creating a new\n * embedded view. Recycling cached views reduces the quantity of expensive DOM\n * inserts.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\nclass _RecycleViewRepeaterStrategy {\n constructor() {\n /**\n * The size of the cache used to store unused views.\n * Setting the cache size to `0` will disable caching. Defaults to 20 views.\n */\n this.viewCacheSize = 20;\n /**\n * View cache that stores embedded view instances that have been previously stamped out,\n * but don't are not currently rendered. The view repeater will reuse these views rather than\n * creating brand new ones.\n *\n * TODO(michaeljamesparsons) Investigate whether using a linked list would improve performance.\n */\n this._viewCache = [];\n }\n /** Apply changes to the DOM. */\n applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n // Rearrange the views to put them in the right location.\n changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n let view;\n let operation;\n if (record.previousIndex == null) {\n // Item added.\n const viewArgsFactory = () => itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n view = this._insertView(viewArgsFactory, currentIndex, viewContainerRef, itemValueResolver(record));\n operation = view ? 1 /* _ViewRepeaterOperation.INSERTED */ : 0 /* _ViewRepeaterOperation.REPLACED */;\n } else if (currentIndex == null) {\n // Item removed.\n this._detachAndCacheView(adjustedPreviousIndex, viewContainerRef);\n operation = 3 /* _ViewRepeaterOperation.REMOVED */;\n } else {\n // Item moved.\n view = this._moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, itemValueResolver(record));\n operation = 2 /* _ViewRepeaterOperation.MOVED */;\n }\n\n if (itemViewChanged) {\n itemViewChanged({\n context: view?.context,\n operation,\n record\n });\n }\n });\n }\n detach() {\n for (const view of this._viewCache) {\n view.destroy();\n }\n this._viewCache = [];\n }\n /**\n * Inserts a view for a new item, either from the cache or by creating a new\n * one. Returns `undefined` if the item was inserted into a cached view.\n */\n _insertView(viewArgsFactory, currentIndex, viewContainerRef, value) {\n const cachedView = this._insertViewFromCache(currentIndex, viewContainerRef);\n if (cachedView) {\n cachedView.context.$implicit = value;\n return undefined;\n }\n const viewArgs = viewArgsFactory();\n return viewContainerRef.createEmbeddedView(viewArgs.templateRef, viewArgs.context, viewArgs.index);\n }\n /** Detaches the view at the given index and inserts into the view cache. */\n _detachAndCacheView(index, viewContainerRef) {\n const detachedView = viewContainerRef.detach(index);\n this._maybeCacheView(detachedView, viewContainerRef);\n }\n /** Moves view at the previous index to the current index. */\n _moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, value) {\n const view = viewContainerRef.get(adjustedPreviousIndex);\n viewContainerRef.move(view, currentIndex);\n view.context.$implicit = value;\n return view;\n }\n /**\n * Cache the given detached view. If the cache is full, the view will be\n * destroyed.\n */\n _maybeCacheView(view, viewContainerRef) {\n if (this._viewCache.length < this.viewCacheSize) {\n this._viewCache.push(view);\n } else {\n const index = viewContainerRef.indexOf(view);\n // The host component could remove views from the container outside of\n // the view repeater. It's unlikely this will occur, but just in case,\n // destroy the view on its own, otherwise destroy it through the\n // container to ensure that all the references are removed.\n if (index === -1) {\n view.destroy();\n } else {\n viewContainerRef.remove(index);\n }\n }\n }\n /** Inserts a recycled view from the cache at the given index. */\n _insertViewFromCache(index, viewContainerRef) {\n const cachedView = this._viewCache.pop();\n if (cachedView) {\n viewContainerRef.insert(cachedView, index);\n }\n return cachedView || null;\n }\n}\n\n/**\n * Class to be used to power selecting one or more options from a list.\n */\nclass SelectionModel {\n /** Selected values. */\n get selected() {\n if (!this._selected) {\n this._selected = Array.from(this._selection.values());\n }\n return this._selected;\n }\n constructor(_multiple = false, initiallySelectedValues, _emitChanges = true, compareWith) {\n this._multiple = _multiple;\n this._emitChanges = _emitChanges;\n this.compareWith = compareWith;\n /** Currently-selected values. */\n this._selection = new Set();\n /** Keeps track of the deselected options that haven't been emitted by the change event. */\n this._deselectedToEmit = [];\n /** Keeps track of the selected options that haven't been emitted by the change event. */\n this._selectedToEmit = [];\n /** Event emitted when the value has changed. */\n this.changed = new Subject();\n if (initiallySelectedValues && initiallySelectedValues.length) {\n if (_multiple) {\n initiallySelectedValues.forEach(value => this._markSelected(value));\n } else {\n this._markSelected(initiallySelectedValues[0]);\n }\n // Clear the array in order to avoid firing the change event for preselected values.\n this._selectedToEmit.length = 0;\n }\n }\n /**\n * Selects a value or an array of values.\n * @param values The values to select\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n select(...values) {\n this._verifyValueAssignment(values);\n values.forEach(value => this._markSelected(value));\n const changed = this._hasQueuedChanges();\n this._emitChangeEvent();\n return changed;\n }\n /**\n * Deselects a value or an array of values.\n * @param values The values to deselect\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n deselect(...values) {\n this._verifyValueAssignment(values);\n values.forEach(value => this._unmarkSelected(value));\n const changed = this._hasQueuedChanges();\n this._emitChangeEvent();\n return changed;\n }\n /**\n * Sets the selected values\n * @param values The new selected values\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n setSelection(...values) {\n this._verifyValueAssignment(values);\n const oldValues = this.selected;\n const newSelectedSet = new Set(values);\n values.forEach(value => this._markSelected(value));\n oldValues.filter(value => !newSelectedSet.has(value)).forEach(value => this._unmarkSelected(value));\n const changed = this._hasQueuedChanges();\n this._emitChangeEvent();\n return changed;\n }\n /**\n * Toggles a value between selected and deselected.\n * @param value The value to toggle\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n toggle(value) {\n return this.isSelected(value) ? this.deselect(value) : this.select(value);\n }\n /**\n * Clears all of the selected values.\n * @param flushEvent Whether to flush the changes in an event.\n * If false, the changes to the selection will be flushed along with the next event.\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n clear(flushEvent = true) {\n this._unmarkAll();\n const changed = this._hasQueuedChanges();\n if (flushEvent) {\n this._emitChangeEvent();\n }\n return changed;\n }\n /**\n * Determines whether a value is selected.\n */\n isSelected(value) {\n return this._selection.has(this._getConcreteValue(value));\n }\n /**\n * Determines whether the model does not have a value.\n */\n isEmpty() {\n return this._selection.size === 0;\n }\n /**\n * Determines whether the model has a value.\n */\n hasValue() {\n return !this.isEmpty();\n }\n /**\n * Sorts the selected values based on a predicate function.\n */\n sort(predicate) {\n if (this._multiple && this.selected) {\n this._selected.sort(predicate);\n }\n }\n /**\n * Gets whether multiple values can be selected.\n */\n isMultipleSelection() {\n return this._multiple;\n }\n /** Emits a change event and clears the records of selected and deselected values. */\n _emitChangeEvent() {\n // Clear the selected values so they can be re-cached.\n this._selected = null;\n if (this._selectedToEmit.length || this._deselectedToEmit.length) {\n this.changed.next({\n source: this,\n added: this._selectedToEmit,\n removed: this._deselectedToEmit\n });\n this._deselectedToEmit = [];\n this._selectedToEmit = [];\n }\n }\n /** Selects a value. */\n _markSelected(value) {\n value = this._getConcreteValue(value);\n if (!this.isSelected(value)) {\n if (!this._multiple) {\n this._unmarkAll();\n }\n if (!this.isSelected(value)) {\n this._selection.add(value);\n }\n if (this._emitChanges) {\n this._selectedToEmit.push(value);\n }\n }\n }\n /** Deselects a value. */\n _unmarkSelected(value) {\n value = this._getConcreteValue(value);\n if (this.isSelected(value)) {\n this._selection.delete(value);\n if (this._emitChanges) {\n this._deselectedToEmit.push(value);\n }\n }\n }\n /** Clears out the selected values. */\n _unmarkAll() {\n if (!this.isEmpty()) {\n this._selection.forEach(value => this._unmarkSelected(value));\n }\n }\n /**\n * Verifies the value assignment and throws an error if the specified value array is\n * including multiple values while the selection model is not supporting multiple values.\n */\n _verifyValueAssignment(values) {\n if (values.length > 1 && !this._multiple && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMultipleValuesInSingleSelectionError();\n }\n }\n /** Whether there are queued up change to be emitted. */\n _hasQueuedChanges() {\n return !!(this._deselectedToEmit.length || this._selectedToEmit.length);\n }\n /** Returns a value that is comparable to inputValue by applying compareWith function, returns the same inputValue otherwise. */\n _getConcreteValue(inputValue) {\n if (!this.compareWith) {\n return inputValue;\n } else {\n for (let selectedValue of this._selection) {\n if (this.compareWith(inputValue, selectedValue)) {\n return selectedValue;\n }\n }\n return inputValue;\n }\n }\n}\n/**\n * Returns an error that reports that multiple values are passed into a selection model\n * with a single value.\n * @docs-private\n */\nfunction getMultipleValuesInSingleSelectionError() {\n return Error('Cannot pass multiple values into SelectionModel with single-value mode.');\n}\n\n/**\n * Class to coordinate unique selection based on name.\n * Intended to be consumed as an Angular service.\n * This service is needed because native radio change events are only fired on the item currently\n * being selected, and we still need to uncheck the previous selection.\n *\n * This service does not *store* any IDs and names because they may change at any time, so it is\n * less error-prone if they are simply passed through when the events occur.\n */\nclass UniqueSelectionDispatcher {\n constructor() {\n this._listeners = [];\n }\n /**\n * Notify other items that selection for the given name has been set.\n * @param id ID of the item.\n * @param name Name of the item.\n */\n notify(id, name) {\n for (let listener of this._listeners) {\n listener(id, name);\n }\n }\n /**\n * Listen for future changes to item selection.\n * @return Function used to deregister listener\n */\n listen(listener) {\n this._listeners.push(listener);\n return () => {\n this._listeners = this._listeners.filter(registered => {\n return listener !== registered;\n });\n };\n }\n ngOnDestroy() {\n this._listeners = [];\n }\n static {\n this.ɵfac = function UniqueSelectionDispatcher_Factory(t) {\n return new (t || UniqueSelectionDispatcher)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: UniqueSelectionDispatcher,\n factory: UniqueSelectionDispatcher.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(UniqueSelectionDispatcher, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\n\n/**\n * Injection token for {@link _ViewRepeater}. This token is for use by Angular Material only.\n * @docs-private\n */\nconst _VIEW_REPEATER_STRATEGY = new InjectionToken('_ViewRepeater');\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ArrayDataSource, DataSource, SelectionModel, UniqueSelectionDispatcher, _DisposeViewRepeaterStrategy, _RecycleViewRepeaterStrategy, _VIEW_REPEATER_STRATEGY, getMultipleValuesInSingleSelectionError, isDataSource };\n", "import { coerceNumberProperty, coerceElement } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, forwardRef, Directive, Input, Injectable, Optional, Inject, inject, booleanAttribute, Component, ViewEncapsulation, ChangeDetectionStrategy, Output, ViewChild, SkipSelf, ElementRef, NgModule } from '@angular/core';\nimport { Subject, of, Observable, fromEvent, animationFrameScheduler, asapScheduler, Subscription, isObservable } from 'rxjs';\nimport { distinctUntilChanged, auditTime, filter, takeUntil, startWith, pairwise, switchMap, shareReplay } from 'rxjs/operators';\nimport * as i1 from '@angular/cdk/platform';\nimport { getRtlScrollAxisType, supportsScrollBehavior, Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport * as i2 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport * as i2$1 from '@angular/cdk/collections';\nimport { isDataSource, ArrayDataSource, _VIEW_REPEATER_STRATEGY, _RecycleViewRepeaterStrategy } from '@angular/cdk/collections';\n\n/** The injection token used to specify the virtual scrolling strategy. */\nconst _c0 = [\"contentWrapper\"];\nconst _c1 = [\"*\"];\nconst VIRTUAL_SCROLL_STRATEGY = new InjectionToken('VIRTUAL_SCROLL_STRATEGY');\n\n/** Virtual scrolling strategy for lists with items of known fixed size. */\nclass FixedSizeVirtualScrollStrategy {\n /**\n * @param itemSize The size of the items in the virtually scrolling list.\n * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n */\n constructor(itemSize, minBufferPx, maxBufferPx) {\n this._scrolledIndexChange = new Subject();\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n this.scrolledIndexChange = this._scrolledIndexChange.pipe(distinctUntilChanged());\n /** The attached viewport. */\n this._viewport = null;\n this._itemSize = itemSize;\n this._minBufferPx = minBufferPx;\n this._maxBufferPx = maxBufferPx;\n }\n /**\n * Attaches this scroll strategy to a viewport.\n * @param viewport The viewport to attach this strategy to.\n */\n attach(viewport) {\n this._viewport = viewport;\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** Detaches this scroll strategy from the currently attached viewport. */\n detach() {\n this._scrolledIndexChange.complete();\n this._viewport = null;\n }\n /**\n * Update the item size and buffer size.\n * @param itemSize The size of the items in the virtually scrolling list.\n * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n */\n updateItemAndBufferSize(itemSize, minBufferPx, maxBufferPx) {\n if (maxBufferPx < minBufferPx && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CDK virtual scroll: maxBufferPx must be greater than or equal to minBufferPx');\n }\n this._itemSize = itemSize;\n this._minBufferPx = minBufferPx;\n this._maxBufferPx = maxBufferPx;\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onContentScrolled() {\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onDataLengthChanged() {\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onContentRendered() {\n /* no-op */\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onRenderedOffsetChanged() {\n /* no-op */\n }\n /**\n * Scroll to the offset for the given index.\n * @param index The index of the element to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling.\n */\n scrollToIndex(index, behavior) {\n if (this._viewport) {\n this._viewport.scrollToOffset(index * this._itemSize, behavior);\n }\n }\n /** Update the viewport's total content size. */\n _updateTotalContentSize() {\n if (!this._viewport) {\n return;\n }\n this._viewport.setTotalContentSize(this._viewport.getDataLength() * this._itemSize);\n }\n /** Update the viewport's rendered range. */\n _updateRenderedRange() {\n if (!this._viewport) {\n return;\n }\n const renderedRange = this._viewport.getRenderedRange();\n const newRange = {\n start: renderedRange.start,\n end: renderedRange.end\n };\n const viewportSize = this._viewport.getViewportSize();\n const dataLength = this._viewport.getDataLength();\n let scrollOffset = this._viewport.measureScrollOffset();\n // Prevent NaN as result when dividing by zero.\n let firstVisibleIndex = this._itemSize > 0 ? scrollOffset / this._itemSize : 0;\n // If user scrolls to the bottom of the list and data changes to a smaller list\n if (newRange.end > dataLength) {\n // We have to recalculate the first visible index based on new data length and viewport size.\n const maxVisibleItems = Math.ceil(viewportSize / this._itemSize);\n const newVisibleIndex = Math.max(0, Math.min(firstVisibleIndex, dataLength - maxVisibleItems));\n // If first visible index changed we must update scroll offset to handle start/end buffers\n // Current range must also be adjusted to cover the new position (bottom of new list).\n if (firstVisibleIndex != newVisibleIndex) {\n firstVisibleIndex = newVisibleIndex;\n scrollOffset = newVisibleIndex * this._itemSize;\n newRange.start = Math.floor(firstVisibleIndex);\n }\n newRange.end = Math.max(0, Math.min(dataLength, newRange.start + maxVisibleItems));\n }\n const startBuffer = scrollOffset - newRange.start * this._itemSize;\n if (startBuffer < this._minBufferPx && newRange.start != 0) {\n const expandStart = Math.ceil((this._maxBufferPx - startBuffer) / this._itemSize);\n newRange.start = Math.max(0, newRange.start - expandStart);\n newRange.end = Math.min(dataLength, Math.ceil(firstVisibleIndex + (viewportSize + this._minBufferPx) / this._itemSize));\n } else {\n const endBuffer = newRange.end * this._itemSize - (scrollOffset + viewportSize);\n if (endBuffer < this._minBufferPx && newRange.end != dataLength) {\n const expandEnd = Math.ceil((this._maxBufferPx - endBuffer) / this._itemSize);\n if (expandEnd > 0) {\n newRange.end = Math.min(dataLength, newRange.end + expandEnd);\n newRange.start = Math.max(0, Math.floor(firstVisibleIndex - this._minBufferPx / this._itemSize));\n }\n }\n }\n this._viewport.setRenderedRange(newRange);\n this._viewport.setRenderedContentOffset(this._itemSize * newRange.start);\n this._scrolledIndexChange.next(Math.floor(firstVisibleIndex));\n }\n}\n/**\n * Provider factory for `FixedSizeVirtualScrollStrategy` that simply extracts the already created\n * `FixedSizeVirtualScrollStrategy` from the given directive.\n * @param fixedSizeDir The instance of `CdkFixedSizeVirtualScroll` to extract the\n * `FixedSizeVirtualScrollStrategy` from.\n */\nfunction _fixedSizeVirtualScrollStrategyFactory(fixedSizeDir) {\n return fixedSizeDir._scrollStrategy;\n}\n/** A virtual scroll strategy that supports fixed-size items. */\nclass CdkFixedSizeVirtualScroll {\n constructor() {\n this._itemSize = 20;\n this._minBufferPx = 100;\n this._maxBufferPx = 200;\n /** The scroll strategy used by this directive. */\n this._scrollStrategy = new FixedSizeVirtualScrollStrategy(this.itemSize, this.minBufferPx, this.maxBufferPx);\n }\n /** The size of the items in the list (in pixels). */\n get itemSize() {\n return this._itemSize;\n }\n set itemSize(value) {\n this._itemSize = coerceNumberProperty(value);\n }\n /**\n * The minimum amount of buffer rendered beyond the viewport (in pixels).\n * If the amount of buffer dips below this number, more items will be rendered. Defaults to 100px.\n */\n get minBufferPx() {\n return this._minBufferPx;\n }\n set minBufferPx(value) {\n this._minBufferPx = coerceNumberProperty(value);\n }\n /**\n * The number of pixels worth of buffer to render for when rendering new items. Defaults to 200px.\n */\n get maxBufferPx() {\n return this._maxBufferPx;\n }\n set maxBufferPx(value) {\n this._maxBufferPx = coerceNumberProperty(value);\n }\n ngOnChanges() {\n this._scrollStrategy.updateItemAndBufferSize(this.itemSize, this.minBufferPx, this.maxBufferPx);\n }\n static {\n this.ɵfac = function CdkFixedSizeVirtualScroll_Factory(t) {\n return new (t || CdkFixedSizeVirtualScroll)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkFixedSizeVirtualScroll,\n selectors: [[\"cdk-virtual-scroll-viewport\", \"itemSize\", \"\"]],\n inputs: {\n itemSize: \"itemSize\",\n minBufferPx: \"minBufferPx\",\n maxBufferPx: \"maxBufferPx\"\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _fixedSizeVirtualScrollStrategyFactory,\n deps: [forwardRef(() => CdkFixedSizeVirtualScroll)]\n }]), i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkFixedSizeVirtualScroll, [{\n type: Directive,\n args: [{\n selector: 'cdk-virtual-scroll-viewport[itemSize]',\n standalone: true,\n providers: [{\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _fixedSizeVirtualScrollStrategyFactory,\n deps: [forwardRef(() => CdkFixedSizeVirtualScroll)]\n }]\n }]\n }], null, {\n itemSize: [{\n type: Input\n }],\n minBufferPx: [{\n type: Input\n }],\n maxBufferPx: [{\n type: Input\n }]\n });\n})();\n\n/** Time in ms to throttle the scrolling events by default. */\nconst DEFAULT_SCROLL_TIME = 20;\n/**\n * Service contained all registered Scrollable references and emits an event when any one of the\n * Scrollable references emit a scrolled event.\n */\nclass ScrollDispatcher {\n constructor(_ngZone, _platform, document) {\n this._ngZone = _ngZone;\n this._platform = _platform;\n /** Subject for notifying that a registered scrollable reference element has been scrolled. */\n this._scrolled = new Subject();\n /** Keeps track of the global `scroll` and `resize` subscriptions. */\n this._globalSubscription = null;\n /** Keeps track of the amount of subscriptions to `scrolled`. Used for cleaning up afterwards. */\n this._scrolledCount = 0;\n /**\n * Map of all the scrollable references that are registered with the service and their\n * scroll event subscriptions.\n */\n this.scrollContainers = new Map();\n this._document = document;\n }\n /**\n * Registers a scrollable instance with the service and listens for its scrolled events. When the\n * scrollable is scrolled, the service emits the event to its scrolled observable.\n * @param scrollable Scrollable instance to be registered.\n */\n register(scrollable) {\n if (!this.scrollContainers.has(scrollable)) {\n this.scrollContainers.set(scrollable, scrollable.elementScrolled().subscribe(() => this._scrolled.next(scrollable)));\n }\n }\n /**\n * De-registers a Scrollable reference and unsubscribes from its scroll event observable.\n * @param scrollable Scrollable instance to be deregistered.\n */\n deregister(scrollable) {\n const scrollableReference = this.scrollContainers.get(scrollable);\n if (scrollableReference) {\n scrollableReference.unsubscribe();\n this.scrollContainers.delete(scrollable);\n }\n }\n /**\n * Returns an observable that emits an event whenever any of the registered Scrollable\n * references (or window, document, or body) fire a scrolled event. Can provide a time in ms\n * to override the default \"throttle\" time.\n *\n * **Note:** in order to avoid hitting change detection for every scroll event,\n * all of the events emitted from this stream will be run outside the Angular zone.\n * If you need to update any data bindings as a result of a scroll event, you have\n * to run the callback using `NgZone.run`.\n */\n scrolled(auditTimeInMs = DEFAULT_SCROLL_TIME) {\n if (!this._platform.isBrowser) {\n return of();\n }\n return new Observable(observer => {\n if (!this._globalSubscription) {\n this._addGlobalListener();\n }\n // In the case of a 0ms delay, use an observable without auditTime\n // since it does add a perceptible delay in processing overhead.\n const subscription = auditTimeInMs > 0 ? this._scrolled.pipe(auditTime(auditTimeInMs)).subscribe(observer) : this._scrolled.subscribe(observer);\n this._scrolledCount++;\n return () => {\n subscription.unsubscribe();\n this._scrolledCount--;\n if (!this._scrolledCount) {\n this._removeGlobalListener();\n }\n };\n });\n }\n ngOnDestroy() {\n this._removeGlobalListener();\n this.scrollContainers.forEach((_, container) => this.deregister(container));\n this._scrolled.complete();\n }\n /**\n * Returns an observable that emits whenever any of the\n * scrollable ancestors of an element are scrolled.\n * @param elementOrElementRef Element whose ancestors to listen for.\n * @param auditTimeInMs Time to throttle the scroll events.\n */\n ancestorScrolled(elementOrElementRef, auditTimeInMs) {\n const ancestors = this.getAncestorScrollContainers(elementOrElementRef);\n return this.scrolled(auditTimeInMs).pipe(filter(target => {\n return !target || ancestors.indexOf(target) > -1;\n }));\n }\n /** Returns all registered Scrollables that contain the provided element. */\n getAncestorScrollContainers(elementOrElementRef) {\n const scrollingContainers = [];\n this.scrollContainers.forEach((_subscription, scrollable) => {\n if (this._scrollableContainsElement(scrollable, elementOrElementRef)) {\n scrollingContainers.push(scrollable);\n }\n });\n return scrollingContainers;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document.defaultView || window;\n }\n /** Returns true if the element is contained within the provided Scrollable. */\n _scrollableContainsElement(scrollable, elementOrElementRef) {\n let element = coerceElement(elementOrElementRef);\n let scrollableElement = scrollable.getElementRef().nativeElement;\n // Traverse through the element parents until we reach null, checking if any of the elements\n // are the scrollable's element.\n do {\n if (element == scrollableElement) {\n return true;\n }\n } while (element = element.parentElement);\n return false;\n }\n /** Sets up the global scroll listeners. */\n _addGlobalListener() {\n this._globalSubscription = this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n return fromEvent(window.document, 'scroll').subscribe(() => this._scrolled.next());\n });\n }\n /** Cleans up the global scroll listener. */\n _removeGlobalListener() {\n if (this._globalSubscription) {\n this._globalSubscription.unsubscribe();\n this._globalSubscription = null;\n }\n }\n static {\n this.ɵfac = function ScrollDispatcher_Factory(t) {\n return new (t || ScrollDispatcher)(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i1.Platform), i0.ɵɵinject(DOCUMENT, 8));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ScrollDispatcher,\n factory: ScrollDispatcher.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ScrollDispatcher, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: i0.NgZone\n }, {\n type: i1.Platform\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }]\n }], null);\n})();\n\n/**\n * Sends an event when the directive's element is scrolled. Registers itself with the\n * ScrollDispatcher service to include itself as part of its collection of scrolling events that it\n * can be listened to through the service.\n */\nclass CdkScrollable {\n constructor(elementRef, scrollDispatcher, ngZone, dir) {\n this.elementRef = elementRef;\n this.scrollDispatcher = scrollDispatcher;\n this.ngZone = ngZone;\n this.dir = dir;\n this._destroyed = new Subject();\n this._elementScrolled = new Observable(observer => this.ngZone.runOutsideAngular(() => fromEvent(this.elementRef.nativeElement, 'scroll').pipe(takeUntil(this._destroyed)).subscribe(observer)));\n }\n ngOnInit() {\n this.scrollDispatcher.register(this);\n }\n ngOnDestroy() {\n this.scrollDispatcher.deregister(this);\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** Returns observable that emits when a scroll event is fired on the host element. */\n elementScrolled() {\n return this._elementScrolled;\n }\n /** Gets the ElementRef for the viewport. */\n getElementRef() {\n return this.elementRef;\n }\n /**\n * Scrolls to the specified offsets. This is a normalized version of the browser's native scrollTo\n * method, since browsers are not consistent about what scrollLeft means in RTL. For this method\n * left and right always refer to the left and right side of the scrolling container irrespective\n * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n * in an RTL context.\n * @param options specified the offsets to scroll to.\n */\n scrollTo(options) {\n const el = this.elementRef.nativeElement;\n const isRtl = this.dir && this.dir.value == 'rtl';\n // Rewrite start & end offsets as right or left offsets.\n if (options.left == null) {\n options.left = isRtl ? options.end : options.start;\n }\n if (options.right == null) {\n options.right = isRtl ? options.start : options.end;\n }\n // Rewrite the bottom offset as a top offset.\n if (options.bottom != null) {\n options.top = el.scrollHeight - el.clientHeight - options.bottom;\n }\n // Rewrite the right offset as a left offset.\n if (isRtl && getRtlScrollAxisType() != 0 /* RtlScrollAxisType.NORMAL */) {\n if (options.left != null) {\n options.right = el.scrollWidth - el.clientWidth - options.left;\n }\n if (getRtlScrollAxisType() == 2 /* RtlScrollAxisType.INVERTED */) {\n options.left = options.right;\n } else if (getRtlScrollAxisType() == 1 /* RtlScrollAxisType.NEGATED */) {\n options.left = options.right ? -options.right : options.right;\n }\n } else {\n if (options.right != null) {\n options.left = el.scrollWidth - el.clientWidth - options.right;\n }\n }\n this._applyScrollToOptions(options);\n }\n _applyScrollToOptions(options) {\n const el = this.elementRef.nativeElement;\n if (supportsScrollBehavior()) {\n el.scrollTo(options);\n } else {\n if (options.top != null) {\n el.scrollTop = options.top;\n }\n if (options.left != null) {\n el.scrollLeft = options.left;\n }\n }\n }\n /**\n * Measures the scroll offset relative to the specified edge of the viewport. This method can be\n * used instead of directly checking scrollLeft or scrollTop, since browsers are not consistent\n * about what scrollLeft means in RTL. The values returned by this method are normalized such that\n * left and right always refer to the left and right side of the scrolling container irrespective\n * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n * in an RTL context.\n * @param from The edge to measure from.\n */\n measureScrollOffset(from) {\n const LEFT = 'left';\n const RIGHT = 'right';\n const el = this.elementRef.nativeElement;\n if (from == 'top') {\n return el.scrollTop;\n }\n if (from == 'bottom') {\n return el.scrollHeight - el.clientHeight - el.scrollTop;\n }\n // Rewrite start & end as left or right offsets.\n const isRtl = this.dir && this.dir.value == 'rtl';\n if (from == 'start') {\n from = isRtl ? RIGHT : LEFT;\n } else if (from == 'end') {\n from = isRtl ? LEFT : RIGHT;\n }\n if (isRtl && getRtlScrollAxisType() == 2 /* RtlScrollAxisType.INVERTED */) {\n // For INVERTED, scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and\n // 0 when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n } else {\n return el.scrollLeft;\n }\n } else if (isRtl && getRtlScrollAxisType() == 1 /* RtlScrollAxisType.NEGATED */) {\n // For NEGATED, scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and\n // 0 when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollLeft + el.scrollWidth - el.clientWidth;\n } else {\n return -el.scrollLeft;\n }\n } else {\n // For NORMAL, as well as non-RTL contexts, scrollLeft is 0 when scrolled all the way left and\n // (scrollWidth - clientWidth) when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollLeft;\n } else {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n }\n }\n }\n static {\n this.ɵfac = function CdkScrollable_Factory(t) {\n return new (t || CdkScrollable)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(ScrollDispatcher), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i2.Directionality, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkScrollable,\n selectors: [[\"\", \"cdk-scrollable\", \"\"], [\"\", \"cdkScrollable\", \"\"]],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkScrollable, [{\n type: Directive,\n args: [{\n selector: '[cdk-scrollable], [cdkScrollable]',\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: ScrollDispatcher\n }, {\n type: i0.NgZone\n }, {\n type: i2.Directionality,\n decorators: [{\n type: Optional\n }]\n }], null);\n})();\n\n/** Time in ms to throttle the resize events by default. */\nconst DEFAULT_RESIZE_TIME = 20;\n/**\n * Simple utility for getting the bounds of the browser viewport.\n * @docs-private\n */\nclass ViewportRuler {\n constructor(_platform, ngZone, document) {\n this._platform = _platform;\n /** Stream of viewport change events. */\n this._change = new Subject();\n /** Event listener that will be used to handle the viewport change events. */\n this._changeListener = event => {\n this._change.next(event);\n };\n this._document = document;\n ngZone.runOutsideAngular(() => {\n if (_platform.isBrowser) {\n const window = this._getWindow();\n // Note that bind the events ourselves, rather than going through something like RxJS's\n // `fromEvent` so that we can ensure that they're bound outside of the NgZone.\n window.addEventListener('resize', this._changeListener);\n window.addEventListener('orientationchange', this._changeListener);\n }\n // Clear the cached position so that the viewport is re-measured next time it is required.\n // We don't need to keep track of the subscription, because it is completed on destroy.\n this.change().subscribe(() => this._viewportSize = null);\n });\n }\n ngOnDestroy() {\n if (this._platform.isBrowser) {\n const window = this._getWindow();\n window.removeEventListener('resize', this._changeListener);\n window.removeEventListener('orientationchange', this._changeListener);\n }\n this._change.complete();\n }\n /** Returns the viewport's width and height. */\n getViewportSize() {\n if (!this._viewportSize) {\n this._updateViewportSize();\n }\n const output = {\n width: this._viewportSize.width,\n height: this._viewportSize.height\n };\n // If we're not on a browser, don't cache the size since it'll be mocked out anyway.\n if (!this._platform.isBrowser) {\n this._viewportSize = null;\n }\n return output;\n }\n /** Gets a ClientRect for the viewport's bounds. */\n getViewportRect() {\n // Use the document element's bounding rect rather than the window scroll properties\n // (e.g. pageYOffset, scrollY) due to in issue in Chrome and IE where window scroll\n // properties and client coordinates (boundingClientRect, clientX/Y, etc.) are in different\n // conceptual viewports. Under most circumstances these viewports are equivalent, but they\n // can disagree when the page is pinch-zoomed (on devices that support touch).\n // See https://bugs.chromium.org/p/chromium/issues/detail?id=489206#c4\n // We use the documentElement instead of the body because, by default (without a css reset)\n // browsers typically give the document body an 8px margin, which is not included in\n // getBoundingClientRect().\n const scrollPosition = this.getViewportScrollPosition();\n const {\n width,\n height\n } = this.getViewportSize();\n return {\n top: scrollPosition.top,\n left: scrollPosition.left,\n bottom: scrollPosition.top + height,\n right: scrollPosition.left + width,\n height,\n width\n };\n }\n /** Gets the (top, left) scroll position of the viewport. */\n getViewportScrollPosition() {\n // While we can get a reference to the fake document\n // during SSR, it doesn't have getBoundingClientRect.\n if (!this._platform.isBrowser) {\n return {\n top: 0,\n left: 0\n };\n }\n // The top-left-corner of the viewport is determined by the scroll position of the document\n // body, normally just (scrollLeft, scrollTop). However, Chrome and Firefox disagree about\n // whether `document.body` or `document.documentElement` is the scrolled element, so reading\n // `scrollTop` and `scrollLeft` is inconsistent. However, using the bounding rect of\n // `document.documentElement` works consistently, where the `top` and `left` values will\n // equal negative the scroll position.\n const document = this._document;\n const window = this._getWindow();\n const documentElement = document.documentElement;\n const documentRect = documentElement.getBoundingClientRect();\n const top = -documentRect.top || document.body.scrollTop || window.scrollY || documentElement.scrollTop || 0;\n const left = -documentRect.left || document.body.scrollLeft || window.scrollX || documentElement.scrollLeft || 0;\n return {\n top,\n left\n };\n }\n /**\n * Returns a stream that emits whenever the size of the viewport changes.\n * This stream emits outside of the Angular zone.\n * @param throttleTime Time in milliseconds to throttle the stream.\n */\n change(throttleTime = DEFAULT_RESIZE_TIME) {\n return throttleTime > 0 ? this._change.pipe(auditTime(throttleTime)) : this._change;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document.defaultView || window;\n }\n /** Updates the cached viewport size. */\n _updateViewportSize() {\n const window = this._getWindow();\n this._viewportSize = this._platform.isBrowser ? {\n width: window.innerWidth,\n height: window.innerHeight\n } : {\n width: 0,\n height: 0\n };\n }\n static {\n this.ɵfac = function ViewportRuler_Factory(t) {\n return new (t || ViewportRuler)(i0.ɵɵinject(i1.Platform), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(DOCUMENT, 8));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ViewportRuler,\n factory: ViewportRuler.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ViewportRuler, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: i1.Platform\n }, {\n type: i0.NgZone\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }]\n }], null);\n})();\nconst VIRTUAL_SCROLLABLE = new InjectionToken('VIRTUAL_SCROLLABLE');\n/**\n * Extending the {@link CdkScrollable} to be used as scrolling container for virtual scrolling.\n */\nclass CdkVirtualScrollable extends CdkScrollable {\n constructor(elementRef, scrollDispatcher, ngZone, dir) {\n super(elementRef, scrollDispatcher, ngZone, dir);\n }\n /**\n * Measure the viewport size for the provided orientation.\n *\n * @param orientation The orientation to measure the size from.\n */\n measureViewportSize(orientation) {\n const viewportEl = this.elementRef.nativeElement;\n return orientation === 'horizontal' ? viewportEl.clientWidth : viewportEl.clientHeight;\n }\n static {\n this.ɵfac = function CdkVirtualScrollable_Factory(t) {\n return new (t || CdkVirtualScrollable)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(ScrollDispatcher), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i2.Directionality, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkVirtualScrollable,\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkVirtualScrollable, [{\n type: Directive\n }], () => [{\n type: i0.ElementRef\n }, {\n type: ScrollDispatcher\n }, {\n type: i0.NgZone\n }, {\n type: i2.Directionality,\n decorators: [{\n type: Optional\n }]\n }], null);\n})();\n\n/** Checks if the given ranges are equal. */\nfunction rangesEqual(r1, r2) {\n return r1.start == r2.start && r1.end == r2.end;\n}\n/**\n * Scheduler to be used for scroll events. Needs to fall back to\n * something that doesn't rely on requestAnimationFrame on environments\n * that don't support it (e.g. server-side rendering).\n */\nconst SCROLL_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\n/** A viewport that virtualizes its scrolling with the help of `CdkVirtualForOf`. */\nclass CdkVirtualScrollViewport extends CdkVirtualScrollable {\n /** The direction the viewport scrolls. */\n get orientation() {\n return this._orientation;\n }\n set orientation(orientation) {\n if (this._orientation !== orientation) {\n this._orientation = orientation;\n this._calculateSpacerSize();\n }\n }\n constructor(elementRef, _changeDetectorRef, ngZone, _scrollStrategy, dir, scrollDispatcher, viewportRuler, scrollable) {\n super(elementRef, scrollDispatcher, ngZone, dir);\n this.elementRef = elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._scrollStrategy = _scrollStrategy;\n this.scrollable = scrollable;\n this._platform = inject(Platform);\n /** Emits when the viewport is detached from a CdkVirtualForOf. */\n this._detachedSubject = new Subject();\n /** Emits when the rendered range changes. */\n this._renderedRangeSubject = new Subject();\n this._orientation = 'vertical';\n /**\n * Whether rendered items should persist in the DOM after scrolling out of view. By default, items\n * will be removed.\n */\n this.appendOnly = false;\n // Note: we don't use the typical EventEmitter here because we need to subscribe to the scroll\n // strategy lazily (i.e. only if the user is actually listening to the events). We do this because\n // depending on how the strategy calculates the scrolled index, it may come at a cost to\n // performance.\n /** Emits when the index of the first element visible in the viewport changes. */\n this.scrolledIndexChange = new Observable(observer => this._scrollStrategy.scrolledIndexChange.subscribe(index => Promise.resolve().then(() => this.ngZone.run(() => observer.next(index)))));\n /** A stream that emits whenever the rendered range changes. */\n this.renderedRangeStream = this._renderedRangeSubject;\n /**\n * The total size of all content (in pixels), including content that is not currently rendered.\n */\n this._totalContentSize = 0;\n /** A string representing the `style.width` property value to be used for the spacer element. */\n this._totalContentWidth = '';\n /** A string representing the `style.height` property value to be used for the spacer element. */\n this._totalContentHeight = '';\n /** The currently rendered range of indices. */\n this._renderedRange = {\n start: 0,\n end: 0\n };\n /** The length of the data bound to this viewport (in number of items). */\n this._dataLength = 0;\n /** The size of the viewport (in pixels). */\n this._viewportSize = 0;\n /** The last rendered content offset that was set. */\n this._renderedContentOffset = 0;\n /**\n * Whether the last rendered content offset was to the end of the content (and therefore needs to\n * be rewritten as an offset to the start of the content).\n */\n this._renderedContentOffsetNeedsRewrite = false;\n /** Whether there is a pending change detection cycle. */\n this._isChangeDetectionPending = false;\n /** A list of functions to run after the next change detection cycle. */\n this._runAfterChangeDetection = [];\n /** Subscription to changes in the viewport size. */\n this._viewportChanges = Subscription.EMPTY;\n if (!_scrollStrategy && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Error: cdk-virtual-scroll-viewport requires the \"itemSize\" property to be set.');\n }\n this._viewportChanges = viewportRuler.change().subscribe(() => {\n this.checkViewportSize();\n });\n if (!this.scrollable) {\n // No scrollable is provided, so the virtual-scroll-viewport needs to become a scrollable\n this.elementRef.nativeElement.classList.add('cdk-virtual-scrollable');\n this.scrollable = this;\n }\n }\n ngOnInit() {\n // Scrolling depends on the element dimensions which we can't get during SSR.\n if (!this._platform.isBrowser) {\n return;\n }\n if (this.scrollable === this) {\n super.ngOnInit();\n }\n // It's still too early to measure the viewport at this point. Deferring with a promise allows\n // the Viewport to be rendered with the correct size before we measure. We run this outside the\n // zone to avoid causing more change detection cycles. We handle the change detection loop\n // ourselves instead.\n this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n this._measureViewportSize();\n this._scrollStrategy.attach(this);\n this.scrollable.elementScrolled().pipe(\n // Start off with a fake scroll event so we properly detect our initial position.\n startWith(null),\n // Collect multiple events into one until the next animation frame. This way if\n // there are multiple scroll events in the same frame we only need to recheck\n // our layout once.\n auditTime(0, SCROLL_SCHEDULER),\n // Usually `elementScrolled` is completed when the scrollable is destroyed, but\n // that may not be the case if a `CdkVirtualScrollableElement` is used so we have\n // to unsubscribe here just in case.\n takeUntil(this._destroyed)).subscribe(() => this._scrollStrategy.onContentScrolled());\n this._markChangeDetectionNeeded();\n }));\n }\n ngOnDestroy() {\n this.detach();\n this._scrollStrategy.detach();\n // Complete all subjects\n this._renderedRangeSubject.complete();\n this._detachedSubject.complete();\n this._viewportChanges.unsubscribe();\n super.ngOnDestroy();\n }\n /** Attaches a `CdkVirtualScrollRepeater` to this viewport. */\n attach(forOf) {\n if (this._forOf && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CdkVirtualScrollViewport is already attached.');\n }\n // Subscribe to the data stream of the CdkVirtualForOf to keep track of when the data length\n // changes. Run outside the zone to avoid triggering change detection, since we're managing the\n // change detection loop ourselves.\n this.ngZone.runOutsideAngular(() => {\n this._forOf = forOf;\n this._forOf.dataStream.pipe(takeUntil(this._detachedSubject)).subscribe(data => {\n const newLength = data.length;\n if (newLength !== this._dataLength) {\n this._dataLength = newLength;\n this._scrollStrategy.onDataLengthChanged();\n }\n this._doChangeDetection();\n });\n });\n }\n /** Detaches the current `CdkVirtualForOf`. */\n detach() {\n this._forOf = null;\n this._detachedSubject.next();\n }\n /** Gets the length of the data bound to this viewport (in number of items). */\n getDataLength() {\n return this._dataLength;\n }\n /** Gets the size of the viewport (in pixels). */\n getViewportSize() {\n return this._viewportSize;\n }\n // TODO(mmalerba): This is technically out of sync with what's really rendered until a render\n // cycle happens. I'm being careful to only call it after the render cycle is complete and before\n // setting it to something else, but its error prone and should probably be split into\n // `pendingRange` and `renderedRange`, the latter reflecting whats actually in the DOM.\n /** Get the current rendered range of items. */\n getRenderedRange() {\n return this._renderedRange;\n }\n measureBoundingClientRectWithScrollOffset(from) {\n return this.getElementRef().nativeElement.getBoundingClientRect()[from];\n }\n /**\n * Sets the total size of all content (in pixels), including content that is not currently\n * rendered.\n */\n setTotalContentSize(size) {\n if (this._totalContentSize !== size) {\n this._totalContentSize = size;\n this._calculateSpacerSize();\n this._markChangeDetectionNeeded();\n }\n }\n /** Sets the currently rendered range of indices. */\n setRenderedRange(range) {\n if (!rangesEqual(this._renderedRange, range)) {\n if (this.appendOnly) {\n range = {\n start: 0,\n end: Math.max(this._renderedRange.end, range.end)\n };\n }\n this._renderedRangeSubject.next(this._renderedRange = range);\n this._markChangeDetectionNeeded(() => this._scrollStrategy.onContentRendered());\n }\n }\n /**\n * Gets the offset from the start of the viewport to the start of the rendered data (in pixels).\n */\n getOffsetToRenderedContentStart() {\n return this._renderedContentOffsetNeedsRewrite ? null : this._renderedContentOffset;\n }\n /**\n * Sets the offset from the start of the viewport to either the start or end of the rendered data\n * (in pixels).\n */\n setRenderedContentOffset(offset, to = 'to-start') {\n // In appendOnly, we always start from the top\n offset = this.appendOnly && to === 'to-start' ? 0 : offset;\n // For a horizontal viewport in a right-to-left language we need to translate along the x-axis\n // in the negative direction.\n const isRtl = this.dir && this.dir.value == 'rtl';\n const isHorizontal = this.orientation == 'horizontal';\n const axis = isHorizontal ? 'X' : 'Y';\n const axisDirection = isHorizontal && isRtl ? -1 : 1;\n let transform = `translate${axis}(${Number(axisDirection * offset)}px)`;\n this._renderedContentOffset = offset;\n if (to === 'to-end') {\n transform += ` translate${axis}(-100%)`;\n // The viewport should rewrite this as a `to-start` offset on the next render cycle. Otherwise\n // elements will appear to expand in the wrong direction (e.g. `mat-expansion-panel` would\n // expand upward).\n this._renderedContentOffsetNeedsRewrite = true;\n }\n if (this._renderedContentTransform != transform) {\n // We know this value is safe because we parse `offset` with `Number()` before passing it\n // into the string.\n this._renderedContentTransform = transform;\n this._markChangeDetectionNeeded(() => {\n if (this._renderedContentOffsetNeedsRewrite) {\n this._renderedContentOffset -= this.measureRenderedContentSize();\n this._renderedContentOffsetNeedsRewrite = false;\n this.setRenderedContentOffset(this._renderedContentOffset);\n } else {\n this._scrollStrategy.onRenderedOffsetChanged();\n }\n });\n }\n }\n /**\n * Scrolls to the given offset from the start of the viewport. Please note that this is not always\n * the same as setting `scrollTop` or `scrollLeft`. In a horizontal viewport with right-to-left\n * direction, this would be the equivalent of setting a fictional `scrollRight` property.\n * @param offset The offset to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n */\n scrollToOffset(offset, behavior = 'auto') {\n const options = {\n behavior\n };\n if (this.orientation === 'horizontal') {\n options.start = offset;\n } else {\n options.top = offset;\n }\n this.scrollable.scrollTo(options);\n }\n /**\n * Scrolls to the offset for the given index.\n * @param index The index of the element to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n */\n scrollToIndex(index, behavior = 'auto') {\n this._scrollStrategy.scrollToIndex(index, behavior);\n }\n /**\n * Gets the current scroll offset from the start of the scrollable (in pixels).\n * @param from The edge to measure the offset from. Defaults to 'top' in vertical mode and 'start'\n * in horizontal mode.\n */\n measureScrollOffset(from) {\n // This is to break the call cycle\n let measureScrollOffset;\n if (this.scrollable == this) {\n measureScrollOffset = _from => super.measureScrollOffset(_from);\n } else {\n measureScrollOffset = _from => this.scrollable.measureScrollOffset(_from);\n }\n return Math.max(0, measureScrollOffset(from ?? (this.orientation === 'horizontal' ? 'start' : 'top')) - this.measureViewportOffset());\n }\n /**\n * Measures the offset of the viewport from the scrolling container\n * @param from The edge to measure from.\n */\n measureViewportOffset(from) {\n let fromRect;\n const LEFT = 'left';\n const RIGHT = 'right';\n const isRtl = this.dir?.value == 'rtl';\n if (from == 'start') {\n fromRect = isRtl ? RIGHT : LEFT;\n } else if (from == 'end') {\n fromRect = isRtl ? LEFT : RIGHT;\n } else if (from) {\n fromRect = from;\n } else {\n fromRect = this.orientation === 'horizontal' ? 'left' : 'top';\n }\n const scrollerClientRect = this.scrollable.measureBoundingClientRectWithScrollOffset(fromRect);\n const viewportClientRect = this.elementRef.nativeElement.getBoundingClientRect()[fromRect];\n return viewportClientRect - scrollerClientRect;\n }\n /** Measure the combined size of all of the rendered items. */\n measureRenderedContentSize() {\n const contentEl = this._contentWrapper.nativeElement;\n return this.orientation === 'horizontal' ? contentEl.offsetWidth : contentEl.offsetHeight;\n }\n /**\n * Measure the total combined size of the given range. Throws if the range includes items that are\n * not rendered.\n */\n measureRangeSize(range) {\n if (!this._forOf) {\n return 0;\n }\n return this._forOf.measureRangeSize(range, this.orientation);\n }\n /** Update the viewport dimensions and re-render. */\n checkViewportSize() {\n // TODO: Cleanup later when add logic for handling content resize\n this._measureViewportSize();\n this._scrollStrategy.onDataLengthChanged();\n }\n /** Measure the viewport size. */\n _measureViewportSize() {\n this._viewportSize = this.scrollable.measureViewportSize(this.orientation);\n }\n /** Queue up change detection to run. */\n _markChangeDetectionNeeded(runAfter) {\n if (runAfter) {\n this._runAfterChangeDetection.push(runAfter);\n }\n // Use a Promise to batch together calls to `_doChangeDetection`. This way if we set a bunch of\n // properties sequentially we only have to run `_doChangeDetection` once at the end.\n if (!this._isChangeDetectionPending) {\n this._isChangeDetectionPending = true;\n this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n this._doChangeDetection();\n }));\n }\n }\n /** Run change detection. */\n _doChangeDetection() {\n this._isChangeDetectionPending = false;\n // Apply the content transform. The transform can't be set via an Angular binding because\n // bypassSecurityTrustStyle is banned in Google. However the value is safe, it's composed of\n // string literals, a variable that can only be 'X' or 'Y', and user input that is run through\n // the `Number` function first to coerce it to a numeric value.\n this._contentWrapper.nativeElement.style.transform = this._renderedContentTransform;\n // Apply changes to Angular bindings. Note: We must call `markForCheck` to run change detection\n // from the root, since the repeated items are content projected in. Calling `detectChanges`\n // instead does not properly check the projected content.\n this.ngZone.run(() => this._changeDetectorRef.markForCheck());\n const runAfterChangeDetection = this._runAfterChangeDetection;\n this._runAfterChangeDetection = [];\n for (const fn of runAfterChangeDetection) {\n fn();\n }\n }\n /** Calculates the `style.width` and `style.height` for the spacer element. */\n _calculateSpacerSize() {\n this._totalContentHeight = this.orientation === 'horizontal' ? '' : `${this._totalContentSize}px`;\n this._totalContentWidth = this.orientation === 'horizontal' ? `${this._totalContentSize}px` : '';\n }\n static {\n this.ɵfac = function CdkVirtualScrollViewport_Factory(t) {\n return new (t || CdkVirtualScrollViewport)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(VIRTUAL_SCROLL_STRATEGY, 8), i0.ɵɵdirectiveInject(i2.Directionality, 8), i0.ɵɵdirectiveInject(ScrollDispatcher), i0.ɵɵdirectiveInject(ViewportRuler), i0.ɵɵdirectiveInject(VIRTUAL_SCROLLABLE, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CdkVirtualScrollViewport,\n selectors: [[\"cdk-virtual-scroll-viewport\"]],\n viewQuery: function CdkVirtualScrollViewport_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c0, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._contentWrapper = _t.first);\n }\n },\n hostAttrs: [1, \"cdk-virtual-scroll-viewport\"],\n hostVars: 4,\n hostBindings: function CdkVirtualScrollViewport_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"cdk-virtual-scroll-orientation-horizontal\", ctx.orientation === \"horizontal\")(\"cdk-virtual-scroll-orientation-vertical\", ctx.orientation !== \"horizontal\");\n }\n },\n inputs: {\n orientation: \"orientation\",\n appendOnly: [\"appendOnly\", \"appendOnly\", booleanAttribute]\n },\n outputs: {\n scrolledIndexChange: \"scrolledIndexChange\"\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: CdkScrollable,\n useFactory: (virtualScrollable, viewport) => virtualScrollable || viewport,\n deps: [[new Optional(), new Inject(VIRTUAL_SCROLLABLE)], CdkVirtualScrollViewport]\n }]), i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c1,\n decls: 4,\n vars: 4,\n consts: [[1, \"cdk-virtual-scroll-content-wrapper\"], [\"contentWrapper\", \"\"], [1, \"cdk-virtual-scroll-spacer\"]],\n template: function CdkVirtualScrollViewport_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelementStart(0, \"div\", 0, 1);\n i0.ɵɵprojection(2);\n i0.ɵɵelementEnd();\n i0.ɵɵelement(3, \"div\", 2);\n }\n if (rf & 2) {\n i0.ɵɵadvance(3);\n i0.ɵɵstyleProp(\"width\", ctx._totalContentWidth)(\"height\", ctx._totalContentHeight);\n }\n },\n styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;transform:translateZ(0)}.cdk-virtual-scrollable{overflow:auto;will-change:scroll-position;contain:strict;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{height:1px;transform-origin:0 0;flex:0 0 auto}[dir=rtl] .cdk-virtual-scroll-spacer{transform-origin:100% 0}\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkVirtualScrollViewport, [{\n type: Component,\n args: [{\n selector: 'cdk-virtual-scroll-viewport',\n host: {\n 'class': 'cdk-virtual-scroll-viewport',\n '[class.cdk-virtual-scroll-orientation-horizontal]': 'orientation === \"horizontal\"',\n '[class.cdk-virtual-scroll-orientation-vertical]': 'orientation !== \"horizontal\"'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n providers: [{\n provide: CdkScrollable,\n useFactory: (virtualScrollable, viewport) => virtualScrollable || viewport,\n deps: [[new Optional(), new Inject(VIRTUAL_SCROLLABLE)], CdkVirtualScrollViewport]\n }],\n template: \"\\n
\\n \\n
\\n\\n
\\n\",\n styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;transform:translateZ(0)}.cdk-virtual-scrollable{overflow:auto;will-change:scroll-position;contain:strict;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{height:1px;transform-origin:0 0;flex:0 0 auto}[dir=rtl] .cdk-virtual-scroll-spacer{transform-origin:100% 0}\"]\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: i0.NgZone\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [VIRTUAL_SCROLL_STRATEGY]\n }]\n }, {\n type: i2.Directionality,\n decorators: [{\n type: Optional\n }]\n }, {\n type: ScrollDispatcher\n }, {\n type: ViewportRuler\n }, {\n type: CdkVirtualScrollable,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [VIRTUAL_SCROLLABLE]\n }]\n }], {\n orientation: [{\n type: Input\n }],\n appendOnly: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n scrolledIndexChange: [{\n type: Output\n }],\n _contentWrapper: [{\n type: ViewChild,\n args: ['contentWrapper', {\n static: true\n }]\n }]\n });\n})();\n\n/** Helper to extract the offset of a DOM Node in a certain direction. */\nfunction getOffset(orientation, direction, node) {\n const el = node;\n if (!el.getBoundingClientRect) {\n return 0;\n }\n const rect = el.getBoundingClientRect();\n if (orientation === 'horizontal') {\n return direction === 'start' ? rect.left : rect.right;\n }\n return direction === 'start' ? rect.top : rect.bottom;\n}\n/**\n * A directive similar to `ngForOf` to be used for rendering data inside a virtual scrolling\n * container.\n */\nclass CdkVirtualForOf {\n /** The DataSource to display. */\n get cdkVirtualForOf() {\n return this._cdkVirtualForOf;\n }\n set cdkVirtualForOf(value) {\n this._cdkVirtualForOf = value;\n if (isDataSource(value)) {\n this._dataSourceChanges.next(value);\n } else {\n // If value is an an NgIterable, convert it to an array.\n this._dataSourceChanges.next(new ArrayDataSource(isObservable(value) ? value : Array.from(value || [])));\n }\n }\n /**\n * The `TrackByFunction` to use for tracking changes. The `TrackByFunction` takes the index and\n * the item and produces a value to be used as the item's identity when tracking changes.\n */\n get cdkVirtualForTrackBy() {\n return this._cdkVirtualForTrackBy;\n }\n set cdkVirtualForTrackBy(fn) {\n this._needsUpdate = true;\n this._cdkVirtualForTrackBy = fn ? (index, item) => fn(index + (this._renderedRange ? this._renderedRange.start : 0), item) : undefined;\n }\n /** The template used to stamp out new elements. */\n set cdkVirtualForTemplate(value) {\n if (value) {\n this._needsUpdate = true;\n this._template = value;\n }\n }\n /**\n * The size of the cache used to store templates that are not being used for re-use later.\n * Setting the cache size to `0` will disable caching. Defaults to 20 templates.\n */\n get cdkVirtualForTemplateCacheSize() {\n return this._viewRepeater.viewCacheSize;\n }\n set cdkVirtualForTemplateCacheSize(size) {\n this._viewRepeater.viewCacheSize = coerceNumberProperty(size);\n }\n constructor( /** The view container to add items to. */\n _viewContainerRef, /** The template to use when stamping out new items. */\n _template, /** The set of available differs. */\n _differs, /** The strategy used to render items in the virtual scroll viewport. */\n _viewRepeater, /** The virtual scrolling viewport that these items are being rendered in. */\n _viewport, ngZone) {\n this._viewContainerRef = _viewContainerRef;\n this._template = _template;\n this._differs = _differs;\n this._viewRepeater = _viewRepeater;\n this._viewport = _viewport;\n /** Emits when the rendered view of the data changes. */\n this.viewChange = new Subject();\n /** Subject that emits when a new DataSource instance is given. */\n this._dataSourceChanges = new Subject();\n /** Emits whenever the data in the current DataSource changes. */\n this.dataStream = this._dataSourceChanges.pipe(\n // Start off with null `DataSource`.\n startWith(null),\n // Bundle up the previous and current data sources so we can work with both.\n pairwise(),\n // Use `_changeDataSource` to disconnect from the previous data source and connect to the\n // new one, passing back a stream of data changes which we run through `switchMap` to give\n // us a data stream that emits the latest data from whatever the current `DataSource` is.\n switchMap(([prev, cur]) => this._changeDataSource(prev, cur)),\n // Replay the last emitted data when someone subscribes.\n shareReplay(1));\n /** The differ used to calculate changes to the data. */\n this._differ = null;\n /** Whether the rendered data should be updated during the next ngDoCheck cycle. */\n this._needsUpdate = false;\n this._destroyed = new Subject();\n this.dataStream.subscribe(data => {\n this._data = data;\n this._onRenderedDataChange();\n });\n this._viewport.renderedRangeStream.pipe(takeUntil(this._destroyed)).subscribe(range => {\n this._renderedRange = range;\n if (this.viewChange.observers.length) {\n ngZone.run(() => this.viewChange.next(this._renderedRange));\n }\n this._onRenderedDataChange();\n });\n this._viewport.attach(this);\n }\n /**\n * Measures the combined size (width for horizontal orientation, height for vertical) of all items\n * in the specified range. Throws an error if the range includes items that are not currently\n * rendered.\n */\n measureRangeSize(range, orientation) {\n if (range.start >= range.end) {\n return 0;\n }\n if ((range.start < this._renderedRange.start || range.end > this._renderedRange.end) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Error: attempted to measure an item that isn't rendered.`);\n }\n // The index into the list of rendered views for the first item in the range.\n const renderedStartIndex = range.start - this._renderedRange.start;\n // The length of the range we're measuring.\n const rangeLen = range.end - range.start;\n // Loop over all the views, find the first and land node and compute the size by subtracting\n // the top of the first node from the bottom of the last one.\n let firstNode;\n let lastNode;\n // Find the first node by starting from the beginning and going forwards.\n for (let i = 0; i < rangeLen; i++) {\n const view = this._viewContainerRef.get(i + renderedStartIndex);\n if (view && view.rootNodes.length) {\n firstNode = lastNode = view.rootNodes[0];\n break;\n }\n }\n // Find the last node by starting from the end and going backwards.\n for (let i = rangeLen - 1; i > -1; i--) {\n const view = this._viewContainerRef.get(i + renderedStartIndex);\n if (view && view.rootNodes.length) {\n lastNode = view.rootNodes[view.rootNodes.length - 1];\n break;\n }\n }\n return firstNode && lastNode ? getOffset(orientation, 'end', lastNode) - getOffset(orientation, 'start', firstNode) : 0;\n }\n ngDoCheck() {\n if (this._differ && this._needsUpdate) {\n // TODO(mmalerba): We should differentiate needs update due to scrolling and a new portion of\n // this list being rendered (can use simpler algorithm) vs needs update due to data actually\n // changing (need to do this diff).\n const changes = this._differ.diff(this._renderedItems);\n if (!changes) {\n this._updateContext();\n } else {\n this._applyChanges(changes);\n }\n this._needsUpdate = false;\n }\n }\n ngOnDestroy() {\n this._viewport.detach();\n this._dataSourceChanges.next(undefined);\n this._dataSourceChanges.complete();\n this.viewChange.complete();\n this._destroyed.next();\n this._destroyed.complete();\n this._viewRepeater.detach();\n }\n /** React to scroll state changes in the viewport. */\n _onRenderedDataChange() {\n if (!this._renderedRange) {\n return;\n }\n this._renderedItems = this._data.slice(this._renderedRange.start, this._renderedRange.end);\n if (!this._differ) {\n // Use a wrapper function for the `trackBy` so any new values are\n // picked up automatically without having to recreate the differ.\n this._differ = this._differs.find(this._renderedItems).create((index, item) => {\n return this.cdkVirtualForTrackBy ? this.cdkVirtualForTrackBy(index, item) : item;\n });\n }\n this._needsUpdate = true;\n }\n /** Swap out one `DataSource` for another. */\n _changeDataSource(oldDs, newDs) {\n if (oldDs) {\n oldDs.disconnect(this);\n }\n this._needsUpdate = true;\n return newDs ? newDs.connect(this) : of();\n }\n /** Update the `CdkVirtualForOfContext` for all views. */\n _updateContext() {\n const count = this._data.length;\n let i = this._viewContainerRef.length;\n while (i--) {\n const view = this._viewContainerRef.get(i);\n view.context.index = this._renderedRange.start + i;\n view.context.count = count;\n this._updateComputedContextProperties(view.context);\n view.detectChanges();\n }\n }\n /** Apply changes to the DOM. */\n _applyChanges(changes) {\n this._viewRepeater.applyChanges(changes, this._viewContainerRef, (record, _adjustedPreviousIndex, currentIndex) => this._getEmbeddedViewArgs(record, currentIndex), record => record.item);\n // Update $implicit for any items that had an identity change.\n changes.forEachIdentityChange(record => {\n const view = this._viewContainerRef.get(record.currentIndex);\n view.context.$implicit = record.item;\n });\n // Update the context variables on all items.\n const count = this._data.length;\n let i = this._viewContainerRef.length;\n while (i--) {\n const view = this._viewContainerRef.get(i);\n view.context.index = this._renderedRange.start + i;\n view.context.count = count;\n this._updateComputedContextProperties(view.context);\n }\n }\n /** Update the computed properties on the `CdkVirtualForOfContext`. */\n _updateComputedContextProperties(context) {\n context.first = context.index === 0;\n context.last = context.index === context.count - 1;\n context.even = context.index % 2 === 0;\n context.odd = !context.even;\n }\n _getEmbeddedViewArgs(record, index) {\n // Note that it's important that we insert the item directly at the proper index,\n // rather than inserting it and the moving it in place, because if there's a directive\n // on the same node that injects the `ViewContainerRef`, Angular will insert another\n // comment node which can throw off the move when it's being repeated for all items.\n return {\n templateRef: this._template,\n context: {\n $implicit: record.item,\n // It's guaranteed that the iterable is not \"undefined\" or \"null\" because we only\n // generate views for elements if the \"cdkVirtualForOf\" iterable has elements.\n cdkVirtualForOf: this._cdkVirtualForOf,\n index: -1,\n count: -1,\n first: false,\n last: false,\n odd: false,\n even: false\n },\n index\n };\n }\n static {\n this.ɵfac = function CdkVirtualForOf_Factory(t) {\n return new (t || CdkVirtualForOf)(i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i0.TemplateRef), i0.ɵɵdirectiveInject(i0.IterableDiffers), i0.ɵɵdirectiveInject(_VIEW_REPEATER_STRATEGY), i0.ɵɵdirectiveInject(CdkVirtualScrollViewport, 4), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkVirtualForOf,\n selectors: [[\"\", \"cdkVirtualFor\", \"\", \"cdkVirtualForOf\", \"\"]],\n inputs: {\n cdkVirtualForOf: \"cdkVirtualForOf\",\n cdkVirtualForTrackBy: \"cdkVirtualForTrackBy\",\n cdkVirtualForTemplate: \"cdkVirtualForTemplate\",\n cdkVirtualForTemplateCacheSize: \"cdkVirtualForTemplateCacheSize\"\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: _VIEW_REPEATER_STRATEGY,\n useClass: _RecycleViewRepeaterStrategy\n }])]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkVirtualForOf, [{\n type: Directive,\n args: [{\n selector: '[cdkVirtualFor][cdkVirtualForOf]',\n providers: [{\n provide: _VIEW_REPEATER_STRATEGY,\n useClass: _RecycleViewRepeaterStrategy\n }],\n standalone: true\n }]\n }], () => [{\n type: i0.ViewContainerRef\n }, {\n type: i0.TemplateRef\n }, {\n type: i0.IterableDiffers\n }, {\n type: i2$1._RecycleViewRepeaterStrategy,\n decorators: [{\n type: Inject,\n args: [_VIEW_REPEATER_STRATEGY]\n }]\n }, {\n type: CdkVirtualScrollViewport,\n decorators: [{\n type: SkipSelf\n }]\n }, {\n type: i0.NgZone\n }], {\n cdkVirtualForOf: [{\n type: Input\n }],\n cdkVirtualForTrackBy: [{\n type: Input\n }],\n cdkVirtualForTemplate: [{\n type: Input\n }],\n cdkVirtualForTemplateCacheSize: [{\n type: Input\n }]\n });\n})();\n\n/**\n * Provides a virtual scrollable for the element it is attached to.\n */\nclass CdkVirtualScrollableElement extends CdkVirtualScrollable {\n constructor(elementRef, scrollDispatcher, ngZone, dir) {\n super(elementRef, scrollDispatcher, ngZone, dir);\n }\n measureBoundingClientRectWithScrollOffset(from) {\n return this.getElementRef().nativeElement.getBoundingClientRect()[from] - this.measureScrollOffset(from);\n }\n static {\n this.ɵfac = function CdkVirtualScrollableElement_Factory(t) {\n return new (t || CdkVirtualScrollableElement)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(ScrollDispatcher), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i2.Directionality, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkVirtualScrollableElement,\n selectors: [[\"\", \"cdkVirtualScrollingElement\", \"\"]],\n hostAttrs: [1, \"cdk-virtual-scrollable\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: VIRTUAL_SCROLLABLE,\n useExisting: CdkVirtualScrollableElement\n }]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkVirtualScrollableElement, [{\n type: Directive,\n args: [{\n selector: '[cdkVirtualScrollingElement]',\n providers: [{\n provide: VIRTUAL_SCROLLABLE,\n useExisting: CdkVirtualScrollableElement\n }],\n standalone: true,\n host: {\n 'class': 'cdk-virtual-scrollable'\n }\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: ScrollDispatcher\n }, {\n type: i0.NgZone\n }, {\n type: i2.Directionality,\n decorators: [{\n type: Optional\n }]\n }], null);\n})();\n\n/**\n * Provides as virtual scrollable for the global / window scrollbar.\n */\nclass CdkVirtualScrollableWindow extends CdkVirtualScrollable {\n constructor(scrollDispatcher, ngZone, dir) {\n super(new ElementRef(document.documentElement), scrollDispatcher, ngZone, dir);\n this._elementScrolled = new Observable(observer => this.ngZone.runOutsideAngular(() => fromEvent(document, 'scroll').pipe(takeUntil(this._destroyed)).subscribe(observer)));\n }\n measureBoundingClientRectWithScrollOffset(from) {\n return this.getElementRef().nativeElement.getBoundingClientRect()[from];\n }\n static {\n this.ɵfac = function CdkVirtualScrollableWindow_Factory(t) {\n return new (t || CdkVirtualScrollableWindow)(i0.ɵɵdirectiveInject(ScrollDispatcher), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i2.Directionality, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkVirtualScrollableWindow,\n selectors: [[\"cdk-virtual-scroll-viewport\", \"scrollWindow\", \"\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: VIRTUAL_SCROLLABLE,\n useExisting: CdkVirtualScrollableWindow\n }]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkVirtualScrollableWindow, [{\n type: Directive,\n args: [{\n selector: 'cdk-virtual-scroll-viewport[scrollWindow]',\n providers: [{\n provide: VIRTUAL_SCROLLABLE,\n useExisting: CdkVirtualScrollableWindow\n }],\n standalone: true\n }]\n }], () => [{\n type: ScrollDispatcher\n }, {\n type: i0.NgZone\n }, {\n type: i2.Directionality,\n decorators: [{\n type: Optional\n }]\n }], null);\n})();\nclass CdkScrollableModule {\n static {\n this.ɵfac = function CdkScrollableModule_Factory(t) {\n return new (t || CdkScrollableModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: CdkScrollableModule,\n imports: [CdkScrollable],\n exports: [CdkScrollable]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkScrollableModule, [{\n type: NgModule,\n args: [{\n exports: [CdkScrollable],\n imports: [CdkScrollable]\n }]\n }], null, null);\n})();\n/**\n * @docs-primary-export\n */\nclass ScrollingModule {\n static {\n this.ɵfac = function ScrollingModule_Factory(t) {\n return new (t || ScrollingModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: ScrollingModule,\n imports: [BidiModule, CdkScrollableModule, CdkVirtualScrollViewport, CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollableWindow, CdkVirtualScrollableElement],\n exports: [BidiModule, CdkScrollableModule, CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport, CdkVirtualScrollableWindow, CdkVirtualScrollableElement]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [BidiModule, CdkScrollableModule, BidiModule, CdkScrollableModule]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ScrollingModule, [{\n type: NgModule,\n args: [{\n imports: [BidiModule, CdkScrollableModule, CdkVirtualScrollViewport, CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollableWindow, CdkVirtualScrollableElement],\n exports: [BidiModule, CdkScrollableModule, CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport, CdkVirtualScrollableWindow, CdkVirtualScrollableElement]\n }]\n }], null, null);\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkFixedSizeVirtualScroll, CdkScrollable, CdkScrollableModule, CdkVirtualForOf, CdkVirtualScrollViewport, CdkVirtualScrollable, CdkVirtualScrollableElement, CdkVirtualScrollableWindow, DEFAULT_RESIZE_TIME, DEFAULT_SCROLL_TIME, FixedSizeVirtualScrollStrategy, ScrollDispatcher, ScrollingModule, VIRTUAL_SCROLLABLE, VIRTUAL_SCROLL_STRATEGY, ViewportRuler, _fixedSizeVirtualScrollStrategyFactory };\n", "import * as i0 from '@angular/core';\nimport { ElementRef, Injector, Directive, EventEmitter, Inject, Output, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * Throws an exception when attempting to attach a null portal to a host.\n * @docs-private\n */\nfunction throwNullPortalError() {\n throw Error('Must provide a portal to attach');\n}\n/**\n * Throws an exception when attempting to attach a portal to a host that is already attached.\n * @docs-private\n */\nfunction throwPortalAlreadyAttachedError() {\n throw Error('Host already has a portal attached');\n}\n/**\n * Throws an exception when attempting to attach a portal to an already-disposed host.\n * @docs-private\n */\nfunction throwPortalOutletAlreadyDisposedError() {\n throw Error('This PortalOutlet has already been disposed');\n}\n/**\n * Throws an exception when attempting to attach an unknown portal type.\n * @docs-private\n */\nfunction throwUnknownPortalTypeError() {\n throw Error('Attempting to attach an unknown Portal type. BasePortalOutlet accepts either ' + 'a ComponentPortal or a TemplatePortal.');\n}\n/**\n * Throws an exception when attempting to attach a portal to a null host.\n * @docs-private\n */\nfunction throwNullPortalOutletError() {\n throw Error('Attempting to attach a portal to a null PortalOutlet');\n}\n/**\n * Throws an exception when attempting to detach a portal that is not attached.\n * @docs-private\n */\nfunction throwNoPortalAttachedError() {\n throw Error('Attempting to detach a portal that is not attached to a host');\n}\n\n/**\n * A `Portal` is something that you want to render somewhere else.\n * It can be attach to / detached from a `PortalOutlet`.\n */\nclass Portal {\n /** Attach this portal to a host. */\n attach(host) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (host == null) {\n throwNullPortalOutletError();\n }\n if (host.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n }\n this._attachedHost = host;\n return host.attach(this);\n }\n /** Detach this portal from its host */\n detach() {\n let host = this._attachedHost;\n if (host != null) {\n this._attachedHost = null;\n host.detach();\n } else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throwNoPortalAttachedError();\n }\n }\n /** Whether this portal is attached to a host. */\n get isAttached() {\n return this._attachedHost != null;\n }\n /**\n * Sets the PortalOutlet reference without performing `attach()`. This is used directly by\n * the PortalOutlet when it is performing an `attach()` or `detach()`.\n */\n setAttachedHost(host) {\n this._attachedHost = host;\n }\n}\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\nclass ComponentPortal extends Portal {\n constructor(component, viewContainerRef, injector, componentFactoryResolver, projectableNodes) {\n super();\n this.component = component;\n this.viewContainerRef = viewContainerRef;\n this.injector = injector;\n this.componentFactoryResolver = componentFactoryResolver;\n this.projectableNodes = projectableNodes;\n }\n}\n/**\n * A `TemplatePortal` is a portal that represents some embedded template (TemplateRef).\n */\nclass TemplatePortal extends Portal {\n constructor( /** The embedded template that will be used to instantiate an embedded View in the host. */\n templateRef, /** Reference to the ViewContainer into which the template will be stamped out. */\n viewContainerRef, /** Contextual data to be passed in to the embedded view. */\n context, /** The injector to use for the embedded view. */\n injector) {\n super();\n this.templateRef = templateRef;\n this.viewContainerRef = viewContainerRef;\n this.context = context;\n this.injector = injector;\n }\n get origin() {\n return this.templateRef.elementRef;\n }\n /**\n * Attach the portal to the provided `PortalOutlet`.\n * When a context is provided it will override the `context` property of the `TemplatePortal`\n * instance.\n */\n attach(host, context = this.context) {\n this.context = context;\n return super.attach(host);\n }\n detach() {\n this.context = undefined;\n return super.detach();\n }\n}\n/**\n * A `DomPortal` is a portal whose DOM element will be taken from its current position\n * in the DOM and moved into a portal outlet, when it is attached. On detach, the content\n * will be restored to its original position.\n */\nclass DomPortal extends Portal {\n constructor(element) {\n super();\n this.element = element instanceof ElementRef ? element.nativeElement : element;\n }\n}\n/**\n * Partial implementation of PortalOutlet that handles attaching\n * ComponentPortal and TemplatePortal.\n */\nclass BasePortalOutlet {\n constructor() {\n /** Whether this host has already been permanently disposed. */\n this._isDisposed = false;\n // @breaking-change 10.0.0 `attachDomPortal` to become a required abstract method.\n this.attachDomPortal = null;\n }\n /** Whether this host has an attached portal. */\n hasAttached() {\n return !!this._attachedPortal;\n }\n /** Attaches a portal. */\n attach(portal) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!portal) {\n throwNullPortalError();\n }\n if (this.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n if (this._isDisposed) {\n throwPortalOutletAlreadyDisposedError();\n }\n }\n if (portal instanceof ComponentPortal) {\n this._attachedPortal = portal;\n return this.attachComponentPortal(portal);\n } else if (portal instanceof TemplatePortal) {\n this._attachedPortal = portal;\n return this.attachTemplatePortal(portal);\n // @breaking-change 10.0.0 remove null check for `this.attachDomPortal`.\n } else if (this.attachDomPortal && portal instanceof DomPortal) {\n this._attachedPortal = portal;\n return this.attachDomPortal(portal);\n }\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throwUnknownPortalTypeError();\n }\n }\n /** Detaches a previously attached portal. */\n detach() {\n if (this._attachedPortal) {\n this._attachedPortal.setAttachedHost(null);\n this._attachedPortal = null;\n }\n this._invokeDisposeFn();\n }\n /** Permanently dispose of this portal host. */\n dispose() {\n if (this.hasAttached()) {\n this.detach();\n }\n this._invokeDisposeFn();\n this._isDisposed = true;\n }\n /** @docs-private */\n setDisposeFn(fn) {\n this._disposeFn = fn;\n }\n _invokeDisposeFn() {\n if (this._disposeFn) {\n this._disposeFn();\n this._disposeFn = null;\n }\n }\n}\n/**\n * @deprecated Use `BasePortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass BasePortalHost extends BasePortalOutlet {}\n\n/**\n * A PortalOutlet for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n */\nclass DomPortalOutlet extends BasePortalOutlet {\n /**\n * @param outletElement Element into which the content is projected.\n * @param _componentFactoryResolver Used to resolve the component factory.\n * Only required when attaching component portals.\n * @param _appRef Reference to the application. Only used in component portals when there\n * is no `ViewContainerRef` available.\n * @param _defaultInjector Injector to use as a fallback when the portal being attached doesn't\n * have one. Only used for component portals.\n * @param _document Reference to the document. Used when attaching a DOM portal. Will eventually\n * become a required parameter.\n */\n constructor( /** Element into which the content is projected. */\n outletElement, _componentFactoryResolver, _appRef, _defaultInjector,\n /**\n * @deprecated `_document` Parameter to be made required.\n * @breaking-change 10.0.0\n */\n _document) {\n super();\n this.outletElement = outletElement;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._appRef = _appRef;\n this._defaultInjector = _defaultInjector;\n /**\n * Attaches a DOM portal by transferring its content into the outlet.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = portal => {\n // @breaking-change 10.0.0 Remove check and error once the\n // `_document` constructor parameter is required.\n if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Cannot attach DOM portal without _document constructor parameter');\n }\n const element = portal.element;\n if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('DOM portal content must be attached to a parent node.');\n }\n // Anchor used to save the element's previous position so\n // that we can restore it when the portal is detached.\n const anchorNode = this._document.createComment('dom-portal');\n element.parentNode.insertBefore(anchorNode, element);\n this.outletElement.appendChild(element);\n this._attachedPortal = portal;\n super.setDisposeFn(() => {\n // We can't use `replaceWith` here because IE doesn't support it.\n if (anchorNode.parentNode) {\n anchorNode.parentNode.replaceChild(element, anchorNode);\n }\n });\n };\n this._document = _document;\n }\n /**\n * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n * @param portal Portal to be attached\n * @returns Reference to the created component.\n */\n attachComponentPortal(portal) {\n const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !resolver) {\n throw Error('Cannot attach component portal to outlet without a ComponentFactoryResolver.');\n }\n const componentFactory = resolver.resolveComponentFactory(portal.component);\n let componentRef;\n // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n // for the component (in terms of Angular's component tree, not rendering).\n // When the ViewContainerRef is missing, we use the factory to create the component directly\n // and then manually attach the view to the application.\n if (portal.viewContainerRef) {\n componentRef = portal.viewContainerRef.createComponent(componentFactory, portal.viewContainerRef.length, portal.injector || portal.viewContainerRef.injector, portal.projectableNodes || undefined);\n this.setDisposeFn(() => componentRef.destroy());\n } else {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !this._appRef) {\n throw Error('Cannot attach component portal to outlet without an ApplicationRef.');\n }\n componentRef = componentFactory.create(portal.injector || this._defaultInjector || Injector.NULL);\n this._appRef.attachView(componentRef.hostView);\n this.setDisposeFn(() => {\n // Verify that the ApplicationRef has registered views before trying to detach a host view.\n // This check also protects the `detachView` from being called on a destroyed ApplicationRef.\n if (this._appRef.viewCount > 0) {\n this._appRef.detachView(componentRef.hostView);\n }\n componentRef.destroy();\n });\n }\n // At this point the component has been instantiated, so we move it to the location in the DOM\n // where we want it to be rendered.\n this.outletElement.appendChild(this._getComponentRootNode(componentRef));\n this._attachedPortal = portal;\n return componentRef;\n }\n /**\n * Attaches a template portal to the DOM as an embedded view.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal(portal) {\n let viewContainer = portal.viewContainerRef;\n let viewRef = viewContainer.createEmbeddedView(portal.templateRef, portal.context, {\n injector: portal.injector\n });\n // The method `createEmbeddedView` will add the view as a child of the viewContainer.\n // But for the DomPortalOutlet the view can be added everywhere in the DOM\n // (e.g Overlay Container) To move the view to the specified host element. We just\n // re-append the existing root nodes.\n viewRef.rootNodes.forEach(rootNode => this.outletElement.appendChild(rootNode));\n // Note that we want to detect changes after the nodes have been moved so that\n // any directives inside the portal that are looking at the DOM inside a lifecycle\n // hook won't be invoked too early.\n viewRef.detectChanges();\n this.setDisposeFn(() => {\n let index = viewContainer.indexOf(viewRef);\n if (index !== -1) {\n viewContainer.remove(index);\n }\n });\n this._attachedPortal = portal;\n // TODO(jelbourn): Return locals from view.\n return viewRef;\n }\n /**\n * Clears out a portal from the DOM.\n */\n dispose() {\n super.dispose();\n this.outletElement.remove();\n }\n /** Gets the root HTMLElement for an instantiated component. */\n _getComponentRootNode(componentRef) {\n return componentRef.hostView.rootNodes[0];\n }\n}\n/**\n * @deprecated Use `DomPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass DomPortalHost extends DomPortalOutlet {}\n\n/**\n * Directive version of a `TemplatePortal`. Because the directive *is* a TemplatePortal,\n * the directive instance itself can be attached to a host, enabling declarative use of portals.\n */\nclass CdkPortal extends TemplatePortal {\n constructor(templateRef, viewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n static {\n this.ɵfac = function CdkPortal_Factory(t) {\n return new (t || CdkPortal)(i0.ɵɵdirectiveInject(i0.TemplateRef), i0.ɵɵdirectiveInject(i0.ViewContainerRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkPortal,\n selectors: [[\"\", \"cdkPortal\", \"\"]],\n exportAs: [\"cdkPortal\"],\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkPortal, [{\n type: Directive,\n args: [{\n selector: '[cdkPortal]',\n exportAs: 'cdkPortal'\n }]\n }], () => [{\n type: i0.TemplateRef\n }, {\n type: i0.ViewContainerRef\n }], null);\n})();\n/**\n * @deprecated Use `CdkPortal` instead.\n * @breaking-change 9.0.0\n */\nclass TemplatePortalDirective extends CdkPortal {\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵTemplatePortalDirective_BaseFactory;\n return function TemplatePortalDirective_Factory(t) {\n return (ɵTemplatePortalDirective_BaseFactory || (ɵTemplatePortalDirective_BaseFactory = i0.ɵɵgetInheritedFactory(TemplatePortalDirective)))(t || TemplatePortalDirective);\n };\n })();\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: TemplatePortalDirective,\n selectors: [[\"\", \"cdk-portal\", \"\"], [\"\", \"portal\", \"\"]],\n exportAs: [\"cdkPortal\"],\n features: [i0.ɵɵProvidersFeature([{\n provide: CdkPortal,\n useExisting: TemplatePortalDirective\n }]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(TemplatePortalDirective, [{\n type: Directive,\n args: [{\n selector: '[cdk-portal], [portal]',\n exportAs: 'cdkPortal',\n providers: [{\n provide: CdkPortal,\n useExisting: TemplatePortalDirective\n }]\n }]\n }], null, null);\n})();\n/**\n * Directive version of a PortalOutlet. Because the directive *is* a PortalOutlet, portals can be\n * directly attached to it, enabling declarative use.\n *\n * Usage:\n * ``\n */\nclass CdkPortalOutlet extends BasePortalOutlet {\n constructor(_componentFactoryResolver, _viewContainerRef,\n /**\n * @deprecated `_document` parameter to be made required.\n * @breaking-change 9.0.0\n */\n _document) {\n super();\n this._componentFactoryResolver = _componentFactoryResolver;\n this._viewContainerRef = _viewContainerRef;\n /** Whether the portal component is initialized. */\n this._isInitialized = false;\n /** Emits when a portal is attached to the outlet. */\n this.attached = new EventEmitter();\n /**\n * Attaches the given DomPortal to this PortalHost by moving all of the portal content into it.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = portal => {\n // @breaking-change 9.0.0 Remove check and error once the\n // `_document` constructor parameter is required.\n if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Cannot attach DOM portal without _document constructor parameter');\n }\n const element = portal.element;\n if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('DOM portal content must be attached to a parent node.');\n }\n // Anchor used to save the element's previous position so\n // that we can restore it when the portal is detached.\n const anchorNode = this._document.createComment('dom-portal');\n portal.setAttachedHost(this);\n element.parentNode.insertBefore(anchorNode, element);\n this._getRootNode().appendChild(element);\n this._attachedPortal = portal;\n super.setDisposeFn(() => {\n if (anchorNode.parentNode) {\n anchorNode.parentNode.replaceChild(element, anchorNode);\n }\n });\n };\n this._document = _document;\n }\n /** Portal associated with the Portal outlet. */\n get portal() {\n return this._attachedPortal;\n }\n set portal(portal) {\n // Ignore the cases where the `portal` is set to a falsy value before the lifecycle hooks have\n // run. This handles the cases where the user might do something like `
`\n // and attach a portal programmatically in the parent component. When Angular does the first CD\n // round, it will fire the setter with empty string, causing the user's content to be cleared.\n if (this.hasAttached() && !portal && !this._isInitialized) {\n return;\n }\n if (this.hasAttached()) {\n super.detach();\n }\n if (portal) {\n super.attach(portal);\n }\n this._attachedPortal = portal || null;\n }\n /** Component or view reference that is attached to the portal. */\n get attachedRef() {\n return this._attachedRef;\n }\n ngOnInit() {\n this._isInitialized = true;\n }\n ngOnDestroy() {\n super.dispose();\n this._attachedRef = this._attachedPortal = null;\n }\n /**\n * Attach the given ComponentPortal to this PortalOutlet using the ComponentFactoryResolver.\n *\n * @param portal Portal to be attached to the portal outlet.\n * @returns Reference to the created component.\n */\n attachComponentPortal(portal) {\n portal.setAttachedHost(this);\n // If the portal specifies an origin, use that as the logical location of the component\n // in the application tree. Otherwise use the location of this PortalOutlet.\n const viewContainerRef = portal.viewContainerRef != null ? portal.viewContainerRef : this._viewContainerRef;\n const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n const componentFactory = resolver.resolveComponentFactory(portal.component);\n const ref = viewContainerRef.createComponent(componentFactory, viewContainerRef.length, portal.injector || viewContainerRef.injector, portal.projectableNodes || undefined);\n // If we're using a view container that's different from the injected one (e.g. when the portal\n // specifies its own) we need to move the component into the outlet, otherwise it'll be rendered\n // inside of the alternate view container.\n if (viewContainerRef !== this._viewContainerRef) {\n this._getRootNode().appendChild(ref.hostView.rootNodes[0]);\n }\n super.setDisposeFn(() => ref.destroy());\n this._attachedPortal = portal;\n this._attachedRef = ref;\n this.attached.emit(ref);\n return ref;\n }\n /**\n * Attach the given TemplatePortal to this PortalHost as an embedded View.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal(portal) {\n portal.setAttachedHost(this);\n const viewRef = this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context, {\n injector: portal.injector\n });\n super.setDisposeFn(() => this._viewContainerRef.clear());\n this._attachedPortal = portal;\n this._attachedRef = viewRef;\n this.attached.emit(viewRef);\n return viewRef;\n }\n /** Gets the root node of the portal outlet. */\n _getRootNode() {\n const nativeElement = this._viewContainerRef.element.nativeElement;\n // The directive could be set on a template which will result in a comment\n // node being the root. Use the comment's parent node if that is the case.\n return nativeElement.nodeType === nativeElement.ELEMENT_NODE ? nativeElement : nativeElement.parentNode;\n }\n static {\n this.ɵfac = function CdkPortalOutlet_Factory(t) {\n return new (t || CdkPortalOutlet)(i0.ɵɵdirectiveInject(i0.ComponentFactoryResolver), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(DOCUMENT));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkPortalOutlet,\n selectors: [[\"\", \"cdkPortalOutlet\", \"\"]],\n inputs: {\n portal: [\"cdkPortalOutlet\", \"portal\"]\n },\n outputs: {\n attached: \"attached\"\n },\n exportAs: [\"cdkPortalOutlet\"],\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkPortalOutlet, [{\n type: Directive,\n args: [{\n selector: '[cdkPortalOutlet]',\n exportAs: 'cdkPortalOutlet',\n inputs: ['portal: cdkPortalOutlet']\n }]\n }], () => [{\n type: i0.ComponentFactoryResolver\n }, {\n type: i0.ViewContainerRef\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }], {\n attached: [{\n type: Output\n }]\n });\n})();\n/**\n * @deprecated Use `CdkPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass PortalHostDirective extends CdkPortalOutlet {\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵPortalHostDirective_BaseFactory;\n return function PortalHostDirective_Factory(t) {\n return (ɵPortalHostDirective_BaseFactory || (ɵPortalHostDirective_BaseFactory = i0.ɵɵgetInheritedFactory(PortalHostDirective)))(t || PortalHostDirective);\n };\n })();\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: PortalHostDirective,\n selectors: [[\"\", \"cdkPortalHost\", \"\"], [\"\", \"portalHost\", \"\"]],\n inputs: {\n portal: [\"cdkPortalHost\", \"portal\"]\n },\n exportAs: [\"cdkPortalHost\"],\n features: [i0.ɵɵProvidersFeature([{\n provide: CdkPortalOutlet,\n useExisting: PortalHostDirective\n }]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(PortalHostDirective, [{\n type: Directive,\n args: [{\n selector: '[cdkPortalHost], [portalHost]',\n exportAs: 'cdkPortalHost',\n inputs: ['portal: cdkPortalHost'],\n providers: [{\n provide: CdkPortalOutlet,\n useExisting: PortalHostDirective\n }]\n }]\n }], null, null);\n})();\nclass PortalModule {\n static {\n this.ɵfac = function PortalModule_Factory(t) {\n return new (t || PortalModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: PortalModule,\n declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],\n exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(PortalModule, [{\n type: NgModule,\n args: [{\n exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],\n declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective]\n }]\n }], null, null);\n})();\n\n/**\n * Custom injector to be used when providing custom\n * injection tokens to components inside a portal.\n * @docs-private\n * @deprecated Use `Injector.create` instead.\n * @breaking-change 11.0.0\n */\nclass PortalInjector {\n constructor(_parentInjector, _customTokens) {\n this._parentInjector = _parentInjector;\n this._customTokens = _customTokens;\n }\n get(token, notFoundValue) {\n const value = this._customTokens.get(token);\n if (typeof value !== 'undefined') {\n return value;\n }\n return this._parentInjector.get(token, notFoundValue);\n }\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BasePortalHost, BasePortalOutlet, CdkPortal, CdkPortalOutlet, ComponentPortal, DomPortal, DomPortalHost, DomPortalOutlet, Portal, PortalHostDirective, PortalInjector, PortalModule, TemplatePortal, TemplatePortalDirective };\n", "import * as i1 from '@angular/cdk/scrolling';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nexport { CdkScrollable, ScrollDispatcher, ViewportRuler } from '@angular/cdk/scrolling';\nimport * as i6 from '@angular/common';\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, Optional, ElementRef, ApplicationRef, ANIMATION_MODULE_TYPE, InjectionToken, inject, Directive, EventEmitter, booleanAttribute, Input, Output, NgModule } from '@angular/core';\nimport { coerceCssPixelValue, coerceArray } from '@angular/cdk/coercion';\nimport * as i1$1 from '@angular/cdk/platform';\nimport { supportsScrollBehavior, _getEventTarget, _isTestEnvironment } from '@angular/cdk/platform';\nimport { filter, take, takeUntil, takeWhile } from 'rxjs/operators';\nimport * as i5 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { DomPortalOutlet, TemplatePortal, PortalModule } from '@angular/cdk/portal';\nimport { Subject, Subscription, merge } from 'rxjs';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\nconst scrollBehaviorSupported = supportsScrollBehavior();\n/**\n * Strategy that will prevent the user from scrolling while the overlay is visible.\n */\nclass BlockScrollStrategy {\n constructor(_viewportRuler, document) {\n this._viewportRuler = _viewportRuler;\n this._previousHTMLStyles = {\n top: '',\n left: ''\n };\n this._isEnabled = false;\n this._document = document;\n }\n /** Attaches this scroll strategy to an overlay. */\n attach() {}\n /** Blocks page-level scroll while the attached overlay is open. */\n enable() {\n if (this._canBeEnabled()) {\n const root = this._document.documentElement;\n this._previousScrollPosition = this._viewportRuler.getViewportScrollPosition();\n // Cache the previous inline styles in case the user had set them.\n this._previousHTMLStyles.left = root.style.left || '';\n this._previousHTMLStyles.top = root.style.top || '';\n // Note: we're using the `html` node, instead of the `body`, because the `body` may\n // have the user agent margin, whereas the `html` is guaranteed not to have one.\n root.style.left = coerceCssPixelValue(-this._previousScrollPosition.left);\n root.style.top = coerceCssPixelValue(-this._previousScrollPosition.top);\n root.classList.add('cdk-global-scrollblock');\n this._isEnabled = true;\n }\n }\n /** Unblocks page-level scroll while the attached overlay is open. */\n disable() {\n if (this._isEnabled) {\n const html = this._document.documentElement;\n const body = this._document.body;\n const htmlStyle = html.style;\n const bodyStyle = body.style;\n const previousHtmlScrollBehavior = htmlStyle.scrollBehavior || '';\n const previousBodyScrollBehavior = bodyStyle.scrollBehavior || '';\n this._isEnabled = false;\n htmlStyle.left = this._previousHTMLStyles.left;\n htmlStyle.top = this._previousHTMLStyles.top;\n html.classList.remove('cdk-global-scrollblock');\n // Disable user-defined smooth scrolling temporarily while we restore the scroll position.\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior\n // Note that we don't mutate the property if the browser doesn't support `scroll-behavior`,\n // because it can throw off feature detections in `supportsScrollBehavior` which\n // checks for `'scrollBehavior' in documentElement.style`.\n if (scrollBehaviorSupported) {\n htmlStyle.scrollBehavior = bodyStyle.scrollBehavior = 'auto';\n }\n window.scroll(this._previousScrollPosition.left, this._previousScrollPosition.top);\n if (scrollBehaviorSupported) {\n htmlStyle.scrollBehavior = previousHtmlScrollBehavior;\n bodyStyle.scrollBehavior = previousBodyScrollBehavior;\n }\n }\n }\n _canBeEnabled() {\n // Since the scroll strategies can't be singletons, we have to use a global CSS class\n // (`cdk-global-scrollblock`) to make sure that we don't try to disable global\n // scrolling multiple times.\n const html = this._document.documentElement;\n if (html.classList.contains('cdk-global-scrollblock') || this._isEnabled) {\n return false;\n }\n const body = this._document.body;\n const viewport = this._viewportRuler.getViewportSize();\n return body.scrollHeight > viewport.height || body.scrollWidth > viewport.width;\n }\n}\n\n/**\n * Returns an error to be thrown when attempting to attach an already-attached scroll strategy.\n */\nfunction getMatScrollStrategyAlreadyAttachedError() {\n return Error(`Scroll strategy has already been attached.`);\n}\n\n/**\n * Strategy that will close the overlay as soon as the user starts scrolling.\n */\nclass CloseScrollStrategy {\n constructor(_scrollDispatcher, _ngZone, _viewportRuler, _config) {\n this._scrollDispatcher = _scrollDispatcher;\n this._ngZone = _ngZone;\n this._viewportRuler = _viewportRuler;\n this._config = _config;\n this._scrollSubscription = null;\n /** Detaches the overlay ref and disables the scroll strategy. */\n this._detach = () => {\n this.disable();\n if (this._overlayRef.hasAttached()) {\n this._ngZone.run(() => this._overlayRef.detach());\n }\n };\n }\n /** Attaches this scroll strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatScrollStrategyAlreadyAttachedError();\n }\n this._overlayRef = overlayRef;\n }\n /** Enables the closing of the attached overlay on scroll. */\n enable() {\n if (this._scrollSubscription) {\n return;\n }\n const stream = this._scrollDispatcher.scrolled(0).pipe(filter(scrollable => {\n return !scrollable || !this._overlayRef.overlayElement.contains(scrollable.getElementRef().nativeElement);\n }));\n if (this._config && this._config.threshold && this._config.threshold > 1) {\n this._initialScrollPosition = this._viewportRuler.getViewportScrollPosition().top;\n this._scrollSubscription = stream.subscribe(() => {\n const scrollPosition = this._viewportRuler.getViewportScrollPosition().top;\n if (Math.abs(scrollPosition - this._initialScrollPosition) > this._config.threshold) {\n this._detach();\n } else {\n this._overlayRef.updatePosition();\n }\n });\n } else {\n this._scrollSubscription = stream.subscribe(this._detach);\n }\n }\n /** Disables the closing the attached overlay on scroll. */\n disable() {\n if (this._scrollSubscription) {\n this._scrollSubscription.unsubscribe();\n this._scrollSubscription = null;\n }\n }\n detach() {\n this.disable();\n this._overlayRef = null;\n }\n}\n\n/** Scroll strategy that doesn't do anything. */\nclass NoopScrollStrategy {\n /** Does nothing, as this scroll strategy is a no-op. */\n enable() {}\n /** Does nothing, as this scroll strategy is a no-op. */\n disable() {}\n /** Does nothing, as this scroll strategy is a no-op. */\n attach() {}\n}\n\n/**\n * Gets whether an element is scrolled outside of view by any of its parent scrolling containers.\n * @param element Dimensions of the element (from getBoundingClientRect)\n * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @returns Whether the element is scrolled out of view\n * @docs-private\n */\nfunction isElementScrolledOutsideView(element, scrollContainers) {\n return scrollContainers.some(containerBounds => {\n const outsideAbove = element.bottom < containerBounds.top;\n const outsideBelow = element.top > containerBounds.bottom;\n const outsideLeft = element.right < containerBounds.left;\n const outsideRight = element.left > containerBounds.right;\n return outsideAbove || outsideBelow || outsideLeft || outsideRight;\n });\n}\n/**\n * Gets whether an element is clipped by any of its scrolling containers.\n * @param element Dimensions of the element (from getBoundingClientRect)\n * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @returns Whether the element is clipped\n * @docs-private\n */\nfunction isElementClippedByScrolling(element, scrollContainers) {\n return scrollContainers.some(scrollContainerRect => {\n const clippedAbove = element.top < scrollContainerRect.top;\n const clippedBelow = element.bottom > scrollContainerRect.bottom;\n const clippedLeft = element.left < scrollContainerRect.left;\n const clippedRight = element.right > scrollContainerRect.right;\n return clippedAbove || clippedBelow || clippedLeft || clippedRight;\n });\n}\n\n/**\n * Strategy that will update the element position as the user is scrolling.\n */\nclass RepositionScrollStrategy {\n constructor(_scrollDispatcher, _viewportRuler, _ngZone, _config) {\n this._scrollDispatcher = _scrollDispatcher;\n this._viewportRuler = _viewportRuler;\n this._ngZone = _ngZone;\n this._config = _config;\n this._scrollSubscription = null;\n }\n /** Attaches this scroll strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatScrollStrategyAlreadyAttachedError();\n }\n this._overlayRef = overlayRef;\n }\n /** Enables repositioning of the attached overlay on scroll. */\n enable() {\n if (!this._scrollSubscription) {\n const throttle = this._config ? this._config.scrollThrottle : 0;\n this._scrollSubscription = this._scrollDispatcher.scrolled(throttle).subscribe(() => {\n this._overlayRef.updatePosition();\n // TODO(crisbeto): make `close` on by default once all components can handle it.\n if (this._config && this._config.autoClose) {\n const overlayRect = this._overlayRef.overlayElement.getBoundingClientRect();\n const {\n width,\n height\n } = this._viewportRuler.getViewportSize();\n // TODO(crisbeto): include all ancestor scroll containers here once\n // we have a way of exposing the trigger element to the scroll strategy.\n const parentRects = [{\n width,\n height,\n bottom: height,\n right: width,\n top: 0,\n left: 0\n }];\n if (isElementScrolledOutsideView(overlayRect, parentRects)) {\n this.disable();\n this._ngZone.run(() => this._overlayRef.detach());\n }\n }\n });\n }\n }\n /** Disables repositioning of the attached overlay on scroll. */\n disable() {\n if (this._scrollSubscription) {\n this._scrollSubscription.unsubscribe();\n this._scrollSubscription = null;\n }\n }\n detach() {\n this.disable();\n this._overlayRef = null;\n }\n}\n\n/**\n * Options for how an overlay will handle scrolling.\n *\n * Users can provide a custom value for `ScrollStrategyOptions` to replace the default\n * behaviors. This class primarily acts as a factory for ScrollStrategy instances.\n */\nclass ScrollStrategyOptions {\n constructor(_scrollDispatcher, _viewportRuler, _ngZone, document) {\n this._scrollDispatcher = _scrollDispatcher;\n this._viewportRuler = _viewportRuler;\n this._ngZone = _ngZone;\n /** Do nothing on scroll. */\n this.noop = () => new NoopScrollStrategy();\n /**\n * Close the overlay as soon as the user scrolls.\n * @param config Configuration to be used inside the scroll strategy.\n */\n this.close = config => new CloseScrollStrategy(this._scrollDispatcher, this._ngZone, this._viewportRuler, config);\n /** Block scrolling. */\n this.block = () => new BlockScrollStrategy(this._viewportRuler, this._document);\n /**\n * Update the overlay's position on scroll.\n * @param config Configuration to be used inside the scroll strategy.\n * Allows debouncing the reposition calls.\n */\n this.reposition = config => new RepositionScrollStrategy(this._scrollDispatcher, this._viewportRuler, this._ngZone, config);\n this._document = document;\n }\n static {\n this.ɵfac = function ScrollStrategyOptions_Factory(t) {\n return new (t || ScrollStrategyOptions)(i0.ɵɵinject(i1.ScrollDispatcher), i0.ɵɵinject(i1.ViewportRuler), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(DOCUMENT));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ScrollStrategyOptions,\n factory: ScrollStrategyOptions.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ScrollStrategyOptions, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: i1.ScrollDispatcher\n }, {\n type: i1.ViewportRuler\n }, {\n type: i0.NgZone\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }], null);\n})();\n\n/** Initial configuration used when creating an overlay. */\nclass OverlayConfig {\n constructor(config) {\n /** Strategy to be used when handling scroll events while the overlay is open. */\n this.scrollStrategy = new NoopScrollStrategy();\n /** Custom class to add to the overlay pane. */\n this.panelClass = '';\n /** Whether the overlay has a backdrop. */\n this.hasBackdrop = false;\n /** Custom class to add to the backdrop */\n this.backdropClass = 'cdk-overlay-dark-backdrop';\n /**\n * Whether the overlay should be disposed of when the user goes backwards/forwards in history.\n * Note that this usually doesn't include clicking on links (unless the user is using\n * the `HashLocationStrategy`).\n */\n this.disposeOnNavigation = false;\n if (config) {\n // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,\n // loses the array generic type in the `for of`. But we *also* have to use `Array` because\n // typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`\n const configKeys = Object.keys(config);\n for (const key of configKeys) {\n if (config[key] !== undefined) {\n // TypeScript, as of version 3.5, sees the left-hand-side of this expression\n // as \"I don't know *which* key this is, so the only valid value is the intersection\n // of all the possible values.\" In this case, that happens to be `undefined`. TypeScript\n // is not smart enough to see that the right-hand-side is actually an access of the same\n // exact type with the same exact key, meaning that the value type must be identical.\n // So we use `any` to work around this.\n this[key] = config[key];\n }\n }\n }\n }\n}\n\n/** The points of the origin element and the overlay element to connect. */\nclass ConnectionPositionPair {\n constructor(origin, overlay, /** Offset along the X axis. */\n offsetX, /** Offset along the Y axis. */\n offsetY, /** Class(es) to be applied to the panel while this position is active. */\n panelClass) {\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n this.panelClass = panelClass;\n this.originX = origin.originX;\n this.originY = origin.originY;\n this.overlayX = overlay.overlayX;\n this.overlayY = overlay.overlayY;\n }\n}\n/**\n * Set of properties regarding the position of the origin and overlay relative to the viewport\n * with respect to the containing Scrollable elements.\n *\n * The overlay and origin are clipped if any part of their bounding client rectangle exceeds the\n * bounds of any one of the strategy's Scrollable's bounding client rectangle.\n *\n * The overlay and origin are outside view if there is no overlap between their bounding client\n * rectangle and any one of the strategy's Scrollable's bounding client rectangle.\n *\n * ----------- -----------\n * | outside | | clipped |\n * | view | --------------------------\n * | | | | | |\n * ---------- | ----------- |\n * -------------------------- | |\n * | | | Scrollable |\n * | | | |\n * | | --------------------------\n * | Scrollable |\n * | |\n * --------------------------\n *\n * @docs-private\n */\nclass ScrollingVisibility {}\n/** The change event emitted by the strategy when a fallback position is used. */\nclass ConnectedOverlayPositionChange {\n constructor( /** The position used as a result of this change. */\n connectionPair, /** @docs-private */\n scrollableViewProperties) {\n this.connectionPair = connectionPair;\n this.scrollableViewProperties = scrollableViewProperties;\n }\n}\n/**\n * Validates whether a vertical position property matches the expected values.\n * @param property Name of the property being validated.\n * @param value Value of the property being validated.\n * @docs-private\n */\nfunction validateVerticalPosition(property, value) {\n if (value !== 'top' && value !== 'bottom' && value !== 'center') {\n throw Error(`ConnectedPosition: Invalid ${property} \"${value}\". ` + `Expected \"top\", \"bottom\" or \"center\".`);\n }\n}\n/**\n * Validates whether a horizontal position property matches the expected values.\n * @param property Name of the property being validated.\n * @param value Value of the property being validated.\n * @docs-private\n */\nfunction validateHorizontalPosition(property, value) {\n if (value !== 'start' && value !== 'end' && value !== 'center') {\n throw Error(`ConnectedPosition: Invalid ${property} \"${value}\". ` + `Expected \"start\", \"end\" or \"center\".`);\n }\n}\n\n/**\n * Service for dispatching events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass BaseOverlayDispatcher {\n constructor(document) {\n /** Currently attached overlays in the order they were attached. */\n this._attachedOverlays = [];\n this._document = document;\n }\n ngOnDestroy() {\n this.detach();\n }\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n // Ensure that we don't get the same overlay multiple times.\n this.remove(overlayRef);\n this._attachedOverlays.push(overlayRef);\n }\n /** Remove an overlay from the list of attached overlay refs. */\n remove(overlayRef) {\n const index = this._attachedOverlays.indexOf(overlayRef);\n if (index > -1) {\n this._attachedOverlays.splice(index, 1);\n }\n // Remove the global listener once there are no more overlays.\n if (this._attachedOverlays.length === 0) {\n this.detach();\n }\n }\n static {\n this.ɵfac = function BaseOverlayDispatcher_Factory(t) {\n return new (t || BaseOverlayDispatcher)(i0.ɵɵinject(DOCUMENT));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: BaseOverlayDispatcher,\n factory: BaseOverlayDispatcher.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(BaseOverlayDispatcher, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }], null);\n})();\n\n/**\n * Service for dispatching keyboard events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass OverlayKeyboardDispatcher extends BaseOverlayDispatcher {\n constructor(document, /** @breaking-change 14.0.0 _ngZone will be required. */\n _ngZone) {\n super(document);\n this._ngZone = _ngZone;\n /** Keyboard event listener that will be attached to the body. */\n this._keydownListener = event => {\n const overlays = this._attachedOverlays;\n for (let i = overlays.length - 1; i > -1; i--) {\n // Dispatch the keydown event to the top overlay which has subscribers to its keydown events.\n // We want to target the most recent overlay, rather than trying to match where the event came\n // from, because some components might open an overlay, but keep focus on a trigger element\n // (e.g. for select and autocomplete). We skip overlays without keydown event subscriptions,\n // because we don't want overlays that don't handle keyboard events to block the ones below\n // them that do.\n if (overlays[i]._keydownEvents.observers.length > 0) {\n const keydownEvents = overlays[i]._keydownEvents;\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.run(() => keydownEvents.next(event));\n } else {\n keydownEvents.next(event);\n }\n break;\n }\n }\n };\n }\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n super.add(overlayRef);\n // Lazily start dispatcher once first overlay is added\n if (!this._isAttached) {\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.runOutsideAngular(() => this._document.body.addEventListener('keydown', this._keydownListener));\n } else {\n this._document.body.addEventListener('keydown', this._keydownListener);\n }\n this._isAttached = true;\n }\n }\n /** Detaches the global keyboard event listener. */\n detach() {\n if (this._isAttached) {\n this._document.body.removeEventListener('keydown', this._keydownListener);\n this._isAttached = false;\n }\n }\n static {\n this.ɵfac = function OverlayKeyboardDispatcher_Factory(t) {\n return new (t || OverlayKeyboardDispatcher)(i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i0.NgZone, 8));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: OverlayKeyboardDispatcher,\n factory: OverlayKeyboardDispatcher.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(OverlayKeyboardDispatcher, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }, {\n type: i0.NgZone,\n decorators: [{\n type: Optional\n }]\n }], null);\n})();\n\n/**\n * Service for dispatching mouse click events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {\n constructor(document, _platform, /** @breaking-change 14.0.0 _ngZone will be required. */\n _ngZone) {\n super(document);\n this._platform = _platform;\n this._ngZone = _ngZone;\n this._cursorStyleIsSet = false;\n /** Store pointerdown event target to track origin of click. */\n this._pointerDownListener = event => {\n this._pointerDownEventTarget = _getEventTarget(event);\n };\n /** Click event listener that will be attached to the body propagate phase. */\n this._clickListener = event => {\n const target = _getEventTarget(event);\n // In case of a click event, we want to check the origin of the click\n // (e.g. in case where a user starts a click inside the overlay and\n // releases the click outside of it).\n // This is done by using the event target of the preceding pointerdown event.\n // Every click event caused by a pointer device has a preceding pointerdown\n // event, unless the click was programmatically triggered (e.g. in a unit test).\n const origin = event.type === 'click' && this._pointerDownEventTarget ? this._pointerDownEventTarget : target;\n // Reset the stored pointerdown event target, to avoid having it interfere\n // in subsequent events.\n this._pointerDownEventTarget = null;\n // We copy the array because the original may be modified asynchronously if the\n // outsidePointerEvents listener decides to detach overlays resulting in index errors inside\n // the for loop.\n const overlays = this._attachedOverlays.slice();\n // Dispatch the mouse event to the top overlay which has subscribers to its mouse events.\n // We want to target all overlays for which the click could be considered as outside click.\n // As soon as we reach an overlay for which the click is not outside click we break off\n // the loop.\n for (let i = overlays.length - 1; i > -1; i--) {\n const overlayRef = overlays[i];\n if (overlayRef._outsidePointerEvents.observers.length < 1 || !overlayRef.hasAttached()) {\n continue;\n }\n // If it's a click inside the overlay, just break - we should do nothing\n // If it's an outside click (both origin and target of the click) dispatch the mouse event,\n // and proceed with the next overlay\n if (overlayRef.overlayElement.contains(target) || overlayRef.overlayElement.contains(origin)) {\n break;\n }\n const outsidePointerEvents = overlayRef._outsidePointerEvents;\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.run(() => outsidePointerEvents.next(event));\n } else {\n outsidePointerEvents.next(event);\n }\n }\n };\n }\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n super.add(overlayRef);\n // Safari on iOS does not generate click events for non-interactive\n // elements. However, we want to receive a click for any element outside\n // the overlay. We can force a \"clickable\" state by setting\n // `cursor: pointer` on the document body. See:\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event#Safari_Mobile\n // https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html\n if (!this._isAttached) {\n const body = this._document.body;\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.runOutsideAngular(() => this._addEventListeners(body));\n } else {\n this._addEventListeners(body);\n }\n // click event is not fired on iOS. To make element \"clickable\" we are\n // setting the cursor to pointer\n if (this._platform.IOS && !this._cursorStyleIsSet) {\n this._cursorOriginalValue = body.style.cursor;\n body.style.cursor = 'pointer';\n this._cursorStyleIsSet = true;\n }\n this._isAttached = true;\n }\n }\n /** Detaches the global keyboard event listener. */\n detach() {\n if (this._isAttached) {\n const body = this._document.body;\n body.removeEventListener('pointerdown', this._pointerDownListener, true);\n body.removeEventListener('click', this._clickListener, true);\n body.removeEventListener('auxclick', this._clickListener, true);\n body.removeEventListener('contextmenu', this._clickListener, true);\n if (this._platform.IOS && this._cursorStyleIsSet) {\n body.style.cursor = this._cursorOriginalValue;\n this._cursorStyleIsSet = false;\n }\n this._isAttached = false;\n }\n }\n _addEventListeners(body) {\n body.addEventListener('pointerdown', this._pointerDownListener, true);\n body.addEventListener('click', this._clickListener, true);\n body.addEventListener('auxclick', this._clickListener, true);\n body.addEventListener('contextmenu', this._clickListener, true);\n }\n static {\n this.ɵfac = function OverlayOutsideClickDispatcher_Factory(t) {\n return new (t || OverlayOutsideClickDispatcher)(i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i1$1.Platform), i0.ɵɵinject(i0.NgZone, 8));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: OverlayOutsideClickDispatcher,\n factory: OverlayOutsideClickDispatcher.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(OverlayOutsideClickDispatcher, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }, {\n type: i1$1.Platform\n }, {\n type: i0.NgZone,\n decorators: [{\n type: Optional\n }]\n }], null);\n})();\n\n/** Container inside which all overlays will render. */\nclass OverlayContainer {\n constructor(document, _platform) {\n this._platform = _platform;\n this._document = document;\n }\n ngOnDestroy() {\n this._containerElement?.remove();\n }\n /**\n * This method returns the overlay container element. It will lazily\n * create the element the first time it is called to facilitate using\n * the container in non-browser environments.\n * @returns the container element\n */\n getContainerElement() {\n if (!this._containerElement) {\n this._createContainer();\n }\n return this._containerElement;\n }\n /**\n * Create the overlay container element, which is simply a div\n * with the 'cdk-overlay-container' class on the document body.\n */\n _createContainer() {\n const containerClass = 'cdk-overlay-container';\n // TODO(crisbeto): remove the testing check once we have an overlay testing\n // module or Angular starts tearing down the testing `NgModule`. See:\n // https://github.com/angular/angular/issues/18831\n if (this._platform.isBrowser || _isTestEnvironment()) {\n const oppositePlatformContainers = this._document.querySelectorAll(`.${containerClass}[platform=\"server\"], ` + `.${containerClass}[platform=\"test\"]`);\n // Remove any old containers from the opposite platform.\n // This can happen when transitioning from the server to the client.\n for (let i = 0; i < oppositePlatformContainers.length; i++) {\n oppositePlatformContainers[i].remove();\n }\n }\n const container = this._document.createElement('div');\n container.classList.add(containerClass);\n // A long time ago we kept adding new overlay containers whenever a new app was instantiated,\n // but at some point we added logic which clears the duplicate ones in order to avoid leaks.\n // The new logic was a little too aggressive since it was breaking some legitimate use cases.\n // To mitigate the problem we made it so that only containers from a different platform are\n // cleared, but the side-effect was that people started depending on the overly-aggressive\n // logic to clean up their tests for them. Until we can introduce an overlay-specific testing\n // module which does the cleanup, we try to detect that we're in a test environment and we\n // always clear the container. See #17006.\n // TODO(crisbeto): remove the test environment check once we have an overlay testing module.\n if (_isTestEnvironment()) {\n container.setAttribute('platform', 'test');\n } else if (!this._platform.isBrowser) {\n container.setAttribute('platform', 'server');\n }\n this._document.body.appendChild(container);\n this._containerElement = container;\n }\n static {\n this.ɵfac = function OverlayContainer_Factory(t) {\n return new (t || OverlayContainer)(i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i1$1.Platform));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: OverlayContainer,\n factory: OverlayContainer.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(OverlayContainer, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }, {\n type: i1$1.Platform\n }], null);\n})();\n\n/**\n * Reference to an overlay that has been created with the Overlay service.\n * Used to manipulate or dispose of said overlay.\n */\nclass OverlayRef {\n constructor(_portalOutlet, _host, _pane, _config, _ngZone, _keyboardDispatcher, _document, _location, _outsideClickDispatcher, _animationsDisabled = false) {\n this._portalOutlet = _portalOutlet;\n this._host = _host;\n this._pane = _pane;\n this._config = _config;\n this._ngZone = _ngZone;\n this._keyboardDispatcher = _keyboardDispatcher;\n this._document = _document;\n this._location = _location;\n this._outsideClickDispatcher = _outsideClickDispatcher;\n this._animationsDisabled = _animationsDisabled;\n this._backdropElement = null;\n this._backdropClick = new Subject();\n this._attachments = new Subject();\n this._detachments = new Subject();\n this._locationChanges = Subscription.EMPTY;\n this._backdropClickHandler = event => this._backdropClick.next(event);\n this._backdropTransitionendHandler = event => {\n this._disposeBackdrop(event.target);\n };\n /** Stream of keydown events dispatched to this overlay. */\n this._keydownEvents = new Subject();\n /** Stream of mouse outside events dispatched to this overlay. */\n this._outsidePointerEvents = new Subject();\n if (_config.scrollStrategy) {\n this._scrollStrategy = _config.scrollStrategy;\n this._scrollStrategy.attach(this);\n }\n this._positionStrategy = _config.positionStrategy;\n }\n /** The overlay's HTML element */\n get overlayElement() {\n return this._pane;\n }\n /** The overlay's backdrop HTML element. */\n get backdropElement() {\n return this._backdropElement;\n }\n /**\n * Wrapper around the panel element. Can be used for advanced\n * positioning where a wrapper with specific styling is\n * required around the overlay pane.\n */\n get hostElement() {\n return this._host;\n }\n /**\n * Attaches content, given via a Portal, to the overlay.\n * If the overlay is configured to have a backdrop, it will be created.\n *\n * @param portal Portal instance to which to attach the overlay.\n * @returns The portal attachment result.\n */\n attach(portal) {\n // Insert the host into the DOM before attaching the portal, otherwise\n // the animations module will skip animations on repeat attachments.\n if (!this._host.parentElement && this._previousHostParent) {\n this._previousHostParent.appendChild(this._host);\n }\n const attachResult = this._portalOutlet.attach(portal);\n if (this._positionStrategy) {\n this._positionStrategy.attach(this);\n }\n this._updateStackingOrder();\n this._updateElementSize();\n this._updateElementDirection();\n if (this._scrollStrategy) {\n this._scrollStrategy.enable();\n }\n // Update the position once the zone is stable so that the overlay will be fully rendered\n // before attempting to position it, as the position may depend on the size of the rendered\n // content.\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n // The overlay could've been detached before the zone has stabilized.\n if (this.hasAttached()) {\n this.updatePosition();\n }\n });\n // Enable pointer events for the overlay pane element.\n this._togglePointerEvents(true);\n if (this._config.hasBackdrop) {\n this._attachBackdrop();\n }\n if (this._config.panelClass) {\n this._toggleClasses(this._pane, this._config.panelClass, true);\n }\n // Only emit the `attachments` event once all other setup is done.\n this._attachments.next();\n // Track this overlay by the keyboard dispatcher\n this._keyboardDispatcher.add(this);\n if (this._config.disposeOnNavigation) {\n this._locationChanges = this._location.subscribe(() => this.dispose());\n }\n this._outsideClickDispatcher.add(this);\n // TODO(crisbeto): the null check is here, because the portal outlet returns `any`.\n // We should be guaranteed for the result to be `ComponentRef | EmbeddedViewRef`, but\n // `instanceof EmbeddedViewRef` doesn't appear to work at the moment.\n if (typeof attachResult?.onDestroy === 'function') {\n // In most cases we control the portal and we know when it is being detached so that\n // we can finish the disposal process. The exception is if the user passes in a custom\n // `ViewContainerRef` that isn't destroyed through the overlay API. Note that we use\n // `detach` here instead of `dispose`, because we don't know if the user intends to\n // reattach the overlay at a later point. It also has the advantage of waiting for animations.\n attachResult.onDestroy(() => {\n if (this.hasAttached()) {\n // We have to delay the `detach` call, because detaching immediately prevents\n // other destroy hooks from running. This is likely a framework bug similar to\n // https://github.com/angular/angular/issues/46119\n this._ngZone.runOutsideAngular(() => Promise.resolve().then(() => this.detach()));\n }\n });\n }\n return attachResult;\n }\n /**\n * Detaches an overlay from a portal.\n * @returns The portal detachment result.\n */\n detach() {\n if (!this.hasAttached()) {\n return;\n }\n this.detachBackdrop();\n // When the overlay is detached, the pane element should disable pointer events.\n // This is necessary because otherwise the pane element will cover the page and disable\n // pointer events therefore. Depends on the position strategy and the applied pane boundaries.\n this._togglePointerEvents(false);\n if (this._positionStrategy && this._positionStrategy.detach) {\n this._positionStrategy.detach();\n }\n if (this._scrollStrategy) {\n this._scrollStrategy.disable();\n }\n const detachmentResult = this._portalOutlet.detach();\n // Only emit after everything is detached.\n this._detachments.next();\n // Remove this overlay from keyboard dispatcher tracking.\n this._keyboardDispatcher.remove(this);\n // Keeping the host element in the DOM can cause scroll jank, because it still gets\n // rendered, even though it's transparent and unclickable which is why we remove it.\n this._detachContentWhenStable();\n this._locationChanges.unsubscribe();\n this._outsideClickDispatcher.remove(this);\n return detachmentResult;\n }\n /** Cleans up the overlay from the DOM. */\n dispose() {\n const isAttached = this.hasAttached();\n if (this._positionStrategy) {\n this._positionStrategy.dispose();\n }\n this._disposeScrollStrategy();\n this._disposeBackdrop(this._backdropElement);\n this._locationChanges.unsubscribe();\n this._keyboardDispatcher.remove(this);\n this._portalOutlet.dispose();\n this._attachments.complete();\n this._backdropClick.complete();\n this._keydownEvents.complete();\n this._outsidePointerEvents.complete();\n this._outsideClickDispatcher.remove(this);\n this._host?.remove();\n this._previousHostParent = this._pane = this._host = null;\n if (isAttached) {\n this._detachments.next();\n }\n this._detachments.complete();\n }\n /** Whether the overlay has attached content. */\n hasAttached() {\n return this._portalOutlet.hasAttached();\n }\n /** Gets an observable that emits when the backdrop has been clicked. */\n backdropClick() {\n return this._backdropClick;\n }\n /** Gets an observable that emits when the overlay has been attached. */\n attachments() {\n return this._attachments;\n }\n /** Gets an observable that emits when the overlay has been detached. */\n detachments() {\n return this._detachments;\n }\n /** Gets an observable of keydown events targeted to this overlay. */\n keydownEvents() {\n return this._keydownEvents;\n }\n /** Gets an observable of pointer events targeted outside this overlay. */\n outsidePointerEvents() {\n return this._outsidePointerEvents;\n }\n /** Gets the current overlay configuration, which is immutable. */\n getConfig() {\n return this._config;\n }\n /** Updates the position of the overlay based on the position strategy. */\n updatePosition() {\n if (this._positionStrategy) {\n this._positionStrategy.apply();\n }\n }\n /** Switches to a new position strategy and updates the overlay position. */\n updatePositionStrategy(strategy) {\n if (strategy === this._positionStrategy) {\n return;\n }\n if (this._positionStrategy) {\n this._positionStrategy.dispose();\n }\n this._positionStrategy = strategy;\n if (this.hasAttached()) {\n strategy.attach(this);\n this.updatePosition();\n }\n }\n /** Update the size properties of the overlay. */\n updateSize(sizeConfig) {\n this._config = {\n ...this._config,\n ...sizeConfig\n };\n this._updateElementSize();\n }\n /** Sets the LTR/RTL direction for the overlay. */\n setDirection(dir) {\n this._config = {\n ...this._config,\n direction: dir\n };\n this._updateElementDirection();\n }\n /** Add a CSS class or an array of classes to the overlay pane. */\n addPanelClass(classes) {\n if (this._pane) {\n this._toggleClasses(this._pane, classes, true);\n }\n }\n /** Remove a CSS class or an array of classes from the overlay pane. */\n removePanelClass(classes) {\n if (this._pane) {\n this._toggleClasses(this._pane, classes, false);\n }\n }\n /**\n * Returns the layout direction of the overlay panel.\n */\n getDirection() {\n const direction = this._config.direction;\n if (!direction) {\n return 'ltr';\n }\n return typeof direction === 'string' ? direction : direction.value;\n }\n /** Switches to a new scroll strategy. */\n updateScrollStrategy(strategy) {\n if (strategy === this._scrollStrategy) {\n return;\n }\n this._disposeScrollStrategy();\n this._scrollStrategy = strategy;\n if (this.hasAttached()) {\n strategy.attach(this);\n strategy.enable();\n }\n }\n /** Updates the text direction of the overlay panel. */\n _updateElementDirection() {\n this._host.setAttribute('dir', this.getDirection());\n }\n /** Updates the size of the overlay element based on the overlay config. */\n _updateElementSize() {\n if (!this._pane) {\n return;\n }\n const style = this._pane.style;\n style.width = coerceCssPixelValue(this._config.width);\n style.height = coerceCssPixelValue(this._config.height);\n style.minWidth = coerceCssPixelValue(this._config.minWidth);\n style.minHeight = coerceCssPixelValue(this._config.minHeight);\n style.maxWidth = coerceCssPixelValue(this._config.maxWidth);\n style.maxHeight = coerceCssPixelValue(this._config.maxHeight);\n }\n /** Toggles the pointer events for the overlay pane element. */\n _togglePointerEvents(enablePointer) {\n this._pane.style.pointerEvents = enablePointer ? '' : 'none';\n }\n /** Attaches a backdrop for this overlay. */\n _attachBackdrop() {\n const showingClass = 'cdk-overlay-backdrop-showing';\n this._backdropElement = this._document.createElement('div');\n this._backdropElement.classList.add('cdk-overlay-backdrop');\n if (this._animationsDisabled) {\n this._backdropElement.classList.add('cdk-overlay-backdrop-noop-animation');\n }\n if (this._config.backdropClass) {\n this._toggleClasses(this._backdropElement, this._config.backdropClass, true);\n }\n // Insert the backdrop before the pane in the DOM order,\n // in order to handle stacked overlays properly.\n this._host.parentElement.insertBefore(this._backdropElement, this._host);\n // Forward backdrop clicks such that the consumer of the overlay can perform whatever\n // action desired when such a click occurs (usually closing the overlay).\n this._backdropElement.addEventListener('click', this._backdropClickHandler);\n // Add class to fade-in the backdrop after one frame.\n if (!this._animationsDisabled && typeof requestAnimationFrame !== 'undefined') {\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => {\n if (this._backdropElement) {\n this._backdropElement.classList.add(showingClass);\n }\n });\n });\n } else {\n this._backdropElement.classList.add(showingClass);\n }\n }\n /**\n * Updates the stacking order of the element, moving it to the top if necessary.\n * This is required in cases where one overlay was detached, while another one,\n * that should be behind it, was destroyed. The next time both of them are opened,\n * the stacking will be wrong, because the detached element's pane will still be\n * in its original DOM position.\n */\n _updateStackingOrder() {\n if (this._host.nextSibling) {\n this._host.parentNode.appendChild(this._host);\n }\n }\n /** Detaches the backdrop (if any) associated with the overlay. */\n detachBackdrop() {\n const backdropToDetach = this._backdropElement;\n if (!backdropToDetach) {\n return;\n }\n if (this._animationsDisabled) {\n this._disposeBackdrop(backdropToDetach);\n return;\n }\n backdropToDetach.classList.remove('cdk-overlay-backdrop-showing');\n this._ngZone.runOutsideAngular(() => {\n backdropToDetach.addEventListener('transitionend', this._backdropTransitionendHandler);\n });\n // If the backdrop doesn't have a transition, the `transitionend` event won't fire.\n // In this case we make it unclickable and we try to remove it after a delay.\n backdropToDetach.style.pointerEvents = 'none';\n // Run this outside the Angular zone because there's nothing that Angular cares about.\n // If it were to run inside the Angular zone, every test that used Overlay would have to be\n // either async or fakeAsync.\n this._backdropTimeout = this._ngZone.runOutsideAngular(() => setTimeout(() => {\n this._disposeBackdrop(backdropToDetach);\n }, 500));\n }\n /** Toggles a single CSS class or an array of classes on an element. */\n _toggleClasses(element, cssClasses, isAdd) {\n const classes = coerceArray(cssClasses || []).filter(c => !!c);\n if (classes.length) {\n isAdd ? element.classList.add(...classes) : element.classList.remove(...classes);\n }\n }\n /** Detaches the overlay content next time the zone stabilizes. */\n _detachContentWhenStable() {\n // Normally we wouldn't have to explicitly run this outside the `NgZone`, however\n // if the consumer is using `zone-patch-rxjs`, the `Subscription.unsubscribe` call will\n // be patched to run inside the zone, which will throw us into an infinite loop.\n this._ngZone.runOutsideAngular(() => {\n // We can't remove the host here immediately, because the overlay pane's content\n // might still be animating. This stream helps us avoid interrupting the animation\n // by waiting for the pane to become empty.\n const subscription = this._ngZone.onStable.pipe(takeUntil(merge(this._attachments, this._detachments))).subscribe(() => {\n // Needs a couple of checks for the pane and host, because\n // they may have been removed by the time the zone stabilizes.\n if (!this._pane || !this._host || this._pane.children.length === 0) {\n if (this._pane && this._config.panelClass) {\n this._toggleClasses(this._pane, this._config.panelClass, false);\n }\n if (this._host && this._host.parentElement) {\n this._previousHostParent = this._host.parentElement;\n this._host.remove();\n }\n subscription.unsubscribe();\n }\n });\n });\n }\n /** Disposes of a scroll strategy. */\n _disposeScrollStrategy() {\n const scrollStrategy = this._scrollStrategy;\n if (scrollStrategy) {\n scrollStrategy.disable();\n if (scrollStrategy.detach) {\n scrollStrategy.detach();\n }\n }\n }\n /** Removes a backdrop element from the DOM. */\n _disposeBackdrop(backdrop) {\n if (backdrop) {\n backdrop.removeEventListener('click', this._backdropClickHandler);\n backdrop.removeEventListener('transitionend', this._backdropTransitionendHandler);\n backdrop.remove();\n // It is possible that a new portal has been attached to this overlay since we started\n // removing the backdrop. If that is the case, only clear the backdrop reference if it\n // is still the same instance that we started to remove.\n if (this._backdropElement === backdrop) {\n this._backdropElement = null;\n }\n }\n if (this._backdropTimeout) {\n clearTimeout(this._backdropTimeout);\n this._backdropTimeout = undefined;\n }\n }\n}\n\n// TODO: refactor clipping detection into a separate thing (part of scrolling module)\n// TODO: doesn't handle both flexible width and height when it has to scroll along both axis.\n/** Class to be added to the overlay bounding box. */\nconst boundingBoxClass = 'cdk-overlay-connected-position-bounding-box';\n/** Regex used to split a string on its CSS units. */\nconst cssUnitPattern = /([A-Za-z%]+)$/;\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * implicit position relative some origin element. The relative position is defined in terms of\n * a point on the origin element that is connected to a point on the overlay element. For example,\n * a basic dropdown is connecting the bottom-left corner of the origin to the top-left corner\n * of the overlay.\n */\nclass FlexibleConnectedPositionStrategy {\n /** Ordered list of preferred positions, from most to least desirable. */\n get positions() {\n return this._preferredPositions;\n }\n constructor(connectedTo, _viewportRuler, _document, _platform, _overlayContainer) {\n this._viewportRuler = _viewportRuler;\n this._document = _document;\n this._platform = _platform;\n this._overlayContainer = _overlayContainer;\n /** Last size used for the bounding box. Used to avoid resizing the overlay after open. */\n this._lastBoundingBoxSize = {\n width: 0,\n height: 0\n };\n /** Whether the overlay was pushed in a previous positioning. */\n this._isPushed = false;\n /** Whether the overlay can be pushed on-screen on the initial open. */\n this._canPush = true;\n /** Whether the overlay can grow via flexible width/height after the initial open. */\n this._growAfterOpen = false;\n /** Whether the overlay's width and height can be constrained to fit within the viewport. */\n this._hasFlexibleDimensions = true;\n /** Whether the overlay position is locked. */\n this._positionLocked = false;\n /** Amount of space that must be maintained between the overlay and the edge of the viewport. */\n this._viewportMargin = 0;\n /** The Scrollable containers used to check scrollable view properties on position change. */\n this._scrollables = [];\n /** Ordered list of preferred positions, from most to least desirable. */\n this._preferredPositions = [];\n /** Subject that emits whenever the position changes. */\n this._positionChanges = new Subject();\n /** Subscription to viewport size changes. */\n this._resizeSubscription = Subscription.EMPTY;\n /** Default offset for the overlay along the x axis. */\n this._offsetX = 0;\n /** Default offset for the overlay along the y axis. */\n this._offsetY = 0;\n /** Keeps track of the CSS classes that the position strategy has applied on the overlay panel. */\n this._appliedPanelClasses = [];\n /** Observable sequence of position changes. */\n this.positionChanges = this._positionChanges;\n this.setOrigin(connectedTo);\n }\n /** Attaches this position strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef && overlayRef !== this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('This position strategy is already attached to an overlay');\n }\n this._validatePositions();\n overlayRef.hostElement.classList.add(boundingBoxClass);\n this._overlayRef = overlayRef;\n this._boundingBox = overlayRef.hostElement;\n this._pane = overlayRef.overlayElement;\n this._isDisposed = false;\n this._isInitialRender = true;\n this._lastPosition = null;\n this._resizeSubscription.unsubscribe();\n this._resizeSubscription = this._viewportRuler.change().subscribe(() => {\n // When the window is resized, we want to trigger the next reposition as if it\n // was an initial render, in order for the strategy to pick a new optimal position,\n // otherwise position locking will cause it to stay at the old one.\n this._isInitialRender = true;\n this.apply();\n });\n }\n /**\n * Updates the position of the overlay element, using whichever preferred position relative\n * to the origin best fits on-screen.\n *\n * The selection of a position goes as follows:\n * - If any positions fit completely within the viewport as-is,\n * choose the first position that does so.\n * - If flexible dimensions are enabled and at least one satisfies the given minimum width/height,\n * choose the position with the greatest available size modified by the positions' weight.\n * - If pushing is enabled, take the position that went off-screen the least and push it\n * on-screen.\n * - If none of the previous criteria were met, use the position that goes off-screen the least.\n * @docs-private\n */\n apply() {\n // We shouldn't do anything if the strategy was disposed or we're on the server.\n if (this._isDisposed || !this._platform.isBrowser) {\n return;\n }\n // If the position has been applied already (e.g. when the overlay was opened) and the\n // consumer opted into locking in the position, re-use the old position, in order to\n // prevent the overlay from jumping around.\n if (!this._isInitialRender && this._positionLocked && this._lastPosition) {\n this.reapplyLastPosition();\n return;\n }\n this._clearPanelClasses();\n this._resetOverlayElementStyles();\n this._resetBoundingBoxStyles();\n // We need the bounding rects for the origin, the overlay and the container to determine how to position\n // the overlay relative to the origin.\n // We use the viewport rect to determine whether a position would go off-screen.\n this._viewportRect = this._getNarrowedViewportRect();\n this._originRect = this._getOriginRect();\n this._overlayRect = this._pane.getBoundingClientRect();\n this._containerRect = this._overlayContainer.getContainerElement().getBoundingClientRect();\n const originRect = this._originRect;\n const overlayRect = this._overlayRect;\n const viewportRect = this._viewportRect;\n const containerRect = this._containerRect;\n // Positions where the overlay will fit with flexible dimensions.\n const flexibleFits = [];\n // Fallback if none of the preferred positions fit within the viewport.\n let fallback;\n // Go through each of the preferred positions looking for a good fit.\n // If a good fit is found, it will be applied immediately.\n for (let pos of this._preferredPositions) {\n // Get the exact (x, y) coordinate for the point-of-origin on the origin element.\n let originPoint = this._getOriginPoint(originRect, containerRect, pos);\n // From that point-of-origin, get the exact (x, y) coordinate for the top-left corner of the\n // overlay in this position. We use the top-left corner for calculations and later translate\n // this into an appropriate (top, left, bottom, right) style.\n let overlayPoint = this._getOverlayPoint(originPoint, overlayRect, pos);\n // Calculate how well the overlay would fit into the viewport with this point.\n let overlayFit = this._getOverlayFit(overlayPoint, overlayRect, viewportRect, pos);\n // If the overlay, without any further work, fits into the viewport, use this position.\n if (overlayFit.isCompletelyWithinViewport) {\n this._isPushed = false;\n this._applyPosition(pos, originPoint);\n return;\n }\n // If the overlay has flexible dimensions, we can use this position\n // so long as there's enough space for the minimum dimensions.\n if (this._canFitWithFlexibleDimensions(overlayFit, overlayPoint, viewportRect)) {\n // Save positions where the overlay will fit with flexible dimensions. We will use these\n // if none of the positions fit *without* flexible dimensions.\n flexibleFits.push({\n position: pos,\n origin: originPoint,\n overlayRect,\n boundingBoxRect: this._calculateBoundingBoxRect(originPoint, pos)\n });\n continue;\n }\n // If the current preferred position does not fit on the screen, remember the position\n // if it has more visible area on-screen than we've seen and move onto the next preferred\n // position.\n if (!fallback || fallback.overlayFit.visibleArea < overlayFit.visibleArea) {\n fallback = {\n overlayFit,\n overlayPoint,\n originPoint,\n position: pos,\n overlayRect\n };\n }\n }\n // If there are any positions where the overlay would fit with flexible dimensions, choose the\n // one that has the greatest area available modified by the position's weight\n if (flexibleFits.length) {\n let bestFit = null;\n let bestScore = -1;\n for (const fit of flexibleFits) {\n const score = fit.boundingBoxRect.width * fit.boundingBoxRect.height * (fit.position.weight || 1);\n if (score > bestScore) {\n bestScore = score;\n bestFit = fit;\n }\n }\n this._isPushed = false;\n this._applyPosition(bestFit.position, bestFit.origin);\n return;\n }\n // When none of the preferred positions fit within the viewport, take the position\n // that went off-screen the least and attempt to push it on-screen.\n if (this._canPush) {\n // TODO(jelbourn): after pushing, the opening \"direction\" of the overlay might not make sense.\n this._isPushed = true;\n this._applyPosition(fallback.position, fallback.originPoint);\n return;\n }\n // All options for getting the overlay within the viewport have been exhausted, so go with the\n // position that went off-screen the least.\n this._applyPosition(fallback.position, fallback.originPoint);\n }\n detach() {\n this._clearPanelClasses();\n this._lastPosition = null;\n this._previousPushAmount = null;\n this._resizeSubscription.unsubscribe();\n }\n /** Cleanup after the element gets destroyed. */\n dispose() {\n if (this._isDisposed) {\n return;\n }\n // We can't use `_resetBoundingBoxStyles` here, because it resets\n // some properties to zero, rather than removing them.\n if (this._boundingBox) {\n extendStyles(this._boundingBox.style, {\n top: '',\n left: '',\n right: '',\n bottom: '',\n height: '',\n width: '',\n alignItems: '',\n justifyContent: ''\n });\n }\n if (this._pane) {\n this._resetOverlayElementStyles();\n }\n if (this._overlayRef) {\n this._overlayRef.hostElement.classList.remove(boundingBoxClass);\n }\n this.detach();\n this._positionChanges.complete();\n this._overlayRef = this._boundingBox = null;\n this._isDisposed = true;\n }\n /**\n * This re-aligns the overlay element with the trigger in its last calculated position,\n * even if a position higher in the \"preferred positions\" list would now fit. This\n * allows one to re-align the panel without changing the orientation of the panel.\n */\n reapplyLastPosition() {\n if (this._isDisposed || !this._platform.isBrowser) {\n return;\n }\n const lastPosition = this._lastPosition;\n if (lastPosition) {\n this._originRect = this._getOriginRect();\n this._overlayRect = this._pane.getBoundingClientRect();\n this._viewportRect = this._getNarrowedViewportRect();\n this._containerRect = this._overlayContainer.getContainerElement().getBoundingClientRect();\n const originPoint = this._getOriginPoint(this._originRect, this._containerRect, lastPosition);\n this._applyPosition(lastPosition, originPoint);\n } else {\n this.apply();\n }\n }\n /**\n * Sets the list of Scrollable containers that host the origin element so that\n * on reposition we can evaluate if it or the overlay has been clipped or outside view. Every\n * Scrollable must be an ancestor element of the strategy's origin element.\n */\n withScrollableContainers(scrollables) {\n this._scrollables = scrollables;\n return this;\n }\n /**\n * Adds new preferred positions.\n * @param positions List of positions options for this overlay.\n */\n withPositions(positions) {\n this._preferredPositions = positions;\n // If the last calculated position object isn't part of the positions anymore, clear\n // it in order to avoid it being picked up if the consumer tries to re-apply.\n if (positions.indexOf(this._lastPosition) === -1) {\n this._lastPosition = null;\n }\n this._validatePositions();\n return this;\n }\n /**\n * Sets a minimum distance the overlay may be positioned to the edge of the viewport.\n * @param margin Required margin between the overlay and the viewport edge in pixels.\n */\n withViewportMargin(margin) {\n this._viewportMargin = margin;\n return this;\n }\n /** Sets whether the overlay's width and height can be constrained to fit within the viewport. */\n withFlexibleDimensions(flexibleDimensions = true) {\n this._hasFlexibleDimensions = flexibleDimensions;\n return this;\n }\n /** Sets whether the overlay can grow after the initial open via flexible width/height. */\n withGrowAfterOpen(growAfterOpen = true) {\n this._growAfterOpen = growAfterOpen;\n return this;\n }\n /** Sets whether the overlay can be pushed on-screen if none of the provided positions fit. */\n withPush(canPush = true) {\n this._canPush = canPush;\n return this;\n }\n /**\n * Sets whether the overlay's position should be locked in after it is positioned\n * initially. When an overlay is locked in, it won't attempt to reposition itself\n * when the position is re-applied (e.g. when the user scrolls away).\n * @param isLocked Whether the overlay should locked in.\n */\n withLockedPosition(isLocked = true) {\n this._positionLocked = isLocked;\n return this;\n }\n /**\n * Sets the origin, relative to which to position the overlay.\n * Using an element origin is useful for building components that need to be positioned\n * relatively to a trigger (e.g. dropdown menus or tooltips), whereas using a point can be\n * used for cases like contextual menus which open relative to the user's pointer.\n * @param origin Reference to the new origin.\n */\n setOrigin(origin) {\n this._origin = origin;\n return this;\n }\n /**\n * Sets the default offset for the overlay's connection point on the x-axis.\n * @param offset New offset in the X axis.\n */\n withDefaultOffsetX(offset) {\n this._offsetX = offset;\n return this;\n }\n /**\n * Sets the default offset for the overlay's connection point on the y-axis.\n * @param offset New offset in the Y axis.\n */\n withDefaultOffsetY(offset) {\n this._offsetY = offset;\n return this;\n }\n /**\n * Configures that the position strategy should set a `transform-origin` on some elements\n * inside the overlay, depending on the current position that is being applied. This is\n * useful for the cases where the origin of an animation can change depending on the\n * alignment of the overlay.\n * @param selector CSS selector that will be used to find the target\n * elements onto which to set the transform origin.\n */\n withTransformOriginOn(selector) {\n this._transformOriginSelector = selector;\n return this;\n }\n /**\n * Gets the (x, y) coordinate of a connection point on the origin based on a relative position.\n */\n _getOriginPoint(originRect, containerRect, pos) {\n let x;\n if (pos.originX == 'center') {\n // Note: when centering we should always use the `left`\n // offset, otherwise the position will be wrong in RTL.\n x = originRect.left + originRect.width / 2;\n } else {\n const startX = this._isRtl() ? originRect.right : originRect.left;\n const endX = this._isRtl() ? originRect.left : originRect.right;\n x = pos.originX == 'start' ? startX : endX;\n }\n // When zooming in Safari the container rectangle contains negative values for the position\n // and we need to re-add them to the calculated coordinates.\n if (containerRect.left < 0) {\n x -= containerRect.left;\n }\n let y;\n if (pos.originY == 'center') {\n y = originRect.top + originRect.height / 2;\n } else {\n y = pos.originY == 'top' ? originRect.top : originRect.bottom;\n }\n // Normally the containerRect's top value would be zero, however when the overlay is attached to an input\n // (e.g. in an autocomplete), mobile browsers will shift everything in order to put the input in the middle\n // of the screen and to make space for the virtual keyboard. We need to account for this offset,\n // otherwise our positioning will be thrown off.\n // Additionally, when zooming in Safari this fixes the vertical position.\n if (containerRect.top < 0) {\n y -= containerRect.top;\n }\n return {\n x,\n y\n };\n }\n /**\n * Gets the (x, y) coordinate of the top-left corner of the overlay given a given position and\n * origin point to which the overlay should be connected.\n */\n _getOverlayPoint(originPoint, overlayRect, pos) {\n // Calculate the (overlayStartX, overlayStartY), the start of the\n // potential overlay position relative to the origin point.\n let overlayStartX;\n if (pos.overlayX == 'center') {\n overlayStartX = -overlayRect.width / 2;\n } else if (pos.overlayX === 'start') {\n overlayStartX = this._isRtl() ? -overlayRect.width : 0;\n } else {\n overlayStartX = this._isRtl() ? 0 : -overlayRect.width;\n }\n let overlayStartY;\n if (pos.overlayY == 'center') {\n overlayStartY = -overlayRect.height / 2;\n } else {\n overlayStartY = pos.overlayY == 'top' ? 0 : -overlayRect.height;\n }\n // The (x, y) coordinates of the overlay.\n return {\n x: originPoint.x + overlayStartX,\n y: originPoint.y + overlayStartY\n };\n }\n /** Gets how well an overlay at the given point will fit within the viewport. */\n _getOverlayFit(point, rawOverlayRect, viewport, position) {\n // Round the overlay rect when comparing against the\n // viewport, because the viewport is always rounded.\n const overlay = getRoundedBoundingClientRect(rawOverlayRect);\n let {\n x,\n y\n } = point;\n let offsetX = this._getOffset(position, 'x');\n let offsetY = this._getOffset(position, 'y');\n // Account for the offsets since they could push the overlay out of the viewport.\n if (offsetX) {\n x += offsetX;\n }\n if (offsetY) {\n y += offsetY;\n }\n // How much the overlay would overflow at this position, on each side.\n let leftOverflow = 0 - x;\n let rightOverflow = x + overlay.width - viewport.width;\n let topOverflow = 0 - y;\n let bottomOverflow = y + overlay.height - viewport.height;\n // Visible parts of the element on each axis.\n let visibleWidth = this._subtractOverflows(overlay.width, leftOverflow, rightOverflow);\n let visibleHeight = this._subtractOverflows(overlay.height, topOverflow, bottomOverflow);\n let visibleArea = visibleWidth * visibleHeight;\n return {\n visibleArea,\n isCompletelyWithinViewport: overlay.width * overlay.height === visibleArea,\n fitsInViewportVertically: visibleHeight === overlay.height,\n fitsInViewportHorizontally: visibleWidth == overlay.width\n };\n }\n /**\n * Whether the overlay can fit within the viewport when it may resize either its width or height.\n * @param fit How well the overlay fits in the viewport at some position.\n * @param point The (x, y) coordinates of the overlay at some position.\n * @param viewport The geometry of the viewport.\n */\n _canFitWithFlexibleDimensions(fit, point, viewport) {\n if (this._hasFlexibleDimensions) {\n const availableHeight = viewport.bottom - point.y;\n const availableWidth = viewport.right - point.x;\n const minHeight = getPixelValue(this._overlayRef.getConfig().minHeight);\n const minWidth = getPixelValue(this._overlayRef.getConfig().minWidth);\n const verticalFit = fit.fitsInViewportVertically || minHeight != null && minHeight <= availableHeight;\n const horizontalFit = fit.fitsInViewportHorizontally || minWidth != null && minWidth <= availableWidth;\n return verticalFit && horizontalFit;\n }\n return false;\n }\n /**\n * Gets the point at which the overlay can be \"pushed\" on-screen. If the overlay is larger than\n * the viewport, the top-left corner will be pushed on-screen (with overflow occurring on the\n * right and bottom).\n *\n * @param start Starting point from which the overlay is pushed.\n * @param rawOverlayRect Dimensions of the overlay.\n * @param scrollPosition Current viewport scroll position.\n * @returns The point at which to position the overlay after pushing. This is effectively a new\n * originPoint.\n */\n _pushOverlayOnScreen(start, rawOverlayRect, scrollPosition) {\n // If the position is locked and we've pushed the overlay already, reuse the previous push\n // amount, rather than pushing it again. If we were to continue pushing, the element would\n // remain in the viewport, which goes against the expectations when position locking is enabled.\n if (this._previousPushAmount && this._positionLocked) {\n return {\n x: start.x + this._previousPushAmount.x,\n y: start.y + this._previousPushAmount.y\n };\n }\n // Round the overlay rect when comparing against the\n // viewport, because the viewport is always rounded.\n const overlay = getRoundedBoundingClientRect(rawOverlayRect);\n const viewport = this._viewportRect;\n // Determine how much the overlay goes outside the viewport on each\n // side, which we'll use to decide which direction to push it.\n const overflowRight = Math.max(start.x + overlay.width - viewport.width, 0);\n const overflowBottom = Math.max(start.y + overlay.height - viewport.height, 0);\n const overflowTop = Math.max(viewport.top - scrollPosition.top - start.y, 0);\n const overflowLeft = Math.max(viewport.left - scrollPosition.left - start.x, 0);\n // Amount by which to push the overlay in each axis such that it remains on-screen.\n let pushX = 0;\n let pushY = 0;\n // If the overlay fits completely within the bounds of the viewport, push it from whichever\n // direction is goes off-screen. Otherwise, push the top-left corner such that its in the\n // viewport and allow for the trailing end of the overlay to go out of bounds.\n if (overlay.width <= viewport.width) {\n pushX = overflowLeft || -overflowRight;\n } else {\n pushX = start.x < this._viewportMargin ? viewport.left - scrollPosition.left - start.x : 0;\n }\n if (overlay.height <= viewport.height) {\n pushY = overflowTop || -overflowBottom;\n } else {\n pushY = start.y < this._viewportMargin ? viewport.top - scrollPosition.top - start.y : 0;\n }\n this._previousPushAmount = {\n x: pushX,\n y: pushY\n };\n return {\n x: start.x + pushX,\n y: start.y + pushY\n };\n }\n /**\n * Applies a computed position to the overlay and emits a position change.\n * @param position The position preference\n * @param originPoint The point on the origin element where the overlay is connected.\n */\n _applyPosition(position, originPoint) {\n this._setTransformOrigin(position);\n this._setOverlayElementStyles(originPoint, position);\n this._setBoundingBoxStyles(originPoint, position);\n if (position.panelClass) {\n this._addPanelClasses(position.panelClass);\n }\n // Save the last connected position in case the position needs to be re-calculated.\n this._lastPosition = position;\n // Notify that the position has been changed along with its change properties.\n // We only emit if we've got any subscriptions, because the scroll visibility\n // calculations can be somewhat expensive.\n if (this._positionChanges.observers.length) {\n const scrollableViewProperties = this._getScrollVisibility();\n const changeEvent = new ConnectedOverlayPositionChange(position, scrollableViewProperties);\n this._positionChanges.next(changeEvent);\n }\n this._isInitialRender = false;\n }\n /** Sets the transform origin based on the configured selector and the passed-in position. */\n _setTransformOrigin(position) {\n if (!this._transformOriginSelector) {\n return;\n }\n const elements = this._boundingBox.querySelectorAll(this._transformOriginSelector);\n let xOrigin;\n let yOrigin = position.overlayY;\n if (position.overlayX === 'center') {\n xOrigin = 'center';\n } else if (this._isRtl()) {\n xOrigin = position.overlayX === 'start' ? 'right' : 'left';\n } else {\n xOrigin = position.overlayX === 'start' ? 'left' : 'right';\n }\n for (let i = 0; i < elements.length; i++) {\n elements[i].style.transformOrigin = `${xOrigin} ${yOrigin}`;\n }\n }\n /**\n * Gets the position and size of the overlay's sizing container.\n *\n * This method does no measuring and applies no styles so that we can cheaply compute the\n * bounds for all positions and choose the best fit based on these results.\n */\n _calculateBoundingBoxRect(origin, position) {\n const viewport = this._viewportRect;\n const isRtl = this._isRtl();\n let height, top, bottom;\n if (position.overlayY === 'top') {\n // Overlay is opening \"downward\" and thus is bound by the bottom viewport edge.\n top = origin.y;\n height = viewport.height - top + this._viewportMargin;\n } else if (position.overlayY === 'bottom') {\n // Overlay is opening \"upward\" and thus is bound by the top viewport edge. We need to add\n // the viewport margin back in, because the viewport rect is narrowed down to remove the\n // margin, whereas the `origin` position is calculated based on its `ClientRect`.\n bottom = viewport.height - origin.y + this._viewportMargin * 2;\n height = viewport.height - bottom + this._viewportMargin;\n } else {\n // If neither top nor bottom, it means that the overlay is vertically centered on the\n // origin point. Note that we want the position relative to the viewport, rather than\n // the page, which is why we don't use something like `viewport.bottom - origin.y` and\n // `origin.y - viewport.top`.\n const smallestDistanceToViewportEdge = Math.min(viewport.bottom - origin.y + viewport.top, origin.y);\n const previousHeight = this._lastBoundingBoxSize.height;\n height = smallestDistanceToViewportEdge * 2;\n top = origin.y - smallestDistanceToViewportEdge;\n if (height > previousHeight && !this._isInitialRender && !this._growAfterOpen) {\n top = origin.y - previousHeight / 2;\n }\n }\n // The overlay is opening 'right-ward' (the content flows to the right).\n const isBoundedByRightViewportEdge = position.overlayX === 'start' && !isRtl || position.overlayX === 'end' && isRtl;\n // The overlay is opening 'left-ward' (the content flows to the left).\n const isBoundedByLeftViewportEdge = position.overlayX === 'end' && !isRtl || position.overlayX === 'start' && isRtl;\n let width, left, right;\n if (isBoundedByLeftViewportEdge) {\n right = viewport.width - origin.x + this._viewportMargin;\n width = origin.x - this._viewportMargin;\n } else if (isBoundedByRightViewportEdge) {\n left = origin.x;\n width = viewport.right - origin.x;\n } else {\n // If neither start nor end, it means that the overlay is horizontally centered on the\n // origin point. Note that we want the position relative to the viewport, rather than\n // the page, which is why we don't use something like `viewport.right - origin.x` and\n // `origin.x - viewport.left`.\n const smallestDistanceToViewportEdge = Math.min(viewport.right - origin.x + viewport.left, origin.x);\n const previousWidth = this._lastBoundingBoxSize.width;\n width = smallestDistanceToViewportEdge * 2;\n left = origin.x - smallestDistanceToViewportEdge;\n if (width > previousWidth && !this._isInitialRender && !this._growAfterOpen) {\n left = origin.x - previousWidth / 2;\n }\n }\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width,\n height\n };\n }\n /**\n * Sets the position and size of the overlay's sizing wrapper. The wrapper is positioned on the\n * origin's connection point and stretches to the bounds of the viewport.\n *\n * @param origin The point on the origin element where the overlay is connected.\n * @param position The position preference\n */\n _setBoundingBoxStyles(origin, position) {\n const boundingBoxRect = this._calculateBoundingBoxRect(origin, position);\n // It's weird if the overlay *grows* while scrolling, so we take the last size into account\n // when applying a new size.\n if (!this._isInitialRender && !this._growAfterOpen) {\n boundingBoxRect.height = Math.min(boundingBoxRect.height, this._lastBoundingBoxSize.height);\n boundingBoxRect.width = Math.min(boundingBoxRect.width, this._lastBoundingBoxSize.width);\n }\n const styles = {};\n if (this._hasExactPosition()) {\n styles.top = styles.left = '0';\n styles.bottom = styles.right = styles.maxHeight = styles.maxWidth = '';\n styles.width = styles.height = '100%';\n } else {\n const maxHeight = this._overlayRef.getConfig().maxHeight;\n const maxWidth = this._overlayRef.getConfig().maxWidth;\n styles.height = coerceCssPixelValue(boundingBoxRect.height);\n styles.top = coerceCssPixelValue(boundingBoxRect.top);\n styles.bottom = coerceCssPixelValue(boundingBoxRect.bottom);\n styles.width = coerceCssPixelValue(boundingBoxRect.width);\n styles.left = coerceCssPixelValue(boundingBoxRect.left);\n styles.right = coerceCssPixelValue(boundingBoxRect.right);\n // Push the pane content towards the proper direction.\n if (position.overlayX === 'center') {\n styles.alignItems = 'center';\n } else {\n styles.alignItems = position.overlayX === 'end' ? 'flex-end' : 'flex-start';\n }\n if (position.overlayY === 'center') {\n styles.justifyContent = 'center';\n } else {\n styles.justifyContent = position.overlayY === 'bottom' ? 'flex-end' : 'flex-start';\n }\n if (maxHeight) {\n styles.maxHeight = coerceCssPixelValue(maxHeight);\n }\n if (maxWidth) {\n styles.maxWidth = coerceCssPixelValue(maxWidth);\n }\n }\n this._lastBoundingBoxSize = boundingBoxRect;\n extendStyles(this._boundingBox.style, styles);\n }\n /** Resets the styles for the bounding box so that a new positioning can be computed. */\n _resetBoundingBoxStyles() {\n extendStyles(this._boundingBox.style, {\n top: '0',\n left: '0',\n right: '0',\n bottom: '0',\n height: '',\n width: '',\n alignItems: '',\n justifyContent: ''\n });\n }\n /** Resets the styles for the overlay pane so that a new positioning can be computed. */\n _resetOverlayElementStyles() {\n extendStyles(this._pane.style, {\n top: '',\n left: '',\n bottom: '',\n right: '',\n position: '',\n transform: ''\n });\n }\n /** Sets positioning styles to the overlay element. */\n _setOverlayElementStyles(originPoint, position) {\n const styles = {};\n const hasExactPosition = this._hasExactPosition();\n const hasFlexibleDimensions = this._hasFlexibleDimensions;\n const config = this._overlayRef.getConfig();\n if (hasExactPosition) {\n const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n extendStyles(styles, this._getExactOverlayY(position, originPoint, scrollPosition));\n extendStyles(styles, this._getExactOverlayX(position, originPoint, scrollPosition));\n } else {\n styles.position = 'static';\n }\n // Use a transform to apply the offsets. We do this because the `center` positions rely on\n // being in the normal flex flow and setting a `top` / `left` at all will completely throw\n // off the position. We also can't use margins, because they won't have an effect in some\n // cases where the element doesn't have anything to \"push off of\". Finally, this works\n // better both with flexible and non-flexible positioning.\n let transformString = '';\n let offsetX = this._getOffset(position, 'x');\n let offsetY = this._getOffset(position, 'y');\n if (offsetX) {\n transformString += `translateX(${offsetX}px) `;\n }\n if (offsetY) {\n transformString += `translateY(${offsetY}px)`;\n }\n styles.transform = transformString.trim();\n // If a maxWidth or maxHeight is specified on the overlay, we remove them. We do this because\n // we need these values to both be set to \"100%\" for the automatic flexible sizing to work.\n // The maxHeight and maxWidth are set on the boundingBox in order to enforce the constraint.\n // Note that this doesn't apply when we have an exact position, in which case we do want to\n // apply them because they'll be cleared from the bounding box.\n if (config.maxHeight) {\n if (hasExactPosition) {\n styles.maxHeight = coerceCssPixelValue(config.maxHeight);\n } else if (hasFlexibleDimensions) {\n styles.maxHeight = '';\n }\n }\n if (config.maxWidth) {\n if (hasExactPosition) {\n styles.maxWidth = coerceCssPixelValue(config.maxWidth);\n } else if (hasFlexibleDimensions) {\n styles.maxWidth = '';\n }\n }\n extendStyles(this._pane.style, styles);\n }\n /** Gets the exact top/bottom for the overlay when not using flexible sizing or when pushing. */\n _getExactOverlayY(position, originPoint, scrollPosition) {\n // Reset any existing styles. This is necessary in case the\n // preferred position has changed since the last `apply`.\n let styles = {\n top: '',\n bottom: ''\n };\n let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);\n if (this._isPushed) {\n overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);\n }\n // We want to set either `top` or `bottom` based on whether the overlay wants to appear\n // above or below the origin and the direction in which the element will expand.\n if (position.overlayY === 'bottom') {\n // When using `bottom`, we adjust the y position such that it is the distance\n // from the bottom of the viewport rather than the top.\n const documentHeight = this._document.documentElement.clientHeight;\n styles.bottom = `${documentHeight - (overlayPoint.y + this._overlayRect.height)}px`;\n } else {\n styles.top = coerceCssPixelValue(overlayPoint.y);\n }\n return styles;\n }\n /** Gets the exact left/right for the overlay when not using flexible sizing or when pushing. */\n _getExactOverlayX(position, originPoint, scrollPosition) {\n // Reset any existing styles. This is necessary in case the preferred position has\n // changed since the last `apply`.\n let styles = {\n left: '',\n right: ''\n };\n let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);\n if (this._isPushed) {\n overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);\n }\n // We want to set either `left` or `right` based on whether the overlay wants to appear \"before\"\n // or \"after\" the origin, which determines the direction in which the element will expand.\n // For the horizontal axis, the meaning of \"before\" and \"after\" change based on whether the\n // page is in RTL or LTR.\n let horizontalStyleProperty;\n if (this._isRtl()) {\n horizontalStyleProperty = position.overlayX === 'end' ? 'left' : 'right';\n } else {\n horizontalStyleProperty = position.overlayX === 'end' ? 'right' : 'left';\n }\n // When we're setting `right`, we adjust the x position such that it is the distance\n // from the right edge of the viewport rather than the left edge.\n if (horizontalStyleProperty === 'right') {\n const documentWidth = this._document.documentElement.clientWidth;\n styles.right = `${documentWidth - (overlayPoint.x + this._overlayRect.width)}px`;\n } else {\n styles.left = coerceCssPixelValue(overlayPoint.x);\n }\n return styles;\n }\n /**\n * Gets the view properties of the trigger and overlay, including whether they are clipped\n * or completely outside the view of any of the strategy's scrollables.\n */\n _getScrollVisibility() {\n // Note: needs fresh rects since the position could've changed.\n const originBounds = this._getOriginRect();\n const overlayBounds = this._pane.getBoundingClientRect();\n // TODO(jelbourn): instead of needing all of the client rects for these scrolling containers\n // every time, we should be able to use the scrollTop of the containers if the size of those\n // containers hasn't changed.\n const scrollContainerBounds = this._scrollables.map(scrollable => {\n return scrollable.getElementRef().nativeElement.getBoundingClientRect();\n });\n return {\n isOriginClipped: isElementClippedByScrolling(originBounds, scrollContainerBounds),\n isOriginOutsideView: isElementScrolledOutsideView(originBounds, scrollContainerBounds),\n isOverlayClipped: isElementClippedByScrolling(overlayBounds, scrollContainerBounds),\n isOverlayOutsideView: isElementScrolledOutsideView(overlayBounds, scrollContainerBounds)\n };\n }\n /** Subtracts the amount that an element is overflowing on an axis from its length. */\n _subtractOverflows(length, ...overflows) {\n return overflows.reduce((currentValue, currentOverflow) => {\n return currentValue - Math.max(currentOverflow, 0);\n }, length);\n }\n /** Narrows the given viewport rect by the current _viewportMargin. */\n _getNarrowedViewportRect() {\n // We recalculate the viewport rect here ourselves, rather than using the ViewportRuler,\n // because we want to use the `clientWidth` and `clientHeight` as the base. The difference\n // being that the client properties don't include the scrollbar, as opposed to `innerWidth`\n // and `innerHeight` that do. This is necessary, because the overlay container uses\n // 100% `width` and `height` which don't include the scrollbar either.\n const width = this._document.documentElement.clientWidth;\n const height = this._document.documentElement.clientHeight;\n const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n return {\n top: scrollPosition.top + this._viewportMargin,\n left: scrollPosition.left + this._viewportMargin,\n right: scrollPosition.left + width - this._viewportMargin,\n bottom: scrollPosition.top + height - this._viewportMargin,\n width: width - 2 * this._viewportMargin,\n height: height - 2 * this._viewportMargin\n };\n }\n /** Whether the we're dealing with an RTL context */\n _isRtl() {\n return this._overlayRef.getDirection() === 'rtl';\n }\n /** Determines whether the overlay uses exact or flexible positioning. */\n _hasExactPosition() {\n return !this._hasFlexibleDimensions || this._isPushed;\n }\n /** Retrieves the offset of a position along the x or y axis. */\n _getOffset(position, axis) {\n if (axis === 'x') {\n // We don't do something like `position['offset' + axis]` in\n // order to avoid breaking minifiers that rename properties.\n return position.offsetX == null ? this._offsetX : position.offsetX;\n }\n return position.offsetY == null ? this._offsetY : position.offsetY;\n }\n /** Validates that the current position match the expected values. */\n _validatePositions() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._preferredPositions.length) {\n throw Error('FlexibleConnectedPositionStrategy: At least one position is required.');\n }\n // TODO(crisbeto): remove these once Angular's template type\n // checking is advanced enough to catch these cases.\n this._preferredPositions.forEach(pair => {\n validateHorizontalPosition('originX', pair.originX);\n validateVerticalPosition('originY', pair.originY);\n validateHorizontalPosition('overlayX', pair.overlayX);\n validateVerticalPosition('overlayY', pair.overlayY);\n });\n }\n }\n /** Adds a single CSS class or an array of classes on the overlay panel. */\n _addPanelClasses(cssClasses) {\n if (this._pane) {\n coerceArray(cssClasses).forEach(cssClass => {\n if (cssClass !== '' && this._appliedPanelClasses.indexOf(cssClass) === -1) {\n this._appliedPanelClasses.push(cssClass);\n this._pane.classList.add(cssClass);\n }\n });\n }\n }\n /** Clears the classes that the position strategy has applied from the overlay panel. */\n _clearPanelClasses() {\n if (this._pane) {\n this._appliedPanelClasses.forEach(cssClass => {\n this._pane.classList.remove(cssClass);\n });\n this._appliedPanelClasses = [];\n }\n }\n /** Returns the ClientRect of the current origin. */\n _getOriginRect() {\n const origin = this._origin;\n if (origin instanceof ElementRef) {\n return origin.nativeElement.getBoundingClientRect();\n }\n // Check for Element so SVG elements are also supported.\n if (origin instanceof Element) {\n return origin.getBoundingClientRect();\n }\n const width = origin.width || 0;\n const height = origin.height || 0;\n // If the origin is a point, return a client rect as if it was a 0x0 element at the point.\n return {\n top: origin.y,\n bottom: origin.y + height,\n left: origin.x,\n right: origin.x + width,\n height,\n width\n };\n }\n}\n/** Shallow-extends a stylesheet object with another stylesheet object. */\nfunction extendStyles(destination, source) {\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n destination[key] = source[key];\n }\n }\n return destination;\n}\n/**\n * Extracts the pixel value as a number from a value, if it's a number\n * or a CSS pixel string (e.g. `1337px`). Otherwise returns null.\n */\nfunction getPixelValue(input) {\n if (typeof input !== 'number' && input != null) {\n const [value, units] = input.split(cssUnitPattern);\n return !units || units === 'px' ? parseFloat(value) : null;\n }\n return input || null;\n}\n/**\n * Gets a version of an element's bounding `ClientRect` where all the values are rounded down to\n * the nearest pixel. This allows us to account for the cases where there may be sub-pixel\n * deviations in the `ClientRect` returned by the browser (e.g. when zoomed in with a percentage\n * size, see #21350).\n */\nfunction getRoundedBoundingClientRect(clientRect) {\n return {\n top: Math.floor(clientRect.top),\n right: Math.floor(clientRect.right),\n bottom: Math.floor(clientRect.bottom),\n left: Math.floor(clientRect.left),\n width: Math.floor(clientRect.width),\n height: Math.floor(clientRect.height)\n };\n}\nconst STANDARD_DROPDOWN_BELOW_POSITIONS = [{\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n}, {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n}, {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n}, {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom'\n}];\nconst STANDARD_DROPDOWN_ADJACENT_POSITIONS = [{\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top'\n}, {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'bottom'\n}, {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top'\n}, {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'bottom'\n}];\n\n/** Class to be added to the overlay pane wrapper. */\nconst wrapperClass = 'cdk-global-overlay-wrapper';\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * explicit position relative to the browser's viewport. We use flexbox, instead of\n * transforms, in order to avoid issues with subpixel rendering which can cause the\n * element to become blurry.\n */\nclass GlobalPositionStrategy {\n constructor() {\n this._cssPosition = 'static';\n this._topOffset = '';\n this._bottomOffset = '';\n this._alignItems = '';\n this._xPosition = '';\n this._xOffset = '';\n this._width = '';\n this._height = '';\n this._isDisposed = false;\n }\n attach(overlayRef) {\n const config = overlayRef.getConfig();\n this._overlayRef = overlayRef;\n if (this._width && !config.width) {\n overlayRef.updateSize({\n width: this._width\n });\n }\n if (this._height && !config.height) {\n overlayRef.updateSize({\n height: this._height\n });\n }\n overlayRef.hostElement.classList.add(wrapperClass);\n this._isDisposed = false;\n }\n /**\n * Sets the top position of the overlay. Clears any previously set vertical position.\n * @param value New top offset.\n */\n top(value = '') {\n this._bottomOffset = '';\n this._topOffset = value;\n this._alignItems = 'flex-start';\n return this;\n }\n /**\n * Sets the left position of the overlay. Clears any previously set horizontal position.\n * @param value New left offset.\n */\n left(value = '') {\n this._xOffset = value;\n this._xPosition = 'left';\n return this;\n }\n /**\n * Sets the bottom position of the overlay. Clears any previously set vertical position.\n * @param value New bottom offset.\n */\n bottom(value = '') {\n this._topOffset = '';\n this._bottomOffset = value;\n this._alignItems = 'flex-end';\n return this;\n }\n /**\n * Sets the right position of the overlay. Clears any previously set horizontal position.\n * @param value New right offset.\n */\n right(value = '') {\n this._xOffset = value;\n this._xPosition = 'right';\n return this;\n }\n /**\n * Sets the overlay to the start of the viewport, depending on the overlay direction.\n * This will be to the left in LTR layouts and to the right in RTL.\n * @param offset Offset from the edge of the screen.\n */\n start(value = '') {\n this._xOffset = value;\n this._xPosition = 'start';\n return this;\n }\n /**\n * Sets the overlay to the end of the viewport, depending on the overlay direction.\n * This will be to the right in LTR layouts and to the left in RTL.\n * @param offset Offset from the edge of the screen.\n */\n end(value = '') {\n this._xOffset = value;\n this._xPosition = 'end';\n return this;\n }\n /**\n * Sets the overlay width and clears any previously set width.\n * @param value New width for the overlay\n * @deprecated Pass the `width` through the `OverlayConfig`.\n * @breaking-change 8.0.0\n */\n width(value = '') {\n if (this._overlayRef) {\n this._overlayRef.updateSize({\n width: value\n });\n } else {\n this._width = value;\n }\n return this;\n }\n /**\n * Sets the overlay height and clears any previously set height.\n * @param value New height for the overlay\n * @deprecated Pass the `height` through the `OverlayConfig`.\n * @breaking-change 8.0.0\n */\n height(value = '') {\n if (this._overlayRef) {\n this._overlayRef.updateSize({\n height: value\n });\n } else {\n this._height = value;\n }\n return this;\n }\n /**\n * Centers the overlay horizontally with an optional offset.\n * Clears any previously set horizontal position.\n *\n * @param offset Overlay offset from the horizontal center.\n */\n centerHorizontally(offset = '') {\n this.left(offset);\n this._xPosition = 'center';\n return this;\n }\n /**\n * Centers the overlay vertically with an optional offset.\n * Clears any previously set vertical position.\n *\n * @param offset Overlay offset from the vertical center.\n */\n centerVertically(offset = '') {\n this.top(offset);\n this._alignItems = 'center';\n return this;\n }\n /**\n * Apply the position to the element.\n * @docs-private\n */\n apply() {\n // Since the overlay ref applies the strategy asynchronously, it could\n // have been disposed before it ends up being applied. If that is the\n // case, we shouldn't do anything.\n if (!this._overlayRef || !this._overlayRef.hasAttached()) {\n return;\n }\n const styles = this._overlayRef.overlayElement.style;\n const parentStyles = this._overlayRef.hostElement.style;\n const config = this._overlayRef.getConfig();\n const {\n width,\n height,\n maxWidth,\n maxHeight\n } = config;\n const shouldBeFlushHorizontally = (width === '100%' || width === '100vw') && (!maxWidth || maxWidth === '100%' || maxWidth === '100vw');\n const shouldBeFlushVertically = (height === '100%' || height === '100vh') && (!maxHeight || maxHeight === '100%' || maxHeight === '100vh');\n const xPosition = this._xPosition;\n const xOffset = this._xOffset;\n const isRtl = this._overlayRef.getConfig().direction === 'rtl';\n let marginLeft = '';\n let marginRight = '';\n let justifyContent = '';\n if (shouldBeFlushHorizontally) {\n justifyContent = 'flex-start';\n } else if (xPosition === 'center') {\n justifyContent = 'center';\n if (isRtl) {\n marginRight = xOffset;\n } else {\n marginLeft = xOffset;\n }\n } else if (isRtl) {\n if (xPosition === 'left' || xPosition === 'end') {\n justifyContent = 'flex-end';\n marginLeft = xOffset;\n } else if (xPosition === 'right' || xPosition === 'start') {\n justifyContent = 'flex-start';\n marginRight = xOffset;\n }\n } else if (xPosition === 'left' || xPosition === 'start') {\n justifyContent = 'flex-start';\n marginLeft = xOffset;\n } else if (xPosition === 'right' || xPosition === 'end') {\n justifyContent = 'flex-end';\n marginRight = xOffset;\n }\n styles.position = this._cssPosition;\n styles.marginLeft = shouldBeFlushHorizontally ? '0' : marginLeft;\n styles.marginTop = shouldBeFlushVertically ? '0' : this._topOffset;\n styles.marginBottom = this._bottomOffset;\n styles.marginRight = shouldBeFlushHorizontally ? '0' : marginRight;\n parentStyles.justifyContent = justifyContent;\n parentStyles.alignItems = shouldBeFlushVertically ? 'flex-start' : this._alignItems;\n }\n /**\n * Cleans up the DOM changes from the position strategy.\n * @docs-private\n */\n dispose() {\n if (this._isDisposed || !this._overlayRef) {\n return;\n }\n const styles = this._overlayRef.overlayElement.style;\n const parent = this._overlayRef.hostElement;\n const parentStyles = parent.style;\n parent.classList.remove(wrapperClass);\n parentStyles.justifyContent = parentStyles.alignItems = styles.marginTop = styles.marginBottom = styles.marginLeft = styles.marginRight = styles.position = '';\n this._overlayRef = null;\n this._isDisposed = true;\n }\n}\n\n/** Builder for overlay position strategy. */\nclass OverlayPositionBuilder {\n constructor(_viewportRuler, _document, _platform, _overlayContainer) {\n this._viewportRuler = _viewportRuler;\n this._document = _document;\n this._platform = _platform;\n this._overlayContainer = _overlayContainer;\n }\n /**\n * Creates a global position strategy.\n */\n global() {\n return new GlobalPositionStrategy();\n }\n /**\n * Creates a flexible position strategy.\n * @param origin Origin relative to which to position the overlay.\n */\n flexibleConnectedTo(origin) {\n return new FlexibleConnectedPositionStrategy(origin, this._viewportRuler, this._document, this._platform, this._overlayContainer);\n }\n static {\n this.ɵfac = function OverlayPositionBuilder_Factory(t) {\n return new (t || OverlayPositionBuilder)(i0.ɵɵinject(i1.ViewportRuler), i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i1$1.Platform), i0.ɵɵinject(OverlayContainer));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: OverlayPositionBuilder,\n factory: OverlayPositionBuilder.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(OverlayPositionBuilder, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: i1.ViewportRuler\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }, {\n type: i1$1.Platform\n }, {\n type: OverlayContainer\n }], null);\n})();\n\n/** Next overlay unique ID. */\nlet nextUniqueId = 0;\n// Note that Overlay is *not* scoped to the app root because of the ComponentFactoryResolver\n// which needs to be different depending on where OverlayModule is imported.\n/**\n * Service to create Overlays. Overlays are dynamically added pieces of floating UI, meant to be\n * used as a low-level building block for other components. Dialogs, tooltips, menus,\n * selects, etc. can all be built using overlays. The service should primarily be used by authors\n * of re-usable components rather than developers building end-user applications.\n *\n * An overlay *is* a PortalOutlet, so any kind of Portal can be loaded into one.\n */\nclass Overlay {\n constructor( /** Scrolling strategies that can be used when creating an overlay. */\n scrollStrategies, _overlayContainer, _componentFactoryResolver, _positionBuilder, _keyboardDispatcher, _injector, _ngZone, _document, _directionality, _location, _outsideClickDispatcher, _animationsModuleType) {\n this.scrollStrategies = scrollStrategies;\n this._overlayContainer = _overlayContainer;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._positionBuilder = _positionBuilder;\n this._keyboardDispatcher = _keyboardDispatcher;\n this._injector = _injector;\n this._ngZone = _ngZone;\n this._document = _document;\n this._directionality = _directionality;\n this._location = _location;\n this._outsideClickDispatcher = _outsideClickDispatcher;\n this._animationsModuleType = _animationsModuleType;\n }\n /**\n * Creates an overlay.\n * @param config Configuration applied to the overlay.\n * @returns Reference to the created overlay.\n */\n create(config) {\n const host = this._createHostElement();\n const pane = this._createPaneElement(host);\n const portalOutlet = this._createPortalOutlet(pane);\n const overlayConfig = new OverlayConfig(config);\n overlayConfig.direction = overlayConfig.direction || this._directionality.value;\n return new OverlayRef(portalOutlet, host, pane, overlayConfig, this._ngZone, this._keyboardDispatcher, this._document, this._location, this._outsideClickDispatcher, this._animationsModuleType === 'NoopAnimations');\n }\n /**\n * Gets a position builder that can be used, via fluent API,\n * to construct and configure a position strategy.\n * @returns An overlay position builder.\n */\n position() {\n return this._positionBuilder;\n }\n /**\n * Creates the DOM element for an overlay and appends it to the overlay container.\n * @returns Newly-created pane element\n */\n _createPaneElement(host) {\n const pane = this._document.createElement('div');\n pane.id = `cdk-overlay-${nextUniqueId++}`;\n pane.classList.add('cdk-overlay-pane');\n host.appendChild(pane);\n return pane;\n }\n /**\n * Creates the host element that wraps around an overlay\n * and can be used for advanced positioning.\n * @returns Newly-create host element.\n */\n _createHostElement() {\n const host = this._document.createElement('div');\n this._overlayContainer.getContainerElement().appendChild(host);\n return host;\n }\n /**\n * Create a DomPortalOutlet into which the overlay content can be loaded.\n * @param pane The DOM element to turn into a portal outlet.\n * @returns A portal outlet for the given DOM element.\n */\n _createPortalOutlet(pane) {\n // We have to resolve the ApplicationRef later in order to allow people\n // to use overlay-based providers during app initialization.\n if (!this._appRef) {\n this._appRef = this._injector.get(ApplicationRef);\n }\n return new DomPortalOutlet(pane, this._componentFactoryResolver, this._appRef, this._injector, this._document);\n }\n static {\n this.ɵfac = function Overlay_Factory(t) {\n return new (t || Overlay)(i0.ɵɵinject(ScrollStrategyOptions), i0.ɵɵinject(OverlayContainer), i0.ɵɵinject(i0.ComponentFactoryResolver), i0.ɵɵinject(OverlayPositionBuilder), i0.ɵɵinject(OverlayKeyboardDispatcher), i0.ɵɵinject(i0.Injector), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i5.Directionality), i0.ɵɵinject(i6.Location), i0.ɵɵinject(OverlayOutsideClickDispatcher), i0.ɵɵinject(ANIMATION_MODULE_TYPE, 8));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: Overlay,\n factory: Overlay.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Overlay, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: ScrollStrategyOptions\n }, {\n type: OverlayContainer\n }, {\n type: i0.ComponentFactoryResolver\n }, {\n type: OverlayPositionBuilder\n }, {\n type: OverlayKeyboardDispatcher\n }, {\n type: i0.Injector\n }, {\n type: i0.NgZone\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }, {\n type: i5.Directionality\n }, {\n type: i6.Location\n }, {\n type: OverlayOutsideClickDispatcher\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }, {\n type: Optional\n }]\n }], null);\n})();\n\n/** Default set of positions for the overlay. Follows the behavior of a dropdown. */\nconst defaultPositionList = [{\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n}, {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n}, {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom'\n}, {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n}];\n/** Injection token that determines the scroll handling while the connected overlay is open. */\nconst CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY = new InjectionToken('cdk-connected-overlay-scroll-strategy', {\n providedIn: 'root',\n factory: () => {\n const overlay = inject(Overlay);\n return () => overlay.scrollStrategies.reposition();\n }\n});\n/**\n * Directive applied to an element to make it usable as an origin for an Overlay using a\n * ConnectedPositionStrategy.\n */\nclass CdkOverlayOrigin {\n constructor( /** Reference to the element on which the directive is applied. */\n elementRef) {\n this.elementRef = elementRef;\n }\n static {\n this.ɵfac = function CdkOverlayOrigin_Factory(t) {\n return new (t || CdkOverlayOrigin)(i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkOverlayOrigin,\n selectors: [[\"\", \"cdk-overlay-origin\", \"\"], [\"\", \"overlay-origin\", \"\"], [\"\", \"cdkOverlayOrigin\", \"\"]],\n exportAs: [\"cdkOverlayOrigin\"],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkOverlayOrigin, [{\n type: Directive,\n args: [{\n selector: '[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]',\n exportAs: 'cdkOverlayOrigin',\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }], null);\n})();\n/**\n * Directive to facilitate declarative creation of an\n * Overlay using a FlexibleConnectedPositionStrategy.\n */\nclass CdkConnectedOverlay {\n /** The offset in pixels for the overlay connection point on the x-axis */\n get offsetX() {\n return this._offsetX;\n }\n set offsetX(offsetX) {\n this._offsetX = offsetX;\n if (this._position) {\n this._updatePositionStrategy(this._position);\n }\n }\n /** The offset in pixels for the overlay connection point on the y-axis */\n get offsetY() {\n return this._offsetY;\n }\n set offsetY(offsetY) {\n this._offsetY = offsetY;\n if (this._position) {\n this._updatePositionStrategy(this._position);\n }\n }\n /** Whether the overlay should be disposed of when the user goes backwards/forwards in history. */\n get disposeOnNavigation() {\n return this._disposeOnNavigation;\n }\n set disposeOnNavigation(value) {\n this._disposeOnNavigation = value;\n }\n // TODO(jelbourn): inputs for size, scroll behavior, animation, etc.\n constructor(_overlay, templateRef, viewContainerRef, scrollStrategyFactory, _dir) {\n this._overlay = _overlay;\n this._dir = _dir;\n this._backdropSubscription = Subscription.EMPTY;\n this._attachSubscription = Subscription.EMPTY;\n this._detachSubscription = Subscription.EMPTY;\n this._positionSubscription = Subscription.EMPTY;\n this._disposeOnNavigation = false;\n /** Margin between the overlay and the viewport edges. */\n this.viewportMargin = 0;\n /** Whether the overlay is open. */\n this.open = false;\n /** Whether the overlay can be closed by user interaction. */\n this.disableClose = false;\n /** Whether or not the overlay should attach a backdrop. */\n this.hasBackdrop = false;\n /** Whether or not the overlay should be locked when scrolling. */\n this.lockPosition = false;\n /** Whether the overlay's width and height can be constrained to fit within the viewport. */\n this.flexibleDimensions = false;\n /** Whether the overlay can grow after the initial open when flexible positioning is turned on. */\n this.growAfterOpen = false;\n /** Whether the overlay can be pushed on-screen if none of the provided positions fit. */\n this.push = false;\n /** Event emitted when the backdrop is clicked. */\n this.backdropClick = new EventEmitter();\n /** Event emitted when the position has changed. */\n this.positionChange = new EventEmitter();\n /** Event emitted when the overlay has been attached. */\n this.attach = new EventEmitter();\n /** Event emitted when the overlay has been detached. */\n this.detach = new EventEmitter();\n /** Emits when there are keyboard events that are targeted at the overlay. */\n this.overlayKeydown = new EventEmitter();\n /** Emits when there are mouse outside click events that are targeted at the overlay. */\n this.overlayOutsideClick = new EventEmitter();\n this._templatePortal = new TemplatePortal(templateRef, viewContainerRef);\n this._scrollStrategyFactory = scrollStrategyFactory;\n this.scrollStrategy = this._scrollStrategyFactory();\n }\n /** The associated overlay reference. */\n get overlayRef() {\n return this._overlayRef;\n }\n /** The element's layout direction. */\n get dir() {\n return this._dir ? this._dir.value : 'ltr';\n }\n ngOnDestroy() {\n this._attachSubscription.unsubscribe();\n this._detachSubscription.unsubscribe();\n this._backdropSubscription.unsubscribe();\n this._positionSubscription.unsubscribe();\n if (this._overlayRef) {\n this._overlayRef.dispose();\n }\n }\n ngOnChanges(changes) {\n if (this._position) {\n this._updatePositionStrategy(this._position);\n this._overlayRef.updateSize({\n width: this.width,\n minWidth: this.minWidth,\n height: this.height,\n minHeight: this.minHeight\n });\n if (changes['origin'] && this.open) {\n this._position.apply();\n }\n }\n if (changes['open']) {\n this.open ? this._attachOverlay() : this._detachOverlay();\n }\n }\n /** Creates an overlay */\n _createOverlay() {\n if (!this.positions || !this.positions.length) {\n this.positions = defaultPositionList;\n }\n const overlayRef = this._overlayRef = this._overlay.create(this._buildConfig());\n this._attachSubscription = overlayRef.attachments().subscribe(() => this.attach.emit());\n this._detachSubscription = overlayRef.detachments().subscribe(() => this.detach.emit());\n overlayRef.keydownEvents().subscribe(event => {\n this.overlayKeydown.next(event);\n if (event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)) {\n event.preventDefault();\n this._detachOverlay();\n }\n });\n this._overlayRef.outsidePointerEvents().subscribe(event => {\n this.overlayOutsideClick.next(event);\n });\n }\n /** Builds the overlay config based on the directive's inputs */\n _buildConfig() {\n const positionStrategy = this._position = this.positionStrategy || this._createPositionStrategy();\n const overlayConfig = new OverlayConfig({\n direction: this._dir,\n positionStrategy,\n scrollStrategy: this.scrollStrategy,\n hasBackdrop: this.hasBackdrop,\n disposeOnNavigation: this.disposeOnNavigation\n });\n if (this.width || this.width === 0) {\n overlayConfig.width = this.width;\n }\n if (this.height || this.height === 0) {\n overlayConfig.height = this.height;\n }\n if (this.minWidth || this.minWidth === 0) {\n overlayConfig.minWidth = this.minWidth;\n }\n if (this.minHeight || this.minHeight === 0) {\n overlayConfig.minHeight = this.minHeight;\n }\n if (this.backdropClass) {\n overlayConfig.backdropClass = this.backdropClass;\n }\n if (this.panelClass) {\n overlayConfig.panelClass = this.panelClass;\n }\n return overlayConfig;\n }\n /** Updates the state of a position strategy, based on the values of the directive inputs. */\n _updatePositionStrategy(positionStrategy) {\n const positions = this.positions.map(currentPosition => ({\n originX: currentPosition.originX,\n originY: currentPosition.originY,\n overlayX: currentPosition.overlayX,\n overlayY: currentPosition.overlayY,\n offsetX: currentPosition.offsetX || this.offsetX,\n offsetY: currentPosition.offsetY || this.offsetY,\n panelClass: currentPosition.panelClass || undefined\n }));\n return positionStrategy.setOrigin(this._getFlexibleConnectedPositionStrategyOrigin()).withPositions(positions).withFlexibleDimensions(this.flexibleDimensions).withPush(this.push).withGrowAfterOpen(this.growAfterOpen).withViewportMargin(this.viewportMargin).withLockedPosition(this.lockPosition).withTransformOriginOn(this.transformOriginSelector);\n }\n /** Returns the position strategy of the overlay to be set on the overlay config */\n _createPositionStrategy() {\n const strategy = this._overlay.position().flexibleConnectedTo(this._getFlexibleConnectedPositionStrategyOrigin());\n this._updatePositionStrategy(strategy);\n return strategy;\n }\n _getFlexibleConnectedPositionStrategyOrigin() {\n if (this.origin instanceof CdkOverlayOrigin) {\n return this.origin.elementRef;\n } else {\n return this.origin;\n }\n }\n /** Attaches the overlay and subscribes to backdrop clicks if backdrop exists */\n _attachOverlay() {\n if (!this._overlayRef) {\n this._createOverlay();\n } else {\n // Update the overlay size, in case the directive's inputs have changed\n this._overlayRef.getConfig().hasBackdrop = this.hasBackdrop;\n }\n if (!this._overlayRef.hasAttached()) {\n this._overlayRef.attach(this._templatePortal);\n }\n if (this.hasBackdrop) {\n this._backdropSubscription = this._overlayRef.backdropClick().subscribe(event => {\n this.backdropClick.emit(event);\n });\n } else {\n this._backdropSubscription.unsubscribe();\n }\n this._positionSubscription.unsubscribe();\n // Only subscribe to `positionChanges` if requested, because putting\n // together all the information for it can be expensive.\n if (this.positionChange.observers.length > 0) {\n this._positionSubscription = this._position.positionChanges.pipe(takeWhile(() => this.positionChange.observers.length > 0)).subscribe(position => {\n this.positionChange.emit(position);\n if (this.positionChange.observers.length === 0) {\n this._positionSubscription.unsubscribe();\n }\n });\n }\n }\n /** Detaches the overlay and unsubscribes to backdrop clicks if backdrop exists */\n _detachOverlay() {\n if (this._overlayRef) {\n this._overlayRef.detach();\n }\n this._backdropSubscription.unsubscribe();\n this._positionSubscription.unsubscribe();\n }\n static {\n this.ɵfac = function CdkConnectedOverlay_Factory(t) {\n return new (t || CdkConnectedOverlay)(i0.ɵɵdirectiveInject(Overlay), i0.ɵɵdirectiveInject(i0.TemplateRef), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY), i0.ɵɵdirectiveInject(i5.Directionality, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkConnectedOverlay,\n selectors: [[\"\", \"cdk-connected-overlay\", \"\"], [\"\", \"connected-overlay\", \"\"], [\"\", \"cdkConnectedOverlay\", \"\"]],\n inputs: {\n origin: [\"cdkConnectedOverlayOrigin\", \"origin\"],\n positions: [\"cdkConnectedOverlayPositions\", \"positions\"],\n positionStrategy: [\"cdkConnectedOverlayPositionStrategy\", \"positionStrategy\"],\n offsetX: [\"cdkConnectedOverlayOffsetX\", \"offsetX\"],\n offsetY: [\"cdkConnectedOverlayOffsetY\", \"offsetY\"],\n width: [\"cdkConnectedOverlayWidth\", \"width\"],\n height: [\"cdkConnectedOverlayHeight\", \"height\"],\n minWidth: [\"cdkConnectedOverlayMinWidth\", \"minWidth\"],\n minHeight: [\"cdkConnectedOverlayMinHeight\", \"minHeight\"],\n backdropClass: [\"cdkConnectedOverlayBackdropClass\", \"backdropClass\"],\n panelClass: [\"cdkConnectedOverlayPanelClass\", \"panelClass\"],\n viewportMargin: [\"cdkConnectedOverlayViewportMargin\", \"viewportMargin\"],\n scrollStrategy: [\"cdkConnectedOverlayScrollStrategy\", \"scrollStrategy\"],\n open: [\"cdkConnectedOverlayOpen\", \"open\"],\n disableClose: [\"cdkConnectedOverlayDisableClose\", \"disableClose\"],\n transformOriginSelector: [\"cdkConnectedOverlayTransformOriginOn\", \"transformOriginSelector\"],\n hasBackdrop: [\"cdkConnectedOverlayHasBackdrop\", \"hasBackdrop\", booleanAttribute],\n lockPosition: [\"cdkConnectedOverlayLockPosition\", \"lockPosition\", booleanAttribute],\n flexibleDimensions: [\"cdkConnectedOverlayFlexibleDimensions\", \"flexibleDimensions\", booleanAttribute],\n growAfterOpen: [\"cdkConnectedOverlayGrowAfterOpen\", \"growAfterOpen\", booleanAttribute],\n push: [\"cdkConnectedOverlayPush\", \"push\", booleanAttribute],\n disposeOnNavigation: [\"cdkConnectedOverlayDisposeOnNavigation\", \"disposeOnNavigation\", booleanAttribute]\n },\n outputs: {\n backdropClick: \"backdropClick\",\n positionChange: \"positionChange\",\n attach: \"attach\",\n detach: \"detach\",\n overlayKeydown: \"overlayKeydown\",\n overlayOutsideClick: \"overlayOutsideClick\"\n },\n exportAs: [\"cdkConnectedOverlay\"],\n standalone: true,\n features: [i0.ɵɵInputTransformsFeature, i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkConnectedOverlay, [{\n type: Directive,\n args: [{\n selector: '[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]',\n exportAs: 'cdkConnectedOverlay',\n standalone: true\n }]\n }], () => [{\n type: Overlay\n }, {\n type: i0.TemplateRef\n }, {\n type: i0.ViewContainerRef\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY]\n }]\n }, {\n type: i5.Directionality,\n decorators: [{\n type: Optional\n }]\n }], {\n origin: [{\n type: Input,\n args: ['cdkConnectedOverlayOrigin']\n }],\n positions: [{\n type: Input,\n args: ['cdkConnectedOverlayPositions']\n }],\n positionStrategy: [{\n type: Input,\n args: ['cdkConnectedOverlayPositionStrategy']\n }],\n offsetX: [{\n type: Input,\n args: ['cdkConnectedOverlayOffsetX']\n }],\n offsetY: [{\n type: Input,\n args: ['cdkConnectedOverlayOffsetY']\n }],\n width: [{\n type: Input,\n args: ['cdkConnectedOverlayWidth']\n }],\n height: [{\n type: Input,\n args: ['cdkConnectedOverlayHeight']\n }],\n minWidth: [{\n type: Input,\n args: ['cdkConnectedOverlayMinWidth']\n }],\n minHeight: [{\n type: Input,\n args: ['cdkConnectedOverlayMinHeight']\n }],\n backdropClass: [{\n type: Input,\n args: ['cdkConnectedOverlayBackdropClass']\n }],\n panelClass: [{\n type: Input,\n args: ['cdkConnectedOverlayPanelClass']\n }],\n viewportMargin: [{\n type: Input,\n args: ['cdkConnectedOverlayViewportMargin']\n }],\n scrollStrategy: [{\n type: Input,\n args: ['cdkConnectedOverlayScrollStrategy']\n }],\n open: [{\n type: Input,\n args: ['cdkConnectedOverlayOpen']\n }],\n disableClose: [{\n type: Input,\n args: ['cdkConnectedOverlayDisableClose']\n }],\n transformOriginSelector: [{\n type: Input,\n args: ['cdkConnectedOverlayTransformOriginOn']\n }],\n hasBackdrop: [{\n type: Input,\n args: [{\n alias: 'cdkConnectedOverlayHasBackdrop',\n transform: booleanAttribute\n }]\n }],\n lockPosition: [{\n type: Input,\n args: [{\n alias: 'cdkConnectedOverlayLockPosition',\n transform: booleanAttribute\n }]\n }],\n flexibleDimensions: [{\n type: Input,\n args: [{\n alias: 'cdkConnectedOverlayFlexibleDimensions',\n transform: booleanAttribute\n }]\n }],\n growAfterOpen: [{\n type: Input,\n args: [{\n alias: 'cdkConnectedOverlayGrowAfterOpen',\n transform: booleanAttribute\n }]\n }],\n push: [{\n type: Input,\n args: [{\n alias: 'cdkConnectedOverlayPush',\n transform: booleanAttribute\n }]\n }],\n disposeOnNavigation: [{\n type: Input,\n args: [{\n alias: 'cdkConnectedOverlayDisposeOnNavigation',\n transform: booleanAttribute\n }]\n }],\n backdropClick: [{\n type: Output\n }],\n positionChange: [{\n type: Output\n }],\n attach: [{\n type: Output\n }],\n detach: [{\n type: Output\n }],\n overlayKeydown: [{\n type: Output\n }],\n overlayOutsideClick: [{\n type: Output\n }]\n });\n})();\n/** @docs-private */\nfunction CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER = {\n provide: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY\n};\nclass OverlayModule {\n static {\n this.ɵfac = function OverlayModule_Factory(t) {\n return new (t || OverlayModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: OverlayModule,\n imports: [BidiModule, PortalModule, ScrollingModule, CdkConnectedOverlay, CdkOverlayOrigin],\n exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER],\n imports: [BidiModule, PortalModule, ScrollingModule, ScrollingModule]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(OverlayModule, [{\n type: NgModule,\n args: [{\n imports: [BidiModule, PortalModule, ScrollingModule, CdkConnectedOverlay, CdkOverlayOrigin],\n exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule],\n providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER]\n }]\n }], null, null);\n})();\n\n/**\n * Alternative to OverlayContainer that supports correct displaying of overlay elements in\n * Fullscreen mode\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen\n *\n * Should be provided in the root component.\n */\nclass FullscreenOverlayContainer extends OverlayContainer {\n constructor(_document, platform) {\n super(_document, platform);\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this._fullScreenEventName && this._fullScreenListener) {\n this._document.removeEventListener(this._fullScreenEventName, this._fullScreenListener);\n }\n }\n _createContainer() {\n super._createContainer();\n this._adjustParentForFullscreenChange();\n this._addFullscreenChangeListener(() => this._adjustParentForFullscreenChange());\n }\n _adjustParentForFullscreenChange() {\n if (!this._containerElement) {\n return;\n }\n const fullscreenElement = this.getFullscreenElement();\n const parent = fullscreenElement || this._document.body;\n parent.appendChild(this._containerElement);\n }\n _addFullscreenChangeListener(fn) {\n const eventName = this._getEventName();\n if (eventName) {\n if (this._fullScreenListener) {\n this._document.removeEventListener(eventName, this._fullScreenListener);\n }\n this._document.addEventListener(eventName, fn);\n this._fullScreenListener = fn;\n }\n }\n _getEventName() {\n if (!this._fullScreenEventName) {\n const _document = this._document;\n if (_document.fullscreenEnabled) {\n this._fullScreenEventName = 'fullscreenchange';\n } else if (_document.webkitFullscreenEnabled) {\n this._fullScreenEventName = 'webkitfullscreenchange';\n } else if (_document.mozFullScreenEnabled) {\n this._fullScreenEventName = 'mozfullscreenchange';\n } else if (_document.msFullscreenEnabled) {\n this._fullScreenEventName = 'MSFullscreenChange';\n }\n }\n return this._fullScreenEventName;\n }\n /**\n * When the page is put into fullscreen mode, a specific element is specified.\n * Only that element and its children are visible when in fullscreen mode.\n */\n getFullscreenElement() {\n const _document = this._document;\n return _document.fullscreenElement || _document.webkitFullscreenElement || _document.mozFullScreenElement || _document.msFullscreenElement || null;\n }\n static {\n this.ɵfac = function FullscreenOverlayContainer_Factory(t) {\n return new (t || FullscreenOverlayContainer)(i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i1$1.Platform));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: FullscreenOverlayContainer,\n factory: FullscreenOverlayContainer.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(FullscreenOverlayContainer, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }, {\n type: i1$1.Platform\n }], null);\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BlockScrollStrategy, CdkConnectedOverlay, CdkOverlayOrigin, CloseScrollStrategy, ConnectedOverlayPositionChange, ConnectionPositionPair, FlexibleConnectedPositionStrategy, FullscreenOverlayContainer, GlobalPositionStrategy, NoopScrollStrategy, Overlay, OverlayConfig, OverlayContainer, OverlayKeyboardDispatcher, OverlayModule, OverlayOutsideClickDispatcher, OverlayPositionBuilder, OverlayRef, RepositionScrollStrategy, STANDARD_DROPDOWN_ADJACENT_POSITIONS, STANDARD_DROPDOWN_BELOW_POSITIONS, ScrollStrategyOptions, ScrollingVisibility, validateHorizontalPosition, validateVerticalPosition };\n"], + "mappings": "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", + "names": ["document", "window", "document", "document"] +} diff --git a/.angular/cache/17.0.7/vite/deps/chunk-BXV7YWBX.js.map b/.angular/cache/17.0.7/vite/deps/chunk-BXV7YWBX.js.map deleted file mode 100644 index e91122e..0000000 --- a/.angular/cache/17.0.7/vite/deps/chunk-BXV7YWBX.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-no-animation.mjs", "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-overlay.mjs", "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-tooltip.mjs"], - "sourcesContent": ["import * as i0 from '@angular/core';\nimport { Directive, Optional, Inject, Input, NgModule } from '@angular/core';\nimport { __decorate } from 'tslib';\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { InputBoolean } from 'ng-zorro-antd/core/util';\nconst DISABLED_CLASSNAME = 'nz-animate-disabled';\nclass NzNoAnimationDirective {\n constructor(element, renderer, animationType) {\n this.element = element;\n this.renderer = renderer;\n this.animationType = animationType;\n this.nzNoAnimation = false;\n }\n ngOnChanges() {\n this.updateClass();\n }\n ngAfterViewInit() {\n this.updateClass();\n }\n updateClass() {\n const element = coerceElement(this.element);\n if (!element) {\n return;\n }\n if (this.nzNoAnimation || this.animationType === 'NoopAnimations') {\n this.renderer.addClass(element, DISABLED_CLASSNAME);\n } else {\n this.renderer.removeClass(element, DISABLED_CLASSNAME);\n }\n }\n static {\n this.ɵfac = function NzNoAnimationDirective_Factory(t) {\n return new (t || NzNoAnimationDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzNoAnimationDirective,\n selectors: [[\"\", \"nzNoAnimation\", \"\"]],\n inputs: {\n nzNoAnimation: \"nzNoAnimation\"\n },\n exportAs: [\"nzNoAnimation\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n__decorate([InputBoolean()], NzNoAnimationDirective.prototype, \"nzNoAnimation\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzNoAnimationDirective, [{\n type: Directive,\n args: [{\n selector: '[nzNoAnimation]',\n exportAs: 'nzNoAnimation',\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: i0.Renderer2\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }]\n }], {\n nzNoAnimation: [{\n type: Input\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzNoAnimationModule {\n static {\n this.ɵfac = function NzNoAnimationModule_Factory(t) {\n return new (t || NzNoAnimationModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NzNoAnimationModule,\n imports: [NzNoAnimationDirective],\n exports: [NzNoAnimationDirective]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzNoAnimationModule, [{\n type: NgModule,\n args: [{\n imports: [NzNoAnimationDirective],\n exports: [NzNoAnimationDirective]\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NzNoAnimationDirective, NzNoAnimationModule };\n", "import { __decorate } from 'tslib';\nimport * as i1 from '@angular/cdk/overlay';\nimport { ConnectionPositionPair, CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport * as i0 from '@angular/core';\nimport { ElementRef, Directive, Input, NgModule } from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport * as i2 from 'ng-zorro-antd/core/services';\nimport { NzDestroyService } from 'ng-zorro-antd/core/services';\nimport { InputBoolean } from 'ng-zorro-antd/core/util';\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst POSITION_MAP = {\n top: new ConnectionPositionPair({\n originX: 'center',\n originY: 'top'\n }, {\n overlayX: 'center',\n overlayY: 'bottom'\n }),\n topCenter: new ConnectionPositionPair({\n originX: 'center',\n originY: 'top'\n }, {\n overlayX: 'center',\n overlayY: 'bottom'\n }),\n topLeft: new ConnectionPositionPair({\n originX: 'start',\n originY: 'top'\n }, {\n overlayX: 'start',\n overlayY: 'bottom'\n }),\n topRight: new ConnectionPositionPair({\n originX: 'end',\n originY: 'top'\n }, {\n overlayX: 'end',\n overlayY: 'bottom'\n }),\n right: new ConnectionPositionPair({\n originX: 'end',\n originY: 'center'\n }, {\n overlayX: 'start',\n overlayY: 'center'\n }),\n rightTop: new ConnectionPositionPair({\n originX: 'end',\n originY: 'top'\n }, {\n overlayX: 'start',\n overlayY: 'top'\n }),\n rightBottom: new ConnectionPositionPair({\n originX: 'end',\n originY: 'bottom'\n }, {\n overlayX: 'start',\n overlayY: 'bottom'\n }),\n bottom: new ConnectionPositionPair({\n originX: 'center',\n originY: 'bottom'\n }, {\n overlayX: 'center',\n overlayY: 'top'\n }),\n bottomCenter: new ConnectionPositionPair({\n originX: 'center',\n originY: 'bottom'\n }, {\n overlayX: 'center',\n overlayY: 'top'\n }),\n bottomLeft: new ConnectionPositionPair({\n originX: 'start',\n originY: 'bottom'\n }, {\n overlayX: 'start',\n overlayY: 'top'\n }),\n bottomRight: new ConnectionPositionPair({\n originX: 'end',\n originY: 'bottom'\n }, {\n overlayX: 'end',\n overlayY: 'top'\n }),\n left: new ConnectionPositionPair({\n originX: 'start',\n originY: 'center'\n }, {\n overlayX: 'end',\n overlayY: 'center'\n }),\n leftTop: new ConnectionPositionPair({\n originX: 'start',\n originY: 'top'\n }, {\n overlayX: 'end',\n overlayY: 'top'\n }),\n leftBottom: new ConnectionPositionPair({\n originX: 'start',\n originY: 'bottom'\n }, {\n overlayX: 'end',\n overlayY: 'bottom'\n })\n};\nconst DEFAULT_TOOLTIP_POSITIONS = [POSITION_MAP.top, POSITION_MAP.right, POSITION_MAP.bottom, POSITION_MAP.left];\nconst DEFAULT_CASCADER_POSITIONS = [POSITION_MAP.bottomLeft, POSITION_MAP.bottomRight, POSITION_MAP.topLeft, POSITION_MAP.topRight, POSITION_MAP.topCenter, POSITION_MAP.bottomCenter];\nconst DEFAULT_MENTION_TOP_POSITIONS = [new ConnectionPositionPair({\n originX: 'start',\n originY: 'bottom'\n}, {\n overlayX: 'start',\n overlayY: 'bottom'\n}), new ConnectionPositionPair({\n originX: 'start',\n originY: 'bottom'\n}, {\n overlayX: 'end',\n overlayY: 'bottom'\n})];\nconst DEFAULT_MENTION_BOTTOM_POSITIONS = [POSITION_MAP.bottomLeft, new ConnectionPositionPair({\n originX: 'start',\n originY: 'bottom'\n}, {\n overlayX: 'end',\n overlayY: 'top'\n})];\nfunction getPlacementName(position) {\n for (const placement in POSITION_MAP) {\n if (position.connectionPair.originX === POSITION_MAP[placement].originX && position.connectionPair.originY === POSITION_MAP[placement].originY && position.connectionPair.overlayX === POSITION_MAP[placement].overlayX && position.connectionPair.overlayY === POSITION_MAP[placement].overlayY) {\n return placement;\n }\n }\n return undefined;\n}\nconst DATE_PICKER_POSITION_MAP = {\n bottomLeft: new ConnectionPositionPair({\n originX: 'start',\n originY: 'bottom'\n }, {\n overlayX: 'start',\n overlayY: 'top'\n }, undefined, 2),\n topLeft: new ConnectionPositionPair({\n originX: 'start',\n originY: 'top'\n }, {\n overlayX: 'start',\n overlayY: 'bottom'\n }, undefined, -2),\n bottomRight: new ConnectionPositionPair({\n originX: 'end',\n originY: 'bottom'\n }, {\n overlayX: 'end',\n overlayY: 'top'\n }, undefined, 2),\n topRight: new ConnectionPositionPair({\n originX: 'end',\n originY: 'top'\n }, {\n overlayX: 'end',\n overlayY: 'bottom'\n }, undefined, -2)\n};\nconst DEFAULT_DATE_PICKER_POSITIONS = [DATE_PICKER_POSITION_MAP.bottomLeft, DATE_PICKER_POSITION_MAP.topLeft, DATE_PICKER_POSITION_MAP.bottomRight, DATE_PICKER_POSITION_MAP.topRight];\nclass NzConnectedOverlayDirective {\n constructor(cdkConnectedOverlay, nzDestroyService) {\n this.cdkConnectedOverlay = cdkConnectedOverlay;\n this.nzDestroyService = nzDestroyService;\n this.nzArrowPointAtCenter = false;\n this.cdkConnectedOverlay.backdropClass = 'nz-overlay-transparent-backdrop';\n this.cdkConnectedOverlay.positionChange.pipe(takeUntil(this.nzDestroyService)).subscribe(position => {\n if (this.nzArrowPointAtCenter) {\n this.updateArrowPosition(position);\n }\n });\n }\n updateArrowPosition(position) {\n const originRect = this.getOriginRect();\n const placement = getPlacementName(position);\n let offsetX = 0;\n let offsetY = 0;\n if (placement === 'topLeft' || placement === 'bottomLeft') {\n offsetX = originRect.width / 2 - 14;\n } else if (placement === 'topRight' || placement === 'bottomRight') {\n offsetX = -(originRect.width / 2 - 14);\n } else if (placement === 'leftTop' || placement === 'rightTop') {\n offsetY = originRect.height / 2 - 10;\n } else if (placement === 'leftBottom' || placement === 'rightBottom') {\n offsetY = -(originRect.height / 2 - 10);\n }\n if (this.cdkConnectedOverlay.offsetX !== offsetX || this.cdkConnectedOverlay.offsetY !== offsetY) {\n this.cdkConnectedOverlay.offsetY = offsetY;\n this.cdkConnectedOverlay.offsetX = offsetX;\n this.cdkConnectedOverlay.overlayRef.updatePosition();\n }\n }\n getFlexibleConnectedPositionStrategyOrigin() {\n if (this.cdkConnectedOverlay.origin instanceof CdkOverlayOrigin) {\n return this.cdkConnectedOverlay.origin.elementRef;\n } else {\n return this.cdkConnectedOverlay.origin;\n }\n }\n getOriginRect() {\n const origin = this.getFlexibleConnectedPositionStrategyOrigin();\n if (origin instanceof ElementRef) {\n return origin.nativeElement.getBoundingClientRect();\n }\n // Check for Element so SVG elements are also supported.\n if (origin instanceof Element) {\n return origin.getBoundingClientRect();\n }\n const width = origin.width || 0;\n const height = origin.height || 0;\n // If the origin is a point, return a client rect as if it was a 0x0 element at the point.\n return {\n top: origin.y,\n bottom: origin.y + height,\n left: origin.x,\n right: origin.x + width,\n height,\n width\n };\n }\n static {\n this.ɵfac = function NzConnectedOverlayDirective_Factory(t) {\n return new (t || NzConnectedOverlayDirective)(i0.ɵɵdirectiveInject(i1.CdkConnectedOverlay), i0.ɵɵdirectiveInject(i2.NzDestroyService));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzConnectedOverlayDirective,\n selectors: [[\"\", \"cdkConnectedOverlay\", \"\", \"nzConnectedOverlay\", \"\"]],\n inputs: {\n nzArrowPointAtCenter: \"nzArrowPointAtCenter\"\n },\n exportAs: [\"nzConnectedOverlay\"],\n features: [i0.ɵɵProvidersFeature([NzDestroyService])]\n });\n }\n}\n__decorate([InputBoolean()], NzConnectedOverlayDirective.prototype, \"nzArrowPointAtCenter\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzConnectedOverlayDirective, [{\n type: Directive,\n args: [{\n selector: '[cdkConnectedOverlay][nzConnectedOverlay]',\n exportAs: 'nzConnectedOverlay',\n providers: [NzDestroyService]\n }]\n }], () => [{\n type: i1.CdkConnectedOverlay\n }, {\n type: i2.NzDestroyService\n }], {\n nzArrowPointAtCenter: [{\n type: Input\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzOverlayModule {\n static {\n this.ɵfac = function NzOverlayModule_Factory(t) {\n return new (t || NzOverlayModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NzOverlayModule,\n declarations: [NzConnectedOverlayDirective],\n exports: [NzConnectedOverlayDirective]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzOverlayModule, [{\n type: NgModule,\n args: [{\n declarations: [NzConnectedOverlayDirective],\n exports: [NzConnectedOverlayDirective]\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DATE_PICKER_POSITION_MAP, DEFAULT_CASCADER_POSITIONS, DEFAULT_DATE_PICKER_POSITIONS, DEFAULT_MENTION_BOTTOM_POSITIONS, DEFAULT_MENTION_TOP_POSITIONS, DEFAULT_TOOLTIP_POSITIONS, NzConnectedOverlayDirective, NzOverlayModule, POSITION_MAP, getPlacementName };\n", "import { __decorate } from 'tslib';\nimport * as i3$1 from '@angular/cdk/overlay';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { NgClass, NgStyle } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Directive, Optional, ViewChild, TemplateRef, Host, Input, Output, Component, ChangeDetectionStrategy, ViewEncapsulation, NgModule } from '@angular/core';\nimport { zoomBigMotion } from 'ng-zorro-antd/core/animation';\nimport { isPresetColor } from 'ng-zorro-antd/core/color';\nimport * as i1 from 'ng-zorro-antd/core/no-animation';\nimport { NzNoAnimationDirective } from 'ng-zorro-antd/core/no-animation';\nimport * as i4 from 'ng-zorro-antd/core/outlet';\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport * as i5 from 'ng-zorro-antd/core/overlay';\nimport { POSITION_MAP, DEFAULT_TOOLTIP_POSITIONS, getPlacementName, NzOverlayModule } from 'ng-zorro-antd/core/overlay';\nimport { toBoolean, isNotNil, InputBoolean } from 'ng-zorro-antd/core/util';\nimport { Subject, asapScheduler } from 'rxjs';\nimport { distinctUntilChanged, takeUntil, filter, delay } from 'rxjs/operators';\nimport * as i2 from 'ng-zorro-antd/core/config';\nimport * as i3 from '@angular/cdk/bidi';\nconst _c0 = [\"overlay\"];\nfunction NzToolTipComponent_ng_template_0_ng_container_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtext(1);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(1);\n i0.ɵɵtextInterpolate(ctx_r2.nzTitle);\n }\n}\nfunction NzToolTipComponent_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 2)(1, \"div\", 3)(2, \"div\", 4);\n i0.ɵɵelement(3, \"span\", 5);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(4, \"div\", 6);\n i0.ɵɵtemplate(5, NzToolTipComponent_ng_template_0_ng_container_5_Template, 2, 1, \"ng-container\", 7);\n i0.ɵɵelementEnd()()();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"ant-tooltip-rtl\", ctx_r0.dir === \"rtl\");\n i0.ɵɵproperty(\"ngClass\", ctx_r0._classMap)(\"ngStyle\", ctx_r0.nzOverlayStyle)(\"@.disabled\", !!(ctx_r0.noAnimation == null ? null : ctx_r0.noAnimation.nzNoAnimation))(\"nzNoAnimation\", ctx_r0.noAnimation == null ? null : ctx_r0.noAnimation.nzNoAnimation)(\"@zoomBigMotion\", \"active\");\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngStyle\", ctx_r0._contentStyleMap);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngStyle\", ctx_r0._contentStyleMap);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"nzStringTemplateOutlet\", ctx_r0.nzTitle)(\"nzStringTemplateOutletContext\", ctx_r0.nzTitleContext);\n }\n}\nclass NzTooltipBaseDirective {\n /**\n * This true title that would be used in other parts on this component.\n */\n get _title() {\n return this.title || this.directiveTitle || null;\n }\n get _content() {\n return this.content || this.directiveContent || null;\n }\n get _trigger() {\n return typeof this.trigger !== 'undefined' ? this.trigger : 'hover';\n }\n get _placement() {\n const p = this.placement;\n return Array.isArray(p) && p.length > 0 ? p : typeof p === 'string' && p ? [p] : ['top'];\n }\n get _visible() {\n return (typeof this.visible !== 'undefined' ? this.visible : this.internalVisible) || false;\n }\n get _mouseEnterDelay() {\n return this.mouseEnterDelay || 0.15;\n }\n get _mouseLeaveDelay() {\n return this.mouseLeaveDelay || 0.1;\n }\n get _overlayClassName() {\n return this.overlayClassName || null;\n }\n get _overlayStyle() {\n return this.overlayStyle || null;\n }\n getProxyPropertyMap() {\n return {\n noAnimation: ['noAnimation', () => !!this.noAnimation]\n };\n }\n constructor(elementRef, hostView, renderer, noAnimation, nzConfigService) {\n this.elementRef = elementRef;\n this.hostView = hostView;\n this.renderer = renderer;\n this.noAnimation = noAnimation;\n this.nzConfigService = nzConfigService;\n this.visibleChange = new EventEmitter();\n this.internalVisible = false;\n this.destroy$ = new Subject();\n this.triggerDisposables = [];\n }\n ngOnChanges(changes) {\n const {\n trigger\n } = changes;\n if (trigger && !trigger.isFirstChange()) {\n this.registerTriggers();\n }\n if (this.component) {\n this.updatePropertiesByChanges(changes);\n }\n }\n ngAfterViewInit() {\n this.createComponent();\n this.registerTriggers();\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n // Clear toggling timer. Issue #3875 #4317 #4386\n this.clearTogglingTimer();\n this.removeTriggerListeners();\n }\n show() {\n this.component?.show();\n }\n hide() {\n this.component?.hide();\n }\n /**\n * Force the component to update its position.\n */\n updatePosition() {\n if (this.component) {\n this.component.updatePosition();\n }\n }\n /**\n * Create a dynamic tooltip component. This method can be override.\n */\n createComponent() {\n const componentRef = this.componentRef;\n this.component = componentRef.instance;\n // Remove the component's DOM because it should be in the overlay container.\n this.renderer.removeChild(this.renderer.parentNode(this.elementRef.nativeElement), componentRef.location.nativeElement);\n this.component.setOverlayOrigin(this.origin || this.elementRef);\n this.initProperties();\n const ngVisibleChange$ = this.component.nzVisibleChange.pipe(distinctUntilChanged());\n ngVisibleChange$.pipe(takeUntil(this.destroy$)).subscribe(visible => {\n this.internalVisible = visible;\n this.visibleChange.emit(visible);\n });\n // In some cases, the rendering takes into account the height at which the `arrow` is in wrong place,\n // so `cdk` sets the container position incorrectly.\n // To avoid this, after placing the `arrow` in the correct position, we should `re-calculate` the position of the `overlay`.\n ngVisibleChange$.pipe(filter(visible => visible), delay(0, asapScheduler), filter(() => Boolean(this.component?.overlay?.overlayRef)), takeUntil(this.destroy$)).subscribe(() => {\n this.component?.updatePosition();\n });\n }\n registerTriggers() {\n // When the method gets invoked, all properties has been synced to the dynamic component.\n // After removing the old API, we can just check the directive's own `nzTrigger`.\n const el = this.elementRef.nativeElement;\n const trigger = this.trigger;\n this.removeTriggerListeners();\n if (trigger === 'hover') {\n let overlayElement;\n this.triggerDisposables.push(this.renderer.listen(el, 'mouseenter', () => {\n this.delayEnterLeave(true, true, this._mouseEnterDelay);\n }));\n this.triggerDisposables.push(this.renderer.listen(el, 'mouseleave', () => {\n this.delayEnterLeave(true, false, this._mouseLeaveDelay);\n if (this.component?.overlay.overlayRef && !overlayElement) {\n overlayElement = this.component.overlay.overlayRef.overlayElement;\n this.triggerDisposables.push(this.renderer.listen(overlayElement, 'mouseenter', () => {\n this.delayEnterLeave(false, true, this._mouseEnterDelay);\n }));\n this.triggerDisposables.push(this.renderer.listen(overlayElement, 'mouseleave', () => {\n this.delayEnterLeave(false, false, this._mouseLeaveDelay);\n }));\n }\n }));\n } else if (trigger === 'focus') {\n this.triggerDisposables.push(this.renderer.listen(el, 'focusin', () => this.show()));\n this.triggerDisposables.push(this.renderer.listen(el, 'focusout', () => this.hide()));\n } else if (trigger === 'click') {\n this.triggerDisposables.push(this.renderer.listen(el, 'click', e => {\n e.preventDefault();\n this.show();\n }));\n }\n // Else do nothing because user wants to control the visibility programmatically.\n }\n\n updatePropertiesByChanges(changes) {\n this.updatePropertiesByKeys(Object.keys(changes));\n }\n updatePropertiesByKeys(keys) {\n const mappingProperties = {\n // common mappings\n title: ['nzTitle', () => this._title],\n directiveTitle: ['nzTitle', () => this._title],\n content: ['nzContent', () => this._content],\n directiveContent: ['nzContent', () => this._content],\n trigger: ['nzTrigger', () => this._trigger],\n placement: ['nzPlacement', () => this._placement],\n visible: ['nzVisible', () => this._visible],\n mouseEnterDelay: ['nzMouseEnterDelay', () => this._mouseEnterDelay],\n mouseLeaveDelay: ['nzMouseLeaveDelay', () => this._mouseLeaveDelay],\n overlayClassName: ['nzOverlayClassName', () => this._overlayClassName],\n overlayStyle: ['nzOverlayStyle', () => this._overlayStyle],\n arrowPointAtCenter: ['nzArrowPointAtCenter', () => this.arrowPointAtCenter],\n cdkConnectedOverlayPush: ['cdkConnectedOverlayPush', () => this.cdkConnectedOverlayPush],\n ...this.getProxyPropertyMap()\n };\n (keys || Object.keys(mappingProperties).filter(key => !key.startsWith('directive'))).forEach(property => {\n if (mappingProperties[property]) {\n const [name, valueFn] = mappingProperties[property];\n this.updateComponentValue(name, valueFn());\n }\n });\n this.component?.updateByDirective();\n }\n initProperties() {\n this.updatePropertiesByKeys();\n }\n updateComponentValue(key, value) {\n if (typeof value !== 'undefined') {\n // @ts-ignore\n this.component[key] = value;\n }\n }\n delayEnterLeave(isOrigin, isEnter, delay = -1) {\n if (this.delayTimer) {\n this.clearTogglingTimer();\n } else if (delay > 0) {\n this.delayTimer = setTimeout(() => {\n this.delayTimer = undefined;\n isEnter ? this.show() : this.hide();\n }, delay * 1000);\n } else {\n // `isOrigin` is used due to the tooltip will not hide immediately\n // (may caused by the fade-out animation).\n isEnter && isOrigin ? this.show() : this.hide();\n }\n }\n removeTriggerListeners() {\n this.triggerDisposables.forEach(dispose => dispose());\n this.triggerDisposables.length = 0;\n }\n clearTogglingTimer() {\n if (this.delayTimer) {\n clearTimeout(this.delayTimer);\n this.delayTimer = undefined;\n }\n }\n static {\n this.ɵfac = function NzTooltipBaseDirective_Factory(t) {\n return new (t || NzTooltipBaseDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i1.NzNoAnimationDirective), i0.ɵɵdirectiveInject(i2.NzConfigService));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzTooltipBaseDirective,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzTooltipBaseDirective, [{\n type: Directive\n }], () => [{\n type: i0.ElementRef\n }, {\n type: i0.ViewContainerRef\n }, {\n type: i0.Renderer2\n }, {\n type: i1.NzNoAnimationDirective\n }, {\n type: i2.NzConfigService\n }], null);\n})();\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nclass NzTooltipBaseComponent {\n set nzVisible(value) {\n const visible = toBoolean(value);\n if (this._visible !== visible) {\n this._visible = visible;\n this.nzVisibleChange.next(visible);\n }\n }\n get nzVisible() {\n return this._visible;\n }\n set nzTrigger(value) {\n this._trigger = value;\n }\n get nzTrigger() {\n return this._trigger;\n }\n set nzPlacement(value) {\n const preferredPosition = value.map(placement => POSITION_MAP[placement]);\n this._positions = [...preferredPosition, ...DEFAULT_TOOLTIP_POSITIONS];\n }\n constructor(cdr, directionality, noAnimation) {\n this.cdr = cdr;\n this.directionality = directionality;\n this.noAnimation = noAnimation;\n this.nzTitle = null;\n this.nzContent = null;\n this.nzArrowPointAtCenter = false;\n this.nzOverlayStyle = {};\n this.nzBackdrop = false;\n this.cdkConnectedOverlayPush = true;\n this.nzVisibleChange = new Subject();\n this._visible = false;\n this._trigger = 'hover';\n this.preferredPlacement = 'top';\n this.dir = 'ltr';\n this._classMap = {};\n this._prefix = 'ant-tooltip';\n this._positions = [...DEFAULT_TOOLTIP_POSITIONS];\n this.destroy$ = new Subject();\n }\n ngOnInit() {\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe(direction => {\n this.dir = direction;\n this.cdr.detectChanges();\n });\n this.dir = this.directionality.value;\n }\n ngOnDestroy() {\n this.nzVisibleChange.complete();\n this.destroy$.next();\n this.destroy$.complete();\n }\n show() {\n if (this.nzVisible) {\n return;\n }\n if (!this.isEmpty()) {\n this.nzVisible = true;\n this.nzVisibleChange.next(true);\n this.cdr.detectChanges();\n }\n // for ltr for overlay to display tooltip in correct placement in rtl direction.\n if (this.origin && this.overlay && this.overlay.overlayRef && this.overlay.overlayRef.getDirection() === 'rtl') {\n this.overlay.overlayRef.setDirection('ltr');\n }\n }\n hide() {\n if (!this.nzVisible) {\n return;\n }\n this.nzVisible = false;\n this.nzVisibleChange.next(false);\n this.cdr.detectChanges();\n }\n updateByDirective() {\n this.updateStyles();\n this.cdr.detectChanges();\n Promise.resolve().then(() => {\n this.updatePosition();\n this.updateVisibilityByTitle();\n });\n }\n /**\n * Force the component to update its position.\n */\n updatePosition() {\n if (this.origin && this.overlay && this.overlay.overlayRef) {\n this.overlay.overlayRef.updatePosition();\n }\n }\n onPositionChange(position) {\n this.preferredPlacement = getPlacementName(position);\n this.updateStyles();\n // We have to trigger immediate change detection or the element would blink.\n this.cdr.detectChanges();\n }\n setOverlayOrigin(origin) {\n this.origin = origin;\n this.cdr.markForCheck();\n }\n onClickOutside(event) {\n if (!this.origin.nativeElement.contains(event.target) && this.nzTrigger !== null) {\n this.hide();\n }\n }\n /**\n * Hide the component while the content is empty.\n */\n updateVisibilityByTitle() {\n if (this.isEmpty()) {\n this.hide();\n }\n }\n updateStyles() {\n this._classMap = {\n [this.nzOverlayClassName]: true,\n [`${this._prefix}-placement-${this.preferredPlacement}`]: true\n };\n }\n static {\n this.ɵfac = function NzTooltipBaseComponent_Factory(t) {\n return new (t || NzTooltipBaseComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i3.Directionality, 8), i0.ɵɵdirectiveInject(i1.NzNoAnimationDirective));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzTooltipBaseComponent,\n viewQuery: function NzTooltipBaseComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c0, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.overlay = _t.first);\n }\n }\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzTooltipBaseComponent, [{\n type: Directive\n }], () => [{\n type: i0.ChangeDetectorRef\n }, {\n type: i3.Directionality,\n decorators: [{\n type: Optional\n }]\n }, {\n type: i1.NzNoAnimationDirective\n }], {\n overlay: [{\n type: ViewChild,\n args: ['overlay', {\n static: false\n }]\n }]\n });\n})();\nfunction isTooltipEmpty(value) {\n return value instanceof TemplateRef ? false : value === '' || !isNotNil(value);\n}\nclass NzTooltipDirective extends NzTooltipBaseDirective {\n constructor(elementRef, hostView, renderer, noAnimation) {\n super(elementRef, hostView, renderer, noAnimation);\n this.titleContext = null;\n this.trigger = 'hover';\n this.placement = 'top';\n this.cdkConnectedOverlayPush = true;\n // eslint-disable-next-line @angular-eslint/no-output-rename\n this.visibleChange = new EventEmitter();\n this.componentRef = this.hostView.createComponent(NzToolTipComponent);\n }\n getProxyPropertyMap() {\n return {\n ...super.getProxyPropertyMap(),\n nzTooltipColor: ['nzColor', () => this.nzTooltipColor],\n titleContext: ['nzTitleContext', () => this.titleContext]\n };\n }\n static {\n this.ɵfac = function NzTooltipDirective_Factory(t) {\n return new (t || NzTooltipDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i1.NzNoAnimationDirective, 9));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzTooltipDirective,\n selectors: [[\"\", \"nz-tooltip\", \"\"]],\n hostVars: 2,\n hostBindings: function NzTooltipDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"ant-tooltip-open\", ctx.visible);\n }\n },\n inputs: {\n title: [\"nzTooltipTitle\", \"title\"],\n titleContext: [\"nzTooltipTitleContext\", \"titleContext\"],\n directiveTitle: [\"nz-tooltip\", \"directiveTitle\"],\n trigger: [\"nzTooltipTrigger\", \"trigger\"],\n placement: [\"nzTooltipPlacement\", \"placement\"],\n origin: [\"nzTooltipOrigin\", \"origin\"],\n visible: [\"nzTooltipVisible\", \"visible\"],\n mouseEnterDelay: [\"nzTooltipMouseEnterDelay\", \"mouseEnterDelay\"],\n mouseLeaveDelay: [\"nzTooltipMouseLeaveDelay\", \"mouseLeaveDelay\"],\n overlayClassName: [\"nzTooltipOverlayClassName\", \"overlayClassName\"],\n overlayStyle: [\"nzTooltipOverlayStyle\", \"overlayStyle\"],\n arrowPointAtCenter: [\"nzTooltipArrowPointAtCenter\", \"arrowPointAtCenter\"],\n cdkConnectedOverlayPush: \"cdkConnectedOverlayPush\",\n nzTooltipColor: \"nzTooltipColor\"\n },\n outputs: {\n visibleChange: \"nzTooltipVisibleChange\"\n },\n exportAs: [\"nzTooltip\"],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n }\n}\n__decorate([InputBoolean()], NzTooltipDirective.prototype, \"arrowPointAtCenter\", void 0);\n__decorate([InputBoolean()], NzTooltipDirective.prototype, \"cdkConnectedOverlayPush\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzTooltipDirective, [{\n type: Directive,\n args: [{\n selector: '[nz-tooltip]',\n exportAs: 'nzTooltip',\n host: {\n '[class.ant-tooltip-open]': 'visible'\n },\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: i0.ViewContainerRef\n }, {\n type: i0.Renderer2\n }, {\n type: i1.NzNoAnimationDirective,\n decorators: [{\n type: Host\n }, {\n type: Optional\n }]\n }], {\n title: [{\n type: Input,\n args: ['nzTooltipTitle']\n }],\n titleContext: [{\n type: Input,\n args: ['nzTooltipTitleContext']\n }],\n directiveTitle: [{\n type: Input,\n args: ['nz-tooltip']\n }],\n trigger: [{\n type: Input,\n args: ['nzTooltipTrigger']\n }],\n placement: [{\n type: Input,\n args: ['nzTooltipPlacement']\n }],\n origin: [{\n type: Input,\n args: ['nzTooltipOrigin']\n }],\n visible: [{\n type: Input,\n args: ['nzTooltipVisible']\n }],\n mouseEnterDelay: [{\n type: Input,\n args: ['nzTooltipMouseEnterDelay']\n }],\n mouseLeaveDelay: [{\n type: Input,\n args: ['nzTooltipMouseLeaveDelay']\n }],\n overlayClassName: [{\n type: Input,\n args: ['nzTooltipOverlayClassName']\n }],\n overlayStyle: [{\n type: Input,\n args: ['nzTooltipOverlayStyle']\n }],\n arrowPointAtCenter: [{\n type: Input,\n args: ['nzTooltipArrowPointAtCenter']\n }],\n cdkConnectedOverlayPush: [{\n type: Input\n }],\n nzTooltipColor: [{\n type: Input\n }],\n visibleChange: [{\n type: Output,\n args: ['nzTooltipVisibleChange']\n }]\n });\n})();\nclass NzToolTipComponent extends NzTooltipBaseComponent {\n constructor(cdr, directionality, noAnimation) {\n super(cdr, directionality, noAnimation);\n this.nzTitle = null;\n this.nzTitleContext = null;\n this._contentStyleMap = {};\n }\n isEmpty() {\n return isTooltipEmpty(this.nzTitle);\n }\n updateStyles() {\n const isColorPreset = this.nzColor && isPresetColor(this.nzColor);\n this._classMap = {\n [this.nzOverlayClassName]: true,\n [`${this._prefix}-placement-${this.preferredPlacement}`]: true,\n [`${this._prefix}-${this.nzColor}`]: isColorPreset\n };\n this._contentStyleMap = {\n backgroundColor: !!this.nzColor && !isColorPreset ? this.nzColor : null,\n '--color': this.nzColor\n };\n }\n static {\n this.ɵfac = function NzToolTipComponent_Factory(t) {\n return new (t || NzToolTipComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i3.Directionality, 8), i0.ɵɵdirectiveInject(i1.NzNoAnimationDirective, 9));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzToolTipComponent,\n selectors: [[\"nz-tooltip\"]],\n exportAs: [\"nzTooltipComponent\"],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 2,\n vars: 5,\n consts: [[\"cdkConnectedOverlay\", \"\", \"nzConnectedOverlay\", \"\", 3, \"cdkConnectedOverlayOrigin\", \"cdkConnectedOverlayOpen\", \"cdkConnectedOverlayPositions\", \"cdkConnectedOverlayPush\", \"nzArrowPointAtCenter\", \"overlayOutsideClick\", \"detach\", \"positionChange\"], [\"overlay\", \"cdkConnectedOverlay\"], [1, \"ant-tooltip\", 3, \"ngClass\", \"ngStyle\", \"nzNoAnimation\"], [1, \"ant-tooltip-content\"], [1, \"ant-tooltip-arrow\"], [1, \"ant-tooltip-arrow-content\", 3, \"ngStyle\"], [1, \"ant-tooltip-inner\", 3, \"ngStyle\"], [4, \"nzStringTemplateOutlet\", \"nzStringTemplateOutletContext\"]],\n template: function NzToolTipComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NzToolTipComponent_ng_template_0_Template, 6, 11, \"ng-template\", 0, 1, i0.ɵɵtemplateRefExtractor);\n i0.ɵɵlistener(\"overlayOutsideClick\", function NzToolTipComponent_Template_ng_template_overlayOutsideClick_0_listener($event) {\n return ctx.onClickOutside($event);\n })(\"detach\", function NzToolTipComponent_Template_ng_template_detach_0_listener() {\n return ctx.hide();\n })(\"positionChange\", function NzToolTipComponent_Template_ng_template_positionChange_0_listener($event) {\n return ctx.onPositionChange($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"cdkConnectedOverlayOrigin\", ctx.origin)(\"cdkConnectedOverlayOpen\", ctx._visible)(\"cdkConnectedOverlayPositions\", ctx._positions)(\"cdkConnectedOverlayPush\", ctx.cdkConnectedOverlayPush)(\"nzArrowPointAtCenter\", ctx.nzArrowPointAtCenter);\n }\n },\n dependencies: [OverlayModule, i3$1.CdkConnectedOverlay, NgClass, NgStyle, NzNoAnimationDirective, NzOutletModule, i4.NzStringTemplateOutletDirective, NzOverlayModule, i5.NzConnectedOverlayDirective],\n encapsulation: 2,\n data: {\n animation: [zoomBigMotion]\n },\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzToolTipComponent, [{\n type: Component,\n args: [{\n selector: 'nz-tooltip',\n exportAs: 'nzTooltipComponent',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [zoomBigMotion],\n template: `\n \n \n
\n
\n \n
\n
\n {{ nzTitle }}\n
\n
\n
\n \n `,\n preserveWhitespaces: false,\n imports: [OverlayModule, NgClass, NgStyle, NzNoAnimationDirective, NzOutletModule, NzOverlayModule],\n standalone: true\n }]\n }], () => [{\n type: i0.ChangeDetectorRef\n }, {\n type: i3.Directionality,\n decorators: [{\n type: Optional\n }]\n }, {\n type: i1.NzNoAnimationDirective,\n decorators: [{\n type: Host\n }, {\n type: Optional\n }]\n }], null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzToolTipModule {\n static {\n this.ɵfac = function NzToolTipModule_Factory(t) {\n return new (t || NzToolTipModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NzToolTipModule,\n imports: [NzToolTipComponent, NzTooltipDirective],\n exports: [NzToolTipComponent, NzTooltipDirective]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [NzToolTipComponent]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzToolTipModule, [{\n type: NgModule,\n args: [{\n imports: [NzToolTipComponent, NzTooltipDirective],\n exports: [NzToolTipComponent, NzTooltipDirective]\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NzToolTipComponent, NzToolTipModule, NzTooltipBaseComponent, NzTooltipBaseDirective, NzTooltipDirective, isTooltipEmpty };\n"], - "mappings": "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", - "names": ["delay"] -} diff --git a/.angular/cache/17.0.7/vite/deps/chunk-CZEXXPIB.js b/.angular/cache/17.0.7/vite/deps/chunk-CZEXXPIB.js new file mode 100644 index 0000000..c09708e --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/chunk-CZEXXPIB.js @@ -0,0 +1,5588 @@ +import { + Title +} from "./chunk-Y4CEYMY2.js"; +import { + DOCUMENT, + HashLocationStrategy, + LOCATION_INITIALIZED, + Location, + LocationStrategy, + PathLocationStrategy, + ViewportScroller +} from "./chunk-OSQBUYO6.js"; +import { + APP_BOOTSTRAP_LISTENER, + APP_INITIALIZER, + ApplicationRef, + Attribute, + BehaviorSubject, + ChangeDetectorRef, + Compiler, + Component, + ConnectableObservable, + Console, + ContentChildren, + Directive, + EMPTY, + ENVIRONMENT_INITIALIZER, + ElementRef, + EmptyError, + EnvironmentInjector, + EventEmitter, + HostBinding, + HostListener, + InitialRenderPendingTasks, + Inject, + InjectFlags, + Injectable, + InjectionToken, + Injector, + Input, + NgModule, + NgModuleFactory$1, + NgZone, + Optional, + Output, + Renderer2, + RuntimeError, + SkipSelf, + Subject, + Subscription, + Version, + ViewContainerRef, + afterNextRender, + booleanAttribute, + catchError, + combineLatest, + concat, + concatMap, + createEnvironmentInjector, + defaultIfEmpty, + defer, + filter, + finalize, + first, + from, + inject, + isInjectable, + isNgModule, + isObservable, + isPromise, + isStandalone, + last, + makeEnvironmentProviders, + map, + mapTo, + mergeAll, + mergeMap, + of, + pipe, + refCount, + reflectComponentType, + runInInjectionContext, + scan, + setClassMetadata, + startWith, + switchMap, + take, + takeLast, + takeUntil, + tap, + throwError, + ɵɵInputTransformsFeature, + ɵɵNgOnChangesFeature, + ɵɵStandaloneFeature, + ɵɵattribute, + ɵɵcontentQuery, + ɵɵdefineComponent, + ɵɵdefineDirective, + ɵɵdefineInjectable, + ɵɵdefineInjector, + ɵɵdefineNgModule, + ɵɵdirectiveInject, + ɵɵelement, + ɵɵgetInheritedFactory, + ɵɵinject, + ɵɵinjectAttribute, + ɵɵinvalidFactory, + ɵɵlistener, + ɵɵloadQuery, + ɵɵqueryRefresh, + ɵɵsanitizeUrlOrResourceUrl +} from "./chunk-FGESKT7O.js"; +import { + __spreadProps, + __spreadValues +} from "./chunk-HSNDBVJ3.js"; + +// node_modules/@angular/router/fesm2022/router.mjs +var PRIMARY_OUTLET = "primary"; +var RouteTitleKey = Symbol("RouteTitle"); +var ParamsAsMap = class { + constructor(params) { + this.params = params || {}; + } + has(name) { + return Object.prototype.hasOwnProperty.call(this.params, name); + } + get(name) { + if (this.has(name)) { + const v = this.params[name]; + return Array.isArray(v) ? v[0] : v; + } + return null; + } + getAll(name) { + if (this.has(name)) { + const v = this.params[name]; + return Array.isArray(v) ? v : [v]; + } + return []; + } + get keys() { + return Object.keys(this.params); + } +}; +function convertToParamMap(params) { + return new ParamsAsMap(params); +} +function defaultUrlMatcher(segments, segmentGroup, route) { + const parts = route.path.split("/"); + if (parts.length > segments.length) { + return null; + } + if (route.pathMatch === "full" && (segmentGroup.hasChildren() || parts.length < segments.length)) { + return null; + } + const posParams = {}; + for (let index = 0; index < parts.length; index++) { + const part = parts[index]; + const segment = segments[index]; + const isParameter = part.startsWith(":"); + if (isParameter) { + posParams[part.substring(1)] = segment; + } else if (part !== segment.path) { + return null; + } + } + return { + consumed: segments.slice(0, parts.length), + posParams + }; +} +function shallowEqualArrays(a, b) { + if (a.length !== b.length) + return false; + for (let i = 0; i < a.length; ++i) { + if (!shallowEqual(a[i], b[i])) + return false; + } + return true; +} +function shallowEqual(a, b) { + const k1 = a ? getDataKeys(a) : void 0; + const k2 = b ? getDataKeys(b) : void 0; + if (!k1 || !k2 || k1.length != k2.length) { + return false; + } + let key; + for (let i = 0; i < k1.length; i++) { + key = k1[i]; + if (!equalArraysOrString(a[key], b[key])) { + return false; + } + } + return true; +} +function getDataKeys(obj) { + return [...Object.keys(obj), ...Object.getOwnPropertySymbols(obj)]; +} +function equalArraysOrString(a, b) { + if (Array.isArray(a) && Array.isArray(b)) { + if (a.length !== b.length) + return false; + const aSorted = [...a].sort(); + const bSorted = [...b].sort(); + return aSorted.every((val, index) => bSorted[index] === val); + } else { + return a === b; + } +} +function last2(a) { + return a.length > 0 ? a[a.length - 1] : null; +} +function wrapIntoObservable(value) { + if (isObservable(value)) { + return value; + } + if (isPromise(value)) { + return from(Promise.resolve(value)); + } + return of(value); +} +var pathCompareMap = { + "exact": equalSegmentGroups, + "subset": containsSegmentGroup +}; +var paramCompareMap = { + "exact": equalParams, + "subset": containsParams, + "ignored": () => true +}; +function containsTree(container, containee, options) { + return pathCompareMap[options.paths](container.root, containee.root, options.matrixParams) && paramCompareMap[options.queryParams](container.queryParams, containee.queryParams) && !(options.fragment === "exact" && container.fragment !== containee.fragment); +} +function equalParams(container, containee) { + return shallowEqual(container, containee); +} +function equalSegmentGroups(container, containee, matrixParams) { + if (!equalPath(container.segments, containee.segments)) + return false; + if (!matrixParamsMatch(container.segments, containee.segments, matrixParams)) { + return false; + } + if (container.numberOfChildren !== containee.numberOfChildren) + return false; + for (const c in containee.children) { + if (!container.children[c]) + return false; + if (!equalSegmentGroups(container.children[c], containee.children[c], matrixParams)) + return false; + } + return true; +} +function containsParams(container, containee) { + return Object.keys(containee).length <= Object.keys(container).length && Object.keys(containee).every((key) => equalArraysOrString(container[key], containee[key])); +} +function containsSegmentGroup(container, containee, matrixParams) { + return containsSegmentGroupHelper(container, containee, containee.segments, matrixParams); +} +function containsSegmentGroupHelper(container, containee, containeePaths, matrixParams) { + if (container.segments.length > containeePaths.length) { + const current = container.segments.slice(0, containeePaths.length); + if (!equalPath(current, containeePaths)) + return false; + if (containee.hasChildren()) + return false; + if (!matrixParamsMatch(current, containeePaths, matrixParams)) + return false; + return true; + } else if (container.segments.length === containeePaths.length) { + if (!equalPath(container.segments, containeePaths)) + return false; + if (!matrixParamsMatch(container.segments, containeePaths, matrixParams)) + return false; + for (const c in containee.children) { + if (!container.children[c]) + return false; + if (!containsSegmentGroup(container.children[c], containee.children[c], matrixParams)) { + return false; + } + } + return true; + } else { + const current = containeePaths.slice(0, container.segments.length); + const next = containeePaths.slice(container.segments.length); + if (!equalPath(container.segments, current)) + return false; + if (!matrixParamsMatch(container.segments, current, matrixParams)) + return false; + if (!container.children[PRIMARY_OUTLET]) + return false; + return containsSegmentGroupHelper(container.children[PRIMARY_OUTLET], containee, next, matrixParams); + } +} +function matrixParamsMatch(containerPaths, containeePaths, options) { + return containeePaths.every((containeeSegment, i) => { + return paramCompareMap[options](containerPaths[i].parameters, containeeSegment.parameters); + }); +} +var UrlTree = class { + constructor(root = new UrlSegmentGroup([], {}), queryParams = {}, fragment = null) { + this.root = root; + this.queryParams = queryParams; + this.fragment = fragment; + if (typeof ngDevMode === "undefined" || ngDevMode) { + if (root.segments.length > 0) { + throw new RuntimeError(4015, "The root `UrlSegmentGroup` should not contain `segments`. Instead, these segments belong in the `children` so they can be associated with a named outlet."); + } + } + } + get queryParamMap() { + if (!this._queryParamMap) { + this._queryParamMap = convertToParamMap(this.queryParams); + } + return this._queryParamMap; + } + /** @docsNotRequired */ + toString() { + return DEFAULT_SERIALIZER.serialize(this); + } +}; +var UrlSegmentGroup = class { + constructor(segments, children) { + this.segments = segments; + this.children = children; + this.parent = null; + Object.values(children).forEach((v) => v.parent = this); + } + /** Whether the segment has child segments */ + hasChildren() { + return this.numberOfChildren > 0; + } + /** Number of child segments */ + get numberOfChildren() { + return Object.keys(this.children).length; + } + /** @docsNotRequired */ + toString() { + return serializePaths(this); + } +}; +var UrlSegment = class { + constructor(path, parameters) { + this.path = path; + this.parameters = parameters; + } + get parameterMap() { + if (!this._parameterMap) { + this._parameterMap = convertToParamMap(this.parameters); + } + return this._parameterMap; + } + /** @docsNotRequired */ + toString() { + return serializePath(this); + } +}; +function equalSegments(as, bs) { + return equalPath(as, bs) && as.every((a, i) => shallowEqual(a.parameters, bs[i].parameters)); +} +function equalPath(as, bs) { + if (as.length !== bs.length) + return false; + return as.every((a, i) => a.path === bs[i].path); +} +function mapChildrenIntoArray(segment, fn) { + let res = []; + Object.entries(segment.children).forEach(([childOutlet, child]) => { + if (childOutlet === PRIMARY_OUTLET) { + res = res.concat(fn(child, childOutlet)); + } + }); + Object.entries(segment.children).forEach(([childOutlet, child]) => { + if (childOutlet !== PRIMARY_OUTLET) { + res = res.concat(fn(child, childOutlet)); + } + }); + return res; +} +var _UrlSerializer = class _UrlSerializer { +}; +_UrlSerializer.ɵfac = function UrlSerializer_Factory(t) { + return new (t || _UrlSerializer)(); +}; +_UrlSerializer.ɵprov = ɵɵdefineInjectable({ + token: _UrlSerializer, + factory: () => (() => new DefaultUrlSerializer())(), + providedIn: "root" +}); +var UrlSerializer = _UrlSerializer; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(UrlSerializer, [{ + type: Injectable, + args: [{ + providedIn: "root", + useFactory: () => new DefaultUrlSerializer() + }] + }], null, null); +})(); +var DefaultUrlSerializer = class { + /** Parses a url into a `UrlTree` */ + parse(url) { + const p = new UrlParser(url); + return new UrlTree(p.parseRootSegment(), p.parseQueryParams(), p.parseFragment()); + } + /** Converts a `UrlTree` into a url */ + serialize(tree2) { + const segment = `/${serializeSegment(tree2.root, true)}`; + const query = serializeQueryParams(tree2.queryParams); + const fragment = typeof tree2.fragment === `string` ? `#${encodeUriFragment(tree2.fragment)}` : ""; + return `${segment}${query}${fragment}`; + } +}; +var DEFAULT_SERIALIZER = new DefaultUrlSerializer(); +function serializePaths(segment) { + return segment.segments.map((p) => serializePath(p)).join("/"); +} +function serializeSegment(segment, root) { + if (!segment.hasChildren()) { + return serializePaths(segment); + } + if (root) { + const primary = segment.children[PRIMARY_OUTLET] ? serializeSegment(segment.children[PRIMARY_OUTLET], false) : ""; + const children = []; + Object.entries(segment.children).forEach(([k, v]) => { + if (k !== PRIMARY_OUTLET) { + children.push(`${k}:${serializeSegment(v, false)}`); + } + }); + return children.length > 0 ? `${primary}(${children.join("//")})` : primary; + } else { + const children = mapChildrenIntoArray(segment, (v, k) => { + if (k === PRIMARY_OUTLET) { + return [serializeSegment(segment.children[PRIMARY_OUTLET], false)]; + } + return [`${k}:${serializeSegment(v, false)}`]; + }); + if (Object.keys(segment.children).length === 1 && segment.children[PRIMARY_OUTLET] != null) { + return `${serializePaths(segment)}/${children[0]}`; + } + return `${serializePaths(segment)}/(${children.join("//")})`; + } +} +function encodeUriString(s) { + return encodeURIComponent(s).replace(/%40/g, "@").replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ","); +} +function encodeUriQuery(s) { + return encodeUriString(s).replace(/%3B/gi, ";"); +} +function encodeUriFragment(s) { + return encodeURI(s); +} +function encodeUriSegment(s) { + return encodeUriString(s).replace(/\(/g, "%28").replace(/\)/g, "%29").replace(/%26/gi, "&"); +} +function decode(s) { + return decodeURIComponent(s); +} +function decodeQuery(s) { + return decode(s.replace(/\+/g, "%20")); +} +function serializePath(path) { + return `${encodeUriSegment(path.path)}${serializeMatrixParams(path.parameters)}`; +} +function serializeMatrixParams(params) { + return Object.keys(params).map((key) => `;${encodeUriSegment(key)}=${encodeUriSegment(params[key])}`).join(""); +} +function serializeQueryParams(params) { + const strParams = Object.keys(params).map((name) => { + const value = params[name]; + return Array.isArray(value) ? value.map((v) => `${encodeUriQuery(name)}=${encodeUriQuery(v)}`).join("&") : `${encodeUriQuery(name)}=${encodeUriQuery(value)}`; + }).filter((s) => !!s); + return strParams.length ? `?${strParams.join("&")}` : ""; +} +var SEGMENT_RE = /^[^\/()?;#]+/; +function matchSegments(str) { + const match2 = str.match(SEGMENT_RE); + return match2 ? match2[0] : ""; +} +var MATRIX_PARAM_SEGMENT_RE = /^[^\/()?;=#]+/; +function matchMatrixKeySegments(str) { + const match2 = str.match(MATRIX_PARAM_SEGMENT_RE); + return match2 ? match2[0] : ""; +} +var QUERY_PARAM_RE = /^[^=?&#]+/; +function matchQueryParams(str) { + const match2 = str.match(QUERY_PARAM_RE); + return match2 ? match2[0] : ""; +} +var QUERY_PARAM_VALUE_RE = /^[^&#]+/; +function matchUrlQueryParamValue(str) { + const match2 = str.match(QUERY_PARAM_VALUE_RE); + return match2 ? match2[0] : ""; +} +var UrlParser = class { + constructor(url) { + this.url = url; + this.remaining = url; + } + parseRootSegment() { + this.consumeOptional("/"); + if (this.remaining === "" || this.peekStartsWith("?") || this.peekStartsWith("#")) { + return new UrlSegmentGroup([], {}); + } + return new UrlSegmentGroup([], this.parseChildren()); + } + parseQueryParams() { + const params = {}; + if (this.consumeOptional("?")) { + do { + this.parseQueryParam(params); + } while (this.consumeOptional("&")); + } + return params; + } + parseFragment() { + return this.consumeOptional("#") ? decodeURIComponent(this.remaining) : null; + } + parseChildren() { + if (this.remaining === "") { + return {}; + } + this.consumeOptional("/"); + const segments = []; + if (!this.peekStartsWith("(")) { + segments.push(this.parseSegment()); + } + while (this.peekStartsWith("/") && !this.peekStartsWith("//") && !this.peekStartsWith("/(")) { + this.capture("/"); + segments.push(this.parseSegment()); + } + let children = {}; + if (this.peekStartsWith("/(")) { + this.capture("/"); + children = this.parseParens(true); + } + let res = {}; + if (this.peekStartsWith("(")) { + res = this.parseParens(false); + } + if (segments.length > 0 || Object.keys(children).length > 0) { + res[PRIMARY_OUTLET] = new UrlSegmentGroup(segments, children); + } + return res; + } + // parse a segment with its matrix parameters + // ie `name;k1=v1;k2` + parseSegment() { + const path = matchSegments(this.remaining); + if (path === "" && this.peekStartsWith(";")) { + throw new RuntimeError(4009, (typeof ngDevMode === "undefined" || ngDevMode) && `Empty path url segment cannot have parameters: '${this.remaining}'.`); + } + this.capture(path); + return new UrlSegment(decode(path), this.parseMatrixParams()); + } + parseMatrixParams() { + const params = {}; + while (this.consumeOptional(";")) { + this.parseParam(params); + } + return params; + } + parseParam(params) { + const key = matchMatrixKeySegments(this.remaining); + if (!key) { + return; + } + this.capture(key); + let value = ""; + if (this.consumeOptional("=")) { + const valueMatch = matchSegments(this.remaining); + if (valueMatch) { + value = valueMatch; + this.capture(value); + } + } + params[decode(key)] = decode(value); + } + // Parse a single query parameter `name[=value]` + parseQueryParam(params) { + const key = matchQueryParams(this.remaining); + if (!key) { + return; + } + this.capture(key); + let value = ""; + if (this.consumeOptional("=")) { + const valueMatch = matchUrlQueryParamValue(this.remaining); + if (valueMatch) { + value = valueMatch; + this.capture(value); + } + } + const decodedKey = decodeQuery(key); + const decodedVal = decodeQuery(value); + if (params.hasOwnProperty(decodedKey)) { + let currentVal = params[decodedKey]; + if (!Array.isArray(currentVal)) { + currentVal = [currentVal]; + params[decodedKey] = currentVal; + } + currentVal.push(decodedVal); + } else { + params[decodedKey] = decodedVal; + } + } + // parse `(a/b//outlet_name:c/d)` + parseParens(allowPrimary) { + const segments = {}; + this.capture("("); + while (!this.consumeOptional(")") && this.remaining.length > 0) { + const path = matchSegments(this.remaining); + const next = this.remaining[path.length]; + if (next !== "/" && next !== ")" && next !== ";") { + throw new RuntimeError(4010, (typeof ngDevMode === "undefined" || ngDevMode) && `Cannot parse url '${this.url}'`); + } + let outletName = void 0; + if (path.indexOf(":") > -1) { + outletName = path.slice(0, path.indexOf(":")); + this.capture(outletName); + this.capture(":"); + } else if (allowPrimary) { + outletName = PRIMARY_OUTLET; + } + const children = this.parseChildren(); + segments[outletName] = Object.keys(children).length === 1 ? children[PRIMARY_OUTLET] : new UrlSegmentGroup([], children); + this.consumeOptional("//"); + } + return segments; + } + peekStartsWith(str) { + return this.remaining.startsWith(str); + } + // Consumes the prefix when it is present and returns whether it has been consumed + consumeOptional(str) { + if (this.peekStartsWith(str)) { + this.remaining = this.remaining.substring(str.length); + return true; + } + return false; + } + capture(str) { + if (!this.consumeOptional(str)) { + throw new RuntimeError(4011, (typeof ngDevMode === "undefined" || ngDevMode) && `Expected "${str}".`); + } + } +}; +function createRoot(rootCandidate) { + return rootCandidate.segments.length > 0 ? new UrlSegmentGroup([], { + [PRIMARY_OUTLET]: rootCandidate + }) : rootCandidate; +} +function squashSegmentGroup(segmentGroup) { + const newChildren = {}; + for (const childOutlet of Object.keys(segmentGroup.children)) { + const child = segmentGroup.children[childOutlet]; + const childCandidate = squashSegmentGroup(child); + if (childOutlet === PRIMARY_OUTLET && childCandidate.segments.length === 0 && childCandidate.hasChildren()) { + for (const [grandChildOutlet, grandChild] of Object.entries(childCandidate.children)) { + newChildren[grandChildOutlet] = grandChild; + } + } else if (childCandidate.segments.length > 0 || childCandidate.hasChildren()) { + newChildren[childOutlet] = childCandidate; + } + } + const s = new UrlSegmentGroup(segmentGroup.segments, newChildren); + return mergeTrivialChildren(s); +} +function mergeTrivialChildren(s) { + if (s.numberOfChildren === 1 && s.children[PRIMARY_OUTLET]) { + const c = s.children[PRIMARY_OUTLET]; + return new UrlSegmentGroup(s.segments.concat(c.segments), c.children); + } + return s; +} +function isUrlTree(v) { + return v instanceof UrlTree; +} +function createUrlTreeFromSnapshot(relativeTo, commands, queryParams = null, fragment = null) { + const relativeToUrlSegmentGroup = createSegmentGroupFromRoute(relativeTo); + return createUrlTreeFromSegmentGroup(relativeToUrlSegmentGroup, commands, queryParams, fragment); +} +function createSegmentGroupFromRoute(route) { + let targetGroup; + function createSegmentGroupFromRouteRecursive(currentRoute) { + const childOutlets = {}; + for (const childSnapshot of currentRoute.children) { + const root = createSegmentGroupFromRouteRecursive(childSnapshot); + childOutlets[childSnapshot.outlet] = root; + } + const segmentGroup = new UrlSegmentGroup(currentRoute.url, childOutlets); + if (currentRoute === route) { + targetGroup = segmentGroup; + } + return segmentGroup; + } + const rootCandidate = createSegmentGroupFromRouteRecursive(route.root); + const rootSegmentGroup = createRoot(rootCandidate); + return targetGroup ?? rootSegmentGroup; +} +function createUrlTreeFromSegmentGroup(relativeTo, commands, queryParams, fragment) { + let root = relativeTo; + while (root.parent) { + root = root.parent; + } + if (commands.length === 0) { + return tree(root, root, root, queryParams, fragment); + } + const nav = computeNavigation(commands); + if (nav.toRoot()) { + return tree(root, root, new UrlSegmentGroup([], {}), queryParams, fragment); + } + const position = findStartingPositionForTargetGroup(nav, root, relativeTo); + const newSegmentGroup = position.processChildren ? updateSegmentGroupChildren(position.segmentGroup, position.index, nav.commands) : updateSegmentGroup(position.segmentGroup, position.index, nav.commands); + return tree(root, position.segmentGroup, newSegmentGroup, queryParams, fragment); +} +function isMatrixParams(command) { + return typeof command === "object" && command != null && !command.outlets && !command.segmentPath; +} +function isCommandWithOutlets(command) { + return typeof command === "object" && command != null && command.outlets; +} +function tree(oldRoot, oldSegmentGroup, newSegmentGroup, queryParams, fragment) { + let qp = {}; + if (queryParams) { + Object.entries(queryParams).forEach(([name, value]) => { + qp[name] = Array.isArray(value) ? value.map((v) => `${v}`) : `${value}`; + }); + } + let rootCandidate; + if (oldRoot === oldSegmentGroup) { + rootCandidate = newSegmentGroup; + } else { + rootCandidate = replaceSegment(oldRoot, oldSegmentGroup, newSegmentGroup); + } + const newRoot = createRoot(squashSegmentGroup(rootCandidate)); + return new UrlTree(newRoot, qp, fragment); +} +function replaceSegment(current, oldSegment, newSegment) { + const children = {}; + Object.entries(current.children).forEach(([outletName, c]) => { + if (c === oldSegment) { + children[outletName] = newSegment; + } else { + children[outletName] = replaceSegment(c, oldSegment, newSegment); + } + }); + return new UrlSegmentGroup(current.segments, children); +} +var Navigation = class { + constructor(isAbsolute, numberOfDoubleDots, commands) { + this.isAbsolute = isAbsolute; + this.numberOfDoubleDots = numberOfDoubleDots; + this.commands = commands; + if (isAbsolute && commands.length > 0 && isMatrixParams(commands[0])) { + throw new RuntimeError(4003, (typeof ngDevMode === "undefined" || ngDevMode) && "Root segment cannot have matrix parameters"); + } + const cmdWithOutlet = commands.find(isCommandWithOutlets); + if (cmdWithOutlet && cmdWithOutlet !== last2(commands)) { + throw new RuntimeError(4004, (typeof ngDevMode === "undefined" || ngDevMode) && "{outlets:{}} has to be the last command"); + } + } + toRoot() { + return this.isAbsolute && this.commands.length === 1 && this.commands[0] == "/"; + } +}; +function computeNavigation(commands) { + if (typeof commands[0] === "string" && commands.length === 1 && commands[0] === "/") { + return new Navigation(true, 0, commands); + } + let numberOfDoubleDots = 0; + let isAbsolute = false; + const res = commands.reduce((res2, cmd, cmdIdx) => { + if (typeof cmd === "object" && cmd != null) { + if (cmd.outlets) { + const outlets = {}; + Object.entries(cmd.outlets).forEach(([name, commands2]) => { + outlets[name] = typeof commands2 === "string" ? commands2.split("/") : commands2; + }); + return [...res2, { + outlets + }]; + } + if (cmd.segmentPath) { + return [...res2, cmd.segmentPath]; + } + } + if (!(typeof cmd === "string")) { + return [...res2, cmd]; + } + if (cmdIdx === 0) { + cmd.split("/").forEach((urlPart, partIndex) => { + if (partIndex == 0 && urlPart === ".") { + } else if (partIndex == 0 && urlPart === "") { + isAbsolute = true; + } else if (urlPart === "..") { + numberOfDoubleDots++; + } else if (urlPart != "") { + res2.push(urlPart); + } + }); + return res2; + } + return [...res2, cmd]; + }, []); + return new Navigation(isAbsolute, numberOfDoubleDots, res); +} +var Position = class { + constructor(segmentGroup, processChildren, index) { + this.segmentGroup = segmentGroup; + this.processChildren = processChildren; + this.index = index; + } +}; +function findStartingPositionForTargetGroup(nav, root, target) { + if (nav.isAbsolute) { + return new Position(root, true, 0); + } + if (!target) { + return new Position(root, false, NaN); + } + if (target.parent === null) { + return new Position(target, true, 0); + } + const modifier = isMatrixParams(nav.commands[0]) ? 0 : 1; + const index = target.segments.length - 1 + modifier; + return createPositionApplyingDoubleDots(target, index, nav.numberOfDoubleDots); +} +function createPositionApplyingDoubleDots(group, index, numberOfDoubleDots) { + let g = group; + let ci = index; + let dd = numberOfDoubleDots; + while (dd > ci) { + dd -= ci; + g = g.parent; + if (!g) { + throw new RuntimeError(4005, (typeof ngDevMode === "undefined" || ngDevMode) && "Invalid number of '../'"); + } + ci = g.segments.length; + } + return new Position(g, false, ci - dd); +} +function getOutlets(commands) { + if (isCommandWithOutlets(commands[0])) { + return commands[0].outlets; + } + return { + [PRIMARY_OUTLET]: commands + }; +} +function updateSegmentGroup(segmentGroup, startIndex, commands) { + if (!segmentGroup) { + segmentGroup = new UrlSegmentGroup([], {}); + } + if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) { + return updateSegmentGroupChildren(segmentGroup, startIndex, commands); + } + const m = prefixedWith(segmentGroup, startIndex, commands); + const slicedCommands = commands.slice(m.commandIndex); + if (m.match && m.pathIndex < segmentGroup.segments.length) { + const g = new UrlSegmentGroup(segmentGroup.segments.slice(0, m.pathIndex), {}); + g.children[PRIMARY_OUTLET] = new UrlSegmentGroup(segmentGroup.segments.slice(m.pathIndex), segmentGroup.children); + return updateSegmentGroupChildren(g, 0, slicedCommands); + } else if (m.match && slicedCommands.length === 0) { + return new UrlSegmentGroup(segmentGroup.segments, {}); + } else if (m.match && !segmentGroup.hasChildren()) { + return createNewSegmentGroup(segmentGroup, startIndex, commands); + } else if (m.match) { + return updateSegmentGroupChildren(segmentGroup, 0, slicedCommands); + } else { + return createNewSegmentGroup(segmentGroup, startIndex, commands); + } +} +function updateSegmentGroupChildren(segmentGroup, startIndex, commands) { + if (commands.length === 0) { + return new UrlSegmentGroup(segmentGroup.segments, {}); + } else { + const outlets = getOutlets(commands); + const children = {}; + if (Object.keys(outlets).some((o) => o !== PRIMARY_OUTLET) && segmentGroup.children[PRIMARY_OUTLET] && segmentGroup.numberOfChildren === 1 && segmentGroup.children[PRIMARY_OUTLET].segments.length === 0) { + const childrenOfEmptyChild = updateSegmentGroupChildren(segmentGroup.children[PRIMARY_OUTLET], startIndex, commands); + return new UrlSegmentGroup(segmentGroup.segments, childrenOfEmptyChild.children); + } + Object.entries(outlets).forEach(([outlet, commands2]) => { + if (typeof commands2 === "string") { + commands2 = [commands2]; + } + if (commands2 !== null) { + children[outlet] = updateSegmentGroup(segmentGroup.children[outlet], startIndex, commands2); + } + }); + Object.entries(segmentGroup.children).forEach(([childOutlet, child]) => { + if (outlets[childOutlet] === void 0) { + children[childOutlet] = child; + } + }); + return new UrlSegmentGroup(segmentGroup.segments, children); + } +} +function prefixedWith(segmentGroup, startIndex, commands) { + let currentCommandIndex = 0; + let currentPathIndex = startIndex; + const noMatch2 = { + match: false, + pathIndex: 0, + commandIndex: 0 + }; + while (currentPathIndex < segmentGroup.segments.length) { + if (currentCommandIndex >= commands.length) + return noMatch2; + const path = segmentGroup.segments[currentPathIndex]; + const command = commands[currentCommandIndex]; + if (isCommandWithOutlets(command)) { + break; + } + const curr = `${command}`; + const next = currentCommandIndex < commands.length - 1 ? commands[currentCommandIndex + 1] : null; + if (currentPathIndex > 0 && curr === void 0) + break; + if (curr && next && typeof next === "object" && next.outlets === void 0) { + if (!compare(curr, next, path)) + return noMatch2; + currentCommandIndex += 2; + } else { + if (!compare(curr, {}, path)) + return noMatch2; + currentCommandIndex++; + } + currentPathIndex++; + } + return { + match: true, + pathIndex: currentPathIndex, + commandIndex: currentCommandIndex + }; +} +function createNewSegmentGroup(segmentGroup, startIndex, commands) { + const paths = segmentGroup.segments.slice(0, startIndex); + let i = 0; + while (i < commands.length) { + const command = commands[i]; + if (isCommandWithOutlets(command)) { + const children = createNewSegmentChildren(command.outlets); + return new UrlSegmentGroup(paths, children); + } + if (i === 0 && isMatrixParams(commands[0])) { + const p = segmentGroup.segments[startIndex]; + paths.push(new UrlSegment(p.path, stringify(commands[0]))); + i++; + continue; + } + const curr = isCommandWithOutlets(command) ? command.outlets[PRIMARY_OUTLET] : `${command}`; + const next = i < commands.length - 1 ? commands[i + 1] : null; + if (curr && next && isMatrixParams(next)) { + paths.push(new UrlSegment(curr, stringify(next))); + i += 2; + } else { + paths.push(new UrlSegment(curr, {})); + i++; + } + } + return new UrlSegmentGroup(paths, {}); +} +function createNewSegmentChildren(outlets) { + const children = {}; + Object.entries(outlets).forEach(([outlet, commands]) => { + if (typeof commands === "string") { + commands = [commands]; + } + if (commands !== null) { + children[outlet] = createNewSegmentGroup(new UrlSegmentGroup([], {}), 0, commands); + } + }); + return children; +} +function stringify(params) { + const res = {}; + Object.entries(params).forEach(([k, v]) => res[k] = `${v}`); + return res; +} +function compare(path, params, segment) { + return path == segment.path && shallowEqual(params, segment.parameters); +} +var IMPERATIVE_NAVIGATION = "imperative"; +var RouterEvent = class { + constructor(id, url) { + this.id = id; + this.url = url; + } +}; +var NavigationStart = class extends RouterEvent { + constructor(id, url, navigationTrigger = "imperative", restoredState = null) { + super(id, url); + this.type = 0; + this.navigationTrigger = navigationTrigger; + this.restoredState = restoredState; + } + /** @docsNotRequired */ + toString() { + return `NavigationStart(id: ${this.id}, url: '${this.url}')`; + } +}; +var NavigationEnd = class extends RouterEvent { + constructor(id, url, urlAfterRedirects) { + super(id, url); + this.urlAfterRedirects = urlAfterRedirects; + this.type = 1; + } + /** @docsNotRequired */ + toString() { + return `NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`; + } +}; +var NavigationCancel = class extends RouterEvent { + constructor(id, url, reason, code) { + super(id, url); + this.reason = reason; + this.code = code; + this.type = 2; + } + /** @docsNotRequired */ + toString() { + return `NavigationCancel(id: ${this.id}, url: '${this.url}')`; + } +}; +var NavigationSkipped = class extends RouterEvent { + constructor(id, url, reason, code) { + super(id, url); + this.reason = reason; + this.code = code; + this.type = 16; + } +}; +var NavigationError = class extends RouterEvent { + constructor(id, url, error, target) { + super(id, url); + this.error = error; + this.target = target; + this.type = 3; + } + /** @docsNotRequired */ + toString() { + return `NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`; + } +}; +var RoutesRecognized = class extends RouterEvent { + constructor(id, url, urlAfterRedirects, state) { + super(id, url); + this.urlAfterRedirects = urlAfterRedirects; + this.state = state; + this.type = 4; + } + /** @docsNotRequired */ + toString() { + return `RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`; + } +}; +var GuardsCheckStart = class extends RouterEvent { + constructor(id, url, urlAfterRedirects, state) { + super(id, url); + this.urlAfterRedirects = urlAfterRedirects; + this.state = state; + this.type = 7; + } + toString() { + return `GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`; + } +}; +var GuardsCheckEnd = class extends RouterEvent { + constructor(id, url, urlAfterRedirects, state, shouldActivate) { + super(id, url); + this.urlAfterRedirects = urlAfterRedirects; + this.state = state; + this.shouldActivate = shouldActivate; + this.type = 8; + } + toString() { + return `GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`; + } +}; +var ResolveStart = class extends RouterEvent { + constructor(id, url, urlAfterRedirects, state) { + super(id, url); + this.urlAfterRedirects = urlAfterRedirects; + this.state = state; + this.type = 5; + } + toString() { + return `ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`; + } +}; +var ResolveEnd = class extends RouterEvent { + constructor(id, url, urlAfterRedirects, state) { + super(id, url); + this.urlAfterRedirects = urlAfterRedirects; + this.state = state; + this.type = 6; + } + toString() { + return `ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`; + } +}; +var RouteConfigLoadStart = class { + constructor(route) { + this.route = route; + this.type = 9; + } + toString() { + return `RouteConfigLoadStart(path: ${this.route.path})`; + } +}; +var RouteConfigLoadEnd = class { + constructor(route) { + this.route = route; + this.type = 10; + } + toString() { + return `RouteConfigLoadEnd(path: ${this.route.path})`; + } +}; +var ChildActivationStart = class { + constructor(snapshot) { + this.snapshot = snapshot; + this.type = 11; + } + toString() { + const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || ""; + return `ChildActivationStart(path: '${path}')`; + } +}; +var ChildActivationEnd = class { + constructor(snapshot) { + this.snapshot = snapshot; + this.type = 12; + } + toString() { + const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || ""; + return `ChildActivationEnd(path: '${path}')`; + } +}; +var ActivationStart = class { + constructor(snapshot) { + this.snapshot = snapshot; + this.type = 13; + } + toString() { + const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || ""; + return `ActivationStart(path: '${path}')`; + } +}; +var ActivationEnd = class { + constructor(snapshot) { + this.snapshot = snapshot; + this.type = 14; + } + toString() { + const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || ""; + return `ActivationEnd(path: '${path}')`; + } +}; +var Scroll = class { + constructor(routerEvent, position, anchor) { + this.routerEvent = routerEvent; + this.position = position; + this.anchor = anchor; + this.type = 15; + } + toString() { + const pos = this.position ? `${this.position[0]}, ${this.position[1]}` : null; + return `Scroll(anchor: '${this.anchor}', position: '${pos}')`; + } +}; +var BeforeActivateRoutes = class { +}; +var RedirectRequest = class { + constructor(url) { + this.url = url; + } +}; +function stringifyEvent(routerEvent) { + switch (routerEvent.type) { + case 14: + return `ActivationEnd(path: '${routerEvent.snapshot.routeConfig?.path || ""}')`; + case 13: + return `ActivationStart(path: '${routerEvent.snapshot.routeConfig?.path || ""}')`; + case 12: + return `ChildActivationEnd(path: '${routerEvent.snapshot.routeConfig?.path || ""}')`; + case 11: + return `ChildActivationStart(path: '${routerEvent.snapshot.routeConfig?.path || ""}')`; + case 8: + return `GuardsCheckEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state}, shouldActivate: ${routerEvent.shouldActivate})`; + case 7: + return `GuardsCheckStart(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`; + case 2: + return `NavigationCancel(id: ${routerEvent.id}, url: '${routerEvent.url}')`; + case 16: + return `NavigationSkipped(id: ${routerEvent.id}, url: '${routerEvent.url}')`; + case 1: + return `NavigationEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}')`; + case 3: + return `NavigationError(id: ${routerEvent.id}, url: '${routerEvent.url}', error: ${routerEvent.error})`; + case 0: + return `NavigationStart(id: ${routerEvent.id}, url: '${routerEvent.url}')`; + case 6: + return `ResolveEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`; + case 5: + return `ResolveStart(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`; + case 10: + return `RouteConfigLoadEnd(path: ${routerEvent.route.path})`; + case 9: + return `RouteConfigLoadStart(path: ${routerEvent.route.path})`; + case 4: + return `RoutesRecognized(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`; + case 15: + const pos = routerEvent.position ? `${routerEvent.position[0]}, ${routerEvent.position[1]}` : null; + return `Scroll(anchor: '${routerEvent.anchor}', position: '${pos}')`; + } +} +var OutletContext = class { + constructor() { + this.outlet = null; + this.route = null; + this.injector = null; + this.children = new ChildrenOutletContexts(); + this.attachRef = null; + } +}; +var _ChildrenOutletContexts = class _ChildrenOutletContexts { + constructor() { + this.contexts = /* @__PURE__ */ new Map(); + } + /** Called when a `RouterOutlet` directive is instantiated */ + onChildOutletCreated(childName, outlet) { + const context = this.getOrCreateContext(childName); + context.outlet = outlet; + this.contexts.set(childName, context); + } + /** + * Called when a `RouterOutlet` directive is destroyed. + * We need to keep the context as the outlet could be destroyed inside a NgIf and might be + * re-created later. + */ + onChildOutletDestroyed(childName) { + const context = this.getContext(childName); + if (context) { + context.outlet = null; + context.attachRef = null; + } + } + /** + * Called when the corresponding route is deactivated during navigation. + * Because the component get destroyed, all children outlet are destroyed. + */ + onOutletDeactivated() { + const contexts = this.contexts; + this.contexts = /* @__PURE__ */ new Map(); + return contexts; + } + onOutletReAttached(contexts) { + this.contexts = contexts; + } + getOrCreateContext(childName) { + let context = this.getContext(childName); + if (!context) { + context = new OutletContext(); + this.contexts.set(childName, context); + } + return context; + } + getContext(childName) { + return this.contexts.get(childName) || null; + } +}; +_ChildrenOutletContexts.ɵfac = function ChildrenOutletContexts_Factory(t) { + return new (t || _ChildrenOutletContexts)(); +}; +_ChildrenOutletContexts.ɵprov = ɵɵdefineInjectable({ + token: _ChildrenOutletContexts, + factory: _ChildrenOutletContexts.ɵfac, + providedIn: "root" +}); +var ChildrenOutletContexts = _ChildrenOutletContexts; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ChildrenOutletContexts, [{ + type: Injectable, + args: [{ + providedIn: "root" + }] + }], null, null); +})(); +var Tree = class { + constructor(root) { + this._root = root; + } + get root() { + return this._root.value; + } + /** + * @internal + */ + parent(t) { + const p = this.pathFromRoot(t); + return p.length > 1 ? p[p.length - 2] : null; + } + /** + * @internal + */ + children(t) { + const n = findNode(t, this._root); + return n ? n.children.map((t2) => t2.value) : []; + } + /** + * @internal + */ + firstChild(t) { + const n = findNode(t, this._root); + return n && n.children.length > 0 ? n.children[0].value : null; + } + /** + * @internal + */ + siblings(t) { + const p = findPath(t, this._root); + if (p.length < 2) + return []; + const c = p[p.length - 2].children.map((c2) => c2.value); + return c.filter((cc) => cc !== t); + } + /** + * @internal + */ + pathFromRoot(t) { + return findPath(t, this._root).map((s) => s.value); + } +}; +function findNode(value, node) { + if (value === node.value) + return node; + for (const child of node.children) { + const node2 = findNode(value, child); + if (node2) + return node2; + } + return null; +} +function findPath(value, node) { + if (value === node.value) + return [node]; + for (const child of node.children) { + const path = findPath(value, child); + if (path.length) { + path.unshift(node); + return path; + } + } + return []; +} +var TreeNode = class { + constructor(value, children) { + this.value = value; + this.children = children; + } + toString() { + return `TreeNode(${this.value})`; + } +}; +function nodeChildrenAsMap(node) { + const map2 = {}; + if (node) { + node.children.forEach((child) => map2[child.value.outlet] = child); + } + return map2; +} +var RouterState = class extends Tree { + /** @internal */ + constructor(root, snapshot) { + super(root); + this.snapshot = snapshot; + setRouterState(this, root); + } + toString() { + return this.snapshot.toString(); + } +}; +function createEmptyState(urlTree, rootComponent) { + const snapshot = createEmptyStateSnapshot(urlTree, rootComponent); + const emptyUrl = new BehaviorSubject([new UrlSegment("", {})]); + const emptyParams = new BehaviorSubject({}); + const emptyData = new BehaviorSubject({}); + const emptyQueryParams = new BehaviorSubject({}); + const fragment = new BehaviorSubject(""); + const activated = new ActivatedRoute(emptyUrl, emptyParams, emptyQueryParams, fragment, emptyData, PRIMARY_OUTLET, rootComponent, snapshot.root); + activated.snapshot = snapshot.root; + return new RouterState(new TreeNode(activated, []), snapshot); +} +function createEmptyStateSnapshot(urlTree, rootComponent) { + const emptyParams = {}; + const emptyData = {}; + const emptyQueryParams = {}; + const fragment = ""; + const activated = new ActivatedRouteSnapshot([], emptyParams, emptyQueryParams, fragment, emptyData, PRIMARY_OUTLET, rootComponent, null, {}); + return new RouterStateSnapshot("", new TreeNode(activated, [])); +} +var ActivatedRoute = class { + /** @internal */ + constructor(urlSubject, paramsSubject, queryParamsSubject, fragmentSubject, dataSubject, outlet, component, futureSnapshot) { + this.urlSubject = urlSubject; + this.paramsSubject = paramsSubject; + this.queryParamsSubject = queryParamsSubject; + this.fragmentSubject = fragmentSubject; + this.dataSubject = dataSubject; + this.outlet = outlet; + this.component = component; + this._futureSnapshot = futureSnapshot; + this.title = this.dataSubject?.pipe(map((d) => d[RouteTitleKey])) ?? of(void 0); + this.url = urlSubject; + this.params = paramsSubject; + this.queryParams = queryParamsSubject; + this.fragment = fragmentSubject; + this.data = dataSubject; + } + /** The configuration used to match this route. */ + get routeConfig() { + return this._futureSnapshot.routeConfig; + } + /** The root of the router state. */ + get root() { + return this._routerState.root; + } + /** The parent of this route in the router state tree. */ + get parent() { + return this._routerState.parent(this); + } + /** The first child of this route in the router state tree. */ + get firstChild() { + return this._routerState.firstChild(this); + } + /** The children of this route in the router state tree. */ + get children() { + return this._routerState.children(this); + } + /** The path from the root of the router state tree to this route. */ + get pathFromRoot() { + return this._routerState.pathFromRoot(this); + } + /** + * An Observable that contains a map of the required and optional parameters + * specific to the route. + * The map supports retrieving single and multiple values from the same parameter. + */ + get paramMap() { + if (!this._paramMap) { + this._paramMap = this.params.pipe(map((p) => convertToParamMap(p))); + } + return this._paramMap; + } + /** + * An Observable that contains a map of the query parameters available to all routes. + * The map supports retrieving single and multiple values from the query parameter. + */ + get queryParamMap() { + if (!this._queryParamMap) { + this._queryParamMap = this.queryParams.pipe(map((p) => convertToParamMap(p))); + } + return this._queryParamMap; + } + toString() { + return this.snapshot ? this.snapshot.toString() : `Future(${this._futureSnapshot})`; + } +}; +function getInherited(route, parent, paramsInheritanceStrategy = "emptyOnly") { + let inherited; + const { + routeConfig + } = route; + if (parent !== null && (paramsInheritanceStrategy === "always" || // inherit parent data if route is empty path + routeConfig?.path === "" || // inherit parent data if parent was componentless + !parent.component && !parent.routeConfig?.loadComponent)) { + inherited = { + params: __spreadValues(__spreadValues({}, parent.params), route.params), + data: __spreadValues(__spreadValues({}, parent.data), route.data), + resolve: __spreadValues(__spreadValues(__spreadValues(__spreadValues({}, route.data), parent.data), routeConfig?.data), route._resolvedData) + }; + } else { + inherited = { + params: route.params, + data: route.data, + resolve: __spreadValues(__spreadValues({}, route.data), route._resolvedData ?? {}) + }; + } + if (routeConfig && hasStaticTitle(routeConfig)) { + inherited.resolve[RouteTitleKey] = routeConfig.title; + } + return inherited; +} +var ActivatedRouteSnapshot = class { + /** The resolved route title */ + get title() { + return this.data?.[RouteTitleKey]; + } + /** @internal */ + constructor(url, params, queryParams, fragment, data, outlet, component, routeConfig, resolve) { + this.url = url; + this.params = params; + this.queryParams = queryParams; + this.fragment = fragment; + this.data = data; + this.outlet = outlet; + this.component = component; + this.routeConfig = routeConfig; + this._resolve = resolve; + } + /** The root of the router state */ + get root() { + return this._routerState.root; + } + /** The parent of this route in the router state tree */ + get parent() { + return this._routerState.parent(this); + } + /** The first child of this route in the router state tree */ + get firstChild() { + return this._routerState.firstChild(this); + } + /** The children of this route in the router state tree */ + get children() { + return this._routerState.children(this); + } + /** The path from the root of the router state tree to this route */ + get pathFromRoot() { + return this._routerState.pathFromRoot(this); + } + get paramMap() { + if (!this._paramMap) { + this._paramMap = convertToParamMap(this.params); + } + return this._paramMap; + } + get queryParamMap() { + if (!this._queryParamMap) { + this._queryParamMap = convertToParamMap(this.queryParams); + } + return this._queryParamMap; + } + toString() { + const url = this.url.map((segment) => segment.toString()).join("/"); + const matched = this.routeConfig ? this.routeConfig.path : ""; + return `Route(url:'${url}', path:'${matched}')`; + } +}; +var RouterStateSnapshot = class extends Tree { + /** @internal */ + constructor(url, root) { + super(root); + this.url = url; + setRouterState(this, root); + } + toString() { + return serializeNode(this._root); + } +}; +function setRouterState(state, node) { + node.value._routerState = state; + node.children.forEach((c) => setRouterState(state, c)); +} +function serializeNode(node) { + const c = node.children.length > 0 ? ` { ${node.children.map(serializeNode).join(", ")} } ` : ""; + return `${node.value}${c}`; +} +function advanceActivatedRoute(route) { + if (route.snapshot) { + const currentSnapshot = route.snapshot; + const nextSnapshot = route._futureSnapshot; + route.snapshot = nextSnapshot; + if (!shallowEqual(currentSnapshot.queryParams, nextSnapshot.queryParams)) { + route.queryParamsSubject.next(nextSnapshot.queryParams); + } + if (currentSnapshot.fragment !== nextSnapshot.fragment) { + route.fragmentSubject.next(nextSnapshot.fragment); + } + if (!shallowEqual(currentSnapshot.params, nextSnapshot.params)) { + route.paramsSubject.next(nextSnapshot.params); + } + if (!shallowEqualArrays(currentSnapshot.url, nextSnapshot.url)) { + route.urlSubject.next(nextSnapshot.url); + } + if (!shallowEqual(currentSnapshot.data, nextSnapshot.data)) { + route.dataSubject.next(nextSnapshot.data); + } + } else { + route.snapshot = route._futureSnapshot; + route.dataSubject.next(route._futureSnapshot.data); + } +} +function equalParamsAndUrlSegments(a, b) { + const equalUrlParams = shallowEqual(a.params, b.params) && equalSegments(a.url, b.url); + const parentsMismatch = !a.parent !== !b.parent; + return equalUrlParams && !parentsMismatch && (!a.parent || equalParamsAndUrlSegments(a.parent, b.parent)); +} +function hasStaticTitle(config) { + return typeof config.title === "string" || config.title === null; +} +var _RouterOutlet = class _RouterOutlet { + constructor() { + this.activated = null; + this._activatedRoute = null; + this.name = PRIMARY_OUTLET; + this.activateEvents = new EventEmitter(); + this.deactivateEvents = new EventEmitter(); + this.attachEvents = new EventEmitter(); + this.detachEvents = new EventEmitter(); + this.parentContexts = inject(ChildrenOutletContexts); + this.location = inject(ViewContainerRef); + this.changeDetector = inject(ChangeDetectorRef); + this.environmentInjector = inject(EnvironmentInjector); + this.inputBinder = inject(INPUT_BINDER, { + optional: true + }); + this.supportsBindingToComponentInputs = true; + } + /** @internal */ + get activatedComponentRef() { + return this.activated; + } + /** @nodoc */ + ngOnChanges(changes) { + if (changes["name"]) { + const { + firstChange, + previousValue + } = changes["name"]; + if (firstChange) { + return; + } + if (this.isTrackedInParentContexts(previousValue)) { + this.deactivate(); + this.parentContexts.onChildOutletDestroyed(previousValue); + } + this.initializeOutletWithName(); + } + } + /** @nodoc */ + ngOnDestroy() { + if (this.isTrackedInParentContexts(this.name)) { + this.parentContexts.onChildOutletDestroyed(this.name); + } + this.inputBinder?.unsubscribeFromRouteData(this); + } + isTrackedInParentContexts(outletName) { + return this.parentContexts.getContext(outletName)?.outlet === this; + } + /** @nodoc */ + ngOnInit() { + this.initializeOutletWithName(); + } + initializeOutletWithName() { + this.parentContexts.onChildOutletCreated(this.name, this); + if (this.activated) { + return; + } + const context = this.parentContexts.getContext(this.name); + if (context?.route) { + if (context.attachRef) { + this.attach(context.attachRef, context.route); + } else { + this.activateWith(context.route, context.injector); + } + } + } + get isActivated() { + return !!this.activated; + } + /** + * @returns The currently activated component instance. + * @throws An error if the outlet is not activated. + */ + get component() { + if (!this.activated) + throw new RuntimeError(4012, (typeof ngDevMode === "undefined" || ngDevMode) && "Outlet is not activated"); + return this.activated.instance; + } + get activatedRoute() { + if (!this.activated) + throw new RuntimeError(4012, (typeof ngDevMode === "undefined" || ngDevMode) && "Outlet is not activated"); + return this._activatedRoute; + } + get activatedRouteData() { + if (this._activatedRoute) { + return this._activatedRoute.snapshot.data; + } + return {}; + } + /** + * Called when the `RouteReuseStrategy` instructs to detach the subtree + */ + detach() { + if (!this.activated) + throw new RuntimeError(4012, (typeof ngDevMode === "undefined" || ngDevMode) && "Outlet is not activated"); + this.location.detach(); + const cmp = this.activated; + this.activated = null; + this._activatedRoute = null; + this.detachEvents.emit(cmp.instance); + return cmp; + } + /** + * Called when the `RouteReuseStrategy` instructs to re-attach a previously detached subtree + */ + attach(ref, activatedRoute) { + this.activated = ref; + this._activatedRoute = activatedRoute; + this.location.insert(ref.hostView); + this.inputBinder?.bindActivatedRouteToOutletComponent(this); + this.attachEvents.emit(ref.instance); + } + deactivate() { + if (this.activated) { + const c = this.component; + this.activated.destroy(); + this.activated = null; + this._activatedRoute = null; + this.deactivateEvents.emit(c); + } + } + activateWith(activatedRoute, environmentInjector) { + if (this.isActivated) { + throw new RuntimeError(4013, (typeof ngDevMode === "undefined" || ngDevMode) && "Cannot activate an already activated outlet"); + } + this._activatedRoute = activatedRoute; + const location = this.location; + const snapshot = activatedRoute.snapshot; + const component = snapshot.component; + const childContexts = this.parentContexts.getOrCreateContext(this.name).children; + const injector = new OutletInjector(activatedRoute, childContexts, location.injector); + this.activated = location.createComponent(component, { + index: location.length, + injector, + environmentInjector: environmentInjector ?? this.environmentInjector + }); + this.changeDetector.markForCheck(); + this.inputBinder?.bindActivatedRouteToOutletComponent(this); + this.activateEvents.emit(this.activated.instance); + } +}; +_RouterOutlet.ɵfac = function RouterOutlet_Factory(t) { + return new (t || _RouterOutlet)(); +}; +_RouterOutlet.ɵdir = ɵɵdefineDirective({ + type: _RouterOutlet, + selectors: [["router-outlet"]], + inputs: { + name: "name" + }, + outputs: { + activateEvents: "activate", + deactivateEvents: "deactivate", + attachEvents: "attach", + detachEvents: "detach" + }, + exportAs: ["outlet"], + standalone: true, + features: [ɵɵNgOnChangesFeature] +}); +var RouterOutlet = _RouterOutlet; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RouterOutlet, [{ + type: Directive, + args: [{ + selector: "router-outlet", + exportAs: "outlet", + standalone: true + }] + }], null, { + name: [{ + type: Input + }], + activateEvents: [{ + type: Output, + args: ["activate"] + }], + deactivateEvents: [{ + type: Output, + args: ["deactivate"] + }], + attachEvents: [{ + type: Output, + args: ["attach"] + }], + detachEvents: [{ + type: Output, + args: ["detach"] + }] + }); +})(); +var OutletInjector = class { + constructor(route, childContexts, parent) { + this.route = route; + this.childContexts = childContexts; + this.parent = parent; + } + get(token, notFoundValue) { + if (token === ActivatedRoute) { + return this.route; + } + if (token === ChildrenOutletContexts) { + return this.childContexts; + } + return this.parent.get(token, notFoundValue); + } +}; +var INPUT_BINDER = new InjectionToken(""); +var _RoutedComponentInputBinder = class _RoutedComponentInputBinder { + constructor() { + this.outletDataSubscriptions = /* @__PURE__ */ new Map(); + } + bindActivatedRouteToOutletComponent(outlet) { + this.unsubscribeFromRouteData(outlet); + this.subscribeToRouteData(outlet); + } + unsubscribeFromRouteData(outlet) { + this.outletDataSubscriptions.get(outlet)?.unsubscribe(); + this.outletDataSubscriptions.delete(outlet); + } + subscribeToRouteData(outlet) { + const { + activatedRoute + } = outlet; + const dataSubscription = combineLatest([activatedRoute.queryParams, activatedRoute.params, activatedRoute.data]).pipe(switchMap(([queryParams, params, data], index) => { + data = __spreadValues(__spreadValues(__spreadValues({}, queryParams), params), data); + if (index === 0) { + return of(data); + } + return Promise.resolve(data); + })).subscribe((data) => { + if (!outlet.isActivated || !outlet.activatedComponentRef || outlet.activatedRoute !== activatedRoute || activatedRoute.component === null) { + this.unsubscribeFromRouteData(outlet); + return; + } + const mirror = reflectComponentType(activatedRoute.component); + if (!mirror) { + this.unsubscribeFromRouteData(outlet); + return; + } + for (const { + templateName + } of mirror.inputs) { + outlet.activatedComponentRef.setInput(templateName, data[templateName]); + } + }); + this.outletDataSubscriptions.set(outlet, dataSubscription); + } +}; +_RoutedComponentInputBinder.ɵfac = function RoutedComponentInputBinder_Factory(t) { + return new (t || _RoutedComponentInputBinder)(); +}; +_RoutedComponentInputBinder.ɵprov = ɵɵdefineInjectable({ + token: _RoutedComponentInputBinder, + factory: _RoutedComponentInputBinder.ɵfac +}); +var RoutedComponentInputBinder = _RoutedComponentInputBinder; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RoutedComponentInputBinder, [{ + type: Injectable + }], null, null); +})(); +function createRouterState(routeReuseStrategy, curr, prevState) { + const root = createNode(routeReuseStrategy, curr._root, prevState ? prevState._root : void 0); + return new RouterState(root, curr); +} +function createNode(routeReuseStrategy, curr, prevState) { + if (prevState && routeReuseStrategy.shouldReuseRoute(curr.value, prevState.value.snapshot)) { + const value = prevState.value; + value._futureSnapshot = curr.value; + const children = createOrReuseChildren(routeReuseStrategy, curr, prevState); + return new TreeNode(value, children); + } else { + if (routeReuseStrategy.shouldAttach(curr.value)) { + const detachedRouteHandle = routeReuseStrategy.retrieve(curr.value); + if (detachedRouteHandle !== null) { + const tree2 = detachedRouteHandle.route; + tree2.value._futureSnapshot = curr.value; + tree2.children = curr.children.map((c) => createNode(routeReuseStrategy, c)); + return tree2; + } + } + const value = createActivatedRoute(curr.value); + const children = curr.children.map((c) => createNode(routeReuseStrategy, c)); + return new TreeNode(value, children); + } +} +function createOrReuseChildren(routeReuseStrategy, curr, prevState) { + return curr.children.map((child) => { + for (const p of prevState.children) { + if (routeReuseStrategy.shouldReuseRoute(child.value, p.value.snapshot)) { + return createNode(routeReuseStrategy, child, p); + } + } + return createNode(routeReuseStrategy, child); + }); +} +function createActivatedRoute(c) { + return new ActivatedRoute(new BehaviorSubject(c.url), new BehaviorSubject(c.params), new BehaviorSubject(c.queryParams), new BehaviorSubject(c.fragment), new BehaviorSubject(c.data), c.outlet, c.component, c); +} +var NAVIGATION_CANCELING_ERROR = "ngNavigationCancelingError"; +function redirectingNavigationError(urlSerializer, redirect) { + const { + redirectTo, + navigationBehaviorOptions + } = isUrlTree(redirect) ? { + redirectTo: redirect, + navigationBehaviorOptions: void 0 + } : redirect; + const error = navigationCancelingError(ngDevMode && `Redirecting to "${urlSerializer.serialize(redirectTo)}"`, 0, redirect); + error.url = redirectTo; + error.navigationBehaviorOptions = navigationBehaviorOptions; + return error; +} +function navigationCancelingError(message, code, redirectUrl) { + const error = new Error("NavigationCancelingError: " + (message || "")); + error[NAVIGATION_CANCELING_ERROR] = true; + error.cancellationCode = code; + if (redirectUrl) { + error.url = redirectUrl; + } + return error; +} +function isRedirectingNavigationCancelingError$1(error) { + return isNavigationCancelingError$1(error) && isUrlTree(error.url); +} +function isNavigationCancelingError$1(error) { + return error && error[NAVIGATION_CANCELING_ERROR]; +} +var _ɵEmptyOutletComponent = class _ɵEmptyOutletComponent { +}; +_ɵEmptyOutletComponent.ɵfac = function ɵEmptyOutletComponent_Factory(t) { + return new (t || _ɵEmptyOutletComponent)(); +}; +_ɵEmptyOutletComponent.ɵcmp = ɵɵdefineComponent({ + type: _ɵEmptyOutletComponent, + selectors: [["ng-component"]], + standalone: true, + features: [ɵɵStandaloneFeature], + decls: 1, + vars: 0, + template: function ɵEmptyOutletComponent_Template(rf, ctx) { + if (rf & 1) { + ɵɵelement(0, "router-outlet"); + } + }, + dependencies: [RouterOutlet], + encapsulation: 2 +}); +var ɵEmptyOutletComponent = _ɵEmptyOutletComponent; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ɵEmptyOutletComponent, [{ + type: Component, + args: [{ + template: ``, + imports: [RouterOutlet], + standalone: true + }] + }], null, null); +})(); +function getOrCreateRouteInjectorIfNeeded(route, currentInjector) { + if (route.providers && !route._injector) { + route._injector = createEnvironmentInjector(route.providers, currentInjector, `Route: ${route.path}`); + } + return route._injector ?? currentInjector; +} +function validateConfig(config, parentPath = "", requireStandaloneComponents = false) { + for (let i = 0; i < config.length; i++) { + const route = config[i]; + const fullPath = getFullPath(parentPath, route); + validateNode(route, fullPath, requireStandaloneComponents); + } +} +function assertStandalone(fullPath, component) { + if (component && isNgModule(component)) { + throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}'. You are using 'loadComponent' with a module, but it must be used with standalone components. Use 'loadChildren' instead.`); + } else if (component && !isStandalone(component)) { + throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}'. The component must be standalone.`); + } +} +function validateNode(route, fullPath, requireStandaloneComponents) { + if (typeof ngDevMode === "undefined" || ngDevMode) { + if (!route) { + throw new RuntimeError(4014, ` + Invalid configuration of route '${fullPath}': Encountered undefined route. + The reason might be an extra comma. + + Example: + const routes: Routes = [ + { path: '', redirectTo: '/dashboard', pathMatch: 'full' }, + { path: 'dashboard', component: DashboardComponent },, << two commas + { path: 'detail/:id', component: HeroDetailComponent } + ]; + `); + } + if (Array.isArray(route)) { + throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': Array cannot be specified`); + } + if (!route.redirectTo && !route.component && !route.loadComponent && !route.children && !route.loadChildren && route.outlet && route.outlet !== PRIMARY_OUTLET) { + throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': a componentless route without children or loadChildren cannot have a named outlet set`); + } + if (route.redirectTo && route.children) { + throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': redirectTo and children cannot be used together`); + } + if (route.redirectTo && route.loadChildren) { + throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': redirectTo and loadChildren cannot be used together`); + } + if (route.children && route.loadChildren) { + throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': children and loadChildren cannot be used together`); + } + if (route.redirectTo && (route.component || route.loadComponent)) { + throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': redirectTo and component/loadComponent cannot be used together`); + } + if (route.component && route.loadComponent) { + throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': component and loadComponent cannot be used together`); + } + if (route.redirectTo && route.canActivate) { + throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': redirectTo and canActivate cannot be used together. Redirects happen before activation so canActivate will never be executed.`); + } + if (route.path && route.matcher) { + throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': path and matcher cannot be used together`); + } + if (route.redirectTo === void 0 && !route.component && !route.loadComponent && !route.children && !route.loadChildren) { + throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}'. One of the following must be provided: component, loadComponent, redirectTo, children or loadChildren`); + } + if (route.path === void 0 && route.matcher === void 0) { + throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': routes must have either a path or a matcher specified`); + } + if (typeof route.path === "string" && route.path.charAt(0) === "/") { + throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': path cannot start with a slash`); + } + if (route.path === "" && route.redirectTo !== void 0 && route.pathMatch === void 0) { + const exp = `The default value of 'pathMatch' is 'prefix', but often the intent is to use 'full'.`; + throw new RuntimeError(4014, `Invalid configuration of route '{path: "${fullPath}", redirectTo: "${route.redirectTo}"}': please provide 'pathMatch'. ${exp}`); + } + if (requireStandaloneComponents) { + assertStandalone(fullPath, route.component); + } + } + if (route.children) { + validateConfig(route.children, fullPath, requireStandaloneComponents); + } +} +function getFullPath(parentPath, currentRoute) { + if (!currentRoute) { + return parentPath; + } + if (!parentPath && !currentRoute.path) { + return ""; + } else if (parentPath && !currentRoute.path) { + return `${parentPath}/`; + } else if (!parentPath && currentRoute.path) { + return currentRoute.path; + } else { + return `${parentPath}/${currentRoute.path}`; + } +} +function standardizeConfig(r) { + const children = r.children && r.children.map(standardizeConfig); + const c = children ? __spreadProps(__spreadValues({}, r), { + children + }) : __spreadValues({}, r); + if (!c.component && !c.loadComponent && (children || c.loadChildren) && c.outlet && c.outlet !== PRIMARY_OUTLET) { + c.component = ɵEmptyOutletComponent; + } + return c; +} +function getOutlet(route) { + return route.outlet || PRIMARY_OUTLET; +} +function sortByMatchingOutlets(routes, outletName) { + const sortedConfig = routes.filter((r) => getOutlet(r) === outletName); + sortedConfig.push(...routes.filter((r) => getOutlet(r) !== outletName)); + return sortedConfig; +} +function getClosestRouteInjector(snapshot) { + if (!snapshot) + return null; + if (snapshot.routeConfig?._injector) { + return snapshot.routeConfig._injector; + } + for (let s = snapshot.parent; s; s = s.parent) { + const route = s.routeConfig; + if (route?._loadedInjector) + return route._loadedInjector; + if (route?._injector) + return route._injector; + } + return null; +} +var warnedAboutUnsupportedInputBinding = false; +var activateRoutes = (rootContexts, routeReuseStrategy, forwardEvent, inputBindingEnabled) => map((t) => { + new ActivateRoutes(routeReuseStrategy, t.targetRouterState, t.currentRouterState, forwardEvent, inputBindingEnabled).activate(rootContexts); + return t; +}); +var ActivateRoutes = class { + constructor(routeReuseStrategy, futureState, currState, forwardEvent, inputBindingEnabled) { + this.routeReuseStrategy = routeReuseStrategy; + this.futureState = futureState; + this.currState = currState; + this.forwardEvent = forwardEvent; + this.inputBindingEnabled = inputBindingEnabled; + } + activate(parentContexts) { + const futureRoot = this.futureState._root; + const currRoot = this.currState ? this.currState._root : null; + this.deactivateChildRoutes(futureRoot, currRoot, parentContexts); + advanceActivatedRoute(this.futureState.root); + this.activateChildRoutes(futureRoot, currRoot, parentContexts); + } + // De-activate the child route that are not re-used for the future state + deactivateChildRoutes(futureNode, currNode, contexts) { + const children = nodeChildrenAsMap(currNode); + futureNode.children.forEach((futureChild) => { + const childOutletName = futureChild.value.outlet; + this.deactivateRoutes(futureChild, children[childOutletName], contexts); + delete children[childOutletName]; + }); + Object.values(children).forEach((v) => { + this.deactivateRouteAndItsChildren(v, contexts); + }); + } + deactivateRoutes(futureNode, currNode, parentContext) { + const future = futureNode.value; + const curr = currNode ? currNode.value : null; + if (future === curr) { + if (future.component) { + const context = parentContext.getContext(future.outlet); + if (context) { + this.deactivateChildRoutes(futureNode, currNode, context.children); + } + } else { + this.deactivateChildRoutes(futureNode, currNode, parentContext); + } + } else { + if (curr) { + this.deactivateRouteAndItsChildren(currNode, parentContext); + } + } + } + deactivateRouteAndItsChildren(route, parentContexts) { + if (route.value.component && this.routeReuseStrategy.shouldDetach(route.value.snapshot)) { + this.detachAndStoreRouteSubtree(route, parentContexts); + } else { + this.deactivateRouteAndOutlet(route, parentContexts); + } + } + detachAndStoreRouteSubtree(route, parentContexts) { + const context = parentContexts.getContext(route.value.outlet); + const contexts = context && route.value.component ? context.children : parentContexts; + const children = nodeChildrenAsMap(route); + for (const childOutlet of Object.keys(children)) { + this.deactivateRouteAndItsChildren(children[childOutlet], contexts); + } + if (context && context.outlet) { + const componentRef = context.outlet.detach(); + const contexts2 = context.children.onOutletDeactivated(); + this.routeReuseStrategy.store(route.value.snapshot, { + componentRef, + route, + contexts: contexts2 + }); + } + } + deactivateRouteAndOutlet(route, parentContexts) { + const context = parentContexts.getContext(route.value.outlet); + const contexts = context && route.value.component ? context.children : parentContexts; + const children = nodeChildrenAsMap(route); + for (const childOutlet of Object.keys(children)) { + this.deactivateRouteAndItsChildren(children[childOutlet], contexts); + } + if (context) { + if (context.outlet) { + context.outlet.deactivate(); + context.children.onOutletDeactivated(); + } + context.attachRef = null; + context.route = null; + } + } + activateChildRoutes(futureNode, currNode, contexts) { + const children = nodeChildrenAsMap(currNode); + futureNode.children.forEach((c) => { + this.activateRoutes(c, children[c.value.outlet], contexts); + this.forwardEvent(new ActivationEnd(c.value.snapshot)); + }); + if (futureNode.children.length) { + this.forwardEvent(new ChildActivationEnd(futureNode.value.snapshot)); + } + } + activateRoutes(futureNode, currNode, parentContexts) { + const future = futureNode.value; + const curr = currNode ? currNode.value : null; + advanceActivatedRoute(future); + if (future === curr) { + if (future.component) { + const context = parentContexts.getOrCreateContext(future.outlet); + this.activateChildRoutes(futureNode, currNode, context.children); + } else { + this.activateChildRoutes(futureNode, currNode, parentContexts); + } + } else { + if (future.component) { + const context = parentContexts.getOrCreateContext(future.outlet); + if (this.routeReuseStrategy.shouldAttach(future.snapshot)) { + const stored = this.routeReuseStrategy.retrieve(future.snapshot); + this.routeReuseStrategy.store(future.snapshot, null); + context.children.onOutletReAttached(stored.contexts); + context.attachRef = stored.componentRef; + context.route = stored.route.value; + if (context.outlet) { + context.outlet.attach(stored.componentRef, stored.route.value); + } + advanceActivatedRoute(stored.route.value); + this.activateChildRoutes(futureNode, null, context.children); + } else { + const injector = getClosestRouteInjector(future.snapshot); + context.attachRef = null; + context.route = future; + context.injector = injector; + if (context.outlet) { + context.outlet.activateWith(future, context.injector); + } + this.activateChildRoutes(futureNode, null, context.children); + } + } else { + this.activateChildRoutes(futureNode, null, parentContexts); + } + } + if (typeof ngDevMode === "undefined" || ngDevMode) { + const context = parentContexts.getOrCreateContext(future.outlet); + const outlet = context.outlet; + if (outlet && this.inputBindingEnabled && !outlet.supportsBindingToComponentInputs && !warnedAboutUnsupportedInputBinding) { + console.warn(`'withComponentInputBinding' feature is enabled but this application is using an outlet that may not support binding to component inputs.`); + warnedAboutUnsupportedInputBinding = true; + } + } + } +}; +var CanActivate = class { + constructor(path) { + this.path = path; + this.route = this.path[this.path.length - 1]; + } +}; +var CanDeactivate = class { + constructor(component, route) { + this.component = component; + this.route = route; + } +}; +function getAllRouteGuards(future, curr, parentContexts) { + const futureRoot = future._root; + const currRoot = curr ? curr._root : null; + return getChildRouteGuards(futureRoot, currRoot, parentContexts, [futureRoot.value]); +} +function getCanActivateChild(p) { + const canActivateChild = p.routeConfig ? p.routeConfig.canActivateChild : null; + if (!canActivateChild || canActivateChild.length === 0) + return null; + return { + node: p, + guards: canActivateChild + }; +} +function getTokenOrFunctionIdentity(tokenOrFunction, injector) { + const NOT_FOUND = Symbol(); + const result = injector.get(tokenOrFunction, NOT_FOUND); + if (result === NOT_FOUND) { + if (typeof tokenOrFunction === "function" && !isInjectable(tokenOrFunction)) { + return tokenOrFunction; + } else { + return injector.get(tokenOrFunction); + } + } + return result; +} +function getChildRouteGuards(futureNode, currNode, contexts, futurePath, checks = { + canDeactivateChecks: [], + canActivateChecks: [] +}) { + const prevChildren = nodeChildrenAsMap(currNode); + futureNode.children.forEach((c) => { + getRouteGuards(c, prevChildren[c.value.outlet], contexts, futurePath.concat([c.value]), checks); + delete prevChildren[c.value.outlet]; + }); + Object.entries(prevChildren).forEach(([k, v]) => deactivateRouteAndItsChildren(v, contexts.getContext(k), checks)); + return checks; +} +function getRouteGuards(futureNode, currNode, parentContexts, futurePath, checks = { + canDeactivateChecks: [], + canActivateChecks: [] +}) { + const future = futureNode.value; + const curr = currNode ? currNode.value : null; + const context = parentContexts ? parentContexts.getContext(futureNode.value.outlet) : null; + if (curr && future.routeConfig === curr.routeConfig) { + const shouldRun = shouldRunGuardsAndResolvers(curr, future, future.routeConfig.runGuardsAndResolvers); + if (shouldRun) { + checks.canActivateChecks.push(new CanActivate(futurePath)); + } else { + future.data = curr.data; + future._resolvedData = curr._resolvedData; + } + if (future.component) { + getChildRouteGuards(futureNode, currNode, context ? context.children : null, futurePath, checks); + } else { + getChildRouteGuards(futureNode, currNode, parentContexts, futurePath, checks); + } + if (shouldRun && context && context.outlet && context.outlet.isActivated) { + checks.canDeactivateChecks.push(new CanDeactivate(context.outlet.component, curr)); + } + } else { + if (curr) { + deactivateRouteAndItsChildren(currNode, context, checks); + } + checks.canActivateChecks.push(new CanActivate(futurePath)); + if (future.component) { + getChildRouteGuards(futureNode, null, context ? context.children : null, futurePath, checks); + } else { + getChildRouteGuards(futureNode, null, parentContexts, futurePath, checks); + } + } + return checks; +} +function shouldRunGuardsAndResolvers(curr, future, mode) { + if (typeof mode === "function") { + return mode(curr, future); + } + switch (mode) { + case "pathParamsChange": + return !equalPath(curr.url, future.url); + case "pathParamsOrQueryParamsChange": + return !equalPath(curr.url, future.url) || !shallowEqual(curr.queryParams, future.queryParams); + case "always": + return true; + case "paramsOrQueryParamsChange": + return !equalParamsAndUrlSegments(curr, future) || !shallowEqual(curr.queryParams, future.queryParams); + case "paramsChange": + default: + return !equalParamsAndUrlSegments(curr, future); + } +} +function deactivateRouteAndItsChildren(route, context, checks) { + const children = nodeChildrenAsMap(route); + const r = route.value; + Object.entries(children).forEach(([childName, node]) => { + if (!r.component) { + deactivateRouteAndItsChildren(node, context, checks); + } else if (context) { + deactivateRouteAndItsChildren(node, context.children.getContext(childName), checks); + } else { + deactivateRouteAndItsChildren(node, null, checks); + } + }); + if (!r.component) { + checks.canDeactivateChecks.push(new CanDeactivate(null, r)); + } else if (context && context.outlet && context.outlet.isActivated) { + checks.canDeactivateChecks.push(new CanDeactivate(context.outlet.component, r)); + } else { + checks.canDeactivateChecks.push(new CanDeactivate(null, r)); + } +} +function isFunction(v) { + return typeof v === "function"; +} +function isBoolean(v) { + return typeof v === "boolean"; +} +function isCanLoad(guard) { + return guard && isFunction(guard.canLoad); +} +function isCanActivate(guard) { + return guard && isFunction(guard.canActivate); +} +function isCanActivateChild(guard) { + return guard && isFunction(guard.canActivateChild); +} +function isCanDeactivate(guard) { + return guard && isFunction(guard.canDeactivate); +} +function isCanMatch(guard) { + return guard && isFunction(guard.canMatch); +} +function isEmptyError(e) { + return e instanceof EmptyError || e?.name === "EmptyError"; +} +var INITIAL_VALUE = Symbol("INITIAL_VALUE"); +function prioritizedGuardValue() { + return switchMap((obs) => { + return combineLatest(obs.map((o) => o.pipe(take(1), startWith(INITIAL_VALUE)))).pipe(map((results) => { + for (const result of results) { + if (result === true) { + continue; + } else if (result === INITIAL_VALUE) { + return INITIAL_VALUE; + } else if (result === false || result instanceof UrlTree) { + return result; + } + } + return true; + }), filter((item) => item !== INITIAL_VALUE), take(1)); + }); +} +function checkGuards(injector, forwardEvent) { + return mergeMap((t) => { + const { + targetSnapshot, + currentSnapshot, + guards: { + canActivateChecks, + canDeactivateChecks + } + } = t; + if (canDeactivateChecks.length === 0 && canActivateChecks.length === 0) { + return of(__spreadProps(__spreadValues({}, t), { + guardsResult: true + })); + } + return runCanDeactivateChecks(canDeactivateChecks, targetSnapshot, currentSnapshot, injector).pipe(mergeMap((canDeactivate) => { + return canDeactivate && isBoolean(canDeactivate) ? runCanActivateChecks(targetSnapshot, canActivateChecks, injector, forwardEvent) : of(canDeactivate); + }), map((guardsResult) => __spreadProps(__spreadValues({}, t), { + guardsResult + }))); + }); +} +function runCanDeactivateChecks(checks, futureRSS, currRSS, injector) { + return from(checks).pipe(mergeMap((check) => runCanDeactivate(check.component, check.route, currRSS, futureRSS, injector)), first((result) => { + return result !== true; + }, true)); +} +function runCanActivateChecks(futureSnapshot, checks, injector, forwardEvent) { + return from(checks).pipe(concatMap((check) => { + return concat(fireChildActivationStart(check.route.parent, forwardEvent), fireActivationStart(check.route, forwardEvent), runCanActivateChild(futureSnapshot, check.path, injector), runCanActivate(futureSnapshot, check.route, injector)); + }), first((result) => { + return result !== true; + }, true)); +} +function fireActivationStart(snapshot, forwardEvent) { + if (snapshot !== null && forwardEvent) { + forwardEvent(new ActivationStart(snapshot)); + } + return of(true); +} +function fireChildActivationStart(snapshot, forwardEvent) { + if (snapshot !== null && forwardEvent) { + forwardEvent(new ChildActivationStart(snapshot)); + } + return of(true); +} +function runCanActivate(futureRSS, futureARS, injector) { + const canActivate = futureARS.routeConfig ? futureARS.routeConfig.canActivate : null; + if (!canActivate || canActivate.length === 0) + return of(true); + const canActivateObservables = canActivate.map((canActivate2) => { + return defer(() => { + const closestInjector = getClosestRouteInjector(futureARS) ?? injector; + const guard = getTokenOrFunctionIdentity(canActivate2, closestInjector); + const guardVal = isCanActivate(guard) ? guard.canActivate(futureARS, futureRSS) : runInInjectionContext(closestInjector, () => guard(futureARS, futureRSS)); + return wrapIntoObservable(guardVal).pipe(first()); + }); + }); + return of(canActivateObservables).pipe(prioritizedGuardValue()); +} +function runCanActivateChild(futureRSS, path, injector) { + const futureARS = path[path.length - 1]; + const canActivateChildGuards = path.slice(0, path.length - 1).reverse().map((p) => getCanActivateChild(p)).filter((_) => _ !== null); + const canActivateChildGuardsMapped = canActivateChildGuards.map((d) => { + return defer(() => { + const guardsMapped = d.guards.map((canActivateChild) => { + const closestInjector = getClosestRouteInjector(d.node) ?? injector; + const guard = getTokenOrFunctionIdentity(canActivateChild, closestInjector); + const guardVal = isCanActivateChild(guard) ? guard.canActivateChild(futureARS, futureRSS) : runInInjectionContext(closestInjector, () => guard(futureARS, futureRSS)); + return wrapIntoObservable(guardVal).pipe(first()); + }); + return of(guardsMapped).pipe(prioritizedGuardValue()); + }); + }); + return of(canActivateChildGuardsMapped).pipe(prioritizedGuardValue()); +} +function runCanDeactivate(component, currARS, currRSS, futureRSS, injector) { + const canDeactivate = currARS && currARS.routeConfig ? currARS.routeConfig.canDeactivate : null; + if (!canDeactivate || canDeactivate.length === 0) + return of(true); + const canDeactivateObservables = canDeactivate.map((c) => { + const closestInjector = getClosestRouteInjector(currARS) ?? injector; + const guard = getTokenOrFunctionIdentity(c, closestInjector); + const guardVal = isCanDeactivate(guard) ? guard.canDeactivate(component, currARS, currRSS, futureRSS) : runInInjectionContext(closestInjector, () => guard(component, currARS, currRSS, futureRSS)); + return wrapIntoObservable(guardVal).pipe(first()); + }); + return of(canDeactivateObservables).pipe(prioritizedGuardValue()); +} +function runCanLoadGuards(injector, route, segments, urlSerializer) { + const canLoad = route.canLoad; + if (canLoad === void 0 || canLoad.length === 0) { + return of(true); + } + const canLoadObservables = canLoad.map((injectionToken) => { + const guard = getTokenOrFunctionIdentity(injectionToken, injector); + const guardVal = isCanLoad(guard) ? guard.canLoad(route, segments) : runInInjectionContext(injector, () => guard(route, segments)); + return wrapIntoObservable(guardVal); + }); + return of(canLoadObservables).pipe(prioritizedGuardValue(), redirectIfUrlTree(urlSerializer)); +} +function redirectIfUrlTree(urlSerializer) { + return pipe(tap((result) => { + if (!isUrlTree(result)) + return; + throw redirectingNavigationError(urlSerializer, result); + }), map((result) => result === true)); +} +function runCanMatchGuards(injector, route, segments, urlSerializer) { + const canMatch = route.canMatch; + if (!canMatch || canMatch.length === 0) + return of(true); + const canMatchObservables = canMatch.map((injectionToken) => { + const guard = getTokenOrFunctionIdentity(injectionToken, injector); + const guardVal = isCanMatch(guard) ? guard.canMatch(route, segments) : runInInjectionContext(injector, () => guard(route, segments)); + return wrapIntoObservable(guardVal); + }); + return of(canMatchObservables).pipe(prioritizedGuardValue(), redirectIfUrlTree(urlSerializer)); +} +var NoMatch = class { + constructor(segmentGroup) { + this.segmentGroup = segmentGroup || null; + } +}; +var AbsoluteRedirect = class extends Error { + constructor(urlTree) { + super(); + this.urlTree = urlTree; + } +}; +function noMatch$1(segmentGroup) { + return throwError(new NoMatch(segmentGroup)); +} +function namedOutletsRedirect(redirectTo) { + return throwError(new RuntimeError(4e3, (typeof ngDevMode === "undefined" || ngDevMode) && `Only absolute redirects can have named outlets. redirectTo: '${redirectTo}'`)); +} +function canLoadFails(route) { + return throwError(navigationCancelingError( + (typeof ngDevMode === "undefined" || ngDevMode) && `Cannot load children because the guard of the route "path: '${route.path}'" returned false`, + 3 + /* NavigationCancellationCode.GuardRejected */ + )); +} +var ApplyRedirects = class { + constructor(urlSerializer, urlTree) { + this.urlSerializer = urlSerializer; + this.urlTree = urlTree; + } + lineralizeSegments(route, urlTree) { + let res = []; + let c = urlTree.root; + while (true) { + res = res.concat(c.segments); + if (c.numberOfChildren === 0) { + return of(res); + } + if (c.numberOfChildren > 1 || !c.children[PRIMARY_OUTLET]) { + return namedOutletsRedirect(route.redirectTo); + } + c = c.children[PRIMARY_OUTLET]; + } + } + applyRedirectCommands(segments, redirectTo, posParams) { + const newTree = this.applyRedirectCreateUrlTree(redirectTo, this.urlSerializer.parse(redirectTo), segments, posParams); + if (redirectTo.startsWith("/")) { + throw new AbsoluteRedirect(newTree); + } + return newTree; + } + applyRedirectCreateUrlTree(redirectTo, urlTree, segments, posParams) { + const newRoot = this.createSegmentGroup(redirectTo, urlTree.root, segments, posParams); + return new UrlTree(newRoot, this.createQueryParams(urlTree.queryParams, this.urlTree.queryParams), urlTree.fragment); + } + createQueryParams(redirectToParams, actualParams) { + const res = {}; + Object.entries(redirectToParams).forEach(([k, v]) => { + const copySourceValue = typeof v === "string" && v.startsWith(":"); + if (copySourceValue) { + const sourceName = v.substring(1); + res[k] = actualParams[sourceName]; + } else { + res[k] = v; + } + }); + return res; + } + createSegmentGroup(redirectTo, group, segments, posParams) { + const updatedSegments = this.createSegments(redirectTo, group.segments, segments, posParams); + let children = {}; + Object.entries(group.children).forEach(([name, child]) => { + children[name] = this.createSegmentGroup(redirectTo, child, segments, posParams); + }); + return new UrlSegmentGroup(updatedSegments, children); + } + createSegments(redirectTo, redirectToSegments, actualSegments, posParams) { + return redirectToSegments.map((s) => s.path.startsWith(":") ? this.findPosParam(redirectTo, s, posParams) : this.findOrReturn(s, actualSegments)); + } + findPosParam(redirectTo, redirectToUrlSegment, posParams) { + const pos = posParams[redirectToUrlSegment.path.substring(1)]; + if (!pos) + throw new RuntimeError(4001, (typeof ngDevMode === "undefined" || ngDevMode) && `Cannot redirect to '${redirectTo}'. Cannot find '${redirectToUrlSegment.path}'.`); + return pos; + } + findOrReturn(redirectToUrlSegment, actualSegments) { + let idx = 0; + for (const s of actualSegments) { + if (s.path === redirectToUrlSegment.path) { + actualSegments.splice(idx); + return s; + } + idx++; + } + return redirectToUrlSegment; + } +}; +var noMatch = { + matched: false, + consumedSegments: [], + remainingSegments: [], + parameters: {}, + positionalParamSegments: {} +}; +function matchWithChecks(segmentGroup, route, segments, injector, urlSerializer) { + const result = match(segmentGroup, route, segments); + if (!result.matched) { + return of(result); + } + injector = getOrCreateRouteInjectorIfNeeded(route, injector); + return runCanMatchGuards(injector, route, segments, urlSerializer).pipe(map((v) => v === true ? result : __spreadValues({}, noMatch))); +} +function match(segmentGroup, route, segments) { + if (route.path === "**") { + return createWildcardMatchResult(segments); + } + if (route.path === "") { + if (route.pathMatch === "full" && (segmentGroup.hasChildren() || segments.length > 0)) { + return __spreadValues({}, noMatch); + } + return { + matched: true, + consumedSegments: [], + remainingSegments: segments, + parameters: {}, + positionalParamSegments: {} + }; + } + const matcher = route.matcher || defaultUrlMatcher; + const res = matcher(segments, segmentGroup, route); + if (!res) + return __spreadValues({}, noMatch); + const posParams = {}; + Object.entries(res.posParams ?? {}).forEach(([k, v]) => { + posParams[k] = v.path; + }); + const parameters = res.consumed.length > 0 ? __spreadValues(__spreadValues({}, posParams), res.consumed[res.consumed.length - 1].parameters) : posParams; + return { + matched: true, + consumedSegments: res.consumed, + remainingSegments: segments.slice(res.consumed.length), + // TODO(atscott): investigate combining parameters and positionalParamSegments + parameters, + positionalParamSegments: res.posParams ?? {} + }; +} +function createWildcardMatchResult(segments) { + return { + matched: true, + parameters: segments.length > 0 ? last2(segments).parameters : {}, + consumedSegments: segments, + remainingSegments: [], + positionalParamSegments: {} + }; +} +function split(segmentGroup, consumedSegments, slicedSegments, config) { + if (slicedSegments.length > 0 && containsEmptyPathMatchesWithNamedOutlets(segmentGroup, slicedSegments, config)) { + const s2 = new UrlSegmentGroup(consumedSegments, createChildrenForEmptyPaths(config, new UrlSegmentGroup(slicedSegments, segmentGroup.children))); + return { + segmentGroup: s2, + slicedSegments: [] + }; + } + if (slicedSegments.length === 0 && containsEmptyPathMatches(segmentGroup, slicedSegments, config)) { + const s2 = new UrlSegmentGroup(segmentGroup.segments, addEmptyPathsToChildrenIfNeeded(segmentGroup, consumedSegments, slicedSegments, config, segmentGroup.children)); + return { + segmentGroup: s2, + slicedSegments + }; + } + const s = new UrlSegmentGroup(segmentGroup.segments, segmentGroup.children); + return { + segmentGroup: s, + slicedSegments + }; +} +function addEmptyPathsToChildrenIfNeeded(segmentGroup, consumedSegments, slicedSegments, routes, children) { + const res = {}; + for (const r of routes) { + if (emptyPathMatch(segmentGroup, slicedSegments, r) && !children[getOutlet(r)]) { + const s = new UrlSegmentGroup([], {}); + res[getOutlet(r)] = s; + } + } + return __spreadValues(__spreadValues({}, children), res); +} +function createChildrenForEmptyPaths(routes, primarySegment) { + const res = {}; + res[PRIMARY_OUTLET] = primarySegment; + for (const r of routes) { + if (r.path === "" && getOutlet(r) !== PRIMARY_OUTLET) { + const s = new UrlSegmentGroup([], {}); + res[getOutlet(r)] = s; + } + } + return res; +} +function containsEmptyPathMatchesWithNamedOutlets(segmentGroup, slicedSegments, routes) { + return routes.some((r) => emptyPathMatch(segmentGroup, slicedSegments, r) && getOutlet(r) !== PRIMARY_OUTLET); +} +function containsEmptyPathMatches(segmentGroup, slicedSegments, routes) { + return routes.some((r) => emptyPathMatch(segmentGroup, slicedSegments, r)); +} +function emptyPathMatch(segmentGroup, slicedSegments, r) { + if ((segmentGroup.hasChildren() || slicedSegments.length > 0) && r.pathMatch === "full") { + return false; + } + return r.path === ""; +} +function isImmediateMatch(route, rawSegment, segments, outlet) { + if (getOutlet(route) !== outlet && (outlet === PRIMARY_OUTLET || !emptyPathMatch(rawSegment, segments, route))) { + return false; + } + return match(rawSegment, route, segments).matched; +} +function noLeftoversInUrl(segmentGroup, segments, outlet) { + return segments.length === 0 && !segmentGroup.children[outlet]; +} +var NoLeftoversInUrl = class { +}; +function recognize$1(injector, configLoader, rootComponentType, config, urlTree, urlSerializer, paramsInheritanceStrategy = "emptyOnly") { + return new Recognizer(injector, configLoader, rootComponentType, config, urlTree, paramsInheritanceStrategy, urlSerializer).recognize(); +} +var MAX_ALLOWED_REDIRECTS = 31; +var Recognizer = class { + constructor(injector, configLoader, rootComponentType, config, urlTree, paramsInheritanceStrategy, urlSerializer) { + this.injector = injector; + this.configLoader = configLoader; + this.rootComponentType = rootComponentType; + this.config = config; + this.urlTree = urlTree; + this.paramsInheritanceStrategy = paramsInheritanceStrategy; + this.urlSerializer = urlSerializer; + this.applyRedirects = new ApplyRedirects(this.urlSerializer, this.urlTree); + this.absoluteRedirectCount = 0; + this.allowRedirects = true; + } + noMatchError(e) { + return new RuntimeError(4002, typeof ngDevMode === "undefined" || ngDevMode ? `Cannot match any routes. URL Segment: '${e.segmentGroup}'` : `'${e.segmentGroup}'`); + } + recognize() { + const rootSegmentGroup = split(this.urlTree.root, [], [], this.config).segmentGroup; + return this.match(rootSegmentGroup).pipe(map((children) => { + const root = new ActivatedRouteSnapshot([], Object.freeze({}), Object.freeze(__spreadValues({}, this.urlTree.queryParams)), this.urlTree.fragment, {}, PRIMARY_OUTLET, this.rootComponentType, null, {}); + const rootNode = new TreeNode(root, children); + const routeState = new RouterStateSnapshot("", rootNode); + const tree2 = createUrlTreeFromSnapshot(root, [], this.urlTree.queryParams, this.urlTree.fragment); + tree2.queryParams = this.urlTree.queryParams; + routeState.url = this.urlSerializer.serialize(tree2); + this.inheritParamsAndData(routeState._root, null); + return { + state: routeState, + tree: tree2 + }; + })); + } + match(rootSegmentGroup) { + const expanded$ = this.processSegmentGroup(this.injector, this.config, rootSegmentGroup, PRIMARY_OUTLET); + return expanded$.pipe(catchError((e) => { + if (e instanceof AbsoluteRedirect) { + this.urlTree = e.urlTree; + return this.match(e.urlTree.root); + } + if (e instanceof NoMatch) { + throw this.noMatchError(e); + } + throw e; + })); + } + inheritParamsAndData(routeNode, parent) { + const route = routeNode.value; + const i = getInherited(route, parent, this.paramsInheritanceStrategy); + route.params = Object.freeze(i.params); + route.data = Object.freeze(i.data); + routeNode.children.forEach((n) => this.inheritParamsAndData(n, route)); + } + processSegmentGroup(injector, config, segmentGroup, outlet) { + if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) { + return this.processChildren(injector, config, segmentGroup); + } + return this.processSegment(injector, config, segmentGroup, segmentGroup.segments, outlet, true).pipe(map((child) => child instanceof TreeNode ? [child] : [])); + } + /** + * Matches every child outlet in the `segmentGroup` to a `Route` in the config. Returns `null` if + * we cannot find a match for _any_ of the children. + * + * @param config - The `Routes` to match against + * @param segmentGroup - The `UrlSegmentGroup` whose children need to be matched against the + * config. + */ + processChildren(injector, config, segmentGroup) { + const childOutlets = []; + for (const child of Object.keys(segmentGroup.children)) { + if (child === "primary") { + childOutlets.unshift(child); + } else { + childOutlets.push(child); + } + } + return from(childOutlets).pipe(concatMap((childOutlet) => { + const child = segmentGroup.children[childOutlet]; + const sortedConfig = sortByMatchingOutlets(config, childOutlet); + return this.processSegmentGroup(injector, sortedConfig, child, childOutlet); + }), scan((children, outletChildren) => { + children.push(...outletChildren); + return children; + }), defaultIfEmpty(null), last(), mergeMap((children) => { + if (children === null) + return noMatch$1(segmentGroup); + const mergedChildren = mergeEmptyPathMatches(children); + if (typeof ngDevMode === "undefined" || ngDevMode) { + checkOutletNameUniqueness(mergedChildren); + } + sortActivatedRouteSnapshots(mergedChildren); + return of(mergedChildren); + })); + } + processSegment(injector, routes, segmentGroup, segments, outlet, allowRedirects) { + return from(routes).pipe(concatMap((r) => { + return this.processSegmentAgainstRoute(r._injector ?? injector, routes, r, segmentGroup, segments, outlet, allowRedirects).pipe(catchError((e) => { + if (e instanceof NoMatch) { + return of(null); + } + throw e; + })); + }), first((x) => !!x), catchError((e) => { + if (isEmptyError(e)) { + if (noLeftoversInUrl(segmentGroup, segments, outlet)) { + return of(new NoLeftoversInUrl()); + } + return noMatch$1(segmentGroup); + } + throw e; + })); + } + processSegmentAgainstRoute(injector, routes, route, rawSegment, segments, outlet, allowRedirects) { + if (!isImmediateMatch(route, rawSegment, segments, outlet)) + return noMatch$1(rawSegment); + if (route.redirectTo === void 0) { + return this.matchSegmentAgainstRoute(injector, rawSegment, route, segments, outlet); + } + if (this.allowRedirects && allowRedirects) { + return this.expandSegmentAgainstRouteUsingRedirect(injector, rawSegment, routes, route, segments, outlet); + } + return noMatch$1(rawSegment); + } + expandSegmentAgainstRouteUsingRedirect(injector, segmentGroup, routes, route, segments, outlet) { + const { + matched, + consumedSegments, + positionalParamSegments, + remainingSegments + } = match(segmentGroup, route, segments); + if (!matched) + return noMatch$1(segmentGroup); + if (route.redirectTo.startsWith("/")) { + this.absoluteRedirectCount++; + if (this.absoluteRedirectCount > MAX_ALLOWED_REDIRECTS) { + if (ngDevMode) { + throw new RuntimeError(4016, `Detected possible infinite redirect when redirecting from '${this.urlTree}' to '${route.redirectTo}'. +This is currently a dev mode only error but will become a call stack size exceeded error in production in a future major version.`); + } + this.allowRedirects = false; + } + } + const newTree = this.applyRedirects.applyRedirectCommands(consumedSegments, route.redirectTo, positionalParamSegments); + return this.applyRedirects.lineralizeSegments(route, newTree).pipe(mergeMap((newSegments) => { + return this.processSegment(injector, routes, segmentGroup, newSegments.concat(remainingSegments), outlet, false); + })); + } + matchSegmentAgainstRoute(injector, rawSegment, route, segments, outlet) { + const matchResult = matchWithChecks(rawSegment, route, segments, injector, this.urlSerializer); + if (route.path === "**") { + rawSegment.children = {}; + } + return matchResult.pipe(switchMap((result) => { + if (!result.matched) { + return noMatch$1(rawSegment); + } + injector = route._injector ?? injector; + return this.getChildConfig(injector, route, segments).pipe(switchMap(({ + routes: childConfig + }) => { + const childInjector = route._loadedInjector ?? injector; + const { + consumedSegments, + remainingSegments, + parameters + } = result; + const snapshot = new ActivatedRouteSnapshot(consumedSegments, parameters, Object.freeze(__spreadValues({}, this.urlTree.queryParams)), this.urlTree.fragment, getData(route), getOutlet(route), route.component ?? route._loadedComponent ?? null, route, getResolve(route)); + const { + segmentGroup, + slicedSegments + } = split(rawSegment, consumedSegments, remainingSegments, childConfig); + if (slicedSegments.length === 0 && segmentGroup.hasChildren()) { + return this.processChildren(childInjector, childConfig, segmentGroup).pipe(map((children) => { + if (children === null) { + return null; + } + return new TreeNode(snapshot, children); + })); + } + if (childConfig.length === 0 && slicedSegments.length === 0) { + return of(new TreeNode(snapshot, [])); + } + const matchedOnOutlet = getOutlet(route) === outlet; + return this.processSegment(childInjector, childConfig, segmentGroup, slicedSegments, matchedOnOutlet ? PRIMARY_OUTLET : outlet, true).pipe(map((child) => { + return new TreeNode(snapshot, child instanceof TreeNode ? [child] : []); + })); + })); + })); + } + getChildConfig(injector, route, segments) { + if (route.children) { + return of({ + routes: route.children, + injector + }); + } + if (route.loadChildren) { + if (route._loadedRoutes !== void 0) { + return of({ + routes: route._loadedRoutes, + injector: route._loadedInjector + }); + } + return runCanLoadGuards(injector, route, segments, this.urlSerializer).pipe(mergeMap((shouldLoadResult) => { + if (shouldLoadResult) { + return this.configLoader.loadChildren(injector, route).pipe(tap((cfg) => { + route._loadedRoutes = cfg.routes; + route._loadedInjector = cfg.injector; + })); + } + return canLoadFails(route); + })); + } + return of({ + routes: [], + injector + }); + } +}; +function sortActivatedRouteSnapshots(nodes) { + nodes.sort((a, b) => { + if (a.value.outlet === PRIMARY_OUTLET) + return -1; + if (b.value.outlet === PRIMARY_OUTLET) + return 1; + return a.value.outlet.localeCompare(b.value.outlet); + }); +} +function hasEmptyPathConfig(node) { + const config = node.value.routeConfig; + return config && config.path === ""; +} +function mergeEmptyPathMatches(nodes) { + const result = []; + const mergedNodes = /* @__PURE__ */ new Set(); + for (const node of nodes) { + if (!hasEmptyPathConfig(node)) { + result.push(node); + continue; + } + const duplicateEmptyPathNode = result.find((resultNode) => node.value.routeConfig === resultNode.value.routeConfig); + if (duplicateEmptyPathNode !== void 0) { + duplicateEmptyPathNode.children.push(...node.children); + mergedNodes.add(duplicateEmptyPathNode); + } else { + result.push(node); + } + } + for (const mergedNode of mergedNodes) { + const mergedChildren = mergeEmptyPathMatches(mergedNode.children); + result.push(new TreeNode(mergedNode.value, mergedChildren)); + } + return result.filter((n) => !mergedNodes.has(n)); +} +function checkOutletNameUniqueness(nodes) { + const names = {}; + nodes.forEach((n) => { + const routeWithSameOutletName = names[n.value.outlet]; + if (routeWithSameOutletName) { + const p = routeWithSameOutletName.url.map((s) => s.toString()).join("/"); + const c = n.value.url.map((s) => s.toString()).join("/"); + throw new RuntimeError(4006, (typeof ngDevMode === "undefined" || ngDevMode) && `Two segments cannot have the same outlet name: '${p}' and '${c}'.`); + } + names[n.value.outlet] = n.value; + }); +} +function getData(route) { + return route.data || {}; +} +function getResolve(route) { + return route.resolve || {}; +} +function recognize(injector, configLoader, rootComponentType, config, serializer, paramsInheritanceStrategy) { + return mergeMap((t) => recognize$1(injector, configLoader, rootComponentType, config, t.extractedUrl, serializer, paramsInheritanceStrategy).pipe(map(({ + state: targetSnapshot, + tree: urlAfterRedirects + }) => { + return __spreadProps(__spreadValues({}, t), { + targetSnapshot, + urlAfterRedirects + }); + }))); +} +function resolveData(paramsInheritanceStrategy, injector) { + return mergeMap((t) => { + const { + targetSnapshot, + guards: { + canActivateChecks + } + } = t; + if (!canActivateChecks.length) { + return of(t); + } + const routesWithResolversToRun = new Set(canActivateChecks.map((check) => check.route)); + const routesNeedingDataUpdates = /* @__PURE__ */ new Set(); + for (const route of routesWithResolversToRun) { + if (routesNeedingDataUpdates.has(route)) { + continue; + } + for (const newRoute of flattenRouteTree(route)) { + routesNeedingDataUpdates.add(newRoute); + } + } + let routesProcessed = 0; + return from(routesNeedingDataUpdates).pipe(concatMap((route) => { + if (routesWithResolversToRun.has(route)) { + return runResolve(route, targetSnapshot, paramsInheritanceStrategy, injector); + } else { + route.data = getInherited(route, route.parent, paramsInheritanceStrategy).resolve; + return of(void 0); + } + }), tap(() => routesProcessed++), takeLast(1), mergeMap((_) => routesProcessed === routesNeedingDataUpdates.size ? of(t) : EMPTY)); + }); +} +function flattenRouteTree(route) { + const descendants = route.children.map((child) => flattenRouteTree(child)).flat(); + return [route, ...descendants]; +} +function runResolve(futureARS, futureRSS, paramsInheritanceStrategy, injector) { + const config = futureARS.routeConfig; + const resolve = futureARS._resolve; + if (config?.title !== void 0 && !hasStaticTitle(config)) { + resolve[RouteTitleKey] = config.title; + } + return resolveNode(resolve, futureARS, futureRSS, injector).pipe(map((resolvedData) => { + futureARS._resolvedData = resolvedData; + futureARS.data = getInherited(futureARS, futureARS.parent, paramsInheritanceStrategy).resolve; + return null; + })); +} +function resolveNode(resolve, futureARS, futureRSS, injector) { + const keys = getDataKeys(resolve); + if (keys.length === 0) { + return of({}); + } + const data = {}; + return from(keys).pipe(mergeMap((key) => getResolver(resolve[key], futureARS, futureRSS, injector).pipe(first(), tap((value) => { + data[key] = value; + }))), takeLast(1), mapTo(data), catchError((e) => isEmptyError(e) ? EMPTY : throwError(e))); +} +function getResolver(injectionToken, futureARS, futureRSS, injector) { + const closestInjector = getClosestRouteInjector(futureARS) ?? injector; + const resolver = getTokenOrFunctionIdentity(injectionToken, closestInjector); + const resolverValue = resolver.resolve ? resolver.resolve(futureARS, futureRSS) : runInInjectionContext(closestInjector, () => resolver(futureARS, futureRSS)); + return wrapIntoObservable(resolverValue); +} +function switchTap(next) { + return switchMap((v) => { + const nextResult = next(v); + if (nextResult) { + return from(nextResult).pipe(map(() => v)); + } + return of(v); + }); +} +var _TitleStrategy = class _TitleStrategy { + /** + * @returns The `title` of the deepest primary route. + */ + buildTitle(snapshot) { + let pageTitle; + let route = snapshot.root; + while (route !== void 0) { + pageTitle = this.getResolvedTitleForRoute(route) ?? pageTitle; + route = route.children.find((child) => child.outlet === PRIMARY_OUTLET); + } + return pageTitle; + } + /** + * Given an `ActivatedRouteSnapshot`, returns the final value of the + * `Route.title` property, which can either be a static string or a resolved value. + */ + getResolvedTitleForRoute(snapshot) { + return snapshot.data[RouteTitleKey]; + } +}; +_TitleStrategy.ɵfac = function TitleStrategy_Factory(t) { + return new (t || _TitleStrategy)(); +}; +_TitleStrategy.ɵprov = ɵɵdefineInjectable({ + token: _TitleStrategy, + factory: () => (() => inject(DefaultTitleStrategy))(), + providedIn: "root" +}); +var TitleStrategy = _TitleStrategy; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(TitleStrategy, [{ + type: Injectable, + args: [{ + providedIn: "root", + useFactory: () => inject(DefaultTitleStrategy) + }] + }], null, null); +})(); +var _DefaultTitleStrategy = class _DefaultTitleStrategy extends TitleStrategy { + constructor(title) { + super(); + this.title = title; + } + /** + * Sets the title of the browser to the given value. + * + * @param title The `pageTitle` from the deepest primary route. + */ + updateTitle(snapshot) { + const title = this.buildTitle(snapshot); + if (title !== void 0) { + this.title.setTitle(title); + } + } +}; +_DefaultTitleStrategy.ɵfac = function DefaultTitleStrategy_Factory(t) { + return new (t || _DefaultTitleStrategy)(ɵɵinject(Title)); +}; +_DefaultTitleStrategy.ɵprov = ɵɵdefineInjectable({ + token: _DefaultTitleStrategy, + factory: _DefaultTitleStrategy.ɵfac, + providedIn: "root" +}); +var DefaultTitleStrategy = _DefaultTitleStrategy; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DefaultTitleStrategy, [{ + type: Injectable, + args: [{ + providedIn: "root" + }] + }], () => [{ + type: Title + }], null); +})(); +var ROUTER_CONFIGURATION = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "router config" : "", { + providedIn: "root", + factory: () => ({}) +}); +var ROUTES = new InjectionToken("ROUTES"); +var _RouterConfigLoader = class _RouterConfigLoader { + constructor() { + this.componentLoaders = /* @__PURE__ */ new WeakMap(); + this.childrenLoaders = /* @__PURE__ */ new WeakMap(); + this.compiler = inject(Compiler); + } + loadComponent(route) { + if (this.componentLoaders.get(route)) { + return this.componentLoaders.get(route); + } else if (route._loadedComponent) { + return of(route._loadedComponent); + } + if (this.onLoadStartListener) { + this.onLoadStartListener(route); + } + const loadRunner = wrapIntoObservable(route.loadComponent()).pipe(map(maybeUnwrapDefaultExport), tap((component) => { + if (this.onLoadEndListener) { + this.onLoadEndListener(route); + } + (typeof ngDevMode === "undefined" || ngDevMode) && assertStandalone(route.path ?? "", component); + route._loadedComponent = component; + }), finalize(() => { + this.componentLoaders.delete(route); + })); + const loader = new ConnectableObservable(loadRunner, () => new Subject()).pipe(refCount()); + this.componentLoaders.set(route, loader); + return loader; + } + loadChildren(parentInjector, route) { + if (this.childrenLoaders.get(route)) { + return this.childrenLoaders.get(route); + } else if (route._loadedRoutes) { + return of({ + routes: route._loadedRoutes, + injector: route._loadedInjector + }); + } + if (this.onLoadStartListener) { + this.onLoadStartListener(route); + } + const moduleFactoryOrRoutes$ = loadChildren(route, this.compiler, parentInjector, this.onLoadEndListener); + const loadRunner = moduleFactoryOrRoutes$.pipe(finalize(() => { + this.childrenLoaders.delete(route); + })); + const loader = new ConnectableObservable(loadRunner, () => new Subject()).pipe(refCount()); + this.childrenLoaders.set(route, loader); + return loader; + } +}; +_RouterConfigLoader.ɵfac = function RouterConfigLoader_Factory(t) { + return new (t || _RouterConfigLoader)(); +}; +_RouterConfigLoader.ɵprov = ɵɵdefineInjectable({ + token: _RouterConfigLoader, + factory: _RouterConfigLoader.ɵfac, + providedIn: "root" +}); +var RouterConfigLoader = _RouterConfigLoader; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RouterConfigLoader, [{ + type: Injectable, + args: [{ + providedIn: "root" + }] + }], null, null); +})(); +function loadChildren(route, compiler, parentInjector, onLoadEndListener) { + return wrapIntoObservable(route.loadChildren()).pipe(map(maybeUnwrapDefaultExport), mergeMap((t) => { + if (t instanceof NgModuleFactory$1 || Array.isArray(t)) { + return of(t); + } else { + return from(compiler.compileModuleAsync(t)); + } + }), map((factoryOrRoutes) => { + if (onLoadEndListener) { + onLoadEndListener(route); + } + let injector; + let rawRoutes; + let requireStandaloneComponents = false; + if (Array.isArray(factoryOrRoutes)) { + rawRoutes = factoryOrRoutes; + requireStandaloneComponents = true; + } else { + injector = factoryOrRoutes.create(parentInjector).injector; + rawRoutes = injector.get(ROUTES, [], { + optional: true, + self: true + }).flat(); + } + const routes = rawRoutes.map(standardizeConfig); + (typeof ngDevMode === "undefined" || ngDevMode) && validateConfig(routes, route.path, requireStandaloneComponents); + return { + routes, + injector + }; + })); +} +function isWrappedDefaultExport(value) { + return value && typeof value === "object" && "default" in value; +} +function maybeUnwrapDefaultExport(input) { + return isWrappedDefaultExport(input) ? input["default"] : input; +} +var _UrlHandlingStrategy = class _UrlHandlingStrategy { +}; +_UrlHandlingStrategy.ɵfac = function UrlHandlingStrategy_Factory(t) { + return new (t || _UrlHandlingStrategy)(); +}; +_UrlHandlingStrategy.ɵprov = ɵɵdefineInjectable({ + token: _UrlHandlingStrategy, + factory: () => (() => inject(DefaultUrlHandlingStrategy))(), + providedIn: "root" +}); +var UrlHandlingStrategy = _UrlHandlingStrategy; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(UrlHandlingStrategy, [{ + type: Injectable, + args: [{ + providedIn: "root", + useFactory: () => inject(DefaultUrlHandlingStrategy) + }] + }], null, null); +})(); +var _DefaultUrlHandlingStrategy = class _DefaultUrlHandlingStrategy { + shouldProcessUrl(url) { + return true; + } + extract(url) { + return url; + } + merge(newUrlPart, wholeUrl) { + return newUrlPart; + } +}; +_DefaultUrlHandlingStrategy.ɵfac = function DefaultUrlHandlingStrategy_Factory(t) { + return new (t || _DefaultUrlHandlingStrategy)(); +}; +_DefaultUrlHandlingStrategy.ɵprov = ɵɵdefineInjectable({ + token: _DefaultUrlHandlingStrategy, + factory: _DefaultUrlHandlingStrategy.ɵfac, + providedIn: "root" +}); +var DefaultUrlHandlingStrategy = _DefaultUrlHandlingStrategy; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DefaultUrlHandlingStrategy, [{ + type: Injectable, + args: [{ + providedIn: "root" + }] + }], null, null); +})(); +var CREATE_VIEW_TRANSITION = new InjectionToken(ngDevMode ? "view transition helper" : ""); +var VIEW_TRANSITION_OPTIONS = new InjectionToken(ngDevMode ? "view transition options" : ""); +function createViewTransition(injector, from2, to) { + const transitionOptions = injector.get(VIEW_TRANSITION_OPTIONS); + const document = injector.get(DOCUMENT); + return injector.get(NgZone).runOutsideAngular(() => { + if (!document.startViewTransition || transitionOptions.skipNextTransition) { + transitionOptions.skipNextTransition = false; + return Promise.resolve(); + } + let resolveViewTransitionStarted; + const viewTransitionStarted = new Promise((resolve) => { + resolveViewTransitionStarted = resolve; + }); + const transition = document.startViewTransition(() => { + resolveViewTransitionStarted(); + return createRenderPromise(injector); + }); + const { + onViewTransitionCreated + } = transitionOptions; + if (onViewTransitionCreated) { + runInInjectionContext(injector, () => onViewTransitionCreated({ + transition, + from: from2, + to + })); + } + return viewTransitionStarted; + }); +} +function createRenderPromise(injector) { + return new Promise((resolve) => { + afterNextRender(resolve, { + injector + }); + }); +} +var _NavigationTransitions = class _NavigationTransitions { + get hasRequestedNavigation() { + return this.navigationId !== 0; + } + constructor() { + this.currentNavigation = null; + this.currentTransition = null; + this.lastSuccessfulNavigation = null; + this.events = new Subject(); + this.transitionAbortSubject = new Subject(); + this.configLoader = inject(RouterConfigLoader); + this.environmentInjector = inject(EnvironmentInjector); + this.urlSerializer = inject(UrlSerializer); + this.rootContexts = inject(ChildrenOutletContexts); + this.location = inject(Location); + this.inputBindingEnabled = inject(INPUT_BINDER, { + optional: true + }) !== null; + this.titleStrategy = inject(TitleStrategy); + this.options = inject(ROUTER_CONFIGURATION, { + optional: true + }) || {}; + this.paramsInheritanceStrategy = this.options.paramsInheritanceStrategy || "emptyOnly"; + this.urlHandlingStrategy = inject(UrlHandlingStrategy); + this.createViewTransition = inject(CREATE_VIEW_TRANSITION, { + optional: true + }); + this.navigationId = 0; + this.afterPreactivation = () => of(void 0); + this.rootComponentType = null; + const onLoadStart = (r) => this.events.next(new RouteConfigLoadStart(r)); + const onLoadEnd = (r) => this.events.next(new RouteConfigLoadEnd(r)); + this.configLoader.onLoadEndListener = onLoadEnd; + this.configLoader.onLoadStartListener = onLoadStart; + } + complete() { + this.transitions?.complete(); + } + handleNavigationRequest(request) { + const id = ++this.navigationId; + this.transitions?.next(__spreadProps(__spreadValues(__spreadValues({}, this.transitions.value), request), { + id + })); + } + setupNavigations(router, initialUrlTree, initialRouterState) { + this.transitions = new BehaviorSubject({ + id: 0, + currentUrlTree: initialUrlTree, + currentRawUrl: initialUrlTree, + extractedUrl: this.urlHandlingStrategy.extract(initialUrlTree), + urlAfterRedirects: this.urlHandlingStrategy.extract(initialUrlTree), + rawUrl: initialUrlTree, + extras: {}, + resolve: null, + reject: null, + promise: Promise.resolve(true), + source: IMPERATIVE_NAVIGATION, + restoredState: null, + currentSnapshot: initialRouterState.snapshot, + targetSnapshot: null, + currentRouterState: initialRouterState, + targetRouterState: null, + guards: { + canActivateChecks: [], + canDeactivateChecks: [] + }, + guardsResult: null + }); + return this.transitions.pipe( + filter((t) => t.id !== 0), + // Extract URL + map((t) => __spreadProps(__spreadValues({}, t), { + extractedUrl: this.urlHandlingStrategy.extract(t.rawUrl) + })), + // Using switchMap so we cancel executing navigations when a new one comes in + switchMap((overallTransitionState) => { + this.currentTransition = overallTransitionState; + let completed = false; + let errored = false; + return of(overallTransitionState).pipe( + // Store the Navigation object + tap((t) => { + this.currentNavigation = { + id: t.id, + initialUrl: t.rawUrl, + extractedUrl: t.extractedUrl, + trigger: t.source, + extras: t.extras, + previousNavigation: !this.lastSuccessfulNavigation ? null : __spreadProps(__spreadValues({}, this.lastSuccessfulNavigation), { + previousNavigation: null + }) + }; + }), + switchMap((t) => { + const urlTransition = !router.navigated || this.isUpdatingInternalState() || this.isUpdatedBrowserUrl(); + const onSameUrlNavigation = t.extras.onSameUrlNavigation ?? router.onSameUrlNavigation; + if (!urlTransition && onSameUrlNavigation !== "reload") { + const reason = typeof ngDevMode === "undefined" || ngDevMode ? `Navigation to ${t.rawUrl} was ignored because it is the same as the current Router URL.` : ""; + this.events.next(new NavigationSkipped( + t.id, + this.urlSerializer.serialize(t.rawUrl), + reason, + 0 + /* NavigationSkippedCode.IgnoredSameUrlNavigation */ + )); + t.resolve(null); + return EMPTY; + } + if (this.urlHandlingStrategy.shouldProcessUrl(t.rawUrl)) { + return of(t).pipe( + // Fire NavigationStart event + switchMap((t2) => { + const transition = this.transitions?.getValue(); + this.events.next(new NavigationStart(t2.id, this.urlSerializer.serialize(t2.extractedUrl), t2.source, t2.restoredState)); + if (transition !== this.transitions?.getValue()) { + return EMPTY; + } + return Promise.resolve(t2); + }), + // Recognize + recognize(this.environmentInjector, this.configLoader, this.rootComponentType, router.config, this.urlSerializer, this.paramsInheritanceStrategy), + // Update URL if in `eager` update mode + tap((t2) => { + overallTransitionState.targetSnapshot = t2.targetSnapshot; + overallTransitionState.urlAfterRedirects = t2.urlAfterRedirects; + this.currentNavigation = __spreadProps(__spreadValues({}, this.currentNavigation), { + finalUrl: t2.urlAfterRedirects + }); + const routesRecognized = new RoutesRecognized(t2.id, this.urlSerializer.serialize(t2.extractedUrl), this.urlSerializer.serialize(t2.urlAfterRedirects), t2.targetSnapshot); + this.events.next(routesRecognized); + }) + ); + } else if (urlTransition && this.urlHandlingStrategy.shouldProcessUrl(t.currentRawUrl)) { + const { + id, + extractedUrl, + source, + restoredState, + extras + } = t; + const navStart = new NavigationStart(id, this.urlSerializer.serialize(extractedUrl), source, restoredState); + this.events.next(navStart); + const targetSnapshot = createEmptyState(extractedUrl, this.rootComponentType).snapshot; + this.currentTransition = overallTransitionState = __spreadProps(__spreadValues({}, t), { + targetSnapshot, + urlAfterRedirects: extractedUrl, + extras: __spreadProps(__spreadValues({}, extras), { + skipLocationChange: false, + replaceUrl: false + }) + }); + this.currentNavigation.finalUrl = extractedUrl; + return of(overallTransitionState); + } else { + const reason = typeof ngDevMode === "undefined" || ngDevMode ? `Navigation was ignored because the UrlHandlingStrategy indicated neither the current URL ${t.currentRawUrl} nor target URL ${t.rawUrl} should be processed.` : ""; + this.events.next(new NavigationSkipped( + t.id, + this.urlSerializer.serialize(t.extractedUrl), + reason, + 1 + /* NavigationSkippedCode.IgnoredByUrlHandlingStrategy */ + )); + t.resolve(null); + return EMPTY; + } + }), + // --- GUARDS --- + tap((t) => { + const guardsStart = new GuardsCheckStart(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects), t.targetSnapshot); + this.events.next(guardsStart); + }), + map((t) => { + this.currentTransition = overallTransitionState = __spreadProps(__spreadValues({}, t), { + guards: getAllRouteGuards(t.targetSnapshot, t.currentSnapshot, this.rootContexts) + }); + return overallTransitionState; + }), + checkGuards(this.environmentInjector, (evt) => this.events.next(evt)), + tap((t) => { + overallTransitionState.guardsResult = t.guardsResult; + if (isUrlTree(t.guardsResult)) { + throw redirectingNavigationError(this.urlSerializer, t.guardsResult); + } + const guardsEnd = new GuardsCheckEnd(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects), t.targetSnapshot, !!t.guardsResult); + this.events.next(guardsEnd); + }), + filter((t) => { + if (!t.guardsResult) { + this.cancelNavigationTransition( + t, + "", + 3 + /* NavigationCancellationCode.GuardRejected */ + ); + return false; + } + return true; + }), + // --- RESOLVE --- + switchTap((t) => { + if (t.guards.canActivateChecks.length) { + return of(t).pipe(tap((t2) => { + const resolveStart = new ResolveStart(t2.id, this.urlSerializer.serialize(t2.extractedUrl), this.urlSerializer.serialize(t2.urlAfterRedirects), t2.targetSnapshot); + this.events.next(resolveStart); + }), switchMap((t2) => { + let dataResolved = false; + return of(t2).pipe(resolveData(this.paramsInheritanceStrategy, this.environmentInjector), tap({ + next: () => dataResolved = true, + complete: () => { + if (!dataResolved) { + this.cancelNavigationTransition( + t2, + typeof ngDevMode === "undefined" || ngDevMode ? `At least one route resolver didn't emit any value.` : "", + 2 + /* NavigationCancellationCode.NoDataFromResolver */ + ); + } + } + })); + }), tap((t2) => { + const resolveEnd = new ResolveEnd(t2.id, this.urlSerializer.serialize(t2.extractedUrl), this.urlSerializer.serialize(t2.urlAfterRedirects), t2.targetSnapshot); + this.events.next(resolveEnd); + })); + } + return void 0; + }), + // --- LOAD COMPONENTS --- + switchTap((t) => { + const loadComponents = (route) => { + const loaders = []; + if (route.routeConfig?.loadComponent && !route.routeConfig._loadedComponent) { + loaders.push(this.configLoader.loadComponent(route.routeConfig).pipe(tap((loadedComponent) => { + route.component = loadedComponent; + }), map(() => void 0))); + } + for (const child of route.children) { + loaders.push(...loadComponents(child)); + } + return loaders; + }; + return combineLatest(loadComponents(t.targetSnapshot.root)).pipe(defaultIfEmpty(), take(1)); + }), + switchTap(() => this.afterPreactivation()), + switchMap(() => { + const { + currentSnapshot, + targetSnapshot + } = overallTransitionState; + const viewTransitionStarted = this.createViewTransition?.(this.environmentInjector, currentSnapshot.root, targetSnapshot.root); + return viewTransitionStarted ? from(viewTransitionStarted).pipe(map(() => overallTransitionState)) : of(overallTransitionState); + }), + map((t) => { + const targetRouterState = createRouterState(router.routeReuseStrategy, t.targetSnapshot, t.currentRouterState); + this.currentTransition = overallTransitionState = __spreadProps(__spreadValues({}, t), { + targetRouterState + }); + this.currentNavigation.targetRouterState = targetRouterState; + return overallTransitionState; + }), + tap(() => { + this.events.next(new BeforeActivateRoutes()); + }), + activateRoutes(this.rootContexts, router.routeReuseStrategy, (evt) => this.events.next(evt), this.inputBindingEnabled), + // Ensure that if some observable used to drive the transition doesn't + // complete, the navigation still finalizes This should never happen, but + // this is done as a safety measure to avoid surfacing this error (#49567). + take(1), + tap({ + next: (t) => { + completed = true; + this.lastSuccessfulNavigation = this.currentNavigation; + this.events.next(new NavigationEnd(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects))); + this.titleStrategy?.updateTitle(t.targetRouterState.snapshot); + t.resolve(true); + }, + complete: () => { + completed = true; + } + }), + // There used to be a lot more logic happening directly within the + // transition Observable. Some of this logic has been refactored out to + // other places but there may still be errors that happen there. This gives + // us a way to cancel the transition from the outside. This may also be + // required in the future to support something like the abort signal of the + // Navigation API where the navigation gets aborted from outside the + // transition. + takeUntil(this.transitionAbortSubject.pipe(tap((err) => { + throw err; + }))), + finalize(() => { + if (!completed && !errored) { + const cancelationReason = typeof ngDevMode === "undefined" || ngDevMode ? `Navigation ID ${overallTransitionState.id} is not equal to the current navigation id ${this.navigationId}` : ""; + this.cancelNavigationTransition( + overallTransitionState, + cancelationReason, + 1 + /* NavigationCancellationCode.SupersededByNewNavigation */ + ); + } + if (this.currentNavigation?.id === overallTransitionState.id) { + this.currentNavigation = null; + } + }), + catchError((e) => { + errored = true; + if (isNavigationCancelingError$1(e)) { + this.events.next(new NavigationCancel(overallTransitionState.id, this.urlSerializer.serialize(overallTransitionState.extractedUrl), e.message, e.cancellationCode)); + if (!isRedirectingNavigationCancelingError$1(e)) { + overallTransitionState.resolve(false); + } else { + this.events.next(new RedirectRequest(e.url)); + } + } else { + this.events.next(new NavigationError(overallTransitionState.id, this.urlSerializer.serialize(overallTransitionState.extractedUrl), e, overallTransitionState.targetSnapshot ?? void 0)); + try { + overallTransitionState.resolve(router.errorHandler(e)); + } catch (ee) { + overallTransitionState.reject(ee); + } + } + return EMPTY; + }) + ); + }) + ); + } + cancelNavigationTransition(t, reason, code) { + const navCancel = new NavigationCancel(t.id, this.urlSerializer.serialize(t.extractedUrl), reason, code); + this.events.next(navCancel); + t.resolve(false); + } + /** + * @returns Whether we're navigating to somewhere that is not what the Router is + * currently set to. + */ + isUpdatingInternalState() { + return this.currentTransition?.extractedUrl.toString() !== this.currentTransition?.currentUrlTree.toString(); + } + /** + * @returns Whether we're updating the browser URL to something new (navigation is going + * to somewhere not displayed in the URL bar and we will update the URL + * bar if navigation succeeds). + */ + isUpdatedBrowserUrl() { + const extractedBrowserUrl = this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(true))); + return extractedBrowserUrl.toString() !== this.currentTransition?.extractedUrl.toString() && !this.currentTransition?.extras.skipLocationChange; + } +}; +_NavigationTransitions.ɵfac = function NavigationTransitions_Factory(t) { + return new (t || _NavigationTransitions)(); +}; +_NavigationTransitions.ɵprov = ɵɵdefineInjectable({ + token: _NavigationTransitions, + factory: _NavigationTransitions.ɵfac, + providedIn: "root" +}); +var NavigationTransitions = _NavigationTransitions; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NavigationTransitions, [{ + type: Injectable, + args: [{ + providedIn: "root" + }] + }], () => [], null); +})(); +function isBrowserTriggeredNavigation(source) { + return source !== IMPERATIVE_NAVIGATION; +} +var _RouteReuseStrategy = class _RouteReuseStrategy { +}; +_RouteReuseStrategy.ɵfac = function RouteReuseStrategy_Factory(t) { + return new (t || _RouteReuseStrategy)(); +}; +_RouteReuseStrategy.ɵprov = ɵɵdefineInjectable({ + token: _RouteReuseStrategy, + factory: () => (() => inject(DefaultRouteReuseStrategy))(), + providedIn: "root" +}); +var RouteReuseStrategy = _RouteReuseStrategy; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RouteReuseStrategy, [{ + type: Injectable, + args: [{ + providedIn: "root", + useFactory: () => inject(DefaultRouteReuseStrategy) + }] + }], null, null); +})(); +var BaseRouteReuseStrategy = class { + /** + * Whether the given route should detach for later reuse. + * Always returns false for `BaseRouteReuseStrategy`. + * */ + shouldDetach(route) { + return false; + } + /** + * A no-op; the route is never stored since this strategy never detaches routes for later re-use. + */ + store(route, detachedTree) { + } + /** Returns `false`, meaning the route (and its subtree) is never reattached */ + shouldAttach(route) { + return false; + } + /** Returns `null` because this strategy does not store routes for later re-use. */ + retrieve(route) { + return null; + } + /** + * Determines if a route should be reused. + * This strategy returns `true` when the future route config and current route config are + * identical. + */ + shouldReuseRoute(future, curr) { + return future.routeConfig === curr.routeConfig; + } +}; +var _DefaultRouteReuseStrategy = class _DefaultRouteReuseStrategy extends BaseRouteReuseStrategy { +}; +_DefaultRouteReuseStrategy.ɵfac = (() => { + let ɵDefaultRouteReuseStrategy_BaseFactory; + return function DefaultRouteReuseStrategy_Factory(t) { + return (ɵDefaultRouteReuseStrategy_BaseFactory || (ɵDefaultRouteReuseStrategy_BaseFactory = ɵɵgetInheritedFactory(_DefaultRouteReuseStrategy)))(t || _DefaultRouteReuseStrategy); + }; +})(); +_DefaultRouteReuseStrategy.ɵprov = ɵɵdefineInjectable({ + token: _DefaultRouteReuseStrategy, + factory: _DefaultRouteReuseStrategy.ɵfac, + providedIn: "root" +}); +var DefaultRouteReuseStrategy = _DefaultRouteReuseStrategy; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DefaultRouteReuseStrategy, [{ + type: Injectable, + args: [{ + providedIn: "root" + }] + }], null, null); +})(); +var _StateManager = class _StateManager { +}; +_StateManager.ɵfac = function StateManager_Factory(t) { + return new (t || _StateManager)(); +}; +_StateManager.ɵprov = ɵɵdefineInjectable({ + token: _StateManager, + factory: () => (() => inject(HistoryStateManager))(), + providedIn: "root" +}); +var StateManager = _StateManager; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(StateManager, [{ + type: Injectable, + args: [{ + providedIn: "root", + useFactory: () => inject(HistoryStateManager) + }] + }], null, null); +})(); +var _HistoryStateManager = class _HistoryStateManager extends StateManager { + constructor() { + super(...arguments); + this.location = inject(Location); + this.urlSerializer = inject(UrlSerializer); + this.options = inject(ROUTER_CONFIGURATION, { + optional: true + }) || {}; + this.canceledNavigationResolution = this.options.canceledNavigationResolution || "replace"; + this.urlHandlingStrategy = inject(UrlHandlingStrategy); + this.urlUpdateStrategy = this.options.urlUpdateStrategy || "deferred"; + this.currentUrlTree = new UrlTree(); + this.rawUrlTree = this.currentUrlTree; + this.currentPageId = 0; + this.lastSuccessfulId = -1; + this.routerState = createEmptyState(this.currentUrlTree, null); + this.stateMemento = this.createStateMemento(); + } + getCurrentUrlTree() { + return this.currentUrlTree; + } + getRawUrlTree() { + return this.rawUrlTree; + } + restoredState() { + return this.location.getState(); + } + /** + * The ɵrouterPageId of whatever page is currently active in the browser history. This is + * important for computing the target page id for new navigations because we need to ensure each + * page id in the browser history is 1 more than the previous entry. + */ + get browserPageId() { + if (this.canceledNavigationResolution !== "computed") { + return this.currentPageId; + } + return this.restoredState()?.ɵrouterPageId ?? this.currentPageId; + } + getRouterState() { + return this.routerState; + } + createStateMemento() { + return { + rawUrlTree: this.rawUrlTree, + currentUrlTree: this.currentUrlTree, + routerState: this.routerState + }; + } + registerNonRouterCurrentEntryChangeListener(listener) { + return this.location.subscribe((event) => { + if (event["type"] === "popstate") { + listener(event["url"], event.state); + } + }); + } + handleRouterEvent(e, currentTransition) { + if (e instanceof NavigationStart) { + this.stateMemento = this.createStateMemento(); + } else if (e instanceof NavigationSkipped) { + this.rawUrlTree = currentTransition.initialUrl; + } else if (e instanceof RoutesRecognized) { + if (this.urlUpdateStrategy === "eager") { + if (!currentTransition.extras.skipLocationChange) { + const rawUrl = this.urlHandlingStrategy.merge(currentTransition.finalUrl, currentTransition.initialUrl); + this.setBrowserUrl(rawUrl, currentTransition); + } + } + } else if (e instanceof BeforeActivateRoutes) { + this.currentUrlTree = currentTransition.finalUrl; + this.rawUrlTree = this.urlHandlingStrategy.merge(currentTransition.finalUrl, currentTransition.initialUrl); + this.routerState = currentTransition.targetRouterState; + if (this.urlUpdateStrategy === "deferred") { + if (!currentTransition.extras.skipLocationChange) { + this.setBrowserUrl(this.rawUrlTree, currentTransition); + } + } + } else if (e instanceof NavigationCancel && (e.code === 3 || e.code === 2)) { + this.restoreHistory(currentTransition); + } else if (e instanceof NavigationError) { + this.restoreHistory(currentTransition, true); + } else if (e instanceof NavigationEnd) { + this.lastSuccessfulId = e.id; + this.currentPageId = this.browserPageId; + } + } + setBrowserUrl(url, transition) { + const path = this.urlSerializer.serialize(url); + if (this.location.isCurrentPathEqualTo(path) || !!transition.extras.replaceUrl) { + const currentBrowserPageId = this.browserPageId; + const state = __spreadValues(__spreadValues({}, transition.extras.state), this.generateNgRouterState(transition.id, currentBrowserPageId)); + this.location.replaceState(path, "", state); + } else { + const state = __spreadValues(__spreadValues({}, transition.extras.state), this.generateNgRouterState(transition.id, this.browserPageId + 1)); + this.location.go(path, "", state); + } + } + /** + * Performs the necessary rollback action to restore the browser URL to the + * state before the transition. + */ + restoreHistory(navigation, restoringFromCaughtError = false) { + if (this.canceledNavigationResolution === "computed") { + const currentBrowserPageId = this.browserPageId; + const targetPagePosition = this.currentPageId - currentBrowserPageId; + if (targetPagePosition !== 0) { + this.location.historyGo(targetPagePosition); + } else if (this.currentUrlTree === navigation.finalUrl && targetPagePosition === 0) { + this.resetState(navigation); + this.resetUrlToCurrentUrlTree(); + } else { + } + } else if (this.canceledNavigationResolution === "replace") { + if (restoringFromCaughtError) { + this.resetState(navigation); + } + this.resetUrlToCurrentUrlTree(); + } + } + resetState(navigation) { + this.routerState = this.stateMemento.routerState; + this.currentUrlTree = this.stateMemento.currentUrlTree; + this.rawUrlTree = this.urlHandlingStrategy.merge(this.currentUrlTree, navigation.finalUrl ?? this.rawUrlTree); + } + resetUrlToCurrentUrlTree() { + this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree), "", this.generateNgRouterState(this.lastSuccessfulId, this.currentPageId)); + } + generateNgRouterState(navigationId, routerPageId) { + if (this.canceledNavigationResolution === "computed") { + return { + navigationId, + ɵrouterPageId: routerPageId + }; + } + return { + navigationId + }; + } +}; +_HistoryStateManager.ɵfac = (() => { + let ɵHistoryStateManager_BaseFactory; + return function HistoryStateManager_Factory(t) { + return (ɵHistoryStateManager_BaseFactory || (ɵHistoryStateManager_BaseFactory = ɵɵgetInheritedFactory(_HistoryStateManager)))(t || _HistoryStateManager); + }; +})(); +_HistoryStateManager.ɵprov = ɵɵdefineInjectable({ + token: _HistoryStateManager, + factory: _HistoryStateManager.ɵfac, + providedIn: "root" +}); +var HistoryStateManager = _HistoryStateManager; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(HistoryStateManager, [{ + type: Injectable, + args: [{ + providedIn: "root" + }] + }], null, null); +})(); +var NavigationResult; +(function(NavigationResult2) { + NavigationResult2[NavigationResult2["COMPLETE"] = 0] = "COMPLETE"; + NavigationResult2[NavigationResult2["FAILED"] = 1] = "FAILED"; + NavigationResult2[NavigationResult2["REDIRECTING"] = 2] = "REDIRECTING"; +})(NavigationResult || (NavigationResult = {})); +function afterNextNavigation(router, action) { + router.events.pipe(filter((e) => e instanceof NavigationEnd || e instanceof NavigationCancel || e instanceof NavigationError || e instanceof NavigationSkipped), map((e) => { + if (e instanceof NavigationEnd || e instanceof NavigationSkipped) { + return NavigationResult.COMPLETE; + } + const redirecting = e instanceof NavigationCancel ? e.code === 0 || e.code === 1 : false; + return redirecting ? NavigationResult.REDIRECTING : NavigationResult.FAILED; + }), filter((result) => result !== NavigationResult.REDIRECTING), take(1)).subscribe(() => { + action(); + }); +} +function defaultErrorHandler(error) { + throw error; +} +var exactMatchOptions = { + paths: "exact", + fragment: "ignored", + matrixParams: "ignored", + queryParams: "exact" +}; +var subsetMatchOptions = { + paths: "subset", + fragment: "ignored", + matrixParams: "ignored", + queryParams: "subset" +}; +var _Router = class _Router { + get currentUrlTree() { + return this.stateManager.getCurrentUrlTree(); + } + get rawUrlTree() { + return this.stateManager.getRawUrlTree(); + } + /** + * An event stream for routing events. + */ + get events() { + return this._events; + } + /** + * The current state of routing in this NgModule. + */ + get routerState() { + return this.stateManager.getRouterState(); + } + constructor() { + this.disposed = false; + this.isNgZoneEnabled = false; + this.console = inject(Console); + this.stateManager = inject(StateManager); + this.options = inject(ROUTER_CONFIGURATION, { + optional: true + }) || {}; + this.pendingTasks = inject(InitialRenderPendingTasks); + this.urlUpdateStrategy = this.options.urlUpdateStrategy || "deferred"; + this.navigationTransitions = inject(NavigationTransitions); + this.urlSerializer = inject(UrlSerializer); + this.location = inject(Location); + this.urlHandlingStrategy = inject(UrlHandlingStrategy); + this._events = new Subject(); + this.errorHandler = this.options.errorHandler || defaultErrorHandler; + this.navigated = false; + this.routeReuseStrategy = inject(RouteReuseStrategy); + this.onSameUrlNavigation = this.options.onSameUrlNavigation || "ignore"; + this.config = inject(ROUTES, { + optional: true + })?.flat() ?? []; + this.componentInputBindingEnabled = !!inject(INPUT_BINDER, { + optional: true + }); + this.eventsSubscription = new Subscription(); + this.isNgZoneEnabled = inject(NgZone) instanceof NgZone && NgZone.isInAngularZone(); + this.resetConfig(this.config); + this.navigationTransitions.setupNavigations(this, this.currentUrlTree, this.routerState).subscribe({ + error: (e) => { + this.console.warn(ngDevMode ? `Unhandled Navigation Error: ${e}` : e); + } + }); + this.subscribeToNavigationEvents(); + } + subscribeToNavigationEvents() { + const subscription = this.navigationTransitions.events.subscribe((e) => { + try { + const currentTransition = this.navigationTransitions.currentTransition; + const currentNavigation = this.navigationTransitions.currentNavigation; + if (currentTransition !== null && currentNavigation !== null) { + this.stateManager.handleRouterEvent(e, currentNavigation); + if (e instanceof NavigationCancel && e.code !== 0 && e.code !== 1) { + this.navigated = true; + } else if (e instanceof NavigationEnd) { + this.navigated = true; + } else if (e instanceof RedirectRequest) { + const mergedTree = this.urlHandlingStrategy.merge(e.url, currentTransition.currentRawUrl); + const extras = { + skipLocationChange: currentTransition.extras.skipLocationChange, + // The URL is already updated at this point if we have 'eager' URL + // updates or if the navigation was triggered by the browser (back + // button, URL bar, etc). We want to replace that item in history + // if the navigation is rejected. + replaceUrl: this.urlUpdateStrategy === "eager" || isBrowserTriggeredNavigation(currentTransition.source) + }; + this.scheduleNavigation(mergedTree, IMPERATIVE_NAVIGATION, null, extras, { + resolve: currentTransition.resolve, + reject: currentTransition.reject, + promise: currentTransition.promise + }); + } + } + if (isPublicRouterEvent(e)) { + this._events.next(e); + } + } catch (e2) { + this.navigationTransitions.transitionAbortSubject.next(e2); + } + }); + this.eventsSubscription.add(subscription); + } + /** @internal */ + resetRootComponentType(rootComponentType) { + this.routerState.root.component = rootComponentType; + this.navigationTransitions.rootComponentType = rootComponentType; + } + /** + * Sets up the location change listener and performs the initial navigation. + */ + initialNavigation() { + this.setUpLocationChangeListener(); + if (!this.navigationTransitions.hasRequestedNavigation) { + this.navigateToSyncWithBrowser(this.location.path(true), IMPERATIVE_NAVIGATION, this.stateManager.restoredState()); + } + } + /** + * Sets up the location change listener. This listener detects navigations triggered from outside + * the Router (the browser back/forward buttons, for example) and schedules a corresponding Router + * navigation so that the correct events, guards, etc. are triggered. + */ + setUpLocationChangeListener() { + if (!this.nonRouterCurrentEntryChangeSubscription) { + this.nonRouterCurrentEntryChangeSubscription = this.stateManager.registerNonRouterCurrentEntryChangeListener((url, state) => { + setTimeout(() => { + this.navigateToSyncWithBrowser(url, "popstate", state); + }, 0); + }); + } + } + /** + * Schedules a router navigation to synchronize Router state with the browser state. + * + * This is done as a response to a popstate event and the initial navigation. These + * two scenarios represent times when the browser URL/state has been updated and + * the Router needs to respond to ensure its internal state matches. + */ + navigateToSyncWithBrowser(url, source, state) { + const extras = { + replaceUrl: true + }; + const restoredState = state?.navigationId ? state : null; + if (state) { + const stateCopy = __spreadValues({}, state); + delete stateCopy.navigationId; + delete stateCopy.ɵrouterPageId; + if (Object.keys(stateCopy).length !== 0) { + extras.state = stateCopy; + } + } + const urlTree = this.parseUrl(url); + this.scheduleNavigation(urlTree, source, restoredState, extras); + } + /** The current URL. */ + get url() { + return this.serializeUrl(this.currentUrlTree); + } + /** + * Returns the current `Navigation` object when the router is navigating, + * and `null` when idle. + */ + getCurrentNavigation() { + return this.navigationTransitions.currentNavigation; + } + /** + * The `Navigation` object of the most recent navigation to succeed and `null` if there + * has not been a successful navigation yet. + */ + get lastSuccessfulNavigation() { + return this.navigationTransitions.lastSuccessfulNavigation; + } + /** + * Resets the route configuration used for navigation and generating links. + * + * @param config The route array for the new configuration. + * + * @usageNotes + * + * ``` + * router.resetConfig([ + * { path: 'team/:id', component: TeamCmp, children: [ + * { path: 'simple', component: SimpleCmp }, + * { path: 'user/:name', component: UserCmp } + * ]} + * ]); + * ``` + */ + resetConfig(config) { + (typeof ngDevMode === "undefined" || ngDevMode) && validateConfig(config); + this.config = config.map(standardizeConfig); + this.navigated = false; + } + /** @nodoc */ + ngOnDestroy() { + this.dispose(); + } + /** Disposes of the router. */ + dispose() { + this.navigationTransitions.complete(); + if (this.nonRouterCurrentEntryChangeSubscription) { + this.nonRouterCurrentEntryChangeSubscription.unsubscribe(); + this.nonRouterCurrentEntryChangeSubscription = void 0; + } + this.disposed = true; + this.eventsSubscription.unsubscribe(); + } + /** + * Appends URL segments to the current URL tree to create a new URL tree. + * + * @param commands An array of URL fragments with which to construct the new URL tree. + * If the path is static, can be the literal URL string. For a dynamic path, pass an array of path + * segments, followed by the parameters for each segment. + * The fragments are applied to the current URL tree or the one provided in the `relativeTo` + * property of the options object, if supplied. + * @param navigationExtras Options that control the navigation strategy. + * @returns The new URL tree. + * + * @usageNotes + * + * ``` + * // create /team/33/user/11 + * router.createUrlTree(['/team', 33, 'user', 11]); + * + * // create /team/33;expand=true/user/11 + * router.createUrlTree(['/team', 33, {expand: true}, 'user', 11]); + * + * // you can collapse static segments like this (this works only with the first passed-in value): + * router.createUrlTree(['/team/33/user', userId]); + * + * // If the first segment can contain slashes, and you do not want the router to split it, + * // you can do the following: + * router.createUrlTree([{segmentPath: '/one/two'}]); + * + * // create /team/33/(user/11//right:chat) + * router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: 'chat'}}]); + * + * // remove the right secondary node + * router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: null}}]); + * + * // assuming the current url is `/team/33/user/11` and the route points to `user/11` + * + * // navigate to /team/33/user/11/details + * router.createUrlTree(['details'], {relativeTo: route}); + * + * // navigate to /team/33/user/22 + * router.createUrlTree(['../22'], {relativeTo: route}); + * + * // navigate to /team/44/user/22 + * router.createUrlTree(['../../team/44/user/22'], {relativeTo: route}); + * + * Note that a value of `null` or `undefined` for `relativeTo` indicates that the + * tree should be created relative to the root. + * ``` + */ + createUrlTree(commands, navigationExtras = {}) { + const { + relativeTo, + queryParams, + fragment, + queryParamsHandling, + preserveFragment + } = navigationExtras; + const f = preserveFragment ? this.currentUrlTree.fragment : fragment; + let q = null; + switch (queryParamsHandling) { + case "merge": + q = __spreadValues(__spreadValues({}, this.currentUrlTree.queryParams), queryParams); + break; + case "preserve": + q = this.currentUrlTree.queryParams; + break; + default: + q = queryParams || null; + } + if (q !== null) { + q = this.removeEmptyProps(q); + } + let relativeToUrlSegmentGroup; + try { + const relativeToSnapshot = relativeTo ? relativeTo.snapshot : this.routerState.snapshot.root; + relativeToUrlSegmentGroup = createSegmentGroupFromRoute(relativeToSnapshot); + } catch (e) { + if (typeof commands[0] !== "string" || !commands[0].startsWith("/")) { + commands = []; + } + relativeToUrlSegmentGroup = this.currentUrlTree.root; + } + return createUrlTreeFromSegmentGroup(relativeToUrlSegmentGroup, commands, q, f ?? null); + } + /** + * Navigates to a view using an absolute route path. + * + * @param url An absolute path for a defined route. The function does not apply any delta to the + * current URL. + * @param extras An object containing properties that modify the navigation strategy. + * + * @returns A Promise that resolves to 'true' when navigation succeeds, + * to 'false' when navigation fails, or is rejected on error. + * + * @usageNotes + * + * The following calls request navigation to an absolute path. + * + * ``` + * router.navigateByUrl("/team/33/user/11"); + * + * // Navigate without updating the URL + * router.navigateByUrl("/team/33/user/11", { skipLocationChange: true }); + * ``` + * + * @see [Routing and Navigation guide](guide/router) + * + */ + navigateByUrl(url, extras = { + skipLocationChange: false + }) { + if (typeof ngDevMode === "undefined" || ngDevMode) { + if (this.isNgZoneEnabled && !NgZone.isInAngularZone()) { + this.console.warn(`Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?`); + } + } + const urlTree = isUrlTree(url) ? url : this.parseUrl(url); + const mergedTree = this.urlHandlingStrategy.merge(urlTree, this.rawUrlTree); + return this.scheduleNavigation(mergedTree, IMPERATIVE_NAVIGATION, null, extras); + } + /** + * Navigate based on the provided array of commands and a starting point. + * If no starting route is provided, the navigation is absolute. + * + * @param commands An array of URL fragments with which to construct the target URL. + * If the path is static, can be the literal URL string. For a dynamic path, pass an array of path + * segments, followed by the parameters for each segment. + * The fragments are applied to the current URL or the one provided in the `relativeTo` property + * of the options object, if supplied. + * @param extras An options object that determines how the URL should be constructed or + * interpreted. + * + * @returns A Promise that resolves to `true` when navigation succeeds, to `false` when navigation + * fails, + * or is rejected on error. + * + * @usageNotes + * + * The following calls request navigation to a dynamic route path relative to the current URL. + * + * ``` + * router.navigate(['team', 33, 'user', 11], {relativeTo: route}); + * + * // Navigate without updating the URL, overriding the default behavior + * router.navigate(['team', 33, 'user', 11], {relativeTo: route, skipLocationChange: true}); + * ``` + * + * @see [Routing and Navigation guide](guide/router) + * + */ + navigate(commands, extras = { + skipLocationChange: false + }) { + validateCommands(commands); + return this.navigateByUrl(this.createUrlTree(commands, extras), extras); + } + /** Serializes a `UrlTree` into a string */ + serializeUrl(url) { + return this.urlSerializer.serialize(url); + } + /** Parses a string into a `UrlTree` */ + parseUrl(url) { + try { + return this.urlSerializer.parse(url); + } catch { + return this.urlSerializer.parse("/"); + } + } + isActive(url, matchOptions) { + let options; + if (matchOptions === true) { + options = __spreadValues({}, exactMatchOptions); + } else if (matchOptions === false) { + options = __spreadValues({}, subsetMatchOptions); + } else { + options = matchOptions; + } + if (isUrlTree(url)) { + return containsTree(this.currentUrlTree, url, options); + } + const urlTree = this.parseUrl(url); + return containsTree(this.currentUrlTree, urlTree, options); + } + removeEmptyProps(params) { + return Object.keys(params).reduce((result, key) => { + const value = params[key]; + if (value !== null && value !== void 0) { + result[key] = value; + } + return result; + }, {}); + } + scheduleNavigation(rawUrl, source, restoredState, extras, priorPromise) { + if (this.disposed) { + return Promise.resolve(false); + } + let resolve; + let reject; + let promise; + if (priorPromise) { + resolve = priorPromise.resolve; + reject = priorPromise.reject; + promise = priorPromise.promise; + } else { + promise = new Promise((res, rej) => { + resolve = res; + reject = rej; + }); + } + const taskId = this.pendingTasks.add(); + afterNextNavigation(this, () => { + queueMicrotask(() => this.pendingTasks.remove(taskId)); + }); + this.navigationTransitions.handleNavigationRequest({ + source, + restoredState, + currentUrlTree: this.currentUrlTree, + currentRawUrl: this.currentUrlTree, + rawUrl, + extras, + resolve, + reject, + promise, + currentSnapshot: this.routerState.snapshot, + currentRouterState: this.routerState + }); + return promise.catch((e) => { + return Promise.reject(e); + }); + } +}; +_Router.ɵfac = function Router_Factory(t) { + return new (t || _Router)(); +}; +_Router.ɵprov = ɵɵdefineInjectable({ + token: _Router, + factory: _Router.ɵfac, + providedIn: "root" +}); +var Router = _Router; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Router, [{ + type: Injectable, + args: [{ + providedIn: "root" + }] + }], () => [], null); +})(); +function validateCommands(commands) { + for (let i = 0; i < commands.length; i++) { + const cmd = commands[i]; + if (cmd == null) { + throw new RuntimeError(4008, (typeof ngDevMode === "undefined" || ngDevMode) && `The requested path contains ${cmd} segment at index ${i}`); + } + } +} +function isPublicRouterEvent(e) { + return !(e instanceof BeforeActivateRoutes) && !(e instanceof RedirectRequest); +} +var _RouterLink = class _RouterLink { + constructor(router, route, tabIndexAttribute, renderer, el, locationStrategy) { + this.router = router; + this.route = route; + this.tabIndexAttribute = tabIndexAttribute; + this.renderer = renderer; + this.el = el; + this.locationStrategy = locationStrategy; + this.href = null; + this.commands = null; + this.onChanges = new Subject(); + this.preserveFragment = false; + this.skipLocationChange = false; + this.replaceUrl = false; + const tagName = el.nativeElement.tagName?.toLowerCase(); + this.isAnchorElement = tagName === "a" || tagName === "area"; + if (this.isAnchorElement) { + this.subscription = router.events.subscribe((s) => { + if (s instanceof NavigationEnd) { + this.updateHref(); + } + }); + } else { + this.setTabIndexIfNotOnNativeEl("0"); + } + } + /** + * Modifies the tab index if there was not a tabindex attribute on the element during + * instantiation. + */ + setTabIndexIfNotOnNativeEl(newTabIndex) { + if (this.tabIndexAttribute != null || this.isAnchorElement) { + return; + } + this.applyAttributeValue("tabindex", newTabIndex); + } + /** @nodoc */ + ngOnChanges(changes) { + if (this.isAnchorElement) { + this.updateHref(); + } + this.onChanges.next(this); + } + /** + * Commands to pass to {@link Router#createUrlTree}. + * - **array**: commands to pass to {@link Router#createUrlTree}. + * - **string**: shorthand for array of commands with just the string, i.e. `['/route']` + * - **null|undefined**: effectively disables the `routerLink` + * @see {@link Router#createUrlTree} + */ + set routerLink(commands) { + if (commands != null) { + this.commands = Array.isArray(commands) ? commands : [commands]; + this.setTabIndexIfNotOnNativeEl("0"); + } else { + this.commands = null; + this.setTabIndexIfNotOnNativeEl(null); + } + } + /** @nodoc */ + onClick(button, ctrlKey, shiftKey, altKey, metaKey) { + if (this.urlTree === null) { + return true; + } + if (this.isAnchorElement) { + if (button !== 0 || ctrlKey || shiftKey || altKey || metaKey) { + return true; + } + if (typeof this.target === "string" && this.target != "_self") { + return true; + } + } + const extras = { + skipLocationChange: this.skipLocationChange, + replaceUrl: this.replaceUrl, + state: this.state + }; + this.router.navigateByUrl(this.urlTree, extras); + return !this.isAnchorElement; + } + /** @nodoc */ + ngOnDestroy() { + this.subscription?.unsubscribe(); + } + updateHref() { + this.href = this.urlTree !== null && this.locationStrategy ? this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(this.urlTree)) : null; + const sanitizedValue = this.href === null ? null : ( + // This class represents a directive that can be added to both `` elements, + // as well as other elements. As a result, we can't define security context at + // compile time. So the security context is deferred to runtime. + // The `ɵɵsanitizeUrlOrResourceUrl` selects the necessary sanitizer function + // based on the tag and property names. The logic mimics the one from + // `packages/compiler/src/schema/dom_security_schema.ts`, which is used at compile time. + // + // Note: we should investigate whether we can switch to using `@HostBinding('attr.href')` + // instead of applying a value via a renderer, after a final merge of the + // `RouterLinkWithHref` directive. + ɵɵsanitizeUrlOrResourceUrl(this.href, this.el.nativeElement.tagName.toLowerCase(), "href") + ); + this.applyAttributeValue("href", sanitizedValue); + } + applyAttributeValue(attrName, attrValue) { + const renderer = this.renderer; + const nativeElement = this.el.nativeElement; + if (attrValue !== null) { + renderer.setAttribute(nativeElement, attrName, attrValue); + } else { + renderer.removeAttribute(nativeElement, attrName); + } + } + get urlTree() { + if (this.commands === null) { + return null; + } + return this.router.createUrlTree(this.commands, { + // If the `relativeTo` input is not defined, we want to use `this.route` by default. + // Otherwise, we should use the value provided by the user in the input. + relativeTo: this.relativeTo !== void 0 ? this.relativeTo : this.route, + queryParams: this.queryParams, + fragment: this.fragment, + queryParamsHandling: this.queryParamsHandling, + preserveFragment: this.preserveFragment + }); + } +}; +_RouterLink.ɵfac = function RouterLink_Factory(t) { + return new (t || _RouterLink)(ɵɵdirectiveInject(Router), ɵɵdirectiveInject(ActivatedRoute), ɵɵinjectAttribute("tabindex"), ɵɵdirectiveInject(Renderer2), ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(LocationStrategy)); +}; +_RouterLink.ɵdir = ɵɵdefineDirective({ + type: _RouterLink, + selectors: [["", "routerLink", ""]], + hostVars: 1, + hostBindings: function RouterLink_HostBindings(rf, ctx) { + if (rf & 1) { + ɵɵlistener("click", function RouterLink_click_HostBindingHandler($event) { + return ctx.onClick($event.button, $event.ctrlKey, $event.shiftKey, $event.altKey, $event.metaKey); + }); + } + if (rf & 2) { + ɵɵattribute("target", ctx.target); + } + }, + inputs: { + target: "target", + queryParams: "queryParams", + fragment: "fragment", + queryParamsHandling: "queryParamsHandling", + state: "state", + relativeTo: "relativeTo", + preserveFragment: ["preserveFragment", "preserveFragment", booleanAttribute], + skipLocationChange: ["skipLocationChange", "skipLocationChange", booleanAttribute], + replaceUrl: ["replaceUrl", "replaceUrl", booleanAttribute], + routerLink: "routerLink" + }, + standalone: true, + features: [ɵɵInputTransformsFeature, ɵɵNgOnChangesFeature] +}); +var RouterLink = _RouterLink; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RouterLink, [{ + type: Directive, + args: [{ + selector: "[routerLink]", + standalone: true + }] + }], () => [{ + type: Router + }, { + type: ActivatedRoute + }, { + type: void 0, + decorators: [{ + type: Attribute, + args: ["tabindex"] + }] + }, { + type: Renderer2 + }, { + type: ElementRef + }, { + type: LocationStrategy + }], { + target: [{ + type: HostBinding, + args: ["attr.target"] + }, { + type: Input + }], + queryParams: [{ + type: Input + }], + fragment: [{ + type: Input + }], + queryParamsHandling: [{ + type: Input + }], + state: [{ + type: Input + }], + relativeTo: [{ + type: Input + }], + preserveFragment: [{ + type: Input, + args: [{ + transform: booleanAttribute + }] + }], + skipLocationChange: [{ + type: Input, + args: [{ + transform: booleanAttribute + }] + }], + replaceUrl: [{ + type: Input, + args: [{ + transform: booleanAttribute + }] + }], + routerLink: [{ + type: Input + }], + onClick: [{ + type: HostListener, + args: ["click", ["$event.button", "$event.ctrlKey", "$event.shiftKey", "$event.altKey", "$event.metaKey"]] + }] + }); +})(); +var _RouterLinkActive = class _RouterLinkActive { + get isActive() { + return this._isActive; + } + constructor(router, element, renderer, cdr, link) { + this.router = router; + this.element = element; + this.renderer = renderer; + this.cdr = cdr; + this.link = link; + this.classes = []; + this._isActive = false; + this.routerLinkActiveOptions = { + exact: false + }; + this.isActiveChange = new EventEmitter(); + this.routerEventsSubscription = router.events.subscribe((s) => { + if (s instanceof NavigationEnd) { + this.update(); + } + }); + } + /** @nodoc */ + ngAfterContentInit() { + of(this.links.changes, of(null)).pipe(mergeAll()).subscribe((_) => { + this.update(); + this.subscribeToEachLinkOnChanges(); + }); + } + subscribeToEachLinkOnChanges() { + this.linkInputChangesSubscription?.unsubscribe(); + const allLinkChanges = [...this.links.toArray(), this.link].filter((link) => !!link).map((link) => link.onChanges); + this.linkInputChangesSubscription = from(allLinkChanges).pipe(mergeAll()).subscribe((link) => { + if (this._isActive !== this.isLinkActive(this.router)(link)) { + this.update(); + } + }); + } + set routerLinkActive(data) { + const classes = Array.isArray(data) ? data : data.split(" "); + this.classes = classes.filter((c) => !!c); + } + /** @nodoc */ + ngOnChanges(changes) { + this.update(); + } + /** @nodoc */ + ngOnDestroy() { + this.routerEventsSubscription.unsubscribe(); + this.linkInputChangesSubscription?.unsubscribe(); + } + update() { + if (!this.links || !this.router.navigated) + return; + queueMicrotask(() => { + const hasActiveLinks = this.hasActiveLinks(); + if (this._isActive !== hasActiveLinks) { + this._isActive = hasActiveLinks; + this.cdr.markForCheck(); + this.classes.forEach((c) => { + if (hasActiveLinks) { + this.renderer.addClass(this.element.nativeElement, c); + } else { + this.renderer.removeClass(this.element.nativeElement, c); + } + }); + if (hasActiveLinks && this.ariaCurrentWhenActive !== void 0) { + this.renderer.setAttribute(this.element.nativeElement, "aria-current", this.ariaCurrentWhenActive.toString()); + } else { + this.renderer.removeAttribute(this.element.nativeElement, "aria-current"); + } + this.isActiveChange.emit(hasActiveLinks); + } + }); + } + isLinkActive(router) { + const options = isActiveMatchOptions(this.routerLinkActiveOptions) ? this.routerLinkActiveOptions : ( + // While the types should disallow `undefined` here, it's possible without strict inputs + this.routerLinkActiveOptions.exact || false + ); + return (link) => link.urlTree ? router.isActive(link.urlTree, options) : false; + } + hasActiveLinks() { + const isActiveCheckFn = this.isLinkActive(this.router); + return this.link && isActiveCheckFn(this.link) || this.links.some(isActiveCheckFn); + } +}; +_RouterLinkActive.ɵfac = function RouterLinkActive_Factory(t) { + return new (t || _RouterLinkActive)(ɵɵdirectiveInject(Router), ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(Renderer2), ɵɵdirectiveInject(ChangeDetectorRef), ɵɵdirectiveInject(RouterLink, 8)); +}; +_RouterLinkActive.ɵdir = ɵɵdefineDirective({ + type: _RouterLinkActive, + selectors: [["", "routerLinkActive", ""]], + contentQueries: function RouterLinkActive_ContentQueries(rf, ctx, dirIndex) { + if (rf & 1) { + ɵɵcontentQuery(dirIndex, RouterLink, 5); + } + if (rf & 2) { + let _t; + ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.links = _t); + } + }, + inputs: { + routerLinkActiveOptions: "routerLinkActiveOptions", + ariaCurrentWhenActive: "ariaCurrentWhenActive", + routerLinkActive: "routerLinkActive" + }, + outputs: { + isActiveChange: "isActiveChange" + }, + exportAs: ["routerLinkActive"], + standalone: true, + features: [ɵɵNgOnChangesFeature] +}); +var RouterLinkActive = _RouterLinkActive; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RouterLinkActive, [{ + type: Directive, + args: [{ + selector: "[routerLinkActive]", + exportAs: "routerLinkActive", + standalone: true + }] + }], () => [{ + type: Router + }, { + type: ElementRef + }, { + type: Renderer2 + }, { + type: ChangeDetectorRef + }, { + type: RouterLink, + decorators: [{ + type: Optional + }] + }], { + links: [{ + type: ContentChildren, + args: [RouterLink, { + descendants: true + }] + }], + routerLinkActiveOptions: [{ + type: Input + }], + ariaCurrentWhenActive: [{ + type: Input + }], + isActiveChange: [{ + type: Output + }], + routerLinkActive: [{ + type: Input + }] + }); +})(); +function isActiveMatchOptions(options) { + return !!options.paths; +} +var PreloadingStrategy = class { +}; +var _PreloadAllModules = class _PreloadAllModules { + preload(route, fn) { + return fn().pipe(catchError(() => of(null))); + } +}; +_PreloadAllModules.ɵfac = function PreloadAllModules_Factory(t) { + return new (t || _PreloadAllModules)(); +}; +_PreloadAllModules.ɵprov = ɵɵdefineInjectable({ + token: _PreloadAllModules, + factory: _PreloadAllModules.ɵfac, + providedIn: "root" +}); +var PreloadAllModules = _PreloadAllModules; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(PreloadAllModules, [{ + type: Injectable, + args: [{ + providedIn: "root" + }] + }], null, null); +})(); +var _NoPreloading = class _NoPreloading { + preload(route, fn) { + return of(null); + } +}; +_NoPreloading.ɵfac = function NoPreloading_Factory(t) { + return new (t || _NoPreloading)(); +}; +_NoPreloading.ɵprov = ɵɵdefineInjectable({ + token: _NoPreloading, + factory: _NoPreloading.ɵfac, + providedIn: "root" +}); +var NoPreloading = _NoPreloading; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NoPreloading, [{ + type: Injectable, + args: [{ + providedIn: "root" + }] + }], null, null); +})(); +var _RouterPreloader = class _RouterPreloader { + constructor(router, compiler, injector, preloadingStrategy, loader) { + this.router = router; + this.injector = injector; + this.preloadingStrategy = preloadingStrategy; + this.loader = loader; + } + setUpPreloading() { + this.subscription = this.router.events.pipe(filter((e) => e instanceof NavigationEnd), concatMap(() => this.preload())).subscribe(() => { + }); + } + preload() { + return this.processRoutes(this.injector, this.router.config); + } + /** @nodoc */ + ngOnDestroy() { + if (this.subscription) { + this.subscription.unsubscribe(); + } + } + processRoutes(injector, routes) { + const res = []; + for (const route of routes) { + if (route.providers && !route._injector) { + route._injector = createEnvironmentInjector(route.providers, injector, `Route: ${route.path}`); + } + const injectorForCurrentRoute = route._injector ?? injector; + const injectorForChildren = route._loadedInjector ?? injectorForCurrentRoute; + if (route.loadChildren && !route._loadedRoutes && route.canLoad === void 0 || route.loadComponent && !route._loadedComponent) { + res.push(this.preloadConfig(injectorForCurrentRoute, route)); + } + if (route.children || route._loadedRoutes) { + res.push(this.processRoutes(injectorForChildren, route.children ?? route._loadedRoutes)); + } + } + return from(res).pipe(mergeAll()); + } + preloadConfig(injector, route) { + return this.preloadingStrategy.preload(route, () => { + let loadedChildren$; + if (route.loadChildren && route.canLoad === void 0) { + loadedChildren$ = this.loader.loadChildren(injector, route); + } else { + loadedChildren$ = of(null); + } + const recursiveLoadChildren$ = loadedChildren$.pipe(mergeMap((config) => { + if (config === null) { + return of(void 0); + } + route._loadedRoutes = config.routes; + route._loadedInjector = config.injector; + return this.processRoutes(config.injector ?? injector, config.routes); + })); + if (route.loadComponent && !route._loadedComponent) { + const loadComponent$ = this.loader.loadComponent(route); + return from([recursiveLoadChildren$, loadComponent$]).pipe(mergeAll()); + } else { + return recursiveLoadChildren$; + } + }); + } +}; +_RouterPreloader.ɵfac = function RouterPreloader_Factory(t) { + return new (t || _RouterPreloader)(ɵɵinject(Router), ɵɵinject(Compiler), ɵɵinject(EnvironmentInjector), ɵɵinject(PreloadingStrategy), ɵɵinject(RouterConfigLoader)); +}; +_RouterPreloader.ɵprov = ɵɵdefineInjectable({ + token: _RouterPreloader, + factory: _RouterPreloader.ɵfac, + providedIn: "root" +}); +var RouterPreloader = _RouterPreloader; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RouterPreloader, [{ + type: Injectable, + args: [{ + providedIn: "root" + }] + }], () => [{ + type: Router + }, { + type: Compiler + }, { + type: EnvironmentInjector + }, { + type: PreloadingStrategy + }, { + type: RouterConfigLoader + }], null); +})(); +var ROUTER_SCROLLER = new InjectionToken(""); +var _RouterScroller = class _RouterScroller { + /** @nodoc */ + constructor(urlSerializer, transitions, viewportScroller, zone, options = {}) { + this.urlSerializer = urlSerializer; + this.transitions = transitions; + this.viewportScroller = viewportScroller; + this.zone = zone; + this.options = options; + this.lastId = 0; + this.lastSource = "imperative"; + this.restoredId = 0; + this.store = {}; + options.scrollPositionRestoration = options.scrollPositionRestoration || "disabled"; + options.anchorScrolling = options.anchorScrolling || "disabled"; + } + init() { + if (this.options.scrollPositionRestoration !== "disabled") { + this.viewportScroller.setHistoryScrollRestoration("manual"); + } + this.routerEventsSubscription = this.createScrollEvents(); + this.scrollEventsSubscription = this.consumeScrollEvents(); + } + createScrollEvents() { + return this.transitions.events.subscribe((e) => { + if (e instanceof NavigationStart) { + this.store[this.lastId] = this.viewportScroller.getScrollPosition(); + this.lastSource = e.navigationTrigger; + this.restoredId = e.restoredState ? e.restoredState.navigationId : 0; + } else if (e instanceof NavigationEnd) { + this.lastId = e.id; + this.scheduleScrollEvent(e, this.urlSerializer.parse(e.urlAfterRedirects).fragment); + } else if (e instanceof NavigationSkipped && e.code === 0) { + this.lastSource = void 0; + this.restoredId = 0; + this.scheduleScrollEvent(e, this.urlSerializer.parse(e.url).fragment); + } + }); + } + consumeScrollEvents() { + return this.transitions.events.subscribe((e) => { + if (!(e instanceof Scroll)) + return; + if (e.position) { + if (this.options.scrollPositionRestoration === "top") { + this.viewportScroller.scrollToPosition([0, 0]); + } else if (this.options.scrollPositionRestoration === "enabled") { + this.viewportScroller.scrollToPosition(e.position); + } + } else { + if (e.anchor && this.options.anchorScrolling === "enabled") { + this.viewportScroller.scrollToAnchor(e.anchor); + } else if (this.options.scrollPositionRestoration !== "disabled") { + this.viewportScroller.scrollToPosition([0, 0]); + } + } + }); + } + scheduleScrollEvent(routerEvent, anchor) { + this.zone.runOutsideAngular(() => { + setTimeout(() => { + this.zone.run(() => { + this.transitions.events.next(new Scroll(routerEvent, this.lastSource === "popstate" ? this.store[this.restoredId] : null, anchor)); + }); + }, 0); + }); + } + /** @nodoc */ + ngOnDestroy() { + this.routerEventsSubscription?.unsubscribe(); + this.scrollEventsSubscription?.unsubscribe(); + } +}; +_RouterScroller.ɵfac = function RouterScroller_Factory(t) { + ɵɵinvalidFactory(); +}; +_RouterScroller.ɵprov = ɵɵdefineInjectable({ + token: _RouterScroller, + factory: _RouterScroller.ɵfac +}); +var RouterScroller = _RouterScroller; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RouterScroller, [{ + type: Injectable + }], () => [{ + type: UrlSerializer + }, { + type: NavigationTransitions + }, { + type: ViewportScroller + }, { + type: NgZone + }, { + type: void 0 + }], null); +})(); +function provideRouter(routes, ...features) { + return makeEnvironmentProviders([{ + provide: ROUTES, + multi: true, + useValue: routes + }, typeof ngDevMode === "undefined" || ngDevMode ? { + provide: ROUTER_IS_PROVIDED, + useValue: true + } : [], { + provide: ActivatedRoute, + useFactory: rootRoute, + deps: [Router] + }, { + provide: APP_BOOTSTRAP_LISTENER, + multi: true, + useFactory: getBootstrapListener + }, features.map((feature) => feature.ɵproviders)]); +} +function rootRoute(router) { + return router.routerState.root; +} +function routerFeature(kind, providers) { + return { + ɵkind: kind, + ɵproviders: providers + }; +} +var ROUTER_IS_PROVIDED = new InjectionToken("", { + providedIn: "root", + factory: () => false +}); +var routerIsProvidedDevModeCheck = { + provide: ENVIRONMENT_INITIALIZER, + multi: true, + useFactory() { + return () => { + if (!inject(ROUTER_IS_PROVIDED)) { + console.warn("`provideRoutes` was called without `provideRouter` or `RouterModule.forRoot`. This is likely a mistake."); + } + }; + } +}; +function provideRoutes(routes) { + return [{ + provide: ROUTES, + multi: true, + useValue: routes + }, typeof ngDevMode === "undefined" || ngDevMode ? routerIsProvidedDevModeCheck : []]; +} +function withInMemoryScrolling(options = {}) { + const providers = [{ + provide: ROUTER_SCROLLER, + useFactory: () => { + const viewportScroller = inject(ViewportScroller); + const zone = inject(NgZone); + const transitions = inject(NavigationTransitions); + const urlSerializer = inject(UrlSerializer); + return new RouterScroller(urlSerializer, transitions, viewportScroller, zone, options); + } + }]; + return routerFeature(4, providers); +} +function getBootstrapListener() { + const injector = inject(Injector); + return (bootstrappedComponentRef) => { + const ref = injector.get(ApplicationRef); + if (bootstrappedComponentRef !== ref.components[0]) { + return; + } + const router = injector.get(Router); + const bootstrapDone = injector.get(BOOTSTRAP_DONE); + if (injector.get(INITIAL_NAVIGATION) === 1) { + router.initialNavigation(); + } + injector.get(ROUTER_PRELOADER, null, InjectFlags.Optional)?.setUpPreloading(); + injector.get(ROUTER_SCROLLER, null, InjectFlags.Optional)?.init(); + router.resetRootComponentType(ref.componentTypes[0]); + if (!bootstrapDone.closed) { + bootstrapDone.next(); + bootstrapDone.complete(); + bootstrapDone.unsubscribe(); + } + }; +} +var BOOTSTRAP_DONE = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "bootstrap done indicator" : "", { + factory: () => { + return new Subject(); + } +}); +var INITIAL_NAVIGATION = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "initial navigation" : "", { + providedIn: "root", + factory: () => 1 + /* InitialNavigation.EnabledNonBlocking */ +}); +function withEnabledBlockingInitialNavigation() { + const providers = [{ + provide: INITIAL_NAVIGATION, + useValue: 0 + /* InitialNavigation.EnabledBlocking */ + }, { + provide: APP_INITIALIZER, + multi: true, + deps: [Injector], + useFactory: (injector) => { + const locationInitialized = injector.get(LOCATION_INITIALIZED, Promise.resolve()); + return () => { + return locationInitialized.then(() => { + return new Promise((resolve) => { + const router = injector.get(Router); + const bootstrapDone = injector.get(BOOTSTRAP_DONE); + afterNextNavigation(router, () => { + resolve(true); + }); + injector.get(NavigationTransitions).afterPreactivation = () => { + resolve(true); + return bootstrapDone.closed ? of(void 0) : bootstrapDone; + }; + router.initialNavigation(); + }); + }); + }; + } + }]; + return routerFeature(2, providers); +} +function withDisabledInitialNavigation() { + const providers = [{ + provide: APP_INITIALIZER, + multi: true, + useFactory: () => { + const router = inject(Router); + return () => { + router.setUpLocationChangeListener(); + }; + } + }, { + provide: INITIAL_NAVIGATION, + useValue: 2 + /* InitialNavigation.Disabled */ + }]; + return routerFeature(3, providers); +} +function withDebugTracing() { + let providers = []; + if (typeof ngDevMode === "undefined" || ngDevMode) { + providers = [{ + provide: ENVIRONMENT_INITIALIZER, + multi: true, + useFactory: () => { + const router = inject(Router); + return () => router.events.subscribe((e) => { + console.group?.(`Router Event: ${e.constructor.name}`); + console.log(stringifyEvent(e)); + console.log(e); + console.groupEnd?.(); + }); + } + }]; + } else { + providers = []; + } + return routerFeature(1, providers); +} +var ROUTER_PRELOADER = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "router preloader" : ""); +function withPreloading(preloadingStrategy) { + const providers = [{ + provide: ROUTER_PRELOADER, + useExisting: RouterPreloader + }, { + provide: PreloadingStrategy, + useExisting: preloadingStrategy + }]; + return routerFeature(0, providers); +} +function withRouterConfig(options) { + const providers = [{ + provide: ROUTER_CONFIGURATION, + useValue: options + }]; + return routerFeature(5, providers); +} +function withHashLocation() { + const providers = [{ + provide: LocationStrategy, + useClass: HashLocationStrategy + }]; + return routerFeature(6, providers); +} +function withNavigationErrorHandler(fn) { + const providers = [{ + provide: ENVIRONMENT_INITIALIZER, + multi: true, + useValue: () => { + const injector = inject(EnvironmentInjector); + inject(Router).events.subscribe((e) => { + if (e instanceof NavigationError) { + runInInjectionContext(injector, () => fn(e)); + } + }); + } + }]; + return routerFeature(7, providers); +} +function withComponentInputBinding() { + const providers = [RoutedComponentInputBinder, { + provide: INPUT_BINDER, + useExisting: RoutedComponentInputBinder + }]; + return routerFeature(8, providers); +} +function withViewTransitions(options) { + const providers = [{ + provide: CREATE_VIEW_TRANSITION, + useValue: createViewTransition + }, { + provide: VIEW_TRANSITION_OPTIONS, + useValue: __spreadValues({ + skipNextTransition: !!options?.skipInitialTransition + }, options) + }]; + return routerFeature(9, providers); +} +var ROUTER_DIRECTIVES = [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent]; +var ROUTER_FORROOT_GUARD = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "router duplicate forRoot guard" : "ROUTER_FORROOT_GUARD"); +var ROUTER_PROVIDERS = [ + Location, + { + provide: UrlSerializer, + useClass: DefaultUrlSerializer + }, + Router, + ChildrenOutletContexts, + { + provide: ActivatedRoute, + useFactory: rootRoute, + deps: [Router] + }, + RouterConfigLoader, + // Only used to warn when `provideRoutes` is used without `RouterModule` or `provideRouter`. Can + // be removed when `provideRoutes` is removed. + typeof ngDevMode === "undefined" || ngDevMode ? { + provide: ROUTER_IS_PROVIDED, + useValue: true + } : [] +]; +var _RouterModule = class _RouterModule { + constructor(guard) { + } + /** + * Creates and configures a module with all the router providers and directives. + * Optionally sets up an application listener to perform an initial navigation. + * + * When registering the NgModule at the root, import as follows: + * + * ``` + * @NgModule({ + * imports: [RouterModule.forRoot(ROUTES)] + * }) + * class MyNgModule {} + * ``` + * + * @param routes An array of `Route` objects that define the navigation paths for the application. + * @param config An `ExtraOptions` configuration object that controls how navigation is performed. + * @return The new `NgModule`. + * + */ + static forRoot(routes, config) { + return { + ngModule: _RouterModule, + providers: [ROUTER_PROVIDERS, typeof ngDevMode === "undefined" || ngDevMode ? config?.enableTracing ? withDebugTracing().ɵproviders : [] : [], { + provide: ROUTES, + multi: true, + useValue: routes + }, { + provide: ROUTER_FORROOT_GUARD, + useFactory: provideForRootGuard, + deps: [[Router, new Optional(), new SkipSelf()]] + }, { + provide: ROUTER_CONFIGURATION, + useValue: config ? config : {} + }, config?.useHash ? provideHashLocationStrategy() : providePathLocationStrategy(), provideRouterScroller(), config?.preloadingStrategy ? withPreloading(config.preloadingStrategy).ɵproviders : [], config?.initialNavigation ? provideInitialNavigation(config) : [], config?.bindToComponentInputs ? withComponentInputBinding().ɵproviders : [], config?.enableViewTransitions ? withViewTransitions().ɵproviders : [], provideRouterInitializer()] + }; + } + /** + * Creates a module with all the router directives and a provider registering routes, + * without creating a new Router service. + * When registering for submodules and lazy-loaded submodules, create the NgModule as follows: + * + * ``` + * @NgModule({ + * imports: [RouterModule.forChild(ROUTES)] + * }) + * class MyNgModule {} + * ``` + * + * @param routes An array of `Route` objects that define the navigation paths for the submodule. + * @return The new NgModule. + * + */ + static forChild(routes) { + return { + ngModule: _RouterModule, + providers: [{ + provide: ROUTES, + multi: true, + useValue: routes + }] + }; + } +}; +_RouterModule.ɵfac = function RouterModule_Factory(t) { + return new (t || _RouterModule)(ɵɵinject(ROUTER_FORROOT_GUARD, 8)); +}; +_RouterModule.ɵmod = ɵɵdefineNgModule({ + type: _RouterModule, + imports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent], + exports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent] +}); +_RouterModule.ɵinj = ɵɵdefineInjector({}); +var RouterModule = _RouterModule; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RouterModule, [{ + type: NgModule, + args: [{ + imports: ROUTER_DIRECTIVES, + exports: ROUTER_DIRECTIVES + }] + }], () => [{ + type: void 0, + decorators: [{ + type: Optional + }, { + type: Inject, + args: [ROUTER_FORROOT_GUARD] + }] + }], null); +})(); +function provideRouterScroller() { + return { + provide: ROUTER_SCROLLER, + useFactory: () => { + const viewportScroller = inject(ViewportScroller); + const zone = inject(NgZone); + const config = inject(ROUTER_CONFIGURATION); + const transitions = inject(NavigationTransitions); + const urlSerializer = inject(UrlSerializer); + if (config.scrollOffset) { + viewportScroller.setOffset(config.scrollOffset); + } + return new RouterScroller(urlSerializer, transitions, viewportScroller, zone, config); + } + }; +} +function provideHashLocationStrategy() { + return { + provide: LocationStrategy, + useClass: HashLocationStrategy + }; +} +function providePathLocationStrategy() { + return { + provide: LocationStrategy, + useClass: PathLocationStrategy + }; +} +function provideForRootGuard(router) { + if ((typeof ngDevMode === "undefined" || ngDevMode) && router) { + throw new RuntimeError(4007, `The Router was provided more than once. This can happen if 'forRoot' is used outside of the root injector. Lazy loaded modules should use RouterModule.forChild() instead.`); + } + return "guarded"; +} +function provideInitialNavigation(config) { + return [config.initialNavigation === "disabled" ? withDisabledInitialNavigation().ɵproviders : [], config.initialNavigation === "enabledBlocking" ? withEnabledBlockingInitialNavigation().ɵproviders : []]; +} +var ROUTER_INITIALIZER = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "Router Initializer" : ""); +function provideRouterInitializer() { + return [ + // ROUTER_INITIALIZER token should be removed. It's public API but shouldn't be. We can just + // have `getBootstrapListener` directly attached to APP_BOOTSTRAP_LISTENER. + { + provide: ROUTER_INITIALIZER, + useFactory: getBootstrapListener + }, + { + provide: APP_BOOTSTRAP_LISTENER, + multi: true, + useExisting: ROUTER_INITIALIZER + } + ]; +} +function mapToCanMatch(providers) { + return providers.map((provider) => (...params) => inject(provider).canMatch(...params)); +} +function mapToCanActivate(providers) { + return providers.map((provider) => (...params) => inject(provider).canActivate(...params)); +} +function mapToCanActivateChild(providers) { + return providers.map((provider) => (...params) => inject(provider).canActivateChild(...params)); +} +function mapToCanDeactivate(providers) { + return providers.map((provider) => (...params) => inject(provider).canDeactivate(...params)); +} +function mapToResolve(provider) { + return (...params) => inject(provider).resolve(...params); +} +var VERSION = new Version("17.0.7"); + +export { + PRIMARY_OUTLET, + convertToParamMap, + defaultUrlMatcher, + UrlTree, + UrlSegmentGroup, + UrlSegment, + UrlSerializer, + DefaultUrlSerializer, + createUrlTreeFromSnapshot, + RouterEvent, + NavigationStart, + NavigationEnd, + NavigationCancel, + NavigationSkipped, + NavigationError, + RoutesRecognized, + GuardsCheckStart, + GuardsCheckEnd, + ResolveStart, + ResolveEnd, + RouteConfigLoadStart, + RouteConfigLoadEnd, + ChildActivationStart, + ChildActivationEnd, + ActivationStart, + ActivationEnd, + Scroll, + OutletContext, + ChildrenOutletContexts, + RouterState, + ActivatedRoute, + ActivatedRouteSnapshot, + RouterStateSnapshot, + RouterOutlet, + ɵEmptyOutletComponent, + TitleStrategy, + DefaultTitleStrategy, + ROUTER_CONFIGURATION, + ROUTES, + loadChildren, + UrlHandlingStrategy, + RouteReuseStrategy, + BaseRouteReuseStrategy, + afterNextNavigation, + Router, + RouterLink, + RouterLinkActive, + PreloadingStrategy, + PreloadAllModules, + NoPreloading, + RouterPreloader, + provideRouter, + provideRoutes, + withInMemoryScrolling, + withEnabledBlockingInitialNavigation, + withDisabledInitialNavigation, + withDebugTracing, + withPreloading, + withRouterConfig, + withHashLocation, + withNavigationErrorHandler, + withComponentInputBinding, + withViewTransitions, + ROUTER_PROVIDERS, + RouterModule, + ROUTER_INITIALIZER, + mapToCanMatch, + mapToCanActivate, + mapToCanActivateChild, + mapToCanDeactivate, + mapToResolve, + VERSION +}; +/*! Bundled license information: + +@angular/router/fesm2022/router.mjs: + (** + * @license Angular v17.0.7 + * (c) 2010-2022 Google LLC. https://angular.io/ + * License: MIT + *) +*/ +//# sourceMappingURL=chunk-CZEXXPIB.js.map diff --git a/.angular/cache/17.0.7/vite/deps/chunk-CZEXXPIB.js.map b/.angular/cache/17.0.7/vite/deps/chunk-CZEXXPIB.js.map new file mode 100644 index 0000000..9614c25 --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/chunk-CZEXXPIB.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../node_modules/@angular/router/fesm2022/router.mjs"], + "sourcesContent": ["/**\n * @license Angular v17.0.7\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { ɵisPromise, ɵRuntimeError, Injectable, EventEmitter, inject, ViewContainerRef, ChangeDetectorRef, EnvironmentInjector, Directive, Input, Output, InjectionToken, reflectComponentType, Component, createEnvironmentInjector, ɵisNgModule, isStandalone, ɵisInjectable, runInInjectionContext, Compiler, NgModuleFactory, NgZone, afterNextRender, ɵConsole, ɵInitialRenderPendingTasks, ɵɵsanitizeUrlOrResourceUrl, booleanAttribute, Attribute, HostBinding, HostListener, Optional, ContentChildren, makeEnvironmentProviders, APP_BOOTSTRAP_LISTENER, ENVIRONMENT_INITIALIZER, Injector, ApplicationRef, InjectFlags, APP_INITIALIZER, SkipSelf, NgModule, Inject, Version } from '@angular/core';\nimport { isObservable, from, of, BehaviorSubject, combineLatest, EmptyError, concat, defer, pipe, throwError, EMPTY, ConnectableObservable, Subject, Subscription } from 'rxjs';\nimport * as i3 from '@angular/common';\nimport { DOCUMENT, Location, ViewportScroller, LOCATION_INITIALIZED, LocationStrategy, HashLocationStrategy, PathLocationStrategy } from '@angular/common';\nimport { map, switchMap, take, startWith, filter, mergeMap, first, concatMap, tap, catchError, scan, defaultIfEmpty, last as last$1, takeLast, mapTo, finalize, refCount, takeUntil, mergeAll } from 'rxjs/operators';\nimport * as i1 from '@angular/platform-browser';\n\n/**\n * The primary routing outlet.\n *\n * @publicApi\n */\nconst PRIMARY_OUTLET = 'primary';\n/**\n * A private symbol used to store the value of `Route.title` inside the `Route.data` if it is a\n * static string or `Route.resolve` if anything else. This allows us to reuse the existing route\n * data/resolvers to support the title feature without new instrumentation in the `Router` pipeline.\n */\nconst RouteTitleKey = /* @__PURE__ */Symbol('RouteTitle');\nclass ParamsAsMap {\n constructor(params) {\n this.params = params || {};\n }\n has(name) {\n return Object.prototype.hasOwnProperty.call(this.params, name);\n }\n get(name) {\n if (this.has(name)) {\n const v = this.params[name];\n return Array.isArray(v) ? v[0] : v;\n }\n return null;\n }\n getAll(name) {\n if (this.has(name)) {\n const v = this.params[name];\n return Array.isArray(v) ? v : [v];\n }\n return [];\n }\n get keys() {\n return Object.keys(this.params);\n }\n}\n/**\n * Converts a `Params` instance to a `ParamMap`.\n * @param params The instance to convert.\n * @returns The new map instance.\n *\n * @publicApi\n */\nfunction convertToParamMap(params) {\n return new ParamsAsMap(params);\n}\n/**\n * Matches the route configuration (`route`) against the actual URL (`segments`).\n *\n * When no matcher is defined on a `Route`, this is the matcher used by the Router by default.\n *\n * @param segments The remaining unmatched segments in the current navigation\n * @param segmentGroup The current segment group being matched\n * @param route The `Route` to match against.\n *\n * @see {@link UrlMatchResult}\n * @see {@link Route}\n *\n * @returns The resulting match information or `null` if the `route` should not match.\n * @publicApi\n */\nfunction defaultUrlMatcher(segments, segmentGroup, route) {\n const parts = route.path.split('/');\n if (parts.length > segments.length) {\n // The actual URL is shorter than the config, no match\n return null;\n }\n if (route.pathMatch === 'full' && (segmentGroup.hasChildren() || parts.length < segments.length)) {\n // The config is longer than the actual URL but we are looking for a full match, return null\n return null;\n }\n const posParams = {};\n // Check each config part against the actual URL\n for (let index = 0; index < parts.length; index++) {\n const part = parts[index];\n const segment = segments[index];\n const isParameter = part.startsWith(':');\n if (isParameter) {\n posParams[part.substring(1)] = segment;\n } else if (part !== segment.path) {\n // The actual URL part does not match the config, no match\n return null;\n }\n }\n return {\n consumed: segments.slice(0, parts.length),\n posParams\n };\n}\nfunction shallowEqualArrays(a, b) {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; ++i) {\n if (!shallowEqual(a[i], b[i])) return false;\n }\n return true;\n}\nfunction shallowEqual(a, b) {\n // While `undefined` should never be possible, it would sometimes be the case in IE 11\n // and pre-chromium Edge. The check below accounts for this edge case.\n const k1 = a ? getDataKeys(a) : undefined;\n const k2 = b ? getDataKeys(b) : undefined;\n if (!k1 || !k2 || k1.length != k2.length) {\n return false;\n }\n let key;\n for (let i = 0; i < k1.length; i++) {\n key = k1[i];\n if (!equalArraysOrString(a[key], b[key])) {\n return false;\n }\n }\n return true;\n}\n/**\n * Gets the keys of an object, including `symbol` keys.\n */\nfunction getDataKeys(obj) {\n return [...Object.keys(obj), ...Object.getOwnPropertySymbols(obj)];\n}\n/**\n * Test equality for arrays of strings or a string.\n */\nfunction equalArraysOrString(a, b) {\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n const aSorted = [...a].sort();\n const bSorted = [...b].sort();\n return aSorted.every((val, index) => bSorted[index] === val);\n } else {\n return a === b;\n }\n}\n/**\n * Return the last element of an array.\n */\nfunction last(a) {\n return a.length > 0 ? a[a.length - 1] : null;\n}\nfunction wrapIntoObservable(value) {\n if (isObservable(value)) {\n return value;\n }\n if (ɵisPromise(value)) {\n // Use `Promise.resolve()` to wrap promise-like instances.\n // Required ie when a Resolver returns a AngularJS `$q` promise to correctly trigger the\n // change detection.\n return from(Promise.resolve(value));\n }\n return of(value);\n}\nconst pathCompareMap = {\n 'exact': equalSegmentGroups,\n 'subset': containsSegmentGroup\n};\nconst paramCompareMap = {\n 'exact': equalParams,\n 'subset': containsParams,\n 'ignored': () => true\n};\nfunction containsTree(container, containee, options) {\n return pathCompareMap[options.paths](container.root, containee.root, options.matrixParams) && paramCompareMap[options.queryParams](container.queryParams, containee.queryParams) && !(options.fragment === 'exact' && container.fragment !== containee.fragment);\n}\nfunction equalParams(container, containee) {\n // TODO: This does not handle array params correctly.\n return shallowEqual(container, containee);\n}\nfunction equalSegmentGroups(container, containee, matrixParams) {\n if (!equalPath(container.segments, containee.segments)) return false;\n if (!matrixParamsMatch(container.segments, containee.segments, matrixParams)) {\n return false;\n }\n if (container.numberOfChildren !== containee.numberOfChildren) return false;\n for (const c in containee.children) {\n if (!container.children[c]) return false;\n if (!equalSegmentGroups(container.children[c], containee.children[c], matrixParams)) return false;\n }\n return true;\n}\nfunction containsParams(container, containee) {\n return Object.keys(containee).length <= Object.keys(container).length && Object.keys(containee).every(key => equalArraysOrString(container[key], containee[key]));\n}\nfunction containsSegmentGroup(container, containee, matrixParams) {\n return containsSegmentGroupHelper(container, containee, containee.segments, matrixParams);\n}\nfunction containsSegmentGroupHelper(container, containee, containeePaths, matrixParams) {\n if (container.segments.length > containeePaths.length) {\n const current = container.segments.slice(0, containeePaths.length);\n if (!equalPath(current, containeePaths)) return false;\n if (containee.hasChildren()) return false;\n if (!matrixParamsMatch(current, containeePaths, matrixParams)) return false;\n return true;\n } else if (container.segments.length === containeePaths.length) {\n if (!equalPath(container.segments, containeePaths)) return false;\n if (!matrixParamsMatch(container.segments, containeePaths, matrixParams)) return false;\n for (const c in containee.children) {\n if (!container.children[c]) return false;\n if (!containsSegmentGroup(container.children[c], containee.children[c], matrixParams)) {\n return false;\n }\n }\n return true;\n } else {\n const current = containeePaths.slice(0, container.segments.length);\n const next = containeePaths.slice(container.segments.length);\n if (!equalPath(container.segments, current)) return false;\n if (!matrixParamsMatch(container.segments, current, matrixParams)) return false;\n if (!container.children[PRIMARY_OUTLET]) return false;\n return containsSegmentGroupHelper(container.children[PRIMARY_OUTLET], containee, next, matrixParams);\n }\n}\nfunction matrixParamsMatch(containerPaths, containeePaths, options) {\n return containeePaths.every((containeeSegment, i) => {\n return paramCompareMap[options](containerPaths[i].parameters, containeeSegment.parameters);\n });\n}\n/**\n * @description\n *\n * Represents the parsed URL.\n *\n * Since a router state is a tree, and the URL is nothing but a serialized state, the URL is a\n * serialized tree.\n * UrlTree is a data structure that provides a lot of affordances in dealing with URLs\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * @Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const tree: UrlTree =\n * router.parseUrl('/team/33/(user/victor//support:help)?debug=true#fragment');\n * const f = tree.fragment; // return 'fragment'\n * const q = tree.queryParams; // returns {debug: 'true'}\n * const g: UrlSegmentGroup = tree.root.children[PRIMARY_OUTLET];\n * const s: UrlSegment[] = g.segments; // returns 2 segments 'team' and '33'\n * g.children[PRIMARY_OUTLET].segments; // returns 2 segments 'user' and 'victor'\n * g.children['support'].segments; // return 1 segment 'help'\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass UrlTree {\n constructor( /** The root segment group of the URL tree */\n root = new UrlSegmentGroup([], {}), /** The query params of the URL */\n queryParams = {}, /** The fragment of the URL */\n fragment = null) {\n this.root = root;\n this.queryParams = queryParams;\n this.fragment = fragment;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (root.segments.length > 0) {\n throw new ɵRuntimeError(4015 /* RuntimeErrorCode.INVALID_ROOT_URL_SEGMENT */, 'The root `UrlSegmentGroup` should not contain `segments`. ' + 'Instead, these segments belong in the `children` so they can be associated with a named outlet.');\n }\n }\n }\n get queryParamMap() {\n if (!this._queryParamMap) {\n this._queryParamMap = convertToParamMap(this.queryParams);\n }\n return this._queryParamMap;\n }\n /** @docsNotRequired */\n toString() {\n return DEFAULT_SERIALIZER.serialize(this);\n }\n}\n/**\n * @description\n *\n * Represents the parsed URL segment group.\n *\n * See `UrlTree` for more information.\n *\n * @publicApi\n */\nclass UrlSegmentGroup {\n constructor( /** The URL segments of this group. See `UrlSegment` for more information */\n segments, /** The list of children of this group */\n children) {\n this.segments = segments;\n this.children = children;\n /** The parent node in the url tree */\n this.parent = null;\n Object.values(children).forEach(v => v.parent = this);\n }\n /** Whether the segment has child segments */\n hasChildren() {\n return this.numberOfChildren > 0;\n }\n /** Number of child segments */\n get numberOfChildren() {\n return Object.keys(this.children).length;\n }\n /** @docsNotRequired */\n toString() {\n return serializePaths(this);\n }\n}\n/**\n * @description\n *\n * Represents a single URL segment.\n *\n * A UrlSegment is a part of a URL between the two slashes. It contains a path and the matrix\n * parameters associated with the segment.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * @Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const tree: UrlTree = router.parseUrl('/team;id=33');\n * const g: UrlSegmentGroup = tree.root.children[PRIMARY_OUTLET];\n * const s: UrlSegment[] = g.segments;\n * s[0].path; // returns 'team'\n * s[0].parameters; // returns {id: 33}\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass UrlSegment {\n constructor( /** The path part of a URL segment */\n path, /** The matrix parameters associated with a segment */\n parameters) {\n this.path = path;\n this.parameters = parameters;\n }\n get parameterMap() {\n if (!this._parameterMap) {\n this._parameterMap = convertToParamMap(this.parameters);\n }\n return this._parameterMap;\n }\n /** @docsNotRequired */\n toString() {\n return serializePath(this);\n }\n}\nfunction equalSegments(as, bs) {\n return equalPath(as, bs) && as.every((a, i) => shallowEqual(a.parameters, bs[i].parameters));\n}\nfunction equalPath(as, bs) {\n if (as.length !== bs.length) return false;\n return as.every((a, i) => a.path === bs[i].path);\n}\nfunction mapChildrenIntoArray(segment, fn) {\n let res = [];\n Object.entries(segment.children).forEach(([childOutlet, child]) => {\n if (childOutlet === PRIMARY_OUTLET) {\n res = res.concat(fn(child, childOutlet));\n }\n });\n Object.entries(segment.children).forEach(([childOutlet, child]) => {\n if (childOutlet !== PRIMARY_OUTLET) {\n res = res.concat(fn(child, childOutlet));\n }\n });\n return res;\n}\n/**\n * @description\n *\n * Serializes and deserializes a URL string into a URL tree.\n *\n * The url serialization strategy is customizable. You can\n * make all URLs case insensitive by providing a custom UrlSerializer.\n *\n * See `DefaultUrlSerializer` for an example of a URL serializer.\n *\n * @publicApi\n */\nclass UrlSerializer {\n static {\n this.ɵfac = function UrlSerializer_Factory(t) {\n return new (t || UrlSerializer)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: UrlSerializer,\n factory: () => (() => new DefaultUrlSerializer())(),\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(UrlSerializer, [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: () => new DefaultUrlSerializer()\n }]\n }], null, null);\n})();\n/**\n * @description\n *\n * A default implementation of the `UrlSerializer`.\n *\n * Example URLs:\n *\n * ```\n * /inbox/33(popup:compose)\n * /inbox/33;open=true/messages/44\n * ```\n *\n * DefaultUrlSerializer uses parentheses to serialize secondary segments (e.g., popup:compose), the\n * colon syntax to specify the outlet, and the ';parameter=value' syntax (e.g., open=true) to\n * specify route specific parameters.\n *\n * @publicApi\n */\nclass DefaultUrlSerializer {\n /** Parses a url into a `UrlTree` */\n parse(url) {\n const p = new UrlParser(url);\n return new UrlTree(p.parseRootSegment(), p.parseQueryParams(), p.parseFragment());\n }\n /** Converts a `UrlTree` into a url */\n serialize(tree) {\n const segment = `/${serializeSegment(tree.root, true)}`;\n const query = serializeQueryParams(tree.queryParams);\n const fragment = typeof tree.fragment === `string` ? `#${encodeUriFragment(tree.fragment)}` : '';\n return `${segment}${query}${fragment}`;\n }\n}\nconst DEFAULT_SERIALIZER = new DefaultUrlSerializer();\nfunction serializePaths(segment) {\n return segment.segments.map(p => serializePath(p)).join('/');\n}\nfunction serializeSegment(segment, root) {\n if (!segment.hasChildren()) {\n return serializePaths(segment);\n }\n if (root) {\n const primary = segment.children[PRIMARY_OUTLET] ? serializeSegment(segment.children[PRIMARY_OUTLET], false) : '';\n const children = [];\n Object.entries(segment.children).forEach(([k, v]) => {\n if (k !== PRIMARY_OUTLET) {\n children.push(`${k}:${serializeSegment(v, false)}`);\n }\n });\n return children.length > 0 ? `${primary}(${children.join('//')})` : primary;\n } else {\n const children = mapChildrenIntoArray(segment, (v, k) => {\n if (k === PRIMARY_OUTLET) {\n return [serializeSegment(segment.children[PRIMARY_OUTLET], false)];\n }\n return [`${k}:${serializeSegment(v, false)}`];\n });\n // use no parenthesis if the only child is a primary outlet route\n if (Object.keys(segment.children).length === 1 && segment.children[PRIMARY_OUTLET] != null) {\n return `${serializePaths(segment)}/${children[0]}`;\n }\n return `${serializePaths(segment)}/(${children.join('//')})`;\n }\n}\n/**\n * Encodes a URI string with the default encoding. This function will only ever be called from\n * `encodeUriQuery` or `encodeUriSegment` as it's the base set of encodings to be used. We need\n * a custom encoding because encodeURIComponent is too aggressive and encodes stuff that doesn't\n * have to be encoded per https://url.spec.whatwg.org.\n */\nfunction encodeUriString(s) {\n return encodeURIComponent(s).replace(/%40/g, '@').replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',');\n}\n/**\n * This function should be used to encode both keys and values in a query string key/value. In\n * the following URL, you need to call encodeUriQuery on \"k\" and \"v\":\n *\n * http://www.site.org/html;mk=mv?k=v#f\n */\nfunction encodeUriQuery(s) {\n return encodeUriString(s).replace(/%3B/gi, ';');\n}\n/**\n * This function should be used to encode a URL fragment. In the following URL, you need to call\n * encodeUriFragment on \"f\":\n *\n * http://www.site.org/html;mk=mv?k=v#f\n */\nfunction encodeUriFragment(s) {\n return encodeURI(s);\n}\n/**\n * This function should be run on any URI segment as well as the key and value in a key/value\n * pair for matrix params. In the following URL, you need to call encodeUriSegment on \"html\",\n * \"mk\", and \"mv\":\n *\n * http://www.site.org/html;mk=mv?k=v#f\n */\nfunction encodeUriSegment(s) {\n return encodeUriString(s).replace(/\\(/g, '%28').replace(/\\)/g, '%29').replace(/%26/gi, '&');\n}\nfunction decode(s) {\n return decodeURIComponent(s);\n}\n// Query keys/values should have the \"+\" replaced first, as \"+\" in a query string is \" \".\n// decodeURIComponent function will not decode \"+\" as a space.\nfunction decodeQuery(s) {\n return decode(s.replace(/\\+/g, '%20'));\n}\nfunction serializePath(path) {\n return `${encodeUriSegment(path.path)}${serializeMatrixParams(path.parameters)}`;\n}\nfunction serializeMatrixParams(params) {\n return Object.keys(params).map(key => `;${encodeUriSegment(key)}=${encodeUriSegment(params[key])}`).join('');\n}\nfunction serializeQueryParams(params) {\n const strParams = Object.keys(params).map(name => {\n const value = params[name];\n return Array.isArray(value) ? value.map(v => `${encodeUriQuery(name)}=${encodeUriQuery(v)}`).join('&') : `${encodeUriQuery(name)}=${encodeUriQuery(value)}`;\n }).filter(s => !!s);\n return strParams.length ? `?${strParams.join('&')}` : '';\n}\nconst SEGMENT_RE = /^[^\\/()?;#]+/;\nfunction matchSegments(str) {\n const match = str.match(SEGMENT_RE);\n return match ? match[0] : '';\n}\nconst MATRIX_PARAM_SEGMENT_RE = /^[^\\/()?;=#]+/;\nfunction matchMatrixKeySegments(str) {\n const match = str.match(MATRIX_PARAM_SEGMENT_RE);\n return match ? match[0] : '';\n}\nconst QUERY_PARAM_RE = /^[^=?&#]+/;\n// Return the name of the query param at the start of the string or an empty string\nfunction matchQueryParams(str) {\n const match = str.match(QUERY_PARAM_RE);\n return match ? match[0] : '';\n}\nconst QUERY_PARAM_VALUE_RE = /^[^&#]+/;\n// Return the value of the query param at the start of the string or an empty string\nfunction matchUrlQueryParamValue(str) {\n const match = str.match(QUERY_PARAM_VALUE_RE);\n return match ? match[0] : '';\n}\nclass UrlParser {\n constructor(url) {\n this.url = url;\n this.remaining = url;\n }\n parseRootSegment() {\n this.consumeOptional('/');\n if (this.remaining === '' || this.peekStartsWith('?') || this.peekStartsWith('#')) {\n return new UrlSegmentGroup([], {});\n }\n // The root segment group never has segments\n return new UrlSegmentGroup([], this.parseChildren());\n }\n parseQueryParams() {\n const params = {};\n if (this.consumeOptional('?')) {\n do {\n this.parseQueryParam(params);\n } while (this.consumeOptional('&'));\n }\n return params;\n }\n parseFragment() {\n return this.consumeOptional('#') ? decodeURIComponent(this.remaining) : null;\n }\n parseChildren() {\n if (this.remaining === '') {\n return {};\n }\n this.consumeOptional('/');\n const segments = [];\n if (!this.peekStartsWith('(')) {\n segments.push(this.parseSegment());\n }\n while (this.peekStartsWith('/') && !this.peekStartsWith('//') && !this.peekStartsWith('/(')) {\n this.capture('/');\n segments.push(this.parseSegment());\n }\n let children = {};\n if (this.peekStartsWith('/(')) {\n this.capture('/');\n children = this.parseParens(true);\n }\n let res = {};\n if (this.peekStartsWith('(')) {\n res = this.parseParens(false);\n }\n if (segments.length > 0 || Object.keys(children).length > 0) {\n res[PRIMARY_OUTLET] = new UrlSegmentGroup(segments, children);\n }\n return res;\n }\n // parse a segment with its matrix parameters\n // ie `name;k1=v1;k2`\n parseSegment() {\n const path = matchSegments(this.remaining);\n if (path === '' && this.peekStartsWith(';')) {\n throw new ɵRuntimeError(4009 /* RuntimeErrorCode.EMPTY_PATH_WITH_PARAMS */, (typeof ngDevMode === 'undefined' || ngDevMode) && `Empty path url segment cannot have parameters: '${this.remaining}'.`);\n }\n this.capture(path);\n return new UrlSegment(decode(path), this.parseMatrixParams());\n }\n parseMatrixParams() {\n const params = {};\n while (this.consumeOptional(';')) {\n this.parseParam(params);\n }\n return params;\n }\n parseParam(params) {\n const key = matchMatrixKeySegments(this.remaining);\n if (!key) {\n return;\n }\n this.capture(key);\n let value = '';\n if (this.consumeOptional('=')) {\n const valueMatch = matchSegments(this.remaining);\n if (valueMatch) {\n value = valueMatch;\n this.capture(value);\n }\n }\n params[decode(key)] = decode(value);\n }\n // Parse a single query parameter `name[=value]`\n parseQueryParam(params) {\n const key = matchQueryParams(this.remaining);\n if (!key) {\n return;\n }\n this.capture(key);\n let value = '';\n if (this.consumeOptional('=')) {\n const valueMatch = matchUrlQueryParamValue(this.remaining);\n if (valueMatch) {\n value = valueMatch;\n this.capture(value);\n }\n }\n const decodedKey = decodeQuery(key);\n const decodedVal = decodeQuery(value);\n if (params.hasOwnProperty(decodedKey)) {\n // Append to existing values\n let currentVal = params[decodedKey];\n if (!Array.isArray(currentVal)) {\n currentVal = [currentVal];\n params[decodedKey] = currentVal;\n }\n currentVal.push(decodedVal);\n } else {\n // Create a new value\n params[decodedKey] = decodedVal;\n }\n }\n // parse `(a/b//outlet_name:c/d)`\n parseParens(allowPrimary) {\n const segments = {};\n this.capture('(');\n while (!this.consumeOptional(')') && this.remaining.length > 0) {\n const path = matchSegments(this.remaining);\n const next = this.remaining[path.length];\n // if is is not one of these characters, then the segment was unescaped\n // or the group was not closed\n if (next !== '/' && next !== ')' && next !== ';') {\n throw new ɵRuntimeError(4010 /* RuntimeErrorCode.UNPARSABLE_URL */, (typeof ngDevMode === 'undefined' || ngDevMode) && `Cannot parse url '${this.url}'`);\n }\n let outletName = undefined;\n if (path.indexOf(':') > -1) {\n outletName = path.slice(0, path.indexOf(':'));\n this.capture(outletName);\n this.capture(':');\n } else if (allowPrimary) {\n outletName = PRIMARY_OUTLET;\n }\n const children = this.parseChildren();\n segments[outletName] = Object.keys(children).length === 1 ? children[PRIMARY_OUTLET] : new UrlSegmentGroup([], children);\n this.consumeOptional('//');\n }\n return segments;\n }\n peekStartsWith(str) {\n return this.remaining.startsWith(str);\n }\n // Consumes the prefix when it is present and returns whether it has been consumed\n consumeOptional(str) {\n if (this.peekStartsWith(str)) {\n this.remaining = this.remaining.substring(str.length);\n return true;\n }\n return false;\n }\n capture(str) {\n if (!this.consumeOptional(str)) {\n throw new ɵRuntimeError(4011 /* RuntimeErrorCode.UNEXPECTED_VALUE_IN_URL */, (typeof ngDevMode === 'undefined' || ngDevMode) && `Expected \"${str}\".`);\n }\n }\n}\nfunction createRoot(rootCandidate) {\n return rootCandidate.segments.length > 0 ? new UrlSegmentGroup([], {\n [PRIMARY_OUTLET]: rootCandidate\n }) : rootCandidate;\n}\n/**\n * Recursively\n * - merges primary segment children into their parents\n * - drops empty children (those which have no segments and no children themselves). This latter\n * prevents serializing a group into something like `/a(aux:)`, where `aux` is an empty child\n * segment.\n * - merges named outlets without a primary segment sibling into the children. This prevents\n * serializing a URL like `//(a:a)(b:b) instead of `/(a:a//b:b)` when the aux b route lives on the\n * root but the `a` route lives under an empty path primary route.\n */\nfunction squashSegmentGroup(segmentGroup) {\n const newChildren = {};\n for (const childOutlet of Object.keys(segmentGroup.children)) {\n const child = segmentGroup.children[childOutlet];\n const childCandidate = squashSegmentGroup(child);\n // moves named children in an empty path primary child into this group\n if (childOutlet === PRIMARY_OUTLET && childCandidate.segments.length === 0 && childCandidate.hasChildren()) {\n for (const [grandChildOutlet, grandChild] of Object.entries(childCandidate.children)) {\n newChildren[grandChildOutlet] = grandChild;\n }\n } // don't add empty children\n else if (childCandidate.segments.length > 0 || childCandidate.hasChildren()) {\n newChildren[childOutlet] = childCandidate;\n }\n }\n const s = new UrlSegmentGroup(segmentGroup.segments, newChildren);\n return mergeTrivialChildren(s);\n}\n/**\n * When possible, merges the primary outlet child into the parent `UrlSegmentGroup`.\n *\n * When a segment group has only one child which is a primary outlet, merges that child into the\n * parent. That is, the child segment group's segments are merged into the `s` and the child's\n * children become the children of `s`. Think of this like a 'squash', merging the child segment\n * group into the parent.\n */\nfunction mergeTrivialChildren(s) {\n if (s.numberOfChildren === 1 && s.children[PRIMARY_OUTLET]) {\n const c = s.children[PRIMARY_OUTLET];\n return new UrlSegmentGroup(s.segments.concat(c.segments), c.children);\n }\n return s;\n}\nfunction isUrlTree(v) {\n return v instanceof UrlTree;\n}\n\n/**\n * Creates a `UrlTree` relative to an `ActivatedRouteSnapshot`.\n *\n * @publicApi\n *\n *\n * @param relativeTo The `ActivatedRouteSnapshot` to apply the commands to\n * @param commands An array of URL fragments with which to construct the new URL tree.\n * If the path is static, can be the literal URL string. For a dynamic path, pass an array of path\n * segments, followed by the parameters for each segment.\n * The fragments are applied to the one provided in the `relativeTo` parameter.\n * @param queryParams The query parameters for the `UrlTree`. `null` if the `UrlTree` does not have\n * any query parameters.\n * @param fragment The fragment for the `UrlTree`. `null` if the `UrlTree` does not have a fragment.\n *\n * @usageNotes\n *\n * ```\n * // create /team/33/user/11\n * createUrlTreeFromSnapshot(snapshot, ['/team', 33, 'user', 11]);\n *\n * // create /team/33;expand=true/user/11\n * createUrlTreeFromSnapshot(snapshot, ['/team', 33, {expand: true}, 'user', 11]);\n *\n * // you can collapse static segments like this (this works only with the first passed-in value):\n * createUrlTreeFromSnapshot(snapshot, ['/team/33/user', userId]);\n *\n * // If the first segment can contain slashes, and you do not want the router to split it,\n * // you can do the following:\n * createUrlTreeFromSnapshot(snapshot, [{segmentPath: '/one/two'}]);\n *\n * // create /team/33/(user/11//right:chat)\n * createUrlTreeFromSnapshot(snapshot, ['/team', 33, {outlets: {primary: 'user/11', right:\n * 'chat'}}], null, null);\n *\n * // remove the right secondary node\n * createUrlTreeFromSnapshot(snapshot, ['/team', 33, {outlets: {primary: 'user/11', right: null}}]);\n *\n * // For the examples below, assume the current URL is for the `/team/33/user/11` and the\n * `ActivatedRouteSnapshot` points to `user/11`:\n *\n * // navigate to /team/33/user/11/details\n * createUrlTreeFromSnapshot(snapshot, ['details']);\n *\n * // navigate to /team/33/user/22\n * createUrlTreeFromSnapshot(snapshot, ['../22']);\n *\n * // navigate to /team/44/user/22\n * createUrlTreeFromSnapshot(snapshot, ['../../team/44/user/22']);\n * ```\n */\nfunction createUrlTreeFromSnapshot(relativeTo, commands, queryParams = null, fragment = null) {\n const relativeToUrlSegmentGroup = createSegmentGroupFromRoute(relativeTo);\n return createUrlTreeFromSegmentGroup(relativeToUrlSegmentGroup, commands, queryParams, fragment);\n}\nfunction createSegmentGroupFromRoute(route) {\n let targetGroup;\n function createSegmentGroupFromRouteRecursive(currentRoute) {\n const childOutlets = {};\n for (const childSnapshot of currentRoute.children) {\n const root = createSegmentGroupFromRouteRecursive(childSnapshot);\n childOutlets[childSnapshot.outlet] = root;\n }\n const segmentGroup = new UrlSegmentGroup(currentRoute.url, childOutlets);\n if (currentRoute === route) {\n targetGroup = segmentGroup;\n }\n return segmentGroup;\n }\n const rootCandidate = createSegmentGroupFromRouteRecursive(route.root);\n const rootSegmentGroup = createRoot(rootCandidate);\n return targetGroup ?? rootSegmentGroup;\n}\nfunction createUrlTreeFromSegmentGroup(relativeTo, commands, queryParams, fragment) {\n let root = relativeTo;\n while (root.parent) {\n root = root.parent;\n }\n // There are no commands so the `UrlTree` goes to the same path as the one created from the\n // `UrlSegmentGroup`. All we need to do is update the `queryParams` and `fragment` without\n // applying any other logic.\n if (commands.length === 0) {\n return tree(root, root, root, queryParams, fragment);\n }\n const nav = computeNavigation(commands);\n if (nav.toRoot()) {\n return tree(root, root, new UrlSegmentGroup([], {}), queryParams, fragment);\n }\n const position = findStartingPositionForTargetGroup(nav, root, relativeTo);\n const newSegmentGroup = position.processChildren ? updateSegmentGroupChildren(position.segmentGroup, position.index, nav.commands) : updateSegmentGroup(position.segmentGroup, position.index, nav.commands);\n return tree(root, position.segmentGroup, newSegmentGroup, queryParams, fragment);\n}\nfunction isMatrixParams(command) {\n return typeof command === 'object' && command != null && !command.outlets && !command.segmentPath;\n}\n/**\n * Determines if a given command has an `outlets` map. When we encounter a command\n * with an outlets k/v map, we need to apply each outlet individually to the existing segment.\n */\nfunction isCommandWithOutlets(command) {\n return typeof command === 'object' && command != null && command.outlets;\n}\nfunction tree(oldRoot, oldSegmentGroup, newSegmentGroup, queryParams, fragment) {\n let qp = {};\n if (queryParams) {\n Object.entries(queryParams).forEach(([name, value]) => {\n qp[name] = Array.isArray(value) ? value.map(v => `${v}`) : `${value}`;\n });\n }\n let rootCandidate;\n if (oldRoot === oldSegmentGroup) {\n rootCandidate = newSegmentGroup;\n } else {\n rootCandidate = replaceSegment(oldRoot, oldSegmentGroup, newSegmentGroup);\n }\n const newRoot = createRoot(squashSegmentGroup(rootCandidate));\n return new UrlTree(newRoot, qp, fragment);\n}\n/**\n * Replaces the `oldSegment` which is located in some child of the `current` with the `newSegment`.\n * This also has the effect of creating new `UrlSegmentGroup` copies to update references. This\n * shouldn't be necessary but the fallback logic for an invalid ActivatedRoute in the creation uses\n * the Router's current url tree. If we don't create new segment groups, we end up modifying that\n * value.\n */\nfunction replaceSegment(current, oldSegment, newSegment) {\n const children = {};\n Object.entries(current.children).forEach(([outletName, c]) => {\n if (c === oldSegment) {\n children[outletName] = newSegment;\n } else {\n children[outletName] = replaceSegment(c, oldSegment, newSegment);\n }\n });\n return new UrlSegmentGroup(current.segments, children);\n}\nclass Navigation {\n constructor(isAbsolute, numberOfDoubleDots, commands) {\n this.isAbsolute = isAbsolute;\n this.numberOfDoubleDots = numberOfDoubleDots;\n this.commands = commands;\n if (isAbsolute && commands.length > 0 && isMatrixParams(commands[0])) {\n throw new ɵRuntimeError(4003 /* RuntimeErrorCode.ROOT_SEGMENT_MATRIX_PARAMS */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Root segment cannot have matrix parameters');\n }\n const cmdWithOutlet = commands.find(isCommandWithOutlets);\n if (cmdWithOutlet && cmdWithOutlet !== last(commands)) {\n throw new ɵRuntimeError(4004 /* RuntimeErrorCode.MISPLACED_OUTLETS_COMMAND */, (typeof ngDevMode === 'undefined' || ngDevMode) && '{outlets:{}} has to be the last command');\n }\n }\n toRoot() {\n return this.isAbsolute && this.commands.length === 1 && this.commands[0] == '/';\n }\n}\n/** Transforms commands to a normalized `Navigation` */\nfunction computeNavigation(commands) {\n if (typeof commands[0] === 'string' && commands.length === 1 && commands[0] === '/') {\n return new Navigation(true, 0, commands);\n }\n let numberOfDoubleDots = 0;\n let isAbsolute = false;\n const res = commands.reduce((res, cmd, cmdIdx) => {\n if (typeof cmd === 'object' && cmd != null) {\n if (cmd.outlets) {\n const outlets = {};\n Object.entries(cmd.outlets).forEach(([name, commands]) => {\n outlets[name] = typeof commands === 'string' ? commands.split('/') : commands;\n });\n return [...res, {\n outlets\n }];\n }\n if (cmd.segmentPath) {\n return [...res, cmd.segmentPath];\n }\n }\n if (!(typeof cmd === 'string')) {\n return [...res, cmd];\n }\n if (cmdIdx === 0) {\n cmd.split('/').forEach((urlPart, partIndex) => {\n if (partIndex == 0 && urlPart === '.') {\n // skip './a'\n } else if (partIndex == 0 && urlPart === '') {\n // '/a'\n isAbsolute = true;\n } else if (urlPart === '..') {\n // '../a'\n numberOfDoubleDots++;\n } else if (urlPart != '') {\n res.push(urlPart);\n }\n });\n return res;\n }\n return [...res, cmd];\n }, []);\n return new Navigation(isAbsolute, numberOfDoubleDots, res);\n}\nclass Position {\n constructor(segmentGroup, processChildren, index) {\n this.segmentGroup = segmentGroup;\n this.processChildren = processChildren;\n this.index = index;\n }\n}\nfunction findStartingPositionForTargetGroup(nav, root, target) {\n if (nav.isAbsolute) {\n return new Position(root, true, 0);\n }\n if (!target) {\n // `NaN` is used only to maintain backwards compatibility with incorrectly mocked\n // `ActivatedRouteSnapshot` in tests. In prior versions of this code, the position here was\n // determined based on an internal property that was rarely mocked, resulting in `NaN`. In\n // reality, this code path should _never_ be touched since `target` is not allowed to be falsey.\n return new Position(root, false, NaN);\n }\n if (target.parent === null) {\n return new Position(target, true, 0);\n }\n const modifier = isMatrixParams(nav.commands[0]) ? 0 : 1;\n const index = target.segments.length - 1 + modifier;\n return createPositionApplyingDoubleDots(target, index, nav.numberOfDoubleDots);\n}\nfunction createPositionApplyingDoubleDots(group, index, numberOfDoubleDots) {\n let g = group;\n let ci = index;\n let dd = numberOfDoubleDots;\n while (dd > ci) {\n dd -= ci;\n g = g.parent;\n if (!g) {\n throw new ɵRuntimeError(4005 /* RuntimeErrorCode.INVALID_DOUBLE_DOTS */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Invalid number of \\'../\\'');\n }\n ci = g.segments.length;\n }\n return new Position(g, false, ci - dd);\n}\nfunction getOutlets(commands) {\n if (isCommandWithOutlets(commands[0])) {\n return commands[0].outlets;\n }\n return {\n [PRIMARY_OUTLET]: commands\n };\n}\nfunction updateSegmentGroup(segmentGroup, startIndex, commands) {\n if (!segmentGroup) {\n segmentGroup = new UrlSegmentGroup([], {});\n }\n if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) {\n return updateSegmentGroupChildren(segmentGroup, startIndex, commands);\n }\n const m = prefixedWith(segmentGroup, startIndex, commands);\n const slicedCommands = commands.slice(m.commandIndex);\n if (m.match && m.pathIndex < segmentGroup.segments.length) {\n const g = new UrlSegmentGroup(segmentGroup.segments.slice(0, m.pathIndex), {});\n g.children[PRIMARY_OUTLET] = new UrlSegmentGroup(segmentGroup.segments.slice(m.pathIndex), segmentGroup.children);\n return updateSegmentGroupChildren(g, 0, slicedCommands);\n } else if (m.match && slicedCommands.length === 0) {\n return new UrlSegmentGroup(segmentGroup.segments, {});\n } else if (m.match && !segmentGroup.hasChildren()) {\n return createNewSegmentGroup(segmentGroup, startIndex, commands);\n } else if (m.match) {\n return updateSegmentGroupChildren(segmentGroup, 0, slicedCommands);\n } else {\n return createNewSegmentGroup(segmentGroup, startIndex, commands);\n }\n}\nfunction updateSegmentGroupChildren(segmentGroup, startIndex, commands) {\n if (commands.length === 0) {\n return new UrlSegmentGroup(segmentGroup.segments, {});\n } else {\n const outlets = getOutlets(commands);\n const children = {};\n // If the set of commands applies to anything other than the primary outlet and the child\n // segment is an empty path primary segment on its own, we want to apply the commands to the\n // empty child path rather than here. The outcome is that the empty primary child is effectively\n // removed from the final output UrlTree. Imagine the following config:\n //\n // {path: '', children: [{path: '**', outlet: 'popup'}]}.\n //\n // Navigation to /(popup:a) will activate the child outlet correctly Given a follow-up\n // navigation with commands\n // ['/', {outlets: {'popup': 'b'}}], we _would not_ want to apply the outlet commands to the\n // root segment because that would result in\n // //(popup:a)(popup:b) since the outlet command got applied one level above where it appears in\n // the `ActivatedRoute` rather than updating the existing one.\n //\n // Because empty paths do not appear in the URL segments and the fact that the segments used in\n // the output `UrlTree` are squashed to eliminate these empty paths where possible\n // https://github.com/angular/angular/blob/13f10de40e25c6900ca55bd83b36bd533dacfa9e/packages/router/src/url_tree.ts#L755\n // it can be hard to determine what is the right thing to do when applying commands to a\n // `UrlSegmentGroup` that is created from an \"unsquashed\"/expanded `ActivatedRoute` tree.\n // This code effectively \"squashes\" empty path primary routes when they have no siblings on\n // the same level of the tree.\n if (Object.keys(outlets).some(o => o !== PRIMARY_OUTLET) && segmentGroup.children[PRIMARY_OUTLET] && segmentGroup.numberOfChildren === 1 && segmentGroup.children[PRIMARY_OUTLET].segments.length === 0) {\n const childrenOfEmptyChild = updateSegmentGroupChildren(segmentGroup.children[PRIMARY_OUTLET], startIndex, commands);\n return new UrlSegmentGroup(segmentGroup.segments, childrenOfEmptyChild.children);\n }\n Object.entries(outlets).forEach(([outlet, commands]) => {\n if (typeof commands === 'string') {\n commands = [commands];\n }\n if (commands !== null) {\n children[outlet] = updateSegmentGroup(segmentGroup.children[outlet], startIndex, commands);\n }\n });\n Object.entries(segmentGroup.children).forEach(([childOutlet, child]) => {\n if (outlets[childOutlet] === undefined) {\n children[childOutlet] = child;\n }\n });\n return new UrlSegmentGroup(segmentGroup.segments, children);\n }\n}\nfunction prefixedWith(segmentGroup, startIndex, commands) {\n let currentCommandIndex = 0;\n let currentPathIndex = startIndex;\n const noMatch = {\n match: false,\n pathIndex: 0,\n commandIndex: 0\n };\n while (currentPathIndex < segmentGroup.segments.length) {\n if (currentCommandIndex >= commands.length) return noMatch;\n const path = segmentGroup.segments[currentPathIndex];\n const command = commands[currentCommandIndex];\n // Do not try to consume command as part of the prefixing if it has outlets because it can\n // contain outlets other than the one being processed. Consuming the outlets command would\n // result in other outlets being ignored.\n if (isCommandWithOutlets(command)) {\n break;\n }\n const curr = `${command}`;\n const next = currentCommandIndex < commands.length - 1 ? commands[currentCommandIndex + 1] : null;\n if (currentPathIndex > 0 && curr === undefined) break;\n if (curr && next && typeof next === 'object' && next.outlets === undefined) {\n if (!compare(curr, next, path)) return noMatch;\n currentCommandIndex += 2;\n } else {\n if (!compare(curr, {}, path)) return noMatch;\n currentCommandIndex++;\n }\n currentPathIndex++;\n }\n return {\n match: true,\n pathIndex: currentPathIndex,\n commandIndex: currentCommandIndex\n };\n}\nfunction createNewSegmentGroup(segmentGroup, startIndex, commands) {\n const paths = segmentGroup.segments.slice(0, startIndex);\n let i = 0;\n while (i < commands.length) {\n const command = commands[i];\n if (isCommandWithOutlets(command)) {\n const children = createNewSegmentChildren(command.outlets);\n return new UrlSegmentGroup(paths, children);\n }\n // if we start with an object literal, we need to reuse the path part from the segment\n if (i === 0 && isMatrixParams(commands[0])) {\n const p = segmentGroup.segments[startIndex];\n paths.push(new UrlSegment(p.path, stringify(commands[0])));\n i++;\n continue;\n }\n const curr = isCommandWithOutlets(command) ? command.outlets[PRIMARY_OUTLET] : `${command}`;\n const next = i < commands.length - 1 ? commands[i + 1] : null;\n if (curr && next && isMatrixParams(next)) {\n paths.push(new UrlSegment(curr, stringify(next)));\n i += 2;\n } else {\n paths.push(new UrlSegment(curr, {}));\n i++;\n }\n }\n return new UrlSegmentGroup(paths, {});\n}\nfunction createNewSegmentChildren(outlets) {\n const children = {};\n Object.entries(outlets).forEach(([outlet, commands]) => {\n if (typeof commands === 'string') {\n commands = [commands];\n }\n if (commands !== null) {\n children[outlet] = createNewSegmentGroup(new UrlSegmentGroup([], {}), 0, commands);\n }\n });\n return children;\n}\nfunction stringify(params) {\n const res = {};\n Object.entries(params).forEach(([k, v]) => res[k] = `${v}`);\n return res;\n}\nfunction compare(path, params, segment) {\n return path == segment.path && shallowEqual(params, segment.parameters);\n}\nconst IMPERATIVE_NAVIGATION = 'imperative';\n/**\n * Base for events the router goes through, as opposed to events tied to a specific\n * route. Fired one time for any given navigation.\n *\n * The following code shows how a class subscribes to router events.\n *\n * ```ts\n * import {Event, RouterEvent, Router} from '@angular/router';\n *\n * class MyService {\n * constructor(public router: Router) {\n * router.events.pipe(\n * filter((e: Event | RouterEvent): e is RouterEvent => e instanceof RouterEvent)\n * ).subscribe((e: RouterEvent) => {\n * // Do something\n * });\n * }\n * }\n * ```\n *\n * @see {@link Event}\n * @see [Router events summary](guide/router-reference#router-events)\n * @publicApi\n */\nclass RouterEvent {\n constructor( /** A unique ID that the router assigns to every router navigation. */\n id, /** The URL that is the destination for this navigation. */\n url) {\n this.id = id;\n this.url = url;\n }\n}\n/**\n * An event triggered when a navigation starts.\n *\n * @publicApi\n */\nclass NavigationStart extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url, /** @docsNotRequired */\n navigationTrigger = 'imperative', /** @docsNotRequired */\n restoredState = null) {\n super(id, url);\n this.type = 0 /* EventType.NavigationStart */;\n this.navigationTrigger = navigationTrigger;\n this.restoredState = restoredState;\n }\n /** @docsNotRequired */\n toString() {\n return `NavigationStart(id: ${this.id}, url: '${this.url}')`;\n }\n}\n/**\n * An event triggered when a navigation ends successfully.\n *\n * @see {@link NavigationStart}\n * @see {@link NavigationCancel}\n * @see {@link NavigationError}\n *\n * @publicApi\n */\nclass NavigationEnd extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url, /** @docsNotRequired */\n urlAfterRedirects) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.type = 1 /* EventType.NavigationEnd */;\n }\n /** @docsNotRequired */\n toString() {\n return `NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`;\n }\n}\n/**\n * An event triggered when a navigation is canceled, directly or indirectly.\n * This can happen for several reasons including when a route guard\n * returns `false` or initiates a redirect by returning a `UrlTree`.\n *\n * @see {@link NavigationStart}\n * @see {@link NavigationEnd}\n * @see {@link NavigationError}\n *\n * @publicApi\n */\nclass NavigationCancel extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url,\n /**\n * A description of why the navigation was cancelled. For debug purposes only. Use `code`\n * instead for a stable cancellation reason that can be used in production.\n */\n reason,\n /**\n * A code to indicate why the navigation was canceled. This cancellation code is stable for\n * the reason and can be relied on whereas the `reason` string could change and should not be\n * used in production.\n */\n code) {\n super(id, url);\n this.reason = reason;\n this.code = code;\n this.type = 2 /* EventType.NavigationCancel */;\n }\n /** @docsNotRequired */\n toString() {\n return `NavigationCancel(id: ${this.id}, url: '${this.url}')`;\n }\n}\n/**\n * An event triggered when a navigation is skipped.\n * This can happen for a couple reasons including onSameUrlHandling\n * is set to `ignore` and the navigation URL is not different than the\n * current state.\n *\n * @publicApi\n */\nclass NavigationSkipped extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url,\n /**\n * A description of why the navigation was skipped. For debug purposes only. Use `code`\n * instead for a stable skipped reason that can be used in production.\n */\n reason,\n /**\n * A code to indicate why the navigation was skipped. This code is stable for\n * the reason and can be relied on whereas the `reason` string could change and should not be\n * used in production.\n */\n code) {\n super(id, url);\n this.reason = reason;\n this.code = code;\n this.type = 16 /* EventType.NavigationSkipped */;\n }\n}\n/**\n * An event triggered when a navigation fails due to an unexpected error.\n *\n * @see {@link NavigationStart}\n * @see {@link NavigationEnd}\n * @see {@link NavigationCancel}\n *\n * @publicApi\n */\nclass NavigationError extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url, /** @docsNotRequired */\n error,\n /**\n * The target of the navigation when the error occurred.\n *\n * Note that this can be `undefined` because an error could have occurred before the\n * `RouterStateSnapshot` was created for the navigation.\n */\n target) {\n super(id, url);\n this.error = error;\n this.target = target;\n this.type = 3 /* EventType.NavigationError */;\n }\n /** @docsNotRequired */\n toString() {\n return `NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`;\n }\n}\n/**\n * An event triggered when routes are recognized.\n *\n * @publicApi\n */\nclass RoutesRecognized extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url, /** @docsNotRequired */\n urlAfterRedirects, /** @docsNotRequired */\n state) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n this.type = 4 /* EventType.RoutesRecognized */;\n }\n /** @docsNotRequired */\n toString() {\n return `RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;\n }\n}\n/**\n * An event triggered at the start of the Guard phase of routing.\n *\n * @see {@link GuardsCheckEnd}\n *\n * @publicApi\n */\nclass GuardsCheckStart extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url, /** @docsNotRequired */\n urlAfterRedirects, /** @docsNotRequired */\n state) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n this.type = 7 /* EventType.GuardsCheckStart */;\n }\n\n toString() {\n return `GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;\n }\n}\n/**\n * An event triggered at the end of the Guard phase of routing.\n *\n * @see {@link GuardsCheckStart}\n *\n * @publicApi\n */\nclass GuardsCheckEnd extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url, /** @docsNotRequired */\n urlAfterRedirects, /** @docsNotRequired */\n state, /** @docsNotRequired */\n shouldActivate) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n this.shouldActivate = shouldActivate;\n this.type = 8 /* EventType.GuardsCheckEnd */;\n }\n\n toString() {\n return `GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`;\n }\n}\n/**\n * An event triggered at the start of the Resolve phase of routing.\n *\n * Runs in the \"resolve\" phase whether or not there is anything to resolve.\n * In future, may change to only run when there are things to be resolved.\n *\n * @see {@link ResolveEnd}\n *\n * @publicApi\n */\nclass ResolveStart extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url, /** @docsNotRequired */\n urlAfterRedirects, /** @docsNotRequired */\n state) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n this.type = 5 /* EventType.ResolveStart */;\n }\n\n toString() {\n return `ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;\n }\n}\n/**\n * An event triggered at the end of the Resolve phase of routing.\n * @see {@link ResolveStart}\n *\n * @publicApi\n */\nclass ResolveEnd extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url, /** @docsNotRequired */\n urlAfterRedirects, /** @docsNotRequired */\n state) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n this.type = 6 /* EventType.ResolveEnd */;\n }\n\n toString() {\n return `ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;\n }\n}\n/**\n * An event triggered before lazy loading a route configuration.\n *\n * @see {@link RouteConfigLoadEnd}\n *\n * @publicApi\n */\nclass RouteConfigLoadStart {\n constructor( /** @docsNotRequired */\n route) {\n this.route = route;\n this.type = 9 /* EventType.RouteConfigLoadStart */;\n }\n\n toString() {\n return `RouteConfigLoadStart(path: ${this.route.path})`;\n }\n}\n/**\n * An event triggered when a route has been lazy loaded.\n *\n * @see {@link RouteConfigLoadStart}\n *\n * @publicApi\n */\nclass RouteConfigLoadEnd {\n constructor( /** @docsNotRequired */\n route) {\n this.route = route;\n this.type = 10 /* EventType.RouteConfigLoadEnd */;\n }\n\n toString() {\n return `RouteConfigLoadEnd(path: ${this.route.path})`;\n }\n}\n/**\n * An event triggered at the start of the child-activation\n * part of the Resolve phase of routing.\n * @see {@link ChildActivationEnd}\n * @see {@link ResolveStart}\n *\n * @publicApi\n */\nclass ChildActivationStart {\n constructor( /** @docsNotRequired */\n snapshot) {\n this.snapshot = snapshot;\n this.type = 11 /* EventType.ChildActivationStart */;\n }\n\n toString() {\n const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return `ChildActivationStart(path: '${path}')`;\n }\n}\n/**\n * An event triggered at the end of the child-activation part\n * of the Resolve phase of routing.\n * @see {@link ChildActivationStart}\n * @see {@link ResolveStart}\n * @publicApi\n */\nclass ChildActivationEnd {\n constructor( /** @docsNotRequired */\n snapshot) {\n this.snapshot = snapshot;\n this.type = 12 /* EventType.ChildActivationEnd */;\n }\n\n toString() {\n const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return `ChildActivationEnd(path: '${path}')`;\n }\n}\n/**\n * An event triggered at the start of the activation part\n * of the Resolve phase of routing.\n * @see {@link ActivationEnd}\n * @see {@link ResolveStart}\n *\n * @publicApi\n */\nclass ActivationStart {\n constructor( /** @docsNotRequired */\n snapshot) {\n this.snapshot = snapshot;\n this.type = 13 /* EventType.ActivationStart */;\n }\n\n toString() {\n const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return `ActivationStart(path: '${path}')`;\n }\n}\n/**\n * An event triggered at the end of the activation part\n * of the Resolve phase of routing.\n * @see {@link ActivationStart}\n * @see {@link ResolveStart}\n *\n * @publicApi\n */\nclass ActivationEnd {\n constructor( /** @docsNotRequired */\n snapshot) {\n this.snapshot = snapshot;\n this.type = 14 /* EventType.ActivationEnd */;\n }\n\n toString() {\n const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return `ActivationEnd(path: '${path}')`;\n }\n}\n/**\n * An event triggered by scrolling.\n *\n * @publicApi\n */\nclass Scroll {\n constructor( /** @docsNotRequired */\n routerEvent, /** @docsNotRequired */\n position, /** @docsNotRequired */\n anchor) {\n this.routerEvent = routerEvent;\n this.position = position;\n this.anchor = anchor;\n this.type = 15 /* EventType.Scroll */;\n }\n\n toString() {\n const pos = this.position ? `${this.position[0]}, ${this.position[1]}` : null;\n return `Scroll(anchor: '${this.anchor}', position: '${pos}')`;\n }\n}\nclass BeforeActivateRoutes {}\nclass RedirectRequest {\n constructor(url) {\n this.url = url;\n }\n}\nfunction stringifyEvent(routerEvent) {\n switch (routerEvent.type) {\n case 14 /* EventType.ActivationEnd */:\n return `ActivationEnd(path: '${routerEvent.snapshot.routeConfig?.path || ''}')`;\n case 13 /* EventType.ActivationStart */:\n return `ActivationStart(path: '${routerEvent.snapshot.routeConfig?.path || ''}')`;\n case 12 /* EventType.ChildActivationEnd */:\n return `ChildActivationEnd(path: '${routerEvent.snapshot.routeConfig?.path || ''}')`;\n case 11 /* EventType.ChildActivationStart */:\n return `ChildActivationStart(path: '${routerEvent.snapshot.routeConfig?.path || ''}')`;\n case 8 /* EventType.GuardsCheckEnd */:\n return `GuardsCheckEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state}, shouldActivate: ${routerEvent.shouldActivate})`;\n case 7 /* EventType.GuardsCheckStart */:\n return `GuardsCheckStart(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`;\n case 2 /* EventType.NavigationCancel */:\n return `NavigationCancel(id: ${routerEvent.id}, url: '${routerEvent.url}')`;\n case 16 /* EventType.NavigationSkipped */:\n return `NavigationSkipped(id: ${routerEvent.id}, url: '${routerEvent.url}')`;\n case 1 /* EventType.NavigationEnd */:\n return `NavigationEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}')`;\n case 3 /* EventType.NavigationError */:\n return `NavigationError(id: ${routerEvent.id}, url: '${routerEvent.url}', error: ${routerEvent.error})`;\n case 0 /* EventType.NavigationStart */:\n return `NavigationStart(id: ${routerEvent.id}, url: '${routerEvent.url}')`;\n case 6 /* EventType.ResolveEnd */:\n return `ResolveEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`;\n case 5 /* EventType.ResolveStart */:\n return `ResolveStart(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`;\n case 10 /* EventType.RouteConfigLoadEnd */:\n return `RouteConfigLoadEnd(path: ${routerEvent.route.path})`;\n case 9 /* EventType.RouteConfigLoadStart */:\n return `RouteConfigLoadStart(path: ${routerEvent.route.path})`;\n case 4 /* EventType.RoutesRecognized */:\n return `RoutesRecognized(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`;\n case 15 /* EventType.Scroll */:\n const pos = routerEvent.position ? `${routerEvent.position[0]}, ${routerEvent.position[1]}` : null;\n return `Scroll(anchor: '${routerEvent.anchor}', position: '${pos}')`;\n }\n}\n\n/**\n * Store contextual information about a `RouterOutlet`\n *\n * @publicApi\n */\nclass OutletContext {\n constructor() {\n this.outlet = null;\n this.route = null;\n this.injector = null;\n this.children = new ChildrenOutletContexts();\n this.attachRef = null;\n }\n}\n/**\n * Store contextual information about the children (= nested) `RouterOutlet`\n *\n * @publicApi\n */\nclass ChildrenOutletContexts {\n constructor() {\n // contexts for child outlets, by name.\n this.contexts = new Map();\n }\n /** Called when a `RouterOutlet` directive is instantiated */\n onChildOutletCreated(childName, outlet) {\n const context = this.getOrCreateContext(childName);\n context.outlet = outlet;\n this.contexts.set(childName, context);\n }\n /**\n * Called when a `RouterOutlet` directive is destroyed.\n * We need to keep the context as the outlet could be destroyed inside a NgIf and might be\n * re-created later.\n */\n onChildOutletDestroyed(childName) {\n const context = this.getContext(childName);\n if (context) {\n context.outlet = null;\n context.attachRef = null;\n }\n }\n /**\n * Called when the corresponding route is deactivated during navigation.\n * Because the component get destroyed, all children outlet are destroyed.\n */\n onOutletDeactivated() {\n const contexts = this.contexts;\n this.contexts = new Map();\n return contexts;\n }\n onOutletReAttached(contexts) {\n this.contexts = contexts;\n }\n getOrCreateContext(childName) {\n let context = this.getContext(childName);\n if (!context) {\n context = new OutletContext();\n this.contexts.set(childName, context);\n }\n return context;\n }\n getContext(childName) {\n return this.contexts.get(childName) || null;\n }\n static {\n this.ɵfac = function ChildrenOutletContexts_Factory(t) {\n return new (t || ChildrenOutletContexts)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ChildrenOutletContexts,\n factory: ChildrenOutletContexts.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ChildrenOutletContexts, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\nclass Tree {\n constructor(root) {\n this._root = root;\n }\n get root() {\n return this._root.value;\n }\n /**\n * @internal\n */\n parent(t) {\n const p = this.pathFromRoot(t);\n return p.length > 1 ? p[p.length - 2] : null;\n }\n /**\n * @internal\n */\n children(t) {\n const n = findNode(t, this._root);\n return n ? n.children.map(t => t.value) : [];\n }\n /**\n * @internal\n */\n firstChild(t) {\n const n = findNode(t, this._root);\n return n && n.children.length > 0 ? n.children[0].value : null;\n }\n /**\n * @internal\n */\n siblings(t) {\n const p = findPath(t, this._root);\n if (p.length < 2) return [];\n const c = p[p.length - 2].children.map(c => c.value);\n return c.filter(cc => cc !== t);\n }\n /**\n * @internal\n */\n pathFromRoot(t) {\n return findPath(t, this._root).map(s => s.value);\n }\n}\n// DFS for the node matching the value\nfunction findNode(value, node) {\n if (value === node.value) return node;\n for (const child of node.children) {\n const node = findNode(value, child);\n if (node) return node;\n }\n return null;\n}\n// Return the path to the node with the given value using DFS\nfunction findPath(value, node) {\n if (value === node.value) return [node];\n for (const child of node.children) {\n const path = findPath(value, child);\n if (path.length) {\n path.unshift(node);\n return path;\n }\n }\n return [];\n}\nclass TreeNode {\n constructor(value, children) {\n this.value = value;\n this.children = children;\n }\n toString() {\n return `TreeNode(${this.value})`;\n }\n}\n// Return the list of T indexed by outlet name\nfunction nodeChildrenAsMap(node) {\n const map = {};\n if (node) {\n node.children.forEach(child => map[child.value.outlet] = child);\n }\n return map;\n}\n\n/**\n * Represents the state of the router as a tree of activated routes.\n *\n * @usageNotes\n *\n * Every node in the route tree is an `ActivatedRoute` instance\n * that knows about the \"consumed\" URL segments, the extracted parameters,\n * and the resolved data.\n * Use the `ActivatedRoute` properties to traverse the tree from any node.\n *\n * The following fragment shows how a component gets the root node\n * of the current state to establish its own route tree:\n *\n * ```\n * @Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const state: RouterState = router.routerState;\n * const root: ActivatedRoute = state.root;\n * const child = root.firstChild;\n * const id: Observable = child.params.map(p => p.id);\n * //...\n * }\n * }\n * ```\n *\n * @see {@link ActivatedRoute}\n * @see [Getting route information](guide/router#getting-route-information)\n *\n * @publicApi\n */\nclass RouterState extends Tree {\n /** @internal */\n constructor(root, /** The current snapshot of the router state */\n snapshot) {\n super(root);\n this.snapshot = snapshot;\n setRouterState(this, root);\n }\n toString() {\n return this.snapshot.toString();\n }\n}\nfunction createEmptyState(urlTree, rootComponent) {\n const snapshot = createEmptyStateSnapshot(urlTree, rootComponent);\n const emptyUrl = new BehaviorSubject([new UrlSegment('', {})]);\n const emptyParams = new BehaviorSubject({});\n const emptyData = new BehaviorSubject({});\n const emptyQueryParams = new BehaviorSubject({});\n const fragment = new BehaviorSubject('');\n const activated = new ActivatedRoute(emptyUrl, emptyParams, emptyQueryParams, fragment, emptyData, PRIMARY_OUTLET, rootComponent, snapshot.root);\n activated.snapshot = snapshot.root;\n return new RouterState(new TreeNode(activated, []), snapshot);\n}\nfunction createEmptyStateSnapshot(urlTree, rootComponent) {\n const emptyParams = {};\n const emptyData = {};\n const emptyQueryParams = {};\n const fragment = '';\n const activated = new ActivatedRouteSnapshot([], emptyParams, emptyQueryParams, fragment, emptyData, PRIMARY_OUTLET, rootComponent, null, {});\n return new RouterStateSnapshot('', new TreeNode(activated, []));\n}\n/**\n * Provides access to information about a route associated with a component\n * that is loaded in an outlet.\n * Use to traverse the `RouterState` tree and extract information from nodes.\n *\n * The following example shows how to construct a component using information from a\n * currently activated route.\n *\n * Note: the observables in this class only emit when the current and previous values differ based\n * on shallow equality. For example, changing deeply nested properties in resolved `data` will not\n * cause the `ActivatedRoute.data` `Observable` to emit a new value.\n *\n * {@example router/activated-route/module.ts region=\"activated-route\"\n * header=\"activated-route.component.ts\"}\n *\n * @see [Getting route information](guide/router#getting-route-information)\n *\n * @publicApi\n */\nclass ActivatedRoute {\n /** @internal */\n constructor( /** @internal */\n urlSubject, /** @internal */\n paramsSubject, /** @internal */\n queryParamsSubject, /** @internal */\n fragmentSubject, /** @internal */\n dataSubject, /** The outlet name of the route, a constant. */\n outlet, /** The component of the route, a constant. */\n component, futureSnapshot) {\n this.urlSubject = urlSubject;\n this.paramsSubject = paramsSubject;\n this.queryParamsSubject = queryParamsSubject;\n this.fragmentSubject = fragmentSubject;\n this.dataSubject = dataSubject;\n this.outlet = outlet;\n this.component = component;\n this._futureSnapshot = futureSnapshot;\n this.title = this.dataSubject?.pipe(map(d => d[RouteTitleKey])) ?? of(undefined);\n // TODO(atscott): Verify that these can be changed to `.asObservable()` with TGP.\n this.url = urlSubject;\n this.params = paramsSubject;\n this.queryParams = queryParamsSubject;\n this.fragment = fragmentSubject;\n this.data = dataSubject;\n }\n /** The configuration used to match this route. */\n get routeConfig() {\n return this._futureSnapshot.routeConfig;\n }\n /** The root of the router state. */\n get root() {\n return this._routerState.root;\n }\n /** The parent of this route in the router state tree. */\n get parent() {\n return this._routerState.parent(this);\n }\n /** The first child of this route in the router state tree. */\n get firstChild() {\n return this._routerState.firstChild(this);\n }\n /** The children of this route in the router state tree. */\n get children() {\n return this._routerState.children(this);\n }\n /** The path from the root of the router state tree to this route. */\n get pathFromRoot() {\n return this._routerState.pathFromRoot(this);\n }\n /**\n * An Observable that contains a map of the required and optional parameters\n * specific to the route.\n * The map supports retrieving single and multiple values from the same parameter.\n */\n get paramMap() {\n if (!this._paramMap) {\n this._paramMap = this.params.pipe(map(p => convertToParamMap(p)));\n }\n return this._paramMap;\n }\n /**\n * An Observable that contains a map of the query parameters available to all routes.\n * The map supports retrieving single and multiple values from the query parameter.\n */\n get queryParamMap() {\n if (!this._queryParamMap) {\n this._queryParamMap = this.queryParams.pipe(map(p => convertToParamMap(p)));\n }\n return this._queryParamMap;\n }\n toString() {\n return this.snapshot ? this.snapshot.toString() : `Future(${this._futureSnapshot})`;\n }\n}\n/**\n * Returns the inherited params, data, and resolve for a given route.\n *\n * By default, we do not inherit parent data unless the current route is path-less or the parent\n * route is component-less.\n */\nfunction getInherited(route, parent, paramsInheritanceStrategy = 'emptyOnly') {\n let inherited;\n const {\n routeConfig\n } = route;\n if (parent !== null && (paramsInheritanceStrategy === 'always' ||\n // inherit parent data if route is empty path\n routeConfig?.path === '' ||\n // inherit parent data if parent was componentless\n !parent.component && !parent.routeConfig?.loadComponent)) {\n inherited = {\n params: {\n ...parent.params,\n ...route.params\n },\n data: {\n ...parent.data,\n ...route.data\n },\n resolve: {\n // Snapshots are created with data inherited from parent and guards (i.e. canActivate) can\n // change data because it's not frozen...\n // This first line could be deleted chose to break/disallow mutating the `data` object in\n // guards.\n // Note that data from parents still override this mutated data so anyone relying on this\n // might be surprised that it doesn't work if parent data is inherited but otherwise does.\n ...route.data,\n // Ensure inherited resolved data overrides inherited static data\n ...parent.data,\n // static data from the current route overrides any inherited data\n ...routeConfig?.data,\n // resolved data from current route overrides everything\n ...route._resolvedData\n }\n };\n } else {\n inherited = {\n params: route.params,\n data: route.data,\n resolve: {\n ...route.data,\n ...(route._resolvedData ?? {})\n }\n };\n }\n if (routeConfig && hasStaticTitle(routeConfig)) {\n inherited.resolve[RouteTitleKey] = routeConfig.title;\n }\n return inherited;\n}\n/**\n * @description\n *\n * Contains the information about a route associated with a component loaded in an\n * outlet at a particular moment in time. ActivatedRouteSnapshot can also be used to\n * traverse the router state tree.\n *\n * The following example initializes a component with route information extracted\n * from the snapshot of the root node at the time of creation.\n *\n * ```\n * @Component({templateUrl:'./my-component.html'})\n * class MyComponent {\n * constructor(route: ActivatedRoute) {\n * const id: string = route.snapshot.params.id;\n * const url: string = route.snapshot.url.join('');\n * const user = route.snapshot.data.user;\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass ActivatedRouteSnapshot {\n /** The resolved route title */\n get title() {\n // Note: This _must_ be a getter because the data is mutated in the resolvers. Title will not be\n // available at the time of class instantiation.\n return this.data?.[RouteTitleKey];\n }\n /** @internal */\n constructor( /** The URL segments matched by this route */\n url,\n /**\n * The matrix parameters scoped to this route.\n *\n * You can compute all params (or data) in the router state or to get params outside\n * of an activated component by traversing the `RouterState` tree as in the following\n * example:\n * ```\n * collectRouteParams(router: Router) {\n * let params = {};\n * let stack: ActivatedRouteSnapshot[] = [router.routerState.snapshot.root];\n * while (stack.length > 0) {\n * const route = stack.pop()!;\n * params = {...params, ...route.params};\n * stack.push(...route.children);\n * }\n * return params;\n * }\n * ```\n */\n params, /** The query parameters shared by all the routes */\n queryParams, /** The URL fragment shared by all the routes */\n fragment, /** The static and resolved data of this route */\n data, /** The outlet name of the route */\n outlet, /** The component of the route */\n component, routeConfig, resolve) {\n this.url = url;\n this.params = params;\n this.queryParams = queryParams;\n this.fragment = fragment;\n this.data = data;\n this.outlet = outlet;\n this.component = component;\n this.routeConfig = routeConfig;\n this._resolve = resolve;\n }\n /** The root of the router state */\n get root() {\n return this._routerState.root;\n }\n /** The parent of this route in the router state tree */\n get parent() {\n return this._routerState.parent(this);\n }\n /** The first child of this route in the router state tree */\n get firstChild() {\n return this._routerState.firstChild(this);\n }\n /** The children of this route in the router state tree */\n get children() {\n return this._routerState.children(this);\n }\n /** The path from the root of the router state tree to this route */\n get pathFromRoot() {\n return this._routerState.pathFromRoot(this);\n }\n get paramMap() {\n if (!this._paramMap) {\n this._paramMap = convertToParamMap(this.params);\n }\n return this._paramMap;\n }\n get queryParamMap() {\n if (!this._queryParamMap) {\n this._queryParamMap = convertToParamMap(this.queryParams);\n }\n return this._queryParamMap;\n }\n toString() {\n const url = this.url.map(segment => segment.toString()).join('/');\n const matched = this.routeConfig ? this.routeConfig.path : '';\n return `Route(url:'${url}', path:'${matched}')`;\n }\n}\n/**\n * @description\n *\n * Represents the state of the router at a moment in time.\n *\n * This is a tree of activated route snapshots. Every node in this tree knows about\n * the \"consumed\" URL segments, the extracted parameters, and the resolved data.\n *\n * The following example shows how a component is initialized with information\n * from the snapshot of the root node's state at the time of creation.\n *\n * ```\n * @Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const state: RouterState = router.routerState;\n * const snapshot: RouterStateSnapshot = state.snapshot;\n * const root: ActivatedRouteSnapshot = snapshot.root;\n * const child = root.firstChild;\n * const id: Observable = child.params.map(p => p.id);\n * //...\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass RouterStateSnapshot extends Tree {\n /** @internal */\n constructor( /** The url from which this snapshot was created */\n url, root) {\n super(root);\n this.url = url;\n setRouterState(this, root);\n }\n toString() {\n return serializeNode(this._root);\n }\n}\nfunction setRouterState(state, node) {\n node.value._routerState = state;\n node.children.forEach(c => setRouterState(state, c));\n}\nfunction serializeNode(node) {\n const c = node.children.length > 0 ? ` { ${node.children.map(serializeNode).join(', ')} } ` : '';\n return `${node.value}${c}`;\n}\n/**\n * The expectation is that the activate route is created with the right set of parameters.\n * So we push new values into the observables only when they are not the initial values.\n * And we detect that by checking if the snapshot field is set.\n */\nfunction advanceActivatedRoute(route) {\n if (route.snapshot) {\n const currentSnapshot = route.snapshot;\n const nextSnapshot = route._futureSnapshot;\n route.snapshot = nextSnapshot;\n if (!shallowEqual(currentSnapshot.queryParams, nextSnapshot.queryParams)) {\n route.queryParamsSubject.next(nextSnapshot.queryParams);\n }\n if (currentSnapshot.fragment !== nextSnapshot.fragment) {\n route.fragmentSubject.next(nextSnapshot.fragment);\n }\n if (!shallowEqual(currentSnapshot.params, nextSnapshot.params)) {\n route.paramsSubject.next(nextSnapshot.params);\n }\n if (!shallowEqualArrays(currentSnapshot.url, nextSnapshot.url)) {\n route.urlSubject.next(nextSnapshot.url);\n }\n if (!shallowEqual(currentSnapshot.data, nextSnapshot.data)) {\n route.dataSubject.next(nextSnapshot.data);\n }\n } else {\n route.snapshot = route._futureSnapshot;\n // this is for resolved data\n route.dataSubject.next(route._futureSnapshot.data);\n }\n}\nfunction equalParamsAndUrlSegments(a, b) {\n const equalUrlParams = shallowEqual(a.params, b.params) && equalSegments(a.url, b.url);\n const parentsMismatch = !a.parent !== !b.parent;\n return equalUrlParams && !parentsMismatch && (!a.parent || equalParamsAndUrlSegments(a.parent, b.parent));\n}\nfunction hasStaticTitle(config) {\n return typeof config.title === 'string' || config.title === null;\n}\n\n/**\n * @description\n *\n * Acts as a placeholder that Angular dynamically fills based on the current router state.\n *\n * Each outlet can have a unique name, determined by the optional `name` attribute.\n * The name cannot be set or changed dynamically. If not set, default value is \"primary\".\n *\n * ```\n * \n * \n * \n * ```\n *\n * Named outlets can be the targets of secondary routes.\n * The `Route` object for a secondary route has an `outlet` property to identify the target outlet:\n *\n * `{path: , component: , outlet: }`\n *\n * Using named outlets and secondary routes, you can target multiple outlets in\n * the same `RouterLink` directive.\n *\n * The router keeps track of separate branches in a navigation tree for each named outlet and\n * generates a representation of that tree in the URL.\n * The URL for a secondary route uses the following syntax to specify both the primary and secondary\n * routes at the same time:\n *\n * `http://base-path/primary-route-path(outlet-name:route-path)`\n *\n * A router outlet emits an activate event when a new component is instantiated,\n * deactivate event when a component is destroyed.\n * An attached event emits when the `RouteReuseStrategy` instructs the outlet to reattach the\n * subtree, and the detached event emits when the `RouteReuseStrategy` instructs the outlet to\n * detach the subtree.\n *\n * ```\n * \n * ```\n *\n * @see [Routing tutorial](guide/router-tutorial-toh#named-outlets \"Example of a named\n * outlet and secondary route configuration\").\n * @see {@link RouterLink}\n * @see {@link Route}\n * @ngModule RouterModule\n *\n * @publicApi\n */\nclass RouterOutlet {\n constructor() {\n this.activated = null;\n this._activatedRoute = null;\n /**\n * The name of the outlet\n *\n * @see [named outlets](guide/router-tutorial-toh#displaying-multiple-routes-in-named-outlets)\n */\n this.name = PRIMARY_OUTLET;\n this.activateEvents = new EventEmitter();\n this.deactivateEvents = new EventEmitter();\n /**\n * Emits an attached component instance when the `RouteReuseStrategy` instructs to re-attach a\n * previously detached subtree.\n **/\n this.attachEvents = new EventEmitter();\n /**\n * Emits a detached component instance when the `RouteReuseStrategy` instructs to detach the\n * subtree.\n */\n this.detachEvents = new EventEmitter();\n this.parentContexts = inject(ChildrenOutletContexts);\n this.location = inject(ViewContainerRef);\n this.changeDetector = inject(ChangeDetectorRef);\n this.environmentInjector = inject(EnvironmentInjector);\n this.inputBinder = inject(INPUT_BINDER, {\n optional: true\n });\n /** @nodoc */\n this.supportsBindingToComponentInputs = true;\n }\n /** @internal */\n get activatedComponentRef() {\n return this.activated;\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (changes['name']) {\n const {\n firstChange,\n previousValue\n } = changes['name'];\n if (firstChange) {\n // The first change is handled by ngOnInit. Because ngOnChanges doesn't get called when no\n // input is set at all, we need to centrally handle the first change there.\n return;\n }\n // unregister with the old name\n if (this.isTrackedInParentContexts(previousValue)) {\n this.deactivate();\n this.parentContexts.onChildOutletDestroyed(previousValue);\n }\n // register the new name\n this.initializeOutletWithName();\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n // Ensure that the registered outlet is this one before removing it on the context.\n if (this.isTrackedInParentContexts(this.name)) {\n this.parentContexts.onChildOutletDestroyed(this.name);\n }\n this.inputBinder?.unsubscribeFromRouteData(this);\n }\n isTrackedInParentContexts(outletName) {\n return this.parentContexts.getContext(outletName)?.outlet === this;\n }\n /** @nodoc */\n ngOnInit() {\n this.initializeOutletWithName();\n }\n initializeOutletWithName() {\n this.parentContexts.onChildOutletCreated(this.name, this);\n if (this.activated) {\n return;\n }\n // If the outlet was not instantiated at the time the route got activated we need to populate\n // the outlet when it is initialized (ie inside a NgIf)\n const context = this.parentContexts.getContext(this.name);\n if (context?.route) {\n if (context.attachRef) {\n // `attachRef` is populated when there is an existing component to mount\n this.attach(context.attachRef, context.route);\n } else {\n // otherwise the component defined in the configuration is created\n this.activateWith(context.route, context.injector);\n }\n }\n }\n get isActivated() {\n return !!this.activated;\n }\n /**\n * @returns The currently activated component instance.\n * @throws An error if the outlet is not activated.\n */\n get component() {\n if (!this.activated) throw new ɵRuntimeError(4012 /* RuntimeErrorCode.OUTLET_NOT_ACTIVATED */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Outlet is not activated');\n return this.activated.instance;\n }\n get activatedRoute() {\n if (!this.activated) throw new ɵRuntimeError(4012 /* RuntimeErrorCode.OUTLET_NOT_ACTIVATED */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Outlet is not activated');\n return this._activatedRoute;\n }\n get activatedRouteData() {\n if (this._activatedRoute) {\n return this._activatedRoute.snapshot.data;\n }\n return {};\n }\n /**\n * Called when the `RouteReuseStrategy` instructs to detach the subtree\n */\n detach() {\n if (!this.activated) throw new ɵRuntimeError(4012 /* RuntimeErrorCode.OUTLET_NOT_ACTIVATED */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Outlet is not activated');\n this.location.detach();\n const cmp = this.activated;\n this.activated = null;\n this._activatedRoute = null;\n this.detachEvents.emit(cmp.instance);\n return cmp;\n }\n /**\n * Called when the `RouteReuseStrategy` instructs to re-attach a previously detached subtree\n */\n attach(ref, activatedRoute) {\n this.activated = ref;\n this._activatedRoute = activatedRoute;\n this.location.insert(ref.hostView);\n this.inputBinder?.bindActivatedRouteToOutletComponent(this);\n this.attachEvents.emit(ref.instance);\n }\n deactivate() {\n if (this.activated) {\n const c = this.component;\n this.activated.destroy();\n this.activated = null;\n this._activatedRoute = null;\n this.deactivateEvents.emit(c);\n }\n }\n activateWith(activatedRoute, environmentInjector) {\n if (this.isActivated) {\n throw new ɵRuntimeError(4013 /* RuntimeErrorCode.OUTLET_ALREADY_ACTIVATED */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Cannot activate an already activated outlet');\n }\n this._activatedRoute = activatedRoute;\n const location = this.location;\n const snapshot = activatedRoute.snapshot;\n const component = snapshot.component;\n const childContexts = this.parentContexts.getOrCreateContext(this.name).children;\n const injector = new OutletInjector(activatedRoute, childContexts, location.injector);\n this.activated = location.createComponent(component, {\n index: location.length,\n injector,\n environmentInjector: environmentInjector ?? this.environmentInjector\n });\n // Calling `markForCheck` to make sure we will run the change detection when the\n // `RouterOutlet` is inside a `ChangeDetectionStrategy.OnPush` component.\n this.changeDetector.markForCheck();\n this.inputBinder?.bindActivatedRouteToOutletComponent(this);\n this.activateEvents.emit(this.activated.instance);\n }\n static {\n this.ɵfac = function RouterOutlet_Factory(t) {\n return new (t || RouterOutlet)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: RouterOutlet,\n selectors: [[\"router-outlet\"]],\n inputs: {\n name: \"name\"\n },\n outputs: {\n activateEvents: \"activate\",\n deactivateEvents: \"deactivate\",\n attachEvents: \"attach\",\n detachEvents: \"detach\"\n },\n exportAs: [\"outlet\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RouterOutlet, [{\n type: Directive,\n args: [{\n selector: 'router-outlet',\n exportAs: 'outlet',\n standalone: true\n }]\n }], null, {\n name: [{\n type: Input\n }],\n activateEvents: [{\n type: Output,\n args: ['activate']\n }],\n deactivateEvents: [{\n type: Output,\n args: ['deactivate']\n }],\n attachEvents: [{\n type: Output,\n args: ['attach']\n }],\n detachEvents: [{\n type: Output,\n args: ['detach']\n }]\n });\n})();\nclass OutletInjector {\n constructor(route, childContexts, parent) {\n this.route = route;\n this.childContexts = childContexts;\n this.parent = parent;\n }\n get(token, notFoundValue) {\n if (token === ActivatedRoute) {\n return this.route;\n }\n if (token === ChildrenOutletContexts) {\n return this.childContexts;\n }\n return this.parent.get(token, notFoundValue);\n }\n}\nconst INPUT_BINDER = new InjectionToken('');\n/**\n * Injectable used as a tree-shakable provider for opting in to binding router data to component\n * inputs.\n *\n * The RouterOutlet registers itself with this service when an `ActivatedRoute` is attached or\n * activated. When this happens, the service subscribes to the `ActivatedRoute` observables (params,\n * queryParams, data) and sets the inputs of the component using `ComponentRef.setInput`.\n * Importantly, when an input does not have an item in the route data with a matching key, this\n * input is set to `undefined`. If it were not done this way, the previous information would be\n * retained if the data got removed from the route (i.e. if a query parameter is removed).\n *\n * The `RouterOutlet` should unregister itself when destroyed via `unsubscribeFromRouteData` so that\n * the subscriptions are cleaned up.\n */\nclass RoutedComponentInputBinder {\n constructor() {\n this.outletDataSubscriptions = new Map();\n }\n bindActivatedRouteToOutletComponent(outlet) {\n this.unsubscribeFromRouteData(outlet);\n this.subscribeToRouteData(outlet);\n }\n unsubscribeFromRouteData(outlet) {\n this.outletDataSubscriptions.get(outlet)?.unsubscribe();\n this.outletDataSubscriptions.delete(outlet);\n }\n subscribeToRouteData(outlet) {\n const {\n activatedRoute\n } = outlet;\n const dataSubscription = combineLatest([activatedRoute.queryParams, activatedRoute.params, activatedRoute.data]).pipe(switchMap(([queryParams, params, data], index) => {\n data = {\n ...queryParams,\n ...params,\n ...data\n };\n // Get the first result from the data subscription synchronously so it's available to\n // the component as soon as possible (and doesn't require a second change detection).\n if (index === 0) {\n return of(data);\n }\n // Promise.resolve is used to avoid synchronously writing the wrong data when\n // two of the Observables in the `combineLatest` stream emit one after\n // another.\n return Promise.resolve(data);\n })).subscribe(data => {\n // Outlet may have been deactivated or changed names to be associated with a different\n // route\n if (!outlet.isActivated || !outlet.activatedComponentRef || outlet.activatedRoute !== activatedRoute || activatedRoute.component === null) {\n this.unsubscribeFromRouteData(outlet);\n return;\n }\n const mirror = reflectComponentType(activatedRoute.component);\n if (!mirror) {\n this.unsubscribeFromRouteData(outlet);\n return;\n }\n for (const {\n templateName\n } of mirror.inputs) {\n outlet.activatedComponentRef.setInput(templateName, data[templateName]);\n }\n });\n this.outletDataSubscriptions.set(outlet, dataSubscription);\n }\n static {\n this.ɵfac = function RoutedComponentInputBinder_Factory(t) {\n return new (t || RoutedComponentInputBinder)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RoutedComponentInputBinder,\n factory: RoutedComponentInputBinder.ɵfac\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RoutedComponentInputBinder, [{\n type: Injectable\n }], null, null);\n})();\nfunction createRouterState(routeReuseStrategy, curr, prevState) {\n const root = createNode(routeReuseStrategy, curr._root, prevState ? prevState._root : undefined);\n return new RouterState(root, curr);\n}\nfunction createNode(routeReuseStrategy, curr, prevState) {\n // reuse an activated route that is currently displayed on the screen\n if (prevState && routeReuseStrategy.shouldReuseRoute(curr.value, prevState.value.snapshot)) {\n const value = prevState.value;\n value._futureSnapshot = curr.value;\n const children = createOrReuseChildren(routeReuseStrategy, curr, prevState);\n return new TreeNode(value, children);\n } else {\n if (routeReuseStrategy.shouldAttach(curr.value)) {\n // retrieve an activated route that is used to be displayed, but is not currently displayed\n const detachedRouteHandle = routeReuseStrategy.retrieve(curr.value);\n if (detachedRouteHandle !== null) {\n const tree = detachedRouteHandle.route;\n tree.value._futureSnapshot = curr.value;\n tree.children = curr.children.map(c => createNode(routeReuseStrategy, c));\n return tree;\n }\n }\n const value = createActivatedRoute(curr.value);\n const children = curr.children.map(c => createNode(routeReuseStrategy, c));\n return new TreeNode(value, children);\n }\n}\nfunction createOrReuseChildren(routeReuseStrategy, curr, prevState) {\n return curr.children.map(child => {\n for (const p of prevState.children) {\n if (routeReuseStrategy.shouldReuseRoute(child.value, p.value.snapshot)) {\n return createNode(routeReuseStrategy, child, p);\n }\n }\n return createNode(routeReuseStrategy, child);\n });\n}\nfunction createActivatedRoute(c) {\n return new ActivatedRoute(new BehaviorSubject(c.url), new BehaviorSubject(c.params), new BehaviorSubject(c.queryParams), new BehaviorSubject(c.fragment), new BehaviorSubject(c.data), c.outlet, c.component, c);\n}\nconst NAVIGATION_CANCELING_ERROR = 'ngNavigationCancelingError';\nfunction redirectingNavigationError(urlSerializer, redirect) {\n const {\n redirectTo,\n navigationBehaviorOptions\n } = isUrlTree(redirect) ? {\n redirectTo: redirect,\n navigationBehaviorOptions: undefined\n } : redirect;\n const error = navigationCancelingError(ngDevMode && `Redirecting to \"${urlSerializer.serialize(redirectTo)}\"`, 0 /* NavigationCancellationCode.Redirect */, redirect);\n error.url = redirectTo;\n error.navigationBehaviorOptions = navigationBehaviorOptions;\n return error;\n}\nfunction navigationCancelingError(message, code, redirectUrl) {\n const error = new Error('NavigationCancelingError: ' + (message || ''));\n error[NAVIGATION_CANCELING_ERROR] = true;\n error.cancellationCode = code;\n if (redirectUrl) {\n error.url = redirectUrl;\n }\n return error;\n}\nfunction isRedirectingNavigationCancelingError$1(error) {\n return isNavigationCancelingError$1(error) && isUrlTree(error.url);\n}\nfunction isNavigationCancelingError$1(error) {\n return error && error[NAVIGATION_CANCELING_ERROR];\n}\n\n/**\n * This component is used internally within the router to be a placeholder when an empty\n * router-outlet is needed. For example, with a config such as:\n *\n * `{path: 'parent', outlet: 'nav', children: [...]}`\n *\n * In order to render, there needs to be a component on this config, which will default\n * to this `EmptyOutletComponent`.\n */\nclass ɵEmptyOutletComponent {\n static {\n this.ɵfac = function ɵEmptyOutletComponent_Factory(t) {\n return new (t || ɵEmptyOutletComponent)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ɵEmptyOutletComponent,\n selectors: [[\"ng-component\"]],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 1,\n vars: 0,\n template: function ɵEmptyOutletComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"router-outlet\");\n }\n },\n dependencies: [RouterOutlet],\n encapsulation: 2\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ɵEmptyOutletComponent, [{\n type: Component,\n args: [{\n template: ``,\n imports: [RouterOutlet],\n standalone: true\n }]\n }], null, null);\n})();\n\n/**\n * Creates an `EnvironmentInjector` if the `Route` has providers and one does not already exist\n * and returns the injector. Otherwise, if the `Route` does not have `providers`, returns the\n * `currentInjector`.\n *\n * @param route The route that might have providers\n * @param currentInjector The parent injector of the `Route`\n */\nfunction getOrCreateRouteInjectorIfNeeded(route, currentInjector) {\n if (route.providers && !route._injector) {\n route._injector = createEnvironmentInjector(route.providers, currentInjector, `Route: ${route.path}`);\n }\n return route._injector ?? currentInjector;\n}\nfunction getLoadedRoutes(route) {\n return route._loadedRoutes;\n}\nfunction getLoadedInjector(route) {\n return route._loadedInjector;\n}\nfunction getLoadedComponent(route) {\n return route._loadedComponent;\n}\nfunction getProvidersInjector(route) {\n return route._injector;\n}\nfunction validateConfig(config, parentPath = '', requireStandaloneComponents = false) {\n // forEach doesn't iterate undefined values\n for (let i = 0; i < config.length; i++) {\n const route = config[i];\n const fullPath = getFullPath(parentPath, route);\n validateNode(route, fullPath, requireStandaloneComponents);\n }\n}\nfunction assertStandalone(fullPath, component) {\n if (component && ɵisNgModule(component)) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}'. You are using 'loadComponent' with a module, ` + `but it must be used with standalone components. Use 'loadChildren' instead.`);\n } else if (component && !isStandalone(component)) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}'. The component must be standalone.`);\n }\n}\nfunction validateNode(route, fullPath, requireStandaloneComponents) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!route) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `\n Invalid configuration of route '${fullPath}': Encountered undefined route.\n The reason might be an extra comma.\n\n Example:\n const routes: Routes = [\n { path: '', redirectTo: '/dashboard', pathMatch: 'full' },\n { path: 'dashboard', component: DashboardComponent },, << two commas\n { path: 'detail/:id', component: HeroDetailComponent }\n ];\n `);\n }\n if (Array.isArray(route)) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': Array cannot be specified`);\n }\n if (!route.redirectTo && !route.component && !route.loadComponent && !route.children && !route.loadChildren && route.outlet && route.outlet !== PRIMARY_OUTLET) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': a componentless route without children or loadChildren cannot have a named outlet set`);\n }\n if (route.redirectTo && route.children) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': redirectTo and children cannot be used together`);\n }\n if (route.redirectTo && route.loadChildren) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': redirectTo and loadChildren cannot be used together`);\n }\n if (route.children && route.loadChildren) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': children and loadChildren cannot be used together`);\n }\n if (route.redirectTo && (route.component || route.loadComponent)) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': redirectTo and component/loadComponent cannot be used together`);\n }\n if (route.component && route.loadComponent) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': component and loadComponent cannot be used together`);\n }\n if (route.redirectTo && route.canActivate) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': redirectTo and canActivate cannot be used together. Redirects happen before activation ` + `so canActivate will never be executed.`);\n }\n if (route.path && route.matcher) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': path and matcher cannot be used together`);\n }\n if (route.redirectTo === void 0 && !route.component && !route.loadComponent && !route.children && !route.loadChildren) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}'. One of the following must be provided: component, loadComponent, redirectTo, children or loadChildren`);\n }\n if (route.path === void 0 && route.matcher === void 0) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': routes must have either a path or a matcher specified`);\n }\n if (typeof route.path === 'string' && route.path.charAt(0) === '/') {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': path cannot start with a slash`);\n }\n if (route.path === '' && route.redirectTo !== void 0 && route.pathMatch === void 0) {\n const exp = `The default value of 'pathMatch' is 'prefix', but often the intent is to use 'full'.`;\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '{path: \"${fullPath}\", redirectTo: \"${route.redirectTo}\"}': please provide 'pathMatch'. ${exp}`);\n }\n if (requireStandaloneComponents) {\n assertStandalone(fullPath, route.component);\n }\n }\n if (route.children) {\n validateConfig(route.children, fullPath, requireStandaloneComponents);\n }\n}\nfunction getFullPath(parentPath, currentRoute) {\n if (!currentRoute) {\n return parentPath;\n }\n if (!parentPath && !currentRoute.path) {\n return '';\n } else if (parentPath && !currentRoute.path) {\n return `${parentPath}/`;\n } else if (!parentPath && currentRoute.path) {\n return currentRoute.path;\n } else {\n return `${parentPath}/${currentRoute.path}`;\n }\n}\n/**\n * Makes a copy of the config and adds any default required properties.\n */\nfunction standardizeConfig(r) {\n const children = r.children && r.children.map(standardizeConfig);\n const c = children ? {\n ...r,\n children\n } : {\n ...r\n };\n if (!c.component && !c.loadComponent && (children || c.loadChildren) && c.outlet && c.outlet !== PRIMARY_OUTLET) {\n c.component = ɵEmptyOutletComponent;\n }\n return c;\n}\n/** Returns the `route.outlet` or PRIMARY_OUTLET if none exists. */\nfunction getOutlet(route) {\n return route.outlet || PRIMARY_OUTLET;\n}\n/**\n * Sorts the `routes` such that the ones with an outlet matching `outletName` come first.\n * The order of the configs is otherwise preserved.\n */\nfunction sortByMatchingOutlets(routes, outletName) {\n const sortedConfig = routes.filter(r => getOutlet(r) === outletName);\n sortedConfig.push(...routes.filter(r => getOutlet(r) !== outletName));\n return sortedConfig;\n}\n/**\n * Gets the first injector in the snapshot's parent tree.\n *\n * If the `Route` has a static list of providers, the returned injector will be the one created from\n * those. If it does not exist, the returned injector may come from the parents, which may be from a\n * loaded config or their static providers.\n *\n * Returns `null` if there is neither this nor any parents have a stored injector.\n *\n * Generally used for retrieving the injector to use for getting tokens for guards/resolvers and\n * also used for getting the correct injector to use for creating components.\n */\nfunction getClosestRouteInjector(snapshot) {\n if (!snapshot) return null;\n // If the current route has its own injector, which is created from the static providers on the\n // route itself, we should use that. Otherwise, we start at the parent since we do not want to\n // include the lazy loaded injector from this route.\n if (snapshot.routeConfig?._injector) {\n return snapshot.routeConfig._injector;\n }\n for (let s = snapshot.parent; s; s = s.parent) {\n const route = s.routeConfig;\n // Note that the order here is important. `_loadedInjector` stored on the route with\n // `loadChildren: () => NgModule` so it applies to child routes with priority. The `_injector`\n // is created from the static providers on that parent route, so it applies to the children as\n // well, but only if there is no lazy loaded NgModuleRef injector.\n if (route?._loadedInjector) return route._loadedInjector;\n if (route?._injector) return route._injector;\n }\n return null;\n}\nlet warnedAboutUnsupportedInputBinding = false;\nconst activateRoutes = (rootContexts, routeReuseStrategy, forwardEvent, inputBindingEnabled) => map(t => {\n new ActivateRoutes(routeReuseStrategy, t.targetRouterState, t.currentRouterState, forwardEvent, inputBindingEnabled).activate(rootContexts);\n return t;\n});\nclass ActivateRoutes {\n constructor(routeReuseStrategy, futureState, currState, forwardEvent, inputBindingEnabled) {\n this.routeReuseStrategy = routeReuseStrategy;\n this.futureState = futureState;\n this.currState = currState;\n this.forwardEvent = forwardEvent;\n this.inputBindingEnabled = inputBindingEnabled;\n }\n activate(parentContexts) {\n const futureRoot = this.futureState._root;\n const currRoot = this.currState ? this.currState._root : null;\n this.deactivateChildRoutes(futureRoot, currRoot, parentContexts);\n advanceActivatedRoute(this.futureState.root);\n this.activateChildRoutes(futureRoot, currRoot, parentContexts);\n }\n // De-activate the child route that are not re-used for the future state\n deactivateChildRoutes(futureNode, currNode, contexts) {\n const children = nodeChildrenAsMap(currNode);\n // Recurse on the routes active in the future state to de-activate deeper children\n futureNode.children.forEach(futureChild => {\n const childOutletName = futureChild.value.outlet;\n this.deactivateRoutes(futureChild, children[childOutletName], contexts);\n delete children[childOutletName];\n });\n // De-activate the routes that will not be re-used\n Object.values(children).forEach(v => {\n this.deactivateRouteAndItsChildren(v, contexts);\n });\n }\n deactivateRoutes(futureNode, currNode, parentContext) {\n const future = futureNode.value;\n const curr = currNode ? currNode.value : null;\n if (future === curr) {\n // Reusing the node, check to see if the children need to be de-activated\n if (future.component) {\n // If we have a normal route, we need to go through an outlet.\n const context = parentContext.getContext(future.outlet);\n if (context) {\n this.deactivateChildRoutes(futureNode, currNode, context.children);\n }\n } else {\n // if we have a componentless route, we recurse but keep the same outlet map.\n this.deactivateChildRoutes(futureNode, currNode, parentContext);\n }\n } else {\n if (curr) {\n // Deactivate the current route which will not be re-used\n this.deactivateRouteAndItsChildren(currNode, parentContext);\n }\n }\n }\n deactivateRouteAndItsChildren(route, parentContexts) {\n // If there is no component, the Route is never attached to an outlet (because there is no\n // component to attach).\n if (route.value.component && this.routeReuseStrategy.shouldDetach(route.value.snapshot)) {\n this.detachAndStoreRouteSubtree(route, parentContexts);\n } else {\n this.deactivateRouteAndOutlet(route, parentContexts);\n }\n }\n detachAndStoreRouteSubtree(route, parentContexts) {\n const context = parentContexts.getContext(route.value.outlet);\n const contexts = context && route.value.component ? context.children : parentContexts;\n const children = nodeChildrenAsMap(route);\n for (const childOutlet of Object.keys(children)) {\n this.deactivateRouteAndItsChildren(children[childOutlet], contexts);\n }\n if (context && context.outlet) {\n const componentRef = context.outlet.detach();\n const contexts = context.children.onOutletDeactivated();\n this.routeReuseStrategy.store(route.value.snapshot, {\n componentRef,\n route,\n contexts\n });\n }\n }\n deactivateRouteAndOutlet(route, parentContexts) {\n const context = parentContexts.getContext(route.value.outlet);\n // The context could be `null` if we are on a componentless route but there may still be\n // children that need deactivating.\n const contexts = context && route.value.component ? context.children : parentContexts;\n const children = nodeChildrenAsMap(route);\n for (const childOutlet of Object.keys(children)) {\n this.deactivateRouteAndItsChildren(children[childOutlet], contexts);\n }\n if (context) {\n if (context.outlet) {\n // Destroy the component\n context.outlet.deactivate();\n // Destroy the contexts for all the outlets that were in the component\n context.children.onOutletDeactivated();\n }\n // Clear the information about the attached component on the context but keep the reference to\n // the outlet. Clear even if outlet was not yet activated to avoid activating later with old\n // info\n context.attachRef = null;\n context.route = null;\n }\n }\n activateChildRoutes(futureNode, currNode, contexts) {\n const children = nodeChildrenAsMap(currNode);\n futureNode.children.forEach(c => {\n this.activateRoutes(c, children[c.value.outlet], contexts);\n this.forwardEvent(new ActivationEnd(c.value.snapshot));\n });\n if (futureNode.children.length) {\n this.forwardEvent(new ChildActivationEnd(futureNode.value.snapshot));\n }\n }\n activateRoutes(futureNode, currNode, parentContexts) {\n const future = futureNode.value;\n const curr = currNode ? currNode.value : null;\n advanceActivatedRoute(future);\n // reusing the node\n if (future === curr) {\n if (future.component) {\n // If we have a normal route, we need to go through an outlet.\n const context = parentContexts.getOrCreateContext(future.outlet);\n this.activateChildRoutes(futureNode, currNode, context.children);\n } else {\n // if we have a componentless route, we recurse but keep the same outlet map.\n this.activateChildRoutes(futureNode, currNode, parentContexts);\n }\n } else {\n if (future.component) {\n // if we have a normal route, we need to place the component into the outlet and recurse.\n const context = parentContexts.getOrCreateContext(future.outlet);\n if (this.routeReuseStrategy.shouldAttach(future.snapshot)) {\n const stored = this.routeReuseStrategy.retrieve(future.snapshot);\n this.routeReuseStrategy.store(future.snapshot, null);\n context.children.onOutletReAttached(stored.contexts);\n context.attachRef = stored.componentRef;\n context.route = stored.route.value;\n if (context.outlet) {\n // Attach right away when the outlet has already been instantiated\n // Otherwise attach from `RouterOutlet.ngOnInit` when it is instantiated\n context.outlet.attach(stored.componentRef, stored.route.value);\n }\n advanceActivatedRoute(stored.route.value);\n this.activateChildRoutes(futureNode, null, context.children);\n } else {\n const injector = getClosestRouteInjector(future.snapshot);\n context.attachRef = null;\n context.route = future;\n context.injector = injector;\n if (context.outlet) {\n // Activate the outlet when it has already been instantiated\n // Otherwise it will get activated from its `ngOnInit` when instantiated\n context.outlet.activateWith(future, context.injector);\n }\n this.activateChildRoutes(futureNode, null, context.children);\n }\n } else {\n // if we have a componentless route, we recurse but keep the same outlet map.\n this.activateChildRoutes(futureNode, null, parentContexts);\n }\n }\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const context = parentContexts.getOrCreateContext(future.outlet);\n const outlet = context.outlet;\n if (outlet && this.inputBindingEnabled && !outlet.supportsBindingToComponentInputs && !warnedAboutUnsupportedInputBinding) {\n console.warn(`'withComponentInputBinding' feature is enabled but ` + `this application is using an outlet that may not support binding to component inputs.`);\n warnedAboutUnsupportedInputBinding = true;\n }\n }\n }\n}\nclass CanActivate {\n constructor(path) {\n this.path = path;\n this.route = this.path[this.path.length - 1];\n }\n}\nclass CanDeactivate {\n constructor(component, route) {\n this.component = component;\n this.route = route;\n }\n}\nfunction getAllRouteGuards(future, curr, parentContexts) {\n const futureRoot = future._root;\n const currRoot = curr ? curr._root : null;\n return getChildRouteGuards(futureRoot, currRoot, parentContexts, [futureRoot.value]);\n}\nfunction getCanActivateChild(p) {\n const canActivateChild = p.routeConfig ? p.routeConfig.canActivateChild : null;\n if (!canActivateChild || canActivateChild.length === 0) return null;\n return {\n node: p,\n guards: canActivateChild\n };\n}\nfunction getTokenOrFunctionIdentity(tokenOrFunction, injector) {\n const NOT_FOUND = Symbol();\n const result = injector.get(tokenOrFunction, NOT_FOUND);\n if (result === NOT_FOUND) {\n if (typeof tokenOrFunction === 'function' && !ɵisInjectable(tokenOrFunction)) {\n // We think the token is just a function so return it as-is\n return tokenOrFunction;\n } else {\n // This will throw the not found error\n return injector.get(tokenOrFunction);\n }\n }\n return result;\n}\nfunction getChildRouteGuards(futureNode, currNode, contexts, futurePath, checks = {\n canDeactivateChecks: [],\n canActivateChecks: []\n}) {\n const prevChildren = nodeChildrenAsMap(currNode);\n // Process the children of the future route\n futureNode.children.forEach(c => {\n getRouteGuards(c, prevChildren[c.value.outlet], contexts, futurePath.concat([c.value]), checks);\n delete prevChildren[c.value.outlet];\n });\n // Process any children left from the current route (not active for the future route)\n Object.entries(prevChildren).forEach(([k, v]) => deactivateRouteAndItsChildren(v, contexts.getContext(k), checks));\n return checks;\n}\nfunction getRouteGuards(futureNode, currNode, parentContexts, futurePath, checks = {\n canDeactivateChecks: [],\n canActivateChecks: []\n}) {\n const future = futureNode.value;\n const curr = currNode ? currNode.value : null;\n const context = parentContexts ? parentContexts.getContext(futureNode.value.outlet) : null;\n // reusing the node\n if (curr && future.routeConfig === curr.routeConfig) {\n const shouldRun = shouldRunGuardsAndResolvers(curr, future, future.routeConfig.runGuardsAndResolvers);\n if (shouldRun) {\n checks.canActivateChecks.push(new CanActivate(futurePath));\n } else {\n // we need to set the data\n future.data = curr.data;\n future._resolvedData = curr._resolvedData;\n }\n // If we have a component, we need to go through an outlet.\n if (future.component) {\n getChildRouteGuards(futureNode, currNode, context ? context.children : null, futurePath, checks);\n // if we have a componentless route, we recurse but keep the same outlet map.\n } else {\n getChildRouteGuards(futureNode, currNode, parentContexts, futurePath, checks);\n }\n if (shouldRun && context && context.outlet && context.outlet.isActivated) {\n checks.canDeactivateChecks.push(new CanDeactivate(context.outlet.component, curr));\n }\n } else {\n if (curr) {\n deactivateRouteAndItsChildren(currNode, context, checks);\n }\n checks.canActivateChecks.push(new CanActivate(futurePath));\n // If we have a component, we need to go through an outlet.\n if (future.component) {\n getChildRouteGuards(futureNode, null, context ? context.children : null, futurePath, checks);\n // if we have a componentless route, we recurse but keep the same outlet map.\n } else {\n getChildRouteGuards(futureNode, null, parentContexts, futurePath, checks);\n }\n }\n return checks;\n}\nfunction shouldRunGuardsAndResolvers(curr, future, mode) {\n if (typeof mode === 'function') {\n return mode(curr, future);\n }\n switch (mode) {\n case 'pathParamsChange':\n return !equalPath(curr.url, future.url);\n case 'pathParamsOrQueryParamsChange':\n return !equalPath(curr.url, future.url) || !shallowEqual(curr.queryParams, future.queryParams);\n case 'always':\n return true;\n case 'paramsOrQueryParamsChange':\n return !equalParamsAndUrlSegments(curr, future) || !shallowEqual(curr.queryParams, future.queryParams);\n case 'paramsChange':\n default:\n return !equalParamsAndUrlSegments(curr, future);\n }\n}\nfunction deactivateRouteAndItsChildren(route, context, checks) {\n const children = nodeChildrenAsMap(route);\n const r = route.value;\n Object.entries(children).forEach(([childName, node]) => {\n if (!r.component) {\n deactivateRouteAndItsChildren(node, context, checks);\n } else if (context) {\n deactivateRouteAndItsChildren(node, context.children.getContext(childName), checks);\n } else {\n deactivateRouteAndItsChildren(node, null, checks);\n }\n });\n if (!r.component) {\n checks.canDeactivateChecks.push(new CanDeactivate(null, r));\n } else if (context && context.outlet && context.outlet.isActivated) {\n checks.canDeactivateChecks.push(new CanDeactivate(context.outlet.component, r));\n } else {\n checks.canDeactivateChecks.push(new CanDeactivate(null, r));\n }\n}\n\n/**\n * Simple function check, but generic so type inference will flow. Example:\n *\n * function product(a: number, b: number) {\n * return a * b;\n * }\n *\n * if (isFunction(fn)) {\n * return fn(1, 2);\n * } else {\n * throw \"Must provide the `product` function\";\n * }\n */\nfunction isFunction(v) {\n return typeof v === 'function';\n}\nfunction isBoolean(v) {\n return typeof v === 'boolean';\n}\nfunction isCanLoad(guard) {\n return guard && isFunction(guard.canLoad);\n}\nfunction isCanActivate(guard) {\n return guard && isFunction(guard.canActivate);\n}\nfunction isCanActivateChild(guard) {\n return guard && isFunction(guard.canActivateChild);\n}\nfunction isCanDeactivate(guard) {\n return guard && isFunction(guard.canDeactivate);\n}\nfunction isCanMatch(guard) {\n return guard && isFunction(guard.canMatch);\n}\nfunction isRedirectingNavigationCancelingError(error) {\n return isNavigationCancelingError(error) && isUrlTree(error.url);\n}\nfunction isNavigationCancelingError(error) {\n return error && error[NAVIGATION_CANCELING_ERROR];\n}\nfunction isEmptyError(e) {\n return e instanceof EmptyError || e?.name === 'EmptyError';\n}\nconst INITIAL_VALUE = /* @__PURE__ */Symbol('INITIAL_VALUE');\nfunction prioritizedGuardValue() {\n return switchMap(obs => {\n return combineLatest(obs.map(o => o.pipe(take(1), startWith(INITIAL_VALUE)))).pipe(map(results => {\n for (const result of results) {\n if (result === true) {\n // If result is true, check the next one\n continue;\n } else if (result === INITIAL_VALUE) {\n // If guard has not finished, we need to stop processing.\n return INITIAL_VALUE;\n } else if (result === false || result instanceof UrlTree) {\n // Result finished and was not true. Return the result.\n // Note that we only allow false/UrlTree. Other values are considered invalid and\n // ignored.\n return result;\n }\n }\n // Everything resolved to true. Return true.\n return true;\n }), filter(item => item !== INITIAL_VALUE), take(1));\n });\n}\nfunction checkGuards(injector, forwardEvent) {\n return mergeMap(t => {\n const {\n targetSnapshot,\n currentSnapshot,\n guards: {\n canActivateChecks,\n canDeactivateChecks\n }\n } = t;\n if (canDeactivateChecks.length === 0 && canActivateChecks.length === 0) {\n return of({\n ...t,\n guardsResult: true\n });\n }\n return runCanDeactivateChecks(canDeactivateChecks, targetSnapshot, currentSnapshot, injector).pipe(mergeMap(canDeactivate => {\n return canDeactivate && isBoolean(canDeactivate) ? runCanActivateChecks(targetSnapshot, canActivateChecks, injector, forwardEvent) : of(canDeactivate);\n }), map(guardsResult => ({\n ...t,\n guardsResult\n })));\n });\n}\nfunction runCanDeactivateChecks(checks, futureRSS, currRSS, injector) {\n return from(checks).pipe(mergeMap(check => runCanDeactivate(check.component, check.route, currRSS, futureRSS, injector)), first(result => {\n return result !== true;\n }, true));\n}\nfunction runCanActivateChecks(futureSnapshot, checks, injector, forwardEvent) {\n return from(checks).pipe(concatMap(check => {\n return concat(fireChildActivationStart(check.route.parent, forwardEvent), fireActivationStart(check.route, forwardEvent), runCanActivateChild(futureSnapshot, check.path, injector), runCanActivate(futureSnapshot, check.route, injector));\n }), first(result => {\n return result !== true;\n }, true));\n}\n/**\n * This should fire off `ActivationStart` events for each route being activated at this\n * level.\n * In other words, if you're activating `a` and `b` below, `path` will contain the\n * `ActivatedRouteSnapshot`s for both and we will fire `ActivationStart` for both. Always\n * return\n * `true` so checks continue to run.\n */\nfunction fireActivationStart(snapshot, forwardEvent) {\n if (snapshot !== null && forwardEvent) {\n forwardEvent(new ActivationStart(snapshot));\n }\n return of(true);\n}\n/**\n * This should fire off `ChildActivationStart` events for each route being activated at this\n * level.\n * In other words, if you're activating `a` and `b` below, `path` will contain the\n * `ActivatedRouteSnapshot`s for both and we will fire `ChildActivationStart` for both. Always\n * return\n * `true` so checks continue to run.\n */\nfunction fireChildActivationStart(snapshot, forwardEvent) {\n if (snapshot !== null && forwardEvent) {\n forwardEvent(new ChildActivationStart(snapshot));\n }\n return of(true);\n}\nfunction runCanActivate(futureRSS, futureARS, injector) {\n const canActivate = futureARS.routeConfig ? futureARS.routeConfig.canActivate : null;\n if (!canActivate || canActivate.length === 0) return of(true);\n const canActivateObservables = canActivate.map(canActivate => {\n return defer(() => {\n const closestInjector = getClosestRouteInjector(futureARS) ?? injector;\n const guard = getTokenOrFunctionIdentity(canActivate, closestInjector);\n const guardVal = isCanActivate(guard) ? guard.canActivate(futureARS, futureRSS) : runInInjectionContext(closestInjector, () => guard(futureARS, futureRSS));\n return wrapIntoObservable(guardVal).pipe(first());\n });\n });\n return of(canActivateObservables).pipe(prioritizedGuardValue());\n}\nfunction runCanActivateChild(futureRSS, path, injector) {\n const futureARS = path[path.length - 1];\n const canActivateChildGuards = path.slice(0, path.length - 1).reverse().map(p => getCanActivateChild(p)).filter(_ => _ !== null);\n const canActivateChildGuardsMapped = canActivateChildGuards.map(d => {\n return defer(() => {\n const guardsMapped = d.guards.map(canActivateChild => {\n const closestInjector = getClosestRouteInjector(d.node) ?? injector;\n const guard = getTokenOrFunctionIdentity(canActivateChild, closestInjector);\n const guardVal = isCanActivateChild(guard) ? guard.canActivateChild(futureARS, futureRSS) : runInInjectionContext(closestInjector, () => guard(futureARS, futureRSS));\n return wrapIntoObservable(guardVal).pipe(first());\n });\n return of(guardsMapped).pipe(prioritizedGuardValue());\n });\n });\n return of(canActivateChildGuardsMapped).pipe(prioritizedGuardValue());\n}\nfunction runCanDeactivate(component, currARS, currRSS, futureRSS, injector) {\n const canDeactivate = currARS && currARS.routeConfig ? currARS.routeConfig.canDeactivate : null;\n if (!canDeactivate || canDeactivate.length === 0) return of(true);\n const canDeactivateObservables = canDeactivate.map(c => {\n const closestInjector = getClosestRouteInjector(currARS) ?? injector;\n const guard = getTokenOrFunctionIdentity(c, closestInjector);\n const guardVal = isCanDeactivate(guard) ? guard.canDeactivate(component, currARS, currRSS, futureRSS) : runInInjectionContext(closestInjector, () => guard(component, currARS, currRSS, futureRSS));\n return wrapIntoObservable(guardVal).pipe(first());\n });\n return of(canDeactivateObservables).pipe(prioritizedGuardValue());\n}\nfunction runCanLoadGuards(injector, route, segments, urlSerializer) {\n const canLoad = route.canLoad;\n if (canLoad === undefined || canLoad.length === 0) {\n return of(true);\n }\n const canLoadObservables = canLoad.map(injectionToken => {\n const guard = getTokenOrFunctionIdentity(injectionToken, injector);\n const guardVal = isCanLoad(guard) ? guard.canLoad(route, segments) : runInInjectionContext(injector, () => guard(route, segments));\n return wrapIntoObservable(guardVal);\n });\n return of(canLoadObservables).pipe(prioritizedGuardValue(), redirectIfUrlTree(urlSerializer));\n}\nfunction redirectIfUrlTree(urlSerializer) {\n return pipe(tap(result => {\n if (!isUrlTree(result)) return;\n throw redirectingNavigationError(urlSerializer, result);\n }), map(result => result === true));\n}\nfunction runCanMatchGuards(injector, route, segments, urlSerializer) {\n const canMatch = route.canMatch;\n if (!canMatch || canMatch.length === 0) return of(true);\n const canMatchObservables = canMatch.map(injectionToken => {\n const guard = getTokenOrFunctionIdentity(injectionToken, injector);\n const guardVal = isCanMatch(guard) ? guard.canMatch(route, segments) : runInInjectionContext(injector, () => guard(route, segments));\n return wrapIntoObservable(guardVal);\n });\n return of(canMatchObservables).pipe(prioritizedGuardValue(), redirectIfUrlTree(urlSerializer));\n}\nclass NoMatch {\n constructor(segmentGroup) {\n this.segmentGroup = segmentGroup || null;\n }\n}\nclass AbsoluteRedirect extends Error {\n constructor(urlTree) {\n super();\n this.urlTree = urlTree;\n }\n}\nfunction noMatch$1(segmentGroup) {\n return throwError(new NoMatch(segmentGroup));\n}\nfunction absoluteRedirect(newTree) {\n return throwError(new AbsoluteRedirect(newTree));\n}\nfunction namedOutletsRedirect(redirectTo) {\n return throwError(new ɵRuntimeError(4000 /* RuntimeErrorCode.NAMED_OUTLET_REDIRECT */, (typeof ngDevMode === 'undefined' || ngDevMode) && `Only absolute redirects can have named outlets. redirectTo: '${redirectTo}'`));\n}\nfunction canLoadFails(route) {\n return throwError(navigationCancelingError((typeof ngDevMode === 'undefined' || ngDevMode) && `Cannot load children because the guard of the route \"path: '${route.path}'\" returned false`, 3 /* NavigationCancellationCode.GuardRejected */));\n}\n\nclass ApplyRedirects {\n constructor(urlSerializer, urlTree) {\n this.urlSerializer = urlSerializer;\n this.urlTree = urlTree;\n }\n lineralizeSegments(route, urlTree) {\n let res = [];\n let c = urlTree.root;\n while (true) {\n res = res.concat(c.segments);\n if (c.numberOfChildren === 0) {\n return of(res);\n }\n if (c.numberOfChildren > 1 || !c.children[PRIMARY_OUTLET]) {\n return namedOutletsRedirect(route.redirectTo);\n }\n c = c.children[PRIMARY_OUTLET];\n }\n }\n applyRedirectCommands(segments, redirectTo, posParams) {\n const newTree = this.applyRedirectCreateUrlTree(redirectTo, this.urlSerializer.parse(redirectTo), segments, posParams);\n if (redirectTo.startsWith('/')) {\n throw new AbsoluteRedirect(newTree);\n }\n return newTree;\n }\n applyRedirectCreateUrlTree(redirectTo, urlTree, segments, posParams) {\n const newRoot = this.createSegmentGroup(redirectTo, urlTree.root, segments, posParams);\n return new UrlTree(newRoot, this.createQueryParams(urlTree.queryParams, this.urlTree.queryParams), urlTree.fragment);\n }\n createQueryParams(redirectToParams, actualParams) {\n const res = {};\n Object.entries(redirectToParams).forEach(([k, v]) => {\n const copySourceValue = typeof v === 'string' && v.startsWith(':');\n if (copySourceValue) {\n const sourceName = v.substring(1);\n res[k] = actualParams[sourceName];\n } else {\n res[k] = v;\n }\n });\n return res;\n }\n createSegmentGroup(redirectTo, group, segments, posParams) {\n const updatedSegments = this.createSegments(redirectTo, group.segments, segments, posParams);\n let children = {};\n Object.entries(group.children).forEach(([name, child]) => {\n children[name] = this.createSegmentGroup(redirectTo, child, segments, posParams);\n });\n return new UrlSegmentGroup(updatedSegments, children);\n }\n createSegments(redirectTo, redirectToSegments, actualSegments, posParams) {\n return redirectToSegments.map(s => s.path.startsWith(':') ? this.findPosParam(redirectTo, s, posParams) : this.findOrReturn(s, actualSegments));\n }\n findPosParam(redirectTo, redirectToUrlSegment, posParams) {\n const pos = posParams[redirectToUrlSegment.path.substring(1)];\n if (!pos) throw new ɵRuntimeError(4001 /* RuntimeErrorCode.MISSING_REDIRECT */, (typeof ngDevMode === 'undefined' || ngDevMode) && `Cannot redirect to '${redirectTo}'. Cannot find '${redirectToUrlSegment.path}'.`);\n return pos;\n }\n findOrReturn(redirectToUrlSegment, actualSegments) {\n let idx = 0;\n for (const s of actualSegments) {\n if (s.path === redirectToUrlSegment.path) {\n actualSegments.splice(idx);\n return s;\n }\n idx++;\n }\n return redirectToUrlSegment;\n }\n}\nconst noMatch = {\n matched: false,\n consumedSegments: [],\n remainingSegments: [],\n parameters: {},\n positionalParamSegments: {}\n};\nfunction matchWithChecks(segmentGroup, route, segments, injector, urlSerializer) {\n const result = match(segmentGroup, route, segments);\n if (!result.matched) {\n return of(result);\n }\n // Only create the Route's `EnvironmentInjector` if it matches the attempted\n // navigation\n injector = getOrCreateRouteInjectorIfNeeded(route, injector);\n return runCanMatchGuards(injector, route, segments, urlSerializer).pipe(map(v => v === true ? result : {\n ...noMatch\n }));\n}\nfunction match(segmentGroup, route, segments) {\n if (route.path === '**') {\n return createWildcardMatchResult(segments);\n }\n if (route.path === '') {\n if (route.pathMatch === 'full' && (segmentGroup.hasChildren() || segments.length > 0)) {\n return {\n ...noMatch\n };\n }\n return {\n matched: true,\n consumedSegments: [],\n remainingSegments: segments,\n parameters: {},\n positionalParamSegments: {}\n };\n }\n const matcher = route.matcher || defaultUrlMatcher;\n const res = matcher(segments, segmentGroup, route);\n if (!res) return {\n ...noMatch\n };\n const posParams = {};\n Object.entries(res.posParams ?? {}).forEach(([k, v]) => {\n posParams[k] = v.path;\n });\n const parameters = res.consumed.length > 0 ? {\n ...posParams,\n ...res.consumed[res.consumed.length - 1].parameters\n } : posParams;\n return {\n matched: true,\n consumedSegments: res.consumed,\n remainingSegments: segments.slice(res.consumed.length),\n // TODO(atscott): investigate combining parameters and positionalParamSegments\n parameters,\n positionalParamSegments: res.posParams ?? {}\n };\n}\nfunction createWildcardMatchResult(segments) {\n return {\n matched: true,\n parameters: segments.length > 0 ? last(segments).parameters : {},\n consumedSegments: segments,\n remainingSegments: [],\n positionalParamSegments: {}\n };\n}\nfunction split(segmentGroup, consumedSegments, slicedSegments, config) {\n if (slicedSegments.length > 0 && containsEmptyPathMatchesWithNamedOutlets(segmentGroup, slicedSegments, config)) {\n const s = new UrlSegmentGroup(consumedSegments, createChildrenForEmptyPaths(config, new UrlSegmentGroup(slicedSegments, segmentGroup.children)));\n return {\n segmentGroup: s,\n slicedSegments: []\n };\n }\n if (slicedSegments.length === 0 && containsEmptyPathMatches(segmentGroup, slicedSegments, config)) {\n const s = new UrlSegmentGroup(segmentGroup.segments, addEmptyPathsToChildrenIfNeeded(segmentGroup, consumedSegments, slicedSegments, config, segmentGroup.children));\n return {\n segmentGroup: s,\n slicedSegments\n };\n }\n const s = new UrlSegmentGroup(segmentGroup.segments, segmentGroup.children);\n return {\n segmentGroup: s,\n slicedSegments\n };\n}\nfunction addEmptyPathsToChildrenIfNeeded(segmentGroup, consumedSegments, slicedSegments, routes, children) {\n const res = {};\n for (const r of routes) {\n if (emptyPathMatch(segmentGroup, slicedSegments, r) && !children[getOutlet(r)]) {\n const s = new UrlSegmentGroup([], {});\n res[getOutlet(r)] = s;\n }\n }\n return {\n ...children,\n ...res\n };\n}\nfunction createChildrenForEmptyPaths(routes, primarySegment) {\n const res = {};\n res[PRIMARY_OUTLET] = primarySegment;\n for (const r of routes) {\n if (r.path === '' && getOutlet(r) !== PRIMARY_OUTLET) {\n const s = new UrlSegmentGroup([], {});\n res[getOutlet(r)] = s;\n }\n }\n return res;\n}\nfunction containsEmptyPathMatchesWithNamedOutlets(segmentGroup, slicedSegments, routes) {\n return routes.some(r => emptyPathMatch(segmentGroup, slicedSegments, r) && getOutlet(r) !== PRIMARY_OUTLET);\n}\nfunction containsEmptyPathMatches(segmentGroup, slicedSegments, routes) {\n return routes.some(r => emptyPathMatch(segmentGroup, slicedSegments, r));\n}\nfunction emptyPathMatch(segmentGroup, slicedSegments, r) {\n if ((segmentGroup.hasChildren() || slicedSegments.length > 0) && r.pathMatch === 'full') {\n return false;\n }\n return r.path === '';\n}\n/**\n * Determines if `route` is a path match for the `rawSegment`, `segments`, and `outlet` without\n * verifying that its children are a full match for the remainder of the `rawSegment` children as\n * well.\n */\nfunction isImmediateMatch(route, rawSegment, segments, outlet) {\n // We allow matches to empty paths when the outlets differ so we can match a url like `/(b:b)` to\n // a config like\n // * `{path: '', children: [{path: 'b', outlet: 'b'}]}`\n // or even\n // * `{path: '', outlet: 'a', children: [{path: 'b', outlet: 'b'}]`\n //\n // The exception here is when the segment outlet is for the primary outlet. This would\n // result in a match inside the named outlet because all children there are written as primary\n // outlets. So we need to prevent child named outlet matches in a url like `/b` in a config like\n // * `{path: '', outlet: 'x' children: [{path: 'b'}]}`\n // This should only match if the url is `/(x:b)`.\n if (getOutlet(route) !== outlet && (outlet === PRIMARY_OUTLET || !emptyPathMatch(rawSegment, segments, route))) {\n return false;\n }\n return match(rawSegment, route, segments).matched;\n}\nfunction noLeftoversInUrl(segmentGroup, segments, outlet) {\n return segments.length === 0 && !segmentGroup.children[outlet];\n}\n\n/**\n * Class used to indicate there were no additional route config matches but that all segments of\n * the URL were consumed during matching so the route was URL matched. When this happens, we still\n * try to match child configs in case there are empty path children.\n */\nclass NoLeftoversInUrl {}\nfunction recognize$1(injector, configLoader, rootComponentType, config, urlTree, urlSerializer, paramsInheritanceStrategy = 'emptyOnly') {\n return new Recognizer(injector, configLoader, rootComponentType, config, urlTree, paramsInheritanceStrategy, urlSerializer).recognize();\n}\nconst MAX_ALLOWED_REDIRECTS = 31;\nclass Recognizer {\n constructor(injector, configLoader, rootComponentType, config, urlTree, paramsInheritanceStrategy, urlSerializer) {\n this.injector = injector;\n this.configLoader = configLoader;\n this.rootComponentType = rootComponentType;\n this.config = config;\n this.urlTree = urlTree;\n this.paramsInheritanceStrategy = paramsInheritanceStrategy;\n this.urlSerializer = urlSerializer;\n this.applyRedirects = new ApplyRedirects(this.urlSerializer, this.urlTree);\n this.absoluteRedirectCount = 0;\n this.allowRedirects = true;\n }\n noMatchError(e) {\n return new ɵRuntimeError(4002 /* RuntimeErrorCode.NO_MATCH */, typeof ngDevMode === 'undefined' || ngDevMode ? `Cannot match any routes. URL Segment: '${e.segmentGroup}'` : `'${e.segmentGroup}'`);\n }\n recognize() {\n const rootSegmentGroup = split(this.urlTree.root, [], [], this.config).segmentGroup;\n return this.match(rootSegmentGroup).pipe(map(children => {\n // Use Object.freeze to prevent readers of the Router state from modifying it outside\n // of a navigation, resulting in the router being out of sync with the browser.\n const root = new ActivatedRouteSnapshot([], Object.freeze({}), Object.freeze({\n ...this.urlTree.queryParams\n }), this.urlTree.fragment, {}, PRIMARY_OUTLET, this.rootComponentType, null, {});\n const rootNode = new TreeNode(root, children);\n const routeState = new RouterStateSnapshot('', rootNode);\n const tree = createUrlTreeFromSnapshot(root, [], this.urlTree.queryParams, this.urlTree.fragment);\n // https://github.com/angular/angular/issues/47307\n // Creating the tree stringifies the query params\n // We don't want to do this here so reassign them to the original.\n tree.queryParams = this.urlTree.queryParams;\n routeState.url = this.urlSerializer.serialize(tree);\n this.inheritParamsAndData(routeState._root, null);\n return {\n state: routeState,\n tree\n };\n }));\n }\n match(rootSegmentGroup) {\n const expanded$ = this.processSegmentGroup(this.injector, this.config, rootSegmentGroup, PRIMARY_OUTLET);\n return expanded$.pipe(catchError(e => {\n if (e instanceof AbsoluteRedirect) {\n this.urlTree = e.urlTree;\n return this.match(e.urlTree.root);\n }\n if (e instanceof NoMatch) {\n throw this.noMatchError(e);\n }\n throw e;\n }));\n }\n inheritParamsAndData(routeNode, parent) {\n const route = routeNode.value;\n const i = getInherited(route, parent, this.paramsInheritanceStrategy);\n route.params = Object.freeze(i.params);\n route.data = Object.freeze(i.data);\n routeNode.children.forEach(n => this.inheritParamsAndData(n, route));\n }\n processSegmentGroup(injector, config, segmentGroup, outlet) {\n if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) {\n return this.processChildren(injector, config, segmentGroup);\n }\n return this.processSegment(injector, config, segmentGroup, segmentGroup.segments, outlet, true).pipe(map(child => child instanceof TreeNode ? [child] : []));\n }\n /**\n * Matches every child outlet in the `segmentGroup` to a `Route` in the config. Returns `null` if\n * we cannot find a match for _any_ of the children.\n *\n * @param config - The `Routes` to match against\n * @param segmentGroup - The `UrlSegmentGroup` whose children need to be matched against the\n * config.\n */\n processChildren(injector, config, segmentGroup) {\n // Expand outlets one at a time, starting with the primary outlet. We need to do it this way\n // because an absolute redirect from the primary outlet takes precedence.\n const childOutlets = [];\n for (const child of Object.keys(segmentGroup.children)) {\n if (child === 'primary') {\n childOutlets.unshift(child);\n } else {\n childOutlets.push(child);\n }\n }\n return from(childOutlets).pipe(concatMap(childOutlet => {\n const child = segmentGroup.children[childOutlet];\n // Sort the config so that routes with outlets that match the one being activated\n // appear first, followed by routes for other outlets, which might match if they have\n // an empty path.\n const sortedConfig = sortByMatchingOutlets(config, childOutlet);\n return this.processSegmentGroup(injector, sortedConfig, child, childOutlet);\n }), scan((children, outletChildren) => {\n children.push(...outletChildren);\n return children;\n }), defaultIfEmpty(null), last$1(), mergeMap(children => {\n if (children === null) return noMatch$1(segmentGroup);\n // Because we may have matched two outlets to the same empty path segment, we can have\n // multiple activated results for the same outlet. We should merge the children of\n // these results so the final return value is only one `TreeNode` per outlet.\n const mergedChildren = mergeEmptyPathMatches(children);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // This should really never happen - we are only taking the first match for each\n // outlet and merge the empty path matches.\n checkOutletNameUniqueness(mergedChildren);\n }\n sortActivatedRouteSnapshots(mergedChildren);\n return of(mergedChildren);\n }));\n }\n processSegment(injector, routes, segmentGroup, segments, outlet, allowRedirects) {\n return from(routes).pipe(concatMap(r => {\n return this.processSegmentAgainstRoute(r._injector ?? injector, routes, r, segmentGroup, segments, outlet, allowRedirects).pipe(catchError(e => {\n if (e instanceof NoMatch) {\n return of(null);\n }\n throw e;\n }));\n }), first(x => !!x), catchError(e => {\n if (isEmptyError(e)) {\n if (noLeftoversInUrl(segmentGroup, segments, outlet)) {\n return of(new NoLeftoversInUrl());\n }\n return noMatch$1(segmentGroup);\n }\n throw e;\n }));\n }\n processSegmentAgainstRoute(injector, routes, route, rawSegment, segments, outlet, allowRedirects) {\n if (!isImmediateMatch(route, rawSegment, segments, outlet)) return noMatch$1(rawSegment);\n if (route.redirectTo === undefined) {\n return this.matchSegmentAgainstRoute(injector, rawSegment, route, segments, outlet);\n }\n if (this.allowRedirects && allowRedirects) {\n return this.expandSegmentAgainstRouteUsingRedirect(injector, rawSegment, routes, route, segments, outlet);\n }\n return noMatch$1(rawSegment);\n }\n expandSegmentAgainstRouteUsingRedirect(injector, segmentGroup, routes, route, segments, outlet) {\n const {\n matched,\n consumedSegments,\n positionalParamSegments,\n remainingSegments\n } = match(segmentGroup, route, segments);\n if (!matched) return noMatch$1(segmentGroup);\n // TODO(atscott): Move all of this under an if(ngDevMode) as a breaking change and allow stack\n // size exceeded in production\n if (route.redirectTo.startsWith('/')) {\n this.absoluteRedirectCount++;\n if (this.absoluteRedirectCount > MAX_ALLOWED_REDIRECTS) {\n if (ngDevMode) {\n throw new ɵRuntimeError(4016 /* RuntimeErrorCode.INFINITE_REDIRECT */, `Detected possible infinite redirect when redirecting from '${this.urlTree}' to '${route.redirectTo}'.\\n` + `This is currently a dev mode only error but will become a` + ` call stack size exceeded error in production in a future major version.`);\n }\n this.allowRedirects = false;\n }\n }\n const newTree = this.applyRedirects.applyRedirectCommands(consumedSegments, route.redirectTo, positionalParamSegments);\n return this.applyRedirects.lineralizeSegments(route, newTree).pipe(mergeMap(newSegments => {\n return this.processSegment(injector, routes, segmentGroup, newSegments.concat(remainingSegments), outlet, false);\n }));\n }\n matchSegmentAgainstRoute(injector, rawSegment, route, segments, outlet) {\n const matchResult = matchWithChecks(rawSegment, route, segments, injector, this.urlSerializer);\n if (route.path === '**') {\n // Prior versions of the route matching algorithm would stop matching at the wildcard route.\n // We should investigate a better strategy for any existing children. Otherwise, these\n // child segments are silently dropped from the navigation.\n // https://github.com/angular/angular/issues/40089\n rawSegment.children = {};\n }\n return matchResult.pipe(switchMap(result => {\n if (!result.matched) {\n return noMatch$1(rawSegment);\n }\n // If the route has an injector created from providers, we should start using that.\n injector = route._injector ?? injector;\n return this.getChildConfig(injector, route, segments).pipe(switchMap(({\n routes: childConfig\n }) => {\n const childInjector = route._loadedInjector ?? injector;\n const {\n consumedSegments,\n remainingSegments,\n parameters\n } = result;\n const snapshot = new ActivatedRouteSnapshot(consumedSegments, parameters, Object.freeze({\n ...this.urlTree.queryParams\n }), this.urlTree.fragment, getData(route), getOutlet(route), route.component ?? route._loadedComponent ?? null, route, getResolve(route));\n const {\n segmentGroup,\n slicedSegments\n } = split(rawSegment, consumedSegments, remainingSegments, childConfig);\n if (slicedSegments.length === 0 && segmentGroup.hasChildren()) {\n return this.processChildren(childInjector, childConfig, segmentGroup).pipe(map(children => {\n if (children === null) {\n return null;\n }\n return new TreeNode(snapshot, children);\n }));\n }\n if (childConfig.length === 0 && slicedSegments.length === 0) {\n return of(new TreeNode(snapshot, []));\n }\n const matchedOnOutlet = getOutlet(route) === outlet;\n // If we matched a config due to empty path match on a different outlet, we need to\n // continue passing the current outlet for the segment rather than switch to PRIMARY.\n // Note that we switch to primary when we have a match because outlet configs look like\n // this: {path: 'a', outlet: 'a', children: [\n // {path: 'b', component: B},\n // {path: 'c', component: C},\n // ]}\n // Notice that the children of the named outlet are configured with the primary outlet\n return this.processSegment(childInjector, childConfig, segmentGroup, slicedSegments, matchedOnOutlet ? PRIMARY_OUTLET : outlet, true).pipe(map(child => {\n return new TreeNode(snapshot, child instanceof TreeNode ? [child] : []);\n }));\n }));\n }));\n }\n getChildConfig(injector, route, segments) {\n if (route.children) {\n // The children belong to the same module\n return of({\n routes: route.children,\n injector\n });\n }\n if (route.loadChildren) {\n // lazy children belong to the loaded module\n if (route._loadedRoutes !== undefined) {\n return of({\n routes: route._loadedRoutes,\n injector: route._loadedInjector\n });\n }\n return runCanLoadGuards(injector, route, segments, this.urlSerializer).pipe(mergeMap(shouldLoadResult => {\n if (shouldLoadResult) {\n return this.configLoader.loadChildren(injector, route).pipe(tap(cfg => {\n route._loadedRoutes = cfg.routes;\n route._loadedInjector = cfg.injector;\n }));\n }\n return canLoadFails(route);\n }));\n }\n return of({\n routes: [],\n injector\n });\n }\n}\nfunction sortActivatedRouteSnapshots(nodes) {\n nodes.sort((a, b) => {\n if (a.value.outlet === PRIMARY_OUTLET) return -1;\n if (b.value.outlet === PRIMARY_OUTLET) return 1;\n return a.value.outlet.localeCompare(b.value.outlet);\n });\n}\nfunction hasEmptyPathConfig(node) {\n const config = node.value.routeConfig;\n return config && config.path === '';\n}\n/**\n * Finds `TreeNode`s with matching empty path route configs and merges them into `TreeNode` with\n * the children from each duplicate. This is necessary because different outlets can match a\n * single empty path route config and the results need to then be merged.\n */\nfunction mergeEmptyPathMatches(nodes) {\n const result = [];\n // The set of nodes which contain children that were merged from two duplicate empty path nodes.\n const mergedNodes = new Set();\n for (const node of nodes) {\n if (!hasEmptyPathConfig(node)) {\n result.push(node);\n continue;\n }\n const duplicateEmptyPathNode = result.find(resultNode => node.value.routeConfig === resultNode.value.routeConfig);\n if (duplicateEmptyPathNode !== undefined) {\n duplicateEmptyPathNode.children.push(...node.children);\n mergedNodes.add(duplicateEmptyPathNode);\n } else {\n result.push(node);\n }\n }\n // For each node which has children from multiple sources, we need to recompute a new `TreeNode`\n // by also merging those children. This is necessary when there are multiple empty path configs\n // in a row. Put another way: whenever we combine children of two nodes, we need to also check\n // if any of those children can be combined into a single node as well.\n for (const mergedNode of mergedNodes) {\n const mergedChildren = mergeEmptyPathMatches(mergedNode.children);\n result.push(new TreeNode(mergedNode.value, mergedChildren));\n }\n return result.filter(n => !mergedNodes.has(n));\n}\nfunction checkOutletNameUniqueness(nodes) {\n const names = {};\n nodes.forEach(n => {\n const routeWithSameOutletName = names[n.value.outlet];\n if (routeWithSameOutletName) {\n const p = routeWithSameOutletName.url.map(s => s.toString()).join('/');\n const c = n.value.url.map(s => s.toString()).join('/');\n throw new ɵRuntimeError(4006 /* RuntimeErrorCode.TWO_SEGMENTS_WITH_SAME_OUTLET */, (typeof ngDevMode === 'undefined' || ngDevMode) && `Two segments cannot have the same outlet name: '${p}' and '${c}'.`);\n }\n names[n.value.outlet] = n.value;\n });\n}\nfunction getData(route) {\n return route.data || {};\n}\nfunction getResolve(route) {\n return route.resolve || {};\n}\nfunction recognize(injector, configLoader, rootComponentType, config, serializer, paramsInheritanceStrategy) {\n return mergeMap(t => recognize$1(injector, configLoader, rootComponentType, config, t.extractedUrl, serializer, paramsInheritanceStrategy).pipe(map(({\n state: targetSnapshot,\n tree: urlAfterRedirects\n }) => {\n return {\n ...t,\n targetSnapshot,\n urlAfterRedirects\n };\n })));\n}\nfunction resolveData(paramsInheritanceStrategy, injector) {\n return mergeMap(t => {\n const {\n targetSnapshot,\n guards: {\n canActivateChecks\n }\n } = t;\n if (!canActivateChecks.length) {\n return of(t);\n }\n // Iterating a Set in javascript happens in insertion order so it is safe to use a `Set` to\n // preserve the correct order that the resolvers should run in.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set#description\n const routesWithResolversToRun = new Set(canActivateChecks.map(check => check.route));\n const routesNeedingDataUpdates = new Set();\n for (const route of routesWithResolversToRun) {\n if (routesNeedingDataUpdates.has(route)) {\n continue;\n }\n // All children under the route with a resolver to run need to recompute inherited data.\n for (const newRoute of flattenRouteTree(route)) {\n routesNeedingDataUpdates.add(newRoute);\n }\n }\n let routesProcessed = 0;\n return from(routesNeedingDataUpdates).pipe(concatMap(route => {\n if (routesWithResolversToRun.has(route)) {\n return runResolve(route, targetSnapshot, paramsInheritanceStrategy, injector);\n } else {\n route.data = getInherited(route, route.parent, paramsInheritanceStrategy).resolve;\n return of(void 0);\n }\n }), tap(() => routesProcessed++), takeLast(1), mergeMap(_ => routesProcessed === routesNeedingDataUpdates.size ? of(t) : EMPTY));\n });\n}\n/**\n * Returns the `ActivatedRouteSnapshot` tree as an array, using DFS to traverse the route tree.\n */\nfunction flattenRouteTree(route) {\n const descendants = route.children.map(child => flattenRouteTree(child)).flat();\n return [route, ...descendants];\n}\nfunction runResolve(futureARS, futureRSS, paramsInheritanceStrategy, injector) {\n const config = futureARS.routeConfig;\n const resolve = futureARS._resolve;\n if (config?.title !== undefined && !hasStaticTitle(config)) {\n resolve[RouteTitleKey] = config.title;\n }\n return resolveNode(resolve, futureARS, futureRSS, injector).pipe(map(resolvedData => {\n futureARS._resolvedData = resolvedData;\n futureARS.data = getInherited(futureARS, futureARS.parent, paramsInheritanceStrategy).resolve;\n return null;\n }));\n}\nfunction resolveNode(resolve, futureARS, futureRSS, injector) {\n const keys = getDataKeys(resolve);\n if (keys.length === 0) {\n return of({});\n }\n const data = {};\n return from(keys).pipe(mergeMap(key => getResolver(resolve[key], futureARS, futureRSS, injector).pipe(first(), tap(value => {\n data[key] = value;\n }))), takeLast(1), mapTo(data), catchError(e => isEmptyError(e) ? EMPTY : throwError(e)));\n}\nfunction getResolver(injectionToken, futureARS, futureRSS, injector) {\n const closestInjector = getClosestRouteInjector(futureARS) ?? injector;\n const resolver = getTokenOrFunctionIdentity(injectionToken, closestInjector);\n const resolverValue = resolver.resolve ? resolver.resolve(futureARS, futureRSS) : runInInjectionContext(closestInjector, () => resolver(futureARS, futureRSS));\n return wrapIntoObservable(resolverValue);\n}\n\n/**\n * Perform a side effect through a switchMap for every emission on the source Observable,\n * but return an Observable that is identical to the source. It's essentially the same as\n * the `tap` operator, but if the side effectful `next` function returns an ObservableInput,\n * it will wait before continuing with the original value.\n */\nfunction switchTap(next) {\n return switchMap(v => {\n const nextResult = next(v);\n if (nextResult) {\n return from(nextResult).pipe(map(() => v));\n }\n return of(v);\n });\n}\n\n/**\n * Provides a strategy for setting the page title after a router navigation.\n *\n * The built-in implementation traverses the router state snapshot and finds the deepest primary\n * outlet with `title` property. Given the `Routes` below, navigating to\n * `/base/child(popup:aux)` would result in the document title being set to \"child\".\n * ```\n * [\n * {path: 'base', title: 'base', children: [\n * {path: 'child', title: 'child'},\n * ],\n * {path: 'aux', outlet: 'popup', title: 'popupTitle'}\n * ]\n * ```\n *\n * This class can be used as a base class for custom title strategies. That is, you can create your\n * own class that extends the `TitleStrategy`. Note that in the above example, the `title`\n * from the named outlet is never used. However, a custom strategy might be implemented to\n * incorporate titles in named outlets.\n *\n * @publicApi\n * @see [Page title guide](guide/router#setting-the-page-title)\n */\nclass TitleStrategy {\n /**\n * @returns The `title` of the deepest primary route.\n */\n buildTitle(snapshot) {\n let pageTitle;\n let route = snapshot.root;\n while (route !== undefined) {\n pageTitle = this.getResolvedTitleForRoute(route) ?? pageTitle;\n route = route.children.find(child => child.outlet === PRIMARY_OUTLET);\n }\n return pageTitle;\n }\n /**\n * Given an `ActivatedRouteSnapshot`, returns the final value of the\n * `Route.title` property, which can either be a static string or a resolved value.\n */\n getResolvedTitleForRoute(snapshot) {\n return snapshot.data[RouteTitleKey];\n }\n static {\n this.ɵfac = function TitleStrategy_Factory(t) {\n return new (t || TitleStrategy)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: TitleStrategy,\n factory: () => (() => inject(DefaultTitleStrategy))(),\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(TitleStrategy, [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: () => inject(DefaultTitleStrategy)\n }]\n }], null, null);\n})();\n/**\n * The default `TitleStrategy` used by the router that updates the title using the `Title` service.\n */\nclass DefaultTitleStrategy extends TitleStrategy {\n constructor(title) {\n super();\n this.title = title;\n }\n /**\n * Sets the title of the browser to the given value.\n *\n * @param title The `pageTitle` from the deepest primary route.\n */\n updateTitle(snapshot) {\n const title = this.buildTitle(snapshot);\n if (title !== undefined) {\n this.title.setTitle(title);\n }\n }\n static {\n this.ɵfac = function DefaultTitleStrategy_Factory(t) {\n return new (t || DefaultTitleStrategy)(i0.ɵɵinject(i1.Title));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DefaultTitleStrategy,\n factory: DefaultTitleStrategy.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DefaultTitleStrategy, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: i1.Title\n }], null);\n})();\n\n/**\n * A [DI token](guide/glossary/#di-token) for the router service.\n *\n * @publicApi\n */\nconst ROUTER_CONFIGURATION = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'router config' : '', {\n providedIn: 'root',\n factory: () => ({})\n});\n\n/**\n * The [DI token](guide/glossary/#di-token) for a router configuration.\n *\n * `ROUTES` is a low level API for router configuration via dependency injection.\n *\n * We recommend that in almost all cases to use higher level APIs such as `RouterModule.forRoot()`,\n * `provideRouter`, or `Router.resetConfig()`.\n *\n * @publicApi\n */\nconst ROUTES = new InjectionToken('ROUTES');\nclass RouterConfigLoader {\n constructor() {\n this.componentLoaders = new WeakMap();\n this.childrenLoaders = new WeakMap();\n this.compiler = inject(Compiler);\n }\n loadComponent(route) {\n if (this.componentLoaders.get(route)) {\n return this.componentLoaders.get(route);\n } else if (route._loadedComponent) {\n return of(route._loadedComponent);\n }\n if (this.onLoadStartListener) {\n this.onLoadStartListener(route);\n }\n const loadRunner = wrapIntoObservable(route.loadComponent()).pipe(map(maybeUnwrapDefaultExport), tap(component => {\n if (this.onLoadEndListener) {\n this.onLoadEndListener(route);\n }\n (typeof ngDevMode === 'undefined' || ngDevMode) && assertStandalone(route.path ?? '', component);\n route._loadedComponent = component;\n }), finalize(() => {\n this.componentLoaders.delete(route);\n }));\n // Use custom ConnectableObservable as share in runners pipe increasing the bundle size too much\n const loader = new ConnectableObservable(loadRunner, () => new Subject()).pipe(refCount());\n this.componentLoaders.set(route, loader);\n return loader;\n }\n loadChildren(parentInjector, route) {\n if (this.childrenLoaders.get(route)) {\n return this.childrenLoaders.get(route);\n } else if (route._loadedRoutes) {\n return of({\n routes: route._loadedRoutes,\n injector: route._loadedInjector\n });\n }\n if (this.onLoadStartListener) {\n this.onLoadStartListener(route);\n }\n const moduleFactoryOrRoutes$ = loadChildren(route, this.compiler, parentInjector, this.onLoadEndListener);\n const loadRunner = moduleFactoryOrRoutes$.pipe(finalize(() => {\n this.childrenLoaders.delete(route);\n }));\n // Use custom ConnectableObservable as share in runners pipe increasing the bundle size too much\n const loader = new ConnectableObservable(loadRunner, () => new Subject()).pipe(refCount());\n this.childrenLoaders.set(route, loader);\n return loader;\n }\n static {\n this.ɵfac = function RouterConfigLoader_Factory(t) {\n return new (t || RouterConfigLoader)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RouterConfigLoader,\n factory: RouterConfigLoader.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RouterConfigLoader, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\n/**\n * Executes a `route.loadChildren` callback and converts the result to an array of child routes and\n * an injector if that callback returned a module.\n *\n * This function is used for the route discovery during prerendering\n * in @angular-devkit/build-angular. If there are any updates to the contract here, it will require\n * an update to the extractor.\n */\nfunction loadChildren(route, compiler, parentInjector, onLoadEndListener) {\n return wrapIntoObservable(route.loadChildren()).pipe(map(maybeUnwrapDefaultExport), mergeMap(t => {\n if (t instanceof NgModuleFactory || Array.isArray(t)) {\n return of(t);\n } else {\n return from(compiler.compileModuleAsync(t));\n }\n }), map(factoryOrRoutes => {\n if (onLoadEndListener) {\n onLoadEndListener(route);\n }\n // This injector comes from the `NgModuleRef` when lazy loading an `NgModule`. There is\n // no injector associated with lazy loading a `Route` array.\n let injector;\n let rawRoutes;\n let requireStandaloneComponents = false;\n if (Array.isArray(factoryOrRoutes)) {\n rawRoutes = factoryOrRoutes;\n requireStandaloneComponents = true;\n } else {\n injector = factoryOrRoutes.create(parentInjector).injector;\n // When loading a module that doesn't provide `RouterModule.forChild()` preloader\n // will get stuck in an infinite loop. The child module's Injector will look to\n // its parent `Injector` when it doesn't find any ROUTES so it will return routes\n // for it's parent module instead.\n rawRoutes = injector.get(ROUTES, [], {\n optional: true,\n self: true\n }).flat();\n }\n const routes = rawRoutes.map(standardizeConfig);\n (typeof ngDevMode === 'undefined' || ngDevMode) && validateConfig(routes, route.path, requireStandaloneComponents);\n return {\n routes,\n injector\n };\n }));\n}\nfunction isWrappedDefaultExport(value) {\n // We use `in` here with a string key `'default'`, because we expect `DefaultExport` objects to be\n // dynamically imported ES modules with a spec-mandated `default` key. Thus we don't expect that\n // `default` will be a renamed property.\n return value && typeof value === 'object' && 'default' in value;\n}\nfunction maybeUnwrapDefaultExport(input) {\n // As per `isWrappedDefaultExport`, the `default` key here is generated by the browser and not\n // subject to property renaming, so we reference it with bracket access.\n return isWrappedDefaultExport(input) ? input['default'] : input;\n}\n\n/**\n * @description\n *\n * Provides a way to migrate AngularJS applications to Angular.\n *\n * @publicApi\n */\nclass UrlHandlingStrategy {\n static {\n this.ɵfac = function UrlHandlingStrategy_Factory(t) {\n return new (t || UrlHandlingStrategy)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: UrlHandlingStrategy,\n factory: () => (() => inject(DefaultUrlHandlingStrategy))(),\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(UrlHandlingStrategy, [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: () => inject(DefaultUrlHandlingStrategy)\n }]\n }], null, null);\n})();\n/**\n * @publicApi\n */\nclass DefaultUrlHandlingStrategy {\n shouldProcessUrl(url) {\n return true;\n }\n extract(url) {\n return url;\n }\n merge(newUrlPart, wholeUrl) {\n return newUrlPart;\n }\n static {\n this.ɵfac = function DefaultUrlHandlingStrategy_Factory(t) {\n return new (t || DefaultUrlHandlingStrategy)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DefaultUrlHandlingStrategy,\n factory: DefaultUrlHandlingStrategy.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DefaultUrlHandlingStrategy, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\n\n/// \nconst CREATE_VIEW_TRANSITION = new InjectionToken(ngDevMode ? 'view transition helper' : '');\nconst VIEW_TRANSITION_OPTIONS = new InjectionToken(ngDevMode ? 'view transition options' : '');\n/**\n * A helper function for using browser view transitions. This function skips the call to\n * `startViewTransition` if the browser does not support it.\n *\n * @returns A Promise that resolves when the view transition callback begins.\n */\nfunction createViewTransition(injector, from, to) {\n const transitionOptions = injector.get(VIEW_TRANSITION_OPTIONS);\n const document = injector.get(DOCUMENT);\n // Create promises outside the Angular zone to avoid causing extra change detections\n return injector.get(NgZone).runOutsideAngular(() => {\n if (!document.startViewTransition || transitionOptions.skipNextTransition) {\n transitionOptions.skipNextTransition = false;\n return Promise.resolve();\n }\n let resolveViewTransitionStarted;\n const viewTransitionStarted = new Promise(resolve => {\n resolveViewTransitionStarted = resolve;\n });\n const transition = document.startViewTransition(() => {\n resolveViewTransitionStarted();\n // We don't actually update dom within the transition callback. The resolving of the above\n // promise unblocks the Router navigation, which synchronously activates and deactivates\n // routes (the DOM update). This view transition waits for the next change detection to\n // complete (below), which includes the update phase of the routed components.\n return createRenderPromise(injector);\n });\n const {\n onViewTransitionCreated\n } = transitionOptions;\n if (onViewTransitionCreated) {\n runInInjectionContext(injector, () => onViewTransitionCreated({\n transition,\n from,\n to\n }));\n }\n return viewTransitionStarted;\n });\n}\n/**\n * Creates a promise that resolves after next render.\n */\nfunction createRenderPromise(injector) {\n return new Promise(resolve => {\n afterNextRender(resolve, {\n injector\n });\n });\n}\nclass NavigationTransitions {\n get hasRequestedNavigation() {\n return this.navigationId !== 0;\n }\n constructor() {\n this.currentNavigation = null;\n this.currentTransition = null;\n this.lastSuccessfulNavigation = null;\n /**\n * These events are used to communicate back to the Router about the state of the transition. The\n * Router wants to respond to these events in various ways. Because the `NavigationTransition`\n * class is not public, this event subject is not publicly exposed.\n */\n this.events = new Subject();\n /**\n * Used to abort the current transition with an error.\n */\n this.transitionAbortSubject = new Subject();\n this.configLoader = inject(RouterConfigLoader);\n this.environmentInjector = inject(EnvironmentInjector);\n this.urlSerializer = inject(UrlSerializer);\n this.rootContexts = inject(ChildrenOutletContexts);\n this.location = inject(Location);\n this.inputBindingEnabled = inject(INPUT_BINDER, {\n optional: true\n }) !== null;\n this.titleStrategy = inject(TitleStrategy);\n this.options = inject(ROUTER_CONFIGURATION, {\n optional: true\n }) || {};\n this.paramsInheritanceStrategy = this.options.paramsInheritanceStrategy || 'emptyOnly';\n this.urlHandlingStrategy = inject(UrlHandlingStrategy);\n this.createViewTransition = inject(CREATE_VIEW_TRANSITION, {\n optional: true\n });\n this.navigationId = 0;\n /**\n * Hook that enables you to pause navigation after the preactivation phase.\n * Used by `RouterModule`.\n *\n * @internal\n */\n this.afterPreactivation = () => of(void 0);\n /** @internal */\n this.rootComponentType = null;\n const onLoadStart = r => this.events.next(new RouteConfigLoadStart(r));\n const onLoadEnd = r => this.events.next(new RouteConfigLoadEnd(r));\n this.configLoader.onLoadEndListener = onLoadEnd;\n this.configLoader.onLoadStartListener = onLoadStart;\n }\n complete() {\n this.transitions?.complete();\n }\n handleNavigationRequest(request) {\n const id = ++this.navigationId;\n this.transitions?.next({\n ...this.transitions.value,\n ...request,\n id\n });\n }\n setupNavigations(router, initialUrlTree, initialRouterState) {\n this.transitions = new BehaviorSubject({\n id: 0,\n currentUrlTree: initialUrlTree,\n currentRawUrl: initialUrlTree,\n extractedUrl: this.urlHandlingStrategy.extract(initialUrlTree),\n urlAfterRedirects: this.urlHandlingStrategy.extract(initialUrlTree),\n rawUrl: initialUrlTree,\n extras: {},\n resolve: null,\n reject: null,\n promise: Promise.resolve(true),\n source: IMPERATIVE_NAVIGATION,\n restoredState: null,\n currentSnapshot: initialRouterState.snapshot,\n targetSnapshot: null,\n currentRouterState: initialRouterState,\n targetRouterState: null,\n guards: {\n canActivateChecks: [],\n canDeactivateChecks: []\n },\n guardsResult: null\n });\n return this.transitions.pipe(filter(t => t.id !== 0),\n // Extract URL\n map(t => ({\n ...t,\n extractedUrl: this.urlHandlingStrategy.extract(t.rawUrl)\n })),\n // Using switchMap so we cancel executing navigations when a new one comes in\n switchMap(overallTransitionState => {\n this.currentTransition = overallTransitionState;\n let completed = false;\n let errored = false;\n return of(overallTransitionState).pipe(\n // Store the Navigation object\n tap(t => {\n this.currentNavigation = {\n id: t.id,\n initialUrl: t.rawUrl,\n extractedUrl: t.extractedUrl,\n trigger: t.source,\n extras: t.extras,\n previousNavigation: !this.lastSuccessfulNavigation ? null : {\n ...this.lastSuccessfulNavigation,\n previousNavigation: null\n }\n };\n }), switchMap(t => {\n const urlTransition = !router.navigated || this.isUpdatingInternalState() || this.isUpdatedBrowserUrl();\n const onSameUrlNavigation = t.extras.onSameUrlNavigation ?? router.onSameUrlNavigation;\n if (!urlTransition && onSameUrlNavigation !== 'reload') {\n const reason = typeof ngDevMode === 'undefined' || ngDevMode ? `Navigation to ${t.rawUrl} was ignored because it is the same as the current Router URL.` : '';\n this.events.next(new NavigationSkipped(t.id, this.urlSerializer.serialize(t.rawUrl), reason, 0 /* NavigationSkippedCode.IgnoredSameUrlNavigation */));\n t.resolve(null);\n return EMPTY;\n }\n if (this.urlHandlingStrategy.shouldProcessUrl(t.rawUrl)) {\n return of(t).pipe(\n // Fire NavigationStart event\n switchMap(t => {\n const transition = this.transitions?.getValue();\n this.events.next(new NavigationStart(t.id, this.urlSerializer.serialize(t.extractedUrl), t.source, t.restoredState));\n if (transition !== this.transitions?.getValue()) {\n return EMPTY;\n }\n // This delay is required to match old behavior that forced\n // navigation to always be async\n return Promise.resolve(t);\n }),\n // Recognize\n recognize(this.environmentInjector, this.configLoader, this.rootComponentType, router.config, this.urlSerializer, this.paramsInheritanceStrategy),\n // Update URL if in `eager` update mode\n tap(t => {\n overallTransitionState.targetSnapshot = t.targetSnapshot;\n overallTransitionState.urlAfterRedirects = t.urlAfterRedirects;\n this.currentNavigation = {\n ...this.currentNavigation,\n finalUrl: t.urlAfterRedirects\n };\n // Fire RoutesRecognized\n const routesRecognized = new RoutesRecognized(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects), t.targetSnapshot);\n this.events.next(routesRecognized);\n }));\n } else if (urlTransition && this.urlHandlingStrategy.shouldProcessUrl(t.currentRawUrl)) {\n /* When the current URL shouldn't be processed, but the previous one\n * was, we handle this \"error condition\" by navigating to the\n * previously successful URL, but leaving the URL intact.*/\n const {\n id,\n extractedUrl,\n source,\n restoredState,\n extras\n } = t;\n const navStart = new NavigationStart(id, this.urlSerializer.serialize(extractedUrl), source, restoredState);\n this.events.next(navStart);\n const targetSnapshot = createEmptyState(extractedUrl, this.rootComponentType).snapshot;\n this.currentTransition = overallTransitionState = {\n ...t,\n targetSnapshot,\n urlAfterRedirects: extractedUrl,\n extras: {\n ...extras,\n skipLocationChange: false,\n replaceUrl: false\n }\n };\n this.currentNavigation.finalUrl = extractedUrl;\n return of(overallTransitionState);\n } else {\n /* When neither the current or previous URL can be processed, do\n * nothing other than update router's internal reference to the\n * current \"settled\" URL. This way the next navigation will be coming\n * from the current URL in the browser.\n */\n const reason = typeof ngDevMode === 'undefined' || ngDevMode ? `Navigation was ignored because the UrlHandlingStrategy` + ` indicated neither the current URL ${t.currentRawUrl} nor target URL ${t.rawUrl} should be processed.` : '';\n this.events.next(new NavigationSkipped(t.id, this.urlSerializer.serialize(t.extractedUrl), reason, 1 /* NavigationSkippedCode.IgnoredByUrlHandlingStrategy */));\n t.resolve(null);\n return EMPTY;\n }\n }),\n // --- GUARDS ---\n tap(t => {\n const guardsStart = new GuardsCheckStart(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects), t.targetSnapshot);\n this.events.next(guardsStart);\n }), map(t => {\n this.currentTransition = overallTransitionState = {\n ...t,\n guards: getAllRouteGuards(t.targetSnapshot, t.currentSnapshot, this.rootContexts)\n };\n return overallTransitionState;\n }), checkGuards(this.environmentInjector, evt => this.events.next(evt)), tap(t => {\n overallTransitionState.guardsResult = t.guardsResult;\n if (isUrlTree(t.guardsResult)) {\n throw redirectingNavigationError(this.urlSerializer, t.guardsResult);\n }\n const guardsEnd = new GuardsCheckEnd(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects), t.targetSnapshot, !!t.guardsResult);\n this.events.next(guardsEnd);\n }), filter(t => {\n if (!t.guardsResult) {\n this.cancelNavigationTransition(t, '', 3 /* NavigationCancellationCode.GuardRejected */);\n return false;\n }\n return true;\n }),\n // --- RESOLVE ---\n switchTap(t => {\n if (t.guards.canActivateChecks.length) {\n return of(t).pipe(tap(t => {\n const resolveStart = new ResolveStart(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects), t.targetSnapshot);\n this.events.next(resolveStart);\n }), switchMap(t => {\n let dataResolved = false;\n return of(t).pipe(resolveData(this.paramsInheritanceStrategy, this.environmentInjector), tap({\n next: () => dataResolved = true,\n complete: () => {\n if (!dataResolved) {\n this.cancelNavigationTransition(t, typeof ngDevMode === 'undefined' || ngDevMode ? `At least one route resolver didn't emit any value.` : '', 2 /* NavigationCancellationCode.NoDataFromResolver */);\n }\n }\n }));\n }), tap(t => {\n const resolveEnd = new ResolveEnd(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects), t.targetSnapshot);\n this.events.next(resolveEnd);\n }));\n }\n return undefined;\n }),\n // --- LOAD COMPONENTS ---\n switchTap(t => {\n const loadComponents = route => {\n const loaders = [];\n if (route.routeConfig?.loadComponent && !route.routeConfig._loadedComponent) {\n loaders.push(this.configLoader.loadComponent(route.routeConfig).pipe(tap(loadedComponent => {\n route.component = loadedComponent;\n }), map(() => void 0)));\n }\n for (const child of route.children) {\n loaders.push(...loadComponents(child));\n }\n return loaders;\n };\n return combineLatest(loadComponents(t.targetSnapshot.root)).pipe(defaultIfEmpty(), take(1));\n }), switchTap(() => this.afterPreactivation()), switchMap(() => {\n const {\n currentSnapshot,\n targetSnapshot\n } = overallTransitionState;\n const viewTransitionStarted = this.createViewTransition?.(this.environmentInjector, currentSnapshot.root, targetSnapshot.root);\n // If view transitions are enabled, block the navigation until the view\n // transition callback starts. Otherwise, continue immediately.\n return viewTransitionStarted ? from(viewTransitionStarted).pipe(map(() => overallTransitionState)) : of(overallTransitionState);\n }), map(t => {\n const targetRouterState = createRouterState(router.routeReuseStrategy, t.targetSnapshot, t.currentRouterState);\n this.currentTransition = overallTransitionState = {\n ...t,\n targetRouterState\n };\n this.currentNavigation.targetRouterState = targetRouterState;\n return overallTransitionState;\n }), tap(() => {\n this.events.next(new BeforeActivateRoutes());\n }), activateRoutes(this.rootContexts, router.routeReuseStrategy, evt => this.events.next(evt), this.inputBindingEnabled),\n // Ensure that if some observable used to drive the transition doesn't\n // complete, the navigation still finalizes This should never happen, but\n // this is done as a safety measure to avoid surfacing this error (#49567).\n take(1), tap({\n next: t => {\n completed = true;\n this.lastSuccessfulNavigation = this.currentNavigation;\n this.events.next(new NavigationEnd(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects)));\n this.titleStrategy?.updateTitle(t.targetRouterState.snapshot);\n t.resolve(true);\n },\n complete: () => {\n completed = true;\n }\n }),\n // There used to be a lot more logic happening directly within the\n // transition Observable. Some of this logic has been refactored out to\n // other places but there may still be errors that happen there. This gives\n // us a way to cancel the transition from the outside. This may also be\n // required in the future to support something like the abort signal of the\n // Navigation API where the navigation gets aborted from outside the\n // transition.\n takeUntil(this.transitionAbortSubject.pipe(tap(err => {\n throw err;\n }))), finalize(() => {\n /* When the navigation stream finishes either through error or success,\n * we set the `completed` or `errored` flag. However, there are some\n * situations where we could get here without either of those being set.\n * For instance, a redirect during NavigationStart. Therefore, this is a\n * catch-all to make sure the NavigationCancel event is fired when a\n * navigation gets cancelled but not caught by other means. */\n if (!completed && !errored) {\n const cancelationReason = typeof ngDevMode === 'undefined' || ngDevMode ? `Navigation ID ${overallTransitionState.id} is not equal to the current navigation id ${this.navigationId}` : '';\n this.cancelNavigationTransition(overallTransitionState, cancelationReason, 1 /* NavigationCancellationCode.SupersededByNewNavigation */);\n }\n // Only clear current navigation if it is still set to the one that\n // finalized.\n if (this.currentNavigation?.id === overallTransitionState.id) {\n this.currentNavigation = null;\n }\n }), catchError(e => {\n errored = true;\n /* This error type is issued during Redirect, and is handled as a\n * cancellation rather than an error. */\n if (isNavigationCancelingError$1(e)) {\n this.events.next(new NavigationCancel(overallTransitionState.id, this.urlSerializer.serialize(overallTransitionState.extractedUrl), e.message, e.cancellationCode));\n // When redirecting, we need to delay resolving the navigation\n // promise and push it to the redirect navigation\n if (!isRedirectingNavigationCancelingError$1(e)) {\n overallTransitionState.resolve(false);\n } else {\n this.events.next(new RedirectRequest(e.url));\n }\n /* All other errors should reset to the router's internal URL reference\n * to the pre-error state. */\n } else {\n this.events.next(new NavigationError(overallTransitionState.id, this.urlSerializer.serialize(overallTransitionState.extractedUrl), e, overallTransitionState.targetSnapshot ?? undefined));\n try {\n overallTransitionState.resolve(router.errorHandler(e));\n } catch (ee) {\n overallTransitionState.reject(ee);\n }\n }\n return EMPTY;\n }));\n // casting because `pipe` returns observable({}) when called with 8+ arguments\n }));\n }\n\n cancelNavigationTransition(t, reason, code) {\n const navCancel = new NavigationCancel(t.id, this.urlSerializer.serialize(t.extractedUrl), reason, code);\n this.events.next(navCancel);\n t.resolve(false);\n }\n /**\n * @returns Whether we're navigating to somewhere that is not what the Router is\n * currently set to.\n */\n isUpdatingInternalState() {\n // TODO(atscott): The serializer should likely be used instead of\n // `UrlTree.toString()`. Custom serializers are often written to handle\n // things better than the default one (objects, for example will be\n // [Object object] with the custom serializer and be \"the same\" when they\n // aren't).\n // (Same for isUpdatedBrowserUrl)\n return this.currentTransition?.extractedUrl.toString() !== this.currentTransition?.currentUrlTree.toString();\n }\n /**\n * @returns Whether we're updating the browser URL to something new (navigation is going\n * to somewhere not displayed in the URL bar and we will update the URL\n * bar if navigation succeeds).\n */\n isUpdatedBrowserUrl() {\n // The extracted URL is the part of the URL that this application cares about. `extract` may\n // return only part of the browser URL and that part may have not changed even if some other\n // portion of the URL did.\n const extractedBrowserUrl = this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(true)));\n return extractedBrowserUrl.toString() !== this.currentTransition?.extractedUrl.toString() && !this.currentTransition?.extras.skipLocationChange;\n }\n static {\n this.ɵfac = function NavigationTransitions_Factory(t) {\n return new (t || NavigationTransitions)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NavigationTransitions,\n factory: NavigationTransitions.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NavigationTransitions, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [], null);\n})();\nfunction isBrowserTriggeredNavigation(source) {\n return source !== IMPERATIVE_NAVIGATION;\n}\n\n/**\n * @description\n *\n * Provides a way to customize when activated routes get reused.\n *\n * @publicApi\n */\nclass RouteReuseStrategy {\n static {\n this.ɵfac = function RouteReuseStrategy_Factory(t) {\n return new (t || RouteReuseStrategy)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RouteReuseStrategy,\n factory: () => (() => inject(DefaultRouteReuseStrategy))(),\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RouteReuseStrategy, [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: () => inject(DefaultRouteReuseStrategy)\n }]\n }], null, null);\n})();\n/**\n * @description\n *\n * This base route reuse strategy only reuses routes when the matched router configs are\n * identical. This prevents components from being destroyed and recreated\n * when just the route parameters, query parameters or fragment change\n * (that is, the existing component is _reused_).\n *\n * This strategy does not store any routes for later reuse.\n *\n * Angular uses this strategy by default.\n *\n *\n * It can be used as a base class for custom route reuse strategies, i.e. you can create your own\n * class that extends the `BaseRouteReuseStrategy` one.\n * @publicApi\n */\nclass BaseRouteReuseStrategy {\n /**\n * Whether the given route should detach for later reuse.\n * Always returns false for `BaseRouteReuseStrategy`.\n * */\n shouldDetach(route) {\n return false;\n }\n /**\n * A no-op; the route is never stored since this strategy never detaches routes for later re-use.\n */\n store(route, detachedTree) {}\n /** Returns `false`, meaning the route (and its subtree) is never reattached */\n shouldAttach(route) {\n return false;\n }\n /** Returns `null` because this strategy does not store routes for later re-use. */\n retrieve(route) {\n return null;\n }\n /**\n * Determines if a route should be reused.\n * This strategy returns `true` when the future route config and current route config are\n * identical.\n */\n shouldReuseRoute(future, curr) {\n return future.routeConfig === curr.routeConfig;\n }\n}\nclass DefaultRouteReuseStrategy extends BaseRouteReuseStrategy {\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵDefaultRouteReuseStrategy_BaseFactory;\n return function DefaultRouteReuseStrategy_Factory(t) {\n return (ɵDefaultRouteReuseStrategy_BaseFactory || (ɵDefaultRouteReuseStrategy_BaseFactory = i0.ɵɵgetInheritedFactory(DefaultRouteReuseStrategy)))(t || DefaultRouteReuseStrategy);\n };\n })();\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DefaultRouteReuseStrategy,\n factory: DefaultRouteReuseStrategy.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DefaultRouteReuseStrategy, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\nclass StateManager {\n static {\n this.ɵfac = function StateManager_Factory(t) {\n return new (t || StateManager)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: StateManager,\n factory: () => (() => inject(HistoryStateManager))(),\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(StateManager, [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: () => inject(HistoryStateManager)\n }]\n }], null, null);\n})();\nclass HistoryStateManager extends StateManager {\n constructor() {\n super(...arguments);\n this.location = inject(Location);\n this.urlSerializer = inject(UrlSerializer);\n this.options = inject(ROUTER_CONFIGURATION, {\n optional: true\n }) || {};\n this.canceledNavigationResolution = this.options.canceledNavigationResolution || 'replace';\n this.urlHandlingStrategy = inject(UrlHandlingStrategy);\n this.urlUpdateStrategy = this.options.urlUpdateStrategy || 'deferred';\n this.currentUrlTree = new UrlTree();\n this.rawUrlTree = this.currentUrlTree;\n /**\n * The id of the currently active page in the router.\n * Updated to the transition's target id on a successful navigation.\n *\n * This is used to track what page the router last activated. When an attempted navigation fails,\n * the router can then use this to compute how to restore the state back to the previously active\n * page.\n */\n this.currentPageId = 0;\n this.lastSuccessfulId = -1;\n this.routerState = createEmptyState(this.currentUrlTree, null);\n this.stateMemento = this.createStateMemento();\n }\n getCurrentUrlTree() {\n return this.currentUrlTree;\n }\n getRawUrlTree() {\n return this.rawUrlTree;\n }\n restoredState() {\n return this.location.getState();\n }\n /**\n * The ɵrouterPageId of whatever page is currently active in the browser history. This is\n * important for computing the target page id for new navigations because we need to ensure each\n * page id in the browser history is 1 more than the previous entry.\n */\n get browserPageId() {\n if (this.canceledNavigationResolution !== 'computed') {\n return this.currentPageId;\n }\n return this.restoredState()?.ɵrouterPageId ?? this.currentPageId;\n }\n getRouterState() {\n return this.routerState;\n }\n createStateMemento() {\n return {\n rawUrlTree: this.rawUrlTree,\n currentUrlTree: this.currentUrlTree,\n routerState: this.routerState\n };\n }\n registerNonRouterCurrentEntryChangeListener(listener) {\n return this.location.subscribe(event => {\n if (event['type'] === 'popstate') {\n listener(event['url'], event.state);\n }\n });\n }\n handleRouterEvent(e, currentTransition) {\n if (e instanceof NavigationStart) {\n this.stateMemento = this.createStateMemento();\n } else if (e instanceof NavigationSkipped) {\n this.rawUrlTree = currentTransition.initialUrl;\n } else if (e instanceof RoutesRecognized) {\n if (this.urlUpdateStrategy === 'eager') {\n if (!currentTransition.extras.skipLocationChange) {\n const rawUrl = this.urlHandlingStrategy.merge(currentTransition.finalUrl, currentTransition.initialUrl);\n this.setBrowserUrl(rawUrl, currentTransition);\n }\n }\n } else if (e instanceof BeforeActivateRoutes) {\n this.currentUrlTree = currentTransition.finalUrl;\n this.rawUrlTree = this.urlHandlingStrategy.merge(currentTransition.finalUrl, currentTransition.initialUrl);\n this.routerState = currentTransition.targetRouterState;\n if (this.urlUpdateStrategy === 'deferred') {\n if (!currentTransition.extras.skipLocationChange) {\n this.setBrowserUrl(this.rawUrlTree, currentTransition);\n }\n }\n } else if (e instanceof NavigationCancel && (e.code === 3 /* NavigationCancellationCode.GuardRejected */ || e.code === 2 /* NavigationCancellationCode.NoDataFromResolver */)) {\n this.restoreHistory(currentTransition);\n } else if (e instanceof NavigationError) {\n this.restoreHistory(currentTransition, true);\n } else if (e instanceof NavigationEnd) {\n this.lastSuccessfulId = e.id;\n this.currentPageId = this.browserPageId;\n }\n }\n setBrowserUrl(url, transition) {\n const path = this.urlSerializer.serialize(url);\n if (this.location.isCurrentPathEqualTo(path) || !!transition.extras.replaceUrl) {\n // replacements do not update the target page\n const currentBrowserPageId = this.browserPageId;\n const state = {\n ...transition.extras.state,\n ...this.generateNgRouterState(transition.id, currentBrowserPageId)\n };\n this.location.replaceState(path, '', state);\n } else {\n const state = {\n ...transition.extras.state,\n ...this.generateNgRouterState(transition.id, this.browserPageId + 1)\n };\n this.location.go(path, '', state);\n }\n }\n /**\n * Performs the necessary rollback action to restore the browser URL to the\n * state before the transition.\n */\n restoreHistory(navigation, restoringFromCaughtError = false) {\n if (this.canceledNavigationResolution === 'computed') {\n const currentBrowserPageId = this.browserPageId;\n const targetPagePosition = this.currentPageId - currentBrowserPageId;\n if (targetPagePosition !== 0) {\n this.location.historyGo(targetPagePosition);\n } else if (this.currentUrlTree === navigation.finalUrl && targetPagePosition === 0) {\n // We got to the activation stage (where currentUrlTree is set to the navigation's\n // finalUrl), but we weren't moving anywhere in history (skipLocationChange or replaceUrl).\n // We still need to reset the router state back to what it was when the navigation started.\n this.resetState(navigation);\n this.resetUrlToCurrentUrlTree();\n } else {\n // The browser URL and router state was not updated before the navigation cancelled so\n // there's no restoration needed.\n }\n } else if (this.canceledNavigationResolution === 'replace') {\n // TODO(atscott): It seems like we should _always_ reset the state here. It would be a no-op\n // for `deferred` navigations that haven't change the internal state yet because guards\n // reject. For 'eager' navigations, it seems like we also really should reset the state\n // because the navigation was cancelled. Investigate if this can be done by running TGP.\n if (restoringFromCaughtError) {\n this.resetState(navigation);\n }\n this.resetUrlToCurrentUrlTree();\n }\n }\n resetState(navigation) {\n this.routerState = this.stateMemento.routerState;\n this.currentUrlTree = this.stateMemento.currentUrlTree;\n // Note here that we use the urlHandlingStrategy to get the reset `rawUrlTree` because it may be\n // configured to handle only part of the navigation URL. This means we would only want to reset\n // the part of the navigation handled by the Angular router rather than the whole URL. In\n // addition, the URLHandlingStrategy may be configured to specifically preserve parts of the URL\n // when merging, such as the query params so they are not lost on a refresh.\n this.rawUrlTree = this.urlHandlingStrategy.merge(this.currentUrlTree, navigation.finalUrl ?? this.rawUrlTree);\n }\n resetUrlToCurrentUrlTree() {\n this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree), '', this.generateNgRouterState(this.lastSuccessfulId, this.currentPageId));\n }\n generateNgRouterState(navigationId, routerPageId) {\n if (this.canceledNavigationResolution === 'computed') {\n return {\n navigationId,\n ɵrouterPageId: routerPageId\n };\n }\n return {\n navigationId\n };\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵHistoryStateManager_BaseFactory;\n return function HistoryStateManager_Factory(t) {\n return (ɵHistoryStateManager_BaseFactory || (ɵHistoryStateManager_BaseFactory = i0.ɵɵgetInheritedFactory(HistoryStateManager)))(t || HistoryStateManager);\n };\n })();\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HistoryStateManager,\n factory: HistoryStateManager.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(HistoryStateManager, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\nvar NavigationResult;\n(function (NavigationResult) {\n NavigationResult[NavigationResult[\"COMPLETE\"] = 0] = \"COMPLETE\";\n NavigationResult[NavigationResult[\"FAILED\"] = 1] = \"FAILED\";\n NavigationResult[NavigationResult[\"REDIRECTING\"] = 2] = \"REDIRECTING\";\n})(NavigationResult || (NavigationResult = {}));\n/**\n * Performs the given action once the router finishes its next/current navigation.\n *\n * The navigation is considered complete under the following conditions:\n * - `NavigationCancel` event emits and the code is not `NavigationCancellationCode.Redirect` or\n * `NavigationCancellationCode.SupersededByNewNavigation`. In these cases, the\n * redirecting/superseding navigation must finish.\n * - `NavigationError`, `NavigationEnd`, or `NavigationSkipped` event emits\n */\nfunction afterNextNavigation(router, action) {\n router.events.pipe(filter(e => e instanceof NavigationEnd || e instanceof NavigationCancel || e instanceof NavigationError || e instanceof NavigationSkipped), map(e => {\n if (e instanceof NavigationEnd || e instanceof NavigationSkipped) {\n return NavigationResult.COMPLETE;\n }\n const redirecting = e instanceof NavigationCancel ? e.code === 0 /* NavigationCancellationCode.Redirect */ || e.code === 1 /* NavigationCancellationCode.SupersededByNewNavigation */ : false;\n return redirecting ? NavigationResult.REDIRECTING : NavigationResult.FAILED;\n }), filter(result => result !== NavigationResult.REDIRECTING), take(1)).subscribe(() => {\n action();\n });\n}\nfunction defaultErrorHandler(error) {\n throw error;\n}\n/**\n * The equivalent `IsActiveMatchOptions` options for `Router.isActive` is called with `true`\n * (exact = true).\n */\nconst exactMatchOptions = {\n paths: 'exact',\n fragment: 'ignored',\n matrixParams: 'ignored',\n queryParams: 'exact'\n};\n/**\n * The equivalent `IsActiveMatchOptions` options for `Router.isActive` is called with `false`\n * (exact = false).\n */\nconst subsetMatchOptions = {\n paths: 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored',\n queryParams: 'subset'\n};\n/**\n * @description\n *\n * A service that provides navigation among views and URL manipulation capabilities.\n *\n * @see {@link Route}\n * @see [Routing and Navigation Guide](guide/router).\n *\n * @ngModule RouterModule\n *\n * @publicApi\n */\nclass Router {\n get currentUrlTree() {\n return this.stateManager.getCurrentUrlTree();\n }\n get rawUrlTree() {\n return this.stateManager.getRawUrlTree();\n }\n /**\n * An event stream for routing events.\n */\n get events() {\n // TODO(atscott): This _should_ be events.asObservable(). However, this change requires internal\n // cleanup: tests are doing `(route.events as Subject).next(...)`. This isn't\n // allowed/supported but we still have to fix these or file bugs against the teams before making\n // the change.\n return this._events;\n }\n /**\n * The current state of routing in this NgModule.\n */\n get routerState() {\n return this.stateManager.getRouterState();\n }\n constructor() {\n this.disposed = false;\n this.isNgZoneEnabled = false;\n this.console = inject(ɵConsole);\n this.stateManager = inject(StateManager);\n this.options = inject(ROUTER_CONFIGURATION, {\n optional: true\n }) || {};\n this.pendingTasks = inject(ɵInitialRenderPendingTasks);\n this.urlUpdateStrategy = this.options.urlUpdateStrategy || 'deferred';\n this.navigationTransitions = inject(NavigationTransitions);\n this.urlSerializer = inject(UrlSerializer);\n this.location = inject(Location);\n this.urlHandlingStrategy = inject(UrlHandlingStrategy);\n /**\n * The private `Subject` type for the public events exposed in the getter. This is used internally\n * to push events to. The separate field allows us to expose separate types in the public API\n * (i.e., an Observable rather than the Subject).\n */\n this._events = new Subject();\n /**\n * A handler for navigation errors in this NgModule.\n *\n * @deprecated Subscribe to the `Router` events and watch for `NavigationError` instead.\n * `provideRouter` has the `withNavigationErrorHandler` feature to make this easier.\n * @see {@link withNavigationErrorHandler}\n */\n this.errorHandler = this.options.errorHandler || defaultErrorHandler;\n /**\n * True if at least one navigation event has occurred,\n * false otherwise.\n */\n this.navigated = false;\n /**\n * A strategy for re-using routes.\n *\n * @deprecated Configure using `providers` instead:\n * `{provide: RouteReuseStrategy, useClass: MyStrategy}`.\n */\n this.routeReuseStrategy = inject(RouteReuseStrategy);\n /**\n * How to handle a navigation request to the current URL.\n *\n *\n * @deprecated Configure this through `provideRouter` or `RouterModule.forRoot` instead.\n * @see {@link withRouterConfig}\n * @see {@link provideRouter}\n * @see {@link RouterModule}\n */\n this.onSameUrlNavigation = this.options.onSameUrlNavigation || 'ignore';\n this.config = inject(ROUTES, {\n optional: true\n })?.flat() ?? [];\n /**\n * Indicates whether the application has opted in to binding Router data to component inputs.\n *\n * This option is enabled by the `withComponentInputBinding` feature of `provideRouter` or\n * `bindToComponentInputs` in the `ExtraOptions` of `RouterModule.forRoot`.\n */\n this.componentInputBindingEnabled = !!inject(INPUT_BINDER, {\n optional: true\n });\n this.eventsSubscription = new Subscription();\n this.isNgZoneEnabled = inject(NgZone) instanceof NgZone && NgZone.isInAngularZone();\n this.resetConfig(this.config);\n this.navigationTransitions.setupNavigations(this, this.currentUrlTree, this.routerState).subscribe({\n error: e => {\n this.console.warn(ngDevMode ? `Unhandled Navigation Error: ${e}` : e);\n }\n });\n this.subscribeToNavigationEvents();\n }\n subscribeToNavigationEvents() {\n const subscription = this.navigationTransitions.events.subscribe(e => {\n try {\n const currentTransition = this.navigationTransitions.currentTransition;\n const currentNavigation = this.navigationTransitions.currentNavigation;\n if (currentTransition !== null && currentNavigation !== null) {\n this.stateManager.handleRouterEvent(e, currentNavigation);\n if (e instanceof NavigationCancel && e.code !== 0 /* NavigationCancellationCode.Redirect */ && e.code !== 1 /* NavigationCancellationCode.SupersededByNewNavigation */) {\n // It seems weird that `navigated` is set to `true` when the navigation is rejected,\n // however it's how things were written initially. Investigation would need to be done\n // to determine if this can be removed.\n this.navigated = true;\n } else if (e instanceof NavigationEnd) {\n this.navigated = true;\n } else if (e instanceof RedirectRequest) {\n const mergedTree = this.urlHandlingStrategy.merge(e.url, currentTransition.currentRawUrl);\n const extras = {\n skipLocationChange: currentTransition.extras.skipLocationChange,\n // The URL is already updated at this point if we have 'eager' URL\n // updates or if the navigation was triggered by the browser (back\n // button, URL bar, etc). We want to replace that item in history\n // if the navigation is rejected.\n replaceUrl: this.urlUpdateStrategy === 'eager' || isBrowserTriggeredNavigation(currentTransition.source)\n };\n this.scheduleNavigation(mergedTree, IMPERATIVE_NAVIGATION, null, extras, {\n resolve: currentTransition.resolve,\n reject: currentTransition.reject,\n promise: currentTransition.promise\n });\n }\n }\n // Note that it's important to have the Router process the events _before_ the event is\n // pushed through the public observable. This ensures the correct router state is in place\n // before applications observe the events.\n if (isPublicRouterEvent(e)) {\n this._events.next(e);\n }\n } catch (e) {\n this.navigationTransitions.transitionAbortSubject.next(e);\n }\n });\n this.eventsSubscription.add(subscription);\n }\n /** @internal */\n resetRootComponentType(rootComponentType) {\n // TODO: vsavkin router 4.0 should make the root component set to null\n // this will simplify the lifecycle of the router.\n this.routerState.root.component = rootComponentType;\n this.navigationTransitions.rootComponentType = rootComponentType;\n }\n /**\n * Sets up the location change listener and performs the initial navigation.\n */\n initialNavigation() {\n this.setUpLocationChangeListener();\n if (!this.navigationTransitions.hasRequestedNavigation) {\n this.navigateToSyncWithBrowser(this.location.path(true), IMPERATIVE_NAVIGATION, this.stateManager.restoredState());\n }\n }\n /**\n * Sets up the location change listener. This listener detects navigations triggered from outside\n * the Router (the browser back/forward buttons, for example) and schedules a corresponding Router\n * navigation so that the correct events, guards, etc. are triggered.\n */\n setUpLocationChangeListener() {\n // Don't need to use Zone.wrap any more, because zone.js\n // already patch onPopState, so location change callback will\n // run into ngZone\n if (!this.nonRouterCurrentEntryChangeSubscription) {\n this.nonRouterCurrentEntryChangeSubscription = this.stateManager.registerNonRouterCurrentEntryChangeListener((url, state) => {\n // The `setTimeout` was added in #12160 and is likely to support Angular/AngularJS\n // hybrid apps.\n setTimeout(() => {\n this.navigateToSyncWithBrowser(url, 'popstate', state);\n }, 0);\n });\n }\n }\n /**\n * Schedules a router navigation to synchronize Router state with the browser state.\n *\n * This is done as a response to a popstate event and the initial navigation. These\n * two scenarios represent times when the browser URL/state has been updated and\n * the Router needs to respond to ensure its internal state matches.\n */\n navigateToSyncWithBrowser(url, source, state) {\n const extras = {\n replaceUrl: true\n };\n // TODO: restoredState should always include the entire state, regardless\n // of navigationId. This requires a breaking change to update the type on\n // NavigationStart’s restoredState, which currently requires navigationId\n // to always be present. The Router used to only restore history state if\n // a navigationId was present.\n // The stored navigationId is used by the RouterScroller to retrieve the scroll\n // position for the page.\n const restoredState = state?.navigationId ? state : null;\n // Separate to NavigationStart.restoredState, we must also restore the state to\n // history.state and generate a new navigationId, since it will be overwritten\n if (state) {\n const stateCopy = {\n ...state\n };\n delete stateCopy.navigationId;\n delete stateCopy.ɵrouterPageId;\n if (Object.keys(stateCopy).length !== 0) {\n extras.state = stateCopy;\n }\n }\n const urlTree = this.parseUrl(url);\n this.scheduleNavigation(urlTree, source, restoredState, extras);\n }\n /** The current URL. */\n get url() {\n return this.serializeUrl(this.currentUrlTree);\n }\n /**\n * Returns the current `Navigation` object when the router is navigating,\n * and `null` when idle.\n */\n getCurrentNavigation() {\n return this.navigationTransitions.currentNavigation;\n }\n /**\n * The `Navigation` object of the most recent navigation to succeed and `null` if there\n * has not been a successful navigation yet.\n */\n get lastSuccessfulNavigation() {\n return this.navigationTransitions.lastSuccessfulNavigation;\n }\n /**\n * Resets the route configuration used for navigation and generating links.\n *\n * @param config The route array for the new configuration.\n *\n * @usageNotes\n *\n * ```\n * router.resetConfig([\n * { path: 'team/:id', component: TeamCmp, children: [\n * { path: 'simple', component: SimpleCmp },\n * { path: 'user/:name', component: UserCmp }\n * ]}\n * ]);\n * ```\n */\n resetConfig(config) {\n (typeof ngDevMode === 'undefined' || ngDevMode) && validateConfig(config);\n this.config = config.map(standardizeConfig);\n this.navigated = false;\n }\n /** @nodoc */\n ngOnDestroy() {\n this.dispose();\n }\n /** Disposes of the router. */\n dispose() {\n this.navigationTransitions.complete();\n if (this.nonRouterCurrentEntryChangeSubscription) {\n this.nonRouterCurrentEntryChangeSubscription.unsubscribe();\n this.nonRouterCurrentEntryChangeSubscription = undefined;\n }\n this.disposed = true;\n this.eventsSubscription.unsubscribe();\n }\n /**\n * Appends URL segments to the current URL tree to create a new URL tree.\n *\n * @param commands An array of URL fragments with which to construct the new URL tree.\n * If the path is static, can be the literal URL string. For a dynamic path, pass an array of path\n * segments, followed by the parameters for each segment.\n * The fragments are applied to the current URL tree or the one provided in the `relativeTo`\n * property of the options object, if supplied.\n * @param navigationExtras Options that control the navigation strategy.\n * @returns The new URL tree.\n *\n * @usageNotes\n *\n * ```\n * // create /team/33/user/11\n * router.createUrlTree(['/team', 33, 'user', 11]);\n *\n * // create /team/33;expand=true/user/11\n * router.createUrlTree(['/team', 33, {expand: true}, 'user', 11]);\n *\n * // you can collapse static segments like this (this works only with the first passed-in value):\n * router.createUrlTree(['/team/33/user', userId]);\n *\n * // If the first segment can contain slashes, and you do not want the router to split it,\n * // you can do the following:\n * router.createUrlTree([{segmentPath: '/one/two'}]);\n *\n * // create /team/33/(user/11//right:chat)\n * router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: 'chat'}}]);\n *\n * // remove the right secondary node\n * router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: null}}]);\n *\n * // assuming the current url is `/team/33/user/11` and the route points to `user/11`\n *\n * // navigate to /team/33/user/11/details\n * router.createUrlTree(['details'], {relativeTo: route});\n *\n * // navigate to /team/33/user/22\n * router.createUrlTree(['../22'], {relativeTo: route});\n *\n * // navigate to /team/44/user/22\n * router.createUrlTree(['../../team/44/user/22'], {relativeTo: route});\n *\n * Note that a value of `null` or `undefined` for `relativeTo` indicates that the\n * tree should be created relative to the root.\n * ```\n */\n createUrlTree(commands, navigationExtras = {}) {\n const {\n relativeTo,\n queryParams,\n fragment,\n queryParamsHandling,\n preserveFragment\n } = navigationExtras;\n const f = preserveFragment ? this.currentUrlTree.fragment : fragment;\n let q = null;\n switch (queryParamsHandling) {\n case 'merge':\n q = {\n ...this.currentUrlTree.queryParams,\n ...queryParams\n };\n break;\n case 'preserve':\n q = this.currentUrlTree.queryParams;\n break;\n default:\n q = queryParams || null;\n }\n if (q !== null) {\n q = this.removeEmptyProps(q);\n }\n let relativeToUrlSegmentGroup;\n try {\n const relativeToSnapshot = relativeTo ? relativeTo.snapshot : this.routerState.snapshot.root;\n relativeToUrlSegmentGroup = createSegmentGroupFromRoute(relativeToSnapshot);\n } catch (e) {\n // This is strictly for backwards compatibility with tests that create\n // invalid `ActivatedRoute` mocks.\n // Note: the difference between having this fallback for invalid `ActivatedRoute` setups and\n // just throwing is ~500 test failures. Fixing all of those tests by hand is not feasible at\n // the moment.\n if (typeof commands[0] !== 'string' || !commands[0].startsWith('/')) {\n // Navigations that were absolute in the old way of creating UrlTrees\n // would still work because they wouldn't attempt to match the\n // segments in the `ActivatedRoute` to the `currentUrlTree` but\n // instead just replace the root segment with the navigation result.\n // Non-absolute navigations would fail to apply the commands because\n // the logic could not find the segment to replace (so they'd act like there were no\n // commands).\n commands = [];\n }\n relativeToUrlSegmentGroup = this.currentUrlTree.root;\n }\n return createUrlTreeFromSegmentGroup(relativeToUrlSegmentGroup, commands, q, f ?? null);\n }\n /**\n * Navigates to a view using an absolute route path.\n *\n * @param url An absolute path for a defined route. The function does not apply any delta to the\n * current URL.\n * @param extras An object containing properties that modify the navigation strategy.\n *\n * @returns A Promise that resolves to 'true' when navigation succeeds,\n * to 'false' when navigation fails, or is rejected on error.\n *\n * @usageNotes\n *\n * The following calls request navigation to an absolute path.\n *\n * ```\n * router.navigateByUrl(\"/team/33/user/11\");\n *\n * // Navigate without updating the URL\n * router.navigateByUrl(\"/team/33/user/11\", { skipLocationChange: true });\n * ```\n *\n * @see [Routing and Navigation guide](guide/router)\n *\n */\n navigateByUrl(url, extras = {\n skipLocationChange: false\n }) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (this.isNgZoneEnabled && !NgZone.isInAngularZone()) {\n this.console.warn(`Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?`);\n }\n }\n const urlTree = isUrlTree(url) ? url : this.parseUrl(url);\n const mergedTree = this.urlHandlingStrategy.merge(urlTree, this.rawUrlTree);\n return this.scheduleNavigation(mergedTree, IMPERATIVE_NAVIGATION, null, extras);\n }\n /**\n * Navigate based on the provided array of commands and a starting point.\n * If no starting route is provided, the navigation is absolute.\n *\n * @param commands An array of URL fragments with which to construct the target URL.\n * If the path is static, can be the literal URL string. For a dynamic path, pass an array of path\n * segments, followed by the parameters for each segment.\n * The fragments are applied to the current URL or the one provided in the `relativeTo` property\n * of the options object, if supplied.\n * @param extras An options object that determines how the URL should be constructed or\n * interpreted.\n *\n * @returns A Promise that resolves to `true` when navigation succeeds, to `false` when navigation\n * fails,\n * or is rejected on error.\n *\n * @usageNotes\n *\n * The following calls request navigation to a dynamic route path relative to the current URL.\n *\n * ```\n * router.navigate(['team', 33, 'user', 11], {relativeTo: route});\n *\n * // Navigate without updating the URL, overriding the default behavior\n * router.navigate(['team', 33, 'user', 11], {relativeTo: route, skipLocationChange: true});\n * ```\n *\n * @see [Routing and Navigation guide](guide/router)\n *\n */\n navigate(commands, extras = {\n skipLocationChange: false\n }) {\n validateCommands(commands);\n return this.navigateByUrl(this.createUrlTree(commands, extras), extras);\n }\n /** Serializes a `UrlTree` into a string */\n serializeUrl(url) {\n return this.urlSerializer.serialize(url);\n }\n /** Parses a string into a `UrlTree` */\n parseUrl(url) {\n try {\n return this.urlSerializer.parse(url);\n } catch {\n return this.urlSerializer.parse('/');\n }\n }\n isActive(url, matchOptions) {\n let options;\n if (matchOptions === true) {\n options = {\n ...exactMatchOptions\n };\n } else if (matchOptions === false) {\n options = {\n ...subsetMatchOptions\n };\n } else {\n options = matchOptions;\n }\n if (isUrlTree(url)) {\n return containsTree(this.currentUrlTree, url, options);\n }\n const urlTree = this.parseUrl(url);\n return containsTree(this.currentUrlTree, urlTree, options);\n }\n removeEmptyProps(params) {\n return Object.keys(params).reduce((result, key) => {\n const value = params[key];\n if (value !== null && value !== undefined) {\n result[key] = value;\n }\n return result;\n }, {});\n }\n scheduleNavigation(rawUrl, source, restoredState, extras, priorPromise) {\n if (this.disposed) {\n return Promise.resolve(false);\n }\n let resolve;\n let reject;\n let promise;\n if (priorPromise) {\n resolve = priorPromise.resolve;\n reject = priorPromise.reject;\n promise = priorPromise.promise;\n } else {\n promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n }\n // Indicate that the navigation is happening.\n const taskId = this.pendingTasks.add();\n afterNextNavigation(this, () => {\n // Remove pending task in a microtask to allow for cancelled\n // initial navigations and redirects within the same task.\n queueMicrotask(() => this.pendingTasks.remove(taskId));\n });\n this.navigationTransitions.handleNavigationRequest({\n source,\n restoredState,\n currentUrlTree: this.currentUrlTree,\n currentRawUrl: this.currentUrlTree,\n rawUrl,\n extras,\n resolve,\n reject,\n promise,\n currentSnapshot: this.routerState.snapshot,\n currentRouterState: this.routerState\n });\n // Make sure that the error is propagated even though `processNavigations` catch\n // handler does not rethrow\n return promise.catch(e => {\n return Promise.reject(e);\n });\n }\n static {\n this.ɵfac = function Router_Factory(t) {\n return new (t || Router)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: Router,\n factory: Router.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Router, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [], null);\n})();\nfunction validateCommands(commands) {\n for (let i = 0; i < commands.length; i++) {\n const cmd = commands[i];\n if (cmd == null) {\n throw new ɵRuntimeError(4008 /* RuntimeErrorCode.NULLISH_COMMAND */, (typeof ngDevMode === 'undefined' || ngDevMode) && `The requested path contains ${cmd} segment at index ${i}`);\n }\n }\n}\nfunction isPublicRouterEvent(e) {\n return !(e instanceof BeforeActivateRoutes) && !(e instanceof RedirectRequest);\n}\n\n/**\n * @description\n *\n * When applied to an element in a template, makes that element a link\n * that initiates navigation to a route. Navigation opens one or more routed components\n * in one or more `` locations on the page.\n *\n * Given a route configuration `[{ path: 'user/:name', component: UserCmp }]`,\n * the following creates a static link to the route:\n * `link to user component`\n *\n * You can use dynamic values to generate the link.\n * For a dynamic link, pass an array of path segments,\n * followed by the params for each segment.\n * For example, `['/team', teamId, 'user', userName, {details: true}]`\n * generates a link to `/team/11/user/bob;details=true`.\n *\n * Multiple static segments can be merged into one term and combined with dynamic segments.\n * For example, `['/team/11/user', userName, {details: true}]`\n *\n * The input that you provide to the link is treated as a delta to the current URL.\n * For instance, suppose the current URL is `/user/(box//aux:team)`.\n * The link `Jim` creates the URL\n * `/user/(jim//aux:team)`.\n * See {@link Router#createUrlTree} for more information.\n *\n * @usageNotes\n *\n * You can use absolute or relative paths in a link, set query parameters,\n * control how parameters are handled, and keep a history of navigation states.\n *\n * ### Relative link paths\n *\n * The first segment name can be prepended with `/`, `./`, or `../`.\n * * If the first segment begins with `/`, the router looks up the route from the root of the\n * app.\n * * If the first segment begins with `./`, or doesn't begin with a slash, the router\n * looks in the children of the current activated route.\n * * If the first segment begins with `../`, the router goes up one level in the route tree.\n *\n * ### Setting and handling query params and fragments\n *\n * The following link adds a query parameter and a fragment to the generated URL:\n *\n * ```\n * \n * link to user component\n * \n * ```\n * By default, the directive constructs the new URL using the given query parameters.\n * The example generates the link: `/user/bob?debug=true#education`.\n *\n * You can instruct the directive to handle query parameters differently\n * by specifying the `queryParamsHandling` option in the link.\n * Allowed values are:\n *\n * - `'merge'`: Merge the given `queryParams` into the current query params.\n * - `'preserve'`: Preserve the current query params.\n *\n * For example:\n *\n * ```\n * \n * link to user component\n * \n * ```\n *\n * See {@link UrlCreationOptions#queryParamsHandling}.\n *\n * ### Preserving navigation history\n *\n * You can provide a `state` value to be persisted to the browser's\n * [`History.state` property](https://developer.mozilla.org/en-US/docs/Web/API/History#Properties).\n * For example:\n *\n * ```\n * \n * link to user component\n * \n * ```\n *\n * Use {@link Router#getCurrentNavigation} to retrieve a saved\n * navigation-state value. For example, to capture the `tracingId` during the `NavigationStart`\n * event:\n *\n * ```\n * // Get NavigationStart events\n * router.events.pipe(filter(e => e instanceof NavigationStart)).subscribe(e => {\n * const navigation = router.getCurrentNavigation();\n * tracingService.trace({id: navigation.extras.state.tracingId});\n * });\n * ```\n *\n * @ngModule RouterModule\n *\n * @publicApi\n */\nclass RouterLink {\n constructor(router, route, tabIndexAttribute, renderer, el, locationStrategy) {\n this.router = router;\n this.route = route;\n this.tabIndexAttribute = tabIndexAttribute;\n this.renderer = renderer;\n this.el = el;\n this.locationStrategy = locationStrategy;\n /**\n * Represents an `href` attribute value applied to a host element,\n * when a host element is ``. For other tags, the value is `null`.\n */\n this.href = null;\n this.commands = null;\n /** @internal */\n this.onChanges = new Subject();\n /**\n * Passed to {@link Router#createUrlTree} as part of the\n * `UrlCreationOptions`.\n * @see {@link UrlCreationOptions#preserveFragment}\n * @see {@link Router#createUrlTree}\n */\n this.preserveFragment = false;\n /**\n * Passed to {@link Router#navigateByUrl} as part of the\n * `NavigationBehaviorOptions`.\n * @see {@link NavigationBehaviorOptions#skipLocationChange}\n * @see {@link Router#navigateByUrl}\n */\n this.skipLocationChange = false;\n /**\n * Passed to {@link Router#navigateByUrl} as part of the\n * `NavigationBehaviorOptions`.\n * @see {@link NavigationBehaviorOptions#replaceUrl}\n * @see {@link Router#navigateByUrl}\n */\n this.replaceUrl = false;\n const tagName = el.nativeElement.tagName?.toLowerCase();\n this.isAnchorElement = tagName === 'a' || tagName === 'area';\n if (this.isAnchorElement) {\n this.subscription = router.events.subscribe(s => {\n if (s instanceof NavigationEnd) {\n this.updateHref();\n }\n });\n } else {\n this.setTabIndexIfNotOnNativeEl('0');\n }\n }\n /**\n * Modifies the tab index if there was not a tabindex attribute on the element during\n * instantiation.\n */\n setTabIndexIfNotOnNativeEl(newTabIndex) {\n if (this.tabIndexAttribute != null /* both `null` and `undefined` */ || this.isAnchorElement) {\n return;\n }\n this.applyAttributeValue('tabindex', newTabIndex);\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (this.isAnchorElement) {\n this.updateHref();\n }\n // This is subscribed to by `RouterLinkActive` so that it knows to update when there are changes\n // to the RouterLinks it's tracking.\n this.onChanges.next(this);\n }\n /**\n * Commands to pass to {@link Router#createUrlTree}.\n * - **array**: commands to pass to {@link Router#createUrlTree}.\n * - **string**: shorthand for array of commands with just the string, i.e. `['/route']`\n * - **null|undefined**: effectively disables the `routerLink`\n * @see {@link Router#createUrlTree}\n */\n set routerLink(commands) {\n if (commands != null) {\n this.commands = Array.isArray(commands) ? commands : [commands];\n this.setTabIndexIfNotOnNativeEl('0');\n } else {\n this.commands = null;\n this.setTabIndexIfNotOnNativeEl(null);\n }\n }\n /** @nodoc */\n onClick(button, ctrlKey, shiftKey, altKey, metaKey) {\n if (this.urlTree === null) {\n return true;\n }\n if (this.isAnchorElement) {\n if (button !== 0 || ctrlKey || shiftKey || altKey || metaKey) {\n return true;\n }\n if (typeof this.target === 'string' && this.target != '_self') {\n return true;\n }\n }\n const extras = {\n skipLocationChange: this.skipLocationChange,\n replaceUrl: this.replaceUrl,\n state: this.state\n };\n this.router.navigateByUrl(this.urlTree, extras);\n // Return `false` for `` elements to prevent default action\n // and cancel the native behavior, since the navigation is handled\n // by the Router.\n return !this.isAnchorElement;\n }\n /** @nodoc */\n ngOnDestroy() {\n this.subscription?.unsubscribe();\n }\n updateHref() {\n this.href = this.urlTree !== null && this.locationStrategy ? this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(this.urlTree)) : null;\n const sanitizedValue = this.href === null ? null :\n // This class represents a directive that can be added to both `` elements,\n // as well as other elements. As a result, we can't define security context at\n // compile time. So the security context is deferred to runtime.\n // The `ɵɵsanitizeUrlOrResourceUrl` selects the necessary sanitizer function\n // based on the tag and property names. The logic mimics the one from\n // `packages/compiler/src/schema/dom_security_schema.ts`, which is used at compile time.\n //\n // Note: we should investigate whether we can switch to using `@HostBinding('attr.href')`\n // instead of applying a value via a renderer, after a final merge of the\n // `RouterLinkWithHref` directive.\n ɵɵsanitizeUrlOrResourceUrl(this.href, this.el.nativeElement.tagName.toLowerCase(), 'href');\n this.applyAttributeValue('href', sanitizedValue);\n }\n applyAttributeValue(attrName, attrValue) {\n const renderer = this.renderer;\n const nativeElement = this.el.nativeElement;\n if (attrValue !== null) {\n renderer.setAttribute(nativeElement, attrName, attrValue);\n } else {\n renderer.removeAttribute(nativeElement, attrName);\n }\n }\n get urlTree() {\n if (this.commands === null) {\n return null;\n }\n return this.router.createUrlTree(this.commands, {\n // If the `relativeTo` input is not defined, we want to use `this.route` by default.\n // Otherwise, we should use the value provided by the user in the input.\n relativeTo: this.relativeTo !== undefined ? this.relativeTo : this.route,\n queryParams: this.queryParams,\n fragment: this.fragment,\n queryParamsHandling: this.queryParamsHandling,\n preserveFragment: this.preserveFragment\n });\n }\n static {\n this.ɵfac = function RouterLink_Factory(t) {\n return new (t || RouterLink)(i0.ɵɵdirectiveInject(Router), i0.ɵɵdirectiveInject(ActivatedRoute), i0.ɵɵinjectAttribute('tabindex'), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i3.LocationStrategy));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: RouterLink,\n selectors: [[\"\", \"routerLink\", \"\"]],\n hostVars: 1,\n hostBindings: function RouterLink_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function RouterLink_click_HostBindingHandler($event) {\n return ctx.onClick($event.button, $event.ctrlKey, $event.shiftKey, $event.altKey, $event.metaKey);\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"target\", ctx.target);\n }\n },\n inputs: {\n target: \"target\",\n queryParams: \"queryParams\",\n fragment: \"fragment\",\n queryParamsHandling: \"queryParamsHandling\",\n state: \"state\",\n relativeTo: \"relativeTo\",\n preserveFragment: [\"preserveFragment\", \"preserveFragment\", booleanAttribute],\n skipLocationChange: [\"skipLocationChange\", \"skipLocationChange\", booleanAttribute],\n replaceUrl: [\"replaceUrl\", \"replaceUrl\", booleanAttribute],\n routerLink: \"routerLink\"\n },\n standalone: true,\n features: [i0.ɵɵInputTransformsFeature, i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RouterLink, [{\n type: Directive,\n args: [{\n selector: '[routerLink]',\n standalone: true\n }]\n }], () => [{\n type: Router\n }, {\n type: ActivatedRoute\n }, {\n type: undefined,\n decorators: [{\n type: Attribute,\n args: ['tabindex']\n }]\n }, {\n type: i0.Renderer2\n }, {\n type: i0.ElementRef\n }, {\n type: i3.LocationStrategy\n }], {\n target: [{\n type: HostBinding,\n args: ['attr.target']\n }, {\n type: Input\n }],\n queryParams: [{\n type: Input\n }],\n fragment: [{\n type: Input\n }],\n queryParamsHandling: [{\n type: Input\n }],\n state: [{\n type: Input\n }],\n relativeTo: [{\n type: Input\n }],\n preserveFragment: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n skipLocationChange: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n replaceUrl: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n routerLink: [{\n type: Input\n }],\n onClick: [{\n type: HostListener,\n args: ['click', ['$event.button', '$event.ctrlKey', '$event.shiftKey', '$event.altKey', '$event.metaKey']]\n }]\n });\n})();\n\n/**\n *\n * @description\n *\n * Tracks whether the linked route of an element is currently active, and allows you\n * to specify one or more CSS classes to add to the element when the linked route\n * is active.\n *\n * Use this directive to create a visual distinction for elements associated with an active route.\n * For example, the following code highlights the word \"Bob\" when the router\n * activates the associated route:\n *\n * ```\n * Bob\n * ```\n *\n * Whenever the URL is either '/user' or '/user/bob', the \"active-link\" class is\n * added to the anchor tag. If the URL changes, the class is removed.\n *\n * You can set more than one class using a space-separated string or an array.\n * For example:\n *\n * ```\n * Bob\n * Bob\n * ```\n *\n * To add the classes only when the URL matches the link exactly, add the option `exact: true`:\n *\n * ```\n * Bob\n * ```\n *\n * To directly check the `isActive` status of the link, assign the `RouterLinkActive`\n * instance to a template variable.\n * For example, the following checks the status without assigning any CSS classes:\n *\n * ```\n * \n * Bob {{ rla.isActive ? '(already open)' : ''}}\n * \n * ```\n *\n * You can apply the `RouterLinkActive` directive to an ancestor of linked elements.\n * For example, the following sets the active-link class on the `
` parent tag\n * when the URL is either '/user/jim' or '/user/bob'.\n *\n * ```\n *
\n * Jim\n * Bob\n *
\n * ```\n *\n * The `RouterLinkActive` directive can also be used to set the aria-current attribute\n * to provide an alternative distinction for active elements to visually impaired users.\n *\n * For example, the following code adds the 'active' class to the Home Page link when it is\n * indeed active and in such case also sets its aria-current attribute to 'page':\n *\n * ```\n * Home Page\n * ```\n *\n * @ngModule RouterModule\n *\n * @publicApi\n */\nclass RouterLinkActive {\n get isActive() {\n return this._isActive;\n }\n constructor(router, element, renderer, cdr, link) {\n this.router = router;\n this.element = element;\n this.renderer = renderer;\n this.cdr = cdr;\n this.link = link;\n this.classes = [];\n this._isActive = false;\n /**\n * Options to configure how to determine if the router link is active.\n *\n * These options are passed to the `Router.isActive()` function.\n *\n * @see {@link Router#isActive}\n */\n this.routerLinkActiveOptions = {\n exact: false\n };\n /**\n *\n * You can use the output `isActiveChange` to get notified each time the link becomes\n * active or inactive.\n *\n * Emits:\n * true -> Route is active\n * false -> Route is inactive\n *\n * ```\n * Bob\n * ```\n */\n this.isActiveChange = new EventEmitter();\n this.routerEventsSubscription = router.events.subscribe(s => {\n if (s instanceof NavigationEnd) {\n this.update();\n }\n });\n }\n /** @nodoc */\n ngAfterContentInit() {\n // `of(null)` is used to force subscribe body to execute once immediately (like `startWith`).\n of(this.links.changes, of(null)).pipe(mergeAll()).subscribe(_ => {\n this.update();\n this.subscribeToEachLinkOnChanges();\n });\n }\n subscribeToEachLinkOnChanges() {\n this.linkInputChangesSubscription?.unsubscribe();\n const allLinkChanges = [...this.links.toArray(), this.link].filter(link => !!link).map(link => link.onChanges);\n this.linkInputChangesSubscription = from(allLinkChanges).pipe(mergeAll()).subscribe(link => {\n if (this._isActive !== this.isLinkActive(this.router)(link)) {\n this.update();\n }\n });\n }\n set routerLinkActive(data) {\n const classes = Array.isArray(data) ? data : data.split(' ');\n this.classes = classes.filter(c => !!c);\n }\n /** @nodoc */\n ngOnChanges(changes) {\n this.update();\n }\n /** @nodoc */\n ngOnDestroy() {\n this.routerEventsSubscription.unsubscribe();\n this.linkInputChangesSubscription?.unsubscribe();\n }\n update() {\n if (!this.links || !this.router.navigated) return;\n queueMicrotask(() => {\n const hasActiveLinks = this.hasActiveLinks();\n if (this._isActive !== hasActiveLinks) {\n this._isActive = hasActiveLinks;\n this.cdr.markForCheck();\n this.classes.forEach(c => {\n if (hasActiveLinks) {\n this.renderer.addClass(this.element.nativeElement, c);\n } else {\n this.renderer.removeClass(this.element.nativeElement, c);\n }\n });\n if (hasActiveLinks && this.ariaCurrentWhenActive !== undefined) {\n this.renderer.setAttribute(this.element.nativeElement, 'aria-current', this.ariaCurrentWhenActive.toString());\n } else {\n this.renderer.removeAttribute(this.element.nativeElement, 'aria-current');\n }\n // Emit on isActiveChange after classes are updated\n this.isActiveChange.emit(hasActiveLinks);\n }\n });\n }\n isLinkActive(router) {\n const options = isActiveMatchOptions(this.routerLinkActiveOptions) ? this.routerLinkActiveOptions :\n // While the types should disallow `undefined` here, it's possible without strict inputs\n this.routerLinkActiveOptions.exact || false;\n return link => link.urlTree ? router.isActive(link.urlTree, options) : false;\n }\n hasActiveLinks() {\n const isActiveCheckFn = this.isLinkActive(this.router);\n return this.link && isActiveCheckFn(this.link) || this.links.some(isActiveCheckFn);\n }\n static {\n this.ɵfac = function RouterLinkActive_Factory(t) {\n return new (t || RouterLinkActive)(i0.ɵɵdirectiveInject(Router), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(RouterLink, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: RouterLinkActive,\n selectors: [[\"\", \"routerLinkActive\", \"\"]],\n contentQueries: function RouterLinkActive_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, RouterLink, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.links = _t);\n }\n },\n inputs: {\n routerLinkActiveOptions: \"routerLinkActiveOptions\",\n ariaCurrentWhenActive: \"ariaCurrentWhenActive\",\n routerLinkActive: \"routerLinkActive\"\n },\n outputs: {\n isActiveChange: \"isActiveChange\"\n },\n exportAs: [\"routerLinkActive\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RouterLinkActive, [{\n type: Directive,\n args: [{\n selector: '[routerLinkActive]',\n exportAs: 'routerLinkActive',\n standalone: true\n }]\n }], () => [{\n type: Router\n }, {\n type: i0.ElementRef\n }, {\n type: i0.Renderer2\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: RouterLink,\n decorators: [{\n type: Optional\n }]\n }], {\n links: [{\n type: ContentChildren,\n args: [RouterLink, {\n descendants: true\n }]\n }],\n routerLinkActiveOptions: [{\n type: Input\n }],\n ariaCurrentWhenActive: [{\n type: Input\n }],\n isActiveChange: [{\n type: Output\n }],\n routerLinkActive: [{\n type: Input\n }]\n });\n})();\n/**\n * Use instead of `'paths' in options` to be compatible with property renaming\n */\nfunction isActiveMatchOptions(options) {\n return !!options.paths;\n}\n\n/**\n * @description\n *\n * Provides a preloading strategy.\n *\n * @publicApi\n */\nclass PreloadingStrategy {}\n/**\n * @description\n *\n * Provides a preloading strategy that preloads all modules as quickly as possible.\n *\n * ```\n * RouterModule.forRoot(ROUTES, {preloadingStrategy: PreloadAllModules})\n * ```\n *\n * @publicApi\n */\nclass PreloadAllModules {\n preload(route, fn) {\n return fn().pipe(catchError(() => of(null)));\n }\n static {\n this.ɵfac = function PreloadAllModules_Factory(t) {\n return new (t || PreloadAllModules)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: PreloadAllModules,\n factory: PreloadAllModules.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(PreloadAllModules, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\n/**\n * @description\n *\n * Provides a preloading strategy that does not preload any modules.\n *\n * This strategy is enabled by default.\n *\n * @publicApi\n */\nclass NoPreloading {\n preload(route, fn) {\n return of(null);\n }\n static {\n this.ɵfac = function NoPreloading_Factory(t) {\n return new (t || NoPreloading)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NoPreloading,\n factory: NoPreloading.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NoPreloading, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\n/**\n * The preloader optimistically loads all router configurations to\n * make navigations into lazily-loaded sections of the application faster.\n *\n * The preloader runs in the background. When the router bootstraps, the preloader\n * starts listening to all navigation events. After every such event, the preloader\n * will check if any configurations can be loaded lazily.\n *\n * If a route is protected by `canLoad` guards, the preloaded will not load it.\n *\n * @publicApi\n */\nclass RouterPreloader {\n constructor(router, compiler, injector, preloadingStrategy, loader) {\n this.router = router;\n this.injector = injector;\n this.preloadingStrategy = preloadingStrategy;\n this.loader = loader;\n }\n setUpPreloading() {\n this.subscription = this.router.events.pipe(filter(e => e instanceof NavigationEnd), concatMap(() => this.preload())).subscribe(() => {});\n }\n preload() {\n return this.processRoutes(this.injector, this.router.config);\n }\n /** @nodoc */\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n processRoutes(injector, routes) {\n const res = [];\n for (const route of routes) {\n if (route.providers && !route._injector) {\n route._injector = createEnvironmentInjector(route.providers, injector, `Route: ${route.path}`);\n }\n const injectorForCurrentRoute = route._injector ?? injector;\n const injectorForChildren = route._loadedInjector ?? injectorForCurrentRoute;\n // Note that `canLoad` is only checked as a condition that prevents `loadChildren` and not\n // `loadComponent`. `canLoad` guards only block loading of child routes by design. This\n // happens as a consequence of needing to descend into children for route matching immediately\n // while component loading is deferred until route activation. Because `canLoad` guards can\n // have side effects, we cannot execute them here so we instead skip preloading altogether\n // when present. Lastly, it remains to be decided whether `canLoad` should behave this way\n // at all. Code splitting and lazy loading is separate from client-side authorization checks\n // and should not be used as a security measure to prevent loading of code.\n if (route.loadChildren && !route._loadedRoutes && route.canLoad === undefined || route.loadComponent && !route._loadedComponent) {\n res.push(this.preloadConfig(injectorForCurrentRoute, route));\n }\n if (route.children || route._loadedRoutes) {\n res.push(this.processRoutes(injectorForChildren, route.children ?? route._loadedRoutes));\n }\n }\n return from(res).pipe(mergeAll());\n }\n preloadConfig(injector, route) {\n return this.preloadingStrategy.preload(route, () => {\n let loadedChildren$;\n if (route.loadChildren && route.canLoad === undefined) {\n loadedChildren$ = this.loader.loadChildren(injector, route);\n } else {\n loadedChildren$ = of(null);\n }\n const recursiveLoadChildren$ = loadedChildren$.pipe(mergeMap(config => {\n if (config === null) {\n return of(void 0);\n }\n route._loadedRoutes = config.routes;\n route._loadedInjector = config.injector;\n // If the loaded config was a module, use that as the module/module injector going\n // forward. Otherwise, continue using the current module/module injector.\n return this.processRoutes(config.injector ?? injector, config.routes);\n }));\n if (route.loadComponent && !route._loadedComponent) {\n const loadComponent$ = this.loader.loadComponent(route);\n return from([recursiveLoadChildren$, loadComponent$]).pipe(mergeAll());\n } else {\n return recursiveLoadChildren$;\n }\n });\n }\n static {\n this.ɵfac = function RouterPreloader_Factory(t) {\n return new (t || RouterPreloader)(i0.ɵɵinject(Router), i0.ɵɵinject(i0.Compiler), i0.ɵɵinject(i0.EnvironmentInjector), i0.ɵɵinject(PreloadingStrategy), i0.ɵɵinject(RouterConfigLoader));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RouterPreloader,\n factory: RouterPreloader.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RouterPreloader, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: Router\n }, {\n type: i0.Compiler\n }, {\n type: i0.EnvironmentInjector\n }, {\n type: PreloadingStrategy\n }, {\n type: RouterConfigLoader\n }], null);\n})();\nconst ROUTER_SCROLLER = new InjectionToken('');\nclass RouterScroller {\n /** @nodoc */\n constructor(urlSerializer, transitions, viewportScroller, zone, options = {}) {\n this.urlSerializer = urlSerializer;\n this.transitions = transitions;\n this.viewportScroller = viewportScroller;\n this.zone = zone;\n this.options = options;\n this.lastId = 0;\n this.lastSource = 'imperative';\n this.restoredId = 0;\n this.store = {};\n // Default both options to 'disabled'\n options.scrollPositionRestoration = options.scrollPositionRestoration || 'disabled';\n options.anchorScrolling = options.anchorScrolling || 'disabled';\n }\n init() {\n // we want to disable the automatic scrolling because having two places\n // responsible for scrolling results race conditions, especially given\n // that browser don't implement this behavior consistently\n if (this.options.scrollPositionRestoration !== 'disabled') {\n this.viewportScroller.setHistoryScrollRestoration('manual');\n }\n this.routerEventsSubscription = this.createScrollEvents();\n this.scrollEventsSubscription = this.consumeScrollEvents();\n }\n createScrollEvents() {\n return this.transitions.events.subscribe(e => {\n if (e instanceof NavigationStart) {\n // store the scroll position of the current stable navigations.\n this.store[this.lastId] = this.viewportScroller.getScrollPosition();\n this.lastSource = e.navigationTrigger;\n this.restoredId = e.restoredState ? e.restoredState.navigationId : 0;\n } else if (e instanceof NavigationEnd) {\n this.lastId = e.id;\n this.scheduleScrollEvent(e, this.urlSerializer.parse(e.urlAfterRedirects).fragment);\n } else if (e instanceof NavigationSkipped && e.code === 0 /* NavigationSkippedCode.IgnoredSameUrlNavigation */) {\n this.lastSource = undefined;\n this.restoredId = 0;\n this.scheduleScrollEvent(e, this.urlSerializer.parse(e.url).fragment);\n }\n });\n }\n consumeScrollEvents() {\n return this.transitions.events.subscribe(e => {\n if (!(e instanceof Scroll)) return;\n // a popstate event. The pop state event will always ignore anchor scrolling.\n if (e.position) {\n if (this.options.scrollPositionRestoration === 'top') {\n this.viewportScroller.scrollToPosition([0, 0]);\n } else if (this.options.scrollPositionRestoration === 'enabled') {\n this.viewportScroller.scrollToPosition(e.position);\n }\n // imperative navigation \"forward\"\n } else {\n if (e.anchor && this.options.anchorScrolling === 'enabled') {\n this.viewportScroller.scrollToAnchor(e.anchor);\n } else if (this.options.scrollPositionRestoration !== 'disabled') {\n this.viewportScroller.scrollToPosition([0, 0]);\n }\n }\n });\n }\n scheduleScrollEvent(routerEvent, anchor) {\n this.zone.runOutsideAngular(() => {\n // The scroll event needs to be delayed until after change detection. Otherwise, we may\n // attempt to restore the scroll position before the router outlet has fully rendered the\n // component by executing its update block of the template function.\n setTimeout(() => {\n this.zone.run(() => {\n this.transitions.events.next(new Scroll(routerEvent, this.lastSource === 'popstate' ? this.store[this.restoredId] : null, anchor));\n });\n }, 0);\n });\n }\n /** @nodoc */\n ngOnDestroy() {\n this.routerEventsSubscription?.unsubscribe();\n this.scrollEventsSubscription?.unsubscribe();\n }\n static {\n this.ɵfac = function RouterScroller_Factory(t) {\n i0.ɵɵinvalidFactory();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RouterScroller,\n factory: RouterScroller.ɵfac\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RouterScroller, [{\n type: Injectable\n }], () => [{\n type: UrlSerializer\n }, {\n type: NavigationTransitions\n }, {\n type: i3.ViewportScroller\n }, {\n type: i0.NgZone\n }, {\n type: undefined\n }], null);\n})();\n\n/**\n * Sets up providers necessary to enable `Router` functionality for the application.\n * Allows to configure a set of routes as well as extra features that should be enabled.\n *\n * @usageNotes\n *\n * Basic example of how you can add a Router to your application:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent, {\n * providers: [provideRouter(appRoutes)]\n * });\n * ```\n *\n * You can also enable optional features in the Router by adding functions from the `RouterFeatures`\n * type:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes,\n * withDebugTracing(),\n * withRouterConfig({paramsInheritanceStrategy: 'always'}))\n * ]\n * }\n * );\n * ```\n *\n * @see {@link RouterFeatures}\n *\n * @publicApi\n * @param routes A set of `Route`s to use for the application routing table.\n * @param features Optional features to configure additional router behaviors.\n * @returns A set of providers to setup a Router.\n */\nfunction provideRouter(routes, ...features) {\n return makeEnvironmentProviders([{\n provide: ROUTES,\n multi: true,\n useValue: routes\n }, typeof ngDevMode === 'undefined' || ngDevMode ? {\n provide: ROUTER_IS_PROVIDED,\n useValue: true\n } : [], {\n provide: ActivatedRoute,\n useFactory: rootRoute,\n deps: [Router]\n }, {\n provide: APP_BOOTSTRAP_LISTENER,\n multi: true,\n useFactory: getBootstrapListener\n }, features.map(feature => feature.ɵproviders)]);\n}\nfunction rootRoute(router) {\n return router.routerState.root;\n}\n/**\n * Helper function to create an object that represents a Router feature.\n */\nfunction routerFeature(kind, providers) {\n return {\n ɵkind: kind,\n ɵproviders: providers\n };\n}\n/**\n * An Injection token used to indicate whether `provideRouter` or `RouterModule.forRoot` was ever\n * called.\n */\nconst ROUTER_IS_PROVIDED = new InjectionToken('', {\n providedIn: 'root',\n factory: () => false\n});\nconst routerIsProvidedDevModeCheck = {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useFactory() {\n return () => {\n if (!inject(ROUTER_IS_PROVIDED)) {\n console.warn('`provideRoutes` was called without `provideRouter` or `RouterModule.forRoot`. ' + 'This is likely a mistake.');\n }\n };\n }\n};\n/**\n * Registers a [DI provider](guide/glossary#provider) for a set of routes.\n * @param routes The route configuration to provide.\n *\n * @usageNotes\n *\n * ```\n * @NgModule({\n * providers: [provideRoutes(ROUTES)]\n * })\n * class LazyLoadedChildModule {}\n * ```\n *\n * @deprecated If necessary, provide routes using the `ROUTES` `InjectionToken`.\n * @see {@link ROUTES}\n * @publicApi\n */\nfunction provideRoutes(routes) {\n return [{\n provide: ROUTES,\n multi: true,\n useValue: routes\n }, typeof ngDevMode === 'undefined' || ngDevMode ? routerIsProvidedDevModeCheck : []];\n}\n/**\n * Enables customizable scrolling behavior for router navigations.\n *\n * @usageNotes\n *\n * Basic example of how you can enable scrolling feature:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withInMemoryScrolling())\n * ]\n * }\n * );\n * ```\n *\n * @see {@link provideRouter}\n * @see {@link ViewportScroller}\n *\n * @publicApi\n * @param options Set of configuration parameters to customize scrolling behavior, see\n * `InMemoryScrollingOptions` for additional information.\n * @returns A set of providers for use with `provideRouter`.\n */\nfunction withInMemoryScrolling(options = {}) {\n const providers = [{\n provide: ROUTER_SCROLLER,\n useFactory: () => {\n const viewportScroller = inject(ViewportScroller);\n const zone = inject(NgZone);\n const transitions = inject(NavigationTransitions);\n const urlSerializer = inject(UrlSerializer);\n return new RouterScroller(urlSerializer, transitions, viewportScroller, zone, options);\n }\n }];\n return routerFeature(4 /* RouterFeatureKind.InMemoryScrollingFeature */, providers);\n}\nfunction getBootstrapListener() {\n const injector = inject(Injector);\n return bootstrappedComponentRef => {\n const ref = injector.get(ApplicationRef);\n if (bootstrappedComponentRef !== ref.components[0]) {\n return;\n }\n const router = injector.get(Router);\n const bootstrapDone = injector.get(BOOTSTRAP_DONE);\n if (injector.get(INITIAL_NAVIGATION) === 1 /* InitialNavigation.EnabledNonBlocking */) {\n router.initialNavigation();\n }\n injector.get(ROUTER_PRELOADER, null, InjectFlags.Optional)?.setUpPreloading();\n injector.get(ROUTER_SCROLLER, null, InjectFlags.Optional)?.init();\n router.resetRootComponentType(ref.componentTypes[0]);\n if (!bootstrapDone.closed) {\n bootstrapDone.next();\n bootstrapDone.complete();\n bootstrapDone.unsubscribe();\n }\n };\n}\n/**\n * A subject used to indicate that the bootstrapping phase is done. When initial navigation is\n * `enabledBlocking`, the first navigation waits until bootstrapping is finished before continuing\n * to the activation phase.\n */\nconst BOOTSTRAP_DONE = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'bootstrap done indicator' : '', {\n factory: () => {\n return new Subject();\n }\n});\nconst INITIAL_NAVIGATION = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'initial navigation' : '', {\n providedIn: 'root',\n factory: () => 1 /* InitialNavigation.EnabledNonBlocking */\n});\n/**\n * Configures initial navigation to start before the root component is created.\n *\n * The bootstrap is blocked until the initial navigation is complete. This value is required for\n * [server-side rendering](guide/ssr) to work.\n *\n * @usageNotes\n *\n * Basic example of how you can enable this navigation behavior:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withEnabledBlockingInitialNavigation())\n * ]\n * }\n * );\n * ```\n *\n * @see {@link provideRouter}\n *\n * @publicApi\n * @returns A set of providers for use with `provideRouter`.\n */\nfunction withEnabledBlockingInitialNavigation() {\n const providers = [{\n provide: INITIAL_NAVIGATION,\n useValue: 0 /* InitialNavigation.EnabledBlocking */\n }, {\n provide: APP_INITIALIZER,\n multi: true,\n deps: [Injector],\n useFactory: injector => {\n const locationInitialized = injector.get(LOCATION_INITIALIZED, Promise.resolve());\n return () => {\n return locationInitialized.then(() => {\n return new Promise(resolve => {\n const router = injector.get(Router);\n const bootstrapDone = injector.get(BOOTSTRAP_DONE);\n afterNextNavigation(router, () => {\n // Unblock APP_INITIALIZER in case the initial navigation was canceled or errored\n // without a redirect.\n resolve(true);\n });\n injector.get(NavigationTransitions).afterPreactivation = () => {\n // Unblock APP_INITIALIZER once we get to `afterPreactivation`. At this point, we\n // assume activation will complete successfully (even though this is not\n // guaranteed).\n resolve(true);\n return bootstrapDone.closed ? of(void 0) : bootstrapDone;\n };\n router.initialNavigation();\n });\n });\n };\n }\n }];\n return routerFeature(2 /* RouterFeatureKind.EnabledBlockingInitialNavigationFeature */, providers);\n}\n/**\n * Disables initial navigation.\n *\n * Use if there is a reason to have more control over when the router starts its initial navigation\n * due to some complex initialization logic.\n *\n * @usageNotes\n *\n * Basic example of how you can disable initial navigation:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withDisabledInitialNavigation())\n * ]\n * }\n * );\n * ```\n *\n * @see {@link provideRouter}\n *\n * @returns A set of providers for use with `provideRouter`.\n *\n * @publicApi\n */\nfunction withDisabledInitialNavigation() {\n const providers = [{\n provide: APP_INITIALIZER,\n multi: true,\n useFactory: () => {\n const router = inject(Router);\n return () => {\n router.setUpLocationChangeListener();\n };\n }\n }, {\n provide: INITIAL_NAVIGATION,\n useValue: 2 /* InitialNavigation.Disabled */\n }];\n\n return routerFeature(3 /* RouterFeatureKind.DisabledInitialNavigationFeature */, providers);\n}\n/**\n * Enables logging of all internal navigation events to the console.\n * Extra logging might be useful for debugging purposes to inspect Router event sequence.\n *\n * @usageNotes\n *\n * Basic example of how you can enable debug tracing:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withDebugTracing())\n * ]\n * }\n * );\n * ```\n *\n * @see {@link provideRouter}\n *\n * @returns A set of providers for use with `provideRouter`.\n *\n * @publicApi\n */\nfunction withDebugTracing() {\n let providers = [];\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n providers = [{\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useFactory: () => {\n const router = inject(Router);\n return () => router.events.subscribe(e => {\n // tslint:disable:no-console\n console.group?.(`Router Event: ${e.constructor.name}`);\n console.log(stringifyEvent(e));\n console.log(e);\n console.groupEnd?.();\n // tslint:enable:no-console\n });\n }\n }];\n } else {\n providers = [];\n }\n return routerFeature(1 /* RouterFeatureKind.DebugTracingFeature */, providers);\n}\nconst ROUTER_PRELOADER = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'router preloader' : '');\n/**\n * Allows to configure a preloading strategy to use. The strategy is configured by providing a\n * reference to a class that implements a `PreloadingStrategy`.\n *\n * @usageNotes\n *\n * Basic example of how you can configure preloading:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withPreloading(PreloadAllModules))\n * ]\n * }\n * );\n * ```\n *\n * @see {@link provideRouter}\n *\n * @param preloadingStrategy A reference to a class that implements a `PreloadingStrategy` that\n * should be used.\n * @returns A set of providers for use with `provideRouter`.\n *\n * @publicApi\n */\nfunction withPreloading(preloadingStrategy) {\n const providers = [{\n provide: ROUTER_PRELOADER,\n useExisting: RouterPreloader\n }, {\n provide: PreloadingStrategy,\n useExisting: preloadingStrategy\n }];\n return routerFeature(0 /* RouterFeatureKind.PreloadingFeature */, providers);\n}\n/**\n * Allows to provide extra parameters to configure Router.\n *\n * @usageNotes\n *\n * Basic example of how you can provide extra configuration options:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withRouterConfig({\n * onSameUrlNavigation: 'reload'\n * }))\n * ]\n * }\n * );\n * ```\n *\n * @see {@link provideRouter}\n *\n * @param options A set of parameters to configure Router, see `RouterConfigOptions` for\n * additional information.\n * @returns A set of providers for use with `provideRouter`.\n *\n * @publicApi\n */\nfunction withRouterConfig(options) {\n const providers = [{\n provide: ROUTER_CONFIGURATION,\n useValue: options\n }];\n return routerFeature(5 /* RouterFeatureKind.RouterConfigurationFeature */, providers);\n}\n/**\n * Provides the location strategy that uses the URL fragment instead of the history API.\n *\n * @usageNotes\n *\n * Basic example of how you can use the hash location option:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withHashLocation())\n * ]\n * }\n * );\n * ```\n *\n * @see {@link provideRouter}\n * @see {@link HashLocationStrategy}\n *\n * @returns A set of providers for use with `provideRouter`.\n *\n * @publicApi\n */\nfunction withHashLocation() {\n const providers = [{\n provide: LocationStrategy,\n useClass: HashLocationStrategy\n }];\n return routerFeature(6 /* RouterFeatureKind.RouterHashLocationFeature */, providers);\n}\n/**\n * Subscribes to the Router's navigation events and calls the given function when a\n * `NavigationError` happens.\n *\n * This function is run inside application's [injection context](guide/dependency-injection-context)\n * so you can use the [`inject`](api/core/inject) function.\n *\n * @usageNotes\n *\n * Basic example of how you can use the error handler option:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withNavigationErrorHandler((e: NavigationError) =>\n * inject(MyErrorTracker).trackError(e)))\n * ]\n * }\n * );\n * ```\n *\n * @see {@link NavigationError}\n * @see {@link core/inject}\n * @see {@link runInInjectionContext}\n *\n * @returns A set of providers for use with `provideRouter`.\n *\n * @publicApi\n */\nfunction withNavigationErrorHandler(fn) {\n const providers = [{\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useValue: () => {\n const injector = inject(EnvironmentInjector);\n inject(Router).events.subscribe(e => {\n if (e instanceof NavigationError) {\n runInInjectionContext(injector, () => fn(e));\n }\n });\n }\n }];\n return routerFeature(7 /* RouterFeatureKind.NavigationErrorHandlerFeature */, providers);\n}\n/**\n * Enables binding information from the `Router` state directly to the inputs of the component in\n * `Route` configurations.\n *\n * @usageNotes\n *\n * Basic example of how you can enable the feature:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withComponentInputBinding())\n * ]\n * }\n * );\n * ```\n *\n * @returns A set of providers for use with `provideRouter`.\n */\nfunction withComponentInputBinding() {\n const providers = [RoutedComponentInputBinder, {\n provide: INPUT_BINDER,\n useExisting: RoutedComponentInputBinder\n }];\n return routerFeature(8 /* RouterFeatureKind.ComponentInputBindingFeature */, providers);\n}\n/**\n * Enables view transitions in the Router by running the route activation and deactivation inside of\n * `document.startViewTransition`.\n *\n * Note: The View Transitions API is not available in all browsers. If the browser does not support\n * view transitions, the Router will not attempt to start a view transition and continue processing\n * the navigation as usual.\n *\n * @usageNotes\n *\n * Basic example of how you can enable the feature:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withViewTransitions())\n * ]\n * }\n * );\n * ```\n *\n * @returns A set of providers for use with `provideRouter`.\n * @see https://developer.chrome.com/docs/web-platform/view-transitions/\n * @see https://developer.mozilla.org/en-US/docs/Web/API/View_Transitions_API\n * @experimental\n */\nfunction withViewTransitions(options) {\n const providers = [{\n provide: CREATE_VIEW_TRANSITION,\n useValue: createViewTransition\n }, {\n provide: VIEW_TRANSITION_OPTIONS,\n useValue: {\n skipNextTransition: !!options?.skipInitialTransition,\n ...options\n }\n }];\n return routerFeature(9 /* RouterFeatureKind.ViewTransitionsFeature */, providers);\n}\n\n/**\n * The directives defined in the `RouterModule`.\n */\nconst ROUTER_DIRECTIVES = [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent];\n/**\n * @docsNotRequired\n */\nconst ROUTER_FORROOT_GUARD = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'router duplicate forRoot guard' : 'ROUTER_FORROOT_GUARD');\n// TODO(atscott): All of these except `ActivatedRoute` are `providedIn: 'root'`. They are only kept\n// here to avoid a breaking change whereby the provider order matters based on where the\n// `RouterModule`/`RouterTestingModule` is imported. These can/should be removed as a \"breaking\"\n// change in a major version.\nconst ROUTER_PROVIDERS = [Location, {\n provide: UrlSerializer,\n useClass: DefaultUrlSerializer\n}, Router, ChildrenOutletContexts, {\n provide: ActivatedRoute,\n useFactory: rootRoute,\n deps: [Router]\n}, RouterConfigLoader,\n// Only used to warn when `provideRoutes` is used without `RouterModule` or `provideRouter`. Can\n// be removed when `provideRoutes` is removed.\ntypeof ngDevMode === 'undefined' || ngDevMode ? {\n provide: ROUTER_IS_PROVIDED,\n useValue: true\n} : []];\n/**\n * @description\n *\n * Adds directives and providers for in-app navigation among views defined in an application.\n * Use the Angular `Router` service to declaratively specify application states and manage state\n * transitions.\n *\n * You can import this NgModule multiple times, once for each lazy-loaded bundle.\n * However, only one `Router` service can be active.\n * To ensure this, there are two ways to register routes when importing this module:\n *\n * * The `forRoot()` method creates an `NgModule` that contains all the directives, the given\n * routes, and the `Router` service itself.\n * * The `forChild()` method creates an `NgModule` that contains all the directives and the given\n * routes, but does not include the `Router` service.\n *\n * @see [Routing and Navigation guide](guide/router) for an\n * overview of how the `Router` service should be used.\n *\n * @publicApi\n */\nclass RouterModule {\n constructor(guard) {}\n /**\n * Creates and configures a module with all the router providers and directives.\n * Optionally sets up an application listener to perform an initial navigation.\n *\n * When registering the NgModule at the root, import as follows:\n *\n * ```\n * @NgModule({\n * imports: [RouterModule.forRoot(ROUTES)]\n * })\n * class MyNgModule {}\n * ```\n *\n * @param routes An array of `Route` objects that define the navigation paths for the application.\n * @param config An `ExtraOptions` configuration object that controls how navigation is performed.\n * @return The new `NgModule`.\n *\n */\n static forRoot(routes, config) {\n return {\n ngModule: RouterModule,\n providers: [ROUTER_PROVIDERS, typeof ngDevMode === 'undefined' || ngDevMode ? config?.enableTracing ? withDebugTracing().ɵproviders : [] : [], {\n provide: ROUTES,\n multi: true,\n useValue: routes\n }, {\n provide: ROUTER_FORROOT_GUARD,\n useFactory: provideForRootGuard,\n deps: [[Router, new Optional(), new SkipSelf()]]\n }, {\n provide: ROUTER_CONFIGURATION,\n useValue: config ? config : {}\n }, config?.useHash ? provideHashLocationStrategy() : providePathLocationStrategy(), provideRouterScroller(), config?.preloadingStrategy ? withPreloading(config.preloadingStrategy).ɵproviders : [], config?.initialNavigation ? provideInitialNavigation(config) : [], config?.bindToComponentInputs ? withComponentInputBinding().ɵproviders : [], config?.enableViewTransitions ? withViewTransitions().ɵproviders : [], provideRouterInitializer()]\n };\n }\n /**\n * Creates a module with all the router directives and a provider registering routes,\n * without creating a new Router service.\n * When registering for submodules and lazy-loaded submodules, create the NgModule as follows:\n *\n * ```\n * @NgModule({\n * imports: [RouterModule.forChild(ROUTES)]\n * })\n * class MyNgModule {}\n * ```\n *\n * @param routes An array of `Route` objects that define the navigation paths for the submodule.\n * @return The new NgModule.\n *\n */\n static forChild(routes) {\n return {\n ngModule: RouterModule,\n providers: [{\n provide: ROUTES,\n multi: true,\n useValue: routes\n }]\n };\n }\n static {\n this.ɵfac = function RouterModule_Factory(t) {\n return new (t || RouterModule)(i0.ɵɵinject(ROUTER_FORROOT_GUARD, 8));\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: RouterModule,\n imports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent],\n exports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RouterModule, [{\n type: NgModule,\n args: [{\n imports: ROUTER_DIRECTIVES,\n exports: ROUTER_DIRECTIVES\n }]\n }], () => [{\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ROUTER_FORROOT_GUARD]\n }]\n }], null);\n})();\n/**\n * For internal use by `RouterModule` only. Note that this differs from `withInMemoryRouterScroller`\n * because it reads from the `ExtraOptions` which should not be used in the standalone world.\n */\nfunction provideRouterScroller() {\n return {\n provide: ROUTER_SCROLLER,\n useFactory: () => {\n const viewportScroller = inject(ViewportScroller);\n const zone = inject(NgZone);\n const config = inject(ROUTER_CONFIGURATION);\n const transitions = inject(NavigationTransitions);\n const urlSerializer = inject(UrlSerializer);\n if (config.scrollOffset) {\n viewportScroller.setOffset(config.scrollOffset);\n }\n return new RouterScroller(urlSerializer, transitions, viewportScroller, zone, config);\n }\n };\n}\n// Note: For internal use only with `RouterModule`. Standalone setup via `provideRouter` should\n// provide hash location directly via `{provide: LocationStrategy, useClass: HashLocationStrategy}`.\nfunction provideHashLocationStrategy() {\n return {\n provide: LocationStrategy,\n useClass: HashLocationStrategy\n };\n}\n// Note: For internal use only with `RouterModule`. Standalone setup via `provideRouter` does not\n// need this at all because `PathLocationStrategy` is the default factory for `LocationStrategy`.\nfunction providePathLocationStrategy() {\n return {\n provide: LocationStrategy,\n useClass: PathLocationStrategy\n };\n}\nfunction provideForRootGuard(router) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && router) {\n throw new ɵRuntimeError(4007 /* RuntimeErrorCode.FOR_ROOT_CALLED_TWICE */, `The Router was provided more than once. This can happen if 'forRoot' is used outside of the root injector.` + ` Lazy loaded modules should use RouterModule.forChild() instead.`);\n }\n return 'guarded';\n}\n// Note: For internal use only with `RouterModule`. Standalone router setup with `provideRouter`\n// users call `withXInitialNavigation` directly.\nfunction provideInitialNavigation(config) {\n return [config.initialNavigation === 'disabled' ? withDisabledInitialNavigation().ɵproviders : [], config.initialNavigation === 'enabledBlocking' ? withEnabledBlockingInitialNavigation().ɵproviders : []];\n}\n// TODO(atscott): This should not be in the public API\n/**\n * A [DI token](guide/glossary/#di-token) for the router initializer that\n * is called after the app is bootstrapped.\n *\n * @publicApi\n */\nconst ROUTER_INITIALIZER = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'Router Initializer' : '');\nfunction provideRouterInitializer() {\n return [\n // ROUTER_INITIALIZER token should be removed. It's public API but shouldn't be. We can just\n // have `getBootstrapListener` directly attached to APP_BOOTSTRAP_LISTENER.\n {\n provide: ROUTER_INITIALIZER,\n useFactory: getBootstrapListener\n }, {\n provide: APP_BOOTSTRAP_LISTENER,\n multi: true,\n useExisting: ROUTER_INITIALIZER\n }];\n}\n\n/**\n * Maps an array of injectable classes with canMatch functions to an array of equivalent\n * `CanMatchFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nfunction mapToCanMatch(providers) {\n return providers.map(provider => (...params) => inject(provider).canMatch(...params));\n}\n/**\n * Maps an array of injectable classes with canActivate functions to an array of equivalent\n * `CanActivateFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nfunction mapToCanActivate(providers) {\n return providers.map(provider => (...params) => inject(provider).canActivate(...params));\n}\n/**\n * Maps an array of injectable classes with canActivateChild functions to an array of equivalent\n * `CanActivateChildFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nfunction mapToCanActivateChild(providers) {\n return providers.map(provider => (...params) => inject(provider).canActivateChild(...params));\n}\n/**\n * Maps an array of injectable classes with canDeactivate functions to an array of equivalent\n * `CanDeactivateFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nfunction mapToCanDeactivate(providers) {\n return providers.map(provider => (...params) => inject(provider).canDeactivate(...params));\n}\n/**\n * Maps an injectable class with a resolve function to an equivalent `ResolveFn`\n * for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='Resolve'}\n *\n * @publicApi\n * @see {@link Route}\n */\nfunction mapToResolve(provider) {\n return (...params) => inject(provider).resolve(...params);\n}\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the router package.\n */\n/**\n * @publicApi\n */\nconst VERSION = new Version('17.0.7');\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n// This file only reexports content of the `src` folder. Keep it that way.\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ActivatedRoute, ActivatedRouteSnapshot, ActivationEnd, ActivationStart, BaseRouteReuseStrategy, ChildActivationEnd, ChildActivationStart, ChildrenOutletContexts, DefaultTitleStrategy, DefaultUrlSerializer, GuardsCheckEnd, GuardsCheckStart, NavigationCancel, NavigationEnd, NavigationError, NavigationSkipped, NavigationStart, NoPreloading, OutletContext, PRIMARY_OUTLET, PreloadAllModules, PreloadingStrategy, ROUTER_CONFIGURATION, ROUTER_INITIALIZER, ROUTES, ResolveEnd, ResolveStart, RouteConfigLoadEnd, RouteConfigLoadStart, RouteReuseStrategy, Router, RouterEvent, RouterLink, RouterLinkActive, RouterLink as RouterLinkWithHref, RouterModule, RouterOutlet, RouterPreloader, RouterState, RouterStateSnapshot, RoutesRecognized, Scroll, TitleStrategy, UrlHandlingStrategy, UrlSegment, UrlSegmentGroup, UrlSerializer, UrlTree, VERSION, convertToParamMap, createUrlTreeFromSnapshot, defaultUrlMatcher, mapToCanActivate, mapToCanActivateChild, mapToCanDeactivate, mapToCanMatch, mapToResolve, provideRouter, provideRoutes, withComponentInputBinding, withDebugTracing, withDisabledInitialNavigation, withEnabledBlockingInitialNavigation, withHashLocation, withInMemoryScrolling, withNavigationErrorHandler, withPreloading, withRouterConfig, withViewTransitions, ɵEmptyOutletComponent, ROUTER_PROVIDERS as ɵROUTER_PROVIDERS, afterNextNavigation as ɵafterNextNavigation, loadChildren as ɵloadChildren };\n"], + "mappings": "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", + "names": ["last", "tree", "match", "res", "commands", "noMatch", "t", "c", "node", "map", "contexts", "canActivate", "last", "s", "tree", "from", "t", "NavigationResult", "e"] +} diff --git a/.angular/cache/17.0.7/vite/deps/chunk-W3IYJMS2.js b/.angular/cache/17.0.7/vite/deps/chunk-D5ODNR6D.js similarity index 97% rename from .angular/cache/17.0.7/vite/deps/chunk-W3IYJMS2.js rename to .angular/cache/17.0.7/vite/deps/chunk-D5ODNR6D.js index 3a96598..946c199 100644 --- a/.angular/cache/17.0.7/vite/deps/chunk-W3IYJMS2.js +++ b/.angular/cache/17.0.7/vite/deps/chunk-D5ODNR6D.js @@ -1,14 +1,14 @@ import { MediaMatcher -} from "./chunk-5OJ3CSUZ.js"; +} from "./chunk-WB57DPWD.js"; import { Platform -} from "./chunk-UPQZZZIG.js"; +} from "./chunk-IAC53GOD.js"; import { environment, getEventPosition, isTouchEvent -} from "./chunk-7XTJNSRU.js"; +} from "./chunk-M5GY4FCO.js"; import { DOCUMENT } from "./chunk-OSQBUYO6.js"; @@ -395,6 +395,14 @@ var gridResponsiveMap = { xl: "(min-width: 1200px)", xxl: "(min-width: 1600px)" }; +var siderResponsiveMap = { + xs: "(max-width: 479.98px)", + sm: "(max-width: 575.98px)", + md: "(max-width: 767.98px)", + lg: "(max-width: 991.98px)", + xl: "(max-width: 1199.98px)", + xxl: "(max-width: 1599.98px)" +}; var _NzBreakpointService = class _NzBreakpointService { constructor(resizeService, mediaMatcher) { this.resizeService = resizeService; @@ -554,11 +562,13 @@ var ImagePreloadService = _ImagePreloadService; })(); export { + reqAnimFrame, NzResizeService, NzSingletonService, NzDragService, gridResponsiveMap, + siderResponsiveMap, NzBreakpointService, NzDestroyService }; -//# sourceMappingURL=chunk-W3IYJMS2.js.map +//# sourceMappingURL=chunk-D5ODNR6D.js.map diff --git a/.angular/cache/17.0.7/vite/deps/chunk-W3IYJMS2.js.map b/.angular/cache/17.0.7/vite/deps/chunk-D5ODNR6D.js.map similarity index 88% rename from .angular/cache/17.0.7/vite/deps/chunk-W3IYJMS2.js.map rename to .angular/cache/17.0.7/vite/deps/chunk-D5ODNR6D.js.map index e8dae1a..9ed51da 100644 --- a/.angular/cache/17.0.7/vite/deps/chunk-W3IYJMS2.js.map +++ b/.angular/cache/17.0.7/vite/deps/chunk-D5ODNR6D.js.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-polyfill.mjs", "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-services.mjs"], "sourcesContent": ["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n/* eslint-disable no-invalid-this */\nconst availablePrefixes = ['moz', 'ms', 'webkit'];\nfunction requestAnimationFramePolyfill() {\n let lastTime = 0;\n return function (callback) {\n const currTime = new Date().getTime();\n const timeToCall = Math.max(0, 16 - (currTime - lastTime));\n const id = setTimeout(() => {\n callback(currTime + timeToCall);\n }, timeToCall);\n lastTime = currTime + timeToCall;\n return id;\n };\n}\nfunction getRequestAnimationFrame() {\n if (typeof window === 'undefined') {\n return () => 0;\n }\n if (window.requestAnimationFrame) {\n // https://github.com/vuejs/vue/issues/4465\n return window.requestAnimationFrame.bind(window);\n }\n const prefix = availablePrefixes.filter(key => `${key}RequestAnimationFrame` in window)[0];\n return prefix ? window[`${prefix}RequestAnimationFrame`] : requestAnimationFramePolyfill();\n}\nfunction cancelRequestAnimationFrame(id) {\n if (typeof window === 'undefined') {\n return null;\n }\n if (window.cancelAnimationFrame) {\n return window.cancelAnimationFrame(id);\n }\n const prefix = availablePrefixes.filter(key => `${key}CancelAnimationFrame` in window || `${key}CancelRequestAnimationFrame` in window)[0];\n return prefix\n ? (window[`${prefix}CancelAnimationFrame`] ||\n window[`${prefix}CancelRequestAnimationFrame`])\n // @ts-ignore\n .call(this, id)\n : clearTimeout(id);\n}\nconst reqAnimFrame = getRequestAnimationFrame();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { cancelRequestAnimationFrame, reqAnimFrame };\n\n", "import * as i0 from '@angular/core';\nimport { Injectable, Inject } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { auditTime, finalize, map, filter, takeUntil, startWith, distinctUntilChanged } from 'rxjs/operators';\nimport { environment } from 'ng-zorro-antd/core/environments';\nimport { getEventPosition, isTouchEvent } from 'ng-zorro-antd/core/util';\nimport { DOCUMENT } from '@angular/common';\nimport { reqAnimFrame } from 'ng-zorro-antd/core/polyfill';\nimport * as i2 from '@angular/cdk/layout';\nimport * as i1 from '@angular/cdk/platform';\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst NOOP = () => {};\nclass NzResizeService {\n constructor(ngZone, rendererFactory2) {\n this.ngZone = ngZone;\n this.rendererFactory2 = rendererFactory2;\n this.resizeSource$ = new Subject();\n this.listeners = 0;\n this.disposeHandle = NOOP;\n this.handler = () => {\n this.ngZone.run(() => {\n this.resizeSource$.next();\n });\n };\n this.renderer = this.rendererFactory2.createRenderer(null, null);\n }\n ngOnDestroy() {\n // Caretaker note: the `handler` is an instance property (it's not defined on the class prototype).\n // The `handler` captures `this` and prevents the `NzResizeService` from being GC'd.\n this.handler = NOOP;\n }\n subscribe() {\n this.registerListener();\n return this.resizeSource$.pipe(auditTime(16), finalize(() => this.unregisterListener()));\n }\n unsubscribe() {\n this.unregisterListener();\n }\n registerListener() {\n if (this.listeners === 0) {\n this.ngZone.runOutsideAngular(() => {\n this.disposeHandle = this.renderer.listen('window', 'resize', this.handler);\n });\n }\n this.listeners += 1;\n }\n unregisterListener() {\n this.listeners -= 1;\n if (this.listeners === 0) {\n this.disposeHandle();\n this.disposeHandle = NOOP;\n }\n }\n static {\n this.ɵfac = function NzResizeService_Factory(t) {\n return new (t || NzResizeService)(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i0.RendererFactory2));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NzResizeService,\n factory: NzResizeService.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzResizeService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: i0.NgZone\n }, {\n type: i0.RendererFactory2\n }], null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n/**\n * When running in test, singletons should not be destroyed. So we keep references of singletons\n * in this global variable.\n */\nconst testSingleRegistry = new Map();\n/**\n * Some singletons should have life cycle that is same to Angular's. This service make sure that\n * those singletons get destroyed in HMR.\n */\nclass NzSingletonService {\n constructor() {\n /**\n * This registry is used to register singleton in dev mode.\n * So that singletons get destroyed when hot module reload happens.\n *\n * This works in prod mode too but with no specific effect.\n */\n this._singletonRegistry = new Map();\n }\n get singletonRegistry() {\n return environment.isTestMode ? testSingleRegistry : this._singletonRegistry;\n }\n registerSingletonWithKey(key, target) {\n const alreadyHave = this.singletonRegistry.has(key);\n const item = alreadyHave ? this.singletonRegistry.get(key) : this.withNewTarget(target);\n if (!alreadyHave) {\n this.singletonRegistry.set(key, item);\n }\n }\n unregisterSingletonWithKey(key) {\n if (this.singletonRegistry.has(key)) {\n this.singletonRegistry.delete(key);\n }\n }\n getSingletonWithKey(key) {\n return this.singletonRegistry.has(key) ? this.singletonRegistry.get(key).target : null;\n }\n withNewTarget(target) {\n return {\n target\n };\n }\n static {\n this.ɵfac = function NzSingletonService_Factory(t) {\n return new (t || NzSingletonService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NzSingletonService,\n factory: NzSingletonService.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzSingletonService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction getPagePosition(event) {\n const e = getEventPosition(event);\n return {\n x: e.pageX,\n y: e.pageY\n };\n}\n/**\n * This module provide a global dragging service to other components.\n */\nclass NzDragService {\n constructor(rendererFactory2) {\n this.draggingThreshold = 5;\n this.currentDraggingSequence = null;\n this.currentStartingPoint = null;\n this.handleRegistry = new Set();\n this.renderer = rendererFactory2.createRenderer(null, null);\n }\n requestDraggingSequence(event) {\n if (!this.handleRegistry.size) {\n this.registerDraggingHandler(isTouchEvent(event));\n }\n // Complete last dragging sequence if a new target is dragged.\n if (this.currentDraggingSequence) {\n this.currentDraggingSequence.complete();\n }\n this.currentStartingPoint = getPagePosition(event);\n this.currentDraggingSequence = new Subject();\n return this.currentDraggingSequence.pipe(map(e => ({\n x: e.pageX - this.currentStartingPoint.x,\n y: e.pageY - this.currentStartingPoint.y\n })), filter(e => Math.abs(e.x) > this.draggingThreshold || Math.abs(e.y) > this.draggingThreshold), finalize(() => this.teardownDraggingSequence()));\n }\n registerDraggingHandler(isTouch) {\n if (isTouch) {\n this.handleRegistry.add({\n teardown: this.renderer.listen('document', 'touchmove', e => {\n if (this.currentDraggingSequence) {\n this.currentDraggingSequence.next(e.touches[0] || e.changedTouches[0]);\n }\n })\n });\n this.handleRegistry.add({\n teardown: this.renderer.listen('document', 'touchend', () => {\n if (this.currentDraggingSequence) {\n this.currentDraggingSequence.complete();\n }\n })\n });\n } else {\n this.handleRegistry.add({\n teardown: this.renderer.listen('document', 'mousemove', e => {\n if (this.currentDraggingSequence) {\n this.currentDraggingSequence.next(e);\n }\n })\n });\n this.handleRegistry.add({\n teardown: this.renderer.listen('document', 'mouseup', () => {\n if (this.currentDraggingSequence) {\n this.currentDraggingSequence.complete();\n }\n })\n });\n }\n }\n teardownDraggingSequence() {\n this.currentDraggingSequence = null;\n }\n static {\n this.ɵfac = function NzDragService_Factory(t) {\n return new (t || NzDragService)(i0.ɵɵinject(i0.RendererFactory2));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NzDragService,\n factory: NzDragService.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzDragService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: i0.RendererFactory2\n }], null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction easeInOutCubic(t, b, c, d) {\n const cc = c - b;\n let tt = t / (d / 2);\n if (tt < 1) {\n return cc / 2 * tt * tt * tt + b;\n } else {\n return cc / 2 * ((tt -= 2) * tt * tt + 2) + b;\n }\n}\nclass NzScrollService {\n constructor(ngZone, doc) {\n this.ngZone = ngZone;\n this.doc = doc;\n }\n /** Set the position of the scroll bar of `el`. */\n setScrollTop(el, topValue = 0) {\n if (el === window) {\n this.doc.body.scrollTop = topValue;\n this.doc.documentElement.scrollTop = topValue;\n } else {\n el.scrollTop = topValue;\n }\n }\n /** Get position of `el` against window. */\n getOffset(el) {\n const ret = {\n top: 0,\n left: 0\n };\n if (!el || !el.getClientRects().length) {\n return ret;\n }\n const rect = el.getBoundingClientRect();\n if (rect.width || rect.height) {\n const doc = el.ownerDocument.documentElement;\n ret.top = rect.top - doc.clientTop;\n ret.left = rect.left - doc.clientLeft;\n } else {\n ret.top = rect.top;\n ret.left = rect.left;\n }\n return ret;\n }\n /** Get the position of the scoll bar of `el`. */\n // TODO: remove '| Window' as the fallback already happens here\n getScroll(target, top = true) {\n if (typeof window === 'undefined') {\n return 0;\n }\n const method = top ? 'scrollTop' : 'scrollLeft';\n let result = 0;\n if (this.isWindow(target)) {\n result = target[top ? 'pageYOffset' : 'pageXOffset'];\n } else if (target instanceof Document) {\n result = target.documentElement[method];\n } else if (target) {\n result = target[method];\n }\n if (target && !this.isWindow(target) && typeof result !== 'number') {\n result = (target.ownerDocument || target).documentElement[method];\n }\n return result;\n }\n isWindow(obj) {\n return obj !== null && obj !== undefined && obj === obj.window;\n }\n /**\n * Scroll `el` to some position with animation.\n *\n * @param containerEl container, `window` by default\n * @param y Scroll to `top`, 0 by default\n */\n scrollTo(containerEl, y = 0, options = {}) {\n const target = containerEl ? containerEl : window;\n const scrollTop = this.getScroll(target);\n const startTime = Date.now();\n const {\n easing,\n callback,\n duration = 450\n } = options;\n const frameFunc = () => {\n const timestamp = Date.now();\n const time = timestamp - startTime;\n const nextScrollTop = (easing || easeInOutCubic)(time > duration ? duration : time, scrollTop, y, duration);\n if (this.isWindow(target)) {\n target.scrollTo(window.pageXOffset, nextScrollTop);\n } else if (target instanceof HTMLDocument || target.constructor.name === 'HTMLDocument') {\n target.documentElement.scrollTop = nextScrollTop;\n } else {\n target.scrollTop = nextScrollTop;\n }\n if (time < duration) {\n reqAnimFrame(frameFunc);\n } else if (typeof callback === 'function') {\n // Caretaker note: the `frameFunc` is called within the `` zone, but we have to re-enter\n // the Angular zone when calling custom callback to be backwards-compatible.\n this.ngZone.run(callback);\n }\n };\n // Caretaker note: the `requestAnimationFrame` triggers change detection, but updating a `scrollTop` property or\n // calling `window.scrollTo` doesn't require Angular to run `ApplicationRef.tick()`.\n this.ngZone.runOutsideAngular(() => reqAnimFrame(frameFunc));\n }\n static {\n this.ɵfac = function NzScrollService_Factory(t) {\n return new (t || NzScrollService)(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(DOCUMENT));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NzScrollService,\n factory: NzScrollService.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzScrollService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: i0.NgZone\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }], null);\n})();\nvar NzBreakpointEnum;\n(function (NzBreakpointEnum) {\n NzBreakpointEnum[\"xxl\"] = \"xxl\";\n NzBreakpointEnum[\"xl\"] = \"xl\";\n NzBreakpointEnum[\"lg\"] = \"lg\";\n NzBreakpointEnum[\"md\"] = \"md\";\n NzBreakpointEnum[\"sm\"] = \"sm\";\n NzBreakpointEnum[\"xs\"] = \"xs\";\n})(NzBreakpointEnum || (NzBreakpointEnum = {}));\nconst gridResponsiveMap = {\n xs: '(max-width: 575px)',\n sm: '(min-width: 576px)',\n md: '(min-width: 768px)',\n lg: '(min-width: 992px)',\n xl: '(min-width: 1200px)',\n xxl: '(min-width: 1600px)'\n};\nconst siderResponsiveMap = {\n xs: '(max-width: 479.98px)',\n sm: '(max-width: 575.98px)',\n md: '(max-width: 767.98px)',\n lg: '(max-width: 991.98px)',\n xl: '(max-width: 1199.98px)',\n xxl: '(max-width: 1599.98px)'\n};\nclass NzBreakpointService {\n constructor(resizeService, mediaMatcher) {\n this.resizeService = resizeService;\n this.mediaMatcher = mediaMatcher;\n this.destroy$ = new Subject();\n this.resizeService.subscribe().pipe(takeUntil(this.destroy$)).subscribe(() => {});\n }\n ngOnDestroy() {\n this.destroy$.next();\n }\n subscribe(breakpointMap, fullMap) {\n if (fullMap) {\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n const get = () => this.matchMedia(breakpointMap, true);\n return this.resizeService.subscribe().pipe(map(get), startWith(get()), distinctUntilChanged((x, y) => x[0] === y[0]), map(x => x[1]));\n } else {\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n const get = () => this.matchMedia(breakpointMap);\n return this.resizeService.subscribe().pipe(map(get), startWith(get()), distinctUntilChanged());\n }\n }\n matchMedia(breakpointMap, fullMap) {\n let bp = NzBreakpointEnum.md;\n const breakpointBooleanMap = {};\n Object.keys(breakpointMap).map(breakpoint => {\n const castBP = breakpoint;\n const matched = this.mediaMatcher.matchMedia(gridResponsiveMap[castBP]).matches;\n breakpointBooleanMap[breakpoint] = matched;\n if (matched) {\n bp = castBP;\n }\n });\n if (fullMap) {\n return [bp, breakpointBooleanMap];\n } else {\n return bp;\n }\n }\n static {\n this.ɵfac = function NzBreakpointService_Factory(t) {\n return new (t || NzBreakpointService)(i0.ɵɵinject(NzResizeService), i0.ɵɵinject(i2.MediaMatcher));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NzBreakpointService,\n factory: NzBreakpointService.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzBreakpointService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: NzResizeService\n }, {\n type: i2.MediaMatcher\n }], null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzDestroyService extends Subject {\n ngOnDestroy() {\n this.next();\n this.complete();\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵNzDestroyService_BaseFactory;\n return function NzDestroyService_Factory(t) {\n return (ɵNzDestroyService_BaseFactory || (ɵNzDestroyService_BaseFactory = i0.ɵɵgetInheritedFactory(NzDestroyService)))(t || NzDestroyService);\n };\n })();\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NzDestroyService,\n factory: NzDestroyService.ɵfac\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzDestroyService, [{\n type: Injectable\n }], null, null);\n})();\nclass ImagePreloadService {\n constructor(document, platform) {\n this.document = document;\n this.platform = platform;\n this.counter = new Map();\n this.linkRefs = new Map();\n }\n addPreload(option) {\n if (this.platform.isBrowser) {\n return () => void 0;\n }\n const uniqueKey = `${option.src}${option.srcset}`;\n let currentCount = this.counter.get(uniqueKey) || 0;\n currentCount++;\n this.counter.set(uniqueKey, currentCount);\n if (!this.linkRefs.has(uniqueKey)) {\n const linkNode = this.appendPreloadLink(option);\n this.linkRefs.set(uniqueKey, linkNode);\n }\n return () => {\n if (this.counter.has(uniqueKey)) {\n let count = this.counter.get(uniqueKey);\n count--;\n if (count === 0) {\n const linkNode = this.linkRefs.get(uniqueKey);\n this.removePreloadLink(linkNode);\n this.counter.delete(uniqueKey);\n this.linkRefs.delete(uniqueKey);\n } else {\n this.counter.set(uniqueKey, count);\n }\n }\n };\n }\n appendPreloadLink(option) {\n const linkNode = this.document.createElement('link');\n linkNode.setAttribute('rel', 'preload');\n linkNode.setAttribute('as', 'image');\n linkNode.setAttribute('href', option.src);\n if (option.srcset) {\n linkNode.setAttribute('imagesrcset', option.srcset);\n }\n this.document.head.appendChild(linkNode);\n return linkNode;\n }\n removePreloadLink(linkNode) {\n if (this.document.head.contains(linkNode)) {\n this.document.head.removeChild(linkNode);\n }\n }\n static {\n this.ɵfac = function ImagePreloadService_Factory(t) {\n return new (t || ImagePreloadService)(i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i1.Platform));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ImagePreloadService,\n factory: ImagePreloadService.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ImagePreloadService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }, {\n type: i1.Platform\n }], null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ImagePreloadService, NzBreakpointEnum, NzBreakpointService, NzDestroyService, NzDragService, NzResizeService, NzScrollService, NzSingletonService, gridResponsiveMap, siderResponsiveMap };\n"], - "mappings": "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", + "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,IAAM,oBAAoB,CAAC,OAAO,MAAM,QAAQ;AAChD,SAAS,gCAAgC;AACrC,MAAI,WAAW;AACf,SAAO,SAAU,UAAU;AACvB,UAAM,YAAW,oBAAI,KAAK,GAAE,QAAQ;AACpC,UAAM,aAAa,KAAK,IAAI,GAAG,MAAM,WAAW,SAAS;AACzD,UAAM,KAAK,WAAW,MAAM;AACxB,eAAS,WAAW,UAAU;AAAA,IAClC,GAAG,UAAU;AACb,eAAW,WAAW;AACtB,WAAO;AAAA,EACX;AACJ;AACA,SAAS,2BAA2B;AAChC,MAAI,OAAO,WAAW,aAAa;AAC/B,WAAO,MAAM;AAAA,EACjB;AACA,MAAI,OAAO,uBAAuB;AAE9B,WAAO,OAAO,sBAAsB,KAAK,MAAM;AAAA,EACnD;AACA,QAAM,SAAS,kBAAkB,OAAO,SAAO,GAAG,GAAG,2BAA2B,MAAM,EAAE,CAAC;AACzF,SAAO,SAAS,OAAO,GAAG,MAAM,uBAAuB,IAAI,8BAA8B;AAC7F;AAgBA,IAAM,eAAe,yBAAyB;;;AC7B9C,IAAM,OAAO,MAAM;AAAC;AACpB,IAAM,mBAAN,MAAM,iBAAgB;AAAA,EACpB,YAAY,QAAQ,kBAAkB;AACpC,SAAK,SAAS;AACd,SAAK,mBAAmB;AACxB,SAAK,gBAAgB,IAAI,QAAQ;AACjC,SAAK,YAAY;AACjB,SAAK,gBAAgB;AACrB,SAAK,UAAU,MAAM;AACnB,WAAK,OAAO,IAAI,MAAM;AACpB,aAAK,cAAc,KAAK;AAAA,MAC1B,CAAC;AAAA,IACH;AACA,SAAK,WAAW,KAAK,iBAAiB,eAAe,MAAM,IAAI;AAAA,EACjE;AAAA,EACA,cAAc;AAGZ,SAAK,UAAU;AAAA,EACjB;AAAA,EACA,YAAY;AACV,SAAK,iBAAiB;AACtB,WAAO,KAAK,cAAc,KAAK,UAAU,EAAE,GAAG,SAAS,MAAM,KAAK,mBAAmB,CAAC,CAAC;AAAA,EACzF;AAAA,EACA,cAAc;AACZ,SAAK,mBAAmB;AAAA,EAC1B;AAAA,EACA,mBAAmB;AACjB,QAAI,KAAK,cAAc,GAAG;AACxB,WAAK,OAAO,kBAAkB,MAAM;AAClC,aAAK,gBAAgB,KAAK,SAAS,OAAO,UAAU,UAAU,KAAK,OAAO;AAAA,MAC5E,CAAC;AAAA,IACH;AACA,SAAK,aAAa;AAAA,EACpB;AAAA,EACA,qBAAqB;AACnB,SAAK,aAAa;AAClB,QAAI,KAAK,cAAc,GAAG;AACxB,WAAK,cAAc;AACnB,WAAK,gBAAgB;AAAA,IACvB;AAAA,EACF;AAaF;AAXI,iBAAK,OAAO,SAAS,wBAAwB,GAAG;AAC9C,SAAO,KAAK,KAAK,kBAAoB,SAAY,MAAM,GAAM,SAAY,gBAAgB,CAAC;AAC5F;AAGA,iBAAK,QAA0B,mBAAmB;AAAA,EAChD,OAAO;AAAA,EACP,SAAS,iBAAgB;AAAA,EACzB,YAAY;AACd,CAAC;AAnDL,IAAM,kBAAN;AAAA,CAsDC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,iBAAiB,CAAC;AAAA,IACxF,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,YAAY;AAAA,IACd,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,CAAC;AAAA,IACT,MAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAS;AAAA,EACX,CAAC,GAAG,IAAI;AACV,GAAG;AAUH,IAAM,qBAAqB,oBAAI,IAAI;AAKnC,IAAM,sBAAN,MAAM,oBAAmB;AAAA,EACvB,cAAc;AAOZ,SAAK,qBAAqB,oBAAI,IAAI;AAAA,EACpC;AAAA,EACA,IAAI,oBAAoB;AACtB,WAAO,YAAY,aAAa,qBAAqB,KAAK;AAAA,EAC5D;AAAA,EACA,yBAAyB,KAAK,QAAQ;AACpC,UAAM,cAAc,KAAK,kBAAkB,IAAI,GAAG;AAClD,UAAM,OAAO,cAAc,KAAK,kBAAkB,IAAI,GAAG,IAAI,KAAK,cAAc,MAAM;AACtF,QAAI,CAAC,aAAa;AAChB,WAAK,kBAAkB,IAAI,KAAK,IAAI;AAAA,IACtC;AAAA,EACF;AAAA,EACA,2BAA2B,KAAK;AAC9B,QAAI,KAAK,kBAAkB,IAAI,GAAG,GAAG;AACnC,WAAK,kBAAkB,OAAO,GAAG;AAAA,IACnC;AAAA,EACF;AAAA,EACA,oBAAoB,KAAK;AACvB,WAAO,KAAK,kBAAkB,IAAI,GAAG,IAAI,KAAK,kBAAkB,IAAI,GAAG,EAAE,SAAS;AAAA,EACpF;AAAA,EACA,cAAc,QAAQ;AACpB,WAAO;AAAA,MACL;AAAA,IACF;AAAA,EACF;AAaF;AAXI,oBAAK,OAAO,SAAS,2BAA2B,GAAG;AACjD,SAAO,KAAK,KAAK,qBAAoB;AACvC;AAGA,oBAAK,QAA0B,mBAAmB;AAAA,EAChD,OAAO;AAAA,EACP,SAAS,oBAAmB;AAAA,EAC5B,YAAY;AACd,CAAC;AA3CL,IAAM,qBAAN;AAAA,CA8CC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,oBAAoB,CAAC;AAAA,IAC3F,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,YAAY;AAAA,IACd,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,IAAI;AAChB,GAAG;AAMH,SAAS,gBAAgB,OAAO;AAC9B,QAAM,IAAI,iBAAiB,KAAK;AAChC,SAAO;AAAA,IACL,GAAG,EAAE;AAAA,IACL,GAAG,EAAE;AAAA,EACP;AACF;AAIA,IAAM,iBAAN,MAAM,eAAc;AAAA,EAClB,YAAY,kBAAkB;AAC5B,SAAK,oBAAoB;AACzB,SAAK,0BAA0B;AAC/B,SAAK,uBAAuB;AAC5B,SAAK,iBAAiB,oBAAI,IAAI;AAC9B,SAAK,WAAW,iBAAiB,eAAe,MAAM,IAAI;AAAA,EAC5D;AAAA,EACA,wBAAwB,OAAO;AAC7B,QAAI,CAAC,KAAK,eAAe,MAAM;AAC7B,WAAK,wBAAwB,aAAa,KAAK,CAAC;AAAA,IAClD;AAEA,QAAI,KAAK,yBAAyB;AAChC,WAAK,wBAAwB,SAAS;AAAA,IACxC;AACA,SAAK,uBAAuB,gBAAgB,KAAK;AACjD,SAAK,0BAA0B,IAAI,QAAQ;AAC3C,WAAO,KAAK,wBAAwB,KAAK,IAAI,QAAM;AAAA,MACjD,GAAG,EAAE,QAAQ,KAAK,qBAAqB;AAAA,MACvC,GAAG,EAAE,QAAQ,KAAK,qBAAqB;AAAA,IACzC,EAAE,GAAG,OAAO,OAAK,KAAK,IAAI,EAAE,CAAC,IAAI,KAAK,qBAAqB,KAAK,IAAI,EAAE,CAAC,IAAI,KAAK,iBAAiB,GAAG,SAAS,MAAM,KAAK,yBAAyB,CAAC,CAAC;AAAA,EACrJ;AAAA,EACA,wBAAwB,SAAS;AAC/B,QAAI,SAAS;AACX,WAAK,eAAe,IAAI;AAAA,QACtB,UAAU,KAAK,SAAS,OAAO,YAAY,aAAa,OAAK;AAC3D,cAAI,KAAK,yBAAyB;AAChC,iBAAK,wBAAwB,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;AAAA,UACvE;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AACD,WAAK,eAAe,IAAI;AAAA,QACtB,UAAU,KAAK,SAAS,OAAO,YAAY,YAAY,MAAM;AAC3D,cAAI,KAAK,yBAAyB;AAChC,iBAAK,wBAAwB,SAAS;AAAA,UACxC;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AAAA,IACH,OAAO;AACL,WAAK,eAAe,IAAI;AAAA,QACtB,UAAU,KAAK,SAAS,OAAO,YAAY,aAAa,OAAK;AAC3D,cAAI,KAAK,yBAAyB;AAChC,iBAAK,wBAAwB,KAAK,CAAC;AAAA,UACrC;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AACD,WAAK,eAAe,IAAI;AAAA,QACtB,UAAU,KAAK,SAAS,OAAO,YAAY,WAAW,MAAM;AAC1D,cAAI,KAAK,yBAAyB;AAChC,iBAAK,wBAAwB,SAAS;AAAA,UACxC;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,2BAA2B;AACzB,SAAK,0BAA0B;AAAA,EACjC;AAaF;AAXI,eAAK,OAAO,SAAS,sBAAsB,GAAG;AAC5C,SAAO,KAAK,KAAK,gBAAkB,SAAY,gBAAgB,CAAC;AAClE;AAGA,eAAK,QAA0B,mBAAmB;AAAA,EAChD,OAAO;AAAA,EACP,SAAS,eAAc;AAAA,EACvB,YAAY;AACd,CAAC;AArEL,IAAM,gBAAN;AAAA,CAwEC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,eAAe,CAAC;AAAA,IACtF,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,YAAY;AAAA,IACd,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,CAAC;AAAA,IACT,MAAS;AAAA,EACX,CAAC,GAAG,IAAI;AACV,GAAG;AAMH,SAAS,eAAe,GAAG,GAAG,GAAG,GAAG;AAClC,QAAM,KAAK,IAAI;AACf,MAAI,KAAK,KAAK,IAAI;AAClB,MAAI,KAAK,GAAG;AACV,WAAO,KAAK,IAAI,KAAK,KAAK,KAAK;AAAA,EACjC,OAAO;AACL,WAAO,KAAK,MAAM,MAAM,KAAK,KAAK,KAAK,KAAK;AAAA,EAC9C;AACF;AACA,IAAM,mBAAN,MAAM,iBAAgB;AAAA,EACpB,YAAY,QAAQ,KAAK;AACvB,SAAK,SAAS;AACd,SAAK,MAAM;AAAA,EACb;AAAA;AAAA,EAEA,aAAa,IAAI,WAAW,GAAG;AAC7B,QAAI,OAAO,QAAQ;AACjB,WAAK,IAAI,KAAK,YAAY;AAC1B,WAAK,IAAI,gBAAgB,YAAY;AAAA,IACvC,OAAO;AACL,SAAG,YAAY;AAAA,IACjB;AAAA,EACF;AAAA;AAAA,EAEA,UAAU,IAAI;AACZ,UAAM,MAAM;AAAA,MACV,KAAK;AAAA,MACL,MAAM;AAAA,IACR;AACA,QAAI,CAAC,MAAM,CAAC,GAAG,eAAe,EAAE,QAAQ;AACtC,aAAO;AAAA,IACT;AACA,UAAM,OAAO,GAAG,sBAAsB;AACtC,QAAI,KAAK,SAAS,KAAK,QAAQ;AAC7B,YAAM,MAAM,GAAG,cAAc;AAC7B,UAAI,MAAM,KAAK,MAAM,IAAI;AACzB,UAAI,OAAO,KAAK,OAAO,IAAI;AAAA,IAC7B,OAAO;AACL,UAAI,MAAM,KAAK;AACf,UAAI,OAAO,KAAK;AAAA,IAClB;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA,EAGA,UAAU,QAAQ,MAAM,MAAM;AAC5B,QAAI,OAAO,WAAW,aAAa;AACjC,aAAO;AAAA,IACT;AACA,UAAM,SAAS,MAAM,cAAc;AACnC,QAAI,SAAS;AACb,QAAI,KAAK,SAAS,MAAM,GAAG;AACzB,eAAS,OAAO,MAAM,gBAAgB,aAAa;AAAA,IACrD,WAAW,kBAAkB,UAAU;AACrC,eAAS,OAAO,gBAAgB,MAAM;AAAA,IACxC,WAAW,QAAQ;AACjB,eAAS,OAAO,MAAM;AAAA,IACxB;AACA,QAAI,UAAU,CAAC,KAAK,SAAS,MAAM,KAAK,OAAO,WAAW,UAAU;AAClE,gBAAU,OAAO,iBAAiB,QAAQ,gBAAgB,MAAM;AAAA,IAClE;AACA,WAAO;AAAA,EACT;AAAA,EACA,SAAS,KAAK;AACZ,WAAO,QAAQ,QAAQ,QAAQ,UAAa,QAAQ,IAAI;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAS,aAAa,IAAI,GAAG,UAAU,CAAC,GAAG;AACzC,UAAM,SAAS,cAAc,cAAc;AAC3C,UAAM,YAAY,KAAK,UAAU,MAAM;AACvC,UAAM,YAAY,KAAK,IAAI;AAC3B,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,WAAW;AAAA,IACb,IAAI;AACJ,UAAM,YAAY,MAAM;AACtB,YAAM,YAAY,KAAK,IAAI;AAC3B,YAAM,OAAO,YAAY;AACzB,YAAM,iBAAiB,UAAU,gBAAgB,OAAO,WAAW,WAAW,MAAM,WAAW,GAAG,QAAQ;AAC1G,UAAI,KAAK,SAAS,MAAM,GAAG;AACzB,eAAO,SAAS,OAAO,aAAa,aAAa;AAAA,MACnD,WAAW,kBAAkB,gBAAgB,OAAO,YAAY,SAAS,gBAAgB;AACvF,eAAO,gBAAgB,YAAY;AAAA,MACrC,OAAO;AACL,eAAO,YAAY;AAAA,MACrB;AACA,UAAI,OAAO,UAAU;AACnB,qBAAa,SAAS;AAAA,MACxB,WAAW,OAAO,aAAa,YAAY;AAGzC,aAAK,OAAO,IAAI,QAAQ;AAAA,MAC1B;AAAA,IACF;AAGA,SAAK,OAAO,kBAAkB,MAAM,aAAa,SAAS,CAAC;AAAA,EAC7D;AAaF;AAXI,iBAAK,OAAO,SAAS,wBAAwB,GAAG;AAC9C,SAAO,KAAK,KAAK,kBAAoB,SAAY,MAAM,GAAM,SAAS,QAAQ,CAAC;AACjF;AAGA,iBAAK,QAA0B,mBAAmB;AAAA,EAChD,OAAO;AAAA,EACP,SAAS,iBAAgB;AAAA,EACzB,YAAY;AACd,CAAC;AAzGL,IAAM,kBAAN;AAAA,CA4GC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,iBAAiB,CAAC;AAAA,IACxF,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,YAAY;AAAA,IACd,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,CAAC;AAAA,IACT,MAAS;AAAA,EACX,GAAG;AAAA,IACD,MAAM;AAAA,IACN,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,MACN,MAAM,CAAC,QAAQ;AAAA,IACjB,CAAC;AAAA,EACH,CAAC,GAAG,IAAI;AACV,GAAG;AACH,IAAI;AAAA,CACH,SAAUA,mBAAkB;AAC3B,EAAAA,kBAAiB,KAAK,IAAI;AAC1B,EAAAA,kBAAiB,IAAI,IAAI;AACzB,EAAAA,kBAAiB,IAAI,IAAI;AACzB,EAAAA,kBAAiB,IAAI,IAAI;AACzB,EAAAA,kBAAiB,IAAI,IAAI;AACzB,EAAAA,kBAAiB,IAAI,IAAI;AAC3B,GAAG,qBAAqB,mBAAmB,CAAC,EAAE;AAC9C,IAAM,oBAAoB;AAAA,EACxB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AACP;AACA,IAAM,qBAAqB;AAAA,EACzB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AACP;AACA,IAAM,uBAAN,MAAM,qBAAoB;AAAA,EACxB,YAAY,eAAe,cAAc;AACvC,SAAK,gBAAgB;AACrB,SAAK,eAAe;AACpB,SAAK,WAAW,IAAI,QAAQ;AAC5B,SAAK,cAAc,UAAU,EAAE,KAAK,UAAU,KAAK,QAAQ,CAAC,EAAE,UAAU,MAAM;AAAA,IAAC,CAAC;AAAA,EAClF;AAAA,EACA,cAAc;AACZ,SAAK,SAAS,KAAK;AAAA,EACrB;AAAA,EACA,UAAU,eAAe,SAAS;AAChC,QAAI,SAAS;AAEX,YAAM,MAAM,MAAM,KAAK,WAAW,eAAe,IAAI;AACrD,aAAO,KAAK,cAAc,UAAU,EAAE,KAAK,IAAI,GAAG,GAAG,UAAU,IAAI,CAAC,GAAG,qBAAqB,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,IAAI,OAAK,EAAE,CAAC,CAAC,CAAC;AAAA,IACtI,OAAO;AAEL,YAAM,MAAM,MAAM,KAAK,WAAW,aAAa;AAC/C,aAAO,KAAK,cAAc,UAAU,EAAE,KAAK,IAAI,GAAG,GAAG,UAAU,IAAI,CAAC,GAAG,qBAAqB,CAAC;AAAA,IAC/F;AAAA,EACF;AAAA,EACA,WAAW,eAAe,SAAS;AACjC,QAAI,KAAK,iBAAiB;AAC1B,UAAM,uBAAuB,CAAC;AAC9B,WAAO,KAAK,aAAa,EAAE,IAAI,gBAAc;AAC3C,YAAM,SAAS;AACf,YAAM,UAAU,KAAK,aAAa,WAAW,kBAAkB,MAAM,CAAC,EAAE;AACxE,2BAAqB,UAAU,IAAI;AACnC,UAAI,SAAS;AACX,aAAK;AAAA,MACP;AAAA,IACF,CAAC;AACD,QAAI,SAAS;AACX,aAAO,CAAC,IAAI,oBAAoB;AAAA,IAClC,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAaF;AAXI,qBAAK,OAAO,SAAS,4BAA4B,GAAG;AAClD,SAAO,KAAK,KAAK,sBAAwB,SAAS,eAAe,GAAM,SAAY,YAAY,CAAC;AAClG;AAGA,qBAAK,QAA0B,mBAAmB;AAAA,EAChD,OAAO;AAAA,EACP,SAAS,qBAAoB;AAAA,EAC7B,YAAY;AACd,CAAC;AAhDL,IAAM,sBAAN;AAAA,CAmDC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,qBAAqB,CAAC;AAAA,IAC5F,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,YAAY;AAAA,IACd,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,CAAC;AAAA,IACT,MAAM;AAAA,EACR,GAAG;AAAA,IACD,MAAS;AAAA,EACX,CAAC,GAAG,IAAI;AACV,GAAG;AAMH,IAAM,oBAAN,MAAM,0BAAyB,QAAQ;AAAA,EACrC,cAAc;AACZ,SAAK,KAAK;AACV,SAAK,SAAS;AAAA,EAChB;AAeF;AAbI,kBAAK,QAAuB,MAAM;AAChC,MAAI;AACJ,SAAO,SAAS,yBAAyB,GAAG;AAC1C,YAAQ,kCAAkC,gCAAmC,sBAAsB,iBAAgB,IAAI,KAAK,iBAAgB;AAAA,EAC9I;AACF,GAAG;AAGH,kBAAK,QAA0B,mBAAmB;AAAA,EAChD,OAAO;AAAA,EACP,SAAS,kBAAiB;AAC5B,CAAC;AAjBL,IAAM,mBAAN;AAAA,CAoBC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,kBAAkB,CAAC;AAAA,IACzF,MAAM;AAAA,EACR,CAAC,GAAG,MAAM,IAAI;AAChB,GAAG;AACH,IAAM,uBAAN,MAAM,qBAAoB;AAAA,EACxB,YAAY,UAAU,UAAU;AAC9B,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,SAAK,UAAU,oBAAI,IAAI;AACvB,SAAK,WAAW,oBAAI,IAAI;AAAA,EAC1B;AAAA,EACA,WAAW,QAAQ;AACjB,QAAI,KAAK,SAAS,WAAW;AAC3B,aAAO,MAAM;AAAA,IACf;AACA,UAAM,YAAY,GAAG,OAAO,GAAG,GAAG,OAAO,MAAM;AAC/C,QAAI,eAAe,KAAK,QAAQ,IAAI,SAAS,KAAK;AAClD;AACA,SAAK,QAAQ,IAAI,WAAW,YAAY;AACxC,QAAI,CAAC,KAAK,SAAS,IAAI,SAAS,GAAG;AACjC,YAAM,WAAW,KAAK,kBAAkB,MAAM;AAC9C,WAAK,SAAS,IAAI,WAAW,QAAQ;AAAA,IACvC;AACA,WAAO,MAAM;AACX,UAAI,KAAK,QAAQ,IAAI,SAAS,GAAG;AAC/B,YAAI,QAAQ,KAAK,QAAQ,IAAI,SAAS;AACtC;AACA,YAAI,UAAU,GAAG;AACf,gBAAM,WAAW,KAAK,SAAS,IAAI,SAAS;AAC5C,eAAK,kBAAkB,QAAQ;AAC/B,eAAK,QAAQ,OAAO,SAAS;AAC7B,eAAK,SAAS,OAAO,SAAS;AAAA,QAChC,OAAO;AACL,eAAK,QAAQ,IAAI,WAAW,KAAK;AAAA,QACnC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,kBAAkB,QAAQ;AACxB,UAAM,WAAW,KAAK,SAAS,cAAc,MAAM;AACnD,aAAS,aAAa,OAAO,SAAS;AACtC,aAAS,aAAa,MAAM,OAAO;AACnC,aAAS,aAAa,QAAQ,OAAO,GAAG;AACxC,QAAI,OAAO,QAAQ;AACjB,eAAS,aAAa,eAAe,OAAO,MAAM;AAAA,IACpD;AACA,SAAK,SAAS,KAAK,YAAY,QAAQ;AACvC,WAAO;AAAA,EACT;AAAA,EACA,kBAAkB,UAAU;AAC1B,QAAI,KAAK,SAAS,KAAK,SAAS,QAAQ,GAAG;AACzC,WAAK,SAAS,KAAK,YAAY,QAAQ;AAAA,IACzC;AAAA,EACF;AAaF;AAXI,qBAAK,OAAO,SAAS,4BAA4B,GAAG;AAClD,SAAO,KAAK,KAAK,sBAAwB,SAAS,QAAQ,GAAM,SAAY,QAAQ,CAAC;AACvF;AAGA,qBAAK,QAA0B,mBAAmB;AAAA,EAChD,OAAO;AAAA,EACP,SAAS,qBAAoB;AAAA,EAC7B,YAAY;AACd,CAAC;AA5DL,IAAM,sBAAN;AAAA,CA+DC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,qBAAqB,CAAC;AAAA,IAC5F,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,YAAY;AAAA,IACd,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,CAAC;AAAA,IACT,MAAM;AAAA,IACN,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,MACN,MAAM,CAAC,QAAQ;AAAA,IACjB,CAAC;AAAA,EACH,GAAG;AAAA,IACD,MAAS;AAAA,EACX,CAAC,GAAG,IAAI;AACV,GAAG;", "names": ["NzBreakpointEnum"] } diff --git a/.angular/cache/17.0.7/vite/deps/chunk-C2DNBB57.js b/.angular/cache/17.0.7/vite/deps/chunk-E6XJDY45.js similarity index 84% rename from .angular/cache/17.0.7/vite/deps/chunk-C2DNBB57.js rename to .angular/cache/17.0.7/vite/deps/chunk-E6XJDY45.js index 119d36b..dd6ff51 100644 --- a/.angular/cache/17.0.7/vite/deps/chunk-C2DNBB57.js +++ b/.angular/cache/17.0.7/vite/deps/chunk-E6XJDY45.js @@ -1,24 +1,38 @@ import { + A, ALT, CONTROL, + DOWN_ARROW, + END, + HOME, + LEFT_ARROW, MAC_META, META, - SHIFT -} from "./chunk-UMSNQQWJ.js"; + NINE, + PAGE_DOWN, + PAGE_UP, + RIGHT_ARROW, + SHIFT, + TAB, + UP_ARROW, + Z, + ZERO, + hasModifierKey +} from "./chunk-JGP5BR6B.js"; import { BreakpointObserver -} from "./chunk-5OJ3CSUZ.js"; +} from "./chunk-WB57DPWD.js"; import { Platform, _getEventTarget, _getFocusedElementPierceShadowDom, _getShadowRoot, normalizePassiveListenerOptions -} from "./chunk-UPQZZZIG.js"; +} from "./chunk-IAC53GOD.js"; import { coerceElement, coerceNumberProperty -} from "./chunk-7XTJNSRU.js"; +} from "./chunk-M5GY4FCO.js"; import { DOCUMENT } from "./chunk-OSQBUYO6.js"; @@ -37,16 +51,21 @@ import { Observable, Optional, Output, + QueryList, Subject, + Subscription, booleanAttribute, debounceTime, distinctUntilChanged, + filter, inject, + map, of, setClassMetadata, skip, take, takeUntil, + tap, ɵɵInputTransformsFeature, ɵɵNgOnChangesFeature, ɵɵdefineDirective, @@ -499,6 +518,342 @@ function setMessageId(element, serviceId) { element.id = `${CDK_DESCRIBEDBY_ID_PREFIX}-${serviceId}-${nextId++}`; } } +var ListKeyManager = class { + constructor(_items) { + this._items = _items; + this._activeItemIndex = -1; + this._activeItem = null; + this._wrap = false; + this._letterKeyStream = new Subject(); + this._typeaheadSubscription = Subscription.EMPTY; + this._vertical = true; + this._allowedModifierKeys = []; + this._homeAndEnd = false; + this._pageUpAndDown = { + enabled: false, + delta: 10 + }; + this._skipPredicateFn = (item) => item.disabled; + this._pressedLetters = []; + this.tabOut = new Subject(); + this.change = new Subject(); + if (_items instanceof QueryList) { + this._itemChangesSubscription = _items.changes.subscribe((newItems) => { + if (this._activeItem) { + const itemArray = newItems.toArray(); + const newIndex = itemArray.indexOf(this._activeItem); + if (newIndex > -1 && newIndex !== this._activeItemIndex) { + this._activeItemIndex = newIndex; + } + } + }); + } + } + /** + * Sets the predicate function that determines which items should be skipped by the + * list key manager. + * @param predicate Function that determines whether the given item should be skipped. + */ + skipPredicate(predicate) { + this._skipPredicateFn = predicate; + return this; + } + /** + * Configures wrapping mode, which determines whether the active item will wrap to + * the other end of list when there are no more items in the given direction. + * @param shouldWrap Whether the list should wrap when reaching the end. + */ + withWrap(shouldWrap = true) { + this._wrap = shouldWrap; + return this; + } + /** + * Configures whether the key manager should be able to move the selection vertically. + * @param enabled Whether vertical selection should be enabled. + */ + withVerticalOrientation(enabled = true) { + this._vertical = enabled; + return this; + } + /** + * Configures the key manager to move the selection horizontally. + * Passing in `null` will disable horizontal movement. + * @param direction Direction in which the selection can be moved. + */ + withHorizontalOrientation(direction) { + this._horizontal = direction; + return this; + } + /** + * Modifier keys which are allowed to be held down and whose default actions will be prevented + * as the user is pressing the arrow keys. Defaults to not allowing any modifier keys. + */ + withAllowedModifierKeys(keys) { + this._allowedModifierKeys = keys; + return this; + } + /** + * Turns on typeahead mode which allows users to set the active item by typing. + * @param debounceInterval Time to wait after the last keystroke before setting the active item. + */ + withTypeAhead(debounceInterval = 200) { + if ((typeof ngDevMode === "undefined" || ngDevMode) && this._items.length && this._items.some((item) => typeof item.getLabel !== "function")) { + throw Error("ListKeyManager items in typeahead mode must implement the `getLabel` method."); + } + this._typeaheadSubscription.unsubscribe(); + this._typeaheadSubscription = this._letterKeyStream.pipe(tap((letter) => this._pressedLetters.push(letter)), debounceTime(debounceInterval), filter(() => this._pressedLetters.length > 0), map(() => this._pressedLetters.join(""))).subscribe((inputString) => { + const items = this._getItemsArray(); + for (let i = 1; i < items.length + 1; i++) { + const index = (this._activeItemIndex + i) % items.length; + const item = items[index]; + if (!this._skipPredicateFn(item) && item.getLabel().toUpperCase().trim().indexOf(inputString) === 0) { + this.setActiveItem(index); + break; + } + } + this._pressedLetters = []; + }); + return this; + } + /** Cancels the current typeahead sequence. */ + cancelTypeahead() { + this._pressedLetters = []; + return this; + } + /** + * Configures the key manager to activate the first and last items + * respectively when the Home or End key is pressed. + * @param enabled Whether pressing the Home or End key activates the first/last item. + */ + withHomeAndEnd(enabled = true) { + this._homeAndEnd = enabled; + return this; + } + /** + * Configures the key manager to activate every 10th, configured or first/last element in up/down direction + * respectively when the Page-Up or Page-Down key is pressed. + * @param enabled Whether pressing the Page-Up or Page-Down key activates the first/last item. + * @param delta Whether pressing the Home or End key activates the first/last item. + */ + withPageUpDown(enabled = true, delta = 10) { + this._pageUpAndDown = { + enabled, + delta + }; + return this; + } + setActiveItem(item) { + const previousActiveItem = this._activeItem; + this.updateActiveItem(item); + if (this._activeItem !== previousActiveItem) { + this.change.next(this._activeItemIndex); + } + } + /** + * Sets the active item depending on the key event passed in. + * @param event Keyboard event to be used for determining which element should be active. + */ + onKeydown(event) { + const keyCode = event.keyCode; + const modifiers = ["altKey", "ctrlKey", "metaKey", "shiftKey"]; + const isModifierAllowed = modifiers.every((modifier) => { + return !event[modifier] || this._allowedModifierKeys.indexOf(modifier) > -1; + }); + switch (keyCode) { + case TAB: + this.tabOut.next(); + return; + case DOWN_ARROW: + if (this._vertical && isModifierAllowed) { + this.setNextItemActive(); + break; + } else { + return; + } + case UP_ARROW: + if (this._vertical && isModifierAllowed) { + this.setPreviousItemActive(); + break; + } else { + return; + } + case RIGHT_ARROW: + if (this._horizontal && isModifierAllowed) { + this._horizontal === "rtl" ? this.setPreviousItemActive() : this.setNextItemActive(); + break; + } else { + return; + } + case LEFT_ARROW: + if (this._horizontal && isModifierAllowed) { + this._horizontal === "rtl" ? this.setNextItemActive() : this.setPreviousItemActive(); + break; + } else { + return; + } + case HOME: + if (this._homeAndEnd && isModifierAllowed) { + this.setFirstItemActive(); + break; + } else { + return; + } + case END: + if (this._homeAndEnd && isModifierAllowed) { + this.setLastItemActive(); + break; + } else { + return; + } + case PAGE_UP: + if (this._pageUpAndDown.enabled && isModifierAllowed) { + const targetIndex = this._activeItemIndex - this._pageUpAndDown.delta; + this._setActiveItemByIndex(targetIndex > 0 ? targetIndex : 0, 1); + break; + } else { + return; + } + case PAGE_DOWN: + if (this._pageUpAndDown.enabled && isModifierAllowed) { + const targetIndex = this._activeItemIndex + this._pageUpAndDown.delta; + const itemsLength = this._getItemsArray().length; + this._setActiveItemByIndex(targetIndex < itemsLength ? targetIndex : itemsLength - 1, -1); + break; + } else { + return; + } + default: + if (isModifierAllowed || hasModifierKey(event, "shiftKey")) { + if (event.key && event.key.length === 1) { + this._letterKeyStream.next(event.key.toLocaleUpperCase()); + } else if (keyCode >= A && keyCode <= Z || keyCode >= ZERO && keyCode <= NINE) { + this._letterKeyStream.next(String.fromCharCode(keyCode)); + } + } + return; + } + this._pressedLetters = []; + event.preventDefault(); + } + /** Index of the currently active item. */ + get activeItemIndex() { + return this._activeItemIndex; + } + /** The active item. */ + get activeItem() { + return this._activeItem; + } + /** Gets whether the user is currently typing into the manager using the typeahead feature. */ + isTyping() { + return this._pressedLetters.length > 0; + } + /** Sets the active item to the first enabled item in the list. */ + setFirstItemActive() { + this._setActiveItemByIndex(0, 1); + } + /** Sets the active item to the last enabled item in the list. */ + setLastItemActive() { + this._setActiveItemByIndex(this._items.length - 1, -1); + } + /** Sets the active item to the next enabled item in the list. */ + setNextItemActive() { + this._activeItemIndex < 0 ? this.setFirstItemActive() : this._setActiveItemByDelta(1); + } + /** Sets the active item to a previous enabled item in the list. */ + setPreviousItemActive() { + this._activeItemIndex < 0 && this._wrap ? this.setLastItemActive() : this._setActiveItemByDelta(-1); + } + updateActiveItem(item) { + const itemArray = this._getItemsArray(); + const index = typeof item === "number" ? item : itemArray.indexOf(item); + const activeItem = itemArray[index]; + this._activeItem = activeItem == null ? null : activeItem; + this._activeItemIndex = index; + } + /** Cleans up the key manager. */ + destroy() { + this._typeaheadSubscription.unsubscribe(); + this._itemChangesSubscription?.unsubscribe(); + this._letterKeyStream.complete(); + this.tabOut.complete(); + this.change.complete(); + this._pressedLetters = []; + } + /** + * This method sets the active item, given a list of items and the delta between the + * currently active item and the new active item. It will calculate differently + * depending on whether wrap mode is turned on. + */ + _setActiveItemByDelta(delta) { + this._wrap ? this._setActiveInWrapMode(delta) : this._setActiveInDefaultMode(delta); + } + /** + * Sets the active item properly given "wrap" mode. In other words, it will continue to move + * down the list until it finds an item that is not disabled, and it will wrap if it + * encounters either end of the list. + */ + _setActiveInWrapMode(delta) { + const items = this._getItemsArray(); + for (let i = 1; i <= items.length; i++) { + const index = (this._activeItemIndex + delta * i + items.length) % items.length; + const item = items[index]; + if (!this._skipPredicateFn(item)) { + this.setActiveItem(index); + return; + } + } + } + /** + * Sets the active item properly given the default mode. In other words, it will + * continue to move down the list until it finds an item that is not disabled. If + * it encounters either end of the list, it will stop and not wrap. + */ + _setActiveInDefaultMode(delta) { + this._setActiveItemByIndex(this._activeItemIndex + delta, delta); + } + /** + * Sets the active item to the first enabled item starting at the index specified. If the + * item is disabled, it will move in the fallbackDelta direction until it either + * finds an enabled item or encounters the end of the list. + */ + _setActiveItemByIndex(index, fallbackDelta) { + const items = this._getItemsArray(); + if (!items[index]) { + return; + } + while (this._skipPredicateFn(items[index])) { + index += fallbackDelta; + if (!items[index]) { + return; + } + } + this.setActiveItem(index); + } + /** Returns the items as an array. */ + _getItemsArray() { + return this._items instanceof QueryList ? this._items.toArray() : this._items; + } +}; +var FocusKeyManager = class extends ListKeyManager { + constructor() { + super(...arguments); + this._origin = "program"; + } + /** + * Sets the focus origin that will be passed in to the items for any subsequent `focus` calls. + * @param origin Focus origin to be used when focusing items. + */ + setFocusOrigin(origin) { + this._origin = origin; + return this; + } + setActiveItem(item) { + super.setActiveItem(item); + if (this.activeItem) { + this.activeItem.focus(this._origin); + } + } +}; var _InteractivityChecker = class _InteractivityChecker { constructor(_platform) { this._platform = _platform; @@ -2009,6 +2364,10 @@ var A11yModule = _A11yModule; })(); export { - FocusMonitor + FocusKeyManager, + FocusTrapFactory, + FocusMonitor, + CdkMonitorFocus, + A11yModule }; -//# sourceMappingURL=chunk-C2DNBB57.js.map +//# sourceMappingURL=chunk-E6XJDY45.js.map diff --git a/.angular/cache/17.0.7/vite/deps/chunk-C2DNBB57.js.map b/.angular/cache/17.0.7/vite/deps/chunk-E6XJDY45.js.map similarity index 71% rename from .angular/cache/17.0.7/vite/deps/chunk-C2DNBB57.js.map rename to .angular/cache/17.0.7/vite/deps/chunk-E6XJDY45.js.map index 27500ec..7aab48b 100644 --- a/.angular/cache/17.0.7/vite/deps/chunk-C2DNBB57.js.map +++ b/.angular/cache/17.0.7/vite/deps/chunk-E6XJDY45.js.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../../../../../node_modules/@angular/cdk/fesm2022/observers.mjs", "../../../../../node_modules/@angular/cdk/fesm2022/a11y.mjs"], "sourcesContent": ["import { coerceElement, coerceNumberProperty } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, booleanAttribute, Directive, Output, Input, NgModule } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n/**\n * Factory that creates a new MutationObserver and allows us to stub it out in unit tests.\n * @docs-private\n */\nclass MutationObserverFactory {\n create(callback) {\n return typeof MutationObserver === 'undefined' ? null : new MutationObserver(callback);\n }\n static {\n this.ɵfac = function MutationObserverFactory_Factory(t) {\n return new (t || MutationObserverFactory)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MutationObserverFactory,\n factory: MutationObserverFactory.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MutationObserverFactory, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\n/** An injectable service that allows watching elements for changes to their content. */\nclass ContentObserver {\n constructor(_mutationObserverFactory) {\n this._mutationObserverFactory = _mutationObserverFactory;\n /** Keeps track of the existing MutationObservers so they can be reused. */\n this._observedElements = new Map();\n }\n ngOnDestroy() {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n observe(elementOrRef) {\n const element = coerceElement(elementOrRef);\n return new Observable(observer => {\n const stream = this._observeElement(element);\n const subscription = stream.subscribe(observer);\n return () => {\n subscription.unsubscribe();\n this._unobserveElement(element);\n };\n });\n }\n /**\n * Observes the given element by using the existing MutationObserver if available, or creating a\n * new one if not.\n */\n _observeElement(element) {\n if (!this._observedElements.has(element)) {\n const stream = new Subject();\n const observer = this._mutationObserverFactory.create(mutations => stream.next(mutations));\n if (observer) {\n observer.observe(element, {\n characterData: true,\n childList: true,\n subtree: true\n });\n }\n this._observedElements.set(element, {\n observer,\n stream,\n count: 1\n });\n } else {\n this._observedElements.get(element).count++;\n }\n return this._observedElements.get(element).stream;\n }\n /**\n * Un-observes the given element and cleans up the underlying MutationObserver if nobody else is\n * observing this element.\n */\n _unobserveElement(element) {\n if (this._observedElements.has(element)) {\n this._observedElements.get(element).count--;\n if (!this._observedElements.get(element).count) {\n this._cleanupObserver(element);\n }\n }\n }\n /** Clean up the underlying MutationObserver for the specified element. */\n _cleanupObserver(element) {\n if (this._observedElements.has(element)) {\n const {\n observer,\n stream\n } = this._observedElements.get(element);\n if (observer) {\n observer.disconnect();\n }\n stream.complete();\n this._observedElements.delete(element);\n }\n }\n static {\n this.ɵfac = function ContentObserver_Factory(t) {\n return new (t || ContentObserver)(i0.ɵɵinject(MutationObserverFactory));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ContentObserver,\n factory: ContentObserver.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ContentObserver, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: MutationObserverFactory\n }], null);\n})();\n/**\n * Directive that triggers a callback whenever the content of\n * its associated element has changed.\n */\nclass CdkObserveContent {\n /**\n * Whether observing content is disabled. This option can be used\n * to disconnect the underlying MutationObserver until it is needed.\n */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value;\n this._disabled ? this._unsubscribe() : this._subscribe();\n }\n /** Debounce interval for emitting the changes. */\n get debounce() {\n return this._debounce;\n }\n set debounce(value) {\n this._debounce = coerceNumberProperty(value);\n this._subscribe();\n }\n constructor(_contentObserver, _elementRef, _ngZone) {\n this._contentObserver = _contentObserver;\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n /** Event emitted for each change in the element's content. */\n this.event = new EventEmitter();\n this._disabled = false;\n this._currentSubscription = null;\n }\n ngAfterContentInit() {\n if (!this._currentSubscription && !this.disabled) {\n this._subscribe();\n }\n }\n ngOnDestroy() {\n this._unsubscribe();\n }\n _subscribe() {\n this._unsubscribe();\n const stream = this._contentObserver.observe(this._elementRef);\n // TODO(mmalerba): We shouldn't be emitting on this @Output() outside the zone.\n // Consider brining it back inside the zone next time we're making breaking changes.\n // Bringing it back inside can cause things like infinite change detection loops and changed\n // after checked errors if people's code isn't handling it properly.\n this._ngZone.runOutsideAngular(() => {\n this._currentSubscription = (this.debounce ? stream.pipe(debounceTime(this.debounce)) : stream).subscribe(this.event);\n });\n }\n _unsubscribe() {\n this._currentSubscription?.unsubscribe();\n }\n static {\n this.ɵfac = function CdkObserveContent_Factory(t) {\n return new (t || CdkObserveContent)(i0.ɵɵdirectiveInject(ContentObserver), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkObserveContent,\n selectors: [[\"\", \"cdkObserveContent\", \"\"]],\n inputs: {\n disabled: [\"cdkObserveContentDisabled\", \"disabled\", booleanAttribute],\n debounce: \"debounce\"\n },\n outputs: {\n event: \"cdkObserveContent\"\n },\n exportAs: [\"cdkObserveContent\"],\n features: [i0.ɵɵInputTransformsFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkObserveContent, [{\n type: Directive,\n args: [{\n selector: '[cdkObserveContent]',\n exportAs: 'cdkObserveContent'\n }]\n }], () => [{\n type: ContentObserver\n }, {\n type: i0.ElementRef\n }, {\n type: i0.NgZone\n }], {\n event: [{\n type: Output,\n args: ['cdkObserveContent']\n }],\n disabled: [{\n type: Input,\n args: [{\n alias: 'cdkObserveContentDisabled',\n transform: booleanAttribute\n }]\n }],\n debounce: [{\n type: Input\n }]\n });\n})();\nclass ObserversModule {\n static {\n this.ɵfac = function ObserversModule_Factory(t) {\n return new (t || ObserversModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: ObserversModule,\n declarations: [CdkObserveContent],\n exports: [CdkObserveContent]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [MutationObserverFactory]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ObserversModule, [{\n type: NgModule,\n args: [{\n exports: [CdkObserveContent],\n declarations: [CdkObserveContent],\n providers: [MutationObserverFactory]\n }]\n }], null, null);\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkObserveContent, ContentObserver, MutationObserverFactory, ObserversModule };\n", "import { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { inject, APP_ID, Injectable, Inject, QueryList, booleanAttribute, Directive, Input, InjectionToken, Optional, EventEmitter, Output, NgModule } from '@angular/core';\nimport * as i1 from '@angular/cdk/platform';\nimport { _getFocusedElementPierceShadowDom, normalizePassiveListenerOptions, _getEventTarget, _getShadowRoot } from '@angular/cdk/platform';\nimport { Subject, Subscription, BehaviorSubject, of } from 'rxjs';\nimport { hasModifierKey, A, Z, ZERO, NINE, PAGE_DOWN, PAGE_UP, END, HOME, LEFT_ARROW, RIGHT_ARROW, UP_ARROW, DOWN_ARROW, TAB, ALT, CONTROL, MAC_META, META, SHIFT } from '@angular/cdk/keycodes';\nimport { tap, debounceTime, filter, map, take, skip, distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport * as i1$1 from '@angular/cdk/observers';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { BreakpointObserver } from '@angular/cdk/layout';\n\n/** IDs are delimited by an empty space, as per the spec. */\nconst ID_DELIMITER = ' ';\n/**\n * Adds the given ID to the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction addAriaReferencedId(el, attr, id) {\n const ids = getAriaReferenceIds(el, attr);\n if (ids.some(existingId => existingId.trim() == id.trim())) {\n return;\n }\n ids.push(id.trim());\n el.setAttribute(attr, ids.join(ID_DELIMITER));\n}\n/**\n * Removes the given ID from the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction removeAriaReferencedId(el, attr, id) {\n const ids = getAriaReferenceIds(el, attr);\n const filteredIds = ids.filter(val => val != id.trim());\n if (filteredIds.length) {\n el.setAttribute(attr, filteredIds.join(ID_DELIMITER));\n } else {\n el.removeAttribute(attr);\n }\n}\n/**\n * Gets the list of IDs referenced by the given ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction getAriaReferenceIds(el, attr) {\n // Get string array of all individual ids (whitespace delimited) in the attribute value\n return (el.getAttribute(attr) || '').match(/\\S+/g) || [];\n}\n\n/**\n * ID used for the body container where all messages are appended.\n * @deprecated No longer being used. To be removed.\n * @breaking-change 14.0.0\n */\nconst MESSAGES_CONTAINER_ID = 'cdk-describedby-message-container';\n/**\n * ID prefix used for each created message element.\n * @deprecated To be turned into a private variable.\n * @breaking-change 14.0.0\n */\nconst CDK_DESCRIBEDBY_ID_PREFIX = 'cdk-describedby-message';\n/**\n * Attribute given to each host element that is described by a message element.\n * @deprecated To be turned into a private variable.\n * @breaking-change 14.0.0\n */\nconst CDK_DESCRIBEDBY_HOST_ATTRIBUTE = 'cdk-describedby-host';\n/** Global incremental identifier for each registered message element. */\nlet nextId = 0;\n/**\n * Utility that creates visually hidden elements with a message content. Useful for elements that\n * want to use aria-describedby to further describe themselves without adding additional visual\n * content.\n */\nclass AriaDescriber {\n constructor(_document,\n /**\n * @deprecated To be turned into a required parameter.\n * @breaking-change 14.0.0\n */\n _platform) {\n this._platform = _platform;\n /** Map of all registered message elements that have been placed into the document. */\n this._messageRegistry = new Map();\n /** Container for all registered messages. */\n this._messagesContainer = null;\n /** Unique ID for the service. */\n this._id = `${nextId++}`;\n this._document = _document;\n this._id = inject(APP_ID) + '-' + nextId++;\n }\n describe(hostElement, message, role) {\n if (!this._canBeDescribed(hostElement, message)) {\n return;\n }\n const key = getKey(message, role);\n if (typeof message !== 'string') {\n // We need to ensure that the element has an ID.\n setMessageId(message, this._id);\n this._messageRegistry.set(key, {\n messageElement: message,\n referenceCount: 0\n });\n } else if (!this._messageRegistry.has(key)) {\n this._createMessageElement(message, role);\n }\n if (!this._isElementDescribedByMessage(hostElement, key)) {\n this._addMessageReference(hostElement, key);\n }\n }\n removeDescription(hostElement, message, role) {\n if (!message || !this._isElementNode(hostElement)) {\n return;\n }\n const key = getKey(message, role);\n if (this._isElementDescribedByMessage(hostElement, key)) {\n this._removeMessageReference(hostElement, key);\n }\n // If the message is a string, it means that it's one that we created for the\n // consumer so we can remove it safely, otherwise we should leave it in place.\n if (typeof message === 'string') {\n const registeredMessage = this._messageRegistry.get(key);\n if (registeredMessage && registeredMessage.referenceCount === 0) {\n this._deleteMessageElement(key);\n }\n }\n if (this._messagesContainer?.childNodes.length === 0) {\n this._messagesContainer.remove();\n this._messagesContainer = null;\n }\n }\n /** Unregisters all created message elements and removes the message container. */\n ngOnDestroy() {\n const describedElements = this._document.querySelectorAll(`[${CDK_DESCRIBEDBY_HOST_ATTRIBUTE}=\"${this._id}\"]`);\n for (let i = 0; i < describedElements.length; i++) {\n this._removeCdkDescribedByReferenceIds(describedElements[i]);\n describedElements[i].removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n }\n this._messagesContainer?.remove();\n this._messagesContainer = null;\n this._messageRegistry.clear();\n }\n /**\n * Creates a new element in the visually hidden message container element with the message\n * as its content and adds it to the message registry.\n */\n _createMessageElement(message, role) {\n const messageElement = this._document.createElement('div');\n setMessageId(messageElement, this._id);\n messageElement.textContent = message;\n if (role) {\n messageElement.setAttribute('role', role);\n }\n this._createMessagesContainer();\n this._messagesContainer.appendChild(messageElement);\n this._messageRegistry.set(getKey(message, role), {\n messageElement,\n referenceCount: 0\n });\n }\n /** Deletes the message element from the global messages container. */\n _deleteMessageElement(key) {\n this._messageRegistry.get(key)?.messageElement?.remove();\n this._messageRegistry.delete(key);\n }\n /** Creates the global container for all aria-describedby messages. */\n _createMessagesContainer() {\n if (this._messagesContainer) {\n return;\n }\n const containerClassName = 'cdk-describedby-message-container';\n const serverContainers = this._document.querySelectorAll(`.${containerClassName}[platform=\"server\"]`);\n for (let i = 0; i < serverContainers.length; i++) {\n // When going from the server to the client, we may end up in a situation where there's\n // already a container on the page, but we don't have a reference to it. Clear the\n // old container so we don't get duplicates. Doing this, instead of emptying the previous\n // container, should be slightly faster.\n serverContainers[i].remove();\n }\n const messagesContainer = this._document.createElement('div');\n // We add `visibility: hidden` in order to prevent text in this container from\n // being searchable by the browser's Ctrl + F functionality.\n // Screen-readers will still read the description for elements with aria-describedby even\n // when the description element is not visible.\n messagesContainer.style.visibility = 'hidden';\n // Even though we use `visibility: hidden`, we still apply `cdk-visually-hidden` so that\n // the description element doesn't impact page layout.\n messagesContainer.classList.add(containerClassName);\n messagesContainer.classList.add('cdk-visually-hidden');\n // @breaking-change 14.0.0 Remove null check for `_platform`.\n if (this._platform && !this._platform.isBrowser) {\n messagesContainer.setAttribute('platform', 'server');\n }\n this._document.body.appendChild(messagesContainer);\n this._messagesContainer = messagesContainer;\n }\n /** Removes all cdk-describedby messages that are hosted through the element. */\n _removeCdkDescribedByReferenceIds(element) {\n // Remove all aria-describedby reference IDs that are prefixed by CDK_DESCRIBEDBY_ID_PREFIX\n const originalReferenceIds = getAriaReferenceIds(element, 'aria-describedby').filter(id => id.indexOf(CDK_DESCRIBEDBY_ID_PREFIX) != 0);\n element.setAttribute('aria-describedby', originalReferenceIds.join(' '));\n }\n /**\n * Adds a message reference to the element using aria-describedby and increments the registered\n * message's reference count.\n */\n _addMessageReference(element, key) {\n const registeredMessage = this._messageRegistry.get(key);\n // Add the aria-describedby reference and set the\n // describedby_host attribute to mark the element.\n addAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n element.setAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE, this._id);\n registeredMessage.referenceCount++;\n }\n /**\n * Removes a message reference from the element using aria-describedby\n * and decrements the registered message's reference count.\n */\n _removeMessageReference(element, key) {\n const registeredMessage = this._messageRegistry.get(key);\n registeredMessage.referenceCount--;\n removeAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n element.removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n }\n /** Returns true if the element has been described by the provided message ID. */\n _isElementDescribedByMessage(element, key) {\n const referenceIds = getAriaReferenceIds(element, 'aria-describedby');\n const registeredMessage = this._messageRegistry.get(key);\n const messageId = registeredMessage && registeredMessage.messageElement.id;\n return !!messageId && referenceIds.indexOf(messageId) != -1;\n }\n /** Determines whether a message can be described on a particular element. */\n _canBeDescribed(element, message) {\n if (!this._isElementNode(element)) {\n return false;\n }\n if (message && typeof message === 'object') {\n // We'd have to make some assumptions about the description element's text, if the consumer\n // passed in an element. Assume that if an element is passed in, the consumer has verified\n // that it can be used as a description.\n return true;\n }\n const trimmedMessage = message == null ? '' : `${message}`.trim();\n const ariaLabel = element.getAttribute('aria-label');\n // We shouldn't set descriptions if they're exactly the same as the `aria-label` of the\n // element, because screen readers will end up reading out the same text twice in a row.\n return trimmedMessage ? !ariaLabel || ariaLabel.trim() !== trimmedMessage : false;\n }\n /** Checks whether a node is an Element node. */\n _isElementNode(element) {\n return element.nodeType === this._document.ELEMENT_NODE;\n }\n static {\n this.ɵfac = function AriaDescriber_Factory(t) {\n return new (t || AriaDescriber)(i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i1.Platform));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: AriaDescriber,\n factory: AriaDescriber.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(AriaDescriber, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }, {\n type: i1.Platform\n }], null);\n})();\n/** Gets a key that can be used to look messages up in the registry. */\nfunction getKey(message, role) {\n return typeof message === 'string' ? `${role || ''}/${message}` : message;\n}\n/** Assigns a unique ID to an element, if it doesn't have one already. */\nfunction setMessageId(element, serviceId) {\n if (!element.id) {\n element.id = `${CDK_DESCRIBEDBY_ID_PREFIX}-${serviceId}-${nextId++}`;\n }\n}\n\n/**\n * This class manages keyboard events for selectable lists. If you pass it a query list\n * of items, it will set the active item correctly when arrow events occur.\n */\nclass ListKeyManager {\n constructor(_items) {\n this._items = _items;\n this._activeItemIndex = -1;\n this._activeItem = null;\n this._wrap = false;\n this._letterKeyStream = new Subject();\n this._typeaheadSubscription = Subscription.EMPTY;\n this._vertical = true;\n this._allowedModifierKeys = [];\n this._homeAndEnd = false;\n this._pageUpAndDown = {\n enabled: false,\n delta: 10\n };\n /**\n * Predicate function that can be used to check whether an item should be skipped\n * by the key manager. By default, disabled items are skipped.\n */\n this._skipPredicateFn = item => item.disabled;\n // Buffer for the letters that the user has pressed when the typeahead option is turned on.\n this._pressedLetters = [];\n /**\n * Stream that emits any time the TAB key is pressed, so components can react\n * when focus is shifted off of the list.\n */\n this.tabOut = new Subject();\n /** Stream that emits whenever the active item of the list manager changes. */\n this.change = new Subject();\n // We allow for the items to be an array because, in some cases, the consumer may\n // not have access to a QueryList of the items they want to manage (e.g. when the\n // items aren't being collected via `ViewChildren` or `ContentChildren`).\n if (_items instanceof QueryList) {\n this._itemChangesSubscription = _items.changes.subscribe(newItems => {\n if (this._activeItem) {\n const itemArray = newItems.toArray();\n const newIndex = itemArray.indexOf(this._activeItem);\n if (newIndex > -1 && newIndex !== this._activeItemIndex) {\n this._activeItemIndex = newIndex;\n }\n }\n });\n }\n }\n /**\n * Sets the predicate function that determines which items should be skipped by the\n * list key manager.\n * @param predicate Function that determines whether the given item should be skipped.\n */\n skipPredicate(predicate) {\n this._skipPredicateFn = predicate;\n return this;\n }\n /**\n * Configures wrapping mode, which determines whether the active item will wrap to\n * the other end of list when there are no more items in the given direction.\n * @param shouldWrap Whether the list should wrap when reaching the end.\n */\n withWrap(shouldWrap = true) {\n this._wrap = shouldWrap;\n return this;\n }\n /**\n * Configures whether the key manager should be able to move the selection vertically.\n * @param enabled Whether vertical selection should be enabled.\n */\n withVerticalOrientation(enabled = true) {\n this._vertical = enabled;\n return this;\n }\n /**\n * Configures the key manager to move the selection horizontally.\n * Passing in `null` will disable horizontal movement.\n * @param direction Direction in which the selection can be moved.\n */\n withHorizontalOrientation(direction) {\n this._horizontal = direction;\n return this;\n }\n /**\n * Modifier keys which are allowed to be held down and whose default actions will be prevented\n * as the user is pressing the arrow keys. Defaults to not allowing any modifier keys.\n */\n withAllowedModifierKeys(keys) {\n this._allowedModifierKeys = keys;\n return this;\n }\n /**\n * Turns on typeahead mode which allows users to set the active item by typing.\n * @param debounceInterval Time to wait after the last keystroke before setting the active item.\n */\n withTypeAhead(debounceInterval = 200) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && this._items.length && this._items.some(item => typeof item.getLabel !== 'function')) {\n throw Error('ListKeyManager items in typeahead mode must implement the `getLabel` method.');\n }\n this._typeaheadSubscription.unsubscribe();\n // Debounce the presses of non-navigational keys, collect the ones that correspond to letters\n // and convert those letters back into a string. Afterwards find the first item that starts\n // with that string and select it.\n this._typeaheadSubscription = this._letterKeyStream.pipe(tap(letter => this._pressedLetters.push(letter)), debounceTime(debounceInterval), filter(() => this._pressedLetters.length > 0), map(() => this._pressedLetters.join(''))).subscribe(inputString => {\n const items = this._getItemsArray();\n // Start at 1 because we want to start searching at the item immediately\n // following the current active item.\n for (let i = 1; i < items.length + 1; i++) {\n const index = (this._activeItemIndex + i) % items.length;\n const item = items[index];\n if (!this._skipPredicateFn(item) && item.getLabel().toUpperCase().trim().indexOf(inputString) === 0) {\n this.setActiveItem(index);\n break;\n }\n }\n this._pressedLetters = [];\n });\n return this;\n }\n /** Cancels the current typeahead sequence. */\n cancelTypeahead() {\n this._pressedLetters = [];\n return this;\n }\n /**\n * Configures the key manager to activate the first and last items\n * respectively when the Home or End key is pressed.\n * @param enabled Whether pressing the Home or End key activates the first/last item.\n */\n withHomeAndEnd(enabled = true) {\n this._homeAndEnd = enabled;\n return this;\n }\n /**\n * Configures the key manager to activate every 10th, configured or first/last element in up/down direction\n * respectively when the Page-Up or Page-Down key is pressed.\n * @param enabled Whether pressing the Page-Up or Page-Down key activates the first/last item.\n * @param delta Whether pressing the Home or End key activates the first/last item.\n */\n withPageUpDown(enabled = true, delta = 10) {\n this._pageUpAndDown = {\n enabled,\n delta\n };\n return this;\n }\n setActiveItem(item) {\n const previousActiveItem = this._activeItem;\n this.updateActiveItem(item);\n if (this._activeItem !== previousActiveItem) {\n this.change.next(this._activeItemIndex);\n }\n }\n /**\n * Sets the active item depending on the key event passed in.\n * @param event Keyboard event to be used for determining which element should be active.\n */\n onKeydown(event) {\n const keyCode = event.keyCode;\n const modifiers = ['altKey', 'ctrlKey', 'metaKey', 'shiftKey'];\n const isModifierAllowed = modifiers.every(modifier => {\n return !event[modifier] || this._allowedModifierKeys.indexOf(modifier) > -1;\n });\n switch (keyCode) {\n case TAB:\n this.tabOut.next();\n return;\n case DOWN_ARROW:\n if (this._vertical && isModifierAllowed) {\n this.setNextItemActive();\n break;\n } else {\n return;\n }\n case UP_ARROW:\n if (this._vertical && isModifierAllowed) {\n this.setPreviousItemActive();\n break;\n } else {\n return;\n }\n case RIGHT_ARROW:\n if (this._horizontal && isModifierAllowed) {\n this._horizontal === 'rtl' ? this.setPreviousItemActive() : this.setNextItemActive();\n break;\n } else {\n return;\n }\n case LEFT_ARROW:\n if (this._horizontal && isModifierAllowed) {\n this._horizontal === 'rtl' ? this.setNextItemActive() : this.setPreviousItemActive();\n break;\n } else {\n return;\n }\n case HOME:\n if (this._homeAndEnd && isModifierAllowed) {\n this.setFirstItemActive();\n break;\n } else {\n return;\n }\n case END:\n if (this._homeAndEnd && isModifierAllowed) {\n this.setLastItemActive();\n break;\n } else {\n return;\n }\n case PAGE_UP:\n if (this._pageUpAndDown.enabled && isModifierAllowed) {\n const targetIndex = this._activeItemIndex - this._pageUpAndDown.delta;\n this._setActiveItemByIndex(targetIndex > 0 ? targetIndex : 0, 1);\n break;\n } else {\n return;\n }\n case PAGE_DOWN:\n if (this._pageUpAndDown.enabled && isModifierAllowed) {\n const targetIndex = this._activeItemIndex + this._pageUpAndDown.delta;\n const itemsLength = this._getItemsArray().length;\n this._setActiveItemByIndex(targetIndex < itemsLength ? targetIndex : itemsLength - 1, -1);\n break;\n } else {\n return;\n }\n default:\n if (isModifierAllowed || hasModifierKey(event, 'shiftKey')) {\n // Attempt to use the `event.key` which also maps it to the user's keyboard language,\n // otherwise fall back to resolving alphanumeric characters via the keyCode.\n if (event.key && event.key.length === 1) {\n this._letterKeyStream.next(event.key.toLocaleUpperCase());\n } else if (keyCode >= A && keyCode <= Z || keyCode >= ZERO && keyCode <= NINE) {\n this._letterKeyStream.next(String.fromCharCode(keyCode));\n }\n }\n // Note that we return here, in order to avoid preventing\n // the default action of non-navigational keys.\n return;\n }\n this._pressedLetters = [];\n event.preventDefault();\n }\n /** Index of the currently active item. */\n get activeItemIndex() {\n return this._activeItemIndex;\n }\n /** The active item. */\n get activeItem() {\n return this._activeItem;\n }\n /** Gets whether the user is currently typing into the manager using the typeahead feature. */\n isTyping() {\n return this._pressedLetters.length > 0;\n }\n /** Sets the active item to the first enabled item in the list. */\n setFirstItemActive() {\n this._setActiveItemByIndex(0, 1);\n }\n /** Sets the active item to the last enabled item in the list. */\n setLastItemActive() {\n this._setActiveItemByIndex(this._items.length - 1, -1);\n }\n /** Sets the active item to the next enabled item in the list. */\n setNextItemActive() {\n this._activeItemIndex < 0 ? this.setFirstItemActive() : this._setActiveItemByDelta(1);\n }\n /** Sets the active item to a previous enabled item in the list. */\n setPreviousItemActive() {\n this._activeItemIndex < 0 && this._wrap ? this.setLastItemActive() : this._setActiveItemByDelta(-1);\n }\n updateActiveItem(item) {\n const itemArray = this._getItemsArray();\n const index = typeof item === 'number' ? item : itemArray.indexOf(item);\n const activeItem = itemArray[index];\n // Explicitly check for `null` and `undefined` because other falsy values are valid.\n this._activeItem = activeItem == null ? null : activeItem;\n this._activeItemIndex = index;\n }\n /** Cleans up the key manager. */\n destroy() {\n this._typeaheadSubscription.unsubscribe();\n this._itemChangesSubscription?.unsubscribe();\n this._letterKeyStream.complete();\n this.tabOut.complete();\n this.change.complete();\n this._pressedLetters = [];\n }\n /**\n * This method sets the active item, given a list of items and the delta between the\n * currently active item and the new active item. It will calculate differently\n * depending on whether wrap mode is turned on.\n */\n _setActiveItemByDelta(delta) {\n this._wrap ? this._setActiveInWrapMode(delta) : this._setActiveInDefaultMode(delta);\n }\n /**\n * Sets the active item properly given \"wrap\" mode. In other words, it will continue to move\n * down the list until it finds an item that is not disabled, and it will wrap if it\n * encounters either end of the list.\n */\n _setActiveInWrapMode(delta) {\n const items = this._getItemsArray();\n for (let i = 1; i <= items.length; i++) {\n const index = (this._activeItemIndex + delta * i + items.length) % items.length;\n const item = items[index];\n if (!this._skipPredicateFn(item)) {\n this.setActiveItem(index);\n return;\n }\n }\n }\n /**\n * Sets the active item properly given the default mode. In other words, it will\n * continue to move down the list until it finds an item that is not disabled. If\n * it encounters either end of the list, it will stop and not wrap.\n */\n _setActiveInDefaultMode(delta) {\n this._setActiveItemByIndex(this._activeItemIndex + delta, delta);\n }\n /**\n * Sets the active item to the first enabled item starting at the index specified. If the\n * item is disabled, it will move in the fallbackDelta direction until it either\n * finds an enabled item or encounters the end of the list.\n */\n _setActiveItemByIndex(index, fallbackDelta) {\n const items = this._getItemsArray();\n if (!items[index]) {\n return;\n }\n while (this._skipPredicateFn(items[index])) {\n index += fallbackDelta;\n if (!items[index]) {\n return;\n }\n }\n this.setActiveItem(index);\n }\n /** Returns the items as an array. */\n _getItemsArray() {\n return this._items instanceof QueryList ? this._items.toArray() : this._items;\n }\n}\nclass ActiveDescendantKeyManager extends ListKeyManager {\n setActiveItem(index) {\n if (this.activeItem) {\n this.activeItem.setInactiveStyles();\n }\n super.setActiveItem(index);\n if (this.activeItem) {\n this.activeItem.setActiveStyles();\n }\n }\n}\nclass FocusKeyManager extends ListKeyManager {\n constructor() {\n super(...arguments);\n this._origin = 'program';\n }\n /**\n * Sets the focus origin that will be passed in to the items for any subsequent `focus` calls.\n * @param origin Focus origin to be used when focusing items.\n */\n setFocusOrigin(origin) {\n this._origin = origin;\n return this;\n }\n setActiveItem(item) {\n super.setActiveItem(item);\n if (this.activeItem) {\n this.activeItem.focus(this._origin);\n }\n }\n}\n\n/**\n * Configuration for the isFocusable method.\n */\nclass IsFocusableConfig {\n constructor() {\n /**\n * Whether to count an element as focusable even if it is not currently visible.\n */\n this.ignoreVisibility = false;\n }\n}\n// The InteractivityChecker leans heavily on the ally.js accessibility utilities.\n// Methods like `isTabbable` are only covering specific edge-cases for the browsers which are\n// supported.\n/**\n * Utility for checking the interactivity of an element, such as whether it is focusable or\n * tabbable.\n */\nclass InteractivityChecker {\n constructor(_platform) {\n this._platform = _platform;\n }\n /**\n * Gets whether an element is disabled.\n *\n * @param element Element to be checked.\n * @returns Whether the element is disabled.\n */\n isDisabled(element) {\n // This does not capture some cases, such as a non-form control with a disabled attribute or\n // a form control inside of a disabled form, but should capture the most common cases.\n return element.hasAttribute('disabled');\n }\n /**\n * Gets whether an element is visible for the purposes of interactivity.\n *\n * This will capture states like `display: none` and `visibility: hidden`, but not things like\n * being clipped by an `overflow: hidden` parent or being outside the viewport.\n *\n * @returns Whether the element is visible.\n */\n isVisible(element) {\n return hasGeometry(element) && getComputedStyle(element).visibility === 'visible';\n }\n /**\n * Gets whether an element can be reached via Tab key.\n * Assumes that the element has already been checked with isFocusable.\n *\n * @param element Element to be checked.\n * @returns Whether the element is tabbable.\n */\n isTabbable(element) {\n // Nothing is tabbable on the server 😎\n if (!this._platform.isBrowser) {\n return false;\n }\n const frameElement = getFrameElement(getWindow(element));\n if (frameElement) {\n // Frame elements inherit their tabindex onto all child elements.\n if (getTabIndexValue(frameElement) === -1) {\n return false;\n }\n // Browsers disable tabbing to an element inside of an invisible frame.\n if (!this.isVisible(frameElement)) {\n return false;\n }\n }\n let nodeName = element.nodeName.toLowerCase();\n let tabIndexValue = getTabIndexValue(element);\n if (element.hasAttribute('contenteditable')) {\n return tabIndexValue !== -1;\n }\n if (nodeName === 'iframe' || nodeName === 'object') {\n // The frame or object's content may be tabbable depending on the content, but it's\n // not possibly to reliably detect the content of the frames. We always consider such\n // elements as non-tabbable.\n return false;\n }\n // In iOS, the browser only considers some specific elements as tabbable.\n if (this._platform.WEBKIT && this._platform.IOS && !isPotentiallyTabbableIOS(element)) {\n return false;\n }\n if (nodeName === 'audio') {\n // Audio elements without controls enabled are never tabbable, regardless\n // of the tabindex attribute explicitly being set.\n if (!element.hasAttribute('controls')) {\n return false;\n }\n // Audio elements with controls are by default tabbable unless the\n // tabindex attribute is set to `-1` explicitly.\n return tabIndexValue !== -1;\n }\n if (nodeName === 'video') {\n // For all video elements, if the tabindex attribute is set to `-1`, the video\n // is not tabbable. Note: We cannot rely on the default `HTMLElement.tabIndex`\n // property as that one is set to `-1` in Chrome, Edge and Safari v13.1. The\n // tabindex attribute is the source of truth here.\n if (tabIndexValue === -1) {\n return false;\n }\n // If the tabindex is explicitly set, and not `-1` (as per check before), the\n // video element is always tabbable (regardless of whether it has controls or not).\n if (tabIndexValue !== null) {\n return true;\n }\n // Otherwise (when no explicit tabindex is set), a video is only tabbable if it\n // has controls enabled. Firefox is special as videos are always tabbable regardless\n // of whether there are controls or not.\n return this._platform.FIREFOX || element.hasAttribute('controls');\n }\n return element.tabIndex >= 0;\n }\n /**\n * Gets whether an element can be focused by the user.\n *\n * @param element Element to be checked.\n * @param config The config object with options to customize this method's behavior\n * @returns Whether the element is focusable.\n */\n isFocusable(element, config) {\n // Perform checks in order of left to most expensive.\n // Again, naive approach that does not capture many edge cases and browser quirks.\n return isPotentiallyFocusable(element) && !this.isDisabled(element) && (config?.ignoreVisibility || this.isVisible(element));\n }\n static {\n this.ɵfac = function InteractivityChecker_Factory(t) {\n return new (t || InteractivityChecker)(i0.ɵɵinject(i1.Platform));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: InteractivityChecker,\n factory: InteractivityChecker.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(InteractivityChecker, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: i1.Platform\n }], null);\n})();\n/**\n * Returns the frame element from a window object. Since browsers like MS Edge throw errors if\n * the frameElement property is being accessed from a different host address, this property\n * should be accessed carefully.\n */\nfunction getFrameElement(window) {\n try {\n return window.frameElement;\n } catch {\n return null;\n }\n}\n/** Checks whether the specified element has any geometry / rectangles. */\nfunction hasGeometry(element) {\n // Use logic from jQuery to check for an invisible element.\n // See https://github.com/jquery/jquery/blob/master/src/css/hiddenVisibleSelectors.js#L12\n return !!(element.offsetWidth || element.offsetHeight || typeof element.getClientRects === 'function' && element.getClientRects().length);\n}\n/** Gets whether an element's */\nfunction isNativeFormElement(element) {\n let nodeName = element.nodeName.toLowerCase();\n return nodeName === 'input' || nodeName === 'select' || nodeName === 'button' || nodeName === 'textarea';\n}\n/** Gets whether an element is an ``. */\nfunction isHiddenInput(element) {\n return isInputElement(element) && element.type == 'hidden';\n}\n/** Gets whether an element is an anchor that has an href attribute. */\nfunction isAnchorWithHref(element) {\n return isAnchorElement(element) && element.hasAttribute('href');\n}\n/** Gets whether an element is an input element. */\nfunction isInputElement(element) {\n return element.nodeName.toLowerCase() == 'input';\n}\n/** Gets whether an element is an anchor element. */\nfunction isAnchorElement(element) {\n return element.nodeName.toLowerCase() == 'a';\n}\n/** Gets whether an element has a valid tabindex. */\nfunction hasValidTabIndex(element) {\n if (!element.hasAttribute('tabindex') || element.tabIndex === undefined) {\n return false;\n }\n let tabIndex = element.getAttribute('tabindex');\n return !!(tabIndex && !isNaN(parseInt(tabIndex, 10)));\n}\n/**\n * Returns the parsed tabindex from the element attributes instead of returning the\n * evaluated tabindex from the browsers defaults.\n */\nfunction getTabIndexValue(element) {\n if (!hasValidTabIndex(element)) {\n return null;\n }\n // See browser issue in Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054\n const tabIndex = parseInt(element.getAttribute('tabindex') || '', 10);\n return isNaN(tabIndex) ? -1 : tabIndex;\n}\n/** Checks whether the specified element is potentially tabbable on iOS */\nfunction isPotentiallyTabbableIOS(element) {\n let nodeName = element.nodeName.toLowerCase();\n let inputType = nodeName === 'input' && element.type;\n return inputType === 'text' || inputType === 'password' || nodeName === 'select' || nodeName === 'textarea';\n}\n/**\n * Gets whether an element is potentially focusable without taking current visible/disabled state\n * into account.\n */\nfunction isPotentiallyFocusable(element) {\n // Inputs are potentially focusable *unless* they're type=\"hidden\".\n if (isHiddenInput(element)) {\n return false;\n }\n return isNativeFormElement(element) || isAnchorWithHref(element) || element.hasAttribute('contenteditable') || hasValidTabIndex(element);\n}\n/** Gets the parent window of a DOM node with regards of being inside of an iframe. */\nfunction getWindow(node) {\n // ownerDocument is null if `node` itself *is* a document.\n return node.ownerDocument && node.ownerDocument.defaultView || window;\n}\n\n/**\n * Class that allows for trapping focus within a DOM element.\n *\n * This class currently uses a relatively simple approach to focus trapping.\n * It assumes that the tab order is the same as DOM order, which is not necessarily true.\n * Things like `tabIndex > 0`, flex `order`, and shadow roots can cause the two to be misaligned.\n *\n * @deprecated Use `ConfigurableFocusTrap` instead.\n * @breaking-change 11.0.0\n */\nclass FocusTrap {\n /** Whether the focus trap is active. */\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n this._enabled = value;\n if (this._startAnchor && this._endAnchor) {\n this._toggleAnchorTabIndex(value, this._startAnchor);\n this._toggleAnchorTabIndex(value, this._endAnchor);\n }\n }\n constructor(_element, _checker, _ngZone, _document, deferAnchors = false) {\n this._element = _element;\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._document = _document;\n this._hasAttached = false;\n // Event listeners for the anchors. Need to be regular functions so that we can unbind them later.\n this.startAnchorListener = () => this.focusLastTabbableElement();\n this.endAnchorListener = () => this.focusFirstTabbableElement();\n this._enabled = true;\n if (!deferAnchors) {\n this.attachAnchors();\n }\n }\n /** Destroys the focus trap by cleaning up the anchors. */\n destroy() {\n const startAnchor = this._startAnchor;\n const endAnchor = this._endAnchor;\n if (startAnchor) {\n startAnchor.removeEventListener('focus', this.startAnchorListener);\n startAnchor.remove();\n }\n if (endAnchor) {\n endAnchor.removeEventListener('focus', this.endAnchorListener);\n endAnchor.remove();\n }\n this._startAnchor = this._endAnchor = null;\n this._hasAttached = false;\n }\n /**\n * Inserts the anchors into the DOM. This is usually done automatically\n * in the constructor, but can be deferred for cases like directives with `*ngIf`.\n * @returns Whether the focus trap managed to attach successfully. This may not be the case\n * if the target element isn't currently in the DOM.\n */\n attachAnchors() {\n // If we're not on the browser, there can be no focus to trap.\n if (this._hasAttached) {\n return true;\n }\n this._ngZone.runOutsideAngular(() => {\n if (!this._startAnchor) {\n this._startAnchor = this._createAnchor();\n this._startAnchor.addEventListener('focus', this.startAnchorListener);\n }\n if (!this._endAnchor) {\n this._endAnchor = this._createAnchor();\n this._endAnchor.addEventListener('focus', this.endAnchorListener);\n }\n });\n if (this._element.parentNode) {\n this._element.parentNode.insertBefore(this._startAnchor, this._element);\n this._element.parentNode.insertBefore(this._endAnchor, this._element.nextSibling);\n this._hasAttached = true;\n }\n return this._hasAttached;\n }\n /**\n * Waits for the zone to stabilize, then focuses the first tabbable element.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusInitialElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusInitialElement(options)));\n });\n }\n /**\n * Waits for the zone to stabilize, then focuses\n * the first tabbable element within the focus trap region.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusFirstTabbableElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusFirstTabbableElement(options)));\n });\n }\n /**\n * Waits for the zone to stabilize, then focuses\n * the last tabbable element within the focus trap region.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusLastTabbableElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusLastTabbableElement(options)));\n });\n }\n /**\n * Get the specified boundary element of the trapped region.\n * @param bound The boundary to get (start or end of trapped region).\n * @returns The boundary element.\n */\n _getRegionBoundary(bound) {\n // Contains the deprecated version of selector, for temporary backwards comparability.\n const markers = this._element.querySelectorAll(`[cdk-focus-region-${bound}], ` + `[cdkFocusRegion${bound}], ` + `[cdk-focus-${bound}]`);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n for (let i = 0; i < markers.length; i++) {\n // @breaking-change 8.0.0\n if (markers[i].hasAttribute(`cdk-focus-${bound}`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-${bound}', ` + `use 'cdkFocusRegion${bound}' instead. The deprecated ` + `attribute will be removed in 8.0.0.`, markers[i]);\n } else if (markers[i].hasAttribute(`cdk-focus-region-${bound}`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-region-${bound}', ` + `use 'cdkFocusRegion${bound}' instead. The deprecated attribute ` + `will be removed in 8.0.0.`, markers[i]);\n }\n }\n }\n if (bound == 'start') {\n return markers.length ? markers[0] : this._getFirstTabbableElement(this._element);\n }\n return markers.length ? markers[markers.length - 1] : this._getLastTabbableElement(this._element);\n }\n /**\n * Focuses the element that should be focused when the focus trap is initialized.\n * @returns Whether focus was moved successfully.\n */\n focusInitialElement(options) {\n // Contains the deprecated version of selector, for temporary backwards comparability.\n const redirectToElement = this._element.querySelector(`[cdk-focus-initial], ` + `[cdkFocusInitial]`);\n if (redirectToElement) {\n // @breaking-change 8.0.0\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && redirectToElement.hasAttribute(`cdk-focus-initial`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-initial', ` + `use 'cdkFocusInitial' instead. The deprecated attribute ` + `will be removed in 8.0.0`, redirectToElement);\n }\n // Warn the consumer if the element they've pointed to\n // isn't focusable, when not in production mode.\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !this._checker.isFocusable(redirectToElement)) {\n console.warn(`Element matching '[cdkFocusInitial]' is not focusable.`, redirectToElement);\n }\n if (!this._checker.isFocusable(redirectToElement)) {\n const focusableChild = this._getFirstTabbableElement(redirectToElement);\n focusableChild?.focus(options);\n return !!focusableChild;\n }\n redirectToElement.focus(options);\n return true;\n }\n return this.focusFirstTabbableElement(options);\n }\n /**\n * Focuses the first tabbable element within the focus trap region.\n * @returns Whether focus was moved successfully.\n */\n focusFirstTabbableElement(options) {\n const redirectToElement = this._getRegionBoundary('start');\n if (redirectToElement) {\n redirectToElement.focus(options);\n }\n return !!redirectToElement;\n }\n /**\n * Focuses the last tabbable element within the focus trap region.\n * @returns Whether focus was moved successfully.\n */\n focusLastTabbableElement(options) {\n const redirectToElement = this._getRegionBoundary('end');\n if (redirectToElement) {\n redirectToElement.focus(options);\n }\n return !!redirectToElement;\n }\n /**\n * Checks whether the focus trap has successfully been attached.\n */\n hasAttached() {\n return this._hasAttached;\n }\n /** Get the first tabbable element from a DOM subtree (inclusive). */\n _getFirstTabbableElement(root) {\n if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n const children = root.children;\n for (let i = 0; i < children.length; i++) {\n const tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE ? this._getFirstTabbableElement(children[i]) : null;\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n return null;\n }\n /** Get the last tabbable element from a DOM subtree (inclusive). */\n _getLastTabbableElement(root) {\n if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n // Iterate in reverse DOM order.\n const children = root.children;\n for (let i = children.length - 1; i >= 0; i--) {\n const tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE ? this._getLastTabbableElement(children[i]) : null;\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n return null;\n }\n /** Creates an anchor element. */\n _createAnchor() {\n const anchor = this._document.createElement('div');\n this._toggleAnchorTabIndex(this._enabled, anchor);\n anchor.classList.add('cdk-visually-hidden');\n anchor.classList.add('cdk-focus-trap-anchor');\n anchor.setAttribute('aria-hidden', 'true');\n return anchor;\n }\n /**\n * Toggles the `tabindex` of an anchor, based on the enabled state of the focus trap.\n * @param isEnabled Whether the focus trap is enabled.\n * @param anchor Anchor on which to toggle the tabindex.\n */\n _toggleAnchorTabIndex(isEnabled, anchor) {\n // Remove the tabindex completely, rather than setting it to -1, because if the\n // element has a tabindex, the user might still hit it when navigating with the arrow keys.\n isEnabled ? anchor.setAttribute('tabindex', '0') : anchor.removeAttribute('tabindex');\n }\n /**\n * Toggles the`tabindex` of both anchors to either trap Tab focus or allow it to escape.\n * @param enabled: Whether the anchors should trap Tab.\n */\n toggleAnchors(enabled) {\n if (this._startAnchor && this._endAnchor) {\n this._toggleAnchorTabIndex(enabled, this._startAnchor);\n this._toggleAnchorTabIndex(enabled, this._endAnchor);\n }\n }\n /** Executes a function when the zone is stable. */\n _executeOnStable(fn) {\n if (this._ngZone.isStable) {\n fn();\n } else {\n this._ngZone.onStable.pipe(take(1)).subscribe(fn);\n }\n }\n}\n/**\n * Factory that allows easy instantiation of focus traps.\n * @deprecated Use `ConfigurableFocusTrapFactory` instead.\n * @breaking-change 11.0.0\n */\nclass FocusTrapFactory {\n constructor(_checker, _ngZone, _document) {\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._document = _document;\n }\n /**\n * Creates a focus-trapped region around the given element.\n * @param element The element around which focus will be trapped.\n * @param deferCaptureElements Defers the creation of focus-capturing elements to be done\n * manually by the user.\n * @returns The created focus trap instance.\n */\n create(element, deferCaptureElements = false) {\n return new FocusTrap(element, this._checker, this._ngZone, this._document, deferCaptureElements);\n }\n static {\n this.ɵfac = function FocusTrapFactory_Factory(t) {\n return new (t || FocusTrapFactory)(i0.ɵɵinject(InteractivityChecker), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(DOCUMENT));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: FocusTrapFactory,\n factory: FocusTrapFactory.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(FocusTrapFactory, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: InteractivityChecker\n }, {\n type: i0.NgZone\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }], null);\n})();\n/** Directive for trapping focus within a region. */\nclass CdkTrapFocus {\n /** Whether the focus trap is active. */\n get enabled() {\n return this.focusTrap.enabled;\n }\n set enabled(value) {\n this.focusTrap.enabled = value;\n }\n constructor(_elementRef, _focusTrapFactory,\n /**\n * @deprecated No longer being used. To be removed.\n * @breaking-change 13.0.0\n */\n _document) {\n this._elementRef = _elementRef;\n this._focusTrapFactory = _focusTrapFactory;\n /** Previously focused element to restore focus to upon destroy when using autoCapture. */\n this._previouslyFocusedElement = null;\n this.focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement, true);\n }\n ngOnDestroy() {\n this.focusTrap.destroy();\n // If we stored a previously focused element when using autoCapture, return focus to that\n // element now that the trapped region is being destroyed.\n if (this._previouslyFocusedElement) {\n this._previouslyFocusedElement.focus();\n this._previouslyFocusedElement = null;\n }\n }\n ngAfterContentInit() {\n this.focusTrap.attachAnchors();\n if (this.autoCapture) {\n this._captureFocus();\n }\n }\n ngDoCheck() {\n if (!this.focusTrap.hasAttached()) {\n this.focusTrap.attachAnchors();\n }\n }\n ngOnChanges(changes) {\n const autoCaptureChange = changes['autoCapture'];\n if (autoCaptureChange && !autoCaptureChange.firstChange && this.autoCapture && this.focusTrap.hasAttached()) {\n this._captureFocus();\n }\n }\n _captureFocus() {\n this._previouslyFocusedElement = _getFocusedElementPierceShadowDom();\n this.focusTrap.focusInitialElementWhenReady();\n }\n static {\n this.ɵfac = function CdkTrapFocus_Factory(t) {\n return new (t || CdkTrapFocus)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(FocusTrapFactory), i0.ɵɵdirectiveInject(DOCUMENT));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkTrapFocus,\n selectors: [[\"\", \"cdkTrapFocus\", \"\"]],\n inputs: {\n enabled: [\"cdkTrapFocus\", \"enabled\", booleanAttribute],\n autoCapture: [\"cdkTrapFocusAutoCapture\", \"autoCapture\", booleanAttribute]\n },\n exportAs: [\"cdkTrapFocus\"],\n features: [i0.ɵɵInputTransformsFeature, i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkTrapFocus, [{\n type: Directive,\n args: [{\n selector: '[cdkTrapFocus]',\n exportAs: 'cdkTrapFocus'\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: FocusTrapFactory\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }], {\n enabled: [{\n type: Input,\n args: [{\n alias: 'cdkTrapFocus',\n transform: booleanAttribute\n }]\n }],\n autoCapture: [{\n type: Input,\n args: [{\n alias: 'cdkTrapFocusAutoCapture',\n transform: booleanAttribute\n }]\n }]\n });\n})();\n\n/**\n * Class that allows for trapping focus within a DOM element.\n *\n * This class uses a strategy pattern that determines how it traps focus.\n * See FocusTrapInertStrategy.\n */\nclass ConfigurableFocusTrap extends FocusTrap {\n /** Whether the FocusTrap is enabled. */\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n this._enabled = value;\n if (this._enabled) {\n this._focusTrapManager.register(this);\n } else {\n this._focusTrapManager.deregister(this);\n }\n }\n constructor(_element, _checker, _ngZone, _document, _focusTrapManager, _inertStrategy, config) {\n super(_element, _checker, _ngZone, _document, config.defer);\n this._focusTrapManager = _focusTrapManager;\n this._inertStrategy = _inertStrategy;\n this._focusTrapManager.register(this);\n }\n /** Notifies the FocusTrapManager that this FocusTrap will be destroyed. */\n destroy() {\n this._focusTrapManager.deregister(this);\n super.destroy();\n }\n /** @docs-private Implemented as part of ManagedFocusTrap. */\n _enable() {\n this._inertStrategy.preventFocus(this);\n this.toggleAnchors(true);\n }\n /** @docs-private Implemented as part of ManagedFocusTrap. */\n _disable() {\n this._inertStrategy.allowFocus(this);\n this.toggleAnchors(false);\n }\n}\n\n/** The injection token used to specify the inert strategy. */\nconst FOCUS_TRAP_INERT_STRATEGY = new InjectionToken('FOCUS_TRAP_INERT_STRATEGY');\n\n/**\n * Lightweight FocusTrapInertStrategy that adds a document focus event\n * listener to redirect focus back inside the FocusTrap.\n */\nclass EventListenerFocusTrapInertStrategy {\n constructor() {\n /** Focus event handler. */\n this._listener = null;\n }\n /** Adds a document event listener that keeps focus inside the FocusTrap. */\n preventFocus(focusTrap) {\n // Ensure there's only one listener per document\n if (this._listener) {\n focusTrap._document.removeEventListener('focus', this._listener, true);\n }\n this._listener = e => this._trapFocus(focusTrap, e);\n focusTrap._ngZone.runOutsideAngular(() => {\n focusTrap._document.addEventListener('focus', this._listener, true);\n });\n }\n /** Removes the event listener added in preventFocus. */\n allowFocus(focusTrap) {\n if (!this._listener) {\n return;\n }\n focusTrap._document.removeEventListener('focus', this._listener, true);\n this._listener = null;\n }\n /**\n * Refocuses the first element in the FocusTrap if the focus event target was outside\n * the FocusTrap.\n *\n * This is an event listener callback. The event listener is added in runOutsideAngular,\n * so all this code runs outside Angular as well.\n */\n _trapFocus(focusTrap, event) {\n const target = event.target;\n const focusTrapRoot = focusTrap._element;\n // Don't refocus if target was in an overlay, because the overlay might be associated\n // with an element inside the FocusTrap, ex. mat-select.\n if (target && !focusTrapRoot.contains(target) && !target.closest?.('div.cdk-overlay-pane')) {\n // Some legacy FocusTrap usages have logic that focuses some element on the page\n // just before FocusTrap is destroyed. For backwards compatibility, wait\n // to be sure FocusTrap is still enabled before refocusing.\n setTimeout(() => {\n // Check whether focus wasn't put back into the focus trap while the timeout was pending.\n if (focusTrap.enabled && !focusTrapRoot.contains(focusTrap._document.activeElement)) {\n focusTrap.focusFirstTabbableElement();\n }\n });\n }\n }\n}\n\n/** Injectable that ensures only the most recently enabled FocusTrap is active. */\nclass FocusTrapManager {\n constructor() {\n // A stack of the FocusTraps on the page. Only the FocusTrap at the\n // top of the stack is active.\n this._focusTrapStack = [];\n }\n /**\n * Disables the FocusTrap at the top of the stack, and then pushes\n * the new FocusTrap onto the stack.\n */\n register(focusTrap) {\n // Dedupe focusTraps that register multiple times.\n this._focusTrapStack = this._focusTrapStack.filter(ft => ft !== focusTrap);\n let stack = this._focusTrapStack;\n if (stack.length) {\n stack[stack.length - 1]._disable();\n }\n stack.push(focusTrap);\n focusTrap._enable();\n }\n /**\n * Removes the FocusTrap from the stack, and activates the\n * FocusTrap that is the new top of the stack.\n */\n deregister(focusTrap) {\n focusTrap._disable();\n const stack = this._focusTrapStack;\n const i = stack.indexOf(focusTrap);\n if (i !== -1) {\n stack.splice(i, 1);\n if (stack.length) {\n stack[stack.length - 1]._enable();\n }\n }\n }\n static {\n this.ɵfac = function FocusTrapManager_Factory(t) {\n return new (t || FocusTrapManager)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: FocusTrapManager,\n factory: FocusTrapManager.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(FocusTrapManager, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\n\n/** Factory that allows easy instantiation of configurable focus traps. */\nclass ConfigurableFocusTrapFactory {\n constructor(_checker, _ngZone, _focusTrapManager, _document, _inertStrategy) {\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._focusTrapManager = _focusTrapManager;\n this._document = _document;\n // TODO split up the strategies into different modules, similar to DateAdapter.\n this._inertStrategy = _inertStrategy || new EventListenerFocusTrapInertStrategy();\n }\n create(element, config = {\n defer: false\n }) {\n let configObject;\n if (typeof config === 'boolean') {\n configObject = {\n defer: config\n };\n } else {\n configObject = config;\n }\n return new ConfigurableFocusTrap(element, this._checker, this._ngZone, this._document, this._focusTrapManager, this._inertStrategy, configObject);\n }\n static {\n this.ɵfac = function ConfigurableFocusTrapFactory_Factory(t) {\n return new (t || ConfigurableFocusTrapFactory)(i0.ɵɵinject(InteractivityChecker), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(FocusTrapManager), i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(FOCUS_TRAP_INERT_STRATEGY, 8));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ConfigurableFocusTrapFactory,\n factory: ConfigurableFocusTrapFactory.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ConfigurableFocusTrapFactory, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: InteractivityChecker\n }, {\n type: i0.NgZone\n }, {\n type: FocusTrapManager\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FOCUS_TRAP_INERT_STRATEGY]\n }]\n }], null);\n})();\n\n/** Gets whether an event could be a faked `mousedown` event dispatched by a screen reader. */\nfunction isFakeMousedownFromScreenReader(event) {\n // Some screen readers will dispatch a fake `mousedown` event when pressing enter or space on\n // a clickable element. We can distinguish these events when `event.buttons` is zero, or\n // `event.detail` is zero depending on the browser:\n // - `event.buttons` works on Firefox, but fails on Chrome.\n // - `detail` works on Chrome, but fails on Firefox.\n return event.buttons === 0 || event.detail === 0;\n}\n/** Gets whether an event could be a faked `touchstart` event dispatched by a screen reader. */\nfunction isFakeTouchstartFromScreenReader(event) {\n const touch = event.touches && event.touches[0] || event.changedTouches && event.changedTouches[0];\n // A fake `touchstart` can be distinguished from a real one by looking at the `identifier`\n // which is typically >= 0 on a real device versus -1 from a screen reader. Just to be safe,\n // we can also look at `radiusX` and `radiusY`. This behavior was observed against a Windows 10\n // device with a touch screen running NVDA v2020.4 and Firefox 85 or Chrome 88.\n return !!touch && touch.identifier === -1 && (touch.radiusX == null || touch.radiusX === 1) && (touch.radiusY == null || touch.radiusY === 1);\n}\n\n/**\n * Injectable options for the InputModalityDetector. These are shallowly merged with the default\n * options.\n */\nconst INPUT_MODALITY_DETECTOR_OPTIONS = new InjectionToken('cdk-input-modality-detector-options');\n/**\n * Default options for the InputModalityDetector.\n *\n * Modifier keys are ignored by default (i.e. when pressed won't cause the service to detect\n * keyboard input modality) for two reasons:\n *\n * 1. Modifier keys are commonly used with mouse to perform actions such as 'right click' or 'open\n * in new tab', and are thus less representative of actual keyboard interaction.\n * 2. VoiceOver triggers some keyboard events when linearly navigating with Control + Option (but\n * confusingly not with Caps Lock). Thus, to have parity with other screen readers, we ignore\n * these keys so as to not update the input modality.\n *\n * Note that we do not by default ignore the right Meta key on Safari because it has the same key\n * code as the ContextMenu key on other browsers. When we switch to using event.key, we can\n * distinguish between the two.\n */\nconst INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS = {\n ignoreKeys: [ALT, CONTROL, MAC_META, META, SHIFT]\n};\n/**\n * The amount of time needed to pass after a touchstart event in order for a subsequent mousedown\n * event to be attributed as mouse and not touch.\n *\n * This is the value used by AngularJS Material. Through trial and error (on iPhone 6S) they found\n * that a value of around 650ms seems appropriate.\n */\nconst TOUCH_BUFFER_MS = 650;\n/**\n * Event listener options that enable capturing and also mark the listener as passive if the browser\n * supports it.\n */\nconst modalityEventListenerOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true\n});\n/**\n * Service that detects the user's input modality.\n *\n * This service does not update the input modality when a user navigates with a screen reader\n * (e.g. linear navigation with VoiceOver, object navigation / browse mode with NVDA, virtual PC\n * cursor mode with JAWS). This is in part due to technical limitations (i.e. keyboard events do not\n * fire as expected in these modes) but is also arguably the correct behavior. Navigating with a\n * screen reader is akin to visually scanning a page, and should not be interpreted as actual user\n * input interaction.\n *\n * When a user is not navigating but *interacting* with a screen reader, this service attempts to\n * update the input modality to keyboard, but in general this service's behavior is largely\n * undefined.\n */\nclass InputModalityDetector {\n /** The most recently detected input modality. */\n get mostRecentModality() {\n return this._modality.value;\n }\n constructor(_platform, ngZone, document, options) {\n this._platform = _platform;\n /**\n * The most recently detected input modality event target. Is null if no input modality has been\n * detected or if the associated event target is null for some unknown reason.\n */\n this._mostRecentTarget = null;\n /** The underlying BehaviorSubject that emits whenever an input modality is detected. */\n this._modality = new BehaviorSubject(null);\n /**\n * The timestamp of the last touch input modality. Used to determine whether mousedown events\n * should be attributed to mouse or touch.\n */\n this._lastTouchMs = 0;\n /**\n * Handles keydown events. Must be an arrow function in order to preserve the context when it gets\n * bound.\n */\n this._onKeydown = event => {\n // If this is one of the keys we should ignore, then ignore it and don't update the input\n // modality to keyboard.\n if (this._options?.ignoreKeys?.some(keyCode => keyCode === event.keyCode)) {\n return;\n }\n this._modality.next('keyboard');\n this._mostRecentTarget = _getEventTarget(event);\n };\n /**\n * Handles mousedown events. Must be an arrow function in order to preserve the context when it\n * gets bound.\n */\n this._onMousedown = event => {\n // Touches trigger both touch and mouse events, so we need to distinguish between mouse events\n // that were triggered via mouse vs touch. To do so, check if the mouse event occurs closely\n // after the previous touch event.\n if (Date.now() - this._lastTouchMs < TOUCH_BUFFER_MS) {\n return;\n }\n // Fake mousedown events are fired by some screen readers when controls are activated by the\n // screen reader. Attribute them to keyboard input modality.\n this._modality.next(isFakeMousedownFromScreenReader(event) ? 'keyboard' : 'mouse');\n this._mostRecentTarget = _getEventTarget(event);\n };\n /**\n * Handles touchstart events. Must be an arrow function in order to preserve the context when it\n * gets bound.\n */\n this._onTouchstart = event => {\n // Same scenario as mentioned in _onMousedown, but on touch screen devices, fake touchstart\n // events are fired. Again, attribute to keyboard input modality.\n if (isFakeTouchstartFromScreenReader(event)) {\n this._modality.next('keyboard');\n return;\n }\n // Store the timestamp of this touch event, as it's used to distinguish between mouse events\n // triggered via mouse vs touch.\n this._lastTouchMs = Date.now();\n this._modality.next('touch');\n this._mostRecentTarget = _getEventTarget(event);\n };\n this._options = {\n ...INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS,\n ...options\n };\n // Skip the first emission as it's null.\n this.modalityDetected = this._modality.pipe(skip(1));\n this.modalityChanged = this.modalityDetected.pipe(distinctUntilChanged());\n // If we're not in a browser, this service should do nothing, as there's no relevant input\n // modality to detect.\n if (_platform.isBrowser) {\n ngZone.runOutsideAngular(() => {\n document.addEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n document.addEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n document.addEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n });\n }\n }\n ngOnDestroy() {\n this._modality.complete();\n if (this._platform.isBrowser) {\n document.removeEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n document.removeEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n document.removeEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n }\n }\n static {\n this.ɵfac = function InputModalityDetector_Factory(t) {\n return new (t || InputModalityDetector)(i0.ɵɵinject(i1.Platform), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(INPUT_MODALITY_DETECTOR_OPTIONS, 8));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: InputModalityDetector,\n factory: InputModalityDetector.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(InputModalityDetector, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: i1.Platform\n }, {\n type: i0.NgZone\n }, {\n type: Document,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [INPUT_MODALITY_DETECTOR_OPTIONS]\n }]\n }], null);\n})();\nconst LIVE_ANNOUNCER_ELEMENT_TOKEN = new InjectionToken('liveAnnouncerElement', {\n providedIn: 'root',\n factory: LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY\n});\n/** @docs-private */\nfunction LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY() {\n return null;\n}\n/** Injection token that can be used to configure the default options for the LiveAnnouncer. */\nconst LIVE_ANNOUNCER_DEFAULT_OPTIONS = new InjectionToken('LIVE_ANNOUNCER_DEFAULT_OPTIONS');\nlet uniqueIds = 0;\nclass LiveAnnouncer {\n constructor(elementToken, _ngZone, _document, _defaultOptions) {\n this._ngZone = _ngZone;\n this._defaultOptions = _defaultOptions;\n // We inject the live element and document as `any` because the constructor signature cannot\n // reference browser globals (HTMLElement, Document) on non-browser environments, since having\n // a class decorator causes TypeScript to preserve the constructor signature types.\n this._document = _document;\n this._liveElement = elementToken || this._createLiveElement();\n }\n announce(message, ...args) {\n const defaultOptions = this._defaultOptions;\n let politeness;\n let duration;\n if (args.length === 1 && typeof args[0] === 'number') {\n duration = args[0];\n } else {\n [politeness, duration] = args;\n }\n this.clear();\n clearTimeout(this._previousTimeout);\n if (!politeness) {\n politeness = defaultOptions && defaultOptions.politeness ? defaultOptions.politeness : 'polite';\n }\n if (duration == null && defaultOptions) {\n duration = defaultOptions.duration;\n }\n // TODO: ensure changing the politeness works on all environments we support.\n this._liveElement.setAttribute('aria-live', politeness);\n if (this._liveElement.id) {\n this._exposeAnnouncerToModals(this._liveElement.id);\n }\n // This 100ms timeout is necessary for some browser + screen-reader combinations:\n // - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout.\n // - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a\n // second time without clearing and then using a non-zero delay.\n // (using JAWS 17 at time of this writing).\n return this._ngZone.runOutsideAngular(() => {\n if (!this._currentPromise) {\n this._currentPromise = new Promise(resolve => this._currentResolve = resolve);\n }\n clearTimeout(this._previousTimeout);\n this._previousTimeout = setTimeout(() => {\n this._liveElement.textContent = message;\n if (typeof duration === 'number') {\n this._previousTimeout = setTimeout(() => this.clear(), duration);\n }\n this._currentResolve();\n this._currentPromise = this._currentResolve = undefined;\n }, 100);\n return this._currentPromise;\n });\n }\n /**\n * Clears the current text from the announcer element. Can be used to prevent\n * screen readers from reading the text out again while the user is going\n * through the page landmarks.\n */\n clear() {\n if (this._liveElement) {\n this._liveElement.textContent = '';\n }\n }\n ngOnDestroy() {\n clearTimeout(this._previousTimeout);\n this._liveElement?.remove();\n this._liveElement = null;\n this._currentResolve?.();\n this._currentPromise = this._currentResolve = undefined;\n }\n _createLiveElement() {\n const elementClass = 'cdk-live-announcer-element';\n const previousElements = this._document.getElementsByClassName(elementClass);\n const liveEl = this._document.createElement('div');\n // Remove any old containers. This can happen when coming in from a server-side-rendered page.\n for (let i = 0; i < previousElements.length; i++) {\n previousElements[i].remove();\n }\n liveEl.classList.add(elementClass);\n liveEl.classList.add('cdk-visually-hidden');\n liveEl.setAttribute('aria-atomic', 'true');\n liveEl.setAttribute('aria-live', 'polite');\n liveEl.id = `cdk-live-announcer-${uniqueIds++}`;\n this._document.body.appendChild(liveEl);\n return liveEl;\n }\n /**\n * Some browsers won't expose the accessibility node of the live announcer element if there is an\n * `aria-modal` and the live announcer is outside of it. This method works around the issue by\n * pointing the `aria-owns` of all modals to the live announcer element.\n */\n _exposeAnnouncerToModals(id) {\n // TODO(http://github.com/angular/components/issues/26853): consider de-duplicating this with\n // the `SnakBarContainer` and other usages.\n //\n // Note that the selector here is limited to CDK overlays at the moment in order to reduce the\n // section of the DOM we need to look through. This should cover all the cases we support, but\n // the selector can be expanded if it turns out to be too narrow.\n const modals = this._document.querySelectorAll('body > .cdk-overlay-container [aria-modal=\"true\"]');\n for (let i = 0; i < modals.length; i++) {\n const modal = modals[i];\n const ariaOwns = modal.getAttribute('aria-owns');\n if (!ariaOwns) {\n modal.setAttribute('aria-owns', id);\n } else if (ariaOwns.indexOf(id) === -1) {\n modal.setAttribute('aria-owns', ariaOwns + ' ' + id);\n }\n }\n }\n static {\n this.ɵfac = function LiveAnnouncer_Factory(t) {\n return new (t || LiveAnnouncer)(i0.ɵɵinject(LIVE_ANNOUNCER_ELEMENT_TOKEN, 8), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(LIVE_ANNOUNCER_DEFAULT_OPTIONS, 8));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: LiveAnnouncer,\n factory: LiveAnnouncer.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(LiveAnnouncer, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [LIVE_ANNOUNCER_ELEMENT_TOKEN]\n }]\n }, {\n type: i0.NgZone\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [LIVE_ANNOUNCER_DEFAULT_OPTIONS]\n }]\n }], null);\n})();\n/**\n * A directive that works similarly to aria-live, but uses the LiveAnnouncer to ensure compatibility\n * with a wider range of browsers and screen readers.\n */\nclass CdkAriaLive {\n /** The aria-live politeness level to use when announcing messages. */\n get politeness() {\n return this._politeness;\n }\n set politeness(value) {\n this._politeness = value === 'off' || value === 'assertive' ? value : 'polite';\n if (this._politeness === 'off') {\n if (this._subscription) {\n this._subscription.unsubscribe();\n this._subscription = null;\n }\n } else if (!this._subscription) {\n this._subscription = this._ngZone.runOutsideAngular(() => {\n return this._contentObserver.observe(this._elementRef).subscribe(() => {\n // Note that we use textContent here, rather than innerText, in order to avoid a reflow.\n const elementText = this._elementRef.nativeElement.textContent;\n // The `MutationObserver` fires also for attribute\n // changes which we don't want to announce.\n if (elementText !== this._previousAnnouncedText) {\n this._liveAnnouncer.announce(elementText, this._politeness, this.duration);\n this._previousAnnouncedText = elementText;\n }\n });\n });\n }\n }\n constructor(_elementRef, _liveAnnouncer, _contentObserver, _ngZone) {\n this._elementRef = _elementRef;\n this._liveAnnouncer = _liveAnnouncer;\n this._contentObserver = _contentObserver;\n this._ngZone = _ngZone;\n this._politeness = 'polite';\n }\n ngOnDestroy() {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n }\n static {\n this.ɵfac = function CdkAriaLive_Factory(t) {\n return new (t || CdkAriaLive)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(LiveAnnouncer), i0.ɵɵdirectiveInject(i1$1.ContentObserver), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkAriaLive,\n selectors: [[\"\", \"cdkAriaLive\", \"\"]],\n inputs: {\n politeness: [\"cdkAriaLive\", \"politeness\"],\n duration: [\"cdkAriaLiveDuration\", \"duration\"]\n },\n exportAs: [\"cdkAriaLive\"]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkAriaLive, [{\n type: Directive,\n args: [{\n selector: '[cdkAriaLive]',\n exportAs: 'cdkAriaLive'\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: LiveAnnouncer\n }, {\n type: i1$1.ContentObserver\n }, {\n type: i0.NgZone\n }], {\n politeness: [{\n type: Input,\n args: ['cdkAriaLive']\n }],\n duration: [{\n type: Input,\n args: ['cdkAriaLiveDuration']\n }]\n });\n})();\n\n/** InjectionToken for FocusMonitorOptions. */\nconst FOCUS_MONITOR_DEFAULT_OPTIONS = new InjectionToken('cdk-focus-monitor-default-options');\n/**\n * Event listener options that enable capturing and also\n * mark the listener as passive if the browser supports it.\n */\nconst captureEventListenerOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true\n});\n/** Monitors mouse and keyboard events to determine the cause of focus events. */\nclass FocusMonitor {\n constructor(_ngZone, _platform, _inputModalityDetector, /** @breaking-change 11.0.0 make document required */\n document, options) {\n this._ngZone = _ngZone;\n this._platform = _platform;\n this._inputModalityDetector = _inputModalityDetector;\n /** The focus origin that the next focus event is a result of. */\n this._origin = null;\n /** Whether the window has just been focused. */\n this._windowFocused = false;\n /**\n * Whether the origin was determined via a touch interaction. Necessary as properly attributing\n * focus events to touch interactions requires special logic.\n */\n this._originFromTouchInteraction = false;\n /** Map of elements being monitored to their info. */\n this._elementInfo = new Map();\n /** The number of elements currently being monitored. */\n this._monitoredElementCount = 0;\n /**\n * Keeps track of the root nodes to which we've currently bound a focus/blur handler,\n * as well as the number of monitored elements that they contain. We have to treat focus/blur\n * handlers differently from the rest of the events, because the browser won't emit events\n * to the document when focus moves inside of a shadow root.\n */\n this._rootNodeFocusListenerCount = new Map();\n /**\n * Event listener for `focus` events on the window.\n * Needs to be an arrow function in order to preserve the context when it gets bound.\n */\n this._windowFocusListener = () => {\n // Make a note of when the window regains focus, so we can\n // restore the origin info for the focused element.\n this._windowFocused = true;\n this._windowFocusTimeoutId = window.setTimeout(() => this._windowFocused = false);\n };\n /** Subject for stopping our InputModalityDetector subscription. */\n this._stopInputModalityDetector = new Subject();\n /**\n * Event listener for `focus` and 'blur' events on the document.\n * Needs to be an arrow function in order to preserve the context when it gets bound.\n */\n this._rootNodeFocusAndBlurListener = event => {\n const target = _getEventTarget(event);\n // We need to walk up the ancestor chain in order to support `checkChildren`.\n for (let element = target; element; element = element.parentElement) {\n if (event.type === 'focus') {\n this._onFocus(event, element);\n } else {\n this._onBlur(event, element);\n }\n }\n };\n this._document = document;\n this._detectionMode = options?.detectionMode || 0 /* FocusMonitorDetectionMode.IMMEDIATE */;\n }\n\n monitor(element, checkChildren = false) {\n const nativeElement = coerceElement(element);\n // Do nothing if we're not on the browser platform or the passed in node isn't an element.\n if (!this._platform.isBrowser || nativeElement.nodeType !== 1) {\n // Note: we don't want the observable to emit at all so we don't pass any parameters.\n return of();\n }\n // If the element is inside the shadow DOM, we need to bind our focus/blur listeners to\n // the shadow root, rather than the `document`, because the browser won't emit focus events\n // to the `document`, if focus is moving within the same shadow root.\n const rootNode = _getShadowRoot(nativeElement) || this._getDocument();\n const cachedInfo = this._elementInfo.get(nativeElement);\n // Check if we're already monitoring this element.\n if (cachedInfo) {\n if (checkChildren) {\n // TODO(COMP-318): this can be problematic, because it'll turn all non-checkChildren\n // observers into ones that behave as if `checkChildren` was turned on. We need a more\n // robust solution.\n cachedInfo.checkChildren = true;\n }\n return cachedInfo.subject;\n }\n // Create monitored element info.\n const info = {\n checkChildren: checkChildren,\n subject: new Subject(),\n rootNode\n };\n this._elementInfo.set(nativeElement, info);\n this._registerGlobalListeners(info);\n return info.subject;\n }\n stopMonitoring(element) {\n const nativeElement = coerceElement(element);\n const elementInfo = this._elementInfo.get(nativeElement);\n if (elementInfo) {\n elementInfo.subject.complete();\n this._setClasses(nativeElement);\n this._elementInfo.delete(nativeElement);\n this._removeGlobalListeners(elementInfo);\n }\n }\n focusVia(element, origin, options) {\n const nativeElement = coerceElement(element);\n const focusedElement = this._getDocument().activeElement;\n // If the element is focused already, calling `focus` again won't trigger the event listener\n // which means that the focus classes won't be updated. If that's the case, update the classes\n // directly without waiting for an event.\n if (nativeElement === focusedElement) {\n this._getClosestElementsInfo(nativeElement).forEach(([currentElement, info]) => this._originChanged(currentElement, origin, info));\n } else {\n this._setOrigin(origin);\n // `focus` isn't available on the server\n if (typeof nativeElement.focus === 'function') {\n nativeElement.focus(options);\n }\n }\n }\n ngOnDestroy() {\n this._elementInfo.forEach((_info, element) => this.stopMonitoring(element));\n }\n /** Access injected document if available or fallback to global document reference */\n _getDocument() {\n return this._document || document;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n const doc = this._getDocument();\n return doc.defaultView || window;\n }\n _getFocusOrigin(focusEventTarget) {\n if (this._origin) {\n // If the origin was realized via a touch interaction, we need to perform additional checks\n // to determine whether the focus origin should be attributed to touch or program.\n if (this._originFromTouchInteraction) {\n return this._shouldBeAttributedToTouch(focusEventTarget) ? 'touch' : 'program';\n } else {\n return this._origin;\n }\n }\n // If the window has just regained focus, we can restore the most recent origin from before the\n // window blurred. Otherwise, we've reached the point where we can't identify the source of the\n // focus. This typically means one of two things happened:\n //\n // 1) The element was programmatically focused, or\n // 2) The element was focused via screen reader navigation (which generally doesn't fire\n // events).\n //\n // Because we can't distinguish between these two cases, we default to setting `program`.\n if (this._windowFocused && this._lastFocusOrigin) {\n return this._lastFocusOrigin;\n }\n // If the interaction is coming from an input label, we consider it a mouse interactions.\n // This is a special case where focus moves on `click`, rather than `mousedown` which breaks\n // our detection, because all our assumptions are for `mousedown`. We need to handle this\n // special case, because it's very common for checkboxes and radio buttons.\n if (focusEventTarget && this._isLastInteractionFromInputLabel(focusEventTarget)) {\n return 'mouse';\n }\n return 'program';\n }\n /**\n * Returns whether the focus event should be attributed to touch. Recall that in IMMEDIATE mode, a\n * touch origin isn't immediately reset at the next tick (see _setOrigin). This means that when we\n * handle a focus event following a touch interaction, we need to determine whether (1) the focus\n * event was directly caused by the touch interaction or (2) the focus event was caused by a\n * subsequent programmatic focus call triggered by the touch interaction.\n * @param focusEventTarget The target of the focus event under examination.\n */\n _shouldBeAttributedToTouch(focusEventTarget) {\n // Please note that this check is not perfect. Consider the following edge case:\n //\n //
\n //
\n //
\n //\n // Suppose there is a FocusMonitor in IMMEDIATE mode attached to #parent. When the user touches\n // #child, #parent is programmatically focused. This code will attribute the focus to touch\n // instead of program. This is a relatively minor edge-case that can be worked around by using\n // focusVia(parent, 'program') to focus #parent.\n return this._detectionMode === 1 /* FocusMonitorDetectionMode.EVENTUAL */ || !!focusEventTarget?.contains(this._inputModalityDetector._mostRecentTarget);\n }\n /**\n * Sets the focus classes on the element based on the given focus origin.\n * @param element The element to update the classes on.\n * @param origin The focus origin.\n */\n _setClasses(element, origin) {\n element.classList.toggle('cdk-focused', !!origin);\n element.classList.toggle('cdk-touch-focused', origin === 'touch');\n element.classList.toggle('cdk-keyboard-focused', origin === 'keyboard');\n element.classList.toggle('cdk-mouse-focused', origin === 'mouse');\n element.classList.toggle('cdk-program-focused', origin === 'program');\n }\n /**\n * Updates the focus origin. If we're using immediate detection mode, we schedule an async\n * function to clear the origin at the end of a timeout. The duration of the timeout depends on\n * the origin being set.\n * @param origin The origin to set.\n * @param isFromInteraction Whether we are setting the origin from an interaction event.\n */\n _setOrigin(origin, isFromInteraction = false) {\n this._ngZone.runOutsideAngular(() => {\n this._origin = origin;\n this._originFromTouchInteraction = origin === 'touch' && isFromInteraction;\n // If we're in IMMEDIATE mode, reset the origin at the next tick (or in `TOUCH_BUFFER_MS` ms\n // for a touch event). We reset the origin at the next tick because Firefox focuses one tick\n // after the interaction event. We wait `TOUCH_BUFFER_MS` ms before resetting the origin for\n // a touch event because when a touch event is fired, the associated focus event isn't yet in\n // the event queue. Before doing so, clear any pending timeouts.\n if (this._detectionMode === 0 /* FocusMonitorDetectionMode.IMMEDIATE */) {\n clearTimeout(this._originTimeoutId);\n const ms = this._originFromTouchInteraction ? TOUCH_BUFFER_MS : 1;\n this._originTimeoutId = setTimeout(() => this._origin = null, ms);\n }\n });\n }\n /**\n * Handles focus events on a registered element.\n * @param event The focus event.\n * @param element The monitored element.\n */\n _onFocus(event, element) {\n // NOTE(mmalerba): We currently set the classes based on the focus origin of the most recent\n // focus event affecting the monitored element. If we want to use the origin of the first event\n // instead we should check for the cdk-focused class here and return if the element already has\n // it. (This only matters for elements that have includesChildren = true).\n // If we are not counting child-element-focus as focused, make sure that the event target is the\n // monitored element itself.\n const elementInfo = this._elementInfo.get(element);\n const focusEventTarget = _getEventTarget(event);\n if (!elementInfo || !elementInfo.checkChildren && element !== focusEventTarget) {\n return;\n }\n this._originChanged(element, this._getFocusOrigin(focusEventTarget), elementInfo);\n }\n /**\n * Handles blur events on a registered element.\n * @param event The blur event.\n * @param element The monitored element.\n */\n _onBlur(event, element) {\n // If we are counting child-element-focus as focused, make sure that we aren't just blurring in\n // order to focus another child of the monitored element.\n const elementInfo = this._elementInfo.get(element);\n if (!elementInfo || elementInfo.checkChildren && event.relatedTarget instanceof Node && element.contains(event.relatedTarget)) {\n return;\n }\n this._setClasses(element);\n this._emitOrigin(elementInfo, null);\n }\n _emitOrigin(info, origin) {\n if (info.subject.observers.length) {\n this._ngZone.run(() => info.subject.next(origin));\n }\n }\n _registerGlobalListeners(elementInfo) {\n if (!this._platform.isBrowser) {\n return;\n }\n const rootNode = elementInfo.rootNode;\n const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode) || 0;\n if (!rootNodeFocusListeners) {\n this._ngZone.runOutsideAngular(() => {\n rootNode.addEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n rootNode.addEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n });\n }\n this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners + 1);\n // Register global listeners when first element is monitored.\n if (++this._monitoredElementCount === 1) {\n // Note: we listen to events in the capture phase so we\n // can detect them even if the user stops propagation.\n this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n window.addEventListener('focus', this._windowFocusListener);\n });\n // The InputModalityDetector is also just a collection of global listeners.\n this._inputModalityDetector.modalityDetected.pipe(takeUntil(this._stopInputModalityDetector)).subscribe(modality => {\n this._setOrigin(modality, true /* isFromInteraction */);\n });\n }\n }\n\n _removeGlobalListeners(elementInfo) {\n const rootNode = elementInfo.rootNode;\n if (this._rootNodeFocusListenerCount.has(rootNode)) {\n const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode);\n if (rootNodeFocusListeners > 1) {\n this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners - 1);\n } else {\n rootNode.removeEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n rootNode.removeEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n this._rootNodeFocusListenerCount.delete(rootNode);\n }\n }\n // Unregister global listeners when last element is unmonitored.\n if (! --this._monitoredElementCount) {\n const window = this._getWindow();\n window.removeEventListener('focus', this._windowFocusListener);\n // Equivalently, stop our InputModalityDetector subscription.\n this._stopInputModalityDetector.next();\n // Clear timeouts for all potentially pending timeouts to prevent the leaks.\n clearTimeout(this._windowFocusTimeoutId);\n clearTimeout(this._originTimeoutId);\n }\n }\n /** Updates all the state on an element once its focus origin has changed. */\n _originChanged(element, origin, elementInfo) {\n this._setClasses(element, origin);\n this._emitOrigin(elementInfo, origin);\n this._lastFocusOrigin = origin;\n }\n /**\n * Collects the `MonitoredElementInfo` of a particular element and\n * all of its ancestors that have enabled `checkChildren`.\n * @param element Element from which to start the search.\n */\n _getClosestElementsInfo(element) {\n const results = [];\n this._elementInfo.forEach((info, currentElement) => {\n if (currentElement === element || info.checkChildren && currentElement.contains(element)) {\n results.push([currentElement, info]);\n }\n });\n return results;\n }\n /**\n * Returns whether an interaction is likely to have come from the user clicking the `label` of\n * an `input` or `textarea` in order to focus it.\n * @param focusEventTarget Target currently receiving focus.\n */\n _isLastInteractionFromInputLabel(focusEventTarget) {\n const {\n _mostRecentTarget: mostRecentTarget,\n mostRecentModality\n } = this._inputModalityDetector;\n // If the last interaction used the mouse on an element contained by one of the labels\n // of an `input`/`textarea` that is currently focused, it is very likely that the\n // user redirected focus using the label.\n if (mostRecentModality !== 'mouse' || !mostRecentTarget || mostRecentTarget === focusEventTarget || focusEventTarget.nodeName !== 'INPUT' && focusEventTarget.nodeName !== 'TEXTAREA' || focusEventTarget.disabled) {\n return false;\n }\n const labels = focusEventTarget.labels;\n if (labels) {\n for (let i = 0; i < labels.length; i++) {\n if (labels[i].contains(mostRecentTarget)) {\n return true;\n }\n }\n }\n return false;\n }\n static {\n this.ɵfac = function FocusMonitor_Factory(t) {\n return new (t || FocusMonitor)(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i1.Platform), i0.ɵɵinject(InputModalityDetector), i0.ɵɵinject(DOCUMENT, 8), i0.ɵɵinject(FOCUS_MONITOR_DEFAULT_OPTIONS, 8));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: FocusMonitor,\n factory: FocusMonitor.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(FocusMonitor, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: i0.NgZone\n }, {\n type: i1.Platform\n }, {\n type: InputModalityDetector\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FOCUS_MONITOR_DEFAULT_OPTIONS]\n }]\n }], null);\n})();\n/**\n * Directive that determines how a particular element was focused (via keyboard, mouse, touch, or\n * programmatically) and adds corresponding classes to the element.\n *\n * There are two variants of this directive:\n * 1) cdkMonitorElementFocus: does not consider an element to be focused if one of its children is\n * focused.\n * 2) cdkMonitorSubtreeFocus: considers an element focused if it or any of its children are focused.\n */\nclass CdkMonitorFocus {\n constructor(_elementRef, _focusMonitor) {\n this._elementRef = _elementRef;\n this._focusMonitor = _focusMonitor;\n this._focusOrigin = null;\n this.cdkFocusChange = new EventEmitter();\n }\n get focusOrigin() {\n return this._focusOrigin;\n }\n ngAfterViewInit() {\n const element = this._elementRef.nativeElement;\n this._monitorSubscription = this._focusMonitor.monitor(element, element.nodeType === 1 && element.hasAttribute('cdkMonitorSubtreeFocus')).subscribe(origin => {\n this._focusOrigin = origin;\n this.cdkFocusChange.emit(origin);\n });\n }\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n if (this._monitorSubscription) {\n this._monitorSubscription.unsubscribe();\n }\n }\n static {\n this.ɵfac = function CdkMonitorFocus_Factory(t) {\n return new (t || CdkMonitorFocus)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(FocusMonitor));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkMonitorFocus,\n selectors: [[\"\", \"cdkMonitorElementFocus\", \"\"], [\"\", \"cdkMonitorSubtreeFocus\", \"\"]],\n outputs: {\n cdkFocusChange: \"cdkFocusChange\"\n },\n exportAs: [\"cdkMonitorFocus\"]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkMonitorFocus, [{\n type: Directive,\n args: [{\n selector: '[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]',\n exportAs: 'cdkMonitorFocus'\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: FocusMonitor\n }], {\n cdkFocusChange: [{\n type: Output\n }]\n });\n})();\n\n/** CSS class applied to the document body when in black-on-white high-contrast mode. */\nconst BLACK_ON_WHITE_CSS_CLASS = 'cdk-high-contrast-black-on-white';\n/** CSS class applied to the document body when in white-on-black high-contrast mode. */\nconst WHITE_ON_BLACK_CSS_CLASS = 'cdk-high-contrast-white-on-black';\n/** CSS class applied to the document body when in high-contrast mode. */\nconst HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS = 'cdk-high-contrast-active';\n/**\n * Service to determine whether the browser is currently in a high-contrast-mode environment.\n *\n * Microsoft Windows supports an accessibility feature called \"High Contrast Mode\". This mode\n * changes the appearance of all applications, including web applications, to dramatically increase\n * contrast.\n *\n * IE, Edge, and Firefox currently support this mode. Chrome does not support Windows High Contrast\n * Mode. This service does not detect high-contrast mode as added by the Chrome \"High Contrast\"\n * browser extension.\n */\nclass HighContrastModeDetector {\n constructor(_platform, document) {\n this._platform = _platform;\n this._document = document;\n this._breakpointSubscription = inject(BreakpointObserver).observe('(forced-colors: active)').subscribe(() => {\n if (this._hasCheckedHighContrastMode) {\n this._hasCheckedHighContrastMode = false;\n this._applyBodyHighContrastModeCssClasses();\n }\n });\n }\n /** Gets the current high-contrast-mode for the page. */\n getHighContrastMode() {\n if (!this._platform.isBrowser) {\n return 0 /* HighContrastMode.NONE */;\n }\n // Create a test element with an arbitrary background-color that is neither black nor\n // white; high-contrast mode will coerce the color to either black or white. Also ensure that\n // appending the test element to the DOM does not affect layout by absolutely positioning it\n const testElement = this._document.createElement('div');\n testElement.style.backgroundColor = 'rgb(1,2,3)';\n testElement.style.position = 'absolute';\n this._document.body.appendChild(testElement);\n // Get the computed style for the background color, collapsing spaces to normalize between\n // browsers. Once we get this color, we no longer need the test element. Access the `window`\n // via the document so we can fake it in tests. Note that we have extra null checks, because\n // this logic will likely run during app bootstrap and throwing can break the entire app.\n const documentWindow = this._document.defaultView || window;\n const computedStyle = documentWindow && documentWindow.getComputedStyle ? documentWindow.getComputedStyle(testElement) : null;\n const computedColor = (computedStyle && computedStyle.backgroundColor || '').replace(/ /g, '');\n testElement.remove();\n switch (computedColor) {\n // Pre Windows 11 dark theme.\n case 'rgb(0,0,0)':\n // Windows 11 dark themes.\n case 'rgb(45,50,54)':\n case 'rgb(32,32,32)':\n return 2 /* HighContrastMode.WHITE_ON_BLACK */;\n // Pre Windows 11 light theme.\n case 'rgb(255,255,255)':\n // Windows 11 light theme.\n case 'rgb(255,250,239)':\n return 1 /* HighContrastMode.BLACK_ON_WHITE */;\n }\n\n return 0 /* HighContrastMode.NONE */;\n }\n\n ngOnDestroy() {\n this._breakpointSubscription.unsubscribe();\n }\n /** Applies CSS classes indicating high-contrast mode to document body (browser-only). */\n _applyBodyHighContrastModeCssClasses() {\n if (!this._hasCheckedHighContrastMode && this._platform.isBrowser && this._document.body) {\n const bodyClasses = this._document.body.classList;\n bodyClasses.remove(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, BLACK_ON_WHITE_CSS_CLASS, WHITE_ON_BLACK_CSS_CLASS);\n this._hasCheckedHighContrastMode = true;\n const mode = this.getHighContrastMode();\n if (mode === 1 /* HighContrastMode.BLACK_ON_WHITE */) {\n bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, BLACK_ON_WHITE_CSS_CLASS);\n } else if (mode === 2 /* HighContrastMode.WHITE_ON_BLACK */) {\n bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, WHITE_ON_BLACK_CSS_CLASS);\n }\n }\n }\n static {\n this.ɵfac = function HighContrastModeDetector_Factory(t) {\n return new (t || HighContrastModeDetector)(i0.ɵɵinject(i1.Platform), i0.ɵɵinject(DOCUMENT));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HighContrastModeDetector,\n factory: HighContrastModeDetector.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(HighContrastModeDetector, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: i1.Platform\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }], null);\n})();\nclass A11yModule {\n constructor(highContrastModeDetector) {\n highContrastModeDetector._applyBodyHighContrastModeCssClasses();\n }\n static {\n this.ɵfac = function A11yModule_Factory(t) {\n return new (t || A11yModule)(i0.ɵɵinject(HighContrastModeDetector));\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: A11yModule,\n declarations: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],\n imports: [ObserversModule],\n exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [ObserversModule]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(A11yModule, [{\n type: NgModule,\n args: [{\n imports: [ObserversModule],\n declarations: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],\n exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus]\n }]\n }], () => [{\n type: HighContrastModeDetector\n }], null);\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { A11yModule, ActiveDescendantKeyManager, AriaDescriber, CDK_DESCRIBEDBY_HOST_ATTRIBUTE, CDK_DESCRIBEDBY_ID_PREFIX, CdkAriaLive, CdkMonitorFocus, CdkTrapFocus, ConfigurableFocusTrap, ConfigurableFocusTrapFactory, EventListenerFocusTrapInertStrategy, FOCUS_MONITOR_DEFAULT_OPTIONS, FOCUS_TRAP_INERT_STRATEGY, FocusKeyManager, FocusMonitor, FocusTrap, FocusTrapFactory, HighContrastModeDetector, INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS, INPUT_MODALITY_DETECTOR_OPTIONS, InputModalityDetector, InteractivityChecker, IsFocusableConfig, LIVE_ANNOUNCER_DEFAULT_OPTIONS, LIVE_ANNOUNCER_ELEMENT_TOKEN, LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY, ListKeyManager, LiveAnnouncer, MESSAGES_CONTAINER_ID, addAriaReferencedId, getAriaReferenceIds, isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader, removeAriaReferencedId };\n"], - "mappings": "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", + "mappings": "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", "names": ["window", "document"] } diff --git a/.angular/cache/17.0.7/vite/deps/chunk-FILHFU6K.js b/.angular/cache/17.0.7/vite/deps/chunk-ECVKT3ZH.js similarity index 99% rename from .angular/cache/17.0.7/vite/deps/chunk-FILHFU6K.js rename to .angular/cache/17.0.7/vite/deps/chunk-ECVKT3ZH.js index b7de2f4..66f53cd 100644 --- a/.angular/cache/17.0.7/vite/deps/chunk-FILHFU6K.js +++ b/.angular/cache/17.0.7/vite/deps/chunk-ECVKT3ZH.js @@ -5,7 +5,7 @@ import { sequence, style, ɵPRE_STYLE -} from "./chunk-BNCUYWOH.js"; +} from "./chunk-KI2JSLP6.js"; import { BrowserModule, DomRendererFactory2 @@ -4186,4 +4186,4 @@ export { * License: MIT *) */ -//# sourceMappingURL=chunk-FILHFU6K.js.map +//# sourceMappingURL=chunk-ECVKT3ZH.js.map diff --git a/.angular/cache/17.0.7/vite/deps/chunk-FILHFU6K.js.map b/.angular/cache/17.0.7/vite/deps/chunk-ECVKT3ZH.js.map similarity index 100% rename from .angular/cache/17.0.7/vite/deps/chunk-FILHFU6K.js.map rename to .angular/cache/17.0.7/vite/deps/chunk-ECVKT3ZH.js.map diff --git a/.angular/cache/17.0.7/vite/deps/chunk-W2UE3A2Q.js b/.angular/cache/17.0.7/vite/deps/chunk-FGZVIKKA.js similarity index 98% rename from .angular/cache/17.0.7/vite/deps/chunk-W2UE3A2Q.js rename to .angular/cache/17.0.7/vite/deps/chunk-FGZVIKKA.js index a79990c..e3deb4a 100644 --- a/.angular/cache/17.0.7/vite/deps/chunk-W2UE3A2Q.js +++ b/.angular/cache/17.0.7/vite/deps/chunk-FGZVIKKA.js @@ -1,7 +1,7 @@ import { NzIconDirective, NzIconModule -} from "./chunk-S7G3TSRW.js"; +} from "./chunk-VWMHIMW7.js"; import { CommonModule, NgIf @@ -188,4 +188,4 @@ export { NzFormItemFeedbackIconComponent, NzFormPatchModule }; -//# sourceMappingURL=chunk-W2UE3A2Q.js.map +//# sourceMappingURL=chunk-FGZVIKKA.js.map diff --git a/.angular/cache/17.0.7/vite/deps/chunk-W2UE3A2Q.js.map b/.angular/cache/17.0.7/vite/deps/chunk-FGZVIKKA.js.map similarity index 100% rename from .angular/cache/17.0.7/vite/deps/chunk-W2UE3A2Q.js.map rename to .angular/cache/17.0.7/vite/deps/chunk-FGZVIKKA.js.map diff --git a/.angular/cache/17.0.7/vite/deps/chunk-UPQZZZIG.js b/.angular/cache/17.0.7/vite/deps/chunk-IAC53GOD.js similarity index 60% rename from .angular/cache/17.0.7/vite/deps/chunk-UPQZZZIG.js rename to .angular/cache/17.0.7/vite/deps/chunk-IAC53GOD.js index 15b99c5..3bd7b5d 100644 --- a/.angular/cache/17.0.7/vite/deps/chunk-UPQZZZIG.js +++ b/.angular/cache/17.0.7/vite/deps/chunk-IAC53GOD.js @@ -1,23 +1,12 @@ import { - DOCUMENT, isPlatformBrowser } from "./chunk-OSQBUYO6.js"; import { - Directive, - EventEmitter, Inject, Injectable, - InjectionToken, - Input, NgModule, - Optional, - Output, PLATFORM_ID, - inject, setClassMetadata, - ɵɵProvidersFeature, - ɵɵattribute, - ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, @@ -191,162 +180,6 @@ function _isTestEnvironment() { ); } -// node_modules/@angular/cdk/fesm2022/bidi.mjs -var DIR_DOCUMENT = new InjectionToken("cdk-dir-doc", { - providedIn: "root", - factory: DIR_DOCUMENT_FACTORY -}); -function DIR_DOCUMENT_FACTORY() { - return inject(DOCUMENT); -} -var RTL_LOCALE_PATTERN = /^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i; -function _resolveDirectionality(rawValue) { - const value = rawValue?.toLowerCase() || ""; - if (value === "auto" && typeof navigator !== "undefined" && navigator?.language) { - return RTL_LOCALE_PATTERN.test(navigator.language) ? "rtl" : "ltr"; - } - return value === "rtl" ? "rtl" : "ltr"; -} -var _Directionality = class _Directionality { - constructor(_document) { - this.value = "ltr"; - this.change = new EventEmitter(); - if (_document) { - const bodyDir = _document.body ? _document.body.dir : null; - const htmlDir = _document.documentElement ? _document.documentElement.dir : null; - this.value = _resolveDirectionality(bodyDir || htmlDir || "ltr"); - } - } - ngOnDestroy() { - this.change.complete(); - } -}; -_Directionality.ɵfac = function Directionality_Factory(t) { - return new (t || _Directionality)(ɵɵinject(DIR_DOCUMENT, 8)); -}; -_Directionality.ɵprov = ɵɵdefineInjectable({ - token: _Directionality, - factory: _Directionality.ɵfac, - providedIn: "root" -}); -var Directionality = _Directionality; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Directionality, [{ - type: Injectable, - args: [{ - providedIn: "root" - }] - }], () => [{ - type: void 0, - decorators: [{ - type: Optional - }, { - type: Inject, - args: [DIR_DOCUMENT] - }] - }], null); -})(); -var _Dir = class _Dir { - constructor() { - this._dir = "ltr"; - this._isInitialized = false; - this.change = new EventEmitter(); - } - /** @docs-private */ - get dir() { - return this._dir; - } - set dir(value) { - const previousValue = this._dir; - this._dir = _resolveDirectionality(value); - this._rawDir = value; - if (previousValue !== this._dir && this._isInitialized) { - this.change.emit(this._dir); - } - } - /** Current layout direction of the element. */ - get value() { - return this.dir; - } - /** Initialize once default value has been set. */ - ngAfterContentInit() { - this._isInitialized = true; - } - ngOnDestroy() { - this.change.complete(); - } -}; -_Dir.ɵfac = function Dir_Factory(t) { - return new (t || _Dir)(); -}; -_Dir.ɵdir = ɵɵdefineDirective({ - type: _Dir, - selectors: [["", "dir", ""]], - hostVars: 1, - hostBindings: function Dir_HostBindings(rf, ctx) { - if (rf & 2) { - ɵɵattribute("dir", ctx._rawDir); - } - }, - inputs: { - dir: "dir" - }, - outputs: { - change: "dirChange" - }, - exportAs: ["dir"], - features: [ɵɵProvidersFeature([{ - provide: Directionality, - useExisting: _Dir - }])] -}); -var Dir = _Dir; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Dir, [{ - type: Directive, - args: [{ - selector: "[dir]", - providers: [{ - provide: Directionality, - useExisting: Dir - }], - host: { - "[attr.dir]": "_rawDir" - }, - exportAs: "dir" - }] - }], null, { - change: [{ - type: Output, - args: ["dirChange"] - }], - dir: [{ - type: Input - }] - }); -})(); -var _BidiModule = class _BidiModule { -}; -_BidiModule.ɵfac = function BidiModule_Factory(t) { - return new (t || _BidiModule)(); -}; -_BidiModule.ɵmod = ɵɵdefineNgModule({ - type: _BidiModule, - declarations: [Dir], - exports: [Dir] -}); -_BidiModule.ɵinj = ɵɵdefineInjector({}); -var BidiModule = _BidiModule; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(BidiModule, [{ - type: NgModule, - args: [{ - exports: [Dir], - declarations: [Dir] - }] - }], null, null); -})(); - export { Platform, normalizePassiveListenerOptions, @@ -355,8 +188,6 @@ export { _getShadowRoot, _getFocusedElementPierceShadowDom, _getEventTarget, - _isTestEnvironment, - Directionality, - BidiModule + _isTestEnvironment }; -//# sourceMappingURL=chunk-UPQZZZIG.js.map +//# sourceMappingURL=chunk-IAC53GOD.js.map diff --git a/.angular/cache/17.0.7/vite/deps/chunk-UPQZZZIG.js.map b/.angular/cache/17.0.7/vite/deps/chunk-IAC53GOD.js.map similarity index 52% rename from .angular/cache/17.0.7/vite/deps/chunk-UPQZZZIG.js.map rename to .angular/cache/17.0.7/vite/deps/chunk-IAC53GOD.js.map index 24fb0a4..f7c0160 100644 --- a/.angular/cache/17.0.7/vite/deps/chunk-UPQZZZIG.js.map +++ b/.angular/cache/17.0.7/vite/deps/chunk-IAC53GOD.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../../../../../node_modules/@angular/cdk/fesm2022/platform.mjs", "../../../../../node_modules/@angular/cdk/fesm2022/bidi.mjs"], - "sourcesContent": ["import * as i0 from '@angular/core';\nimport { PLATFORM_ID, Injectable, Inject, NgModule } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nlet hasV8BreakIterator;\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n hasV8BreakIterator = typeof Intl !== 'undefined' && Intl.v8BreakIterator;\n} catch {\n hasV8BreakIterator = false;\n}\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\nclass Platform {\n constructor(_platformId) {\n this._platformId = _platformId;\n // We want to use the Angular platform check because if the Document is shimmed\n // without the navigator, the following checks will fail. This is preferred because\n // sometimes the Document may be shimmed without the user's knowledge or intention\n /** Whether the Angular application is being rendered in the browser. */\n this.isBrowser = this._platformId ? isPlatformBrowser(this._platformId) : typeof document === 'object' && !!document;\n /** Whether the current browser is Microsoft Edge. */\n this.EDGE = this.isBrowser && /(edge)/i.test(navigator.userAgent);\n /** Whether the current rendering engine is Microsoft Trident. */\n this.TRIDENT = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);\n // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.\n /** Whether the current rendering engine is Blink. */\n this.BLINK = this.isBrowser && !!(window.chrome || hasV8BreakIterator) && typeof CSS !== 'undefined' && !this.EDGE && !this.TRIDENT;\n // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to\n // ensure that Webkit runs standalone and is not used as another engine's base.\n /** Whether the current rendering engine is WebKit. */\n this.WEBKIT = this.isBrowser && /AppleWebKit/i.test(navigator.userAgent) && !this.BLINK && !this.EDGE && !this.TRIDENT;\n /** Whether the current platform is Apple iOS. */\n this.IOS = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window);\n // It's difficult to detect the plain Gecko engine, because most of the browsers identify\n // them self as Gecko-like browsers and modify the userAgent's according to that.\n // Since we only cover one explicit Firefox case, we can simply check for Firefox\n // instead of having an unstable check for Gecko.\n /** Whether the current browser is Firefox. */\n this.FIREFOX = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);\n /** Whether the current platform is Android. */\n // Trident on mobile adds the android platform to the userAgent to trick detections.\n this.ANDROID = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;\n // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake\n // this and just place the Safari keyword in the userAgent. To be more safe about Safari every\n // Safari browser should also use Webkit as its layout engine.\n /** Whether the current browser is Safari. */\n this.SAFARI = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\n }\n static {\n this.ɵfac = function Platform_Factory(t) {\n return new (t || Platform)(i0.ɵɵinject(PLATFORM_ID));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: Platform,\n factory: Platform.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Platform, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: Object,\n decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }]\n }], null);\n})();\nclass PlatformModule {\n static {\n this.ɵfac = function PlatformModule_Factory(t) {\n return new (t || PlatformModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: PlatformModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(PlatformModule, [{\n type: NgModule,\n args: [{}]\n }], null, null);\n})();\n\n/** Cached result Set of input types support by the current browser. */\nlet supportedInputTypes;\n/** Types of `` that *might* be supported. */\nconst candidateInputTypes = [\n// `color` must come first. Chrome 56 shows a warning if we change the type to `color` after\n// first changing it to something else:\n// The specified value \"\" does not conform to the required format.\n// The format is \"#rrggbb\" where rr, gg, bb are two-digit hexadecimal numbers.\n'color', 'button', 'checkbox', 'date', 'datetime-local', 'email', 'file', 'hidden', 'image', 'month', 'number', 'password', 'radio', 'range', 'reset', 'search', 'submit', 'tel', 'text', 'time', 'url', 'week'];\n/** @returns The input types supported by this browser. */\nfunction getSupportedInputTypes() {\n // Result is cached.\n if (supportedInputTypes) {\n return supportedInputTypes;\n }\n // We can't check if an input type is not supported until we're on the browser, so say that\n // everything is supported when not on the browser. We don't use `Platform` here since it's\n // just a helper function and can't inject it.\n if (typeof document !== 'object' || !document) {\n supportedInputTypes = new Set(candidateInputTypes);\n return supportedInputTypes;\n }\n let featureTestInput = document.createElement('input');\n supportedInputTypes = new Set(candidateInputTypes.filter(value => {\n featureTestInput.setAttribute('type', value);\n return featureTestInput.type === value;\n }));\n return supportedInputTypes;\n}\n\n/** Cached result of whether the user's browser supports passive event listeners. */\nlet supportsPassiveEvents;\n/**\n * Checks whether the user's browser supports passive event listeners.\n * See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n */\nfunction supportsPassiveEventListeners() {\n if (supportsPassiveEvents == null && typeof window !== 'undefined') {\n try {\n window.addEventListener('test', null, Object.defineProperty({}, 'passive', {\n get: () => supportsPassiveEvents = true\n }));\n } finally {\n supportsPassiveEvents = supportsPassiveEvents || false;\n }\n }\n return supportsPassiveEvents;\n}\n/**\n * Normalizes an `AddEventListener` object to something that can be passed\n * to `addEventListener` on any browser, no matter whether it supports the\n * `options` parameter.\n * @param options Object to be normalized.\n */\nfunction normalizePassiveListenerOptions(options) {\n return supportsPassiveEventListeners() ? options : !!options.capture;\n}\n\n/** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */\nlet rtlScrollAxisType;\n/** Cached result of the check that indicates whether the browser supports scroll behaviors. */\nlet scrollBehaviorSupported;\n/** Check whether the browser supports scroll behaviors. */\nfunction supportsScrollBehavior() {\n if (scrollBehaviorSupported == null) {\n // If we're not in the browser, it can't be supported. Also check for `Element`, because\n // some projects stub out the global `document` during SSR which can throw us off.\n if (typeof document !== 'object' || !document || typeof Element !== 'function' || !Element) {\n scrollBehaviorSupported = false;\n return scrollBehaviorSupported;\n }\n // If the element can have a `scrollBehavior` style, we can be sure that it's supported.\n if ('scrollBehavior' in document.documentElement.style) {\n scrollBehaviorSupported = true;\n } else {\n // At this point we have 3 possibilities: `scrollTo` isn't supported at all, it's\n // supported but it doesn't handle scroll behavior, or it has been polyfilled.\n const scrollToFunction = Element.prototype.scrollTo;\n if (scrollToFunction) {\n // We can detect if the function has been polyfilled by calling `toString` on it. Native\n // functions are obfuscated using `[native code]`, whereas if it was overwritten we'd get\n // the actual function source. Via https://davidwalsh.name/detect-native-function. Consider\n // polyfilled functions as supporting scroll behavior.\n scrollBehaviorSupported = !/\\{\\s*\\[native code\\]\\s*\\}/.test(scrollToFunction.toString());\n } else {\n scrollBehaviorSupported = false;\n }\n }\n }\n return scrollBehaviorSupported;\n}\n/**\n * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,\n * Firefox & Safari are NEGATED, and IE & Edge are INVERTED.\n */\nfunction getRtlScrollAxisType() {\n // We can't check unless we're on the browser. Just assume 'normal' if we're not.\n if (typeof document !== 'object' || !document) {\n return 0 /* RtlScrollAxisType.NORMAL */;\n }\n\n if (rtlScrollAxisType == null) {\n // Create a 1px wide scrolling container and a 2px wide content element.\n const scrollContainer = document.createElement('div');\n const containerStyle = scrollContainer.style;\n scrollContainer.dir = 'rtl';\n containerStyle.width = '1px';\n containerStyle.overflow = 'auto';\n containerStyle.visibility = 'hidden';\n containerStyle.pointerEvents = 'none';\n containerStyle.position = 'absolute';\n const content = document.createElement('div');\n const contentStyle = content.style;\n contentStyle.width = '2px';\n contentStyle.height = '1px';\n scrollContainer.appendChild(content);\n document.body.appendChild(scrollContainer);\n rtlScrollAxisType = 0 /* RtlScrollAxisType.NORMAL */;\n // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL\n // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're\n // dealing with one of the other two types of browsers.\n if (scrollContainer.scrollLeft === 0) {\n // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an\n // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by\n // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will\n // return 0 when we read it again.\n scrollContainer.scrollLeft = 1;\n rtlScrollAxisType = scrollContainer.scrollLeft === 0 ? 1 /* RtlScrollAxisType.NEGATED */ : 2 /* RtlScrollAxisType.INVERTED */;\n }\n\n scrollContainer.remove();\n }\n return rtlScrollAxisType;\n}\nlet shadowDomIsSupported;\n/** Checks whether the user's browser support Shadow DOM. */\nfunction _supportsShadowDom() {\n if (shadowDomIsSupported == null) {\n const head = typeof document !== 'undefined' ? document.head : null;\n shadowDomIsSupported = !!(head && (head.createShadowRoot || head.attachShadow));\n }\n return shadowDomIsSupported;\n}\n/** Gets the shadow root of an element, if supported and the element is inside the Shadow DOM. */\nfunction _getShadowRoot(element) {\n if (_supportsShadowDom()) {\n const rootNode = element.getRootNode ? element.getRootNode() : null;\n // Note that this should be caught by `_supportsShadowDom`, but some\n // teams have been able to hit this code path on unsupported browsers.\n if (typeof ShadowRoot !== 'undefined' && ShadowRoot && rootNode instanceof ShadowRoot) {\n return rootNode;\n }\n }\n return null;\n}\n/**\n * Gets the currently-focused element on the page while\n * also piercing through Shadow DOM boundaries.\n */\nfunction _getFocusedElementPierceShadowDom() {\n let activeElement = typeof document !== 'undefined' && document ? document.activeElement : null;\n while (activeElement && activeElement.shadowRoot) {\n const newActiveElement = activeElement.shadowRoot.activeElement;\n if (newActiveElement === activeElement) {\n break;\n } else {\n activeElement = newActiveElement;\n }\n }\n return activeElement;\n}\n/** Gets the target of an event while accounting for Shadow DOM. */\nfunction _getEventTarget(event) {\n // If an event is bound outside the Shadow DOM, the `event.target` will\n // point to the shadow root so we have to use `composedPath` instead.\n return event.composedPath ? event.composedPath()[0] : event.target;\n}\n\n/** Gets whether the code is currently running in a test environment. */\nfunction _isTestEnvironment() {\n // We can't use `declare const` because it causes conflicts inside Google with the real typings\n // for these symbols and we can't read them off the global object, because they don't appear to\n // be attached there for some runners like Jest.\n // (see: https://github.com/angular/components/issues/23365#issuecomment-938146643)\n return (\n // @ts-ignore\n typeof __karma__ !== 'undefined' && !!__karma__ ||\n // @ts-ignore\n typeof jasmine !== 'undefined' && !!jasmine ||\n // @ts-ignore\n typeof jest !== 'undefined' && !!jest ||\n // @ts-ignore\n typeof Mocha !== 'undefined' && !!Mocha\n );\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Platform, PlatformModule, _getEventTarget, _getFocusedElementPierceShadowDom, _getShadowRoot, _isTestEnvironment, _supportsShadowDom, getRtlScrollAxisType, getSupportedInputTypes, normalizePassiveListenerOptions, supportsPassiveEventListeners, supportsScrollBehavior };\n", "import * as i0 from '@angular/core';\nimport { InjectionToken, inject, EventEmitter, Injectable, Optional, Inject, Directive, Output, Input, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * Injection token used to inject the document into Directionality.\n * This is used so that the value can be faked in tests.\n *\n * We can't use the real document in tests because changing the real `dir` causes geometry-based\n * tests in Safari to fail.\n *\n * We also can't re-provide the DOCUMENT token from platform-browser because the unit tests\n * themselves use things like `querySelector` in test code.\n *\n * This token is defined in a separate file from Directionality as a workaround for\n * https://github.com/angular/angular/issues/22559\n *\n * @docs-private\n */\nconst DIR_DOCUMENT = new InjectionToken('cdk-dir-doc', {\n providedIn: 'root',\n factory: DIR_DOCUMENT_FACTORY\n});\n/** @docs-private */\nfunction DIR_DOCUMENT_FACTORY() {\n return inject(DOCUMENT);\n}\n\n/** Regex that matches locales with an RTL script. Taken from `goog.i18n.bidi.isRtlLanguage`. */\nconst RTL_LOCALE_PATTERN = /^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;\n/** Resolves a string value to a specific direction. */\nfunction _resolveDirectionality(rawValue) {\n const value = rawValue?.toLowerCase() || '';\n if (value === 'auto' && typeof navigator !== 'undefined' && navigator?.language) {\n return RTL_LOCALE_PATTERN.test(navigator.language) ? 'rtl' : 'ltr';\n }\n return value === 'rtl' ? 'rtl' : 'ltr';\n}\n/**\n * The directionality (LTR / RTL) context for the application (or a subtree of it).\n * Exposes the current direction and a stream of direction changes.\n */\nclass Directionality {\n constructor(_document) {\n /** The current 'ltr' or 'rtl' value. */\n this.value = 'ltr';\n /** Stream that emits whenever the 'ltr' / 'rtl' state changes. */\n this.change = new EventEmitter();\n if (_document) {\n const bodyDir = _document.body ? _document.body.dir : null;\n const htmlDir = _document.documentElement ? _document.documentElement.dir : null;\n this.value = _resolveDirectionality(bodyDir || htmlDir || 'ltr');\n }\n }\n ngOnDestroy() {\n this.change.complete();\n }\n static {\n this.ɵfac = function Directionality_Factory(t) {\n return new (t || Directionality)(i0.ɵɵinject(DIR_DOCUMENT, 8));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: Directionality,\n factory: Directionality.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Directionality, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DIR_DOCUMENT]\n }]\n }], null);\n})();\n\n/**\n * Directive to listen for changes of direction of part of the DOM.\n *\n * Provides itself as Directionality such that descendant directives only need to ever inject\n * Directionality to get the closest direction.\n */\nclass Dir {\n constructor() {\n /** Normalized direction that accounts for invalid/unsupported values. */\n this._dir = 'ltr';\n /** Whether the `value` has been set to its initial value. */\n this._isInitialized = false;\n /** Event emitted when the direction changes. */\n this.change = new EventEmitter();\n }\n /** @docs-private */\n get dir() {\n return this._dir;\n }\n set dir(value) {\n const previousValue = this._dir;\n // Note: `_resolveDirectionality` resolves the language based on the browser's language,\n // whereas the browser does it based on the content of the element. Since doing so based\n // on the content can be expensive, for now we're doing the simpler matching.\n this._dir = _resolveDirectionality(value);\n this._rawDir = value;\n if (previousValue !== this._dir && this._isInitialized) {\n this.change.emit(this._dir);\n }\n }\n /** Current layout direction of the element. */\n get value() {\n return this.dir;\n }\n /** Initialize once default value has been set. */\n ngAfterContentInit() {\n this._isInitialized = true;\n }\n ngOnDestroy() {\n this.change.complete();\n }\n static {\n this.ɵfac = function Dir_Factory(t) {\n return new (t || Dir)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: Dir,\n selectors: [[\"\", \"dir\", \"\"]],\n hostVars: 1,\n hostBindings: function Dir_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"dir\", ctx._rawDir);\n }\n },\n inputs: {\n dir: \"dir\"\n },\n outputs: {\n change: \"dirChange\"\n },\n exportAs: [\"dir\"],\n features: [i0.ɵɵProvidersFeature([{\n provide: Directionality,\n useExisting: Dir\n }])]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Dir, [{\n type: Directive,\n args: [{\n selector: '[dir]',\n providers: [{\n provide: Directionality,\n useExisting: Dir\n }],\n host: {\n '[attr.dir]': '_rawDir'\n },\n exportAs: 'dir'\n }]\n }], null, {\n change: [{\n type: Output,\n args: ['dirChange']\n }],\n dir: [{\n type: Input\n }]\n });\n})();\nclass BidiModule {\n static {\n this.ɵfac = function BidiModule_Factory(t) {\n return new (t || BidiModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: BidiModule,\n declarations: [Dir],\n exports: [Dir]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(BidiModule, [{\n type: NgModule,\n args: [{\n exports: [Dir],\n declarations: [Dir]\n }]\n }], null, null);\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BidiModule, DIR_DOCUMENT, Dir, Directionality };\n"], - "mappings": "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", + "sources": ["../../../../../node_modules/@angular/cdk/fesm2022/platform.mjs"], + "sourcesContent": ["import * as i0 from '@angular/core';\nimport { PLATFORM_ID, Injectable, Inject, NgModule } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nlet hasV8BreakIterator;\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n hasV8BreakIterator = typeof Intl !== 'undefined' && Intl.v8BreakIterator;\n} catch {\n hasV8BreakIterator = false;\n}\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\nclass Platform {\n constructor(_platformId) {\n this._platformId = _platformId;\n // We want to use the Angular platform check because if the Document is shimmed\n // without the navigator, the following checks will fail. This is preferred because\n // sometimes the Document may be shimmed without the user's knowledge or intention\n /** Whether the Angular application is being rendered in the browser. */\n this.isBrowser = this._platformId ? isPlatformBrowser(this._platformId) : typeof document === 'object' && !!document;\n /** Whether the current browser is Microsoft Edge. */\n this.EDGE = this.isBrowser && /(edge)/i.test(navigator.userAgent);\n /** Whether the current rendering engine is Microsoft Trident. */\n this.TRIDENT = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);\n // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.\n /** Whether the current rendering engine is Blink. */\n this.BLINK = this.isBrowser && !!(window.chrome || hasV8BreakIterator) && typeof CSS !== 'undefined' && !this.EDGE && !this.TRIDENT;\n // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to\n // ensure that Webkit runs standalone and is not used as another engine's base.\n /** Whether the current rendering engine is WebKit. */\n this.WEBKIT = this.isBrowser && /AppleWebKit/i.test(navigator.userAgent) && !this.BLINK && !this.EDGE && !this.TRIDENT;\n /** Whether the current platform is Apple iOS. */\n this.IOS = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window);\n // It's difficult to detect the plain Gecko engine, because most of the browsers identify\n // them self as Gecko-like browsers and modify the userAgent's according to that.\n // Since we only cover one explicit Firefox case, we can simply check for Firefox\n // instead of having an unstable check for Gecko.\n /** Whether the current browser is Firefox. */\n this.FIREFOX = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);\n /** Whether the current platform is Android. */\n // Trident on mobile adds the android platform to the userAgent to trick detections.\n this.ANDROID = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;\n // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake\n // this and just place the Safari keyword in the userAgent. To be more safe about Safari every\n // Safari browser should also use Webkit as its layout engine.\n /** Whether the current browser is Safari. */\n this.SAFARI = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\n }\n static {\n this.ɵfac = function Platform_Factory(t) {\n return new (t || Platform)(i0.ɵɵinject(PLATFORM_ID));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: Platform,\n factory: Platform.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Platform, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: Object,\n decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }]\n }], null);\n})();\nclass PlatformModule {\n static {\n this.ɵfac = function PlatformModule_Factory(t) {\n return new (t || PlatformModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: PlatformModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(PlatformModule, [{\n type: NgModule,\n args: [{}]\n }], null, null);\n})();\n\n/** Cached result Set of input types support by the current browser. */\nlet supportedInputTypes;\n/** Types of `` that *might* be supported. */\nconst candidateInputTypes = [\n// `color` must come first. Chrome 56 shows a warning if we change the type to `color` after\n// first changing it to something else:\n// The specified value \"\" does not conform to the required format.\n// The format is \"#rrggbb\" where rr, gg, bb are two-digit hexadecimal numbers.\n'color', 'button', 'checkbox', 'date', 'datetime-local', 'email', 'file', 'hidden', 'image', 'month', 'number', 'password', 'radio', 'range', 'reset', 'search', 'submit', 'tel', 'text', 'time', 'url', 'week'];\n/** @returns The input types supported by this browser. */\nfunction getSupportedInputTypes() {\n // Result is cached.\n if (supportedInputTypes) {\n return supportedInputTypes;\n }\n // We can't check if an input type is not supported until we're on the browser, so say that\n // everything is supported when not on the browser. We don't use `Platform` here since it's\n // just a helper function and can't inject it.\n if (typeof document !== 'object' || !document) {\n supportedInputTypes = new Set(candidateInputTypes);\n return supportedInputTypes;\n }\n let featureTestInput = document.createElement('input');\n supportedInputTypes = new Set(candidateInputTypes.filter(value => {\n featureTestInput.setAttribute('type', value);\n return featureTestInput.type === value;\n }));\n return supportedInputTypes;\n}\n\n/** Cached result of whether the user's browser supports passive event listeners. */\nlet supportsPassiveEvents;\n/**\n * Checks whether the user's browser supports passive event listeners.\n * See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n */\nfunction supportsPassiveEventListeners() {\n if (supportsPassiveEvents == null && typeof window !== 'undefined') {\n try {\n window.addEventListener('test', null, Object.defineProperty({}, 'passive', {\n get: () => supportsPassiveEvents = true\n }));\n } finally {\n supportsPassiveEvents = supportsPassiveEvents || false;\n }\n }\n return supportsPassiveEvents;\n}\n/**\n * Normalizes an `AddEventListener` object to something that can be passed\n * to `addEventListener` on any browser, no matter whether it supports the\n * `options` parameter.\n * @param options Object to be normalized.\n */\nfunction normalizePassiveListenerOptions(options) {\n return supportsPassiveEventListeners() ? options : !!options.capture;\n}\n\n/** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */\nlet rtlScrollAxisType;\n/** Cached result of the check that indicates whether the browser supports scroll behaviors. */\nlet scrollBehaviorSupported;\n/** Check whether the browser supports scroll behaviors. */\nfunction supportsScrollBehavior() {\n if (scrollBehaviorSupported == null) {\n // If we're not in the browser, it can't be supported. Also check for `Element`, because\n // some projects stub out the global `document` during SSR which can throw us off.\n if (typeof document !== 'object' || !document || typeof Element !== 'function' || !Element) {\n scrollBehaviorSupported = false;\n return scrollBehaviorSupported;\n }\n // If the element can have a `scrollBehavior` style, we can be sure that it's supported.\n if ('scrollBehavior' in document.documentElement.style) {\n scrollBehaviorSupported = true;\n } else {\n // At this point we have 3 possibilities: `scrollTo` isn't supported at all, it's\n // supported but it doesn't handle scroll behavior, or it has been polyfilled.\n const scrollToFunction = Element.prototype.scrollTo;\n if (scrollToFunction) {\n // We can detect if the function has been polyfilled by calling `toString` on it. Native\n // functions are obfuscated using `[native code]`, whereas if it was overwritten we'd get\n // the actual function source. Via https://davidwalsh.name/detect-native-function. Consider\n // polyfilled functions as supporting scroll behavior.\n scrollBehaviorSupported = !/\\{\\s*\\[native code\\]\\s*\\}/.test(scrollToFunction.toString());\n } else {\n scrollBehaviorSupported = false;\n }\n }\n }\n return scrollBehaviorSupported;\n}\n/**\n * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,\n * Firefox & Safari are NEGATED, and IE & Edge are INVERTED.\n */\nfunction getRtlScrollAxisType() {\n // We can't check unless we're on the browser. Just assume 'normal' if we're not.\n if (typeof document !== 'object' || !document) {\n return 0 /* RtlScrollAxisType.NORMAL */;\n }\n\n if (rtlScrollAxisType == null) {\n // Create a 1px wide scrolling container and a 2px wide content element.\n const scrollContainer = document.createElement('div');\n const containerStyle = scrollContainer.style;\n scrollContainer.dir = 'rtl';\n containerStyle.width = '1px';\n containerStyle.overflow = 'auto';\n containerStyle.visibility = 'hidden';\n containerStyle.pointerEvents = 'none';\n containerStyle.position = 'absolute';\n const content = document.createElement('div');\n const contentStyle = content.style;\n contentStyle.width = '2px';\n contentStyle.height = '1px';\n scrollContainer.appendChild(content);\n document.body.appendChild(scrollContainer);\n rtlScrollAxisType = 0 /* RtlScrollAxisType.NORMAL */;\n // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL\n // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're\n // dealing with one of the other two types of browsers.\n if (scrollContainer.scrollLeft === 0) {\n // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an\n // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by\n // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will\n // return 0 when we read it again.\n scrollContainer.scrollLeft = 1;\n rtlScrollAxisType = scrollContainer.scrollLeft === 0 ? 1 /* RtlScrollAxisType.NEGATED */ : 2 /* RtlScrollAxisType.INVERTED */;\n }\n\n scrollContainer.remove();\n }\n return rtlScrollAxisType;\n}\nlet shadowDomIsSupported;\n/** Checks whether the user's browser support Shadow DOM. */\nfunction _supportsShadowDom() {\n if (shadowDomIsSupported == null) {\n const head = typeof document !== 'undefined' ? document.head : null;\n shadowDomIsSupported = !!(head && (head.createShadowRoot || head.attachShadow));\n }\n return shadowDomIsSupported;\n}\n/** Gets the shadow root of an element, if supported and the element is inside the Shadow DOM. */\nfunction _getShadowRoot(element) {\n if (_supportsShadowDom()) {\n const rootNode = element.getRootNode ? element.getRootNode() : null;\n // Note that this should be caught by `_supportsShadowDom`, but some\n // teams have been able to hit this code path on unsupported browsers.\n if (typeof ShadowRoot !== 'undefined' && ShadowRoot && rootNode instanceof ShadowRoot) {\n return rootNode;\n }\n }\n return null;\n}\n/**\n * Gets the currently-focused element on the page while\n * also piercing through Shadow DOM boundaries.\n */\nfunction _getFocusedElementPierceShadowDom() {\n let activeElement = typeof document !== 'undefined' && document ? document.activeElement : null;\n while (activeElement && activeElement.shadowRoot) {\n const newActiveElement = activeElement.shadowRoot.activeElement;\n if (newActiveElement === activeElement) {\n break;\n } else {\n activeElement = newActiveElement;\n }\n }\n return activeElement;\n}\n/** Gets the target of an event while accounting for Shadow DOM. */\nfunction _getEventTarget(event) {\n // If an event is bound outside the Shadow DOM, the `event.target` will\n // point to the shadow root so we have to use `composedPath` instead.\n return event.composedPath ? event.composedPath()[0] : event.target;\n}\n\n/** Gets whether the code is currently running in a test environment. */\nfunction _isTestEnvironment() {\n // We can't use `declare const` because it causes conflicts inside Google with the real typings\n // for these symbols and we can't read them off the global object, because they don't appear to\n // be attached there for some runners like Jest.\n // (see: https://github.com/angular/components/issues/23365#issuecomment-938146643)\n return (\n // @ts-ignore\n typeof __karma__ !== 'undefined' && !!__karma__ ||\n // @ts-ignore\n typeof jasmine !== 'undefined' && !!jasmine ||\n // @ts-ignore\n typeof jest !== 'undefined' && !!jest ||\n // @ts-ignore\n typeof Mocha !== 'undefined' && !!Mocha\n );\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Platform, PlatformModule, _getEventTarget, _getFocusedElementPierceShadowDom, _getShadowRoot, _isTestEnvironment, _supportsShadowDom, getRtlScrollAxisType, getSupportedInputTypes, normalizePassiveListenerOptions, supportsPassiveEventListeners, supportsScrollBehavior };\n"], + "mappings": ";;;;;;;;;;;;;;;;AAMA,IAAI;AAMJ,IAAI;AACF,uBAAqB,OAAO,SAAS,eAAe,KAAK;AAC3D,QAAQ;AACN,uBAAqB;AACvB;AAKA,IAAM,YAAN,MAAM,UAAS;AAAA,EACb,YAAY,aAAa;AACvB,SAAK,cAAc;AAKnB,SAAK,YAAY,KAAK,cAAc,kBAAkB,KAAK,WAAW,IAAI,OAAO,aAAa,YAAY,CAAC,CAAC;AAE5G,SAAK,OAAO,KAAK,aAAa,UAAU,KAAK,UAAU,SAAS;AAEhE,SAAK,UAAU,KAAK,aAAa,kBAAkB,KAAK,UAAU,SAAS;AAG3E,SAAK,QAAQ,KAAK,aAAa,CAAC,EAAE,OAAO,UAAU,uBAAuB,OAAO,QAAQ,eAAe,CAAC,KAAK,QAAQ,CAAC,KAAK;AAI5H,SAAK,SAAS,KAAK,aAAa,eAAe,KAAK,UAAU,SAAS,KAAK,CAAC,KAAK,SAAS,CAAC,KAAK,QAAQ,CAAC,KAAK;AAE/G,SAAK,MAAM,KAAK,aAAa,mBAAmB,KAAK,UAAU,SAAS,KAAK,EAAE,cAAc;AAM7F,SAAK,UAAU,KAAK,aAAa,uBAAuB,KAAK,UAAU,SAAS;AAGhF,SAAK,UAAU,KAAK,aAAa,WAAW,KAAK,UAAU,SAAS,KAAK,CAAC,KAAK;AAK/E,SAAK,SAAS,KAAK,aAAa,UAAU,KAAK,UAAU,SAAS,KAAK,KAAK;AAAA,EAC9E;AAaF;AAXI,UAAK,OAAO,SAAS,iBAAiB,GAAG;AACvC,SAAO,KAAK,KAAK,WAAa,SAAS,WAAW,CAAC;AACrD;AAGA,UAAK,QAA0B,mBAAmB;AAAA,EAChD,OAAO;AAAA,EACP,SAAS,UAAS;AAAA,EAClB,YAAY;AACd,CAAC;AA9CL,IAAM,WAAN;AAAA,CAiDC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,UAAU,CAAC;AAAA,IACjF,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,YAAY;AAAA,IACd,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,CAAC;AAAA,IACT,MAAM;AAAA,IACN,YAAY,CAAC;AAAA,MACX,MAAM;AAAA,MACN,MAAM,CAAC,WAAW;AAAA,IACpB,CAAC;AAAA,EACH,CAAC,GAAG,IAAI;AACV,GAAG;AACH,IAAM,kBAAN,MAAM,gBAAe;AAcrB;AAZI,gBAAK,OAAO,SAAS,uBAAuB,GAAG;AAC7C,SAAO,KAAK,KAAK,iBAAgB;AACnC;AAGA,gBAAK,OAAyB,iBAAiB;AAAA,EAC7C,MAAM;AACR,CAAC;AAGD,gBAAK,OAAyB,iBAAiB,CAAC,CAAC;AAZrD,IAAM,iBAAN;AAAA,CAeC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,gBAAgB,CAAC;AAAA,IACvF,MAAM;AAAA,IACN,MAAM,CAAC,CAAC,CAAC;AAAA,EACX,CAAC,GAAG,MAAM,IAAI;AAChB,GAAG;AAiCH,IAAI;AAKJ,SAAS,gCAAgC;AACvC,MAAI,yBAAyB,QAAQ,OAAO,WAAW,aAAa;AAClE,QAAI;AACF,aAAO,iBAAiB,QAAQ,MAAM,OAAO,eAAe,CAAC,GAAG,WAAW;AAAA,QACzE,KAAK,MAAM,wBAAwB;AAAA,MACrC,CAAC,CAAC;AAAA,IACJ,UAAE;AACA,8BAAwB,yBAAyB;AAAA,IACnD;AAAA,EACF;AACA,SAAO;AACT;AAOA,SAAS,gCAAgC,SAAS;AAChD,SAAO,8BAA8B,IAAI,UAAU,CAAC,CAAC,QAAQ;AAC/D;AAGA,IAAI;AAEJ,IAAI;AAEJ,SAAS,yBAAyB;AAChC,MAAI,2BAA2B,MAAM;AAGnC,QAAI,OAAO,aAAa,YAAY,CAAC,YAAY,OAAO,YAAY,cAAc,CAAC,SAAS;AAC1F,gCAA0B;AAC1B,aAAO;AAAA,IACT;AAEA,QAAI,oBAAoB,SAAS,gBAAgB,OAAO;AACtD,gCAA0B;AAAA,IAC5B,OAAO;AAGL,YAAM,mBAAmB,QAAQ,UAAU;AAC3C,UAAI,kBAAkB;AAKpB,kCAA0B,CAAC,4BAA4B,KAAK,iBAAiB,SAAS,CAAC;AAAA,MACzF,OAAO;AACL,kCAA0B;AAAA,MAC5B;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAKA,SAAS,uBAAuB;AAE9B,MAAI,OAAO,aAAa,YAAY,CAAC,UAAU;AAC7C,WAAO;AAAA,EACT;AAEA,MAAI,qBAAqB,MAAM;AAE7B,UAAM,kBAAkB,SAAS,cAAc,KAAK;AACpD,UAAM,iBAAiB,gBAAgB;AACvC,oBAAgB,MAAM;AACtB,mBAAe,QAAQ;AACvB,mBAAe,WAAW;AAC1B,mBAAe,aAAa;AAC5B,mBAAe,gBAAgB;AAC/B,mBAAe,WAAW;AAC1B,UAAM,UAAU,SAAS,cAAc,KAAK;AAC5C,UAAM,eAAe,QAAQ;AAC7B,iBAAa,QAAQ;AACrB,iBAAa,SAAS;AACtB,oBAAgB,YAAY,OAAO;AACnC,aAAS,KAAK,YAAY,eAAe;AACzC,wBAAoB;AAIpB,QAAI,gBAAgB,eAAe,GAAG;AAKpC,sBAAgB,aAAa;AAC7B,0BAAoB,gBAAgB,eAAe,IAAI,IAAoC;AAAA,IAC7F;AAEA,oBAAgB,OAAO;AAAA,EACzB;AACA,SAAO;AACT;AACA,IAAI;AAEJ,SAAS,qBAAqB;AAC5B,MAAI,wBAAwB,MAAM;AAChC,UAAM,OAAO,OAAO,aAAa,cAAc,SAAS,OAAO;AAC/D,2BAAuB,CAAC,EAAE,SAAS,KAAK,oBAAoB,KAAK;AAAA,EACnE;AACA,SAAO;AACT;AAEA,SAAS,eAAe,SAAS;AAC/B,MAAI,mBAAmB,GAAG;AACxB,UAAM,WAAW,QAAQ,cAAc,QAAQ,YAAY,IAAI;AAG/D,QAAI,OAAO,eAAe,eAAe,cAAc,oBAAoB,YAAY;AACrF,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAKA,SAAS,oCAAoC;AAC3C,MAAI,gBAAgB,OAAO,aAAa,eAAe,WAAW,SAAS,gBAAgB;AAC3F,SAAO,iBAAiB,cAAc,YAAY;AAChD,UAAM,mBAAmB,cAAc,WAAW;AAClD,QAAI,qBAAqB,eAAe;AACtC;AAAA,IACF,OAAO;AACL,sBAAgB;AAAA,IAClB;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,gBAAgB,OAAO;AAG9B,SAAO,MAAM,eAAe,MAAM,aAAa,EAAE,CAAC,IAAI,MAAM;AAC9D;AAGA,SAAS,qBAAqB;AAK5B;AAAA;AAAA,IAEE,OAAO,cAAc,eAAe,CAAC,CAAC;AAAA,IAEtC,OAAO,YAAY,eAAe,CAAC,CAAC;AAAA,IAEpC,OAAO,SAAS,eAAe,CAAC,CAAC;AAAA,IAEjC,OAAO,UAAU,eAAe,CAAC,CAAC;AAAA;AAEtC;", "names": [] } diff --git a/.angular/cache/17.0.7/vite/deps/chunk-UMSNQQWJ.js b/.angular/cache/17.0.7/vite/deps/chunk-JGP5BR6B.js similarity index 66% rename from .angular/cache/17.0.7/vite/deps/chunk-UMSNQQWJ.js rename to .angular/cache/17.0.7/vite/deps/chunk-JGP5BR6B.js index 204b504..a68e1da 100644 --- a/.angular/cache/17.0.7/vite/deps/chunk-UMSNQQWJ.js +++ b/.angular/cache/17.0.7/vite/deps/chunk-JGP5BR6B.js @@ -1,12 +1,23 @@ // node_modules/@angular/cdk/fesm2022/keycodes.mjs +var TAB = 9; +var ENTER = 13; var SHIFT = 16; var CONTROL = 17; var ALT = 18; var ESCAPE = 27; +var SPACE = 32; +var PAGE_UP = 33; +var PAGE_DOWN = 34; +var END = 35; +var HOME = 36; var LEFT_ARROW = 37; var UP_ARROW = 38; var RIGHT_ARROW = 39; var DOWN_ARROW = 40; +var ZERO = 48; +var NINE = 57; +var A = 65; +var Z = 90; var META = 91; var MAC_META = 224; function hasModifierKey(event, ...modifiers) { @@ -17,16 +28,27 @@ function hasModifierKey(event, ...modifiers) { } export { + TAB, + ENTER, SHIFT, CONTROL, ALT, ESCAPE, + SPACE, + PAGE_UP, + PAGE_DOWN, + END, + HOME, LEFT_ARROW, UP_ARROW, RIGHT_ARROW, DOWN_ARROW, + ZERO, + NINE, + A, + Z, META, MAC_META, hasModifierKey }; -//# sourceMappingURL=chunk-UMSNQQWJ.js.map +//# sourceMappingURL=chunk-JGP5BR6B.js.map diff --git a/.angular/cache/17.0.7/vite/deps/chunk-UMSNQQWJ.js.map b/.angular/cache/17.0.7/vite/deps/chunk-JGP5BR6B.js.map similarity index 89% rename from .angular/cache/17.0.7/vite/deps/chunk-UMSNQQWJ.js.map rename to .angular/cache/17.0.7/vite/deps/chunk-JGP5BR6B.js.map index ea4764f..7061df0 100644 --- a/.angular/cache/17.0.7/vite/deps/chunk-UMSNQQWJ.js.map +++ b/.angular/cache/17.0.7/vite/deps/chunk-JGP5BR6B.js.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../../../../../node_modules/@angular/cdk/fesm2022/keycodes.mjs"], "sourcesContent": ["const MAC_ENTER = 3;\nconst BACKSPACE = 8;\nconst TAB = 9;\nconst NUM_CENTER = 12;\nconst ENTER = 13;\nconst SHIFT = 16;\nconst CONTROL = 17;\nconst ALT = 18;\nconst PAUSE = 19;\nconst CAPS_LOCK = 20;\nconst ESCAPE = 27;\nconst SPACE = 32;\nconst PAGE_UP = 33;\nconst PAGE_DOWN = 34;\nconst END = 35;\nconst HOME = 36;\nconst LEFT_ARROW = 37;\nconst UP_ARROW = 38;\nconst RIGHT_ARROW = 39;\nconst DOWN_ARROW = 40;\nconst PLUS_SIGN = 43;\nconst PRINT_SCREEN = 44;\nconst INSERT = 45;\nconst DELETE = 46;\nconst ZERO = 48;\nconst ONE = 49;\nconst TWO = 50;\nconst THREE = 51;\nconst FOUR = 52;\nconst FIVE = 53;\nconst SIX = 54;\nconst SEVEN = 55;\nconst EIGHT = 56;\nconst NINE = 57;\nconst FF_SEMICOLON = 59; // Firefox (Gecko) fires this for semicolon instead of 186\nconst FF_EQUALS = 61; // Firefox (Gecko) fires this for equals instead of 187\nconst QUESTION_MARK = 63;\nconst AT_SIGN = 64;\nconst A = 65;\nconst B = 66;\nconst C = 67;\nconst D = 68;\nconst E = 69;\nconst F = 70;\nconst G = 71;\nconst H = 72;\nconst I = 73;\nconst J = 74;\nconst K = 75;\nconst L = 76;\nconst M = 77;\nconst N = 78;\nconst O = 79;\nconst P = 80;\nconst Q = 81;\nconst R = 82;\nconst S = 83;\nconst T = 84;\nconst U = 85;\nconst V = 86;\nconst W = 87;\nconst X = 88;\nconst Y = 89;\nconst Z = 90;\nconst META = 91; // WIN_KEY_LEFT\nconst MAC_WK_CMD_LEFT = 91;\nconst MAC_WK_CMD_RIGHT = 93;\nconst CONTEXT_MENU = 93;\nconst NUMPAD_ZERO = 96;\nconst NUMPAD_ONE = 97;\nconst NUMPAD_TWO = 98;\nconst NUMPAD_THREE = 99;\nconst NUMPAD_FOUR = 100;\nconst NUMPAD_FIVE = 101;\nconst NUMPAD_SIX = 102;\nconst NUMPAD_SEVEN = 103;\nconst NUMPAD_EIGHT = 104;\nconst NUMPAD_NINE = 105;\nconst NUMPAD_MULTIPLY = 106;\nconst NUMPAD_PLUS = 107;\nconst NUMPAD_MINUS = 109;\nconst NUMPAD_PERIOD = 110;\nconst NUMPAD_DIVIDE = 111;\nconst F1 = 112;\nconst F2 = 113;\nconst F3 = 114;\nconst F4 = 115;\nconst F5 = 116;\nconst F6 = 117;\nconst F7 = 118;\nconst F8 = 119;\nconst F9 = 120;\nconst F10 = 121;\nconst F11 = 122;\nconst F12 = 123;\nconst NUM_LOCK = 144;\nconst SCROLL_LOCK = 145;\nconst FIRST_MEDIA = 166;\nconst FF_MINUS = 173;\nconst MUTE = 173; // Firefox (Gecko) fires 181 for MUTE\nconst VOLUME_DOWN = 174; // Firefox (Gecko) fires 182 for VOLUME_DOWN\nconst VOLUME_UP = 175; // Firefox (Gecko) fires 183 for VOLUME_UP\nconst FF_MUTE = 181;\nconst FF_VOLUME_DOWN = 182;\nconst LAST_MEDIA = 183;\nconst FF_VOLUME_UP = 183;\nconst SEMICOLON = 186; // Firefox (Gecko) fires 59 for SEMICOLON\nconst EQUALS = 187; // Firefox (Gecko) fires 61 for EQUALS\nconst COMMA = 188;\nconst DASH = 189; // Firefox (Gecko) fires 173 for DASH/MINUS\nconst PERIOD = 190;\nconst SLASH = 191;\nconst APOSTROPHE = 192;\nconst TILDE = 192;\nconst OPEN_SQUARE_BRACKET = 219;\nconst BACKSLASH = 220;\nconst CLOSE_SQUARE_BRACKET = 221;\nconst SINGLE_QUOTE = 222;\nconst MAC_META = 224;\n\n/**\n * Checks whether a modifier key is pressed.\n * @param event Event to be checked.\n */\nfunction hasModifierKey(event, ...modifiers) {\n if (modifiers.length) {\n return modifiers.some(modifier => event[modifier]);\n }\n return event.altKey || event.shiftKey || event.ctrlKey || event.metaKey;\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { A, ALT, APOSTROPHE, AT_SIGN, B, BACKSLASH, BACKSPACE, C, CAPS_LOCK, CLOSE_SQUARE_BRACKET, COMMA, CONTEXT_MENU, CONTROL, D, DASH, DELETE, DOWN_ARROW, E, EIGHT, END, ENTER, EQUALS, ESCAPE, F, F1, F10, F11, F12, F2, F3, F4, F5, F6, F7, F8, F9, FF_EQUALS, FF_MINUS, FF_MUTE, FF_SEMICOLON, FF_VOLUME_DOWN, FF_VOLUME_UP, FIRST_MEDIA, FIVE, FOUR, G, H, HOME, I, INSERT, J, K, L, LAST_MEDIA, LEFT_ARROW, M, MAC_ENTER, MAC_META, MAC_WK_CMD_LEFT, MAC_WK_CMD_RIGHT, META, MUTE, N, NINE, NUMPAD_DIVIDE, NUMPAD_EIGHT, NUMPAD_FIVE, NUMPAD_FOUR, NUMPAD_MINUS, NUMPAD_MULTIPLY, NUMPAD_NINE, NUMPAD_ONE, NUMPAD_PERIOD, NUMPAD_PLUS, NUMPAD_SEVEN, NUMPAD_SIX, NUMPAD_THREE, NUMPAD_TWO, NUMPAD_ZERO, NUM_CENTER, NUM_LOCK, O, ONE, OPEN_SQUARE_BRACKET, P, PAGE_DOWN, PAGE_UP, PAUSE, PERIOD, PLUS_SIGN, PRINT_SCREEN, Q, QUESTION_MARK, R, RIGHT_ARROW, S, SCROLL_LOCK, SEMICOLON, SEVEN, SHIFT, SINGLE_QUOTE, SIX, SLASH, SPACE, T, TAB, THREE, TILDE, TWO, U, UP_ARROW, V, VOLUME_DOWN, VOLUME_UP, W, X, Y, Z, ZERO, hasModifierKey };\n\n"], - "mappings": ";AAKA,IAAM,QAAQ;AACd,IAAM,UAAU;AAChB,IAAM,MAAM;AAGZ,IAAM,SAAS;AAMf,IAAM,aAAa;AACnB,IAAM,WAAW;AACjB,IAAM,cAAc;AACpB,IAAM,aAAa;AA6CnB,IAAM,OAAO;AAsDb,IAAM,WAAW;AAMjB,SAAS,eAAe,UAAU,WAAW;AACzC,MAAI,UAAU,QAAQ;AAClB,WAAO,UAAU,KAAK,cAAY,MAAM,QAAQ,CAAC;AAAA,EACrD;AACA,SAAO,MAAM,UAAU,MAAM,YAAY,MAAM,WAAW,MAAM;AACpE;", + "mappings": ";AAEA,IAAM,MAAM;AAEZ,IAAM,QAAQ;AACd,IAAM,QAAQ;AACd,IAAM,UAAU;AAChB,IAAM,MAAM;AAGZ,IAAM,SAAS;AACf,IAAM,QAAQ;AACd,IAAM,UAAU;AAChB,IAAM,YAAY;AAClB,IAAM,MAAM;AACZ,IAAM,OAAO;AACb,IAAM,aAAa;AACnB,IAAM,WAAW;AACjB,IAAM,cAAc;AACpB,IAAM,aAAa;AAKnB,IAAM,OAAO;AASb,IAAM,OAAO;AAKb,IAAM,IAAI;AAyBV,IAAM,IAAI;AACV,IAAM,OAAO;AAsDb,IAAM,WAAW;AAMjB,SAAS,eAAe,UAAU,WAAW;AACzC,MAAI,UAAU,QAAQ;AAClB,WAAO,UAAU,KAAK,cAAY,MAAM,QAAQ,CAAC;AAAA,EACrD;AACA,SAAO,MAAM,UAAU,MAAM,YAAY,MAAM,WAAW,MAAM;AACpE;", "names": [] } diff --git a/.angular/cache/17.0.7/vite/deps/chunk-BNCUYWOH.js b/.angular/cache/17.0.7/vite/deps/chunk-KI2JSLP6.js similarity index 92% rename from .angular/cache/17.0.7/vite/deps/chunk-BNCUYWOH.js rename to .angular/cache/17.0.7/vite/deps/chunk-KI2JSLP6.js index 2d5043a..248e6e8 100644 --- a/.angular/cache/17.0.7/vite/deps/chunk-BNCUYWOH.js +++ b/.angular/cache/17.0.7/vite/deps/chunk-KI2JSLP6.js @@ -31,6 +31,13 @@ function animate(timings, styles = null) { timings }; } +function group(steps, options = null) { + return { + type: 3, + steps, + options + }; +} function sequence(steps, options = null) { return { type: 2, @@ -53,6 +60,12 @@ function state(name, styles, options) { options }; } +function keyframes(steps) { + return { + type: 5, + steps + }; +} function transition(stateChangeExpr, steps, options = null) { return { type: 1, @@ -61,19 +74,39 @@ function transition(stateChangeExpr, steps, options = null) { options }; } -function query(selector, animation, options = null) { +function animation(steps, options = null) { + return { + type: 8, + animation: steps, + options + }; +} +function animateChild(options = null) { + return { + type: 9, + options + }; +} +function useAnimation(animation2, options = null) { + return { + type: 10, + animation: animation2, + options + }; +} +function query(selector, animation2, options = null) { return { type: 11, selector, - animation, + animation: animation2, options }; } -function stagger(timings, animation) { +function stagger(timings, animation2) { return { type: 12, timings, - animation + animation: animation2 }; } var _AnimationBuilder = class _AnimationBuilder { @@ -118,10 +151,10 @@ var _BrowserAnimationBuilder = class _BrowserAnimationBuilder extends AnimationB throw new RuntimeError(3600, (typeof ngDevMode === "undefined" || ngDevMode) && "Angular detected that the `AnimationBuilder` was injected, but animation support was not enabled. Please make sure that you enable animations in your application by calling `provideAnimations()` or `provideAnimationsAsync()` function."); } } - build(animation) { + build(animation2) { const id = this._nextAnimationId; this._nextAnimationId++; - const entry = Array.isArray(animation) ? sequence(animation) : animation; + const entry = Array.isArray(animation2) ? sequence(animation2) : animation2; issueAnimationCommand(this._renderer, null, id, "register", [entry]); return new BrowserAnimationFactory(id, this._renderer); } @@ -460,12 +493,20 @@ export { AUTO_STYLE, trigger, animate, + group, sequence, style, state, + keyframes, transition, + animation, + animateChild, + useAnimation, query, stagger, + AnimationBuilder, + AnimationFactory, + BrowserAnimationBuilder, NoopAnimationPlayer, AnimationGroupPlayer, ɵPRE_STYLE @@ -479,4 +520,4 @@ export { * License: MIT *) */ -//# sourceMappingURL=chunk-BNCUYWOH.js.map +//# sourceMappingURL=chunk-KI2JSLP6.js.map diff --git a/.angular/cache/17.0.7/vite/deps/chunk-BNCUYWOH.js.map b/.angular/cache/17.0.7/vite/deps/chunk-KI2JSLP6.js.map similarity index 83% rename from .angular/cache/17.0.7/vite/deps/chunk-BNCUYWOH.js.map rename to .angular/cache/17.0.7/vite/deps/chunk-KI2JSLP6.js.map index 571335a..8bbeff1 100644 --- a/.angular/cache/17.0.7/vite/deps/chunk-BNCUYWOH.js.map +++ b/.angular/cache/17.0.7/vite/deps/chunk-KI2JSLP6.js.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../../../../../node_modules/@angular/animations/fesm2022/animations.mjs"], "sourcesContent": ["/**\n * @license Angular v17.0.7\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { inject, Injectable, ANIMATION_MODULE_TYPE, ViewEncapsulation, ɵRuntimeError, Inject } from '@angular/core';\n\n/**\n * Specifies automatic styling.\n *\n * @publicApi\n */\nconst AUTO_STYLE = '*';\n/**\n * Creates a named animation trigger, containing a list of [`state()`](api/animations/state)\n * and `transition()` entries to be evaluated when the expression\n * bound to the trigger changes.\n *\n * @param name An identifying string.\n * @param definitions An animation definition object, containing an array of\n * [`state()`](api/animations/state) and `transition()` declarations.\n *\n * @return An object that encapsulates the trigger data.\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 * @Component({\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 * @Component({\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 * @Component({\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 */\nfunction trigger(name, definitions) {\n return {\n type: 7 /* AnimationMetadataType.Trigger */,\n name,\n definitions,\n options: {}\n };\n}\n/**\n * Defines an animation step that combines styling information with timing information.\n *\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 * @returns An object that encapsulates the animation step.\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 */\nfunction animate(timings, styles = null) {\n return {\n type: 4 /* AnimationMetadataType.Animate */,\n styles,\n timings\n };\n}\n/**\n * @description Defines a list of animation steps to be run in parallel.\n *\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 * @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 */\nfunction group(steps, options = null) {\n return {\n type: 3 /* AnimationMetadataType.Group */,\n steps,\n options\n };\n}\n/**\n * Defines a list of animation steps to be run sequentially, one by one.\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 * @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\n *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 **/\nfunction sequence(steps, options = null) {\n return {\n type: 2 /* AnimationMetadataType.Sequence */,\n steps,\n options\n };\n}\n/**\n * Declares a key/value object containing CSS properties/styles that\n * can then be used for an animation [`state`](api/animations/state), within an animation\n *`sequence`, or as styling data for calls to `animate()` and `keyframes()`.\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 * @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 an element to animate from\n * a height of 0 up to its full height:\n *\n * ```\n * style({ height: 0 }),\n * animate(\"1s\", style({ height: \"*\" }))\n * ```\n *\n * @publicApi\n **/\nfunction style(tokens) {\n return {\n type: 6 /* AnimationMetadataType.Style */,\n styles: tokens,\n offset: null\n };\n}\n/**\n * Declares an animation state within a trigger attached to an element.\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 * @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 **/\nfunction state(name, styles, options) {\n return {\n type: 0 /* AnimationMetadataType.State */,\n name,\n styles,\n options\n };\n}\n/**\n * Defines a set of animation styles, associating each style with an optional `offset` value.\n *\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 * @returns An object that encapsulates the keyframes data.\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\n * @publicApi\n */\nfunction keyframes(steps) {\n return {\n type: 5 /* AnimationMetadataType.Keyframes */,\n steps\n };\n}\n/**\n * Declares an animation transition which is played when a certain specified condition is met.\n *\n * @param stateChangeExpr A string with a specific format or a function that specifies when the\n * animation transition should occur (see [State Change Expression](#state-change-expression)).\n *\n * @param steps One or more animation objects that represent the animation's instructions.\n *\n * @param options An options object that can be used to specify a delay for the animation or provide\n * custom parameters for it.\n *\n * @returns An object that encapsulates the transition data.\n *\n * @usageNotes\n *\n * ### State Change Expression\n *\n * The State Change Expression instructs Angular when to run the transition's animations, it can\n *either be\n * - a string with a specific syntax\n * - or a function that compares the previous and current state (value of the expression bound to\n * the element's trigger) and returns `true` if the transition should occur or `false` otherwise\n *\n * The string format can be:\n * - `fromState => toState`, which indicates that the transition's animations should occur then the\n * expression bound to the trigger's element goes from `fromState` to `toState`\n *\n * _Example:_\n * ```typescript\n * transition('open => closed', animate('.5s ease-out', style({ height: 0 }) ))\n * ```\n *\n * - `fromState <=> toState`, which indicates that the transition's animations should occur then\n * the expression bound to the trigger's element goes from `fromState` to `toState` or vice versa\n *\n * _Example:_\n * ```typescript\n * transition('enabled <=> disabled', animate('1s cubic-bezier(0.8,0.3,0,1)'))\n * ```\n *\n * - `:enter`/`:leave`, which indicates that the transition's animations should occur when the\n * element enters or exists the DOM\n *\n * _Example:_\n * ```typescript\n * transition(':enter', [\n * style({ opacity: 0 }),\n * animate('500ms', style({ opacity: 1 }))\n * ])\n * ```\n *\n * - `:increment`/`:decrement`, which indicates that the transition's animations should occur when\n * the numerical expression bound to the trigger's element has increased in value or decreased\n *\n * _Example:_\n * ```typescript\n * transition(':increment', query('@counter', animateChild()))\n * ```\n *\n * - a sequence of any of the above divided by commas, which indicates that transition's animations\n * should occur whenever one of the state change expressions matches\n *\n * _Example:_\n * ```typescript\n * transition(':increment, * => enabled, :enter', animate('1s ease', keyframes([\n * style({ transform: 'scale(1)', offset: 0}),\n * style({ transform: 'scale(1.1)', offset: 0.7}),\n * style({ transform: 'scale(1)', offset: 1})\n * ]))),\n * ```\n *\n * Also note that in such context:\n * - `void` can be used to indicate the absence of the element\n * - asterisks can be used as wildcards that match any state\n * - (as a consequence of the above, `void => *` is equivalent to `:enter` and `* => void` is\n * equivalent to `:leave`)\n * - `true` and `false` also match expression values of `1` and `0` respectively (but do not match\n * _truthy_ and _falsy_ values)\n *\n *
\n *\n * Be careful about entering end leaving elements as their transitions present a common\n * pitfall for developers.\n *\n * Note that when an element with a trigger enters the DOM its `:enter` transition always\n * gets executed, but its `:leave` transition will not be executed if the element is removed\n * alongside its parent (as it will be removed \"without warning\" before its transition has\n * a chance to be executed, the only way that such transition can occur is if the element\n * is exiting the DOM on its own).\n *\n *\n *
\n *\n * ### Animating to a 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, in such case Angular automatically adds or removes\n * CSS styles to ensure that the element is in the correct final state.\n *\n *\n * ### Usage Examples\n *\n * - Transition animations applied based on\n * the trigger's expression value\n *\n * ```HTML\n *
\n * ...\n *
\n * ```\n *\n * ```typescript\n * trigger(\"myAnimationTrigger\", [\n * ..., // states\n * transition(\"on => off, open => closed\", animate(500)),\n * transition(\"* <=> error\", query('.indicator', animateChild()))\n * ])\n * ```\n *\n * - Transition animations applied based on custom logic dependent\n * on the trigger's expression value and provided parameters\n *\n * ```HTML\n *
\n * ...\n *
\n * ```\n *\n * ```typescript\n * trigger(\"myAnimationTrigger\", [\n * ..., // states\n * transition(\n * (fromState, toState, _element, params) =>\n * ['firststep', 'laststep'].includes(fromState.toLowerCase())\n * && toState === params?.['target'],\n * animate('1s')\n * )\n * ])\n * ```\n *\n * @publicApi\n **/\nfunction transition(stateChangeExpr, steps, options = null) {\n return {\n type: 1 /* AnimationMetadataType.Transition */,\n expr: stateChangeExpr,\n animation: steps,\n options\n };\n}\n/**\n * Produces a reusable animation that can be invoked in another animation or sequence,\n * by calling the `useAnimation()` function.\n *\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 * @returns An object that encapsulates the animation data.\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 */\nfunction animation(steps, options = null) {\n return {\n type: 8 /* AnimationMetadataType.Reference */,\n animation: steps,\n options\n };\n}\n/**\n * Executes a queried inner animation element within an animation sequence.\n *\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 * @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 */\nfunction animateChild(options = null) {\n return {\n type: 9 /* AnimationMetadataType.AnimateChild */,\n options\n };\n}\n/**\n * Starts a reusable animation that is created using the `animation()` function.\n *\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 * @publicApi\n */\nfunction useAnimation(animation, options = null) {\n return {\n type: 10 /* AnimationMetadataType.AnimateRef */,\n animation,\n options\n };\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 * @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 (not\n * all elements can be queried via these tokens, see\n * [Entering and Leaving Elements](#entering-and-leaving-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 * @usageNotes\n *\n * ### Multiple Tokens\n *\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 * ### Entering and Leaving Elements\n *\n * Not all elements can be queried via the `:enter` and `:leave` tokens, the only ones\n * that can are those that Angular assumes can enter/leave based on their own logic\n * (if their insertion/removal is simply a consequence of that of their parent they\n * should be queried via a different token in their parent's `:enter`/`:leave` transitions).\n *\n * The only elements Angular assumes can enter/leave based on their own logic (thus the only\n * ones that can be queried via the `:enter` and `:leave` tokens) are:\n * - Those inserted dynamically (via `ViewContainerRef`)\n * - Those that have a structural directive (which, under the hood, are a subset of the above ones)\n *\n *
\n *\n * Note that elements will be successfully queried via `:enter`/`:leave` even if their\n * insertion/removal is not done manually via `ViewContainerRef`or caused by their structural\n * directive (e.g. they enter/exit alongside their parent).\n *\n *
\n *\n *
\n *\n * There is an exception to what previously mentioned, besides elements entering/leaving based on\n * their own logic, elements with an animation trigger can always be queried via `:leave` when\n * their parent is also leaving.\n *\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 */\nfunction query(selector, animation, options = null) {\n return {\n type: 11 /* AnimationMetadataType.Query */,\n selector,\n animation,\n options\n };\n}\n/**\n * Use within an animation `query()` call to issue a timing gap after\n * each queried item is animated.\n *\n * @param timings A delay value.\n * @param animation One ore more animation steps.\n * @returns An object that encapsulates the stagger data.\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 */\nfunction stagger(timings, animation) {\n return {\n type: 12 /* AnimationMetadataType.Stagger */,\n timings,\n animation\n };\n}\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 [AnimationBuilder.build](api/animations/AnimationBuilder#build)() method\n * to create a programmatic animation. 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 */\nclass AnimationBuilder {\n static {\n this.ɵfac = function AnimationBuilder_Factory(t) {\n return new (t || AnimationBuilder)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: AnimationBuilder,\n factory: () => (() => inject(BrowserAnimationBuilder))(),\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(AnimationBuilder, [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: () => inject(BrowserAnimationBuilder)\n }]\n }], null, null);\n})();\n/**\n * A factory object returned from the\n * [AnimationBuilder.build](api/animations/AnimationBuilder#build)()\n * method.\n *\n * @publicApi\n */\nclass AnimationFactory {}\nclass BrowserAnimationBuilder extends AnimationBuilder {\n constructor(rootRenderer, doc) {\n super();\n this.animationModuleType = inject(ANIMATION_MODULE_TYPE, {\n optional: true\n });\n this._nextAnimationId = 0;\n const typeData = {\n id: '0',\n encapsulation: ViewEncapsulation.None,\n styles: [],\n data: {\n animation: []\n }\n };\n this._renderer = rootRenderer.createRenderer(doc.body, typeData);\n if (this.animationModuleType === null && !isAnimationRenderer(this._renderer)) {\n // We only support AnimationRenderer & DynamicDelegationRenderer for this AnimationBuilder\n throw new ɵRuntimeError(3600 /* RuntimeErrorCode.BROWSER_ANIMATION_BUILDER_INJECTED_WITHOUT_ANIMATIONS */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Angular detected that the `AnimationBuilder` was injected, but animation support was not enabled. ' + 'Please make sure that you enable animations in your application by calling `provideAnimations()` or `provideAnimationsAsync()` function.');\n }\n }\n build(animation) {\n const id = this._nextAnimationId;\n this._nextAnimationId++;\n const entry = Array.isArray(animation) ? sequence(animation) : animation;\n issueAnimationCommand(this._renderer, null, id, 'register', [entry]);\n return new BrowserAnimationFactory(id, this._renderer);\n }\n static {\n this.ɵfac = function BrowserAnimationBuilder_Factory(t) {\n return new (t || BrowserAnimationBuilder)(i0.ɵɵinject(i0.RendererFactory2), i0.ɵɵinject(DOCUMENT));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: BrowserAnimationBuilder,\n factory: BrowserAnimationBuilder.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(BrowserAnimationBuilder, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: i0.RendererFactory2\n }, {\n type: Document,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }], null);\n})();\nclass BrowserAnimationFactory extends AnimationFactory {\n constructor(_id, _renderer) {\n super();\n this._id = _id;\n this._renderer = _renderer;\n }\n create(element, options) {\n return new RendererAnimationPlayer(this._id, element, options || {}, this._renderer);\n }\n}\nclass RendererAnimationPlayer {\n constructor(id, element, options, _renderer) {\n this.id = id;\n this.element = element;\n this._renderer = _renderer;\n this.parentPlayer = null;\n this._started = false;\n this.totalTime = 0;\n this._command('create', options);\n }\n _listen(eventName, callback) {\n return this._renderer.listen(this.element, `@@${this.id}:${eventName}`, callback);\n }\n _command(command, ...args) {\n issueAnimationCommand(this._renderer, this.element, this.id, command, args);\n }\n onDone(fn) {\n this._listen('done', fn);\n }\n onStart(fn) {\n this._listen('start', fn);\n }\n onDestroy(fn) {\n this._listen('destroy', fn);\n }\n init() {\n this._command('init');\n }\n hasStarted() {\n return this._started;\n }\n play() {\n this._command('play');\n this._started = true;\n }\n pause() {\n this._command('pause');\n }\n restart() {\n this._command('restart');\n }\n finish() {\n this._command('finish');\n }\n destroy() {\n this._command('destroy');\n }\n reset() {\n this._command('reset');\n this._started = false;\n }\n setPosition(p) {\n this._command('setPosition', p);\n }\n getPosition() {\n return unwrapAnimationRenderer(this._renderer)?.engine?.players[this.id]?.getPosition() ?? 0;\n }\n}\nfunction issueAnimationCommand(renderer, element, id, command, args) {\n renderer.setProperty(element, `@@${id}:${command}`, args);\n}\n/**\n * The following 2 methods cannot reference their correct types (AnimationRenderer &\n * DynamicDelegationRenderer) since this would introduce a import cycle.\n */\nfunction unwrapAnimationRenderer(renderer) {\n const type = renderer.ɵtype;\n if (type === 0 /* AnimationRendererType.Regular */) {\n return renderer;\n } else if (type === 1 /* AnimationRendererType.Delegated */) {\n return renderer.animationRenderer;\n }\n return null;\n}\nfunction isAnimationRenderer(renderer) {\n const type = renderer.ɵtype;\n return type === 0 /* AnimationRendererType.Regular */ || type === 1 /* AnimationRendererType.Delegated */;\n}\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 {@link animate}\n * @see {@link AnimationPlayer}\n * @see {@link ɵAnimationGroupPlayer AnimationGroupPlayer}\n *\n * @publicApi\n */\nclass NoopAnimationPlayer {\n constructor(duration = 0, delay = 0) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._originalOnDoneFns = [];\n this._originalOnStartFns = [];\n this._started = false;\n this._destroyed = false;\n this._finished = false;\n this._position = 0;\n this.parentPlayer = null;\n this.totalTime = duration + delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n onStart(fn) {\n this._originalOnStartFns.push(fn);\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._originalOnDoneFns.push(fn);\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n init() {}\n play() {\n if (!this.hasStarted()) {\n this._onStart();\n this.triggerMicrotask();\n }\n this._started = true;\n }\n /** @internal */\n triggerMicrotask() {\n queueMicrotask(() => this._onFinish());\n }\n _onStart() {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n pause() {}\n restart() {}\n finish() {\n this._onFinish();\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(fn => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this._started = false;\n this._finished = false;\n this._onStartFns = this._originalOnStartFns;\n this._onDoneFns = this._originalOnDoneFns;\n }\n setPosition(position) {\n this._position = this.totalTime ? position * this.totalTime : 1;\n }\n getPosition() {\n return this.totalTime ? this._position / this.totalTime : 1;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\n/**\n * A programmatic controller for a group of reusable animations.\n * Used internally to control animations.\n *\n * @see {@link AnimationPlayer}\n * @see {@link animations/group group}\n *\n */\nclass AnimationGroupPlayer {\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 let doneCount = 0;\n let destroyCount = 0;\n let startCount = 0;\n const total = this.players.length;\n if (total == 0) {\n queueMicrotask(() => this._onFinish());\n } else {\n this.players.forEach(player => {\n player.onDone(() => {\n if (++doneCount == total) {\n this._onFinish();\n }\n });\n player.onDestroy(() => {\n if (++destroyCount == total) {\n this._onDestroy();\n }\n });\n player.onStart(() => {\n if (++startCount == total) {\n this._onStart();\n }\n });\n });\n }\n this.totalTime = this.players.reduce((time, player) => Math.max(time, player.totalTime), 0);\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this.players.forEach(player => player.init());\n }\n onStart(fn) {\n this._onStartFns.push(fn);\n }\n _onStart() {\n if (!this.hasStarted()) {\n this._started = true;\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n }\n onDone(fn) {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n play() {\n if (!this.parentPlayer) {\n this.init();\n }\n this._onStart();\n this.players.forEach(player => player.play());\n }\n pause() {\n this.players.forEach(player => player.pause());\n }\n restart() {\n this.players.forEach(player => player.restart());\n }\n finish() {\n this._onFinish();\n this.players.forEach(player => player.finish());\n }\n destroy() {\n this._onDestroy();\n }\n _onDestroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._onFinish();\n this.players.forEach(player => player.destroy());\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this.players.forEach(player => player.reset());\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n }\n setPosition(p) {\n const timeAtPosition = p * this.totalTime;\n this.players.forEach(player => {\n const position = player.totalTime ? Math.min(1, timeAtPosition / player.totalTime) : 1;\n player.setPosition(position);\n });\n }\n getPosition() {\n const longestPlayer = this.players.reduce((longestSoFar, player) => {\n const newPlayerIsLongest = longestSoFar === null || player.totalTime > longestSoFar.totalTime;\n return newPlayerIsLongest ? player : longestSoFar;\n }, null);\n return longestPlayer != null ? longestPlayer.getPosition() : 0;\n }\n beforeDestroy() {\n this.players.forEach(player => {\n if (player.beforeDestroy) {\n player.beforeDestroy();\n }\n });\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\nconst ɵPRE_STYLE = '!';\n\n/**\n * @module\n * @description\n * Entry point for all animation APIs of the animation package.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n\n// This file is not used to build this module. It is only used during editing\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, BrowserAnimationBuilder as ɵBrowserAnimationBuilder, ɵPRE_STYLE };\n"], - "mappings": "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", - "names": [] + "mappings": "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", + "names": ["animation"] } diff --git a/.angular/cache/17.0.7/vite/deps/chunk-KMGBCF4T.js b/.angular/cache/17.0.7/vite/deps/chunk-KMGBCF4T.js new file mode 100644 index 0000000..47fc483 --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/chunk-KMGBCF4T.js @@ -0,0 +1,760 @@ +import { + NzIconDirective, + NzIconModule +} from "./chunk-VWMHIMW7.js"; +import { + NzConfigService, + WithConfig +} from "./chunk-ZHMJ6SNN.js"; +import { + Directionality +} from "./chunk-6NZ2BEBG.js"; +import { + Platform +} from "./chunk-IAC53GOD.js"; +import { + InputBoolean +} from "./chunk-M5GY4FCO.js"; +import { + NgIf +} from "./chunk-OSQBUYO6.js"; +import { + ANIMATION_MODULE_TYPE, + CSP_NONCE, + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + ContentChild, + Directive, + ElementRef, + Inject, + InjectionToken, + Input, + NgModule, + NgZone, + Optional, + PLATFORM_ID, + Renderer2, + Subject, + ViewEncapsulation$1, + __decorate, + filter, + fromEvent, + makeEnvironmentProviders, + setClassMetadata, + startWith, + takeUntil, + ɵɵNgOnChangesFeature, + ɵɵStandaloneFeature, + ɵɵattribute, + ɵɵclassProp, + ɵɵcontentQuery, + ɵɵdefineComponent, + ɵɵdefineDirective, + ɵɵdefineInjector, + ɵɵdefineNgModule, + ɵɵdirectiveInject, + ɵɵelement, + ɵɵloadQuery, + ɵɵprojection, + ɵɵprojectionDef, + ɵɵproperty, + ɵɵqueryRefresh, + ɵɵtemplate +} from "./chunk-FGESKT7O.js"; + +// node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-transition-patch.mjs +var _NzTransitionPatchDirective = class _NzTransitionPatchDirective { + setHiddenAttribute() { + if (this.hidden) { + if (typeof this.hidden === "string") { + this.renderer.setAttribute(this.elementRef.nativeElement, "hidden", this.hidden); + } else { + this.renderer.setAttribute(this.elementRef.nativeElement, "hidden", ""); + } + } else { + this.renderer.removeAttribute(this.elementRef.nativeElement, "hidden"); + } + } + constructor(elementRef, renderer) { + this.elementRef = elementRef; + this.renderer = renderer; + this.hidden = null; + this.renderer.setAttribute(this.elementRef.nativeElement, "hidden", ""); + } + ngOnChanges() { + this.setHiddenAttribute(); + } + ngAfterViewInit() { + this.setHiddenAttribute(); + } +}; +_NzTransitionPatchDirective.ɵfac = function NzTransitionPatchDirective_Factory(t) { + return new (t || _NzTransitionPatchDirective)(ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(Renderer2)); +}; +_NzTransitionPatchDirective.ɵdir = ɵɵdefineDirective({ + type: _NzTransitionPatchDirective, + selectors: [["", "nz-button", ""], ["nz-button-group"], ["", "nz-icon", ""], ["", "nz-menu-item", ""], ["", "nz-submenu", ""], ["nz-select-top-control"], ["nz-select-placeholder"], ["nz-input-group"]], + inputs: { + hidden: "hidden" + }, + standalone: true, + features: [ɵɵNgOnChangesFeature] +}); +var NzTransitionPatchDirective = _NzTransitionPatchDirective; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzTransitionPatchDirective, [{ + type: Directive, + args: [{ + selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", + standalone: true + }] + }], () => [{ + type: ElementRef + }, { + type: Renderer2 + }], { + hidden: [{ + type: Input + }] + }); +})(); +var _NzTransitionPatchModule = class _NzTransitionPatchModule { +}; +_NzTransitionPatchModule.ɵfac = function NzTransitionPatchModule_Factory(t) { + return new (t || _NzTransitionPatchModule)(); +}; +_NzTransitionPatchModule.ɵmod = ɵɵdefineNgModule({ + type: _NzTransitionPatchModule, + imports: [NzTransitionPatchDirective], + exports: [NzTransitionPatchDirective] +}); +_NzTransitionPatchModule.ɵinj = ɵɵdefineInjector({}); +var NzTransitionPatchModule = _NzTransitionPatchModule; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzTransitionPatchModule, [{ + type: NgModule, + args: [{ + imports: [NzTransitionPatchDirective], + exports: [NzTransitionPatchDirective] + }] + }], null, null); +})(); + +// node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-wave.mjs +var NzWaveRenderer = class { + get waveAttributeName() { + return this.insertExtraNode ? "ant-click-animating" : "ant-click-animating-without-extra-node"; + } + constructor(triggerElement, ngZone, insertExtraNode, platformId, cspNonce) { + this.triggerElement = triggerElement; + this.ngZone = ngZone; + this.insertExtraNode = insertExtraNode; + this.platformId = platformId; + this.cspNonce = cspNonce; + this.waveTransitionDuration = 400; + this.styleForPseudo = null; + this.extraNode = null; + this.lastTime = 0; + this.onClick = (event) => { + if (!this.triggerElement || !this.triggerElement.getAttribute || this.triggerElement.getAttribute("disabled") || event.target.tagName === "INPUT" || this.triggerElement.className.indexOf("disabled") >= 0) { + return; + } + this.fadeOutWave(); + }; + this.platform = new Platform(this.platformId); + this.clickHandler = this.onClick.bind(this); + this.bindTriggerEvent(); + } + bindTriggerEvent() { + if (this.platform.isBrowser) { + this.ngZone.runOutsideAngular(() => { + this.removeTriggerEvent(); + if (this.triggerElement) { + this.triggerElement.addEventListener("click", this.clickHandler, true); + } + }); + } + } + removeTriggerEvent() { + if (this.triggerElement) { + this.triggerElement.removeEventListener("click", this.clickHandler, true); + } + } + removeStyleAndExtraNode() { + if (this.styleForPseudo && document.body.contains(this.styleForPseudo)) { + document.body.removeChild(this.styleForPseudo); + this.styleForPseudo = null; + } + if (this.insertExtraNode && this.triggerElement.contains(this.extraNode)) { + this.triggerElement.removeChild(this.extraNode); + } + } + destroy() { + this.removeTriggerEvent(); + this.removeStyleAndExtraNode(); + } + fadeOutWave() { + const node = this.triggerElement; + const waveColor = this.getWaveColor(node); + node.setAttribute(this.waveAttributeName, "true"); + if (Date.now() < this.lastTime + this.waveTransitionDuration) { + return; + } + if (this.isValidColor(waveColor)) { + if (!this.styleForPseudo) { + this.styleForPseudo = document.createElement("style"); + if (this.cspNonce) { + this.styleForPseudo.nonce = this.cspNonce; + } + } + this.styleForPseudo.innerHTML = ` + [ant-click-animating-without-extra-node='true']::after, .ant-click-animating-node { + --antd-wave-shadow-color: ${waveColor}; + }`; + document.body.appendChild(this.styleForPseudo); + } + if (this.insertExtraNode) { + if (!this.extraNode) { + this.extraNode = document.createElement("div"); + } + this.extraNode.className = "ant-click-animating-node"; + node.appendChild(this.extraNode); + } + this.lastTime = Date.now(); + this.runTimeoutOutsideZone(() => { + node.removeAttribute(this.waveAttributeName); + this.removeStyleAndExtraNode(); + }, this.waveTransitionDuration); + } + isValidColor(color) { + return !!color && color !== "#ffffff" && color !== "rgb(255, 255, 255)" && this.isNotGrey(color) && !/rgba\(\d*, \d*, \d*, 0\)/.test(color) && color !== "transparent"; + } + isNotGrey(color) { + const match = color.match(/rgba?\((\d*), (\d*), (\d*)(, [\.\d]*)?\)/); + if (match && match[1] && match[2] && match[3]) { + return !(match[1] === match[2] && match[2] === match[3]); + } + return true; + } + getWaveColor(node) { + const nodeStyle = getComputedStyle(node); + return nodeStyle.getPropertyValue("border-top-color") || // Firefox Compatible + nodeStyle.getPropertyValue("border-color") || nodeStyle.getPropertyValue("background-color"); + } + runTimeoutOutsideZone(fn, delay) { + this.ngZone.runOutsideAngular(() => setTimeout(fn, delay)); + } +}; +var NZ_WAVE_GLOBAL_DEFAULT_CONFIG = { + disabled: false +}; +var NZ_WAVE_GLOBAL_CONFIG = new InjectionToken("nz-wave-global-options"); +function provideNzWave(config) { + return makeEnvironmentProviders([{ + provide: NZ_WAVE_GLOBAL_CONFIG, + useValue: config + }]); +} +var _NzWaveDirective = class _NzWaveDirective { + get disabled() { + return this.waveDisabled; + } + get rendererRef() { + return this.waveRenderer; + } + constructor(ngZone, elementRef, config, animationType, platformId, cspNonce) { + this.ngZone = ngZone; + this.elementRef = elementRef; + this.config = config; + this.animationType = animationType; + this.platformId = platformId; + this.cspNonce = cspNonce; + this.nzWaveExtraNode = false; + this.waveDisabled = false; + this.waveDisabled = this.isConfigDisabled(); + } + isConfigDisabled() { + let disabled = false; + if (this.config && typeof this.config.disabled === "boolean") { + disabled = this.config.disabled; + } + if (this.animationType === "NoopAnimations") { + disabled = true; + } + return disabled; + } + ngOnDestroy() { + if (this.waveRenderer) { + this.waveRenderer.destroy(); + } + } + ngOnInit() { + this.renderWaveIfEnabled(); + } + renderWaveIfEnabled() { + if (!this.waveDisabled && this.elementRef.nativeElement) { + this.waveRenderer = new NzWaveRenderer(this.elementRef.nativeElement, this.ngZone, this.nzWaveExtraNode, this.platformId, this.cspNonce); + } + } + disable() { + this.waveDisabled = true; + if (this.waveRenderer) { + this.waveRenderer.removeTriggerEvent(); + this.waveRenderer.removeStyleAndExtraNode(); + } + } + enable() { + this.waveDisabled = this.isConfigDisabled() || false; + if (this.waveRenderer) { + this.waveRenderer.bindTriggerEvent(); + } + } +}; +_NzWaveDirective.ɵfac = function NzWaveDirective_Factory(t) { + return new (t || _NzWaveDirective)(ɵɵdirectiveInject(NgZone), ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(NZ_WAVE_GLOBAL_CONFIG, 8), ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8), ɵɵdirectiveInject(PLATFORM_ID), ɵɵdirectiveInject(CSP_NONCE, 8)); +}; +_NzWaveDirective.ɵdir = ɵɵdefineDirective({ + type: _NzWaveDirective, + selectors: [["", "nz-wave", ""], ["button", "nz-button", "", 3, "nzType", "link", 3, "nzType", "text"]], + inputs: { + nzWaveExtraNode: "nzWaveExtraNode" + }, + exportAs: ["nzWave"], + standalone: true +}); +var NzWaveDirective = _NzWaveDirective; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzWaveDirective, [{ + type: Directive, + args: [{ + selector: '[nz-wave],button[nz-button]:not([nzType="link"]):not([nzType="text"])', + exportAs: "nzWave", + standalone: true + }] + }], () => [{ + type: NgZone + }, { + type: ElementRef + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Inject, + args: [NZ_WAVE_GLOBAL_CONFIG] + }] + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Inject, + args: [ANIMATION_MODULE_TYPE] + }] + }, { + type: void 0, + decorators: [{ + type: Inject, + args: [PLATFORM_ID] + }] + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Inject, + args: [CSP_NONCE] + }] + }], { + nzWaveExtraNode: [{ + type: Input + }] + }); +})(); +var _NzWaveModule = class _NzWaveModule { +}; +_NzWaveModule.ɵfac = function NzWaveModule_Factory(t) { + return new (t || _NzWaveModule)(); +}; +_NzWaveModule.ɵmod = ɵɵdefineNgModule({ + type: _NzWaveModule, + imports: [NzWaveDirective], + exports: [NzWaveDirective] +}); +_NzWaveModule.ɵinj = ɵɵdefineInjector({ + providers: [provideNzWave(NZ_WAVE_GLOBAL_DEFAULT_CONFIG)] +}); +var NzWaveModule = _NzWaveModule; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzWaveModule, [{ + type: NgModule, + args: [{ + imports: [NzWaveDirective], + exports: [NzWaveDirective], + providers: [provideNzWave(NZ_WAVE_GLOBAL_DEFAULT_CONFIG)] + }] + }], null, null); +})(); + +// node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-button.mjs +var _c0 = ["nz-button", ""]; +function NzButtonComponent_span_0_Template(rf, ctx) { + if (rf & 1) { + ɵɵelement(0, "span", 1); + } +} +var _c1 = ["*"]; +var NZ_CONFIG_MODULE_NAME = "button"; +var _NzButtonComponent = class _NzButtonComponent { + insertSpan(nodes, renderer) { + nodes.forEach((node) => { + if (node.nodeName === "#text") { + const span = renderer.createElement("span"); + const parent = renderer.parentNode(node); + renderer.insertBefore(parent, span, node); + renderer.appendChild(span, node); + } + }); + } + get iconOnly() { + const listOfNode = Array.from(this.elementRef?.nativeElement?.childNodes || []); + const noText = listOfNode.every((node) => node.nodeName !== "#text"); + const noSpan = listOfNode.filter((node) => { + return !(node.nodeName === "#comment" || !!node?.attributes?.getNamedItem("nz-icon")); + }).length == 0; + const isIconOnly = !!this.nzIconDirectiveElement && noSpan && noText; + return isIconOnly; + } + constructor(ngZone, elementRef, cdr, renderer, nzConfigService, directionality) { + this.ngZone = ngZone; + this.elementRef = elementRef; + this.cdr = cdr; + this.renderer = renderer; + this.nzConfigService = nzConfigService; + this.directionality = directionality; + this._nzModuleName = NZ_CONFIG_MODULE_NAME; + this.nzBlock = false; + this.nzGhost = false; + this.nzSearch = false; + this.nzLoading = false; + this.nzDanger = false; + this.disabled = false; + this.tabIndex = null; + this.nzType = null; + this.nzShape = null; + this.nzSize = "default"; + this.dir = "ltr"; + this.destroy$ = new Subject(); + this.loading$ = new Subject(); + this.nzConfigService.getConfigChangeEventForComponent(NZ_CONFIG_MODULE_NAME).pipe(takeUntil(this.destroy$)).subscribe(() => { + this.cdr.markForCheck(); + }); + } + ngOnInit() { + this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction) => { + this.dir = direction; + this.cdr.detectChanges(); + }); + this.dir = this.directionality.value; + this.ngZone.runOutsideAngular(() => { + fromEvent(this.elementRef.nativeElement, "click", { + capture: true + }).pipe(takeUntil(this.destroy$)).subscribe((event) => { + if (this.disabled && event.target?.tagName === "A" || this.nzLoading) { + event.preventDefault(); + event.stopImmediatePropagation(); + } + }); + }); + } + ngOnChanges(changes) { + const { + nzLoading + } = changes; + if (nzLoading) { + this.loading$.next(this.nzLoading); + } + } + ngAfterViewInit() { + this.insertSpan(this.elementRef.nativeElement.childNodes, this.renderer); + } + ngAfterContentInit() { + this.loading$.pipe(startWith(this.nzLoading), filter(() => !!this.nzIconDirectiveElement), takeUntil(this.destroy$)).subscribe((loading) => { + const nativeElement = this.nzIconDirectiveElement.nativeElement; + if (loading) { + this.renderer.setStyle(nativeElement, "display", "none"); + } else { + this.renderer.removeStyle(nativeElement, "display"); + } + }); + } + ngOnDestroy() { + this.destroy$.next(); + this.destroy$.complete(); + } +}; +_NzButtonComponent.ɵfac = function NzButtonComponent_Factory(t) { + return new (t || _NzButtonComponent)(ɵɵdirectiveInject(NgZone), ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(ChangeDetectorRef), ɵɵdirectiveInject(Renderer2), ɵɵdirectiveInject(NzConfigService), ɵɵdirectiveInject(Directionality, 8)); +}; +_NzButtonComponent.ɵcmp = ɵɵdefineComponent({ + type: _NzButtonComponent, + selectors: [["button", "nz-button", ""], ["a", "nz-button", ""]], + contentQueries: function NzButtonComponent_ContentQueries(rf, ctx, dirIndex) { + if (rf & 1) { + ɵɵcontentQuery(dirIndex, NzIconDirective, 5, ElementRef); + } + if (rf & 2) { + let _t; + ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.nzIconDirectiveElement = _t.first); + } + }, + hostAttrs: [1, "ant-btn"], + hostVars: 32, + hostBindings: function NzButtonComponent_HostBindings(rf, ctx) { + if (rf & 2) { + ɵɵattribute("tabindex", ctx.disabled ? -1 : ctx.tabIndex === null ? null : ctx.tabIndex)("disabled", ctx.disabled || null); + ɵɵclassProp("ant-btn-primary", ctx.nzType === "primary")("ant-btn-dashed", ctx.nzType === "dashed")("ant-btn-link", ctx.nzType === "link")("ant-btn-text", ctx.nzType === "text")("ant-btn-circle", ctx.nzShape === "circle")("ant-btn-round", ctx.nzShape === "round")("ant-btn-lg", ctx.nzSize === "large")("ant-btn-sm", ctx.nzSize === "small")("ant-btn-dangerous", ctx.nzDanger)("ant-btn-loading", ctx.nzLoading)("ant-btn-background-ghost", ctx.nzGhost)("ant-btn-block", ctx.nzBlock)("ant-input-search-button", ctx.nzSearch)("ant-btn-rtl", ctx.dir === "rtl")("ant-btn-icon-only", ctx.iconOnly); + } + }, + inputs: { + nzBlock: "nzBlock", + nzGhost: "nzGhost", + nzSearch: "nzSearch", + nzLoading: "nzLoading", + nzDanger: "nzDanger", + disabled: "disabled", + tabIndex: "tabIndex", + nzType: "nzType", + nzShape: "nzShape", + nzSize: "nzSize" + }, + exportAs: ["nzButton"], + standalone: true, + features: [ɵɵNgOnChangesFeature, ɵɵStandaloneFeature], + attrs: _c0, + ngContentSelectors: _c1, + decls: 2, + vars: 1, + consts: [["nz-icon", "", "nzType", "loading", 4, "ngIf"], ["nz-icon", "", "nzType", "loading"]], + template: function NzButtonComponent_Template(rf, ctx) { + if (rf & 1) { + ɵɵprojectionDef(); + ɵɵtemplate(0, NzButtonComponent_span_0_Template, 1, 0, "span", 0); + ɵɵprojection(1); + } + if (rf & 2) { + ɵɵproperty("ngIf", ctx.nzLoading); + } + }, + dependencies: [NzIconModule, NzIconDirective, NgIf], + encapsulation: 2, + changeDetection: 0 +}); +var NzButtonComponent = _NzButtonComponent; +__decorate([InputBoolean()], NzButtonComponent.prototype, "nzBlock", void 0); +__decorate([InputBoolean()], NzButtonComponent.prototype, "nzGhost", void 0); +__decorate([InputBoolean()], NzButtonComponent.prototype, "nzSearch", void 0); +__decorate([InputBoolean()], NzButtonComponent.prototype, "nzLoading", void 0); +__decorate([InputBoolean()], NzButtonComponent.prototype, "nzDanger", void 0); +__decorate([InputBoolean()], NzButtonComponent.prototype, "disabled", void 0); +__decorate([WithConfig()], NzButtonComponent.prototype, "nzSize", void 0); +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzButtonComponent, [{ + type: Component, + args: [{ + selector: "button[nz-button], a[nz-button]", + exportAs: "nzButton", + preserveWhitespaces: false, + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation$1.None, + template: ` + + + `, + host: { + class: "ant-btn", + "[class.ant-btn-primary]": `nzType === 'primary'`, + "[class.ant-btn-dashed]": `nzType === 'dashed'`, + "[class.ant-btn-link]": `nzType === 'link'`, + "[class.ant-btn-text]": `nzType === 'text'`, + "[class.ant-btn-circle]": `nzShape === 'circle'`, + "[class.ant-btn-round]": `nzShape === 'round'`, + "[class.ant-btn-lg]": `nzSize === 'large'`, + "[class.ant-btn-sm]": `nzSize === 'small'`, + "[class.ant-btn-dangerous]": `nzDanger`, + "[class.ant-btn-loading]": `nzLoading`, + "[class.ant-btn-background-ghost]": `nzGhost`, + "[class.ant-btn-block]": `nzBlock`, + "[class.ant-input-search-button]": `nzSearch`, + "[class.ant-btn-rtl]": `dir === 'rtl'`, + "[class.ant-btn-icon-only]": `iconOnly`, + "[attr.tabindex]": "disabled ? -1 : (tabIndex === null ? null : tabIndex)", + "[attr.disabled]": "disabled || null" + }, + imports: [NzIconModule, NgIf], + standalone: true + }] + }], () => [{ + type: NgZone + }, { + type: ElementRef + }, { + type: ChangeDetectorRef + }, { + type: Renderer2 + }, { + type: NzConfigService + }, { + type: Directionality, + decorators: [{ + type: Optional + }] + }], { + nzIconDirectiveElement: [{ + type: ContentChild, + args: [NzIconDirective, { + read: ElementRef + }] + }], + nzBlock: [{ + type: Input + }], + nzGhost: [{ + type: Input + }], + nzSearch: [{ + type: Input + }], + nzLoading: [{ + type: Input + }], + nzDanger: [{ + type: Input + }], + disabled: [{ + type: Input + }], + tabIndex: [{ + type: Input + }], + nzType: [{ + type: Input + }], + nzShape: [{ + type: Input + }], + nzSize: [{ + type: Input + }] + }); +})(); +var _NzButtonGroupComponent = class _NzButtonGroupComponent { + constructor(directionality) { + this.directionality = directionality; + this.nzSize = "default"; + this.dir = "ltr"; + this.destroy$ = new Subject(); + } + ngOnInit() { + this.dir = this.directionality.value; + this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction) => { + this.dir = direction; + }); + } + ngOnDestroy() { + this.destroy$.next(); + this.destroy$.complete(); + } +}; +_NzButtonGroupComponent.ɵfac = function NzButtonGroupComponent_Factory(t) { + return new (t || _NzButtonGroupComponent)(ɵɵdirectiveInject(Directionality, 8)); +}; +_NzButtonGroupComponent.ɵcmp = ɵɵdefineComponent({ + type: _NzButtonGroupComponent, + selectors: [["nz-button-group"]], + hostAttrs: [1, "ant-btn-group"], + hostVars: 6, + hostBindings: function NzButtonGroupComponent_HostBindings(rf, ctx) { + if (rf & 2) { + ɵɵclassProp("ant-btn-group-lg", ctx.nzSize === "large")("ant-btn-group-sm", ctx.nzSize === "small")("ant-btn-group-rtl", ctx.dir === "rtl"); + } + }, + inputs: { + nzSize: "nzSize" + }, + exportAs: ["nzButtonGroup"], + standalone: true, + features: [ɵɵStandaloneFeature], + ngContentSelectors: _c1, + decls: 1, + vars: 0, + template: function NzButtonGroupComponent_Template(rf, ctx) { + if (rf & 1) { + ɵɵprojectionDef(); + ɵɵprojection(0); + } + }, + encapsulation: 2, + changeDetection: 0 +}); +var NzButtonGroupComponent = _NzButtonGroupComponent; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzButtonGroupComponent, [{ + type: Component, + args: [{ + selector: "nz-button-group", + exportAs: "nzButtonGroup", + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation$1.None, + host: { + class: "ant-btn-group", + "[class.ant-btn-group-lg]": `nzSize === 'large'`, + "[class.ant-btn-group-sm]": `nzSize === 'small'`, + "[class.ant-btn-group-rtl]": `dir === 'rtl'` + }, + preserveWhitespaces: false, + template: ` `, + standalone: true + }] + }], () => [{ + type: Directionality, + decorators: [{ + type: Optional + }] + }], { + nzSize: [{ + type: Input + }] + }); +})(); +var _NzButtonModule = class _NzButtonModule { +}; +_NzButtonModule.ɵfac = function NzButtonModule_Factory(t) { + return new (t || _NzButtonModule)(); +}; +_NzButtonModule.ɵmod = ɵɵdefineNgModule({ + type: _NzButtonModule, + imports: [NzButtonComponent, NzButtonGroupComponent], + exports: [NzButtonComponent, NzButtonGroupComponent, NzTransitionPatchModule, NzWaveModule] +}); +_NzButtonModule.ɵinj = ɵɵdefineInjector({ + imports: [NzButtonComponent, NzTransitionPatchModule, NzWaveModule] +}); +var NzButtonModule = _NzButtonModule; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzButtonModule, [{ + type: NgModule, + args: [{ + imports: [NzButtonComponent, NzButtonGroupComponent], + exports: [NzButtonComponent, NzButtonGroupComponent, NzTransitionPatchModule, NzWaveModule] + }] + }], null, null); +})(); + +export { + NzButtonComponent, + NzButtonGroupComponent, + NzButtonModule +}; +//# sourceMappingURL=chunk-KMGBCF4T.js.map diff --git a/.angular/cache/17.0.7/vite/deps/chunk-KMGBCF4T.js.map b/.angular/cache/17.0.7/vite/deps/chunk-KMGBCF4T.js.map new file mode 100644 index 0000000..8630654 --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/chunk-KMGBCF4T.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-transition-patch.mjs", "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-wave.mjs", "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-button.mjs"], + "sourcesContent": ["import * as i0 from '@angular/core';\nimport { Directive, Input, NgModule } from '@angular/core';\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n/**\n * hack the bug\n * angular router change with unexpected transition trigger after calling applicationRef.attachView\n * https://github.com/angular/angular/issues/34718\n */\nclass NzTransitionPatchDirective {\n setHiddenAttribute() {\n if (this.hidden) {\n if (typeof this.hidden === 'string') {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'hidden', this.hidden);\n } else {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'hidden', '');\n }\n } else {\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'hidden');\n }\n }\n constructor(elementRef, renderer) {\n this.elementRef = elementRef;\n this.renderer = renderer;\n this.hidden = null;\n this.renderer.setAttribute(this.elementRef.nativeElement, 'hidden', '');\n }\n ngOnChanges() {\n this.setHiddenAttribute();\n }\n ngAfterViewInit() {\n this.setHiddenAttribute();\n }\n static {\n this.ɵfac = function NzTransitionPatchDirective_Factory(t) {\n return new (t || NzTransitionPatchDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzTransitionPatchDirective,\n selectors: [[\"\", \"nz-button\", \"\"], [\"nz-button-group\"], [\"\", \"nz-icon\", \"\"], [\"\", \"nz-menu-item\", \"\"], [\"\", \"nz-submenu\", \"\"], [\"nz-select-top-control\"], [\"nz-select-placeholder\"], [\"nz-input-group\"]],\n inputs: {\n hidden: \"hidden\"\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzTransitionPatchDirective, [{\n type: Directive,\n args: [{\n selector: '[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group',\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: i0.Renderer2\n }], {\n hidden: [{\n type: Input\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzTransitionPatchModule {\n static {\n this.ɵfac = function NzTransitionPatchModule_Factory(t) {\n return new (t || NzTransitionPatchModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NzTransitionPatchModule,\n imports: [NzTransitionPatchDirective],\n exports: [NzTransitionPatchDirective]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzTransitionPatchModule, [{\n type: NgModule,\n args: [{\n imports: [NzTransitionPatchDirective],\n exports: [NzTransitionPatchDirective]\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NzTransitionPatchDirective as ɵNzTransitionPatchDirective, NzTransitionPatchModule as ɵNzTransitionPatchModule };\n", "import { Platform } from '@angular/cdk/platform';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, makeEnvironmentProviders, PLATFORM_ID, CSP_NONCE, Directive, Optional, Inject, Input, NgModule } from '@angular/core';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzWaveRenderer {\n get waveAttributeName() {\n return this.insertExtraNode ? 'ant-click-animating' : 'ant-click-animating-without-extra-node';\n }\n constructor(triggerElement, ngZone, insertExtraNode, platformId, cspNonce) {\n this.triggerElement = triggerElement;\n this.ngZone = ngZone;\n this.insertExtraNode = insertExtraNode;\n this.platformId = platformId;\n this.cspNonce = cspNonce;\n this.waveTransitionDuration = 400;\n this.styleForPseudo = null;\n this.extraNode = null;\n this.lastTime = 0;\n this.onClick = event => {\n if (!this.triggerElement || !this.triggerElement.getAttribute || this.triggerElement.getAttribute('disabled') || event.target.tagName === 'INPUT' || this.triggerElement.className.indexOf('disabled') >= 0) {\n return;\n }\n this.fadeOutWave();\n };\n this.platform = new Platform(this.platformId);\n this.clickHandler = this.onClick.bind(this);\n this.bindTriggerEvent();\n }\n bindTriggerEvent() {\n if (this.platform.isBrowser) {\n this.ngZone.runOutsideAngular(() => {\n this.removeTriggerEvent();\n if (this.triggerElement) {\n this.triggerElement.addEventListener('click', this.clickHandler, true);\n }\n });\n }\n }\n removeTriggerEvent() {\n if (this.triggerElement) {\n this.triggerElement.removeEventListener('click', this.clickHandler, true);\n }\n }\n removeStyleAndExtraNode() {\n if (this.styleForPseudo && document.body.contains(this.styleForPseudo)) {\n document.body.removeChild(this.styleForPseudo);\n this.styleForPseudo = null;\n }\n if (this.insertExtraNode && this.triggerElement.contains(this.extraNode)) {\n this.triggerElement.removeChild(this.extraNode);\n }\n }\n destroy() {\n this.removeTriggerEvent();\n this.removeStyleAndExtraNode();\n }\n fadeOutWave() {\n const node = this.triggerElement;\n const waveColor = this.getWaveColor(node);\n node.setAttribute(this.waveAttributeName, 'true');\n if (Date.now() < this.lastTime + this.waveTransitionDuration) {\n return;\n }\n if (this.isValidColor(waveColor)) {\n if (!this.styleForPseudo) {\n this.styleForPseudo = document.createElement('style');\n if (this.cspNonce) {\n this.styleForPseudo.nonce = this.cspNonce;\n }\n }\n this.styleForPseudo.innerHTML = `\n [ant-click-animating-without-extra-node='true']::after, .ant-click-animating-node {\n --antd-wave-shadow-color: ${waveColor};\n }`;\n document.body.appendChild(this.styleForPseudo);\n }\n if (this.insertExtraNode) {\n if (!this.extraNode) {\n this.extraNode = document.createElement('div');\n }\n this.extraNode.className = 'ant-click-animating-node';\n node.appendChild(this.extraNode);\n }\n this.lastTime = Date.now();\n this.runTimeoutOutsideZone(() => {\n node.removeAttribute(this.waveAttributeName);\n this.removeStyleAndExtraNode();\n }, this.waveTransitionDuration);\n }\n isValidColor(color) {\n return !!color && color !== '#ffffff' && color !== 'rgb(255, 255, 255)' && this.isNotGrey(color) && !/rgba\\(\\d*, \\d*, \\d*, 0\\)/.test(color) && color !== 'transparent';\n }\n isNotGrey(color) {\n const match = color.match(/rgba?\\((\\d*), (\\d*), (\\d*)(, [\\.\\d]*)?\\)/);\n if (match && match[1] && match[2] && match[3]) {\n return !(match[1] === match[2] && match[2] === match[3]);\n }\n return true;\n }\n getWaveColor(node) {\n const nodeStyle = getComputedStyle(node);\n return nodeStyle.getPropertyValue('border-top-color') ||\n // Firefox Compatible\n nodeStyle.getPropertyValue('border-color') || nodeStyle.getPropertyValue('background-color');\n }\n runTimeoutOutsideZone(fn, delay) {\n this.ngZone.runOutsideAngular(() => setTimeout(fn, delay));\n }\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst NZ_WAVE_GLOBAL_DEFAULT_CONFIG = {\n disabled: false\n};\nconst NZ_WAVE_GLOBAL_CONFIG = new InjectionToken('nz-wave-global-options');\nfunction provideNzWave(config) {\n return makeEnvironmentProviders([{\n provide: NZ_WAVE_GLOBAL_CONFIG,\n useValue: config\n }]);\n}\nclass NzWaveDirective {\n get disabled() {\n return this.waveDisabled;\n }\n get rendererRef() {\n return this.waveRenderer;\n }\n constructor(ngZone, elementRef, config, animationType, platformId, cspNonce) {\n this.ngZone = ngZone;\n this.elementRef = elementRef;\n this.config = config;\n this.animationType = animationType;\n this.platformId = platformId;\n this.cspNonce = cspNonce;\n this.nzWaveExtraNode = false;\n this.waveDisabled = false;\n this.waveDisabled = this.isConfigDisabled();\n }\n isConfigDisabled() {\n let disabled = false;\n if (this.config && typeof this.config.disabled === 'boolean') {\n disabled = this.config.disabled;\n }\n if (this.animationType === 'NoopAnimations') {\n disabled = true;\n }\n return disabled;\n }\n ngOnDestroy() {\n if (this.waveRenderer) {\n this.waveRenderer.destroy();\n }\n }\n ngOnInit() {\n this.renderWaveIfEnabled();\n }\n renderWaveIfEnabled() {\n if (!this.waveDisabled && this.elementRef.nativeElement) {\n this.waveRenderer = new NzWaveRenderer(this.elementRef.nativeElement, this.ngZone, this.nzWaveExtraNode, this.platformId, this.cspNonce);\n }\n }\n disable() {\n this.waveDisabled = true;\n if (this.waveRenderer) {\n this.waveRenderer.removeTriggerEvent();\n this.waveRenderer.removeStyleAndExtraNode();\n }\n }\n enable() {\n // config priority\n this.waveDisabled = this.isConfigDisabled() || false;\n if (this.waveRenderer) {\n this.waveRenderer.bindTriggerEvent();\n }\n }\n static {\n this.ɵfac = function NzWaveDirective_Factory(t) {\n return new (t || NzWaveDirective)(i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(NZ_WAVE_GLOBAL_CONFIG, 8), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8), i0.ɵɵdirectiveInject(PLATFORM_ID), i0.ɵɵdirectiveInject(CSP_NONCE, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzWaveDirective,\n selectors: [[\"\", \"nz-wave\", \"\"], [\"button\", \"nz-button\", \"\", 3, \"nzType\", \"link\", 3, \"nzType\", \"text\"]],\n inputs: {\n nzWaveExtraNode: \"nzWaveExtraNode\"\n },\n exportAs: [\"nzWave\"],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzWaveDirective, [{\n type: Directive,\n args: [{\n selector: '[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])',\n exportAs: 'nzWave',\n standalone: true\n }]\n }], () => [{\n type: i0.NgZone\n }, {\n type: i0.ElementRef\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [NZ_WAVE_GLOBAL_CONFIG]\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CSP_NONCE]\n }]\n }], {\n nzWaveExtraNode: [{\n type: Input\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzWaveModule {\n static {\n this.ɵfac = function NzWaveModule_Factory(t) {\n return new (t || NzWaveModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NzWaveModule,\n imports: [NzWaveDirective],\n exports: [NzWaveDirective]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [provideNzWave(NZ_WAVE_GLOBAL_DEFAULT_CONFIG)]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzWaveModule, [{\n type: NgModule,\n args: [{\n imports: [NzWaveDirective],\n exports: [NzWaveDirective],\n providers: [provideNzWave(NZ_WAVE_GLOBAL_DEFAULT_CONFIG)]\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NZ_WAVE_GLOBAL_CONFIG, NZ_WAVE_GLOBAL_DEFAULT_CONFIG, NzWaveDirective, NzWaveModule, NzWaveRenderer, provideNzWave };\n", "import { __decorate } from 'tslib';\nimport { NgIf } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { ElementRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Optional, ContentChild, Input, NgModule } from '@angular/core';\nimport { Subject, fromEvent } from 'rxjs';\nimport { takeUntil, startWith, filter } from 'rxjs/operators';\nimport * as i1 from 'ng-zorro-antd/core/config';\nimport { WithConfig } from 'ng-zorro-antd/core/config';\nimport { InputBoolean } from 'ng-zorro-antd/core/util';\nimport * as i3 from 'ng-zorro-antd/icon';\nimport { NzIconDirective, NzIconModule } from 'ng-zorro-antd/icon';\nimport * as i2 from '@angular/cdk/bidi';\nimport { ɵNzTransitionPatchModule as _NzTransitionPatchModule } from 'ng-zorro-antd/core/transition-patch';\nimport { NzWaveModule } from 'ng-zorro-antd/core/wave';\nconst _c0 = [\"nz-button\", \"\"];\nfunction NzButtonComponent_span_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 1);\n }\n}\nconst _c1 = [\"*\"];\nconst NZ_CONFIG_MODULE_NAME = 'button';\nclass NzButtonComponent {\n insertSpan(nodes, renderer) {\n nodes.forEach(node => {\n if (node.nodeName === '#text') {\n const span = renderer.createElement('span');\n const parent = renderer.parentNode(node);\n renderer.insertBefore(parent, span, node);\n renderer.appendChild(span, node);\n }\n });\n }\n get iconOnly() {\n const listOfNode = Array.from(this.elementRef?.nativeElement?.childNodes || []);\n const noText = listOfNode.every(node => node.nodeName !== '#text');\n // ignore icon and comment\n const noSpan = listOfNode.filter(node => {\n return !(node.nodeName === '#comment' || !!node?.attributes?.getNamedItem('nz-icon'));\n }).length == 0;\n const isIconOnly = !!this.nzIconDirectiveElement && noSpan && noText;\n return isIconOnly;\n }\n constructor(ngZone, elementRef, cdr, renderer, nzConfigService, directionality) {\n this.ngZone = ngZone;\n this.elementRef = elementRef;\n this.cdr = cdr;\n this.renderer = renderer;\n this.nzConfigService = nzConfigService;\n this.directionality = directionality;\n this._nzModuleName = NZ_CONFIG_MODULE_NAME;\n this.nzBlock = false;\n this.nzGhost = false;\n this.nzSearch = false;\n this.nzLoading = false;\n this.nzDanger = false;\n this.disabled = false;\n this.tabIndex = null;\n this.nzType = null;\n this.nzShape = null;\n this.nzSize = 'default';\n this.dir = 'ltr';\n this.destroy$ = new Subject();\n this.loading$ = new Subject();\n this.nzConfigService.getConfigChangeEventForComponent(NZ_CONFIG_MODULE_NAME).pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.cdr.markForCheck();\n });\n }\n ngOnInit() {\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe(direction => {\n this.dir = direction;\n this.cdr.detectChanges();\n });\n this.dir = this.directionality.value;\n this.ngZone.runOutsideAngular(() => {\n // Caretaker note: this event listener could've been added through `host.click` or `HostListener`.\n // The compiler generates the `ɵɵlistener` instruction which wraps the actual listener internally into the\n // function, which runs `markDirty()` before running the actual listener (the decorated class method).\n // Since we're preventing the default behavior and stopping event propagation this doesn't require Angular to run the change detection.\n fromEvent(this.elementRef.nativeElement, 'click', {\n capture: true\n }).pipe(takeUntil(this.destroy$)).subscribe(event => {\n if (this.disabled && event.target?.tagName === 'A' || this.nzLoading) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n });\n });\n }\n ngOnChanges(changes) {\n const {\n nzLoading\n } = changes;\n if (nzLoading) {\n this.loading$.next(this.nzLoading);\n }\n }\n ngAfterViewInit() {\n this.insertSpan(this.elementRef.nativeElement.childNodes, this.renderer);\n }\n ngAfterContentInit() {\n this.loading$.pipe(startWith(this.nzLoading), filter(() => !!this.nzIconDirectiveElement), takeUntil(this.destroy$)).subscribe(loading => {\n const nativeElement = this.nzIconDirectiveElement.nativeElement;\n if (loading) {\n this.renderer.setStyle(nativeElement, 'display', 'none');\n } else {\n this.renderer.removeStyle(nativeElement, 'display');\n }\n });\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n static {\n this.ɵfac = function NzButtonComponent_Factory(t) {\n return new (t || NzButtonComponent)(i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i1.NzConfigService), i0.ɵɵdirectiveInject(i2.Directionality, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzButtonComponent,\n selectors: [[\"button\", \"nz-button\", \"\"], [\"a\", \"nz-button\", \"\"]],\n contentQueries: function NzButtonComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NzIconDirective, 5, ElementRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.nzIconDirectiveElement = _t.first);\n }\n },\n hostAttrs: [1, \"ant-btn\"],\n hostVars: 32,\n hostBindings: function NzButtonComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"tabindex\", ctx.disabled ? -1 : ctx.tabIndex === null ? null : ctx.tabIndex)(\"disabled\", ctx.disabled || null);\n i0.ɵɵclassProp(\"ant-btn-primary\", ctx.nzType === \"primary\")(\"ant-btn-dashed\", ctx.nzType === \"dashed\")(\"ant-btn-link\", ctx.nzType === \"link\")(\"ant-btn-text\", ctx.nzType === \"text\")(\"ant-btn-circle\", ctx.nzShape === \"circle\")(\"ant-btn-round\", ctx.nzShape === \"round\")(\"ant-btn-lg\", ctx.nzSize === \"large\")(\"ant-btn-sm\", ctx.nzSize === \"small\")(\"ant-btn-dangerous\", ctx.nzDanger)(\"ant-btn-loading\", ctx.nzLoading)(\"ant-btn-background-ghost\", ctx.nzGhost)(\"ant-btn-block\", ctx.nzBlock)(\"ant-input-search-button\", ctx.nzSearch)(\"ant-btn-rtl\", ctx.dir === \"rtl\")(\"ant-btn-icon-only\", ctx.iconOnly);\n }\n },\n inputs: {\n nzBlock: \"nzBlock\",\n nzGhost: \"nzGhost\",\n nzSearch: \"nzSearch\",\n nzLoading: \"nzLoading\",\n nzDanger: \"nzDanger\",\n disabled: \"disabled\",\n tabIndex: \"tabIndex\",\n nzType: \"nzType\",\n nzShape: \"nzShape\",\n nzSize: \"nzSize\"\n },\n exportAs: [\"nzButton\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n attrs: _c0,\n ngContentSelectors: _c1,\n decls: 2,\n vars: 1,\n consts: [[\"nz-icon\", \"\", \"nzType\", \"loading\", 4, \"ngIf\"], [\"nz-icon\", \"\", \"nzType\", \"loading\"]],\n template: function NzButtonComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, NzButtonComponent_span_0_Template, 1, 0, \"span\", 0);\n i0.ɵɵprojection(1);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.nzLoading);\n }\n },\n dependencies: [NzIconModule, i3.NzIconDirective, NgIf],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n__decorate([InputBoolean()], NzButtonComponent.prototype, \"nzBlock\", void 0);\n__decorate([InputBoolean()], NzButtonComponent.prototype, \"nzGhost\", void 0);\n__decorate([InputBoolean()], NzButtonComponent.prototype, \"nzSearch\", void 0);\n__decorate([InputBoolean()], NzButtonComponent.prototype, \"nzLoading\", void 0);\n__decorate([InputBoolean()], NzButtonComponent.prototype, \"nzDanger\", void 0);\n__decorate([InputBoolean()], NzButtonComponent.prototype, \"disabled\", void 0);\n__decorate([WithConfig()], NzButtonComponent.prototype, \"nzSize\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzButtonComponent, [{\n type: Component,\n args: [{\n selector: 'button[nz-button], a[nz-button]',\n exportAs: 'nzButton',\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n \n \n `,\n host: {\n class: 'ant-btn',\n '[class.ant-btn-primary]': `nzType === 'primary'`,\n '[class.ant-btn-dashed]': `nzType === 'dashed'`,\n '[class.ant-btn-link]': `nzType === 'link'`,\n '[class.ant-btn-text]': `nzType === 'text'`,\n '[class.ant-btn-circle]': `nzShape === 'circle'`,\n '[class.ant-btn-round]': `nzShape === 'round'`,\n '[class.ant-btn-lg]': `nzSize === 'large'`,\n '[class.ant-btn-sm]': `nzSize === 'small'`,\n '[class.ant-btn-dangerous]': `nzDanger`,\n '[class.ant-btn-loading]': `nzLoading`,\n '[class.ant-btn-background-ghost]': `nzGhost`,\n '[class.ant-btn-block]': `nzBlock`,\n '[class.ant-input-search-button]': `nzSearch`,\n '[class.ant-btn-rtl]': `dir === 'rtl'`,\n '[class.ant-btn-icon-only]': `iconOnly`,\n '[attr.tabindex]': 'disabled ? -1 : (tabIndex === null ? null : tabIndex)',\n '[attr.disabled]': 'disabled || null'\n },\n imports: [NzIconModule, NgIf],\n standalone: true\n }]\n }], () => [{\n type: i0.NgZone\n }, {\n type: i0.ElementRef\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: i0.Renderer2\n }, {\n type: i1.NzConfigService\n }, {\n type: i2.Directionality,\n decorators: [{\n type: Optional\n }]\n }], {\n nzIconDirectiveElement: [{\n type: ContentChild,\n args: [NzIconDirective, {\n read: ElementRef\n }]\n }],\n nzBlock: [{\n type: Input\n }],\n nzGhost: [{\n type: Input\n }],\n nzSearch: [{\n type: Input\n }],\n nzLoading: [{\n type: Input\n }],\n nzDanger: [{\n type: Input\n }],\n disabled: [{\n type: Input\n }],\n tabIndex: [{\n type: Input\n }],\n nzType: [{\n type: Input\n }],\n nzShape: [{\n type: Input\n }],\n nzSize: [{\n type: Input\n }]\n });\n})();\nclass NzButtonGroupComponent {\n constructor(directionality) {\n this.directionality = directionality;\n this.nzSize = 'default';\n this.dir = 'ltr';\n this.destroy$ = new Subject();\n }\n ngOnInit() {\n this.dir = this.directionality.value;\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe(direction => {\n this.dir = direction;\n });\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n static {\n this.ɵfac = function NzButtonGroupComponent_Factory(t) {\n return new (t || NzButtonGroupComponent)(i0.ɵɵdirectiveInject(i2.Directionality, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzButtonGroupComponent,\n selectors: [[\"nz-button-group\"]],\n hostAttrs: [1, \"ant-btn-group\"],\n hostVars: 6,\n hostBindings: function NzButtonGroupComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"ant-btn-group-lg\", ctx.nzSize === \"large\")(\"ant-btn-group-sm\", ctx.nzSize === \"small\")(\"ant-btn-group-rtl\", ctx.dir === \"rtl\");\n }\n },\n inputs: {\n nzSize: \"nzSize\"\n },\n exportAs: [\"nzButtonGroup\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c1,\n decls: 1,\n vars: 0,\n template: function NzButtonGroupComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzButtonGroupComponent, [{\n type: Component,\n args: [{\n selector: 'nz-button-group',\n exportAs: 'nzButtonGroup',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'ant-btn-group',\n '[class.ant-btn-group-lg]': `nzSize === 'large'`,\n '[class.ant-btn-group-sm]': `nzSize === 'small'`,\n '[class.ant-btn-group-rtl]': `dir === 'rtl'`\n },\n preserveWhitespaces: false,\n template: ` `,\n standalone: true\n }]\n }], () => [{\n type: i2.Directionality,\n decorators: [{\n type: Optional\n }]\n }], {\n nzSize: [{\n type: Input\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzButtonModule {\n static {\n this.ɵfac = function NzButtonModule_Factory(t) {\n return new (t || NzButtonModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NzButtonModule,\n imports: [NzButtonComponent, NzButtonGroupComponent],\n exports: [NzButtonComponent, NzButtonGroupComponent, _NzTransitionPatchModule, NzWaveModule]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [NzButtonComponent, _NzTransitionPatchModule, NzWaveModule]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzButtonModule, [{\n type: NgModule,\n args: [{\n imports: [NzButtonComponent, NzButtonGroupComponent],\n exports: [NzButtonComponent, NzButtonGroupComponent, _NzTransitionPatchModule, NzWaveModule]\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NzButtonComponent, NzButtonGroupComponent, NzButtonModule };\n"], + "mappings": "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", + "names": [] +} diff --git a/.angular/cache/17.0.7/vite/deps/chunk-7XTJNSRU.js b/.angular/cache/17.0.7/vite/deps/chunk-M5GY4FCO.js similarity index 92% rename from .angular/cache/17.0.7/vite/deps/chunk-7XTJNSRU.js rename to .angular/cache/17.0.7/vite/deps/chunk-M5GY4FCO.js index d5aa494..96dfc6d 100644 --- a/.angular/cache/17.0.7/vite/deps/chunk-7XTJNSRU.js +++ b/.angular/cache/17.0.7/vite/deps/chunk-M5GY4FCO.js @@ -1,8 +1,36 @@ import { ElementRef, - isDevMode + Subject, + from, + isDevMode, + isObservable, + of, + take } from "./chunk-FGESKT7O.js"; +// node_modules/@angular/cdk/fesm2022/coercion.mjs +function coerceBooleanProperty(value) { + return value != null && `${value}` !== "false"; +} +function coerceNumberProperty(value, fallbackValue = 0) { + return _isNumberValue(value) ? Number(value) : fallbackValue; +} +function _isNumberValue(value) { + return !isNaN(parseFloat(value)) && !isNaN(Number(value)); +} +function coerceArray(value) { + return Array.isArray(value) ? value : [value]; +} +function coerceCssPixelValue(value) { + if (value == null) { + return ""; + } + return typeof value === "string" ? value : `${value}px`; +} +function coerceElement(elementOrRef) { + return elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef; +} + // node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-environments.mjs var environment = { isTestMode: false @@ -27,29 +55,6 @@ function consoleCommonBehavior(consoleFunc, ...args) { } var warn = (...args) => consoleCommonBehavior((...arg) => console.warn(PREFIX, ...arg), ...args); -// node_modules/@angular/cdk/fesm2022/coercion.mjs -function coerceBooleanProperty(value) { - return value != null && `${value}` !== "false"; -} -function coerceNumberProperty(value, fallbackValue = 0) { - return _isNumberValue(value) ? Number(value) : fallbackValue; -} -function _isNumberValue(value) { - return !isNaN(parseFloat(value)) && !isNaN(Number(value)); -} -function coerceArray(value) { - return Array.isArray(value) ? value : [value]; -} -function coerceCssPixelValue(value) { - if (value == null) { - return ""; - } - return typeof value === "string" ? value : `${value}px`; -} -function coerceElement(elementOrRef) { - return elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef; -} - // node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-util.mjs function arraysEqual(array1, array2) { if (!array1 || !array2 || array1.length !== array2.length) { @@ -129,6 +134,9 @@ function isTouchEvent(event) { function getEventPosition(event) { return isTouchEvent(event) ? event.touches[0] || event.changedTouches[0] : event; } +function isPromise(obj) { + return !!obj && typeof obj.then === "function" && typeof obj.catch === "function"; +} function getPercent(min, max, value) { return (value - min) / (max - min) * 100; } @@ -148,6 +156,20 @@ function ensureNumberInRange(num, min, max) { } var isBrowser = typeof window !== "undefined"; var isFirefox = isBrowser && window.mozInnerScreenX != null; +function inNextTick() { + const timer = new Subject(); + Promise.resolve().then(() => timer.next()); + return timer.pipe(take(1)); +} +function wrapIntoObservable(value) { + if (isObservable(value)) { + return value; + } + if (isPromise(value)) { + return from(Promise.resolve(value)); + } + return of(value); +} function canUseDom() { return !!(typeof window !== "undefined" && window.document && window.document.createElement); } @@ -223,12 +245,13 @@ function getStatusClassNames(prefixCls, status, hasFeedback) { } export { - environment, - warn, coerceNumberProperty, coerceArray, coerceCssPixelValue, coerceElement, + environment, + PREFIX, + warn, arraysEqual, isNotNil, isNil, @@ -243,8 +266,10 @@ export { getPercent, getPrecision, ensureNumberInRange, + inNextTick, + wrapIntoObservable, canUseDom, updateCSS, getStatusClassNames }; -//# sourceMappingURL=chunk-7XTJNSRU.js.map +//# sourceMappingURL=chunk-M5GY4FCO.js.map diff --git a/.angular/cache/17.0.7/vite/deps/chunk-7XTJNSRU.js.map b/.angular/cache/17.0.7/vite/deps/chunk-M5GY4FCO.js.map similarity index 74% rename from .angular/cache/17.0.7/vite/deps/chunk-7XTJNSRU.js.map rename to .angular/cache/17.0.7/vite/deps/chunk-M5GY4FCO.js.map index b30b38d..3b83a05 100644 --- a/.angular/cache/17.0.7/vite/deps/chunk-7XTJNSRU.js.map +++ b/.angular/cache/17.0.7/vite/deps/chunk-M5GY4FCO.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-environments.mjs", "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-logger.mjs", "../../../../../node_modules/@angular/cdk/fesm2022/coercion.mjs", "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-util.mjs"], - "sourcesContent": ["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst environment = {\n isTestMode: false\n};\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { environment };\n\n", "import { isDevMode } from '@angular/core';\nimport { environment } from 'ng-zorro-antd/core/environments';\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst record = {};\nconst PREFIX = '[NG-ZORRO]:';\nfunction notRecorded(...args) {\n const asRecord = args.reduce((acc, c) => acc + c.toString(), '');\n if (record[asRecord]) {\n return false;\n }\n else {\n record[asRecord] = true;\n return true;\n }\n}\nfunction consoleCommonBehavior(consoleFunc, ...args) {\n if (environment.isTestMode || (isDevMode() && notRecorded(...args))) {\n consoleFunc(...args);\n }\n}\n// Warning should only be printed in dev mode and only once.\nconst warn = (...args) => consoleCommonBehavior((...arg) => console.warn(PREFIX, ...arg), ...args);\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nconst warnDeprecation = (...args) => {\n if (!environment.isTestMode) {\n const stack = new Error().stack;\n return consoleCommonBehavior((...arg) => console.warn(PREFIX, 'deprecated:', ...arg, stack), ...args);\n }\n else {\n return () => { };\n }\n};\n// Log should only be printed in dev mode.\nconst log = (...args) => {\n if (isDevMode()) {\n console.log(PREFIX, ...args);\n }\n};\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { PREFIX, log, warn, warnDeprecation };\n\n", "import { ElementRef } from '@angular/core';\n\n/** Coerces a data-bound value (typically a string) to a boolean. */\nfunction coerceBooleanProperty(value) {\n return value != null && `${value}` !== 'false';\n}\n\nfunction coerceNumberProperty(value, fallbackValue = 0) {\n return _isNumberValue(value) ? Number(value) : fallbackValue;\n}\n/**\n * Whether the provided value is considered a number.\n * @docs-private\n */\nfunction _isNumberValue(value) {\n // parseFloat(value) handles most of the cases we're interested in (it treats null, empty string,\n // and other non-number values as NaN, where Number just uses 0) but it considers the string\n // '123hello' to be a valid number. Therefore we also check if Number(value) is NaN.\n return !isNaN(parseFloat(value)) && !isNaN(Number(value));\n}\n\nfunction coerceArray(value) {\n return Array.isArray(value) ? value : [value];\n}\n\n/** Coerces a value to a CSS pixel value. */\nfunction coerceCssPixelValue(value) {\n if (value == null) {\n return '';\n }\n return typeof value === 'string' ? value : `${value}px`;\n}\n\n/**\n * Coerces an ElementRef or an Element into an element.\n * Useful for APIs that can accept either a ref or the native element itself.\n */\nfunction coerceElement(elementOrRef) {\n return elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;\n}\n\n/**\n * Coerces a value to an array of trimmed non-empty strings.\n * Any input that is not an array, `null` or `undefined` will be turned into a string\n * via `toString()` and subsequently split with the given separator.\n * `null` and `undefined` will result in an empty array.\n * This results in the following outcomes:\n * - `null` -> `[]`\n * - `[null]` -> `[\"null\"]`\n * - `[\"a\", \"b \", \" \"]` -> `[\"a\", \"b\"]`\n * - `[1, [2, 3]]` -> `[\"1\", \"2,3\"]`\n * - `[{ a: 0 }]` -> `[\"[object Object]\"]`\n * - `{ a: 0 }` -> `[\"[object\", \"Object]\"]`\n *\n * Useful for defining CSS classes or table columns.\n * @param value the value to coerce into an array of strings\n * @param separator split-separator if value isn't an array\n */\nfunction coerceStringArray(value, separator = /\\s+/) {\n const result = [];\n if (value != null) {\n const sourceValues = Array.isArray(value) ? value : `${value}`.split(separator);\n for (const sourceValue of sourceValues) {\n const trimmedString = `${sourceValue}`.trim();\n if (trimmedString) {\n result.push(trimmedString);\n }\n }\n }\n return result;\n}\n\nexport { _isNumberValue, coerceArray, coerceBooleanProperty, coerceCssPixelValue, coerceElement, coerceNumberProperty, coerceStringArray };\n\n", "import { TemplateRef } from '@angular/core';\nimport { coerceBooleanProperty, _isNumberValue, coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { warn } from 'ng-zorro-antd/core/logger';\nimport { Subject, isObservable, from, of } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction toArray(value) {\n let ret;\n if (value == null) {\n ret = [];\n }\n else if (!Array.isArray(value)) {\n ret = [value];\n }\n else {\n ret = value;\n }\n return ret;\n}\nfunction arraysEqual(array1, array2) {\n if (!array1 || !array2 || array1.length !== array2.length) {\n return false;\n }\n const len = array1.length;\n for (let i = 0; i < len; i++) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n}\nfunction shallowCopyArray(source) {\n return source.slice();\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction isNotNil(value) {\n return typeof value !== 'undefined' && value !== null;\n}\nfunction isNil(value) {\n return typeof value === 'undefined' || value === null;\n}\n/**\n * Examine if two objects are shallowly equaled.\n */\nfunction shallowEqual(objA, objB) {\n if (objA === objB) {\n return true;\n }\n if (typeof objA !== 'object' || !objA || typeof objB !== 'object' || !objB) {\n return false;\n }\n const keysA = Object.keys(objA);\n const keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) {\n return false;\n }\n const bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let idx = 0; idx < keysA.length; idx++) {\n const key = keysA[idx];\n if (!bHasOwnProperty(key)) {\n return false;\n }\n if (objA[key] !== objB[key]) {\n return false;\n }\n }\n return true;\n}\nfunction isNonEmptyString(value) {\n return typeof value === 'string' && value !== '';\n}\nfunction isTemplateRef(value) {\n return value instanceof TemplateRef;\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction toBoolean(value) {\n return coerceBooleanProperty(value);\n}\nfunction toNumber(value, fallbackValue = 0) {\n return _isNumberValue(value) ? Number(value) : fallbackValue;\n}\nfunction toCssPixel(value) {\n return coerceCssPixelValue(value);\n}\n// eslint-disable no-invalid-this\n/**\n * Get the function-property type's value\n */\nfunction valueFunctionProp(prop, ...args) {\n return typeof prop === 'function' ? prop(...args) : prop;\n}\nfunction propDecoratorFactory(name, fallback) {\n function propDecorator(target, propName, originalDescriptor) {\n const privatePropName = `$$__zorroPropDecorator__${propName}`;\n if (Object.prototype.hasOwnProperty.call(target, privatePropName)) {\n warn(`The prop \"${privatePropName}\" is already exist, it will be overrided by ${name} decorator.`);\n }\n Object.defineProperty(target, privatePropName, {\n configurable: true,\n writable: true\n });\n return {\n get() {\n return originalDescriptor && originalDescriptor.get\n ? originalDescriptor.get.bind(this)()\n : this[privatePropName];\n },\n set(value) {\n if (originalDescriptor && originalDescriptor.set) {\n originalDescriptor.set.bind(this)(fallback(value));\n }\n this[privatePropName] = fallback(value);\n }\n };\n }\n return propDecorator;\n}\n/**\n * Input decorator that handle a prop to do get/set automatically with toBoolean\n *\n * Why not using @InputBoolean alone without @Input? AOT needs @Input to be visible\n *\n * @howToUse\n * ```\n * @Input() @InputBoolean() visible: boolean = false;\n *\n * // Act as below:\n * // @Input()\n * // get visible() { return this.__visible; }\n * // set visible(value) { this.__visible = value; }\n * // __visible = false;\n * ```\n */\nfunction InputBoolean() {\n return propDecoratorFactory('InputBoolean', toBoolean);\n}\nfunction InputCssPixel() {\n return propDecoratorFactory('InputCssPixel', toCssPixel);\n}\nfunction InputNumber(fallbackValue) {\n return propDecoratorFactory('InputNumber', (value) => toNumber(value, fallbackValue));\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n/**\n * Silent an event by stopping and preventing it.\n */\nfunction silentEvent(e) {\n e.stopPropagation();\n e.preventDefault();\n}\nfunction getElementOffset(elem) {\n if (!elem.getClientRects().length) {\n return { top: 0, left: 0 };\n }\n const rect = elem.getBoundingClientRect();\n const win = elem.ownerDocument.defaultView;\n return {\n top: rect.top + win.pageYOffset,\n left: rect.left + win.pageXOffset\n };\n}\n/**\n * Investigate if an event is a `TouchEvent`.\n */\nfunction isTouchEvent(event) {\n return event.type.startsWith('touch');\n}\nfunction getEventPosition(event) {\n return isTouchEvent(event) ? event.touches[0] || event.changedTouches[0] : event;\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction getRegExp(prefix) {\n const prefixArray = Array.isArray(prefix) ? prefix : [prefix];\n let prefixToken = prefixArray.join('').replace(/(\\$|\\^)/g, '\\\\$1');\n if (prefixArray.length > 1) {\n prefixToken = `[${prefixToken}]`;\n }\n return new RegExp(`(\\\\s|^)(${prefixToken})[^\\\\s]*`, 'g');\n}\nfunction getMentions(value, prefix = '@') {\n if (typeof value !== 'string') {\n return [];\n }\n const regex = getRegExp(prefix);\n const mentions = value.match(regex);\n return mentions !== null ? mentions.map(e => e.trim()) : [];\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n/**\n * Much like lodash.\n */\nfunction padStart(toPad, length, element) {\n if (toPad.length > length) {\n return toPad;\n }\n const joined = `${getRepeatedElement(length, element)}${toPad}`;\n return joined.slice(joined.length - length, joined.length);\n}\nfunction padEnd(toPad, length, element) {\n const joined = `${toPad}${getRepeatedElement(length, element)}`;\n return joined.slice(0, length);\n}\nfunction getRepeatedElement(length, element) {\n return Array(length).fill(element).join('');\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction isPromise(obj) {\n return !!obj && typeof obj.then === 'function' && typeof obj.catch === 'function';\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction getPercent(min, max, value) {\n return ((value - min) / (max - min)) * 100;\n}\nfunction getPrecision(num) {\n const numStr = num.toString();\n const dotIndex = numStr.indexOf('.');\n return dotIndex >= 0 ? numStr.length - dotIndex - 1 : 0;\n}\nfunction ensureNumberInRange(num, min, max) {\n if (isNaN(num) || num < min) {\n return min;\n }\n else if (num > max) {\n return max;\n }\n else {\n return num;\n }\n}\nfunction isNumberFinite(value) {\n return typeof value === 'number' && isFinite(value);\n}\nfunction toDecimal(value, decimal) {\n return Math.round(value * Math.pow(10, decimal)) / Math.pow(10, decimal);\n}\nfunction sum(input, initial = 0) {\n return input.reduce((previous, current) => previous + current, initial);\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction scrollIntoView(node) {\n const nodeAsAny = node;\n if (nodeAsAny.scrollIntoViewIfNeeded) {\n /* eslint-disable-next-line @typescript-eslint/dot-notation */\n nodeAsAny.scrollIntoViewIfNeeded(false);\n return;\n }\n if (node.scrollIntoView) {\n node.scrollIntoView(false);\n return;\n }\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n// from https://github.com/component/textarea-caret-position\n// We'll copy the properties below into the mirror div.\n// Note that some browsers, such as Firefox, do not concatenate properties\n// into their shorthand (e.g. padding-top, padding-bottom etc. -> padding),\n// so we have to list every single property explicitly.\nconst properties = [\n 'direction',\n 'boxSizing',\n 'width',\n 'height',\n 'overflowX',\n 'overflowY',\n 'borderTopWidth',\n 'borderRightWidth',\n 'borderBottomWidth',\n 'borderLeftWidth',\n 'borderStyle',\n 'paddingTop',\n 'paddingRight',\n 'paddingBottom',\n 'paddingLeft',\n // https://developer.mozilla.org/en-US/docs/Web/CSS/font\n 'fontStyle',\n 'fontVariant',\n 'fontWeight',\n 'fontStretch',\n 'fontSize',\n 'fontSizeAdjust',\n 'lineHeight',\n 'fontFamily',\n 'textAlign',\n 'textTransform',\n 'textIndent',\n 'textDecoration',\n 'letterSpacing',\n 'wordSpacing',\n 'tabSize',\n 'MozTabSize'\n];\nconst isBrowser = typeof window !== 'undefined';\nconst isFirefox = isBrowser && window.mozInnerScreenX != null;\nconst _parseInt = (str) => parseInt(str, 10);\nfunction getCaretCoordinates(element, position, options) {\n if (!isBrowser) {\n throw new Error('textarea-caret-position#getCaretCoordinates should only be called in a browser');\n }\n const debug = (options && options.debug) || false;\n if (debug) {\n const el = document.querySelector('#input-textarea-caret-position-mirror-div');\n if (el) {\n el.parentNode.removeChild(el);\n }\n }\n // The mirror div will replicate the textarea's style\n const div = document.createElement('div');\n div.id = 'input-textarea-caret-position-mirror-div';\n document.body.appendChild(div);\n const style = div.style;\n const computed = window.getComputedStyle ? window.getComputedStyle(element) : element.currentStyle; // currentStyle for IE < 9\n const isInput = element.nodeName === 'INPUT';\n // Default textarea styles\n style.whiteSpace = 'pre-wrap';\n if (!isInput) {\n style.wordWrap = 'break-word'; // only for textarea-s\n }\n // Position off-screen\n style.position = 'absolute'; // required to return coordinates properly\n if (!debug) {\n style.visibility = 'hidden';\n } // not 'display: none' because we want rendering\n // Transfer the element's properties to the div\n properties.forEach((prop) => {\n if (isInput && prop === 'lineHeight') {\n // Special case for s because text is rendered centered and line height may be != height\n style.lineHeight = computed.height;\n }\n else {\n // @ts-ignore\n style[prop] = computed[prop];\n }\n });\n if (isFirefox) {\n // Firefox lies about the overflow property for textareas: https://bugzilla.mozilla.org/show_bug.cgi?id=984275\n if (element.scrollHeight > _parseInt(computed.height)) {\n style.overflowY = 'scroll';\n }\n }\n else {\n style.overflow = 'hidden'; // for Chrome to not render a scrollbar; IE keeps overflowY = 'scroll'\n }\n div.textContent = element.value.substring(0, position);\n // The second special handling for input type=\"text\" vs textarea:\n // spaces need to be replaced with non-breaking spaces - http://stackoverflow.com/a/13402035/1269037\n if (isInput) {\n div.textContent = div.textContent.replace(/\\s/g, '\\u00a0');\n }\n const span = document.createElement('span');\n // Wrapping must be replicated *exactly*, including when a long word gets\n // onto the next line, with whitespace at the end of the line before (#7).\n // The *only* reliable way to do that is to copy the *entire* rest of the\n // textarea's content into the created at the caret position.\n // For inputs, just '.' would be enough, but no need to bother.\n span.textContent = element.value.substring(position) || '.'; // || because a completely empty faux span doesn't render at all\n div.appendChild(span);\n const coordinates = {\n top: span.offsetTop + _parseInt(computed.borderTopWidth),\n left: span.offsetLeft + _parseInt(computed.borderLeftWidth),\n height: _parseInt(computed.lineHeight)\n };\n if (debug) {\n span.style.backgroundColor = '#eee';\n createDebugEle(element, coordinates);\n }\n else {\n document.body.removeChild(div);\n }\n return coordinates;\n}\nfunction createDebugEle(element, coordinates) {\n const fontSize = getComputedStyle(element).getPropertyValue('font-size');\n const rect = document.querySelector('#DEBUG') || document.createElement('div');\n document.body.appendChild(rect);\n rect.id = 'DEBUG';\n rect.style.position = 'absolute';\n rect.style.backgroundColor = 'red';\n rect.style.height = fontSize;\n rect.style.width = '1px';\n rect.style.top = `${element.getBoundingClientRect().top - element.scrollTop + window.pageYOffset + coordinates.top}px`;\n rect.style.left = `${element.getBoundingClientRect().left - element.scrollLeft + window.pageXOffset + coordinates.left}px`;\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction isStyleSupport(styleName) {\n if (typeof window !== 'undefined' && window.document && window.document.documentElement) {\n const styleNameList = Array.isArray(styleName) ? styleName : [styleName];\n const { documentElement } = window.document;\n return styleNameList.some(name => name in documentElement.style);\n }\n return false;\n}\nfunction getStyleAsText(styles) {\n if (!styles) {\n return '';\n }\n return Object.keys(styles)\n .map(key => {\n const val = styles[key];\n return `${key}:${typeof val === 'string' ? val : `${val}px`}`;\n })\n .join(';');\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n// We only handle element & text node.\nconst ELEMENT_NODE = 1;\nconst TEXT_NODE = 3;\nconst COMMENT_NODE = 8;\nlet ellipsisContainer;\nconst wrapperStyle = {\n padding: '0',\n margin: '0',\n display: 'inline',\n lineHeight: 'inherit'\n};\nfunction pxToNumber(value) {\n if (!value) {\n return 0;\n }\n const match = value.match(/^\\d*(\\.\\d*)?/);\n return match ? Number(match[0]) : 0;\n}\nfunction styleToString(style) {\n // There are some different behavior between Firefox & Chrome.\n // We have to handle this ourself.\n const styleNames = Array.prototype.slice.apply(style);\n return styleNames.map(name => `${name}: ${style.getPropertyValue(name)};`).join('');\n}\nfunction mergeChildren(children) {\n const childList = [];\n children.forEach((child) => {\n const prevChild = childList[childList.length - 1];\n if (prevChild && child.nodeType === TEXT_NODE && prevChild.nodeType === TEXT_NODE) {\n prevChild.data += child.data;\n }\n else {\n childList.push(child);\n }\n });\n return childList;\n}\nfunction measure(originEle, rows, contentNodes, fixedContent, ellipsisStr, suffixStr = '') {\n if (!ellipsisContainer) {\n ellipsisContainer = document.createElement('div');\n ellipsisContainer.setAttribute('aria-hidden', 'true');\n document.body.appendChild(ellipsisContainer);\n }\n // Get origin style\n const originStyle = window.getComputedStyle(originEle);\n const originCSS = styleToString(originStyle);\n const lineHeight = pxToNumber(originStyle.lineHeight);\n const maxHeight = Math.round(lineHeight * (rows + 1) + pxToNumber(originStyle.paddingTop) + pxToNumber(originStyle.paddingBottom));\n // Set shadow\n ellipsisContainer.setAttribute('style', originCSS);\n ellipsisContainer.style.position = 'fixed';\n ellipsisContainer.style.left = '0';\n ellipsisContainer.style.height = 'auto';\n ellipsisContainer.style.minHeight = 'auto';\n ellipsisContainer.style.maxHeight = 'auto';\n ellipsisContainer.style.top = '-999999px';\n ellipsisContainer.style.zIndex = '-1000';\n // clean up css overflow\n ellipsisContainer.style.textOverflow = 'clip';\n ellipsisContainer.style.whiteSpace = 'normal';\n ellipsisContainer.style.webkitLineClamp = 'none';\n const contentList = mergeChildren(contentNodes);\n const container = document.createElement('div');\n const contentContainer = document.createElement('span');\n const suffixContainer = document.createTextNode(suffixStr);\n const fixedContainer = document.createElement('span');\n // Add styles in container\n Object.assign(container.style, wrapperStyle);\n Object.assign(contentContainer.style, wrapperStyle);\n Object.assign(fixedContainer.style, wrapperStyle);\n contentList.forEach(n => {\n contentContainer.appendChild(n);\n });\n contentContainer.appendChild(suffixContainer);\n fixedContent.forEach(node => {\n fixedContainer.appendChild(node.cloneNode(true));\n });\n container.appendChild(contentContainer);\n container.appendChild(fixedContainer);\n // Render in the fake container\n ellipsisContainer.appendChild(container);\n // Check if ellipsis in measure div is height enough for content\n function inRange() {\n return ellipsisContainer.offsetHeight < maxHeight;\n }\n if (inRange()) {\n const text = ellipsisContainer.innerHTML;\n ellipsisContainer.removeChild(container);\n return { contentNodes, text, ellipsis: false };\n }\n // We should clone the childNode since they're controlled by React and we can't reuse it without warning\n const childNodes = Array.prototype.slice\n .apply(ellipsisContainer.childNodes[0].childNodes[0].cloneNode(true).childNodes)\n .filter(({ nodeType }) => nodeType !== COMMENT_NODE);\n const fixedNodes = Array.prototype.slice.apply(ellipsisContainer.childNodes[0].childNodes[1].cloneNode(true).childNodes);\n ellipsisContainer.removeChild(container);\n // ========================= Find match ellipsis content =========================\n ellipsisContainer.innerHTML = '';\n // Create origin content holder\n const ellipsisContentHolder = document.createElement('span');\n ellipsisContainer.appendChild(ellipsisContentHolder);\n const ellipsisTextNode = document.createTextNode(ellipsisStr + suffixStr);\n ellipsisContentHolder.appendChild(ellipsisTextNode);\n fixedNodes.forEach(childNode => {\n ellipsisContainer.appendChild(childNode);\n });\n // Append before fixed nodes\n function appendChildNode(node) {\n ellipsisContentHolder.insertBefore(node, ellipsisTextNode);\n }\n // Get maximum text\n function measureText(textNode, fullText, startLoc = 0, endLoc = fullText.length, lastSuccessLoc = 0) {\n const midLoc = Math.floor((startLoc + endLoc) / 2);\n textNode.textContent = fullText.slice(0, midLoc);\n if (startLoc >= endLoc - 1) {\n // Loop when step is small\n for (let step = endLoc; step >= startLoc; step -= 1) {\n const currentStepText = fullText.slice(0, step);\n textNode.textContent = currentStepText;\n if (inRange() || !currentStepText) {\n return step === fullText.length\n ? {\n finished: false,\n node: document.createTextNode(fullText)\n }\n : {\n finished: true,\n node: document.createTextNode(currentStepText)\n };\n }\n }\n }\n if (inRange()) {\n return measureText(textNode, fullText, midLoc, endLoc, midLoc);\n }\n else {\n return measureText(textNode, fullText, startLoc, midLoc, lastSuccessLoc);\n }\n }\n function measureNode(childNode, index) {\n const type = childNode.nodeType;\n if (type === ELEMENT_NODE) {\n // We don't split element, it will keep if whole element can be displayed.\n // appendChildNode(childNode);\n if (inRange()) {\n return {\n finished: false,\n node: contentList[index]\n };\n }\n // Clean up if can not pull in\n ellipsisContentHolder.removeChild(childNode);\n return {\n finished: true,\n node: null\n };\n }\n else if (type === TEXT_NODE) {\n const fullText = childNode.textContent || '';\n const textNode = document.createTextNode(fullText);\n appendChildNode(textNode);\n return measureText(textNode, fullText);\n }\n // Not handle other type of content\n // PS: This code should not be attached after react 16\n return {\n finished: false,\n node: null\n };\n }\n const ellipsisNodes = [];\n childNodes.some((childNode, index) => {\n const { finished, node } = measureNode(childNode, index);\n if (node) {\n ellipsisNodes.push(node);\n }\n return finished;\n });\n const result = {\n contentNodes: ellipsisNodes,\n text: ellipsisContainer.innerHTML,\n ellipsis: true\n };\n while (ellipsisContainer.firstChild) {\n ellipsisContainer.removeChild(ellipsisContainer.firstChild);\n }\n return result;\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nlet scrollbarVerticalSize;\nlet scrollbarHorizontalSize;\n// Measure scrollbar width for padding body during modal show/hide\nconst scrollbarMeasure = {\n position: 'absolute',\n top: '-9999px',\n width: '50px',\n height: '50px'\n};\nfunction measureScrollbar(direction = 'vertical', prefix = 'ant') {\n if (typeof document === 'undefined' || typeof window === 'undefined') {\n return 0;\n }\n const isVertical = direction === 'vertical';\n if (isVertical && scrollbarVerticalSize) {\n return scrollbarVerticalSize;\n }\n else if (!isVertical && scrollbarHorizontalSize) {\n return scrollbarHorizontalSize;\n }\n const scrollDiv = document.createElement('div');\n Object.keys(scrollbarMeasure).forEach(scrollProp => {\n // @ts-ignore\n scrollDiv.style[scrollProp] = scrollbarMeasure[scrollProp];\n });\n // apply hide scrollbar className ahead\n scrollDiv.className = `${prefix}-hide-scrollbar scroll-div-append-to-body`;\n // Append related overflow style\n if (isVertical) {\n scrollDiv.style.overflowY = 'scroll';\n }\n else {\n scrollDiv.style.overflowX = 'scroll';\n }\n document.body.appendChild(scrollDiv);\n let size = 0;\n if (isVertical) {\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n scrollbarVerticalSize = size;\n }\n else {\n size = scrollDiv.offsetHeight - scrollDiv.clientHeight;\n scrollbarHorizontalSize = size;\n }\n document.body.removeChild(scrollDiv);\n return size;\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction ensureInBounds(value, boundValue) {\n return value ? (value < boundValue ? value : boundValue) : boundValue;\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction inNextTick() {\n const timer = new Subject();\n Promise.resolve().then(() => timer.next());\n return timer.pipe(take(1));\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction wrapIntoObservable(value) {\n if (isObservable(value)) {\n return value;\n }\n if (isPromise(value)) {\n // Use `Promise.resolve()` to wrap promise-like instances.\n return from(Promise.resolve(value));\n }\n return of(value);\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n/**\n * Sync from rc-util [https://github.com/react-component/util]\n */\nfunction canUseDom() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n/**\n * Sync from rc-util [https://github.com/react-component/util]\n */\nconst MARK_KEY = `rc-util-key`;\nfunction getMark({ mark } = {}) {\n if (mark) {\n return mark.startsWith('data-') ? mark : `data-${mark}`;\n }\n return MARK_KEY;\n}\nfunction getContainer(option) {\n if (option.attachTo) {\n return option.attachTo;\n }\n const head = document.querySelector('head');\n return head || document.body;\n}\nfunction injectCSS(css, options = {}) {\n if (!canUseDom()) {\n return null;\n }\n const styleNode = document.createElement('style');\n if (options.cspNonce) {\n styleNode.nonce = options.cspNonce;\n }\n styleNode.innerHTML = css;\n const container = getContainer(options);\n const { firstChild } = container;\n if (options.prepend && container.prepend) {\n // Use `prepend` first\n container.prepend(styleNode);\n }\n else if (options.prepend && firstChild) {\n // Fallback to `insertBefore` like IE not support `prepend`\n container.insertBefore(styleNode, firstChild);\n }\n else {\n container.appendChild(styleNode);\n }\n return styleNode;\n}\nconst containerCache = new Map();\nfunction findExistNode(key, option = {}) {\n const container = getContainer(option);\n return Array.from(containerCache.get(container)?.children || []).find(node => node.tagName === 'STYLE' && node.getAttribute(getMark(option)) === key);\n}\nfunction removeCSS(key, option = {}) {\n const existNode = findExistNode(key, option);\n existNode?.parentNode?.removeChild(existNode);\n}\nfunction updateCSS(css, key, options = {}) {\n const container = getContainer(options);\n // Get real parent\n if (!containerCache.has(container)) {\n const placeholderStyle = injectCSS('', options);\n // @ts-ignore\n const { parentNode } = placeholderStyle;\n containerCache.set(container, parentNode);\n parentNode.removeChild(placeholderStyle);\n }\n const existNode = findExistNode(key, options);\n if (existNode) {\n if (options.cspNonce && existNode.nonce !== options.cspNonce) {\n existNode.nonce = options.cspNonce;\n }\n if (existNode.innerHTML !== css) {\n existNode.innerHTML = css;\n }\n return existNode;\n }\n const newNode = injectCSS(css, options);\n newNode?.setAttribute(getMark(options), key);\n return newNode;\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction getStatusClassNames(prefixCls, status, hasFeedback) {\n return {\n [`${prefixCls}-status-success`]: status === 'success',\n [`${prefixCls}-status-warning`]: status === 'warning',\n [`${prefixCls}-status-error`]: status === 'error',\n [`${prefixCls}-status-validating`]: status === 'validating',\n [`${prefixCls}-has-feedback`]: hasFeedback\n };\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { InputBoolean, InputCssPixel, InputNumber, arraysEqual, canUseDom, createDebugEle, ensureInBounds, ensureNumberInRange, getCaretCoordinates, getElementOffset, getEventPosition, getMentions, getPercent, getPrecision, getRegExp, getRepeatedElement, getStatusClassNames, getStyleAsText, inNextTick, injectCSS, isNil, isNonEmptyString, isNotNil, isNumberFinite, isPromise, isStyleSupport, isTemplateRef, isTouchEvent, measure, measureScrollbar, padEnd, padStart, properties, pxToNumber, removeCSS, scrollIntoView, shallowCopyArray, shallowEqual, silentEvent, sum, toArray, toBoolean, toCssPixel, toDecimal, toNumber, updateCSS, valueFunctionProp, wrapIntoObservable };\n\n"], - "mappings": "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", + "sources": ["../../../../../node_modules/@angular/cdk/fesm2022/coercion.mjs", "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-environments.mjs", "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-logger.mjs", "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-util.mjs"], + "sourcesContent": ["import { ElementRef } from '@angular/core';\n\n/** Coerces a data-bound value (typically a string) to a boolean. */\nfunction coerceBooleanProperty(value) {\n return value != null && `${value}` !== 'false';\n}\n\nfunction coerceNumberProperty(value, fallbackValue = 0) {\n return _isNumberValue(value) ? Number(value) : fallbackValue;\n}\n/**\n * Whether the provided value is considered a number.\n * @docs-private\n */\nfunction _isNumberValue(value) {\n // parseFloat(value) handles most of the cases we're interested in (it treats null, empty string,\n // and other non-number values as NaN, where Number just uses 0) but it considers the string\n // '123hello' to be a valid number. Therefore we also check if Number(value) is NaN.\n return !isNaN(parseFloat(value)) && !isNaN(Number(value));\n}\n\nfunction coerceArray(value) {\n return Array.isArray(value) ? value : [value];\n}\n\n/** Coerces a value to a CSS pixel value. */\nfunction coerceCssPixelValue(value) {\n if (value == null) {\n return '';\n }\n return typeof value === 'string' ? value : `${value}px`;\n}\n\n/**\n * Coerces an ElementRef or an Element into an element.\n * Useful for APIs that can accept either a ref or the native element itself.\n */\nfunction coerceElement(elementOrRef) {\n return elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;\n}\n\n/**\n * Coerces a value to an array of trimmed non-empty strings.\n * Any input that is not an array, `null` or `undefined` will be turned into a string\n * via `toString()` and subsequently split with the given separator.\n * `null` and `undefined` will result in an empty array.\n * This results in the following outcomes:\n * - `null` -> `[]`\n * - `[null]` -> `[\"null\"]`\n * - `[\"a\", \"b \", \" \"]` -> `[\"a\", \"b\"]`\n * - `[1, [2, 3]]` -> `[\"1\", \"2,3\"]`\n * - `[{ a: 0 }]` -> `[\"[object Object]\"]`\n * - `{ a: 0 }` -> `[\"[object\", \"Object]\"]`\n *\n * Useful for defining CSS classes or table columns.\n * @param value the value to coerce into an array of strings\n * @param separator split-separator if value isn't an array\n */\nfunction coerceStringArray(value, separator = /\\s+/) {\n const result = [];\n if (value != null) {\n const sourceValues = Array.isArray(value) ? value : `${value}`.split(separator);\n for (const sourceValue of sourceValues) {\n const trimmedString = `${sourceValue}`.trim();\n if (trimmedString) {\n result.push(trimmedString);\n }\n }\n }\n return result;\n}\n\nexport { _isNumberValue, coerceArray, coerceBooleanProperty, coerceCssPixelValue, coerceElement, coerceNumberProperty, coerceStringArray };\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst environment = {\n isTestMode: false\n};\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { environment };\n\n", "import { isDevMode } from '@angular/core';\nimport { environment } from 'ng-zorro-antd/core/environments';\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst record = {};\nconst PREFIX = '[NG-ZORRO]:';\nfunction notRecorded(...args) {\n const asRecord = args.reduce((acc, c) => acc + c.toString(), '');\n if (record[asRecord]) {\n return false;\n }\n else {\n record[asRecord] = true;\n return true;\n }\n}\nfunction consoleCommonBehavior(consoleFunc, ...args) {\n if (environment.isTestMode || (isDevMode() && notRecorded(...args))) {\n consoleFunc(...args);\n }\n}\n// Warning should only be printed in dev mode and only once.\nconst warn = (...args) => consoleCommonBehavior((...arg) => console.warn(PREFIX, ...arg), ...args);\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nconst warnDeprecation = (...args) => {\n if (!environment.isTestMode) {\n const stack = new Error().stack;\n return consoleCommonBehavior((...arg) => console.warn(PREFIX, 'deprecated:', ...arg, stack), ...args);\n }\n else {\n return () => { };\n }\n};\n// Log should only be printed in dev mode.\nconst log = (...args) => {\n if (isDevMode()) {\n console.log(PREFIX, ...args);\n }\n};\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { PREFIX, log, warn, warnDeprecation };\n\n", "import { TemplateRef } from '@angular/core';\nimport { coerceBooleanProperty, _isNumberValue, coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { warn } from 'ng-zorro-antd/core/logger';\nimport { Subject, isObservable, from, of } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction toArray(value) {\n let ret;\n if (value == null) {\n ret = [];\n }\n else if (!Array.isArray(value)) {\n ret = [value];\n }\n else {\n ret = value;\n }\n return ret;\n}\nfunction arraysEqual(array1, array2) {\n if (!array1 || !array2 || array1.length !== array2.length) {\n return false;\n }\n const len = array1.length;\n for (let i = 0; i < len; i++) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n}\nfunction shallowCopyArray(source) {\n return source.slice();\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction isNotNil(value) {\n return typeof value !== 'undefined' && value !== null;\n}\nfunction isNil(value) {\n return typeof value === 'undefined' || value === null;\n}\n/**\n * Examine if two objects are shallowly equaled.\n */\nfunction shallowEqual(objA, objB) {\n if (objA === objB) {\n return true;\n }\n if (typeof objA !== 'object' || !objA || typeof objB !== 'object' || !objB) {\n return false;\n }\n const keysA = Object.keys(objA);\n const keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) {\n return false;\n }\n const bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let idx = 0; idx < keysA.length; idx++) {\n const key = keysA[idx];\n if (!bHasOwnProperty(key)) {\n return false;\n }\n if (objA[key] !== objB[key]) {\n return false;\n }\n }\n return true;\n}\nfunction isNonEmptyString(value) {\n return typeof value === 'string' && value !== '';\n}\nfunction isTemplateRef(value) {\n return value instanceof TemplateRef;\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction toBoolean(value) {\n return coerceBooleanProperty(value);\n}\nfunction toNumber(value, fallbackValue = 0) {\n return _isNumberValue(value) ? Number(value) : fallbackValue;\n}\nfunction toCssPixel(value) {\n return coerceCssPixelValue(value);\n}\n// eslint-disable no-invalid-this\n/**\n * Get the function-property type's value\n */\nfunction valueFunctionProp(prop, ...args) {\n return typeof prop === 'function' ? prop(...args) : prop;\n}\nfunction propDecoratorFactory(name, fallback) {\n function propDecorator(target, propName, originalDescriptor) {\n const privatePropName = `$$__zorroPropDecorator__${propName}`;\n if (Object.prototype.hasOwnProperty.call(target, privatePropName)) {\n warn(`The prop \"${privatePropName}\" is already exist, it will be overrided by ${name} decorator.`);\n }\n Object.defineProperty(target, privatePropName, {\n configurable: true,\n writable: true\n });\n return {\n get() {\n return originalDescriptor && originalDescriptor.get\n ? originalDescriptor.get.bind(this)()\n : this[privatePropName];\n },\n set(value) {\n if (originalDescriptor && originalDescriptor.set) {\n originalDescriptor.set.bind(this)(fallback(value));\n }\n this[privatePropName] = fallback(value);\n }\n };\n }\n return propDecorator;\n}\n/**\n * Input decorator that handle a prop to do get/set automatically with toBoolean\n *\n * Why not using @InputBoolean alone without @Input? AOT needs @Input to be visible\n *\n * @howToUse\n * ```\n * @Input() @InputBoolean() visible: boolean = false;\n *\n * // Act as below:\n * // @Input()\n * // get visible() { return this.__visible; }\n * // set visible(value) { this.__visible = value; }\n * // __visible = false;\n * ```\n */\nfunction InputBoolean() {\n return propDecoratorFactory('InputBoolean', toBoolean);\n}\nfunction InputCssPixel() {\n return propDecoratorFactory('InputCssPixel', toCssPixel);\n}\nfunction InputNumber(fallbackValue) {\n return propDecoratorFactory('InputNumber', (value) => toNumber(value, fallbackValue));\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n/**\n * Silent an event by stopping and preventing it.\n */\nfunction silentEvent(e) {\n e.stopPropagation();\n e.preventDefault();\n}\nfunction getElementOffset(elem) {\n if (!elem.getClientRects().length) {\n return { top: 0, left: 0 };\n }\n const rect = elem.getBoundingClientRect();\n const win = elem.ownerDocument.defaultView;\n return {\n top: rect.top + win.pageYOffset,\n left: rect.left + win.pageXOffset\n };\n}\n/**\n * Investigate if an event is a `TouchEvent`.\n */\nfunction isTouchEvent(event) {\n return event.type.startsWith('touch');\n}\nfunction getEventPosition(event) {\n return isTouchEvent(event) ? event.touches[0] || event.changedTouches[0] : event;\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction getRegExp(prefix) {\n const prefixArray = Array.isArray(prefix) ? prefix : [prefix];\n let prefixToken = prefixArray.join('').replace(/(\\$|\\^)/g, '\\\\$1');\n if (prefixArray.length > 1) {\n prefixToken = `[${prefixToken}]`;\n }\n return new RegExp(`(\\\\s|^)(${prefixToken})[^\\\\s]*`, 'g');\n}\nfunction getMentions(value, prefix = '@') {\n if (typeof value !== 'string') {\n return [];\n }\n const regex = getRegExp(prefix);\n const mentions = value.match(regex);\n return mentions !== null ? mentions.map(e => e.trim()) : [];\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n/**\n * Much like lodash.\n */\nfunction padStart(toPad, length, element) {\n if (toPad.length > length) {\n return toPad;\n }\n const joined = `${getRepeatedElement(length, element)}${toPad}`;\n return joined.slice(joined.length - length, joined.length);\n}\nfunction padEnd(toPad, length, element) {\n const joined = `${toPad}${getRepeatedElement(length, element)}`;\n return joined.slice(0, length);\n}\nfunction getRepeatedElement(length, element) {\n return Array(length).fill(element).join('');\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction isPromise(obj) {\n return !!obj && typeof obj.then === 'function' && typeof obj.catch === 'function';\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction getPercent(min, max, value) {\n return ((value - min) / (max - min)) * 100;\n}\nfunction getPrecision(num) {\n const numStr = num.toString();\n const dotIndex = numStr.indexOf('.');\n return dotIndex >= 0 ? numStr.length - dotIndex - 1 : 0;\n}\nfunction ensureNumberInRange(num, min, max) {\n if (isNaN(num) || num < min) {\n return min;\n }\n else if (num > max) {\n return max;\n }\n else {\n return num;\n }\n}\nfunction isNumberFinite(value) {\n return typeof value === 'number' && isFinite(value);\n}\nfunction toDecimal(value, decimal) {\n return Math.round(value * Math.pow(10, decimal)) / Math.pow(10, decimal);\n}\nfunction sum(input, initial = 0) {\n return input.reduce((previous, current) => previous + current, initial);\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction scrollIntoView(node) {\n const nodeAsAny = node;\n if (nodeAsAny.scrollIntoViewIfNeeded) {\n /* eslint-disable-next-line @typescript-eslint/dot-notation */\n nodeAsAny.scrollIntoViewIfNeeded(false);\n return;\n }\n if (node.scrollIntoView) {\n node.scrollIntoView(false);\n return;\n }\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n// from https://github.com/component/textarea-caret-position\n// We'll copy the properties below into the mirror div.\n// Note that some browsers, such as Firefox, do not concatenate properties\n// into their shorthand (e.g. padding-top, padding-bottom etc. -> padding),\n// so we have to list every single property explicitly.\nconst properties = [\n 'direction',\n 'boxSizing',\n 'width',\n 'height',\n 'overflowX',\n 'overflowY',\n 'borderTopWidth',\n 'borderRightWidth',\n 'borderBottomWidth',\n 'borderLeftWidth',\n 'borderStyle',\n 'paddingTop',\n 'paddingRight',\n 'paddingBottom',\n 'paddingLeft',\n // https://developer.mozilla.org/en-US/docs/Web/CSS/font\n 'fontStyle',\n 'fontVariant',\n 'fontWeight',\n 'fontStretch',\n 'fontSize',\n 'fontSizeAdjust',\n 'lineHeight',\n 'fontFamily',\n 'textAlign',\n 'textTransform',\n 'textIndent',\n 'textDecoration',\n 'letterSpacing',\n 'wordSpacing',\n 'tabSize',\n 'MozTabSize'\n];\nconst isBrowser = typeof window !== 'undefined';\nconst isFirefox = isBrowser && window.mozInnerScreenX != null;\nconst _parseInt = (str) => parseInt(str, 10);\nfunction getCaretCoordinates(element, position, options) {\n if (!isBrowser) {\n throw new Error('textarea-caret-position#getCaretCoordinates should only be called in a browser');\n }\n const debug = (options && options.debug) || false;\n if (debug) {\n const el = document.querySelector('#input-textarea-caret-position-mirror-div');\n if (el) {\n el.parentNode.removeChild(el);\n }\n }\n // The mirror div will replicate the textarea's style\n const div = document.createElement('div');\n div.id = 'input-textarea-caret-position-mirror-div';\n document.body.appendChild(div);\n const style = div.style;\n const computed = window.getComputedStyle ? window.getComputedStyle(element) : element.currentStyle; // currentStyle for IE < 9\n const isInput = element.nodeName === 'INPUT';\n // Default textarea styles\n style.whiteSpace = 'pre-wrap';\n if (!isInput) {\n style.wordWrap = 'break-word'; // only for textarea-s\n }\n // Position off-screen\n style.position = 'absolute'; // required to return coordinates properly\n if (!debug) {\n style.visibility = 'hidden';\n } // not 'display: none' because we want rendering\n // Transfer the element's properties to the div\n properties.forEach((prop) => {\n if (isInput && prop === 'lineHeight') {\n // Special case for s because text is rendered centered and line height may be != height\n style.lineHeight = computed.height;\n }\n else {\n // @ts-ignore\n style[prop] = computed[prop];\n }\n });\n if (isFirefox) {\n // Firefox lies about the overflow property for textareas: https://bugzilla.mozilla.org/show_bug.cgi?id=984275\n if (element.scrollHeight > _parseInt(computed.height)) {\n style.overflowY = 'scroll';\n }\n }\n else {\n style.overflow = 'hidden'; // for Chrome to not render a scrollbar; IE keeps overflowY = 'scroll'\n }\n div.textContent = element.value.substring(0, position);\n // The second special handling for input type=\"text\" vs textarea:\n // spaces need to be replaced with non-breaking spaces - http://stackoverflow.com/a/13402035/1269037\n if (isInput) {\n div.textContent = div.textContent.replace(/\\s/g, '\\u00a0');\n }\n const span = document.createElement('span');\n // Wrapping must be replicated *exactly*, including when a long word gets\n // onto the next line, with whitespace at the end of the line before (#7).\n // The *only* reliable way to do that is to copy the *entire* rest of the\n // textarea's content into the created at the caret position.\n // For inputs, just '.' would be enough, but no need to bother.\n span.textContent = element.value.substring(position) || '.'; // || because a completely empty faux span doesn't render at all\n div.appendChild(span);\n const coordinates = {\n top: span.offsetTop + _parseInt(computed.borderTopWidth),\n left: span.offsetLeft + _parseInt(computed.borderLeftWidth),\n height: _parseInt(computed.lineHeight)\n };\n if (debug) {\n span.style.backgroundColor = '#eee';\n createDebugEle(element, coordinates);\n }\n else {\n document.body.removeChild(div);\n }\n return coordinates;\n}\nfunction createDebugEle(element, coordinates) {\n const fontSize = getComputedStyle(element).getPropertyValue('font-size');\n const rect = document.querySelector('#DEBUG') || document.createElement('div');\n document.body.appendChild(rect);\n rect.id = 'DEBUG';\n rect.style.position = 'absolute';\n rect.style.backgroundColor = 'red';\n rect.style.height = fontSize;\n rect.style.width = '1px';\n rect.style.top = `${element.getBoundingClientRect().top - element.scrollTop + window.pageYOffset + coordinates.top}px`;\n rect.style.left = `${element.getBoundingClientRect().left - element.scrollLeft + window.pageXOffset + coordinates.left}px`;\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction isStyleSupport(styleName) {\n if (typeof window !== 'undefined' && window.document && window.document.documentElement) {\n const styleNameList = Array.isArray(styleName) ? styleName : [styleName];\n const { documentElement } = window.document;\n return styleNameList.some(name => name in documentElement.style);\n }\n return false;\n}\nfunction getStyleAsText(styles) {\n if (!styles) {\n return '';\n }\n return Object.keys(styles)\n .map(key => {\n const val = styles[key];\n return `${key}:${typeof val === 'string' ? val : `${val}px`}`;\n })\n .join(';');\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n// We only handle element & text node.\nconst ELEMENT_NODE = 1;\nconst TEXT_NODE = 3;\nconst COMMENT_NODE = 8;\nlet ellipsisContainer;\nconst wrapperStyle = {\n padding: '0',\n margin: '0',\n display: 'inline',\n lineHeight: 'inherit'\n};\nfunction pxToNumber(value) {\n if (!value) {\n return 0;\n }\n const match = value.match(/^\\d*(\\.\\d*)?/);\n return match ? Number(match[0]) : 0;\n}\nfunction styleToString(style) {\n // There are some different behavior between Firefox & Chrome.\n // We have to handle this ourself.\n const styleNames = Array.prototype.slice.apply(style);\n return styleNames.map(name => `${name}: ${style.getPropertyValue(name)};`).join('');\n}\nfunction mergeChildren(children) {\n const childList = [];\n children.forEach((child) => {\n const prevChild = childList[childList.length - 1];\n if (prevChild && child.nodeType === TEXT_NODE && prevChild.nodeType === TEXT_NODE) {\n prevChild.data += child.data;\n }\n else {\n childList.push(child);\n }\n });\n return childList;\n}\nfunction measure(originEle, rows, contentNodes, fixedContent, ellipsisStr, suffixStr = '') {\n if (!ellipsisContainer) {\n ellipsisContainer = document.createElement('div');\n ellipsisContainer.setAttribute('aria-hidden', 'true');\n document.body.appendChild(ellipsisContainer);\n }\n // Get origin style\n const originStyle = window.getComputedStyle(originEle);\n const originCSS = styleToString(originStyle);\n const lineHeight = pxToNumber(originStyle.lineHeight);\n const maxHeight = Math.round(lineHeight * (rows + 1) + pxToNumber(originStyle.paddingTop) + pxToNumber(originStyle.paddingBottom));\n // Set shadow\n ellipsisContainer.setAttribute('style', originCSS);\n ellipsisContainer.style.position = 'fixed';\n ellipsisContainer.style.left = '0';\n ellipsisContainer.style.height = 'auto';\n ellipsisContainer.style.minHeight = 'auto';\n ellipsisContainer.style.maxHeight = 'auto';\n ellipsisContainer.style.top = '-999999px';\n ellipsisContainer.style.zIndex = '-1000';\n // clean up css overflow\n ellipsisContainer.style.textOverflow = 'clip';\n ellipsisContainer.style.whiteSpace = 'normal';\n ellipsisContainer.style.webkitLineClamp = 'none';\n const contentList = mergeChildren(contentNodes);\n const container = document.createElement('div');\n const contentContainer = document.createElement('span');\n const suffixContainer = document.createTextNode(suffixStr);\n const fixedContainer = document.createElement('span');\n // Add styles in container\n Object.assign(container.style, wrapperStyle);\n Object.assign(contentContainer.style, wrapperStyle);\n Object.assign(fixedContainer.style, wrapperStyle);\n contentList.forEach(n => {\n contentContainer.appendChild(n);\n });\n contentContainer.appendChild(suffixContainer);\n fixedContent.forEach(node => {\n fixedContainer.appendChild(node.cloneNode(true));\n });\n container.appendChild(contentContainer);\n container.appendChild(fixedContainer);\n // Render in the fake container\n ellipsisContainer.appendChild(container);\n // Check if ellipsis in measure div is height enough for content\n function inRange() {\n return ellipsisContainer.offsetHeight < maxHeight;\n }\n if (inRange()) {\n const text = ellipsisContainer.innerHTML;\n ellipsisContainer.removeChild(container);\n return { contentNodes, text, ellipsis: false };\n }\n // We should clone the childNode since they're controlled by React and we can't reuse it without warning\n const childNodes = Array.prototype.slice\n .apply(ellipsisContainer.childNodes[0].childNodes[0].cloneNode(true).childNodes)\n .filter(({ nodeType }) => nodeType !== COMMENT_NODE);\n const fixedNodes = Array.prototype.slice.apply(ellipsisContainer.childNodes[0].childNodes[1].cloneNode(true).childNodes);\n ellipsisContainer.removeChild(container);\n // ========================= Find match ellipsis content =========================\n ellipsisContainer.innerHTML = '';\n // Create origin content holder\n const ellipsisContentHolder = document.createElement('span');\n ellipsisContainer.appendChild(ellipsisContentHolder);\n const ellipsisTextNode = document.createTextNode(ellipsisStr + suffixStr);\n ellipsisContentHolder.appendChild(ellipsisTextNode);\n fixedNodes.forEach(childNode => {\n ellipsisContainer.appendChild(childNode);\n });\n // Append before fixed nodes\n function appendChildNode(node) {\n ellipsisContentHolder.insertBefore(node, ellipsisTextNode);\n }\n // Get maximum text\n function measureText(textNode, fullText, startLoc = 0, endLoc = fullText.length, lastSuccessLoc = 0) {\n const midLoc = Math.floor((startLoc + endLoc) / 2);\n textNode.textContent = fullText.slice(0, midLoc);\n if (startLoc >= endLoc - 1) {\n // Loop when step is small\n for (let step = endLoc; step >= startLoc; step -= 1) {\n const currentStepText = fullText.slice(0, step);\n textNode.textContent = currentStepText;\n if (inRange() || !currentStepText) {\n return step === fullText.length\n ? {\n finished: false,\n node: document.createTextNode(fullText)\n }\n : {\n finished: true,\n node: document.createTextNode(currentStepText)\n };\n }\n }\n }\n if (inRange()) {\n return measureText(textNode, fullText, midLoc, endLoc, midLoc);\n }\n else {\n return measureText(textNode, fullText, startLoc, midLoc, lastSuccessLoc);\n }\n }\n function measureNode(childNode, index) {\n const type = childNode.nodeType;\n if (type === ELEMENT_NODE) {\n // We don't split element, it will keep if whole element can be displayed.\n // appendChildNode(childNode);\n if (inRange()) {\n return {\n finished: false,\n node: contentList[index]\n };\n }\n // Clean up if can not pull in\n ellipsisContentHolder.removeChild(childNode);\n return {\n finished: true,\n node: null\n };\n }\n else if (type === TEXT_NODE) {\n const fullText = childNode.textContent || '';\n const textNode = document.createTextNode(fullText);\n appendChildNode(textNode);\n return measureText(textNode, fullText);\n }\n // Not handle other type of content\n // PS: This code should not be attached after react 16\n return {\n finished: false,\n node: null\n };\n }\n const ellipsisNodes = [];\n childNodes.some((childNode, index) => {\n const { finished, node } = measureNode(childNode, index);\n if (node) {\n ellipsisNodes.push(node);\n }\n return finished;\n });\n const result = {\n contentNodes: ellipsisNodes,\n text: ellipsisContainer.innerHTML,\n ellipsis: true\n };\n while (ellipsisContainer.firstChild) {\n ellipsisContainer.removeChild(ellipsisContainer.firstChild);\n }\n return result;\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nlet scrollbarVerticalSize;\nlet scrollbarHorizontalSize;\n// Measure scrollbar width for padding body during modal show/hide\nconst scrollbarMeasure = {\n position: 'absolute',\n top: '-9999px',\n width: '50px',\n height: '50px'\n};\nfunction measureScrollbar(direction = 'vertical', prefix = 'ant') {\n if (typeof document === 'undefined' || typeof window === 'undefined') {\n return 0;\n }\n const isVertical = direction === 'vertical';\n if (isVertical && scrollbarVerticalSize) {\n return scrollbarVerticalSize;\n }\n else if (!isVertical && scrollbarHorizontalSize) {\n return scrollbarHorizontalSize;\n }\n const scrollDiv = document.createElement('div');\n Object.keys(scrollbarMeasure).forEach(scrollProp => {\n // @ts-ignore\n scrollDiv.style[scrollProp] = scrollbarMeasure[scrollProp];\n });\n // apply hide scrollbar className ahead\n scrollDiv.className = `${prefix}-hide-scrollbar scroll-div-append-to-body`;\n // Append related overflow style\n if (isVertical) {\n scrollDiv.style.overflowY = 'scroll';\n }\n else {\n scrollDiv.style.overflowX = 'scroll';\n }\n document.body.appendChild(scrollDiv);\n let size = 0;\n if (isVertical) {\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n scrollbarVerticalSize = size;\n }\n else {\n size = scrollDiv.offsetHeight - scrollDiv.clientHeight;\n scrollbarHorizontalSize = size;\n }\n document.body.removeChild(scrollDiv);\n return size;\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction ensureInBounds(value, boundValue) {\n return value ? (value < boundValue ? value : boundValue) : boundValue;\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction inNextTick() {\n const timer = new Subject();\n Promise.resolve().then(() => timer.next());\n return timer.pipe(take(1));\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction wrapIntoObservable(value) {\n if (isObservable(value)) {\n return value;\n }\n if (isPromise(value)) {\n // Use `Promise.resolve()` to wrap promise-like instances.\n return from(Promise.resolve(value));\n }\n return of(value);\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n/**\n * Sync from rc-util [https://github.com/react-component/util]\n */\nfunction canUseDom() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n/**\n * Sync from rc-util [https://github.com/react-component/util]\n */\nconst MARK_KEY = `rc-util-key`;\nfunction getMark({ mark } = {}) {\n if (mark) {\n return mark.startsWith('data-') ? mark : `data-${mark}`;\n }\n return MARK_KEY;\n}\nfunction getContainer(option) {\n if (option.attachTo) {\n return option.attachTo;\n }\n const head = document.querySelector('head');\n return head || document.body;\n}\nfunction injectCSS(css, options = {}) {\n if (!canUseDom()) {\n return null;\n }\n const styleNode = document.createElement('style');\n if (options.cspNonce) {\n styleNode.nonce = options.cspNonce;\n }\n styleNode.innerHTML = css;\n const container = getContainer(options);\n const { firstChild } = container;\n if (options.prepend && container.prepend) {\n // Use `prepend` first\n container.prepend(styleNode);\n }\n else if (options.prepend && firstChild) {\n // Fallback to `insertBefore` like IE not support `prepend`\n container.insertBefore(styleNode, firstChild);\n }\n else {\n container.appendChild(styleNode);\n }\n return styleNode;\n}\nconst containerCache = new Map();\nfunction findExistNode(key, option = {}) {\n const container = getContainer(option);\n return Array.from(containerCache.get(container)?.children || []).find(node => node.tagName === 'STYLE' && node.getAttribute(getMark(option)) === key);\n}\nfunction removeCSS(key, option = {}) {\n const existNode = findExistNode(key, option);\n existNode?.parentNode?.removeChild(existNode);\n}\nfunction updateCSS(css, key, options = {}) {\n const container = getContainer(options);\n // Get real parent\n if (!containerCache.has(container)) {\n const placeholderStyle = injectCSS('', options);\n // @ts-ignore\n const { parentNode } = placeholderStyle;\n containerCache.set(container, parentNode);\n parentNode.removeChild(placeholderStyle);\n }\n const existNode = findExistNode(key, options);\n if (existNode) {\n if (options.cspNonce && existNode.nonce !== options.cspNonce) {\n existNode.nonce = options.cspNonce;\n }\n if (existNode.innerHTML !== css) {\n existNode.innerHTML = css;\n }\n return existNode;\n }\n const newNode = injectCSS(css, options);\n newNode?.setAttribute(getMark(options), key);\n return newNode;\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction getStatusClassNames(prefixCls, status, hasFeedback) {\n return {\n [`${prefixCls}-status-success`]: status === 'success',\n [`${prefixCls}-status-warning`]: status === 'warning',\n [`${prefixCls}-status-error`]: status === 'error',\n [`${prefixCls}-status-validating`]: status === 'validating',\n [`${prefixCls}-has-feedback`]: hasFeedback\n };\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { InputBoolean, InputCssPixel, InputNumber, arraysEqual, canUseDom, createDebugEle, ensureInBounds, ensureNumberInRange, getCaretCoordinates, getElementOffset, getEventPosition, getMentions, getPercent, getPrecision, getRegExp, getRepeatedElement, getStatusClassNames, getStyleAsText, inNextTick, injectCSS, isNil, isNonEmptyString, isNotNil, isNumberFinite, isPromise, isStyleSupport, isTemplateRef, isTouchEvent, measure, measureScrollbar, padEnd, padStart, properties, pxToNumber, removeCSS, scrollIntoView, shallowCopyArray, shallowEqual, silentEvent, sum, toArray, toBoolean, toCssPixel, toDecimal, toNumber, updateCSS, valueFunctionProp, wrapIntoObservable };\n\n"], + "mappings": "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", "names": [] } diff --git a/.angular/cache/17.0.7/vite/deps/chunk-QI6CCAQD.js.map b/.angular/cache/17.0.7/vite/deps/chunk-QI6CCAQD.js.map deleted file mode 100644 index 5d9d782..0000000 --- a/.angular/cache/17.0.7/vite/deps/chunk-QI6CCAQD.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/@angular/cdk/fesm2022/portal.mjs", "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-animation.mjs", "../../../../../node_modules/@angular/cdk/fesm2022/collections.mjs", "../../../../../node_modules/@angular/cdk/fesm2022/scrolling.mjs", "../../../../../node_modules/@angular/cdk/fesm2022/overlay.mjs"], - "sourcesContent": ["import * as i0 from '@angular/core';\nimport { ElementRef, Injector, Directive, EventEmitter, Inject, Output, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * Throws an exception when attempting to attach a null portal to a host.\n * @docs-private\n */\nfunction throwNullPortalError() {\n throw Error('Must provide a portal to attach');\n}\n/**\n * Throws an exception when attempting to attach a portal to a host that is already attached.\n * @docs-private\n */\nfunction throwPortalAlreadyAttachedError() {\n throw Error('Host already has a portal attached');\n}\n/**\n * Throws an exception when attempting to attach a portal to an already-disposed host.\n * @docs-private\n */\nfunction throwPortalOutletAlreadyDisposedError() {\n throw Error('This PortalOutlet has already been disposed');\n}\n/**\n * Throws an exception when attempting to attach an unknown portal type.\n * @docs-private\n */\nfunction throwUnknownPortalTypeError() {\n throw Error('Attempting to attach an unknown Portal type. BasePortalOutlet accepts either ' + 'a ComponentPortal or a TemplatePortal.');\n}\n/**\n * Throws an exception when attempting to attach a portal to a null host.\n * @docs-private\n */\nfunction throwNullPortalOutletError() {\n throw Error('Attempting to attach a portal to a null PortalOutlet');\n}\n/**\n * Throws an exception when attempting to detach a portal that is not attached.\n * @docs-private\n */\nfunction throwNoPortalAttachedError() {\n throw Error('Attempting to detach a portal that is not attached to a host');\n}\n\n/**\n * A `Portal` is something that you want to render somewhere else.\n * It can be attach to / detached from a `PortalOutlet`.\n */\nclass Portal {\n /** Attach this portal to a host. */\n attach(host) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (host == null) {\n throwNullPortalOutletError();\n }\n if (host.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n }\n this._attachedHost = host;\n return host.attach(this);\n }\n /** Detach this portal from its host */\n detach() {\n let host = this._attachedHost;\n if (host != null) {\n this._attachedHost = null;\n host.detach();\n } else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throwNoPortalAttachedError();\n }\n }\n /** Whether this portal is attached to a host. */\n get isAttached() {\n return this._attachedHost != null;\n }\n /**\n * Sets the PortalOutlet reference without performing `attach()`. This is used directly by\n * the PortalOutlet when it is performing an `attach()` or `detach()`.\n */\n setAttachedHost(host) {\n this._attachedHost = host;\n }\n}\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\nclass ComponentPortal extends Portal {\n constructor(component, viewContainerRef, injector, componentFactoryResolver, projectableNodes) {\n super();\n this.component = component;\n this.viewContainerRef = viewContainerRef;\n this.injector = injector;\n this.componentFactoryResolver = componentFactoryResolver;\n this.projectableNodes = projectableNodes;\n }\n}\n/**\n * A `TemplatePortal` is a portal that represents some embedded template (TemplateRef).\n */\nclass TemplatePortal extends Portal {\n constructor( /** The embedded template that will be used to instantiate an embedded View in the host. */\n templateRef, /** Reference to the ViewContainer into which the template will be stamped out. */\n viewContainerRef, /** Contextual data to be passed in to the embedded view. */\n context, /** The injector to use for the embedded view. */\n injector) {\n super();\n this.templateRef = templateRef;\n this.viewContainerRef = viewContainerRef;\n this.context = context;\n this.injector = injector;\n }\n get origin() {\n return this.templateRef.elementRef;\n }\n /**\n * Attach the portal to the provided `PortalOutlet`.\n * When a context is provided it will override the `context` property of the `TemplatePortal`\n * instance.\n */\n attach(host, context = this.context) {\n this.context = context;\n return super.attach(host);\n }\n detach() {\n this.context = undefined;\n return super.detach();\n }\n}\n/**\n * A `DomPortal` is a portal whose DOM element will be taken from its current position\n * in the DOM and moved into a portal outlet, when it is attached. On detach, the content\n * will be restored to its original position.\n */\nclass DomPortal extends Portal {\n constructor(element) {\n super();\n this.element = element instanceof ElementRef ? element.nativeElement : element;\n }\n}\n/**\n * Partial implementation of PortalOutlet that handles attaching\n * ComponentPortal and TemplatePortal.\n */\nclass BasePortalOutlet {\n constructor() {\n /** Whether this host has already been permanently disposed. */\n this._isDisposed = false;\n // @breaking-change 10.0.0 `attachDomPortal` to become a required abstract method.\n this.attachDomPortal = null;\n }\n /** Whether this host has an attached portal. */\n hasAttached() {\n return !!this._attachedPortal;\n }\n /** Attaches a portal. */\n attach(portal) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!portal) {\n throwNullPortalError();\n }\n if (this.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n if (this._isDisposed) {\n throwPortalOutletAlreadyDisposedError();\n }\n }\n if (portal instanceof ComponentPortal) {\n this._attachedPortal = portal;\n return this.attachComponentPortal(portal);\n } else if (portal instanceof TemplatePortal) {\n this._attachedPortal = portal;\n return this.attachTemplatePortal(portal);\n // @breaking-change 10.0.0 remove null check for `this.attachDomPortal`.\n } else if (this.attachDomPortal && portal instanceof DomPortal) {\n this._attachedPortal = portal;\n return this.attachDomPortal(portal);\n }\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throwUnknownPortalTypeError();\n }\n }\n /** Detaches a previously attached portal. */\n detach() {\n if (this._attachedPortal) {\n this._attachedPortal.setAttachedHost(null);\n this._attachedPortal = null;\n }\n this._invokeDisposeFn();\n }\n /** Permanently dispose of this portal host. */\n dispose() {\n if (this.hasAttached()) {\n this.detach();\n }\n this._invokeDisposeFn();\n this._isDisposed = true;\n }\n /** @docs-private */\n setDisposeFn(fn) {\n this._disposeFn = fn;\n }\n _invokeDisposeFn() {\n if (this._disposeFn) {\n this._disposeFn();\n this._disposeFn = null;\n }\n }\n}\n/**\n * @deprecated Use `BasePortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass BasePortalHost extends BasePortalOutlet {}\n\n/**\n * A PortalOutlet for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n */\nclass DomPortalOutlet extends BasePortalOutlet {\n /**\n * @param outletElement Element into which the content is projected.\n * @param _componentFactoryResolver Used to resolve the component factory.\n * Only required when attaching component portals.\n * @param _appRef Reference to the application. Only used in component portals when there\n * is no `ViewContainerRef` available.\n * @param _defaultInjector Injector to use as a fallback when the portal being attached doesn't\n * have one. Only used for component portals.\n * @param _document Reference to the document. Used when attaching a DOM portal. Will eventually\n * become a required parameter.\n */\n constructor( /** Element into which the content is projected. */\n outletElement, _componentFactoryResolver, _appRef, _defaultInjector,\n /**\n * @deprecated `_document` Parameter to be made required.\n * @breaking-change 10.0.0\n */\n _document) {\n super();\n this.outletElement = outletElement;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._appRef = _appRef;\n this._defaultInjector = _defaultInjector;\n /**\n * Attaches a DOM portal by transferring its content into the outlet.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = portal => {\n // @breaking-change 10.0.0 Remove check and error once the\n // `_document` constructor parameter is required.\n if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Cannot attach DOM portal without _document constructor parameter');\n }\n const element = portal.element;\n if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('DOM portal content must be attached to a parent node.');\n }\n // Anchor used to save the element's previous position so\n // that we can restore it when the portal is detached.\n const anchorNode = this._document.createComment('dom-portal');\n element.parentNode.insertBefore(anchorNode, element);\n this.outletElement.appendChild(element);\n this._attachedPortal = portal;\n super.setDisposeFn(() => {\n // We can't use `replaceWith` here because IE doesn't support it.\n if (anchorNode.parentNode) {\n anchorNode.parentNode.replaceChild(element, anchorNode);\n }\n });\n };\n this._document = _document;\n }\n /**\n * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n * @param portal Portal to be attached\n * @returns Reference to the created component.\n */\n attachComponentPortal(portal) {\n const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !resolver) {\n throw Error('Cannot attach component portal to outlet without a ComponentFactoryResolver.');\n }\n const componentFactory = resolver.resolveComponentFactory(portal.component);\n let componentRef;\n // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n // for the component (in terms of Angular's component tree, not rendering).\n // When the ViewContainerRef is missing, we use the factory to create the component directly\n // and then manually attach the view to the application.\n if (portal.viewContainerRef) {\n componentRef = portal.viewContainerRef.createComponent(componentFactory, portal.viewContainerRef.length, portal.injector || portal.viewContainerRef.injector, portal.projectableNodes || undefined);\n this.setDisposeFn(() => componentRef.destroy());\n } else {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !this._appRef) {\n throw Error('Cannot attach component portal to outlet without an ApplicationRef.');\n }\n componentRef = componentFactory.create(portal.injector || this._defaultInjector || Injector.NULL);\n this._appRef.attachView(componentRef.hostView);\n this.setDisposeFn(() => {\n // Verify that the ApplicationRef has registered views before trying to detach a host view.\n // This check also protects the `detachView` from being called on a destroyed ApplicationRef.\n if (this._appRef.viewCount > 0) {\n this._appRef.detachView(componentRef.hostView);\n }\n componentRef.destroy();\n });\n }\n // At this point the component has been instantiated, so we move it to the location in the DOM\n // where we want it to be rendered.\n this.outletElement.appendChild(this._getComponentRootNode(componentRef));\n this._attachedPortal = portal;\n return componentRef;\n }\n /**\n * Attaches a template portal to the DOM as an embedded view.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal(portal) {\n let viewContainer = portal.viewContainerRef;\n let viewRef = viewContainer.createEmbeddedView(portal.templateRef, portal.context, {\n injector: portal.injector\n });\n // The method `createEmbeddedView` will add the view as a child of the viewContainer.\n // But for the DomPortalOutlet the view can be added everywhere in the DOM\n // (e.g Overlay Container) To move the view to the specified host element. We just\n // re-append the existing root nodes.\n viewRef.rootNodes.forEach(rootNode => this.outletElement.appendChild(rootNode));\n // Note that we want to detect changes after the nodes have been moved so that\n // any directives inside the portal that are looking at the DOM inside a lifecycle\n // hook won't be invoked too early.\n viewRef.detectChanges();\n this.setDisposeFn(() => {\n let index = viewContainer.indexOf(viewRef);\n if (index !== -1) {\n viewContainer.remove(index);\n }\n });\n this._attachedPortal = portal;\n // TODO(jelbourn): Return locals from view.\n return viewRef;\n }\n /**\n * Clears out a portal from the DOM.\n */\n dispose() {\n super.dispose();\n this.outletElement.remove();\n }\n /** Gets the root HTMLElement for an instantiated component. */\n _getComponentRootNode(componentRef) {\n return componentRef.hostView.rootNodes[0];\n }\n}\n/**\n * @deprecated Use `DomPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass DomPortalHost extends DomPortalOutlet {}\n\n/**\n * Directive version of a `TemplatePortal`. Because the directive *is* a TemplatePortal,\n * the directive instance itself can be attached to a host, enabling declarative use of portals.\n */\nclass CdkPortal extends TemplatePortal {\n constructor(templateRef, viewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n static {\n this.ɵfac = function CdkPortal_Factory(t) {\n return new (t || CdkPortal)(i0.ɵɵdirectiveInject(i0.TemplateRef), i0.ɵɵdirectiveInject(i0.ViewContainerRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkPortal,\n selectors: [[\"\", \"cdkPortal\", \"\"]],\n exportAs: [\"cdkPortal\"],\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkPortal, [{\n type: Directive,\n args: [{\n selector: '[cdkPortal]',\n exportAs: 'cdkPortal'\n }]\n }], () => [{\n type: i0.TemplateRef\n }, {\n type: i0.ViewContainerRef\n }], null);\n})();\n/**\n * @deprecated Use `CdkPortal` instead.\n * @breaking-change 9.0.0\n */\nclass TemplatePortalDirective extends CdkPortal {\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵTemplatePortalDirective_BaseFactory;\n return function TemplatePortalDirective_Factory(t) {\n return (ɵTemplatePortalDirective_BaseFactory || (ɵTemplatePortalDirective_BaseFactory = i0.ɵɵgetInheritedFactory(TemplatePortalDirective)))(t || TemplatePortalDirective);\n };\n })();\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: TemplatePortalDirective,\n selectors: [[\"\", \"cdk-portal\", \"\"], [\"\", \"portal\", \"\"]],\n exportAs: [\"cdkPortal\"],\n features: [i0.ɵɵProvidersFeature([{\n provide: CdkPortal,\n useExisting: TemplatePortalDirective\n }]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(TemplatePortalDirective, [{\n type: Directive,\n args: [{\n selector: '[cdk-portal], [portal]',\n exportAs: 'cdkPortal',\n providers: [{\n provide: CdkPortal,\n useExisting: TemplatePortalDirective\n }]\n }]\n }], null, null);\n})();\n/**\n * Directive version of a PortalOutlet. Because the directive *is* a PortalOutlet, portals can be\n * directly attached to it, enabling declarative use.\n *\n * Usage:\n * ``\n */\nclass CdkPortalOutlet extends BasePortalOutlet {\n constructor(_componentFactoryResolver, _viewContainerRef,\n /**\n * @deprecated `_document` parameter to be made required.\n * @breaking-change 9.0.0\n */\n _document) {\n super();\n this._componentFactoryResolver = _componentFactoryResolver;\n this._viewContainerRef = _viewContainerRef;\n /** Whether the portal component is initialized. */\n this._isInitialized = false;\n /** Emits when a portal is attached to the outlet. */\n this.attached = new EventEmitter();\n /**\n * Attaches the given DomPortal to this PortalHost by moving all of the portal content into it.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = portal => {\n // @breaking-change 9.0.0 Remove check and error once the\n // `_document` constructor parameter is required.\n if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Cannot attach DOM portal without _document constructor parameter');\n }\n const element = portal.element;\n if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('DOM portal content must be attached to a parent node.');\n }\n // Anchor used to save the element's previous position so\n // that we can restore it when the portal is detached.\n const anchorNode = this._document.createComment('dom-portal');\n portal.setAttachedHost(this);\n element.parentNode.insertBefore(anchorNode, element);\n this._getRootNode().appendChild(element);\n this._attachedPortal = portal;\n super.setDisposeFn(() => {\n if (anchorNode.parentNode) {\n anchorNode.parentNode.replaceChild(element, anchorNode);\n }\n });\n };\n this._document = _document;\n }\n /** Portal associated with the Portal outlet. */\n get portal() {\n return this._attachedPortal;\n }\n set portal(portal) {\n // Ignore the cases where the `portal` is set to a falsy value before the lifecycle hooks have\n // run. This handles the cases where the user might do something like `
`\n // and attach a portal programmatically in the parent component. When Angular does the first CD\n // round, it will fire the setter with empty string, causing the user's content to be cleared.\n if (this.hasAttached() && !portal && !this._isInitialized) {\n return;\n }\n if (this.hasAttached()) {\n super.detach();\n }\n if (portal) {\n super.attach(portal);\n }\n this._attachedPortal = portal || null;\n }\n /** Component or view reference that is attached to the portal. */\n get attachedRef() {\n return this._attachedRef;\n }\n ngOnInit() {\n this._isInitialized = true;\n }\n ngOnDestroy() {\n super.dispose();\n this._attachedRef = this._attachedPortal = null;\n }\n /**\n * Attach the given ComponentPortal to this PortalOutlet using the ComponentFactoryResolver.\n *\n * @param portal Portal to be attached to the portal outlet.\n * @returns Reference to the created component.\n */\n attachComponentPortal(portal) {\n portal.setAttachedHost(this);\n // If the portal specifies an origin, use that as the logical location of the component\n // in the application tree. Otherwise use the location of this PortalOutlet.\n const viewContainerRef = portal.viewContainerRef != null ? portal.viewContainerRef : this._viewContainerRef;\n const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n const componentFactory = resolver.resolveComponentFactory(portal.component);\n const ref = viewContainerRef.createComponent(componentFactory, viewContainerRef.length, portal.injector || viewContainerRef.injector, portal.projectableNodes || undefined);\n // If we're using a view container that's different from the injected one (e.g. when the portal\n // specifies its own) we need to move the component into the outlet, otherwise it'll be rendered\n // inside of the alternate view container.\n if (viewContainerRef !== this._viewContainerRef) {\n this._getRootNode().appendChild(ref.hostView.rootNodes[0]);\n }\n super.setDisposeFn(() => ref.destroy());\n this._attachedPortal = portal;\n this._attachedRef = ref;\n this.attached.emit(ref);\n return ref;\n }\n /**\n * Attach the given TemplatePortal to this PortalHost as an embedded View.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal(portal) {\n portal.setAttachedHost(this);\n const viewRef = this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context, {\n injector: portal.injector\n });\n super.setDisposeFn(() => this._viewContainerRef.clear());\n this._attachedPortal = portal;\n this._attachedRef = viewRef;\n this.attached.emit(viewRef);\n return viewRef;\n }\n /** Gets the root node of the portal outlet. */\n _getRootNode() {\n const nativeElement = this._viewContainerRef.element.nativeElement;\n // The directive could be set on a template which will result in a comment\n // node being the root. Use the comment's parent node if that is the case.\n return nativeElement.nodeType === nativeElement.ELEMENT_NODE ? nativeElement : nativeElement.parentNode;\n }\n static {\n this.ɵfac = function CdkPortalOutlet_Factory(t) {\n return new (t || CdkPortalOutlet)(i0.ɵɵdirectiveInject(i0.ComponentFactoryResolver), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(DOCUMENT));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkPortalOutlet,\n selectors: [[\"\", \"cdkPortalOutlet\", \"\"]],\n inputs: {\n portal: [\"cdkPortalOutlet\", \"portal\"]\n },\n outputs: {\n attached: \"attached\"\n },\n exportAs: [\"cdkPortalOutlet\"],\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkPortalOutlet, [{\n type: Directive,\n args: [{\n selector: '[cdkPortalOutlet]',\n exportAs: 'cdkPortalOutlet',\n inputs: ['portal: cdkPortalOutlet']\n }]\n }], () => [{\n type: i0.ComponentFactoryResolver\n }, {\n type: i0.ViewContainerRef\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }], {\n attached: [{\n type: Output\n }]\n });\n})();\n/**\n * @deprecated Use `CdkPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass PortalHostDirective extends CdkPortalOutlet {\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵPortalHostDirective_BaseFactory;\n return function PortalHostDirective_Factory(t) {\n return (ɵPortalHostDirective_BaseFactory || (ɵPortalHostDirective_BaseFactory = i0.ɵɵgetInheritedFactory(PortalHostDirective)))(t || PortalHostDirective);\n };\n })();\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: PortalHostDirective,\n selectors: [[\"\", \"cdkPortalHost\", \"\"], [\"\", \"portalHost\", \"\"]],\n inputs: {\n portal: [\"cdkPortalHost\", \"portal\"]\n },\n exportAs: [\"cdkPortalHost\"],\n features: [i0.ɵɵProvidersFeature([{\n provide: CdkPortalOutlet,\n useExisting: PortalHostDirective\n }]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(PortalHostDirective, [{\n type: Directive,\n args: [{\n selector: '[cdkPortalHost], [portalHost]',\n exportAs: 'cdkPortalHost',\n inputs: ['portal: cdkPortalHost'],\n providers: [{\n provide: CdkPortalOutlet,\n useExisting: PortalHostDirective\n }]\n }]\n }], null, null);\n})();\nclass PortalModule {\n static {\n this.ɵfac = function PortalModule_Factory(t) {\n return new (t || PortalModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: PortalModule,\n declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],\n exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(PortalModule, [{\n type: NgModule,\n args: [{\n exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],\n declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective]\n }]\n }], null, null);\n})();\n\n/**\n * Custom injector to be used when providing custom\n * injection tokens to components inside a portal.\n * @docs-private\n * @deprecated Use `Injector.create` instead.\n * @breaking-change 11.0.0\n */\nclass PortalInjector {\n constructor(_parentInjector, _customTokens) {\n this._parentInjector = _parentInjector;\n this._customTokens = _customTokens;\n }\n get(token, notFoundValue) {\n const value = this._customTokens.get(token);\n if (typeof value !== 'undefined') {\n return value;\n }\n return this._parentInjector.get(token, notFoundValue);\n }\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BasePortalHost, BasePortalOutlet, CdkPortal, CdkPortalOutlet, ComponentPortal, DomPortal, DomPortalHost, DomPortalOutlet, Portal, PortalHostDirective, PortalInjector, PortalModule, TemplatePortal, TemplatePortalDirective };\n", "import { style, state, animate, transition, trigger, stagger, query } from '@angular/animations';\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass AnimationDuration {\n static { this.SLOW = '0.3s'; } // Modal\n static { this.BASE = '0.2s'; }\n static { this.FAST = '0.1s'; } // Tooltip\n}\nclass AnimationCurves {\n static { this.EASE_BASE_OUT = 'cubic-bezier(0.7, 0.3, 0.1, 1)'; }\n static { this.EASE_BASE_IN = 'cubic-bezier(0.9, 0, 0.3, 0.7)'; }\n static { this.EASE_OUT = 'cubic-bezier(0.215, 0.61, 0.355, 1)'; }\n static { this.EASE_IN = 'cubic-bezier(0.55, 0.055, 0.675, 0.19)'; }\n static { this.EASE_IN_OUT = 'cubic-bezier(0.645, 0.045, 0.355, 1)'; }\n static { this.EASE_OUT_BACK = 'cubic-bezier(0.12, 0.4, 0.29, 1.46)'; }\n static { this.EASE_IN_BACK = 'cubic-bezier(0.71, -0.46, 0.88, 0.6)'; }\n static { this.EASE_IN_OUT_BACK = 'cubic-bezier(0.71, -0.46, 0.29, 1.46)'; }\n static { this.EASE_OUT_CIRC = 'cubic-bezier(0.08, 0.82, 0.17, 1)'; }\n static { this.EASE_IN_CIRC = 'cubic-bezier(0.6, 0.04, 0.98, 0.34)'; }\n static { this.EASE_IN_OUT_CIRC = 'cubic-bezier(0.78, 0.14, 0.15, 0.86)'; }\n static { this.EASE_OUT_QUINT = 'cubic-bezier(0.23, 1, 0.32, 1)'; }\n static { this.EASE_IN_QUINT = 'cubic-bezier(0.755, 0.05, 0.855, 0.06)'; }\n static { this.EASE_IN_OUT_QUINT = 'cubic-bezier(0.86, 0, 0.07, 1)'; }\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst collapseMotion = trigger('collapseMotion', [\n state('expanded', style({ height: '*' })),\n state('collapsed', style({ height: 0, overflow: 'hidden' })),\n state('hidden', style({ height: 0, overflow: 'hidden', borderTopWidth: '0' })),\n transition('expanded => collapsed', animate(`150ms ${AnimationCurves.EASE_IN_OUT}`)),\n transition('expanded => hidden', animate(`150ms ${AnimationCurves.EASE_IN_OUT}`)),\n transition('collapsed => expanded', animate(`150ms ${AnimationCurves.EASE_IN_OUT}`)),\n transition('hidden => expanded', animate(`150ms ${AnimationCurves.EASE_IN_OUT}`))\n]);\nconst treeCollapseMotion = trigger('treeCollapseMotion', [\n transition('* => *', [\n query('nz-tree-node:leave,nz-tree-builtin-node:leave', [\n style({ overflow: 'hidden' }),\n stagger(0, [\n animate(`150ms ${AnimationCurves.EASE_IN_OUT}`, style({ height: 0, opacity: 0, 'padding-bottom': 0 }))\n ])\n ], {\n optional: true\n }),\n query('nz-tree-node:enter,nz-tree-builtin-node:enter', [\n style({ overflow: 'hidden', height: 0, opacity: 0, 'padding-bottom': 0 }),\n stagger(0, [\n animate(`150ms ${AnimationCurves.EASE_IN_OUT}`, style({ overflow: 'hidden', height: '*', opacity: '*', 'padding-bottom': '*' }))\n ])\n ], {\n optional: true\n })\n ])\n]);\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst fadeMotion = trigger('fadeMotion', [\n transition(':enter', [style({ opacity: 0 }), animate(`${AnimationDuration.BASE}`, style({ opacity: 1 }))]),\n transition(':leave', [style({ opacity: 1 }), animate(`${AnimationDuration.BASE}`, style({ opacity: 0 }))])\n]);\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst helpMotion = trigger('helpMotion', [\n transition(':enter', [\n style({\n opacity: 0,\n transform: 'translateY(-5px)'\n }),\n animate(`${AnimationDuration.SLOW} ${AnimationCurves.EASE_IN_OUT}`, style({\n opacity: 1,\n transform: 'translateY(0)'\n }))\n ]),\n transition(':leave', [\n style({\n opacity: 1,\n transform: 'translateY(0)'\n }),\n animate(`${AnimationDuration.SLOW} ${AnimationCurves.EASE_IN_OUT}`, style({\n opacity: 0,\n transform: 'translateY(-5px)'\n }))\n ])\n]);\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst moveUpMotion = trigger('moveUpMotion', [\n transition('* => enter', [\n style({\n transformOrigin: '0 0',\n transform: 'translateY(-100%)',\n opacity: 0\n }),\n animate(`${AnimationDuration.BASE}`, style({\n transformOrigin: '0 0',\n transform: 'translateY(0%)',\n opacity: 1\n }))\n ]),\n transition('* => leave', [\n style({\n transformOrigin: '0 0',\n transform: 'translateY(0%)',\n opacity: 1\n }),\n animate(`${AnimationDuration.BASE}`, style({\n transformOrigin: '0 0',\n transform: 'translateY(-100%)',\n opacity: 0\n }))\n ])\n]);\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst notificationMotion = trigger('notificationMotion', [\n state('enterRight', style({ opacity: 1, transform: 'translateX(0)' })),\n transition('* => enterRight', [style({ opacity: 0, transform: 'translateX(5%)' }), animate('100ms linear')]),\n state('enterLeft', style({ opacity: 1, transform: 'translateX(0)' })),\n transition('* => enterLeft', [style({ opacity: 0, transform: 'translateX(-5%)' }), animate('100ms linear')]),\n state('enterTop', style({ opacity: 1, transform: 'translateY(0)' })),\n transition('* => enterTop', [style({ opacity: 0, transform: 'translateY(-5%)' }), animate('100ms linear')]),\n state('enterBottom', style({ opacity: 1, transform: 'translateY(0)' })),\n transition('* => enterBottom', [style({ opacity: 0, transform: 'translateY(5%)' }), animate('100ms linear')]),\n state('leave', style({\n opacity: 0,\n transform: 'scaleY(0.8)',\n transformOrigin: '0% 0%'\n })),\n transition('* => leave', [\n style({\n opacity: 1,\n transform: 'scaleY(1)',\n transformOrigin: '0% 0%'\n }),\n animate('100ms linear')\n ])\n]);\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst ANIMATION_TRANSITION_IN = `${AnimationDuration.BASE} ${AnimationCurves.EASE_OUT_QUINT}`;\nconst ANIMATION_TRANSITION_OUT = `${AnimationDuration.BASE} ${AnimationCurves.EASE_IN_QUINT}`;\nconst slideMotion = trigger('slideMotion', [\n state('void', style({\n opacity: 0,\n transform: 'scaleY(0.8)'\n })),\n state('enter', style({\n opacity: 1,\n transform: 'scaleY(1)'\n })),\n transition('void => *', [animate(ANIMATION_TRANSITION_IN)]),\n transition('* => void', [animate(ANIMATION_TRANSITION_OUT)])\n]);\nconst slideAlertMotion = trigger('slideAlertMotion', [\n transition(':leave', [\n style({ opacity: 1, transform: 'scaleY(1)', transformOrigin: '0% 0%' }),\n animate(`${AnimationDuration.SLOW} ${AnimationCurves.EASE_IN_OUT_CIRC}`, style({\n opacity: 0,\n transform: 'scaleY(0)',\n transformOrigin: '0% 0%'\n }))\n ])\n]);\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst zoomBigMotion = trigger('zoomBigMotion', [\n transition('void => active', [\n style({ opacity: 0, transform: 'scale(0.8)' }),\n animate(`${AnimationDuration.BASE} ${AnimationCurves.EASE_OUT_CIRC}`, style({\n opacity: 1,\n transform: 'scale(1)'\n }))\n ]),\n transition('active => void', [\n style({ opacity: 1, transform: 'scale(1)' }),\n animate(`${AnimationDuration.BASE} ${AnimationCurves.EASE_IN_OUT_CIRC}`, style({\n opacity: 0,\n transform: 'scale(0.8)'\n }))\n ])\n]);\nconst zoomBadgeMotion = trigger('zoomBadgeMotion', [\n transition(':enter', [\n style({ opacity: 0, transform: 'scale(0) translate(50%, -50%)' }),\n animate(`${AnimationDuration.SLOW} ${AnimationCurves.EASE_OUT_BACK}`, style({\n opacity: 1,\n transform: 'scale(1) translate(50%, -50%)'\n }))\n ]),\n transition(':leave', [\n style({ opacity: 1, transform: 'scale(1) translate(50%, -50%)' }),\n animate(`${AnimationDuration.SLOW} ${AnimationCurves.EASE_IN_BACK}`, style({\n opacity: 0,\n transform: 'scale(0) translate(50%, -50%)'\n }))\n ])\n]);\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst thumbMotion = trigger('thumbMotion', [\n state('from', style({ transform: 'translateX({{ transform }}px)', width: '{{ width }}px' }), {\n params: { transform: 0, width: 0 }\n }),\n state('to', style({ transform: 'translateX({{ transform }}px)', width: '{{ width }}px' }), {\n params: { transform: 100, width: 0 }\n }),\n transition('from => to', animate(`300ms ${AnimationCurves.EASE_IN_OUT}`))\n]);\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AnimationCurves, AnimationDuration, collapseMotion, fadeMotion, helpMotion, moveUpMotion, notificationMotion, slideAlertMotion, slideMotion, thumbMotion, treeCollapseMotion, zoomBadgeMotion, zoomBigMotion };\n\n", "import { ConnectableObservable, isObservable, of, Subject } from 'rxjs';\nimport * as i0 from '@angular/core';\nimport { Injectable, InjectionToken } from '@angular/core';\nclass DataSource {}\n/** Checks whether an object is a data source. */\nfunction isDataSource(value) {\n // Check if the value is a DataSource by observing if it has a connect function. Cannot\n // be checked as an `instanceof DataSource` since people could create their own sources\n // that match the interface, but don't extend DataSource. We also can't use `isObservable`\n // here, because of some internal apps.\n return value && typeof value.connect === 'function' && !(value instanceof ConnectableObservable);\n}\n\n/** DataSource wrapper for a native array. */\nclass ArrayDataSource extends DataSource {\n constructor(_data) {\n super();\n this._data = _data;\n }\n connect() {\n return isObservable(this._data) ? this._data : of(this._data);\n }\n disconnect() {}\n}\n\n/**\n * A repeater that destroys views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will always construct a new embedded view for each item.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\nclass _DisposeViewRepeaterStrategy {\n applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n let view;\n let operation;\n if (record.previousIndex == null) {\n const insertContext = itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n view = viewContainerRef.createEmbeddedView(insertContext.templateRef, insertContext.context, insertContext.index);\n operation = 1 /* _ViewRepeaterOperation.INSERTED */;\n } else if (currentIndex == null) {\n viewContainerRef.remove(adjustedPreviousIndex);\n operation = 3 /* _ViewRepeaterOperation.REMOVED */;\n } else {\n view = viewContainerRef.get(adjustedPreviousIndex);\n viewContainerRef.move(view, currentIndex);\n operation = 2 /* _ViewRepeaterOperation.MOVED */;\n }\n\n if (itemViewChanged) {\n itemViewChanged({\n context: view?.context,\n operation,\n record\n });\n }\n });\n }\n detach() {}\n}\n\n/**\n * A repeater that caches views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will reuse one of the cached views instead of creating a new\n * embedded view. Recycling cached views reduces the quantity of expensive DOM\n * inserts.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\nclass _RecycleViewRepeaterStrategy {\n constructor() {\n /**\n * The size of the cache used to store unused views.\n * Setting the cache size to `0` will disable caching. Defaults to 20 views.\n */\n this.viewCacheSize = 20;\n /**\n * View cache that stores embedded view instances that have been previously stamped out,\n * but don't are not currently rendered. The view repeater will reuse these views rather than\n * creating brand new ones.\n *\n * TODO(michaeljamesparsons) Investigate whether using a linked list would improve performance.\n */\n this._viewCache = [];\n }\n /** Apply changes to the DOM. */\n applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n // Rearrange the views to put them in the right location.\n changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n let view;\n let operation;\n if (record.previousIndex == null) {\n // Item added.\n const viewArgsFactory = () => itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n view = this._insertView(viewArgsFactory, currentIndex, viewContainerRef, itemValueResolver(record));\n operation = view ? 1 /* _ViewRepeaterOperation.INSERTED */ : 0 /* _ViewRepeaterOperation.REPLACED */;\n } else if (currentIndex == null) {\n // Item removed.\n this._detachAndCacheView(adjustedPreviousIndex, viewContainerRef);\n operation = 3 /* _ViewRepeaterOperation.REMOVED */;\n } else {\n // Item moved.\n view = this._moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, itemValueResolver(record));\n operation = 2 /* _ViewRepeaterOperation.MOVED */;\n }\n\n if (itemViewChanged) {\n itemViewChanged({\n context: view?.context,\n operation,\n record\n });\n }\n });\n }\n detach() {\n for (const view of this._viewCache) {\n view.destroy();\n }\n this._viewCache = [];\n }\n /**\n * Inserts a view for a new item, either from the cache or by creating a new\n * one. Returns `undefined` if the item was inserted into a cached view.\n */\n _insertView(viewArgsFactory, currentIndex, viewContainerRef, value) {\n const cachedView = this._insertViewFromCache(currentIndex, viewContainerRef);\n if (cachedView) {\n cachedView.context.$implicit = value;\n return undefined;\n }\n const viewArgs = viewArgsFactory();\n return viewContainerRef.createEmbeddedView(viewArgs.templateRef, viewArgs.context, viewArgs.index);\n }\n /** Detaches the view at the given index and inserts into the view cache. */\n _detachAndCacheView(index, viewContainerRef) {\n const detachedView = viewContainerRef.detach(index);\n this._maybeCacheView(detachedView, viewContainerRef);\n }\n /** Moves view at the previous index to the current index. */\n _moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, value) {\n const view = viewContainerRef.get(adjustedPreviousIndex);\n viewContainerRef.move(view, currentIndex);\n view.context.$implicit = value;\n return view;\n }\n /**\n * Cache the given detached view. If the cache is full, the view will be\n * destroyed.\n */\n _maybeCacheView(view, viewContainerRef) {\n if (this._viewCache.length < this.viewCacheSize) {\n this._viewCache.push(view);\n } else {\n const index = viewContainerRef.indexOf(view);\n // The host component could remove views from the container outside of\n // the view repeater. It's unlikely this will occur, but just in case,\n // destroy the view on its own, otherwise destroy it through the\n // container to ensure that all the references are removed.\n if (index === -1) {\n view.destroy();\n } else {\n viewContainerRef.remove(index);\n }\n }\n }\n /** Inserts a recycled view from the cache at the given index. */\n _insertViewFromCache(index, viewContainerRef) {\n const cachedView = this._viewCache.pop();\n if (cachedView) {\n viewContainerRef.insert(cachedView, index);\n }\n return cachedView || null;\n }\n}\n\n/**\n * Class to be used to power selecting one or more options from a list.\n */\nclass SelectionModel {\n /** Selected values. */\n get selected() {\n if (!this._selected) {\n this._selected = Array.from(this._selection.values());\n }\n return this._selected;\n }\n constructor(_multiple = false, initiallySelectedValues, _emitChanges = true, compareWith) {\n this._multiple = _multiple;\n this._emitChanges = _emitChanges;\n this.compareWith = compareWith;\n /** Currently-selected values. */\n this._selection = new Set();\n /** Keeps track of the deselected options that haven't been emitted by the change event. */\n this._deselectedToEmit = [];\n /** Keeps track of the selected options that haven't been emitted by the change event. */\n this._selectedToEmit = [];\n /** Event emitted when the value has changed. */\n this.changed = new Subject();\n if (initiallySelectedValues && initiallySelectedValues.length) {\n if (_multiple) {\n initiallySelectedValues.forEach(value => this._markSelected(value));\n } else {\n this._markSelected(initiallySelectedValues[0]);\n }\n // Clear the array in order to avoid firing the change event for preselected values.\n this._selectedToEmit.length = 0;\n }\n }\n /**\n * Selects a value or an array of values.\n * @param values The values to select\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n select(...values) {\n this._verifyValueAssignment(values);\n values.forEach(value => this._markSelected(value));\n const changed = this._hasQueuedChanges();\n this._emitChangeEvent();\n return changed;\n }\n /**\n * Deselects a value or an array of values.\n * @param values The values to deselect\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n deselect(...values) {\n this._verifyValueAssignment(values);\n values.forEach(value => this._unmarkSelected(value));\n const changed = this._hasQueuedChanges();\n this._emitChangeEvent();\n return changed;\n }\n /**\n * Sets the selected values\n * @param values The new selected values\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n setSelection(...values) {\n this._verifyValueAssignment(values);\n const oldValues = this.selected;\n const newSelectedSet = new Set(values);\n values.forEach(value => this._markSelected(value));\n oldValues.filter(value => !newSelectedSet.has(value)).forEach(value => this._unmarkSelected(value));\n const changed = this._hasQueuedChanges();\n this._emitChangeEvent();\n return changed;\n }\n /**\n * Toggles a value between selected and deselected.\n * @param value The value to toggle\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n toggle(value) {\n return this.isSelected(value) ? this.deselect(value) : this.select(value);\n }\n /**\n * Clears all of the selected values.\n * @param flushEvent Whether to flush the changes in an event.\n * If false, the changes to the selection will be flushed along with the next event.\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n clear(flushEvent = true) {\n this._unmarkAll();\n const changed = this._hasQueuedChanges();\n if (flushEvent) {\n this._emitChangeEvent();\n }\n return changed;\n }\n /**\n * Determines whether a value is selected.\n */\n isSelected(value) {\n return this._selection.has(this._getConcreteValue(value));\n }\n /**\n * Determines whether the model does not have a value.\n */\n isEmpty() {\n return this._selection.size === 0;\n }\n /**\n * Determines whether the model has a value.\n */\n hasValue() {\n return !this.isEmpty();\n }\n /**\n * Sorts the selected values based on a predicate function.\n */\n sort(predicate) {\n if (this._multiple && this.selected) {\n this._selected.sort(predicate);\n }\n }\n /**\n * Gets whether multiple values can be selected.\n */\n isMultipleSelection() {\n return this._multiple;\n }\n /** Emits a change event and clears the records of selected and deselected values. */\n _emitChangeEvent() {\n // Clear the selected values so they can be re-cached.\n this._selected = null;\n if (this._selectedToEmit.length || this._deselectedToEmit.length) {\n this.changed.next({\n source: this,\n added: this._selectedToEmit,\n removed: this._deselectedToEmit\n });\n this._deselectedToEmit = [];\n this._selectedToEmit = [];\n }\n }\n /** Selects a value. */\n _markSelected(value) {\n value = this._getConcreteValue(value);\n if (!this.isSelected(value)) {\n if (!this._multiple) {\n this._unmarkAll();\n }\n if (!this.isSelected(value)) {\n this._selection.add(value);\n }\n if (this._emitChanges) {\n this._selectedToEmit.push(value);\n }\n }\n }\n /** Deselects a value. */\n _unmarkSelected(value) {\n value = this._getConcreteValue(value);\n if (this.isSelected(value)) {\n this._selection.delete(value);\n if (this._emitChanges) {\n this._deselectedToEmit.push(value);\n }\n }\n }\n /** Clears out the selected values. */\n _unmarkAll() {\n if (!this.isEmpty()) {\n this._selection.forEach(value => this._unmarkSelected(value));\n }\n }\n /**\n * Verifies the value assignment and throws an error if the specified value array is\n * including multiple values while the selection model is not supporting multiple values.\n */\n _verifyValueAssignment(values) {\n if (values.length > 1 && !this._multiple && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMultipleValuesInSingleSelectionError();\n }\n }\n /** Whether there are queued up change to be emitted. */\n _hasQueuedChanges() {\n return !!(this._deselectedToEmit.length || this._selectedToEmit.length);\n }\n /** Returns a value that is comparable to inputValue by applying compareWith function, returns the same inputValue otherwise. */\n _getConcreteValue(inputValue) {\n if (!this.compareWith) {\n return inputValue;\n } else {\n for (let selectedValue of this._selection) {\n if (this.compareWith(inputValue, selectedValue)) {\n return selectedValue;\n }\n }\n return inputValue;\n }\n }\n}\n/**\n * Returns an error that reports that multiple values are passed into a selection model\n * with a single value.\n * @docs-private\n */\nfunction getMultipleValuesInSingleSelectionError() {\n return Error('Cannot pass multiple values into SelectionModel with single-value mode.');\n}\n\n/**\n * Class to coordinate unique selection based on name.\n * Intended to be consumed as an Angular service.\n * This service is needed because native radio change events are only fired on the item currently\n * being selected, and we still need to uncheck the previous selection.\n *\n * This service does not *store* any IDs and names because they may change at any time, so it is\n * less error-prone if they are simply passed through when the events occur.\n */\nclass UniqueSelectionDispatcher {\n constructor() {\n this._listeners = [];\n }\n /**\n * Notify other items that selection for the given name has been set.\n * @param id ID of the item.\n * @param name Name of the item.\n */\n notify(id, name) {\n for (let listener of this._listeners) {\n listener(id, name);\n }\n }\n /**\n * Listen for future changes to item selection.\n * @return Function used to deregister listener\n */\n listen(listener) {\n this._listeners.push(listener);\n return () => {\n this._listeners = this._listeners.filter(registered => {\n return listener !== registered;\n });\n };\n }\n ngOnDestroy() {\n this._listeners = [];\n }\n static {\n this.ɵfac = function UniqueSelectionDispatcher_Factory(t) {\n return new (t || UniqueSelectionDispatcher)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: UniqueSelectionDispatcher,\n factory: UniqueSelectionDispatcher.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(UniqueSelectionDispatcher, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\n\n/**\n * Injection token for {@link _ViewRepeater}. This token is for use by Angular Material only.\n * @docs-private\n */\nconst _VIEW_REPEATER_STRATEGY = new InjectionToken('_ViewRepeater');\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ArrayDataSource, DataSource, SelectionModel, UniqueSelectionDispatcher, _DisposeViewRepeaterStrategy, _RecycleViewRepeaterStrategy, _VIEW_REPEATER_STRATEGY, getMultipleValuesInSingleSelectionError, isDataSource };\n", "import { coerceNumberProperty, coerceElement } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, forwardRef, Directive, Input, Injectable, Optional, Inject, inject, booleanAttribute, Component, ViewEncapsulation, ChangeDetectionStrategy, Output, ViewChild, SkipSelf, ElementRef, NgModule } from '@angular/core';\nimport { Subject, of, Observable, fromEvent, animationFrameScheduler, asapScheduler, Subscription, isObservable } from 'rxjs';\nimport { distinctUntilChanged, auditTime, filter, takeUntil, startWith, pairwise, switchMap, shareReplay } from 'rxjs/operators';\nimport * as i1 from '@angular/cdk/platform';\nimport { getRtlScrollAxisType, supportsScrollBehavior, Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport * as i2 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport * as i2$1 from '@angular/cdk/collections';\nimport { isDataSource, ArrayDataSource, _VIEW_REPEATER_STRATEGY, _RecycleViewRepeaterStrategy } from '@angular/cdk/collections';\n\n/** The injection token used to specify the virtual scrolling strategy. */\nconst _c0 = [\"contentWrapper\"];\nconst _c1 = [\"*\"];\nconst VIRTUAL_SCROLL_STRATEGY = new InjectionToken('VIRTUAL_SCROLL_STRATEGY');\n\n/** Virtual scrolling strategy for lists with items of known fixed size. */\nclass FixedSizeVirtualScrollStrategy {\n /**\n * @param itemSize The size of the items in the virtually scrolling list.\n * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n */\n constructor(itemSize, minBufferPx, maxBufferPx) {\n this._scrolledIndexChange = new Subject();\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n this.scrolledIndexChange = this._scrolledIndexChange.pipe(distinctUntilChanged());\n /** The attached viewport. */\n this._viewport = null;\n this._itemSize = itemSize;\n this._minBufferPx = minBufferPx;\n this._maxBufferPx = maxBufferPx;\n }\n /**\n * Attaches this scroll strategy to a viewport.\n * @param viewport The viewport to attach this strategy to.\n */\n attach(viewport) {\n this._viewport = viewport;\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** Detaches this scroll strategy from the currently attached viewport. */\n detach() {\n this._scrolledIndexChange.complete();\n this._viewport = null;\n }\n /**\n * Update the item size and buffer size.\n * @param itemSize The size of the items in the virtually scrolling list.\n * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n */\n updateItemAndBufferSize(itemSize, minBufferPx, maxBufferPx) {\n if (maxBufferPx < minBufferPx && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CDK virtual scroll: maxBufferPx must be greater than or equal to minBufferPx');\n }\n this._itemSize = itemSize;\n this._minBufferPx = minBufferPx;\n this._maxBufferPx = maxBufferPx;\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onContentScrolled() {\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onDataLengthChanged() {\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onContentRendered() {\n /* no-op */\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onRenderedOffsetChanged() {\n /* no-op */\n }\n /**\n * Scroll to the offset for the given index.\n * @param index The index of the element to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling.\n */\n scrollToIndex(index, behavior) {\n if (this._viewport) {\n this._viewport.scrollToOffset(index * this._itemSize, behavior);\n }\n }\n /** Update the viewport's total content size. */\n _updateTotalContentSize() {\n if (!this._viewport) {\n return;\n }\n this._viewport.setTotalContentSize(this._viewport.getDataLength() * this._itemSize);\n }\n /** Update the viewport's rendered range. */\n _updateRenderedRange() {\n if (!this._viewport) {\n return;\n }\n const renderedRange = this._viewport.getRenderedRange();\n const newRange = {\n start: renderedRange.start,\n end: renderedRange.end\n };\n const viewportSize = this._viewport.getViewportSize();\n const dataLength = this._viewport.getDataLength();\n let scrollOffset = this._viewport.measureScrollOffset();\n // Prevent NaN as result when dividing by zero.\n let firstVisibleIndex = this._itemSize > 0 ? scrollOffset / this._itemSize : 0;\n // If user scrolls to the bottom of the list and data changes to a smaller list\n if (newRange.end > dataLength) {\n // We have to recalculate the first visible index based on new data length and viewport size.\n const maxVisibleItems = Math.ceil(viewportSize / this._itemSize);\n const newVisibleIndex = Math.max(0, Math.min(firstVisibleIndex, dataLength - maxVisibleItems));\n // If first visible index changed we must update scroll offset to handle start/end buffers\n // Current range must also be adjusted to cover the new position (bottom of new list).\n if (firstVisibleIndex != newVisibleIndex) {\n firstVisibleIndex = newVisibleIndex;\n scrollOffset = newVisibleIndex * this._itemSize;\n newRange.start = Math.floor(firstVisibleIndex);\n }\n newRange.end = Math.max(0, Math.min(dataLength, newRange.start + maxVisibleItems));\n }\n const startBuffer = scrollOffset - newRange.start * this._itemSize;\n if (startBuffer < this._minBufferPx && newRange.start != 0) {\n const expandStart = Math.ceil((this._maxBufferPx - startBuffer) / this._itemSize);\n newRange.start = Math.max(0, newRange.start - expandStart);\n newRange.end = Math.min(dataLength, Math.ceil(firstVisibleIndex + (viewportSize + this._minBufferPx) / this._itemSize));\n } else {\n const endBuffer = newRange.end * this._itemSize - (scrollOffset + viewportSize);\n if (endBuffer < this._minBufferPx && newRange.end != dataLength) {\n const expandEnd = Math.ceil((this._maxBufferPx - endBuffer) / this._itemSize);\n if (expandEnd > 0) {\n newRange.end = Math.min(dataLength, newRange.end + expandEnd);\n newRange.start = Math.max(0, Math.floor(firstVisibleIndex - this._minBufferPx / this._itemSize));\n }\n }\n }\n this._viewport.setRenderedRange(newRange);\n this._viewport.setRenderedContentOffset(this._itemSize * newRange.start);\n this._scrolledIndexChange.next(Math.floor(firstVisibleIndex));\n }\n}\n/**\n * Provider factory for `FixedSizeVirtualScrollStrategy` that simply extracts the already created\n * `FixedSizeVirtualScrollStrategy` from the given directive.\n * @param fixedSizeDir The instance of `CdkFixedSizeVirtualScroll` to extract the\n * `FixedSizeVirtualScrollStrategy` from.\n */\nfunction _fixedSizeVirtualScrollStrategyFactory(fixedSizeDir) {\n return fixedSizeDir._scrollStrategy;\n}\n/** A virtual scroll strategy that supports fixed-size items. */\nclass CdkFixedSizeVirtualScroll {\n constructor() {\n this._itemSize = 20;\n this._minBufferPx = 100;\n this._maxBufferPx = 200;\n /** The scroll strategy used by this directive. */\n this._scrollStrategy = new FixedSizeVirtualScrollStrategy(this.itemSize, this.minBufferPx, this.maxBufferPx);\n }\n /** The size of the items in the list (in pixels). */\n get itemSize() {\n return this._itemSize;\n }\n set itemSize(value) {\n this._itemSize = coerceNumberProperty(value);\n }\n /**\n * The minimum amount of buffer rendered beyond the viewport (in pixels).\n * If the amount of buffer dips below this number, more items will be rendered. Defaults to 100px.\n */\n get minBufferPx() {\n return this._minBufferPx;\n }\n set minBufferPx(value) {\n this._minBufferPx = coerceNumberProperty(value);\n }\n /**\n * The number of pixels worth of buffer to render for when rendering new items. Defaults to 200px.\n */\n get maxBufferPx() {\n return this._maxBufferPx;\n }\n set maxBufferPx(value) {\n this._maxBufferPx = coerceNumberProperty(value);\n }\n ngOnChanges() {\n this._scrollStrategy.updateItemAndBufferSize(this.itemSize, this.minBufferPx, this.maxBufferPx);\n }\n static {\n this.ɵfac = function CdkFixedSizeVirtualScroll_Factory(t) {\n return new (t || CdkFixedSizeVirtualScroll)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkFixedSizeVirtualScroll,\n selectors: [[\"cdk-virtual-scroll-viewport\", \"itemSize\", \"\"]],\n inputs: {\n itemSize: \"itemSize\",\n minBufferPx: \"minBufferPx\",\n maxBufferPx: \"maxBufferPx\"\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _fixedSizeVirtualScrollStrategyFactory,\n deps: [forwardRef(() => CdkFixedSizeVirtualScroll)]\n }]), i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkFixedSizeVirtualScroll, [{\n type: Directive,\n args: [{\n selector: 'cdk-virtual-scroll-viewport[itemSize]',\n standalone: true,\n providers: [{\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _fixedSizeVirtualScrollStrategyFactory,\n deps: [forwardRef(() => CdkFixedSizeVirtualScroll)]\n }]\n }]\n }], null, {\n itemSize: [{\n type: Input\n }],\n minBufferPx: [{\n type: Input\n }],\n maxBufferPx: [{\n type: Input\n }]\n });\n})();\n\n/** Time in ms to throttle the scrolling events by default. */\nconst DEFAULT_SCROLL_TIME = 20;\n/**\n * Service contained all registered Scrollable references and emits an event when any one of the\n * Scrollable references emit a scrolled event.\n */\nclass ScrollDispatcher {\n constructor(_ngZone, _platform, document) {\n this._ngZone = _ngZone;\n this._platform = _platform;\n /** Subject for notifying that a registered scrollable reference element has been scrolled. */\n this._scrolled = new Subject();\n /** Keeps track of the global `scroll` and `resize` subscriptions. */\n this._globalSubscription = null;\n /** Keeps track of the amount of subscriptions to `scrolled`. Used for cleaning up afterwards. */\n this._scrolledCount = 0;\n /**\n * Map of all the scrollable references that are registered with the service and their\n * scroll event subscriptions.\n */\n this.scrollContainers = new Map();\n this._document = document;\n }\n /**\n * Registers a scrollable instance with the service and listens for its scrolled events. When the\n * scrollable is scrolled, the service emits the event to its scrolled observable.\n * @param scrollable Scrollable instance to be registered.\n */\n register(scrollable) {\n if (!this.scrollContainers.has(scrollable)) {\n this.scrollContainers.set(scrollable, scrollable.elementScrolled().subscribe(() => this._scrolled.next(scrollable)));\n }\n }\n /**\n * De-registers a Scrollable reference and unsubscribes from its scroll event observable.\n * @param scrollable Scrollable instance to be deregistered.\n */\n deregister(scrollable) {\n const scrollableReference = this.scrollContainers.get(scrollable);\n if (scrollableReference) {\n scrollableReference.unsubscribe();\n this.scrollContainers.delete(scrollable);\n }\n }\n /**\n * Returns an observable that emits an event whenever any of the registered Scrollable\n * references (or window, document, or body) fire a scrolled event. Can provide a time in ms\n * to override the default \"throttle\" time.\n *\n * **Note:** in order to avoid hitting change detection for every scroll event,\n * all of the events emitted from this stream will be run outside the Angular zone.\n * If you need to update any data bindings as a result of a scroll event, you have\n * to run the callback using `NgZone.run`.\n */\n scrolled(auditTimeInMs = DEFAULT_SCROLL_TIME) {\n if (!this._platform.isBrowser) {\n return of();\n }\n return new Observable(observer => {\n if (!this._globalSubscription) {\n this._addGlobalListener();\n }\n // In the case of a 0ms delay, use an observable without auditTime\n // since it does add a perceptible delay in processing overhead.\n const subscription = auditTimeInMs > 0 ? this._scrolled.pipe(auditTime(auditTimeInMs)).subscribe(observer) : this._scrolled.subscribe(observer);\n this._scrolledCount++;\n return () => {\n subscription.unsubscribe();\n this._scrolledCount--;\n if (!this._scrolledCount) {\n this._removeGlobalListener();\n }\n };\n });\n }\n ngOnDestroy() {\n this._removeGlobalListener();\n this.scrollContainers.forEach((_, container) => this.deregister(container));\n this._scrolled.complete();\n }\n /**\n * Returns an observable that emits whenever any of the\n * scrollable ancestors of an element are scrolled.\n * @param elementOrElementRef Element whose ancestors to listen for.\n * @param auditTimeInMs Time to throttle the scroll events.\n */\n ancestorScrolled(elementOrElementRef, auditTimeInMs) {\n const ancestors = this.getAncestorScrollContainers(elementOrElementRef);\n return this.scrolled(auditTimeInMs).pipe(filter(target => {\n return !target || ancestors.indexOf(target) > -1;\n }));\n }\n /** Returns all registered Scrollables that contain the provided element. */\n getAncestorScrollContainers(elementOrElementRef) {\n const scrollingContainers = [];\n this.scrollContainers.forEach((_subscription, scrollable) => {\n if (this._scrollableContainsElement(scrollable, elementOrElementRef)) {\n scrollingContainers.push(scrollable);\n }\n });\n return scrollingContainers;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document.defaultView || window;\n }\n /** Returns true if the element is contained within the provided Scrollable. */\n _scrollableContainsElement(scrollable, elementOrElementRef) {\n let element = coerceElement(elementOrElementRef);\n let scrollableElement = scrollable.getElementRef().nativeElement;\n // Traverse through the element parents until we reach null, checking if any of the elements\n // are the scrollable's element.\n do {\n if (element == scrollableElement) {\n return true;\n }\n } while (element = element.parentElement);\n return false;\n }\n /** Sets up the global scroll listeners. */\n _addGlobalListener() {\n this._globalSubscription = this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n return fromEvent(window.document, 'scroll').subscribe(() => this._scrolled.next());\n });\n }\n /** Cleans up the global scroll listener. */\n _removeGlobalListener() {\n if (this._globalSubscription) {\n this._globalSubscription.unsubscribe();\n this._globalSubscription = null;\n }\n }\n static {\n this.ɵfac = function ScrollDispatcher_Factory(t) {\n return new (t || ScrollDispatcher)(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i1.Platform), i0.ɵɵinject(DOCUMENT, 8));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ScrollDispatcher,\n factory: ScrollDispatcher.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ScrollDispatcher, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: i0.NgZone\n }, {\n type: i1.Platform\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }]\n }], null);\n})();\n\n/**\n * Sends an event when the directive's element is scrolled. Registers itself with the\n * ScrollDispatcher service to include itself as part of its collection of scrolling events that it\n * can be listened to through the service.\n */\nclass CdkScrollable {\n constructor(elementRef, scrollDispatcher, ngZone, dir) {\n this.elementRef = elementRef;\n this.scrollDispatcher = scrollDispatcher;\n this.ngZone = ngZone;\n this.dir = dir;\n this._destroyed = new Subject();\n this._elementScrolled = new Observable(observer => this.ngZone.runOutsideAngular(() => fromEvent(this.elementRef.nativeElement, 'scroll').pipe(takeUntil(this._destroyed)).subscribe(observer)));\n }\n ngOnInit() {\n this.scrollDispatcher.register(this);\n }\n ngOnDestroy() {\n this.scrollDispatcher.deregister(this);\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** Returns observable that emits when a scroll event is fired on the host element. */\n elementScrolled() {\n return this._elementScrolled;\n }\n /** Gets the ElementRef for the viewport. */\n getElementRef() {\n return this.elementRef;\n }\n /**\n * Scrolls to the specified offsets. This is a normalized version of the browser's native scrollTo\n * method, since browsers are not consistent about what scrollLeft means in RTL. For this method\n * left and right always refer to the left and right side of the scrolling container irrespective\n * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n * in an RTL context.\n * @param options specified the offsets to scroll to.\n */\n scrollTo(options) {\n const el = this.elementRef.nativeElement;\n const isRtl = this.dir && this.dir.value == 'rtl';\n // Rewrite start & end offsets as right or left offsets.\n if (options.left == null) {\n options.left = isRtl ? options.end : options.start;\n }\n if (options.right == null) {\n options.right = isRtl ? options.start : options.end;\n }\n // Rewrite the bottom offset as a top offset.\n if (options.bottom != null) {\n options.top = el.scrollHeight - el.clientHeight - options.bottom;\n }\n // Rewrite the right offset as a left offset.\n if (isRtl && getRtlScrollAxisType() != 0 /* RtlScrollAxisType.NORMAL */) {\n if (options.left != null) {\n options.right = el.scrollWidth - el.clientWidth - options.left;\n }\n if (getRtlScrollAxisType() == 2 /* RtlScrollAxisType.INVERTED */) {\n options.left = options.right;\n } else if (getRtlScrollAxisType() == 1 /* RtlScrollAxisType.NEGATED */) {\n options.left = options.right ? -options.right : options.right;\n }\n } else {\n if (options.right != null) {\n options.left = el.scrollWidth - el.clientWidth - options.right;\n }\n }\n this._applyScrollToOptions(options);\n }\n _applyScrollToOptions(options) {\n const el = this.elementRef.nativeElement;\n if (supportsScrollBehavior()) {\n el.scrollTo(options);\n } else {\n if (options.top != null) {\n el.scrollTop = options.top;\n }\n if (options.left != null) {\n el.scrollLeft = options.left;\n }\n }\n }\n /**\n * Measures the scroll offset relative to the specified edge of the viewport. This method can be\n * used instead of directly checking scrollLeft or scrollTop, since browsers are not consistent\n * about what scrollLeft means in RTL. The values returned by this method are normalized such that\n * left and right always refer to the left and right side of the scrolling container irrespective\n * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n * in an RTL context.\n * @param from The edge to measure from.\n */\n measureScrollOffset(from) {\n const LEFT = 'left';\n const RIGHT = 'right';\n const el = this.elementRef.nativeElement;\n if (from == 'top') {\n return el.scrollTop;\n }\n if (from == 'bottom') {\n return el.scrollHeight - el.clientHeight - el.scrollTop;\n }\n // Rewrite start & end as left or right offsets.\n const isRtl = this.dir && this.dir.value == 'rtl';\n if (from == 'start') {\n from = isRtl ? RIGHT : LEFT;\n } else if (from == 'end') {\n from = isRtl ? LEFT : RIGHT;\n }\n if (isRtl && getRtlScrollAxisType() == 2 /* RtlScrollAxisType.INVERTED */) {\n // For INVERTED, scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and\n // 0 when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n } else {\n return el.scrollLeft;\n }\n } else if (isRtl && getRtlScrollAxisType() == 1 /* RtlScrollAxisType.NEGATED */) {\n // For NEGATED, scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and\n // 0 when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollLeft + el.scrollWidth - el.clientWidth;\n } else {\n return -el.scrollLeft;\n }\n } else {\n // For NORMAL, as well as non-RTL contexts, scrollLeft is 0 when scrolled all the way left and\n // (scrollWidth - clientWidth) when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollLeft;\n } else {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n }\n }\n }\n static {\n this.ɵfac = function CdkScrollable_Factory(t) {\n return new (t || CdkScrollable)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(ScrollDispatcher), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i2.Directionality, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkScrollable,\n selectors: [[\"\", \"cdk-scrollable\", \"\"], [\"\", \"cdkScrollable\", \"\"]],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkScrollable, [{\n type: Directive,\n args: [{\n selector: '[cdk-scrollable], [cdkScrollable]',\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: ScrollDispatcher\n }, {\n type: i0.NgZone\n }, {\n type: i2.Directionality,\n decorators: [{\n type: Optional\n }]\n }], null);\n})();\n\n/** Time in ms to throttle the resize events by default. */\nconst DEFAULT_RESIZE_TIME = 20;\n/**\n * Simple utility for getting the bounds of the browser viewport.\n * @docs-private\n */\nclass ViewportRuler {\n constructor(_platform, ngZone, document) {\n this._platform = _platform;\n /** Stream of viewport change events. */\n this._change = new Subject();\n /** Event listener that will be used to handle the viewport change events. */\n this._changeListener = event => {\n this._change.next(event);\n };\n this._document = document;\n ngZone.runOutsideAngular(() => {\n if (_platform.isBrowser) {\n const window = this._getWindow();\n // Note that bind the events ourselves, rather than going through something like RxJS's\n // `fromEvent` so that we can ensure that they're bound outside of the NgZone.\n window.addEventListener('resize', this._changeListener);\n window.addEventListener('orientationchange', this._changeListener);\n }\n // Clear the cached position so that the viewport is re-measured next time it is required.\n // We don't need to keep track of the subscription, because it is completed on destroy.\n this.change().subscribe(() => this._viewportSize = null);\n });\n }\n ngOnDestroy() {\n if (this._platform.isBrowser) {\n const window = this._getWindow();\n window.removeEventListener('resize', this._changeListener);\n window.removeEventListener('orientationchange', this._changeListener);\n }\n this._change.complete();\n }\n /** Returns the viewport's width and height. */\n getViewportSize() {\n if (!this._viewportSize) {\n this._updateViewportSize();\n }\n const output = {\n width: this._viewportSize.width,\n height: this._viewportSize.height\n };\n // If we're not on a browser, don't cache the size since it'll be mocked out anyway.\n if (!this._platform.isBrowser) {\n this._viewportSize = null;\n }\n return output;\n }\n /** Gets a ClientRect for the viewport's bounds. */\n getViewportRect() {\n // Use the document element's bounding rect rather than the window scroll properties\n // (e.g. pageYOffset, scrollY) due to in issue in Chrome and IE where window scroll\n // properties and client coordinates (boundingClientRect, clientX/Y, etc.) are in different\n // conceptual viewports. Under most circumstances these viewports are equivalent, but they\n // can disagree when the page is pinch-zoomed (on devices that support touch).\n // See https://bugs.chromium.org/p/chromium/issues/detail?id=489206#c4\n // We use the documentElement instead of the body because, by default (without a css reset)\n // browsers typically give the document body an 8px margin, which is not included in\n // getBoundingClientRect().\n const scrollPosition = this.getViewportScrollPosition();\n const {\n width,\n height\n } = this.getViewportSize();\n return {\n top: scrollPosition.top,\n left: scrollPosition.left,\n bottom: scrollPosition.top + height,\n right: scrollPosition.left + width,\n height,\n width\n };\n }\n /** Gets the (top, left) scroll position of the viewport. */\n getViewportScrollPosition() {\n // While we can get a reference to the fake document\n // during SSR, it doesn't have getBoundingClientRect.\n if (!this._platform.isBrowser) {\n return {\n top: 0,\n left: 0\n };\n }\n // The top-left-corner of the viewport is determined by the scroll position of the document\n // body, normally just (scrollLeft, scrollTop). However, Chrome and Firefox disagree about\n // whether `document.body` or `document.documentElement` is the scrolled element, so reading\n // `scrollTop` and `scrollLeft` is inconsistent. However, using the bounding rect of\n // `document.documentElement` works consistently, where the `top` and `left` values will\n // equal negative the scroll position.\n const document = this._document;\n const window = this._getWindow();\n const documentElement = document.documentElement;\n const documentRect = documentElement.getBoundingClientRect();\n const top = -documentRect.top || document.body.scrollTop || window.scrollY || documentElement.scrollTop || 0;\n const left = -documentRect.left || document.body.scrollLeft || window.scrollX || documentElement.scrollLeft || 0;\n return {\n top,\n left\n };\n }\n /**\n * Returns a stream that emits whenever the size of the viewport changes.\n * This stream emits outside of the Angular zone.\n * @param throttleTime Time in milliseconds to throttle the stream.\n */\n change(throttleTime = DEFAULT_RESIZE_TIME) {\n return throttleTime > 0 ? this._change.pipe(auditTime(throttleTime)) : this._change;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document.defaultView || window;\n }\n /** Updates the cached viewport size. */\n _updateViewportSize() {\n const window = this._getWindow();\n this._viewportSize = this._platform.isBrowser ? {\n width: window.innerWidth,\n height: window.innerHeight\n } : {\n width: 0,\n height: 0\n };\n }\n static {\n this.ɵfac = function ViewportRuler_Factory(t) {\n return new (t || ViewportRuler)(i0.ɵɵinject(i1.Platform), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(DOCUMENT, 8));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ViewportRuler,\n factory: ViewportRuler.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ViewportRuler, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: i1.Platform\n }, {\n type: i0.NgZone\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }]\n }], null);\n})();\nconst VIRTUAL_SCROLLABLE = new InjectionToken('VIRTUAL_SCROLLABLE');\n/**\n * Extending the {@link CdkScrollable} to be used as scrolling container for virtual scrolling.\n */\nclass CdkVirtualScrollable extends CdkScrollable {\n constructor(elementRef, scrollDispatcher, ngZone, dir) {\n super(elementRef, scrollDispatcher, ngZone, dir);\n }\n /**\n * Measure the viewport size for the provided orientation.\n *\n * @param orientation The orientation to measure the size from.\n */\n measureViewportSize(orientation) {\n const viewportEl = this.elementRef.nativeElement;\n return orientation === 'horizontal' ? viewportEl.clientWidth : viewportEl.clientHeight;\n }\n static {\n this.ɵfac = function CdkVirtualScrollable_Factory(t) {\n return new (t || CdkVirtualScrollable)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(ScrollDispatcher), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i2.Directionality, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkVirtualScrollable,\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkVirtualScrollable, [{\n type: Directive\n }], () => [{\n type: i0.ElementRef\n }, {\n type: ScrollDispatcher\n }, {\n type: i0.NgZone\n }, {\n type: i2.Directionality,\n decorators: [{\n type: Optional\n }]\n }], null);\n})();\n\n/** Checks if the given ranges are equal. */\nfunction rangesEqual(r1, r2) {\n return r1.start == r2.start && r1.end == r2.end;\n}\n/**\n * Scheduler to be used for scroll events. Needs to fall back to\n * something that doesn't rely on requestAnimationFrame on environments\n * that don't support it (e.g. server-side rendering).\n */\nconst SCROLL_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\n/** A viewport that virtualizes its scrolling with the help of `CdkVirtualForOf`. */\nclass CdkVirtualScrollViewport extends CdkVirtualScrollable {\n /** The direction the viewport scrolls. */\n get orientation() {\n return this._orientation;\n }\n set orientation(orientation) {\n if (this._orientation !== orientation) {\n this._orientation = orientation;\n this._calculateSpacerSize();\n }\n }\n constructor(elementRef, _changeDetectorRef, ngZone, _scrollStrategy, dir, scrollDispatcher, viewportRuler, scrollable) {\n super(elementRef, scrollDispatcher, ngZone, dir);\n this.elementRef = elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._scrollStrategy = _scrollStrategy;\n this.scrollable = scrollable;\n this._platform = inject(Platform);\n /** Emits when the viewport is detached from a CdkVirtualForOf. */\n this._detachedSubject = new Subject();\n /** Emits when the rendered range changes. */\n this._renderedRangeSubject = new Subject();\n this._orientation = 'vertical';\n /**\n * Whether rendered items should persist in the DOM after scrolling out of view. By default, items\n * will be removed.\n */\n this.appendOnly = false;\n // Note: we don't use the typical EventEmitter here because we need to subscribe to the scroll\n // strategy lazily (i.e. only if the user is actually listening to the events). We do this because\n // depending on how the strategy calculates the scrolled index, it may come at a cost to\n // performance.\n /** Emits when the index of the first element visible in the viewport changes. */\n this.scrolledIndexChange = new Observable(observer => this._scrollStrategy.scrolledIndexChange.subscribe(index => Promise.resolve().then(() => this.ngZone.run(() => observer.next(index)))));\n /** A stream that emits whenever the rendered range changes. */\n this.renderedRangeStream = this._renderedRangeSubject;\n /**\n * The total size of all content (in pixels), including content that is not currently rendered.\n */\n this._totalContentSize = 0;\n /** A string representing the `style.width` property value to be used for the spacer element. */\n this._totalContentWidth = '';\n /** A string representing the `style.height` property value to be used for the spacer element. */\n this._totalContentHeight = '';\n /** The currently rendered range of indices. */\n this._renderedRange = {\n start: 0,\n end: 0\n };\n /** The length of the data bound to this viewport (in number of items). */\n this._dataLength = 0;\n /** The size of the viewport (in pixels). */\n this._viewportSize = 0;\n /** The last rendered content offset that was set. */\n this._renderedContentOffset = 0;\n /**\n * Whether the last rendered content offset was to the end of the content (and therefore needs to\n * be rewritten as an offset to the start of the content).\n */\n this._renderedContentOffsetNeedsRewrite = false;\n /** Whether there is a pending change detection cycle. */\n this._isChangeDetectionPending = false;\n /** A list of functions to run after the next change detection cycle. */\n this._runAfterChangeDetection = [];\n /** Subscription to changes in the viewport size. */\n this._viewportChanges = Subscription.EMPTY;\n if (!_scrollStrategy && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Error: cdk-virtual-scroll-viewport requires the \"itemSize\" property to be set.');\n }\n this._viewportChanges = viewportRuler.change().subscribe(() => {\n this.checkViewportSize();\n });\n if (!this.scrollable) {\n // No scrollable is provided, so the virtual-scroll-viewport needs to become a scrollable\n this.elementRef.nativeElement.classList.add('cdk-virtual-scrollable');\n this.scrollable = this;\n }\n }\n ngOnInit() {\n // Scrolling depends on the element dimensions which we can't get during SSR.\n if (!this._platform.isBrowser) {\n return;\n }\n if (this.scrollable === this) {\n super.ngOnInit();\n }\n // It's still too early to measure the viewport at this point. Deferring with a promise allows\n // the Viewport to be rendered with the correct size before we measure. We run this outside the\n // zone to avoid causing more change detection cycles. We handle the change detection loop\n // ourselves instead.\n this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n this._measureViewportSize();\n this._scrollStrategy.attach(this);\n this.scrollable.elementScrolled().pipe(\n // Start off with a fake scroll event so we properly detect our initial position.\n startWith(null),\n // Collect multiple events into one until the next animation frame. This way if\n // there are multiple scroll events in the same frame we only need to recheck\n // our layout once.\n auditTime(0, SCROLL_SCHEDULER),\n // Usually `elementScrolled` is completed when the scrollable is destroyed, but\n // that may not be the case if a `CdkVirtualScrollableElement` is used so we have\n // to unsubscribe here just in case.\n takeUntil(this._destroyed)).subscribe(() => this._scrollStrategy.onContentScrolled());\n this._markChangeDetectionNeeded();\n }));\n }\n ngOnDestroy() {\n this.detach();\n this._scrollStrategy.detach();\n // Complete all subjects\n this._renderedRangeSubject.complete();\n this._detachedSubject.complete();\n this._viewportChanges.unsubscribe();\n super.ngOnDestroy();\n }\n /** Attaches a `CdkVirtualScrollRepeater` to this viewport. */\n attach(forOf) {\n if (this._forOf && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CdkVirtualScrollViewport is already attached.');\n }\n // Subscribe to the data stream of the CdkVirtualForOf to keep track of when the data length\n // changes. Run outside the zone to avoid triggering change detection, since we're managing the\n // change detection loop ourselves.\n this.ngZone.runOutsideAngular(() => {\n this._forOf = forOf;\n this._forOf.dataStream.pipe(takeUntil(this._detachedSubject)).subscribe(data => {\n const newLength = data.length;\n if (newLength !== this._dataLength) {\n this._dataLength = newLength;\n this._scrollStrategy.onDataLengthChanged();\n }\n this._doChangeDetection();\n });\n });\n }\n /** Detaches the current `CdkVirtualForOf`. */\n detach() {\n this._forOf = null;\n this._detachedSubject.next();\n }\n /** Gets the length of the data bound to this viewport (in number of items). */\n getDataLength() {\n return this._dataLength;\n }\n /** Gets the size of the viewport (in pixels). */\n getViewportSize() {\n return this._viewportSize;\n }\n // TODO(mmalerba): This is technically out of sync with what's really rendered until a render\n // cycle happens. I'm being careful to only call it after the render cycle is complete and before\n // setting it to something else, but its error prone and should probably be split into\n // `pendingRange` and `renderedRange`, the latter reflecting whats actually in the DOM.\n /** Get the current rendered range of items. */\n getRenderedRange() {\n return this._renderedRange;\n }\n measureBoundingClientRectWithScrollOffset(from) {\n return this.getElementRef().nativeElement.getBoundingClientRect()[from];\n }\n /**\n * Sets the total size of all content (in pixels), including content that is not currently\n * rendered.\n */\n setTotalContentSize(size) {\n if (this._totalContentSize !== size) {\n this._totalContentSize = size;\n this._calculateSpacerSize();\n this._markChangeDetectionNeeded();\n }\n }\n /** Sets the currently rendered range of indices. */\n setRenderedRange(range) {\n if (!rangesEqual(this._renderedRange, range)) {\n if (this.appendOnly) {\n range = {\n start: 0,\n end: Math.max(this._renderedRange.end, range.end)\n };\n }\n this._renderedRangeSubject.next(this._renderedRange = range);\n this._markChangeDetectionNeeded(() => this._scrollStrategy.onContentRendered());\n }\n }\n /**\n * Gets the offset from the start of the viewport to the start of the rendered data (in pixels).\n */\n getOffsetToRenderedContentStart() {\n return this._renderedContentOffsetNeedsRewrite ? null : this._renderedContentOffset;\n }\n /**\n * Sets the offset from the start of the viewport to either the start or end of the rendered data\n * (in pixels).\n */\n setRenderedContentOffset(offset, to = 'to-start') {\n // In appendOnly, we always start from the top\n offset = this.appendOnly && to === 'to-start' ? 0 : offset;\n // For a horizontal viewport in a right-to-left language we need to translate along the x-axis\n // in the negative direction.\n const isRtl = this.dir && this.dir.value == 'rtl';\n const isHorizontal = this.orientation == 'horizontal';\n const axis = isHorizontal ? 'X' : 'Y';\n const axisDirection = isHorizontal && isRtl ? -1 : 1;\n let transform = `translate${axis}(${Number(axisDirection * offset)}px)`;\n this._renderedContentOffset = offset;\n if (to === 'to-end') {\n transform += ` translate${axis}(-100%)`;\n // The viewport should rewrite this as a `to-start` offset on the next render cycle. Otherwise\n // elements will appear to expand in the wrong direction (e.g. `mat-expansion-panel` would\n // expand upward).\n this._renderedContentOffsetNeedsRewrite = true;\n }\n if (this._renderedContentTransform != transform) {\n // We know this value is safe because we parse `offset` with `Number()` before passing it\n // into the string.\n this._renderedContentTransform = transform;\n this._markChangeDetectionNeeded(() => {\n if (this._renderedContentOffsetNeedsRewrite) {\n this._renderedContentOffset -= this.measureRenderedContentSize();\n this._renderedContentOffsetNeedsRewrite = false;\n this.setRenderedContentOffset(this._renderedContentOffset);\n } else {\n this._scrollStrategy.onRenderedOffsetChanged();\n }\n });\n }\n }\n /**\n * Scrolls to the given offset from the start of the viewport. Please note that this is not always\n * the same as setting `scrollTop` or `scrollLeft`. In a horizontal viewport with right-to-left\n * direction, this would be the equivalent of setting a fictional `scrollRight` property.\n * @param offset The offset to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n */\n scrollToOffset(offset, behavior = 'auto') {\n const options = {\n behavior\n };\n if (this.orientation === 'horizontal') {\n options.start = offset;\n } else {\n options.top = offset;\n }\n this.scrollable.scrollTo(options);\n }\n /**\n * Scrolls to the offset for the given index.\n * @param index The index of the element to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n */\n scrollToIndex(index, behavior = 'auto') {\n this._scrollStrategy.scrollToIndex(index, behavior);\n }\n /**\n * Gets the current scroll offset from the start of the scrollable (in pixels).\n * @param from The edge to measure the offset from. Defaults to 'top' in vertical mode and 'start'\n * in horizontal mode.\n */\n measureScrollOffset(from) {\n // This is to break the call cycle\n let measureScrollOffset;\n if (this.scrollable == this) {\n measureScrollOffset = _from => super.measureScrollOffset(_from);\n } else {\n measureScrollOffset = _from => this.scrollable.measureScrollOffset(_from);\n }\n return Math.max(0, measureScrollOffset(from ?? (this.orientation === 'horizontal' ? 'start' : 'top')) - this.measureViewportOffset());\n }\n /**\n * Measures the offset of the viewport from the scrolling container\n * @param from The edge to measure from.\n */\n measureViewportOffset(from) {\n let fromRect;\n const LEFT = 'left';\n const RIGHT = 'right';\n const isRtl = this.dir?.value == 'rtl';\n if (from == 'start') {\n fromRect = isRtl ? RIGHT : LEFT;\n } else if (from == 'end') {\n fromRect = isRtl ? LEFT : RIGHT;\n } else if (from) {\n fromRect = from;\n } else {\n fromRect = this.orientation === 'horizontal' ? 'left' : 'top';\n }\n const scrollerClientRect = this.scrollable.measureBoundingClientRectWithScrollOffset(fromRect);\n const viewportClientRect = this.elementRef.nativeElement.getBoundingClientRect()[fromRect];\n return viewportClientRect - scrollerClientRect;\n }\n /** Measure the combined size of all of the rendered items. */\n measureRenderedContentSize() {\n const contentEl = this._contentWrapper.nativeElement;\n return this.orientation === 'horizontal' ? contentEl.offsetWidth : contentEl.offsetHeight;\n }\n /**\n * Measure the total combined size of the given range. Throws if the range includes items that are\n * not rendered.\n */\n measureRangeSize(range) {\n if (!this._forOf) {\n return 0;\n }\n return this._forOf.measureRangeSize(range, this.orientation);\n }\n /** Update the viewport dimensions and re-render. */\n checkViewportSize() {\n // TODO: Cleanup later when add logic for handling content resize\n this._measureViewportSize();\n this._scrollStrategy.onDataLengthChanged();\n }\n /** Measure the viewport size. */\n _measureViewportSize() {\n this._viewportSize = this.scrollable.measureViewportSize(this.orientation);\n }\n /** Queue up change detection to run. */\n _markChangeDetectionNeeded(runAfter) {\n if (runAfter) {\n this._runAfterChangeDetection.push(runAfter);\n }\n // Use a Promise to batch together calls to `_doChangeDetection`. This way if we set a bunch of\n // properties sequentially we only have to run `_doChangeDetection` once at the end.\n if (!this._isChangeDetectionPending) {\n this._isChangeDetectionPending = true;\n this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n this._doChangeDetection();\n }));\n }\n }\n /** Run change detection. */\n _doChangeDetection() {\n this._isChangeDetectionPending = false;\n // Apply the content transform. The transform can't be set via an Angular binding because\n // bypassSecurityTrustStyle is banned in Google. However the value is safe, it's composed of\n // string literals, a variable that can only be 'X' or 'Y', and user input that is run through\n // the `Number` function first to coerce it to a numeric value.\n this._contentWrapper.nativeElement.style.transform = this._renderedContentTransform;\n // Apply changes to Angular bindings. Note: We must call `markForCheck` to run change detection\n // from the root, since the repeated items are content projected in. Calling `detectChanges`\n // instead does not properly check the projected content.\n this.ngZone.run(() => this._changeDetectorRef.markForCheck());\n const runAfterChangeDetection = this._runAfterChangeDetection;\n this._runAfterChangeDetection = [];\n for (const fn of runAfterChangeDetection) {\n fn();\n }\n }\n /** Calculates the `style.width` and `style.height` for the spacer element. */\n _calculateSpacerSize() {\n this._totalContentHeight = this.orientation === 'horizontal' ? '' : `${this._totalContentSize}px`;\n this._totalContentWidth = this.orientation === 'horizontal' ? `${this._totalContentSize}px` : '';\n }\n static {\n this.ɵfac = function CdkVirtualScrollViewport_Factory(t) {\n return new (t || CdkVirtualScrollViewport)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(VIRTUAL_SCROLL_STRATEGY, 8), i0.ɵɵdirectiveInject(i2.Directionality, 8), i0.ɵɵdirectiveInject(ScrollDispatcher), i0.ɵɵdirectiveInject(ViewportRuler), i0.ɵɵdirectiveInject(VIRTUAL_SCROLLABLE, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CdkVirtualScrollViewport,\n selectors: [[\"cdk-virtual-scroll-viewport\"]],\n viewQuery: function CdkVirtualScrollViewport_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c0, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._contentWrapper = _t.first);\n }\n },\n hostAttrs: [1, \"cdk-virtual-scroll-viewport\"],\n hostVars: 4,\n hostBindings: function CdkVirtualScrollViewport_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"cdk-virtual-scroll-orientation-horizontal\", ctx.orientation === \"horizontal\")(\"cdk-virtual-scroll-orientation-vertical\", ctx.orientation !== \"horizontal\");\n }\n },\n inputs: {\n orientation: \"orientation\",\n appendOnly: [\"appendOnly\", \"appendOnly\", booleanAttribute]\n },\n outputs: {\n scrolledIndexChange: \"scrolledIndexChange\"\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: CdkScrollable,\n useFactory: (virtualScrollable, viewport) => virtualScrollable || viewport,\n deps: [[new Optional(), new Inject(VIRTUAL_SCROLLABLE)], CdkVirtualScrollViewport]\n }]), i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c1,\n decls: 4,\n vars: 4,\n consts: [[1, \"cdk-virtual-scroll-content-wrapper\"], [\"contentWrapper\", \"\"], [1, \"cdk-virtual-scroll-spacer\"]],\n template: function CdkVirtualScrollViewport_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelementStart(0, \"div\", 0, 1);\n i0.ɵɵprojection(2);\n i0.ɵɵelementEnd();\n i0.ɵɵelement(3, \"div\", 2);\n }\n if (rf & 2) {\n i0.ɵɵadvance(3);\n i0.ɵɵstyleProp(\"width\", ctx._totalContentWidth)(\"height\", ctx._totalContentHeight);\n }\n },\n styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;transform:translateZ(0)}.cdk-virtual-scrollable{overflow:auto;will-change:scroll-position;contain:strict;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{height:1px;transform-origin:0 0;flex:0 0 auto}[dir=rtl] .cdk-virtual-scroll-spacer{transform-origin:100% 0}\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkVirtualScrollViewport, [{\n type: Component,\n args: [{\n selector: 'cdk-virtual-scroll-viewport',\n host: {\n 'class': 'cdk-virtual-scroll-viewport',\n '[class.cdk-virtual-scroll-orientation-horizontal]': 'orientation === \"horizontal\"',\n '[class.cdk-virtual-scroll-orientation-vertical]': 'orientation !== \"horizontal\"'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n providers: [{\n provide: CdkScrollable,\n useFactory: (virtualScrollable, viewport) => virtualScrollable || viewport,\n deps: [[new Optional(), new Inject(VIRTUAL_SCROLLABLE)], CdkVirtualScrollViewport]\n }],\n template: \"\\n
\\n \\n
\\n\\n
\\n\",\n styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;transform:translateZ(0)}.cdk-virtual-scrollable{overflow:auto;will-change:scroll-position;contain:strict;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{height:1px;transform-origin:0 0;flex:0 0 auto}[dir=rtl] .cdk-virtual-scroll-spacer{transform-origin:100% 0}\"]\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: i0.NgZone\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [VIRTUAL_SCROLL_STRATEGY]\n }]\n }, {\n type: i2.Directionality,\n decorators: [{\n type: Optional\n }]\n }, {\n type: ScrollDispatcher\n }, {\n type: ViewportRuler\n }, {\n type: CdkVirtualScrollable,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [VIRTUAL_SCROLLABLE]\n }]\n }], {\n orientation: [{\n type: Input\n }],\n appendOnly: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n scrolledIndexChange: [{\n type: Output\n }],\n _contentWrapper: [{\n type: ViewChild,\n args: ['contentWrapper', {\n static: true\n }]\n }]\n });\n})();\n\n/** Helper to extract the offset of a DOM Node in a certain direction. */\nfunction getOffset(orientation, direction, node) {\n const el = node;\n if (!el.getBoundingClientRect) {\n return 0;\n }\n const rect = el.getBoundingClientRect();\n if (orientation === 'horizontal') {\n return direction === 'start' ? rect.left : rect.right;\n }\n return direction === 'start' ? rect.top : rect.bottom;\n}\n/**\n * A directive similar to `ngForOf` to be used for rendering data inside a virtual scrolling\n * container.\n */\nclass CdkVirtualForOf {\n /** The DataSource to display. */\n get cdkVirtualForOf() {\n return this._cdkVirtualForOf;\n }\n set cdkVirtualForOf(value) {\n this._cdkVirtualForOf = value;\n if (isDataSource(value)) {\n this._dataSourceChanges.next(value);\n } else {\n // If value is an an NgIterable, convert it to an array.\n this._dataSourceChanges.next(new ArrayDataSource(isObservable(value) ? value : Array.from(value || [])));\n }\n }\n /**\n * The `TrackByFunction` to use for tracking changes. The `TrackByFunction` takes the index and\n * the item and produces a value to be used as the item's identity when tracking changes.\n */\n get cdkVirtualForTrackBy() {\n return this._cdkVirtualForTrackBy;\n }\n set cdkVirtualForTrackBy(fn) {\n this._needsUpdate = true;\n this._cdkVirtualForTrackBy = fn ? (index, item) => fn(index + (this._renderedRange ? this._renderedRange.start : 0), item) : undefined;\n }\n /** The template used to stamp out new elements. */\n set cdkVirtualForTemplate(value) {\n if (value) {\n this._needsUpdate = true;\n this._template = value;\n }\n }\n /**\n * The size of the cache used to store templates that are not being used for re-use later.\n * Setting the cache size to `0` will disable caching. Defaults to 20 templates.\n */\n get cdkVirtualForTemplateCacheSize() {\n return this._viewRepeater.viewCacheSize;\n }\n set cdkVirtualForTemplateCacheSize(size) {\n this._viewRepeater.viewCacheSize = coerceNumberProperty(size);\n }\n constructor( /** The view container to add items to. */\n _viewContainerRef, /** The template to use when stamping out new items. */\n _template, /** The set of available differs. */\n _differs, /** The strategy used to render items in the virtual scroll viewport. */\n _viewRepeater, /** The virtual scrolling viewport that these items are being rendered in. */\n _viewport, ngZone) {\n this._viewContainerRef = _viewContainerRef;\n this._template = _template;\n this._differs = _differs;\n this._viewRepeater = _viewRepeater;\n this._viewport = _viewport;\n /** Emits when the rendered view of the data changes. */\n this.viewChange = new Subject();\n /** Subject that emits when a new DataSource instance is given. */\n this._dataSourceChanges = new Subject();\n /** Emits whenever the data in the current DataSource changes. */\n this.dataStream = this._dataSourceChanges.pipe(\n // Start off with null `DataSource`.\n startWith(null),\n // Bundle up the previous and current data sources so we can work with both.\n pairwise(),\n // Use `_changeDataSource` to disconnect from the previous data source and connect to the\n // new one, passing back a stream of data changes which we run through `switchMap` to give\n // us a data stream that emits the latest data from whatever the current `DataSource` is.\n switchMap(([prev, cur]) => this._changeDataSource(prev, cur)),\n // Replay the last emitted data when someone subscribes.\n shareReplay(1));\n /** The differ used to calculate changes to the data. */\n this._differ = null;\n /** Whether the rendered data should be updated during the next ngDoCheck cycle. */\n this._needsUpdate = false;\n this._destroyed = new Subject();\n this.dataStream.subscribe(data => {\n this._data = data;\n this._onRenderedDataChange();\n });\n this._viewport.renderedRangeStream.pipe(takeUntil(this._destroyed)).subscribe(range => {\n this._renderedRange = range;\n if (this.viewChange.observers.length) {\n ngZone.run(() => this.viewChange.next(this._renderedRange));\n }\n this._onRenderedDataChange();\n });\n this._viewport.attach(this);\n }\n /**\n * Measures the combined size (width for horizontal orientation, height for vertical) of all items\n * in the specified range. Throws an error if the range includes items that are not currently\n * rendered.\n */\n measureRangeSize(range, orientation) {\n if (range.start >= range.end) {\n return 0;\n }\n if ((range.start < this._renderedRange.start || range.end > this._renderedRange.end) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Error: attempted to measure an item that isn't rendered.`);\n }\n // The index into the list of rendered views for the first item in the range.\n const renderedStartIndex = range.start - this._renderedRange.start;\n // The length of the range we're measuring.\n const rangeLen = range.end - range.start;\n // Loop over all the views, find the first and land node and compute the size by subtracting\n // the top of the first node from the bottom of the last one.\n let firstNode;\n let lastNode;\n // Find the first node by starting from the beginning and going forwards.\n for (let i = 0; i < rangeLen; i++) {\n const view = this._viewContainerRef.get(i + renderedStartIndex);\n if (view && view.rootNodes.length) {\n firstNode = lastNode = view.rootNodes[0];\n break;\n }\n }\n // Find the last node by starting from the end and going backwards.\n for (let i = rangeLen - 1; i > -1; i--) {\n const view = this._viewContainerRef.get(i + renderedStartIndex);\n if (view && view.rootNodes.length) {\n lastNode = view.rootNodes[view.rootNodes.length - 1];\n break;\n }\n }\n return firstNode && lastNode ? getOffset(orientation, 'end', lastNode) - getOffset(orientation, 'start', firstNode) : 0;\n }\n ngDoCheck() {\n if (this._differ && this._needsUpdate) {\n // TODO(mmalerba): We should differentiate needs update due to scrolling and a new portion of\n // this list being rendered (can use simpler algorithm) vs needs update due to data actually\n // changing (need to do this diff).\n const changes = this._differ.diff(this._renderedItems);\n if (!changes) {\n this._updateContext();\n } else {\n this._applyChanges(changes);\n }\n this._needsUpdate = false;\n }\n }\n ngOnDestroy() {\n this._viewport.detach();\n this._dataSourceChanges.next(undefined);\n this._dataSourceChanges.complete();\n this.viewChange.complete();\n this._destroyed.next();\n this._destroyed.complete();\n this._viewRepeater.detach();\n }\n /** React to scroll state changes in the viewport. */\n _onRenderedDataChange() {\n if (!this._renderedRange) {\n return;\n }\n this._renderedItems = this._data.slice(this._renderedRange.start, this._renderedRange.end);\n if (!this._differ) {\n // Use a wrapper function for the `trackBy` so any new values are\n // picked up automatically without having to recreate the differ.\n this._differ = this._differs.find(this._renderedItems).create((index, item) => {\n return this.cdkVirtualForTrackBy ? this.cdkVirtualForTrackBy(index, item) : item;\n });\n }\n this._needsUpdate = true;\n }\n /** Swap out one `DataSource` for another. */\n _changeDataSource(oldDs, newDs) {\n if (oldDs) {\n oldDs.disconnect(this);\n }\n this._needsUpdate = true;\n return newDs ? newDs.connect(this) : of();\n }\n /** Update the `CdkVirtualForOfContext` for all views. */\n _updateContext() {\n const count = this._data.length;\n let i = this._viewContainerRef.length;\n while (i--) {\n const view = this._viewContainerRef.get(i);\n view.context.index = this._renderedRange.start + i;\n view.context.count = count;\n this._updateComputedContextProperties(view.context);\n view.detectChanges();\n }\n }\n /** Apply changes to the DOM. */\n _applyChanges(changes) {\n this._viewRepeater.applyChanges(changes, this._viewContainerRef, (record, _adjustedPreviousIndex, currentIndex) => this._getEmbeddedViewArgs(record, currentIndex), record => record.item);\n // Update $implicit for any items that had an identity change.\n changes.forEachIdentityChange(record => {\n const view = this._viewContainerRef.get(record.currentIndex);\n view.context.$implicit = record.item;\n });\n // Update the context variables on all items.\n const count = this._data.length;\n let i = this._viewContainerRef.length;\n while (i--) {\n const view = this._viewContainerRef.get(i);\n view.context.index = this._renderedRange.start + i;\n view.context.count = count;\n this._updateComputedContextProperties(view.context);\n }\n }\n /** Update the computed properties on the `CdkVirtualForOfContext`. */\n _updateComputedContextProperties(context) {\n context.first = context.index === 0;\n context.last = context.index === context.count - 1;\n context.even = context.index % 2 === 0;\n context.odd = !context.even;\n }\n _getEmbeddedViewArgs(record, index) {\n // Note that it's important that we insert the item directly at the proper index,\n // rather than inserting it and the moving it in place, because if there's a directive\n // on the same node that injects the `ViewContainerRef`, Angular will insert another\n // comment node which can throw off the move when it's being repeated for all items.\n return {\n templateRef: this._template,\n context: {\n $implicit: record.item,\n // It's guaranteed that the iterable is not \"undefined\" or \"null\" because we only\n // generate views for elements if the \"cdkVirtualForOf\" iterable has elements.\n cdkVirtualForOf: this._cdkVirtualForOf,\n index: -1,\n count: -1,\n first: false,\n last: false,\n odd: false,\n even: false\n },\n index\n };\n }\n static {\n this.ɵfac = function CdkVirtualForOf_Factory(t) {\n return new (t || CdkVirtualForOf)(i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i0.TemplateRef), i0.ɵɵdirectiveInject(i0.IterableDiffers), i0.ɵɵdirectiveInject(_VIEW_REPEATER_STRATEGY), i0.ɵɵdirectiveInject(CdkVirtualScrollViewport, 4), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkVirtualForOf,\n selectors: [[\"\", \"cdkVirtualFor\", \"\", \"cdkVirtualForOf\", \"\"]],\n inputs: {\n cdkVirtualForOf: \"cdkVirtualForOf\",\n cdkVirtualForTrackBy: \"cdkVirtualForTrackBy\",\n cdkVirtualForTemplate: \"cdkVirtualForTemplate\",\n cdkVirtualForTemplateCacheSize: \"cdkVirtualForTemplateCacheSize\"\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: _VIEW_REPEATER_STRATEGY,\n useClass: _RecycleViewRepeaterStrategy\n }])]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkVirtualForOf, [{\n type: Directive,\n args: [{\n selector: '[cdkVirtualFor][cdkVirtualForOf]',\n providers: [{\n provide: _VIEW_REPEATER_STRATEGY,\n useClass: _RecycleViewRepeaterStrategy\n }],\n standalone: true\n }]\n }], () => [{\n type: i0.ViewContainerRef\n }, {\n type: i0.TemplateRef\n }, {\n type: i0.IterableDiffers\n }, {\n type: i2$1._RecycleViewRepeaterStrategy,\n decorators: [{\n type: Inject,\n args: [_VIEW_REPEATER_STRATEGY]\n }]\n }, {\n type: CdkVirtualScrollViewport,\n decorators: [{\n type: SkipSelf\n }]\n }, {\n type: i0.NgZone\n }], {\n cdkVirtualForOf: [{\n type: Input\n }],\n cdkVirtualForTrackBy: [{\n type: Input\n }],\n cdkVirtualForTemplate: [{\n type: Input\n }],\n cdkVirtualForTemplateCacheSize: [{\n type: Input\n }]\n });\n})();\n\n/**\n * Provides a virtual scrollable for the element it is attached to.\n */\nclass CdkVirtualScrollableElement extends CdkVirtualScrollable {\n constructor(elementRef, scrollDispatcher, ngZone, dir) {\n super(elementRef, scrollDispatcher, ngZone, dir);\n }\n measureBoundingClientRectWithScrollOffset(from) {\n return this.getElementRef().nativeElement.getBoundingClientRect()[from] - this.measureScrollOffset(from);\n }\n static {\n this.ɵfac = function CdkVirtualScrollableElement_Factory(t) {\n return new (t || CdkVirtualScrollableElement)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(ScrollDispatcher), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i2.Directionality, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkVirtualScrollableElement,\n selectors: [[\"\", \"cdkVirtualScrollingElement\", \"\"]],\n hostAttrs: [1, \"cdk-virtual-scrollable\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: VIRTUAL_SCROLLABLE,\n useExisting: CdkVirtualScrollableElement\n }]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkVirtualScrollableElement, [{\n type: Directive,\n args: [{\n selector: '[cdkVirtualScrollingElement]',\n providers: [{\n provide: VIRTUAL_SCROLLABLE,\n useExisting: CdkVirtualScrollableElement\n }],\n standalone: true,\n host: {\n 'class': 'cdk-virtual-scrollable'\n }\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: ScrollDispatcher\n }, {\n type: i0.NgZone\n }, {\n type: i2.Directionality,\n decorators: [{\n type: Optional\n }]\n }], null);\n})();\n\n/**\n * Provides as virtual scrollable for the global / window scrollbar.\n */\nclass CdkVirtualScrollableWindow extends CdkVirtualScrollable {\n constructor(scrollDispatcher, ngZone, dir) {\n super(new ElementRef(document.documentElement), scrollDispatcher, ngZone, dir);\n this._elementScrolled = new Observable(observer => this.ngZone.runOutsideAngular(() => fromEvent(document, 'scroll').pipe(takeUntil(this._destroyed)).subscribe(observer)));\n }\n measureBoundingClientRectWithScrollOffset(from) {\n return this.getElementRef().nativeElement.getBoundingClientRect()[from];\n }\n static {\n this.ɵfac = function CdkVirtualScrollableWindow_Factory(t) {\n return new (t || CdkVirtualScrollableWindow)(i0.ɵɵdirectiveInject(ScrollDispatcher), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i2.Directionality, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkVirtualScrollableWindow,\n selectors: [[\"cdk-virtual-scroll-viewport\", \"scrollWindow\", \"\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: VIRTUAL_SCROLLABLE,\n useExisting: CdkVirtualScrollableWindow\n }]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkVirtualScrollableWindow, [{\n type: Directive,\n args: [{\n selector: 'cdk-virtual-scroll-viewport[scrollWindow]',\n providers: [{\n provide: VIRTUAL_SCROLLABLE,\n useExisting: CdkVirtualScrollableWindow\n }],\n standalone: true\n }]\n }], () => [{\n type: ScrollDispatcher\n }, {\n type: i0.NgZone\n }, {\n type: i2.Directionality,\n decorators: [{\n type: Optional\n }]\n }], null);\n})();\nclass CdkScrollableModule {\n static {\n this.ɵfac = function CdkScrollableModule_Factory(t) {\n return new (t || CdkScrollableModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: CdkScrollableModule,\n imports: [CdkScrollable],\n exports: [CdkScrollable]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkScrollableModule, [{\n type: NgModule,\n args: [{\n exports: [CdkScrollable],\n imports: [CdkScrollable]\n }]\n }], null, null);\n})();\n/**\n * @docs-primary-export\n */\nclass ScrollingModule {\n static {\n this.ɵfac = function ScrollingModule_Factory(t) {\n return new (t || ScrollingModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: ScrollingModule,\n imports: [BidiModule, CdkScrollableModule, CdkVirtualScrollViewport, CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollableWindow, CdkVirtualScrollableElement],\n exports: [BidiModule, CdkScrollableModule, CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport, CdkVirtualScrollableWindow, CdkVirtualScrollableElement]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [BidiModule, CdkScrollableModule, BidiModule, CdkScrollableModule]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ScrollingModule, [{\n type: NgModule,\n args: [{\n imports: [BidiModule, CdkScrollableModule, CdkVirtualScrollViewport, CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollableWindow, CdkVirtualScrollableElement],\n exports: [BidiModule, CdkScrollableModule, CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport, CdkVirtualScrollableWindow, CdkVirtualScrollableElement]\n }]\n }], null, null);\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkFixedSizeVirtualScroll, CdkScrollable, CdkScrollableModule, CdkVirtualForOf, CdkVirtualScrollViewport, CdkVirtualScrollable, CdkVirtualScrollableElement, CdkVirtualScrollableWindow, DEFAULT_RESIZE_TIME, DEFAULT_SCROLL_TIME, FixedSizeVirtualScrollStrategy, ScrollDispatcher, ScrollingModule, VIRTUAL_SCROLLABLE, VIRTUAL_SCROLL_STRATEGY, ViewportRuler, _fixedSizeVirtualScrollStrategyFactory };\n", "import * as i1 from '@angular/cdk/scrolling';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nexport { CdkScrollable, ScrollDispatcher, ViewportRuler } from '@angular/cdk/scrolling';\nimport * as i6 from '@angular/common';\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, Optional, ElementRef, ApplicationRef, ANIMATION_MODULE_TYPE, InjectionToken, inject, Directive, EventEmitter, booleanAttribute, Input, Output, NgModule } from '@angular/core';\nimport { coerceCssPixelValue, coerceArray } from '@angular/cdk/coercion';\nimport * as i1$1 from '@angular/cdk/platform';\nimport { supportsScrollBehavior, _getEventTarget, _isTestEnvironment } from '@angular/cdk/platform';\nimport { filter, take, takeUntil, takeWhile } from 'rxjs/operators';\nimport * as i5 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { DomPortalOutlet, TemplatePortal, PortalModule } from '@angular/cdk/portal';\nimport { Subject, Subscription, merge } from 'rxjs';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\nconst scrollBehaviorSupported = supportsScrollBehavior();\n/**\n * Strategy that will prevent the user from scrolling while the overlay is visible.\n */\nclass BlockScrollStrategy {\n constructor(_viewportRuler, document) {\n this._viewportRuler = _viewportRuler;\n this._previousHTMLStyles = {\n top: '',\n left: ''\n };\n this._isEnabled = false;\n this._document = document;\n }\n /** Attaches this scroll strategy to an overlay. */\n attach() {}\n /** Blocks page-level scroll while the attached overlay is open. */\n enable() {\n if (this._canBeEnabled()) {\n const root = this._document.documentElement;\n this._previousScrollPosition = this._viewportRuler.getViewportScrollPosition();\n // Cache the previous inline styles in case the user had set them.\n this._previousHTMLStyles.left = root.style.left || '';\n this._previousHTMLStyles.top = root.style.top || '';\n // Note: we're using the `html` node, instead of the `body`, because the `body` may\n // have the user agent margin, whereas the `html` is guaranteed not to have one.\n root.style.left = coerceCssPixelValue(-this._previousScrollPosition.left);\n root.style.top = coerceCssPixelValue(-this._previousScrollPosition.top);\n root.classList.add('cdk-global-scrollblock');\n this._isEnabled = true;\n }\n }\n /** Unblocks page-level scroll while the attached overlay is open. */\n disable() {\n if (this._isEnabled) {\n const html = this._document.documentElement;\n const body = this._document.body;\n const htmlStyle = html.style;\n const bodyStyle = body.style;\n const previousHtmlScrollBehavior = htmlStyle.scrollBehavior || '';\n const previousBodyScrollBehavior = bodyStyle.scrollBehavior || '';\n this._isEnabled = false;\n htmlStyle.left = this._previousHTMLStyles.left;\n htmlStyle.top = this._previousHTMLStyles.top;\n html.classList.remove('cdk-global-scrollblock');\n // Disable user-defined smooth scrolling temporarily while we restore the scroll position.\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior\n // Note that we don't mutate the property if the browser doesn't support `scroll-behavior`,\n // because it can throw off feature detections in `supportsScrollBehavior` which\n // checks for `'scrollBehavior' in documentElement.style`.\n if (scrollBehaviorSupported) {\n htmlStyle.scrollBehavior = bodyStyle.scrollBehavior = 'auto';\n }\n window.scroll(this._previousScrollPosition.left, this._previousScrollPosition.top);\n if (scrollBehaviorSupported) {\n htmlStyle.scrollBehavior = previousHtmlScrollBehavior;\n bodyStyle.scrollBehavior = previousBodyScrollBehavior;\n }\n }\n }\n _canBeEnabled() {\n // Since the scroll strategies can't be singletons, we have to use a global CSS class\n // (`cdk-global-scrollblock`) to make sure that we don't try to disable global\n // scrolling multiple times.\n const html = this._document.documentElement;\n if (html.classList.contains('cdk-global-scrollblock') || this._isEnabled) {\n return false;\n }\n const body = this._document.body;\n const viewport = this._viewportRuler.getViewportSize();\n return body.scrollHeight > viewport.height || body.scrollWidth > viewport.width;\n }\n}\n\n/**\n * Returns an error to be thrown when attempting to attach an already-attached scroll strategy.\n */\nfunction getMatScrollStrategyAlreadyAttachedError() {\n return Error(`Scroll strategy has already been attached.`);\n}\n\n/**\n * Strategy that will close the overlay as soon as the user starts scrolling.\n */\nclass CloseScrollStrategy {\n constructor(_scrollDispatcher, _ngZone, _viewportRuler, _config) {\n this._scrollDispatcher = _scrollDispatcher;\n this._ngZone = _ngZone;\n this._viewportRuler = _viewportRuler;\n this._config = _config;\n this._scrollSubscription = null;\n /** Detaches the overlay ref and disables the scroll strategy. */\n this._detach = () => {\n this.disable();\n if (this._overlayRef.hasAttached()) {\n this._ngZone.run(() => this._overlayRef.detach());\n }\n };\n }\n /** Attaches this scroll strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatScrollStrategyAlreadyAttachedError();\n }\n this._overlayRef = overlayRef;\n }\n /** Enables the closing of the attached overlay on scroll. */\n enable() {\n if (this._scrollSubscription) {\n return;\n }\n const stream = this._scrollDispatcher.scrolled(0).pipe(filter(scrollable => {\n return !scrollable || !this._overlayRef.overlayElement.contains(scrollable.getElementRef().nativeElement);\n }));\n if (this._config && this._config.threshold && this._config.threshold > 1) {\n this._initialScrollPosition = this._viewportRuler.getViewportScrollPosition().top;\n this._scrollSubscription = stream.subscribe(() => {\n const scrollPosition = this._viewportRuler.getViewportScrollPosition().top;\n if (Math.abs(scrollPosition - this._initialScrollPosition) > this._config.threshold) {\n this._detach();\n } else {\n this._overlayRef.updatePosition();\n }\n });\n } else {\n this._scrollSubscription = stream.subscribe(this._detach);\n }\n }\n /** Disables the closing the attached overlay on scroll. */\n disable() {\n if (this._scrollSubscription) {\n this._scrollSubscription.unsubscribe();\n this._scrollSubscription = null;\n }\n }\n detach() {\n this.disable();\n this._overlayRef = null;\n }\n}\n\n/** Scroll strategy that doesn't do anything. */\nclass NoopScrollStrategy {\n /** Does nothing, as this scroll strategy is a no-op. */\n enable() {}\n /** Does nothing, as this scroll strategy is a no-op. */\n disable() {}\n /** Does nothing, as this scroll strategy is a no-op. */\n attach() {}\n}\n\n/**\n * Gets whether an element is scrolled outside of view by any of its parent scrolling containers.\n * @param element Dimensions of the element (from getBoundingClientRect)\n * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @returns Whether the element is scrolled out of view\n * @docs-private\n */\nfunction isElementScrolledOutsideView(element, scrollContainers) {\n return scrollContainers.some(containerBounds => {\n const outsideAbove = element.bottom < containerBounds.top;\n const outsideBelow = element.top > containerBounds.bottom;\n const outsideLeft = element.right < containerBounds.left;\n const outsideRight = element.left > containerBounds.right;\n return outsideAbove || outsideBelow || outsideLeft || outsideRight;\n });\n}\n/**\n * Gets whether an element is clipped by any of its scrolling containers.\n * @param element Dimensions of the element (from getBoundingClientRect)\n * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @returns Whether the element is clipped\n * @docs-private\n */\nfunction isElementClippedByScrolling(element, scrollContainers) {\n return scrollContainers.some(scrollContainerRect => {\n const clippedAbove = element.top < scrollContainerRect.top;\n const clippedBelow = element.bottom > scrollContainerRect.bottom;\n const clippedLeft = element.left < scrollContainerRect.left;\n const clippedRight = element.right > scrollContainerRect.right;\n return clippedAbove || clippedBelow || clippedLeft || clippedRight;\n });\n}\n\n/**\n * Strategy that will update the element position as the user is scrolling.\n */\nclass RepositionScrollStrategy {\n constructor(_scrollDispatcher, _viewportRuler, _ngZone, _config) {\n this._scrollDispatcher = _scrollDispatcher;\n this._viewportRuler = _viewportRuler;\n this._ngZone = _ngZone;\n this._config = _config;\n this._scrollSubscription = null;\n }\n /** Attaches this scroll strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatScrollStrategyAlreadyAttachedError();\n }\n this._overlayRef = overlayRef;\n }\n /** Enables repositioning of the attached overlay on scroll. */\n enable() {\n if (!this._scrollSubscription) {\n const throttle = this._config ? this._config.scrollThrottle : 0;\n this._scrollSubscription = this._scrollDispatcher.scrolled(throttle).subscribe(() => {\n this._overlayRef.updatePosition();\n // TODO(crisbeto): make `close` on by default once all components can handle it.\n if (this._config && this._config.autoClose) {\n const overlayRect = this._overlayRef.overlayElement.getBoundingClientRect();\n const {\n width,\n height\n } = this._viewportRuler.getViewportSize();\n // TODO(crisbeto): include all ancestor scroll containers here once\n // we have a way of exposing the trigger element to the scroll strategy.\n const parentRects = [{\n width,\n height,\n bottom: height,\n right: width,\n top: 0,\n left: 0\n }];\n if (isElementScrolledOutsideView(overlayRect, parentRects)) {\n this.disable();\n this._ngZone.run(() => this._overlayRef.detach());\n }\n }\n });\n }\n }\n /** Disables repositioning of the attached overlay on scroll. */\n disable() {\n if (this._scrollSubscription) {\n this._scrollSubscription.unsubscribe();\n this._scrollSubscription = null;\n }\n }\n detach() {\n this.disable();\n this._overlayRef = null;\n }\n}\n\n/**\n * Options for how an overlay will handle scrolling.\n *\n * Users can provide a custom value for `ScrollStrategyOptions` to replace the default\n * behaviors. This class primarily acts as a factory for ScrollStrategy instances.\n */\nclass ScrollStrategyOptions {\n constructor(_scrollDispatcher, _viewportRuler, _ngZone, document) {\n this._scrollDispatcher = _scrollDispatcher;\n this._viewportRuler = _viewportRuler;\n this._ngZone = _ngZone;\n /** Do nothing on scroll. */\n this.noop = () => new NoopScrollStrategy();\n /**\n * Close the overlay as soon as the user scrolls.\n * @param config Configuration to be used inside the scroll strategy.\n */\n this.close = config => new CloseScrollStrategy(this._scrollDispatcher, this._ngZone, this._viewportRuler, config);\n /** Block scrolling. */\n this.block = () => new BlockScrollStrategy(this._viewportRuler, this._document);\n /**\n * Update the overlay's position on scroll.\n * @param config Configuration to be used inside the scroll strategy.\n * Allows debouncing the reposition calls.\n */\n this.reposition = config => new RepositionScrollStrategy(this._scrollDispatcher, this._viewportRuler, this._ngZone, config);\n this._document = document;\n }\n static {\n this.ɵfac = function ScrollStrategyOptions_Factory(t) {\n return new (t || ScrollStrategyOptions)(i0.ɵɵinject(i1.ScrollDispatcher), i0.ɵɵinject(i1.ViewportRuler), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(DOCUMENT));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ScrollStrategyOptions,\n factory: ScrollStrategyOptions.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ScrollStrategyOptions, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: i1.ScrollDispatcher\n }, {\n type: i1.ViewportRuler\n }, {\n type: i0.NgZone\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }], null);\n})();\n\n/** Initial configuration used when creating an overlay. */\nclass OverlayConfig {\n constructor(config) {\n /** Strategy to be used when handling scroll events while the overlay is open. */\n this.scrollStrategy = new NoopScrollStrategy();\n /** Custom class to add to the overlay pane. */\n this.panelClass = '';\n /** Whether the overlay has a backdrop. */\n this.hasBackdrop = false;\n /** Custom class to add to the backdrop */\n this.backdropClass = 'cdk-overlay-dark-backdrop';\n /**\n * Whether the overlay should be disposed of when the user goes backwards/forwards in history.\n * Note that this usually doesn't include clicking on links (unless the user is using\n * the `HashLocationStrategy`).\n */\n this.disposeOnNavigation = false;\n if (config) {\n // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,\n // loses the array generic type in the `for of`. But we *also* have to use `Array` because\n // typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`\n const configKeys = Object.keys(config);\n for (const key of configKeys) {\n if (config[key] !== undefined) {\n // TypeScript, as of version 3.5, sees the left-hand-side of this expression\n // as \"I don't know *which* key this is, so the only valid value is the intersection\n // of all the possible values.\" In this case, that happens to be `undefined`. TypeScript\n // is not smart enough to see that the right-hand-side is actually an access of the same\n // exact type with the same exact key, meaning that the value type must be identical.\n // So we use `any` to work around this.\n this[key] = config[key];\n }\n }\n }\n }\n}\n\n/** The points of the origin element and the overlay element to connect. */\nclass ConnectionPositionPair {\n constructor(origin, overlay, /** Offset along the X axis. */\n offsetX, /** Offset along the Y axis. */\n offsetY, /** Class(es) to be applied to the panel while this position is active. */\n panelClass) {\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n this.panelClass = panelClass;\n this.originX = origin.originX;\n this.originY = origin.originY;\n this.overlayX = overlay.overlayX;\n this.overlayY = overlay.overlayY;\n }\n}\n/**\n * Set of properties regarding the position of the origin and overlay relative to the viewport\n * with respect to the containing Scrollable elements.\n *\n * The overlay and origin are clipped if any part of their bounding client rectangle exceeds the\n * bounds of any one of the strategy's Scrollable's bounding client rectangle.\n *\n * The overlay and origin are outside view if there is no overlap between their bounding client\n * rectangle and any one of the strategy's Scrollable's bounding client rectangle.\n *\n * ----------- -----------\n * | outside | | clipped |\n * | view | --------------------------\n * | | | | | |\n * ---------- | ----------- |\n * -------------------------- | |\n * | | | Scrollable |\n * | | | |\n * | | --------------------------\n * | Scrollable |\n * | |\n * --------------------------\n *\n * @docs-private\n */\nclass ScrollingVisibility {}\n/** The change event emitted by the strategy when a fallback position is used. */\nclass ConnectedOverlayPositionChange {\n constructor( /** The position used as a result of this change. */\n connectionPair, /** @docs-private */\n scrollableViewProperties) {\n this.connectionPair = connectionPair;\n this.scrollableViewProperties = scrollableViewProperties;\n }\n}\n/**\n * Validates whether a vertical position property matches the expected values.\n * @param property Name of the property being validated.\n * @param value Value of the property being validated.\n * @docs-private\n */\nfunction validateVerticalPosition(property, value) {\n if (value !== 'top' && value !== 'bottom' && value !== 'center') {\n throw Error(`ConnectedPosition: Invalid ${property} \"${value}\". ` + `Expected \"top\", \"bottom\" or \"center\".`);\n }\n}\n/**\n * Validates whether a horizontal position property matches the expected values.\n * @param property Name of the property being validated.\n * @param value Value of the property being validated.\n * @docs-private\n */\nfunction validateHorizontalPosition(property, value) {\n if (value !== 'start' && value !== 'end' && value !== 'center') {\n throw Error(`ConnectedPosition: Invalid ${property} \"${value}\". ` + `Expected \"start\", \"end\" or \"center\".`);\n }\n}\n\n/**\n * Service for dispatching events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass BaseOverlayDispatcher {\n constructor(document) {\n /** Currently attached overlays in the order they were attached. */\n this._attachedOverlays = [];\n this._document = document;\n }\n ngOnDestroy() {\n this.detach();\n }\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n // Ensure that we don't get the same overlay multiple times.\n this.remove(overlayRef);\n this._attachedOverlays.push(overlayRef);\n }\n /** Remove an overlay from the list of attached overlay refs. */\n remove(overlayRef) {\n const index = this._attachedOverlays.indexOf(overlayRef);\n if (index > -1) {\n this._attachedOverlays.splice(index, 1);\n }\n // Remove the global listener once there are no more overlays.\n if (this._attachedOverlays.length === 0) {\n this.detach();\n }\n }\n static {\n this.ɵfac = function BaseOverlayDispatcher_Factory(t) {\n return new (t || BaseOverlayDispatcher)(i0.ɵɵinject(DOCUMENT));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: BaseOverlayDispatcher,\n factory: BaseOverlayDispatcher.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(BaseOverlayDispatcher, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }], null);\n})();\n\n/**\n * Service for dispatching keyboard events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass OverlayKeyboardDispatcher extends BaseOverlayDispatcher {\n constructor(document, /** @breaking-change 14.0.0 _ngZone will be required. */\n _ngZone) {\n super(document);\n this._ngZone = _ngZone;\n /** Keyboard event listener that will be attached to the body. */\n this._keydownListener = event => {\n const overlays = this._attachedOverlays;\n for (let i = overlays.length - 1; i > -1; i--) {\n // Dispatch the keydown event to the top overlay which has subscribers to its keydown events.\n // We want to target the most recent overlay, rather than trying to match where the event came\n // from, because some components might open an overlay, but keep focus on a trigger element\n // (e.g. for select and autocomplete). We skip overlays without keydown event subscriptions,\n // because we don't want overlays that don't handle keyboard events to block the ones below\n // them that do.\n if (overlays[i]._keydownEvents.observers.length > 0) {\n const keydownEvents = overlays[i]._keydownEvents;\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.run(() => keydownEvents.next(event));\n } else {\n keydownEvents.next(event);\n }\n break;\n }\n }\n };\n }\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n super.add(overlayRef);\n // Lazily start dispatcher once first overlay is added\n if (!this._isAttached) {\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.runOutsideAngular(() => this._document.body.addEventListener('keydown', this._keydownListener));\n } else {\n this._document.body.addEventListener('keydown', this._keydownListener);\n }\n this._isAttached = true;\n }\n }\n /** Detaches the global keyboard event listener. */\n detach() {\n if (this._isAttached) {\n this._document.body.removeEventListener('keydown', this._keydownListener);\n this._isAttached = false;\n }\n }\n static {\n this.ɵfac = function OverlayKeyboardDispatcher_Factory(t) {\n return new (t || OverlayKeyboardDispatcher)(i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i0.NgZone, 8));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: OverlayKeyboardDispatcher,\n factory: OverlayKeyboardDispatcher.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(OverlayKeyboardDispatcher, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }, {\n type: i0.NgZone,\n decorators: [{\n type: Optional\n }]\n }], null);\n})();\n\n/**\n * Service for dispatching mouse click events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {\n constructor(document, _platform, /** @breaking-change 14.0.0 _ngZone will be required. */\n _ngZone) {\n super(document);\n this._platform = _platform;\n this._ngZone = _ngZone;\n this._cursorStyleIsSet = false;\n /** Store pointerdown event target to track origin of click. */\n this._pointerDownListener = event => {\n this._pointerDownEventTarget = _getEventTarget(event);\n };\n /** Click event listener that will be attached to the body propagate phase. */\n this._clickListener = event => {\n const target = _getEventTarget(event);\n // In case of a click event, we want to check the origin of the click\n // (e.g. in case where a user starts a click inside the overlay and\n // releases the click outside of it).\n // This is done by using the event target of the preceding pointerdown event.\n // Every click event caused by a pointer device has a preceding pointerdown\n // event, unless the click was programmatically triggered (e.g. in a unit test).\n const origin = event.type === 'click' && this._pointerDownEventTarget ? this._pointerDownEventTarget : target;\n // Reset the stored pointerdown event target, to avoid having it interfere\n // in subsequent events.\n this._pointerDownEventTarget = null;\n // We copy the array because the original may be modified asynchronously if the\n // outsidePointerEvents listener decides to detach overlays resulting in index errors inside\n // the for loop.\n const overlays = this._attachedOverlays.slice();\n // Dispatch the mouse event to the top overlay which has subscribers to its mouse events.\n // We want to target all overlays for which the click could be considered as outside click.\n // As soon as we reach an overlay for which the click is not outside click we break off\n // the loop.\n for (let i = overlays.length - 1; i > -1; i--) {\n const overlayRef = overlays[i];\n if (overlayRef._outsidePointerEvents.observers.length < 1 || !overlayRef.hasAttached()) {\n continue;\n }\n // If it's a click inside the overlay, just break - we should do nothing\n // If it's an outside click (both origin and target of the click) dispatch the mouse event,\n // and proceed with the next overlay\n if (overlayRef.overlayElement.contains(target) || overlayRef.overlayElement.contains(origin)) {\n break;\n }\n const outsidePointerEvents = overlayRef._outsidePointerEvents;\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.run(() => outsidePointerEvents.next(event));\n } else {\n outsidePointerEvents.next(event);\n }\n }\n };\n }\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n super.add(overlayRef);\n // Safari on iOS does not generate click events for non-interactive\n // elements. However, we want to receive a click for any element outside\n // the overlay. We can force a \"clickable\" state by setting\n // `cursor: pointer` on the document body. See:\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event#Safari_Mobile\n // https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html\n if (!this._isAttached) {\n const body = this._document.body;\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.runOutsideAngular(() => this._addEventListeners(body));\n } else {\n this._addEventListeners(body);\n }\n // click event is not fired on iOS. To make element \"clickable\" we are\n // setting the cursor to pointer\n if (this._platform.IOS && !this._cursorStyleIsSet) {\n this._cursorOriginalValue = body.style.cursor;\n body.style.cursor = 'pointer';\n this._cursorStyleIsSet = true;\n }\n this._isAttached = true;\n }\n }\n /** Detaches the global keyboard event listener. */\n detach() {\n if (this._isAttached) {\n const body = this._document.body;\n body.removeEventListener('pointerdown', this._pointerDownListener, true);\n body.removeEventListener('click', this._clickListener, true);\n body.removeEventListener('auxclick', this._clickListener, true);\n body.removeEventListener('contextmenu', this._clickListener, true);\n if (this._platform.IOS && this._cursorStyleIsSet) {\n body.style.cursor = this._cursorOriginalValue;\n this._cursorStyleIsSet = false;\n }\n this._isAttached = false;\n }\n }\n _addEventListeners(body) {\n body.addEventListener('pointerdown', this._pointerDownListener, true);\n body.addEventListener('click', this._clickListener, true);\n body.addEventListener('auxclick', this._clickListener, true);\n body.addEventListener('contextmenu', this._clickListener, true);\n }\n static {\n this.ɵfac = function OverlayOutsideClickDispatcher_Factory(t) {\n return new (t || OverlayOutsideClickDispatcher)(i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i1$1.Platform), i0.ɵɵinject(i0.NgZone, 8));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: OverlayOutsideClickDispatcher,\n factory: OverlayOutsideClickDispatcher.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(OverlayOutsideClickDispatcher, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }, {\n type: i1$1.Platform\n }, {\n type: i0.NgZone,\n decorators: [{\n type: Optional\n }]\n }], null);\n})();\n\n/** Container inside which all overlays will render. */\nclass OverlayContainer {\n constructor(document, _platform) {\n this._platform = _platform;\n this._document = document;\n }\n ngOnDestroy() {\n this._containerElement?.remove();\n }\n /**\n * This method returns the overlay container element. It will lazily\n * create the element the first time it is called to facilitate using\n * the container in non-browser environments.\n * @returns the container element\n */\n getContainerElement() {\n if (!this._containerElement) {\n this._createContainer();\n }\n return this._containerElement;\n }\n /**\n * Create the overlay container element, which is simply a div\n * with the 'cdk-overlay-container' class on the document body.\n */\n _createContainer() {\n const containerClass = 'cdk-overlay-container';\n // TODO(crisbeto): remove the testing check once we have an overlay testing\n // module or Angular starts tearing down the testing `NgModule`. See:\n // https://github.com/angular/angular/issues/18831\n if (this._platform.isBrowser || _isTestEnvironment()) {\n const oppositePlatformContainers = this._document.querySelectorAll(`.${containerClass}[platform=\"server\"], ` + `.${containerClass}[platform=\"test\"]`);\n // Remove any old containers from the opposite platform.\n // This can happen when transitioning from the server to the client.\n for (let i = 0; i < oppositePlatformContainers.length; i++) {\n oppositePlatformContainers[i].remove();\n }\n }\n const container = this._document.createElement('div');\n container.classList.add(containerClass);\n // A long time ago we kept adding new overlay containers whenever a new app was instantiated,\n // but at some point we added logic which clears the duplicate ones in order to avoid leaks.\n // The new logic was a little too aggressive since it was breaking some legitimate use cases.\n // To mitigate the problem we made it so that only containers from a different platform are\n // cleared, but the side-effect was that people started depending on the overly-aggressive\n // logic to clean up their tests for them. Until we can introduce an overlay-specific testing\n // module which does the cleanup, we try to detect that we're in a test environment and we\n // always clear the container. See #17006.\n // TODO(crisbeto): remove the test environment check once we have an overlay testing module.\n if (_isTestEnvironment()) {\n container.setAttribute('platform', 'test');\n } else if (!this._platform.isBrowser) {\n container.setAttribute('platform', 'server');\n }\n this._document.body.appendChild(container);\n this._containerElement = container;\n }\n static {\n this.ɵfac = function OverlayContainer_Factory(t) {\n return new (t || OverlayContainer)(i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i1$1.Platform));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: OverlayContainer,\n factory: OverlayContainer.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(OverlayContainer, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }, {\n type: i1$1.Platform\n }], null);\n})();\n\n/**\n * Reference to an overlay that has been created with the Overlay service.\n * Used to manipulate or dispose of said overlay.\n */\nclass OverlayRef {\n constructor(_portalOutlet, _host, _pane, _config, _ngZone, _keyboardDispatcher, _document, _location, _outsideClickDispatcher, _animationsDisabled = false) {\n this._portalOutlet = _portalOutlet;\n this._host = _host;\n this._pane = _pane;\n this._config = _config;\n this._ngZone = _ngZone;\n this._keyboardDispatcher = _keyboardDispatcher;\n this._document = _document;\n this._location = _location;\n this._outsideClickDispatcher = _outsideClickDispatcher;\n this._animationsDisabled = _animationsDisabled;\n this._backdropElement = null;\n this._backdropClick = new Subject();\n this._attachments = new Subject();\n this._detachments = new Subject();\n this._locationChanges = Subscription.EMPTY;\n this._backdropClickHandler = event => this._backdropClick.next(event);\n this._backdropTransitionendHandler = event => {\n this._disposeBackdrop(event.target);\n };\n /** Stream of keydown events dispatched to this overlay. */\n this._keydownEvents = new Subject();\n /** Stream of mouse outside events dispatched to this overlay. */\n this._outsidePointerEvents = new Subject();\n if (_config.scrollStrategy) {\n this._scrollStrategy = _config.scrollStrategy;\n this._scrollStrategy.attach(this);\n }\n this._positionStrategy = _config.positionStrategy;\n }\n /** The overlay's HTML element */\n get overlayElement() {\n return this._pane;\n }\n /** The overlay's backdrop HTML element. */\n get backdropElement() {\n return this._backdropElement;\n }\n /**\n * Wrapper around the panel element. Can be used for advanced\n * positioning where a wrapper with specific styling is\n * required around the overlay pane.\n */\n get hostElement() {\n return this._host;\n }\n /**\n * Attaches content, given via a Portal, to the overlay.\n * If the overlay is configured to have a backdrop, it will be created.\n *\n * @param portal Portal instance to which to attach the overlay.\n * @returns The portal attachment result.\n */\n attach(portal) {\n // Insert the host into the DOM before attaching the portal, otherwise\n // the animations module will skip animations on repeat attachments.\n if (!this._host.parentElement && this._previousHostParent) {\n this._previousHostParent.appendChild(this._host);\n }\n const attachResult = this._portalOutlet.attach(portal);\n if (this._positionStrategy) {\n this._positionStrategy.attach(this);\n }\n this._updateStackingOrder();\n this._updateElementSize();\n this._updateElementDirection();\n if (this._scrollStrategy) {\n this._scrollStrategy.enable();\n }\n // Update the position once the zone is stable so that the overlay will be fully rendered\n // before attempting to position it, as the position may depend on the size of the rendered\n // content.\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n // The overlay could've been detached before the zone has stabilized.\n if (this.hasAttached()) {\n this.updatePosition();\n }\n });\n // Enable pointer events for the overlay pane element.\n this._togglePointerEvents(true);\n if (this._config.hasBackdrop) {\n this._attachBackdrop();\n }\n if (this._config.panelClass) {\n this._toggleClasses(this._pane, this._config.panelClass, true);\n }\n // Only emit the `attachments` event once all other setup is done.\n this._attachments.next();\n // Track this overlay by the keyboard dispatcher\n this._keyboardDispatcher.add(this);\n if (this._config.disposeOnNavigation) {\n this._locationChanges = this._location.subscribe(() => this.dispose());\n }\n this._outsideClickDispatcher.add(this);\n // TODO(crisbeto): the null check is here, because the portal outlet returns `any`.\n // We should be guaranteed for the result to be `ComponentRef | EmbeddedViewRef`, but\n // `instanceof EmbeddedViewRef` doesn't appear to work at the moment.\n if (typeof attachResult?.onDestroy === 'function') {\n // In most cases we control the portal and we know when it is being detached so that\n // we can finish the disposal process. The exception is if the user passes in a custom\n // `ViewContainerRef` that isn't destroyed through the overlay API. Note that we use\n // `detach` here instead of `dispose`, because we don't know if the user intends to\n // reattach the overlay at a later point. It also has the advantage of waiting for animations.\n attachResult.onDestroy(() => {\n if (this.hasAttached()) {\n // We have to delay the `detach` call, because detaching immediately prevents\n // other destroy hooks from running. This is likely a framework bug similar to\n // https://github.com/angular/angular/issues/46119\n this._ngZone.runOutsideAngular(() => Promise.resolve().then(() => this.detach()));\n }\n });\n }\n return attachResult;\n }\n /**\n * Detaches an overlay from a portal.\n * @returns The portal detachment result.\n */\n detach() {\n if (!this.hasAttached()) {\n return;\n }\n this.detachBackdrop();\n // When the overlay is detached, the pane element should disable pointer events.\n // This is necessary because otherwise the pane element will cover the page and disable\n // pointer events therefore. Depends on the position strategy and the applied pane boundaries.\n this._togglePointerEvents(false);\n if (this._positionStrategy && this._positionStrategy.detach) {\n this._positionStrategy.detach();\n }\n if (this._scrollStrategy) {\n this._scrollStrategy.disable();\n }\n const detachmentResult = this._portalOutlet.detach();\n // Only emit after everything is detached.\n this._detachments.next();\n // Remove this overlay from keyboard dispatcher tracking.\n this._keyboardDispatcher.remove(this);\n // Keeping the host element in the DOM can cause scroll jank, because it still gets\n // rendered, even though it's transparent and unclickable which is why we remove it.\n this._detachContentWhenStable();\n this._locationChanges.unsubscribe();\n this._outsideClickDispatcher.remove(this);\n return detachmentResult;\n }\n /** Cleans up the overlay from the DOM. */\n dispose() {\n const isAttached = this.hasAttached();\n if (this._positionStrategy) {\n this._positionStrategy.dispose();\n }\n this._disposeScrollStrategy();\n this._disposeBackdrop(this._backdropElement);\n this._locationChanges.unsubscribe();\n this._keyboardDispatcher.remove(this);\n this._portalOutlet.dispose();\n this._attachments.complete();\n this._backdropClick.complete();\n this._keydownEvents.complete();\n this._outsidePointerEvents.complete();\n this._outsideClickDispatcher.remove(this);\n this._host?.remove();\n this._previousHostParent = this._pane = this._host = null;\n if (isAttached) {\n this._detachments.next();\n }\n this._detachments.complete();\n }\n /** Whether the overlay has attached content. */\n hasAttached() {\n return this._portalOutlet.hasAttached();\n }\n /** Gets an observable that emits when the backdrop has been clicked. */\n backdropClick() {\n return this._backdropClick;\n }\n /** Gets an observable that emits when the overlay has been attached. */\n attachments() {\n return this._attachments;\n }\n /** Gets an observable that emits when the overlay has been detached. */\n detachments() {\n return this._detachments;\n }\n /** Gets an observable of keydown events targeted to this overlay. */\n keydownEvents() {\n return this._keydownEvents;\n }\n /** Gets an observable of pointer events targeted outside this overlay. */\n outsidePointerEvents() {\n return this._outsidePointerEvents;\n }\n /** Gets the current overlay configuration, which is immutable. */\n getConfig() {\n return this._config;\n }\n /** Updates the position of the overlay based on the position strategy. */\n updatePosition() {\n if (this._positionStrategy) {\n this._positionStrategy.apply();\n }\n }\n /** Switches to a new position strategy and updates the overlay position. */\n updatePositionStrategy(strategy) {\n if (strategy === this._positionStrategy) {\n return;\n }\n if (this._positionStrategy) {\n this._positionStrategy.dispose();\n }\n this._positionStrategy = strategy;\n if (this.hasAttached()) {\n strategy.attach(this);\n this.updatePosition();\n }\n }\n /** Update the size properties of the overlay. */\n updateSize(sizeConfig) {\n this._config = {\n ...this._config,\n ...sizeConfig\n };\n this._updateElementSize();\n }\n /** Sets the LTR/RTL direction for the overlay. */\n setDirection(dir) {\n this._config = {\n ...this._config,\n direction: dir\n };\n this._updateElementDirection();\n }\n /** Add a CSS class or an array of classes to the overlay pane. */\n addPanelClass(classes) {\n if (this._pane) {\n this._toggleClasses(this._pane, classes, true);\n }\n }\n /** Remove a CSS class or an array of classes from the overlay pane. */\n removePanelClass(classes) {\n if (this._pane) {\n this._toggleClasses(this._pane, classes, false);\n }\n }\n /**\n * Returns the layout direction of the overlay panel.\n */\n getDirection() {\n const direction = this._config.direction;\n if (!direction) {\n return 'ltr';\n }\n return typeof direction === 'string' ? direction : direction.value;\n }\n /** Switches to a new scroll strategy. */\n updateScrollStrategy(strategy) {\n if (strategy === this._scrollStrategy) {\n return;\n }\n this._disposeScrollStrategy();\n this._scrollStrategy = strategy;\n if (this.hasAttached()) {\n strategy.attach(this);\n strategy.enable();\n }\n }\n /** Updates the text direction of the overlay panel. */\n _updateElementDirection() {\n this._host.setAttribute('dir', this.getDirection());\n }\n /** Updates the size of the overlay element based on the overlay config. */\n _updateElementSize() {\n if (!this._pane) {\n return;\n }\n const style = this._pane.style;\n style.width = coerceCssPixelValue(this._config.width);\n style.height = coerceCssPixelValue(this._config.height);\n style.minWidth = coerceCssPixelValue(this._config.minWidth);\n style.minHeight = coerceCssPixelValue(this._config.minHeight);\n style.maxWidth = coerceCssPixelValue(this._config.maxWidth);\n style.maxHeight = coerceCssPixelValue(this._config.maxHeight);\n }\n /** Toggles the pointer events for the overlay pane element. */\n _togglePointerEvents(enablePointer) {\n this._pane.style.pointerEvents = enablePointer ? '' : 'none';\n }\n /** Attaches a backdrop for this overlay. */\n _attachBackdrop() {\n const showingClass = 'cdk-overlay-backdrop-showing';\n this._backdropElement = this._document.createElement('div');\n this._backdropElement.classList.add('cdk-overlay-backdrop');\n if (this._animationsDisabled) {\n this._backdropElement.classList.add('cdk-overlay-backdrop-noop-animation');\n }\n if (this._config.backdropClass) {\n this._toggleClasses(this._backdropElement, this._config.backdropClass, true);\n }\n // Insert the backdrop before the pane in the DOM order,\n // in order to handle stacked overlays properly.\n this._host.parentElement.insertBefore(this._backdropElement, this._host);\n // Forward backdrop clicks such that the consumer of the overlay can perform whatever\n // action desired when such a click occurs (usually closing the overlay).\n this._backdropElement.addEventListener('click', this._backdropClickHandler);\n // Add class to fade-in the backdrop after one frame.\n if (!this._animationsDisabled && typeof requestAnimationFrame !== 'undefined') {\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => {\n if (this._backdropElement) {\n this._backdropElement.classList.add(showingClass);\n }\n });\n });\n } else {\n this._backdropElement.classList.add(showingClass);\n }\n }\n /**\n * Updates the stacking order of the element, moving it to the top if necessary.\n * This is required in cases where one overlay was detached, while another one,\n * that should be behind it, was destroyed. The next time both of them are opened,\n * the stacking will be wrong, because the detached element's pane will still be\n * in its original DOM position.\n */\n _updateStackingOrder() {\n if (this._host.nextSibling) {\n this._host.parentNode.appendChild(this._host);\n }\n }\n /** Detaches the backdrop (if any) associated with the overlay. */\n detachBackdrop() {\n const backdropToDetach = this._backdropElement;\n if (!backdropToDetach) {\n return;\n }\n if (this._animationsDisabled) {\n this._disposeBackdrop(backdropToDetach);\n return;\n }\n backdropToDetach.classList.remove('cdk-overlay-backdrop-showing');\n this._ngZone.runOutsideAngular(() => {\n backdropToDetach.addEventListener('transitionend', this._backdropTransitionendHandler);\n });\n // If the backdrop doesn't have a transition, the `transitionend` event won't fire.\n // In this case we make it unclickable and we try to remove it after a delay.\n backdropToDetach.style.pointerEvents = 'none';\n // Run this outside the Angular zone because there's nothing that Angular cares about.\n // If it were to run inside the Angular zone, every test that used Overlay would have to be\n // either async or fakeAsync.\n this._backdropTimeout = this._ngZone.runOutsideAngular(() => setTimeout(() => {\n this._disposeBackdrop(backdropToDetach);\n }, 500));\n }\n /** Toggles a single CSS class or an array of classes on an element. */\n _toggleClasses(element, cssClasses, isAdd) {\n const classes = coerceArray(cssClasses || []).filter(c => !!c);\n if (classes.length) {\n isAdd ? element.classList.add(...classes) : element.classList.remove(...classes);\n }\n }\n /** Detaches the overlay content next time the zone stabilizes. */\n _detachContentWhenStable() {\n // Normally we wouldn't have to explicitly run this outside the `NgZone`, however\n // if the consumer is using `zone-patch-rxjs`, the `Subscription.unsubscribe` call will\n // be patched to run inside the zone, which will throw us into an infinite loop.\n this._ngZone.runOutsideAngular(() => {\n // We can't remove the host here immediately, because the overlay pane's content\n // might still be animating. This stream helps us avoid interrupting the animation\n // by waiting for the pane to become empty.\n const subscription = this._ngZone.onStable.pipe(takeUntil(merge(this._attachments, this._detachments))).subscribe(() => {\n // Needs a couple of checks for the pane and host, because\n // they may have been removed by the time the zone stabilizes.\n if (!this._pane || !this._host || this._pane.children.length === 0) {\n if (this._pane && this._config.panelClass) {\n this._toggleClasses(this._pane, this._config.panelClass, false);\n }\n if (this._host && this._host.parentElement) {\n this._previousHostParent = this._host.parentElement;\n this._host.remove();\n }\n subscription.unsubscribe();\n }\n });\n });\n }\n /** Disposes of a scroll strategy. */\n _disposeScrollStrategy() {\n const scrollStrategy = this._scrollStrategy;\n if (scrollStrategy) {\n scrollStrategy.disable();\n if (scrollStrategy.detach) {\n scrollStrategy.detach();\n }\n }\n }\n /** Removes a backdrop element from the DOM. */\n _disposeBackdrop(backdrop) {\n if (backdrop) {\n backdrop.removeEventListener('click', this._backdropClickHandler);\n backdrop.removeEventListener('transitionend', this._backdropTransitionendHandler);\n backdrop.remove();\n // It is possible that a new portal has been attached to this overlay since we started\n // removing the backdrop. If that is the case, only clear the backdrop reference if it\n // is still the same instance that we started to remove.\n if (this._backdropElement === backdrop) {\n this._backdropElement = null;\n }\n }\n if (this._backdropTimeout) {\n clearTimeout(this._backdropTimeout);\n this._backdropTimeout = undefined;\n }\n }\n}\n\n// TODO: refactor clipping detection into a separate thing (part of scrolling module)\n// TODO: doesn't handle both flexible width and height when it has to scroll along both axis.\n/** Class to be added to the overlay bounding box. */\nconst boundingBoxClass = 'cdk-overlay-connected-position-bounding-box';\n/** Regex used to split a string on its CSS units. */\nconst cssUnitPattern = /([A-Za-z%]+)$/;\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * implicit position relative some origin element. The relative position is defined in terms of\n * a point on the origin element that is connected to a point on the overlay element. For example,\n * a basic dropdown is connecting the bottom-left corner of the origin to the top-left corner\n * of the overlay.\n */\nclass FlexibleConnectedPositionStrategy {\n /** Ordered list of preferred positions, from most to least desirable. */\n get positions() {\n return this._preferredPositions;\n }\n constructor(connectedTo, _viewportRuler, _document, _platform, _overlayContainer) {\n this._viewportRuler = _viewportRuler;\n this._document = _document;\n this._platform = _platform;\n this._overlayContainer = _overlayContainer;\n /** Last size used for the bounding box. Used to avoid resizing the overlay after open. */\n this._lastBoundingBoxSize = {\n width: 0,\n height: 0\n };\n /** Whether the overlay was pushed in a previous positioning. */\n this._isPushed = false;\n /** Whether the overlay can be pushed on-screen on the initial open. */\n this._canPush = true;\n /** Whether the overlay can grow via flexible width/height after the initial open. */\n this._growAfterOpen = false;\n /** Whether the overlay's width and height can be constrained to fit within the viewport. */\n this._hasFlexibleDimensions = true;\n /** Whether the overlay position is locked. */\n this._positionLocked = false;\n /** Amount of space that must be maintained between the overlay and the edge of the viewport. */\n this._viewportMargin = 0;\n /** The Scrollable containers used to check scrollable view properties on position change. */\n this._scrollables = [];\n /** Ordered list of preferred positions, from most to least desirable. */\n this._preferredPositions = [];\n /** Subject that emits whenever the position changes. */\n this._positionChanges = new Subject();\n /** Subscription to viewport size changes. */\n this._resizeSubscription = Subscription.EMPTY;\n /** Default offset for the overlay along the x axis. */\n this._offsetX = 0;\n /** Default offset for the overlay along the y axis. */\n this._offsetY = 0;\n /** Keeps track of the CSS classes that the position strategy has applied on the overlay panel. */\n this._appliedPanelClasses = [];\n /** Observable sequence of position changes. */\n this.positionChanges = this._positionChanges;\n this.setOrigin(connectedTo);\n }\n /** Attaches this position strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef && overlayRef !== this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('This position strategy is already attached to an overlay');\n }\n this._validatePositions();\n overlayRef.hostElement.classList.add(boundingBoxClass);\n this._overlayRef = overlayRef;\n this._boundingBox = overlayRef.hostElement;\n this._pane = overlayRef.overlayElement;\n this._isDisposed = false;\n this._isInitialRender = true;\n this._lastPosition = null;\n this._resizeSubscription.unsubscribe();\n this._resizeSubscription = this._viewportRuler.change().subscribe(() => {\n // When the window is resized, we want to trigger the next reposition as if it\n // was an initial render, in order for the strategy to pick a new optimal position,\n // otherwise position locking will cause it to stay at the old one.\n this._isInitialRender = true;\n this.apply();\n });\n }\n /**\n * Updates the position of the overlay element, using whichever preferred position relative\n * to the origin best fits on-screen.\n *\n * The selection of a position goes as follows:\n * - If any positions fit completely within the viewport as-is,\n * choose the first position that does so.\n * - If flexible dimensions are enabled and at least one satisfies the given minimum width/height,\n * choose the position with the greatest available size modified by the positions' weight.\n * - If pushing is enabled, take the position that went off-screen the least and push it\n * on-screen.\n * - If none of the previous criteria were met, use the position that goes off-screen the least.\n * @docs-private\n */\n apply() {\n // We shouldn't do anything if the strategy was disposed or we're on the server.\n if (this._isDisposed || !this._platform.isBrowser) {\n return;\n }\n // If the position has been applied already (e.g. when the overlay was opened) and the\n // consumer opted into locking in the position, re-use the old position, in order to\n // prevent the overlay from jumping around.\n if (!this._isInitialRender && this._positionLocked && this._lastPosition) {\n this.reapplyLastPosition();\n return;\n }\n this._clearPanelClasses();\n this._resetOverlayElementStyles();\n this._resetBoundingBoxStyles();\n // We need the bounding rects for the origin, the overlay and the container to determine how to position\n // the overlay relative to the origin.\n // We use the viewport rect to determine whether a position would go off-screen.\n this._viewportRect = this._getNarrowedViewportRect();\n this._originRect = this._getOriginRect();\n this._overlayRect = this._pane.getBoundingClientRect();\n this._containerRect = this._overlayContainer.getContainerElement().getBoundingClientRect();\n const originRect = this._originRect;\n const overlayRect = this._overlayRect;\n const viewportRect = this._viewportRect;\n const containerRect = this._containerRect;\n // Positions where the overlay will fit with flexible dimensions.\n const flexibleFits = [];\n // Fallback if none of the preferred positions fit within the viewport.\n let fallback;\n // Go through each of the preferred positions looking for a good fit.\n // If a good fit is found, it will be applied immediately.\n for (let pos of this._preferredPositions) {\n // Get the exact (x, y) coordinate for the point-of-origin on the origin element.\n let originPoint = this._getOriginPoint(originRect, containerRect, pos);\n // From that point-of-origin, get the exact (x, y) coordinate for the top-left corner of the\n // overlay in this position. We use the top-left corner for calculations and later translate\n // this into an appropriate (top, left, bottom, right) style.\n let overlayPoint = this._getOverlayPoint(originPoint, overlayRect, pos);\n // Calculate how well the overlay would fit into the viewport with this point.\n let overlayFit = this._getOverlayFit(overlayPoint, overlayRect, viewportRect, pos);\n // If the overlay, without any further work, fits into the viewport, use this position.\n if (overlayFit.isCompletelyWithinViewport) {\n this._isPushed = false;\n this._applyPosition(pos, originPoint);\n return;\n }\n // If the overlay has flexible dimensions, we can use this position\n // so long as there's enough space for the minimum dimensions.\n if (this._canFitWithFlexibleDimensions(overlayFit, overlayPoint, viewportRect)) {\n // Save positions where the overlay will fit with flexible dimensions. We will use these\n // if none of the positions fit *without* flexible dimensions.\n flexibleFits.push({\n position: pos,\n origin: originPoint,\n overlayRect,\n boundingBoxRect: this._calculateBoundingBoxRect(originPoint, pos)\n });\n continue;\n }\n // If the current preferred position does not fit on the screen, remember the position\n // if it has more visible area on-screen than we've seen and move onto the next preferred\n // position.\n if (!fallback || fallback.overlayFit.visibleArea < overlayFit.visibleArea) {\n fallback = {\n overlayFit,\n overlayPoint,\n originPoint,\n position: pos,\n overlayRect\n };\n }\n }\n // If there are any positions where the overlay would fit with flexible dimensions, choose the\n // one that has the greatest area available modified by the position's weight\n if (flexibleFits.length) {\n let bestFit = null;\n let bestScore = -1;\n for (const fit of flexibleFits) {\n const score = fit.boundingBoxRect.width * fit.boundingBoxRect.height * (fit.position.weight || 1);\n if (score > bestScore) {\n bestScore = score;\n bestFit = fit;\n }\n }\n this._isPushed = false;\n this._applyPosition(bestFit.position, bestFit.origin);\n return;\n }\n // When none of the preferred positions fit within the viewport, take the position\n // that went off-screen the least and attempt to push it on-screen.\n if (this._canPush) {\n // TODO(jelbourn): after pushing, the opening \"direction\" of the overlay might not make sense.\n this._isPushed = true;\n this._applyPosition(fallback.position, fallback.originPoint);\n return;\n }\n // All options for getting the overlay within the viewport have been exhausted, so go with the\n // position that went off-screen the least.\n this._applyPosition(fallback.position, fallback.originPoint);\n }\n detach() {\n this._clearPanelClasses();\n this._lastPosition = null;\n this._previousPushAmount = null;\n this._resizeSubscription.unsubscribe();\n }\n /** Cleanup after the element gets destroyed. */\n dispose() {\n if (this._isDisposed) {\n return;\n }\n // We can't use `_resetBoundingBoxStyles` here, because it resets\n // some properties to zero, rather than removing them.\n if (this._boundingBox) {\n extendStyles(this._boundingBox.style, {\n top: '',\n left: '',\n right: '',\n bottom: '',\n height: '',\n width: '',\n alignItems: '',\n justifyContent: ''\n });\n }\n if (this._pane) {\n this._resetOverlayElementStyles();\n }\n if (this._overlayRef) {\n this._overlayRef.hostElement.classList.remove(boundingBoxClass);\n }\n this.detach();\n this._positionChanges.complete();\n this._overlayRef = this._boundingBox = null;\n this._isDisposed = true;\n }\n /**\n * This re-aligns the overlay element with the trigger in its last calculated position,\n * even if a position higher in the \"preferred positions\" list would now fit. This\n * allows one to re-align the panel without changing the orientation of the panel.\n */\n reapplyLastPosition() {\n if (this._isDisposed || !this._platform.isBrowser) {\n return;\n }\n const lastPosition = this._lastPosition;\n if (lastPosition) {\n this._originRect = this._getOriginRect();\n this._overlayRect = this._pane.getBoundingClientRect();\n this._viewportRect = this._getNarrowedViewportRect();\n this._containerRect = this._overlayContainer.getContainerElement().getBoundingClientRect();\n const originPoint = this._getOriginPoint(this._originRect, this._containerRect, lastPosition);\n this._applyPosition(lastPosition, originPoint);\n } else {\n this.apply();\n }\n }\n /**\n * Sets the list of Scrollable containers that host the origin element so that\n * on reposition we can evaluate if it or the overlay has been clipped or outside view. Every\n * Scrollable must be an ancestor element of the strategy's origin element.\n */\n withScrollableContainers(scrollables) {\n this._scrollables = scrollables;\n return this;\n }\n /**\n * Adds new preferred positions.\n * @param positions List of positions options for this overlay.\n */\n withPositions(positions) {\n this._preferredPositions = positions;\n // If the last calculated position object isn't part of the positions anymore, clear\n // it in order to avoid it being picked up if the consumer tries to re-apply.\n if (positions.indexOf(this._lastPosition) === -1) {\n this._lastPosition = null;\n }\n this._validatePositions();\n return this;\n }\n /**\n * Sets a minimum distance the overlay may be positioned to the edge of the viewport.\n * @param margin Required margin between the overlay and the viewport edge in pixels.\n */\n withViewportMargin(margin) {\n this._viewportMargin = margin;\n return this;\n }\n /** Sets whether the overlay's width and height can be constrained to fit within the viewport. */\n withFlexibleDimensions(flexibleDimensions = true) {\n this._hasFlexibleDimensions = flexibleDimensions;\n return this;\n }\n /** Sets whether the overlay can grow after the initial open via flexible width/height. */\n withGrowAfterOpen(growAfterOpen = true) {\n this._growAfterOpen = growAfterOpen;\n return this;\n }\n /** Sets whether the overlay can be pushed on-screen if none of the provided positions fit. */\n withPush(canPush = true) {\n this._canPush = canPush;\n return this;\n }\n /**\n * Sets whether the overlay's position should be locked in after it is positioned\n * initially. When an overlay is locked in, it won't attempt to reposition itself\n * when the position is re-applied (e.g. when the user scrolls away).\n * @param isLocked Whether the overlay should locked in.\n */\n withLockedPosition(isLocked = true) {\n this._positionLocked = isLocked;\n return this;\n }\n /**\n * Sets the origin, relative to which to position the overlay.\n * Using an element origin is useful for building components that need to be positioned\n * relatively to a trigger (e.g. dropdown menus or tooltips), whereas using a point can be\n * used for cases like contextual menus which open relative to the user's pointer.\n * @param origin Reference to the new origin.\n */\n setOrigin(origin) {\n this._origin = origin;\n return this;\n }\n /**\n * Sets the default offset for the overlay's connection point on the x-axis.\n * @param offset New offset in the X axis.\n */\n withDefaultOffsetX(offset) {\n this._offsetX = offset;\n return this;\n }\n /**\n * Sets the default offset for the overlay's connection point on the y-axis.\n * @param offset New offset in the Y axis.\n */\n withDefaultOffsetY(offset) {\n this._offsetY = offset;\n return this;\n }\n /**\n * Configures that the position strategy should set a `transform-origin` on some elements\n * inside the overlay, depending on the current position that is being applied. This is\n * useful for the cases where the origin of an animation can change depending on the\n * alignment of the overlay.\n * @param selector CSS selector that will be used to find the target\n * elements onto which to set the transform origin.\n */\n withTransformOriginOn(selector) {\n this._transformOriginSelector = selector;\n return this;\n }\n /**\n * Gets the (x, y) coordinate of a connection point on the origin based on a relative position.\n */\n _getOriginPoint(originRect, containerRect, pos) {\n let x;\n if (pos.originX == 'center') {\n // Note: when centering we should always use the `left`\n // offset, otherwise the position will be wrong in RTL.\n x = originRect.left + originRect.width / 2;\n } else {\n const startX = this._isRtl() ? originRect.right : originRect.left;\n const endX = this._isRtl() ? originRect.left : originRect.right;\n x = pos.originX == 'start' ? startX : endX;\n }\n // When zooming in Safari the container rectangle contains negative values for the position\n // and we need to re-add them to the calculated coordinates.\n if (containerRect.left < 0) {\n x -= containerRect.left;\n }\n let y;\n if (pos.originY == 'center') {\n y = originRect.top + originRect.height / 2;\n } else {\n y = pos.originY == 'top' ? originRect.top : originRect.bottom;\n }\n // Normally the containerRect's top value would be zero, however when the overlay is attached to an input\n // (e.g. in an autocomplete), mobile browsers will shift everything in order to put the input in the middle\n // of the screen and to make space for the virtual keyboard. We need to account for this offset,\n // otherwise our positioning will be thrown off.\n // Additionally, when zooming in Safari this fixes the vertical position.\n if (containerRect.top < 0) {\n y -= containerRect.top;\n }\n return {\n x,\n y\n };\n }\n /**\n * Gets the (x, y) coordinate of the top-left corner of the overlay given a given position and\n * origin point to which the overlay should be connected.\n */\n _getOverlayPoint(originPoint, overlayRect, pos) {\n // Calculate the (overlayStartX, overlayStartY), the start of the\n // potential overlay position relative to the origin point.\n let overlayStartX;\n if (pos.overlayX == 'center') {\n overlayStartX = -overlayRect.width / 2;\n } else if (pos.overlayX === 'start') {\n overlayStartX = this._isRtl() ? -overlayRect.width : 0;\n } else {\n overlayStartX = this._isRtl() ? 0 : -overlayRect.width;\n }\n let overlayStartY;\n if (pos.overlayY == 'center') {\n overlayStartY = -overlayRect.height / 2;\n } else {\n overlayStartY = pos.overlayY == 'top' ? 0 : -overlayRect.height;\n }\n // The (x, y) coordinates of the overlay.\n return {\n x: originPoint.x + overlayStartX,\n y: originPoint.y + overlayStartY\n };\n }\n /** Gets how well an overlay at the given point will fit within the viewport. */\n _getOverlayFit(point, rawOverlayRect, viewport, position) {\n // Round the overlay rect when comparing against the\n // viewport, because the viewport is always rounded.\n const overlay = getRoundedBoundingClientRect(rawOverlayRect);\n let {\n x,\n y\n } = point;\n let offsetX = this._getOffset(position, 'x');\n let offsetY = this._getOffset(position, 'y');\n // Account for the offsets since they could push the overlay out of the viewport.\n if (offsetX) {\n x += offsetX;\n }\n if (offsetY) {\n y += offsetY;\n }\n // How much the overlay would overflow at this position, on each side.\n let leftOverflow = 0 - x;\n let rightOverflow = x + overlay.width - viewport.width;\n let topOverflow = 0 - y;\n let bottomOverflow = y + overlay.height - viewport.height;\n // Visible parts of the element on each axis.\n let visibleWidth = this._subtractOverflows(overlay.width, leftOverflow, rightOverflow);\n let visibleHeight = this._subtractOverflows(overlay.height, topOverflow, bottomOverflow);\n let visibleArea = visibleWidth * visibleHeight;\n return {\n visibleArea,\n isCompletelyWithinViewport: overlay.width * overlay.height === visibleArea,\n fitsInViewportVertically: visibleHeight === overlay.height,\n fitsInViewportHorizontally: visibleWidth == overlay.width\n };\n }\n /**\n * Whether the overlay can fit within the viewport when it may resize either its width or height.\n * @param fit How well the overlay fits in the viewport at some position.\n * @param point The (x, y) coordinates of the overlay at some position.\n * @param viewport The geometry of the viewport.\n */\n _canFitWithFlexibleDimensions(fit, point, viewport) {\n if (this._hasFlexibleDimensions) {\n const availableHeight = viewport.bottom - point.y;\n const availableWidth = viewport.right - point.x;\n const minHeight = getPixelValue(this._overlayRef.getConfig().minHeight);\n const minWidth = getPixelValue(this._overlayRef.getConfig().minWidth);\n const verticalFit = fit.fitsInViewportVertically || minHeight != null && minHeight <= availableHeight;\n const horizontalFit = fit.fitsInViewportHorizontally || minWidth != null && minWidth <= availableWidth;\n return verticalFit && horizontalFit;\n }\n return false;\n }\n /**\n * Gets the point at which the overlay can be \"pushed\" on-screen. If the overlay is larger than\n * the viewport, the top-left corner will be pushed on-screen (with overflow occurring on the\n * right and bottom).\n *\n * @param start Starting point from which the overlay is pushed.\n * @param rawOverlayRect Dimensions of the overlay.\n * @param scrollPosition Current viewport scroll position.\n * @returns The point at which to position the overlay after pushing. This is effectively a new\n * originPoint.\n */\n _pushOverlayOnScreen(start, rawOverlayRect, scrollPosition) {\n // If the position is locked and we've pushed the overlay already, reuse the previous push\n // amount, rather than pushing it again. If we were to continue pushing, the element would\n // remain in the viewport, which goes against the expectations when position locking is enabled.\n if (this._previousPushAmount && this._positionLocked) {\n return {\n x: start.x + this._previousPushAmount.x,\n y: start.y + this._previousPushAmount.y\n };\n }\n // Round the overlay rect when comparing against the\n // viewport, because the viewport is always rounded.\n const overlay = getRoundedBoundingClientRect(rawOverlayRect);\n const viewport = this._viewportRect;\n // Determine how much the overlay goes outside the viewport on each\n // side, which we'll use to decide which direction to push it.\n const overflowRight = Math.max(start.x + overlay.width - viewport.width, 0);\n const overflowBottom = Math.max(start.y + overlay.height - viewport.height, 0);\n const overflowTop = Math.max(viewport.top - scrollPosition.top - start.y, 0);\n const overflowLeft = Math.max(viewport.left - scrollPosition.left - start.x, 0);\n // Amount by which to push the overlay in each axis such that it remains on-screen.\n let pushX = 0;\n let pushY = 0;\n // If the overlay fits completely within the bounds of the viewport, push it from whichever\n // direction is goes off-screen. Otherwise, push the top-left corner such that its in the\n // viewport and allow for the trailing end of the overlay to go out of bounds.\n if (overlay.width <= viewport.width) {\n pushX = overflowLeft || -overflowRight;\n } else {\n pushX = start.x < this._viewportMargin ? viewport.left - scrollPosition.left - start.x : 0;\n }\n if (overlay.height <= viewport.height) {\n pushY = overflowTop || -overflowBottom;\n } else {\n pushY = start.y < this._viewportMargin ? viewport.top - scrollPosition.top - start.y : 0;\n }\n this._previousPushAmount = {\n x: pushX,\n y: pushY\n };\n return {\n x: start.x + pushX,\n y: start.y + pushY\n };\n }\n /**\n * Applies a computed position to the overlay and emits a position change.\n * @param position The position preference\n * @param originPoint The point on the origin element where the overlay is connected.\n */\n _applyPosition(position, originPoint) {\n this._setTransformOrigin(position);\n this._setOverlayElementStyles(originPoint, position);\n this._setBoundingBoxStyles(originPoint, position);\n if (position.panelClass) {\n this._addPanelClasses(position.panelClass);\n }\n // Save the last connected position in case the position needs to be re-calculated.\n this._lastPosition = position;\n // Notify that the position has been changed along with its change properties.\n // We only emit if we've got any subscriptions, because the scroll visibility\n // calculations can be somewhat expensive.\n if (this._positionChanges.observers.length) {\n const scrollableViewProperties = this._getScrollVisibility();\n const changeEvent = new ConnectedOverlayPositionChange(position, scrollableViewProperties);\n this._positionChanges.next(changeEvent);\n }\n this._isInitialRender = false;\n }\n /** Sets the transform origin based on the configured selector and the passed-in position. */\n _setTransformOrigin(position) {\n if (!this._transformOriginSelector) {\n return;\n }\n const elements = this._boundingBox.querySelectorAll(this._transformOriginSelector);\n let xOrigin;\n let yOrigin = position.overlayY;\n if (position.overlayX === 'center') {\n xOrigin = 'center';\n } else if (this._isRtl()) {\n xOrigin = position.overlayX === 'start' ? 'right' : 'left';\n } else {\n xOrigin = position.overlayX === 'start' ? 'left' : 'right';\n }\n for (let i = 0; i < elements.length; i++) {\n elements[i].style.transformOrigin = `${xOrigin} ${yOrigin}`;\n }\n }\n /**\n * Gets the position and size of the overlay's sizing container.\n *\n * This method does no measuring and applies no styles so that we can cheaply compute the\n * bounds for all positions and choose the best fit based on these results.\n */\n _calculateBoundingBoxRect(origin, position) {\n const viewport = this._viewportRect;\n const isRtl = this._isRtl();\n let height, top, bottom;\n if (position.overlayY === 'top') {\n // Overlay is opening \"downward\" and thus is bound by the bottom viewport edge.\n top = origin.y;\n height = viewport.height - top + this._viewportMargin;\n } else if (position.overlayY === 'bottom') {\n // Overlay is opening \"upward\" and thus is bound by the top viewport edge. We need to add\n // the viewport margin back in, because the viewport rect is narrowed down to remove the\n // margin, whereas the `origin` position is calculated based on its `ClientRect`.\n bottom = viewport.height - origin.y + this._viewportMargin * 2;\n height = viewport.height - bottom + this._viewportMargin;\n } else {\n // If neither top nor bottom, it means that the overlay is vertically centered on the\n // origin point. Note that we want the position relative to the viewport, rather than\n // the page, which is why we don't use something like `viewport.bottom - origin.y` and\n // `origin.y - viewport.top`.\n const smallestDistanceToViewportEdge = Math.min(viewport.bottom - origin.y + viewport.top, origin.y);\n const previousHeight = this._lastBoundingBoxSize.height;\n height = smallestDistanceToViewportEdge * 2;\n top = origin.y - smallestDistanceToViewportEdge;\n if (height > previousHeight && !this._isInitialRender && !this._growAfterOpen) {\n top = origin.y - previousHeight / 2;\n }\n }\n // The overlay is opening 'right-ward' (the content flows to the right).\n const isBoundedByRightViewportEdge = position.overlayX === 'start' && !isRtl || position.overlayX === 'end' && isRtl;\n // The overlay is opening 'left-ward' (the content flows to the left).\n const isBoundedByLeftViewportEdge = position.overlayX === 'end' && !isRtl || position.overlayX === 'start' && isRtl;\n let width, left, right;\n if (isBoundedByLeftViewportEdge) {\n right = viewport.width - origin.x + this._viewportMargin;\n width = origin.x - this._viewportMargin;\n } else if (isBoundedByRightViewportEdge) {\n left = origin.x;\n width = viewport.right - origin.x;\n } else {\n // If neither start nor end, it means that the overlay is horizontally centered on the\n // origin point. Note that we want the position relative to the viewport, rather than\n // the page, which is why we don't use something like `viewport.right - origin.x` and\n // `origin.x - viewport.left`.\n const smallestDistanceToViewportEdge = Math.min(viewport.right - origin.x + viewport.left, origin.x);\n const previousWidth = this._lastBoundingBoxSize.width;\n width = smallestDistanceToViewportEdge * 2;\n left = origin.x - smallestDistanceToViewportEdge;\n if (width > previousWidth && !this._isInitialRender && !this._growAfterOpen) {\n left = origin.x - previousWidth / 2;\n }\n }\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width,\n height\n };\n }\n /**\n * Sets the position and size of the overlay's sizing wrapper. The wrapper is positioned on the\n * origin's connection point and stretches to the bounds of the viewport.\n *\n * @param origin The point on the origin element where the overlay is connected.\n * @param position The position preference\n */\n _setBoundingBoxStyles(origin, position) {\n const boundingBoxRect = this._calculateBoundingBoxRect(origin, position);\n // It's weird if the overlay *grows* while scrolling, so we take the last size into account\n // when applying a new size.\n if (!this._isInitialRender && !this._growAfterOpen) {\n boundingBoxRect.height = Math.min(boundingBoxRect.height, this._lastBoundingBoxSize.height);\n boundingBoxRect.width = Math.min(boundingBoxRect.width, this._lastBoundingBoxSize.width);\n }\n const styles = {};\n if (this._hasExactPosition()) {\n styles.top = styles.left = '0';\n styles.bottom = styles.right = styles.maxHeight = styles.maxWidth = '';\n styles.width = styles.height = '100%';\n } else {\n const maxHeight = this._overlayRef.getConfig().maxHeight;\n const maxWidth = this._overlayRef.getConfig().maxWidth;\n styles.height = coerceCssPixelValue(boundingBoxRect.height);\n styles.top = coerceCssPixelValue(boundingBoxRect.top);\n styles.bottom = coerceCssPixelValue(boundingBoxRect.bottom);\n styles.width = coerceCssPixelValue(boundingBoxRect.width);\n styles.left = coerceCssPixelValue(boundingBoxRect.left);\n styles.right = coerceCssPixelValue(boundingBoxRect.right);\n // Push the pane content towards the proper direction.\n if (position.overlayX === 'center') {\n styles.alignItems = 'center';\n } else {\n styles.alignItems = position.overlayX === 'end' ? 'flex-end' : 'flex-start';\n }\n if (position.overlayY === 'center') {\n styles.justifyContent = 'center';\n } else {\n styles.justifyContent = position.overlayY === 'bottom' ? 'flex-end' : 'flex-start';\n }\n if (maxHeight) {\n styles.maxHeight = coerceCssPixelValue(maxHeight);\n }\n if (maxWidth) {\n styles.maxWidth = coerceCssPixelValue(maxWidth);\n }\n }\n this._lastBoundingBoxSize = boundingBoxRect;\n extendStyles(this._boundingBox.style, styles);\n }\n /** Resets the styles for the bounding box so that a new positioning can be computed. */\n _resetBoundingBoxStyles() {\n extendStyles(this._boundingBox.style, {\n top: '0',\n left: '0',\n right: '0',\n bottom: '0',\n height: '',\n width: '',\n alignItems: '',\n justifyContent: ''\n });\n }\n /** Resets the styles for the overlay pane so that a new positioning can be computed. */\n _resetOverlayElementStyles() {\n extendStyles(this._pane.style, {\n top: '',\n left: '',\n bottom: '',\n right: '',\n position: '',\n transform: ''\n });\n }\n /** Sets positioning styles to the overlay element. */\n _setOverlayElementStyles(originPoint, position) {\n const styles = {};\n const hasExactPosition = this._hasExactPosition();\n const hasFlexibleDimensions = this._hasFlexibleDimensions;\n const config = this._overlayRef.getConfig();\n if (hasExactPosition) {\n const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n extendStyles(styles, this._getExactOverlayY(position, originPoint, scrollPosition));\n extendStyles(styles, this._getExactOverlayX(position, originPoint, scrollPosition));\n } else {\n styles.position = 'static';\n }\n // Use a transform to apply the offsets. We do this because the `center` positions rely on\n // being in the normal flex flow and setting a `top` / `left` at all will completely throw\n // off the position. We also can't use margins, because they won't have an effect in some\n // cases where the element doesn't have anything to \"push off of\". Finally, this works\n // better both with flexible and non-flexible positioning.\n let transformString = '';\n let offsetX = this._getOffset(position, 'x');\n let offsetY = this._getOffset(position, 'y');\n if (offsetX) {\n transformString += `translateX(${offsetX}px) `;\n }\n if (offsetY) {\n transformString += `translateY(${offsetY}px)`;\n }\n styles.transform = transformString.trim();\n // If a maxWidth or maxHeight is specified on the overlay, we remove them. We do this because\n // we need these values to both be set to \"100%\" for the automatic flexible sizing to work.\n // The maxHeight and maxWidth are set on the boundingBox in order to enforce the constraint.\n // Note that this doesn't apply when we have an exact position, in which case we do want to\n // apply them because they'll be cleared from the bounding box.\n if (config.maxHeight) {\n if (hasExactPosition) {\n styles.maxHeight = coerceCssPixelValue(config.maxHeight);\n } else if (hasFlexibleDimensions) {\n styles.maxHeight = '';\n }\n }\n if (config.maxWidth) {\n if (hasExactPosition) {\n styles.maxWidth = coerceCssPixelValue(config.maxWidth);\n } else if (hasFlexibleDimensions) {\n styles.maxWidth = '';\n }\n }\n extendStyles(this._pane.style, styles);\n }\n /** Gets the exact top/bottom for the overlay when not using flexible sizing or when pushing. */\n _getExactOverlayY(position, originPoint, scrollPosition) {\n // Reset any existing styles. This is necessary in case the\n // preferred position has changed since the last `apply`.\n let styles = {\n top: '',\n bottom: ''\n };\n let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);\n if (this._isPushed) {\n overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);\n }\n // We want to set either `top` or `bottom` based on whether the overlay wants to appear\n // above or below the origin and the direction in which the element will expand.\n if (position.overlayY === 'bottom') {\n // When using `bottom`, we adjust the y position such that it is the distance\n // from the bottom of the viewport rather than the top.\n const documentHeight = this._document.documentElement.clientHeight;\n styles.bottom = `${documentHeight - (overlayPoint.y + this._overlayRect.height)}px`;\n } else {\n styles.top = coerceCssPixelValue(overlayPoint.y);\n }\n return styles;\n }\n /** Gets the exact left/right for the overlay when not using flexible sizing or when pushing. */\n _getExactOverlayX(position, originPoint, scrollPosition) {\n // Reset any existing styles. This is necessary in case the preferred position has\n // changed since the last `apply`.\n let styles = {\n left: '',\n right: ''\n };\n let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);\n if (this._isPushed) {\n overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);\n }\n // We want to set either `left` or `right` based on whether the overlay wants to appear \"before\"\n // or \"after\" the origin, which determines the direction in which the element will expand.\n // For the horizontal axis, the meaning of \"before\" and \"after\" change based on whether the\n // page is in RTL or LTR.\n let horizontalStyleProperty;\n if (this._isRtl()) {\n horizontalStyleProperty = position.overlayX === 'end' ? 'left' : 'right';\n } else {\n horizontalStyleProperty = position.overlayX === 'end' ? 'right' : 'left';\n }\n // When we're setting `right`, we adjust the x position such that it is the distance\n // from the right edge of the viewport rather than the left edge.\n if (horizontalStyleProperty === 'right') {\n const documentWidth = this._document.documentElement.clientWidth;\n styles.right = `${documentWidth - (overlayPoint.x + this._overlayRect.width)}px`;\n } else {\n styles.left = coerceCssPixelValue(overlayPoint.x);\n }\n return styles;\n }\n /**\n * Gets the view properties of the trigger and overlay, including whether they are clipped\n * or completely outside the view of any of the strategy's scrollables.\n */\n _getScrollVisibility() {\n // Note: needs fresh rects since the position could've changed.\n const originBounds = this._getOriginRect();\n const overlayBounds = this._pane.getBoundingClientRect();\n // TODO(jelbourn): instead of needing all of the client rects for these scrolling containers\n // every time, we should be able to use the scrollTop of the containers if the size of those\n // containers hasn't changed.\n const scrollContainerBounds = this._scrollables.map(scrollable => {\n return scrollable.getElementRef().nativeElement.getBoundingClientRect();\n });\n return {\n isOriginClipped: isElementClippedByScrolling(originBounds, scrollContainerBounds),\n isOriginOutsideView: isElementScrolledOutsideView(originBounds, scrollContainerBounds),\n isOverlayClipped: isElementClippedByScrolling(overlayBounds, scrollContainerBounds),\n isOverlayOutsideView: isElementScrolledOutsideView(overlayBounds, scrollContainerBounds)\n };\n }\n /** Subtracts the amount that an element is overflowing on an axis from its length. */\n _subtractOverflows(length, ...overflows) {\n return overflows.reduce((currentValue, currentOverflow) => {\n return currentValue - Math.max(currentOverflow, 0);\n }, length);\n }\n /** Narrows the given viewport rect by the current _viewportMargin. */\n _getNarrowedViewportRect() {\n // We recalculate the viewport rect here ourselves, rather than using the ViewportRuler,\n // because we want to use the `clientWidth` and `clientHeight` as the base. The difference\n // being that the client properties don't include the scrollbar, as opposed to `innerWidth`\n // and `innerHeight` that do. This is necessary, because the overlay container uses\n // 100% `width` and `height` which don't include the scrollbar either.\n const width = this._document.documentElement.clientWidth;\n const height = this._document.documentElement.clientHeight;\n const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n return {\n top: scrollPosition.top + this._viewportMargin,\n left: scrollPosition.left + this._viewportMargin,\n right: scrollPosition.left + width - this._viewportMargin,\n bottom: scrollPosition.top + height - this._viewportMargin,\n width: width - 2 * this._viewportMargin,\n height: height - 2 * this._viewportMargin\n };\n }\n /** Whether the we're dealing with an RTL context */\n _isRtl() {\n return this._overlayRef.getDirection() === 'rtl';\n }\n /** Determines whether the overlay uses exact or flexible positioning. */\n _hasExactPosition() {\n return !this._hasFlexibleDimensions || this._isPushed;\n }\n /** Retrieves the offset of a position along the x or y axis. */\n _getOffset(position, axis) {\n if (axis === 'x') {\n // We don't do something like `position['offset' + axis]` in\n // order to avoid breaking minifiers that rename properties.\n return position.offsetX == null ? this._offsetX : position.offsetX;\n }\n return position.offsetY == null ? this._offsetY : position.offsetY;\n }\n /** Validates that the current position match the expected values. */\n _validatePositions() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._preferredPositions.length) {\n throw Error('FlexibleConnectedPositionStrategy: At least one position is required.');\n }\n // TODO(crisbeto): remove these once Angular's template type\n // checking is advanced enough to catch these cases.\n this._preferredPositions.forEach(pair => {\n validateHorizontalPosition('originX', pair.originX);\n validateVerticalPosition('originY', pair.originY);\n validateHorizontalPosition('overlayX', pair.overlayX);\n validateVerticalPosition('overlayY', pair.overlayY);\n });\n }\n }\n /** Adds a single CSS class or an array of classes on the overlay panel. */\n _addPanelClasses(cssClasses) {\n if (this._pane) {\n coerceArray(cssClasses).forEach(cssClass => {\n if (cssClass !== '' && this._appliedPanelClasses.indexOf(cssClass) === -1) {\n this._appliedPanelClasses.push(cssClass);\n this._pane.classList.add(cssClass);\n }\n });\n }\n }\n /** Clears the classes that the position strategy has applied from the overlay panel. */\n _clearPanelClasses() {\n if (this._pane) {\n this._appliedPanelClasses.forEach(cssClass => {\n this._pane.classList.remove(cssClass);\n });\n this._appliedPanelClasses = [];\n }\n }\n /** Returns the ClientRect of the current origin. */\n _getOriginRect() {\n const origin = this._origin;\n if (origin instanceof ElementRef) {\n return origin.nativeElement.getBoundingClientRect();\n }\n // Check for Element so SVG elements are also supported.\n if (origin instanceof Element) {\n return origin.getBoundingClientRect();\n }\n const width = origin.width || 0;\n const height = origin.height || 0;\n // If the origin is a point, return a client rect as if it was a 0x0 element at the point.\n return {\n top: origin.y,\n bottom: origin.y + height,\n left: origin.x,\n right: origin.x + width,\n height,\n width\n };\n }\n}\n/** Shallow-extends a stylesheet object with another stylesheet object. */\nfunction extendStyles(destination, source) {\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n destination[key] = source[key];\n }\n }\n return destination;\n}\n/**\n * Extracts the pixel value as a number from a value, if it's a number\n * or a CSS pixel string (e.g. `1337px`). Otherwise returns null.\n */\nfunction getPixelValue(input) {\n if (typeof input !== 'number' && input != null) {\n const [value, units] = input.split(cssUnitPattern);\n return !units || units === 'px' ? parseFloat(value) : null;\n }\n return input || null;\n}\n/**\n * Gets a version of an element's bounding `ClientRect` where all the values are rounded down to\n * the nearest pixel. This allows us to account for the cases where there may be sub-pixel\n * deviations in the `ClientRect` returned by the browser (e.g. when zoomed in with a percentage\n * size, see #21350).\n */\nfunction getRoundedBoundingClientRect(clientRect) {\n return {\n top: Math.floor(clientRect.top),\n right: Math.floor(clientRect.right),\n bottom: Math.floor(clientRect.bottom),\n left: Math.floor(clientRect.left),\n width: Math.floor(clientRect.width),\n height: Math.floor(clientRect.height)\n };\n}\nconst STANDARD_DROPDOWN_BELOW_POSITIONS = [{\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n}, {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n}, {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n}, {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom'\n}];\nconst STANDARD_DROPDOWN_ADJACENT_POSITIONS = [{\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top'\n}, {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'bottom'\n}, {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top'\n}, {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'bottom'\n}];\n\n/** Class to be added to the overlay pane wrapper. */\nconst wrapperClass = 'cdk-global-overlay-wrapper';\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * explicit position relative to the browser's viewport. We use flexbox, instead of\n * transforms, in order to avoid issues with subpixel rendering which can cause the\n * element to become blurry.\n */\nclass GlobalPositionStrategy {\n constructor() {\n this._cssPosition = 'static';\n this._topOffset = '';\n this._bottomOffset = '';\n this._alignItems = '';\n this._xPosition = '';\n this._xOffset = '';\n this._width = '';\n this._height = '';\n this._isDisposed = false;\n }\n attach(overlayRef) {\n const config = overlayRef.getConfig();\n this._overlayRef = overlayRef;\n if (this._width && !config.width) {\n overlayRef.updateSize({\n width: this._width\n });\n }\n if (this._height && !config.height) {\n overlayRef.updateSize({\n height: this._height\n });\n }\n overlayRef.hostElement.classList.add(wrapperClass);\n this._isDisposed = false;\n }\n /**\n * Sets the top position of the overlay. Clears any previously set vertical position.\n * @param value New top offset.\n */\n top(value = '') {\n this._bottomOffset = '';\n this._topOffset = value;\n this._alignItems = 'flex-start';\n return this;\n }\n /**\n * Sets the left position of the overlay. Clears any previously set horizontal position.\n * @param value New left offset.\n */\n left(value = '') {\n this._xOffset = value;\n this._xPosition = 'left';\n return this;\n }\n /**\n * Sets the bottom position of the overlay. Clears any previously set vertical position.\n * @param value New bottom offset.\n */\n bottom(value = '') {\n this._topOffset = '';\n this._bottomOffset = value;\n this._alignItems = 'flex-end';\n return this;\n }\n /**\n * Sets the right position of the overlay. Clears any previously set horizontal position.\n * @param value New right offset.\n */\n right(value = '') {\n this._xOffset = value;\n this._xPosition = 'right';\n return this;\n }\n /**\n * Sets the overlay to the start of the viewport, depending on the overlay direction.\n * This will be to the left in LTR layouts and to the right in RTL.\n * @param offset Offset from the edge of the screen.\n */\n start(value = '') {\n this._xOffset = value;\n this._xPosition = 'start';\n return this;\n }\n /**\n * Sets the overlay to the end of the viewport, depending on the overlay direction.\n * This will be to the right in LTR layouts and to the left in RTL.\n * @param offset Offset from the edge of the screen.\n */\n end(value = '') {\n this._xOffset = value;\n this._xPosition = 'end';\n return this;\n }\n /**\n * Sets the overlay width and clears any previously set width.\n * @param value New width for the overlay\n * @deprecated Pass the `width` through the `OverlayConfig`.\n * @breaking-change 8.0.0\n */\n width(value = '') {\n if (this._overlayRef) {\n this._overlayRef.updateSize({\n width: value\n });\n } else {\n this._width = value;\n }\n return this;\n }\n /**\n * Sets the overlay height and clears any previously set height.\n * @param value New height for the overlay\n * @deprecated Pass the `height` through the `OverlayConfig`.\n * @breaking-change 8.0.0\n */\n height(value = '') {\n if (this._overlayRef) {\n this._overlayRef.updateSize({\n height: value\n });\n } else {\n this._height = value;\n }\n return this;\n }\n /**\n * Centers the overlay horizontally with an optional offset.\n * Clears any previously set horizontal position.\n *\n * @param offset Overlay offset from the horizontal center.\n */\n centerHorizontally(offset = '') {\n this.left(offset);\n this._xPosition = 'center';\n return this;\n }\n /**\n * Centers the overlay vertically with an optional offset.\n * Clears any previously set vertical position.\n *\n * @param offset Overlay offset from the vertical center.\n */\n centerVertically(offset = '') {\n this.top(offset);\n this._alignItems = 'center';\n return this;\n }\n /**\n * Apply the position to the element.\n * @docs-private\n */\n apply() {\n // Since the overlay ref applies the strategy asynchronously, it could\n // have been disposed before it ends up being applied. If that is the\n // case, we shouldn't do anything.\n if (!this._overlayRef || !this._overlayRef.hasAttached()) {\n return;\n }\n const styles = this._overlayRef.overlayElement.style;\n const parentStyles = this._overlayRef.hostElement.style;\n const config = this._overlayRef.getConfig();\n const {\n width,\n height,\n maxWidth,\n maxHeight\n } = config;\n const shouldBeFlushHorizontally = (width === '100%' || width === '100vw') && (!maxWidth || maxWidth === '100%' || maxWidth === '100vw');\n const shouldBeFlushVertically = (height === '100%' || height === '100vh') && (!maxHeight || maxHeight === '100%' || maxHeight === '100vh');\n const xPosition = this._xPosition;\n const xOffset = this._xOffset;\n const isRtl = this._overlayRef.getConfig().direction === 'rtl';\n let marginLeft = '';\n let marginRight = '';\n let justifyContent = '';\n if (shouldBeFlushHorizontally) {\n justifyContent = 'flex-start';\n } else if (xPosition === 'center') {\n justifyContent = 'center';\n if (isRtl) {\n marginRight = xOffset;\n } else {\n marginLeft = xOffset;\n }\n } else if (isRtl) {\n if (xPosition === 'left' || xPosition === 'end') {\n justifyContent = 'flex-end';\n marginLeft = xOffset;\n } else if (xPosition === 'right' || xPosition === 'start') {\n justifyContent = 'flex-start';\n marginRight = xOffset;\n }\n } else if (xPosition === 'left' || xPosition === 'start') {\n justifyContent = 'flex-start';\n marginLeft = xOffset;\n } else if (xPosition === 'right' || xPosition === 'end') {\n justifyContent = 'flex-end';\n marginRight = xOffset;\n }\n styles.position = this._cssPosition;\n styles.marginLeft = shouldBeFlushHorizontally ? '0' : marginLeft;\n styles.marginTop = shouldBeFlushVertically ? '0' : this._topOffset;\n styles.marginBottom = this._bottomOffset;\n styles.marginRight = shouldBeFlushHorizontally ? '0' : marginRight;\n parentStyles.justifyContent = justifyContent;\n parentStyles.alignItems = shouldBeFlushVertically ? 'flex-start' : this._alignItems;\n }\n /**\n * Cleans up the DOM changes from the position strategy.\n * @docs-private\n */\n dispose() {\n if (this._isDisposed || !this._overlayRef) {\n return;\n }\n const styles = this._overlayRef.overlayElement.style;\n const parent = this._overlayRef.hostElement;\n const parentStyles = parent.style;\n parent.classList.remove(wrapperClass);\n parentStyles.justifyContent = parentStyles.alignItems = styles.marginTop = styles.marginBottom = styles.marginLeft = styles.marginRight = styles.position = '';\n this._overlayRef = null;\n this._isDisposed = true;\n }\n}\n\n/** Builder for overlay position strategy. */\nclass OverlayPositionBuilder {\n constructor(_viewportRuler, _document, _platform, _overlayContainer) {\n this._viewportRuler = _viewportRuler;\n this._document = _document;\n this._platform = _platform;\n this._overlayContainer = _overlayContainer;\n }\n /**\n * Creates a global position strategy.\n */\n global() {\n return new GlobalPositionStrategy();\n }\n /**\n * Creates a flexible position strategy.\n * @param origin Origin relative to which to position the overlay.\n */\n flexibleConnectedTo(origin) {\n return new FlexibleConnectedPositionStrategy(origin, this._viewportRuler, this._document, this._platform, this._overlayContainer);\n }\n static {\n this.ɵfac = function OverlayPositionBuilder_Factory(t) {\n return new (t || OverlayPositionBuilder)(i0.ɵɵinject(i1.ViewportRuler), i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i1$1.Platform), i0.ɵɵinject(OverlayContainer));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: OverlayPositionBuilder,\n factory: OverlayPositionBuilder.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(OverlayPositionBuilder, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: i1.ViewportRuler\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }, {\n type: i1$1.Platform\n }, {\n type: OverlayContainer\n }], null);\n})();\n\n/** Next overlay unique ID. */\nlet nextUniqueId = 0;\n// Note that Overlay is *not* scoped to the app root because of the ComponentFactoryResolver\n// which needs to be different depending on where OverlayModule is imported.\n/**\n * Service to create Overlays. Overlays are dynamically added pieces of floating UI, meant to be\n * used as a low-level building block for other components. Dialogs, tooltips, menus,\n * selects, etc. can all be built using overlays. The service should primarily be used by authors\n * of re-usable components rather than developers building end-user applications.\n *\n * An overlay *is* a PortalOutlet, so any kind of Portal can be loaded into one.\n */\nclass Overlay {\n constructor( /** Scrolling strategies that can be used when creating an overlay. */\n scrollStrategies, _overlayContainer, _componentFactoryResolver, _positionBuilder, _keyboardDispatcher, _injector, _ngZone, _document, _directionality, _location, _outsideClickDispatcher, _animationsModuleType) {\n this.scrollStrategies = scrollStrategies;\n this._overlayContainer = _overlayContainer;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._positionBuilder = _positionBuilder;\n this._keyboardDispatcher = _keyboardDispatcher;\n this._injector = _injector;\n this._ngZone = _ngZone;\n this._document = _document;\n this._directionality = _directionality;\n this._location = _location;\n this._outsideClickDispatcher = _outsideClickDispatcher;\n this._animationsModuleType = _animationsModuleType;\n }\n /**\n * Creates an overlay.\n * @param config Configuration applied to the overlay.\n * @returns Reference to the created overlay.\n */\n create(config) {\n const host = this._createHostElement();\n const pane = this._createPaneElement(host);\n const portalOutlet = this._createPortalOutlet(pane);\n const overlayConfig = new OverlayConfig(config);\n overlayConfig.direction = overlayConfig.direction || this._directionality.value;\n return new OverlayRef(portalOutlet, host, pane, overlayConfig, this._ngZone, this._keyboardDispatcher, this._document, this._location, this._outsideClickDispatcher, this._animationsModuleType === 'NoopAnimations');\n }\n /**\n * Gets a position builder that can be used, via fluent API,\n * to construct and configure a position strategy.\n * @returns An overlay position builder.\n */\n position() {\n return this._positionBuilder;\n }\n /**\n * Creates the DOM element for an overlay and appends it to the overlay container.\n * @returns Newly-created pane element\n */\n _createPaneElement(host) {\n const pane = this._document.createElement('div');\n pane.id = `cdk-overlay-${nextUniqueId++}`;\n pane.classList.add('cdk-overlay-pane');\n host.appendChild(pane);\n return pane;\n }\n /**\n * Creates the host element that wraps around an overlay\n * and can be used for advanced positioning.\n * @returns Newly-create host element.\n */\n _createHostElement() {\n const host = this._document.createElement('div');\n this._overlayContainer.getContainerElement().appendChild(host);\n return host;\n }\n /**\n * Create a DomPortalOutlet into which the overlay content can be loaded.\n * @param pane The DOM element to turn into a portal outlet.\n * @returns A portal outlet for the given DOM element.\n */\n _createPortalOutlet(pane) {\n // We have to resolve the ApplicationRef later in order to allow people\n // to use overlay-based providers during app initialization.\n if (!this._appRef) {\n this._appRef = this._injector.get(ApplicationRef);\n }\n return new DomPortalOutlet(pane, this._componentFactoryResolver, this._appRef, this._injector, this._document);\n }\n static {\n this.ɵfac = function Overlay_Factory(t) {\n return new (t || Overlay)(i0.ɵɵinject(ScrollStrategyOptions), i0.ɵɵinject(OverlayContainer), i0.ɵɵinject(i0.ComponentFactoryResolver), i0.ɵɵinject(OverlayPositionBuilder), i0.ɵɵinject(OverlayKeyboardDispatcher), i0.ɵɵinject(i0.Injector), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i5.Directionality), i0.ɵɵinject(i6.Location), i0.ɵɵinject(OverlayOutsideClickDispatcher), i0.ɵɵinject(ANIMATION_MODULE_TYPE, 8));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: Overlay,\n factory: Overlay.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Overlay, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: ScrollStrategyOptions\n }, {\n type: OverlayContainer\n }, {\n type: i0.ComponentFactoryResolver\n }, {\n type: OverlayPositionBuilder\n }, {\n type: OverlayKeyboardDispatcher\n }, {\n type: i0.Injector\n }, {\n type: i0.NgZone\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }, {\n type: i5.Directionality\n }, {\n type: i6.Location\n }, {\n type: OverlayOutsideClickDispatcher\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }, {\n type: Optional\n }]\n }], null);\n})();\n\n/** Default set of positions for the overlay. Follows the behavior of a dropdown. */\nconst defaultPositionList = [{\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n}, {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n}, {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom'\n}, {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n}];\n/** Injection token that determines the scroll handling while the connected overlay is open. */\nconst CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY = new InjectionToken('cdk-connected-overlay-scroll-strategy', {\n providedIn: 'root',\n factory: () => {\n const overlay = inject(Overlay);\n return () => overlay.scrollStrategies.reposition();\n }\n});\n/**\n * Directive applied to an element to make it usable as an origin for an Overlay using a\n * ConnectedPositionStrategy.\n */\nclass CdkOverlayOrigin {\n constructor( /** Reference to the element on which the directive is applied. */\n elementRef) {\n this.elementRef = elementRef;\n }\n static {\n this.ɵfac = function CdkOverlayOrigin_Factory(t) {\n return new (t || CdkOverlayOrigin)(i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkOverlayOrigin,\n selectors: [[\"\", \"cdk-overlay-origin\", \"\"], [\"\", \"overlay-origin\", \"\"], [\"\", \"cdkOverlayOrigin\", \"\"]],\n exportAs: [\"cdkOverlayOrigin\"],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkOverlayOrigin, [{\n type: Directive,\n args: [{\n selector: '[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]',\n exportAs: 'cdkOverlayOrigin',\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }], null);\n})();\n/**\n * Directive to facilitate declarative creation of an\n * Overlay using a FlexibleConnectedPositionStrategy.\n */\nclass CdkConnectedOverlay {\n /** The offset in pixels for the overlay connection point on the x-axis */\n get offsetX() {\n return this._offsetX;\n }\n set offsetX(offsetX) {\n this._offsetX = offsetX;\n if (this._position) {\n this._updatePositionStrategy(this._position);\n }\n }\n /** The offset in pixels for the overlay connection point on the y-axis */\n get offsetY() {\n return this._offsetY;\n }\n set offsetY(offsetY) {\n this._offsetY = offsetY;\n if (this._position) {\n this._updatePositionStrategy(this._position);\n }\n }\n /** Whether the overlay should be disposed of when the user goes backwards/forwards in history. */\n get disposeOnNavigation() {\n return this._disposeOnNavigation;\n }\n set disposeOnNavigation(value) {\n this._disposeOnNavigation = value;\n }\n // TODO(jelbourn): inputs for size, scroll behavior, animation, etc.\n constructor(_overlay, templateRef, viewContainerRef, scrollStrategyFactory, _dir) {\n this._overlay = _overlay;\n this._dir = _dir;\n this._backdropSubscription = Subscription.EMPTY;\n this._attachSubscription = Subscription.EMPTY;\n this._detachSubscription = Subscription.EMPTY;\n this._positionSubscription = Subscription.EMPTY;\n this._disposeOnNavigation = false;\n /** Margin between the overlay and the viewport edges. */\n this.viewportMargin = 0;\n /** Whether the overlay is open. */\n this.open = false;\n /** Whether the overlay can be closed by user interaction. */\n this.disableClose = false;\n /** Whether or not the overlay should attach a backdrop. */\n this.hasBackdrop = false;\n /** Whether or not the overlay should be locked when scrolling. */\n this.lockPosition = false;\n /** Whether the overlay's width and height can be constrained to fit within the viewport. */\n this.flexibleDimensions = false;\n /** Whether the overlay can grow after the initial open when flexible positioning is turned on. */\n this.growAfterOpen = false;\n /** Whether the overlay can be pushed on-screen if none of the provided positions fit. */\n this.push = false;\n /** Event emitted when the backdrop is clicked. */\n this.backdropClick = new EventEmitter();\n /** Event emitted when the position has changed. */\n this.positionChange = new EventEmitter();\n /** Event emitted when the overlay has been attached. */\n this.attach = new EventEmitter();\n /** Event emitted when the overlay has been detached. */\n this.detach = new EventEmitter();\n /** Emits when there are keyboard events that are targeted at the overlay. */\n this.overlayKeydown = new EventEmitter();\n /** Emits when there are mouse outside click events that are targeted at the overlay. */\n this.overlayOutsideClick = new EventEmitter();\n this._templatePortal = new TemplatePortal(templateRef, viewContainerRef);\n this._scrollStrategyFactory = scrollStrategyFactory;\n this.scrollStrategy = this._scrollStrategyFactory();\n }\n /** The associated overlay reference. */\n get overlayRef() {\n return this._overlayRef;\n }\n /** The element's layout direction. */\n get dir() {\n return this._dir ? this._dir.value : 'ltr';\n }\n ngOnDestroy() {\n this._attachSubscription.unsubscribe();\n this._detachSubscription.unsubscribe();\n this._backdropSubscription.unsubscribe();\n this._positionSubscription.unsubscribe();\n if (this._overlayRef) {\n this._overlayRef.dispose();\n }\n }\n ngOnChanges(changes) {\n if (this._position) {\n this._updatePositionStrategy(this._position);\n this._overlayRef.updateSize({\n width: this.width,\n minWidth: this.minWidth,\n height: this.height,\n minHeight: this.minHeight\n });\n if (changes['origin'] && this.open) {\n this._position.apply();\n }\n }\n if (changes['open']) {\n this.open ? this._attachOverlay() : this._detachOverlay();\n }\n }\n /** Creates an overlay */\n _createOverlay() {\n if (!this.positions || !this.positions.length) {\n this.positions = defaultPositionList;\n }\n const overlayRef = this._overlayRef = this._overlay.create(this._buildConfig());\n this._attachSubscription = overlayRef.attachments().subscribe(() => this.attach.emit());\n this._detachSubscription = overlayRef.detachments().subscribe(() => this.detach.emit());\n overlayRef.keydownEvents().subscribe(event => {\n this.overlayKeydown.next(event);\n if (event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)) {\n event.preventDefault();\n this._detachOverlay();\n }\n });\n this._overlayRef.outsidePointerEvents().subscribe(event => {\n this.overlayOutsideClick.next(event);\n });\n }\n /** Builds the overlay config based on the directive's inputs */\n _buildConfig() {\n const positionStrategy = this._position = this.positionStrategy || this._createPositionStrategy();\n const overlayConfig = new OverlayConfig({\n direction: this._dir,\n positionStrategy,\n scrollStrategy: this.scrollStrategy,\n hasBackdrop: this.hasBackdrop,\n disposeOnNavigation: this.disposeOnNavigation\n });\n if (this.width || this.width === 0) {\n overlayConfig.width = this.width;\n }\n if (this.height || this.height === 0) {\n overlayConfig.height = this.height;\n }\n if (this.minWidth || this.minWidth === 0) {\n overlayConfig.minWidth = this.minWidth;\n }\n if (this.minHeight || this.minHeight === 0) {\n overlayConfig.minHeight = this.minHeight;\n }\n if (this.backdropClass) {\n overlayConfig.backdropClass = this.backdropClass;\n }\n if (this.panelClass) {\n overlayConfig.panelClass = this.panelClass;\n }\n return overlayConfig;\n }\n /** Updates the state of a position strategy, based on the values of the directive inputs. */\n _updatePositionStrategy(positionStrategy) {\n const positions = this.positions.map(currentPosition => ({\n originX: currentPosition.originX,\n originY: currentPosition.originY,\n overlayX: currentPosition.overlayX,\n overlayY: currentPosition.overlayY,\n offsetX: currentPosition.offsetX || this.offsetX,\n offsetY: currentPosition.offsetY || this.offsetY,\n panelClass: currentPosition.panelClass || undefined\n }));\n return positionStrategy.setOrigin(this._getFlexibleConnectedPositionStrategyOrigin()).withPositions(positions).withFlexibleDimensions(this.flexibleDimensions).withPush(this.push).withGrowAfterOpen(this.growAfterOpen).withViewportMargin(this.viewportMargin).withLockedPosition(this.lockPosition).withTransformOriginOn(this.transformOriginSelector);\n }\n /** Returns the position strategy of the overlay to be set on the overlay config */\n _createPositionStrategy() {\n const strategy = this._overlay.position().flexibleConnectedTo(this._getFlexibleConnectedPositionStrategyOrigin());\n this._updatePositionStrategy(strategy);\n return strategy;\n }\n _getFlexibleConnectedPositionStrategyOrigin() {\n if (this.origin instanceof CdkOverlayOrigin) {\n return this.origin.elementRef;\n } else {\n return this.origin;\n }\n }\n /** Attaches the overlay and subscribes to backdrop clicks if backdrop exists */\n _attachOverlay() {\n if (!this._overlayRef) {\n this._createOverlay();\n } else {\n // Update the overlay size, in case the directive's inputs have changed\n this._overlayRef.getConfig().hasBackdrop = this.hasBackdrop;\n }\n if (!this._overlayRef.hasAttached()) {\n this._overlayRef.attach(this._templatePortal);\n }\n if (this.hasBackdrop) {\n this._backdropSubscription = this._overlayRef.backdropClick().subscribe(event => {\n this.backdropClick.emit(event);\n });\n } else {\n this._backdropSubscription.unsubscribe();\n }\n this._positionSubscription.unsubscribe();\n // Only subscribe to `positionChanges` if requested, because putting\n // together all the information for it can be expensive.\n if (this.positionChange.observers.length > 0) {\n this._positionSubscription = this._position.positionChanges.pipe(takeWhile(() => this.positionChange.observers.length > 0)).subscribe(position => {\n this.positionChange.emit(position);\n if (this.positionChange.observers.length === 0) {\n this._positionSubscription.unsubscribe();\n }\n });\n }\n }\n /** Detaches the overlay and unsubscribes to backdrop clicks if backdrop exists */\n _detachOverlay() {\n if (this._overlayRef) {\n this._overlayRef.detach();\n }\n this._backdropSubscription.unsubscribe();\n this._positionSubscription.unsubscribe();\n }\n static {\n this.ɵfac = function CdkConnectedOverlay_Factory(t) {\n return new (t || CdkConnectedOverlay)(i0.ɵɵdirectiveInject(Overlay), i0.ɵɵdirectiveInject(i0.TemplateRef), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY), i0.ɵɵdirectiveInject(i5.Directionality, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkConnectedOverlay,\n selectors: [[\"\", \"cdk-connected-overlay\", \"\"], [\"\", \"connected-overlay\", \"\"], [\"\", \"cdkConnectedOverlay\", \"\"]],\n inputs: {\n origin: [\"cdkConnectedOverlayOrigin\", \"origin\"],\n positions: [\"cdkConnectedOverlayPositions\", \"positions\"],\n positionStrategy: [\"cdkConnectedOverlayPositionStrategy\", \"positionStrategy\"],\n offsetX: [\"cdkConnectedOverlayOffsetX\", \"offsetX\"],\n offsetY: [\"cdkConnectedOverlayOffsetY\", \"offsetY\"],\n width: [\"cdkConnectedOverlayWidth\", \"width\"],\n height: [\"cdkConnectedOverlayHeight\", \"height\"],\n minWidth: [\"cdkConnectedOverlayMinWidth\", \"minWidth\"],\n minHeight: [\"cdkConnectedOverlayMinHeight\", \"minHeight\"],\n backdropClass: [\"cdkConnectedOverlayBackdropClass\", \"backdropClass\"],\n panelClass: [\"cdkConnectedOverlayPanelClass\", \"panelClass\"],\n viewportMargin: [\"cdkConnectedOverlayViewportMargin\", \"viewportMargin\"],\n scrollStrategy: [\"cdkConnectedOverlayScrollStrategy\", \"scrollStrategy\"],\n open: [\"cdkConnectedOverlayOpen\", \"open\"],\n disableClose: [\"cdkConnectedOverlayDisableClose\", \"disableClose\"],\n transformOriginSelector: [\"cdkConnectedOverlayTransformOriginOn\", \"transformOriginSelector\"],\n hasBackdrop: [\"cdkConnectedOverlayHasBackdrop\", \"hasBackdrop\", booleanAttribute],\n lockPosition: [\"cdkConnectedOverlayLockPosition\", \"lockPosition\", booleanAttribute],\n flexibleDimensions: [\"cdkConnectedOverlayFlexibleDimensions\", \"flexibleDimensions\", booleanAttribute],\n growAfterOpen: [\"cdkConnectedOverlayGrowAfterOpen\", \"growAfterOpen\", booleanAttribute],\n push: [\"cdkConnectedOverlayPush\", \"push\", booleanAttribute],\n disposeOnNavigation: [\"cdkConnectedOverlayDisposeOnNavigation\", \"disposeOnNavigation\", booleanAttribute]\n },\n outputs: {\n backdropClick: \"backdropClick\",\n positionChange: \"positionChange\",\n attach: \"attach\",\n detach: \"detach\",\n overlayKeydown: \"overlayKeydown\",\n overlayOutsideClick: \"overlayOutsideClick\"\n },\n exportAs: [\"cdkConnectedOverlay\"],\n standalone: true,\n features: [i0.ɵɵInputTransformsFeature, i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkConnectedOverlay, [{\n type: Directive,\n args: [{\n selector: '[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]',\n exportAs: 'cdkConnectedOverlay',\n standalone: true\n }]\n }], () => [{\n type: Overlay\n }, {\n type: i0.TemplateRef\n }, {\n type: i0.ViewContainerRef\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY]\n }]\n }, {\n type: i5.Directionality,\n decorators: [{\n type: Optional\n }]\n }], {\n origin: [{\n type: Input,\n args: ['cdkConnectedOverlayOrigin']\n }],\n positions: [{\n type: Input,\n args: ['cdkConnectedOverlayPositions']\n }],\n positionStrategy: [{\n type: Input,\n args: ['cdkConnectedOverlayPositionStrategy']\n }],\n offsetX: [{\n type: Input,\n args: ['cdkConnectedOverlayOffsetX']\n }],\n offsetY: [{\n type: Input,\n args: ['cdkConnectedOverlayOffsetY']\n }],\n width: [{\n type: Input,\n args: ['cdkConnectedOverlayWidth']\n }],\n height: [{\n type: Input,\n args: ['cdkConnectedOverlayHeight']\n }],\n minWidth: [{\n type: Input,\n args: ['cdkConnectedOverlayMinWidth']\n }],\n minHeight: [{\n type: Input,\n args: ['cdkConnectedOverlayMinHeight']\n }],\n backdropClass: [{\n type: Input,\n args: ['cdkConnectedOverlayBackdropClass']\n }],\n panelClass: [{\n type: Input,\n args: ['cdkConnectedOverlayPanelClass']\n }],\n viewportMargin: [{\n type: Input,\n args: ['cdkConnectedOverlayViewportMargin']\n }],\n scrollStrategy: [{\n type: Input,\n args: ['cdkConnectedOverlayScrollStrategy']\n }],\n open: [{\n type: Input,\n args: ['cdkConnectedOverlayOpen']\n }],\n disableClose: [{\n type: Input,\n args: ['cdkConnectedOverlayDisableClose']\n }],\n transformOriginSelector: [{\n type: Input,\n args: ['cdkConnectedOverlayTransformOriginOn']\n }],\n hasBackdrop: [{\n type: Input,\n args: [{\n alias: 'cdkConnectedOverlayHasBackdrop',\n transform: booleanAttribute\n }]\n }],\n lockPosition: [{\n type: Input,\n args: [{\n alias: 'cdkConnectedOverlayLockPosition',\n transform: booleanAttribute\n }]\n }],\n flexibleDimensions: [{\n type: Input,\n args: [{\n alias: 'cdkConnectedOverlayFlexibleDimensions',\n transform: booleanAttribute\n }]\n }],\n growAfterOpen: [{\n type: Input,\n args: [{\n alias: 'cdkConnectedOverlayGrowAfterOpen',\n transform: booleanAttribute\n }]\n }],\n push: [{\n type: Input,\n args: [{\n alias: 'cdkConnectedOverlayPush',\n transform: booleanAttribute\n }]\n }],\n disposeOnNavigation: [{\n type: Input,\n args: [{\n alias: 'cdkConnectedOverlayDisposeOnNavigation',\n transform: booleanAttribute\n }]\n }],\n backdropClick: [{\n type: Output\n }],\n positionChange: [{\n type: Output\n }],\n attach: [{\n type: Output\n }],\n detach: [{\n type: Output\n }],\n overlayKeydown: [{\n type: Output\n }],\n overlayOutsideClick: [{\n type: Output\n }]\n });\n})();\n/** @docs-private */\nfunction CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER = {\n provide: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY\n};\nclass OverlayModule {\n static {\n this.ɵfac = function OverlayModule_Factory(t) {\n return new (t || OverlayModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: OverlayModule,\n imports: [BidiModule, PortalModule, ScrollingModule, CdkConnectedOverlay, CdkOverlayOrigin],\n exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER],\n imports: [BidiModule, PortalModule, ScrollingModule, ScrollingModule]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(OverlayModule, [{\n type: NgModule,\n args: [{\n imports: [BidiModule, PortalModule, ScrollingModule, CdkConnectedOverlay, CdkOverlayOrigin],\n exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule],\n providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER]\n }]\n }], null, null);\n})();\n\n/**\n * Alternative to OverlayContainer that supports correct displaying of overlay elements in\n * Fullscreen mode\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen\n *\n * Should be provided in the root component.\n */\nclass FullscreenOverlayContainer extends OverlayContainer {\n constructor(_document, platform) {\n super(_document, platform);\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this._fullScreenEventName && this._fullScreenListener) {\n this._document.removeEventListener(this._fullScreenEventName, this._fullScreenListener);\n }\n }\n _createContainer() {\n super._createContainer();\n this._adjustParentForFullscreenChange();\n this._addFullscreenChangeListener(() => this._adjustParentForFullscreenChange());\n }\n _adjustParentForFullscreenChange() {\n if (!this._containerElement) {\n return;\n }\n const fullscreenElement = this.getFullscreenElement();\n const parent = fullscreenElement || this._document.body;\n parent.appendChild(this._containerElement);\n }\n _addFullscreenChangeListener(fn) {\n const eventName = this._getEventName();\n if (eventName) {\n if (this._fullScreenListener) {\n this._document.removeEventListener(eventName, this._fullScreenListener);\n }\n this._document.addEventListener(eventName, fn);\n this._fullScreenListener = fn;\n }\n }\n _getEventName() {\n if (!this._fullScreenEventName) {\n const _document = this._document;\n if (_document.fullscreenEnabled) {\n this._fullScreenEventName = 'fullscreenchange';\n } else if (_document.webkitFullscreenEnabled) {\n this._fullScreenEventName = 'webkitfullscreenchange';\n } else if (_document.mozFullScreenEnabled) {\n this._fullScreenEventName = 'mozfullscreenchange';\n } else if (_document.msFullscreenEnabled) {\n this._fullScreenEventName = 'MSFullscreenChange';\n }\n }\n return this._fullScreenEventName;\n }\n /**\n * When the page is put into fullscreen mode, a specific element is specified.\n * Only that element and its children are visible when in fullscreen mode.\n */\n getFullscreenElement() {\n const _document = this._document;\n return _document.fullscreenElement || _document.webkitFullscreenElement || _document.mozFullScreenElement || _document.msFullscreenElement || null;\n }\n static {\n this.ɵfac = function FullscreenOverlayContainer_Factory(t) {\n return new (t || FullscreenOverlayContainer)(i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i1$1.Platform));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: FullscreenOverlayContainer,\n factory: FullscreenOverlayContainer.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(FullscreenOverlayContainer, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }, {\n type: i1$1.Platform\n }], null);\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BlockScrollStrategy, CdkConnectedOverlay, CdkOverlayOrigin, CloseScrollStrategy, ConnectedOverlayPositionChange, ConnectionPositionPair, FlexibleConnectedPositionStrategy, FullscreenOverlayContainer, GlobalPositionStrategy, NoopScrollStrategy, Overlay, OverlayConfig, OverlayContainer, OverlayKeyboardDispatcher, OverlayModule, OverlayOutsideClickDispatcher, OverlayPositionBuilder, OverlayRef, RepositionScrollStrategy, STANDARD_DROPDOWN_ADJACENT_POSITIONS, STANDARD_DROPDOWN_BELOW_POSITIONS, ScrollStrategyOptions, ScrollingVisibility, validateHorizontalPosition, validateVerticalPosition };\n"], - "mappings": "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", - "names": ["document", "window", "document", "document", "style"] -} diff --git a/.angular/cache/17.0.7/vite/deps/chunk-YSQE3J2Q.js b/.angular/cache/17.0.7/vite/deps/chunk-QP2OUFNR.js similarity index 98% rename from .angular/cache/17.0.7/vite/deps/chunk-YSQE3J2Q.js rename to .angular/cache/17.0.7/vite/deps/chunk-QP2OUFNR.js index 901c9ed..8151afa 100644 --- a/.angular/cache/17.0.7/vite/deps/chunk-YSQE3J2Q.js +++ b/.angular/cache/17.0.7/vite/deps/chunk-QP2OUFNR.js @@ -1,17 +1,19 @@ import { NzBreakpointService, gridResponsiveMap -} from "./chunk-W3IYJMS2.js"; +} from "./chunk-D5ODNR6D.js"; import { MediaMatcher -} from "./chunk-5OJ3CSUZ.js"; +} from "./chunk-WB57DPWD.js"; +import { + Directionality +} from "./chunk-6NZ2BEBG.js"; import { - Directionality, Platform -} from "./chunk-UPQZZZIG.js"; +} from "./chunk-IAC53GOD.js"; import { isNotNil -} from "./chunk-7XTJNSRU.js"; +} from "./chunk-M5GY4FCO.js"; import { Directive, ElementRef, @@ -425,4 +427,4 @@ export { NzColDirective, NzGridModule }; -//# sourceMappingURL=chunk-YSQE3J2Q.js.map +//# sourceMappingURL=chunk-QP2OUFNR.js.map diff --git a/.angular/cache/17.0.7/vite/deps/chunk-YSQE3J2Q.js.map b/.angular/cache/17.0.7/vite/deps/chunk-QP2OUFNR.js.map similarity index 61% rename from .angular/cache/17.0.7/vite/deps/chunk-YSQE3J2Q.js.map rename to .angular/cache/17.0.7/vite/deps/chunk-QP2OUFNR.js.map index 4723ed3..2ccbdf7 100644 --- a/.angular/cache/17.0.7/vite/deps/chunk-YSQE3J2Q.js.map +++ b/.angular/cache/17.0.7/vite/deps/chunk-QP2OUFNR.js.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-grid.mjs"], "sourcesContent": ["import * as i0 from '@angular/core';\nimport { Directive, Optional, Input, Host, NgModule } from '@angular/core';\nimport { ReplaySubject, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport * as i3 from 'ng-zorro-antd/core/services';\nimport { gridResponsiveMap } from 'ng-zorro-antd/core/services';\nimport * as i1 from '@angular/cdk/layout';\nimport * as i2 from '@angular/cdk/platform';\nimport * as i4 from '@angular/cdk/bidi';\nimport { isNotNil } from 'ng-zorro-antd/core/util';\nclass NzRowDirective {\n getGutter() {\n const results = [null, null];\n const gutter = this.nzGutter || 0;\n const normalizedGutter = Array.isArray(gutter) ? gutter : [gutter, null];\n normalizedGutter.forEach((g, index) => {\n if (typeof g === 'object' && g !== null) {\n results[index] = null;\n Object.keys(gridResponsiveMap).map(screen => {\n const bp = screen;\n if (this.mediaMatcher.matchMedia(gridResponsiveMap[bp]).matches && g[bp]) {\n results[index] = g[bp];\n }\n });\n } else {\n results[index] = Number(g) || null;\n }\n });\n return results;\n }\n setGutterStyle() {\n const [horizontalGutter, verticalGutter] = this.getGutter();\n this.actualGutter$.next([horizontalGutter, verticalGutter]);\n const renderGutter = (name, gutter) => {\n const nativeElement = this.elementRef.nativeElement;\n if (gutter !== null) {\n this.renderer.setStyle(nativeElement, name, `-${gutter / 2}px`);\n }\n };\n renderGutter('margin-left', horizontalGutter);\n renderGutter('margin-right', horizontalGutter);\n renderGutter('margin-top', verticalGutter);\n renderGutter('margin-bottom', verticalGutter);\n }\n constructor(elementRef, renderer, mediaMatcher, ngZone, platform, breakpointService, directionality) {\n this.elementRef = elementRef;\n this.renderer = renderer;\n this.mediaMatcher = mediaMatcher;\n this.ngZone = ngZone;\n this.platform = platform;\n this.breakpointService = breakpointService;\n this.directionality = directionality;\n this.nzAlign = null;\n this.nzJustify = null;\n this.nzGutter = null;\n this.actualGutter$ = new ReplaySubject(1);\n this.dir = 'ltr';\n this.destroy$ = new Subject();\n }\n ngOnInit() {\n this.dir = this.directionality.value;\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe(direction => {\n this.dir = direction;\n });\n this.setGutterStyle();\n }\n ngOnChanges(changes) {\n if (changes.nzGutter) {\n this.setGutterStyle();\n }\n }\n ngAfterViewInit() {\n if (this.platform.isBrowser) {\n this.breakpointService.subscribe(gridResponsiveMap).pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.setGutterStyle();\n });\n }\n }\n ngOnDestroy() {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n static {\n this.ɵfac = function NzRowDirective_Factory(t) {\n return new (t || NzRowDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i1.MediaMatcher), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i2.Platform), i0.ɵɵdirectiveInject(i3.NzBreakpointService), i0.ɵɵdirectiveInject(i4.Directionality, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzRowDirective,\n selectors: [[\"\", \"nz-row\", \"\"], [\"nz-row\"], [\"nz-form-item\"]],\n hostAttrs: [1, \"ant-row\"],\n hostVars: 20,\n hostBindings: function NzRowDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"ant-row-top\", ctx.nzAlign === \"top\")(\"ant-row-middle\", ctx.nzAlign === \"middle\")(\"ant-row-bottom\", ctx.nzAlign === \"bottom\")(\"ant-row-start\", ctx.nzJustify === \"start\")(\"ant-row-end\", ctx.nzJustify === \"end\")(\"ant-row-center\", ctx.nzJustify === \"center\")(\"ant-row-space-around\", ctx.nzJustify === \"space-around\")(\"ant-row-space-between\", ctx.nzJustify === \"space-between\")(\"ant-row-space-evenly\", ctx.nzJustify === \"space-evenly\")(\"ant-row-rtl\", ctx.dir === \"rtl\");\n }\n },\n inputs: {\n nzAlign: \"nzAlign\",\n nzJustify: \"nzJustify\",\n nzGutter: \"nzGutter\"\n },\n exportAs: [\"nzRow\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzRowDirective, [{\n type: Directive,\n args: [{\n selector: '[nz-row],nz-row,nz-form-item',\n exportAs: 'nzRow',\n host: {\n class: 'ant-row',\n '[class.ant-row-top]': `nzAlign === 'top'`,\n '[class.ant-row-middle]': `nzAlign === 'middle'`,\n '[class.ant-row-bottom]': `nzAlign === 'bottom'`,\n '[class.ant-row-start]': `nzJustify === 'start'`,\n '[class.ant-row-end]': `nzJustify === 'end'`,\n '[class.ant-row-center]': `nzJustify === 'center'`,\n '[class.ant-row-space-around]': `nzJustify === 'space-around'`,\n '[class.ant-row-space-between]': `nzJustify === 'space-between'`,\n '[class.ant-row-space-evenly]': `nzJustify === 'space-evenly'`,\n '[class.ant-row-rtl]': `dir === \"rtl\"`\n },\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: i0.Renderer2\n }, {\n type: i1.MediaMatcher\n }, {\n type: i0.NgZone\n }, {\n type: i2.Platform\n }, {\n type: i3.NzBreakpointService\n }, {\n type: i4.Directionality,\n decorators: [{\n type: Optional\n }]\n }], {\n nzAlign: [{\n type: Input\n }],\n nzJustify: [{\n type: Input\n }],\n nzGutter: [{\n type: Input\n }]\n });\n})();\nclass NzColDirective {\n setHostClassMap() {\n const hostClassMap = {\n ['ant-col']: true,\n [`ant-col-${this.nzSpan}`]: isNotNil(this.nzSpan),\n [`ant-col-order-${this.nzOrder}`]: isNotNil(this.nzOrder),\n [`ant-col-offset-${this.nzOffset}`]: isNotNil(this.nzOffset),\n [`ant-col-pull-${this.nzPull}`]: isNotNil(this.nzPull),\n [`ant-col-push-${this.nzPush}`]: isNotNil(this.nzPush),\n ['ant-col-rtl']: this.dir === 'rtl',\n ...this.generateClass()\n };\n for (const i in this.classMap) {\n if (this.classMap.hasOwnProperty(i)) {\n this.renderer.removeClass(this.elementRef.nativeElement, i);\n }\n }\n this.classMap = {\n ...hostClassMap\n };\n for (const i in this.classMap) {\n if (this.classMap.hasOwnProperty(i) && this.classMap[i]) {\n this.renderer.addClass(this.elementRef.nativeElement, i);\n }\n }\n }\n setHostFlexStyle() {\n this.hostFlexStyle = this.parseFlex(this.nzFlex);\n }\n parseFlex(flex) {\n if (typeof flex === 'number') {\n return `${flex} ${flex} auto`;\n } else if (typeof flex === 'string') {\n if (/^\\d+(\\.\\d+)?(px|em|rem|%)$/.test(flex)) {\n return `0 0 ${flex}`;\n }\n }\n return flex;\n }\n generateClass() {\n const listOfSizeInputName = ['nzXs', 'nzSm', 'nzMd', 'nzLg', 'nzXl', 'nzXXl'];\n const listClassMap = {};\n listOfSizeInputName.forEach(name => {\n const sizeName = name.replace('nz', '').toLowerCase();\n if (isNotNil(this[name])) {\n if (typeof this[name] === 'number' || typeof this[name] === 'string') {\n listClassMap[`ant-col-${sizeName}-${this[name]}`] = true;\n } else {\n const embedded = this[name];\n const prefixArray = ['span', 'pull', 'push', 'offset', 'order'];\n prefixArray.forEach(prefix => {\n const prefixClass = prefix === 'span' ? '-' : `-${prefix}-`;\n listClassMap[`ant-col-${sizeName}${prefixClass}${embedded[prefix]}`] = embedded && isNotNil(embedded[prefix]);\n });\n }\n }\n });\n return listClassMap;\n }\n constructor(elementRef, nzRowDirective, renderer, directionality) {\n this.elementRef = elementRef;\n this.nzRowDirective = nzRowDirective;\n this.renderer = renderer;\n this.directionality = directionality;\n this.classMap = {};\n this.destroy$ = new Subject();\n this.hostFlexStyle = null;\n this.dir = 'ltr';\n this.nzFlex = null;\n this.nzSpan = null;\n this.nzOrder = null;\n this.nzOffset = null;\n this.nzPush = null;\n this.nzPull = null;\n this.nzXs = null;\n this.nzSm = null;\n this.nzMd = null;\n this.nzLg = null;\n this.nzXl = null;\n this.nzXXl = null;\n }\n ngOnInit() {\n this.dir = this.directionality.value;\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe(direction => {\n this.dir = direction;\n this.setHostClassMap();\n });\n this.setHostClassMap();\n this.setHostFlexStyle();\n }\n ngOnChanges(changes) {\n this.setHostClassMap();\n const {\n nzFlex\n } = changes;\n if (nzFlex) {\n this.setHostFlexStyle();\n }\n }\n ngAfterViewInit() {\n if (this.nzRowDirective) {\n this.nzRowDirective.actualGutter$.pipe(takeUntil(this.destroy$)).subscribe(([horizontalGutter, verticalGutter]) => {\n const renderGutter = (name, gutter) => {\n const nativeElement = this.elementRef.nativeElement;\n if (gutter !== null) {\n this.renderer.setStyle(nativeElement, name, `${gutter / 2}px`);\n }\n };\n renderGutter('padding-left', horizontalGutter);\n renderGutter('padding-right', horizontalGutter);\n renderGutter('padding-top', verticalGutter);\n renderGutter('padding-bottom', verticalGutter);\n });\n }\n }\n ngOnDestroy() {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n static {\n this.ɵfac = function NzColDirective_Factory(t) {\n return new (t || NzColDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(NzRowDirective, 9), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i4.Directionality, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzColDirective,\n selectors: [[\"\", \"nz-col\", \"\"], [\"nz-col\"], [\"nz-form-control\"], [\"nz-form-label\"]],\n hostVars: 2,\n hostBindings: function NzColDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵstyleProp(\"flex\", ctx.hostFlexStyle);\n }\n },\n inputs: {\n nzFlex: \"nzFlex\",\n nzSpan: \"nzSpan\",\n nzOrder: \"nzOrder\",\n nzOffset: \"nzOffset\",\n nzPush: \"nzPush\",\n nzPull: \"nzPull\",\n nzXs: \"nzXs\",\n nzSm: \"nzSm\",\n nzMd: \"nzMd\",\n nzLg: \"nzLg\",\n nzXl: \"nzXl\",\n nzXXl: \"nzXXl\"\n },\n exportAs: [\"nzCol\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzColDirective, [{\n type: Directive,\n args: [{\n selector: '[nz-col],nz-col,nz-form-control,nz-form-label',\n exportAs: 'nzCol',\n host: {\n '[style.flex]': 'hostFlexStyle'\n },\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: NzRowDirective,\n decorators: [{\n type: Optional\n }, {\n type: Host\n }]\n }, {\n type: i0.Renderer2\n }, {\n type: i4.Directionality,\n decorators: [{\n type: Optional\n }]\n }], {\n nzFlex: [{\n type: Input\n }],\n nzSpan: [{\n type: Input\n }],\n nzOrder: [{\n type: Input\n }],\n nzOffset: [{\n type: Input\n }],\n nzPush: [{\n type: Input\n }],\n nzPull: [{\n type: Input\n }],\n nzXs: [{\n type: Input\n }],\n nzSm: [{\n type: Input\n }],\n nzMd: [{\n type: Input\n }],\n nzLg: [{\n type: Input\n }],\n nzXl: [{\n type: Input\n }],\n nzXXl: [{\n type: Input\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzGridModule {\n static {\n this.ɵfac = function NzGridModule_Factory(t) {\n return new (t || NzGridModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NzGridModule,\n imports: [NzColDirective, NzRowDirective],\n exports: [NzColDirective, NzRowDirective]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzGridModule, [{\n type: NgModule,\n args: [{\n imports: [NzColDirective, NzRowDirective],\n exports: [NzColDirective, NzRowDirective]\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NzColDirective, NzGridModule, NzRowDirective };\n"], - "mappings": "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", + "mappings": "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", "names": [] } diff --git a/.angular/cache/17.0.7/vite/deps/chunk-5W7CSQ4E.js b/.angular/cache/17.0.7/vite/deps/chunk-T745QDCV.js similarity index 99% rename from .angular/cache/17.0.7/vite/deps/chunk-5W7CSQ4E.js rename to .angular/cache/17.0.7/vite/deps/chunk-T745QDCV.js index 33e2b29..95ce01b 100644 --- a/.angular/cache/17.0.7/vite/deps/chunk-5W7CSQ4E.js +++ b/.angular/cache/17.0.7/vite/deps/chunk-T745QDCV.js @@ -1,7 +1,7 @@ import { isNotNil, warn -} from "./chunk-7XTJNSRU.js"; +} from "./chunk-M5GY4FCO.js"; import { FormStyle, TranslationWidth, @@ -14663,4 +14663,4 @@ export { zh_HK, zh_TW }; -//# sourceMappingURL=chunk-5W7CSQ4E.js.map +//# sourceMappingURL=chunk-T745QDCV.js.map diff --git a/.angular/cache/17.0.7/vite/deps/chunk-5W7CSQ4E.js.map b/.angular/cache/17.0.7/vite/deps/chunk-T745QDCV.js.map similarity index 100% rename from .angular/cache/17.0.7/vite/deps/chunk-5W7CSQ4E.js.map rename to .angular/cache/17.0.7/vite/deps/chunk-T745QDCV.js.map diff --git a/.angular/cache/17.0.7/vite/deps/chunk-S7G3TSRW.js b/.angular/cache/17.0.7/vite/deps/chunk-VWMHIMW7.js similarity index 99% rename from .angular/cache/17.0.7/vite/deps/chunk-S7G3TSRW.js rename to .angular/cache/17.0.7/vite/deps/chunk-VWMHIMW7.js index 647399e..a026016 100644 --- a/.angular/cache/17.0.7/vite/deps/chunk-S7G3TSRW.js +++ b/.angular/cache/17.0.7/vite/deps/chunk-VWMHIMW7.js @@ -3,14 +3,14 @@ import { inputToRGB, rgbToHex, rgbToHsv -} from "./chunk-NOIPAY33.js"; +} from "./chunk-ZHMJ6SNN.js"; import { Platform -} from "./chunk-UPQZZZIG.js"; +} from "./chunk-IAC53GOD.js"; import { InputBoolean, warn -} from "./chunk-7XTJNSRU.js"; +} from "./chunk-M5GY4FCO.js"; import { DomSanitizer } from "./chunk-Y4CEYMY2.js"; @@ -1363,7 +1363,14 @@ var NzIconModule = _NzIconModule; })(); export { + NZ_ICONS_USED_BY_ZORRO, + NZ_ICONS, + NZ_ICON_DEFAULT_TWOTONE_COLOR, + DEFAULT_TWOTONE_COLOR, + NzIconService, + NZ_ICONS_PATCH, + NzIconPatchService, NzIconDirective, NzIconModule }; -//# sourceMappingURL=chunk-S7G3TSRW.js.map +//# sourceMappingURL=chunk-VWMHIMW7.js.map diff --git a/.angular/cache/17.0.7/vite/deps/chunk-S7G3TSRW.js.map b/.angular/cache/17.0.7/vite/deps/chunk-VWMHIMW7.js.map similarity index 100% rename from .angular/cache/17.0.7/vite/deps/chunk-S7G3TSRW.js.map rename to .angular/cache/17.0.7/vite/deps/chunk-VWMHIMW7.js.map diff --git a/.angular/cache/17.0.7/vite/deps/chunk-5OJ3CSUZ.js b/.angular/cache/17.0.7/vite/deps/chunk-WB57DPWD.js similarity index 98% rename from .angular/cache/17.0.7/vite/deps/chunk-5OJ3CSUZ.js rename to .angular/cache/17.0.7/vite/deps/chunk-WB57DPWD.js index 8431045..4ca736a 100644 --- a/.angular/cache/17.0.7/vite/deps/chunk-5OJ3CSUZ.js +++ b/.angular/cache/17.0.7/vite/deps/chunk-WB57DPWD.js @@ -1,9 +1,9 @@ import { Platform -} from "./chunk-UPQZZZIG.js"; +} from "./chunk-IAC53GOD.js"; import { coerceArray -} from "./chunk-7XTJNSRU.js"; +} from "./chunk-M5GY4FCO.js"; import { CSP_NONCE, Inject, @@ -230,4 +230,4 @@ export { MediaMatcher, BreakpointObserver }; -//# sourceMappingURL=chunk-5OJ3CSUZ.js.map +//# sourceMappingURL=chunk-WB57DPWD.js.map diff --git a/.angular/cache/17.0.7/vite/deps/chunk-5OJ3CSUZ.js.map b/.angular/cache/17.0.7/vite/deps/chunk-WB57DPWD.js.map similarity index 100% rename from .angular/cache/17.0.7/vite/deps/chunk-5OJ3CSUZ.js.map rename to .angular/cache/17.0.7/vite/deps/chunk-WB57DPWD.js.map diff --git a/.angular/cache/17.0.7/vite/deps/chunk-WKTPWT5U.js b/.angular/cache/17.0.7/vite/deps/chunk-WKTPWT5U.js new file mode 100644 index 0000000..3e7ac27 --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/chunk-WKTPWT5U.js @@ -0,0 +1,1928 @@ +import { + NavigationEnd, + Router, + RouterLink +} from "./chunk-CZEXXPIB.js"; +import { + POSITION_MAP, + getPlacementName +} from "./chunk-6RXUTAFR.js"; +import { + collapseMotion, + slideMotion, + zoomBigMotion +} from "./chunk-XAGDQPFO.js"; +import { + NzNoAnimationDirective +} from "./chunk-55A2ZGND.js"; +import { + CdkConnectedOverlay, + CdkOverlayOrigin, + OverlayModule +} from "./chunk-6U656R5M.js"; +import { + NzOutletModule, + NzStringTemplateOutletDirective +} from "./chunk-VOD2PKZN.js"; +import { + NzIconDirective, + NzIconModule +} from "./chunk-VWMHIMW7.js"; +import { + Directionality +} from "./chunk-6NZ2BEBG.js"; +import { + Platform +} from "./chunk-IAC53GOD.js"; +import { + InputBoolean +} from "./chunk-M5GY4FCO.js"; +import { + NgClass, + NgIf, + NgSwitch, + NgSwitchCase, + NgSwitchDefault, + NgTemplateOutlet +} from "./chunk-OSQBUYO6.js"; +import { + BehaviorSubject, + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + ContentChildren, + Directive, + ElementRef, + EventEmitter, + Host, + Inject, + Injectable, + InjectionToken, + Input, + NgModule, + Optional, + Output, + Renderer2, + SkipSelf, + Subject, + ViewChild, + ViewEncapsulation$1, + __decorate, + auditTime, + combineLatest, + distinctUntilChanged, + filter, + forwardRef, + inject, + map, + mapTo, + merge, + mergeMap, + setClassMetadata, + startWith, + switchMap, + takeUntil, + ɵɵNgOnChangesFeature, + ɵɵProvidersFeature, + ɵɵStandaloneFeature, + ɵɵadvance, + ɵɵclassProp, + ɵɵcontentQuery, + ɵɵdefineComponent, + ɵɵdefineDirective, + ɵɵdefineInjectable, + ɵɵdefineInjector, + ɵɵdefineNgModule, + ɵɵdirectiveInject, + ɵɵelement, + ɵɵelementContainerEnd, + ɵɵelementContainerStart, + ɵɵelementEnd, + ɵɵelementStart, + ɵɵgetCurrentView, + ɵɵinject, + ɵɵlistener, + ɵɵloadQuery, + ɵɵnextContext, + ɵɵprojection, + ɵɵprojectionDef, + ɵɵproperty, + ɵɵqueryRefresh, + ɵɵreference, + ɵɵresetView, + ɵɵrestoreView, + ɵɵstyleProp, + ɵɵsyntheticHostProperty, + ɵɵtemplate, + ɵɵtemplateRefExtractor, + ɵɵtext, + ɵɵtextInterpolate, + ɵɵviewQuery +} from "./chunk-FGESKT7O.js"; + +// node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-menu.mjs +var _c0 = ["nz-menu-item", ""]; +var _c1 = ["*"]; +var _c2 = ["nz-submenu-inline-child", ""]; +function NzSubmenuInlineChildComponent_ng_template_0_Template(rf, ctx) { +} +var _c3 = ["nz-submenu-none-inline-child", ""]; +function NzSubmenuNoneInlineChildComponent_ng_template_1_Template(rf, ctx) { +} +var _c4 = ["nz-submenu-title", ""]; +function NzSubMenuTitleComponent_span_0_Template(rf, ctx) { + if (rf & 1) { + ɵɵelement(0, "span", 4); + } + if (rf & 2) { + const ctx_r0 = ɵɵnextContext(); + ɵɵproperty("nzType", ctx_r0.nzIcon); + } +} +function NzSubMenuTitleComponent_ng_container_1_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementContainerStart(0); + ɵɵelementStart(1, "span", 5); + ɵɵtext(2); + ɵɵelementEnd(); + ɵɵelementContainerEnd(); + } + if (rf & 2) { + const ctx_r1 = ɵɵnextContext(); + ɵɵadvance(2); + ɵɵtextInterpolate(ctx_r1.nzTitle); + } +} +function NzSubMenuTitleComponent_span_3_span_1_Template(rf, ctx) { + if (rf & 1) { + ɵɵelement(0, "span", 9); + } +} +function NzSubMenuTitleComponent_span_3_span_2_Template(rf, ctx) { + if (rf & 1) { + ɵɵelement(0, "span", 10); + } +} +function NzSubMenuTitleComponent_span_3_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementStart(0, "span", 6); + ɵɵtemplate(1, NzSubMenuTitleComponent_span_3_span_1_Template, 1, 0, "span", 7)(2, NzSubMenuTitleComponent_span_3_span_2_Template, 1, 0, "span", 8); + ɵɵelementEnd(); + } + if (rf & 2) { + const ctx_r2 = ɵɵnextContext(); + ɵɵproperty("ngSwitch", ctx_r2.dir); + ɵɵadvance(1); + ɵɵproperty("ngSwitchCase", "rtl"); + } +} +function NzSubMenuTitleComponent_ng_template_4_Template(rf, ctx) { + if (rf & 1) { + ɵɵelement(0, "span", 11); + } +} +var _c5 = ["nz-submenu", ""]; +function NzSubMenuComponent_ng_content_2_Template(rf, ctx) { + if (rf & 1) { + ɵɵprojection(0, 0, ["*ngIf", "!nzTitle"]); + } +} +function NzSubMenuComponent_div_3_Template(rf, ctx) { + if (rf & 1) { + ɵɵelement(0, "div", 6); + } + if (rf & 2) { + const ctx_r2 = ɵɵnextContext(); + const _r6 = ɵɵreference(7); + ɵɵproperty("mode", ctx_r2.mode)("nzOpen", ctx_r2.nzOpen)("@.disabled", !!(ctx_r2.noAnimation == null ? null : ctx_r2.noAnimation.nzNoAnimation))("nzNoAnimation", ctx_r2.noAnimation == null ? null : ctx_r2.noAnimation.nzNoAnimation)("menuClass", ctx_r2.nzMenuClassName)("templateOutlet", _r6); + } +} +function NzSubMenuComponent_ng_template_4_ng_template_0_Template(rf, ctx) { + if (rf & 1) { + const _r9 = ɵɵgetCurrentView(); + ɵɵelementStart(0, "div", 8); + ɵɵlistener("subMenuMouseState", function NzSubMenuComponent_ng_template_4_ng_template_0_Template_div_subMenuMouseState_0_listener($event) { + ɵɵrestoreView(_r9); + const ctx_r8 = ɵɵnextContext(2); + return ɵɵresetView(ctx_r8.setMouseEnterState($event)); + }); + ɵɵelementEnd(); + } + if (rf & 2) { + const ctx_r7 = ɵɵnextContext(2); + const _r6 = ɵɵreference(7); + ɵɵproperty("theme", ctx_r7.theme)("mode", ctx_r7.mode)("nzOpen", ctx_r7.nzOpen)("position", ctx_r7.position)("nzDisabled", ctx_r7.nzDisabled)("isMenuInsideDropDown", ctx_r7.isMenuInsideDropDown)("templateOutlet", _r6)("menuClass", ctx_r7.nzMenuClassName)("@.disabled", !!(ctx_r7.noAnimation == null ? null : ctx_r7.noAnimation.nzNoAnimation))("nzNoAnimation", ctx_r7.noAnimation == null ? null : ctx_r7.noAnimation.nzNoAnimation); + } +} +function NzSubMenuComponent_ng_template_4_Template(rf, ctx) { + if (rf & 1) { + const _r11 = ɵɵgetCurrentView(); + ɵɵtemplate(0, NzSubMenuComponent_ng_template_4_ng_template_0_Template, 1, 10, "ng-template", 7); + ɵɵlistener("positionChange", function NzSubMenuComponent_ng_template_4_Template_ng_template_positionChange_0_listener($event) { + ɵɵrestoreView(_r11); + const ctx_r10 = ɵɵnextContext(); + return ɵɵresetView(ctx_r10.onPositionChange($event)); + }); + } + if (rf & 2) { + const ctx_r3 = ɵɵnextContext(); + const _r0 = ɵɵreference(1); + ɵɵproperty("cdkConnectedOverlayPositions", ctx_r3.overlayPositions)("cdkConnectedOverlayOrigin", _r0)("cdkConnectedOverlayWidth", ctx_r3.triggerWidth)("cdkConnectedOverlayOpen", ctx_r3.nzOpen)("cdkConnectedOverlayTransformOriginOn", ".ant-menu-submenu"); + } +} +function NzSubMenuComponent_ng_template_6_Template(rf, ctx) { + if (rf & 1) { + ɵɵprojection(0, 1); + } +} +var _c6 = [[["", "title", ""]], "*"]; +var _c7 = ["[title]", "*"]; +var _c8 = ["titleElement"]; +var _c9 = ["nz-menu-group", ""]; +function NzMenuGroupComponent_ng_container_2_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementContainerStart(0); + ɵɵtext(1); + ɵɵelementContainerEnd(); + } + if (rf & 2) { + const ctx_r1 = ɵɵnextContext(); + ɵɵadvance(1); + ɵɵtextInterpolate(ctx_r1.nzTitle); + } +} +function NzMenuGroupComponent_ng_content_3_Template(rf, ctx) { + if (rf & 1) { + ɵɵprojection(0, 1, ["*ngIf", "!nzTitle"]); + } +} +var _c10 = ["*", [["", "title", ""]]]; +var _c11 = ["*", "[title]"]; +var NzIsMenuInsideDropDownToken = new InjectionToken("NzIsInDropDownMenuToken"); +var NzMenuServiceLocalToken = new InjectionToken("NzMenuServiceLocalToken"); +var _MenuService = class _MenuService { + constructor() { + this.descendantMenuItemClick$ = new Subject(); + this.childMenuItemClick$ = new Subject(); + this.theme$ = new BehaviorSubject("light"); + this.mode$ = new BehaviorSubject("vertical"); + this.inlineIndent$ = new BehaviorSubject(24); + this.isChildSubMenuOpen$ = new BehaviorSubject(false); + } + onDescendantMenuItemClick(menu) { + this.descendantMenuItemClick$.next(menu); + } + onChildMenuItemClick(menu) { + this.childMenuItemClick$.next(menu); + } + setMode(mode) { + this.mode$.next(mode); + } + setTheme(theme) { + this.theme$.next(theme); + } + setInlineIndent(indent) { + this.inlineIndent$.next(indent); + } +}; +_MenuService.ɵfac = function MenuService_Factory(t) { + return new (t || _MenuService)(); +}; +_MenuService.ɵprov = ɵɵdefineInjectable({ + token: _MenuService, + factory: _MenuService.ɵfac +}); +var MenuService = _MenuService; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(MenuService, [{ + type: Injectable + }], null, null); +})(); +var _NzSubmenuService = class _NzSubmenuService { + /** + * menu item inside submenu clicked + * + * @param menu + */ + onChildMenuItemClick(menu) { + this.childMenuItemClick$.next(menu); + } + setOpenStateWithoutDebounce(value) { + this.isCurrentSubMenuOpen$.next(value); + } + setMouseEnterTitleOrOverlayState(value) { + this.isMouseEnterTitleOrOverlay$.next(value); + } + constructor(nzHostSubmenuService, nzMenuService, isMenuInsideDropDown) { + this.nzHostSubmenuService = nzHostSubmenuService; + this.nzMenuService = nzMenuService; + this.isMenuInsideDropDown = isMenuInsideDropDown; + this.mode$ = this.nzMenuService.mode$.pipe(map((mode) => { + if (mode === "inline") { + return "inline"; + } else if (mode === "vertical" || this.nzHostSubmenuService) { + return "vertical"; + } else { + return "horizontal"; + } + })); + this.level = 1; + this.isCurrentSubMenuOpen$ = new BehaviorSubject(false); + this.isChildSubMenuOpen$ = new BehaviorSubject(false); + this.isMouseEnterTitleOrOverlay$ = new Subject(); + this.childMenuItemClick$ = new Subject(); + this.destroy$ = new Subject(); + if (this.nzHostSubmenuService) { + this.level = this.nzHostSubmenuService.level + 1; + } + const isClosedByMenuItemClick = this.childMenuItemClick$.pipe(mergeMap(() => this.mode$), filter((mode) => mode !== "inline" || this.isMenuInsideDropDown), mapTo(false)); + const isCurrentSubmenuOpen$ = merge(this.isMouseEnterTitleOrOverlay$, isClosedByMenuItemClick); + const isSubMenuOpenWithDebounce$ = combineLatest([this.isChildSubMenuOpen$, isCurrentSubmenuOpen$]).pipe(map(([isChildSubMenuOpen, isCurrentSubmenuOpen]) => isChildSubMenuOpen || isCurrentSubmenuOpen), auditTime(150), distinctUntilChanged(), takeUntil(this.destroy$)); + isSubMenuOpenWithDebounce$.pipe(distinctUntilChanged()).subscribe((data) => { + this.setOpenStateWithoutDebounce(data); + if (this.nzHostSubmenuService) { + this.nzHostSubmenuService.isChildSubMenuOpen$.next(data); + } else { + this.nzMenuService.isChildSubMenuOpen$.next(data); + } + }); + } + ngOnDestroy() { + this.destroy$.next(); + this.destroy$.complete(); + } +}; +_NzSubmenuService.ɵfac = function NzSubmenuService_Factory(t) { + return new (t || _NzSubmenuService)(ɵɵinject(_NzSubmenuService, 12), ɵɵinject(MenuService), ɵɵinject(NzIsMenuInsideDropDownToken)); +}; +_NzSubmenuService.ɵprov = ɵɵdefineInjectable({ + token: _NzSubmenuService, + factory: _NzSubmenuService.ɵfac +}); +var NzSubmenuService = _NzSubmenuService; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzSubmenuService, [{ + type: Injectable + }], () => [{ + type: NzSubmenuService, + decorators: [{ + type: SkipSelf + }, { + type: Optional + }] + }, { + type: MenuService + }, { + type: void 0, + decorators: [{ + type: Inject, + args: [NzIsMenuInsideDropDownToken] + }] + }], null); +})(); +var _NzMenuItemComponent = class _NzMenuItemComponent { + /** clear all item selected status except this */ + clickMenuItem(e) { + if (this.nzDisabled) { + e.preventDefault(); + e.stopPropagation(); + } else { + this.nzMenuService.onDescendantMenuItemClick(this); + if (this.nzSubmenuService) { + this.nzSubmenuService.onChildMenuItemClick(this); + } else { + this.nzMenuService.onChildMenuItemClick(this); + } + } + } + setSelectedState(value) { + this.nzSelected = value; + this.selected$.next(value); + } + updateRouterActive() { + if (!this.listOfRouterLink || !this.router || !this.router.navigated || !this.nzMatchRouter) { + return; + } + Promise.resolve().then(() => { + const hasActiveLinks = this.hasActiveLinks(); + if (this.nzSelected !== hasActiveLinks) { + this.nzSelected = hasActiveLinks; + this.setSelectedState(this.nzSelected); + this.cdr.markForCheck(); + } + }); + } + hasActiveLinks() { + const isActiveCheckFn = this.isLinkActive(this.router); + return this.routerLink && isActiveCheckFn(this.routerLink) || this.listOfRouterLink.some(isActiveCheckFn); + } + isLinkActive(router) { + return (link) => router.isActive(link.urlTree || "", { + paths: this.nzMatchRouterExact ? "exact" : "subset", + queryParams: this.nzMatchRouterExact ? "exact" : "subset", + fragment: "ignored", + matrixParams: "ignored" + }); + } + constructor(nzMenuService, cdr, nzSubmenuService, isMenuInsideDropDown, directionality, routerLink, router) { + this.nzMenuService = nzMenuService; + this.cdr = cdr; + this.nzSubmenuService = nzSubmenuService; + this.isMenuInsideDropDown = isMenuInsideDropDown; + this.directionality = directionality; + this.routerLink = routerLink; + this.router = router; + this.destroy$ = new Subject(); + this.level = this.nzSubmenuService ? this.nzSubmenuService.level + 1 : 1; + this.selected$ = new Subject(); + this.inlinePaddingLeft = null; + this.dir = "ltr"; + this.nzDisabled = false; + this.nzSelected = false; + this.nzDanger = false; + this.nzMatchRouterExact = false; + this.nzMatchRouter = false; + if (router) { + this.router.events.pipe(takeUntil(this.destroy$), filter((e) => e instanceof NavigationEnd)).subscribe(() => { + this.updateRouterActive(); + }); + } + } + ngOnInit() { + combineLatest([this.nzMenuService.mode$, this.nzMenuService.inlineIndent$]).pipe(takeUntil(this.destroy$)).subscribe(([mode, inlineIndent]) => { + this.inlinePaddingLeft = mode === "inline" ? this.level * inlineIndent : null; + }); + this.dir = this.directionality.value; + this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction) => { + this.dir = direction; + }); + } + ngAfterContentInit() { + this.listOfRouterLink.changes.pipe(takeUntil(this.destroy$)).subscribe(() => this.updateRouterActive()); + this.updateRouterActive(); + } + ngOnChanges(changes) { + if (changes.nzSelected) { + this.setSelectedState(this.nzSelected); + } + } + ngOnDestroy() { + this.destroy$.next(true); + this.destroy$.complete(); + } +}; +_NzMenuItemComponent.ɵfac = function NzMenuItemComponent_Factory(t) { + return new (t || _NzMenuItemComponent)(ɵɵdirectiveInject(MenuService), ɵɵdirectiveInject(ChangeDetectorRef), ɵɵdirectiveInject(NzSubmenuService, 8), ɵɵdirectiveInject(NzIsMenuInsideDropDownToken), ɵɵdirectiveInject(Directionality, 8), ɵɵdirectiveInject(RouterLink, 8), ɵɵdirectiveInject(Router, 8)); +}; +_NzMenuItemComponent.ɵcmp = ɵɵdefineComponent({ + type: _NzMenuItemComponent, + selectors: [["", "nz-menu-item", ""]], + contentQueries: function NzMenuItemComponent_ContentQueries(rf, ctx, dirIndex) { + if (rf & 1) { + ɵɵcontentQuery(dirIndex, RouterLink, 5); + } + if (rf & 2) { + let _t; + ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.listOfRouterLink = _t); + } + }, + hostVars: 20, + hostBindings: function NzMenuItemComponent_HostBindings(rf, ctx) { + if (rf & 1) { + ɵɵlistener("click", function NzMenuItemComponent_click_HostBindingHandler($event) { + return ctx.clickMenuItem($event); + }); + } + if (rf & 2) { + ɵɵstyleProp("padding-left", ctx.dir === "rtl" ? null : ctx.nzPaddingLeft || ctx.inlinePaddingLeft, "px")("padding-right", ctx.dir === "rtl" ? ctx.nzPaddingLeft || ctx.inlinePaddingLeft : null, "px"); + ɵɵclassProp("ant-dropdown-menu-item", ctx.isMenuInsideDropDown)("ant-dropdown-menu-item-selected", ctx.isMenuInsideDropDown && ctx.nzSelected)("ant-dropdown-menu-item-danger", ctx.isMenuInsideDropDown && ctx.nzDanger)("ant-dropdown-menu-item-disabled", ctx.isMenuInsideDropDown && ctx.nzDisabled)("ant-menu-item", !ctx.isMenuInsideDropDown)("ant-menu-item-selected", !ctx.isMenuInsideDropDown && ctx.nzSelected)("ant-menu-item-danger", !ctx.isMenuInsideDropDown && ctx.nzDanger)("ant-menu-item-disabled", !ctx.isMenuInsideDropDown && ctx.nzDisabled); + } + }, + inputs: { + nzPaddingLeft: "nzPaddingLeft", + nzDisabled: "nzDisabled", + nzSelected: "nzSelected", + nzDanger: "nzDanger", + nzMatchRouterExact: "nzMatchRouterExact", + nzMatchRouter: "nzMatchRouter" + }, + exportAs: ["nzMenuItem"], + standalone: true, + features: [ɵɵNgOnChangesFeature, ɵɵStandaloneFeature], + attrs: _c0, + ngContentSelectors: _c1, + decls: 2, + vars: 0, + consts: [[1, "ant-menu-title-content"]], + template: function NzMenuItemComponent_Template(rf, ctx) { + if (rf & 1) { + ɵɵprojectionDef(); + ɵɵelementStart(0, "span", 0); + ɵɵprojection(1); + ɵɵelementEnd(); + } + }, + encapsulation: 2, + changeDetection: 0 +}); +var NzMenuItemComponent = _NzMenuItemComponent; +__decorate([InputBoolean()], NzMenuItemComponent.prototype, "nzDisabled", void 0); +__decorate([InputBoolean()], NzMenuItemComponent.prototype, "nzSelected", void 0); +__decorate([InputBoolean()], NzMenuItemComponent.prototype, "nzDanger", void 0); +__decorate([InputBoolean()], NzMenuItemComponent.prototype, "nzMatchRouterExact", void 0); +__decorate([InputBoolean()], NzMenuItemComponent.prototype, "nzMatchRouter", void 0); +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzMenuItemComponent, [{ + type: Component, + args: [{ + selector: "[nz-menu-item]", + exportAs: "nzMenuItem", + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation$1.None, + preserveWhitespaces: false, + template: ` + + + + `, + host: { + "[class.ant-dropdown-menu-item]": `isMenuInsideDropDown`, + "[class.ant-dropdown-menu-item-selected]": `isMenuInsideDropDown && nzSelected`, + "[class.ant-dropdown-menu-item-danger]": `isMenuInsideDropDown && nzDanger`, + "[class.ant-dropdown-menu-item-disabled]": `isMenuInsideDropDown && nzDisabled`, + "[class.ant-menu-item]": `!isMenuInsideDropDown`, + "[class.ant-menu-item-selected]": `!isMenuInsideDropDown && nzSelected`, + "[class.ant-menu-item-danger]": `!isMenuInsideDropDown && nzDanger`, + "[class.ant-menu-item-disabled]": `!isMenuInsideDropDown && nzDisabled`, + "[style.paddingLeft.px]": `dir === 'rtl' ? null : nzPaddingLeft || inlinePaddingLeft`, + "[style.paddingRight.px]": `dir === 'rtl' ? nzPaddingLeft || inlinePaddingLeft : null`, + "(click)": "clickMenuItem($event)" + }, + standalone: true + }] + }], () => [{ + type: MenuService + }, { + type: ChangeDetectorRef + }, { + type: NzSubmenuService, + decorators: [{ + type: Optional + }] + }, { + type: void 0, + decorators: [{ + type: Inject, + args: [NzIsMenuInsideDropDownToken] + }] + }, { + type: Directionality, + decorators: [{ + type: Optional + }] + }, { + type: RouterLink, + decorators: [{ + type: Optional + }] + }, { + type: Router, + decorators: [{ + type: Optional + }] + }], { + nzPaddingLeft: [{ + type: Input + }], + nzDisabled: [{ + type: Input + }], + nzSelected: [{ + type: Input + }], + nzDanger: [{ + type: Input + }], + nzMatchRouterExact: [{ + type: Input + }], + nzMatchRouter: [{ + type: Input + }], + listOfRouterLink: [{ + type: ContentChildren, + args: [RouterLink, { + descendants: true + }] + }] + }); +})(); +var _NzSubmenuInlineChildComponent = class _NzSubmenuInlineChildComponent { + constructor(elementRef, renderer, directionality) { + this.elementRef = elementRef; + this.renderer = renderer; + this.directionality = directionality; + this.templateOutlet = null; + this.menuClass = ""; + this.mode = "vertical"; + this.nzOpen = false; + this.listOfCacheClassName = []; + this.expandState = "collapsed"; + this.dir = "ltr"; + this.destroy$ = new Subject(); + } + calcMotionState() { + if (this.nzOpen) { + this.expandState = "expanded"; + } else { + this.expandState = "collapsed"; + } + } + ngOnInit() { + this.calcMotionState(); + this.dir = this.directionality.value; + this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction) => { + this.dir = direction; + }); + } + ngOnChanges(changes) { + const { + mode, + nzOpen, + menuClass + } = changes; + if (mode || nzOpen) { + this.calcMotionState(); + } + if (menuClass) { + if (this.listOfCacheClassName.length) { + this.listOfCacheClassName.filter((item) => !!item).forEach((className) => { + this.renderer.removeClass(this.elementRef.nativeElement, className); + }); + } + if (this.menuClass) { + this.listOfCacheClassName = this.menuClass.split(" "); + this.listOfCacheClassName.filter((item) => !!item).forEach((className) => { + this.renderer.addClass(this.elementRef.nativeElement, className); + }); + } + } + } + ngOnDestroy() { + this.destroy$.next(); + this.destroy$.complete(); + } +}; +_NzSubmenuInlineChildComponent.ɵfac = function NzSubmenuInlineChildComponent_Factory(t) { + return new (t || _NzSubmenuInlineChildComponent)(ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(Renderer2), ɵɵdirectiveInject(Directionality, 8)); +}; +_NzSubmenuInlineChildComponent.ɵcmp = ɵɵdefineComponent({ + type: _NzSubmenuInlineChildComponent, + selectors: [["", "nz-submenu-inline-child", ""]], + hostAttrs: [1, "ant-menu", "ant-menu-inline", "ant-menu-sub"], + hostVars: 3, + hostBindings: function NzSubmenuInlineChildComponent_HostBindings(rf, ctx) { + if (rf & 2) { + ɵɵsyntheticHostProperty("@collapseMotion", ctx.expandState); + ɵɵclassProp("ant-menu-rtl", ctx.dir === "rtl"); + } + }, + inputs: { + templateOutlet: "templateOutlet", + menuClass: "menuClass", + mode: "mode", + nzOpen: "nzOpen" + }, + exportAs: ["nzSubmenuInlineChild"], + standalone: true, + features: [ɵɵNgOnChangesFeature, ɵɵStandaloneFeature], + attrs: _c2, + decls: 1, + vars: 1, + consts: [[3, "ngTemplateOutlet"]], + template: function NzSubmenuInlineChildComponent_Template(rf, ctx) { + if (rf & 1) { + ɵɵtemplate(0, NzSubmenuInlineChildComponent_ng_template_0_Template, 0, 0, "ng-template", 0); + } + if (rf & 2) { + ɵɵproperty("ngTemplateOutlet", ctx.templateOutlet); + } + }, + dependencies: [NgTemplateOutlet], + encapsulation: 2, + data: { + animation: [collapseMotion] + }, + changeDetection: 0 +}); +var NzSubmenuInlineChildComponent = _NzSubmenuInlineChildComponent; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzSubmenuInlineChildComponent, [{ + type: Component, + args: [{ + selector: "[nz-submenu-inline-child]", + animations: [collapseMotion], + exportAs: "nzSubmenuInlineChild", + encapsulation: ViewEncapsulation$1.None, + changeDetection: ChangeDetectionStrategy.OnPush, + template: ` `, + host: { + class: "ant-menu ant-menu-inline ant-menu-sub", + "[class.ant-menu-rtl]": `dir === 'rtl'`, + "[@collapseMotion]": "expandState" + }, + imports: [NgTemplateOutlet], + standalone: true + }] + }], () => [{ + type: ElementRef + }, { + type: Renderer2 + }, { + type: Directionality, + decorators: [{ + type: Optional + }] + }], { + templateOutlet: [{ + type: Input + }], + menuClass: [{ + type: Input + }], + mode: [{ + type: Input + }], + nzOpen: [{ + type: Input + }] + }); +})(); +var _NzSubmenuNoneInlineChildComponent = class _NzSubmenuNoneInlineChildComponent { + constructor(directionality) { + this.directionality = directionality; + this.menuClass = ""; + this.theme = "light"; + this.templateOutlet = null; + this.isMenuInsideDropDown = false; + this.mode = "vertical"; + this.position = "right"; + this.nzDisabled = false; + this.nzOpen = false; + this.subMenuMouseState = new EventEmitter(); + this.expandState = "collapsed"; + this.dir = "ltr"; + this.destroy$ = new Subject(); + } + setMouseState(state) { + if (!this.nzDisabled) { + this.subMenuMouseState.next(state); + } + } + ngOnDestroy() { + this.destroy$.next(); + this.destroy$.complete(); + } + calcMotionState() { + if (this.nzOpen) { + if (this.mode === "horizontal") { + this.expandState = "bottom"; + } else if (this.mode === "vertical") { + this.expandState = "active"; + } + } else { + this.expandState = "collapsed"; + } + } + ngOnInit() { + this.calcMotionState(); + this.dir = this.directionality.value; + this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction) => { + this.dir = direction; + }); + } + ngOnChanges(changes) { + const { + mode, + nzOpen + } = changes; + if (mode || nzOpen) { + this.calcMotionState(); + } + } +}; +_NzSubmenuNoneInlineChildComponent.ɵfac = function NzSubmenuNoneInlineChildComponent_Factory(t) { + return new (t || _NzSubmenuNoneInlineChildComponent)(ɵɵdirectiveInject(Directionality, 8)); +}; +_NzSubmenuNoneInlineChildComponent.ɵcmp = ɵɵdefineComponent({ + type: _NzSubmenuNoneInlineChildComponent, + selectors: [["", "nz-submenu-none-inline-child", ""]], + hostAttrs: [1, "ant-menu-submenu", "ant-menu-submenu-popup"], + hostVars: 14, + hostBindings: function NzSubmenuNoneInlineChildComponent_HostBindings(rf, ctx) { + if (rf & 1) { + ɵɵlistener("mouseenter", function NzSubmenuNoneInlineChildComponent_mouseenter_HostBindingHandler() { + return ctx.setMouseState(true); + })("mouseleave", function NzSubmenuNoneInlineChildComponent_mouseleave_HostBindingHandler() { + return ctx.setMouseState(false); + }); + } + if (rf & 2) { + ɵɵsyntheticHostProperty("@slideMotion", ctx.expandState)("@zoomBigMotion", ctx.expandState); + ɵɵclassProp("ant-menu-light", ctx.theme === "light")("ant-menu-dark", ctx.theme === "dark")("ant-menu-submenu-placement-bottom", ctx.mode === "horizontal")("ant-menu-submenu-placement-right", ctx.mode === "vertical" && ctx.position === "right")("ant-menu-submenu-placement-left", ctx.mode === "vertical" && ctx.position === "left")("ant-menu-submenu-rtl", ctx.dir === "rtl"); + } + }, + inputs: { + menuClass: "menuClass", + theme: "theme", + templateOutlet: "templateOutlet", + isMenuInsideDropDown: "isMenuInsideDropDown", + mode: "mode", + position: "position", + nzDisabled: "nzDisabled", + nzOpen: "nzOpen" + }, + outputs: { + subMenuMouseState: "subMenuMouseState" + }, + exportAs: ["nzSubmenuNoneInlineChild"], + standalone: true, + features: [ɵɵNgOnChangesFeature, ɵɵStandaloneFeature], + attrs: _c3, + decls: 2, + vars: 16, + consts: [[3, "ngClass"], [3, "ngTemplateOutlet"]], + template: function NzSubmenuNoneInlineChildComponent_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementStart(0, "div", 0); + ɵɵtemplate(1, NzSubmenuNoneInlineChildComponent_ng_template_1_Template, 0, 0, "ng-template", 1); + ɵɵelementEnd(); + } + if (rf & 2) { + ɵɵclassProp("ant-dropdown-menu", ctx.isMenuInsideDropDown)("ant-menu", !ctx.isMenuInsideDropDown)("ant-dropdown-menu-vertical", ctx.isMenuInsideDropDown)("ant-menu-vertical", !ctx.isMenuInsideDropDown)("ant-dropdown-menu-sub", ctx.isMenuInsideDropDown)("ant-menu-sub", !ctx.isMenuInsideDropDown)("ant-menu-rtl", ctx.dir === "rtl"); + ɵɵproperty("ngClass", ctx.menuClass); + ɵɵadvance(1); + ɵɵproperty("ngTemplateOutlet", ctx.templateOutlet); + } + }, + dependencies: [NgClass, NgTemplateOutlet], + encapsulation: 2, + data: { + animation: [zoomBigMotion, slideMotion] + }, + changeDetection: 0 +}); +var NzSubmenuNoneInlineChildComponent = _NzSubmenuNoneInlineChildComponent; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzSubmenuNoneInlineChildComponent, [{ + type: Component, + args: [{ + selector: "[nz-submenu-none-inline-child]", + exportAs: "nzSubmenuNoneInlineChild", + encapsulation: ViewEncapsulation$1.None, + animations: [zoomBigMotion, slideMotion], + changeDetection: ChangeDetectionStrategy.OnPush, + template: ` +
+ +
+ `, + host: { + class: "ant-menu-submenu ant-menu-submenu-popup", + "[class.ant-menu-light]": "theme === 'light'", + "[class.ant-menu-dark]": "theme === 'dark'", + "[class.ant-menu-submenu-placement-bottom]": "mode === 'horizontal'", + "[class.ant-menu-submenu-placement-right]": "mode === 'vertical' && position === 'right'", + "[class.ant-menu-submenu-placement-left]": "mode === 'vertical' && position === 'left'", + "[class.ant-menu-submenu-rtl]": 'dir ==="rtl"', + "[@slideMotion]": "expandState", + "[@zoomBigMotion]": "expandState", + "(mouseenter)": "setMouseState(true)", + "(mouseleave)": "setMouseState(false)" + }, + imports: [NgClass, NgTemplateOutlet], + standalone: true + }] + }], () => [{ + type: Directionality, + decorators: [{ + type: Optional + }] + }], { + menuClass: [{ + type: Input + }], + theme: [{ + type: Input + }], + templateOutlet: [{ + type: Input + }], + isMenuInsideDropDown: [{ + type: Input + }], + mode: [{ + type: Input + }], + position: [{ + type: Input + }], + nzDisabled: [{ + type: Input + }], + nzOpen: [{ + type: Input + }], + subMenuMouseState: [{ + type: Output + }] + }); +})(); +var _NzSubMenuTitleComponent = class _NzSubMenuTitleComponent { + constructor(cdr, directionality) { + this.cdr = cdr; + this.directionality = directionality; + this.nzIcon = null; + this.nzTitle = null; + this.isMenuInsideDropDown = false; + this.nzDisabled = false; + this.paddingLeft = null; + this.mode = "vertical"; + this.toggleSubMenu = new EventEmitter(); + this.subMenuMouseState = new EventEmitter(); + this.dir = "ltr"; + this.destroy$ = new Subject(); + } + ngOnInit() { + this.dir = this.directionality.value; + this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction) => { + this.dir = direction; + this.cdr.detectChanges(); + }); + } + ngOnDestroy() { + this.destroy$.next(); + this.destroy$.complete(); + } + setMouseState(state) { + if (!this.nzDisabled) { + this.subMenuMouseState.next(state); + } + } + clickTitle() { + if (this.mode === "inline" && !this.nzDisabled) { + this.toggleSubMenu.emit(); + } + } +}; +_NzSubMenuTitleComponent.ɵfac = function NzSubMenuTitleComponent_Factory(t) { + return new (t || _NzSubMenuTitleComponent)(ɵɵdirectiveInject(ChangeDetectorRef), ɵɵdirectiveInject(Directionality, 8)); +}; +_NzSubMenuTitleComponent.ɵcmp = ɵɵdefineComponent({ + type: _NzSubMenuTitleComponent, + selectors: [["", "nz-submenu-title", ""]], + hostVars: 8, + hostBindings: function NzSubMenuTitleComponent_HostBindings(rf, ctx) { + if (rf & 1) { + ɵɵlistener("click", function NzSubMenuTitleComponent_click_HostBindingHandler() { + return ctx.clickTitle(); + })("mouseenter", function NzSubMenuTitleComponent_mouseenter_HostBindingHandler() { + return ctx.setMouseState(true); + })("mouseleave", function NzSubMenuTitleComponent_mouseleave_HostBindingHandler() { + return ctx.setMouseState(false); + }); + } + if (rf & 2) { + ɵɵstyleProp("padding-left", ctx.dir === "rtl" ? null : ctx.paddingLeft, "px")("padding-right", ctx.dir === "rtl" ? ctx.paddingLeft : null, "px"); + ɵɵclassProp("ant-dropdown-menu-submenu-title", ctx.isMenuInsideDropDown)("ant-menu-submenu-title", !ctx.isMenuInsideDropDown); + } + }, + inputs: { + nzIcon: "nzIcon", + nzTitle: "nzTitle", + isMenuInsideDropDown: "isMenuInsideDropDown", + nzDisabled: "nzDisabled", + paddingLeft: "paddingLeft", + mode: "mode" + }, + outputs: { + toggleSubMenu: "toggleSubMenu", + subMenuMouseState: "subMenuMouseState" + }, + exportAs: ["nzSubmenuTitle"], + standalone: true, + features: [ɵɵStandaloneFeature], + attrs: _c4, + ngContentSelectors: _c1, + decls: 6, + vars: 4, + consts: [["nz-icon", "", 3, "nzType", 4, "ngIf"], [4, "nzStringTemplateOutlet"], ["class", "ant-dropdown-menu-submenu-expand-icon", 3, "ngSwitch", 4, "ngIf", "ngIfElse"], ["notDropdownTpl", ""], ["nz-icon", "", 3, "nzType"], [1, "ant-menu-title-content"], [1, "ant-dropdown-menu-submenu-expand-icon", 3, "ngSwitch"], ["nz-icon", "", "nzType", "left", "class", "ant-dropdown-menu-submenu-arrow-icon", 4, "ngSwitchCase"], ["nz-icon", "", "nzType", "right", "class", "ant-dropdown-menu-submenu-arrow-icon", 4, "ngSwitchDefault"], ["nz-icon", "", "nzType", "left", 1, "ant-dropdown-menu-submenu-arrow-icon"], ["nz-icon", "", "nzType", "right", 1, "ant-dropdown-menu-submenu-arrow-icon"], [1, "ant-menu-submenu-arrow"]], + template: function NzSubMenuTitleComponent_Template(rf, ctx) { + if (rf & 1) { + ɵɵprojectionDef(); + ɵɵtemplate(0, NzSubMenuTitleComponent_span_0_Template, 1, 1, "span", 0)(1, NzSubMenuTitleComponent_ng_container_1_Template, 3, 1, "ng-container", 1); + ɵɵprojection(2); + ɵɵtemplate(3, NzSubMenuTitleComponent_span_3_Template, 3, 2, "span", 2)(4, NzSubMenuTitleComponent_ng_template_4_Template, 1, 0, "ng-template", null, 3, ɵɵtemplateRefExtractor); + } + if (rf & 2) { + const _r4 = ɵɵreference(5); + ɵɵproperty("ngIf", ctx.nzIcon); + ɵɵadvance(1); + ɵɵproperty("nzStringTemplateOutlet", ctx.nzTitle); + ɵɵadvance(2); + ɵɵproperty("ngIf", ctx.isMenuInsideDropDown)("ngIfElse", _r4); + } + }, + dependencies: [NzIconModule, NzIconDirective, NgIf, NzOutletModule, NzStringTemplateOutletDirective, NgSwitch, NgSwitchCase, NgSwitchDefault], + encapsulation: 2, + changeDetection: 0 +}); +var NzSubMenuTitleComponent = _NzSubMenuTitleComponent; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzSubMenuTitleComponent, [{ + type: Component, + args: [{ + selector: "[nz-submenu-title]", + exportAs: "nzSubmenuTitle", + encapsulation: ViewEncapsulation$1.None, + changeDetection: ChangeDetectionStrategy.OnPush, + template: ` + + + {{ nzTitle }} + + + + + + + + + + `, + host: { + "[class.ant-dropdown-menu-submenu-title]": "isMenuInsideDropDown", + "[class.ant-menu-submenu-title]": "!isMenuInsideDropDown", + "[style.paddingLeft.px]": `dir === 'rtl' ? null : paddingLeft `, + "[style.paddingRight.px]": `dir === 'rtl' ? paddingLeft : null`, + "(click)": "clickTitle()", + "(mouseenter)": "setMouseState(true)", + "(mouseleave)": "setMouseState(false)" + }, + imports: [NzIconModule, NgIf, NzOutletModule, NgSwitch, NgSwitchCase, NgSwitchDefault], + standalone: true + }] + }], () => [{ + type: ChangeDetectorRef + }, { + type: Directionality, + decorators: [{ + type: Optional + }] + }], { + nzIcon: [{ + type: Input + }], + nzTitle: [{ + type: Input + }], + isMenuInsideDropDown: [{ + type: Input + }], + nzDisabled: [{ + type: Input + }], + paddingLeft: [{ + type: Input + }], + mode: [{ + type: Input + }], + toggleSubMenu: [{ + type: Output + }], + subMenuMouseState: [{ + type: Output + }] + }); +})(); +var listOfVerticalPositions = [POSITION_MAP.rightTop, POSITION_MAP.right, POSITION_MAP.rightBottom, POSITION_MAP.leftTop, POSITION_MAP.left, POSITION_MAP.leftBottom]; +var listOfHorizontalPositions = [POSITION_MAP.bottomLeft, POSITION_MAP.bottomRight, POSITION_MAP.topRight, POSITION_MAP.topLeft]; +var _NzSubMenuComponent = class _NzSubMenuComponent { + /** set the submenu host open status directly **/ + setOpenStateWithoutDebounce(open) { + this.nzSubmenuService.setOpenStateWithoutDebounce(open); + } + toggleSubMenu() { + this.setOpenStateWithoutDebounce(!this.nzOpen); + } + setMouseEnterState(value) { + this.isActive = value; + if (this.mode !== "inline") { + this.nzSubmenuService.setMouseEnterTitleOrOverlayState(value); + } + } + setTriggerWidth() { + if (this.mode === "horizontal" && this.platform.isBrowser && this.cdkOverlayOrigin && this.nzPlacement === "bottomLeft") { + this.triggerWidth = this.cdkOverlayOrigin.nativeElement.getBoundingClientRect().width; + } + } + onPositionChange(position) { + const placement = getPlacementName(position); + if (placement === "rightTop" || placement === "rightBottom" || placement === "right") { + this.position = "right"; + } else if (placement === "leftTop" || placement === "leftBottom" || placement === "left") { + this.position = "left"; + } + } + constructor(nzMenuService, cdr, nzSubmenuService, platform, isMenuInsideDropDown, directionality, noAnimation) { + this.nzMenuService = nzMenuService; + this.cdr = cdr; + this.nzSubmenuService = nzSubmenuService; + this.platform = platform; + this.isMenuInsideDropDown = isMenuInsideDropDown; + this.directionality = directionality; + this.noAnimation = noAnimation; + this.nzMenuClassName = ""; + this.nzPaddingLeft = null; + this.nzTitle = null; + this.nzIcon = null; + this.nzOpen = false; + this.nzDisabled = false; + this.nzPlacement = "bottomLeft"; + this.nzOpenChange = new EventEmitter(); + this.cdkOverlayOrigin = null; + this.listOfNzSubMenuComponent = null; + this.listOfNzMenuItemDirective = null; + this.level = this.nzSubmenuService.level; + this.destroy$ = new Subject(); + this.position = "right"; + this.triggerWidth = null; + this.theme = "light"; + this.mode = "vertical"; + this.inlinePaddingLeft = null; + this.overlayPositions = listOfVerticalPositions; + this.isSelected = false; + this.isActive = false; + this.dir = "ltr"; + } + ngOnInit() { + this.nzMenuService.theme$.pipe(takeUntil(this.destroy$)).subscribe((theme) => { + this.theme = theme; + this.cdr.markForCheck(); + }); + this.nzSubmenuService.mode$.pipe(takeUntil(this.destroy$)).subscribe((mode) => { + this.mode = mode; + if (mode === "horizontal") { + this.overlayPositions = [POSITION_MAP[this.nzPlacement], ...listOfHorizontalPositions]; + } else if (mode === "vertical") { + this.overlayPositions = listOfVerticalPositions; + } + this.cdr.markForCheck(); + }); + combineLatest([this.nzSubmenuService.mode$, this.nzMenuService.inlineIndent$]).pipe(takeUntil(this.destroy$)).subscribe(([mode, inlineIndent]) => { + this.inlinePaddingLeft = mode === "inline" ? this.level * inlineIndent : null; + this.cdr.markForCheck(); + }); + this.nzSubmenuService.isCurrentSubMenuOpen$.pipe(takeUntil(this.destroy$)).subscribe((open) => { + this.isActive = open; + if (open !== this.nzOpen) { + this.setTriggerWidth(); + this.nzOpen = open; + this.nzOpenChange.emit(this.nzOpen); + this.cdr.markForCheck(); + } + }); + this.dir = this.directionality.value; + this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction) => { + this.dir = direction; + this.cdr.markForCheck(); + }); + } + ngAfterContentInit() { + this.setTriggerWidth(); + const listOfNzMenuItemDirective = this.listOfNzMenuItemDirective; + const changes = listOfNzMenuItemDirective.changes; + const mergedObservable = merge(...[changes, ...listOfNzMenuItemDirective.map((menu) => menu.selected$)]); + changes.pipe(startWith(listOfNzMenuItemDirective), switchMap(() => mergedObservable), startWith(true), map(() => listOfNzMenuItemDirective.some((e) => e.nzSelected)), takeUntil(this.destroy$)).subscribe((selected) => { + this.isSelected = selected; + this.cdr.markForCheck(); + }); + } + ngOnChanges(changes) { + const { + nzOpen + } = changes; + if (nzOpen) { + this.nzSubmenuService.setOpenStateWithoutDebounce(this.nzOpen); + this.setTriggerWidth(); + } + } + ngOnDestroy() { + this.destroy$.next(); + this.destroy$.complete(); + } +}; +_NzSubMenuComponent.ɵfac = function NzSubMenuComponent_Factory(t) { + return new (t || _NzSubMenuComponent)(ɵɵdirectiveInject(MenuService), ɵɵdirectiveInject(ChangeDetectorRef), ɵɵdirectiveInject(NzSubmenuService), ɵɵdirectiveInject(Platform), ɵɵdirectiveInject(NzIsMenuInsideDropDownToken), ɵɵdirectiveInject(Directionality, 8), ɵɵdirectiveInject(NzNoAnimationDirective, 9)); +}; +_NzSubMenuComponent.ɵcmp = ɵɵdefineComponent({ + type: _NzSubMenuComponent, + selectors: [["", "nz-submenu", ""]], + contentQueries: function NzSubMenuComponent_ContentQueries(rf, ctx, dirIndex) { + if (rf & 1) { + ɵɵcontentQuery(dirIndex, _NzSubMenuComponent, 5); + ɵɵcontentQuery(dirIndex, NzMenuItemComponent, 5); + } + if (rf & 2) { + let _t; + ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.listOfNzSubMenuComponent = _t); + ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.listOfNzMenuItemDirective = _t); + } + }, + viewQuery: function NzSubMenuComponent_Query(rf, ctx) { + if (rf & 1) { + ɵɵviewQuery(CdkOverlayOrigin, 7, ElementRef); + } + if (rf & 2) { + let _t; + ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.cdkOverlayOrigin = _t.first); + } + }, + hostVars: 34, + hostBindings: function NzSubMenuComponent_HostBindings(rf, ctx) { + if (rf & 2) { + ɵɵclassProp("ant-dropdown-menu-submenu", ctx.isMenuInsideDropDown)("ant-dropdown-menu-submenu-disabled", ctx.isMenuInsideDropDown && ctx.nzDisabled)("ant-dropdown-menu-submenu-open", ctx.isMenuInsideDropDown && ctx.nzOpen)("ant-dropdown-menu-submenu-selected", ctx.isMenuInsideDropDown && ctx.isSelected)("ant-dropdown-menu-submenu-vertical", ctx.isMenuInsideDropDown && ctx.mode === "vertical")("ant-dropdown-menu-submenu-horizontal", ctx.isMenuInsideDropDown && ctx.mode === "horizontal")("ant-dropdown-menu-submenu-inline", ctx.isMenuInsideDropDown && ctx.mode === "inline")("ant-dropdown-menu-submenu-active", ctx.isMenuInsideDropDown && ctx.isActive)("ant-menu-submenu", !ctx.isMenuInsideDropDown)("ant-menu-submenu-disabled", !ctx.isMenuInsideDropDown && ctx.nzDisabled)("ant-menu-submenu-open", !ctx.isMenuInsideDropDown && ctx.nzOpen)("ant-menu-submenu-selected", !ctx.isMenuInsideDropDown && ctx.isSelected)("ant-menu-submenu-vertical", !ctx.isMenuInsideDropDown && ctx.mode === "vertical")("ant-menu-submenu-horizontal", !ctx.isMenuInsideDropDown && ctx.mode === "horizontal")("ant-menu-submenu-inline", !ctx.isMenuInsideDropDown && ctx.mode === "inline")("ant-menu-submenu-active", !ctx.isMenuInsideDropDown && ctx.isActive)("ant-menu-submenu-rtl", ctx.dir === "rtl"); + } + }, + inputs: { + nzMenuClassName: "nzMenuClassName", + nzPaddingLeft: "nzPaddingLeft", + nzTitle: "nzTitle", + nzIcon: "nzIcon", + nzOpen: "nzOpen", + nzDisabled: "nzDisabled", + nzPlacement: "nzPlacement" + }, + outputs: { + nzOpenChange: "nzOpenChange" + }, + exportAs: ["nzSubmenu"], + standalone: true, + features: [ɵɵProvidersFeature([NzSubmenuService]), ɵɵNgOnChangesFeature, ɵɵStandaloneFeature], + attrs: _c5, + ngContentSelectors: _c7, + decls: 8, + vars: 9, + consts: [["nz-submenu-title", "", "cdkOverlayOrigin", "", 3, "nzIcon", "nzTitle", "mode", "nzDisabled", "isMenuInsideDropDown", "paddingLeft", "subMenuMouseState", "toggleSubMenu"], ["origin", "cdkOverlayOrigin"], [4, "ngIf"], ["nz-submenu-inline-child", "", 3, "mode", "nzOpen", "nzNoAnimation", "menuClass", "templateOutlet", 4, "ngIf", "ngIfElse"], ["nonInlineTemplate", ""], ["subMenuTemplate", ""], ["nz-submenu-inline-child", "", 3, "mode", "nzOpen", "nzNoAnimation", "menuClass", "templateOutlet"], ["cdkConnectedOverlay", "", 3, "cdkConnectedOverlayPositions", "cdkConnectedOverlayOrigin", "cdkConnectedOverlayWidth", "cdkConnectedOverlayOpen", "cdkConnectedOverlayTransformOriginOn", "positionChange"], ["nz-submenu-none-inline-child", "", 3, "theme", "mode", "nzOpen", "position", "nzDisabled", "isMenuInsideDropDown", "templateOutlet", "menuClass", "nzNoAnimation", "subMenuMouseState"]], + template: function NzSubMenuComponent_Template(rf, ctx) { + if (rf & 1) { + ɵɵprojectionDef(_c6); + ɵɵelementStart(0, "div", 0, 1); + ɵɵlistener("subMenuMouseState", function NzSubMenuComponent_Template_div_subMenuMouseState_0_listener($event) { + return ctx.setMouseEnterState($event); + })("toggleSubMenu", function NzSubMenuComponent_Template_div_toggleSubMenu_0_listener() { + return ctx.toggleSubMenu(); + }); + ɵɵtemplate(2, NzSubMenuComponent_ng_content_2_Template, 1, 0, "ng-content", 2); + ɵɵelementEnd(); + ɵɵtemplate(3, NzSubMenuComponent_div_3_Template, 1, 6, "div", 3)(4, NzSubMenuComponent_ng_template_4_Template, 1, 5, "ng-template", null, 4, ɵɵtemplateRefExtractor)(6, NzSubMenuComponent_ng_template_6_Template, 1, 0, "ng-template", null, 5, ɵɵtemplateRefExtractor); + } + if (rf & 2) { + const _r4 = ɵɵreference(5); + ɵɵproperty("nzIcon", ctx.nzIcon)("nzTitle", ctx.nzTitle)("mode", ctx.mode)("nzDisabled", ctx.nzDisabled)("isMenuInsideDropDown", ctx.isMenuInsideDropDown)("paddingLeft", ctx.nzPaddingLeft || ctx.inlinePaddingLeft); + ɵɵadvance(2); + ɵɵproperty("ngIf", !ctx.nzTitle); + ɵɵadvance(1); + ɵɵproperty("ngIf", ctx.mode === "inline")("ngIfElse", _r4); + } + }, + dependencies: [NzSubMenuTitleComponent, NzSubmenuInlineChildComponent, NgIf, NzNoAnimationDirective, NzSubmenuNoneInlineChildComponent, OverlayModule, CdkConnectedOverlay, CdkOverlayOrigin], + encapsulation: 2, + changeDetection: 0 +}); +var NzSubMenuComponent = _NzSubMenuComponent; +__decorate([InputBoolean()], NzSubMenuComponent.prototype, "nzOpen", void 0); +__decorate([InputBoolean()], NzSubMenuComponent.prototype, "nzDisabled", void 0); +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzSubMenuComponent, [{ + type: Component, + args: [{ + selector: "[nz-submenu]", + exportAs: "nzSubmenu", + providers: [NzSubmenuService], + encapsulation: ViewEncapsulation$1.None, + changeDetection: ChangeDetectionStrategy.OnPush, + preserveWhitespaces: false, + template: ` +
+ +
+
+ + +
+
+
+ + + + + `, + host: { + "[class.ant-dropdown-menu-submenu]": `isMenuInsideDropDown`, + "[class.ant-dropdown-menu-submenu-disabled]": `isMenuInsideDropDown && nzDisabled`, + "[class.ant-dropdown-menu-submenu-open]": `isMenuInsideDropDown && nzOpen`, + "[class.ant-dropdown-menu-submenu-selected]": `isMenuInsideDropDown && isSelected`, + "[class.ant-dropdown-menu-submenu-vertical]": `isMenuInsideDropDown && mode === 'vertical'`, + "[class.ant-dropdown-menu-submenu-horizontal]": `isMenuInsideDropDown && mode === 'horizontal'`, + "[class.ant-dropdown-menu-submenu-inline]": `isMenuInsideDropDown && mode === 'inline'`, + "[class.ant-dropdown-menu-submenu-active]": `isMenuInsideDropDown && isActive`, + "[class.ant-menu-submenu]": `!isMenuInsideDropDown`, + "[class.ant-menu-submenu-disabled]": `!isMenuInsideDropDown && nzDisabled`, + "[class.ant-menu-submenu-open]": `!isMenuInsideDropDown && nzOpen`, + "[class.ant-menu-submenu-selected]": `!isMenuInsideDropDown && isSelected`, + "[class.ant-menu-submenu-vertical]": `!isMenuInsideDropDown && mode === 'vertical'`, + "[class.ant-menu-submenu-horizontal]": `!isMenuInsideDropDown && mode === 'horizontal'`, + "[class.ant-menu-submenu-inline]": `!isMenuInsideDropDown && mode === 'inline'`, + "[class.ant-menu-submenu-active]": `!isMenuInsideDropDown && isActive`, + "[class.ant-menu-submenu-rtl]": `dir === 'rtl'` + }, + imports: [NzSubMenuTitleComponent, NzSubmenuInlineChildComponent, NgIf, NzNoAnimationDirective, NzSubmenuNoneInlineChildComponent, OverlayModule], + standalone: true + }] + }], () => [{ + type: MenuService + }, { + type: ChangeDetectorRef + }, { + type: NzSubmenuService + }, { + type: Platform + }, { + type: void 0, + decorators: [{ + type: Inject, + args: [NzIsMenuInsideDropDownToken] + }] + }, { + type: Directionality, + decorators: [{ + type: Optional + }] + }, { + type: NzNoAnimationDirective, + decorators: [{ + type: Host + }, { + type: Optional + }] + }], { + nzMenuClassName: [{ + type: Input + }], + nzPaddingLeft: [{ + type: Input + }], + nzTitle: [{ + type: Input + }], + nzIcon: [{ + type: Input + }], + nzOpen: [{ + type: Input + }], + nzDisabled: [{ + type: Input + }], + nzPlacement: [{ + type: Input + }], + nzOpenChange: [{ + type: Output + }], + cdkOverlayOrigin: [{ + type: ViewChild, + args: [CdkOverlayOrigin, { + static: true, + read: ElementRef + }] + }], + listOfNzSubMenuComponent: [{ + type: ContentChildren, + args: [forwardRef(() => NzSubMenuComponent), { + descendants: true + }] + }], + listOfNzMenuItemDirective: [{ + type: ContentChildren, + args: [NzMenuItemComponent, { + descendants: true + }] + }] + }); +})(); +function MenuServiceFactory() { + const serviceInsideDropDown = inject(MenuService, { + skipSelf: true, + optional: true + }); + const serviceOutsideDropDown = inject(NzMenuServiceLocalToken); + return serviceInsideDropDown ?? serviceOutsideDropDown; +} +function MenuDropDownTokenFactory() { + const isMenuInsideDropDownToken = inject(NzIsMenuInsideDropDownToken, { + skipSelf: true, + optional: true + }); + return isMenuInsideDropDownToken ?? false; +} +var _NzMenuDirective = class _NzMenuDirective { + setInlineCollapsed(inlineCollapsed) { + this.nzInlineCollapsed = inlineCollapsed; + this.inlineCollapsed$.next(inlineCollapsed); + } + updateInlineCollapse() { + if (this.listOfNzMenuItemDirective) { + if (this.nzInlineCollapsed) { + this.listOfOpenedNzSubMenuComponent = this.listOfNzSubMenuComponent.filter((submenu) => submenu.nzOpen); + this.listOfNzSubMenuComponent.forEach((submenu) => submenu.setOpenStateWithoutDebounce(false)); + } else { + this.listOfOpenedNzSubMenuComponent.forEach((submenu) => submenu.setOpenStateWithoutDebounce(true)); + this.listOfOpenedNzSubMenuComponent = []; + } + } + } + constructor(nzMenuService, isMenuInsideDropDown, cdr, directionality) { + this.nzMenuService = nzMenuService; + this.isMenuInsideDropDown = isMenuInsideDropDown; + this.cdr = cdr; + this.directionality = directionality; + this.nzInlineIndent = 24; + this.nzTheme = "light"; + this.nzMode = "vertical"; + this.nzInlineCollapsed = false; + this.nzSelectable = !this.isMenuInsideDropDown; + this.nzClick = new EventEmitter(); + this.actualMode = "vertical"; + this.dir = "ltr"; + this.inlineCollapsed$ = new BehaviorSubject(this.nzInlineCollapsed); + this.mode$ = new BehaviorSubject(this.nzMode); + this.destroy$ = new Subject(); + this.listOfOpenedNzSubMenuComponent = []; + } + ngOnInit() { + combineLatest([this.inlineCollapsed$, this.mode$]).pipe(takeUntil(this.destroy$)).subscribe(([inlineCollapsed, mode]) => { + this.actualMode = inlineCollapsed ? "vertical" : mode; + this.nzMenuService.setMode(this.actualMode); + this.cdr.markForCheck(); + }); + this.nzMenuService.descendantMenuItemClick$.pipe(takeUntil(this.destroy$)).subscribe((menu) => { + this.nzClick.emit(menu); + if (this.nzSelectable && !menu.nzMatchRouter) { + this.listOfNzMenuItemDirective.forEach((item) => item.setSelectedState(item === menu)); + } + }); + this.dir = this.directionality.value; + this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction) => { + this.dir = direction; + this.nzMenuService.setMode(this.actualMode); + this.cdr.markForCheck(); + }); + } + ngAfterContentInit() { + this.inlineCollapsed$.pipe(takeUntil(this.destroy$)).subscribe(() => { + this.updateInlineCollapse(); + this.cdr.markForCheck(); + }); + } + ngOnChanges(changes) { + const { + nzInlineCollapsed, + nzInlineIndent, + nzTheme, + nzMode + } = changes; + if (nzInlineCollapsed) { + this.inlineCollapsed$.next(this.nzInlineCollapsed); + } + if (nzInlineIndent) { + this.nzMenuService.setInlineIndent(this.nzInlineIndent); + } + if (nzTheme) { + this.nzMenuService.setTheme(this.nzTheme); + } + if (nzMode) { + this.mode$.next(this.nzMode); + if (!changes.nzMode.isFirstChange() && this.listOfNzSubMenuComponent) { + this.listOfNzSubMenuComponent.forEach((submenu) => submenu.setOpenStateWithoutDebounce(false)); + } + } + } + ngOnDestroy() { + this.destroy$.next(true); + this.destroy$.complete(); + } +}; +_NzMenuDirective.ɵfac = function NzMenuDirective_Factory(t) { + return new (t || _NzMenuDirective)(ɵɵdirectiveInject(MenuService), ɵɵdirectiveInject(NzIsMenuInsideDropDownToken), ɵɵdirectiveInject(ChangeDetectorRef), ɵɵdirectiveInject(Directionality, 8)); +}; +_NzMenuDirective.ɵdir = ɵɵdefineDirective({ + type: _NzMenuDirective, + selectors: [["", "nz-menu", ""]], + contentQueries: function NzMenuDirective_ContentQueries(rf, ctx, dirIndex) { + if (rf & 1) { + ɵɵcontentQuery(dirIndex, NzMenuItemComponent, 5); + ɵɵcontentQuery(dirIndex, NzSubMenuComponent, 5); + } + if (rf & 2) { + let _t; + ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.listOfNzMenuItemDirective = _t); + ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.listOfNzSubMenuComponent = _t); + } + }, + hostVars: 34, + hostBindings: function NzMenuDirective_HostBindings(rf, ctx) { + if (rf & 2) { + ɵɵclassProp("ant-dropdown-menu", ctx.isMenuInsideDropDown)("ant-dropdown-menu-root", ctx.isMenuInsideDropDown)("ant-dropdown-menu-light", ctx.isMenuInsideDropDown && ctx.nzTheme === "light")("ant-dropdown-menu-dark", ctx.isMenuInsideDropDown && ctx.nzTheme === "dark")("ant-dropdown-menu-vertical", ctx.isMenuInsideDropDown && ctx.actualMode === "vertical")("ant-dropdown-menu-horizontal", ctx.isMenuInsideDropDown && ctx.actualMode === "horizontal")("ant-dropdown-menu-inline", ctx.isMenuInsideDropDown && ctx.actualMode === "inline")("ant-dropdown-menu-inline-collapsed", ctx.isMenuInsideDropDown && ctx.nzInlineCollapsed)("ant-menu", !ctx.isMenuInsideDropDown)("ant-menu-root", !ctx.isMenuInsideDropDown)("ant-menu-light", !ctx.isMenuInsideDropDown && ctx.nzTheme === "light")("ant-menu-dark", !ctx.isMenuInsideDropDown && ctx.nzTheme === "dark")("ant-menu-vertical", !ctx.isMenuInsideDropDown && ctx.actualMode === "vertical")("ant-menu-horizontal", !ctx.isMenuInsideDropDown && ctx.actualMode === "horizontal")("ant-menu-inline", !ctx.isMenuInsideDropDown && ctx.actualMode === "inline")("ant-menu-inline-collapsed", !ctx.isMenuInsideDropDown && ctx.nzInlineCollapsed)("ant-menu-rtl", ctx.dir === "rtl"); + } + }, + inputs: { + nzInlineIndent: "nzInlineIndent", + nzTheme: "nzTheme", + nzMode: "nzMode", + nzInlineCollapsed: "nzInlineCollapsed", + nzSelectable: "nzSelectable" + }, + outputs: { + nzClick: "nzClick" + }, + exportAs: ["nzMenu"], + standalone: true, + features: [ɵɵProvidersFeature([ + { + provide: NzMenuServiceLocalToken, + useClass: MenuService + }, + /** use the top level service **/ + { + provide: MenuService, + useFactory: MenuServiceFactory + }, + /** check if menu inside dropdown-menu component **/ + { + provide: NzIsMenuInsideDropDownToken, + useFactory: MenuDropDownTokenFactory + } + ]), ɵɵNgOnChangesFeature] +}); +var NzMenuDirective = _NzMenuDirective; +__decorate([InputBoolean()], NzMenuDirective.prototype, "nzInlineCollapsed", void 0); +__decorate([InputBoolean()], NzMenuDirective.prototype, "nzSelectable", void 0); +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzMenuDirective, [{ + type: Directive, + args: [{ + selector: "[nz-menu]", + exportAs: "nzMenu", + providers: [ + { + provide: NzMenuServiceLocalToken, + useClass: MenuService + }, + /** use the top level service **/ + { + provide: MenuService, + useFactory: MenuServiceFactory + }, + /** check if menu inside dropdown-menu component **/ + { + provide: NzIsMenuInsideDropDownToken, + useFactory: MenuDropDownTokenFactory + } + ], + host: { + "[class.ant-dropdown-menu]": `isMenuInsideDropDown`, + "[class.ant-dropdown-menu-root]": `isMenuInsideDropDown`, + "[class.ant-dropdown-menu-light]": `isMenuInsideDropDown && nzTheme === 'light'`, + "[class.ant-dropdown-menu-dark]": `isMenuInsideDropDown && nzTheme === 'dark'`, + "[class.ant-dropdown-menu-vertical]": `isMenuInsideDropDown && actualMode === 'vertical'`, + "[class.ant-dropdown-menu-horizontal]": `isMenuInsideDropDown && actualMode === 'horizontal'`, + "[class.ant-dropdown-menu-inline]": `isMenuInsideDropDown && actualMode === 'inline'`, + "[class.ant-dropdown-menu-inline-collapsed]": `isMenuInsideDropDown && nzInlineCollapsed`, + "[class.ant-menu]": `!isMenuInsideDropDown`, + "[class.ant-menu-root]": `!isMenuInsideDropDown`, + "[class.ant-menu-light]": `!isMenuInsideDropDown && nzTheme === 'light'`, + "[class.ant-menu-dark]": `!isMenuInsideDropDown && nzTheme === 'dark'`, + "[class.ant-menu-vertical]": `!isMenuInsideDropDown && actualMode === 'vertical'`, + "[class.ant-menu-horizontal]": `!isMenuInsideDropDown && actualMode === 'horizontal'`, + "[class.ant-menu-inline]": `!isMenuInsideDropDown && actualMode === 'inline'`, + "[class.ant-menu-inline-collapsed]": `!isMenuInsideDropDown && nzInlineCollapsed`, + "[class.ant-menu-rtl]": `dir === 'rtl'` + }, + standalone: true + }] + }], () => [{ + type: MenuService + }, { + type: void 0, + decorators: [{ + type: Inject, + args: [NzIsMenuInsideDropDownToken] + }] + }, { + type: ChangeDetectorRef + }, { + type: Directionality, + decorators: [{ + type: Optional + }] + }], { + listOfNzMenuItemDirective: [{ + type: ContentChildren, + args: [NzMenuItemComponent, { + descendants: true + }] + }], + listOfNzSubMenuComponent: [{ + type: ContentChildren, + args: [NzSubMenuComponent, { + descendants: true + }] + }], + nzInlineIndent: [{ + type: Input + }], + nzTheme: [{ + type: Input + }], + nzMode: [{ + type: Input + }], + nzInlineCollapsed: [{ + type: Input + }], + nzSelectable: [{ + type: Input + }], + nzClick: [{ + type: Output + }] + }); +})(); +function MenuGroupFactory() { + const isMenuInsideDropDownToken = inject(NzIsMenuInsideDropDownToken, { + optional: true, + skipSelf: true + }); + return isMenuInsideDropDownToken ?? false; +} +var _NzMenuGroupComponent = class _NzMenuGroupComponent { + constructor(elementRef, renderer, isMenuInsideDropDown) { + this.elementRef = elementRef; + this.renderer = renderer; + this.isMenuInsideDropDown = isMenuInsideDropDown; + const className = this.isMenuInsideDropDown ? "ant-dropdown-menu-item-group" : "ant-menu-item-group"; + this.renderer.addClass(elementRef.nativeElement, className); + } + ngAfterViewInit() { + const ulElement = this.titleElement.nativeElement.nextElementSibling; + if (ulElement) { + const className = this.isMenuInsideDropDown ? "ant-dropdown-menu-item-group-list" : "ant-menu-item-group-list"; + this.renderer.addClass(ulElement, className); + } + } +}; +_NzMenuGroupComponent.ɵfac = function NzMenuGroupComponent_Factory(t) { + return new (t || _NzMenuGroupComponent)(ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(Renderer2), ɵɵdirectiveInject(NzIsMenuInsideDropDownToken)); +}; +_NzMenuGroupComponent.ɵcmp = ɵɵdefineComponent({ + type: _NzMenuGroupComponent, + selectors: [["", "nz-menu-group", ""]], + viewQuery: function NzMenuGroupComponent_Query(rf, ctx) { + if (rf & 1) { + ɵɵviewQuery(_c8, 5); + } + if (rf & 2) { + let _t; + ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.titleElement = _t.first); + } + }, + inputs: { + nzTitle: "nzTitle" + }, + exportAs: ["nzMenuGroup"], + standalone: true, + features: [ɵɵProvidersFeature([ + /** check if menu inside dropdown-menu component **/ + { + provide: NzIsMenuInsideDropDownToken, + useFactory: MenuGroupFactory + } + ]), ɵɵStandaloneFeature], + attrs: _c9, + ngContentSelectors: _c11, + decls: 5, + vars: 6, + consts: [["titleElement", ""], [4, "nzStringTemplateOutlet"], [4, "ngIf"]], + template: function NzMenuGroupComponent_Template(rf, ctx) { + if (rf & 1) { + ɵɵprojectionDef(_c10); + ɵɵelementStart(0, "div", null, 0); + ɵɵtemplate(2, NzMenuGroupComponent_ng_container_2_Template, 2, 1, "ng-container", 1)(3, NzMenuGroupComponent_ng_content_3_Template, 1, 0, "ng-content", 2); + ɵɵelementEnd(); + ɵɵprojection(4); + } + if (rf & 2) { + ɵɵclassProp("ant-menu-item-group-title", !ctx.isMenuInsideDropDown)("ant-dropdown-menu-item-group-title", ctx.isMenuInsideDropDown); + ɵɵadvance(2); + ɵɵproperty("nzStringTemplateOutlet", ctx.nzTitle); + ɵɵadvance(1); + ɵɵproperty("ngIf", !ctx.nzTitle); + } + }, + dependencies: [NzOutletModule, NzStringTemplateOutletDirective, NgIf], + encapsulation: 2, + changeDetection: 0 +}); +var NzMenuGroupComponent = _NzMenuGroupComponent; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzMenuGroupComponent, [{ + type: Component, + args: [{ + selector: "[nz-menu-group]", + exportAs: "nzMenuGroup", + changeDetection: ChangeDetectionStrategy.OnPush, + providers: [ + /** check if menu inside dropdown-menu component **/ + { + provide: NzIsMenuInsideDropDownToken, + useFactory: MenuGroupFactory + } + ], + encapsulation: ViewEncapsulation$1.None, + template: ` +
+ {{ nzTitle }} + +
+ + `, + preserveWhitespaces: false, + imports: [NzOutletModule, NgIf], + standalone: true + }] + }], () => [{ + type: ElementRef + }, { + type: Renderer2 + }, { + type: void 0, + decorators: [{ + type: Inject, + args: [NzIsMenuInsideDropDownToken] + }] + }], { + nzTitle: [{ + type: Input + }], + titleElement: [{ + type: ViewChild, + args: ["titleElement"] + }] + }); +})(); +var _NzMenuDividerDirective = class _NzMenuDividerDirective { + constructor(elementRef) { + this.elementRef = elementRef; + } +}; +_NzMenuDividerDirective.ɵfac = function NzMenuDividerDirective_Factory(t) { + return new (t || _NzMenuDividerDirective)(ɵɵdirectiveInject(ElementRef)); +}; +_NzMenuDividerDirective.ɵdir = ɵɵdefineDirective({ + type: _NzMenuDividerDirective, + selectors: [["", "nz-menu-divider", ""]], + hostAttrs: [1, "ant-dropdown-menu-item-divider"], + exportAs: ["nzMenuDivider"], + standalone: true +}); +var NzMenuDividerDirective = _NzMenuDividerDirective; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzMenuDividerDirective, [{ + type: Directive, + args: [{ + selector: "[nz-menu-divider]", + exportAs: "nzMenuDivider", + host: { + class: "ant-dropdown-menu-item-divider" + }, + standalone: true + }] + }], () => [{ + type: ElementRef + }], null); +})(); +var _NzMenuModule = class _NzMenuModule { +}; +_NzMenuModule.ɵfac = function NzMenuModule_Factory(t) { + return new (t || _NzMenuModule)(); +}; +_NzMenuModule.ɵmod = ɵɵdefineNgModule({ + type: _NzMenuModule, + imports: [NzMenuDirective, NzMenuItemComponent, NzSubMenuComponent, NzMenuDividerDirective, NzMenuGroupComponent, NzSubMenuTitleComponent, NzSubmenuInlineChildComponent, NzSubmenuNoneInlineChildComponent], + exports: [NzMenuDirective, NzMenuItemComponent, NzSubMenuComponent, NzMenuDividerDirective, NzMenuGroupComponent] +}); +_NzMenuModule.ɵinj = ɵɵdefineInjector({ + imports: [NzSubMenuComponent, NzMenuGroupComponent, NzSubMenuTitleComponent] +}); +var NzMenuModule = _NzMenuModule; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzMenuModule, [{ + type: NgModule, + args: [{ + imports: [NzMenuDirective, NzMenuItemComponent, NzSubMenuComponent, NzMenuDividerDirective, NzMenuGroupComponent, NzSubMenuTitleComponent, NzSubmenuInlineChildComponent, NzSubmenuNoneInlineChildComponent], + exports: [NzMenuDirective, NzMenuItemComponent, NzSubMenuComponent, NzMenuDividerDirective, NzMenuGroupComponent] + }] + }], null, null); +})(); + +export { + NzIsMenuInsideDropDownToken, + NzMenuServiceLocalToken, + MenuService, + NzSubmenuService, + NzMenuItemComponent, + NzSubmenuInlineChildComponent, + NzSubmenuNoneInlineChildComponent, + NzSubMenuTitleComponent, + NzSubMenuComponent, + MenuServiceFactory, + MenuDropDownTokenFactory, + NzMenuDirective, + MenuGroupFactory, + NzMenuGroupComponent, + NzMenuDividerDirective, + NzMenuModule +}; +//# sourceMappingURL=chunk-WKTPWT5U.js.map diff --git a/.angular/cache/17.0.7/vite/deps/chunk-WKTPWT5U.js.map b/.angular/cache/17.0.7/vite/deps/chunk-WKTPWT5U.js.map new file mode 100644 index 0000000..d396f7c --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/chunk-WKTPWT5U.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-menu.mjs"], + "sourcesContent": ["import { __decorate } from 'tslib';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, SkipSelf, Optional, Inject, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ContentChildren, EventEmitter, Output, ElementRef, Host, ViewChild, forwardRef, inject, Directive, NgModule } from '@angular/core';\nimport { Subject, BehaviorSubject, merge, combineLatest } from 'rxjs';\nimport { map, mergeMap, filter, mapTo, auditTime, distinctUntilChanged, takeUntil, startWith, switchMap } from 'rxjs/operators';\nimport { InputBoolean } from 'ng-zorro-antd/core/util';\nimport * as i4 from '@angular/router';\nimport { NavigationEnd, RouterLink } from '@angular/router';\nimport * as i1 from '@angular/cdk/bidi';\nimport * as i6 from '@angular/cdk/overlay';\nimport { CdkOverlayOrigin, OverlayModule } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet, NgClass, NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault } from '@angular/common';\nimport * as i5 from 'ng-zorro-antd/core/no-animation';\nimport { NzNoAnimationDirective } from 'ng-zorro-antd/core/no-animation';\nimport { POSITION_MAP, getPlacementName } from 'ng-zorro-antd/core/overlay';\nimport { collapseMotion, zoomBigMotion, slideMotion } from 'ng-zorro-antd/core/animation';\nimport * as i3 from 'ng-zorro-antd/core/outlet';\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport * as i2 from 'ng-zorro-antd/icon';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport * as i3$1 from '@angular/cdk/platform';\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst _c0 = [\"nz-menu-item\", \"\"];\nconst _c1 = [\"*\"];\nconst _c2 = [\"nz-submenu-inline-child\", \"\"];\nfunction NzSubmenuInlineChildComponent_ng_template_0_Template(rf, ctx) {}\nconst _c3 = [\"nz-submenu-none-inline-child\", \"\"];\nfunction NzSubmenuNoneInlineChildComponent_ng_template_1_Template(rf, ctx) {}\nconst _c4 = [\"nz-submenu-title\", \"\"];\nfunction NzSubMenuTitleComponent_span_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 4);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"nzType\", ctx_r0.nzIcon);\n }\n}\nfunction NzSubMenuTitleComponent_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"span\", 5);\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd();\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(ctx_r1.nzTitle);\n }\n}\nfunction NzSubMenuTitleComponent_span_3_span_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 9);\n }\n}\nfunction NzSubMenuTitleComponent_span_3_span_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 10);\n }\n}\nfunction NzSubMenuTitleComponent_span_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 6);\n i0.ɵɵtemplate(1, NzSubMenuTitleComponent_span_3_span_1_Template, 1, 0, \"span\", 7)(2, NzSubMenuTitleComponent_span_3_span_2_Template, 1, 0, \"span\", 8);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngSwitch\", ctx_r2.dir);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngSwitchCase\", \"rtl\");\n }\n}\nfunction NzSubMenuTitleComponent_ng_template_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 11);\n }\n}\nconst _c5 = [\"nz-submenu\", \"\"];\nfunction NzSubMenuComponent_ng_content_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojection(0, 0, [\"*ngIf\", \"!nzTitle\"]);\n }\n}\nfunction NzSubMenuComponent_div_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 6);\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n const _r6 = i0.ɵɵreference(7);\n i0.ɵɵproperty(\"mode\", ctx_r2.mode)(\"nzOpen\", ctx_r2.nzOpen)(\"@.disabled\", !!(ctx_r2.noAnimation == null ? null : ctx_r2.noAnimation.nzNoAnimation))(\"nzNoAnimation\", ctx_r2.noAnimation == null ? null : ctx_r2.noAnimation.nzNoAnimation)(\"menuClass\", ctx_r2.nzMenuClassName)(\"templateOutlet\", _r6);\n }\n}\nfunction NzSubMenuComponent_ng_template_4_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r9 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 8);\n i0.ɵɵlistener(\"subMenuMouseState\", function NzSubMenuComponent_ng_template_4_ng_template_0_Template_div_subMenuMouseState_0_listener($event) {\n i0.ɵɵrestoreView(_r9);\n const ctx_r8 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r8.setMouseEnterState($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r7 = i0.ɵɵnextContext(2);\n const _r6 = i0.ɵɵreference(7);\n i0.ɵɵproperty(\"theme\", ctx_r7.theme)(\"mode\", ctx_r7.mode)(\"nzOpen\", ctx_r7.nzOpen)(\"position\", ctx_r7.position)(\"nzDisabled\", ctx_r7.nzDisabled)(\"isMenuInsideDropDown\", ctx_r7.isMenuInsideDropDown)(\"templateOutlet\", _r6)(\"menuClass\", ctx_r7.nzMenuClassName)(\"@.disabled\", !!(ctx_r7.noAnimation == null ? null : ctx_r7.noAnimation.nzNoAnimation))(\"nzNoAnimation\", ctx_r7.noAnimation == null ? null : ctx_r7.noAnimation.nzNoAnimation);\n }\n}\nfunction NzSubMenuComponent_ng_template_4_Template(rf, ctx) {\n if (rf & 1) {\n const _r11 = i0.ɵɵgetCurrentView();\n i0.ɵɵtemplate(0, NzSubMenuComponent_ng_template_4_ng_template_0_Template, 1, 10, \"ng-template\", 7);\n i0.ɵɵlistener(\"positionChange\", function NzSubMenuComponent_ng_template_4_Template_ng_template_positionChange_0_listener($event) {\n i0.ɵɵrestoreView(_r11);\n const ctx_r10 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r10.onPositionChange($event));\n });\n }\n if (rf & 2) {\n const ctx_r3 = i0.ɵɵnextContext();\n const _r0 = i0.ɵɵreference(1);\n i0.ɵɵproperty(\"cdkConnectedOverlayPositions\", ctx_r3.overlayPositions)(\"cdkConnectedOverlayOrigin\", _r0)(\"cdkConnectedOverlayWidth\", ctx_r3.triggerWidth)(\"cdkConnectedOverlayOpen\", ctx_r3.nzOpen)(\"cdkConnectedOverlayTransformOriginOn\", \".ant-menu-submenu\");\n }\n}\nfunction NzSubMenuComponent_ng_template_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojection(0, 1);\n }\n}\nconst _c6 = [[[\"\", \"title\", \"\"]], \"*\"];\nconst _c7 = [\"[title]\", \"*\"];\nconst _c8 = [\"titleElement\"];\nconst _c9 = [\"nz-menu-group\", \"\"];\nfunction NzMenuGroupComponent_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtext(1);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(1);\n i0.ɵɵtextInterpolate(ctx_r1.nzTitle);\n }\n}\nfunction NzMenuGroupComponent_ng_content_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojection(0, 1, [\"*ngIf\", \"!nzTitle\"]);\n }\n}\nconst _c10 = [\"*\", [[\"\", \"title\", \"\"]]];\nconst _c11 = [\"*\", \"[title]\"];\nconst NzIsMenuInsideDropDownToken = new InjectionToken('NzIsInDropDownMenuToken');\nconst NzMenuServiceLocalToken = new InjectionToken('NzMenuServiceLocalToken');\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass MenuService {\n constructor() {\n /** all descendant menu click **/\n this.descendantMenuItemClick$ = new Subject();\n /** child menu item click **/\n this.childMenuItemClick$ = new Subject();\n this.theme$ = new BehaviorSubject('light');\n this.mode$ = new BehaviorSubject('vertical');\n this.inlineIndent$ = new BehaviorSubject(24);\n this.isChildSubMenuOpen$ = new BehaviorSubject(false);\n }\n onDescendantMenuItemClick(menu) {\n this.descendantMenuItemClick$.next(menu);\n }\n onChildMenuItemClick(menu) {\n this.childMenuItemClick$.next(menu);\n }\n setMode(mode) {\n this.mode$.next(mode);\n }\n setTheme(theme) {\n this.theme$.next(theme);\n }\n setInlineIndent(indent) {\n this.inlineIndent$.next(indent);\n }\n static {\n this.ɵfac = function MenuService_Factory(t) {\n return new (t || MenuService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MenuService,\n factory: MenuService.ɵfac\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MenuService, [{\n type: Injectable\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzSubmenuService {\n /**\n * menu item inside submenu clicked\n *\n * @param menu\n */\n onChildMenuItemClick(menu) {\n this.childMenuItemClick$.next(menu);\n }\n setOpenStateWithoutDebounce(value) {\n this.isCurrentSubMenuOpen$.next(value);\n }\n setMouseEnterTitleOrOverlayState(value) {\n this.isMouseEnterTitleOrOverlay$.next(value);\n }\n constructor(nzHostSubmenuService, nzMenuService, isMenuInsideDropDown) {\n this.nzHostSubmenuService = nzHostSubmenuService;\n this.nzMenuService = nzMenuService;\n this.isMenuInsideDropDown = isMenuInsideDropDown;\n this.mode$ = this.nzMenuService.mode$.pipe(map(mode => {\n if (mode === 'inline') {\n return 'inline';\n /** if inside another submenu, set the mode to vertical **/\n } else if (mode === 'vertical' || this.nzHostSubmenuService) {\n return 'vertical';\n } else {\n return 'horizontal';\n }\n }));\n this.level = 1;\n this.isCurrentSubMenuOpen$ = new BehaviorSubject(false);\n this.isChildSubMenuOpen$ = new BehaviorSubject(false);\n /** submenu title & overlay mouse enter status **/\n this.isMouseEnterTitleOrOverlay$ = new Subject();\n this.childMenuItemClick$ = new Subject();\n this.destroy$ = new Subject();\n if (this.nzHostSubmenuService) {\n this.level = this.nzHostSubmenuService.level + 1;\n }\n /** close if menu item clicked **/\n const isClosedByMenuItemClick = this.childMenuItemClick$.pipe(mergeMap(() => this.mode$), filter(mode => mode !== 'inline' || this.isMenuInsideDropDown), mapTo(false));\n const isCurrentSubmenuOpen$ = merge(this.isMouseEnterTitleOrOverlay$, isClosedByMenuItemClick);\n /** combine the child submenu status with current submenu status to calculate host submenu open **/\n const isSubMenuOpenWithDebounce$ = combineLatest([this.isChildSubMenuOpen$, isCurrentSubmenuOpen$]).pipe(map(([isChildSubMenuOpen, isCurrentSubmenuOpen]) => isChildSubMenuOpen || isCurrentSubmenuOpen), auditTime(150), distinctUntilChanged(), takeUntil(this.destroy$));\n isSubMenuOpenWithDebounce$.pipe(distinctUntilChanged()).subscribe(data => {\n this.setOpenStateWithoutDebounce(data);\n if (this.nzHostSubmenuService) {\n /** set parent submenu's child submenu open status **/\n this.nzHostSubmenuService.isChildSubMenuOpen$.next(data);\n } else {\n this.nzMenuService.isChildSubMenuOpen$.next(data);\n }\n });\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n static {\n this.ɵfac = function NzSubmenuService_Factory(t) {\n return new (t || NzSubmenuService)(i0.ɵɵinject(NzSubmenuService, 12), i0.ɵɵinject(MenuService), i0.ɵɵinject(NzIsMenuInsideDropDownToken));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NzSubmenuService,\n factory: NzSubmenuService.ɵfac\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzSubmenuService, [{\n type: Injectable\n }], () => [{\n type: NzSubmenuService,\n decorators: [{\n type: SkipSelf\n }, {\n type: Optional\n }]\n }, {\n type: MenuService\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [NzIsMenuInsideDropDownToken]\n }]\n }], null);\n})();\nclass NzMenuItemComponent {\n /** clear all item selected status except this */\n clickMenuItem(e) {\n if (this.nzDisabled) {\n e.preventDefault();\n e.stopPropagation();\n } else {\n this.nzMenuService.onDescendantMenuItemClick(this);\n if (this.nzSubmenuService) {\n /** menu item inside the submenu **/\n this.nzSubmenuService.onChildMenuItemClick(this);\n } else {\n /** menu item inside the root menu **/\n this.nzMenuService.onChildMenuItemClick(this);\n }\n }\n }\n setSelectedState(value) {\n this.nzSelected = value;\n this.selected$.next(value);\n }\n updateRouterActive() {\n if (!this.listOfRouterLink || !this.router || !this.router.navigated || !this.nzMatchRouter) {\n return;\n }\n Promise.resolve().then(() => {\n const hasActiveLinks = this.hasActiveLinks();\n if (this.nzSelected !== hasActiveLinks) {\n this.nzSelected = hasActiveLinks;\n this.setSelectedState(this.nzSelected);\n this.cdr.markForCheck();\n }\n });\n }\n hasActiveLinks() {\n const isActiveCheckFn = this.isLinkActive(this.router);\n return this.routerLink && isActiveCheckFn(this.routerLink) || this.listOfRouterLink.some(isActiveCheckFn);\n }\n isLinkActive(router) {\n return link => router.isActive(link.urlTree || '', {\n paths: this.nzMatchRouterExact ? 'exact' : 'subset',\n queryParams: this.nzMatchRouterExact ? 'exact' : 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored'\n });\n }\n constructor(nzMenuService, cdr, nzSubmenuService, isMenuInsideDropDown, directionality, routerLink, router) {\n this.nzMenuService = nzMenuService;\n this.cdr = cdr;\n this.nzSubmenuService = nzSubmenuService;\n this.isMenuInsideDropDown = isMenuInsideDropDown;\n this.directionality = directionality;\n this.routerLink = routerLink;\n this.router = router;\n this.destroy$ = new Subject();\n this.level = this.nzSubmenuService ? this.nzSubmenuService.level + 1 : 1;\n this.selected$ = new Subject();\n this.inlinePaddingLeft = null;\n this.dir = 'ltr';\n this.nzDisabled = false;\n this.nzSelected = false;\n this.nzDanger = false;\n this.nzMatchRouterExact = false;\n this.nzMatchRouter = false;\n if (router) {\n this.router.events.pipe(takeUntil(this.destroy$), filter(e => e instanceof NavigationEnd)).subscribe(() => {\n this.updateRouterActive();\n });\n }\n }\n ngOnInit() {\n /** store origin padding in padding */\n combineLatest([this.nzMenuService.mode$, this.nzMenuService.inlineIndent$]).pipe(takeUntil(this.destroy$)).subscribe(([mode, inlineIndent]) => {\n this.inlinePaddingLeft = mode === 'inline' ? this.level * inlineIndent : null;\n });\n this.dir = this.directionality.value;\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe(direction => {\n this.dir = direction;\n });\n }\n ngAfterContentInit() {\n this.listOfRouterLink.changes.pipe(takeUntil(this.destroy$)).subscribe(() => this.updateRouterActive());\n this.updateRouterActive();\n }\n ngOnChanges(changes) {\n if (changes.nzSelected) {\n this.setSelectedState(this.nzSelected);\n }\n }\n ngOnDestroy() {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n static {\n this.ɵfac = function NzMenuItemComponent_Factory(t) {\n return new (t || NzMenuItemComponent)(i0.ɵɵdirectiveInject(MenuService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(NzSubmenuService, 8), i0.ɵɵdirectiveInject(NzIsMenuInsideDropDownToken), i0.ɵɵdirectiveInject(i1.Directionality, 8), i0.ɵɵdirectiveInject(i4.RouterLink, 8), i0.ɵɵdirectiveInject(i4.Router, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzMenuItemComponent,\n selectors: [[\"\", \"nz-menu-item\", \"\"]],\n contentQueries: function NzMenuItemComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, RouterLink, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.listOfRouterLink = _t);\n }\n },\n hostVars: 20,\n hostBindings: function NzMenuItemComponent_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function NzMenuItemComponent_click_HostBindingHandler($event) {\n return ctx.clickMenuItem($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵstyleProp(\"padding-left\", ctx.dir === \"rtl\" ? null : ctx.nzPaddingLeft || ctx.inlinePaddingLeft, \"px\")(\"padding-right\", ctx.dir === \"rtl\" ? ctx.nzPaddingLeft || ctx.inlinePaddingLeft : null, \"px\");\n i0.ɵɵclassProp(\"ant-dropdown-menu-item\", ctx.isMenuInsideDropDown)(\"ant-dropdown-menu-item-selected\", ctx.isMenuInsideDropDown && ctx.nzSelected)(\"ant-dropdown-menu-item-danger\", ctx.isMenuInsideDropDown && ctx.nzDanger)(\"ant-dropdown-menu-item-disabled\", ctx.isMenuInsideDropDown && ctx.nzDisabled)(\"ant-menu-item\", !ctx.isMenuInsideDropDown)(\"ant-menu-item-selected\", !ctx.isMenuInsideDropDown && ctx.nzSelected)(\"ant-menu-item-danger\", !ctx.isMenuInsideDropDown && ctx.nzDanger)(\"ant-menu-item-disabled\", !ctx.isMenuInsideDropDown && ctx.nzDisabled);\n }\n },\n inputs: {\n nzPaddingLeft: \"nzPaddingLeft\",\n nzDisabled: \"nzDisabled\",\n nzSelected: \"nzSelected\",\n nzDanger: \"nzDanger\",\n nzMatchRouterExact: \"nzMatchRouterExact\",\n nzMatchRouter: \"nzMatchRouter\"\n },\n exportAs: [\"nzMenuItem\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n attrs: _c0,\n ngContentSelectors: _c1,\n decls: 2,\n vars: 0,\n consts: [[1, \"ant-menu-title-content\"]],\n template: function NzMenuItemComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelementStart(0, \"span\", 0);\n i0.ɵɵprojection(1);\n i0.ɵɵelementEnd();\n }\n },\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n__decorate([InputBoolean()], NzMenuItemComponent.prototype, \"nzDisabled\", void 0);\n__decorate([InputBoolean()], NzMenuItemComponent.prototype, \"nzSelected\", void 0);\n__decorate([InputBoolean()], NzMenuItemComponent.prototype, \"nzDanger\", void 0);\n__decorate([InputBoolean()], NzMenuItemComponent.prototype, \"nzMatchRouterExact\", void 0);\n__decorate([InputBoolean()], NzMenuItemComponent.prototype, \"nzMatchRouter\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzMenuItemComponent, [{\n type: Component,\n args: [{\n selector: '[nz-menu-item]',\n exportAs: 'nzMenuItem',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n template: `\n \n \n \n `,\n host: {\n '[class.ant-dropdown-menu-item]': `isMenuInsideDropDown`,\n '[class.ant-dropdown-menu-item-selected]': `isMenuInsideDropDown && nzSelected`,\n '[class.ant-dropdown-menu-item-danger]': `isMenuInsideDropDown && nzDanger`,\n '[class.ant-dropdown-menu-item-disabled]': `isMenuInsideDropDown && nzDisabled`,\n '[class.ant-menu-item]': `!isMenuInsideDropDown`,\n '[class.ant-menu-item-selected]': `!isMenuInsideDropDown && nzSelected`,\n '[class.ant-menu-item-danger]': `!isMenuInsideDropDown && nzDanger`,\n '[class.ant-menu-item-disabled]': `!isMenuInsideDropDown && nzDisabled`,\n '[style.paddingLeft.px]': `dir === 'rtl' ? null : nzPaddingLeft || inlinePaddingLeft`,\n '[style.paddingRight.px]': `dir === 'rtl' ? nzPaddingLeft || inlinePaddingLeft : null`,\n '(click)': 'clickMenuItem($event)'\n },\n standalone: true\n }]\n }], () => [{\n type: MenuService\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: NzSubmenuService,\n decorators: [{\n type: Optional\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [NzIsMenuInsideDropDownToken]\n }]\n }, {\n type: i1.Directionality,\n decorators: [{\n type: Optional\n }]\n }, {\n type: i4.RouterLink,\n decorators: [{\n type: Optional\n }]\n }, {\n type: i4.Router,\n decorators: [{\n type: Optional\n }]\n }], {\n nzPaddingLeft: [{\n type: Input\n }],\n nzDisabled: [{\n type: Input\n }],\n nzSelected: [{\n type: Input\n }],\n nzDanger: [{\n type: Input\n }],\n nzMatchRouterExact: [{\n type: Input\n }],\n nzMatchRouter: [{\n type: Input\n }],\n listOfRouterLink: [{\n type: ContentChildren,\n args: [RouterLink, {\n descendants: true\n }]\n }]\n });\n})();\nclass NzSubmenuInlineChildComponent {\n constructor(elementRef, renderer, directionality) {\n this.elementRef = elementRef;\n this.renderer = renderer;\n this.directionality = directionality;\n this.templateOutlet = null;\n this.menuClass = '';\n this.mode = 'vertical';\n this.nzOpen = false;\n this.listOfCacheClassName = [];\n this.expandState = 'collapsed';\n this.dir = 'ltr';\n this.destroy$ = new Subject();\n }\n calcMotionState() {\n if (this.nzOpen) {\n this.expandState = 'expanded';\n } else {\n this.expandState = 'collapsed';\n }\n }\n ngOnInit() {\n this.calcMotionState();\n this.dir = this.directionality.value;\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe(direction => {\n this.dir = direction;\n });\n }\n ngOnChanges(changes) {\n const {\n mode,\n nzOpen,\n menuClass\n } = changes;\n if (mode || nzOpen) {\n this.calcMotionState();\n }\n if (menuClass) {\n if (this.listOfCacheClassName.length) {\n this.listOfCacheClassName.filter(item => !!item).forEach(className => {\n this.renderer.removeClass(this.elementRef.nativeElement, className);\n });\n }\n if (this.menuClass) {\n this.listOfCacheClassName = this.menuClass.split(' ');\n this.listOfCacheClassName.filter(item => !!item).forEach(className => {\n this.renderer.addClass(this.elementRef.nativeElement, className);\n });\n }\n }\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n static {\n this.ɵfac = function NzSubmenuInlineChildComponent_Factory(t) {\n return new (t || NzSubmenuInlineChildComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i1.Directionality, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzSubmenuInlineChildComponent,\n selectors: [[\"\", \"nz-submenu-inline-child\", \"\"]],\n hostAttrs: [1, \"ant-menu\", \"ant-menu-inline\", \"ant-menu-sub\"],\n hostVars: 3,\n hostBindings: function NzSubmenuInlineChildComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵsyntheticHostProperty(\"@collapseMotion\", ctx.expandState);\n i0.ɵɵclassProp(\"ant-menu-rtl\", ctx.dir === \"rtl\");\n }\n },\n inputs: {\n templateOutlet: \"templateOutlet\",\n menuClass: \"menuClass\",\n mode: \"mode\",\n nzOpen: \"nzOpen\"\n },\n exportAs: [\"nzSubmenuInlineChild\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n attrs: _c2,\n decls: 1,\n vars: 1,\n consts: [[3, \"ngTemplateOutlet\"]],\n template: function NzSubmenuInlineChildComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NzSubmenuInlineChildComponent_ng_template_0_Template, 0, 0, \"ng-template\", 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx.templateOutlet);\n }\n },\n dependencies: [NgTemplateOutlet],\n encapsulation: 2,\n data: {\n animation: [collapseMotion]\n },\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzSubmenuInlineChildComponent, [{\n type: Component,\n args: [{\n selector: '[nz-submenu-inline-child]',\n animations: [collapseMotion],\n exportAs: 'nzSubmenuInlineChild',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: ` `,\n host: {\n class: 'ant-menu ant-menu-inline ant-menu-sub',\n '[class.ant-menu-rtl]': `dir === 'rtl'`,\n '[@collapseMotion]': 'expandState'\n },\n imports: [NgTemplateOutlet],\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: i0.Renderer2\n }, {\n type: i1.Directionality,\n decorators: [{\n type: Optional\n }]\n }], {\n templateOutlet: [{\n type: Input\n }],\n menuClass: [{\n type: Input\n }],\n mode: [{\n type: Input\n }],\n nzOpen: [{\n type: Input\n }]\n });\n})();\nclass NzSubmenuNoneInlineChildComponent {\n constructor(directionality) {\n this.directionality = directionality;\n this.menuClass = '';\n this.theme = 'light';\n this.templateOutlet = null;\n this.isMenuInsideDropDown = false;\n this.mode = 'vertical';\n this.position = 'right';\n this.nzDisabled = false;\n this.nzOpen = false;\n this.subMenuMouseState = new EventEmitter();\n this.expandState = 'collapsed';\n this.dir = 'ltr';\n this.destroy$ = new Subject();\n }\n setMouseState(state) {\n if (!this.nzDisabled) {\n this.subMenuMouseState.next(state);\n }\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n calcMotionState() {\n if (this.nzOpen) {\n if (this.mode === 'horizontal') {\n this.expandState = 'bottom';\n } else if (this.mode === 'vertical') {\n this.expandState = 'active';\n }\n } else {\n this.expandState = 'collapsed';\n }\n }\n ngOnInit() {\n this.calcMotionState();\n this.dir = this.directionality.value;\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe(direction => {\n this.dir = direction;\n });\n }\n ngOnChanges(changes) {\n const {\n mode,\n nzOpen\n } = changes;\n if (mode || nzOpen) {\n this.calcMotionState();\n }\n }\n static {\n this.ɵfac = function NzSubmenuNoneInlineChildComponent_Factory(t) {\n return new (t || NzSubmenuNoneInlineChildComponent)(i0.ɵɵdirectiveInject(i1.Directionality, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzSubmenuNoneInlineChildComponent,\n selectors: [[\"\", \"nz-submenu-none-inline-child\", \"\"]],\n hostAttrs: [1, \"ant-menu-submenu\", \"ant-menu-submenu-popup\"],\n hostVars: 14,\n hostBindings: function NzSubmenuNoneInlineChildComponent_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"mouseenter\", function NzSubmenuNoneInlineChildComponent_mouseenter_HostBindingHandler() {\n return ctx.setMouseState(true);\n })(\"mouseleave\", function NzSubmenuNoneInlineChildComponent_mouseleave_HostBindingHandler() {\n return ctx.setMouseState(false);\n });\n }\n if (rf & 2) {\n i0.ɵɵsyntheticHostProperty(\"@slideMotion\", ctx.expandState)(\"@zoomBigMotion\", ctx.expandState);\n i0.ɵɵclassProp(\"ant-menu-light\", ctx.theme === \"light\")(\"ant-menu-dark\", ctx.theme === \"dark\")(\"ant-menu-submenu-placement-bottom\", ctx.mode === \"horizontal\")(\"ant-menu-submenu-placement-right\", ctx.mode === \"vertical\" && ctx.position === \"right\")(\"ant-menu-submenu-placement-left\", ctx.mode === \"vertical\" && ctx.position === \"left\")(\"ant-menu-submenu-rtl\", ctx.dir === \"rtl\");\n }\n },\n inputs: {\n menuClass: \"menuClass\",\n theme: \"theme\",\n templateOutlet: \"templateOutlet\",\n isMenuInsideDropDown: \"isMenuInsideDropDown\",\n mode: \"mode\",\n position: \"position\",\n nzDisabled: \"nzDisabled\",\n nzOpen: \"nzOpen\"\n },\n outputs: {\n subMenuMouseState: \"subMenuMouseState\"\n },\n exportAs: [\"nzSubmenuNoneInlineChild\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n attrs: _c3,\n decls: 2,\n vars: 16,\n consts: [[3, \"ngClass\"], [3, \"ngTemplateOutlet\"]],\n template: function NzSubmenuNoneInlineChildComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0);\n i0.ɵɵtemplate(1, NzSubmenuNoneInlineChildComponent_ng_template_1_Template, 0, 0, \"ng-template\", 1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"ant-dropdown-menu\", ctx.isMenuInsideDropDown)(\"ant-menu\", !ctx.isMenuInsideDropDown)(\"ant-dropdown-menu-vertical\", ctx.isMenuInsideDropDown)(\"ant-menu-vertical\", !ctx.isMenuInsideDropDown)(\"ant-dropdown-menu-sub\", ctx.isMenuInsideDropDown)(\"ant-menu-sub\", !ctx.isMenuInsideDropDown)(\"ant-menu-rtl\", ctx.dir === \"rtl\");\n i0.ɵɵproperty(\"ngClass\", ctx.menuClass);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx.templateOutlet);\n }\n },\n dependencies: [NgClass, NgTemplateOutlet],\n encapsulation: 2,\n data: {\n animation: [zoomBigMotion, slideMotion]\n },\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzSubmenuNoneInlineChildComponent, [{\n type: Component,\n args: [{\n selector: '[nz-submenu-none-inline-child]',\n exportAs: 'nzSubmenuNoneInlineChild',\n encapsulation: ViewEncapsulation.None,\n animations: [zoomBigMotion, slideMotion],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n \n \n
\n `,\n host: {\n class: 'ant-menu-submenu ant-menu-submenu-popup',\n '[class.ant-menu-light]': \"theme === 'light'\",\n '[class.ant-menu-dark]': \"theme === 'dark'\",\n '[class.ant-menu-submenu-placement-bottom]': \"mode === 'horizontal'\",\n '[class.ant-menu-submenu-placement-right]': \"mode === 'vertical' && position === 'right'\",\n '[class.ant-menu-submenu-placement-left]': \"mode === 'vertical' && position === 'left'\",\n '[class.ant-menu-submenu-rtl]': 'dir ===\"rtl\"',\n '[@slideMotion]': 'expandState',\n '[@zoomBigMotion]': 'expandState',\n '(mouseenter)': 'setMouseState(true)',\n '(mouseleave)': 'setMouseState(false)'\n },\n imports: [NgClass, NgTemplateOutlet],\n standalone: true\n }]\n }], () => [{\n type: i1.Directionality,\n decorators: [{\n type: Optional\n }]\n }], {\n menuClass: [{\n type: Input\n }],\n theme: [{\n type: Input\n }],\n templateOutlet: [{\n type: Input\n }],\n isMenuInsideDropDown: [{\n type: Input\n }],\n mode: [{\n type: Input\n }],\n position: [{\n type: Input\n }],\n nzDisabled: [{\n type: Input\n }],\n nzOpen: [{\n type: Input\n }],\n subMenuMouseState: [{\n type: Output\n }]\n });\n})();\nclass NzSubMenuTitleComponent {\n constructor(cdr, directionality) {\n this.cdr = cdr;\n this.directionality = directionality;\n this.nzIcon = null;\n this.nzTitle = null;\n this.isMenuInsideDropDown = false;\n this.nzDisabled = false;\n this.paddingLeft = null;\n this.mode = 'vertical';\n this.toggleSubMenu = new EventEmitter();\n this.subMenuMouseState = new EventEmitter();\n this.dir = 'ltr';\n this.destroy$ = new Subject();\n }\n ngOnInit() {\n this.dir = this.directionality.value;\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe(direction => {\n this.dir = direction;\n this.cdr.detectChanges();\n });\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n setMouseState(state) {\n if (!this.nzDisabled) {\n this.subMenuMouseState.next(state);\n }\n }\n clickTitle() {\n if (this.mode === 'inline' && !this.nzDisabled) {\n this.toggleSubMenu.emit();\n }\n }\n static {\n this.ɵfac = function NzSubMenuTitleComponent_Factory(t) {\n return new (t || NzSubMenuTitleComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.Directionality, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzSubMenuTitleComponent,\n selectors: [[\"\", \"nz-submenu-title\", \"\"]],\n hostVars: 8,\n hostBindings: function NzSubMenuTitleComponent_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function NzSubMenuTitleComponent_click_HostBindingHandler() {\n return ctx.clickTitle();\n })(\"mouseenter\", function NzSubMenuTitleComponent_mouseenter_HostBindingHandler() {\n return ctx.setMouseState(true);\n })(\"mouseleave\", function NzSubMenuTitleComponent_mouseleave_HostBindingHandler() {\n return ctx.setMouseState(false);\n });\n }\n if (rf & 2) {\n i0.ɵɵstyleProp(\"padding-left\", ctx.dir === \"rtl\" ? null : ctx.paddingLeft, \"px\")(\"padding-right\", ctx.dir === \"rtl\" ? ctx.paddingLeft : null, \"px\");\n i0.ɵɵclassProp(\"ant-dropdown-menu-submenu-title\", ctx.isMenuInsideDropDown)(\"ant-menu-submenu-title\", !ctx.isMenuInsideDropDown);\n }\n },\n inputs: {\n nzIcon: \"nzIcon\",\n nzTitle: \"nzTitle\",\n isMenuInsideDropDown: \"isMenuInsideDropDown\",\n nzDisabled: \"nzDisabled\",\n paddingLeft: \"paddingLeft\",\n mode: \"mode\"\n },\n outputs: {\n toggleSubMenu: \"toggleSubMenu\",\n subMenuMouseState: \"subMenuMouseState\"\n },\n exportAs: [\"nzSubmenuTitle\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n attrs: _c4,\n ngContentSelectors: _c1,\n decls: 6,\n vars: 4,\n consts: [[\"nz-icon\", \"\", 3, \"nzType\", 4, \"ngIf\"], [4, \"nzStringTemplateOutlet\"], [\"class\", \"ant-dropdown-menu-submenu-expand-icon\", 3, \"ngSwitch\", 4, \"ngIf\", \"ngIfElse\"], [\"notDropdownTpl\", \"\"], [\"nz-icon\", \"\", 3, \"nzType\"], [1, \"ant-menu-title-content\"], [1, \"ant-dropdown-menu-submenu-expand-icon\", 3, \"ngSwitch\"], [\"nz-icon\", \"\", \"nzType\", \"left\", \"class\", \"ant-dropdown-menu-submenu-arrow-icon\", 4, \"ngSwitchCase\"], [\"nz-icon\", \"\", \"nzType\", \"right\", \"class\", \"ant-dropdown-menu-submenu-arrow-icon\", 4, \"ngSwitchDefault\"], [\"nz-icon\", \"\", \"nzType\", \"left\", 1, \"ant-dropdown-menu-submenu-arrow-icon\"], [\"nz-icon\", \"\", \"nzType\", \"right\", 1, \"ant-dropdown-menu-submenu-arrow-icon\"], [1, \"ant-menu-submenu-arrow\"]],\n template: function NzSubMenuTitleComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, NzSubMenuTitleComponent_span_0_Template, 1, 1, \"span\", 0)(1, NzSubMenuTitleComponent_ng_container_1_Template, 3, 1, \"ng-container\", 1);\n i0.ɵɵprojection(2);\n i0.ɵɵtemplate(3, NzSubMenuTitleComponent_span_3_Template, 3, 2, \"span\", 2)(4, NzSubMenuTitleComponent_ng_template_4_Template, 1, 0, \"ng-template\", null, 3, i0.ɵɵtemplateRefExtractor);\n }\n if (rf & 2) {\n const _r4 = i0.ɵɵreference(5);\n i0.ɵɵproperty(\"ngIf\", ctx.nzIcon);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"nzStringTemplateOutlet\", ctx.nzTitle);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx.isMenuInsideDropDown)(\"ngIfElse\", _r4);\n }\n },\n dependencies: [NzIconModule, i2.NzIconDirective, NgIf, NzOutletModule, i3.NzStringTemplateOutletDirective, NgSwitch, NgSwitchCase, NgSwitchDefault],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzSubMenuTitleComponent, [{\n type: Component,\n args: [{\n selector: '[nz-submenu-title]',\n exportAs: 'nzSubmenuTitle',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n \n \n {{ nzTitle }}\n \n \n \n \n \n
\n \n \n \n `,\n host: {\n '[class.ant-dropdown-menu-submenu-title]': 'isMenuInsideDropDown',\n '[class.ant-menu-submenu-title]': '!isMenuInsideDropDown',\n '[style.paddingLeft.px]': `dir === 'rtl' ? null : paddingLeft `,\n '[style.paddingRight.px]': `dir === 'rtl' ? paddingLeft : null`,\n '(click)': 'clickTitle()',\n '(mouseenter)': 'setMouseState(true)',\n '(mouseleave)': 'setMouseState(false)'\n },\n imports: [NzIconModule, NgIf, NzOutletModule, NgSwitch, NgSwitchCase, NgSwitchDefault],\n standalone: true\n }]\n }], () => [{\n type: i0.ChangeDetectorRef\n }, {\n type: i1.Directionality,\n decorators: [{\n type: Optional\n }]\n }], {\n nzIcon: [{\n type: Input\n }],\n nzTitle: [{\n type: Input\n }],\n isMenuInsideDropDown: [{\n type: Input\n }],\n nzDisabled: [{\n type: Input\n }],\n paddingLeft: [{\n type: Input\n }],\n mode: [{\n type: Input\n }],\n toggleSubMenu: [{\n type: Output\n }],\n subMenuMouseState: [{\n type: Output\n }]\n });\n})();\nconst listOfVerticalPositions = [POSITION_MAP.rightTop, POSITION_MAP.right, POSITION_MAP.rightBottom, POSITION_MAP.leftTop, POSITION_MAP.left, POSITION_MAP.leftBottom];\nconst listOfHorizontalPositions = [POSITION_MAP.bottomLeft, POSITION_MAP.bottomRight, POSITION_MAP.topRight, POSITION_MAP.topLeft];\nclass NzSubMenuComponent {\n /** set the submenu host open status directly **/\n setOpenStateWithoutDebounce(open) {\n this.nzSubmenuService.setOpenStateWithoutDebounce(open);\n }\n toggleSubMenu() {\n this.setOpenStateWithoutDebounce(!this.nzOpen);\n }\n setMouseEnterState(value) {\n this.isActive = value;\n if (this.mode !== 'inline') {\n this.nzSubmenuService.setMouseEnterTitleOrOverlayState(value);\n }\n }\n setTriggerWidth() {\n if (this.mode === 'horizontal' && this.platform.isBrowser && this.cdkOverlayOrigin && this.nzPlacement === 'bottomLeft') {\n /** TODO: fast dom **/\n this.triggerWidth = this.cdkOverlayOrigin.nativeElement.getBoundingClientRect().width;\n }\n }\n onPositionChange(position) {\n const placement = getPlacementName(position);\n if (placement === 'rightTop' || placement === 'rightBottom' || placement === 'right') {\n this.position = 'right';\n } else if (placement === 'leftTop' || placement === 'leftBottom' || placement === 'left') {\n this.position = 'left';\n }\n }\n constructor(nzMenuService, cdr, nzSubmenuService, platform, isMenuInsideDropDown, directionality, noAnimation) {\n this.nzMenuService = nzMenuService;\n this.cdr = cdr;\n this.nzSubmenuService = nzSubmenuService;\n this.platform = platform;\n this.isMenuInsideDropDown = isMenuInsideDropDown;\n this.directionality = directionality;\n this.noAnimation = noAnimation;\n this.nzMenuClassName = '';\n this.nzPaddingLeft = null;\n this.nzTitle = null;\n this.nzIcon = null;\n this.nzOpen = false;\n this.nzDisabled = false;\n this.nzPlacement = 'bottomLeft';\n this.nzOpenChange = new EventEmitter();\n this.cdkOverlayOrigin = null;\n // fix errors about circular dependency\n // Can't construct a query for the property ... since the query selector wasn't defined\"\n this.listOfNzSubMenuComponent = null;\n this.listOfNzMenuItemDirective = null;\n this.level = this.nzSubmenuService.level;\n this.destroy$ = new Subject();\n this.position = 'right';\n this.triggerWidth = null;\n this.theme = 'light';\n this.mode = 'vertical';\n this.inlinePaddingLeft = null;\n this.overlayPositions = listOfVerticalPositions;\n this.isSelected = false;\n this.isActive = false;\n this.dir = 'ltr';\n }\n ngOnInit() {\n /** submenu theme update **/\n this.nzMenuService.theme$.pipe(takeUntil(this.destroy$)).subscribe(theme => {\n this.theme = theme;\n this.cdr.markForCheck();\n });\n /** submenu mode update **/\n this.nzSubmenuService.mode$.pipe(takeUntil(this.destroy$)).subscribe(mode => {\n this.mode = mode;\n if (mode === 'horizontal') {\n this.overlayPositions = [POSITION_MAP[this.nzPlacement], ...listOfHorizontalPositions];\n } else if (mode === 'vertical') {\n this.overlayPositions = listOfVerticalPositions;\n }\n this.cdr.markForCheck();\n });\n /** inlineIndent update **/\n combineLatest([this.nzSubmenuService.mode$, this.nzMenuService.inlineIndent$]).pipe(takeUntil(this.destroy$)).subscribe(([mode, inlineIndent]) => {\n this.inlinePaddingLeft = mode === 'inline' ? this.level * inlineIndent : null;\n this.cdr.markForCheck();\n });\n /** current submenu open status **/\n this.nzSubmenuService.isCurrentSubMenuOpen$.pipe(takeUntil(this.destroy$)).subscribe(open => {\n this.isActive = open;\n if (open !== this.nzOpen) {\n this.setTriggerWidth();\n this.nzOpen = open;\n this.nzOpenChange.emit(this.nzOpen);\n this.cdr.markForCheck();\n }\n });\n this.dir = this.directionality.value;\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe(direction => {\n this.dir = direction;\n this.cdr.markForCheck();\n });\n }\n ngAfterContentInit() {\n this.setTriggerWidth();\n const listOfNzMenuItemDirective = this.listOfNzMenuItemDirective;\n const changes = listOfNzMenuItemDirective.changes;\n const mergedObservable = merge(...[changes, ...listOfNzMenuItemDirective.map(menu => menu.selected$)]);\n changes.pipe(startWith(listOfNzMenuItemDirective), switchMap(() => mergedObservable), startWith(true), map(() => listOfNzMenuItemDirective.some(e => e.nzSelected)), takeUntil(this.destroy$)).subscribe(selected => {\n this.isSelected = selected;\n this.cdr.markForCheck();\n });\n }\n ngOnChanges(changes) {\n const {\n nzOpen\n } = changes;\n if (nzOpen) {\n this.nzSubmenuService.setOpenStateWithoutDebounce(this.nzOpen);\n this.setTriggerWidth();\n }\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n static {\n this.ɵfac = function NzSubMenuComponent_Factory(t) {\n return new (t || NzSubMenuComponent)(i0.ɵɵdirectiveInject(MenuService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(NzSubmenuService), i0.ɵɵdirectiveInject(i3$1.Platform), i0.ɵɵdirectiveInject(NzIsMenuInsideDropDownToken), i0.ɵɵdirectiveInject(i1.Directionality, 8), i0.ɵɵdirectiveInject(i5.NzNoAnimationDirective, 9));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzSubMenuComponent,\n selectors: [[\"\", \"nz-submenu\", \"\"]],\n contentQueries: function NzSubMenuComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NzSubMenuComponent, 5);\n i0.ɵɵcontentQuery(dirIndex, NzMenuItemComponent, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.listOfNzSubMenuComponent = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.listOfNzMenuItemDirective = _t);\n }\n },\n viewQuery: function NzSubMenuComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(CdkOverlayOrigin, 7, ElementRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.cdkOverlayOrigin = _t.first);\n }\n },\n hostVars: 34,\n hostBindings: function NzSubMenuComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"ant-dropdown-menu-submenu\", ctx.isMenuInsideDropDown)(\"ant-dropdown-menu-submenu-disabled\", ctx.isMenuInsideDropDown && ctx.nzDisabled)(\"ant-dropdown-menu-submenu-open\", ctx.isMenuInsideDropDown && ctx.nzOpen)(\"ant-dropdown-menu-submenu-selected\", ctx.isMenuInsideDropDown && ctx.isSelected)(\"ant-dropdown-menu-submenu-vertical\", ctx.isMenuInsideDropDown && ctx.mode === \"vertical\")(\"ant-dropdown-menu-submenu-horizontal\", ctx.isMenuInsideDropDown && ctx.mode === \"horizontal\")(\"ant-dropdown-menu-submenu-inline\", ctx.isMenuInsideDropDown && ctx.mode === \"inline\")(\"ant-dropdown-menu-submenu-active\", ctx.isMenuInsideDropDown && ctx.isActive)(\"ant-menu-submenu\", !ctx.isMenuInsideDropDown)(\"ant-menu-submenu-disabled\", !ctx.isMenuInsideDropDown && ctx.nzDisabled)(\"ant-menu-submenu-open\", !ctx.isMenuInsideDropDown && ctx.nzOpen)(\"ant-menu-submenu-selected\", !ctx.isMenuInsideDropDown && ctx.isSelected)(\"ant-menu-submenu-vertical\", !ctx.isMenuInsideDropDown && ctx.mode === \"vertical\")(\"ant-menu-submenu-horizontal\", !ctx.isMenuInsideDropDown && ctx.mode === \"horizontal\")(\"ant-menu-submenu-inline\", !ctx.isMenuInsideDropDown && ctx.mode === \"inline\")(\"ant-menu-submenu-active\", !ctx.isMenuInsideDropDown && ctx.isActive)(\"ant-menu-submenu-rtl\", ctx.dir === \"rtl\");\n }\n },\n inputs: {\n nzMenuClassName: \"nzMenuClassName\",\n nzPaddingLeft: \"nzPaddingLeft\",\n nzTitle: \"nzTitle\",\n nzIcon: \"nzIcon\",\n nzOpen: \"nzOpen\",\n nzDisabled: \"nzDisabled\",\n nzPlacement: \"nzPlacement\"\n },\n outputs: {\n nzOpenChange: \"nzOpenChange\"\n },\n exportAs: [\"nzSubmenu\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([NzSubmenuService]), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n attrs: _c5,\n ngContentSelectors: _c7,\n decls: 8,\n vars: 9,\n consts: [[\"nz-submenu-title\", \"\", \"cdkOverlayOrigin\", \"\", 3, \"nzIcon\", \"nzTitle\", \"mode\", \"nzDisabled\", \"isMenuInsideDropDown\", \"paddingLeft\", \"subMenuMouseState\", \"toggleSubMenu\"], [\"origin\", \"cdkOverlayOrigin\"], [4, \"ngIf\"], [\"nz-submenu-inline-child\", \"\", 3, \"mode\", \"nzOpen\", \"nzNoAnimation\", \"menuClass\", \"templateOutlet\", 4, \"ngIf\", \"ngIfElse\"], [\"nonInlineTemplate\", \"\"], [\"subMenuTemplate\", \"\"], [\"nz-submenu-inline-child\", \"\", 3, \"mode\", \"nzOpen\", \"nzNoAnimation\", \"menuClass\", \"templateOutlet\"], [\"cdkConnectedOverlay\", \"\", 3, \"cdkConnectedOverlayPositions\", \"cdkConnectedOverlayOrigin\", \"cdkConnectedOverlayWidth\", \"cdkConnectedOverlayOpen\", \"cdkConnectedOverlayTransformOriginOn\", \"positionChange\"], [\"nz-submenu-none-inline-child\", \"\", 3, \"theme\", \"mode\", \"nzOpen\", \"position\", \"nzDisabled\", \"isMenuInsideDropDown\", \"templateOutlet\", \"menuClass\", \"nzNoAnimation\", \"subMenuMouseState\"]],\n template: function NzSubMenuComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c6);\n i0.ɵɵelementStart(0, \"div\", 0, 1);\n i0.ɵɵlistener(\"subMenuMouseState\", function NzSubMenuComponent_Template_div_subMenuMouseState_0_listener($event) {\n return ctx.setMouseEnterState($event);\n })(\"toggleSubMenu\", function NzSubMenuComponent_Template_div_toggleSubMenu_0_listener() {\n return ctx.toggleSubMenu();\n });\n i0.ɵɵtemplate(2, NzSubMenuComponent_ng_content_2_Template, 1, 0, \"ng-content\", 2);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(3, NzSubMenuComponent_div_3_Template, 1, 6, \"div\", 3)(4, NzSubMenuComponent_ng_template_4_Template, 1, 5, \"ng-template\", null, 4, i0.ɵɵtemplateRefExtractor)(6, NzSubMenuComponent_ng_template_6_Template, 1, 0, \"ng-template\", null, 5, i0.ɵɵtemplateRefExtractor);\n }\n if (rf & 2) {\n const _r4 = i0.ɵɵreference(5);\n i0.ɵɵproperty(\"nzIcon\", ctx.nzIcon)(\"nzTitle\", ctx.nzTitle)(\"mode\", ctx.mode)(\"nzDisabled\", ctx.nzDisabled)(\"isMenuInsideDropDown\", ctx.isMenuInsideDropDown)(\"paddingLeft\", ctx.nzPaddingLeft || ctx.inlinePaddingLeft);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", !ctx.nzTitle);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx.mode === \"inline\")(\"ngIfElse\", _r4);\n }\n },\n dependencies: [NzSubMenuTitleComponent, NzSubmenuInlineChildComponent, NgIf, NzNoAnimationDirective, NzSubmenuNoneInlineChildComponent, OverlayModule, i6.CdkConnectedOverlay, i6.CdkOverlayOrigin],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n__decorate([InputBoolean()], NzSubMenuComponent.prototype, \"nzOpen\", void 0);\n__decorate([InputBoolean()], NzSubMenuComponent.prototype, \"nzDisabled\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzSubMenuComponent, [{\n type: Component,\n args: [{\n selector: '[nz-submenu]',\n exportAs: 'nzSubmenu',\n providers: [NzSubmenuService],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n template: `\n \n \n
\n \n \n \n \n \n \n\n \n \n \n `,\n host: {\n '[class.ant-dropdown-menu-submenu]': `isMenuInsideDropDown`,\n '[class.ant-dropdown-menu-submenu-disabled]': `isMenuInsideDropDown && nzDisabled`,\n '[class.ant-dropdown-menu-submenu-open]': `isMenuInsideDropDown && nzOpen`,\n '[class.ant-dropdown-menu-submenu-selected]': `isMenuInsideDropDown && isSelected`,\n '[class.ant-dropdown-menu-submenu-vertical]': `isMenuInsideDropDown && mode === 'vertical'`,\n '[class.ant-dropdown-menu-submenu-horizontal]': `isMenuInsideDropDown && mode === 'horizontal'`,\n '[class.ant-dropdown-menu-submenu-inline]': `isMenuInsideDropDown && mode === 'inline'`,\n '[class.ant-dropdown-menu-submenu-active]': `isMenuInsideDropDown && isActive`,\n '[class.ant-menu-submenu]': `!isMenuInsideDropDown`,\n '[class.ant-menu-submenu-disabled]': `!isMenuInsideDropDown && nzDisabled`,\n '[class.ant-menu-submenu-open]': `!isMenuInsideDropDown && nzOpen`,\n '[class.ant-menu-submenu-selected]': `!isMenuInsideDropDown && isSelected`,\n '[class.ant-menu-submenu-vertical]': `!isMenuInsideDropDown && mode === 'vertical'`,\n '[class.ant-menu-submenu-horizontal]': `!isMenuInsideDropDown && mode === 'horizontal'`,\n '[class.ant-menu-submenu-inline]': `!isMenuInsideDropDown && mode === 'inline'`,\n '[class.ant-menu-submenu-active]': `!isMenuInsideDropDown && isActive`,\n '[class.ant-menu-submenu-rtl]': `dir === 'rtl'`\n },\n imports: [NzSubMenuTitleComponent, NzSubmenuInlineChildComponent, NgIf, NzNoAnimationDirective, NzSubmenuNoneInlineChildComponent, OverlayModule],\n standalone: true\n }]\n }], () => [{\n type: MenuService\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: NzSubmenuService\n }, {\n type: i3$1.Platform\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [NzIsMenuInsideDropDownToken]\n }]\n }, {\n type: i1.Directionality,\n decorators: [{\n type: Optional\n }]\n }, {\n type: i5.NzNoAnimationDirective,\n decorators: [{\n type: Host\n }, {\n type: Optional\n }]\n }], {\n nzMenuClassName: [{\n type: Input\n }],\n nzPaddingLeft: [{\n type: Input\n }],\n nzTitle: [{\n type: Input\n }],\n nzIcon: [{\n type: Input\n }],\n nzOpen: [{\n type: Input\n }],\n nzDisabled: [{\n type: Input\n }],\n nzPlacement: [{\n type: Input\n }],\n nzOpenChange: [{\n type: Output\n }],\n cdkOverlayOrigin: [{\n type: ViewChild,\n args: [CdkOverlayOrigin, {\n static: true,\n read: ElementRef\n }]\n }],\n listOfNzSubMenuComponent: [{\n type: ContentChildren,\n args: [forwardRef(() => NzSubMenuComponent), {\n descendants: true\n }]\n }],\n listOfNzMenuItemDirective: [{\n type: ContentChildren,\n args: [NzMenuItemComponent, {\n descendants: true\n }]\n }]\n });\n})();\nfunction MenuServiceFactory() {\n const serviceInsideDropDown = inject(MenuService, {\n skipSelf: true,\n optional: true\n });\n const serviceOutsideDropDown = inject(NzMenuServiceLocalToken);\n return serviceInsideDropDown ?? serviceOutsideDropDown;\n}\nfunction MenuDropDownTokenFactory() {\n const isMenuInsideDropDownToken = inject(NzIsMenuInsideDropDownToken, {\n skipSelf: true,\n optional: true\n });\n return isMenuInsideDropDownToken ?? false;\n}\nclass NzMenuDirective {\n setInlineCollapsed(inlineCollapsed) {\n this.nzInlineCollapsed = inlineCollapsed;\n this.inlineCollapsed$.next(inlineCollapsed);\n }\n updateInlineCollapse() {\n if (this.listOfNzMenuItemDirective) {\n if (this.nzInlineCollapsed) {\n this.listOfOpenedNzSubMenuComponent = this.listOfNzSubMenuComponent.filter(submenu => submenu.nzOpen);\n this.listOfNzSubMenuComponent.forEach(submenu => submenu.setOpenStateWithoutDebounce(false));\n } else {\n this.listOfOpenedNzSubMenuComponent.forEach(submenu => submenu.setOpenStateWithoutDebounce(true));\n this.listOfOpenedNzSubMenuComponent = [];\n }\n }\n }\n constructor(nzMenuService, isMenuInsideDropDown, cdr, directionality) {\n this.nzMenuService = nzMenuService;\n this.isMenuInsideDropDown = isMenuInsideDropDown;\n this.cdr = cdr;\n this.directionality = directionality;\n this.nzInlineIndent = 24;\n this.nzTheme = 'light';\n this.nzMode = 'vertical';\n this.nzInlineCollapsed = false;\n this.nzSelectable = !this.isMenuInsideDropDown;\n this.nzClick = new EventEmitter();\n this.actualMode = 'vertical';\n this.dir = 'ltr';\n this.inlineCollapsed$ = new BehaviorSubject(this.nzInlineCollapsed);\n this.mode$ = new BehaviorSubject(this.nzMode);\n this.destroy$ = new Subject();\n this.listOfOpenedNzSubMenuComponent = [];\n }\n ngOnInit() {\n combineLatest([this.inlineCollapsed$, this.mode$]).pipe(takeUntil(this.destroy$)).subscribe(([inlineCollapsed, mode]) => {\n this.actualMode = inlineCollapsed ? 'vertical' : mode;\n this.nzMenuService.setMode(this.actualMode);\n this.cdr.markForCheck();\n });\n this.nzMenuService.descendantMenuItemClick$.pipe(takeUntil(this.destroy$)).subscribe(menu => {\n this.nzClick.emit(menu);\n if (this.nzSelectable && !menu.nzMatchRouter) {\n this.listOfNzMenuItemDirective.forEach(item => item.setSelectedState(item === menu));\n }\n });\n this.dir = this.directionality.value;\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe(direction => {\n this.dir = direction;\n this.nzMenuService.setMode(this.actualMode);\n this.cdr.markForCheck();\n });\n }\n ngAfterContentInit() {\n this.inlineCollapsed$.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.updateInlineCollapse();\n this.cdr.markForCheck();\n });\n }\n ngOnChanges(changes) {\n const {\n nzInlineCollapsed,\n nzInlineIndent,\n nzTheme,\n nzMode\n } = changes;\n if (nzInlineCollapsed) {\n this.inlineCollapsed$.next(this.nzInlineCollapsed);\n }\n if (nzInlineIndent) {\n this.nzMenuService.setInlineIndent(this.nzInlineIndent);\n }\n if (nzTheme) {\n this.nzMenuService.setTheme(this.nzTheme);\n }\n if (nzMode) {\n this.mode$.next(this.nzMode);\n if (!changes.nzMode.isFirstChange() && this.listOfNzSubMenuComponent) {\n this.listOfNzSubMenuComponent.forEach(submenu => submenu.setOpenStateWithoutDebounce(false));\n }\n }\n }\n ngOnDestroy() {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n static {\n this.ɵfac = function NzMenuDirective_Factory(t) {\n return new (t || NzMenuDirective)(i0.ɵɵdirectiveInject(MenuService), i0.ɵɵdirectiveInject(NzIsMenuInsideDropDownToken), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.Directionality, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzMenuDirective,\n selectors: [[\"\", \"nz-menu\", \"\"]],\n contentQueries: function NzMenuDirective_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NzMenuItemComponent, 5);\n i0.ɵɵcontentQuery(dirIndex, NzSubMenuComponent, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.listOfNzMenuItemDirective = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.listOfNzSubMenuComponent = _t);\n }\n },\n hostVars: 34,\n hostBindings: function NzMenuDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"ant-dropdown-menu\", ctx.isMenuInsideDropDown)(\"ant-dropdown-menu-root\", ctx.isMenuInsideDropDown)(\"ant-dropdown-menu-light\", ctx.isMenuInsideDropDown && ctx.nzTheme === \"light\")(\"ant-dropdown-menu-dark\", ctx.isMenuInsideDropDown && ctx.nzTheme === \"dark\")(\"ant-dropdown-menu-vertical\", ctx.isMenuInsideDropDown && ctx.actualMode === \"vertical\")(\"ant-dropdown-menu-horizontal\", ctx.isMenuInsideDropDown && ctx.actualMode === \"horizontal\")(\"ant-dropdown-menu-inline\", ctx.isMenuInsideDropDown && ctx.actualMode === \"inline\")(\"ant-dropdown-menu-inline-collapsed\", ctx.isMenuInsideDropDown && ctx.nzInlineCollapsed)(\"ant-menu\", !ctx.isMenuInsideDropDown)(\"ant-menu-root\", !ctx.isMenuInsideDropDown)(\"ant-menu-light\", !ctx.isMenuInsideDropDown && ctx.nzTheme === \"light\")(\"ant-menu-dark\", !ctx.isMenuInsideDropDown && ctx.nzTheme === \"dark\")(\"ant-menu-vertical\", !ctx.isMenuInsideDropDown && ctx.actualMode === \"vertical\")(\"ant-menu-horizontal\", !ctx.isMenuInsideDropDown && ctx.actualMode === \"horizontal\")(\"ant-menu-inline\", !ctx.isMenuInsideDropDown && ctx.actualMode === \"inline\")(\"ant-menu-inline-collapsed\", !ctx.isMenuInsideDropDown && ctx.nzInlineCollapsed)(\"ant-menu-rtl\", ctx.dir === \"rtl\");\n }\n },\n inputs: {\n nzInlineIndent: \"nzInlineIndent\",\n nzTheme: \"nzTheme\",\n nzMode: \"nzMode\",\n nzInlineCollapsed: \"nzInlineCollapsed\",\n nzSelectable: \"nzSelectable\"\n },\n outputs: {\n nzClick: \"nzClick\"\n },\n exportAs: [\"nzMenu\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: NzMenuServiceLocalToken,\n useClass: MenuService\n }, /** use the top level service **/\n {\n provide: MenuService,\n useFactory: MenuServiceFactory\n }, /** check if menu inside dropdown-menu component **/\n {\n provide: NzIsMenuInsideDropDownToken,\n useFactory: MenuDropDownTokenFactory\n }]), i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n__decorate([InputBoolean()], NzMenuDirective.prototype, \"nzInlineCollapsed\", void 0);\n__decorate([InputBoolean()], NzMenuDirective.prototype, \"nzSelectable\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzMenuDirective, [{\n type: Directive,\n args: [{\n selector: '[nz-menu]',\n exportAs: 'nzMenu',\n providers: [{\n provide: NzMenuServiceLocalToken,\n useClass: MenuService\n }, /** use the top level service **/\n {\n provide: MenuService,\n useFactory: MenuServiceFactory\n }, /** check if menu inside dropdown-menu component **/\n {\n provide: NzIsMenuInsideDropDownToken,\n useFactory: MenuDropDownTokenFactory\n }],\n host: {\n '[class.ant-dropdown-menu]': `isMenuInsideDropDown`,\n '[class.ant-dropdown-menu-root]': `isMenuInsideDropDown`,\n '[class.ant-dropdown-menu-light]': `isMenuInsideDropDown && nzTheme === 'light'`,\n '[class.ant-dropdown-menu-dark]': `isMenuInsideDropDown && nzTheme === 'dark'`,\n '[class.ant-dropdown-menu-vertical]': `isMenuInsideDropDown && actualMode === 'vertical'`,\n '[class.ant-dropdown-menu-horizontal]': `isMenuInsideDropDown && actualMode === 'horizontal'`,\n '[class.ant-dropdown-menu-inline]': `isMenuInsideDropDown && actualMode === 'inline'`,\n '[class.ant-dropdown-menu-inline-collapsed]': `isMenuInsideDropDown && nzInlineCollapsed`,\n '[class.ant-menu]': `!isMenuInsideDropDown`,\n '[class.ant-menu-root]': `!isMenuInsideDropDown`,\n '[class.ant-menu-light]': `!isMenuInsideDropDown && nzTheme === 'light'`,\n '[class.ant-menu-dark]': `!isMenuInsideDropDown && nzTheme === 'dark'`,\n '[class.ant-menu-vertical]': `!isMenuInsideDropDown && actualMode === 'vertical'`,\n '[class.ant-menu-horizontal]': `!isMenuInsideDropDown && actualMode === 'horizontal'`,\n '[class.ant-menu-inline]': `!isMenuInsideDropDown && actualMode === 'inline'`,\n '[class.ant-menu-inline-collapsed]': `!isMenuInsideDropDown && nzInlineCollapsed`,\n '[class.ant-menu-rtl]': `dir === 'rtl'`\n },\n standalone: true\n }]\n }], () => [{\n type: MenuService\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [NzIsMenuInsideDropDownToken]\n }]\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: i1.Directionality,\n decorators: [{\n type: Optional\n }]\n }], {\n listOfNzMenuItemDirective: [{\n type: ContentChildren,\n args: [NzMenuItemComponent, {\n descendants: true\n }]\n }],\n listOfNzSubMenuComponent: [{\n type: ContentChildren,\n args: [NzSubMenuComponent, {\n descendants: true\n }]\n }],\n nzInlineIndent: [{\n type: Input\n }],\n nzTheme: [{\n type: Input\n }],\n nzMode: [{\n type: Input\n }],\n nzInlineCollapsed: [{\n type: Input\n }],\n nzSelectable: [{\n type: Input\n }],\n nzClick: [{\n type: Output\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction MenuGroupFactory() {\n const isMenuInsideDropDownToken = inject(NzIsMenuInsideDropDownToken, {\n optional: true,\n skipSelf: true\n });\n return isMenuInsideDropDownToken ?? false;\n}\nclass NzMenuGroupComponent {\n constructor(elementRef, renderer, isMenuInsideDropDown) {\n this.elementRef = elementRef;\n this.renderer = renderer;\n this.isMenuInsideDropDown = isMenuInsideDropDown;\n const className = this.isMenuInsideDropDown ? 'ant-dropdown-menu-item-group' : 'ant-menu-item-group';\n this.renderer.addClass(elementRef.nativeElement, className);\n }\n ngAfterViewInit() {\n const ulElement = this.titleElement.nativeElement.nextElementSibling;\n if (ulElement) {\n /** add classname to ul **/\n const className = this.isMenuInsideDropDown ? 'ant-dropdown-menu-item-group-list' : 'ant-menu-item-group-list';\n this.renderer.addClass(ulElement, className);\n }\n }\n static {\n this.ɵfac = function NzMenuGroupComponent_Factory(t) {\n return new (t || NzMenuGroupComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(NzIsMenuInsideDropDownToken));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzMenuGroupComponent,\n selectors: [[\"\", \"nz-menu-group\", \"\"]],\n viewQuery: function NzMenuGroupComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c8, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.titleElement = _t.first);\n }\n },\n inputs: {\n nzTitle: \"nzTitle\"\n },\n exportAs: [\"nzMenuGroup\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([/** check if menu inside dropdown-menu component **/\n {\n provide: NzIsMenuInsideDropDownToken,\n useFactory: MenuGroupFactory\n }]), i0.ɵɵStandaloneFeature],\n attrs: _c9,\n ngContentSelectors: _c11,\n decls: 5,\n vars: 6,\n consts: [[\"titleElement\", \"\"], [4, \"nzStringTemplateOutlet\"], [4, \"ngIf\"]],\n template: function NzMenuGroupComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c10);\n i0.ɵɵelementStart(0, \"div\", null, 0);\n i0.ɵɵtemplate(2, NzMenuGroupComponent_ng_container_2_Template, 2, 1, \"ng-container\", 1)(3, NzMenuGroupComponent_ng_content_3_Template, 1, 0, \"ng-content\", 2);\n i0.ɵɵelementEnd();\n i0.ɵɵprojection(4);\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"ant-menu-item-group-title\", !ctx.isMenuInsideDropDown)(\"ant-dropdown-menu-item-group-title\", ctx.isMenuInsideDropDown);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"nzStringTemplateOutlet\", ctx.nzTitle);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", !ctx.nzTitle);\n }\n },\n dependencies: [NzOutletModule, i3.NzStringTemplateOutletDirective, NgIf],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzMenuGroupComponent, [{\n type: Component,\n args: [{\n selector: '[nz-menu-group]',\n exportAs: 'nzMenuGroup',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [/** check if menu inside dropdown-menu component **/\n {\n provide: NzIsMenuInsideDropDownToken,\n useFactory: MenuGroupFactory\n }],\n encapsulation: ViewEncapsulation.None,\n template: `\n \n {{ nzTitle }}\n \n \n \n `,\n preserveWhitespaces: false,\n imports: [NzOutletModule, NgIf],\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: i0.Renderer2\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [NzIsMenuInsideDropDownToken]\n }]\n }], {\n nzTitle: [{\n type: Input\n }],\n titleElement: [{\n type: ViewChild,\n args: ['titleElement']\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzMenuDividerDirective {\n constructor(elementRef) {\n this.elementRef = elementRef;\n }\n static {\n this.ɵfac = function NzMenuDividerDirective_Factory(t) {\n return new (t || NzMenuDividerDirective)(i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzMenuDividerDirective,\n selectors: [[\"\", \"nz-menu-divider\", \"\"]],\n hostAttrs: [1, \"ant-dropdown-menu-item-divider\"],\n exportAs: [\"nzMenuDivider\"],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzMenuDividerDirective, [{\n type: Directive,\n args: [{\n selector: '[nz-menu-divider]',\n exportAs: 'nzMenuDivider',\n host: {\n class: 'ant-dropdown-menu-item-divider'\n },\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }], null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzMenuModule {\n static {\n this.ɵfac = function NzMenuModule_Factory(t) {\n return new (t || NzMenuModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NzMenuModule,\n imports: [NzMenuDirective, NzMenuItemComponent, NzSubMenuComponent, NzMenuDividerDirective, NzMenuGroupComponent, NzSubMenuTitleComponent, NzSubmenuInlineChildComponent, NzSubmenuNoneInlineChildComponent],\n exports: [NzMenuDirective, NzMenuItemComponent, NzSubMenuComponent, NzMenuDividerDirective, NzMenuGroupComponent]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [NzSubMenuComponent, NzMenuGroupComponent, NzSubMenuTitleComponent]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzMenuModule, [{\n type: NgModule,\n args: [{\n imports: [NzMenuDirective, NzMenuItemComponent, NzSubMenuComponent, NzMenuDividerDirective, NzMenuGroupComponent, NzSubMenuTitleComponent, NzSubmenuInlineChildComponent, NzSubmenuNoneInlineChildComponent],\n exports: [NzMenuDirective, NzMenuItemComponent, NzSubMenuComponent, NzMenuDividerDirective, NzMenuGroupComponent]\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MenuDropDownTokenFactory, MenuGroupFactory, MenuService, MenuServiceFactory, NzIsMenuInsideDropDownToken, NzMenuDirective, NzMenuDividerDirective, NzMenuGroupComponent, NzMenuItemComponent, NzMenuModule, NzMenuServiceLocalToken, NzSubMenuComponent, NzSubMenuTitleComponent, NzSubmenuInlineChildComponent, NzSubmenuNoneInlineChildComponent, NzSubmenuService };\n"], + "mappings": "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", + "names": [] +} diff --git a/.angular/cache/17.0.7/vite/deps/chunk-XAGDQPFO.js b/.angular/cache/17.0.7/vite/deps/chunk-XAGDQPFO.js new file mode 100644 index 0000000..3aaa506 --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/chunk-XAGDQPFO.js @@ -0,0 +1,213 @@ +import { + animate, + query, + stagger, + state, + style, + transition, + trigger +} from "./chunk-KI2JSLP6.js"; + +// node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-animation.mjs +var _AnimationDuration = class _AnimationDuration { + // Tooltip +}; +_AnimationDuration.SLOW = "0.3s"; +_AnimationDuration.BASE = "0.2s"; +_AnimationDuration.FAST = "0.1s"; +var AnimationDuration = _AnimationDuration; +var _AnimationCurves = class _AnimationCurves { +}; +_AnimationCurves.EASE_BASE_OUT = "cubic-bezier(0.7, 0.3, 0.1, 1)"; +_AnimationCurves.EASE_BASE_IN = "cubic-bezier(0.9, 0, 0.3, 0.7)"; +_AnimationCurves.EASE_OUT = "cubic-bezier(0.215, 0.61, 0.355, 1)"; +_AnimationCurves.EASE_IN = "cubic-bezier(0.55, 0.055, 0.675, 0.19)"; +_AnimationCurves.EASE_IN_OUT = "cubic-bezier(0.645, 0.045, 0.355, 1)"; +_AnimationCurves.EASE_OUT_BACK = "cubic-bezier(0.12, 0.4, 0.29, 1.46)"; +_AnimationCurves.EASE_IN_BACK = "cubic-bezier(0.71, -0.46, 0.88, 0.6)"; +_AnimationCurves.EASE_IN_OUT_BACK = "cubic-bezier(0.71, -0.46, 0.29, 1.46)"; +_AnimationCurves.EASE_OUT_CIRC = "cubic-bezier(0.08, 0.82, 0.17, 1)"; +_AnimationCurves.EASE_IN_CIRC = "cubic-bezier(0.6, 0.04, 0.98, 0.34)"; +_AnimationCurves.EASE_IN_OUT_CIRC = "cubic-bezier(0.78, 0.14, 0.15, 0.86)"; +_AnimationCurves.EASE_OUT_QUINT = "cubic-bezier(0.23, 1, 0.32, 1)"; +_AnimationCurves.EASE_IN_QUINT = "cubic-bezier(0.755, 0.05, 0.855, 0.06)"; +_AnimationCurves.EASE_IN_OUT_QUINT = "cubic-bezier(0.86, 0, 0.07, 1)"; +var AnimationCurves = _AnimationCurves; +var collapseMotion = trigger("collapseMotion", [ + state("expanded", style({ height: "*" })), + state("collapsed", style({ height: 0, overflow: "hidden" })), + state("hidden", style({ height: 0, overflow: "hidden", borderTopWidth: "0" })), + transition("expanded => collapsed", animate(`150ms ${AnimationCurves.EASE_IN_OUT}`)), + transition("expanded => hidden", animate(`150ms ${AnimationCurves.EASE_IN_OUT}`)), + transition("collapsed => expanded", animate(`150ms ${AnimationCurves.EASE_IN_OUT}`)), + transition("hidden => expanded", animate(`150ms ${AnimationCurves.EASE_IN_OUT}`)) +]); +var treeCollapseMotion = trigger("treeCollapseMotion", [ + transition("* => *", [ + query("nz-tree-node:leave,nz-tree-builtin-node:leave", [ + style({ overflow: "hidden" }), + stagger(0, [ + animate(`150ms ${AnimationCurves.EASE_IN_OUT}`, style({ height: 0, opacity: 0, "padding-bottom": 0 })) + ]) + ], { + optional: true + }), + query("nz-tree-node:enter,nz-tree-builtin-node:enter", [ + style({ overflow: "hidden", height: 0, opacity: 0, "padding-bottom": 0 }), + stagger(0, [ + animate(`150ms ${AnimationCurves.EASE_IN_OUT}`, style({ overflow: "hidden", height: "*", opacity: "*", "padding-bottom": "*" })) + ]) + ], { + optional: true + }) + ]) +]); +var fadeMotion = trigger("fadeMotion", [ + transition(":enter", [style({ opacity: 0 }), animate(`${AnimationDuration.BASE}`, style({ opacity: 1 }))]), + transition(":leave", [style({ opacity: 1 }), animate(`${AnimationDuration.BASE}`, style({ opacity: 0 }))]) +]); +var helpMotion = trigger("helpMotion", [ + transition(":enter", [ + style({ + opacity: 0, + transform: "translateY(-5px)" + }), + animate(`${AnimationDuration.SLOW} ${AnimationCurves.EASE_IN_OUT}`, style({ + opacity: 1, + transform: "translateY(0)" + })) + ]), + transition(":leave", [ + style({ + opacity: 1, + transform: "translateY(0)" + }), + animate(`${AnimationDuration.SLOW} ${AnimationCurves.EASE_IN_OUT}`, style({ + opacity: 0, + transform: "translateY(-5px)" + })) + ]) +]); +var moveUpMotion = trigger("moveUpMotion", [ + transition("* => enter", [ + style({ + transformOrigin: "0 0", + transform: "translateY(-100%)", + opacity: 0 + }), + animate(`${AnimationDuration.BASE}`, style({ + transformOrigin: "0 0", + transform: "translateY(0%)", + opacity: 1 + })) + ]), + transition("* => leave", [ + style({ + transformOrigin: "0 0", + transform: "translateY(0%)", + opacity: 1 + }), + animate(`${AnimationDuration.BASE}`, style({ + transformOrigin: "0 0", + transform: "translateY(-100%)", + opacity: 0 + })) + ]) +]); +var notificationMotion = trigger("notificationMotion", [ + state("enterRight", style({ opacity: 1, transform: "translateX(0)" })), + transition("* => enterRight", [style({ opacity: 0, transform: "translateX(5%)" }), animate("100ms linear")]), + state("enterLeft", style({ opacity: 1, transform: "translateX(0)" })), + transition("* => enterLeft", [style({ opacity: 0, transform: "translateX(-5%)" }), animate("100ms linear")]), + state("enterTop", style({ opacity: 1, transform: "translateY(0)" })), + transition("* => enterTop", [style({ opacity: 0, transform: "translateY(-5%)" }), animate("100ms linear")]), + state("enterBottom", style({ opacity: 1, transform: "translateY(0)" })), + transition("* => enterBottom", [style({ opacity: 0, transform: "translateY(5%)" }), animate("100ms linear")]), + state("leave", style({ + opacity: 0, + transform: "scaleY(0.8)", + transformOrigin: "0% 0%" + })), + transition("* => leave", [ + style({ + opacity: 1, + transform: "scaleY(1)", + transformOrigin: "0% 0%" + }), + animate("100ms linear") + ]) +]); +var ANIMATION_TRANSITION_IN = `${AnimationDuration.BASE} ${AnimationCurves.EASE_OUT_QUINT}`; +var ANIMATION_TRANSITION_OUT = `${AnimationDuration.BASE} ${AnimationCurves.EASE_IN_QUINT}`; +var slideMotion = trigger("slideMotion", [ + state("void", style({ + opacity: 0, + transform: "scaleY(0.8)" + })), + state("enter", style({ + opacity: 1, + transform: "scaleY(1)" + })), + transition("void => *", [animate(ANIMATION_TRANSITION_IN)]), + transition("* => void", [animate(ANIMATION_TRANSITION_OUT)]) +]); +var slideAlertMotion = trigger("slideAlertMotion", [ + transition(":leave", [ + style({ opacity: 1, transform: "scaleY(1)", transformOrigin: "0% 0%" }), + animate(`${AnimationDuration.SLOW} ${AnimationCurves.EASE_IN_OUT_CIRC}`, style({ + opacity: 0, + transform: "scaleY(0)", + transformOrigin: "0% 0%" + })) + ]) +]); +var zoomBigMotion = trigger("zoomBigMotion", [ + transition("void => active", [ + style({ opacity: 0, transform: "scale(0.8)" }), + animate(`${AnimationDuration.BASE} ${AnimationCurves.EASE_OUT_CIRC}`, style({ + opacity: 1, + transform: "scale(1)" + })) + ]), + transition("active => void", [ + style({ opacity: 1, transform: "scale(1)" }), + animate(`${AnimationDuration.BASE} ${AnimationCurves.EASE_IN_OUT_CIRC}`, style({ + opacity: 0, + transform: "scale(0.8)" + })) + ]) +]); +var zoomBadgeMotion = trigger("zoomBadgeMotion", [ + transition(":enter", [ + style({ opacity: 0, transform: "scale(0) translate(50%, -50%)" }), + animate(`${AnimationDuration.SLOW} ${AnimationCurves.EASE_OUT_BACK}`, style({ + opacity: 1, + transform: "scale(1) translate(50%, -50%)" + })) + ]), + transition(":leave", [ + style({ opacity: 1, transform: "scale(1) translate(50%, -50%)" }), + animate(`${AnimationDuration.SLOW} ${AnimationCurves.EASE_IN_BACK}`, style({ + opacity: 0, + transform: "scale(0) translate(50%, -50%)" + })) + ]) +]); +var thumbMotion = trigger("thumbMotion", [ + state("from", style({ transform: "translateX({{ transform }}px)", width: "{{ width }}px" }), { + params: { transform: 0, width: 0 } + }), + state("to", style({ transform: "translateX({{ transform }}px)", width: "{{ width }}px" }), { + params: { transform: 100, width: 0 } + }), + transition("from => to", animate(`300ms ${AnimationCurves.EASE_IN_OUT}`)) +]); + +export { + collapseMotion, + helpMotion, + moveUpMotion, + slideMotion, + zoomBigMotion +}; +//# sourceMappingURL=chunk-XAGDQPFO.js.map diff --git a/.angular/cache/17.0.7/vite/deps/chunk-XAGDQPFO.js.map b/.angular/cache/17.0.7/vite/deps/chunk-XAGDQPFO.js.map new file mode 100644 index 0000000..106a878 --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/chunk-XAGDQPFO.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-animation.mjs"], + "sourcesContent": ["import { style, state, animate, transition, trigger, stagger, query } from '@angular/animations';\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass AnimationDuration {\n static { this.SLOW = '0.3s'; } // Modal\n static { this.BASE = '0.2s'; }\n static { this.FAST = '0.1s'; } // Tooltip\n}\nclass AnimationCurves {\n static { this.EASE_BASE_OUT = 'cubic-bezier(0.7, 0.3, 0.1, 1)'; }\n static { this.EASE_BASE_IN = 'cubic-bezier(0.9, 0, 0.3, 0.7)'; }\n static { this.EASE_OUT = 'cubic-bezier(0.215, 0.61, 0.355, 1)'; }\n static { this.EASE_IN = 'cubic-bezier(0.55, 0.055, 0.675, 0.19)'; }\n static { this.EASE_IN_OUT = 'cubic-bezier(0.645, 0.045, 0.355, 1)'; }\n static { this.EASE_OUT_BACK = 'cubic-bezier(0.12, 0.4, 0.29, 1.46)'; }\n static { this.EASE_IN_BACK = 'cubic-bezier(0.71, -0.46, 0.88, 0.6)'; }\n static { this.EASE_IN_OUT_BACK = 'cubic-bezier(0.71, -0.46, 0.29, 1.46)'; }\n static { this.EASE_OUT_CIRC = 'cubic-bezier(0.08, 0.82, 0.17, 1)'; }\n static { this.EASE_IN_CIRC = 'cubic-bezier(0.6, 0.04, 0.98, 0.34)'; }\n static { this.EASE_IN_OUT_CIRC = 'cubic-bezier(0.78, 0.14, 0.15, 0.86)'; }\n static { this.EASE_OUT_QUINT = 'cubic-bezier(0.23, 1, 0.32, 1)'; }\n static { this.EASE_IN_QUINT = 'cubic-bezier(0.755, 0.05, 0.855, 0.06)'; }\n static { this.EASE_IN_OUT_QUINT = 'cubic-bezier(0.86, 0, 0.07, 1)'; }\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst collapseMotion = trigger('collapseMotion', [\n state('expanded', style({ height: '*' })),\n state('collapsed', style({ height: 0, overflow: 'hidden' })),\n state('hidden', style({ height: 0, overflow: 'hidden', borderTopWidth: '0' })),\n transition('expanded => collapsed', animate(`150ms ${AnimationCurves.EASE_IN_OUT}`)),\n transition('expanded => hidden', animate(`150ms ${AnimationCurves.EASE_IN_OUT}`)),\n transition('collapsed => expanded', animate(`150ms ${AnimationCurves.EASE_IN_OUT}`)),\n transition('hidden => expanded', animate(`150ms ${AnimationCurves.EASE_IN_OUT}`))\n]);\nconst treeCollapseMotion = trigger('treeCollapseMotion', [\n transition('* => *', [\n query('nz-tree-node:leave,nz-tree-builtin-node:leave', [\n style({ overflow: 'hidden' }),\n stagger(0, [\n animate(`150ms ${AnimationCurves.EASE_IN_OUT}`, style({ height: 0, opacity: 0, 'padding-bottom': 0 }))\n ])\n ], {\n optional: true\n }),\n query('nz-tree-node:enter,nz-tree-builtin-node:enter', [\n style({ overflow: 'hidden', height: 0, opacity: 0, 'padding-bottom': 0 }),\n stagger(0, [\n animate(`150ms ${AnimationCurves.EASE_IN_OUT}`, style({ overflow: 'hidden', height: '*', opacity: '*', 'padding-bottom': '*' }))\n ])\n ], {\n optional: true\n })\n ])\n]);\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst fadeMotion = trigger('fadeMotion', [\n transition(':enter', [style({ opacity: 0 }), animate(`${AnimationDuration.BASE}`, style({ opacity: 1 }))]),\n transition(':leave', [style({ opacity: 1 }), animate(`${AnimationDuration.BASE}`, style({ opacity: 0 }))])\n]);\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst helpMotion = trigger('helpMotion', [\n transition(':enter', [\n style({\n opacity: 0,\n transform: 'translateY(-5px)'\n }),\n animate(`${AnimationDuration.SLOW} ${AnimationCurves.EASE_IN_OUT}`, style({\n opacity: 1,\n transform: 'translateY(0)'\n }))\n ]),\n transition(':leave', [\n style({\n opacity: 1,\n transform: 'translateY(0)'\n }),\n animate(`${AnimationDuration.SLOW} ${AnimationCurves.EASE_IN_OUT}`, style({\n opacity: 0,\n transform: 'translateY(-5px)'\n }))\n ])\n]);\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst moveUpMotion = trigger('moveUpMotion', [\n transition('* => enter', [\n style({\n transformOrigin: '0 0',\n transform: 'translateY(-100%)',\n opacity: 0\n }),\n animate(`${AnimationDuration.BASE}`, style({\n transformOrigin: '0 0',\n transform: 'translateY(0%)',\n opacity: 1\n }))\n ]),\n transition('* => leave', [\n style({\n transformOrigin: '0 0',\n transform: 'translateY(0%)',\n opacity: 1\n }),\n animate(`${AnimationDuration.BASE}`, style({\n transformOrigin: '0 0',\n transform: 'translateY(-100%)',\n opacity: 0\n }))\n ])\n]);\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst notificationMotion = trigger('notificationMotion', [\n state('enterRight', style({ opacity: 1, transform: 'translateX(0)' })),\n transition('* => enterRight', [style({ opacity: 0, transform: 'translateX(5%)' }), animate('100ms linear')]),\n state('enterLeft', style({ opacity: 1, transform: 'translateX(0)' })),\n transition('* => enterLeft', [style({ opacity: 0, transform: 'translateX(-5%)' }), animate('100ms linear')]),\n state('enterTop', style({ opacity: 1, transform: 'translateY(0)' })),\n transition('* => enterTop', [style({ opacity: 0, transform: 'translateY(-5%)' }), animate('100ms linear')]),\n state('enterBottom', style({ opacity: 1, transform: 'translateY(0)' })),\n transition('* => enterBottom', [style({ opacity: 0, transform: 'translateY(5%)' }), animate('100ms linear')]),\n state('leave', style({\n opacity: 0,\n transform: 'scaleY(0.8)',\n transformOrigin: '0% 0%'\n })),\n transition('* => leave', [\n style({\n opacity: 1,\n transform: 'scaleY(1)',\n transformOrigin: '0% 0%'\n }),\n animate('100ms linear')\n ])\n]);\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst ANIMATION_TRANSITION_IN = `${AnimationDuration.BASE} ${AnimationCurves.EASE_OUT_QUINT}`;\nconst ANIMATION_TRANSITION_OUT = `${AnimationDuration.BASE} ${AnimationCurves.EASE_IN_QUINT}`;\nconst slideMotion = trigger('slideMotion', [\n state('void', style({\n opacity: 0,\n transform: 'scaleY(0.8)'\n })),\n state('enter', style({\n opacity: 1,\n transform: 'scaleY(1)'\n })),\n transition('void => *', [animate(ANIMATION_TRANSITION_IN)]),\n transition('* => void', [animate(ANIMATION_TRANSITION_OUT)])\n]);\nconst slideAlertMotion = trigger('slideAlertMotion', [\n transition(':leave', [\n style({ opacity: 1, transform: 'scaleY(1)', transformOrigin: '0% 0%' }),\n animate(`${AnimationDuration.SLOW} ${AnimationCurves.EASE_IN_OUT_CIRC}`, style({\n opacity: 0,\n transform: 'scaleY(0)',\n transformOrigin: '0% 0%'\n }))\n ])\n]);\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst zoomBigMotion = trigger('zoomBigMotion', [\n transition('void => active', [\n style({ opacity: 0, transform: 'scale(0.8)' }),\n animate(`${AnimationDuration.BASE} ${AnimationCurves.EASE_OUT_CIRC}`, style({\n opacity: 1,\n transform: 'scale(1)'\n }))\n ]),\n transition('active => void', [\n style({ opacity: 1, transform: 'scale(1)' }),\n animate(`${AnimationDuration.BASE} ${AnimationCurves.EASE_IN_OUT_CIRC}`, style({\n opacity: 0,\n transform: 'scale(0.8)'\n }))\n ])\n]);\nconst zoomBadgeMotion = trigger('zoomBadgeMotion', [\n transition(':enter', [\n style({ opacity: 0, transform: 'scale(0) translate(50%, -50%)' }),\n animate(`${AnimationDuration.SLOW} ${AnimationCurves.EASE_OUT_BACK}`, style({\n opacity: 1,\n transform: 'scale(1) translate(50%, -50%)'\n }))\n ]),\n transition(':leave', [\n style({ opacity: 1, transform: 'scale(1) translate(50%, -50%)' }),\n animate(`${AnimationDuration.SLOW} ${AnimationCurves.EASE_IN_BACK}`, style({\n opacity: 0,\n transform: 'scale(0) translate(50%, -50%)'\n }))\n ])\n]);\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst thumbMotion = trigger('thumbMotion', [\n state('from', style({ transform: 'translateX({{ transform }}px)', width: '{{ width }}px' }), {\n params: { transform: 0, width: 0 }\n }),\n state('to', style({ transform: 'translateX({{ transform }}px)', width: '{{ width }}px' }), {\n params: { transform: 100, width: 0 }\n }),\n transition('from => to', animate(`300ms ${AnimationCurves.EASE_IN_OUT}`))\n]);\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AnimationCurves, AnimationDuration, collapseMotion, fadeMotion, helpMotion, moveUpMotion, notificationMotion, slideAlertMotion, slideMotion, thumbMotion, treeCollapseMotion, zoomBadgeMotion, zoomBigMotion };\n\n"], + "mappings": "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", + "names": [] +} diff --git a/.angular/cache/17.0.7/vite/deps/chunk-NOIPAY33.js b/.angular/cache/17.0.7/vite/deps/chunk-ZHMJ6SNN.js similarity index 99% rename from .angular/cache/17.0.7/vite/deps/chunk-NOIPAY33.js rename to .angular/cache/17.0.7/vite/deps/chunk-ZHMJ6SNN.js index 4266708..f472c50 100644 --- a/.angular/cache/17.0.7/vite/deps/chunk-NOIPAY33.js +++ b/.angular/cache/17.0.7/vite/deps/chunk-ZHMJ6SNN.js @@ -2,7 +2,7 @@ import { canUseDom, updateCSS, warn -} from "./chunk-7XTJNSRU.js"; +} from "./chunk-M5GY4FCO.js"; import { CSP_NONCE, Inject, @@ -1222,4 +1222,4 @@ export { NzConfigService, WithConfig }; -//# sourceMappingURL=chunk-NOIPAY33.js.map +//# sourceMappingURL=chunk-ZHMJ6SNN.js.map diff --git a/.angular/cache/17.0.7/vite/deps/chunk-NOIPAY33.js.map b/.angular/cache/17.0.7/vite/deps/chunk-ZHMJ6SNN.js.map similarity index 100% rename from .angular/cache/17.0.7/vite/deps/chunk-NOIPAY33.js.map rename to .angular/cache/17.0.7/vite/deps/chunk-ZHMJ6SNN.js.map diff --git a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_breadcrumb.js b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_breadcrumb.js new file mode 100644 index 0000000..09c444b --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_breadcrumb.js @@ -0,0 +1,505 @@ +import { + NzDropDownDirective, + NzDropDownModule +} from "./chunk-2CQTWQUI.js"; +import "./chunk-WKTPWT5U.js"; +import { + ActivatedRoute, + NavigationEnd, + PRIMARY_OUTLET, + Router +} from "./chunk-CZEXXPIB.js"; +import "./chunk-6RXUTAFR.js"; +import "./chunk-XAGDQPFO.js"; +import "./chunk-D5ODNR6D.js"; +import "./chunk-55A2ZGND.js"; +import "./chunk-6U656R5M.js"; +import { + NzOutletModule, + NzStringTemplateOutletDirective +} from "./chunk-VOD2PKZN.js"; +import "./chunk-JGP5BR6B.js"; +import "./chunk-WB57DPWD.js"; +import "./chunk-KMGBCF4T.js"; +import { + NzIconDirective, + NzIconModule +} from "./chunk-VWMHIMW7.js"; +import "./chunk-ZHMJ6SNN.js"; +import { + Directionality +} from "./chunk-6NZ2BEBG.js"; +import "./chunk-IAC53GOD.js"; +import { + InputBoolean, + PREFIX +} from "./chunk-M5GY4FCO.js"; +import "./chunk-ECVKT3ZH.js"; +import "./chunk-KI2JSLP6.js"; +import "./chunk-Y4CEYMY2.js"; +import "./chunk-X7WBA24Z.js"; +import { + NgForOf, + NgIf, + NgTemplateOutlet +} from "./chunk-OSQBUYO6.js"; +import { + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + ElementRef, + Injector, + Input, + NgModule, + Optional, + Renderer2, + Subject, + ViewEncapsulation$1, + __decorate, + filter, + setClassMetadata, + startWith, + takeUntil, + ɵɵProvidersFeature, + ɵɵStandaloneFeature, + ɵɵadvance, + ɵɵattribute, + ɵɵdefineComponent, + ɵɵdefineInjector, + ɵɵdefineNgModule, + ɵɵdirectiveInject, + ɵɵelement, + ɵɵelementContainerEnd, + ɵɵelementContainerStart, + ɵɵelementEnd, + ɵɵelementStart, + ɵɵgetCurrentView, + ɵɵlistener, + ɵɵnextContext, + ɵɵprojection, + ɵɵprojectionDef, + ɵɵproperty, + ɵɵreference, + ɵɵresetView, + ɵɵrestoreView, + ɵɵsanitizeUrl, + ɵɵtemplate, + ɵɵtemplateRefExtractor, + ɵɵtext, + ɵɵtextInterpolate, + ɵɵtextInterpolate1 +} from "./chunk-FGESKT7O.js"; +import "./chunk-HSNDBVJ3.js"; + +// node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-breadcrumb.mjs +var _c0 = ["*"]; +function NzBreadCrumbItemComponent_ng_container_0_ng_template_2_Template(rf, ctx) { +} +function NzBreadCrumbItemComponent_ng_container_0_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementContainerStart(0); + ɵɵelementStart(1, "span", 3); + ɵɵtemplate(2, NzBreadCrumbItemComponent_ng_container_0_ng_template_2_Template, 0, 0, "ng-template", 4); + ɵɵelement(3, "span", 5); + ɵɵelementEnd(); + ɵɵelementContainerEnd(); + } + if (rf & 2) { + const ctx_r0 = ɵɵnextContext(); + const _r2 = ɵɵreference(2); + ɵɵadvance(1); + ɵɵproperty("nzDropdownMenu", ctx_r0.nzOverlay); + ɵɵadvance(1); + ɵɵproperty("ngTemplateOutlet", _r2); + } +} +function NzBreadCrumbItemComponent_ng_template_1_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementStart(0, "span", 6); + ɵɵprojection(1); + ɵɵelementEnd(); + } +} +function NzBreadCrumbItemComponent_nz_breadcrumb_separator_3_ng_container_1_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementContainerStart(0); + ɵɵtext(1); + ɵɵelementContainerEnd(); + } + if (rf & 2) { + const ctx_r5 = ɵɵnextContext(2); + ɵɵadvance(1); + ɵɵtextInterpolate1(" ", ctx_r5.nzBreadCrumbComponent.nzSeparator, " "); + } +} +function NzBreadCrumbItemComponent_nz_breadcrumb_separator_3_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementStart(0, "nz-breadcrumb-separator"); + ɵɵtemplate(1, NzBreadCrumbItemComponent_nz_breadcrumb_separator_3_ng_container_1_Template, 2, 1, "ng-container", 7); + ɵɵelementEnd(); + } + if (rf & 2) { + const ctx_r3 = ɵɵnextContext(); + ɵɵadvance(1); + ɵɵproperty("nzStringTemplateOutlet", ctx_r3.nzBreadCrumbComponent.nzSeparator); + } +} +function NzBreadCrumbComponent_ng_container_1_nz_breadcrumb_item_1_Template(rf, ctx) { + if (rf & 1) { + const _r4 = ɵɵgetCurrentView(); + ɵɵelementStart(0, "nz-breadcrumb-item")(1, "a", 2); + ɵɵlistener("click", function NzBreadCrumbComponent_ng_container_1_nz_breadcrumb_item_1_Template_a_click_1_listener($event) { + const restoredCtx = ɵɵrestoreView(_r4); + const breadcrumb_r2 = restoredCtx.$implicit; + const ctx_r3 = ɵɵnextContext(2); + return ɵɵresetView(ctx_r3.navigate(breadcrumb_r2.url, $event)); + }); + ɵɵtext(2); + ɵɵelementEnd()(); + } + if (rf & 2) { + const breadcrumb_r2 = ctx.$implicit; + ɵɵadvance(1); + ɵɵattribute("href", breadcrumb_r2.url, ɵɵsanitizeUrl); + ɵɵadvance(1); + ɵɵtextInterpolate(breadcrumb_r2.label); + } +} +function NzBreadCrumbComponent_ng_container_1_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementContainerStart(0); + ɵɵtemplate(1, NzBreadCrumbComponent_ng_container_1_nz_breadcrumb_item_1_Template, 3, 2, "nz-breadcrumb-item", 1); + ɵɵelementContainerEnd(); + } + if (rf & 2) { + const ctx_r0 = ɵɵnextContext(); + ɵɵadvance(1); + ɵɵproperty("ngForOf", ctx_r0.breadcrumbs); + } +} +var _NzBreadCrumbSeparatorComponent = class _NzBreadCrumbSeparatorComponent { +}; +_NzBreadCrumbSeparatorComponent.ɵfac = function NzBreadCrumbSeparatorComponent_Factory(t) { + return new (t || _NzBreadCrumbSeparatorComponent)(); +}; +_NzBreadCrumbSeparatorComponent.ɵcmp = ɵɵdefineComponent({ + type: _NzBreadCrumbSeparatorComponent, + selectors: [["nz-breadcrumb-separator"]], + hostAttrs: [1, "ant-breadcrumb-separator"], + exportAs: ["nzBreadcrumbSeparator"], + standalone: true, + features: [ɵɵStandaloneFeature], + ngContentSelectors: _c0, + decls: 1, + vars: 0, + template: function NzBreadCrumbSeparatorComponent_Template(rf, ctx) { + if (rf & 1) { + ɵɵprojectionDef(); + ɵɵprojection(0); + } + }, + encapsulation: 2 +}); +var NzBreadCrumbSeparatorComponent = _NzBreadCrumbSeparatorComponent; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzBreadCrumbSeparatorComponent, [{ + type: Component, + args: [{ + selector: "nz-breadcrumb-separator", + exportAs: "nzBreadcrumbSeparator", + standalone: true, + template: ``, + host: { + class: "ant-breadcrumb-separator" + } + }] + }], null, null); +})(); +var NzBreadcrumb = class { +}; +var _NzBreadCrumbItemComponent = class _NzBreadCrumbItemComponent { + constructor(nzBreadCrumbComponent) { + this.nzBreadCrumbComponent = nzBreadCrumbComponent; + } +}; +_NzBreadCrumbItemComponent.ɵfac = function NzBreadCrumbItemComponent_Factory(t) { + return new (t || _NzBreadCrumbItemComponent)(ɵɵdirectiveInject(NzBreadcrumb)); +}; +_NzBreadCrumbItemComponent.ɵcmp = ɵɵdefineComponent({ + type: _NzBreadCrumbItemComponent, + selectors: [["nz-breadcrumb-item"]], + inputs: { + nzOverlay: "nzOverlay" + }, + exportAs: ["nzBreadcrumbItem"], + standalone: true, + features: [ɵɵStandaloneFeature], + ngContentSelectors: _c0, + decls: 4, + vars: 3, + consts: [[4, "ngIf", "ngIfElse"], ["noMenuTpl", ""], [4, "ngIf"], ["nz-dropdown", "", 1, "ant-breadcrumb-overlay-link", 3, "nzDropdownMenu"], [3, "ngTemplateOutlet"], ["nz-icon", "", "nzType", "down"], [1, "ant-breadcrumb-link"], [4, "nzStringTemplateOutlet"]], + template: function NzBreadCrumbItemComponent_Template(rf, ctx) { + if (rf & 1) { + ɵɵprojectionDef(); + ɵɵtemplate(0, NzBreadCrumbItemComponent_ng_container_0_Template, 4, 2, "ng-container", 0)(1, NzBreadCrumbItemComponent_ng_template_1_Template, 2, 0, "ng-template", null, 1, ɵɵtemplateRefExtractor)(3, NzBreadCrumbItemComponent_nz_breadcrumb_separator_3_Template, 2, 1, "nz-breadcrumb-separator", 2); + } + if (rf & 2) { + const _r2 = ɵɵreference(2); + ɵɵproperty("ngIf", !!ctx.nzOverlay)("ngIfElse", _r2); + ɵɵadvance(3); + ɵɵproperty("ngIf", ctx.nzBreadCrumbComponent.nzSeparator); + } + }, + dependencies: [NgIf, NgTemplateOutlet, NzBreadCrumbSeparatorComponent, NzDropDownModule, NzDropDownDirective, NzIconModule, NzIconDirective, NzOutletModule, NzStringTemplateOutletDirective], + encapsulation: 2, + changeDetection: 0 +}); +var NzBreadCrumbItemComponent = _NzBreadCrumbItemComponent; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzBreadCrumbItemComponent, [{ + type: Component, + args: [{ + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation$1.None, + selector: "nz-breadcrumb-item", + exportAs: "nzBreadcrumbItem", + preserveWhitespaces: false, + standalone: true, + imports: [NgIf, NgTemplateOutlet, NzBreadCrumbSeparatorComponent, NzDropDownModule, NzIconModule, NzOutletModule], + template: ` + + + + + + + + + + + + + + + + {{ nzBreadCrumbComponent.nzSeparator }} + + + ` + }] + }], () => [{ + type: NzBreadcrumb + }], { + nzOverlay: [{ + type: Input + }] + }); +})(); +var _NzBreadCrumbComponent = class _NzBreadCrumbComponent { + constructor(injector, cdr, elementRef, renderer, directionality) { + this.injector = injector; + this.cdr = cdr; + this.elementRef = elementRef; + this.renderer = renderer; + this.directionality = directionality; + this.nzAutoGenerate = false; + this.nzSeparator = "/"; + this.nzRouteLabel = "breadcrumb"; + this.nzRouteLabelFn = (label) => label; + this.breadcrumbs = []; + this.dir = "ltr"; + this.destroy$ = new Subject(); + } + ngOnInit() { + if (this.nzAutoGenerate) { + this.registerRouterChange(); + } + this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction) => { + this.dir = direction; + this.prepareComponentForRtl(); + this.cdr.detectChanges(); + }); + this.dir = this.directionality.value; + this.prepareComponentForRtl(); + } + ngOnDestroy() { + this.destroy$.next(); + this.destroy$.complete(); + } + navigate(url, e) { + e.preventDefault(); + this.injector.get(Router).navigateByUrl(url); + } + registerRouterChange() { + try { + const router = this.injector.get(Router); + const activatedRoute = this.injector.get(ActivatedRoute); + router.events.pipe( + filter((e) => e instanceof NavigationEnd), + takeUntil(this.destroy$), + startWith(true) + // trigger initial render + ).subscribe(() => { + this.breadcrumbs = this.getBreadcrumbs(activatedRoute.root); + this.cdr.markForCheck(); + }); + } catch (e) { + throw new Error(`${PREFIX} You should import RouterModule if you want to use 'NzAutoGenerate'.`); + } + } + getBreadcrumbs(route, url = "", breadcrumbs = []) { + const children = route.children; + if (children.length === 0) { + return breadcrumbs; + } + for (const child of children) { + if (child.outlet === PRIMARY_OUTLET) { + const routeUrl = child.snapshot.url.map((segment) => segment.path).filter((path) => path).join("/"); + const nextUrl = routeUrl ? `${url}/${routeUrl}` : url; + const breadcrumbLabel = this.nzRouteLabelFn(child.snapshot.data[this.nzRouteLabel]); + if (routeUrl && breadcrumbLabel) { + const breadcrumb = { + label: breadcrumbLabel, + params: child.snapshot.params, + url: nextUrl + }; + breadcrumbs.push(breadcrumb); + } + return this.getBreadcrumbs(child, nextUrl, breadcrumbs); + } + } + return breadcrumbs; + } + prepareComponentForRtl() { + if (this.dir === "rtl") { + this.renderer.addClass(this.elementRef.nativeElement, "ant-breadcrumb-rtl"); + } else { + this.renderer.removeClass(this.elementRef.nativeElement, "ant-breadcrumb-rtl"); + } + } +}; +_NzBreadCrumbComponent.ɵfac = function NzBreadCrumbComponent_Factory(t) { + return new (t || _NzBreadCrumbComponent)(ɵɵdirectiveInject(Injector), ɵɵdirectiveInject(ChangeDetectorRef), ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(Renderer2), ɵɵdirectiveInject(Directionality, 8)); +}; +_NzBreadCrumbComponent.ɵcmp = ɵɵdefineComponent({ + type: _NzBreadCrumbComponent, + selectors: [["nz-breadcrumb"]], + hostAttrs: [1, "ant-breadcrumb"], + inputs: { + nzAutoGenerate: "nzAutoGenerate", + nzSeparator: "nzSeparator", + nzRouteLabel: "nzRouteLabel", + nzRouteLabelFn: "nzRouteLabelFn" + }, + exportAs: ["nzBreadcrumb"], + standalone: true, + features: [ɵɵProvidersFeature([{ + provide: NzBreadcrumb, + useExisting: _NzBreadCrumbComponent + }]), ɵɵStandaloneFeature], + ngContentSelectors: _c0, + decls: 2, + vars: 1, + consts: [[4, "ngIf"], [4, "ngFor", "ngForOf"], [3, "click"]], + template: function NzBreadCrumbComponent_Template(rf, ctx) { + if (rf & 1) { + ɵɵprojectionDef(); + ɵɵprojection(0); + ɵɵtemplate(1, NzBreadCrumbComponent_ng_container_1_Template, 2, 1, "ng-container", 0); + } + if (rf & 2) { + ɵɵadvance(1); + ɵɵproperty("ngIf", ctx.nzAutoGenerate && ctx.breadcrumbs.length); + } + }, + dependencies: [NgForOf, NgIf, NzBreadCrumbItemComponent], + encapsulation: 2, + changeDetection: 0 +}); +var NzBreadCrumbComponent = _NzBreadCrumbComponent; +__decorate([InputBoolean()], NzBreadCrumbComponent.prototype, "nzAutoGenerate", void 0); +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzBreadCrumbComponent, [{ + type: Component, + args: [{ + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation$1.None, + selector: "nz-breadcrumb", + exportAs: "nzBreadcrumb", + preserveWhitespaces: false, + providers: [{ + provide: NzBreadcrumb, + useExisting: NzBreadCrumbComponent + }], + standalone: true, + imports: [NgForOf, NgIf, NzBreadCrumbItemComponent], + template: ` + + + + {{ breadcrumb.label }} + + + `, + host: { + class: "ant-breadcrumb" + } + }] + }], () => [{ + type: Injector + }, { + type: ChangeDetectorRef + }, { + type: ElementRef + }, { + type: Renderer2 + }, { + type: Directionality, + decorators: [{ + type: Optional + }] + }], { + nzAutoGenerate: [{ + type: Input + }], + nzSeparator: [{ + type: Input + }], + nzRouteLabel: [{ + type: Input + }], + nzRouteLabelFn: [{ + type: Input + }] + }); +})(); +var _NzBreadCrumbModule = class _NzBreadCrumbModule { +}; +_NzBreadCrumbModule.ɵfac = function NzBreadCrumbModule_Factory(t) { + return new (t || _NzBreadCrumbModule)(); +}; +_NzBreadCrumbModule.ɵmod = ɵɵdefineNgModule({ + type: _NzBreadCrumbModule, + imports: [NzBreadCrumbComponent, NzBreadCrumbItemComponent, NzBreadCrumbSeparatorComponent], + exports: [NzBreadCrumbComponent, NzBreadCrumbItemComponent, NzBreadCrumbSeparatorComponent] +}); +_NzBreadCrumbModule.ɵinj = ɵɵdefineInjector({ + imports: [NzBreadCrumbComponent, NzBreadCrumbItemComponent] +}); +var NzBreadCrumbModule = _NzBreadCrumbModule; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzBreadCrumbModule, [{ + type: NgModule, + args: [{ + imports: [NzBreadCrumbComponent, NzBreadCrumbItemComponent, NzBreadCrumbSeparatorComponent], + exports: [NzBreadCrumbComponent, NzBreadCrumbItemComponent, NzBreadCrumbSeparatorComponent] + }] + }], null, null); +})(); +export { + NzBreadCrumbComponent, + NzBreadCrumbItemComponent, + NzBreadCrumbModule, + NzBreadCrumbSeparatorComponent +}; +//# sourceMappingURL=ng-zorro-antd_breadcrumb.js.map diff --git a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_breadcrumb.js.map b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_breadcrumb.js.map new file mode 100644 index 0000000..bce54cf --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_breadcrumb.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-breadcrumb.mjs"], + "sourcesContent": ["import { NgIf, NgTemplateOutlet, NgFor } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Optional, NgModule } from '@angular/core';\nimport * as i4 from 'ng-zorro-antd/core/outlet';\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport * as i2 from 'ng-zorro-antd/dropdown';\nimport { NzDropDownModule } from 'ng-zorro-antd/dropdown';\nimport * as i3 from 'ng-zorro-antd/icon';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { __decorate } from 'tslib';\nimport { Router, ActivatedRoute, NavigationEnd, PRIMARY_OUTLET } from '@angular/router';\nimport { Subject } from 'rxjs';\nimport { takeUntil, filter, startWith } from 'rxjs/operators';\nimport { PREFIX } from 'ng-zorro-antd/core/logger';\nimport { InputBoolean } from 'ng-zorro-antd/core/util';\nimport * as i1 from '@angular/cdk/bidi';\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst _c0 = [\"*\"];\nfunction NzBreadCrumbItemComponent_ng_container_0_ng_template_2_Template(rf, ctx) {}\nfunction NzBreadCrumbItemComponent_ng_container_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"span\", 3);\n i0.ɵɵtemplate(2, NzBreadCrumbItemComponent_ng_container_0_ng_template_2_Template, 0, 0, \"ng-template\", 4);\n i0.ɵɵelement(3, \"span\", 5);\n i0.ɵɵelementEnd();\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n const _r2 = i0.ɵɵreference(2);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"nzDropdownMenu\", ctx_r0.nzOverlay);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngTemplateOutlet\", _r2);\n }\n}\nfunction NzBreadCrumbItemComponent_ng_template_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 6);\n i0.ɵɵprojection(1);\n i0.ɵɵelementEnd();\n }\n}\nfunction NzBreadCrumbItemComponent_nz_breadcrumb_separator_3_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtext(1);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r5 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(1);\n i0.ɵɵtextInterpolate1(\" \", ctx_r5.nzBreadCrumbComponent.nzSeparator, \" \");\n }\n}\nfunction NzBreadCrumbItemComponent_nz_breadcrumb_separator_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"nz-breadcrumb-separator\");\n i0.ɵɵtemplate(1, NzBreadCrumbItemComponent_nz_breadcrumb_separator_3_ng_container_1_Template, 2, 1, \"ng-container\", 7);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r3 = i0.ɵɵnextContext();\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"nzStringTemplateOutlet\", ctx_r3.nzBreadCrumbComponent.nzSeparator);\n }\n}\nfunction NzBreadCrumbComponent_ng_container_1_nz_breadcrumb_item_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r4 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"nz-breadcrumb-item\")(1, \"a\", 2);\n i0.ɵɵlistener(\"click\", function NzBreadCrumbComponent_ng_container_1_nz_breadcrumb_item_1_Template_a_click_1_listener($event) {\n const restoredCtx = i0.ɵɵrestoreView(_r4);\n const breadcrumb_r2 = restoredCtx.$implicit;\n const ctx_r3 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r3.navigate(breadcrumb_r2.url, $event));\n });\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const breadcrumb_r2 = ctx.$implicit;\n i0.ɵɵadvance(1);\n i0.ɵɵattribute(\"href\", breadcrumb_r2.url, i0.ɵɵsanitizeUrl);\n i0.ɵɵadvance(1);\n i0.ɵɵtextInterpolate(breadcrumb_r2.label);\n }\n}\nfunction NzBreadCrumbComponent_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, NzBreadCrumbComponent_ng_container_1_nz_breadcrumb_item_1_Template, 3, 2, \"nz-breadcrumb-item\", 1);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngForOf\", ctx_r0.breadcrumbs);\n }\n}\nclass NzBreadCrumbSeparatorComponent {\n static {\n this.ɵfac = function NzBreadCrumbSeparatorComponent_Factory(t) {\n return new (t || NzBreadCrumbSeparatorComponent)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzBreadCrumbSeparatorComponent,\n selectors: [[\"nz-breadcrumb-separator\"]],\n hostAttrs: [1, \"ant-breadcrumb-separator\"],\n exportAs: [\"nzBreadcrumbSeparator\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n template: function NzBreadCrumbSeparatorComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzBreadCrumbSeparatorComponent, [{\n type: Component,\n args: [{\n selector: 'nz-breadcrumb-separator',\n exportAs: 'nzBreadcrumbSeparator',\n standalone: true,\n template: ``,\n host: {\n class: 'ant-breadcrumb-separator'\n }\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n/**\n * https://angular.io/errors/NG3003\n * An intermediate interface for {@link NzBreadCrumbComponent} & {@link NzBreadCrumbItemComponent}\n */\nclass NzBreadcrumb {}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzBreadCrumbItemComponent {\n constructor(nzBreadCrumbComponent) {\n this.nzBreadCrumbComponent = nzBreadCrumbComponent;\n }\n static {\n this.ɵfac = function NzBreadCrumbItemComponent_Factory(t) {\n return new (t || NzBreadCrumbItemComponent)(i0.ɵɵdirectiveInject(NzBreadcrumb));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzBreadCrumbItemComponent,\n selectors: [[\"nz-breadcrumb-item\"]],\n inputs: {\n nzOverlay: \"nzOverlay\"\n },\n exportAs: [\"nzBreadcrumbItem\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 4,\n vars: 3,\n consts: [[4, \"ngIf\", \"ngIfElse\"], [\"noMenuTpl\", \"\"], [4, \"ngIf\"], [\"nz-dropdown\", \"\", 1, \"ant-breadcrumb-overlay-link\", 3, \"nzDropdownMenu\"], [3, \"ngTemplateOutlet\"], [\"nz-icon\", \"\", \"nzType\", \"down\"], [1, \"ant-breadcrumb-link\"], [4, \"nzStringTemplateOutlet\"]],\n template: function NzBreadCrumbItemComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, NzBreadCrumbItemComponent_ng_container_0_Template, 4, 2, \"ng-container\", 0)(1, NzBreadCrumbItemComponent_ng_template_1_Template, 2, 0, \"ng-template\", null, 1, i0.ɵɵtemplateRefExtractor)(3, NzBreadCrumbItemComponent_nz_breadcrumb_separator_3_Template, 2, 1, \"nz-breadcrumb-separator\", 2);\n }\n if (rf & 2) {\n const _r2 = i0.ɵɵreference(2);\n i0.ɵɵproperty(\"ngIf\", !!ctx.nzOverlay)(\"ngIfElse\", _r2);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngIf\", ctx.nzBreadCrumbComponent.nzSeparator);\n }\n },\n dependencies: [NgIf, NgTemplateOutlet, NzBreadCrumbSeparatorComponent, NzDropDownModule, i2.NzDropDownDirective, NzIconModule, i3.NzIconDirective, NzOutletModule, i4.NzStringTemplateOutletDirective],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzBreadCrumbItemComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: 'nz-breadcrumb-item',\n exportAs: 'nzBreadcrumbItem',\n preserveWhitespaces: false,\n standalone: true,\n imports: [NgIf, NgTemplateOutlet, NzBreadCrumbSeparatorComponent, NzDropDownModule, NzIconModule, NzOutletModule],\n template: `\n \n \n \n \n \n \n\n \n \n \n \n \n\n \n \n {{ nzBreadCrumbComponent.nzSeparator }}\n \n \n `\n }]\n }], () => [{\n type: NzBreadcrumb\n }], {\n nzOverlay: [{\n type: Input\n }]\n });\n})();\nclass NzBreadCrumbComponent {\n constructor(injector, cdr, elementRef, renderer, directionality) {\n this.injector = injector;\n this.cdr = cdr;\n this.elementRef = elementRef;\n this.renderer = renderer;\n this.directionality = directionality;\n this.nzAutoGenerate = false;\n this.nzSeparator = '/';\n this.nzRouteLabel = 'breadcrumb';\n this.nzRouteLabelFn = label => label;\n this.breadcrumbs = [];\n this.dir = 'ltr';\n this.destroy$ = new Subject();\n }\n ngOnInit() {\n if (this.nzAutoGenerate) {\n this.registerRouterChange();\n }\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe(direction => {\n this.dir = direction;\n this.prepareComponentForRtl();\n this.cdr.detectChanges();\n });\n this.dir = this.directionality.value;\n this.prepareComponentForRtl();\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n navigate(url, e) {\n e.preventDefault();\n this.injector.get(Router).navigateByUrl(url);\n }\n registerRouterChange() {\n try {\n const router = this.injector.get(Router);\n const activatedRoute = this.injector.get(ActivatedRoute);\n router.events.pipe(filter(e => e instanceof NavigationEnd), takeUntil(this.destroy$), startWith(true) // trigger initial render\n ).subscribe(() => {\n this.breadcrumbs = this.getBreadcrumbs(activatedRoute.root);\n this.cdr.markForCheck();\n });\n } catch (e) {\n throw new Error(`${PREFIX} You should import RouterModule if you want to use 'NzAutoGenerate'.`);\n }\n }\n getBreadcrumbs(route, url = '', breadcrumbs = []) {\n const children = route.children;\n // If there's no sub root, then stop the recurse and returns the generated breadcrumbs.\n if (children.length === 0) {\n return breadcrumbs;\n }\n for (const child of children) {\n if (child.outlet === PRIMARY_OUTLET) {\n // Only parse components in primary router-outlet (in another word, router-outlet without a specific name).\n // Parse this layer and generate a breadcrumb item.\n const routeUrl = child.snapshot.url.map(segment => segment.path).filter(path => path).join('/');\n // Do not change nextUrl if routeUrl is falsy. This happens when it's a route lazy loading other modules.\n const nextUrl = routeUrl ? `${url}/${routeUrl}` : url;\n const breadcrumbLabel = this.nzRouteLabelFn(child.snapshot.data[this.nzRouteLabel]);\n // If have data, go to generate a breadcrumb for it.\n if (routeUrl && breadcrumbLabel) {\n const breadcrumb = {\n label: breadcrumbLabel,\n params: child.snapshot.params,\n url: nextUrl\n };\n breadcrumbs.push(breadcrumb);\n }\n return this.getBreadcrumbs(child, nextUrl, breadcrumbs);\n }\n }\n return breadcrumbs;\n }\n prepareComponentForRtl() {\n if (this.dir === 'rtl') {\n this.renderer.addClass(this.elementRef.nativeElement, 'ant-breadcrumb-rtl');\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, 'ant-breadcrumb-rtl');\n }\n }\n static {\n this.ɵfac = function NzBreadCrumbComponent_Factory(t) {\n return new (t || NzBreadCrumbComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i1.Directionality, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzBreadCrumbComponent,\n selectors: [[\"nz-breadcrumb\"]],\n hostAttrs: [1, \"ant-breadcrumb\"],\n inputs: {\n nzAutoGenerate: \"nzAutoGenerate\",\n nzSeparator: \"nzSeparator\",\n nzRouteLabel: \"nzRouteLabel\",\n nzRouteLabelFn: \"nzRouteLabelFn\"\n },\n exportAs: [\"nzBreadcrumb\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: NzBreadcrumb,\n useExisting: NzBreadCrumbComponent\n }]), i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 2,\n vars: 1,\n consts: [[4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\"], [3, \"click\"]],\n template: function NzBreadCrumbComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n i0.ɵɵtemplate(1, NzBreadCrumbComponent_ng_container_1_Template, 2, 1, \"ng-container\", 0);\n }\n if (rf & 2) {\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx.nzAutoGenerate && ctx.breadcrumbs.length);\n }\n },\n dependencies: [NgFor, NgIf, NzBreadCrumbItemComponent],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n__decorate([InputBoolean()], NzBreadCrumbComponent.prototype, \"nzAutoGenerate\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzBreadCrumbComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: 'nz-breadcrumb',\n exportAs: 'nzBreadcrumb',\n preserveWhitespaces: false,\n providers: [{\n provide: NzBreadcrumb,\n useExisting: NzBreadCrumbComponent\n }],\n standalone: true,\n imports: [NgFor, NgIf, NzBreadCrumbItemComponent],\n template: `\n \n \n \n {{ breadcrumb.label }}\n \n \n `,\n host: {\n class: 'ant-breadcrumb'\n }\n }]\n }], () => [{\n type: i0.Injector\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: i0.ElementRef\n }, {\n type: i0.Renderer2\n }, {\n type: i1.Directionality,\n decorators: [{\n type: Optional\n }]\n }], {\n nzAutoGenerate: [{\n type: Input\n }],\n nzSeparator: [{\n type: Input\n }],\n nzRouteLabel: [{\n type: Input\n }],\n nzRouteLabelFn: [{\n type: Input\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzBreadCrumbModule {\n static {\n this.ɵfac = function NzBreadCrumbModule_Factory(t) {\n return new (t || NzBreadCrumbModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NzBreadCrumbModule,\n imports: [NzBreadCrumbComponent, NzBreadCrumbItemComponent, NzBreadCrumbSeparatorComponent],\n exports: [NzBreadCrumbComponent, NzBreadCrumbItemComponent, NzBreadCrumbSeparatorComponent]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [NzBreadCrumbComponent, NzBreadCrumbItemComponent]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzBreadCrumbModule, [{\n type: NgModule,\n args: [{\n imports: [NzBreadCrumbComponent, NzBreadCrumbItemComponent, NzBreadCrumbSeparatorComponent],\n exports: [NzBreadCrumbComponent, NzBreadCrumbItemComponent, NzBreadCrumbSeparatorComponent]\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NzBreadCrumbComponent, NzBreadCrumbItemComponent, NzBreadCrumbModule, NzBreadCrumbSeparatorComponent };\n"], + "mappings": "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", + "names": [] +} diff --git a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_button.js b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_button.js index 7a47af0..1cdb358 100644 --- a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_button.js +++ b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_button.js @@ -1,759 +1,20 @@ import { - NzIconDirective, - NzIconModule -} from "./chunk-S7G3TSRW.js"; -import { - NzConfigService, - WithConfig -} from "./chunk-NOIPAY33.js"; -import { - Directionality, - Platform -} from "./chunk-UPQZZZIG.js"; -import { - InputBoolean -} from "./chunk-7XTJNSRU.js"; -import "./chunk-FILHFU6K.js"; -import "./chunk-BNCUYWOH.js"; + NzButtonComponent, + NzButtonGroupComponent, + NzButtonModule +} from "./chunk-KMGBCF4T.js"; +import "./chunk-VWMHIMW7.js"; +import "./chunk-ZHMJ6SNN.js"; +import "./chunk-6NZ2BEBG.js"; +import "./chunk-IAC53GOD.js"; +import "./chunk-M5GY4FCO.js"; +import "./chunk-ECVKT3ZH.js"; +import "./chunk-KI2JSLP6.js"; import "./chunk-Y4CEYMY2.js"; import "./chunk-X7WBA24Z.js"; -import { - NgIf -} from "./chunk-OSQBUYO6.js"; -import { - ANIMATION_MODULE_TYPE, - CSP_NONCE, - ChangeDetectionStrategy, - ChangeDetectorRef, - Component, - ContentChild, - Directive, - ElementRef, - Inject, - InjectionToken, - Input, - NgModule, - NgZone, - Optional, - PLATFORM_ID, - Renderer2, - Subject, - ViewEncapsulation$1, - __decorate, - filter, - fromEvent, - makeEnvironmentProviders, - setClassMetadata, - startWith, - takeUntil, - ɵɵNgOnChangesFeature, - ɵɵStandaloneFeature, - ɵɵattribute, - ɵɵclassProp, - ɵɵcontentQuery, - ɵɵdefineComponent, - ɵɵdefineDirective, - ɵɵdefineInjector, - ɵɵdefineNgModule, - ɵɵdirectiveInject, - ɵɵelement, - ɵɵloadQuery, - ɵɵprojection, - ɵɵprojectionDef, - ɵɵproperty, - ɵɵqueryRefresh, - ɵɵtemplate -} from "./chunk-FGESKT7O.js"; +import "./chunk-OSQBUYO6.js"; +import "./chunk-FGESKT7O.js"; import "./chunk-HSNDBVJ3.js"; - -// node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-transition-patch.mjs -var _NzTransitionPatchDirective = class _NzTransitionPatchDirective { - setHiddenAttribute() { - if (this.hidden) { - if (typeof this.hidden === "string") { - this.renderer.setAttribute(this.elementRef.nativeElement, "hidden", this.hidden); - } else { - this.renderer.setAttribute(this.elementRef.nativeElement, "hidden", ""); - } - } else { - this.renderer.removeAttribute(this.elementRef.nativeElement, "hidden"); - } - } - constructor(elementRef, renderer) { - this.elementRef = elementRef; - this.renderer = renderer; - this.hidden = null; - this.renderer.setAttribute(this.elementRef.nativeElement, "hidden", ""); - } - ngOnChanges() { - this.setHiddenAttribute(); - } - ngAfterViewInit() { - this.setHiddenAttribute(); - } -}; -_NzTransitionPatchDirective.ɵfac = function NzTransitionPatchDirective_Factory(t) { - return new (t || _NzTransitionPatchDirective)(ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(Renderer2)); -}; -_NzTransitionPatchDirective.ɵdir = ɵɵdefineDirective({ - type: _NzTransitionPatchDirective, - selectors: [["", "nz-button", ""], ["nz-button-group"], ["", "nz-icon", ""], ["", "nz-menu-item", ""], ["", "nz-submenu", ""], ["nz-select-top-control"], ["nz-select-placeholder"], ["nz-input-group"]], - inputs: { - hidden: "hidden" - }, - standalone: true, - features: [ɵɵNgOnChangesFeature] -}); -var NzTransitionPatchDirective = _NzTransitionPatchDirective; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzTransitionPatchDirective, [{ - type: Directive, - args: [{ - selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", - standalone: true - }] - }], () => [{ - type: ElementRef - }, { - type: Renderer2 - }], { - hidden: [{ - type: Input - }] - }); -})(); -var _NzTransitionPatchModule = class _NzTransitionPatchModule { -}; -_NzTransitionPatchModule.ɵfac = function NzTransitionPatchModule_Factory(t) { - return new (t || _NzTransitionPatchModule)(); -}; -_NzTransitionPatchModule.ɵmod = ɵɵdefineNgModule({ - type: _NzTransitionPatchModule, - imports: [NzTransitionPatchDirective], - exports: [NzTransitionPatchDirective] -}); -_NzTransitionPatchModule.ɵinj = ɵɵdefineInjector({}); -var NzTransitionPatchModule = _NzTransitionPatchModule; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzTransitionPatchModule, [{ - type: NgModule, - args: [{ - imports: [NzTransitionPatchDirective], - exports: [NzTransitionPatchDirective] - }] - }], null, null); -})(); - -// node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-wave.mjs -var NzWaveRenderer = class { - get waveAttributeName() { - return this.insertExtraNode ? "ant-click-animating" : "ant-click-animating-without-extra-node"; - } - constructor(triggerElement, ngZone, insertExtraNode, platformId, cspNonce) { - this.triggerElement = triggerElement; - this.ngZone = ngZone; - this.insertExtraNode = insertExtraNode; - this.platformId = platformId; - this.cspNonce = cspNonce; - this.waveTransitionDuration = 400; - this.styleForPseudo = null; - this.extraNode = null; - this.lastTime = 0; - this.onClick = (event) => { - if (!this.triggerElement || !this.triggerElement.getAttribute || this.triggerElement.getAttribute("disabled") || event.target.tagName === "INPUT" || this.triggerElement.className.indexOf("disabled") >= 0) { - return; - } - this.fadeOutWave(); - }; - this.platform = new Platform(this.platformId); - this.clickHandler = this.onClick.bind(this); - this.bindTriggerEvent(); - } - bindTriggerEvent() { - if (this.platform.isBrowser) { - this.ngZone.runOutsideAngular(() => { - this.removeTriggerEvent(); - if (this.triggerElement) { - this.triggerElement.addEventListener("click", this.clickHandler, true); - } - }); - } - } - removeTriggerEvent() { - if (this.triggerElement) { - this.triggerElement.removeEventListener("click", this.clickHandler, true); - } - } - removeStyleAndExtraNode() { - if (this.styleForPseudo && document.body.contains(this.styleForPseudo)) { - document.body.removeChild(this.styleForPseudo); - this.styleForPseudo = null; - } - if (this.insertExtraNode && this.triggerElement.contains(this.extraNode)) { - this.triggerElement.removeChild(this.extraNode); - } - } - destroy() { - this.removeTriggerEvent(); - this.removeStyleAndExtraNode(); - } - fadeOutWave() { - const node = this.triggerElement; - const waveColor = this.getWaveColor(node); - node.setAttribute(this.waveAttributeName, "true"); - if (Date.now() < this.lastTime + this.waveTransitionDuration) { - return; - } - if (this.isValidColor(waveColor)) { - if (!this.styleForPseudo) { - this.styleForPseudo = document.createElement("style"); - if (this.cspNonce) { - this.styleForPseudo.nonce = this.cspNonce; - } - } - this.styleForPseudo.innerHTML = ` - [ant-click-animating-without-extra-node='true']::after, .ant-click-animating-node { - --antd-wave-shadow-color: ${waveColor}; - }`; - document.body.appendChild(this.styleForPseudo); - } - if (this.insertExtraNode) { - if (!this.extraNode) { - this.extraNode = document.createElement("div"); - } - this.extraNode.className = "ant-click-animating-node"; - node.appendChild(this.extraNode); - } - this.lastTime = Date.now(); - this.runTimeoutOutsideZone(() => { - node.removeAttribute(this.waveAttributeName); - this.removeStyleAndExtraNode(); - }, this.waveTransitionDuration); - } - isValidColor(color) { - return !!color && color !== "#ffffff" && color !== "rgb(255, 255, 255)" && this.isNotGrey(color) && !/rgba\(\d*, \d*, \d*, 0\)/.test(color) && color !== "transparent"; - } - isNotGrey(color) { - const match = color.match(/rgba?\((\d*), (\d*), (\d*)(, [\.\d]*)?\)/); - if (match && match[1] && match[2] && match[3]) { - return !(match[1] === match[2] && match[2] === match[3]); - } - return true; - } - getWaveColor(node) { - const nodeStyle = getComputedStyle(node); - return nodeStyle.getPropertyValue("border-top-color") || // Firefox Compatible - nodeStyle.getPropertyValue("border-color") || nodeStyle.getPropertyValue("background-color"); - } - runTimeoutOutsideZone(fn, delay) { - this.ngZone.runOutsideAngular(() => setTimeout(fn, delay)); - } -}; -var NZ_WAVE_GLOBAL_DEFAULT_CONFIG = { - disabled: false -}; -var NZ_WAVE_GLOBAL_CONFIG = new InjectionToken("nz-wave-global-options"); -function provideNzWave(config) { - return makeEnvironmentProviders([{ - provide: NZ_WAVE_GLOBAL_CONFIG, - useValue: config - }]); -} -var _NzWaveDirective = class _NzWaveDirective { - get disabled() { - return this.waveDisabled; - } - get rendererRef() { - return this.waveRenderer; - } - constructor(ngZone, elementRef, config, animationType, platformId, cspNonce) { - this.ngZone = ngZone; - this.elementRef = elementRef; - this.config = config; - this.animationType = animationType; - this.platformId = platformId; - this.cspNonce = cspNonce; - this.nzWaveExtraNode = false; - this.waveDisabled = false; - this.waveDisabled = this.isConfigDisabled(); - } - isConfigDisabled() { - let disabled = false; - if (this.config && typeof this.config.disabled === "boolean") { - disabled = this.config.disabled; - } - if (this.animationType === "NoopAnimations") { - disabled = true; - } - return disabled; - } - ngOnDestroy() { - if (this.waveRenderer) { - this.waveRenderer.destroy(); - } - } - ngOnInit() { - this.renderWaveIfEnabled(); - } - renderWaveIfEnabled() { - if (!this.waveDisabled && this.elementRef.nativeElement) { - this.waveRenderer = new NzWaveRenderer(this.elementRef.nativeElement, this.ngZone, this.nzWaveExtraNode, this.platformId, this.cspNonce); - } - } - disable() { - this.waveDisabled = true; - if (this.waveRenderer) { - this.waveRenderer.removeTriggerEvent(); - this.waveRenderer.removeStyleAndExtraNode(); - } - } - enable() { - this.waveDisabled = this.isConfigDisabled() || false; - if (this.waveRenderer) { - this.waveRenderer.bindTriggerEvent(); - } - } -}; -_NzWaveDirective.ɵfac = function NzWaveDirective_Factory(t) { - return new (t || _NzWaveDirective)(ɵɵdirectiveInject(NgZone), ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(NZ_WAVE_GLOBAL_CONFIG, 8), ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8), ɵɵdirectiveInject(PLATFORM_ID), ɵɵdirectiveInject(CSP_NONCE, 8)); -}; -_NzWaveDirective.ɵdir = ɵɵdefineDirective({ - type: _NzWaveDirective, - selectors: [["", "nz-wave", ""], ["button", "nz-button", "", 3, "nzType", "link", 3, "nzType", "text"]], - inputs: { - nzWaveExtraNode: "nzWaveExtraNode" - }, - exportAs: ["nzWave"], - standalone: true -}); -var NzWaveDirective = _NzWaveDirective; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzWaveDirective, [{ - type: Directive, - args: [{ - selector: '[nz-wave],button[nz-button]:not([nzType="link"]):not([nzType="text"])', - exportAs: "nzWave", - standalone: true - }] - }], () => [{ - type: NgZone - }, { - type: ElementRef - }, { - type: void 0, - decorators: [{ - type: Optional - }, { - type: Inject, - args: [NZ_WAVE_GLOBAL_CONFIG] - }] - }, { - type: void 0, - decorators: [{ - type: Optional - }, { - type: Inject, - args: [ANIMATION_MODULE_TYPE] - }] - }, { - type: void 0, - decorators: [{ - type: Inject, - args: [PLATFORM_ID] - }] - }, { - type: void 0, - decorators: [{ - type: Optional - }, { - type: Inject, - args: [CSP_NONCE] - }] - }], { - nzWaveExtraNode: [{ - type: Input - }] - }); -})(); -var _NzWaveModule = class _NzWaveModule { -}; -_NzWaveModule.ɵfac = function NzWaveModule_Factory(t) { - return new (t || _NzWaveModule)(); -}; -_NzWaveModule.ɵmod = ɵɵdefineNgModule({ - type: _NzWaveModule, - imports: [NzWaveDirective], - exports: [NzWaveDirective] -}); -_NzWaveModule.ɵinj = ɵɵdefineInjector({ - providers: [provideNzWave(NZ_WAVE_GLOBAL_DEFAULT_CONFIG)] -}); -var NzWaveModule = _NzWaveModule; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzWaveModule, [{ - type: NgModule, - args: [{ - imports: [NzWaveDirective], - exports: [NzWaveDirective], - providers: [provideNzWave(NZ_WAVE_GLOBAL_DEFAULT_CONFIG)] - }] - }], null, null); -})(); - -// node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-button.mjs -var _c0 = ["nz-button", ""]; -function NzButtonComponent_span_0_Template(rf, ctx) { - if (rf & 1) { - ɵɵelement(0, "span", 1); - } -} -var _c1 = ["*"]; -var NZ_CONFIG_MODULE_NAME = "button"; -var _NzButtonComponent = class _NzButtonComponent { - insertSpan(nodes, renderer) { - nodes.forEach((node) => { - if (node.nodeName === "#text") { - const span = renderer.createElement("span"); - const parent = renderer.parentNode(node); - renderer.insertBefore(parent, span, node); - renderer.appendChild(span, node); - } - }); - } - get iconOnly() { - const listOfNode = Array.from(this.elementRef?.nativeElement?.childNodes || []); - const noText = listOfNode.every((node) => node.nodeName !== "#text"); - const noSpan = listOfNode.filter((node) => { - return !(node.nodeName === "#comment" || !!node?.attributes?.getNamedItem("nz-icon")); - }).length == 0; - const isIconOnly = !!this.nzIconDirectiveElement && noSpan && noText; - return isIconOnly; - } - constructor(ngZone, elementRef, cdr, renderer, nzConfigService, directionality) { - this.ngZone = ngZone; - this.elementRef = elementRef; - this.cdr = cdr; - this.renderer = renderer; - this.nzConfigService = nzConfigService; - this.directionality = directionality; - this._nzModuleName = NZ_CONFIG_MODULE_NAME; - this.nzBlock = false; - this.nzGhost = false; - this.nzSearch = false; - this.nzLoading = false; - this.nzDanger = false; - this.disabled = false; - this.tabIndex = null; - this.nzType = null; - this.nzShape = null; - this.nzSize = "default"; - this.dir = "ltr"; - this.destroy$ = new Subject(); - this.loading$ = new Subject(); - this.nzConfigService.getConfigChangeEventForComponent(NZ_CONFIG_MODULE_NAME).pipe(takeUntil(this.destroy$)).subscribe(() => { - this.cdr.markForCheck(); - }); - } - ngOnInit() { - this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction) => { - this.dir = direction; - this.cdr.detectChanges(); - }); - this.dir = this.directionality.value; - this.ngZone.runOutsideAngular(() => { - fromEvent(this.elementRef.nativeElement, "click", { - capture: true - }).pipe(takeUntil(this.destroy$)).subscribe((event) => { - if (this.disabled && event.target?.tagName === "A" || this.nzLoading) { - event.preventDefault(); - event.stopImmediatePropagation(); - } - }); - }); - } - ngOnChanges(changes) { - const { - nzLoading - } = changes; - if (nzLoading) { - this.loading$.next(this.nzLoading); - } - } - ngAfterViewInit() { - this.insertSpan(this.elementRef.nativeElement.childNodes, this.renderer); - } - ngAfterContentInit() { - this.loading$.pipe(startWith(this.nzLoading), filter(() => !!this.nzIconDirectiveElement), takeUntil(this.destroy$)).subscribe((loading) => { - const nativeElement = this.nzIconDirectiveElement.nativeElement; - if (loading) { - this.renderer.setStyle(nativeElement, "display", "none"); - } else { - this.renderer.removeStyle(nativeElement, "display"); - } - }); - } - ngOnDestroy() { - this.destroy$.next(); - this.destroy$.complete(); - } -}; -_NzButtonComponent.ɵfac = function NzButtonComponent_Factory(t) { - return new (t || _NzButtonComponent)(ɵɵdirectiveInject(NgZone), ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(ChangeDetectorRef), ɵɵdirectiveInject(Renderer2), ɵɵdirectiveInject(NzConfigService), ɵɵdirectiveInject(Directionality, 8)); -}; -_NzButtonComponent.ɵcmp = ɵɵdefineComponent({ - type: _NzButtonComponent, - selectors: [["button", "nz-button", ""], ["a", "nz-button", ""]], - contentQueries: function NzButtonComponent_ContentQueries(rf, ctx, dirIndex) { - if (rf & 1) { - ɵɵcontentQuery(dirIndex, NzIconDirective, 5, ElementRef); - } - if (rf & 2) { - let _t; - ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.nzIconDirectiveElement = _t.first); - } - }, - hostAttrs: [1, "ant-btn"], - hostVars: 32, - hostBindings: function NzButtonComponent_HostBindings(rf, ctx) { - if (rf & 2) { - ɵɵattribute("tabindex", ctx.disabled ? -1 : ctx.tabIndex === null ? null : ctx.tabIndex)("disabled", ctx.disabled || null); - ɵɵclassProp("ant-btn-primary", ctx.nzType === "primary")("ant-btn-dashed", ctx.nzType === "dashed")("ant-btn-link", ctx.nzType === "link")("ant-btn-text", ctx.nzType === "text")("ant-btn-circle", ctx.nzShape === "circle")("ant-btn-round", ctx.nzShape === "round")("ant-btn-lg", ctx.nzSize === "large")("ant-btn-sm", ctx.nzSize === "small")("ant-btn-dangerous", ctx.nzDanger)("ant-btn-loading", ctx.nzLoading)("ant-btn-background-ghost", ctx.nzGhost)("ant-btn-block", ctx.nzBlock)("ant-input-search-button", ctx.nzSearch)("ant-btn-rtl", ctx.dir === "rtl")("ant-btn-icon-only", ctx.iconOnly); - } - }, - inputs: { - nzBlock: "nzBlock", - nzGhost: "nzGhost", - nzSearch: "nzSearch", - nzLoading: "nzLoading", - nzDanger: "nzDanger", - disabled: "disabled", - tabIndex: "tabIndex", - nzType: "nzType", - nzShape: "nzShape", - nzSize: "nzSize" - }, - exportAs: ["nzButton"], - standalone: true, - features: [ɵɵNgOnChangesFeature, ɵɵStandaloneFeature], - attrs: _c0, - ngContentSelectors: _c1, - decls: 2, - vars: 1, - consts: [["nz-icon", "", "nzType", "loading", 4, "ngIf"], ["nz-icon", "", "nzType", "loading"]], - template: function NzButtonComponent_Template(rf, ctx) { - if (rf & 1) { - ɵɵprojectionDef(); - ɵɵtemplate(0, NzButtonComponent_span_0_Template, 1, 0, "span", 0); - ɵɵprojection(1); - } - if (rf & 2) { - ɵɵproperty("ngIf", ctx.nzLoading); - } - }, - dependencies: [NzIconModule, NzIconDirective, NgIf], - encapsulation: 2, - changeDetection: 0 -}); -var NzButtonComponent = _NzButtonComponent; -__decorate([InputBoolean()], NzButtonComponent.prototype, "nzBlock", void 0); -__decorate([InputBoolean()], NzButtonComponent.prototype, "nzGhost", void 0); -__decorate([InputBoolean()], NzButtonComponent.prototype, "nzSearch", void 0); -__decorate([InputBoolean()], NzButtonComponent.prototype, "nzLoading", void 0); -__decorate([InputBoolean()], NzButtonComponent.prototype, "nzDanger", void 0); -__decorate([InputBoolean()], NzButtonComponent.prototype, "disabled", void 0); -__decorate([WithConfig()], NzButtonComponent.prototype, "nzSize", void 0); -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzButtonComponent, [{ - type: Component, - args: [{ - selector: "button[nz-button], a[nz-button]", - exportAs: "nzButton", - preserveWhitespaces: false, - changeDetection: ChangeDetectionStrategy.OnPush, - encapsulation: ViewEncapsulation$1.None, - template: ` - - - `, - host: { - class: "ant-btn", - "[class.ant-btn-primary]": `nzType === 'primary'`, - "[class.ant-btn-dashed]": `nzType === 'dashed'`, - "[class.ant-btn-link]": `nzType === 'link'`, - "[class.ant-btn-text]": `nzType === 'text'`, - "[class.ant-btn-circle]": `nzShape === 'circle'`, - "[class.ant-btn-round]": `nzShape === 'round'`, - "[class.ant-btn-lg]": `nzSize === 'large'`, - "[class.ant-btn-sm]": `nzSize === 'small'`, - "[class.ant-btn-dangerous]": `nzDanger`, - "[class.ant-btn-loading]": `nzLoading`, - "[class.ant-btn-background-ghost]": `nzGhost`, - "[class.ant-btn-block]": `nzBlock`, - "[class.ant-input-search-button]": `nzSearch`, - "[class.ant-btn-rtl]": `dir === 'rtl'`, - "[class.ant-btn-icon-only]": `iconOnly`, - "[attr.tabindex]": "disabled ? -1 : (tabIndex === null ? null : tabIndex)", - "[attr.disabled]": "disabled || null" - }, - imports: [NzIconModule, NgIf], - standalone: true - }] - }], () => [{ - type: NgZone - }, { - type: ElementRef - }, { - type: ChangeDetectorRef - }, { - type: Renderer2 - }, { - type: NzConfigService - }, { - type: Directionality, - decorators: [{ - type: Optional - }] - }], { - nzIconDirectiveElement: [{ - type: ContentChild, - args: [NzIconDirective, { - read: ElementRef - }] - }], - nzBlock: [{ - type: Input - }], - nzGhost: [{ - type: Input - }], - nzSearch: [{ - type: Input - }], - nzLoading: [{ - type: Input - }], - nzDanger: [{ - type: Input - }], - disabled: [{ - type: Input - }], - tabIndex: [{ - type: Input - }], - nzType: [{ - type: Input - }], - nzShape: [{ - type: Input - }], - nzSize: [{ - type: Input - }] - }); -})(); -var _NzButtonGroupComponent = class _NzButtonGroupComponent { - constructor(directionality) { - this.directionality = directionality; - this.nzSize = "default"; - this.dir = "ltr"; - this.destroy$ = new Subject(); - } - ngOnInit() { - this.dir = this.directionality.value; - this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction) => { - this.dir = direction; - }); - } - ngOnDestroy() { - this.destroy$.next(); - this.destroy$.complete(); - } -}; -_NzButtonGroupComponent.ɵfac = function NzButtonGroupComponent_Factory(t) { - return new (t || _NzButtonGroupComponent)(ɵɵdirectiveInject(Directionality, 8)); -}; -_NzButtonGroupComponent.ɵcmp = ɵɵdefineComponent({ - type: _NzButtonGroupComponent, - selectors: [["nz-button-group"]], - hostAttrs: [1, "ant-btn-group"], - hostVars: 6, - hostBindings: function NzButtonGroupComponent_HostBindings(rf, ctx) { - if (rf & 2) { - ɵɵclassProp("ant-btn-group-lg", ctx.nzSize === "large")("ant-btn-group-sm", ctx.nzSize === "small")("ant-btn-group-rtl", ctx.dir === "rtl"); - } - }, - inputs: { - nzSize: "nzSize" - }, - exportAs: ["nzButtonGroup"], - standalone: true, - features: [ɵɵStandaloneFeature], - ngContentSelectors: _c1, - decls: 1, - vars: 0, - template: function NzButtonGroupComponent_Template(rf, ctx) { - if (rf & 1) { - ɵɵprojectionDef(); - ɵɵprojection(0); - } - }, - encapsulation: 2, - changeDetection: 0 -}); -var NzButtonGroupComponent = _NzButtonGroupComponent; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzButtonGroupComponent, [{ - type: Component, - args: [{ - selector: "nz-button-group", - exportAs: "nzButtonGroup", - changeDetection: ChangeDetectionStrategy.OnPush, - encapsulation: ViewEncapsulation$1.None, - host: { - class: "ant-btn-group", - "[class.ant-btn-group-lg]": `nzSize === 'large'`, - "[class.ant-btn-group-sm]": `nzSize === 'small'`, - "[class.ant-btn-group-rtl]": `dir === 'rtl'` - }, - preserveWhitespaces: false, - template: ` `, - standalone: true - }] - }], () => [{ - type: Directionality, - decorators: [{ - type: Optional - }] - }], { - nzSize: [{ - type: Input - }] - }); -})(); -var _NzButtonModule = class _NzButtonModule { -}; -_NzButtonModule.ɵfac = function NzButtonModule_Factory(t) { - return new (t || _NzButtonModule)(); -}; -_NzButtonModule.ɵmod = ɵɵdefineNgModule({ - type: _NzButtonModule, - imports: [NzButtonComponent, NzButtonGroupComponent], - exports: [NzButtonComponent, NzButtonGroupComponent, NzTransitionPatchModule, NzWaveModule] -}); -_NzButtonModule.ɵinj = ɵɵdefineInjector({ - imports: [NzButtonComponent, NzTransitionPatchModule, NzWaveModule] -}); -var NzButtonModule = _NzButtonModule; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzButtonModule, [{ - type: NgModule, - args: [{ - imports: [NzButtonComponent, NzButtonGroupComponent], - exports: [NzButtonComponent, NzButtonGroupComponent, NzTransitionPatchModule, NzWaveModule] - }] - }], null, null); -})(); export { NzButtonComponent, NzButtonGroupComponent, diff --git a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_button.js.map b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_button.js.map index d1f6bf0..9865211 100644 --- a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_button.js.map +++ b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_button.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-transition-patch.mjs", "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-core-wave.mjs", "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-button.mjs"], - "sourcesContent": ["import * as i0 from '@angular/core';\nimport { Directive, Input, NgModule } from '@angular/core';\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n/**\n * hack the bug\n * angular router change with unexpected transition trigger after calling applicationRef.attachView\n * https://github.com/angular/angular/issues/34718\n */\nclass NzTransitionPatchDirective {\n setHiddenAttribute() {\n if (this.hidden) {\n if (typeof this.hidden === 'string') {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'hidden', this.hidden);\n } else {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'hidden', '');\n }\n } else {\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'hidden');\n }\n }\n constructor(elementRef, renderer) {\n this.elementRef = elementRef;\n this.renderer = renderer;\n this.hidden = null;\n this.renderer.setAttribute(this.elementRef.nativeElement, 'hidden', '');\n }\n ngOnChanges() {\n this.setHiddenAttribute();\n }\n ngAfterViewInit() {\n this.setHiddenAttribute();\n }\n static {\n this.ɵfac = function NzTransitionPatchDirective_Factory(t) {\n return new (t || NzTransitionPatchDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzTransitionPatchDirective,\n selectors: [[\"\", \"nz-button\", \"\"], [\"nz-button-group\"], [\"\", \"nz-icon\", \"\"], [\"\", \"nz-menu-item\", \"\"], [\"\", \"nz-submenu\", \"\"], [\"nz-select-top-control\"], [\"nz-select-placeholder\"], [\"nz-input-group\"]],\n inputs: {\n hidden: \"hidden\"\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzTransitionPatchDirective, [{\n type: Directive,\n args: [{\n selector: '[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group',\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: i0.Renderer2\n }], {\n hidden: [{\n type: Input\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzTransitionPatchModule {\n static {\n this.ɵfac = function NzTransitionPatchModule_Factory(t) {\n return new (t || NzTransitionPatchModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NzTransitionPatchModule,\n imports: [NzTransitionPatchDirective],\n exports: [NzTransitionPatchDirective]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzTransitionPatchModule, [{\n type: NgModule,\n args: [{\n imports: [NzTransitionPatchDirective],\n exports: [NzTransitionPatchDirective]\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NzTransitionPatchDirective as ɵNzTransitionPatchDirective, NzTransitionPatchModule as ɵNzTransitionPatchModule };\n", "import { Platform } from '@angular/cdk/platform';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, makeEnvironmentProviders, PLATFORM_ID, CSP_NONCE, Directive, Optional, Inject, Input, NgModule } from '@angular/core';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzWaveRenderer {\n get waveAttributeName() {\n return this.insertExtraNode ? 'ant-click-animating' : 'ant-click-animating-without-extra-node';\n }\n constructor(triggerElement, ngZone, insertExtraNode, platformId, cspNonce) {\n this.triggerElement = triggerElement;\n this.ngZone = ngZone;\n this.insertExtraNode = insertExtraNode;\n this.platformId = platformId;\n this.cspNonce = cspNonce;\n this.waveTransitionDuration = 400;\n this.styleForPseudo = null;\n this.extraNode = null;\n this.lastTime = 0;\n this.onClick = event => {\n if (!this.triggerElement || !this.triggerElement.getAttribute || this.triggerElement.getAttribute('disabled') || event.target.tagName === 'INPUT' || this.triggerElement.className.indexOf('disabled') >= 0) {\n return;\n }\n this.fadeOutWave();\n };\n this.platform = new Platform(this.platformId);\n this.clickHandler = this.onClick.bind(this);\n this.bindTriggerEvent();\n }\n bindTriggerEvent() {\n if (this.platform.isBrowser) {\n this.ngZone.runOutsideAngular(() => {\n this.removeTriggerEvent();\n if (this.triggerElement) {\n this.triggerElement.addEventListener('click', this.clickHandler, true);\n }\n });\n }\n }\n removeTriggerEvent() {\n if (this.triggerElement) {\n this.triggerElement.removeEventListener('click', this.clickHandler, true);\n }\n }\n removeStyleAndExtraNode() {\n if (this.styleForPseudo && document.body.contains(this.styleForPseudo)) {\n document.body.removeChild(this.styleForPseudo);\n this.styleForPseudo = null;\n }\n if (this.insertExtraNode && this.triggerElement.contains(this.extraNode)) {\n this.triggerElement.removeChild(this.extraNode);\n }\n }\n destroy() {\n this.removeTriggerEvent();\n this.removeStyleAndExtraNode();\n }\n fadeOutWave() {\n const node = this.triggerElement;\n const waveColor = this.getWaveColor(node);\n node.setAttribute(this.waveAttributeName, 'true');\n if (Date.now() < this.lastTime + this.waveTransitionDuration) {\n return;\n }\n if (this.isValidColor(waveColor)) {\n if (!this.styleForPseudo) {\n this.styleForPseudo = document.createElement('style');\n if (this.cspNonce) {\n this.styleForPseudo.nonce = this.cspNonce;\n }\n }\n this.styleForPseudo.innerHTML = `\n [ant-click-animating-without-extra-node='true']::after, .ant-click-animating-node {\n --antd-wave-shadow-color: ${waveColor};\n }`;\n document.body.appendChild(this.styleForPseudo);\n }\n if (this.insertExtraNode) {\n if (!this.extraNode) {\n this.extraNode = document.createElement('div');\n }\n this.extraNode.className = 'ant-click-animating-node';\n node.appendChild(this.extraNode);\n }\n this.lastTime = Date.now();\n this.runTimeoutOutsideZone(() => {\n node.removeAttribute(this.waveAttributeName);\n this.removeStyleAndExtraNode();\n }, this.waveTransitionDuration);\n }\n isValidColor(color) {\n return !!color && color !== '#ffffff' && color !== 'rgb(255, 255, 255)' && this.isNotGrey(color) && !/rgba\\(\\d*, \\d*, \\d*, 0\\)/.test(color) && color !== 'transparent';\n }\n isNotGrey(color) {\n const match = color.match(/rgba?\\((\\d*), (\\d*), (\\d*)(, [\\.\\d]*)?\\)/);\n if (match && match[1] && match[2] && match[3]) {\n return !(match[1] === match[2] && match[2] === match[3]);\n }\n return true;\n }\n getWaveColor(node) {\n const nodeStyle = getComputedStyle(node);\n return nodeStyle.getPropertyValue('border-top-color') ||\n // Firefox Compatible\n nodeStyle.getPropertyValue('border-color') || nodeStyle.getPropertyValue('background-color');\n }\n runTimeoutOutsideZone(fn, delay) {\n this.ngZone.runOutsideAngular(() => setTimeout(fn, delay));\n }\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst NZ_WAVE_GLOBAL_DEFAULT_CONFIG = {\n disabled: false\n};\nconst NZ_WAVE_GLOBAL_CONFIG = new InjectionToken('nz-wave-global-options');\nfunction provideNzWave(config) {\n return makeEnvironmentProviders([{\n provide: NZ_WAVE_GLOBAL_CONFIG,\n useValue: config\n }]);\n}\nclass NzWaveDirective {\n get disabled() {\n return this.waveDisabled;\n }\n get rendererRef() {\n return this.waveRenderer;\n }\n constructor(ngZone, elementRef, config, animationType, platformId, cspNonce) {\n this.ngZone = ngZone;\n this.elementRef = elementRef;\n this.config = config;\n this.animationType = animationType;\n this.platformId = platformId;\n this.cspNonce = cspNonce;\n this.nzWaveExtraNode = false;\n this.waveDisabled = false;\n this.waveDisabled = this.isConfigDisabled();\n }\n isConfigDisabled() {\n let disabled = false;\n if (this.config && typeof this.config.disabled === 'boolean') {\n disabled = this.config.disabled;\n }\n if (this.animationType === 'NoopAnimations') {\n disabled = true;\n }\n return disabled;\n }\n ngOnDestroy() {\n if (this.waveRenderer) {\n this.waveRenderer.destroy();\n }\n }\n ngOnInit() {\n this.renderWaveIfEnabled();\n }\n renderWaveIfEnabled() {\n if (!this.waveDisabled && this.elementRef.nativeElement) {\n this.waveRenderer = new NzWaveRenderer(this.elementRef.nativeElement, this.ngZone, this.nzWaveExtraNode, this.platformId, this.cspNonce);\n }\n }\n disable() {\n this.waveDisabled = true;\n if (this.waveRenderer) {\n this.waveRenderer.removeTriggerEvent();\n this.waveRenderer.removeStyleAndExtraNode();\n }\n }\n enable() {\n // config priority\n this.waveDisabled = this.isConfigDisabled() || false;\n if (this.waveRenderer) {\n this.waveRenderer.bindTriggerEvent();\n }\n }\n static {\n this.ɵfac = function NzWaveDirective_Factory(t) {\n return new (t || NzWaveDirective)(i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(NZ_WAVE_GLOBAL_CONFIG, 8), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8), i0.ɵɵdirectiveInject(PLATFORM_ID), i0.ɵɵdirectiveInject(CSP_NONCE, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzWaveDirective,\n selectors: [[\"\", \"nz-wave\", \"\"], [\"button\", \"nz-button\", \"\", 3, \"nzType\", \"link\", 3, \"nzType\", \"text\"]],\n inputs: {\n nzWaveExtraNode: \"nzWaveExtraNode\"\n },\n exportAs: [\"nzWave\"],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzWaveDirective, [{\n type: Directive,\n args: [{\n selector: '[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])',\n exportAs: 'nzWave',\n standalone: true\n }]\n }], () => [{\n type: i0.NgZone\n }, {\n type: i0.ElementRef\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [NZ_WAVE_GLOBAL_CONFIG]\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CSP_NONCE]\n }]\n }], {\n nzWaveExtraNode: [{\n type: Input\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzWaveModule {\n static {\n this.ɵfac = function NzWaveModule_Factory(t) {\n return new (t || NzWaveModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NzWaveModule,\n imports: [NzWaveDirective],\n exports: [NzWaveDirective]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [provideNzWave(NZ_WAVE_GLOBAL_DEFAULT_CONFIG)]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzWaveModule, [{\n type: NgModule,\n args: [{\n imports: [NzWaveDirective],\n exports: [NzWaveDirective],\n providers: [provideNzWave(NZ_WAVE_GLOBAL_DEFAULT_CONFIG)]\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NZ_WAVE_GLOBAL_CONFIG, NZ_WAVE_GLOBAL_DEFAULT_CONFIG, NzWaveDirective, NzWaveModule, NzWaveRenderer, provideNzWave };\n", "import { __decorate } from 'tslib';\nimport { NgIf } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { ElementRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Optional, ContentChild, Input, NgModule } from '@angular/core';\nimport { Subject, fromEvent } from 'rxjs';\nimport { takeUntil, startWith, filter } from 'rxjs/operators';\nimport * as i1 from 'ng-zorro-antd/core/config';\nimport { WithConfig } from 'ng-zorro-antd/core/config';\nimport { InputBoolean } from 'ng-zorro-antd/core/util';\nimport * as i3 from 'ng-zorro-antd/icon';\nimport { NzIconDirective, NzIconModule } from 'ng-zorro-antd/icon';\nimport * as i2 from '@angular/cdk/bidi';\nimport { ɵNzTransitionPatchModule as _NzTransitionPatchModule } from 'ng-zorro-antd/core/transition-patch';\nimport { NzWaveModule } from 'ng-zorro-antd/core/wave';\nconst _c0 = [\"nz-button\", \"\"];\nfunction NzButtonComponent_span_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 1);\n }\n}\nconst _c1 = [\"*\"];\nconst NZ_CONFIG_MODULE_NAME = 'button';\nclass NzButtonComponent {\n insertSpan(nodes, renderer) {\n nodes.forEach(node => {\n if (node.nodeName === '#text') {\n const span = renderer.createElement('span');\n const parent = renderer.parentNode(node);\n renderer.insertBefore(parent, span, node);\n renderer.appendChild(span, node);\n }\n });\n }\n get iconOnly() {\n const listOfNode = Array.from(this.elementRef?.nativeElement?.childNodes || []);\n const noText = listOfNode.every(node => node.nodeName !== '#text');\n // ignore icon and comment\n const noSpan = listOfNode.filter(node => {\n return !(node.nodeName === '#comment' || !!node?.attributes?.getNamedItem('nz-icon'));\n }).length == 0;\n const isIconOnly = !!this.nzIconDirectiveElement && noSpan && noText;\n return isIconOnly;\n }\n constructor(ngZone, elementRef, cdr, renderer, nzConfigService, directionality) {\n this.ngZone = ngZone;\n this.elementRef = elementRef;\n this.cdr = cdr;\n this.renderer = renderer;\n this.nzConfigService = nzConfigService;\n this.directionality = directionality;\n this._nzModuleName = NZ_CONFIG_MODULE_NAME;\n this.nzBlock = false;\n this.nzGhost = false;\n this.nzSearch = false;\n this.nzLoading = false;\n this.nzDanger = false;\n this.disabled = false;\n this.tabIndex = null;\n this.nzType = null;\n this.nzShape = null;\n this.nzSize = 'default';\n this.dir = 'ltr';\n this.destroy$ = new Subject();\n this.loading$ = new Subject();\n this.nzConfigService.getConfigChangeEventForComponent(NZ_CONFIG_MODULE_NAME).pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.cdr.markForCheck();\n });\n }\n ngOnInit() {\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe(direction => {\n this.dir = direction;\n this.cdr.detectChanges();\n });\n this.dir = this.directionality.value;\n this.ngZone.runOutsideAngular(() => {\n // Caretaker note: this event listener could've been added through `host.click` or `HostListener`.\n // The compiler generates the `ɵɵlistener` instruction which wraps the actual listener internally into the\n // function, which runs `markDirty()` before running the actual listener (the decorated class method).\n // Since we're preventing the default behavior and stopping event propagation this doesn't require Angular to run the change detection.\n fromEvent(this.elementRef.nativeElement, 'click', {\n capture: true\n }).pipe(takeUntil(this.destroy$)).subscribe(event => {\n if (this.disabled && event.target?.tagName === 'A' || this.nzLoading) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n });\n });\n }\n ngOnChanges(changes) {\n const {\n nzLoading\n } = changes;\n if (nzLoading) {\n this.loading$.next(this.nzLoading);\n }\n }\n ngAfterViewInit() {\n this.insertSpan(this.elementRef.nativeElement.childNodes, this.renderer);\n }\n ngAfterContentInit() {\n this.loading$.pipe(startWith(this.nzLoading), filter(() => !!this.nzIconDirectiveElement), takeUntil(this.destroy$)).subscribe(loading => {\n const nativeElement = this.nzIconDirectiveElement.nativeElement;\n if (loading) {\n this.renderer.setStyle(nativeElement, 'display', 'none');\n } else {\n this.renderer.removeStyle(nativeElement, 'display');\n }\n });\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n static {\n this.ɵfac = function NzButtonComponent_Factory(t) {\n return new (t || NzButtonComponent)(i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i1.NzConfigService), i0.ɵɵdirectiveInject(i2.Directionality, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzButtonComponent,\n selectors: [[\"button\", \"nz-button\", \"\"], [\"a\", \"nz-button\", \"\"]],\n contentQueries: function NzButtonComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NzIconDirective, 5, ElementRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.nzIconDirectiveElement = _t.first);\n }\n },\n hostAttrs: [1, \"ant-btn\"],\n hostVars: 32,\n hostBindings: function NzButtonComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"tabindex\", ctx.disabled ? -1 : ctx.tabIndex === null ? null : ctx.tabIndex)(\"disabled\", ctx.disabled || null);\n i0.ɵɵclassProp(\"ant-btn-primary\", ctx.nzType === \"primary\")(\"ant-btn-dashed\", ctx.nzType === \"dashed\")(\"ant-btn-link\", ctx.nzType === \"link\")(\"ant-btn-text\", ctx.nzType === \"text\")(\"ant-btn-circle\", ctx.nzShape === \"circle\")(\"ant-btn-round\", ctx.nzShape === \"round\")(\"ant-btn-lg\", ctx.nzSize === \"large\")(\"ant-btn-sm\", ctx.nzSize === \"small\")(\"ant-btn-dangerous\", ctx.nzDanger)(\"ant-btn-loading\", ctx.nzLoading)(\"ant-btn-background-ghost\", ctx.nzGhost)(\"ant-btn-block\", ctx.nzBlock)(\"ant-input-search-button\", ctx.nzSearch)(\"ant-btn-rtl\", ctx.dir === \"rtl\")(\"ant-btn-icon-only\", ctx.iconOnly);\n }\n },\n inputs: {\n nzBlock: \"nzBlock\",\n nzGhost: \"nzGhost\",\n nzSearch: \"nzSearch\",\n nzLoading: \"nzLoading\",\n nzDanger: \"nzDanger\",\n disabled: \"disabled\",\n tabIndex: \"tabIndex\",\n nzType: \"nzType\",\n nzShape: \"nzShape\",\n nzSize: \"nzSize\"\n },\n exportAs: [\"nzButton\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n attrs: _c0,\n ngContentSelectors: _c1,\n decls: 2,\n vars: 1,\n consts: [[\"nz-icon\", \"\", \"nzType\", \"loading\", 4, \"ngIf\"], [\"nz-icon\", \"\", \"nzType\", \"loading\"]],\n template: function NzButtonComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, NzButtonComponent_span_0_Template, 1, 0, \"span\", 0);\n i0.ɵɵprojection(1);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.nzLoading);\n }\n },\n dependencies: [NzIconModule, i3.NzIconDirective, NgIf],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n__decorate([InputBoolean()], NzButtonComponent.prototype, \"nzBlock\", void 0);\n__decorate([InputBoolean()], NzButtonComponent.prototype, \"nzGhost\", void 0);\n__decorate([InputBoolean()], NzButtonComponent.prototype, \"nzSearch\", void 0);\n__decorate([InputBoolean()], NzButtonComponent.prototype, \"nzLoading\", void 0);\n__decorate([InputBoolean()], NzButtonComponent.prototype, \"nzDanger\", void 0);\n__decorate([InputBoolean()], NzButtonComponent.prototype, \"disabled\", void 0);\n__decorate([WithConfig()], NzButtonComponent.prototype, \"nzSize\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzButtonComponent, [{\n type: Component,\n args: [{\n selector: 'button[nz-button], a[nz-button]',\n exportAs: 'nzButton',\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n \n \n `,\n host: {\n class: 'ant-btn',\n '[class.ant-btn-primary]': `nzType === 'primary'`,\n '[class.ant-btn-dashed]': `nzType === 'dashed'`,\n '[class.ant-btn-link]': `nzType === 'link'`,\n '[class.ant-btn-text]': `nzType === 'text'`,\n '[class.ant-btn-circle]': `nzShape === 'circle'`,\n '[class.ant-btn-round]': `nzShape === 'round'`,\n '[class.ant-btn-lg]': `nzSize === 'large'`,\n '[class.ant-btn-sm]': `nzSize === 'small'`,\n '[class.ant-btn-dangerous]': `nzDanger`,\n '[class.ant-btn-loading]': `nzLoading`,\n '[class.ant-btn-background-ghost]': `nzGhost`,\n '[class.ant-btn-block]': `nzBlock`,\n '[class.ant-input-search-button]': `nzSearch`,\n '[class.ant-btn-rtl]': `dir === 'rtl'`,\n '[class.ant-btn-icon-only]': `iconOnly`,\n '[attr.tabindex]': 'disabled ? -1 : (tabIndex === null ? null : tabIndex)',\n '[attr.disabled]': 'disabled || null'\n },\n imports: [NzIconModule, NgIf],\n standalone: true\n }]\n }], () => [{\n type: i0.NgZone\n }, {\n type: i0.ElementRef\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: i0.Renderer2\n }, {\n type: i1.NzConfigService\n }, {\n type: i2.Directionality,\n decorators: [{\n type: Optional\n }]\n }], {\n nzIconDirectiveElement: [{\n type: ContentChild,\n args: [NzIconDirective, {\n read: ElementRef\n }]\n }],\n nzBlock: [{\n type: Input\n }],\n nzGhost: [{\n type: Input\n }],\n nzSearch: [{\n type: Input\n }],\n nzLoading: [{\n type: Input\n }],\n nzDanger: [{\n type: Input\n }],\n disabled: [{\n type: Input\n }],\n tabIndex: [{\n type: Input\n }],\n nzType: [{\n type: Input\n }],\n nzShape: [{\n type: Input\n }],\n nzSize: [{\n type: Input\n }]\n });\n})();\nclass NzButtonGroupComponent {\n constructor(directionality) {\n this.directionality = directionality;\n this.nzSize = 'default';\n this.dir = 'ltr';\n this.destroy$ = new Subject();\n }\n ngOnInit() {\n this.dir = this.directionality.value;\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe(direction => {\n this.dir = direction;\n });\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n static {\n this.ɵfac = function NzButtonGroupComponent_Factory(t) {\n return new (t || NzButtonGroupComponent)(i0.ɵɵdirectiveInject(i2.Directionality, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzButtonGroupComponent,\n selectors: [[\"nz-button-group\"]],\n hostAttrs: [1, \"ant-btn-group\"],\n hostVars: 6,\n hostBindings: function NzButtonGroupComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"ant-btn-group-lg\", ctx.nzSize === \"large\")(\"ant-btn-group-sm\", ctx.nzSize === \"small\")(\"ant-btn-group-rtl\", ctx.dir === \"rtl\");\n }\n },\n inputs: {\n nzSize: \"nzSize\"\n },\n exportAs: [\"nzButtonGroup\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c1,\n decls: 1,\n vars: 0,\n template: function NzButtonGroupComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzButtonGroupComponent, [{\n type: Component,\n args: [{\n selector: 'nz-button-group',\n exportAs: 'nzButtonGroup',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'ant-btn-group',\n '[class.ant-btn-group-lg]': `nzSize === 'large'`,\n '[class.ant-btn-group-sm]': `nzSize === 'small'`,\n '[class.ant-btn-group-rtl]': `dir === 'rtl'`\n },\n preserveWhitespaces: false,\n template: ` `,\n standalone: true\n }]\n }], () => [{\n type: i2.Directionality,\n decorators: [{\n type: Optional\n }]\n }], {\n nzSize: [{\n type: Input\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzButtonModule {\n static {\n this.ɵfac = function NzButtonModule_Factory(t) {\n return new (t || NzButtonModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NzButtonModule,\n imports: [NzButtonComponent, NzButtonGroupComponent],\n exports: [NzButtonComponent, NzButtonGroupComponent, _NzTransitionPatchModule, NzWaveModule]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [NzButtonComponent, _NzTransitionPatchModule, NzWaveModule]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzButtonModule, [{\n type: NgModule,\n args: [{\n imports: [NzButtonComponent, NzButtonGroupComponent],\n exports: [NzButtonComponent, NzButtonGroupComponent, _NzTransitionPatchModule, NzWaveModule]\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NzButtonComponent, NzButtonGroupComponent, NzButtonModule };\n"], - "mappings": "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", + "sources": [], + "sourcesContent": [], + "mappings": "", "names": [] } diff --git a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_carousel.js b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_carousel.js index 3b81389..b2b962f 100644 --- a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_carousel.js +++ b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_carousel.js @@ -1,24 +1,26 @@ import { NzDragService, NzResizeService -} from "./chunk-W3IYJMS2.js"; +} from "./chunk-D5ODNR6D.js"; import { LEFT_ARROW, RIGHT_ARROW -} from "./chunk-UMSNQQWJ.js"; -import "./chunk-5OJ3CSUZ.js"; +} from "./chunk-JGP5BR6B.js"; +import "./chunk-WB57DPWD.js"; import { NzConfigService, WithConfig -} from "./chunk-NOIPAY33.js"; +} from "./chunk-ZHMJ6SNN.js"; +import { + Directionality +} from "./chunk-6NZ2BEBG.js"; import { - Directionality, Platform -} from "./chunk-UPQZZZIG.js"; +} from "./chunk-IAC53GOD.js"; import { InputBoolean, InputNumber -} from "./chunk-7XTJNSRU.js"; +} from "./chunk-M5GY4FCO.js"; import { NgForOf, NgIf, diff --git a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_carousel.js.map b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_carousel.js.map index cb35ed7..190bd88 100644 --- a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_carousel.js.map +++ b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_carousel.js.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-carousel.mjs"], "sourcesContent": ["import * as i0 from '@angular/core';\nimport { Directive, InjectionToken, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Optional, Inject, ContentChildren, ViewChild, Input, Output, NgModule } from '@angular/core';\nimport { __decorate } from 'tslib';\nimport { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { NgIf, NgForOf, NgTemplateOutlet } from '@angular/common';\nimport { Subject, fromEvent, timer } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport * as i1 from 'ng-zorro-antd/core/config';\nimport { WithConfig } from 'ng-zorro-antd/core/config';\nimport { InputBoolean, InputNumber } from 'ng-zorro-antd/core/util';\nimport * as i2 from '@angular/cdk/platform';\nimport * as i3 from 'ng-zorro-antd/core/services';\nimport * as i4 from '@angular/cdk/bidi';\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst _c0 = [\"slickList\"];\nconst _c1 = [\"slickTrack\"];\nfunction NzCarouselComponent_ul_6_li_1_ng_template_1_Template(rf, ctx) {}\nconst _c2 = a0 => ({\n $implicit: a0\n});\nfunction NzCarouselComponent_ul_6_li_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r10 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"li\", 9);\n i0.ɵɵlistener(\"click\", function NzCarouselComponent_ul_6_li_1_Template_li_click_0_listener() {\n const restoredCtx = i0.ɵɵrestoreView(_r10);\n const i_r7 = restoredCtx.index;\n const ctx_r9 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r9.onLiClick(i_r7));\n });\n i0.ɵɵtemplate(1, NzCarouselComponent_ul_6_li_1_ng_template_1_Template, 0, 0, \"ng-template\", 10);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const i_r7 = ctx.index;\n const ctx_r5 = i0.ɵɵnextContext(2);\n const _r4 = i0.ɵɵreference(8);\n i0.ɵɵclassProp(\"slick-active\", i_r7 === ctx_r5.activeIndex);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r5.nzDotRender || _r4)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(4, _c2, i_r7));\n }\n}\nfunction NzCarouselComponent_ul_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"ul\", 7);\n i0.ɵɵtemplate(1, NzCarouselComponent_ul_6_li_1_Template, 2, 6, \"li\", 8);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"slick-dots-top\", ctx_r2.nzDotPosition === \"top\")(\"slick-dots-bottom\", ctx_r2.nzDotPosition === \"bottom\")(\"slick-dots-left\", ctx_r2.nzDotPosition === \"left\")(\"slick-dots-right\", ctx_r2.nzDotPosition === \"right\");\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngForOf\", ctx_r2.carouselContents);\n }\n}\nfunction NzCarouselComponent_ng_template_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"button\");\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const index_r11 = ctx.$implicit;\n i0.ɵɵadvance(1);\n i0.ɵɵtextInterpolate(index_r11 + 1);\n }\n}\nconst _c3 = [\"*\"];\nclass NzCarouselContentDirective {\n set isActive(value) {\n this._active = value;\n if (this.isActive) {\n this.renderer.addClass(this.el, 'slick-active');\n } else {\n this.renderer.removeClass(this.el, 'slick-active');\n }\n }\n get isActive() {\n return this._active;\n }\n constructor(elementRef, renderer) {\n this.renderer = renderer;\n this._active = false;\n this.el = elementRef.nativeElement;\n }\n static {\n this.ɵfac = function NzCarouselContentDirective_Factory(t) {\n return new (t || NzCarouselContentDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzCarouselContentDirective,\n selectors: [[\"\", \"nz-carousel-content\", \"\"]],\n hostAttrs: [1, \"slick-slide\"],\n exportAs: [\"nzCarouselContent\"],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzCarouselContentDirective, [{\n type: Directive,\n args: [{\n selector: '[nz-carousel-content]',\n exportAs: 'nzCarouselContent',\n host: {\n class: 'slick-slide'\n },\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: i0.Renderer2\n }], null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzCarouselBaseStrategy {\n get maxIndex() {\n return this.length - 1;\n }\n get firstEl() {\n return this.contents[0].el;\n }\n get lastEl() {\n return this.contents[this.maxIndex].el;\n }\n constructor(carouselComponent, cdr, renderer, platform, options) {\n this.cdr = cdr;\n this.renderer = renderer;\n this.platform = platform;\n this.options = options;\n this.carouselComponent = carouselComponent;\n }\n /**\n * Initialize dragging sequences.\n *\n * @param contents\n */\n withCarouselContents(contents) {\n const carousel = this.carouselComponent;\n this.slickListEl = carousel.slickListEl;\n this.slickTrackEl = carousel.slickTrackEl;\n this.contents = contents?.toArray() || [];\n this.length = this.contents.length;\n if (this.platform.isBrowser) {\n const rect = carousel.el.getBoundingClientRect();\n this.unitWidth = rect.width;\n this.unitHeight = rect.height;\n } else {\n // Since we cannot call getBoundingClientRect in server, we just hide all items except for the first one.\n contents?.forEach((content, index) => {\n if (index === 0) {\n this.renderer.setStyle(content.el, 'width', '100%');\n } else {\n this.renderer.setStyle(content.el, 'display', 'none');\n }\n });\n }\n }\n /**\n * When user drag the carousel component.\n *\n * @optional\n */\n dragging(_vector) {}\n /**\n * Destroy a scroll strategy.\n */\n dispose() {}\n getFromToInBoundary(f, t) {\n const length = this.maxIndex + 1;\n return {\n from: (f + length) % length,\n to: (t + length) % length\n };\n }\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzCarouselOpacityStrategy extends NzCarouselBaseStrategy {\n withCarouselContents(contents) {\n super.withCarouselContents(contents);\n if (this.contents) {\n this.slickTrackEl.style.width = `${this.length * this.unitWidth}px`;\n this.contents.forEach((content, i) => {\n this.renderer.setStyle(content.el, 'opacity', this.carouselComponent.activeIndex === i ? '1' : '0');\n this.renderer.setStyle(content.el, 'position', 'relative');\n this.renderer.setStyle(content.el, 'width', `${this.unitWidth}px`);\n this.renderer.setStyle(content.el, 'left', `${-this.unitWidth * i}px`);\n this.renderer.setStyle(content.el, 'transition', ['opacity 500ms ease 0s', 'visibility 500ms ease 0s']);\n });\n }\n }\n switch(_f, _t) {\n const {\n to: t\n } = this.getFromToInBoundary(_f, _t);\n const complete$ = new Subject();\n this.contents.forEach((content, i) => {\n this.renderer.setStyle(content.el, 'opacity', t === i ? '1' : '0');\n });\n setTimeout(() => {\n complete$.next();\n complete$.complete();\n }, this.carouselComponent.nzTransitionSpeed);\n return complete$;\n }\n dispose() {\n this.contents.forEach(content => {\n this.renderer.setStyle(content.el, 'transition', null);\n this.renderer.setStyle(content.el, 'opacity', null);\n this.renderer.setStyle(content.el, 'width', null);\n this.renderer.setStyle(content.el, 'left', null);\n });\n super.dispose();\n }\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzCarouselTransformStrategy extends NzCarouselBaseStrategy {\n get vertical() {\n return this.carouselComponent.vertical;\n }\n constructor(carouselComponent, cdr, renderer, platform, options) {\n super(carouselComponent, cdr, renderer, platform, options);\n this.isDragging = false;\n this.isTransitioning = false;\n }\n dispose() {\n super.dispose();\n this.renderer.setStyle(this.slickTrackEl, 'transform', null);\n }\n withCarouselContents(contents) {\n super.withCarouselContents(contents);\n const carousel = this.carouselComponent;\n const activeIndex = carousel.activeIndex;\n // We only do when we are in browser.\n if (this.platform.isBrowser && this.contents.length) {\n this.renderer.setStyle(this.slickListEl, 'height', `${this.unitHeight}px`);\n if (this.vertical) {\n this.renderer.setStyle(this.slickTrackEl, 'width', `${this.unitWidth}px`);\n this.renderer.setStyle(this.slickTrackEl, 'height', `${this.length * this.unitHeight}px`);\n this.renderer.setStyle(this.slickTrackEl, 'transform', `translate3d(0, ${-activeIndex * this.unitHeight}px, 0)`);\n } else {\n this.renderer.setStyle(this.slickTrackEl, 'height', `${this.unitHeight}px`);\n this.renderer.setStyle(this.slickTrackEl, 'width', `${this.length * this.unitWidth}px`);\n this.renderer.setStyle(this.slickTrackEl, 'transform', `translate3d(${-activeIndex * this.unitWidth}px, 0, 0)`);\n }\n this.contents.forEach(content => {\n this.renderer.setStyle(content.el, 'position', 'relative');\n this.renderer.setStyle(content.el, 'width', `${this.unitWidth}px`);\n this.renderer.setStyle(content.el, 'height', `${this.unitHeight}px`);\n });\n }\n }\n switch(_f, _t) {\n const {\n to: t\n } = this.getFromToInBoundary(_f, _t);\n const complete$ = new Subject();\n this.renderer.setStyle(this.slickTrackEl, 'transition', `transform ${this.carouselComponent.nzTransitionSpeed}ms ease`);\n if (this.vertical) {\n this.verticalTransform(_f, _t);\n } else {\n this.horizontalTransform(_f, _t);\n }\n this.isTransitioning = true;\n this.isDragging = false;\n // TODO@hullis: use transitionEnd event instead of setTimeout\n setTimeout(() => {\n this.renderer.setStyle(this.slickTrackEl, 'transition', null);\n this.contents.forEach(content => {\n this.renderer.setStyle(content.el, this.vertical ? 'top' : 'left', null);\n });\n if (this.vertical) {\n this.renderer.setStyle(this.slickTrackEl, 'transform', `translate3d(0, ${-t * this.unitHeight}px, 0)`);\n } else {\n this.renderer.setStyle(this.slickTrackEl, 'transform', `translate3d(${-t * this.unitWidth}px, 0, 0)`);\n }\n this.isTransitioning = false;\n complete$.next();\n complete$.complete();\n }, this.carouselComponent.nzTransitionSpeed);\n return complete$.asObservable();\n }\n dragging(_vector) {\n if (this.isTransitioning) {\n return;\n }\n const activeIndex = this.carouselComponent.activeIndex;\n if (this.carouselComponent.vertical) {\n if (!this.isDragging && this.length > 2) {\n if (activeIndex === this.maxIndex) {\n this.prepareVerticalContext(true);\n } else if (activeIndex === 0) {\n this.prepareVerticalContext(false);\n }\n }\n this.renderer.setStyle(this.slickTrackEl, 'transform', `translate3d(0, ${-activeIndex * this.unitHeight + _vector.x}px, 0)`);\n } else {\n if (!this.isDragging && this.length > 2) {\n if (activeIndex === this.maxIndex) {\n this.prepareHorizontalContext(true);\n } else if (activeIndex === 0) {\n this.prepareHorizontalContext(false);\n }\n }\n this.renderer.setStyle(this.slickTrackEl, 'transform', `translate3d(${-activeIndex * this.unitWidth + _vector.x}px, 0, 0)`);\n }\n this.isDragging = true;\n }\n verticalTransform(_f, _t) {\n const {\n from: f,\n to: t\n } = this.getFromToInBoundary(_f, _t);\n const needToAdjust = this.length > 2 && _t !== t;\n if (needToAdjust) {\n this.prepareVerticalContext(t < f);\n this.renderer.setStyle(this.slickTrackEl, 'transform', `translate3d(0, ${-_t * this.unitHeight}px, 0)`);\n } else {\n this.renderer.setStyle(this.slickTrackEl, 'transform', `translate3d(0, ${-t * this.unitHeight}px, 0`);\n }\n }\n horizontalTransform(_f, _t) {\n const {\n from: f,\n to: t\n } = this.getFromToInBoundary(_f, _t);\n const needToAdjust = this.length > 2 && _t !== t;\n if (needToAdjust) {\n this.prepareHorizontalContext(t < f);\n this.renderer.setStyle(this.slickTrackEl, 'transform', `translate3d(${-_t * this.unitWidth}px, 0, 0)`);\n } else {\n this.renderer.setStyle(this.slickTrackEl, 'transform', `translate3d(${-t * this.unitWidth}px, 0, 0`);\n }\n }\n prepareVerticalContext(lastToFirst) {\n if (lastToFirst) {\n this.renderer.setStyle(this.firstEl, 'top', `${this.length * this.unitHeight}px`);\n this.renderer.setStyle(this.lastEl, 'top', null);\n } else {\n this.renderer.setStyle(this.firstEl, 'top', null);\n this.renderer.setStyle(this.lastEl, 'top', `${-this.unitHeight * this.length}px`);\n }\n }\n prepareHorizontalContext(lastToFirst) {\n if (lastToFirst) {\n this.renderer.setStyle(this.firstEl, 'left', `${this.length * this.unitWidth}px`);\n this.renderer.setStyle(this.lastEl, 'left', null);\n } else {\n this.renderer.setStyle(this.firstEl, 'left', null);\n this.renderer.setStyle(this.lastEl, 'left', `${-this.unitWidth * this.length}px`);\n }\n }\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst NZ_CAROUSEL_CUSTOM_STRATEGIES = new InjectionToken('nz-carousel-custom-strategies');\nconst NZ_CONFIG_MODULE_NAME = 'carousel';\nclass NzCarouselComponent {\n set nzDotPosition(value) {\n this._dotPosition = value;\n if (value === 'left' || value === 'right') {\n this.vertical = true;\n } else {\n this.vertical = false;\n }\n }\n get nzDotPosition() {\n return this._dotPosition;\n }\n constructor(elementRef, nzConfigService, ngZone, renderer, cdr, platform, resizeService, nzDragService, directionality, customStrategies) {\n this.nzConfigService = nzConfigService;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.cdr = cdr;\n this.platform = platform;\n this.resizeService = resizeService;\n this.nzDragService = nzDragService;\n this.directionality = directionality;\n this.customStrategies = customStrategies;\n this._nzModuleName = NZ_CONFIG_MODULE_NAME;\n this.nzEffect = 'scrollx';\n this.nzEnableSwipe = true;\n this.nzDots = true;\n this.nzAutoPlay = false;\n this.nzAutoPlaySpeed = 3000;\n this.nzTransitionSpeed = 500;\n this.nzLoop = true;\n /**\n * this property is passed directly to an NzCarouselBaseStrategy\n */\n this.nzStrategyOptions = undefined;\n this._dotPosition = 'bottom';\n this.nzBeforeChange = new EventEmitter();\n this.nzAfterChange = new EventEmitter();\n this.activeIndex = 0;\n this.vertical = false;\n this.transitionInProgress = null;\n this.dir = 'ltr';\n this.destroy$ = new Subject();\n this.gestureRect = null;\n this.pointerDelta = null;\n this.isTransiting = false;\n this.isDragging = false;\n this.onLiClick = index => {\n if (this.dir === 'rtl') {\n this.goTo(this.carouselContents.length - 1 - index);\n } else {\n this.goTo(index);\n }\n };\n /**\n * Drag carousel.\n */\n this.pointerDown = event => {\n if (!this.isDragging && !this.isTransiting && this.nzEnableSwipe) {\n this.clearScheduledTransition();\n this.gestureRect = this.slickListEl.getBoundingClientRect();\n this.nzDragService.requestDraggingSequence(event).subscribe(delta => {\n this.pointerDelta = delta;\n this.isDragging = true;\n this.strategy?.dragging(this.pointerDelta);\n }, () => {}, () => {\n if (this.nzEnableSwipe && this.isDragging) {\n const xDelta = this.pointerDelta ? this.pointerDelta.x : 0;\n // Switch to another slide if delta is bigger than third of the width.\n if (Math.abs(xDelta) > this.gestureRect.width / 3 && (this.nzLoop || xDelta <= 0 && this.activeIndex + 1 < this.carouselContents.length || xDelta > 0 && this.activeIndex > 0)) {\n this.goTo(xDelta > 0 ? this.activeIndex - 1 : this.activeIndex + 1);\n } else {\n this.goTo(this.activeIndex);\n }\n this.gestureRect = null;\n this.pointerDelta = null;\n }\n this.isDragging = false;\n });\n }\n };\n this.nzDotPosition = 'bottom';\n this.el = elementRef.nativeElement;\n }\n ngOnInit() {\n this.slickListEl = this.slickList.nativeElement;\n this.slickTrackEl = this.slickTrack.nativeElement;\n this.dir = this.directionality.value;\n this.directionality.change.pipe(takeUntil(this.destroy$)).subscribe(direction => {\n this.dir = direction;\n this.markContentActive(this.activeIndex);\n this.cdr.detectChanges();\n });\n this.ngZone.runOutsideAngular(() => {\n fromEvent(this.slickListEl, 'keydown').pipe(takeUntil(this.destroy$)).subscribe(event => {\n const {\n keyCode\n } = event;\n if (keyCode !== LEFT_ARROW && keyCode !== RIGHT_ARROW) {\n return;\n }\n event.preventDefault();\n this.ngZone.run(() => {\n if (keyCode === LEFT_ARROW) {\n this.pre();\n } else {\n this.next();\n }\n this.cdr.markForCheck();\n });\n });\n });\n }\n ngAfterContentInit() {\n this.markContentActive(0);\n }\n ngAfterViewInit() {\n this.carouselContents.changes.subscribe(() => {\n this.markContentActive(0);\n this.layout();\n });\n this.resizeService.subscribe().pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.layout();\n });\n this.switchStrategy();\n this.markContentActive(0);\n this.layout();\n // If embedded in an entry component, it may do initial render at an inappropriate time.\n // ngZone.onStable won't do this trick\n // TODO: need to change this.\n Promise.resolve().then(() => {\n this.layout();\n });\n }\n ngOnChanges(changes) {\n const {\n nzEffect,\n nzDotPosition\n } = changes;\n if (nzEffect && !nzEffect.isFirstChange()) {\n this.switchStrategy();\n this.markContentActive(0);\n this.layout();\n }\n if (nzDotPosition && !nzDotPosition.isFirstChange()) {\n this.switchStrategy();\n this.markContentActive(0);\n this.layout();\n }\n if (!this.nzAutoPlay || !this.nzAutoPlaySpeed) {\n this.clearScheduledTransition();\n } else {\n this.scheduleNextTransition();\n }\n }\n ngOnDestroy() {\n this.clearScheduledTransition();\n if (this.strategy) {\n this.strategy.dispose();\n }\n this.destroy$.next();\n this.destroy$.complete();\n }\n next() {\n this.goTo(this.activeIndex + 1);\n }\n pre() {\n this.goTo(this.activeIndex - 1);\n }\n goTo(index) {\n if (this.carouselContents && this.carouselContents.length && !this.isTransiting && (this.nzLoop || index >= 0 && index < this.carouselContents.length)) {\n const length = this.carouselContents.length;\n const from = this.activeIndex;\n const to = (index + length) % length;\n this.isTransiting = true;\n this.nzBeforeChange.emit({\n from,\n to\n });\n this.strategy.switch(this.activeIndex, index).subscribe(() => {\n this.scheduleNextTransition();\n this.nzAfterChange.emit(to);\n this.isTransiting = false;\n });\n this.markContentActive(to);\n this.cdr.markForCheck();\n }\n }\n switchStrategy() {\n if (this.strategy) {\n this.strategy.dispose();\n }\n // Load custom strategies first.\n const customStrategy = this.customStrategies ? this.customStrategies.find(s => s.name === this.nzEffect) : null;\n if (customStrategy) {\n this.strategy = new customStrategy.strategy(this, this.cdr, this.renderer, this.platform);\n return;\n }\n this.strategy = this.nzEffect === 'scrollx' ? new NzCarouselTransformStrategy(this, this.cdr, this.renderer, this.platform) : new NzCarouselOpacityStrategy(this, this.cdr, this.renderer, this.platform);\n }\n scheduleNextTransition() {\n this.clearScheduledTransition();\n if (this.nzAutoPlay && this.nzAutoPlaySpeed > 0 && this.platform.isBrowser) {\n this.transitionInProgress = setTimeout(() => {\n this.goTo(this.activeIndex + 1);\n }, this.nzAutoPlaySpeed);\n }\n }\n clearScheduledTransition() {\n if (this.transitionInProgress) {\n clearTimeout(this.transitionInProgress);\n this.transitionInProgress = null;\n }\n }\n markContentActive(index) {\n this.activeIndex = index;\n if (this.carouselContents) {\n this.carouselContents.forEach((slide, i) => {\n if (this.dir === 'rtl') {\n slide.isActive = index === this.carouselContents.length - 1 - i;\n } else {\n slide.isActive = index === i;\n }\n });\n }\n this.cdr.markForCheck();\n }\n layout() {\n if (this.strategy) {\n this.strategy.withCarouselContents(this.carouselContents);\n }\n }\n static {\n this.ɵfac = function NzCarouselComponent_Factory(t) {\n return new (t || NzCarouselComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.NzConfigService), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i2.Platform), i0.ɵɵdirectiveInject(i3.NzResizeService), i0.ɵɵdirectiveInject(i3.NzDragService), i0.ɵɵdirectiveInject(i4.Directionality, 8), i0.ɵɵdirectiveInject(NZ_CAROUSEL_CUSTOM_STRATEGIES, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzCarouselComponent,\n selectors: [[\"nz-carousel\"]],\n contentQueries: function NzCarouselComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NzCarouselContentDirective, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.carouselContents = _t);\n }\n },\n viewQuery: function NzCarouselComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c0, 7);\n i0.ɵɵviewQuery(_c1, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.slickList = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.slickTrack = _t.first);\n }\n },\n hostAttrs: [1, \"ant-carousel\"],\n hostVars: 4,\n hostBindings: function NzCarouselComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"ant-carousel-vertical\", ctx.vertical)(\"ant-carousel-rtl\", ctx.dir === \"rtl\");\n }\n },\n inputs: {\n nzDotRender: \"nzDotRender\",\n nzEffect: \"nzEffect\",\n nzEnableSwipe: \"nzEnableSwipe\",\n nzDots: \"nzDots\",\n nzAutoPlay: \"nzAutoPlay\",\n nzAutoPlaySpeed: \"nzAutoPlaySpeed\",\n nzTransitionSpeed: \"nzTransitionSpeed\",\n nzLoop: \"nzLoop\",\n nzStrategyOptions: \"nzStrategyOptions\",\n nzDotPosition: \"nzDotPosition\"\n },\n outputs: {\n nzBeforeChange: \"nzBeforeChange\",\n nzAfterChange: \"nzAfterChange\"\n },\n exportAs: [\"nzCarousel\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c3,\n decls: 9,\n vars: 3,\n consts: [[1, \"slick-initialized\", \"slick-slider\"], [\"tabindex\", \"-1\", 1, \"slick-list\", 3, \"mousedown\", \"touchstart\"], [\"slickList\", \"\"], [1, \"slick-track\"], [\"slickTrack\", \"\"], [\"class\", \"slick-dots\", 3, \"slick-dots-top\", \"slick-dots-bottom\", \"slick-dots-left\", \"slick-dots-right\", 4, \"ngIf\"], [\"renderDotTemplate\", \"\"], [1, \"slick-dots\"], [3, \"slick-active\", \"click\", 4, \"ngFor\", \"ngForOf\"], [3, \"click\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]],\n template: function NzCarouselComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelementStart(0, \"div\", 0)(1, \"div\", 1, 2);\n i0.ɵɵlistener(\"mousedown\", function NzCarouselComponent_Template_div_mousedown_1_listener($event) {\n return ctx.pointerDown($event);\n })(\"touchstart\", function NzCarouselComponent_Template_div_touchstart_1_listener($event) {\n return ctx.pointerDown($event);\n });\n i0.ɵɵelementStart(3, \"div\", 3, 4);\n i0.ɵɵprojection(5);\n i0.ɵɵelementEnd()();\n i0.ɵɵtemplate(6, NzCarouselComponent_ul_6_Template, 2, 9, \"ul\", 5);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(7, NzCarouselComponent_ng_template_7_Template, 2, 1, \"ng-template\", null, 6, i0.ɵɵtemplateRefExtractor);\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"slick-vertical\", ctx.nzDotPosition === \"left\" || ctx.nzDotPosition === \"right\");\n i0.ɵɵadvance(6);\n i0.ɵɵproperty(\"ngIf\", ctx.nzDots);\n }\n },\n dependencies: [NgIf, NgForOf, NgTemplateOutlet],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n__decorate([WithConfig()], NzCarouselComponent.prototype, \"nzEffect\", void 0);\n__decorate([WithConfig(), InputBoolean()], NzCarouselComponent.prototype, \"nzEnableSwipe\", void 0);\n__decorate([WithConfig(), InputBoolean()], NzCarouselComponent.prototype, \"nzDots\", void 0);\n__decorate([WithConfig(), InputBoolean()], NzCarouselComponent.prototype, \"nzAutoPlay\", void 0);\n__decorate([WithConfig(), InputNumber()], NzCarouselComponent.prototype, \"nzAutoPlaySpeed\", void 0);\n__decorate([InputNumber()], NzCarouselComponent.prototype, \"nzTransitionSpeed\", void 0);\n__decorate([WithConfig()], NzCarouselComponent.prototype, \"nzLoop\", void 0);\n__decorate([WithConfig()], NzCarouselComponent.prototype, \"nzDotPosition\", null);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzCarouselComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: 'nz-carousel',\n exportAs: 'nzCarousel',\n preserveWhitespaces: false,\n template: `\n \n \n \n
\n \n
\n \n \n \n \n \n \n \n \n\n \n \n \n `,\n host: {\n class: 'ant-carousel',\n '[class.ant-carousel-vertical]': 'vertical',\n '[class.ant-carousel-rtl]': `dir === 'rtl'`\n },\n imports: [NgIf, NgForOf, NgTemplateOutlet],\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: i1.NzConfigService\n }, {\n type: i0.NgZone\n }, {\n type: i0.Renderer2\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: i2.Platform\n }, {\n type: i3.NzResizeService\n }, {\n type: i3.NzDragService\n }, {\n type: i4.Directionality,\n decorators: [{\n type: Optional\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [NZ_CAROUSEL_CUSTOM_STRATEGIES]\n }]\n }], {\n carouselContents: [{\n type: ContentChildren,\n args: [NzCarouselContentDirective]\n }],\n slickList: [{\n type: ViewChild,\n args: ['slickList', {\n static: true\n }]\n }],\n slickTrack: [{\n type: ViewChild,\n args: ['slickTrack', {\n static: true\n }]\n }],\n nzDotRender: [{\n type: Input\n }],\n nzEffect: [{\n type: Input\n }],\n nzEnableSwipe: [{\n type: Input\n }],\n nzDots: [{\n type: Input\n }],\n nzAutoPlay: [{\n type: Input\n }],\n nzAutoPlaySpeed: [{\n type: Input\n }],\n nzTransitionSpeed: [{\n type: Input\n }],\n nzLoop: [{\n type: Input\n }],\n nzStrategyOptions: [{\n type: Input\n }],\n nzDotPosition: [{\n type: Input\n }],\n nzBeforeChange: [{\n type: Output\n }],\n nzAfterChange: [{\n type: Output\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzCarouselModule {\n static {\n this.ɵfac = function NzCarouselModule_Factory(t) {\n return new (t || NzCarouselModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NzCarouselModule,\n imports: [NzCarouselComponent, NzCarouselContentDirective],\n exports: [NzCarouselComponent, NzCarouselContentDirective]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzCarouselModule, [{\n type: NgModule,\n args: [{\n imports: [NzCarouselComponent, NzCarouselContentDirective],\n exports: [NzCarouselComponent, NzCarouselContentDirective]\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n/**\n * this strategy is very much like NzCarouselTransformStrategy, but it doesn't loop between the first and the last one\n */\nclass NzCarouselTransformNoLoopStrategy extends NzCarouselBaseStrategy {\n get vertical() {\n return this.carouselComponent.vertical;\n }\n constructor(carouselComponent, cdr, renderer, platform, options) {\n super(carouselComponent, cdr, renderer, platform, options);\n this.isTransitioning = false;\n }\n dispose() {\n this.renderer.setStyle(this.slickTrackEl, 'transform', null);\n super.dispose();\n }\n withCarouselContents(contents) {\n super.withCarouselContents(contents);\n const carousel = this.carouselComponent;\n const activeIndex = carousel.activeIndex;\n if (this.platform.isBrowser && this.contents.length) {\n this.renderer.setStyle(this.slickListEl, 'height', `${this.unitHeight}px`);\n if (this.platform.isBrowser && this.contents.length) {\n this.renderer.setStyle(this.slickListEl, 'height', `${this.unitHeight}px`);\n if (this.vertical) {\n this.renderer.setStyle(this.slickTrackEl, 'width', `${this.unitWidth}px`);\n this.renderer.setStyle(this.slickTrackEl, 'height', `${this.length * this.unitHeight}px`);\n this.renderer.setStyle(this.slickTrackEl, 'transform', `translate3d(0, ${-activeIndex * this.unitHeight}px, 0)`);\n } else {\n this.renderer.setStyle(this.slickTrackEl, 'height', `${this.unitHeight}px`);\n this.renderer.setStyle(this.slickTrackEl, 'width', `${this.length * this.unitWidth}px`);\n this.renderer.setStyle(this.slickTrackEl, 'transform', `translate3d(${-activeIndex * this.unitWidth}px, 0, 0)`);\n }\n this.contents.forEach(content => {\n this.renderer.setStyle(content.el, 'position', 'relative');\n this.renderer.setStyle(content.el, 'width', `${this.unitWidth}px`);\n this.renderer.setStyle(content.el, 'height', `${this.unitHeight}px`);\n });\n }\n }\n }\n switch(_f, _t) {\n const to = (_t + this.length) % this.length;\n const transitionSpeed = this.carouselComponent.nzTransitionSpeed;\n const complete$ = new Subject();\n this.renderer.setStyle(this.slickTrackEl, 'transition', `transform ${transitionSpeed}ms ease`);\n if (this.vertical) {\n this.renderer.setStyle(this.slickTrackEl, 'transform', `translate3d(0, ${-to * this.unitHeight}px, 0)`);\n } else {\n this.renderer.setStyle(this.slickTrackEl, 'transform', `translate3d(${-to * this.unitWidth}px, 0, 0)`);\n }\n this.isTransitioning = true;\n setTimeout(() => {\n // this strategy don't need to do a following adjust\n this.isTransitioning = false;\n complete$.next();\n complete$.complete();\n }, transitionSpeed);\n return complete$.asObservable();\n }\n dragging(vector) {\n if (this.isTransitioning) {\n return;\n }\n const activeIndex = this.carouselComponent.activeIndex;\n if (this.vertical) {\n this.renderer.setStyle(this.slickTrackEl, 'transform', `translate3d(0, ${-activeIndex * this.unitHeight + vector.x}px, 0)`);\n } else {\n this.renderer.setStyle(this.slickTrackEl, 'transform', `translate3d(${-activeIndex * this.unitWidth + vector.x}px, 0, 0)`);\n }\n }\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzCarouselFlipStrategy extends NzCarouselBaseStrategy {\n withCarouselContents(contents) {\n super.withCarouselContents(contents);\n if (this.contents) {\n this.renderer.setStyle(this.slickListEl, 'width', `${this.unitWidth}px`);\n this.renderer.setStyle(this.slickTrackEl, 'width', `${this.length * this.unitWidth}px`);\n this.contents.forEach((content, i) => {\n const cur = this.carouselComponent.activeIndex === i;\n this.renderer.setStyle(content.el, 'transform', cur ? 'rotateY(0deg)' : 'rotateY(180deg)');\n this.renderer.setStyle(content.el, 'position', 'relative');\n this.renderer.setStyle(content.el, 'width', `${this.unitWidth}px`);\n this.renderer.setStyle(content.el, 'left', `${-this.unitWidth * i}px`);\n this.renderer.setStyle(content.el, 'transform-style', 'preserve-3d');\n this.renderer.setStyle(content.el, 'backface-visibility', 'hidden');\n });\n const {\n carouselComponent\n } = this;\n carouselComponent.ngZone.runOutsideAngular(() => {\n timer(carouselComponent.nzTransitionSpeed).subscribe(() => {\n this.contents.forEach(c => this.renderer.setStyle(c.el, 'transition', ['transform 500ms ease 0s']));\n });\n });\n }\n }\n switch(rawF, rawT) {\n const {\n from,\n to\n } = this.getFromToInBoundary(rawF, rawT);\n const complete$ = new Subject();\n const speed = this.carouselComponent.nzTransitionSpeed;\n timer(speed).subscribe(() => {\n complete$.next();\n complete$.complete();\n });\n if (rawF === rawT) {\n return complete$;\n }\n this.contents.forEach((content, i) => {\n if (i === from) {\n this.renderer.setStyle(content.el, 'transform', 'rotateY(180deg)');\n } else if (i === to) {\n this.renderer.setStyle(content.el, 'transform', 'rotateY(0deg)');\n }\n });\n return complete$.asObservable();\n }\n dispose() {\n this.contents.forEach(content => {\n this.renderer.setStyle(content.el, 'transition', null);\n this.renderer.setStyle(content.el, 'transform', null);\n this.renderer.setStyle(content.el, 'width', null);\n this.renderer.setStyle(content.el, 'left', null);\n this.renderer.setStyle(content.el, 'transform-style', null);\n this.renderer.setStyle(content.el, 'backface-visibility', null);\n });\n super.dispose();\n }\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NZ_CAROUSEL_CUSTOM_STRATEGIES, NzCarouselBaseStrategy, NzCarouselComponent, NzCarouselContentDirective, NzCarouselFlipStrategy, NzCarouselModule, NzCarouselOpacityStrategy, NzCarouselTransformNoLoopStrategy, NzCarouselTransformStrategy };\n"], - "mappings": "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", + "mappings": "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", "names": [] } diff --git a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_checkbox.js b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_checkbox.js index ef454fe..fa7a26a 100644 --- a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_checkbox.js +++ b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_checkbox.js @@ -1,19 +1,11 @@ -import { - FocusMonitor -} from "./chunk-C2DNBB57.js"; import { NzFormStatusService -} from "./chunk-W2UE3A2Q.js"; -import "./chunk-S7G3TSRW.js"; -import "./chunk-UMSNQQWJ.js"; -import "./chunk-5OJ3CSUZ.js"; -import "./chunk-NOIPAY33.js"; +} from "./chunk-FGZVIKKA.js"; import { - Directionality -} from "./chunk-UPQZZZIG.js"; -import { - InputBoolean -} from "./chunk-7XTJNSRU.js"; + FocusMonitor +} from "./chunk-E6XJDY45.js"; +import "./chunk-JGP5BR6B.js"; +import "./chunk-WB57DPWD.js"; import { CheckboxControlValueAccessor, FormsModule, @@ -21,6 +13,15 @@ import { NgControlStatus, NgModel } from "./chunk-D4IIJHV7.js"; +import "./chunk-VWMHIMW7.js"; +import "./chunk-ZHMJ6SNN.js"; +import { + Directionality +} from "./chunk-6NZ2BEBG.js"; +import "./chunk-IAC53GOD.js"; +import { + InputBoolean +} from "./chunk-M5GY4FCO.js"; import "./chunk-Y4CEYMY2.js"; import "./chunk-X7WBA24Z.js"; import { diff --git a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_checkbox.js.map b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_checkbox.js.map index 4564468..d17ce21 100644 --- a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_checkbox.js.map +++ b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_checkbox.js.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-checkbox.mjs"], "sourcesContent": ["import { __decorate } from 'tslib';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Output, forwardRef, Optional, ViewChild, Input, NgModule } from '@angular/core';\nimport * as i5 from '@angular/forms';\nimport { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { Subject, fromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { InputBoolean } from 'ng-zorro-antd/core/util';\nimport * as i2 from '@angular/cdk/a11y';\nimport * as i3 from '@angular/cdk/bidi';\nimport * as i4 from 'ng-zorro-antd/core/form';\nimport { NgForOf } from '@angular/common';\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst _c0 = [\"*\"];\nconst _c1 = [\"inputElement\"];\nconst _c2 = [\"nz-checkbox\", \"\"];\nfunction NzCheckboxGroupComponent_label_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"label\", 1);\n i0.ɵɵlistener(\"nzCheckedChange\", function NzCheckboxGroupComponent_label_0_Template_label_nzCheckedChange_0_listener($event) {\n const restoredCtx = i0.ɵɵrestoreView(_r3);\n const o_r1 = restoredCtx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r2.onCheckedChange(o_r1, $event));\n });\n i0.ɵɵelementStart(1, \"span\");\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const o_r1 = ctx.$implicit;\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"nzDisabled\", o_r1.disabled || ctx_r0.nzDisabled)(\"nzChecked\", o_r1.checked);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(o_r1.label);\n }\n}\nclass NzCheckboxWrapperComponent {\n constructor() {\n this.nzOnChange = new EventEmitter();\n this.checkboxList = [];\n }\n addCheckbox(value) {\n this.checkboxList.push(value);\n }\n removeCheckbox(value) {\n this.checkboxList.splice(this.checkboxList.indexOf(value), 1);\n }\n onChange() {\n const listOfCheckedValue = this.checkboxList.filter(item => item.nzChecked).map(item => item.nzValue);\n this.nzOnChange.emit(listOfCheckedValue);\n }\n static {\n this.ɵfac = function NzCheckboxWrapperComponent_Factory(t) {\n return new (t || NzCheckboxWrapperComponent)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzCheckboxWrapperComponent,\n selectors: [[\"nz-checkbox-wrapper\"]],\n hostAttrs: [1, \"ant-checkbox-group\"],\n outputs: {\n nzOnChange: \"nzOnChange\"\n },\n exportAs: [\"nzCheckboxWrapper\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n template: function NzCheckboxWrapperComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzCheckboxWrapperComponent, [{\n type: Component,\n args: [{\n selector: 'nz-checkbox-wrapper',\n exportAs: 'nzCheckboxWrapper',\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: ` `,\n host: {\n class: 'ant-checkbox-group'\n },\n standalone: true\n }]\n }], null, {\n nzOnChange: [{\n type: Output\n }]\n });\n})();\nclass NzCheckboxComponent {\n innerCheckedChange(checked) {\n if (!this.nzDisabled) {\n this.nzChecked = checked;\n this.onChange(this.nzChecked);\n this.nzCheckedChange.emit(this.nzChecked);\n if (this.nzCheckboxWrapperComponent) {\n this.nzCheckboxWrapperComponent.onChange();\n }\n }\n }\n writeValue(value) {\n this.nzChecked = value;\n this.cdr.markForCheck();\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n setDisabledState(disabled) {\n this.nzDisabled = this.isNzDisableFirstChange && this.nzDisabled || disabled;\n this.isNzDisableFirstChange = false;\n this.cdr.markForCheck();\n }\n focus() {\n this.focusMonitor.focusVia(this.inputElement, 'keyboard');\n }\n blur() {\n this.inputElement.nativeElement.blur();\n }\n constructor(ngZone, elementRef, nzCheckboxWrapperComponent, cdr, focusMonitor, directionality, nzFormStatusService) {\n this.ngZone = ngZone;\n this.elementRef = elementRef;\n this.nzCheckboxWrapperComponent = nzCheckboxWrapperComponent;\n this.cdr = cdr;\n this.focusMonitor = focusMonitor;\n this.directionality = directionality;\n this.nzFormStatusService = nzFormStatusService;\n this.dir = 'ltr';\n this.destroy$ = new Subject();\n this.isNzDisableFirstChange = true;\n this.onChange = () => {};\n this.onTouched = () => {};\n this.nzCheckedChange = new EventEmitter();\n this.nzValue = null;\n this.nzAutoFocus = false;\n this.nzDisabled = false;\n this.nzIndeterminate = false;\n this.nzChecked = false;\n this.nzId = null;\n }\n ngOnInit() {\n this.focusMonitor.monitor(this.elementRef, true).pipe(takeUntil(this.destroy$)).subscribe(focusOrigin => {\n if (!focusOrigin) {\n Promise.resolve().then(() => this.onTouched());\n }\n });\n if (this.nzCheckboxWrapperComponent) {\n this.nzCheckboxWrapperComponent.addCheckbox(this);\n }\n this.directionality.change.pipe(takeUntil(this.destroy$)).subscribe(direction => {\n this.dir = direction;\n this.cdr.detectChanges();\n });\n this.dir = this.directionality.value;\n this.ngZone.runOutsideAngular(() => {\n fromEvent(this.elementRef.nativeElement, 'click').pipe(takeUntil(this.destroy$)).subscribe(event => {\n event.preventDefault();\n this.focus();\n if (this.nzDisabled) {\n return;\n }\n this.ngZone.run(() => {\n this.innerCheckedChange(!this.nzChecked);\n this.cdr.markForCheck();\n });\n });\n fromEvent(this.inputElement.nativeElement, 'click').pipe(takeUntil(this.destroy$)).subscribe(event => event.stopPropagation());\n });\n }\n ngAfterViewInit() {\n if (this.nzAutoFocus) {\n this.focus();\n }\n }\n ngOnDestroy() {\n this.focusMonitor.stopMonitoring(this.elementRef);\n if (this.nzCheckboxWrapperComponent) {\n this.nzCheckboxWrapperComponent.removeCheckbox(this);\n }\n this.destroy$.next();\n this.destroy$.complete();\n }\n static {\n this.ɵfac = function NzCheckboxComponent_Factory(t) {\n return new (t || NzCheckboxComponent)(i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(NzCheckboxWrapperComponent, 8), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i2.FocusMonitor), i0.ɵɵdirectiveInject(i3.Directionality, 8), i0.ɵɵdirectiveInject(i4.NzFormStatusService, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzCheckboxComponent,\n selectors: [[\"\", \"nz-checkbox\", \"\"]],\n viewQuery: function NzCheckboxComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c1, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.inputElement = _t.first);\n }\n },\n hostAttrs: [1, \"ant-checkbox-wrapper\"],\n hostVars: 6,\n hostBindings: function NzCheckboxComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"ant-checkbox-wrapper-in-form-item\", !!ctx.nzFormStatusService)(\"ant-checkbox-wrapper-checked\", ctx.nzChecked)(\"ant-checkbox-rtl\", ctx.dir === \"rtl\");\n }\n },\n inputs: {\n nzValue: \"nzValue\",\n nzAutoFocus: \"nzAutoFocus\",\n nzDisabled: \"nzDisabled\",\n nzIndeterminate: \"nzIndeterminate\",\n nzChecked: \"nzChecked\",\n nzId: \"nzId\"\n },\n outputs: {\n nzCheckedChange: \"nzCheckedChange\"\n },\n exportAs: [\"nzCheckbox\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NzCheckboxComponent),\n multi: true\n }]), i0.ɵɵStandaloneFeature],\n attrs: _c2,\n ngContentSelectors: _c0,\n decls: 6,\n vars: 11,\n consts: [[1, \"ant-checkbox\"], [\"type\", \"checkbox\", 1, \"ant-checkbox-input\", 3, \"checked\", \"ngModel\", \"disabled\", \"ngModelChange\"], [\"inputElement\", \"\"], [1, \"ant-checkbox-inner\"]],\n template: function NzCheckboxComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelementStart(0, \"span\", 0)(1, \"input\", 1, 2);\n i0.ɵɵlistener(\"ngModelChange\", function NzCheckboxComponent_Template_input_ngModelChange_1_listener($event) {\n return ctx.innerCheckedChange($event);\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelement(3, \"span\", 3);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(4, \"span\");\n i0.ɵɵprojection(5);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"ant-checkbox-checked\", ctx.nzChecked && !ctx.nzIndeterminate)(\"ant-checkbox-disabled\", ctx.nzDisabled)(\"ant-checkbox-indeterminate\", ctx.nzIndeterminate);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"checked\", ctx.nzChecked)(\"ngModel\", ctx.nzChecked)(\"disabled\", ctx.nzDisabled);\n i0.ɵɵattribute(\"autofocus\", ctx.nzAutoFocus ? \"autofocus\" : null)(\"id\", ctx.nzId);\n }\n },\n dependencies: [FormsModule, i5.CheckboxControlValueAccessor, i5.NgControlStatus, i5.NgModel],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n__decorate([InputBoolean()], NzCheckboxComponent.prototype, \"nzAutoFocus\", void 0);\n__decorate([InputBoolean()], NzCheckboxComponent.prototype, \"nzDisabled\", void 0);\n__decorate([InputBoolean()], NzCheckboxComponent.prototype, \"nzIndeterminate\", void 0);\n__decorate([InputBoolean()], NzCheckboxComponent.prototype, \"nzChecked\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzCheckboxComponent, [{\n type: Component,\n args: [{\n selector: '[nz-checkbox]',\n exportAs: 'nzCheckbox',\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n \n \n \n \n \n `,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NzCheckboxComponent),\n multi: true\n }],\n host: {\n class: 'ant-checkbox-wrapper',\n '[class.ant-checkbox-wrapper-in-form-item]': '!!nzFormStatusService',\n '[class.ant-checkbox-wrapper-checked]': 'nzChecked',\n '[class.ant-checkbox-rtl]': `dir === 'rtl'`\n },\n imports: [FormsModule],\n standalone: true\n }]\n }], () => [{\n type: i0.NgZone\n }, {\n type: i0.ElementRef\n }, {\n type: NzCheckboxWrapperComponent,\n decorators: [{\n type: Optional\n }]\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: i2.FocusMonitor\n }, {\n type: i3.Directionality,\n decorators: [{\n type: Optional\n }]\n }, {\n type: i4.NzFormStatusService,\n decorators: [{\n type: Optional\n }]\n }], {\n inputElement: [{\n type: ViewChild,\n args: ['inputElement', {\n static: true\n }]\n }],\n nzCheckedChange: [{\n type: Output\n }],\n nzValue: [{\n type: Input\n }],\n nzAutoFocus: [{\n type: Input\n }],\n nzDisabled: [{\n type: Input\n }],\n nzIndeterminate: [{\n type: Input\n }],\n nzChecked: [{\n type: Input\n }],\n nzId: [{\n type: Input\n }]\n });\n})();\nclass NzCheckboxGroupComponent {\n trackByOption(_, option) {\n return option.value;\n }\n onCheckedChange(option, checked) {\n option.checked = checked;\n this.onChange(this.options);\n }\n constructor(elementRef, focusMonitor, cdr, directionality) {\n this.elementRef = elementRef;\n this.focusMonitor = focusMonitor;\n this.cdr = cdr;\n this.directionality = directionality;\n this.onChange = () => {};\n this.onTouched = () => {};\n this.options = [];\n this.nzDisabled = false;\n this.dir = 'ltr';\n this.destroy$ = new Subject();\n this.isNzDisableFirstChange = true;\n }\n ngOnInit() {\n this.focusMonitor.monitor(this.elementRef, true).pipe(takeUntil(this.destroy$)).subscribe(focusOrigin => {\n if (!focusOrigin) {\n Promise.resolve().then(() => this.onTouched());\n }\n });\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe(direction => {\n this.dir = direction;\n this.cdr.detectChanges();\n });\n this.dir = this.directionality.value;\n }\n ngOnDestroy() {\n this.focusMonitor.stopMonitoring(this.elementRef);\n this.destroy$.next();\n this.destroy$.complete();\n }\n writeValue(value) {\n this.options = value;\n this.cdr.markForCheck();\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n setDisabledState(disabled) {\n this.nzDisabled = this.isNzDisableFirstChange && this.nzDisabled || disabled;\n this.isNzDisableFirstChange = false;\n this.cdr.markForCheck();\n }\n static {\n this.ɵfac = function NzCheckboxGroupComponent_Factory(t) {\n return new (t || NzCheckboxGroupComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i2.FocusMonitor), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i3.Directionality, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzCheckboxGroupComponent,\n selectors: [[\"nz-checkbox-group\"]],\n hostAttrs: [1, \"ant-checkbox-group\"],\n hostVars: 2,\n hostBindings: function NzCheckboxGroupComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"ant-checkbox-group-rtl\", ctx.dir === \"rtl\");\n }\n },\n inputs: {\n nzDisabled: \"nzDisabled\"\n },\n exportAs: [\"nzCheckboxGroup\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NzCheckboxGroupComponent),\n multi: true\n }]), i0.ɵɵStandaloneFeature],\n decls: 1,\n vars: 2,\n consts: [[\"nz-checkbox\", \"\", \"class\", \"ant-checkbox-group-item\", 3, \"nzDisabled\", \"nzChecked\", \"nzCheckedChange\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"nz-checkbox\", \"\", 1, \"ant-checkbox-group-item\", 3, \"nzDisabled\", \"nzChecked\", \"nzCheckedChange\"]],\n template: function NzCheckboxGroupComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NzCheckboxGroupComponent_label_0_Template, 3, 3, \"label\", 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngForOf\", ctx.options)(\"ngForTrackBy\", ctx.trackByOption);\n }\n },\n dependencies: [NgForOf, NzCheckboxComponent],\n encapsulation: 2\n });\n }\n}\n__decorate([InputBoolean()], NzCheckboxGroupComponent.prototype, \"nzDisabled\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzCheckboxGroupComponent, [{\n type: Component,\n args: [{\n selector: 'nz-checkbox-group',\n exportAs: 'nzCheckboxGroup',\n preserveWhitespaces: false,\n encapsulation: ViewEncapsulation.None,\n template: `\n \n {{ o.label }}\n \n `,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NzCheckboxGroupComponent),\n multi: true\n }],\n host: {\n class: 'ant-checkbox-group',\n '[class.ant-checkbox-group-rtl]': `dir === 'rtl'`\n },\n imports: [NgForOf, NzCheckboxComponent],\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: i2.FocusMonitor\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: i3.Directionality,\n decorators: [{\n type: Optional\n }]\n }], {\n nzDisabled: [{\n type: Input\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzCheckboxModule {\n static {\n this.ɵfac = function NzCheckboxModule_Factory(t) {\n return new (t || NzCheckboxModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NzCheckboxModule,\n imports: [NzCheckboxComponent, NzCheckboxGroupComponent, NzCheckboxWrapperComponent],\n exports: [NzCheckboxComponent, NzCheckboxGroupComponent, NzCheckboxWrapperComponent]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [NzCheckboxComponent, NzCheckboxGroupComponent]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzCheckboxModule, [{\n type: NgModule,\n args: [{\n imports: [NzCheckboxComponent, NzCheckboxGroupComponent, NzCheckboxWrapperComponent],\n exports: [NzCheckboxComponent, NzCheckboxGroupComponent, NzCheckboxWrapperComponent]\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NzCheckboxComponent, NzCheckboxGroupComponent, NzCheckboxModule, NzCheckboxWrapperComponent };\n"], - "mappings": "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", + "mappings": "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", "names": [] } diff --git a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_drawer.js b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_drawer.js new file mode 100644 index 0000000..3e46537 --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_drawer.js @@ -0,0 +1,1073 @@ +import { + NzNoAnimationDirective +} from "./chunk-55A2ZGND.js"; +import { + FocusTrapFactory +} from "./chunk-E6XJDY45.js"; +import { + CdkPortalOutlet, + ComponentPortal, + Overlay, + OverlayConfig, + OverlayKeyboardDispatcher, + PortalModule, + TemplatePortal +} from "./chunk-6U656R5M.js"; +import { + NzOutletModule, + NzStringTemplateOutletDirective +} from "./chunk-VOD2PKZN.js"; +import { + ESCAPE +} from "./chunk-JGP5BR6B.js"; +import "./chunk-WB57DPWD.js"; +import { + NzIconDirective, + NzIconModule +} from "./chunk-VWMHIMW7.js"; +import { + NzConfigService, + WithConfig +} from "./chunk-ZHMJ6SNN.js"; +import { + Directionality +} from "./chunk-6NZ2BEBG.js"; +import "./chunk-IAC53GOD.js"; +import { + InputBoolean, + toCssPixel +} from "./chunk-M5GY4FCO.js"; +import "./chunk-ECVKT3ZH.js"; +import "./chunk-KI2JSLP6.js"; +import "./chunk-Y4CEYMY2.js"; +import "./chunk-X7WBA24Z.js"; +import { + DOCUMENT, + NgIf, + NgStyle, + NgTemplateOutlet +} from "./chunk-OSQBUYO6.js"; +import { + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + ContentChild, + Directive, + EventEmitter, + Inject, + Injectable, + InjectionToken, + Injector, + Input, + NgModule, + Optional, + Output, + Renderer2, + Subject, + TemplateRef, + Type, + ViewChild, + ViewContainerRef, + __decorate, + setClassMetadata, + takeUntil, + ɵɵInheritDefinitionFeature, + ɵɵNgOnChangesFeature, + ɵɵStandaloneFeature, + ɵɵadvance, + ɵɵclassMapInterpolate1, + ɵɵclassProp, + ɵɵcontentQuery, + ɵɵdefineComponent, + ɵɵdefineDirective, + ɵɵdefineInjectable, + ɵɵdefineInjector, + ɵɵdefineNgModule, + ɵɵdirectiveInject, + ɵɵelement, + ɵɵelementContainer, + ɵɵelementContainerEnd, + ɵɵelementContainerStart, + ɵɵelementEnd, + ɵɵelementStart, + ɵɵgetCurrentView, + ɵɵinject, + ɵɵlistener, + ɵɵloadQuery, + ɵɵnextContext, + ɵɵproperty, + ɵɵqueryRefresh, + ɵɵreference, + ɵɵresetView, + ɵɵrestoreView, + ɵɵsanitizeHtml, + ɵɵstyleProp, + ɵɵtemplate, + ɵɵtemplateRefExtractor, + ɵɵviewQuery +} from "./chunk-FGESKT7O.js"; +import { + __objRest +} from "./chunk-HSNDBVJ3.js"; + +// node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-drawer.mjs +var _c0 = ["drawerTemplate"]; +function NzDrawerComponent_ng_template_0_div_1_Template(rf, ctx) { + if (rf & 1) { + const _r10 = ɵɵgetCurrentView(); + ɵɵelementStart(0, "div", 11); + ɵɵlistener("click", function NzDrawerComponent_ng_template_0_div_1_Template_div_click_0_listener() { + ɵɵrestoreView(_r10); + const ctx_r9 = ɵɵnextContext(2); + return ɵɵresetView(ctx_r9.maskClick()); + }); + ɵɵelementEnd(); + } + if (rf & 2) { + const ctx_r2 = ɵɵnextContext(2); + ɵɵproperty("ngStyle", ctx_r2.nzMaskStyle); + } +} +function NzDrawerComponent_ng_template_0_div_5_button_2_ng_container_1_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementContainerStart(0); + ɵɵelement(1, "span", 19); + ɵɵelementContainerEnd(); + } + if (rf & 2) { + const closeIcon_r15 = ctx.$implicit; + ɵɵadvance(1); + ɵɵproperty("nzType", closeIcon_r15); + } +} +function NzDrawerComponent_ng_template_0_div_5_button_2_Template(rf, ctx) { + if (rf & 1) { + const _r17 = ɵɵgetCurrentView(); + ɵɵelementStart(0, "button", 17); + ɵɵlistener("click", function NzDrawerComponent_ng_template_0_div_5_button_2_Template_button_click_0_listener() { + ɵɵrestoreView(_r17); + const ctx_r16 = ɵɵnextContext(3); + return ɵɵresetView(ctx_r16.closeClick()); + }); + ɵɵtemplate(1, NzDrawerComponent_ng_template_0_div_5_button_2_ng_container_1_Template, 2, 1, "ng-container", 18); + ɵɵelementEnd(); + } + if (rf & 2) { + const ctx_r11 = ɵɵnextContext(3); + ɵɵadvance(1); + ɵɵproperty("nzStringTemplateOutlet", ctx_r11.nzCloseIcon); + } +} +function NzDrawerComponent_ng_template_0_div_5_div_3_ng_container_1_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementContainerStart(0); + ɵɵelement(1, "div", 21); + ɵɵelementContainerEnd(); + } + if (rf & 2) { + const ctx_r18 = ɵɵnextContext(4); + ɵɵadvance(1); + ɵɵproperty("innerHTML", ctx_r18.nzTitle, ɵɵsanitizeHtml); + } +} +function NzDrawerComponent_ng_template_0_div_5_div_3_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementStart(0, "div", 20); + ɵɵtemplate(1, NzDrawerComponent_ng_template_0_div_5_div_3_ng_container_1_Template, 2, 1, "ng-container", 18); + ɵɵelementEnd(); + } + if (rf & 2) { + const ctx_r12 = ɵɵnextContext(3); + ɵɵadvance(1); + ɵɵproperty("nzStringTemplateOutlet", ctx_r12.nzTitle); + } +} +function NzDrawerComponent_ng_template_0_div_5_div_4_ng_container_1_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementContainerStart(0); + ɵɵelement(1, "div", 21); + ɵɵelementContainerEnd(); + } + if (rf & 2) { + const ctx_r19 = ɵɵnextContext(4); + ɵɵadvance(1); + ɵɵproperty("innerHTML", ctx_r19.nzExtra, ɵɵsanitizeHtml); + } +} +function NzDrawerComponent_ng_template_0_div_5_div_4_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementStart(0, "div", 22); + ɵɵtemplate(1, NzDrawerComponent_ng_template_0_div_5_div_4_ng_container_1_Template, 2, 1, "ng-container", 18); + ɵɵelementEnd(); + } + if (rf & 2) { + const ctx_r13 = ɵɵnextContext(3); + ɵɵadvance(1); + ɵɵproperty("nzStringTemplateOutlet", ctx_r13.nzExtra); + } +} +function NzDrawerComponent_ng_template_0_div_5_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementStart(0, "div", 12)(1, "div", 13); + ɵɵtemplate(2, NzDrawerComponent_ng_template_0_div_5_button_2_Template, 2, 1, "button", 14)(3, NzDrawerComponent_ng_template_0_div_5_div_3_Template, 2, 1, "div", 15); + ɵɵelementEnd(); + ɵɵtemplate(4, NzDrawerComponent_ng_template_0_div_5_div_4_Template, 2, 1, "div", 16); + ɵɵelementEnd(); + } + if (rf & 2) { + const ctx_r3 = ɵɵnextContext(2); + ɵɵclassProp("ant-drawer-header-close-only", !ctx_r3.nzTitle); + ɵɵadvance(2); + ɵɵproperty("ngIf", ctx_r3.nzClosable); + ɵɵadvance(1); + ɵɵproperty("ngIf", ctx_r3.nzTitle); + ɵɵadvance(1); + ɵɵproperty("ngIf", ctx_r3.nzExtra); + } +} +function NzDrawerComponent_ng_template_0_ng_template_7_Template(rf, ctx) { +} +function NzDrawerComponent_ng_template_0_ng_container_8_ng_container_1_ng_container_1_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementContainer(0); + } +} +function NzDrawerComponent_ng_template_0_ng_container_8_ng_container_1_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementContainerStart(0); + ɵɵtemplate(1, NzDrawerComponent_ng_template_0_ng_container_8_ng_container_1_ng_container_1_Template, 1, 0, "ng-container", 24); + ɵɵelementContainerEnd(); + } + if (rf & 2) { + const ctx_r20 = ɵɵnextContext(3); + ɵɵadvance(1); + ɵɵproperty("ngTemplateOutlet", ctx_r20.nzContent)("ngTemplateOutletContext", ctx_r20.templateContext); + } +} +function NzDrawerComponent_ng_template_0_ng_container_8_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementContainerStart(0); + ɵɵtemplate(1, NzDrawerComponent_ng_template_0_ng_container_8_ng_container_1_Template, 2, 2, "ng-container", 23); + ɵɵelementContainerEnd(); + } + if (rf & 2) { + const ctx_r5 = ɵɵnextContext(2); + ɵɵadvance(1); + ɵɵproperty("ngIf", ctx_r5.isTemplateRef(ctx_r5.nzContent)); + } +} +function NzDrawerComponent_ng_template_0_ng_template_9_ng_container_0_ng_template_1_Template(rf, ctx) { +} +function NzDrawerComponent_ng_template_0_ng_template_9_ng_container_0_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementContainerStart(0); + ɵɵtemplate(1, NzDrawerComponent_ng_template_0_ng_template_9_ng_container_0_ng_template_1_Template, 0, 0, "ng-template", 25); + ɵɵelementContainerEnd(); + } + if (rf & 2) { + const ctx_r22 = ɵɵnextContext(3); + ɵɵadvance(1); + ɵɵproperty("ngTemplateOutlet", ctx_r22.contentFromContentChild); + } +} +function NzDrawerComponent_ng_template_0_ng_template_9_Template(rf, ctx) { + if (rf & 1) { + ɵɵtemplate(0, NzDrawerComponent_ng_template_0_ng_template_9_ng_container_0_Template, 2, 1, "ng-container", 23); + } + if (rf & 2) { + const ctx_r6 = ɵɵnextContext(2); + ɵɵproperty("ngIf", ctx_r6.contentFromContentChild && (ctx_r6.isOpen || ctx_r6.inAnimation)); + } +} +function NzDrawerComponent_ng_template_0_div_11_ng_container_1_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementContainerStart(0); + ɵɵelement(1, "div", 21); + ɵɵelementContainerEnd(); + } + if (rf & 2) { + const ctx_r24 = ɵɵnextContext(3); + ɵɵadvance(1); + ɵɵproperty("innerHTML", ctx_r24.nzFooter, ɵɵsanitizeHtml); + } +} +function NzDrawerComponent_ng_template_0_div_11_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementStart(0, "div", 26); + ɵɵtemplate(1, NzDrawerComponent_ng_template_0_div_11_ng_container_1_Template, 2, 1, "ng-container", 18); + ɵɵelementEnd(); + } + if (rf & 2) { + const ctx_r8 = ɵɵnextContext(2); + ɵɵadvance(1); + ɵɵproperty("nzStringTemplateOutlet", ctx_r8.nzFooter); + } +} +function NzDrawerComponent_ng_template_0_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementStart(0, "div", 1); + ɵɵtemplate(1, NzDrawerComponent_ng_template_0_div_1_Template, 1, 1, "div", 2); + ɵɵelementStart(2, "div")(3, "div", 3)(4, "div", 4); + ɵɵtemplate(5, NzDrawerComponent_ng_template_0_div_5_Template, 5, 5, "div", 5); + ɵɵelementStart(6, "div", 6); + ɵɵtemplate(7, NzDrawerComponent_ng_template_0_ng_template_7_Template, 0, 0, "ng-template", 7)(8, NzDrawerComponent_ng_template_0_ng_container_8_Template, 2, 1, "ng-container", 8)(9, NzDrawerComponent_ng_template_0_ng_template_9_Template, 1, 1, "ng-template", null, 9, ɵɵtemplateRefExtractor); + ɵɵelementEnd(); + ɵɵtemplate(11, NzDrawerComponent_ng_template_0_div_11_Template, 2, 1, "div", 10); + ɵɵelementEnd()()()(); + } + if (rf & 2) { + const _r7 = ɵɵreference(10); + const ctx_r0 = ɵɵnextContext(); + ɵɵstyleProp("transform", ctx_r0.offsetTransform)("transition", ctx_r0.placementChanging ? "none" : null)("z-index", ctx_r0.nzZIndex); + ɵɵclassProp("ant-drawer-rtl", ctx_r0.dir === "rtl")("ant-drawer-open", ctx_r0.isOpen)("no-mask", !ctx_r0.nzMask)("ant-drawer-top", ctx_r0.nzPlacement === "top")("ant-drawer-bottom", ctx_r0.nzPlacement === "bottom")("ant-drawer-right", ctx_r0.nzPlacement === "right")("ant-drawer-left", ctx_r0.nzPlacement === "left"); + ɵɵproperty("nzNoAnimation", ctx_r0.nzNoAnimation); + ɵɵadvance(1); + ɵɵproperty("ngIf", ctx_r0.nzMask); + ɵɵadvance(1); + ɵɵclassMapInterpolate1("ant-drawer-content-wrapper ", ctx_r0.nzWrapClassName, ""); + ɵɵstyleProp("width", ctx_r0.width)("height", ctx_r0.height)("transform", ctx_r0.transform)("transition", ctx_r0.placementChanging ? "none" : null); + ɵɵadvance(2); + ɵɵstyleProp("height", ctx_r0.isLeftOrRight ? "100%" : null); + ɵɵadvance(1); + ɵɵproperty("ngIf", ctx_r0.nzTitle || ctx_r0.nzClosable); + ɵɵadvance(1); + ɵɵproperty("ngStyle", ctx_r0.nzBodyStyle); + ɵɵadvance(2); + ɵɵproperty("ngIf", ctx_r0.nzContent)("ngIfElse", _r7); + ɵɵadvance(3); + ɵɵproperty("ngIf", ctx_r0.nzFooter); + } +} +var _NzDrawerContentDirective = class _NzDrawerContentDirective { + constructor(templateRef) { + this.templateRef = templateRef; + } +}; +_NzDrawerContentDirective.ɵfac = function NzDrawerContentDirective_Factory(t) { + return new (t || _NzDrawerContentDirective)(ɵɵdirectiveInject(TemplateRef)); +}; +_NzDrawerContentDirective.ɵdir = ɵɵdefineDirective({ + type: _NzDrawerContentDirective, + selectors: [["", "nzDrawerContent", ""]], + exportAs: ["nzDrawerContent"], + standalone: true +}); +var NzDrawerContentDirective = _NzDrawerContentDirective; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzDrawerContentDirective, [{ + type: Directive, + args: [{ + selector: "[nzDrawerContent]", + exportAs: "nzDrawerContent", + standalone: true + }] + }], () => [{ + type: TemplateRef + }], null); +})(); +var DRAWER_DEFAULT_SIZE = 378; +var DRAWER_LARGE_SIZE = 736; +var NZ_DRAWER_DATA = new InjectionToken("NZ_DRAWER_DATA"); +var NzDrawerRef = class { +}; +var DRAWER_ANIMATE_DURATION = 300; +var NZ_CONFIG_MODULE_NAME = "drawer"; +var _NzDrawerComponent = class _NzDrawerComponent extends NzDrawerRef { + set nzVisible(value) { + this.isOpen = value; + } + get nzVisible() { + return this.isOpen; + } + get offsetTransform() { + if (!this.isOpen || this.nzOffsetX + this.nzOffsetY === 0) { + return null; + } + switch (this.nzPlacement) { + case "left": + return `translateX(${this.nzOffsetX}px)`; + case "right": + return `translateX(-${this.nzOffsetX}px)`; + case "top": + return `translateY(${this.nzOffsetY}px)`; + case "bottom": + return `translateY(-${this.nzOffsetY}px)`; + } + } + get transform() { + if (this.isOpen) { + return null; + } + switch (this.nzPlacement) { + case "left": + return `translateX(-100%)`; + case "right": + return `translateX(100%)`; + case "top": + return `translateY(-100%)`; + case "bottom": + return `translateY(100%)`; + } + } + get width() { + if (this.isLeftOrRight) { + const defaultWidth = this.nzSize === "large" ? DRAWER_LARGE_SIZE : DRAWER_DEFAULT_SIZE; + return this.nzWidth === void 0 ? toCssPixel(defaultWidth) : toCssPixel(this.nzWidth); + } + return null; + } + get height() { + if (!this.isLeftOrRight) { + const defaultHeight = this.nzSize === "large" ? DRAWER_LARGE_SIZE : DRAWER_DEFAULT_SIZE; + return this.nzHeight === void 0 ? toCssPixel(defaultHeight) : toCssPixel(this.nzHeight); + } + return null; + } + get isLeftOrRight() { + return this.nzPlacement === "left" || this.nzPlacement === "right"; + } + get afterOpen() { + return this.nzAfterOpen.asObservable(); + } + get afterClose() { + return this.nzAfterClose.asObservable(); + } + isTemplateRef(value) { + return value instanceof TemplateRef; + } + constructor(cdr, document, nzConfigService, renderer, overlay, injector, changeDetectorRef, focusTrapFactory, viewContainerRef, overlayKeyboardDispatcher, directionality) { + super(); + this.cdr = cdr; + this.document = document; + this.nzConfigService = nzConfigService; + this.renderer = renderer; + this.overlay = overlay; + this.injector = injector; + this.changeDetectorRef = changeDetectorRef; + this.focusTrapFactory = focusTrapFactory; + this.viewContainerRef = viewContainerRef; + this.overlayKeyboardDispatcher = overlayKeyboardDispatcher; + this.directionality = directionality; + this._nzModuleName = NZ_CONFIG_MODULE_NAME; + this.nzCloseIcon = "close"; + this.nzClosable = true; + this.nzMaskClosable = true; + this.nzMask = true; + this.nzCloseOnNavigation = true; + this.nzNoAnimation = false; + this.nzKeyboard = true; + this.nzPlacement = "right"; + this.nzSize = "default"; + this.nzMaskStyle = {}; + this.nzBodyStyle = {}; + this.nzZIndex = 1e3; + this.nzOffsetX = 0; + this.nzOffsetY = 0; + this.componentInstance = null; + this.nzOnViewInit = new EventEmitter(); + this.nzOnClose = new EventEmitter(); + this.nzVisibleChange = new EventEmitter(); + this.destroy$ = new Subject(); + this.placementChanging = false; + this.placementChangeTimeoutId = -1; + this.isOpen = false; + this.inAnimation = false; + this.templateContext = { + $implicit: void 0, + drawerRef: this + }; + this.nzAfterOpen = new Subject(); + this.nzAfterClose = new Subject(); + this.nzDirection = void 0; + this.dir = "ltr"; + } + ngOnInit() { + this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction) => { + this.dir = direction; + this.cdr.detectChanges(); + }); + this.dir = this.nzDirection || this.directionality.value; + this.attachOverlay(); + this.updateOverlayStyle(); + this.updateBodyOverflow(); + this.templateContext = { + $implicit: this.nzData || this.nzContentParams, + drawerRef: this + }; + this.changeDetectorRef.detectChanges(); + } + ngAfterViewInit() { + this.attachBodyContent(); + if (this.nzOnViewInit.observers.length) { + setTimeout(() => { + this.nzOnViewInit.emit(); + }); + } + } + ngOnChanges(changes) { + const { + nzPlacement, + nzVisible + } = changes; + if (nzVisible) { + const value = changes.nzVisible.currentValue; + if (value) { + this.open(); + } else { + this.close(); + } + } + if (nzPlacement && !nzPlacement.isFirstChange()) { + this.triggerPlacementChangeCycleOnce(); + } + } + ngOnDestroy() { + this.destroy$.next(); + this.destroy$.complete(); + clearTimeout(this.placementChangeTimeoutId); + this.disposeOverlay(); + } + getAnimationDuration() { + return this.nzNoAnimation ? 0 : DRAWER_ANIMATE_DURATION; + } + // Disable the transition animation temporarily when the placement changing + triggerPlacementChangeCycleOnce() { + if (!this.nzNoAnimation) { + this.placementChanging = true; + this.changeDetectorRef.markForCheck(); + clearTimeout(this.placementChangeTimeoutId); + this.placementChangeTimeoutId = setTimeout(() => { + this.placementChanging = false; + this.changeDetectorRef.markForCheck(); + }, this.getAnimationDuration()); + } + } + close(result) { + this.isOpen = false; + this.inAnimation = true; + this.nzVisibleChange.emit(false); + this.updateOverlayStyle(); + this.overlayKeyboardDispatcher.remove(this.overlayRef); + this.changeDetectorRef.detectChanges(); + setTimeout(() => { + this.updateBodyOverflow(); + this.restoreFocus(); + this.inAnimation = false; + this.nzAfterClose.next(result); + this.nzAfterClose.complete(); + this.componentInstance = null; + }, this.getAnimationDuration()); + } + open() { + this.attachOverlay(); + this.isOpen = true; + this.inAnimation = true; + this.nzVisibleChange.emit(true); + this.overlayKeyboardDispatcher.add(this.overlayRef); + this.updateOverlayStyle(); + this.updateBodyOverflow(); + this.savePreviouslyFocusedElement(); + this.trapFocus(); + this.changeDetectorRef.detectChanges(); + setTimeout(() => { + this.inAnimation = false; + this.changeDetectorRef.detectChanges(); + this.nzAfterOpen.next(); + }, this.getAnimationDuration()); + } + getContentComponent() { + return this.componentInstance; + } + closeClick() { + this.nzOnClose.emit(); + } + maskClick() { + if (this.nzMaskClosable && this.nzMask) { + this.nzOnClose.emit(); + } + } + attachBodyContent() { + this.bodyPortalOutlet.dispose(); + if (this.nzContent instanceof Type) { + const childInjector = Injector.create({ + parent: this.injector, + providers: [{ + provide: NzDrawerRef, + useValue: this + }, { + provide: NZ_DRAWER_DATA, + useValue: this.nzData + }] + }); + const componentPortal = new ComponentPortal(this.nzContent, null, childInjector); + const componentRef = this.bodyPortalOutlet.attachComponentPortal(componentPortal); + this.componentInstance = componentRef.instance; + Object.assign(componentRef.instance, this.nzData || this.nzContentParams); + componentRef.changeDetectorRef.detectChanges(); + } + } + attachOverlay() { + if (!this.overlayRef) { + this.portal = new TemplatePortal(this.drawerTemplate, this.viewContainerRef); + this.overlayRef = this.overlay.create(this.getOverlayConfig()); + } + if (this.overlayRef && !this.overlayRef.hasAttached()) { + this.overlayRef.attach(this.portal); + this.overlayRef.keydownEvents().pipe(takeUntil(this.destroy$)).subscribe((event) => { + if (event.keyCode === ESCAPE && this.isOpen && this.nzKeyboard) { + this.nzOnClose.emit(); + } + }); + this.overlayRef.detachments().pipe(takeUntil(this.destroy$)).subscribe(() => { + this.disposeOverlay(); + }); + } + } + disposeOverlay() { + this.overlayRef?.dispose(); + this.overlayRef = null; + } + getOverlayConfig() { + return new OverlayConfig({ + disposeOnNavigation: this.nzCloseOnNavigation, + positionStrategy: this.overlay.position().global(), + scrollStrategy: this.overlay.scrollStrategies.block() + }); + } + updateOverlayStyle() { + if (this.overlayRef && this.overlayRef.overlayElement) { + this.renderer.setStyle(this.overlayRef.overlayElement, "pointer-events", this.isOpen ? "auto" : "none"); + } + } + updateBodyOverflow() { + if (this.overlayRef) { + if (this.isOpen) { + this.overlayRef.getConfig().scrollStrategy.enable(); + } else { + this.overlayRef.getConfig().scrollStrategy.disable(); + } + } + } + savePreviouslyFocusedElement() { + if (this.document && !this.previouslyFocusedElement) { + this.previouslyFocusedElement = this.document.activeElement; + if (this.previouslyFocusedElement && typeof this.previouslyFocusedElement.blur === "function") { + this.previouslyFocusedElement.blur(); + } + } + } + trapFocus() { + if (!this.focusTrap && this.overlayRef && this.overlayRef.overlayElement) { + this.focusTrap = this.focusTrapFactory.create(this.overlayRef.overlayElement); + this.focusTrap.focusInitialElement(); + } + } + restoreFocus() { + if (this.previouslyFocusedElement && typeof this.previouslyFocusedElement.focus === "function") { + this.previouslyFocusedElement.focus(); + } + if (this.focusTrap) { + this.focusTrap.destroy(); + } + } +}; +_NzDrawerComponent.ɵfac = function NzDrawerComponent_Factory(t) { + return new (t || _NzDrawerComponent)(ɵɵdirectiveInject(ChangeDetectorRef), ɵɵdirectiveInject(DOCUMENT, 8), ɵɵdirectiveInject(NzConfigService), ɵɵdirectiveInject(Renderer2), ɵɵdirectiveInject(Overlay), ɵɵdirectiveInject(Injector), ɵɵdirectiveInject(ChangeDetectorRef), ɵɵdirectiveInject(FocusTrapFactory), ɵɵdirectiveInject(ViewContainerRef), ɵɵdirectiveInject(OverlayKeyboardDispatcher), ɵɵdirectiveInject(Directionality, 8)); +}; +_NzDrawerComponent.ɵcmp = ɵɵdefineComponent({ + type: _NzDrawerComponent, + selectors: [["nz-drawer"]], + contentQueries: function NzDrawerComponent_ContentQueries(rf, ctx, dirIndex) { + if (rf & 1) { + ɵɵcontentQuery(dirIndex, NzDrawerContentDirective, 7, TemplateRef); + } + if (rf & 2) { + let _t; + ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.contentFromContentChild = _t.first); + } + }, + viewQuery: function NzDrawerComponent_Query(rf, ctx) { + if (rf & 1) { + ɵɵviewQuery(_c0, 7); + ɵɵviewQuery(CdkPortalOutlet, 5); + } + if (rf & 2) { + let _t; + ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.drawerTemplate = _t.first); + ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.bodyPortalOutlet = _t.first); + } + }, + inputs: { + nzContent: "nzContent", + nzCloseIcon: "nzCloseIcon", + nzClosable: "nzClosable", + nzMaskClosable: "nzMaskClosable", + nzMask: "nzMask", + nzCloseOnNavigation: "nzCloseOnNavigation", + nzNoAnimation: "nzNoAnimation", + nzKeyboard: "nzKeyboard", + nzTitle: "nzTitle", + nzExtra: "nzExtra", + nzFooter: "nzFooter", + nzPlacement: "nzPlacement", + nzSize: "nzSize", + nzMaskStyle: "nzMaskStyle", + nzBodyStyle: "nzBodyStyle", + nzWrapClassName: "nzWrapClassName", + nzWidth: "nzWidth", + nzHeight: "nzHeight", + nzZIndex: "nzZIndex", + nzOffsetX: "nzOffsetX", + nzOffsetY: "nzOffsetY", + nzVisible: "nzVisible" + }, + outputs: { + nzOnViewInit: "nzOnViewInit", + nzOnClose: "nzOnClose", + nzVisibleChange: "nzVisibleChange" + }, + exportAs: ["nzDrawer"], + standalone: true, + features: [ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵStandaloneFeature], + decls: 2, + vars: 0, + consts: [["drawerTemplate", ""], [1, "ant-drawer", 3, "nzNoAnimation"], ["class", "ant-drawer-mask", 3, "ngStyle", "click", 4, "ngIf"], [1, "ant-drawer-content"], [1, "ant-drawer-wrapper-body"], ["class", "ant-drawer-header", 3, "ant-drawer-header-close-only", 4, "ngIf"], [1, "ant-drawer-body", 3, "ngStyle"], ["cdkPortalOutlet", ""], [4, "ngIf", "ngIfElse"], ["contentElseTemp", ""], ["class", "ant-drawer-footer", 4, "ngIf"], [1, "ant-drawer-mask", 3, "ngStyle", "click"], [1, "ant-drawer-header"], [1, "ant-drawer-header-title"], ["aria-label", "Close", "class", "ant-drawer-close", "style", "--scroll-bar: 0px;", 3, "click", 4, "ngIf"], ["class", "ant-drawer-title", 4, "ngIf"], ["class", "ant-drawer-extra", 4, "ngIf"], ["aria-label", "Close", 1, "ant-drawer-close", 2, "--scroll-bar", "0px", 3, "click"], [4, "nzStringTemplateOutlet"], ["nz-icon", "", 3, "nzType"], [1, "ant-drawer-title"], [3, "innerHTML"], [1, "ant-drawer-extra"], [4, "ngIf"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [3, "ngTemplateOutlet"], [1, "ant-drawer-footer"]], + template: function NzDrawerComponent_Template(rf, ctx) { + if (rf & 1) { + ɵɵtemplate(0, NzDrawerComponent_ng_template_0_Template, 12, 40, "ng-template", null, 0, ɵɵtemplateRefExtractor); + } + }, + dependencies: [NzNoAnimationDirective, NgIf, NgStyle, NzOutletModule, NzStringTemplateOutletDirective, NzIconModule, NzIconDirective, PortalModule, CdkPortalOutlet, NgTemplateOutlet], + encapsulation: 2, + changeDetection: 0 +}); +var NzDrawerComponent = _NzDrawerComponent; +__decorate([InputBoolean()], NzDrawerComponent.prototype, "nzClosable", void 0); +__decorate([WithConfig(), InputBoolean()], NzDrawerComponent.prototype, "nzMaskClosable", void 0); +__decorate([WithConfig(), InputBoolean()], NzDrawerComponent.prototype, "nzMask", void 0); +__decorate([WithConfig(), InputBoolean()], NzDrawerComponent.prototype, "nzCloseOnNavigation", void 0); +__decorate([InputBoolean()], NzDrawerComponent.prototype, "nzNoAnimation", void 0); +__decorate([InputBoolean()], NzDrawerComponent.prototype, "nzKeyboard", void 0); +__decorate([WithConfig()], NzDrawerComponent.prototype, "nzDirection", void 0); +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzDrawerComponent, [{ + type: Component, + args: [{ + selector: "nz-drawer", + exportAs: "nzDrawer", + template: ` + +
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+ +
+
+
+
+
+ + + + + + + + + + + +
+ +
+
+
+
+
+ `, + preserveWhitespaces: false, + changeDetection: ChangeDetectionStrategy.OnPush, + imports: [NzNoAnimationDirective, NgIf, NgStyle, NzOutletModule, NzIconModule, PortalModule, NgTemplateOutlet], + standalone: true + }] + }], () => [{ + type: ChangeDetectorRef + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Inject, + args: [DOCUMENT] + }] + }, { + type: NzConfigService + }, { + type: Renderer2 + }, { + type: Overlay + }, { + type: Injector + }, { + type: ChangeDetectorRef + }, { + type: FocusTrapFactory + }, { + type: ViewContainerRef + }, { + type: OverlayKeyboardDispatcher + }, { + type: Directionality, + decorators: [{ + type: Optional + }] + }], { + nzContent: [{ + type: Input + }], + nzCloseIcon: [{ + type: Input + }], + nzClosable: [{ + type: Input + }], + nzMaskClosable: [{ + type: Input + }], + nzMask: [{ + type: Input + }], + nzCloseOnNavigation: [{ + type: Input + }], + nzNoAnimation: [{ + type: Input + }], + nzKeyboard: [{ + type: Input + }], + nzTitle: [{ + type: Input + }], + nzExtra: [{ + type: Input + }], + nzFooter: [{ + type: Input + }], + nzPlacement: [{ + type: Input + }], + nzSize: [{ + type: Input + }], + nzMaskStyle: [{ + type: Input + }], + nzBodyStyle: [{ + type: Input + }], + nzWrapClassName: [{ + type: Input + }], + nzWidth: [{ + type: Input + }], + nzHeight: [{ + type: Input + }], + nzZIndex: [{ + type: Input + }], + nzOffsetX: [{ + type: Input + }], + nzOffsetY: [{ + type: Input + }], + nzVisible: [{ + type: Input + }], + nzOnViewInit: [{ + type: Output + }], + nzOnClose: [{ + type: Output + }], + nzVisibleChange: [{ + type: Output + }], + drawerTemplate: [{ + type: ViewChild, + args: ["drawerTemplate", { + static: true + }] + }], + bodyPortalOutlet: [{ + type: ViewChild, + args: [CdkPortalOutlet, { + static: false + }] + }], + contentFromContentChild: [{ + type: ContentChild, + args: [NzDrawerContentDirective, { + static: true, + read: TemplateRef + }] + }], + nzDirection: [] + }); +})(); +var DrawerBuilderForService = class { + constructor(overlay, options) { + this.overlay = overlay; + this.options = options; + this.unsubscribe$ = new Subject(); + const _a = this.options, { + nzOnCancel + } = _a, componentOption = __objRest(_a, [ + "nzOnCancel" + ]); + this.overlayRef = this.overlay.create(); + this.drawerRef = this.overlayRef.attach(new ComponentPortal(NzDrawerComponent)).instance; + this.updateOptions(componentOption); + this.drawerRef.savePreviouslyFocusedElement(); + this.drawerRef.nzOnViewInit.pipe(takeUntil(this.unsubscribe$)).subscribe(() => { + this.drawerRef.open(); + }); + this.drawerRef.nzOnClose.subscribe(() => { + if (nzOnCancel) { + nzOnCancel().then((canClose) => { + if (canClose !== false) { + this.drawerRef.close(); + } + }); + } else { + this.drawerRef.close(); + } + }); + this.drawerRef.afterClose.pipe(takeUntil(this.unsubscribe$)).subscribe(() => { + this.overlayRef.dispose(); + this.drawerRef = null; + this.unsubscribe$.next(); + this.unsubscribe$.complete(); + }); + } + getInstance() { + return this.drawerRef; + } + updateOptions(options) { + Object.assign(this.drawerRef, options); + } +}; +var _NzDrawerService = class _NzDrawerService { + constructor(overlay) { + this.overlay = overlay; + } + create(options) { + return new DrawerBuilderForService(this.overlay, options).getInstance(); + } +}; +_NzDrawerService.ɵfac = function NzDrawerService_Factory(t) { + return new (t || _NzDrawerService)(ɵɵinject(Overlay)); +}; +_NzDrawerService.ɵprov = ɵɵdefineInjectable({ + token: _NzDrawerService, + factory: _NzDrawerService.ɵfac +}); +var NzDrawerService = _NzDrawerService; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzDrawerService, [{ + type: Injectable + }], () => [{ + type: Overlay + }], null); +})(); +var _NzDrawerModule = class _NzDrawerModule { +}; +_NzDrawerModule.ɵfac = function NzDrawerModule_Factory(t) { + return new (t || _NzDrawerModule)(); +}; +_NzDrawerModule.ɵmod = ɵɵdefineNgModule({ + type: _NzDrawerModule, + imports: [NzDrawerComponent, NzDrawerContentDirective], + exports: [NzDrawerComponent, NzDrawerContentDirective] +}); +_NzDrawerModule.ɵinj = ɵɵdefineInjector({ + providers: [NzDrawerService], + imports: [NzDrawerComponent] +}); +var NzDrawerModule = _NzDrawerModule; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzDrawerModule, [{ + type: NgModule, + args: [{ + imports: [NzDrawerComponent, NzDrawerContentDirective], + providers: [NzDrawerService], + exports: [NzDrawerComponent, NzDrawerContentDirective] + }] + }], null, null); +})(); +export { + DRAWER_ANIMATE_DURATION, + DRAWER_DEFAULT_SIZE, + DRAWER_LARGE_SIZE, + DrawerBuilderForService, + NZ_DRAWER_DATA, + NzDrawerComponent, + NzDrawerContentDirective, + NzDrawerModule, + NzDrawerRef, + NzDrawerService +}; +//# sourceMappingURL=ng-zorro-antd_drawer.js.map diff --git a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_drawer.js.map b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_drawer.js.map new file mode 100644 index 0000000..43c37f7 --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_drawer.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-drawer.mjs"], + "sourcesContent": ["import * as i0 from '@angular/core';\nimport { Directive, InjectionToken, TemplateRef, EventEmitter, Type, Injector, Component, ChangeDetectionStrategy, Optional, Inject, Input, Output, ViewChild, ContentChild, Injectable, NgModule } from '@angular/core';\nimport { __decorate } from 'tslib';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport * as i2 from '@angular/cdk/overlay';\nimport { OverlayConfig } from '@angular/cdk/overlay';\nimport * as i7 from '@angular/cdk/portal';\nimport { ComponentPortal, TemplatePortal, CdkPortalOutlet, PortalModule } from '@angular/cdk/portal';\nimport { DOCUMENT, NgIf, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport * as i1 from 'ng-zorro-antd/core/config';\nimport { WithConfig } from 'ng-zorro-antd/core/config';\nimport { NzNoAnimationDirective } from 'ng-zorro-antd/core/no-animation';\nimport * as i5 from 'ng-zorro-antd/core/outlet';\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport { toCssPixel, InputBoolean } from 'ng-zorro-antd/core/util';\nimport * as i6 from 'ng-zorro-antd/icon';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport * as i3 from '@angular/cdk/a11y';\nimport * as i4 from '@angular/cdk/bidi';\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst _c0 = [\"drawerTemplate\"];\nfunction NzDrawerComponent_ng_template_0_div_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r10 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 11);\n i0.ɵɵlistener(\"click\", function NzDrawerComponent_ng_template_0_div_1_Template_div_click_0_listener() {\n i0.ɵɵrestoreView(_r10);\n const ctx_r9 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r9.maskClick());\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngStyle\", ctx_r2.nzMaskStyle);\n }\n}\nfunction NzDrawerComponent_ng_template_0_div_5_button_2_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelement(1, \"span\", 19);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const closeIcon_r15 = ctx.$implicit;\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"nzType\", closeIcon_r15);\n }\n}\nfunction NzDrawerComponent_ng_template_0_div_5_button_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r17 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 17);\n i0.ɵɵlistener(\"click\", function NzDrawerComponent_ng_template_0_div_5_button_2_Template_button_click_0_listener() {\n i0.ɵɵrestoreView(_r17);\n const ctx_r16 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r16.closeClick());\n });\n i0.ɵɵtemplate(1, NzDrawerComponent_ng_template_0_div_5_button_2_ng_container_1_Template, 2, 1, \"ng-container\", 18);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r11 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"nzStringTemplateOutlet\", ctx_r11.nzCloseIcon);\n }\n}\nfunction NzDrawerComponent_ng_template_0_div_5_div_3_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelement(1, \"div\", 21);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r18 = i0.ɵɵnextContext(4);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"innerHTML\", ctx_r18.nzTitle, i0.ɵɵsanitizeHtml);\n }\n}\nfunction NzDrawerComponent_ng_template_0_div_5_div_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 20);\n i0.ɵɵtemplate(1, NzDrawerComponent_ng_template_0_div_5_div_3_ng_container_1_Template, 2, 1, \"ng-container\", 18);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r12 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"nzStringTemplateOutlet\", ctx_r12.nzTitle);\n }\n}\nfunction NzDrawerComponent_ng_template_0_div_5_div_4_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelement(1, \"div\", 21);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r19 = i0.ɵɵnextContext(4);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"innerHTML\", ctx_r19.nzExtra, i0.ɵɵsanitizeHtml);\n }\n}\nfunction NzDrawerComponent_ng_template_0_div_5_div_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 22);\n i0.ɵɵtemplate(1, NzDrawerComponent_ng_template_0_div_5_div_4_ng_container_1_Template, 2, 1, \"ng-container\", 18);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r13 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"nzStringTemplateOutlet\", ctx_r13.nzExtra);\n }\n}\nfunction NzDrawerComponent_ng_template_0_div_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 12)(1, \"div\", 13);\n i0.ɵɵtemplate(2, NzDrawerComponent_ng_template_0_div_5_button_2_Template, 2, 1, \"button\", 14)(3, NzDrawerComponent_ng_template_0_div_5_div_3_Template, 2, 1, \"div\", 15);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(4, NzDrawerComponent_ng_template_0_div_5_div_4_Template, 2, 1, \"div\", 16);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r3 = i0.ɵɵnextContext(2);\n i0.ɵɵclassProp(\"ant-drawer-header-close-only\", !ctx_r3.nzTitle);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r3.nzClosable);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx_r3.nzTitle);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx_r3.nzExtra);\n }\n}\nfunction NzDrawerComponent_ng_template_0_ng_template_7_Template(rf, ctx) {}\nfunction NzDrawerComponent_ng_template_0_ng_container_8_ng_container_1_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0);\n }\n}\nfunction NzDrawerComponent_ng_template_0_ng_container_8_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, NzDrawerComponent_ng_template_0_ng_container_8_ng_container_1_ng_container_1_Template, 1, 0, \"ng-container\", 24);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r20 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r20.nzContent)(\"ngTemplateOutletContext\", ctx_r20.templateContext);\n }\n}\nfunction NzDrawerComponent_ng_template_0_ng_container_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, NzDrawerComponent_ng_template_0_ng_container_8_ng_container_1_Template, 2, 2, \"ng-container\", 23);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r5 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx_r5.isTemplateRef(ctx_r5.nzContent));\n }\n}\nfunction NzDrawerComponent_ng_template_0_ng_template_9_ng_container_0_ng_template_1_Template(rf, ctx) {}\nfunction NzDrawerComponent_ng_template_0_ng_template_9_ng_container_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, NzDrawerComponent_ng_template_0_ng_template_9_ng_container_0_ng_template_1_Template, 0, 0, \"ng-template\", 25);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r22 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r22.contentFromContentChild);\n }\n}\nfunction NzDrawerComponent_ng_template_0_ng_template_9_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NzDrawerComponent_ng_template_0_ng_template_9_ng_container_0_Template, 2, 1, \"ng-container\", 23);\n }\n if (rf & 2) {\n const ctx_r6 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r6.contentFromContentChild && (ctx_r6.isOpen || ctx_r6.inAnimation));\n }\n}\nfunction NzDrawerComponent_ng_template_0_div_11_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelement(1, \"div\", 21);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r24 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"innerHTML\", ctx_r24.nzFooter, i0.ɵɵsanitizeHtml);\n }\n}\nfunction NzDrawerComponent_ng_template_0_div_11_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 26);\n i0.ɵɵtemplate(1, NzDrawerComponent_ng_template_0_div_11_ng_container_1_Template, 2, 1, \"ng-container\", 18);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r8 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"nzStringTemplateOutlet\", ctx_r8.nzFooter);\n }\n}\nfunction NzDrawerComponent_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 1);\n i0.ɵɵtemplate(1, NzDrawerComponent_ng_template_0_div_1_Template, 1, 1, \"div\", 2);\n i0.ɵɵelementStart(2, \"div\")(3, \"div\", 3)(4, \"div\", 4);\n i0.ɵɵtemplate(5, NzDrawerComponent_ng_template_0_div_5_Template, 5, 5, \"div\", 5);\n i0.ɵɵelementStart(6, \"div\", 6);\n i0.ɵɵtemplate(7, NzDrawerComponent_ng_template_0_ng_template_7_Template, 0, 0, \"ng-template\", 7)(8, NzDrawerComponent_ng_template_0_ng_container_8_Template, 2, 1, \"ng-container\", 8)(9, NzDrawerComponent_ng_template_0_ng_template_9_Template, 1, 1, \"ng-template\", null, 9, i0.ɵɵtemplateRefExtractor);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(11, NzDrawerComponent_ng_template_0_div_11_Template, 2, 1, \"div\", 10);\n i0.ɵɵelementEnd()()()();\n }\n if (rf & 2) {\n const _r7 = i0.ɵɵreference(10);\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵstyleProp(\"transform\", ctx_r0.offsetTransform)(\"transition\", ctx_r0.placementChanging ? \"none\" : null)(\"z-index\", ctx_r0.nzZIndex);\n i0.ɵɵclassProp(\"ant-drawer-rtl\", ctx_r0.dir === \"rtl\")(\"ant-drawer-open\", ctx_r0.isOpen)(\"no-mask\", !ctx_r0.nzMask)(\"ant-drawer-top\", ctx_r0.nzPlacement === \"top\")(\"ant-drawer-bottom\", ctx_r0.nzPlacement === \"bottom\")(\"ant-drawer-right\", ctx_r0.nzPlacement === \"right\")(\"ant-drawer-left\", ctx_r0.nzPlacement === \"left\");\n i0.ɵɵproperty(\"nzNoAnimation\", ctx_r0.nzNoAnimation);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx_r0.nzMask);\n i0.ɵɵadvance(1);\n i0.ɵɵclassMapInterpolate1(\"ant-drawer-content-wrapper \", ctx_r0.nzWrapClassName, \"\");\n i0.ɵɵstyleProp(\"width\", ctx_r0.width)(\"height\", ctx_r0.height)(\"transform\", ctx_r0.transform)(\"transition\", ctx_r0.placementChanging ? \"none\" : null);\n i0.ɵɵadvance(2);\n i0.ɵɵstyleProp(\"height\", ctx_r0.isLeftOrRight ? \"100%\" : null);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx_r0.nzTitle || ctx_r0.nzClosable);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngStyle\", ctx_r0.nzBodyStyle);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r0.nzContent)(\"ngIfElse\", _r7);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngIf\", ctx_r0.nzFooter);\n }\n}\nclass NzDrawerContentDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n static {\n this.ɵfac = function NzDrawerContentDirective_Factory(t) {\n return new (t || NzDrawerContentDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzDrawerContentDirective,\n selectors: [[\"\", \"nzDrawerContent\", \"\"]],\n exportAs: [\"nzDrawerContent\"],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzDrawerContentDirective, [{\n type: Directive,\n args: [{\n selector: '[nzDrawerContent]',\n exportAs: 'nzDrawerContent',\n standalone: true\n }]\n }], () => [{\n type: i0.TemplateRef\n }], null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst DRAWER_DEFAULT_SIZE = 378;\nconst DRAWER_LARGE_SIZE = 736;\nconst NZ_DRAWER_DATA = new InjectionToken('NZ_DRAWER_DATA');\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzDrawerRef {}\nconst DRAWER_ANIMATE_DURATION = 300;\nconst NZ_CONFIG_MODULE_NAME = 'drawer';\nclass NzDrawerComponent extends NzDrawerRef {\n set nzVisible(value) {\n this.isOpen = value;\n }\n get nzVisible() {\n return this.isOpen;\n }\n get offsetTransform() {\n if (!this.isOpen || this.nzOffsetX + this.nzOffsetY === 0) {\n return null;\n }\n switch (this.nzPlacement) {\n case 'left':\n return `translateX(${this.nzOffsetX}px)`;\n case 'right':\n return `translateX(-${this.nzOffsetX}px)`;\n case 'top':\n return `translateY(${this.nzOffsetY}px)`;\n case 'bottom':\n return `translateY(-${this.nzOffsetY}px)`;\n }\n }\n get transform() {\n if (this.isOpen) {\n return null;\n }\n switch (this.nzPlacement) {\n case 'left':\n return `translateX(-100%)`;\n case 'right':\n return `translateX(100%)`;\n case 'top':\n return `translateY(-100%)`;\n case 'bottom':\n return `translateY(100%)`;\n }\n }\n get width() {\n if (this.isLeftOrRight) {\n const defaultWidth = this.nzSize === 'large' ? DRAWER_LARGE_SIZE : DRAWER_DEFAULT_SIZE;\n return this.nzWidth === undefined ? toCssPixel(defaultWidth) : toCssPixel(this.nzWidth);\n }\n return null;\n }\n get height() {\n if (!this.isLeftOrRight) {\n const defaultHeight = this.nzSize === 'large' ? DRAWER_LARGE_SIZE : DRAWER_DEFAULT_SIZE;\n return this.nzHeight === undefined ? toCssPixel(defaultHeight) : toCssPixel(this.nzHeight);\n }\n return null;\n }\n get isLeftOrRight() {\n return this.nzPlacement === 'left' || this.nzPlacement === 'right';\n }\n get afterOpen() {\n return this.nzAfterOpen.asObservable();\n }\n get afterClose() {\n return this.nzAfterClose.asObservable();\n }\n isTemplateRef(value) {\n return value instanceof TemplateRef;\n }\n constructor(cdr,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n document, nzConfigService, renderer, overlay, injector, changeDetectorRef, focusTrapFactory, viewContainerRef, overlayKeyboardDispatcher, directionality) {\n super();\n this.cdr = cdr;\n this.document = document;\n this.nzConfigService = nzConfigService;\n this.renderer = renderer;\n this.overlay = overlay;\n this.injector = injector;\n this.changeDetectorRef = changeDetectorRef;\n this.focusTrapFactory = focusTrapFactory;\n this.viewContainerRef = viewContainerRef;\n this.overlayKeyboardDispatcher = overlayKeyboardDispatcher;\n this.directionality = directionality;\n this._nzModuleName = NZ_CONFIG_MODULE_NAME;\n this.nzCloseIcon = 'close';\n this.nzClosable = true;\n this.nzMaskClosable = true;\n this.nzMask = true;\n this.nzCloseOnNavigation = true;\n this.nzNoAnimation = false;\n this.nzKeyboard = true;\n this.nzPlacement = 'right';\n this.nzSize = 'default';\n this.nzMaskStyle = {};\n this.nzBodyStyle = {};\n this.nzZIndex = 1000;\n this.nzOffsetX = 0;\n this.nzOffsetY = 0;\n this.componentInstance = null;\n this.nzOnViewInit = new EventEmitter();\n this.nzOnClose = new EventEmitter();\n this.nzVisibleChange = new EventEmitter();\n this.destroy$ = new Subject();\n this.placementChanging = false;\n this.placementChangeTimeoutId = -1;\n this.isOpen = false;\n this.inAnimation = false;\n this.templateContext = {\n $implicit: undefined,\n drawerRef: this\n };\n this.nzAfterOpen = new Subject();\n this.nzAfterClose = new Subject();\n // from service config\n this.nzDirection = undefined;\n this.dir = 'ltr';\n }\n ngOnInit() {\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe(direction => {\n this.dir = direction;\n this.cdr.detectChanges();\n });\n this.dir = this.nzDirection || this.directionality.value;\n this.attachOverlay();\n this.updateOverlayStyle();\n this.updateBodyOverflow();\n this.templateContext = {\n $implicit: this.nzData || this.nzContentParams,\n drawerRef: this\n };\n this.changeDetectorRef.detectChanges();\n }\n ngAfterViewInit() {\n this.attachBodyContent();\n // The `setTimeout` triggers change detection. There's no sense to schedule the DOM timer if anyone is\n // listening to the `nzOnViewInit` event inside the template, for instance ``.\n if (this.nzOnViewInit.observers.length) {\n setTimeout(() => {\n this.nzOnViewInit.emit();\n });\n }\n }\n ngOnChanges(changes) {\n const {\n nzPlacement,\n nzVisible\n } = changes;\n if (nzVisible) {\n const value = changes.nzVisible.currentValue;\n if (value) {\n this.open();\n } else {\n this.close();\n }\n }\n if (nzPlacement && !nzPlacement.isFirstChange()) {\n this.triggerPlacementChangeCycleOnce();\n }\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n clearTimeout(this.placementChangeTimeoutId);\n this.disposeOverlay();\n }\n getAnimationDuration() {\n return this.nzNoAnimation ? 0 : DRAWER_ANIMATE_DURATION;\n }\n // Disable the transition animation temporarily when the placement changing\n triggerPlacementChangeCycleOnce() {\n if (!this.nzNoAnimation) {\n this.placementChanging = true;\n this.changeDetectorRef.markForCheck();\n clearTimeout(this.placementChangeTimeoutId);\n this.placementChangeTimeoutId = setTimeout(() => {\n this.placementChanging = false;\n this.changeDetectorRef.markForCheck();\n }, this.getAnimationDuration());\n }\n }\n close(result) {\n this.isOpen = false;\n this.inAnimation = true;\n this.nzVisibleChange.emit(false);\n this.updateOverlayStyle();\n this.overlayKeyboardDispatcher.remove(this.overlayRef);\n this.changeDetectorRef.detectChanges();\n setTimeout(() => {\n this.updateBodyOverflow();\n this.restoreFocus();\n this.inAnimation = false;\n this.nzAfterClose.next(result);\n this.nzAfterClose.complete();\n this.componentInstance = null;\n }, this.getAnimationDuration());\n }\n open() {\n this.attachOverlay();\n this.isOpen = true;\n this.inAnimation = true;\n this.nzVisibleChange.emit(true);\n this.overlayKeyboardDispatcher.add(this.overlayRef);\n this.updateOverlayStyle();\n this.updateBodyOverflow();\n this.savePreviouslyFocusedElement();\n this.trapFocus();\n this.changeDetectorRef.detectChanges();\n setTimeout(() => {\n this.inAnimation = false;\n this.changeDetectorRef.detectChanges();\n this.nzAfterOpen.next();\n }, this.getAnimationDuration());\n }\n getContentComponent() {\n return this.componentInstance;\n }\n closeClick() {\n this.nzOnClose.emit();\n }\n maskClick() {\n if (this.nzMaskClosable && this.nzMask) {\n this.nzOnClose.emit();\n }\n }\n attachBodyContent() {\n this.bodyPortalOutlet.dispose();\n if (this.nzContent instanceof Type) {\n const childInjector = Injector.create({\n parent: this.injector,\n providers: [{\n provide: NzDrawerRef,\n useValue: this\n }, {\n provide: NZ_DRAWER_DATA,\n useValue: this.nzData\n }]\n });\n const componentPortal = new ComponentPortal(this.nzContent, null, childInjector);\n const componentRef = this.bodyPortalOutlet.attachComponentPortal(componentPortal);\n this.componentInstance = componentRef.instance;\n /**TODO\n * When nzContentParam will be remove in the next major version, we have to remove the following line\n * **/\n Object.assign(componentRef.instance, this.nzData || this.nzContentParams);\n componentRef.changeDetectorRef.detectChanges();\n }\n }\n attachOverlay() {\n if (!this.overlayRef) {\n this.portal = new TemplatePortal(this.drawerTemplate, this.viewContainerRef);\n this.overlayRef = this.overlay.create(this.getOverlayConfig());\n }\n if (this.overlayRef && !this.overlayRef.hasAttached()) {\n this.overlayRef.attach(this.portal);\n this.overlayRef.keydownEvents().pipe(takeUntil(this.destroy$)).subscribe(event => {\n if (event.keyCode === ESCAPE && this.isOpen && this.nzKeyboard) {\n this.nzOnClose.emit();\n }\n });\n this.overlayRef.detachments().pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.disposeOverlay();\n });\n }\n }\n disposeOverlay() {\n this.overlayRef?.dispose();\n this.overlayRef = null;\n }\n getOverlayConfig() {\n return new OverlayConfig({\n disposeOnNavigation: this.nzCloseOnNavigation,\n positionStrategy: this.overlay.position().global(),\n scrollStrategy: this.overlay.scrollStrategies.block()\n });\n }\n updateOverlayStyle() {\n if (this.overlayRef && this.overlayRef.overlayElement) {\n this.renderer.setStyle(this.overlayRef.overlayElement, 'pointer-events', this.isOpen ? 'auto' : 'none');\n }\n }\n updateBodyOverflow() {\n if (this.overlayRef) {\n if (this.isOpen) {\n this.overlayRef.getConfig().scrollStrategy.enable();\n } else {\n this.overlayRef.getConfig().scrollStrategy.disable();\n }\n }\n }\n savePreviouslyFocusedElement() {\n if (this.document && !this.previouslyFocusedElement) {\n this.previouslyFocusedElement = this.document.activeElement;\n // We need the extra check, because IE's svg element has no blur method.\n if (this.previouslyFocusedElement && typeof this.previouslyFocusedElement.blur === 'function') {\n this.previouslyFocusedElement.blur();\n }\n }\n }\n trapFocus() {\n if (!this.focusTrap && this.overlayRef && this.overlayRef.overlayElement) {\n this.focusTrap = this.focusTrapFactory.create(this.overlayRef.overlayElement);\n this.focusTrap.focusInitialElement();\n }\n }\n restoreFocus() {\n // We need the extra check, because IE can set the `activeElement` to null in some cases.\n if (this.previouslyFocusedElement && typeof this.previouslyFocusedElement.focus === 'function') {\n this.previouslyFocusedElement.focus();\n }\n if (this.focusTrap) {\n this.focusTrap.destroy();\n }\n }\n static {\n this.ɵfac = function NzDrawerComponent_Factory(t) {\n return new (t || NzDrawerComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(DOCUMENT, 8), i0.ɵɵdirectiveInject(i1.NzConfigService), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i2.Overlay), i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i3.FocusTrapFactory), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i2.OverlayKeyboardDispatcher), i0.ɵɵdirectiveInject(i4.Directionality, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzDrawerComponent,\n selectors: [[\"nz-drawer\"]],\n contentQueries: function NzDrawerComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NzDrawerContentDirective, 7, TemplateRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.contentFromContentChild = _t.first);\n }\n },\n viewQuery: function NzDrawerComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c0, 7);\n i0.ɵɵviewQuery(CdkPortalOutlet, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.drawerTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.bodyPortalOutlet = _t.first);\n }\n },\n inputs: {\n nzContent: \"nzContent\",\n nzCloseIcon: \"nzCloseIcon\",\n nzClosable: \"nzClosable\",\n nzMaskClosable: \"nzMaskClosable\",\n nzMask: \"nzMask\",\n nzCloseOnNavigation: \"nzCloseOnNavigation\",\n nzNoAnimation: \"nzNoAnimation\",\n nzKeyboard: \"nzKeyboard\",\n nzTitle: \"nzTitle\",\n nzExtra: \"nzExtra\",\n nzFooter: \"nzFooter\",\n nzPlacement: \"nzPlacement\",\n nzSize: \"nzSize\",\n nzMaskStyle: \"nzMaskStyle\",\n nzBodyStyle: \"nzBodyStyle\",\n nzWrapClassName: \"nzWrapClassName\",\n nzWidth: \"nzWidth\",\n nzHeight: \"nzHeight\",\n nzZIndex: \"nzZIndex\",\n nzOffsetX: \"nzOffsetX\",\n nzOffsetY: \"nzOffsetY\",\n nzVisible: \"nzVisible\"\n },\n outputs: {\n nzOnViewInit: \"nzOnViewInit\",\n nzOnClose: \"nzOnClose\",\n nzVisibleChange: \"nzVisibleChange\"\n },\n exportAs: [\"nzDrawer\"],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 2,\n vars: 0,\n consts: [[\"drawerTemplate\", \"\"], [1, \"ant-drawer\", 3, \"nzNoAnimation\"], [\"class\", \"ant-drawer-mask\", 3, \"ngStyle\", \"click\", 4, \"ngIf\"], [1, \"ant-drawer-content\"], [1, \"ant-drawer-wrapper-body\"], [\"class\", \"ant-drawer-header\", 3, \"ant-drawer-header-close-only\", 4, \"ngIf\"], [1, \"ant-drawer-body\", 3, \"ngStyle\"], [\"cdkPortalOutlet\", \"\"], [4, \"ngIf\", \"ngIfElse\"], [\"contentElseTemp\", \"\"], [\"class\", \"ant-drawer-footer\", 4, \"ngIf\"], [1, \"ant-drawer-mask\", 3, \"ngStyle\", \"click\"], [1, \"ant-drawer-header\"], [1, \"ant-drawer-header-title\"], [\"aria-label\", \"Close\", \"class\", \"ant-drawer-close\", \"style\", \"--scroll-bar: 0px;\", 3, \"click\", 4, \"ngIf\"], [\"class\", \"ant-drawer-title\", 4, \"ngIf\"], [\"class\", \"ant-drawer-extra\", 4, \"ngIf\"], [\"aria-label\", \"Close\", 1, \"ant-drawer-close\", 2, \"--scroll-bar\", \"0px\", 3, \"click\"], [4, \"nzStringTemplateOutlet\"], [\"nz-icon\", \"\", 3, \"nzType\"], [1, \"ant-drawer-title\"], [3, \"innerHTML\"], [1, \"ant-drawer-extra\"], [4, \"ngIf\"], [4, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [3, \"ngTemplateOutlet\"], [1, \"ant-drawer-footer\"]],\n template: function NzDrawerComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NzDrawerComponent_ng_template_0_Template, 12, 40, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor);\n }\n },\n dependencies: [NzNoAnimationDirective, NgIf, NgStyle, NzOutletModule, i5.NzStringTemplateOutletDirective, NzIconModule, i6.NzIconDirective, PortalModule, i7.CdkPortalOutlet, NgTemplateOutlet],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n__decorate([InputBoolean()], NzDrawerComponent.prototype, \"nzClosable\", void 0);\n__decorate([WithConfig(), InputBoolean()], NzDrawerComponent.prototype, \"nzMaskClosable\", void 0);\n__decorate([WithConfig(), InputBoolean()], NzDrawerComponent.prototype, \"nzMask\", void 0);\n__decorate([WithConfig(), InputBoolean()], NzDrawerComponent.prototype, \"nzCloseOnNavigation\", void 0);\n__decorate([InputBoolean()], NzDrawerComponent.prototype, \"nzNoAnimation\", void 0);\n__decorate([InputBoolean()], NzDrawerComponent.prototype, \"nzKeyboard\", void 0);\n__decorate([WithConfig()], NzDrawerComponent.prototype, \"nzDirection\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzDrawerComponent, [{\n type: Component,\n args: [{\n selector: 'nz-drawer',\n exportAs: 'nzDrawer',\n template: `\n \n \n
\n \n
\n
\n \n
\n \n \n \n \n \n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n
\n
\n \n
\n
\n
\n
\n \n \n \n
\n `,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NzNoAnimationDirective, NgIf, NgStyle, NzOutletModule, NzIconModule, PortalModule, NgTemplateOutlet],\n standalone: true\n }]\n }], () => [{\n type: i0.ChangeDetectorRef\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }]\n }, {\n type: i1.NzConfigService\n }, {\n type: i0.Renderer2\n }, {\n type: i2.Overlay\n }, {\n type: i0.Injector\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: i3.FocusTrapFactory\n }, {\n type: i0.ViewContainerRef\n }, {\n type: i2.OverlayKeyboardDispatcher\n }, {\n type: i4.Directionality,\n decorators: [{\n type: Optional\n }]\n }], {\n nzContent: [{\n type: Input\n }],\n nzCloseIcon: [{\n type: Input\n }],\n nzClosable: [{\n type: Input\n }],\n nzMaskClosable: [{\n type: Input\n }],\n nzMask: [{\n type: Input\n }],\n nzCloseOnNavigation: [{\n type: Input\n }],\n nzNoAnimation: [{\n type: Input\n }],\n nzKeyboard: [{\n type: Input\n }],\n nzTitle: [{\n type: Input\n }],\n nzExtra: [{\n type: Input\n }],\n nzFooter: [{\n type: Input\n }],\n nzPlacement: [{\n type: Input\n }],\n nzSize: [{\n type: Input\n }],\n nzMaskStyle: [{\n type: Input\n }],\n nzBodyStyle: [{\n type: Input\n }],\n nzWrapClassName: [{\n type: Input\n }],\n nzWidth: [{\n type: Input\n }],\n nzHeight: [{\n type: Input\n }],\n nzZIndex: [{\n type: Input\n }],\n nzOffsetX: [{\n type: Input\n }],\n nzOffsetY: [{\n type: Input\n }],\n nzVisible: [{\n type: Input\n }],\n nzOnViewInit: [{\n type: Output\n }],\n nzOnClose: [{\n type: Output\n }],\n nzVisibleChange: [{\n type: Output\n }],\n drawerTemplate: [{\n type: ViewChild,\n args: ['drawerTemplate', {\n static: true\n }]\n }],\n bodyPortalOutlet: [{\n type: ViewChild,\n args: [CdkPortalOutlet, {\n static: false\n }]\n }],\n contentFromContentChild: [{\n type: ContentChild,\n args: [NzDrawerContentDirective, {\n static: true,\n read: TemplateRef\n }]\n }],\n nzDirection: []\n });\n})();\nclass DrawerBuilderForService {\n constructor(overlay, options) {\n this.overlay = overlay;\n this.options = options;\n this.unsubscribe$ = new Subject();\n /** pick {@link NzDrawerOptions.nzOnCancel} and omit this option */\n const {\n nzOnCancel,\n ...componentOption\n } = this.options;\n this.overlayRef = this.overlay.create();\n this.drawerRef = this.overlayRef.attach(new ComponentPortal(NzDrawerComponent)).instance;\n this.updateOptions(componentOption);\n // Prevent repeatedly open drawer when tap focus element.\n this.drawerRef.savePreviouslyFocusedElement();\n this.drawerRef.nzOnViewInit.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n this.drawerRef.open();\n });\n this.drawerRef.nzOnClose.subscribe(() => {\n if (nzOnCancel) {\n nzOnCancel().then(canClose => {\n if (canClose !== false) {\n this.drawerRef.close();\n }\n });\n } else {\n this.drawerRef.close();\n }\n });\n this.drawerRef.afterClose.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n this.overlayRef.dispose();\n this.drawerRef = null;\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n });\n }\n getInstance() {\n return this.drawerRef;\n }\n updateOptions(options) {\n Object.assign(this.drawerRef, options);\n }\n}\nclass NzDrawerService {\n constructor(overlay) {\n this.overlay = overlay;\n }\n create(options) {\n return new DrawerBuilderForService(this.overlay, options).getInstance();\n }\n static {\n this.ɵfac = function NzDrawerService_Factory(t) {\n return new (t || NzDrawerService)(i0.ɵɵinject(i2.Overlay));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NzDrawerService,\n factory: NzDrawerService.ɵfac\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzDrawerService, [{\n type: Injectable\n }], () => [{\n type: i2.Overlay\n }], null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzDrawerModule {\n static {\n this.ɵfac = function NzDrawerModule_Factory(t) {\n return new (t || NzDrawerModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NzDrawerModule,\n imports: [NzDrawerComponent, NzDrawerContentDirective],\n exports: [NzDrawerComponent, NzDrawerContentDirective]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [NzDrawerService],\n imports: [NzDrawerComponent]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzDrawerModule, [{\n type: NgModule,\n args: [{\n imports: [NzDrawerComponent, NzDrawerContentDirective],\n providers: [NzDrawerService],\n exports: [NzDrawerComponent, NzDrawerContentDirective]\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DRAWER_ANIMATE_DURATION, DRAWER_DEFAULT_SIZE, DRAWER_LARGE_SIZE, DrawerBuilderForService, NZ_DRAWER_DATA, NzDrawerComponent, NzDrawerContentDirective, NzDrawerModule, NzDrawerRef, NzDrawerService };\n"], + "mappings": "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", + "names": [] +} diff --git a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_form.js b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_form.js index bef0707..84d084f 100644 --- a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_form.js +++ b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_form.js @@ -1,49 +1,53 @@ import { - NzI18nService -} from "./chunk-5W7CSQ4E.js"; + NzTooltipDirective +} from "./chunk-5MZJ5XYV.js"; +import "./chunk-6RXUTAFR.js"; import { NzGridModule -} from "./chunk-YSQE3J2Q.js"; +} from "./chunk-QP2OUFNR.js"; import { NzFormStatusService -} from "./chunk-W2UE3A2Q.js"; -import { - NzTooltipDirective -} from "./chunk-BXV7YWBX.js"; +} from "./chunk-FGZVIKKA.js"; import { - NzIconDirective, - NzIconModule -} from "./chunk-S7G3TSRW.js"; + NzI18nService +} from "./chunk-T745QDCV.js"; import { helpMotion -} from "./chunk-QI6CCAQD.js"; +} from "./chunk-XAGDQPFO.js"; +import "./chunk-D5ODNR6D.js"; +import "./chunk-55A2ZGND.js"; +import "./chunk-6U656R5M.js"; import { NzOutletModule, NzStringTemplateOutletDirective } from "./chunk-VOD2PKZN.js"; -import "./chunk-W3IYJMS2.js"; -import "./chunk-UMSNQQWJ.js"; -import "./chunk-5OJ3CSUZ.js"; +import "./chunk-JGP5BR6B.js"; +import "./chunk-WB57DPWD.js"; +import { + AbstractControl, + FormControlDirective, + FormControlName, + NgControl, + NgModel +} from "./chunk-D4IIJHV7.js"; +import { + NzIconDirective, + NzIconModule +} from "./chunk-VWMHIMW7.js"; import { NzConfigService, WithConfig -} from "./chunk-NOIPAY33.js"; +} from "./chunk-ZHMJ6SNN.js"; import { Directionality -} from "./chunk-UPQZZZIG.js"; +} from "./chunk-6NZ2BEBG.js"; +import "./chunk-IAC53GOD.js"; import { InputBoolean, toBoolean -} from "./chunk-7XTJNSRU.js"; -import "./chunk-FILHFU6K.js"; -import "./chunk-BNCUYWOH.js"; -import { - AbstractControl, - FormControlDirective, - FormControlName, - NgControl, - NgModel -} from "./chunk-D4IIJHV7.js"; +} from "./chunk-M5GY4FCO.js"; +import "./chunk-ECVKT3ZH.js"; +import "./chunk-KI2JSLP6.js"; import "./chunk-Y4CEYMY2.js"; import "./chunk-X7WBA24Z.js"; import { diff --git a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_form.js.map b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_form.js.map index 10d5ee8..3dec077 100644 --- a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_form.js.map +++ b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_form.js.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-form.mjs"], "sourcesContent": ["import * as i0 from '@angular/core';\nimport { Component, ChangeDetectionStrategy, ViewEncapsulation, Directive, Optional, Input, Host, ContentChild, SkipSelf, NgModule } from '@angular/core';\nimport { NzGridModule } from 'ng-zorro-antd/grid';\nimport { NgClass, NgIf } from '@angular/common';\nimport { AbstractControl, NgModel, FormControlName, FormControlDirective, NgControl } from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\nimport { filter, map, takeUntil, startWith, tap } from 'rxjs/operators';\nimport { helpMotion } from 'ng-zorro-antd/core/animation';\nimport * as i4 from 'ng-zorro-antd/core/form';\nimport { NzFormStatusService } from 'ng-zorro-antd/core/form';\nimport * as i5 from 'ng-zorro-antd/core/outlet';\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport { InputBoolean, toBoolean } from 'ng-zorro-antd/core/util';\nimport * as i2$1 from 'ng-zorro-antd/i18n';\nimport { __decorate } from 'tslib';\nimport * as i1 from 'ng-zorro-antd/core/config';\nimport { WithConfig } from 'ng-zorro-antd/core/config';\nimport * as i2 from '@angular/cdk/bidi';\nimport * as i3 from 'ng-zorro-antd/icon';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzTooltipDirective } from 'ng-zorro-antd/tooltip';\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n/** should add nz-row directive to host, track https://github.com/angular/angular/issues/8785 **/\nconst _c0 = [\"*\"];\nfunction NzFormControlComponent_div_3_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtext(1);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(1);\n i0.ɵɵtextInterpolate(ctx_r2.innerTip);\n }\n}\nconst _c1 = a0 => [a0];\nconst _c2 = a0 => ({\n $implicit: a0\n});\nfunction NzFormControlComponent_div_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 4)(1, \"div\", 5);\n i0.ɵɵtemplate(2, NzFormControlComponent_div_3_ng_container_2_Template, 2, 1, \"ng-container\", 6);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"@helpMotion\", undefined);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(4, _c1, \"ant-form-item-explain-\" + ctx_r0.status));\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"nzStringTemplateOutlet\", ctx_r0.innerTip)(\"nzStringTemplateOutletContext\", i0.ɵɵpureFunction1(6, _c2, ctx_r0.validateControl));\n }\n}\nfunction NzFormControlComponent_div_4_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtext(1);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r3 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(1);\n i0.ɵɵtextInterpolate(ctx_r3.nzExtra);\n }\n}\nfunction NzFormControlComponent_div_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 7);\n i0.ɵɵtemplate(1, NzFormControlComponent_div_4_ng_container_1_Template, 2, 1, \"ng-container\", 8);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"nzStringTemplateOutlet\", ctx_r1.nzExtra);\n }\n}\nfunction NzFormLabelComponent_span_2_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelement(1, \"span\", 3);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const tooltipIconType_r2 = ctx.$implicit;\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"nzType\", tooltipIconType_r2)(\"nzTheme\", ctx_r1.tooltipIcon.theme);\n }\n}\nfunction NzFormLabelComponent_span_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 1);\n i0.ɵɵtemplate(1, NzFormLabelComponent_span_2_ng_container_1_Template, 2, 2, \"ng-container\", 2);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"nzTooltipTitle\", ctx_r0.nzTooltipTitle);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"nzStringTemplateOutlet\", ctx_r0.tooltipIcon.type);\n }\n}\nclass NzFormItemComponent {\n setWithHelpViaTips(value) {\n this.withHelpClass = value;\n this.cdr.markForCheck();\n }\n setStatus(status) {\n this.status = status;\n this.cdr.markForCheck();\n }\n setHasFeedback(hasFeedback) {\n this.hasFeedback = hasFeedback;\n this.cdr.markForCheck();\n }\n constructor(cdr) {\n this.cdr = cdr;\n this.status = '';\n this.hasFeedback = false;\n this.withHelpClass = false;\n this.destroy$ = new Subject();\n }\n ngOnDestroy() {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n static {\n this.ɵfac = function NzFormItemComponent_Factory(t) {\n return new (t || NzFormItemComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzFormItemComponent,\n selectors: [[\"nz-form-item\"]],\n hostAttrs: [1, \"ant-form-item\"],\n hostVars: 12,\n hostBindings: function NzFormItemComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"ant-form-item-has-success\", ctx.status === \"success\")(\"ant-form-item-has-warning\", ctx.status === \"warning\")(\"ant-form-item-has-error\", ctx.status === \"error\")(\"ant-form-item-is-validating\", ctx.status === \"validating\")(\"ant-form-item-has-feedback\", ctx.hasFeedback && ctx.status)(\"ant-form-item-with-help\", ctx.withHelpClass);\n }\n },\n exportAs: [\"nzFormItem\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n template: function NzFormItemComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzFormItemComponent, [{\n type: Component,\n args: [{\n selector: 'nz-form-item',\n exportAs: 'nzFormItem',\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'ant-form-item',\n '[class.ant-form-item-has-success]': 'status === \"success\"',\n '[class.ant-form-item-has-warning]': 'status === \"warning\"',\n '[class.ant-form-item-has-error]': 'status === \"error\"',\n '[class.ant-form-item-is-validating]': 'status === \"validating\"',\n '[class.ant-form-item-has-feedback]': 'hasFeedback && status',\n '[class.ant-form-item-with-help]': 'withHelpClass'\n },\n template: ` `,\n standalone: true\n }]\n }], () => [{\n type: i0.ChangeDetectorRef\n }], null);\n})();\nconst NZ_CONFIG_MODULE_NAME = 'form';\nconst DefaultTooltipIcon = {\n type: 'question-circle',\n theme: 'outline'\n};\nclass NzFormDirective {\n getInputObservable(changeType) {\n return this.inputChanges$.pipe(filter(changes => changeType in changes), map(value => value[changeType]));\n }\n constructor(nzConfigService, directionality) {\n this.nzConfigService = nzConfigService;\n this.directionality = directionality;\n this._nzModuleName = NZ_CONFIG_MODULE_NAME;\n this.nzLayout = 'horizontal';\n this.nzNoColon = false;\n this.nzAutoTips = {};\n this.nzDisableAutoTips = false;\n this.nzTooltipIcon = DefaultTooltipIcon;\n this.nzLabelAlign = 'right';\n this.nzLabelWrap = false;\n this.dir = 'ltr';\n this.destroy$ = new Subject();\n this.inputChanges$ = new Subject();\n this.dir = this.directionality.value;\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe(direction => {\n this.dir = direction;\n });\n }\n ngOnChanges(changes) {\n this.inputChanges$.next(changes);\n }\n ngOnDestroy() {\n this.inputChanges$.complete();\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n static {\n this.ɵfac = function NzFormDirective_Factory(t) {\n return new (t || NzFormDirective)(i0.ɵɵdirectiveInject(i1.NzConfigService), i0.ɵɵdirectiveInject(i2.Directionality, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzFormDirective,\n selectors: [[\"\", \"nz-form\", \"\"]],\n hostAttrs: [1, \"ant-form\"],\n hostVars: 8,\n hostBindings: function NzFormDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"ant-form-horizontal\", ctx.nzLayout === \"horizontal\")(\"ant-form-vertical\", ctx.nzLayout === \"vertical\")(\"ant-form-inline\", ctx.nzLayout === \"inline\")(\"ant-form-rtl\", ctx.dir === \"rtl\");\n }\n },\n inputs: {\n nzLayout: \"nzLayout\",\n nzNoColon: \"nzNoColon\",\n nzAutoTips: \"nzAutoTips\",\n nzDisableAutoTips: \"nzDisableAutoTips\",\n nzTooltipIcon: \"nzTooltipIcon\",\n nzLabelAlign: \"nzLabelAlign\",\n nzLabelWrap: \"nzLabelWrap\"\n },\n exportAs: [\"nzForm\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n__decorate([WithConfig(), InputBoolean()], NzFormDirective.prototype, \"nzNoColon\", void 0);\n__decorate([WithConfig()], NzFormDirective.prototype, \"nzAutoTips\", void 0);\n__decorate([InputBoolean()], NzFormDirective.prototype, \"nzDisableAutoTips\", void 0);\n__decorate([WithConfig()], NzFormDirective.prototype, \"nzTooltipIcon\", void 0);\n__decorate([WithConfig(), InputBoolean()], NzFormDirective.prototype, \"nzLabelWrap\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzFormDirective, [{\n type: Directive,\n args: [{\n selector: '[nz-form]',\n exportAs: 'nzForm',\n host: {\n class: 'ant-form',\n '[class.ant-form-horizontal]': `nzLayout === 'horizontal'`,\n '[class.ant-form-vertical]': `nzLayout === 'vertical'`,\n '[class.ant-form-inline]': `nzLayout === 'inline'`,\n '[class.ant-form-rtl]': `dir === 'rtl'`\n },\n standalone: true\n }]\n }], () => [{\n type: i1.NzConfigService\n }, {\n type: i2.Directionality,\n decorators: [{\n type: Optional\n }]\n }], {\n nzLayout: [{\n type: Input\n }],\n nzNoColon: [{\n type: Input\n }],\n nzAutoTips: [{\n type: Input\n }],\n nzDisableAutoTips: [{\n type: Input\n }],\n nzTooltipIcon: [{\n type: Input\n }],\n nzLabelAlign: [{\n type: Input\n }],\n nzLabelWrap: [{\n type: Input\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzFormControlComponent {\n get disableAutoTips() {\n return this.nzDisableAutoTips !== 'default' ? toBoolean(this.nzDisableAutoTips) : this.nzFormDirective?.nzDisableAutoTips;\n }\n set nzHasFeedback(value) {\n this._hasFeedback = toBoolean(value);\n this.nzFormStatusService.formStatusChanges.next({\n status: this.status,\n hasFeedback: this._hasFeedback\n });\n if (this.nzFormItemComponent) {\n this.nzFormItemComponent.setHasFeedback(this._hasFeedback);\n }\n }\n get nzHasFeedback() {\n return this._hasFeedback;\n }\n set nzValidateStatus(value) {\n if (value instanceof AbstractControl || value instanceof NgModel) {\n this.validateControl = value;\n this.validateString = null;\n this.watchControl();\n } else if (value instanceof FormControlName) {\n this.validateControl = value.control;\n this.validateString = null;\n this.watchControl();\n } else {\n this.validateString = value;\n this.validateControl = null;\n this.setStatus();\n }\n }\n watchControl() {\n this.validateChanges.unsubscribe();\n /** miss detect https://github.com/angular/angular/issues/10887 **/\n if (this.validateControl && this.validateControl.statusChanges) {\n this.validateChanges = this.validateControl.statusChanges.pipe(startWith(null), takeUntil(this.destroyed$)).subscribe(() => {\n if (!this.disableAutoTips) {\n this.updateAutoErrorTip();\n }\n this.setStatus();\n this.cdr.markForCheck();\n });\n }\n }\n setStatus() {\n this.status = this.getControlStatus(this.validateString);\n this.innerTip = this.getInnerTip(this.status);\n this.nzFormStatusService.formStatusChanges.next({\n status: this.status,\n hasFeedback: this.nzHasFeedback\n });\n if (this.nzFormItemComponent) {\n this.nzFormItemComponent.setWithHelpViaTips(!!this.innerTip);\n this.nzFormItemComponent.setStatus(this.status);\n }\n }\n getControlStatus(validateString) {\n let status;\n if (validateString === 'warning' || this.validateControlStatus('INVALID', 'warning')) {\n status = 'warning';\n } else if (validateString === 'error' || this.validateControlStatus('INVALID')) {\n status = 'error';\n } else if (validateString === 'validating' || validateString === 'pending' || this.validateControlStatus('PENDING')) {\n status = 'validating';\n } else if (validateString === 'success' || this.validateControlStatus('VALID')) {\n status = 'success';\n } else {\n status = '';\n }\n return status;\n }\n validateControlStatus(validStatus, statusType) {\n if (!this.validateControl) {\n return false;\n } else {\n const {\n dirty,\n touched,\n status\n } = this.validateControl;\n return (!!dirty || !!touched) && (statusType ? this.validateControl.hasError(statusType) : status === validStatus);\n }\n }\n getInnerTip(status) {\n switch (status) {\n case 'error':\n return !this.disableAutoTips && this.autoErrorTip || this.nzErrorTip || null;\n case 'validating':\n return this.nzValidatingTip || null;\n case 'success':\n return this.nzSuccessTip || null;\n case 'warning':\n return this.nzWarningTip || null;\n default:\n return null;\n }\n }\n updateAutoErrorTip() {\n if (this.validateControl) {\n const errors = this.validateControl.errors || {};\n let autoErrorTip = '';\n for (const key in errors) {\n if (errors.hasOwnProperty(key)) {\n autoErrorTip = errors[key]?.[this.localeId] ?? this.nzAutoTips?.[this.localeId]?.[key] ?? this.nzAutoTips.default?.[key] ?? this.nzFormDirective?.nzAutoTips?.[this.localeId]?.[key] ?? this.nzFormDirective?.nzAutoTips.default?.[key];\n }\n if (!!autoErrorTip) {\n break;\n }\n }\n this.autoErrorTip = autoErrorTip;\n }\n }\n subscribeAutoTips(observable) {\n observable?.pipe(takeUntil(this.destroyed$)).subscribe(() => {\n if (!this.disableAutoTips) {\n this.updateAutoErrorTip();\n this.setStatus();\n this.cdr.markForCheck();\n }\n });\n }\n constructor(nzFormItemComponent, cdr, i18n, nzFormDirective, nzFormStatusService) {\n this.nzFormItemComponent = nzFormItemComponent;\n this.cdr = cdr;\n this.nzFormDirective = nzFormDirective;\n this.nzFormStatusService = nzFormStatusService;\n this._hasFeedback = false;\n this.validateChanges = Subscription.EMPTY;\n this.validateString = null;\n this.destroyed$ = new Subject();\n this.status = '';\n this.validateControl = null;\n this.innerTip = null;\n this.nzAutoTips = {};\n this.nzDisableAutoTips = 'default';\n this.subscribeAutoTips(i18n.localeChange.pipe(tap(locale => this.localeId = locale.locale)));\n this.subscribeAutoTips(this.nzFormDirective?.getInputObservable('nzAutoTips'));\n this.subscribeAutoTips(this.nzFormDirective?.getInputObservable('nzDisableAutoTips').pipe(filter(() => this.nzDisableAutoTips === 'default')));\n }\n ngOnChanges(changes) {\n const {\n nzDisableAutoTips,\n nzAutoTips,\n nzSuccessTip,\n nzWarningTip,\n nzErrorTip,\n nzValidatingTip\n } = changes;\n if (nzDisableAutoTips || nzAutoTips) {\n this.updateAutoErrorTip();\n this.setStatus();\n } else if (nzSuccessTip || nzWarningTip || nzErrorTip || nzValidatingTip) {\n this.setStatus();\n }\n }\n ngOnInit() {\n this.setStatus();\n }\n ngOnDestroy() {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n ngAfterContentInit() {\n if (!this.validateControl && !this.validateString) {\n if (this.defaultValidateControl instanceof FormControlDirective) {\n this.nzValidateStatus = this.defaultValidateControl.control;\n } else {\n this.nzValidateStatus = this.defaultValidateControl;\n }\n }\n }\n static {\n this.ɵfac = function NzFormControlComponent_Factory(t) {\n return new (t || NzFormControlComponent)(i0.ɵɵdirectiveInject(NzFormItemComponent, 9), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i2$1.NzI18nService), i0.ɵɵdirectiveInject(NzFormDirective, 8), i0.ɵɵdirectiveInject(i4.NzFormStatusService));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzFormControlComponent,\n selectors: [[\"nz-form-control\"]],\n contentQueries: function NzFormControlComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NgControl, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.defaultValidateControl = _t.first);\n }\n },\n hostAttrs: [1, \"ant-form-item-control\"],\n inputs: {\n nzSuccessTip: \"nzSuccessTip\",\n nzWarningTip: \"nzWarningTip\",\n nzErrorTip: \"nzErrorTip\",\n nzValidatingTip: \"nzValidatingTip\",\n nzExtra: \"nzExtra\",\n nzAutoTips: \"nzAutoTips\",\n nzDisableAutoTips: \"nzDisableAutoTips\",\n nzHasFeedback: \"nzHasFeedback\",\n nzValidateStatus: \"nzValidateStatus\"\n },\n exportAs: [\"nzFormControl\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([NzFormStatusService]), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 5,\n vars: 2,\n consts: [[1, \"ant-form-item-control-input\"], [1, \"ant-form-item-control-input-content\"], [\"class\", \"ant-form-item-explain ant-form-item-explain-connected\", 4, \"ngIf\"], [\"class\", \"ant-form-item-extra\", 4, \"ngIf\"], [1, \"ant-form-item-explain\", \"ant-form-item-explain-connected\"], [\"role\", \"alert\", 3, \"ngClass\"], [4, \"nzStringTemplateOutlet\", \"nzStringTemplateOutletContext\"], [1, \"ant-form-item-extra\"], [4, \"nzStringTemplateOutlet\"]],\n template: function NzFormControlComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelementStart(0, \"div\", 0)(1, \"div\", 1);\n i0.ɵɵprojection(2);\n i0.ɵɵelementEnd()();\n i0.ɵɵtemplate(3, NzFormControlComponent_div_3_Template, 3, 8, \"div\", 2)(4, NzFormControlComponent_div_4_Template, 2, 1, \"div\", 3);\n }\n if (rf & 2) {\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngIf\", ctx.innerTip);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx.nzExtra);\n }\n },\n dependencies: [NgClass, NzOutletModule, i5.NzStringTemplateOutletDirective, NgIf],\n encapsulation: 2,\n data: {\n animation: [helpMotion]\n },\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzFormControlComponent, [{\n type: Component,\n args: [{\n selector: 'nz-form-control',\n exportAs: 'nzFormControl',\n preserveWhitespaces: false,\n animations: [helpMotion],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n
\n
\n \n
\n
\n
\n
\n {{\n innerTip\n }}\n
\n
\n
\n {{ nzExtra }}\n
\n `,\n providers: [NzFormStatusService],\n host: {\n class: 'ant-form-item-control'\n },\n imports: [NgClass, NzOutletModule, NgIf],\n standalone: true\n }]\n }], () => [{\n type: NzFormItemComponent,\n decorators: [{\n type: Optional\n }, {\n type: Host\n }]\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: i2$1.NzI18nService\n }, {\n type: NzFormDirective,\n decorators: [{\n type: Optional\n }]\n }, {\n type: i4.NzFormStatusService\n }], {\n defaultValidateControl: [{\n type: ContentChild,\n args: [NgControl, {\n static: false\n }]\n }],\n nzSuccessTip: [{\n type: Input\n }],\n nzWarningTip: [{\n type: Input\n }],\n nzErrorTip: [{\n type: Input\n }],\n nzValidatingTip: [{\n type: Input\n }],\n nzExtra: [{\n type: Input\n }],\n nzAutoTips: [{\n type: Input\n }],\n nzDisableAutoTips: [{\n type: Input\n }],\n nzHasFeedback: [{\n type: Input\n }],\n nzValidateStatus: [{\n type: Input\n }]\n });\n})();\nfunction toTooltipIcon(value) {\n const icon = typeof value === 'string' ? {\n type: value\n } : value;\n return {\n ...DefaultTooltipIcon,\n ...icon\n };\n}\nclass NzFormLabelComponent {\n set nzNoColon(value) {\n this.noColon = toBoolean(value);\n }\n get nzNoColon() {\n return this.noColon !== 'default' ? this.noColon : this.nzFormDirective?.nzNoColon;\n }\n set nzTooltipIcon(value) {\n this._tooltipIcon = toTooltipIcon(value);\n }\n // due to 'get' and 'set' accessor must have the same type, so it was renamed to `tooltipIcon`\n get tooltipIcon() {\n return this._tooltipIcon !== 'default' ? this._tooltipIcon : toTooltipIcon(this.nzFormDirective?.nzTooltipIcon || DefaultTooltipIcon);\n }\n set nzLabelAlign(value) {\n this.labelAlign = value;\n }\n get nzLabelAlign() {\n return this.labelAlign !== 'default' ? this.labelAlign : this.nzFormDirective?.nzLabelAlign || 'right';\n }\n set nzLabelWrap(value) {\n this.labelWrap = toBoolean(value);\n }\n get nzLabelWrap() {\n return this.labelWrap !== 'default' ? this.labelWrap : this.nzFormDirective?.nzLabelWrap;\n }\n constructor(cdr, nzFormDirective) {\n this.cdr = cdr;\n this.nzFormDirective = nzFormDirective;\n this.nzRequired = false;\n this.noColon = 'default';\n this._tooltipIcon = 'default';\n this.labelAlign = 'default';\n this.labelWrap = 'default';\n this.destroy$ = new Subject();\n if (this.nzFormDirective) {\n this.nzFormDirective.getInputObservable('nzNoColon').pipe(filter(() => this.noColon === 'default'), takeUntil(this.destroy$)).subscribe(() => this.cdr.markForCheck());\n this.nzFormDirective.getInputObservable('nzTooltipIcon').pipe(filter(() => this._tooltipIcon === 'default'), takeUntil(this.destroy$)).subscribe(() => this.cdr.markForCheck());\n this.nzFormDirective.getInputObservable('nzLabelAlign').pipe(filter(() => this.labelAlign === 'default'), takeUntil(this.destroy$)).subscribe(() => this.cdr.markForCheck());\n this.nzFormDirective.getInputObservable('nzLabelWrap').pipe(filter(() => this.labelWrap === 'default'), takeUntil(this.destroy$)).subscribe(() => this.cdr.markForCheck());\n }\n }\n ngOnDestroy() {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n static {\n this.ɵfac = function NzFormLabelComponent_Factory(t) {\n return new (t || NzFormLabelComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(NzFormDirective, 12));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzFormLabelComponent,\n selectors: [[\"nz-form-label\"]],\n hostAttrs: [1, \"ant-form-item-label\"],\n hostVars: 4,\n hostBindings: function NzFormLabelComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"ant-form-item-label-left\", ctx.nzLabelAlign === \"left\")(\"ant-form-item-label-wrap\", ctx.nzLabelWrap);\n }\n },\n inputs: {\n nzFor: \"nzFor\",\n nzRequired: \"nzRequired\",\n nzNoColon: \"nzNoColon\",\n nzTooltipTitle: \"nzTooltipTitle\",\n nzTooltipIcon: \"nzTooltipIcon\",\n nzLabelAlign: \"nzLabelAlign\",\n nzLabelWrap: \"nzLabelWrap\"\n },\n exportAs: [\"nzFormLabel\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 3,\n vars: 6,\n consts: [[\"class\", \"ant-form-item-tooltip\", \"nz-tooltip\", \"\", 3, \"nzTooltipTitle\", 4, \"ngIf\"], [\"nz-tooltip\", \"\", 1, \"ant-form-item-tooltip\", 3, \"nzTooltipTitle\"], [4, \"nzStringTemplateOutlet\"], [\"nz-icon\", \"\", 3, \"nzType\", \"nzTheme\"]],\n template: function NzFormLabelComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelementStart(0, \"label\");\n i0.ɵɵprojection(1);\n i0.ɵɵtemplate(2, NzFormLabelComponent_span_2_Template, 2, 2, \"span\", 0);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"ant-form-item-no-colon\", ctx.nzNoColon)(\"ant-form-item-required\", ctx.nzRequired);\n i0.ɵɵattribute(\"for\", ctx.nzFor);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx.nzTooltipTitle);\n }\n },\n dependencies: [NgIf, NzOutletModule, i5.NzStringTemplateOutletDirective, NzTooltipDirective, NzIconModule, i3.NzIconDirective],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n__decorate([InputBoolean()], NzFormLabelComponent.prototype, \"nzRequired\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzFormLabelComponent, [{\n type: Component,\n args: [{\n selector: 'nz-form-label',\n exportAs: 'nzFormLabel',\n preserveWhitespaces: false,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n \n `,\n host: {\n class: 'ant-form-item-label',\n '[class.ant-form-item-label-left]': `nzLabelAlign === 'left'`,\n '[class.ant-form-item-label-wrap]': `nzLabelWrap`\n },\n imports: [NgIf, NzOutletModule, NzTooltipDirective, NzIconModule],\n standalone: true\n }]\n }], () => [{\n type: i0.ChangeDetectorRef\n }, {\n type: NzFormDirective,\n decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }]\n }], {\n nzFor: [{\n type: Input\n }],\n nzRequired: [{\n type: Input\n }],\n nzNoColon: [{\n type: Input\n }],\n nzTooltipTitle: [{\n type: Input\n }],\n nzTooltipIcon: [{\n type: Input\n }],\n nzLabelAlign: [{\n type: Input\n }],\n nzLabelWrap: [{\n type: Input\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzFormSplitComponent {\n static {\n this.ɵfac = function NzFormSplitComponent_Factory(t) {\n return new (t || NzFormSplitComponent)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzFormSplitComponent,\n selectors: [[\"nz-form-split\"]],\n hostAttrs: [1, \"ant-form-split\"],\n exportAs: [\"nzFormSplit\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n template: function NzFormSplitComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzFormSplitComponent, [{\n type: Component,\n args: [{\n selector: 'nz-form-split',\n exportAs: 'nzFormSplit',\n preserveWhitespaces: false,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: ` `,\n host: {\n class: 'ant-form-split'\n },\n standalone: true\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzFormTextComponent {\n static {\n this.ɵfac = function NzFormTextComponent_Factory(t) {\n return new (t || NzFormTextComponent)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzFormTextComponent,\n selectors: [[\"nz-form-text\"]],\n hostAttrs: [1, \"ant-form-text\"],\n exportAs: [\"nzFormText\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n template: function NzFormTextComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzFormTextComponent, [{\n type: Component,\n args: [{\n selector: 'nz-form-text',\n exportAs: 'nzFormText',\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: ` `,\n host: {\n class: 'ant-form-text'\n },\n standalone: true\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzFormModule {\n static {\n this.ɵfac = function NzFormModule_Factory(t) {\n return new (t || NzFormModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NzFormModule,\n imports: [NzFormDirective, NzFormItemComponent, NzFormLabelComponent, NzFormControlComponent, NzFormTextComponent, NzFormSplitComponent],\n exports: [NzGridModule, NzFormDirective, NzFormItemComponent, NzFormLabelComponent, NzFormControlComponent, NzFormTextComponent, NzFormSplitComponent]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [NzFormLabelComponent, NzFormControlComponent, NzGridModule]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzFormModule, [{\n type: NgModule,\n args: [{\n imports: [NzFormDirective, NzFormItemComponent, NzFormLabelComponent, NzFormControlComponent, NzFormTextComponent, NzFormSplitComponent],\n exports: [NzGridModule, NzFormDirective, NzFormItemComponent, NzFormLabelComponent, NzFormControlComponent, NzFormTextComponent, NzFormSplitComponent]\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DefaultTooltipIcon, NzFormControlComponent, NzFormDirective, NzFormItemComponent, NzFormLabelComponent, NzFormModule, NzFormSplitComponent, NzFormTextComponent };\n"], - "mappings": "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", + "mappings": "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", "names": [] } diff --git a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_grid.js b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_grid.js index 2ea433c..80d0ded 100644 --- a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_grid.js +++ b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_grid.js @@ -2,11 +2,12 @@ import { NzColDirective, NzGridModule, NzRowDirective -} from "./chunk-YSQE3J2Q.js"; -import "./chunk-W3IYJMS2.js"; -import "./chunk-5OJ3CSUZ.js"; -import "./chunk-UPQZZZIG.js"; -import "./chunk-7XTJNSRU.js"; +} from "./chunk-QP2OUFNR.js"; +import "./chunk-D5ODNR6D.js"; +import "./chunk-WB57DPWD.js"; +import "./chunk-6NZ2BEBG.js"; +import "./chunk-IAC53GOD.js"; +import "./chunk-M5GY4FCO.js"; import "./chunk-OSQBUYO6.js"; import "./chunk-FGESKT7O.js"; import "./chunk-HSNDBVJ3.js"; diff --git a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_i18n.js b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_i18n.js index 4038a2b..aae6636 100644 --- a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_i18n.js +++ b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_i18n.js @@ -77,8 +77,8 @@ import { zh_CN, zh_HK, zh_TW -} from "./chunk-5W7CSQ4E.js"; -import "./chunk-7XTJNSRU.js"; +} from "./chunk-T745QDCV.js"; +import "./chunk-M5GY4FCO.js"; import "./chunk-OSQBUYO6.js"; import "./chunk-FGESKT7O.js"; import "./chunk-HSNDBVJ3.js"; diff --git a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_icon.js b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_icon.js new file mode 100644 index 0000000..e45b622 --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_icon.js @@ -0,0 +1,31 @@ +import { + DEFAULT_TWOTONE_COLOR, + NZ_ICONS, + NZ_ICONS_PATCH, + NZ_ICONS_USED_BY_ZORRO, + NZ_ICON_DEFAULT_TWOTONE_COLOR, + NzIconDirective, + NzIconModule, + NzIconPatchService, + NzIconService +} from "./chunk-VWMHIMW7.js"; +import "./chunk-ZHMJ6SNN.js"; +import "./chunk-IAC53GOD.js"; +import "./chunk-M5GY4FCO.js"; +import "./chunk-Y4CEYMY2.js"; +import "./chunk-X7WBA24Z.js"; +import "./chunk-OSQBUYO6.js"; +import "./chunk-FGESKT7O.js"; +import "./chunk-HSNDBVJ3.js"; +export { + DEFAULT_TWOTONE_COLOR, + NZ_ICONS, + NZ_ICONS_PATCH, + NZ_ICONS_USED_BY_ZORRO, + NZ_ICON_DEFAULT_TWOTONE_COLOR, + NzIconDirective, + NzIconModule, + NzIconPatchService, + NzIconService +}; +//# sourceMappingURL=ng-zorro-antd_icon.js.map diff --git a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_icon.js.map b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_icon.js.map new file mode 100644 index 0000000..9865211 --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_icon.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": [], + "sourcesContent": [], + "mappings": "", + "names": [] +} diff --git a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_input.js b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_input.js index 8099715..3bb0b08 100644 --- a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_input.js +++ b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_input.js @@ -1,38 +1,40 @@ -import { - FocusMonitor -} from "./chunk-C2DNBB57.js"; import { NzFormItemFeedbackIconComponent, NzFormNoStatusService, NzFormPatchModule, NzFormStatusService -} from "./chunk-W2UE3A2Q.js"; +} from "./chunk-FGZVIKKA.js"; import { - NzIconDirective, - NzIconModule -} from "./chunk-S7G3TSRW.js"; + NzResizeService +} from "./chunk-D5ODNR6D.js"; +import { + FocusMonitor +} from "./chunk-E6XJDY45.js"; import { NzOutletModule, NzStringTemplateOutletDirective } from "./chunk-VOD2PKZN.js"; +import "./chunk-JGP5BR6B.js"; +import "./chunk-WB57DPWD.js"; import { - NzResizeService -} from "./chunk-W3IYJMS2.js"; -import "./chunk-UMSNQQWJ.js"; -import "./chunk-5OJ3CSUZ.js"; -import "./chunk-NOIPAY33.js"; + NgControl +} from "./chunk-D4IIJHV7.js"; +import { + NzIconDirective, + NzIconModule +} from "./chunk-VWMHIMW7.js"; +import "./chunk-ZHMJ6SNN.js"; +import { + Directionality +} from "./chunk-6NZ2BEBG.js"; import { - Directionality, Platform -} from "./chunk-UPQZZZIG.js"; +} from "./chunk-IAC53GOD.js"; import { InputBoolean, getStatusClassNames, isNotNil -} from "./chunk-7XTJNSRU.js"; -import { - NgControl -} from "./chunk-D4IIJHV7.js"; +} from "./chunk-M5GY4FCO.js"; import "./chunk-Y4CEYMY2.js"; import "./chunk-X7WBA24Z.js"; import { diff --git a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_input.js.map b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_input.js.map index 74e6eea..3065c62 100644 --- a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_input.js.map +++ b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_input.js.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-input.mjs"], "sourcesContent": ["import { __decorate } from 'tslib';\nimport { NgIf, NgClass, NgTemplateOutlet } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Directive, Optional, Self, ContentChildren, isDevMode, ContentChild, NgModule } from '@angular/core';\nimport { Subject, merge, EMPTY } from 'rxjs';\nimport { distinctUntilChanged, takeUntil, filter, startWith, switchMap, mergeMap, map } from 'rxjs/operators';\nimport * as i3 from 'ng-zorro-antd/core/form';\nimport { NzFormItemFeedbackIconComponent, NzFormNoStatusService, NzFormPatchModule } from 'ng-zorro-antd/core/form';\nimport { getStatusClassNames, InputBoolean, isNotNil } from 'ng-zorro-antd/core/util';\nimport * as i2 from 'ng-zorro-antd/core/outlet';\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport * as i1 from 'ng-zorro-antd/icon';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport * as i1$1 from '@angular/forms';\nimport * as i2$1 from '@angular/cdk/bidi';\nimport * as i1$2 from '@angular/cdk/a11y';\nimport * as i1$3 from '@angular/cdk/platform';\nimport * as i2$2 from 'ng-zorro-antd/core/services';\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst _c0 = [\"nz-input-group-slot\", \"\"];\nfunction NzInputGroupSlotComponent_span_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 2);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"nzType\", ctx_r0.icon);\n }\n}\nfunction NzInputGroupSlotComponent_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtext(1);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(1);\n i0.ɵɵtextInterpolate(ctx_r1.template);\n }\n}\nconst _c1 = [\"*\"];\nfunction NzInputGroupComponent_span_0_span_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 7);\n }\n if (rf & 2) {\n const ctx_r7 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"icon\", ctx_r7.nzAddOnBeforeIcon)(\"template\", ctx_r7.nzAddOnBefore);\n }\n}\nfunction NzInputGroupComponent_span_0_span_2_ng_template_1_Template(rf, ctx) {}\nfunction NzInputGroupComponent_span_0_span_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 8);\n i0.ɵɵtemplate(1, NzInputGroupComponent_span_0_span_2_ng_template_1_Template, 0, 0, \"ng-template\", 9);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r8 = i0.ɵɵnextContext(2);\n const _r4 = i0.ɵɵreference(4);\n i0.ɵɵclassProp(\"ant-input-affix-wrapper-disabled\", ctx_r8.disabled)(\"ant-input-affix-wrapper-sm\", ctx_r8.isSmall)(\"ant-input-affix-wrapper-lg\", ctx_r8.isLarge)(\"ant-input-affix-wrapper-focused\", ctx_r8.focused);\n i0.ɵɵproperty(\"ngClass\", ctx_r8.affixInGroupStatusCls);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngTemplateOutlet\", _r4);\n }\n}\nfunction NzInputGroupComponent_span_0_span_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 7);\n }\n if (rf & 2) {\n const ctx_r9 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"icon\", ctx_r9.nzAddOnAfterIcon)(\"template\", ctx_r9.nzAddOnAfter);\n }\n}\nfunction NzInputGroupComponent_span_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 4);\n i0.ɵɵtemplate(1, NzInputGroupComponent_span_0_span_1_Template, 1, 2, \"span\", 5)(2, NzInputGroupComponent_span_0_span_2_Template, 2, 10, \"span\", 6)(3, NzInputGroupComponent_span_0_span_3_Template, 1, 2, \"span\", 5);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n const _r6 = i0.ɵɵreference(6);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx_r0.nzAddOnBefore || ctx_r0.nzAddOnBeforeIcon);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx_r0.isAffix || ctx_r0.hasFeedback)(\"ngIfElse\", _r6);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx_r0.nzAddOnAfter || ctx_r0.nzAddOnAfterIcon);\n }\n}\nfunction NzInputGroupComponent_ng_template_1_ng_template_0_ng_template_0_Template(rf, ctx) {}\nfunction NzInputGroupComponent_ng_template_1_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NzInputGroupComponent_ng_template_1_ng_template_0_ng_template_0_Template, 0, 0, \"ng-template\", 9);\n }\n if (rf & 2) {\n i0.ɵɵnextContext(2);\n const _r4 = i0.ɵɵreference(4);\n i0.ɵɵproperty(\"ngTemplateOutlet\", _r4);\n }\n}\nfunction NzInputGroupComponent_ng_template_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NzInputGroupComponent_ng_template_1_ng_template_0_Template, 1, 1, \"ng-template\", 10);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n const _r6 = i0.ɵɵreference(6);\n i0.ɵɵproperty(\"ngIf\", ctx_r1.isAffix)(\"ngIfElse\", _r6);\n }\n}\nfunction NzInputGroupComponent_ng_template_3_span_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 13);\n }\n if (rf & 2) {\n const ctx_r13 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"icon\", ctx_r13.nzPrefixIcon)(\"template\", ctx_r13.nzPrefix);\n }\n}\nfunction NzInputGroupComponent_ng_template_3_ng_template_1_Template(rf, ctx) {}\nfunction NzInputGroupComponent_ng_template_3_span_2_nz_form_item_feedback_icon_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"nz-form-item-feedback-icon\", 16);\n }\n if (rf & 2) {\n const ctx_r16 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"status\", ctx_r16.status);\n }\n}\nfunction NzInputGroupComponent_ng_template_3_span_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 14);\n i0.ɵɵtemplate(1, NzInputGroupComponent_ng_template_3_span_2_nz_form_item_feedback_icon_1_Template, 1, 1, \"nz-form-item-feedback-icon\", 15);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r15 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"icon\", ctx_r15.nzSuffixIcon)(\"template\", ctx_r15.nzSuffix);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx_r15.isFeedback);\n }\n}\nfunction NzInputGroupComponent_ng_template_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NzInputGroupComponent_ng_template_3_span_0_Template, 1, 2, \"span\", 11)(1, NzInputGroupComponent_ng_template_3_ng_template_1_Template, 0, 0, \"ng-template\", 9)(2, NzInputGroupComponent_ng_template_3_span_2_Template, 2, 3, \"span\", 12);\n }\n if (rf & 2) {\n const ctx_r3 = i0.ɵɵnextContext();\n const _r6 = i0.ɵɵreference(6);\n i0.ɵɵproperty(\"ngIf\", ctx_r3.nzPrefix || ctx_r3.nzPrefixIcon);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngTemplateOutlet\", _r6);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx_r3.nzSuffix || ctx_r3.nzSuffixIcon || ctx_r3.isFeedback);\n }\n}\nfunction NzInputGroupComponent_ng_template_5_span_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 18);\n i0.ɵɵelement(1, \"nz-form-item-feedback-icon\", 16);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r17 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"status\", ctx_r17.status);\n }\n}\nfunction NzInputGroupComponent_ng_template_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojection(0);\n i0.ɵɵtemplate(1, NzInputGroupComponent_ng_template_5_span_1_Template, 2, 1, \"span\", 17);\n }\n if (rf & 2) {\n const ctx_r5 = i0.ɵɵnextContext();\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", !ctx_r5.isAddOn && !ctx_r5.isAffix && ctx_r5.isFeedback);\n }\n}\nconst _c2 = [[[\"textarea\", \"nz-input\", \"\"]]];\nconst _c3 = [\"textarea[nz-input]\"];\nclass NzInputGroupSlotComponent {\n constructor() {\n this.icon = null;\n this.type = null;\n this.template = null;\n }\n static {\n this.ɵfac = function NzInputGroupSlotComponent_Factory(t) {\n return new (t || NzInputGroupSlotComponent)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzInputGroupSlotComponent,\n selectors: [[\"\", \"nz-input-group-slot\", \"\"]],\n hostVars: 6,\n hostBindings: function NzInputGroupSlotComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"ant-input-group-addon\", ctx.type === \"addon\")(\"ant-input-prefix\", ctx.type === \"prefix\")(\"ant-input-suffix\", ctx.type === \"suffix\");\n }\n },\n inputs: {\n icon: \"icon\",\n type: \"type\",\n template: \"template\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n attrs: _c0,\n ngContentSelectors: _c1,\n decls: 3,\n vars: 2,\n consts: [[\"nz-icon\", \"\", 3, \"nzType\", 4, \"ngIf\"], [4, \"nzStringTemplateOutlet\"], [\"nz-icon\", \"\", 3, \"nzType\"]],\n template: function NzInputGroupSlotComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, NzInputGroupSlotComponent_span_0_Template, 1, 1, \"span\", 0)(1, NzInputGroupSlotComponent_ng_container_1_Template, 2, 1, \"ng-container\", 1);\n i0.ɵɵprojection(2);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.icon);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"nzStringTemplateOutlet\", ctx.template);\n }\n },\n dependencies: [NzIconModule, i1.NzIconDirective, NgIf, NzOutletModule, i2.NzStringTemplateOutletDirective],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzInputGroupSlotComponent, [{\n type: Component,\n args: [{\n selector: '[nz-input-group-slot]',\n preserveWhitespaces: false,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n \n {{ template }}\n \n `,\n host: {\n '[class.ant-input-group-addon]': `type === 'addon'`,\n '[class.ant-input-prefix]': `type === 'prefix'`,\n '[class.ant-input-suffix]': `type === 'suffix'`\n },\n imports: [NzIconModule, NgIf, NzOutletModule],\n standalone: true\n }]\n }], null, {\n icon: [{\n type: Input\n }],\n type: [{\n type: Input\n }],\n template: [{\n type: Input\n }]\n });\n})();\nclass NzInputDirective {\n get disabled() {\n if (this.ngControl && this.ngControl.disabled !== null) {\n return this.ngControl.disabled;\n }\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value != null && `${value}` !== 'false';\n }\n constructor(ngControl, renderer, elementRef, hostView, directionality, nzFormStatusService, nzFormNoStatusService) {\n this.ngControl = ngControl;\n this.renderer = renderer;\n this.elementRef = elementRef;\n this.hostView = hostView;\n this.directionality = directionality;\n this.nzFormStatusService = nzFormStatusService;\n this.nzFormNoStatusService = nzFormNoStatusService;\n this.nzBorderless = false;\n this.nzSize = 'default';\n this.nzStepperless = true;\n this.nzStatus = '';\n this._disabled = false;\n this.disabled$ = new Subject();\n this.dir = 'ltr';\n // status\n this.prefixCls = 'ant-input';\n this.status = '';\n this.statusCls = {};\n this.hasFeedback = false;\n this.feedbackRef = null;\n this.components = [];\n this.destroy$ = new Subject();\n }\n ngOnInit() {\n this.nzFormStatusService?.formStatusChanges.pipe(distinctUntilChanged((pre, cur) => {\n return pre.status === cur.status && pre.hasFeedback === cur.hasFeedback;\n }), takeUntil(this.destroy$)).subscribe(({\n status,\n hasFeedback\n }) => {\n this.setStatusStyles(status, hasFeedback);\n });\n if (this.ngControl) {\n this.ngControl.statusChanges?.pipe(filter(() => this.ngControl.disabled !== null), takeUntil(this.destroy$)).subscribe(() => {\n this.disabled$.next(this.ngControl.disabled);\n });\n }\n this.dir = this.directionality.value;\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe(direction => {\n this.dir = direction;\n });\n }\n ngOnChanges(changes) {\n const {\n disabled,\n nzStatus\n } = changes;\n if (disabled) {\n this.disabled$.next(this.disabled);\n }\n if (nzStatus) {\n this.setStatusStyles(this.nzStatus, this.hasFeedback);\n }\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n setStatusStyles(status, hasFeedback) {\n // set inner status\n this.status = status;\n this.hasFeedback = hasFeedback;\n this.renderFeedbackIcon();\n // render status if nzStatus is set\n this.statusCls = getStatusClassNames(this.prefixCls, status, hasFeedback);\n Object.keys(this.statusCls).forEach(status => {\n if (this.statusCls[status]) {\n this.renderer.addClass(this.elementRef.nativeElement, status);\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, status);\n }\n });\n }\n renderFeedbackIcon() {\n if (!this.status || !this.hasFeedback || !!this.nzFormNoStatusService) {\n // remove feedback\n this.hostView.clear();\n this.feedbackRef = null;\n return;\n }\n this.feedbackRef = this.feedbackRef || this.hostView.createComponent(NzFormItemFeedbackIconComponent);\n this.feedbackRef.location.nativeElement.classList.add('ant-input-suffix');\n this.feedbackRef.instance.status = this.status;\n this.feedbackRef.instance.updateIcon();\n }\n static {\n this.ɵfac = function NzInputDirective_Factory(t) {\n return new (t || NzInputDirective)(i0.ɵɵdirectiveInject(i1$1.NgControl, 10), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i2$1.Directionality, 8), i0.ɵɵdirectiveInject(i3.NzFormStatusService, 8), i0.ɵɵdirectiveInject(i3.NzFormNoStatusService, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzInputDirective,\n selectors: [[\"input\", \"nz-input\", \"\"], [\"textarea\", \"nz-input\", \"\"]],\n hostAttrs: [1, \"ant-input\"],\n hostVars: 13,\n hostBindings: function NzInputDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"disabled\", ctx.disabled || null);\n i0.ɵɵclassProp(\"ant-input-disabled\", ctx.disabled)(\"ant-input-borderless\", ctx.nzBorderless)(\"ant-input-lg\", ctx.nzSize === \"large\")(\"ant-input-sm\", ctx.nzSize === \"small\")(\"ant-input-rtl\", ctx.dir === \"rtl\")(\"ant-input-stepperless\", ctx.nzStepperless);\n }\n },\n inputs: {\n nzBorderless: \"nzBorderless\",\n nzSize: \"nzSize\",\n nzStepperless: \"nzStepperless\",\n nzStatus: \"nzStatus\",\n disabled: \"disabled\"\n },\n exportAs: [\"nzInput\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n__decorate([InputBoolean()], NzInputDirective.prototype, \"nzBorderless\", void 0);\n__decorate([InputBoolean()], NzInputDirective.prototype, \"nzStepperless\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzInputDirective, [{\n type: Directive,\n args: [{\n selector: 'input[nz-input],textarea[nz-input]',\n exportAs: 'nzInput',\n host: {\n class: 'ant-input',\n '[class.ant-input-disabled]': 'disabled',\n '[class.ant-input-borderless]': 'nzBorderless',\n '[class.ant-input-lg]': `nzSize === 'large'`,\n '[class.ant-input-sm]': `nzSize === 'small'`,\n '[attr.disabled]': 'disabled || null',\n '[class.ant-input-rtl]': `dir=== 'rtl'`,\n '[class.ant-input-stepperless]': `nzStepperless`\n },\n standalone: true\n }]\n }], () => [{\n type: i1$1.NgControl,\n decorators: [{\n type: Optional\n }, {\n type: Self\n }]\n }, {\n type: i0.Renderer2\n }, {\n type: i0.ElementRef\n }, {\n type: i0.ViewContainerRef\n }, {\n type: i2$1.Directionality,\n decorators: [{\n type: Optional\n }]\n }, {\n type: i3.NzFormStatusService,\n decorators: [{\n type: Optional\n }]\n }, {\n type: i3.NzFormNoStatusService,\n decorators: [{\n type: Optional\n }]\n }], {\n nzBorderless: [{\n type: Input\n }],\n nzSize: [{\n type: Input\n }],\n nzStepperless: [{\n type: Input\n }],\n nzStatus: [{\n type: Input\n }],\n disabled: [{\n type: Input\n }]\n });\n})();\nclass NzInputGroupWhitSuffixOrPrefixDirective {\n constructor(elementRef) {\n this.elementRef = elementRef;\n }\n static {\n this.ɵfac = function NzInputGroupWhitSuffixOrPrefixDirective_Factory(t) {\n return new (t || NzInputGroupWhitSuffixOrPrefixDirective)(i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzInputGroupWhitSuffixOrPrefixDirective,\n selectors: [[\"nz-input-group\", \"nzSuffix\", \"\"], [\"nz-input-group\", \"nzPrefix\", \"\"]],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzInputGroupWhitSuffixOrPrefixDirective, [{\n type: Directive,\n args: [{\n selector: `nz-input-group[nzSuffix], nz-input-group[nzPrefix]`,\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }], null);\n})();\nclass NzInputGroupComponent {\n constructor(focusMonitor, elementRef, renderer, cdr, directionality, nzFormStatusService, nzFormNoStatusService) {\n this.focusMonitor = focusMonitor;\n this.elementRef = elementRef;\n this.renderer = renderer;\n this.cdr = cdr;\n this.directionality = directionality;\n this.nzFormStatusService = nzFormStatusService;\n this.nzFormNoStatusService = nzFormNoStatusService;\n this.nzAddOnBeforeIcon = null;\n this.nzAddOnAfterIcon = null;\n this.nzPrefixIcon = null;\n this.nzSuffixIcon = null;\n this.nzStatus = '';\n this.nzSize = 'default';\n this.nzSearch = false;\n this.nzCompact = false;\n this.isLarge = false;\n this.isSmall = false;\n this.isAffix = false;\n this.isAddOn = false;\n this.isFeedback = false;\n this.focused = false;\n this.disabled = false;\n this.dir = 'ltr';\n // status\n this.prefixCls = 'ant-input';\n this.affixStatusCls = {};\n this.groupStatusCls = {};\n this.affixInGroupStatusCls = {};\n this.status = '';\n this.hasFeedback = false;\n this.destroy$ = new Subject();\n }\n updateChildrenInputSize() {\n if (this.listOfNzInputDirective) {\n this.listOfNzInputDirective.forEach(item => item.nzSize = this.nzSize);\n }\n }\n ngOnInit() {\n this.nzFormStatusService?.formStatusChanges.pipe(distinctUntilChanged((pre, cur) => {\n return pre.status === cur.status && pre.hasFeedback === cur.hasFeedback;\n }), takeUntil(this.destroy$)).subscribe(({\n status,\n hasFeedback\n }) => {\n this.setStatusStyles(status, hasFeedback);\n });\n this.focusMonitor.monitor(this.elementRef, true).pipe(takeUntil(this.destroy$)).subscribe(focusOrigin => {\n this.focused = !!focusOrigin;\n this.cdr.markForCheck();\n });\n this.dir = this.directionality.value;\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe(direction => {\n this.dir = direction;\n });\n }\n ngAfterContentInit() {\n this.updateChildrenInputSize();\n const listOfInputChange$ = this.listOfNzInputDirective.changes.pipe(startWith(this.listOfNzInputDirective));\n listOfInputChange$.pipe(switchMap(list => merge(...[listOfInputChange$, ...list.map(input => input.disabled$)])), mergeMap(() => listOfInputChange$), map(list => list.some(input => input.disabled)), takeUntil(this.destroy$)).subscribe(disabled => {\n this.disabled = disabled;\n this.cdr.markForCheck();\n });\n }\n ngOnChanges(changes) {\n const {\n nzSize,\n nzSuffix,\n nzPrefix,\n nzPrefixIcon,\n nzSuffixIcon,\n nzAddOnAfter,\n nzAddOnBefore,\n nzAddOnAfterIcon,\n nzAddOnBeforeIcon,\n nzStatus\n } = changes;\n if (nzSize) {\n this.updateChildrenInputSize();\n this.isLarge = this.nzSize === 'large';\n this.isSmall = this.nzSize === 'small';\n }\n if (nzSuffix || nzPrefix || nzPrefixIcon || nzSuffixIcon) {\n this.isAffix = !!(this.nzSuffix || this.nzPrefix || this.nzPrefixIcon || this.nzSuffixIcon);\n }\n if (nzAddOnAfter || nzAddOnBefore || nzAddOnAfterIcon || nzAddOnBeforeIcon) {\n this.isAddOn = !!(this.nzAddOnAfter || this.nzAddOnBefore || this.nzAddOnAfterIcon || this.nzAddOnBeforeIcon);\n this.nzFormNoStatusService?.noFormStatus?.next(this.isAddOn);\n }\n if (nzStatus) {\n this.setStatusStyles(this.nzStatus, this.hasFeedback);\n }\n }\n ngOnDestroy() {\n this.focusMonitor.stopMonitoring(this.elementRef);\n this.destroy$.next();\n this.destroy$.complete();\n }\n setStatusStyles(status, hasFeedback) {\n // set inner status\n this.status = status;\n this.hasFeedback = hasFeedback;\n this.isFeedback = !!status && hasFeedback;\n const baseAffix = !!(this.nzSuffix || this.nzPrefix || this.nzPrefixIcon || this.nzSuffixIcon);\n this.isAffix = baseAffix || !this.isAddOn && hasFeedback;\n this.affixInGroupStatusCls = this.isAffix || this.isFeedback ? this.affixStatusCls = getStatusClassNames(`${this.prefixCls}-affix-wrapper`, status, hasFeedback) : {};\n this.cdr.markForCheck();\n // render status if nzStatus is set\n this.affixStatusCls = getStatusClassNames(`${this.prefixCls}-affix-wrapper`, this.isAddOn ? '' : status, this.isAddOn ? false : hasFeedback);\n this.groupStatusCls = getStatusClassNames(`${this.prefixCls}-group-wrapper`, this.isAddOn ? status : '', this.isAddOn ? hasFeedback : false);\n const statusCls = {\n ...this.affixStatusCls,\n ...this.groupStatusCls\n };\n Object.keys(statusCls).forEach(status => {\n if (statusCls[status]) {\n this.renderer.addClass(this.elementRef.nativeElement, status);\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, status);\n }\n });\n }\n static {\n this.ɵfac = function NzInputGroupComponent_Factory(t) {\n return new (t || NzInputGroupComponent)(i0.ɵɵdirectiveInject(i1$2.FocusMonitor), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i2$1.Directionality, 8), i0.ɵɵdirectiveInject(i3.NzFormStatusService, 8), i0.ɵɵdirectiveInject(i3.NzFormNoStatusService, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzInputGroupComponent,\n selectors: [[\"nz-input-group\"]],\n contentQueries: function NzInputGroupComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NzInputDirective, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.listOfNzInputDirective = _t);\n }\n },\n hostVars: 40,\n hostBindings: function NzInputGroupComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"ant-input-group-compact\", ctx.nzCompact)(\"ant-input-search-enter-button\", ctx.nzSearch)(\"ant-input-search\", ctx.nzSearch)(\"ant-input-search-rtl\", ctx.dir === \"rtl\")(\"ant-input-search-sm\", ctx.nzSearch && ctx.isSmall)(\"ant-input-search-large\", ctx.nzSearch && ctx.isLarge)(\"ant-input-group-wrapper\", ctx.isAddOn)(\"ant-input-group-wrapper-rtl\", ctx.dir === \"rtl\")(\"ant-input-group-wrapper-lg\", ctx.isAddOn && ctx.isLarge)(\"ant-input-group-wrapper-sm\", ctx.isAddOn && ctx.isSmall)(\"ant-input-affix-wrapper\", ctx.isAffix && !ctx.isAddOn)(\"ant-input-affix-wrapper-rtl\", ctx.dir === \"rtl\")(\"ant-input-affix-wrapper-focused\", ctx.isAffix && ctx.focused)(\"ant-input-affix-wrapper-disabled\", ctx.isAffix && ctx.disabled)(\"ant-input-affix-wrapper-lg\", ctx.isAffix && !ctx.isAddOn && ctx.isLarge)(\"ant-input-affix-wrapper-sm\", ctx.isAffix && !ctx.isAddOn && ctx.isSmall)(\"ant-input-group\", !ctx.isAffix && !ctx.isAddOn)(\"ant-input-group-rtl\", ctx.dir === \"rtl\")(\"ant-input-group-lg\", !ctx.isAffix && !ctx.isAddOn && ctx.isLarge)(\"ant-input-group-sm\", !ctx.isAffix && !ctx.isAddOn && ctx.isSmall);\n }\n },\n inputs: {\n nzAddOnBeforeIcon: \"nzAddOnBeforeIcon\",\n nzAddOnAfterIcon: \"nzAddOnAfterIcon\",\n nzPrefixIcon: \"nzPrefixIcon\",\n nzSuffixIcon: \"nzSuffixIcon\",\n nzAddOnBefore: \"nzAddOnBefore\",\n nzAddOnAfter: \"nzAddOnAfter\",\n nzPrefix: \"nzPrefix\",\n nzStatus: \"nzStatus\",\n nzSuffix: \"nzSuffix\",\n nzSize: \"nzSize\",\n nzSearch: \"nzSearch\",\n nzCompact: \"nzCompact\"\n },\n exportAs: [\"nzInputGroup\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([NzFormNoStatusService]), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c1,\n decls: 7,\n vars: 2,\n consts: [[\"class\", \"ant-input-wrapper ant-input-group\", 4, \"ngIf\", \"ngIfElse\"], [\"noAddOnTemplate\", \"\"], [\"affixTemplate\", \"\"], [\"contentTemplate\", \"\"], [1, \"ant-input-wrapper\", \"ant-input-group\"], [\"nz-input-group-slot\", \"\", \"type\", \"addon\", 3, \"icon\", \"template\", 4, \"ngIf\"], [\"class\", \"ant-input-affix-wrapper\", 3, \"ant-input-affix-wrapper-disabled\", \"ant-input-affix-wrapper-sm\", \"ant-input-affix-wrapper-lg\", \"ant-input-affix-wrapper-focused\", \"ngClass\", 4, \"ngIf\", \"ngIfElse\"], [\"nz-input-group-slot\", \"\", \"type\", \"addon\", 3, \"icon\", \"template\"], [1, \"ant-input-affix-wrapper\", 3, \"ngClass\"], [3, \"ngTemplateOutlet\"], [3, \"ngIf\", \"ngIfElse\"], [\"nz-input-group-slot\", \"\", \"type\", \"prefix\", 3, \"icon\", \"template\", 4, \"ngIf\"], [\"nz-input-group-slot\", \"\", \"type\", \"suffix\", 3, \"icon\", \"template\", 4, \"ngIf\"], [\"nz-input-group-slot\", \"\", \"type\", \"prefix\", 3, \"icon\", \"template\"], [\"nz-input-group-slot\", \"\", \"type\", \"suffix\", 3, \"icon\", \"template\"], [3, \"status\", 4, \"ngIf\"], [3, \"status\"], [\"nz-input-group-slot\", \"\", \"type\", \"suffix\", 4, \"ngIf\"], [\"nz-input-group-slot\", \"\", \"type\", \"suffix\"]],\n template: function NzInputGroupComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, NzInputGroupComponent_span_0_Template, 4, 4, \"span\", 0)(1, NzInputGroupComponent_ng_template_1_Template, 1, 2, \"ng-template\", null, 1, i0.ɵɵtemplateRefExtractor)(3, NzInputGroupComponent_ng_template_3_Template, 3, 3, \"ng-template\", null, 2, i0.ɵɵtemplateRefExtractor)(5, NzInputGroupComponent_ng_template_5_Template, 2, 1, \"ng-template\", null, 3, i0.ɵɵtemplateRefExtractor);\n }\n if (rf & 2) {\n const _r2 = i0.ɵɵreference(2);\n i0.ɵɵproperty(\"ngIf\", ctx.isAddOn)(\"ngIfElse\", _r2);\n }\n },\n dependencies: [NgIf, NzInputGroupSlotComponent, NgClass, NgTemplateOutlet, NzFormPatchModule, i3.NzFormItemFeedbackIconComponent],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n__decorate([InputBoolean()], NzInputGroupComponent.prototype, \"nzSearch\", void 0);\n__decorate([InputBoolean()], NzInputGroupComponent.prototype, \"nzCompact\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzInputGroupComponent, [{\n type: Component,\n args: [{\n selector: 'nz-input-group',\n exportAs: 'nzInputGroup',\n preserveWhitespaces: false,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [NzFormNoStatusService],\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `,\n host: {\n '[class.ant-input-group-compact]': `nzCompact`,\n '[class.ant-input-search-enter-button]': `nzSearch`,\n '[class.ant-input-search]': `nzSearch`,\n '[class.ant-input-search-rtl]': `dir === 'rtl'`,\n '[class.ant-input-search-sm]': `nzSearch && isSmall`,\n '[class.ant-input-search-large]': `nzSearch && isLarge`,\n '[class.ant-input-group-wrapper]': `isAddOn`,\n '[class.ant-input-group-wrapper-rtl]': `dir === 'rtl'`,\n '[class.ant-input-group-wrapper-lg]': `isAddOn && isLarge`,\n '[class.ant-input-group-wrapper-sm]': `isAddOn && isSmall`,\n '[class.ant-input-affix-wrapper]': `isAffix && !isAddOn`,\n '[class.ant-input-affix-wrapper-rtl]': `dir === 'rtl'`,\n '[class.ant-input-affix-wrapper-focused]': `isAffix && focused`,\n '[class.ant-input-affix-wrapper-disabled]': `isAffix && disabled`,\n '[class.ant-input-affix-wrapper-lg]': `isAffix && !isAddOn && isLarge`,\n '[class.ant-input-affix-wrapper-sm]': `isAffix && !isAddOn && isSmall`,\n '[class.ant-input-group]': `!isAffix && !isAddOn`,\n '[class.ant-input-group-rtl]': `dir === 'rtl'`,\n '[class.ant-input-group-lg]': `!isAffix && !isAddOn && isLarge`,\n '[class.ant-input-group-sm]': `!isAffix && !isAddOn && isSmall`\n },\n imports: [NgIf, NzInputGroupSlotComponent, NgClass, NgTemplateOutlet, NzFormPatchModule],\n standalone: true\n }]\n }], () => [{\n type: i1$2.FocusMonitor\n }, {\n type: i0.ElementRef\n }, {\n type: i0.Renderer2\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: i2$1.Directionality,\n decorators: [{\n type: Optional\n }]\n }, {\n type: i3.NzFormStatusService,\n decorators: [{\n type: Optional\n }]\n }, {\n type: i3.NzFormNoStatusService,\n decorators: [{\n type: Optional\n }]\n }], {\n listOfNzInputDirective: [{\n type: ContentChildren,\n args: [NzInputDirective]\n }],\n nzAddOnBeforeIcon: [{\n type: Input\n }],\n nzAddOnAfterIcon: [{\n type: Input\n }],\n nzPrefixIcon: [{\n type: Input\n }],\n nzSuffixIcon: [{\n type: Input\n }],\n nzAddOnBefore: [{\n type: Input\n }],\n nzAddOnAfter: [{\n type: Input\n }],\n nzPrefix: [{\n type: Input\n }],\n nzStatus: [{\n type: Input\n }],\n nzSuffix: [{\n type: Input\n }],\n nzSize: [{\n type: Input\n }],\n nzSearch: [{\n type: Input\n }],\n nzCompact: [{\n type: Input\n }]\n });\n})();\nclass NzAutosizeDirective {\n set nzAutosize(value) {\n const isAutoSizeType = data => typeof data !== 'string' && typeof data !== 'boolean' && (!!data.maxRows || !!data.minRows);\n if (typeof value === 'string' || value === true) {\n this.autosize = true;\n } else if (isAutoSizeType(value)) {\n this.autosize = true;\n this.minRows = value.minRows;\n this.maxRows = value.maxRows;\n this.maxHeight = this.setMaxHeight();\n this.minHeight = this.setMinHeight();\n }\n }\n resizeToFitContent(force = false) {\n this.cacheTextareaLineHeight();\n // If we haven't determined the line-height yet, we know we're still hidden and there's no point\n // in checking the height of the textarea.\n if (!this.cachedLineHeight) {\n return;\n }\n const textarea = this.el;\n const value = textarea.value;\n // Only resize if the value or minRows have changed since these calculations can be expensive.\n if (!force && this.minRows === this.previousMinRows && value === this.previousValue) {\n return;\n }\n const placeholderText = textarea.placeholder;\n // Reset the textarea height to auto in order to shrink back to its default size.\n // Also temporarily force overflow:hidden, so scroll bars do not interfere with calculations.\n // Long placeholders that are wider than the textarea width may lead to a bigger scrollHeight\n // value. To ensure that the scrollHeight is not bigger than the content, the placeholders\n // need to be removed temporarily.\n textarea.classList.add('nz-textarea-autosize-measuring');\n textarea.placeholder = '';\n let height = Math.round((textarea.scrollHeight - this.inputGap) / this.cachedLineHeight) * this.cachedLineHeight + this.inputGap;\n if (this.maxHeight !== null && height > this.maxHeight) {\n height = this.maxHeight;\n }\n if (this.minHeight !== null && height < this.minHeight) {\n height = this.minHeight;\n }\n // Use the scrollHeight to know how large the textarea *would* be if fit its entire value.\n textarea.style.height = `${height}px`;\n textarea.classList.remove('nz-textarea-autosize-measuring');\n textarea.placeholder = placeholderText;\n // On Firefox resizing the textarea will prevent it from scrolling to the caret position.\n // We need to re-set the selection in order for it to scroll to the proper position.\n if (typeof requestAnimationFrame !== 'undefined') {\n this.ngZone.runOutsideAngular(() => requestAnimationFrame(() => {\n const {\n selectionStart,\n selectionEnd\n } = textarea;\n // IE will throw an \"Unspecified error\" if we try to set the selection range after the\n // element has been removed from the DOM. Assert that the directive hasn't been destroyed\n // between the time we requested the animation frame and when it was executed.\n // Also note that we have to assert that the textarea is focused before we set the\n // selection range. Setting the selection range on a non-focused textarea will cause\n // it to receive focus on IE and Edge.\n if (!this.destroy$.isStopped && document.activeElement === textarea) {\n textarea.setSelectionRange(selectionStart, selectionEnd);\n }\n }));\n }\n this.previousValue = value;\n this.previousMinRows = this.minRows;\n }\n cacheTextareaLineHeight() {\n if (this.cachedLineHeight >= 0 || !this.el.parentNode) {\n return;\n }\n // Use a clone element because we have to override some styles.\n const textareaClone = this.el.cloneNode(false);\n textareaClone.rows = 1;\n // Use `position: absolute` so that this doesn't cause a browser layout and use\n // `visibility: hidden` so that nothing is rendered. Clear any other styles that\n // would affect the height.\n textareaClone.style.position = 'absolute';\n textareaClone.style.visibility = 'hidden';\n textareaClone.style.border = 'none';\n textareaClone.style.padding = '0';\n textareaClone.style.height = '';\n textareaClone.style.minHeight = '';\n textareaClone.style.maxHeight = '';\n // In Firefox it happens that textarea elements are always bigger than the specified amount\n // of rows. This is because Firefox tries to add extra space for the horizontal scrollbar.\n // As a workaround that removes the extra space for the scrollbar, we can just set overflow\n // to hidden. This ensures that there is no invalid calculation of the line height.\n // See Firefox bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=33654\n textareaClone.style.overflow = 'hidden';\n this.el.parentNode.appendChild(textareaClone);\n this.cachedLineHeight = textareaClone.clientHeight - this.inputGap;\n this.el.parentNode.removeChild(textareaClone);\n // Min and max heights have to be re-calculated if the cached line height changes\n this.maxHeight = this.setMaxHeight();\n this.minHeight = this.setMinHeight();\n }\n setMinHeight() {\n const minHeight = this.minRows && this.cachedLineHeight ? this.minRows * this.cachedLineHeight + this.inputGap : null;\n if (minHeight !== null) {\n this.el.style.minHeight = `${minHeight}px`;\n }\n return minHeight;\n }\n setMaxHeight() {\n const maxHeight = this.maxRows && this.cachedLineHeight ? this.maxRows * this.cachedLineHeight + this.inputGap : null;\n if (maxHeight !== null) {\n this.el.style.maxHeight = `${maxHeight}px`;\n }\n return maxHeight;\n }\n noopInputHandler() {\n // no-op handler that ensures we're running change detection on input events.\n }\n constructor(elementRef, ngZone, platform, resizeService) {\n this.elementRef = elementRef;\n this.ngZone = ngZone;\n this.platform = platform;\n this.resizeService = resizeService;\n this.autosize = false;\n this.el = this.elementRef.nativeElement;\n this.maxHeight = null;\n this.minHeight = null;\n this.destroy$ = new Subject();\n this.inputGap = 10;\n }\n ngAfterViewInit() {\n if (this.autosize && this.platform.isBrowser) {\n this.resizeToFitContent();\n this.resizeService.subscribe().pipe(takeUntil(this.destroy$)).subscribe(() => this.resizeToFitContent(true));\n }\n }\n ngOnDestroy() {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n ngDoCheck() {\n if (this.autosize && this.platform.isBrowser) {\n this.resizeToFitContent();\n }\n }\n static {\n this.ɵfac = function NzAutosizeDirective_Factory(t) {\n return new (t || NzAutosizeDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i1$3.Platform), i0.ɵɵdirectiveInject(i2$2.NzResizeService));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzAutosizeDirective,\n selectors: [[\"textarea\", \"nzAutosize\", \"\"]],\n hostAttrs: [\"rows\", \"1\"],\n hostBindings: function NzAutosizeDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"input\", function NzAutosizeDirective_input_HostBindingHandler() {\n return ctx.noopInputHandler();\n });\n }\n },\n inputs: {\n nzAutosize: \"nzAutosize\"\n },\n exportAs: [\"nzAutosize\"],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzAutosizeDirective, [{\n type: Directive,\n args: [{\n selector: 'textarea[nzAutosize]',\n exportAs: 'nzAutosize',\n host: {\n // Textarea elements that have the directive applied should have a single row by default.\n // Browsers normally show two rows by default and therefore this limits the minRows binding.\n rows: '1',\n '(input)': 'noopInputHandler()'\n },\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: i0.NgZone\n }, {\n type: i1$3.Platform\n }, {\n type: i2$2.NzResizeService\n }], {\n nzAutosize: [{\n type: Input\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzTextareaCountComponent {\n constructor(renderer, elementRef) {\n this.renderer = renderer;\n this.elementRef = elementRef;\n this.nzMaxCharacterCount = 0;\n this.nzComputeCharacterCount = v => v.length;\n this.nzFormatter = (c, m) => `${c}${m > 0 ? `/${m}` : ``}`;\n this.configChange$ = new Subject();\n this.destroy$ = new Subject();\n }\n ngAfterContentInit() {\n if (!this.nzInputDirective && isDevMode()) {\n throw new Error('[nz-textarea-count]: Could not find matching textarea[nz-input] child.');\n }\n if (this.nzInputDirective.ngControl) {\n const valueChanges = this.nzInputDirective.ngControl.valueChanges || EMPTY;\n merge(valueChanges, this.configChange$).pipe(takeUntil(this.destroy$), map(() => this.nzInputDirective.ngControl.value), startWith(this.nzInputDirective.ngControl.value)).subscribe(value => {\n this.setDataCount(value);\n });\n }\n }\n setDataCount(value) {\n const inputValue = isNotNil(value) ? String(value) : '';\n const currentCount = this.nzComputeCharacterCount(inputValue);\n const dataCount = this.nzFormatter(currentCount, this.nzMaxCharacterCount);\n this.renderer.setAttribute(this.elementRef.nativeElement, 'data-count', dataCount);\n }\n ngOnDestroy() {\n this.configChange$.complete();\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n static {\n this.ɵfac = function NzTextareaCountComponent_Factory(t) {\n return new (t || NzTextareaCountComponent)(i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzTextareaCountComponent,\n selectors: [[\"nz-textarea-count\"]],\n contentQueries: function NzTextareaCountComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NzInputDirective, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.nzInputDirective = _t.first);\n }\n },\n hostAttrs: [1, \"ant-input-textarea-show-count\"],\n inputs: {\n nzMaxCharacterCount: \"nzMaxCharacterCount\",\n nzComputeCharacterCount: \"nzComputeCharacterCount\",\n nzFormatter: \"nzFormatter\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c3,\n decls: 1,\n vars: 0,\n template: function NzTextareaCountComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c2);\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzTextareaCountComponent, [{\n type: Component,\n args: [{\n selector: 'nz-textarea-count',\n template: ` `,\n host: {\n class: 'ant-input-textarea-show-count'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n }]\n }], () => [{\n type: i0.Renderer2\n }, {\n type: i0.ElementRef\n }], {\n nzInputDirective: [{\n type: ContentChild,\n args: [NzInputDirective, {\n static: true\n }]\n }],\n nzMaxCharacterCount: [{\n type: Input\n }],\n nzComputeCharacterCount: [{\n type: Input\n }],\n nzFormatter: [{\n type: Input\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzInputModule {\n static {\n this.ɵfac = function NzInputModule_Factory(t) {\n return new (t || NzInputModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NzInputModule,\n imports: [NzTextareaCountComponent, NzInputDirective, NzInputGroupComponent, NzAutosizeDirective, NzInputGroupSlotComponent, NzInputGroupWhitSuffixOrPrefixDirective],\n exports: [NzTextareaCountComponent, NzInputDirective, NzInputGroupComponent, NzAutosizeDirective, NzInputGroupWhitSuffixOrPrefixDirective]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [NzInputGroupComponent, NzInputGroupSlotComponent]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzInputModule, [{\n type: NgModule,\n args: [{\n imports: [NzTextareaCountComponent, NzInputDirective, NzInputGroupComponent, NzAutosizeDirective, NzInputGroupSlotComponent, NzInputGroupWhitSuffixOrPrefixDirective],\n exports: [NzTextareaCountComponent, NzInputDirective, NzInputGroupComponent, NzAutosizeDirective, NzInputGroupWhitSuffixOrPrefixDirective]\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NzAutosizeDirective, NzInputDirective, NzInputGroupComponent, NzInputGroupSlotComponent, NzInputGroupWhitSuffixOrPrefixDirective, NzInputModule, NzTextareaCountComponent };\n"], - "mappings": "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", + "mappings": "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", "names": ["status"] } diff --git a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_layout.js b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_layout.js new file mode 100644 index 0000000..e530e70 --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_layout.js @@ -0,0 +1,785 @@ +import { + NzMenuDirective +} from "./chunk-WKTPWT5U.js"; +import "./chunk-CZEXXPIB.js"; +import "./chunk-6RXUTAFR.js"; +import "./chunk-XAGDQPFO.js"; +import { + NzBreakpointService, + siderResponsiveMap +} from "./chunk-D5ODNR6D.js"; +import "./chunk-55A2ZGND.js"; +import "./chunk-6U656R5M.js"; +import "./chunk-VOD2PKZN.js"; +import "./chunk-JGP5BR6B.js"; +import "./chunk-WB57DPWD.js"; +import { + NzIconDirective, + NzIconModule +} from "./chunk-VWMHIMW7.js"; +import "./chunk-ZHMJ6SNN.js"; +import { + Directionality +} from "./chunk-6NZ2BEBG.js"; +import { + Platform +} from "./chunk-IAC53GOD.js"; +import { + InputBoolean, + inNextTick, + toCssPixel +} from "./chunk-M5GY4FCO.js"; +import "./chunk-ECVKT3ZH.js"; +import "./chunk-KI2JSLP6.js"; +import "./chunk-Y4CEYMY2.js"; +import "./chunk-X7WBA24Z.js"; +import { + NgIf, + NgTemplateOutlet +} from "./chunk-OSQBUYO6.js"; +import { + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + ContentChild, + ContentChildren, + ElementRef, + EventEmitter, + Input, + NgModule, + Optional, + Output, + Renderer2, + Subject, + ViewEncapsulation$1, + __decorate, + setClassMetadata, + takeUntil, + ɵɵNgOnChangesFeature, + ɵɵStandaloneFeature, + ɵɵadvance, + ɵɵclassProp, + ɵɵcontentQuery, + ɵɵdefineComponent, + ɵɵdefineInjector, + ɵɵdefineNgModule, + ɵɵdirectiveInject, + ɵɵelement, + ɵɵelementContainerEnd, + ɵɵelementContainerStart, + ɵɵelementEnd, + ɵɵelementStart, + ɵɵgetCurrentView, + ɵɵlistener, + ɵɵloadQuery, + ɵɵnextContext, + ɵɵprojection, + ɵɵprojectionDef, + ɵɵproperty, + ɵɵqueryRefresh, + ɵɵreference, + ɵɵresetView, + ɵɵrestoreView, + ɵɵstyleProp, + ɵɵtemplate, + ɵɵtemplateRefExtractor +} from "./chunk-FGESKT7O.js"; +import "./chunk-HSNDBVJ3.js"; + +// node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-layout.mjs +var _c0 = ["*"]; +var _c1 = ["nz-sider-trigger", ""]; +function NzSiderTriggerComponent_ng_container_0_ng_template_1_Template(rf, ctx) { +} +function NzSiderTriggerComponent_ng_container_0_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementContainerStart(0); + ɵɵtemplate(1, NzSiderTriggerComponent_ng_container_0_ng_template_1_Template, 0, 0, "ng-template", 3); + ɵɵelementContainerEnd(); + } + if (rf & 2) { + const ctx_r0 = ɵɵnextContext(); + const _r5 = ɵɵreference(5); + ɵɵadvance(1); + ɵɵproperty("ngTemplateOutlet", ctx_r0.nzZeroTrigger || _r5); + } +} +function NzSiderTriggerComponent_ng_container_1_ng_template_1_Template(rf, ctx) { +} +function NzSiderTriggerComponent_ng_container_1_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementContainerStart(0); + ɵɵtemplate(1, NzSiderTriggerComponent_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 3); + ɵɵelementContainerEnd(); + } + if (rf & 2) { + const ctx_r1 = ɵɵnextContext(); + const _r3 = ɵɵreference(3); + ɵɵadvance(1); + ɵɵproperty("ngTemplateOutlet", ctx_r1.nzTrigger || _r3); + } +} +function NzSiderTriggerComponent_ng_template_2_span_0_Template(rf, ctx) { + if (rf & 1) { + ɵɵelement(0, "span", 5); + } + if (rf & 2) { + const ctx_r8 = ɵɵnextContext(2); + ɵɵproperty("nzType", ctx_r8.nzCollapsed ? "right" : "left"); + } +} +function NzSiderTriggerComponent_ng_template_2_span_1_Template(rf, ctx) { + if (rf & 1) { + ɵɵelement(0, "span", 5); + } + if (rf & 2) { + const ctx_r9 = ɵɵnextContext(2); + ɵɵproperty("nzType", ctx_r9.nzCollapsed ? "left" : "right"); + } +} +function NzSiderTriggerComponent_ng_template_2_Template(rf, ctx) { + if (rf & 1) { + ɵɵtemplate(0, NzSiderTriggerComponent_ng_template_2_span_0_Template, 1, 1, "span", 4)(1, NzSiderTriggerComponent_ng_template_2_span_1_Template, 1, 1, "span", 4); + } + if (rf & 2) { + const ctx_r2 = ɵɵnextContext(); + ɵɵproperty("ngIf", !ctx_r2.nzReverseArrow); + ɵɵadvance(1); + ɵɵproperty("ngIf", ctx_r2.nzReverseArrow); + } +} +function NzSiderTriggerComponent_ng_template_4_Template(rf, ctx) { + if (rf & 1) { + ɵɵelement(0, "span", 6); + } +} +function NzSiderComponent_div_2_Template(rf, ctx) { + if (rf & 1) { + const _r2 = ɵɵgetCurrentView(); + ɵɵelementStart(0, "div", 2); + ɵɵlistener("click", function NzSiderComponent_div_2_Template_div_click_0_listener() { + ɵɵrestoreView(_r2); + const ctx_r1 = ɵɵnextContext(); + return ɵɵresetView(ctx_r1.setCollapsed(!ctx_r1.nzCollapsed)); + }); + ɵɵelementEnd(); + } + if (rf & 2) { + const ctx_r0 = ɵɵnextContext(); + ɵɵproperty("matchBreakPoint", ctx_r0.matchBreakPoint)("nzCollapsedWidth", ctx_r0.nzCollapsedWidth)("nzCollapsed", ctx_r0.nzCollapsed)("nzBreakpoint", ctx_r0.nzBreakpoint)("nzReverseArrow", ctx_r0.nzReverseArrow)("nzTrigger", ctx_r0.nzTrigger)("nzZeroTrigger", ctx_r0.nzZeroTrigger)("siderWidth", ctx_r0.widthSetting); + } +} +var _NzContentComponent = class _NzContentComponent { + constructor(elementRef, renderer) { + this.elementRef = elementRef; + this.renderer = renderer; + this.renderer.addClass(this.elementRef.nativeElement, "ant-layout-content"); + } +}; +_NzContentComponent.ɵfac = function NzContentComponent_Factory(t) { + return new (t || _NzContentComponent)(ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(Renderer2)); +}; +_NzContentComponent.ɵcmp = ɵɵdefineComponent({ + type: _NzContentComponent, + selectors: [["nz-content"]], + exportAs: ["nzContent"], + standalone: true, + features: [ɵɵStandaloneFeature], + ngContentSelectors: _c0, + decls: 1, + vars: 0, + template: function NzContentComponent_Template(rf, ctx) { + if (rf & 1) { + ɵɵprojectionDef(); + ɵɵprojection(0); + } + }, + encapsulation: 2, + changeDetection: 0 +}); +var NzContentComponent = _NzContentComponent; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzContentComponent, [{ + type: Component, + args: [{ + selector: "nz-content", + exportAs: "nzContent", + preserveWhitespaces: false, + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation$1.None, + template: ` `, + standalone: true + }] + }], () => [{ + type: ElementRef + }, { + type: Renderer2 + }], null); +})(); +var _NzFooterComponent = class _NzFooterComponent { + constructor(elementRef, renderer) { + this.elementRef = elementRef; + this.renderer = renderer; + this.renderer.addClass(this.elementRef.nativeElement, "ant-layout-footer"); + } +}; +_NzFooterComponent.ɵfac = function NzFooterComponent_Factory(t) { + return new (t || _NzFooterComponent)(ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(Renderer2)); +}; +_NzFooterComponent.ɵcmp = ɵɵdefineComponent({ + type: _NzFooterComponent, + selectors: [["nz-footer"]], + exportAs: ["nzFooter"], + standalone: true, + features: [ɵɵStandaloneFeature], + ngContentSelectors: _c0, + decls: 1, + vars: 0, + template: function NzFooterComponent_Template(rf, ctx) { + if (rf & 1) { + ɵɵprojectionDef(); + ɵɵprojection(0); + } + }, + encapsulation: 2, + changeDetection: 0 +}); +var NzFooterComponent = _NzFooterComponent; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzFooterComponent, [{ + type: Component, + args: [{ + selector: "nz-footer", + exportAs: "nzFooter", + preserveWhitespaces: false, + encapsulation: ViewEncapsulation$1.None, + changeDetection: ChangeDetectionStrategy.OnPush, + template: ` `, + standalone: true + }] + }], () => [{ + type: ElementRef + }, { + type: Renderer2 + }], null); +})(); +var _NzHeaderComponent = class _NzHeaderComponent { + constructor(elementRef, renderer) { + this.elementRef = elementRef; + this.renderer = renderer; + this.renderer.addClass(this.elementRef.nativeElement, "ant-layout-header"); + } +}; +_NzHeaderComponent.ɵfac = function NzHeaderComponent_Factory(t) { + return new (t || _NzHeaderComponent)(ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(Renderer2)); +}; +_NzHeaderComponent.ɵcmp = ɵɵdefineComponent({ + type: _NzHeaderComponent, + selectors: [["nz-header"]], + exportAs: ["nzHeader"], + standalone: true, + features: [ɵɵStandaloneFeature], + ngContentSelectors: _c0, + decls: 1, + vars: 0, + template: function NzHeaderComponent_Template(rf, ctx) { + if (rf & 1) { + ɵɵprojectionDef(); + ɵɵprojection(0); + } + }, + encapsulation: 2, + changeDetection: 0 +}); +var NzHeaderComponent = _NzHeaderComponent; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzHeaderComponent, [{ + type: Component, + args: [{ + selector: "nz-header", + exportAs: "nzHeader", + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation$1.None, + preserveWhitespaces: false, + template: ` `, + standalone: true + }] + }], () => [{ + type: ElementRef + }, { + type: Renderer2 + }], null); +})(); +var _NzSiderTriggerComponent = class _NzSiderTriggerComponent { + constructor() { + this.nzCollapsed = false; + this.nzReverseArrow = false; + this.nzZeroTrigger = null; + this.nzTrigger = void 0; + this.matchBreakPoint = false; + this.nzCollapsedWidth = null; + this.siderWidth = null; + this.nzBreakpoint = null; + this.isZeroTrigger = false; + this.isNormalTrigger = false; + } + updateTriggerType() { + this.isZeroTrigger = this.nzCollapsedWidth === 0 && (this.nzBreakpoint && this.matchBreakPoint || !this.nzBreakpoint); + this.isNormalTrigger = this.nzCollapsedWidth !== 0; + } + ngOnInit() { + this.updateTriggerType(); + } + ngOnChanges() { + this.updateTriggerType(); + } +}; +_NzSiderTriggerComponent.ɵfac = function NzSiderTriggerComponent_Factory(t) { + return new (t || _NzSiderTriggerComponent)(); +}; +_NzSiderTriggerComponent.ɵcmp = ɵɵdefineComponent({ + type: _NzSiderTriggerComponent, + selectors: [["", "nz-sider-trigger", ""]], + hostVars: 10, + hostBindings: function NzSiderTriggerComponent_HostBindings(rf, ctx) { + if (rf & 2) { + ɵɵstyleProp("width", ctx.isNormalTrigger ? ctx.siderWidth : null); + ɵɵclassProp("ant-layout-sider-trigger", ctx.isNormalTrigger)("ant-layout-sider-zero-width-trigger", ctx.isZeroTrigger)("ant-layout-sider-zero-width-trigger-right", ctx.isZeroTrigger && ctx.nzReverseArrow)("ant-layout-sider-zero-width-trigger-left", ctx.isZeroTrigger && !ctx.nzReverseArrow); + } + }, + inputs: { + nzCollapsed: "nzCollapsed", + nzReverseArrow: "nzReverseArrow", + nzZeroTrigger: "nzZeroTrigger", + nzTrigger: "nzTrigger", + matchBreakPoint: "matchBreakPoint", + nzCollapsedWidth: "nzCollapsedWidth", + siderWidth: "siderWidth", + nzBreakpoint: "nzBreakpoint" + }, + exportAs: ["nzSiderTrigger"], + standalone: true, + features: [ɵɵNgOnChangesFeature, ɵɵStandaloneFeature], + attrs: _c1, + decls: 6, + vars: 2, + consts: [[4, "ngIf"], ["defaultTrigger", ""], ["defaultZeroTrigger", ""], [3, "ngTemplateOutlet"], ["nz-icon", "", 3, "nzType", 4, "ngIf"], ["nz-icon", "", 3, "nzType"], ["nz-icon", "", "nzType", "bars"]], + template: function NzSiderTriggerComponent_Template(rf, ctx) { + if (rf & 1) { + ɵɵtemplate(0, NzSiderTriggerComponent_ng_container_0_Template, 2, 1, "ng-container", 0)(1, NzSiderTriggerComponent_ng_container_1_Template, 2, 1, "ng-container", 0)(2, NzSiderTriggerComponent_ng_template_2_Template, 2, 2, "ng-template", null, 1, ɵɵtemplateRefExtractor)(4, NzSiderTriggerComponent_ng_template_4_Template, 1, 0, "ng-template", null, 2, ɵɵtemplateRefExtractor); + } + if (rf & 2) { + ɵɵproperty("ngIf", ctx.isZeroTrigger); + ɵɵadvance(1); + ɵɵproperty("ngIf", ctx.isNormalTrigger); + } + }, + dependencies: [NgIf, NgTemplateOutlet, NzIconModule, NzIconDirective], + encapsulation: 2, + changeDetection: 0 +}); +var NzSiderTriggerComponent = _NzSiderTriggerComponent; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzSiderTriggerComponent, [{ + type: Component, + args: [{ + selector: "[nz-sider-trigger]", + exportAs: "nzSiderTrigger", + preserveWhitespaces: false, + encapsulation: ViewEncapsulation$1.None, + changeDetection: ChangeDetectionStrategy.OnPush, + template: ` + + + + + + + + + + + + + + `, + host: { + "[class.ant-layout-sider-trigger]": "isNormalTrigger", + "[style.width]": "isNormalTrigger ? siderWidth : null", + "[class.ant-layout-sider-zero-width-trigger]": "isZeroTrigger", + "[class.ant-layout-sider-zero-width-trigger-right]": "isZeroTrigger && nzReverseArrow", + "[class.ant-layout-sider-zero-width-trigger-left]": "isZeroTrigger && !nzReverseArrow" + }, + imports: [NgIf, NgTemplateOutlet, NzIconModule], + standalone: true + }] + }], null, { + nzCollapsed: [{ + type: Input + }], + nzReverseArrow: [{ + type: Input + }], + nzZeroTrigger: [{ + type: Input + }], + nzTrigger: [{ + type: Input + }], + matchBreakPoint: [{ + type: Input + }], + nzCollapsedWidth: [{ + type: Input + }], + siderWidth: [{ + type: Input + }], + nzBreakpoint: [{ + type: Input + }] + }); +})(); +var _NzSiderComponent = class _NzSiderComponent { + updateStyleMap() { + this.widthSetting = this.nzCollapsed ? `${this.nzCollapsedWidth}px` : toCssPixel(this.nzWidth); + this.flexSetting = `0 0 ${this.widthSetting}`; + this.cdr.markForCheck(); + } + updateMenuInlineCollapsed() { + if (this.nzMenuDirective && this.nzMenuDirective.nzMode === "inline" && this.nzCollapsedWidth !== 0) { + this.nzMenuDirective.setInlineCollapsed(this.nzCollapsed); + } + } + setCollapsed(collapsed) { + if (collapsed !== this.nzCollapsed) { + this.nzCollapsed = collapsed; + this.nzCollapsedChange.emit(collapsed); + this.updateMenuInlineCollapsed(); + this.updateStyleMap(); + this.cdr.markForCheck(); + } + } + constructor(platform, cdr, breakpointService) { + this.platform = platform; + this.cdr = cdr; + this.breakpointService = breakpointService; + this.destroy$ = new Subject(); + this.nzMenuDirective = null; + this.nzCollapsedChange = new EventEmitter(); + this.nzWidth = 200; + this.nzTheme = "dark"; + this.nzCollapsedWidth = 80; + this.nzBreakpoint = null; + this.nzZeroTrigger = null; + this.nzTrigger = void 0; + this.nzReverseArrow = false; + this.nzCollapsible = false; + this.nzCollapsed = false; + this.matchBreakPoint = false; + this.flexSetting = null; + this.widthSetting = null; + } + ngOnInit() { + this.updateStyleMap(); + if (this.platform.isBrowser) { + this.breakpointService.subscribe(siderResponsiveMap, true).pipe(takeUntil(this.destroy$)).subscribe((map) => { + const breakpoint = this.nzBreakpoint; + if (breakpoint) { + inNextTick().subscribe(() => { + this.matchBreakPoint = !map[breakpoint]; + this.setCollapsed(this.matchBreakPoint); + this.cdr.markForCheck(); + }); + } + }); + } + } + ngOnChanges(changes) { + const { + nzCollapsed, + nzCollapsedWidth, + nzWidth + } = changes; + if (nzCollapsed || nzCollapsedWidth || nzWidth) { + this.updateStyleMap(); + } + if (nzCollapsed) { + this.updateMenuInlineCollapsed(); + } + } + ngAfterContentInit() { + this.updateMenuInlineCollapsed(); + } + ngOnDestroy() { + this.destroy$.next(true); + this.destroy$.complete(); + } +}; +_NzSiderComponent.ɵfac = function NzSiderComponent_Factory(t) { + return new (t || _NzSiderComponent)(ɵɵdirectiveInject(Platform), ɵɵdirectiveInject(ChangeDetectorRef), ɵɵdirectiveInject(NzBreakpointService)); +}; +_NzSiderComponent.ɵcmp = ɵɵdefineComponent({ + type: _NzSiderComponent, + selectors: [["nz-sider"]], + contentQueries: function NzSiderComponent_ContentQueries(rf, ctx, dirIndex) { + if (rf & 1) { + ɵɵcontentQuery(dirIndex, NzMenuDirective, 5); + } + if (rf & 2) { + let _t; + ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.nzMenuDirective = _t.first); + } + }, + hostAttrs: [1, "ant-layout-sider"], + hostVars: 18, + hostBindings: function NzSiderComponent_HostBindings(rf, ctx) { + if (rf & 2) { + ɵɵstyleProp("flex", ctx.flexSetting)("max-width", ctx.widthSetting)("min-width", ctx.widthSetting)("width", ctx.widthSetting); + ɵɵclassProp("ant-layout-sider-zero-width", ctx.nzCollapsed && ctx.nzCollapsedWidth === 0)("ant-layout-sider-light", ctx.nzTheme === "light")("ant-layout-sider-dark", ctx.nzTheme === "dark")("ant-layout-sider-collapsed", ctx.nzCollapsed)("ant-layout-sider-has-trigger", ctx.nzCollapsible && ctx.nzTrigger !== null); + } + }, + inputs: { + nzWidth: "nzWidth", + nzTheme: "nzTheme", + nzCollapsedWidth: "nzCollapsedWidth", + nzBreakpoint: "nzBreakpoint", + nzZeroTrigger: "nzZeroTrigger", + nzTrigger: "nzTrigger", + nzReverseArrow: "nzReverseArrow", + nzCollapsible: "nzCollapsible", + nzCollapsed: "nzCollapsed" + }, + outputs: { + nzCollapsedChange: "nzCollapsedChange" + }, + exportAs: ["nzSider"], + standalone: true, + features: [ɵɵNgOnChangesFeature, ɵɵStandaloneFeature], + ngContentSelectors: _c0, + decls: 3, + vars: 1, + consts: [[1, "ant-layout-sider-children"], ["nz-sider-trigger", "", 3, "matchBreakPoint", "nzCollapsedWidth", "nzCollapsed", "nzBreakpoint", "nzReverseArrow", "nzTrigger", "nzZeroTrigger", "siderWidth", "click", 4, "ngIf"], ["nz-sider-trigger", "", 3, "matchBreakPoint", "nzCollapsedWidth", "nzCollapsed", "nzBreakpoint", "nzReverseArrow", "nzTrigger", "nzZeroTrigger", "siderWidth", "click"]], + template: function NzSiderComponent_Template(rf, ctx) { + if (rf & 1) { + ɵɵprojectionDef(); + ɵɵelementStart(0, "div", 0); + ɵɵprojection(1); + ɵɵelementEnd(); + ɵɵtemplate(2, NzSiderComponent_div_2_Template, 1, 8, "div", 1); + } + if (rf & 2) { + ɵɵadvance(2); + ɵɵproperty("ngIf", ctx.nzCollapsible && ctx.nzTrigger !== null); + } + }, + dependencies: [NgIf, NzSiderTriggerComponent], + encapsulation: 2, + changeDetection: 0 +}); +var NzSiderComponent = _NzSiderComponent; +__decorate([InputBoolean()], NzSiderComponent.prototype, "nzReverseArrow", void 0); +__decorate([InputBoolean()], NzSiderComponent.prototype, "nzCollapsible", void 0); +__decorate([InputBoolean()], NzSiderComponent.prototype, "nzCollapsed", void 0); +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzSiderComponent, [{ + type: Component, + args: [{ + selector: "nz-sider", + exportAs: "nzSider", + preserveWhitespaces: false, + encapsulation: ViewEncapsulation$1.None, + changeDetection: ChangeDetectionStrategy.OnPush, + template: ` +
+ +
+
+ `, + host: { + class: "ant-layout-sider", + "[class.ant-layout-sider-zero-width]": `nzCollapsed && nzCollapsedWidth === 0`, + "[class.ant-layout-sider-light]": `nzTheme === 'light'`, + "[class.ant-layout-sider-dark]": `nzTheme === 'dark'`, + "[class.ant-layout-sider-collapsed]": `nzCollapsed`, + "[class.ant-layout-sider-has-trigger]": `nzCollapsible && nzTrigger !== null`, + "[style.flex]": "flexSetting", + "[style.maxWidth]": "widthSetting", + "[style.minWidth]": "widthSetting", + "[style.width]": "widthSetting" + }, + imports: [NgIf, NzSiderTriggerComponent], + standalone: true + }] + }], () => [{ + type: Platform + }, { + type: ChangeDetectorRef + }, { + type: NzBreakpointService + }], { + nzMenuDirective: [{ + type: ContentChild, + args: [NzMenuDirective] + }], + nzCollapsedChange: [{ + type: Output + }], + nzWidth: [{ + type: Input + }], + nzTheme: [{ + type: Input + }], + nzCollapsedWidth: [{ + type: Input + }], + nzBreakpoint: [{ + type: Input + }], + nzZeroTrigger: [{ + type: Input + }], + nzTrigger: [{ + type: Input + }], + nzReverseArrow: [{ + type: Input + }], + nzCollapsible: [{ + type: Input + }], + nzCollapsed: [{ + type: Input + }] + }); +})(); +var _NzLayoutComponent = class _NzLayoutComponent { + constructor(directionality) { + this.directionality = directionality; + this.dir = "ltr"; + this.destroy$ = new Subject(); + } + ngOnInit() { + this.dir = this.directionality.value; + this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction) => { + this.dir = direction; + }); + } + ngOnDestroy() { + this.destroy$.next(); + this.destroy$.complete(); + } +}; +_NzLayoutComponent.ɵfac = function NzLayoutComponent_Factory(t) { + return new (t || _NzLayoutComponent)(ɵɵdirectiveInject(Directionality, 8)); +}; +_NzLayoutComponent.ɵcmp = ɵɵdefineComponent({ + type: _NzLayoutComponent, + selectors: [["nz-layout"]], + contentQueries: function NzLayoutComponent_ContentQueries(rf, ctx, dirIndex) { + if (rf & 1) { + ɵɵcontentQuery(dirIndex, NzSiderComponent, 4); + } + if (rf & 2) { + let _t; + ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.listOfNzSiderComponent = _t); + } + }, + hostAttrs: [1, "ant-layout"], + hostVars: 4, + hostBindings: function NzLayoutComponent_HostBindings(rf, ctx) { + if (rf & 2) { + ɵɵclassProp("ant-layout-rtl", ctx.dir === "rtl")("ant-layout-has-sider", ctx.listOfNzSiderComponent.length > 0); + } + }, + exportAs: ["nzLayout"], + standalone: true, + features: [ɵɵStandaloneFeature], + ngContentSelectors: _c0, + decls: 1, + vars: 0, + template: function NzLayoutComponent_Template(rf, ctx) { + if (rf & 1) { + ɵɵprojectionDef(); + ɵɵprojection(0); + } + }, + encapsulation: 2, + changeDetection: 0 +}); +var NzLayoutComponent = _NzLayoutComponent; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzLayoutComponent, [{ + type: Component, + args: [{ + selector: "nz-layout", + exportAs: "nzLayout", + encapsulation: ViewEncapsulation$1.None, + changeDetection: ChangeDetectionStrategy.OnPush, + preserveWhitespaces: false, + template: ` `, + host: { + class: "ant-layout", + "[class.ant-layout-rtl]": `dir === 'rtl'`, + "[class.ant-layout-has-sider]": "listOfNzSiderComponent.length > 0" + }, + standalone: true + }] + }], () => [{ + type: Directionality, + decorators: [{ + type: Optional + }] + }], { + listOfNzSiderComponent: [{ + type: ContentChildren, + args: [NzSiderComponent] + }] + }); +})(); +var _NzLayoutModule = class _NzLayoutModule { +}; +_NzLayoutModule.ɵfac = function NzLayoutModule_Factory(t) { + return new (t || _NzLayoutModule)(); +}; +_NzLayoutModule.ɵmod = ɵɵdefineNgModule({ + type: _NzLayoutModule, + imports: [NzLayoutComponent, NzHeaderComponent, NzContentComponent, NzFooterComponent, NzSiderComponent, NzSiderTriggerComponent], + exports: [NzLayoutComponent, NzHeaderComponent, NzContentComponent, NzFooterComponent, NzSiderComponent] +}); +_NzLayoutModule.ɵinj = ɵɵdefineInjector({ + imports: [NzSiderComponent, NzSiderTriggerComponent] +}); +var NzLayoutModule = _NzLayoutModule; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzLayoutModule, [{ + type: NgModule, + args: [{ + imports: [NzLayoutComponent, NzHeaderComponent, NzContentComponent, NzFooterComponent, NzSiderComponent, NzSiderTriggerComponent], + exports: [NzLayoutComponent, NzHeaderComponent, NzContentComponent, NzFooterComponent, NzSiderComponent] + }] + }], null, null); +})(); +export { + NzContentComponent, + NzFooterComponent, + NzHeaderComponent, + NzLayoutComponent, + NzLayoutModule, + NzSiderComponent, + NzSiderTriggerComponent as ɵNzSiderTriggerComponent +}; +//# sourceMappingURL=ng-zorro-antd_layout.js.map diff --git a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_layout.js.map b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_layout.js.map new file mode 100644 index 0000000..1653076 --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_layout.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-layout.mjs"], + "sourcesContent": ["import * as i0 from '@angular/core';\nimport { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, EventEmitter, ContentChild, Output, Optional, ContentChildren, NgModule } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { __decorate } from 'tslib';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport * as i2 from 'ng-zorro-antd/core/services';\nimport { siderResponsiveMap } from 'ng-zorro-antd/core/services';\nimport { toCssPixel, inNextTick, InputBoolean } from 'ng-zorro-antd/core/util';\nimport { NzMenuDirective } from 'ng-zorro-antd/menu';\nimport * as i1 from 'ng-zorro-antd/icon';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport * as i1$1 from '@angular/cdk/platform';\nimport * as i1$2 from '@angular/cdk/bidi';\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst _c0 = [\"*\"];\nconst _c1 = [\"nz-sider-trigger\", \"\"];\nfunction NzSiderTriggerComponent_ng_container_0_ng_template_1_Template(rf, ctx) {}\nfunction NzSiderTriggerComponent_ng_container_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, NzSiderTriggerComponent_ng_container_0_ng_template_1_Template, 0, 0, \"ng-template\", 3);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n const _r5 = i0.ɵɵreference(5);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.nzZeroTrigger || _r5);\n }\n}\nfunction NzSiderTriggerComponent_ng_container_1_ng_template_1_Template(rf, ctx) {}\nfunction NzSiderTriggerComponent_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, NzSiderTriggerComponent_ng_container_1_ng_template_1_Template, 0, 0, \"ng-template\", 3);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n const _r3 = i0.ɵɵreference(3);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.nzTrigger || _r3);\n }\n}\nfunction NzSiderTriggerComponent_ng_template_2_span_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 5);\n }\n if (rf & 2) {\n const ctx_r8 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"nzType\", ctx_r8.nzCollapsed ? \"right\" : \"left\");\n }\n}\nfunction NzSiderTriggerComponent_ng_template_2_span_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 5);\n }\n if (rf & 2) {\n const ctx_r9 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"nzType\", ctx_r9.nzCollapsed ? \"left\" : \"right\");\n }\n}\nfunction NzSiderTriggerComponent_ng_template_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NzSiderTriggerComponent_ng_template_2_span_0_Template, 1, 1, \"span\", 4)(1, NzSiderTriggerComponent_ng_template_2_span_1_Template, 1, 1, \"span\", 4);\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngIf\", !ctx_r2.nzReverseArrow);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx_r2.nzReverseArrow);\n }\n}\nfunction NzSiderTriggerComponent_ng_template_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 6);\n }\n}\nfunction NzSiderComponent_div_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r2 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 2);\n i0.ɵɵlistener(\"click\", function NzSiderComponent_div_2_Template_div_click_0_listener() {\n i0.ɵɵrestoreView(_r2);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.setCollapsed(!ctx_r1.nzCollapsed));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"matchBreakPoint\", ctx_r0.matchBreakPoint)(\"nzCollapsedWidth\", ctx_r0.nzCollapsedWidth)(\"nzCollapsed\", ctx_r0.nzCollapsed)(\"nzBreakpoint\", ctx_r0.nzBreakpoint)(\"nzReverseArrow\", ctx_r0.nzReverseArrow)(\"nzTrigger\", ctx_r0.nzTrigger)(\"nzZeroTrigger\", ctx_r0.nzZeroTrigger)(\"siderWidth\", ctx_r0.widthSetting);\n }\n}\nclass NzContentComponent {\n constructor(elementRef, renderer) {\n this.elementRef = elementRef;\n this.renderer = renderer;\n this.renderer.addClass(this.elementRef.nativeElement, 'ant-layout-content');\n }\n static {\n this.ɵfac = function NzContentComponent_Factory(t) {\n return new (t || NzContentComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzContentComponent,\n selectors: [[\"nz-content\"]],\n exportAs: [\"nzContent\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n template: function NzContentComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzContentComponent, [{\n type: Component,\n args: [{\n selector: 'nz-content',\n exportAs: 'nzContent',\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: ` `,\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: i0.Renderer2\n }], null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzFooterComponent {\n constructor(elementRef, renderer) {\n this.elementRef = elementRef;\n this.renderer = renderer;\n this.renderer.addClass(this.elementRef.nativeElement, 'ant-layout-footer');\n }\n static {\n this.ɵfac = function NzFooterComponent_Factory(t) {\n return new (t || NzFooterComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzFooterComponent,\n selectors: [[\"nz-footer\"]],\n exportAs: [\"nzFooter\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n template: function NzFooterComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzFooterComponent, [{\n type: Component,\n args: [{\n selector: 'nz-footer',\n exportAs: 'nzFooter',\n preserveWhitespaces: false,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: ` `,\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: i0.Renderer2\n }], null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzHeaderComponent {\n constructor(elementRef, renderer) {\n this.elementRef = elementRef;\n this.renderer = renderer;\n this.renderer.addClass(this.elementRef.nativeElement, 'ant-layout-header');\n }\n static {\n this.ɵfac = function NzHeaderComponent_Factory(t) {\n return new (t || NzHeaderComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzHeaderComponent,\n selectors: [[\"nz-header\"]],\n exportAs: [\"nzHeader\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n template: function NzHeaderComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzHeaderComponent, [{\n type: Component,\n args: [{\n selector: 'nz-header',\n exportAs: 'nzHeader',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n template: ` `,\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: i0.Renderer2\n }], null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzSiderTriggerComponent {\n constructor() {\n this.nzCollapsed = false;\n this.nzReverseArrow = false;\n this.nzZeroTrigger = null;\n this.nzTrigger = undefined;\n this.matchBreakPoint = false;\n this.nzCollapsedWidth = null;\n this.siderWidth = null;\n this.nzBreakpoint = null;\n this.isZeroTrigger = false;\n this.isNormalTrigger = false;\n }\n updateTriggerType() {\n this.isZeroTrigger = this.nzCollapsedWidth === 0 && (this.nzBreakpoint && this.matchBreakPoint || !this.nzBreakpoint);\n this.isNormalTrigger = this.nzCollapsedWidth !== 0;\n }\n ngOnInit() {\n this.updateTriggerType();\n }\n ngOnChanges() {\n this.updateTriggerType();\n }\n static {\n this.ɵfac = function NzSiderTriggerComponent_Factory(t) {\n return new (t || NzSiderTriggerComponent)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzSiderTriggerComponent,\n selectors: [[\"\", \"nz-sider-trigger\", \"\"]],\n hostVars: 10,\n hostBindings: function NzSiderTriggerComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵstyleProp(\"width\", ctx.isNormalTrigger ? ctx.siderWidth : null);\n i0.ɵɵclassProp(\"ant-layout-sider-trigger\", ctx.isNormalTrigger)(\"ant-layout-sider-zero-width-trigger\", ctx.isZeroTrigger)(\"ant-layout-sider-zero-width-trigger-right\", ctx.isZeroTrigger && ctx.nzReverseArrow)(\"ant-layout-sider-zero-width-trigger-left\", ctx.isZeroTrigger && !ctx.nzReverseArrow);\n }\n },\n inputs: {\n nzCollapsed: \"nzCollapsed\",\n nzReverseArrow: \"nzReverseArrow\",\n nzZeroTrigger: \"nzZeroTrigger\",\n nzTrigger: \"nzTrigger\",\n matchBreakPoint: \"matchBreakPoint\",\n nzCollapsedWidth: \"nzCollapsedWidth\",\n siderWidth: \"siderWidth\",\n nzBreakpoint: \"nzBreakpoint\"\n },\n exportAs: [\"nzSiderTrigger\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n attrs: _c1,\n decls: 6,\n vars: 2,\n consts: [[4, \"ngIf\"], [\"defaultTrigger\", \"\"], [\"defaultZeroTrigger\", \"\"], [3, \"ngTemplateOutlet\"], [\"nz-icon\", \"\", 3, \"nzType\", 4, \"ngIf\"], [\"nz-icon\", \"\", 3, \"nzType\"], [\"nz-icon\", \"\", \"nzType\", \"bars\"]],\n template: function NzSiderTriggerComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NzSiderTriggerComponent_ng_container_0_Template, 2, 1, \"ng-container\", 0)(1, NzSiderTriggerComponent_ng_container_1_Template, 2, 1, \"ng-container\", 0)(2, NzSiderTriggerComponent_ng_template_2_Template, 2, 2, \"ng-template\", null, 1, i0.ɵɵtemplateRefExtractor)(4, NzSiderTriggerComponent_ng_template_4_Template, 1, 0, \"ng-template\", null, 2, i0.ɵɵtemplateRefExtractor);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.isZeroTrigger);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx.isNormalTrigger);\n }\n },\n dependencies: [NgIf, NgTemplateOutlet, NzIconModule, i1.NzIconDirective],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzSiderTriggerComponent, [{\n type: Component,\n args: [{\n selector: '[nz-sider-trigger]',\n exportAs: 'nzSiderTrigger',\n preserveWhitespaces: false,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n `,\n host: {\n '[class.ant-layout-sider-trigger]': 'isNormalTrigger',\n '[style.width]': 'isNormalTrigger ? siderWidth : null',\n '[class.ant-layout-sider-zero-width-trigger]': 'isZeroTrigger',\n '[class.ant-layout-sider-zero-width-trigger-right]': 'isZeroTrigger && nzReverseArrow',\n '[class.ant-layout-sider-zero-width-trigger-left]': 'isZeroTrigger && !nzReverseArrow'\n },\n imports: [NgIf, NgTemplateOutlet, NzIconModule],\n standalone: true\n }]\n }], null, {\n nzCollapsed: [{\n type: Input\n }],\n nzReverseArrow: [{\n type: Input\n }],\n nzZeroTrigger: [{\n type: Input\n }],\n nzTrigger: [{\n type: Input\n }],\n matchBreakPoint: [{\n type: Input\n }],\n nzCollapsedWidth: [{\n type: Input\n }],\n siderWidth: [{\n type: Input\n }],\n nzBreakpoint: [{\n type: Input\n }]\n });\n})();\nclass NzSiderComponent {\n updateStyleMap() {\n this.widthSetting = this.nzCollapsed ? `${this.nzCollapsedWidth}px` : toCssPixel(this.nzWidth);\n this.flexSetting = `0 0 ${this.widthSetting}`;\n this.cdr.markForCheck();\n }\n updateMenuInlineCollapsed() {\n if (this.nzMenuDirective && this.nzMenuDirective.nzMode === 'inline' && this.nzCollapsedWidth !== 0) {\n this.nzMenuDirective.setInlineCollapsed(this.nzCollapsed);\n }\n }\n setCollapsed(collapsed) {\n if (collapsed !== this.nzCollapsed) {\n this.nzCollapsed = collapsed;\n this.nzCollapsedChange.emit(collapsed);\n this.updateMenuInlineCollapsed();\n this.updateStyleMap();\n this.cdr.markForCheck();\n }\n }\n constructor(platform, cdr, breakpointService) {\n this.platform = platform;\n this.cdr = cdr;\n this.breakpointService = breakpointService;\n this.destroy$ = new Subject();\n this.nzMenuDirective = null;\n this.nzCollapsedChange = new EventEmitter();\n this.nzWidth = 200;\n this.nzTheme = 'dark';\n this.nzCollapsedWidth = 80;\n this.nzBreakpoint = null;\n this.nzZeroTrigger = null;\n this.nzTrigger = undefined;\n this.nzReverseArrow = false;\n this.nzCollapsible = false;\n this.nzCollapsed = false;\n this.matchBreakPoint = false;\n this.flexSetting = null;\n this.widthSetting = null;\n }\n ngOnInit() {\n this.updateStyleMap();\n if (this.platform.isBrowser) {\n this.breakpointService.subscribe(siderResponsiveMap, true).pipe(takeUntil(this.destroy$)).subscribe(map => {\n const breakpoint = this.nzBreakpoint;\n if (breakpoint) {\n inNextTick().subscribe(() => {\n this.matchBreakPoint = !map[breakpoint];\n this.setCollapsed(this.matchBreakPoint);\n this.cdr.markForCheck();\n });\n }\n });\n }\n }\n ngOnChanges(changes) {\n const {\n nzCollapsed,\n nzCollapsedWidth,\n nzWidth\n } = changes;\n if (nzCollapsed || nzCollapsedWidth || nzWidth) {\n this.updateStyleMap();\n }\n if (nzCollapsed) {\n this.updateMenuInlineCollapsed();\n }\n }\n ngAfterContentInit() {\n this.updateMenuInlineCollapsed();\n }\n ngOnDestroy() {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n static {\n this.ɵfac = function NzSiderComponent_Factory(t) {\n return new (t || NzSiderComponent)(i0.ɵɵdirectiveInject(i1$1.Platform), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i2.NzBreakpointService));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzSiderComponent,\n selectors: [[\"nz-sider\"]],\n contentQueries: function NzSiderComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NzMenuDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.nzMenuDirective = _t.first);\n }\n },\n hostAttrs: [1, \"ant-layout-sider\"],\n hostVars: 18,\n hostBindings: function NzSiderComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵstyleProp(\"flex\", ctx.flexSetting)(\"max-width\", ctx.widthSetting)(\"min-width\", ctx.widthSetting)(\"width\", ctx.widthSetting);\n i0.ɵɵclassProp(\"ant-layout-sider-zero-width\", ctx.nzCollapsed && ctx.nzCollapsedWidth === 0)(\"ant-layout-sider-light\", ctx.nzTheme === \"light\")(\"ant-layout-sider-dark\", ctx.nzTheme === \"dark\")(\"ant-layout-sider-collapsed\", ctx.nzCollapsed)(\"ant-layout-sider-has-trigger\", ctx.nzCollapsible && ctx.nzTrigger !== null);\n }\n },\n inputs: {\n nzWidth: \"nzWidth\",\n nzTheme: \"nzTheme\",\n nzCollapsedWidth: \"nzCollapsedWidth\",\n nzBreakpoint: \"nzBreakpoint\",\n nzZeroTrigger: \"nzZeroTrigger\",\n nzTrigger: \"nzTrigger\",\n nzReverseArrow: \"nzReverseArrow\",\n nzCollapsible: \"nzCollapsible\",\n nzCollapsed: \"nzCollapsed\"\n },\n outputs: {\n nzCollapsedChange: \"nzCollapsedChange\"\n },\n exportAs: [\"nzSider\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 3,\n vars: 1,\n consts: [[1, \"ant-layout-sider-children\"], [\"nz-sider-trigger\", \"\", 3, \"matchBreakPoint\", \"nzCollapsedWidth\", \"nzCollapsed\", \"nzBreakpoint\", \"nzReverseArrow\", \"nzTrigger\", \"nzZeroTrigger\", \"siderWidth\", \"click\", 4, \"ngIf\"], [\"nz-sider-trigger\", \"\", 3, \"matchBreakPoint\", \"nzCollapsedWidth\", \"nzCollapsed\", \"nzBreakpoint\", \"nzReverseArrow\", \"nzTrigger\", \"nzZeroTrigger\", \"siderWidth\", \"click\"]],\n template: function NzSiderComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelementStart(0, \"div\", 0);\n i0.ɵɵprojection(1);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(2, NzSiderComponent_div_2_Template, 1, 8, \"div\", 1);\n }\n if (rf & 2) {\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx.nzCollapsible && ctx.nzTrigger !== null);\n }\n },\n dependencies: [NgIf, NzSiderTriggerComponent],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n__decorate([InputBoolean()], NzSiderComponent.prototype, \"nzReverseArrow\", void 0);\n__decorate([InputBoolean()], NzSiderComponent.prototype, \"nzCollapsible\", void 0);\n__decorate([InputBoolean()], NzSiderComponent.prototype, \"nzCollapsed\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzSiderComponent, [{\n type: Component,\n args: [{\n selector: 'nz-sider',\n exportAs: 'nzSider',\n preserveWhitespaces: false,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n
\n \n
\n \n `,\n host: {\n class: 'ant-layout-sider',\n '[class.ant-layout-sider-zero-width]': `nzCollapsed && nzCollapsedWidth === 0`,\n '[class.ant-layout-sider-light]': `nzTheme === 'light'`,\n '[class.ant-layout-sider-dark]': `nzTheme === 'dark'`,\n '[class.ant-layout-sider-collapsed]': `nzCollapsed`,\n '[class.ant-layout-sider-has-trigger]': `nzCollapsible && nzTrigger !== null`,\n '[style.flex]': 'flexSetting',\n '[style.maxWidth]': 'widthSetting',\n '[style.minWidth]': 'widthSetting',\n '[style.width]': 'widthSetting'\n },\n imports: [NgIf, NzSiderTriggerComponent],\n standalone: true\n }]\n }], () => [{\n type: i1$1.Platform\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: i2.NzBreakpointService\n }], {\n nzMenuDirective: [{\n type: ContentChild,\n args: [NzMenuDirective]\n }],\n nzCollapsedChange: [{\n type: Output\n }],\n nzWidth: [{\n type: Input\n }],\n nzTheme: [{\n type: Input\n }],\n nzCollapsedWidth: [{\n type: Input\n }],\n nzBreakpoint: [{\n type: Input\n }],\n nzZeroTrigger: [{\n type: Input\n }],\n nzTrigger: [{\n type: Input\n }],\n nzReverseArrow: [{\n type: Input\n }],\n nzCollapsible: [{\n type: Input\n }],\n nzCollapsed: [{\n type: Input\n }]\n });\n})();\nclass NzLayoutComponent {\n constructor(directionality) {\n this.directionality = directionality;\n this.dir = 'ltr';\n this.destroy$ = new Subject();\n }\n ngOnInit() {\n this.dir = this.directionality.value;\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe(direction => {\n this.dir = direction;\n });\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n static {\n this.ɵfac = function NzLayoutComponent_Factory(t) {\n return new (t || NzLayoutComponent)(i0.ɵɵdirectiveInject(i1$2.Directionality, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzLayoutComponent,\n selectors: [[\"nz-layout\"]],\n contentQueries: function NzLayoutComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NzSiderComponent, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.listOfNzSiderComponent = _t);\n }\n },\n hostAttrs: [1, \"ant-layout\"],\n hostVars: 4,\n hostBindings: function NzLayoutComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"ant-layout-rtl\", ctx.dir === \"rtl\")(\"ant-layout-has-sider\", ctx.listOfNzSiderComponent.length > 0);\n }\n },\n exportAs: [\"nzLayout\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n template: function NzLayoutComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzLayoutComponent, [{\n type: Component,\n args: [{\n selector: 'nz-layout',\n exportAs: 'nzLayout',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n template: ` `,\n host: {\n class: 'ant-layout',\n '[class.ant-layout-rtl]': `dir === 'rtl'`,\n '[class.ant-layout-has-sider]': 'listOfNzSiderComponent.length > 0'\n },\n standalone: true\n }]\n }], () => [{\n type: i1$2.Directionality,\n decorators: [{\n type: Optional\n }]\n }], {\n listOfNzSiderComponent: [{\n type: ContentChildren,\n args: [NzSiderComponent]\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzLayoutModule {\n static {\n this.ɵfac = function NzLayoutModule_Factory(t) {\n return new (t || NzLayoutModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NzLayoutModule,\n imports: [NzLayoutComponent, NzHeaderComponent, NzContentComponent, NzFooterComponent, NzSiderComponent, NzSiderTriggerComponent],\n exports: [NzLayoutComponent, NzHeaderComponent, NzContentComponent, NzFooterComponent, NzSiderComponent]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [NzSiderComponent, NzSiderTriggerComponent]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzLayoutModule, [{\n type: NgModule,\n args: [{\n imports: [NzLayoutComponent, NzHeaderComponent, NzContentComponent, NzFooterComponent, NzSiderComponent, NzSiderTriggerComponent],\n exports: [NzLayoutComponent, NzHeaderComponent, NzContentComponent, NzFooterComponent, NzSiderComponent]\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NzContentComponent, NzFooterComponent, NzHeaderComponent, NzLayoutComponent, NzLayoutModule, NzSiderComponent, NzSiderTriggerComponent as ɵNzSiderTriggerComponent };\n"], + "mappings": "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", + "names": [] +} diff --git a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_menu.js b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_menu.js new file mode 100644 index 0000000..32ae177 --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_menu.js @@ -0,0 +1,58 @@ +import { + MenuDropDownTokenFactory, + MenuGroupFactory, + MenuService, + MenuServiceFactory, + NzIsMenuInsideDropDownToken, + NzMenuDirective, + NzMenuDividerDirective, + NzMenuGroupComponent, + NzMenuItemComponent, + NzMenuModule, + NzMenuServiceLocalToken, + NzSubMenuComponent, + NzSubMenuTitleComponent, + NzSubmenuInlineChildComponent, + NzSubmenuNoneInlineChildComponent, + NzSubmenuService +} from "./chunk-WKTPWT5U.js"; +import "./chunk-CZEXXPIB.js"; +import "./chunk-6RXUTAFR.js"; +import "./chunk-XAGDQPFO.js"; +import "./chunk-D5ODNR6D.js"; +import "./chunk-55A2ZGND.js"; +import "./chunk-6U656R5M.js"; +import "./chunk-VOD2PKZN.js"; +import "./chunk-JGP5BR6B.js"; +import "./chunk-WB57DPWD.js"; +import "./chunk-VWMHIMW7.js"; +import "./chunk-ZHMJ6SNN.js"; +import "./chunk-6NZ2BEBG.js"; +import "./chunk-IAC53GOD.js"; +import "./chunk-M5GY4FCO.js"; +import "./chunk-ECVKT3ZH.js"; +import "./chunk-KI2JSLP6.js"; +import "./chunk-Y4CEYMY2.js"; +import "./chunk-X7WBA24Z.js"; +import "./chunk-OSQBUYO6.js"; +import "./chunk-FGESKT7O.js"; +import "./chunk-HSNDBVJ3.js"; +export { + MenuDropDownTokenFactory, + MenuGroupFactory, + MenuService, + MenuServiceFactory, + NzIsMenuInsideDropDownToken, + NzMenuDirective, + NzMenuDividerDirective, + NzMenuGroupComponent, + NzMenuItemComponent, + NzMenuModule, + NzMenuServiceLocalToken, + NzSubMenuComponent, + NzSubMenuTitleComponent, + NzSubmenuInlineChildComponent, + NzSubmenuNoneInlineChildComponent, + NzSubmenuService +}; +//# sourceMappingURL=ng-zorro-antd_menu.js.map diff --git a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_menu.js.map b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_menu.js.map new file mode 100644 index 0000000..9865211 --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_menu.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": [], + "sourcesContent": [], + "mappings": "", + "names": [] +} diff --git a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_message.js b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_message.js index fc6695a..7565067 100644 --- a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_message.js +++ b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_message.js @@ -1,29 +1,32 @@ import { - NzIconDirective, - NzIconModule -} from "./chunk-S7G3TSRW.js"; + moveUpMotion +} from "./chunk-XAGDQPFO.js"; +import { + NzSingletonService +} from "./chunk-D5ODNR6D.js"; import { ComponentPortal, - Overlay, - moveUpMotion -} from "./chunk-QI6CCAQD.js"; + Overlay +} from "./chunk-6U656R5M.js"; import { NzOutletModule, NzStringTemplateOutletDirective } from "./chunk-VOD2PKZN.js"; +import "./chunk-JGP5BR6B.js"; +import "./chunk-WB57DPWD.js"; import { - NzSingletonService -} from "./chunk-W3IYJMS2.js"; -import "./chunk-UMSNQQWJ.js"; -import "./chunk-5OJ3CSUZ.js"; + NzIconDirective, + NzIconModule +} from "./chunk-VWMHIMW7.js"; import { NzConfigService -} from "./chunk-NOIPAY33.js"; -import "./chunk-UPQZZZIG.js"; +} from "./chunk-ZHMJ6SNN.js"; +import "./chunk-6NZ2BEBG.js"; +import "./chunk-IAC53GOD.js"; import { toCssPixel -} from "./chunk-7XTJNSRU.js"; -import "./chunk-BNCUYWOH.js"; +} from "./chunk-M5GY4FCO.js"; +import "./chunk-KI2JSLP6.js"; import "./chunk-Y4CEYMY2.js"; import "./chunk-X7WBA24Z.js"; import { diff --git a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_message.js.map b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_message.js.map index 3c26b71..7a8fa4d 100644 --- a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_message.js.map +++ b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_message.js.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-message.mjs"], "sourcesContent": ["import { ComponentPortal } from '@angular/cdk/portal';\nimport * as i0 from '@angular/core';\nimport { Directive, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule, Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { filter, take, takeUntil } from 'rxjs/operators';\nimport * as i1 from 'ng-zorro-antd/core/config';\nimport { NgClass, NgSwitch, NgSwitchCase, NgForOf } from '@angular/common';\nimport { toCssPixel } from 'ng-zorro-antd/core/util';\nimport { moveUpMotion } from 'ng-zorro-antd/core/animation';\nimport * as i2 from 'ng-zorro-antd/core/outlet';\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport * as i1$1 from 'ng-zorro-antd/icon';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport * as i1$2 from 'ng-zorro-antd/core/services';\nimport * as i2$1 from '@angular/cdk/overlay';\nfunction NzMessageComponent_span_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 10);\n }\n}\nfunction NzMessageComponent_span_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 11);\n }\n}\nfunction NzMessageComponent_span_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 12);\n }\n}\nfunction NzMessageComponent_span_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 13);\n }\n}\nfunction NzMessageComponent_span_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 14);\n }\n}\nfunction NzMessageComponent_ng_container_9_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelement(1, \"span\", 15);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r5 = i0.ɵɵnextContext();\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"innerHTML\", ctx_r5.instance.content, i0.ɵɵsanitizeHtml);\n }\n}\nfunction NzMessageContainerComponent_nz_message_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"nz-message\", 2);\n i0.ɵɵlistener(\"destroyed\", function NzMessageContainerComponent_nz_message_1_Template_nz_message_destroyed_0_listener($event) {\n i0.ɵɵrestoreView(_r3);\n const ctx_r2 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r2.remove($event.id, $event.userAction));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const instance_r1 = ctx.$implicit;\n i0.ɵɵproperty(\"instance\", instance_r1);\n }\n}\nlet globalCounter = 0;\nclass NzMNService {\n constructor(nzSingletonService, overlay, injector) {\n this.nzSingletonService = nzSingletonService;\n this.overlay = overlay;\n this.injector = injector;\n }\n remove(id) {\n if (this.container) {\n if (id) {\n this.container.remove(id);\n } else {\n this.container.removeAll();\n }\n }\n }\n getInstanceId() {\n return `${this.componentPrefix}-${globalCounter++}`;\n }\n withContainer(ctor) {\n let containerInstance = this.nzSingletonService.getSingletonWithKey(this.componentPrefix);\n if (containerInstance) {\n return containerInstance;\n }\n const overlayRef = this.overlay.create({\n hasBackdrop: false,\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n positionStrategy: this.overlay.position().global()\n });\n const componentPortal = new ComponentPortal(ctor, null, this.injector);\n const componentRef = overlayRef.attach(componentPortal);\n const overlayWrapper = overlayRef.hostElement;\n overlayWrapper.style.zIndex = '1010';\n if (!containerInstance) {\n this.container = containerInstance = componentRef.instance;\n this.nzSingletonService.registerSingletonWithKey(this.componentPrefix, containerInstance);\n this.container.afterAllInstancesRemoved.subscribe(() => {\n this.container = undefined;\n this.nzSingletonService.unregisterSingletonWithKey(this.componentPrefix);\n overlayRef.dispose();\n });\n }\n return containerInstance;\n }\n}\nclass NzMNContainerComponent {\n constructor(cdr, nzConfigService) {\n this.cdr = cdr;\n this.nzConfigService = nzConfigService;\n this.instances = [];\n this._afterAllInstancesRemoved = new Subject();\n this.afterAllInstancesRemoved = this._afterAllInstancesRemoved.asObservable();\n this.destroy$ = new Subject();\n this.updateConfig();\n }\n ngOnInit() {\n this.subscribeConfigChange();\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n create(data) {\n const instance = this.onCreate(data);\n if (this.instances.length >= this.config.nzMaxStack) {\n this.instances = this.instances.slice(1);\n }\n this.instances = [...this.instances, instance];\n this.readyInstances();\n return instance;\n }\n remove(id, userAction = false) {\n this.instances.map((instance, index) => ({\n index,\n instance\n })).filter(({\n instance\n }) => instance.messageId === id).forEach(({\n index,\n instance\n }) => {\n this.instances.splice(index, 1);\n this.instances = [...this.instances];\n this.onRemove(instance, userAction);\n this.readyInstances();\n });\n if (!this.instances.length) {\n this.onAllInstancesRemoved();\n }\n }\n removeAll() {\n this.instances.forEach(i => this.onRemove(i, false));\n this.instances = [];\n this.readyInstances();\n this.onAllInstancesRemoved();\n }\n onCreate(instance) {\n instance.options = this.mergeOptions(instance.options);\n instance.onClose = new Subject();\n return instance;\n }\n onRemove(instance, userAction) {\n instance.onClose.next(userAction);\n instance.onClose.complete();\n }\n onAllInstancesRemoved() {\n this._afterAllInstancesRemoved.next();\n this._afterAllInstancesRemoved.complete();\n }\n readyInstances() {\n this.cdr.detectChanges();\n }\n mergeOptions(options) {\n const {\n nzDuration,\n nzAnimate,\n nzPauseOnHover\n } = this.config;\n return {\n nzDuration,\n nzAnimate,\n nzPauseOnHover,\n ...options\n };\n }\n static {\n this.ɵfac = function NzMNContainerComponent_Factory(t) {\n return new (t || NzMNContainerComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.NzConfigService));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzMNContainerComponent\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzMNContainerComponent, [{\n type: Directive\n }], () => [{\n type: i0.ChangeDetectorRef\n }, {\n type: i1.NzConfigService\n }], null);\n})();\nclass NzMNComponent {\n constructor(cdr) {\n this.cdr = cdr;\n this.destroyed = new EventEmitter();\n this.animationStateChanged = new Subject();\n this.userAction = false;\n this.eraseTimer = null;\n }\n ngOnInit() {\n this.options = this.instance.options;\n if (this.options.nzAnimate) {\n this.instance.state = 'enter';\n this.animationStateChanged.pipe(filter(event => event.phaseName === 'done' && event.toState === 'leave'), take(1)).subscribe(() => {\n clearTimeout(this.closeTimer);\n this.destroyed.next({\n id: this.instance.messageId,\n userAction: this.userAction\n });\n });\n }\n this.autoClose = this.options.nzDuration > 0;\n if (this.autoClose) {\n this.initErase();\n this.startEraseTimeout();\n }\n }\n ngOnDestroy() {\n if (this.autoClose) {\n this.clearEraseTimeout();\n }\n this.animationStateChanged.complete();\n }\n onEnter() {\n if (this.autoClose && this.options.nzPauseOnHover) {\n this.clearEraseTimeout();\n this.updateTTL();\n }\n }\n onLeave() {\n if (this.autoClose && this.options.nzPauseOnHover) {\n this.startEraseTimeout();\n }\n }\n destroy(userAction = false) {\n this.userAction = userAction;\n if (this.options.nzAnimate) {\n this.instance.state = 'leave';\n this.cdr.detectChanges();\n this.closeTimer = setTimeout(() => {\n this.closeTimer = undefined;\n this.destroyed.next({\n id: this.instance.messageId,\n userAction\n });\n }, 200);\n } else {\n this.destroyed.next({\n id: this.instance.messageId,\n userAction\n });\n }\n }\n initErase() {\n this.eraseTTL = this.options.nzDuration;\n this.eraseTimingStart = Date.now();\n }\n updateTTL() {\n if (this.autoClose) {\n this.eraseTTL -= Date.now() - this.eraseTimingStart;\n }\n }\n startEraseTimeout() {\n if (this.eraseTTL > 0) {\n this.clearEraseTimeout();\n this.eraseTimer = setTimeout(() => this.destroy(), this.eraseTTL);\n this.eraseTimingStart = Date.now();\n } else {\n this.destroy();\n }\n }\n clearEraseTimeout() {\n if (this.eraseTimer !== null) {\n clearTimeout(this.eraseTimer);\n this.eraseTimer = null;\n }\n }\n static {\n this.ɵfac = function NzMNComponent_Factory(t) {\n return new (t || NzMNComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzMNComponent\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzMNComponent, [{\n type: Directive\n }], () => [{\n type: i0.ChangeDetectorRef\n }], null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzMessageComponent extends NzMNComponent {\n constructor(cdr) {\n super(cdr);\n this.destroyed = new EventEmitter();\n }\n static {\n this.ɵfac = function NzMessageComponent_Factory(t) {\n return new (t || NzMessageComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzMessageComponent,\n selectors: [[\"nz-message\"]],\n inputs: {\n instance: \"instance\"\n },\n outputs: {\n destroyed: \"destroyed\"\n },\n exportAs: [\"nzMessage\"],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 10,\n vars: 9,\n consts: [[1, \"ant-message-notice\", 3, \"mouseenter\", \"mouseleave\"], [1, \"ant-message-notice-content\"], [1, \"ant-message-custom-content\", 3, \"ngClass\"], [3, \"ngSwitch\"], [\"nz-icon\", \"\", \"nzType\", \"check-circle\", 4, \"ngSwitchCase\"], [\"nz-icon\", \"\", \"nzType\", \"info-circle\", 4, \"ngSwitchCase\"], [\"nz-icon\", \"\", \"nzType\", \"exclamation-circle\", 4, \"ngSwitchCase\"], [\"nz-icon\", \"\", \"nzType\", \"close-circle\", 4, \"ngSwitchCase\"], [\"nz-icon\", \"\", \"nzType\", \"loading\", 4, \"ngSwitchCase\"], [4, \"nzStringTemplateOutlet\"], [\"nz-icon\", \"\", \"nzType\", \"check-circle\"], [\"nz-icon\", \"\", \"nzType\", \"info-circle\"], [\"nz-icon\", \"\", \"nzType\", \"exclamation-circle\"], [\"nz-icon\", \"\", \"nzType\", \"close-circle\"], [\"nz-icon\", \"\", \"nzType\", \"loading\"], [3, \"innerHTML\"]],\n template: function NzMessageComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0);\n i0.ɵɵlistener(\"@moveUpMotion.done\", function NzMessageComponent_Template_div_animation_moveUpMotion_done_0_listener($event) {\n return ctx.animationStateChanged.next($event);\n })(\"mouseenter\", function NzMessageComponent_Template_div_mouseenter_0_listener() {\n return ctx.onEnter();\n })(\"mouseleave\", function NzMessageComponent_Template_div_mouseleave_0_listener() {\n return ctx.onLeave();\n });\n i0.ɵɵelementStart(1, \"div\", 1)(2, \"div\", 2);\n i0.ɵɵelementContainerStart(3, 3);\n i0.ɵɵtemplate(4, NzMessageComponent_span_4_Template, 1, 0, \"span\", 4)(5, NzMessageComponent_span_5_Template, 1, 0, \"span\", 5)(6, NzMessageComponent_span_6_Template, 1, 0, \"span\", 6)(7, NzMessageComponent_span_7_Template, 1, 0, \"span\", 7)(8, NzMessageComponent_span_8_Template, 1, 0, \"span\", 8);\n i0.ɵɵelementContainerEnd();\n i0.ɵɵtemplate(9, NzMessageComponent_ng_container_9_Template, 2, 1, \"ng-container\", 9);\n i0.ɵɵelementEnd()()();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"@moveUpMotion\", ctx.instance.state);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngClass\", \"ant-message-\" + ctx.instance.type);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngSwitch\", ctx.instance.type);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngSwitchCase\", \"success\");\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngSwitchCase\", \"info\");\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngSwitchCase\", \"warning\");\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngSwitchCase\", \"error\");\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngSwitchCase\", \"loading\");\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"nzStringTemplateOutlet\", ctx.instance.content);\n }\n },\n dependencies: [NgClass, NgSwitch, NgSwitchCase, NzIconModule, i1$1.NzIconDirective, NzOutletModule, i2.NzStringTemplateOutletDirective],\n encapsulation: 2,\n data: {\n animation: [moveUpMotion]\n },\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzMessageComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: 'nz-message',\n exportAs: 'nzMessage',\n preserveWhitespaces: false,\n animations: [moveUpMotion],\n template: `\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n
\n
\n \n `,\n imports: [NgClass, NgSwitch, NgSwitchCase, NzIconModule, NzOutletModule],\n standalone: true\n }]\n }], () => [{\n type: i0.ChangeDetectorRef\n }], {\n instance: [{\n type: Input\n }],\n destroyed: [{\n type: Output\n }]\n });\n})();\nconst NZ_CONFIG_COMPONENT_NAME = 'message';\nconst NZ_MESSAGE_DEFAULT_CONFIG = {\n nzAnimate: true,\n nzDuration: 3000,\n nzMaxStack: 7,\n nzPauseOnHover: true,\n nzTop: 24,\n nzDirection: 'ltr'\n};\nclass NzMessageContainerComponent extends NzMNContainerComponent {\n constructor(cdr, nzConfigService) {\n super(cdr, nzConfigService);\n this.dir = 'ltr';\n const config = this.nzConfigService.getConfigForComponent(NZ_CONFIG_COMPONENT_NAME);\n this.dir = config?.nzDirection || 'ltr';\n }\n subscribeConfigChange() {\n this.nzConfigService.getConfigChangeEventForComponent(NZ_CONFIG_COMPONENT_NAME).pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.updateConfig();\n const config = this.nzConfigService.getConfigForComponent(NZ_CONFIG_COMPONENT_NAME);\n if (config) {\n const {\n nzDirection\n } = config;\n this.dir = nzDirection || this.dir;\n }\n });\n }\n updateConfig() {\n this.config = {\n ...NZ_MESSAGE_DEFAULT_CONFIG,\n ...this.config,\n ...this.nzConfigService.getConfigForComponent(NZ_CONFIG_COMPONENT_NAME)\n };\n this.top = toCssPixel(this.config.nzTop);\n this.cdr.markForCheck();\n }\n static {\n this.ɵfac = function NzMessageContainerComponent_Factory(t) {\n return new (t || NzMessageContainerComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.NzConfigService));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzMessageContainerComponent,\n selectors: [[\"nz-message-container\"]],\n exportAs: [\"nzMessageContainer\"],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 2,\n vars: 5,\n consts: [[1, \"ant-message\"], [3, \"instance\", \"destroyed\", 4, \"ngFor\", \"ngForOf\"], [3, \"instance\", \"destroyed\"]],\n template: function NzMessageContainerComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0);\n i0.ɵɵtemplate(1, NzMessageContainerComponent_nz_message_1_Template, 1, 1, \"nz-message\", 1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵstyleProp(\"top\", ctx.top);\n i0.ɵɵclassProp(\"ant-message-rtl\", ctx.dir === \"rtl\");\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngForOf\", ctx.instances);\n }\n },\n dependencies: [NzMessageComponent, NgForOf],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzMessageContainerComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: 'nz-message-container',\n exportAs: 'nzMessageContainer',\n preserveWhitespaces: false,\n template: `\n
\n \n
\n `,\n imports: [NzMessageComponent, NgForOf],\n standalone: true\n }]\n }], () => [{\n type: i0.ChangeDetectorRef\n }, {\n type: i1.NzConfigService\n }], null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzMessageModule {\n static {\n this.ɵfac = function NzMessageModule_Factory(t) {\n return new (t || NzMessageModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NzMessageModule,\n imports: [NzMessageContainerComponent, NzMessageComponent]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [NzMessageContainerComponent, NzMessageComponent]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzMessageModule, [{\n type: NgModule,\n args: [{\n imports: [NzMessageContainerComponent, NzMessageComponent]\n }]\n }], null, null);\n})();\nclass NzMessageService extends NzMNService {\n constructor(nzSingletonService, overlay, injector) {\n super(nzSingletonService, overlay, injector);\n this.componentPrefix = 'message-';\n }\n success(content, options) {\n return this.createInstance({\n type: 'success',\n content\n }, options);\n }\n error(content, options) {\n return this.createInstance({\n type: 'error',\n content\n }, options);\n }\n info(content, options) {\n return this.createInstance({\n type: 'info',\n content\n }, options);\n }\n warning(content, options) {\n return this.createInstance({\n type: 'warning',\n content\n }, options);\n }\n loading(content, options) {\n return this.createInstance({\n type: 'loading',\n content\n }, options);\n }\n create(type, content, options) {\n return this.createInstance({\n type,\n content\n }, options);\n }\n createInstance(message, options) {\n this.container = this.withContainer(NzMessageContainerComponent);\n return this.container.create({\n ...message,\n ...{\n createdAt: new Date(),\n messageId: this.getInstanceId(),\n options\n }\n });\n }\n static {\n this.ɵfac = function NzMessageService_Factory(t) {\n return new (t || NzMessageService)(i0.ɵɵinject(i1$2.NzSingletonService), i0.ɵɵinject(i2$1.Overlay), i0.ɵɵinject(i0.Injector));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NzMessageService,\n factory: NzMessageService.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzMessageService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: i1$2.NzSingletonService\n }, {\n type: i2$1.Overlay\n }, {\n type: i0.Injector\n }], null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NzMNComponent, NzMNContainerComponent, NzMNService, NzMessageComponent, NzMessageContainerComponent, NzMessageModule, NzMessageService };\n"], - "mappings": "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", + "mappings": "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", "names": [] } diff --git a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_slider.js b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_slider.js index d4cd7b8..506b6b8 100644 --- a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_slider.js +++ b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_slider.js @@ -1,22 +1,30 @@ import { NzToolTipModule, NzTooltipDirective -} from "./chunk-BXV7YWBX.js"; -import "./chunk-QI6CCAQD.js"; +} from "./chunk-5MZJ5XYV.js"; +import "./chunk-6RXUTAFR.js"; +import "./chunk-XAGDQPFO.js"; +import "./chunk-D5ODNR6D.js"; +import "./chunk-55A2ZGND.js"; +import "./chunk-6U656R5M.js"; import "./chunk-VOD2PKZN.js"; -import "./chunk-W3IYJMS2.js"; import { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, UP_ARROW -} from "./chunk-UMSNQQWJ.js"; -import "./chunk-5OJ3CSUZ.js"; -import "./chunk-NOIPAY33.js"; +} from "./chunk-JGP5BR6B.js"; +import "./chunk-WB57DPWD.js"; +import { + NG_VALUE_ACCESSOR +} from "./chunk-D4IIJHV7.js"; +import "./chunk-ZHMJ6SNN.js"; +import { + Directionality +} from "./chunk-6NZ2BEBG.js"; import { - Directionality, Platform -} from "./chunk-UPQZZZIG.js"; +} from "./chunk-IAC53GOD.js"; import { InputBoolean, InputNumber, @@ -27,12 +35,9 @@ import { getPrecision, isNil, silentEvent -} from "./chunk-7XTJNSRU.js"; -import "./chunk-FILHFU6K.js"; -import "./chunk-BNCUYWOH.js"; -import { - NG_VALUE_ACCESSOR -} from "./chunk-D4IIJHV7.js"; +} from "./chunk-M5GY4FCO.js"; +import "./chunk-ECVKT3ZH.js"; +import "./chunk-KI2JSLP6.js"; import "./chunk-Y4CEYMY2.js"; import "./chunk-X7WBA24Z.js"; import { diff --git a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_slider.js.map b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_slider.js.map index e8d9c39..494c2f1 100644 --- a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_slider.js.map +++ b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_slider.js.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-slider.mjs"], "sourcesContent": ["import { __decorate } from 'tslib';\nimport { RIGHT_ARROW, UP_ARROW, LEFT_ARROW, DOWN_ARROW } from '@angular/cdk/keycodes';\nimport { NgStyle, NgForOf, NgIf } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, Component, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, Input, EventEmitter, forwardRef, Optional, ViewChildren, Output, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject, fromEvent, merge } from 'rxjs';\nimport { takeUntil, filter, tap, map, distinctUntilChanged } from 'rxjs/operators';\nimport { InputBoolean, InputNumber, ensureNumberInRange, silentEvent, getPrecision, getPercent, getElementOffset, isNil, arraysEqual } from 'ng-zorro-antd/core/util';\nimport * as i2 from 'ng-zorro-antd/tooltip';\nimport { NzTooltipDirective, NzToolTipModule } from 'ng-zorro-antd/tooltip';\nimport * as i2$1 from '@angular/cdk/platform';\nimport * as i3 from '@angular/cdk/bidi';\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst _c0 = [\"handle\"];\nconst _c1 = a0 => ({\n $implicit: a0\n});\nfunction NzSliderMarksComponent_span_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 2);\n }\n if (rf & 2) {\n const attr_r1 = ctx.$implicit;\n i0.ɵɵclassProp(\"ant-slider-mark-active\", attr_r1.active);\n i0.ɵɵproperty(\"ngStyle\", attr_r1.style)(\"innerHTML\", attr_r1.label, i0.ɵɵsanitizeHtml);\n }\n}\nfunction NzSliderStepComponent_span_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 2);\n }\n if (rf & 2) {\n const mark_r1 = ctx.$implicit;\n i0.ɵɵclassProp(\"ant-slider-dot-active\", mark_r1.active);\n i0.ɵɵproperty(\"ngStyle\", mark_r1.style);\n }\n}\nconst _c2 = [\"slider\"];\nfunction NzSliderComponent_nz_slider_step_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"nz-slider-step\", 6);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"vertical\", ctx_r1.nzVertical)(\"min\", ctx_r1.nzMin)(\"max\", ctx_r1.nzMax)(\"lowerBound\", ctx_r1.bounds.lower)(\"upperBound\", ctx_r1.bounds.upper)(\"marksArray\", ctx_r1.marksArray)(\"included\", ctx_r1.nzIncluded)(\"reverse\", ctx_r1.nzReverse);\n }\n}\nfunction NzSliderComponent_nz_slider_handle_5_Template(rf, ctx) {\n if (rf & 1) {\n const _r7 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"nz-slider-handle\", 7);\n i0.ɵɵlistener(\"focusin\", function NzSliderComponent_nz_slider_handle_5_Template_nz_slider_handle_focusin_0_listener() {\n const restoredCtx = i0.ɵɵrestoreView(_r7);\n const handleIndex_r5 = restoredCtx.index;\n const ctx_r6 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r6.onHandleFocusIn(handleIndex_r5));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const handle_r4 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"vertical\", ctx_r2.nzVertical)(\"reverse\", ctx_r2.nzReverse)(\"offset\", handle_r4.offset)(\"value\", handle_r4.value)(\"active\", handle_r4.active)(\"tooltipFormatter\", ctx_r2.nzTipFormatter)(\"tooltipVisible\", ctx_r2.nzTooltipVisible)(\"tooltipPlacement\", ctx_r2.nzTooltipPlacement)(\"dir\", ctx_r2.dir);\n }\n}\nfunction NzSliderComponent_nz_slider_marks_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"nz-slider-marks\", 6);\n }\n if (rf & 2) {\n const ctx_r3 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"vertical\", ctx_r3.nzVertical)(\"min\", ctx_r3.nzMin)(\"max\", ctx_r3.nzMax)(\"lowerBound\", ctx_r3.bounds.lower)(\"upperBound\", ctx_r3.bounds.upper)(\"marksArray\", ctx_r3.marksArray)(\"included\", ctx_r3.nzIncluded)(\"reverse\", ctx_r3.nzReverse);\n }\n}\nclass NzSliderService {\n constructor() {\n this.isDragging = false;\n }\n static {\n this.ɵfac = function NzSliderService_Factory(t) {\n return new (t || NzSliderService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NzSliderService,\n factory: NzSliderService.ɵfac\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzSliderService, [{\n type: Injectable\n }], null, null);\n})();\nclass NzSliderHandleComponent {\n constructor(sliderService, cdr) {\n this.sliderService = sliderService;\n this.cdr = cdr;\n this.tooltipVisible = 'default';\n this.active = false;\n this.dir = 'ltr';\n this.style = {};\n this.enterHandle = () => {\n if (!this.sliderService.isDragging) {\n this.toggleTooltip(true);\n this.updateTooltipPosition();\n this.cdr.detectChanges();\n }\n };\n this.leaveHandle = () => {\n if (!this.sliderService.isDragging) {\n this.toggleTooltip(false);\n this.cdr.detectChanges();\n }\n };\n }\n ngOnChanges(changes) {\n const {\n offset,\n value,\n active,\n tooltipVisible,\n reverse,\n dir\n } = changes;\n if (offset || reverse || dir) {\n this.updateStyle();\n }\n if (value) {\n this.updateTooltipTitle();\n this.updateTooltipPosition();\n }\n if (active) {\n if (active.currentValue) {\n this.toggleTooltip(true);\n } else {\n this.toggleTooltip(false);\n }\n }\n if (tooltipVisible?.currentValue === 'always') {\n Promise.resolve().then(() => this.toggleTooltip(true, true));\n }\n }\n focus() {\n this.handleEl?.nativeElement.focus();\n }\n toggleTooltip(show, force = false) {\n if (!force && (this.tooltipVisible !== 'default' || !this.tooltip)) {\n return;\n }\n if (show) {\n this.tooltip?.show();\n } else {\n this.tooltip?.hide();\n }\n }\n updateTooltipTitle() {\n if (this.tooltipFormatter) {\n this.tooltipTitle = typeof this.tooltipFormatter === 'function' ? this.tooltipFormatter(this.value) : this.tooltipFormatter;\n } else {\n this.tooltipTitle = `${this.value}`;\n }\n }\n updateTooltipPosition() {\n if (this.tooltip) {\n Promise.resolve().then(() => this.tooltip?.updatePosition());\n }\n }\n updateStyle() {\n const vertical = this.vertical;\n const reverse = this.reverse;\n const offset = this.offset;\n const positionStyle = vertical ? {\n [reverse ? 'top' : 'bottom']: `${offset}%`,\n [reverse ? 'bottom' : 'top']: 'auto',\n transform: reverse ? null : `translateY(+50%)`\n } : {\n ...this.getHorizontalStylePosition(),\n transform: `translateX(${reverse ? this.dir === 'rtl' ? '-' : '+' : this.dir === 'rtl' ? '+' : '-'}50%)`\n };\n this.style = positionStyle;\n this.cdr.markForCheck();\n }\n getHorizontalStylePosition() {\n let left = this.reverse ? 'auto' : `${this.offset}%`;\n let right = this.reverse ? `${this.offset}%` : 'auto';\n if (this.dir === 'rtl') {\n const tmp = left;\n left = right;\n right = tmp;\n }\n return {\n left,\n right\n };\n }\n static {\n this.ɵfac = function NzSliderHandleComponent_Factory(t) {\n return new (t || NzSliderHandleComponent)(i0.ɵɵdirectiveInject(NzSliderService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzSliderHandleComponent,\n selectors: [[\"nz-slider-handle\"]],\n viewQuery: function NzSliderHandleComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c0, 5);\n i0.ɵɵviewQuery(NzTooltipDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.handleEl = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tooltip = _t.first);\n }\n },\n hostBindings: function NzSliderHandleComponent_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"mouseenter\", function NzSliderHandleComponent_mouseenter_HostBindingHandler() {\n return ctx.enterHandle();\n })(\"mouseleave\", function NzSliderHandleComponent_mouseleave_HostBindingHandler() {\n return ctx.leaveHandle();\n });\n }\n },\n inputs: {\n vertical: \"vertical\",\n reverse: \"reverse\",\n offset: \"offset\",\n value: \"value\",\n tooltipVisible: \"tooltipVisible\",\n tooltipPlacement: \"tooltipPlacement\",\n tooltipFormatter: \"tooltipFormatter\",\n active: \"active\",\n dir: \"dir\"\n },\n exportAs: [\"nzSliderHandle\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 2,\n vars: 7,\n consts: [[\"tabindex\", \"0\", \"nz-tooltip\", \"\", 1, \"ant-slider-handle\", 3, \"ngStyle\", \"nzTooltipTitle\", \"nzTooltipTitleContext\", \"nzTooltipTrigger\", \"nzTooltipPlacement\"], [\"handle\", \"\"]],\n template: function NzSliderHandleComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 0, 1);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngStyle\", ctx.style)(\"nzTooltipTitle\", ctx.tooltipFormatter === null || ctx.tooltipVisible === \"never\" ? null : ctx.tooltipTitle)(\"nzTooltipTitleContext\", i0.ɵɵpureFunction1(5, _c1, ctx.value))(\"nzTooltipTrigger\", null)(\"nzTooltipPlacement\", ctx.tooltipPlacement);\n }\n },\n dependencies: [NzToolTipModule, i2.NzTooltipDirective, NgStyle],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n__decorate([InputBoolean()], NzSliderHandleComponent.prototype, \"active\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzSliderHandleComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: 'nz-slider-handle',\n exportAs: 'nzSliderHandle',\n preserveWhitespaces: false,\n template: `\n \n `,\n host: {\n '(mouseenter)': 'enterHandle()',\n '(mouseleave)': 'leaveHandle()'\n },\n imports: [NzToolTipModule, NgStyle],\n standalone: true\n }]\n }], () => [{\n type: NzSliderService\n }, {\n type: i0.ChangeDetectorRef\n }], {\n handleEl: [{\n type: ViewChild,\n args: ['handle', {\n static: false\n }]\n }],\n tooltip: [{\n type: ViewChild,\n args: [NzTooltipDirective, {\n static: false\n }]\n }],\n vertical: [{\n type: Input\n }],\n reverse: [{\n type: Input\n }],\n offset: [{\n type: Input\n }],\n value: [{\n type: Input\n }],\n tooltipVisible: [{\n type: Input\n }],\n tooltipPlacement: [{\n type: Input\n }],\n tooltipFormatter: [{\n type: Input\n }],\n active: [{\n type: Input\n }],\n dir: [{\n type: Input\n }]\n });\n})();\nclass NzSliderMarksComponent {\n constructor() {\n this.lowerBound = null;\n this.upperBound = null;\n this.marksArray = [];\n this.vertical = false;\n this.included = false;\n this.marks = [];\n }\n ngOnChanges(changes) {\n const {\n marksArray,\n lowerBound,\n upperBound,\n reverse\n } = changes;\n if (marksArray || reverse) {\n this.buildMarks();\n }\n if (marksArray || lowerBound || upperBound || reverse) {\n this.togglePointActive();\n }\n }\n trackById(_index, mark) {\n return mark.value;\n }\n buildMarks() {\n const range = this.max - this.min;\n this.marks = this.marksArray.map(mark => {\n const {\n value,\n offset,\n config\n } = mark;\n const style = this.getMarkStyles(value, range, config);\n const label = isConfigObject(config) ? config.label : config;\n return {\n label,\n offset,\n style,\n value,\n config,\n active: false\n };\n });\n }\n getMarkStyles(value, range, config) {\n let style;\n const markValue = this.reverse ? this.max + this.min - value : value;\n if (this.vertical) {\n style = {\n marginBottom: '-50%',\n bottom: `${(markValue - this.min) / range * 100}%`\n };\n } else {\n style = {\n transform: `translate3d(-50%, 0, 0)`,\n left: `${(markValue - this.min) / range * 100}%`\n };\n }\n if (isConfigObject(config) && config.style) {\n style = {\n ...style,\n ...config.style\n };\n }\n return style;\n }\n togglePointActive() {\n if (this.marks && this.lowerBound !== null && this.upperBound !== null) {\n this.marks.forEach(mark => {\n const value = mark.value;\n const isActive = !this.included && value === this.upperBound || this.included && value <= this.upperBound && value >= this.lowerBound;\n mark.active = isActive;\n });\n }\n }\n static {\n this.ɵfac = function NzSliderMarksComponent_Factory(t) {\n return new (t || NzSliderMarksComponent)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzSliderMarksComponent,\n selectors: [[\"nz-slider-marks\"]],\n inputs: {\n lowerBound: \"lowerBound\",\n upperBound: \"upperBound\",\n marksArray: \"marksArray\",\n min: \"min\",\n max: \"max\",\n vertical: \"vertical\",\n included: \"included\",\n reverse: \"reverse\"\n },\n exportAs: [\"nzSliderMarks\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 2,\n vars: 2,\n consts: [[1, \"ant-slider-mark\"], [\"class\", \"ant-slider-mark-text\", 3, \"ant-slider-mark-active\", \"ngStyle\", \"innerHTML\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [1, \"ant-slider-mark-text\", 3, \"ngStyle\", \"innerHTML\"]],\n template: function NzSliderMarksComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0);\n i0.ɵɵtemplate(1, NzSliderMarksComponent_span_1_Template, 1, 4, \"span\", 1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngForOf\", ctx.marks)(\"ngForTrackBy\", ctx.trackById);\n }\n },\n dependencies: [NgStyle, NgForOf],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n__decorate([InputBoolean()], NzSliderMarksComponent.prototype, \"vertical\", void 0);\n__decorate([InputBoolean()], NzSliderMarksComponent.prototype, \"included\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzSliderMarksComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n selector: 'nz-slider-marks',\n exportAs: 'nzSliderMarks',\n template: `\n
\n \n
\n `,\n imports: [NgStyle, NgForOf],\n standalone: true\n }]\n }], null, {\n lowerBound: [{\n type: Input\n }],\n upperBound: [{\n type: Input\n }],\n marksArray: [{\n type: Input\n }],\n min: [{\n type: Input\n }],\n max: [{\n type: Input\n }],\n vertical: [{\n type: Input\n }],\n included: [{\n type: Input\n }],\n reverse: [{\n type: Input\n }]\n });\n})();\nfunction isConfigObject(config) {\n return typeof config !== 'string';\n}\nclass NzSliderStepComponent {\n constructor() {\n this.lowerBound = null;\n this.upperBound = null;\n this.marksArray = [];\n this.vertical = false;\n this.included = false;\n this.steps = [];\n }\n ngOnChanges(changes) {\n const {\n marksArray,\n lowerBound,\n upperBound,\n reverse\n } = changes;\n if (marksArray || reverse) {\n this.buildSteps();\n }\n if (marksArray || lowerBound || upperBound || reverse) {\n this.togglePointActive();\n }\n }\n trackById(_index, step) {\n return step.value;\n }\n buildSteps() {\n const orient = this.vertical ? 'bottom' : 'left';\n this.steps = this.marksArray.map(mark => {\n const {\n value,\n config\n } = mark;\n let offset = mark.offset;\n const range = this.max - this.min;\n if (this.reverse) {\n offset = (this.max - value) / range * 100;\n }\n return {\n value,\n offset,\n config,\n active: false,\n style: {\n [orient]: `${offset}%`,\n transform: 'translateX(-50%)'\n }\n };\n });\n }\n togglePointActive() {\n if (this.steps && this.lowerBound !== null && this.upperBound !== null) {\n this.steps.forEach(step => {\n const value = step.value;\n const isActive = !this.included && value === this.upperBound || this.included && value <= this.upperBound && value >= this.lowerBound;\n step.active = isActive;\n });\n }\n }\n static {\n this.ɵfac = function NzSliderStepComponent_Factory(t) {\n return new (t || NzSliderStepComponent)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzSliderStepComponent,\n selectors: [[\"nz-slider-step\"]],\n inputs: {\n lowerBound: \"lowerBound\",\n upperBound: \"upperBound\",\n marksArray: \"marksArray\",\n min: \"min\",\n max: \"max\",\n vertical: \"vertical\",\n included: \"included\",\n reverse: \"reverse\"\n },\n exportAs: [\"nzSliderStep\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 2,\n vars: 2,\n consts: [[1, \"ant-slider-step\"], [\"class\", \"ant-slider-dot\", 3, \"ant-slider-dot-active\", \"ngStyle\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [1, \"ant-slider-dot\", 3, \"ngStyle\"]],\n template: function NzSliderStepComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0);\n i0.ɵɵtemplate(1, NzSliderStepComponent_span_1_Template, 1, 3, \"span\", 1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngForOf\", ctx.steps)(\"ngForTrackBy\", ctx.trackById);\n }\n },\n dependencies: [NgStyle, NgForOf],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n__decorate([InputBoolean()], NzSliderStepComponent.prototype, \"vertical\", void 0);\n__decorate([InputBoolean()], NzSliderStepComponent.prototype, \"included\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzSliderStepComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: 'nz-slider-step',\n exportAs: 'nzSliderStep',\n preserveWhitespaces: false,\n template: `\n
\n \n
\n `,\n imports: [NgStyle, NgForOf],\n standalone: true\n }]\n }], null, {\n lowerBound: [{\n type: Input\n }],\n upperBound: [{\n type: Input\n }],\n marksArray: [{\n type: Input\n }],\n min: [{\n type: Input\n }],\n max: [{\n type: Input\n }],\n vertical: [{\n type: Input\n }],\n included: [{\n type: Input\n }],\n reverse: [{\n type: Input\n }]\n });\n})();\nclass NzSliderTrackComponent {\n constructor() {\n this.offset = 0;\n this.reverse = false;\n this.dir = 'ltr';\n this.length = 0;\n this.vertical = false;\n this.included = false;\n this.style = {};\n }\n ngOnChanges() {\n const vertical = this.vertical;\n const reverse = this.reverse;\n const visibility = this.included ? 'visible' : 'hidden';\n const offset = this.offset;\n const length = this.length;\n const positonStyle = vertical ? {\n [reverse ? 'top' : 'bottom']: `${offset}%`,\n [reverse ? 'bottom' : 'top']: 'auto',\n height: `${length}%`,\n visibility\n } : {\n ...this.getHorizontalStylePosition(),\n width: `${length}%`,\n visibility\n };\n this.style = positonStyle;\n }\n getHorizontalStylePosition() {\n let left = this.reverse ? 'auto' : `${this.offset}%`;\n let right = this.reverse ? `${this.offset}%` : 'auto';\n if (this.dir === 'rtl') {\n const tmp = left;\n left = right;\n right = tmp;\n }\n return {\n left,\n right\n };\n }\n static {\n this.ɵfac = function NzSliderTrackComponent_Factory(t) {\n return new (t || NzSliderTrackComponent)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzSliderTrackComponent,\n selectors: [[\"nz-slider-track\"]],\n inputs: {\n offset: \"offset\",\n reverse: \"reverse\",\n dir: \"dir\",\n length: \"length\",\n vertical: \"vertical\",\n included: \"included\"\n },\n exportAs: [\"nzSliderTrack\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 1,\n vars: 1,\n consts: [[1, \"ant-slider-track\", 3, \"ngStyle\"]],\n template: function NzSliderTrackComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngStyle\", ctx.style);\n }\n },\n dependencies: [NgStyle],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n__decorate([InputNumber()], NzSliderTrackComponent.prototype, \"offset\", void 0);\n__decorate([InputBoolean()], NzSliderTrackComponent.prototype, \"reverse\", void 0);\n__decorate([InputNumber()], NzSliderTrackComponent.prototype, \"length\", void 0);\n__decorate([InputBoolean()], NzSliderTrackComponent.prototype, \"vertical\", void 0);\n__decorate([InputBoolean()], NzSliderTrackComponent.prototype, \"included\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzSliderTrackComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: 'nz-slider-track',\n exportAs: 'nzSliderTrack',\n preserveWhitespaces: false,\n template: `
`,\n imports: [NgStyle],\n standalone: true\n }]\n }], null, {\n offset: [{\n type: Input\n }],\n reverse: [{\n type: Input\n }],\n dir: [{\n type: Input\n }],\n length: [{\n type: Input\n }],\n vertical: [{\n type: Input\n }],\n included: [{\n type: Input\n }]\n });\n})();\nclass NzSliderComponent {\n constructor(sliderService, cdr, platform, directionality) {\n this.sliderService = sliderService;\n this.cdr = cdr;\n this.platform = platform;\n this.directionality = directionality;\n this.nzDisabled = false;\n this.nzDots = false;\n this.nzIncluded = true;\n this.nzRange = false;\n this.nzVertical = false;\n this.nzReverse = false;\n this.nzMarks = null;\n this.nzMax = 100;\n this.nzMin = 0;\n this.nzStep = 1;\n this.nzTooltipVisible = 'default';\n this.nzTooltipPlacement = 'top';\n this.nzOnAfterChange = new EventEmitter();\n this.value = null;\n this.cacheSliderStart = null;\n this.cacheSliderLength = null;\n this.activeValueIndex = undefined; // Current activated handle's index ONLY for range=true\n this.track = {\n offset: null,\n length: null\n }; // Track's offset and length\n this.handles = []; // Handles' offset\n this.marksArray = null; // \"steps\" in array type with more data & FILTER out the invalid mark\n this.bounds = {\n lower: null,\n upper: null\n }; // now for nz-slider-step\n this.dir = 'ltr';\n this.destroy$ = new Subject();\n this.isNzDisableFirstChange = true;\n }\n ngOnInit() {\n this.dir = this.directionality.value;\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe(direction => {\n this.dir = direction;\n this.cdr.detectChanges();\n this.updateTrackAndHandles();\n this.onValueChange(this.getValue(true));\n });\n this.handles = generateHandlers(this.nzRange ? 2 : 1);\n this.marksArray = this.nzMarks ? this.generateMarkItems(this.nzMarks) : null;\n this.bindDraggingHandlers();\n this.toggleDragDisabled(this.nzDisabled);\n if (this.getValue() === null) {\n this.setValue(this.formatValue(null));\n }\n }\n ngOnChanges(changes) {\n const {\n nzDisabled,\n nzMarks,\n nzRange\n } = changes;\n if (nzDisabled && !nzDisabled.firstChange) {\n this.toggleDragDisabled(nzDisabled.currentValue);\n } else if (nzMarks && !nzMarks.firstChange) {\n this.marksArray = this.nzMarks ? this.generateMarkItems(this.nzMarks) : null;\n } else if (nzRange && !nzRange.firstChange) {\n this.handles = generateHandlers(nzRange.currentValue ? 2 : 1);\n this.setValue(this.formatValue(null));\n }\n }\n ngOnDestroy() {\n this.unsubscribeDrag();\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n writeValue(val) {\n this.setValue(val, true);\n }\n onValueChange(_value) {}\n onTouched() {}\n registerOnChange(fn) {\n this.onValueChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n setDisabledState(isDisabled) {\n this.nzDisabled = this.isNzDisableFirstChange && this.nzDisabled || isDisabled;\n this.isNzDisableFirstChange = false;\n this.toggleDragDisabled(this.nzDisabled);\n this.cdr.markForCheck();\n }\n /**\n * Event handler is only triggered when a slider handler is focused.\n */\n onKeyDown(e) {\n if (this.nzDisabled) {\n return;\n }\n const code = e.keyCode;\n const isIncrease = code === RIGHT_ARROW || code === UP_ARROW;\n const isDecrease = code === LEFT_ARROW || code === DOWN_ARROW;\n if (!(isIncrease || isDecrease)) {\n return;\n }\n e.preventDefault();\n let step = (isDecrease ? -this.nzStep : this.nzStep) * (this.nzReverse ? -1 : 1);\n step = this.dir === 'rtl' ? step * -1 : step;\n const newVal = this.nzRange ? this.value[this.activeValueIndex] + step : this.value + step;\n this.setActiveValue(ensureNumberInRange(newVal, this.nzMin, this.nzMax));\n this.nzOnAfterChange.emit(this.getValue(true));\n }\n onHandleFocusIn(index) {\n this.activeValueIndex = index;\n }\n setValue(value, isWriteValue = false) {\n if (isWriteValue) {\n this.value = this.formatValue(value);\n this.updateTrackAndHandles();\n } else if (!valuesEqual(this.value, value)) {\n this.value = value;\n this.updateTrackAndHandles();\n this.onValueChange(this.getValue(true));\n }\n }\n getValue(cloneAndSort = false) {\n if (cloneAndSort && this.value && isValueRange(this.value)) {\n return [...this.value].sort((a, b) => a - b);\n }\n return this.value;\n }\n /**\n * Clone & sort current value and convert them to offsets, then return the new one.\n */\n getValueToOffset(value) {\n let normalizedValue = value;\n if (typeof normalizedValue === 'undefined') {\n normalizedValue = this.getValue(true);\n }\n return isValueRange(normalizedValue) ? normalizedValue.map(val => this.valueToOffset(val)) : this.valueToOffset(normalizedValue);\n }\n /**\n * Find the closest value to be activated.\n */\n setActiveValueIndex(pointerValue) {\n const value = this.getValue();\n if (isValueRange(value)) {\n let minimal = null;\n let gap;\n let activeIndex = -1;\n value.forEach((val, index) => {\n gap = Math.abs(pointerValue - val);\n if (minimal === null || gap < minimal) {\n minimal = gap;\n activeIndex = index;\n }\n });\n this.activeValueIndex = activeIndex;\n this.handlerComponents.toArray()[activeIndex].focus();\n } else {\n this.handlerComponents.toArray()[0].focus();\n }\n }\n setActiveValue(pointerValue) {\n if (isValueRange(this.value)) {\n const newValue = [...this.value];\n newValue[this.activeValueIndex] = pointerValue;\n this.setValue(newValue);\n } else {\n this.setValue(pointerValue);\n }\n }\n /**\n * Update track and handles' position and length.\n */\n updateTrackAndHandles() {\n const value = this.getValue();\n const offset = this.getValueToOffset(value);\n const valueSorted = this.getValue(true);\n const offsetSorted = this.getValueToOffset(valueSorted);\n const boundParts = isValueRange(valueSorted) ? valueSorted : [0, valueSorted];\n const trackParts = isValueRange(offsetSorted) ? [offsetSorted[0], offsetSorted[1] - offsetSorted[0]] : [0, offsetSorted];\n this.handles.forEach((handle, index) => {\n handle.offset = isValueRange(offset) ? offset[index] : offset;\n handle.value = isValueRange(value) ? value[index] : value || 0;\n });\n [this.bounds.lower, this.bounds.upper] = boundParts;\n [this.track.offset, this.track.length] = trackParts;\n this.cdr.markForCheck();\n }\n onDragStart(value) {\n this.toggleDragMoving(true);\n this.cacheSliderProperty();\n this.setActiveValueIndex(this.getLogicalValue(value));\n this.setActiveValue(this.getLogicalValue(value));\n this.showHandleTooltip(this.nzRange ? this.activeValueIndex : 0);\n }\n onDragMove(value) {\n this.setActiveValue(this.getLogicalValue(value));\n this.cdr.markForCheck();\n }\n getLogicalValue(value) {\n if (this.nzReverse) {\n if (!this.nzVertical && this.dir === 'rtl') {\n return value;\n }\n return this.nzMax - value + this.nzMin;\n }\n if (!this.nzVertical && this.dir === 'rtl') {\n return this.nzMax - value + this.nzMin;\n }\n return value;\n }\n onDragEnd() {\n this.nzOnAfterChange.emit(this.getValue(true));\n this.toggleDragMoving(false);\n this.cacheSliderProperty(true);\n this.hideAllHandleTooltip();\n this.cdr.markForCheck();\n }\n /**\n * Create user interactions handles.\n */\n bindDraggingHandlers() {\n if (!this.platform.isBrowser) {\n return;\n }\n const pluckFunc = keys => event => keys.reduce((acc, key) => acc[key] || acc, event);\n const sliderDOM = this.slider.nativeElement;\n const orientField = this.nzVertical ? 'pageY' : 'pageX';\n const mouse = {\n start: 'mousedown',\n move: 'mousemove',\n end: 'mouseup',\n pluckKey: [orientField]\n };\n const touch = {\n start: 'touchstart',\n move: 'touchmove',\n end: 'touchend',\n pluckKey: ['touches', '0', orientField],\n filter: e => e instanceof TouchEvent\n };\n [mouse, touch].forEach(source => {\n const {\n start,\n move,\n end,\n pluckKey,\n filter: filterFunc = () => true\n } = source;\n source.startPlucked$ = fromEvent(sliderDOM, start).pipe(filter(filterFunc), tap(silentEvent), map(pluckFunc(pluckKey)), map(position => this.findClosestValue(position)));\n source.end$ = fromEvent(document, end);\n source.moveResolved$ = fromEvent(document, move).pipe(filter(filterFunc), tap(silentEvent), map(pluckFunc(pluckKey)), distinctUntilChanged(), map(position => this.findClosestValue(position)), distinctUntilChanged(), takeUntil(source.end$));\n });\n this.dragStart$ = merge(mouse.startPlucked$, touch.startPlucked$);\n this.dragMove$ = merge(mouse.moveResolved$, touch.moveResolved$);\n this.dragEnd$ = merge(mouse.end$, touch.end$);\n }\n subscribeDrag(periods = ['start', 'move', 'end']) {\n if (periods.indexOf('start') !== -1 && this.dragStart$ && !this.dragStart_) {\n this.dragStart_ = this.dragStart$.subscribe(this.onDragStart.bind(this));\n }\n if (periods.indexOf('move') !== -1 && this.dragMove$ && !this.dragMove_) {\n this.dragMove_ = this.dragMove$.subscribe(this.onDragMove.bind(this));\n }\n if (periods.indexOf('end') !== -1 && this.dragEnd$ && !this.dragEnd_) {\n this.dragEnd_ = this.dragEnd$.subscribe(this.onDragEnd.bind(this));\n }\n }\n unsubscribeDrag(periods = ['start', 'move', 'end']) {\n if (periods.indexOf('start') !== -1 && this.dragStart_) {\n this.dragStart_.unsubscribe();\n this.dragStart_ = null;\n }\n if (periods.indexOf('move') !== -1 && this.dragMove_) {\n this.dragMove_.unsubscribe();\n this.dragMove_ = null;\n }\n if (periods.indexOf('end') !== -1 && this.dragEnd_) {\n this.dragEnd_.unsubscribe();\n this.dragEnd_ = null;\n }\n }\n toggleDragMoving(movable) {\n const periods = ['move', 'end'];\n if (movable) {\n this.sliderService.isDragging = true;\n this.subscribeDrag(periods);\n } else {\n this.sliderService.isDragging = false;\n this.unsubscribeDrag(periods);\n }\n }\n toggleDragDisabled(disabled) {\n if (disabled) {\n this.unsubscribeDrag();\n } else {\n this.subscribeDrag(['start']);\n }\n }\n findClosestValue(position) {\n const sliderStart = this.getSliderStartPosition();\n const sliderLength = this.getSliderLength();\n const ratio = ensureNumberInRange((position - sliderStart) / sliderLength, 0, 1);\n const val = (this.nzMax - this.nzMin) * (this.nzVertical ? 1 - ratio : ratio) + this.nzMin;\n const points = this.nzMarks === null ? [] : Object.keys(this.nzMarks).map(parseFloat).sort((a, b) => a - b);\n if (this.nzStep !== 0 && !this.nzDots) {\n const closestOne = Math.round(val / this.nzStep) * this.nzStep;\n points.push(closestOne);\n }\n const gaps = points.map(point => Math.abs(val - point));\n const closest = points[gaps.indexOf(Math.min(...gaps))];\n // return parseFloat(closest.toFixed(getPrecision(this.nzStep)));\n return this.nzStep === 0 ? closest : parseFloat(closest.toFixed(getPrecision(this.nzStep)));\n }\n valueToOffset(value) {\n return getPercent(this.nzMin, this.nzMax, value);\n }\n getSliderStartPosition() {\n if (this.cacheSliderStart !== null) {\n return this.cacheSliderStart;\n }\n const offset = getElementOffset(this.slider.nativeElement);\n return this.nzVertical ? offset.top : offset.left;\n }\n getSliderLength() {\n if (this.cacheSliderLength !== null) {\n return this.cacheSliderLength;\n }\n const sliderDOM = this.slider.nativeElement;\n return this.nzVertical ? sliderDOM.clientHeight : sliderDOM.clientWidth;\n }\n /**\n * Cache DOM layout/reflow operations for performance (may not necessary?)\n */\n cacheSliderProperty(remove = false) {\n this.cacheSliderStart = remove ? null : this.getSliderStartPosition();\n this.cacheSliderLength = remove ? null : this.getSliderLength();\n }\n formatValue(value) {\n if (isNil(value)) {\n return this.nzRange ? [this.nzMin, this.nzMax] : this.nzMin;\n } else if (assertValueValid(value, this.nzRange)) {\n return isValueRange(value) ? value.map(val => ensureNumberInRange(val, this.nzMin, this.nzMax)) : ensureNumberInRange(value, this.nzMin, this.nzMax);\n } else {\n return this.nzDefaultValue ? this.nzDefaultValue : this.nzRange ? [this.nzMin, this.nzMax] : this.nzMin;\n }\n }\n /**\n * Show one handle's tooltip and hide others'.\n */\n showHandleTooltip(handleIndex = 0) {\n this.handles.forEach((handle, index) => {\n handle.active = index === handleIndex;\n });\n }\n hideAllHandleTooltip() {\n this.handles.forEach(handle => handle.active = false);\n }\n generateMarkItems(marks) {\n const marksArray = [];\n for (const key in marks) {\n if (marks.hasOwnProperty(key)) {\n const mark = marks[key];\n const val = typeof key === 'number' ? key : parseFloat(key);\n if (val >= this.nzMin && val <= this.nzMax) {\n marksArray.push({\n value: val,\n offset: this.valueToOffset(val),\n config: mark\n });\n }\n }\n }\n return marksArray.length ? marksArray : null;\n }\n static {\n this.ɵfac = function NzSliderComponent_Factory(t) {\n return new (t || NzSliderComponent)(i0.ɵɵdirectiveInject(NzSliderService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i2$1.Platform), i0.ɵɵdirectiveInject(i3.Directionality, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzSliderComponent,\n selectors: [[\"nz-slider\"]],\n viewQuery: function NzSliderComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c2, 7);\n i0.ɵɵviewQuery(NzSliderHandleComponent, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.slider = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.handlerComponents = _t);\n }\n },\n hostBindings: function NzSliderComponent_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"keydown\", function NzSliderComponent_keydown_HostBindingHandler($event) {\n return ctx.onKeyDown($event);\n });\n }\n },\n inputs: {\n nzDisabled: \"nzDisabled\",\n nzDots: \"nzDots\",\n nzIncluded: \"nzIncluded\",\n nzRange: \"nzRange\",\n nzVertical: \"nzVertical\",\n nzReverse: \"nzReverse\",\n nzDefaultValue: \"nzDefaultValue\",\n nzMarks: \"nzMarks\",\n nzMax: \"nzMax\",\n nzMin: \"nzMin\",\n nzStep: \"nzStep\",\n nzTooltipVisible: \"nzTooltipVisible\",\n nzTooltipPlacement: \"nzTooltipPlacement\",\n nzTipFormatter: \"nzTipFormatter\"\n },\n outputs: {\n nzOnAfterChange: \"nzOnAfterChange\"\n },\n exportAs: [\"nzSlider\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NzSliderComponent),\n multi: true\n }, NzSliderService]), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 7,\n vars: 17,\n consts: [[1, \"ant-slider\"], [\"slider\", \"\"], [1, \"ant-slider-rail\"], [3, \"vertical\", \"included\", \"offset\", \"length\", \"reverse\", \"dir\"], [3, \"vertical\", \"min\", \"max\", \"lowerBound\", \"upperBound\", \"marksArray\", \"included\", \"reverse\", 4, \"ngIf\"], [3, \"vertical\", \"reverse\", \"offset\", \"value\", \"active\", \"tooltipFormatter\", \"tooltipVisible\", \"tooltipPlacement\", \"dir\", \"focusin\", 4, \"ngFor\", \"ngForOf\"], [3, \"vertical\", \"min\", \"max\", \"lowerBound\", \"upperBound\", \"marksArray\", \"included\", \"reverse\"], [3, \"vertical\", \"reverse\", \"offset\", \"value\", \"active\", \"tooltipFormatter\", \"tooltipVisible\", \"tooltipPlacement\", \"dir\", \"focusin\"]],\n template: function NzSliderComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0, 1);\n i0.ɵɵelement(2, \"div\", 2)(3, \"nz-slider-track\", 3);\n i0.ɵɵtemplate(4, NzSliderComponent_nz_slider_step_4_Template, 1, 8, \"nz-slider-step\", 4)(5, NzSliderComponent_nz_slider_handle_5_Template, 1, 9, \"nz-slider-handle\", 5)(6, NzSliderComponent_nz_slider_marks_6_Template, 1, 8, \"nz-slider-marks\", 4);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"ant-slider-rtl\", ctx.dir === \"rtl\")(\"ant-slider-disabled\", ctx.nzDisabled)(\"ant-slider-vertical\", ctx.nzVertical)(\"ant-slider-with-marks\", ctx.marksArray);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"vertical\", ctx.nzVertical)(\"included\", ctx.nzIncluded)(\"offset\", ctx.track.offset)(\"length\", ctx.track.length)(\"reverse\", ctx.nzReverse)(\"dir\", ctx.dir);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx.marksArray);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngForOf\", ctx.handles);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx.marksArray);\n }\n },\n dependencies: [NzSliderTrackComponent, NzSliderStepComponent, NzSliderHandleComponent, NgForOf, NzSliderMarksComponent, NgIf],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n__decorate([InputBoolean()], NzSliderComponent.prototype, \"nzDisabled\", void 0);\n__decorate([InputBoolean()], NzSliderComponent.prototype, \"nzDots\", void 0);\n__decorate([InputBoolean()], NzSliderComponent.prototype, \"nzIncluded\", void 0);\n__decorate([InputBoolean()], NzSliderComponent.prototype, \"nzRange\", void 0);\n__decorate([InputBoolean()], NzSliderComponent.prototype, \"nzVertical\", void 0);\n__decorate([InputBoolean()], NzSliderComponent.prototype, \"nzReverse\", void 0);\n__decorate([InputNumber()], NzSliderComponent.prototype, \"nzMax\", void 0);\n__decorate([InputNumber()], NzSliderComponent.prototype, \"nzMin\", void 0);\n__decorate([InputNumber()], NzSliderComponent.prototype, \"nzStep\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzSliderComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: 'nz-slider',\n exportAs: 'nzSlider',\n preserveWhitespaces: false,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NzSliderComponent),\n multi: true\n }, NzSliderService],\n host: {\n '(keydown)': 'onKeyDown($event)'\n },\n template: `\n \n
\n \n \n \n \n \n `,\n imports: [NzSliderTrackComponent, NzSliderStepComponent, NzSliderHandleComponent, NgForOf, NzSliderMarksComponent, NgIf],\n standalone: true\n }]\n }], () => [{\n type: NzSliderService\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: i2$1.Platform\n }, {\n type: i3.Directionality,\n decorators: [{\n type: Optional\n }]\n }], {\n slider: [{\n type: ViewChild,\n args: ['slider', {\n static: true\n }]\n }],\n handlerComponents: [{\n type: ViewChildren,\n args: [NzSliderHandleComponent]\n }],\n nzDisabled: [{\n type: Input\n }],\n nzDots: [{\n type: Input\n }],\n nzIncluded: [{\n type: Input\n }],\n nzRange: [{\n type: Input\n }],\n nzVertical: [{\n type: Input\n }],\n nzReverse: [{\n type: Input\n }],\n nzDefaultValue: [{\n type: Input\n }],\n nzMarks: [{\n type: Input\n }],\n nzMax: [{\n type: Input\n }],\n nzMin: [{\n type: Input\n }],\n nzStep: [{\n type: Input\n }],\n nzTooltipVisible: [{\n type: Input\n }],\n nzTooltipPlacement: [{\n type: Input\n }],\n nzTipFormatter: [{\n type: Input\n }],\n nzOnAfterChange: [{\n type: Output\n }]\n });\n})();\nfunction getValueTypeNotMatchError() {\n return new Error(`The \"nzRange\" can't match the \"ngModel\"'s type, please check these properties: \"nzRange\", \"ngModel\", \"nzDefaultValue\".`);\n}\nfunction isValueRange(value) {\n if (value instanceof Array) {\n return value.length === 2;\n } else {\n return false;\n }\n}\nfunction generateHandlers(amount) {\n return Array(amount).fill(0).map(() => ({\n offset: null,\n value: null,\n active: false\n }));\n}\n/**\n * Check if value is valid and throw error if value-type/range not match.\n */\nfunction assertValueValid(value, isRange) {\n if (!isValueRange(value) && isNaN(value) || isValueRange(value) && value.some(v => isNaN(v))) {\n return false;\n }\n return assertValueTypeMatch(value, isRange);\n}\n/**\n * Assert that if `this.nzRange` is `true`, value is also a range, vice versa.\n */\nfunction assertValueTypeMatch(value, isRange = false) {\n if (isValueRange(value) !== isRange) {\n throw getValueTypeNotMatchError();\n }\n return true;\n}\nfunction valuesEqual(valA, valB) {\n if (typeof valA !== typeof valB) {\n return false;\n }\n return isValueRange(valA) && isValueRange(valB) ? arraysEqual(valA, valB) : valA === valB;\n}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzSliderModule {\n static {\n this.ɵfac = function NzSliderModule_Factory(t) {\n return new (t || NzSliderModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NzSliderModule,\n imports: [NzSliderComponent, NzSliderTrackComponent, NzSliderHandleComponent, NzSliderStepComponent, NzSliderMarksComponent],\n exports: [NzSliderComponent, NzSliderTrackComponent, NzSliderHandleComponent, NzSliderStepComponent, NzSliderMarksComponent]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [NzSliderComponent, NzSliderHandleComponent]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzSliderModule, [{\n type: NgModule,\n args: [{\n imports: [NzSliderComponent, NzSliderTrackComponent, NzSliderHandleComponent, NzSliderStepComponent, NzSliderMarksComponent],\n exports: [NzSliderComponent, NzSliderTrackComponent, NzSliderHandleComponent, NzSliderStepComponent, NzSliderMarksComponent]\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzMarks {}\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NzMarks, NzSliderComponent, NzSliderModule, NzSliderHandleComponent as ɵNzSliderHandleComponent, NzSliderMarksComponent as ɵNzSliderMarksComponent, NzSliderService as ɵNzSliderService, NzSliderStepComponent as ɵNzSliderStepComponent, NzSliderTrackComponent as ɵNzSliderTrackComponent };\n"], - "mappings": "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", + "mappings": "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", "names": [] } diff --git a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_tabs.js b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_tabs.js new file mode 100644 index 0000000..e05a5fe --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_tabs.js @@ -0,0 +1,2858 @@ +import { + NzDropDownDirective, + NzDropdownMenuComponent +} from "./chunk-2CQTWQUI.js"; +import { + NzMenuDirective, + NzMenuItemComponent, + NzMenuModule +} from "./chunk-WKTPWT5U.js"; +import { + NavigationEnd, + Router, + RouterLink +} from "./chunk-CZEXXPIB.js"; +import "./chunk-6RXUTAFR.js"; +import "./chunk-XAGDQPFO.js"; +import { + reqAnimFrame +} from "./chunk-D5ODNR6D.js"; +import "./chunk-55A2ZGND.js"; +import { + A11yModule, + CdkMonitorFocus, + FocusKeyManager +} from "./chunk-E6XJDY45.js"; +import { + ViewportRuler +} from "./chunk-6U656R5M.js"; +import { + NzOutletModule, + NzStringTemplateOutletDirective +} from "./chunk-VOD2PKZN.js"; +import { + DOWN_ARROW, + ENTER, + LEFT_ARROW, + RIGHT_ARROW, + SPACE, + UP_ARROW, + hasModifierKey +} from "./chunk-JGP5BR6B.js"; +import "./chunk-WB57DPWD.js"; +import "./chunk-KMGBCF4T.js"; +import { + NzIconDirective, + NzIconModule +} from "./chunk-VWMHIMW7.js"; +import { + NzConfigService, + WithConfig +} from "./chunk-ZHMJ6SNN.js"; +import { + Directionality +} from "./chunk-6NZ2BEBG.js"; +import "./chunk-IAC53GOD.js"; +import { + InputBoolean, + PREFIX, + coerceElement, + coerceNumberProperty, + wrapIntoObservable +} from "./chunk-M5GY4FCO.js"; +import "./chunk-ECVKT3ZH.js"; +import "./chunk-KI2JSLP6.js"; +import "./chunk-Y4CEYMY2.js"; +import "./chunk-X7WBA24Z.js"; +import { + NgForOf, + NgIf, + NgStyle, + NgTemplateOutlet +} from "./chunk-OSQBUYO6.js"; +import { + ANIMATION_MODULE_TYPE, + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + ContentChild, + ContentChildren, + Directive, + ElementRef, + EventEmitter, + Host, + Inject, + Injectable, + InjectionToken, + Input, + NgModule, + NgZone, + Observable, + Optional, + Output, + QueryList, + Self, + Subject, + Subscription, + TemplateRef, + ViewChild, + ViewEncapsulation$1, + __decorate, + animationFrameScheduler, + asapScheduler, + auditTime, + delay, + filter, + first, + fromEvent, + merge, + of, + setClassMetadata, + startWith, + takeUntil, + ɵɵNgOnChangesFeature, + ɵɵProvidersFeature, + ɵɵStandaloneFeature, + ɵɵadvance, + ɵɵattribute, + ɵɵclassProp, + ɵɵcontentQuery, + ɵɵdefineComponent, + ɵɵdefineDirective, + ɵɵdefineInjectable, + ɵɵdefineInjector, + ɵɵdefineNgModule, + ɵɵdirectiveInject, + ɵɵelement, + ɵɵelementContainerEnd, + ɵɵelementContainerStart, + ɵɵelementEnd, + ɵɵelementStart, + ɵɵgetCurrentView, + ɵɵinject, + ɵɵlistener, + ɵɵloadQuery, + ɵɵnextContext, + ɵɵprojection, + ɵɵprojectionDef, + ɵɵproperty, + ɵɵpureFunction0, + ɵɵqueryRefresh, + ɵɵreference, + ɵɵresetView, + ɵɵrestoreView, + ɵɵstyleProp, + ɵɵtemplate, + ɵɵtemplateRefExtractor, + ɵɵtext, + ɵɵtextInterpolate, + ɵɵtextInterpolate1, + ɵɵviewQuery +} from "./chunk-FGESKT7O.js"; +import "./chunk-HSNDBVJ3.js"; + +// node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-cdk-resize-observer.mjs +var _NzResizeObserverFactory = class _NzResizeObserverFactory { + create(callback) { + return typeof ResizeObserver === "undefined" ? null : new ResizeObserver(callback); + } +}; +_NzResizeObserverFactory.ɵfac = function NzResizeObserverFactory_Factory(t) { + return new (t || _NzResizeObserverFactory)(); +}; +_NzResizeObserverFactory.ɵprov = ɵɵdefineInjectable({ + token: _NzResizeObserverFactory, + factory: _NzResizeObserverFactory.ɵfac, + providedIn: "root" +}); +var NzResizeObserverFactory = _NzResizeObserverFactory; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzResizeObserverFactory, [{ + type: Injectable, + args: [{ + providedIn: "root" + }] + }], null, null); +})(); +var _NzResizeObserver = class _NzResizeObserver { + constructor(nzResizeObserverFactory) { + this.nzResizeObserverFactory = nzResizeObserverFactory; + this.observedElements = /* @__PURE__ */ new Map(); + } + ngOnDestroy() { + this.observedElements.forEach((_, element) => this.cleanupObserver(element)); + } + observe(elementOrRef) { + const element = coerceElement(elementOrRef); + return new Observable((observer) => { + const stream = this.observeElement(element); + const subscription = stream.subscribe(observer); + return () => { + subscription.unsubscribe(); + this.unobserveElement(element); + }; + }); + } + /** + * Observes the given element by using the existing ResizeObserver if available, or creating a + * new one if not. + */ + observeElement(element) { + if (!this.observedElements.has(element)) { + const stream = new Subject(); + const observer = this.nzResizeObserverFactory.create((mutations) => stream.next(mutations)); + if (observer) { + observer.observe(element); + } + this.observedElements.set(element, { + observer, + stream, + count: 1 + }); + } else { + this.observedElements.get(element).count++; + } + return this.observedElements.get(element).stream; + } + /** + * Un-observes the given element and cleans up the underlying ResizeObserver if nobody else is + * observing this element. + */ + unobserveElement(element) { + if (this.observedElements.has(element)) { + this.observedElements.get(element).count--; + if (!this.observedElements.get(element).count) { + this.cleanupObserver(element); + } + } + } + /** Clean up the underlying ResizeObserver for the specified element. */ + cleanupObserver(element) { + if (this.observedElements.has(element)) { + const { + observer, + stream + } = this.observedElements.get(element); + if (observer) { + observer.disconnect(); + } + stream.complete(); + this.observedElements.delete(element); + } + } +}; +_NzResizeObserver.ɵfac = function NzResizeObserver_Factory(t) { + return new (t || _NzResizeObserver)(ɵɵinject(NzResizeObserverFactory)); +}; +_NzResizeObserver.ɵprov = ɵɵdefineInjectable({ + token: _NzResizeObserver, + factory: _NzResizeObserver.ɵfac, + providedIn: "root" +}); +var NzResizeObserver = _NzResizeObserver; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzResizeObserver, [{ + type: Injectable, + args: [{ + providedIn: "root" + }] + }], () => [{ + type: NzResizeObserverFactory + }], null); +})(); +var _NzResizeObserverDirective = class _NzResizeObserverDirective { + subscribe() { + this.unsubscribe(); + this.currentSubscription = this.nzResizeObserver.observe(this.elementRef).subscribe(this.nzResizeObserve); + } + unsubscribe() { + this.currentSubscription?.unsubscribe(); + } + constructor(nzResizeObserver, elementRef) { + this.nzResizeObserver = nzResizeObserver; + this.elementRef = elementRef; + this.nzResizeObserve = new EventEmitter(); + this.nzResizeObserverDisabled = false; + this.currentSubscription = null; + } + ngAfterContentInit() { + if (!this.currentSubscription && !this.nzResizeObserverDisabled) { + this.subscribe(); + } + } + ngOnDestroy() { + this.unsubscribe(); + } + ngOnChanges(changes) { + const { + nzResizeObserve + } = changes; + if (nzResizeObserve) { + if (this.nzResizeObserverDisabled) { + this.unsubscribe(); + } else { + this.subscribe(); + } + } + } +}; +_NzResizeObserverDirective.ɵfac = function NzResizeObserverDirective_Factory(t) { + return new (t || _NzResizeObserverDirective)(ɵɵdirectiveInject(NzResizeObserver), ɵɵdirectiveInject(ElementRef)); +}; +_NzResizeObserverDirective.ɵdir = ɵɵdefineDirective({ + type: _NzResizeObserverDirective, + selectors: [["", "nzResizeObserver", ""]], + inputs: { + nzResizeObserverDisabled: "nzResizeObserverDisabled" + }, + outputs: { + nzResizeObserve: "nzResizeObserve" + }, + standalone: true, + features: [ɵɵProvidersFeature([NzResizeObserverFactory]), ɵɵNgOnChangesFeature] +}); +var NzResizeObserverDirective = _NzResizeObserverDirective; +__decorate([InputBoolean()], NzResizeObserverDirective.prototype, "nzResizeObserverDisabled", void 0); +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzResizeObserverDirective, [{ + type: Directive, + args: [{ + selector: "[nzResizeObserver]", + standalone: true, + providers: [NzResizeObserverFactory] + }] + }], () => [{ + type: NzResizeObserver + }, { + type: ElementRef + }], { + nzResizeObserve: [{ + type: Output + }], + nzResizeObserverDisabled: [{ + type: Input + }] + }); +})(); +var _NzResizeObserverModule = class _NzResizeObserverModule { +}; +_NzResizeObserverModule.ɵfac = function NzResizeObserverModule_Factory(t) { + return new (t || _NzResizeObserverModule)(); +}; +_NzResizeObserverModule.ɵmod = ɵɵdefineNgModule({ + type: _NzResizeObserverModule, + imports: [NzResizeObserverDirective], + exports: [NzResizeObserverDirective] +}); +_NzResizeObserverModule.ɵinj = ɵɵdefineInjector({}); +var NzResizeObserverModule = _NzResizeObserverModule; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzResizeObserverModule, [{ + type: NgModule, + args: [{ + imports: [NzResizeObserverDirective], + exports: [NzResizeObserverDirective] + }] + }], null, null); +})(); + +// node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-tabs.mjs +function NzTabAddButtonComponent_ng_container_0_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementContainerStart(0); + ɵɵelement(1, "span", 1); + ɵɵelementContainerEnd(); + } + if (rf & 2) { + const icon_r1 = ctx.$implicit; + ɵɵadvance(1); + ɵɵproperty("nzType", icon_r1); + } +} +function NzTabNavOperationComponent_ul_5_li_1_ng_container_1_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementContainerStart(0); + ɵɵtext(1); + ɵɵelementContainerEnd(); + } + if (rf & 2) { + const item_r5 = ɵɵnextContext().$implicit; + ɵɵadvance(1); + ɵɵtextInterpolate1(" ", item_r5.tab.label, " "); + } +} +var _c0 = () => ({ + visible: false +}); +function NzTabNavOperationComponent_ul_5_li_1_Template(rf, ctx) { + if (rf & 1) { + const _r9 = ɵɵgetCurrentView(); + ɵɵelementStart(0, "li", 8); + ɵɵlistener("click", function NzTabNavOperationComponent_ul_5_li_1_Template_li_click_0_listener() { + const restoredCtx = ɵɵrestoreView(_r9); + const item_r5 = restoredCtx.$implicit; + const ctx_r8 = ɵɵnextContext(2); + return ɵɵresetView(ctx_r8.onSelect(item_r5)); + })("contextmenu", function NzTabNavOperationComponent_ul_5_li_1_Template_li_contextmenu_0_listener($event) { + const restoredCtx = ɵɵrestoreView(_r9); + const item_r5 = restoredCtx.$implicit; + const ctx_r10 = ɵɵnextContext(2); + return ɵɵresetView(ctx_r10.onContextmenu(item_r5, $event)); + }); + ɵɵtemplate(1, NzTabNavOperationComponent_ul_5_li_1_ng_container_1_Template, 2, 1, "ng-container", 9); + ɵɵelementEnd(); + } + if (rf & 2) { + const item_r5 = ctx.$implicit; + ɵɵclassProp("ant-tabs-dropdown-menu-item-disabled", item_r5.disabled); + ɵɵproperty("nzSelected", item_r5.active)("nzDisabled", item_r5.disabled); + ɵɵadvance(1); + ɵɵproperty("nzStringTemplateOutlet", item_r5.tab.label)("nzStringTemplateOutletContext", ɵɵpureFunction0(6, _c0)); + } +} +function NzTabNavOperationComponent_ul_5_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementStart(0, "ul", 6); + ɵɵtemplate(1, NzTabNavOperationComponent_ul_5_li_1_Template, 2, 7, "li", 7); + ɵɵelementEnd(); + } + if (rf & 2) { + const ctx_r2 = ɵɵnextContext(); + ɵɵadvance(1); + ɵɵproperty("ngForOf", ctx_r2.items); + } +} +function NzTabNavOperationComponent_button_6_Template(rf, ctx) { + if (rf & 1) { + const _r12 = ɵɵgetCurrentView(); + ɵɵelementStart(0, "button", 10); + ɵɵlistener("click", function NzTabNavOperationComponent_button_6_Template_button_click_0_listener() { + ɵɵrestoreView(_r12); + const ctx_r11 = ɵɵnextContext(); + return ɵɵresetView(ctx_r11.addClicked.emit()); + }); + ɵɵelementEnd(); + } + if (rf & 2) { + const ctx_r3 = ɵɵnextContext(); + ɵɵproperty("addIcon", ctx_r3.addIcon); + } +} +var _c1 = () => ({ + minWidth: "46px" +}); +var _c2 = ["navWarp"]; +var _c3 = ["navList"]; +function NzTabNavBarComponent_button_5_Template(rf, ctx) { + if (rf & 1) { + const _r5 = ɵɵgetCurrentView(); + ɵɵelementStart(0, "button", 8); + ɵɵlistener("click", function NzTabNavBarComponent_button_5_Template_button_click_0_listener() { + ɵɵrestoreView(_r5); + const ctx_r4 = ɵɵnextContext(); + return ɵɵresetView(ctx_r4.addClicked.emit()); + }); + ɵɵelementEnd(); + } + if (rf & 2) { + const ctx_r2 = ɵɵnextContext(); + ɵɵproperty("addIcon", ctx_r2.addIcon); + ɵɵattribute("tabindex", -1); + } +} +function NzTabNavBarComponent_div_8_ng_template_1_Template(rf, ctx) { +} +function NzTabNavBarComponent_div_8_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementStart(0, "div", 9); + ɵɵtemplate(1, NzTabNavBarComponent_div_8_ng_template_1_Template, 0, 0, "ng-template", 10); + ɵɵelementEnd(); + } + if (rf & 2) { + const ctx_r3 = ɵɵnextContext(); + ɵɵadvance(1); + ɵɵproperty("ngTemplateOutlet", ctx_r3.extraTemplate); + } +} +var _c4 = ["*"]; +var _c5 = ["nz-tab-body", ""]; +function NzTabBodyComponent_ng_container_0_ng_template_1_Template(rf, ctx) { +} +function NzTabBodyComponent_ng_container_0_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementContainerStart(0); + ɵɵtemplate(1, NzTabBodyComponent_ng_container_0_ng_template_1_Template, 0, 0, "ng-template", 1); + ɵɵelementContainerEnd(); + } + if (rf & 2) { + const ctx_r0 = ɵɵnextContext(); + ɵɵadvance(1); + ɵɵproperty("ngTemplateOutlet", ctx_r0.content); + } +} +function NzTabCloseButtonComponent_ng_container_0_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementContainerStart(0); + ɵɵelement(1, "span", 1); + ɵɵelementContainerEnd(); + } + if (rf & 2) { + const icon_r1 = ctx.$implicit; + ɵɵadvance(1); + ɵɵproperty("nzType", icon_r1); + } +} +var _c6 = ["contentTemplate"]; +function NzTabComponent_ng_template_0_Template(rf, ctx) { + if (rf & 1) { + ɵɵprojection(0); + } +} +function NzTabComponent_ng_template_2_Template(rf, ctx) { + if (rf & 1) { + ɵɵprojection(0, 1); + } +} +var _c7 = [[["", "nz-tab-link", ""]], "*"]; +var _c8 = ["[nz-tab-link]", "*"]; +function NzTabSetComponent_nz_tabs_nav_0_div_1_ng_container_2_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementContainerStart(0); + ɵɵtext(1); + ɵɵelementContainerEnd(); + } + if (rf & 2) { + const tab_r3 = ɵɵnextContext().$implicit; + ɵɵadvance(1); + ɵɵtextInterpolate(tab_r3.label); + } +} +function NzTabSetComponent_nz_tabs_nav_0_div_1_button_3_Template(rf, ctx) { + if (rf & 1) { + const _r10 = ɵɵgetCurrentView(); + ɵɵelementStart(0, "button", 10); + ɵɵlistener("click", function NzTabSetComponent_nz_tabs_nav_0_div_1_button_3_Template_button_click_0_listener($event) { + ɵɵrestoreView(_r10); + const i_r4 = ɵɵnextContext().index; + const ctx_r8 = ɵɵnextContext(2); + return ɵɵresetView(ctx_r8.onClose(i_r4, $event)); + }); + ɵɵelementEnd(); + } + if (rf & 2) { + const tab_r3 = ɵɵnextContext().$implicit; + ɵɵproperty("closeIcon", tab_r3.nzCloseIcon); + } +} +var _c9 = () => ({ + visible: true +}); +function NzTabSetComponent_nz_tabs_nav_0_div_1_Template(rf, ctx) { + if (rf & 1) { + const _r13 = ɵɵgetCurrentView(); + ɵɵelementStart(0, "div", 6); + ɵɵlistener("click", function NzTabSetComponent_nz_tabs_nav_0_div_1_Template_div_click_0_listener($event) { + const restoredCtx = ɵɵrestoreView(_r13); + const tab_r3 = restoredCtx.$implicit; + const i_r4 = restoredCtx.index; + const ctx_r12 = ɵɵnextContext(2); + return ɵɵresetView(ctx_r12.clickNavItem(tab_r3, i_r4, $event)); + })("contextmenu", function NzTabSetComponent_nz_tabs_nav_0_div_1_Template_div_contextmenu_0_listener($event) { + const restoredCtx = ɵɵrestoreView(_r13); + const tab_r3 = restoredCtx.$implicit; + const ctx_r14 = ɵɵnextContext(2); + return ɵɵresetView(ctx_r14.contextmenuNavItem(tab_r3, $event)); + }); + ɵɵelementStart(1, "button", 7); + ɵɵtemplate(2, NzTabSetComponent_nz_tabs_nav_0_div_1_ng_container_2_Template, 2, 1, "ng-container", 8)(3, NzTabSetComponent_nz_tabs_nav_0_div_1_button_3_Template, 1, 1, "button", 9); + ɵɵelementEnd()(); + } + if (rf & 2) { + const tab_r3 = ctx.$implicit; + const i_r4 = ctx.index; + const ctx_r2 = ɵɵnextContext(2); + ɵɵstyleProp("margin-right", ctx_r2.position === "horizontal" ? ctx_r2.nzTabBarGutter : null, "px")("margin-bottom", ctx_r2.position === "vertical" ? ctx_r2.nzTabBarGutter : null, "px"); + ɵɵclassProp("ant-tabs-tab-active", ctx_r2.nzSelectedIndex === i_r4)("ant-tabs-tab-disabled", tab_r3.nzDisabled); + ɵɵadvance(1); + ɵɵproperty("id", ctx_r2.getTabContentId(i_r4))("disabled", tab_r3.nzDisabled)("tab", tab_r3)("active", ctx_r2.nzSelectedIndex === i_r4); + ɵɵattribute("tabIndex", ctx_r2.getTabIndex(tab_r3, i_r4))("aria-disabled", tab_r3.nzDisabled)("aria-selected", ctx_r2.nzSelectedIndex === i_r4 && !ctx_r2.nzHideAll)("aria-controls", ctx_r2.getTabContentId(i_r4)); + ɵɵadvance(1); + ɵɵproperty("nzStringTemplateOutlet", tab_r3.label)("nzStringTemplateOutletContext", ɵɵpureFunction0(19, _c9)); + ɵɵadvance(1); + ɵɵproperty("ngIf", tab_r3.nzClosable && ctx_r2.closable && !tab_r3.nzDisabled); + } +} +function NzTabSetComponent_nz_tabs_nav_0_Template(rf, ctx) { + if (rf & 1) { + const _r16 = ɵɵgetCurrentView(); + ɵɵelementStart(0, "nz-tabs-nav", 4); + ɵɵlistener("tabScroll", function NzTabSetComponent_nz_tabs_nav_0_Template_nz_tabs_nav_tabScroll_0_listener($event) { + ɵɵrestoreView(_r16); + const ctx_r15 = ɵɵnextContext(); + return ɵɵresetView(ctx_r15.nzTabListScroll.emit($event)); + })("selectFocusedIndex", function NzTabSetComponent_nz_tabs_nav_0_Template_nz_tabs_nav_selectFocusedIndex_0_listener($event) { + ɵɵrestoreView(_r16); + const ctx_r17 = ɵɵnextContext(); + return ɵɵresetView(ctx_r17.setSelectedIndex($event)); + })("addClicked", function NzTabSetComponent_nz_tabs_nav_0_Template_nz_tabs_nav_addClicked_0_listener() { + ɵɵrestoreView(_r16); + const ctx_r18 = ɵɵnextContext(); + return ɵɵresetView(ctx_r18.onAdd()); + }); + ɵɵtemplate(1, NzTabSetComponent_nz_tabs_nav_0_div_1_Template, 4, 20, "div", 5); + ɵɵelementEnd(); + } + if (rf & 2) { + const ctx_r0 = ɵɵnextContext(); + ɵɵproperty("ngStyle", ctx_r0.nzTabBarStyle)("selectedIndex", ctx_r0.nzSelectedIndex || 0)("inkBarAnimated", ctx_r0.inkBarAnimated)("addable", ctx_r0.addable)("addIcon", ctx_r0.nzAddIcon)("hideBar", ctx_r0.nzHideAll)("position", ctx_r0.position)("extraTemplate", ctx_r0.nzTabBarExtraContent); + ɵɵadvance(1); + ɵɵproperty("ngForOf", ctx_r0.tabs); + } +} +function NzTabSetComponent_div_3_Template(rf, ctx) { + if (rf & 1) { + ɵɵelement(0, "div", 11); + } + if (rf & 2) { + const tab_r19 = ctx.$implicit; + const i_r20 = ctx.index; + const ctx_r1 = ɵɵnextContext(); + ɵɵproperty("id", ctx_r1.getTabContentId(i_r20))("active", ctx_r1.nzSelectedIndex === i_r20 && !ctx_r1.nzHideAll)("content", tab_r19.content)("forceRender", tab_r19.nzForceRender)("tabPaneAnimated", ctx_r1.tabPaneAnimated); + ɵɵattribute("aria-labelledby", ctx_r1.getTabContentId(i_r20)); + } +} +var _NzTabAddButtonComponent = class _NzTabAddButtonComponent { + constructor(elementRef) { + this.elementRef = elementRef; + this.addIcon = "plus"; + this.element = this.elementRef.nativeElement; + } + getElementWidth() { + return this.element?.offsetWidth || 0; + } + getElementHeight() { + return this.element?.offsetHeight || 0; + } +}; +_NzTabAddButtonComponent.ɵfac = function NzTabAddButtonComponent_Factory(t) { + return new (t || _NzTabAddButtonComponent)(ɵɵdirectiveInject(ElementRef)); +}; +_NzTabAddButtonComponent.ɵcmp = ɵɵdefineComponent({ + type: _NzTabAddButtonComponent, + selectors: [["nz-tab-add-button"], ["button", "nz-tab-add-button", ""]], + hostAttrs: ["aria-label", "Add tab", "type", "button", 1, "ant-tabs-nav-add"], + inputs: { + addIcon: "addIcon" + }, + standalone: true, + features: [ɵɵStandaloneFeature], + decls: 1, + vars: 1, + consts: [[4, "nzStringTemplateOutlet"], ["nz-icon", "", "nzTheme", "outline", 3, "nzType"]], + template: function NzTabAddButtonComponent_Template(rf, ctx) { + if (rf & 1) { + ɵɵtemplate(0, NzTabAddButtonComponent_ng_container_0_Template, 2, 1, "ng-container", 0); + } + if (rf & 2) { + ɵɵproperty("nzStringTemplateOutlet", ctx.addIcon); + } + }, + dependencies: [NzOutletModule, NzStringTemplateOutletDirective, NzIconModule, NzIconDirective], + encapsulation: 2 +}); +var NzTabAddButtonComponent = _NzTabAddButtonComponent; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzTabAddButtonComponent, [{ + type: Component, + args: [{ + selector: "nz-tab-add-button, button[nz-tab-add-button]", + template: ` + + + + `, + host: { + class: "ant-tabs-nav-add", + "aria-label": "Add tab", + type: "button" + }, + imports: [NzOutletModule, NzIconModule], + standalone: true + }] + }], () => [{ + type: ElementRef + }], { + addIcon: [{ + type: Input + }] + }); +})(); +var _NzTabsInkBarDirective = class _NzTabsInkBarDirective { + get _animated() { + return this.animationMode !== "NoopAnimations" && this.animated; + } + constructor(elementRef, ngZone, animationMode) { + this.elementRef = elementRef; + this.ngZone = ngZone; + this.animationMode = animationMode; + this.position = "horizontal"; + this.animated = true; + } + alignToElement(element) { + this.ngZone.runOutsideAngular(() => { + reqAnimFrame(() => this.setStyles(element)); + }); + } + setStyles(element) { + const inkBar = this.elementRef.nativeElement; + if (this.position === "horizontal") { + inkBar.style.top = ""; + inkBar.style.height = ""; + inkBar.style.left = this.getLeftPosition(element); + inkBar.style.width = this.getElementWidth(element); + } else { + inkBar.style.left = ""; + inkBar.style.width = ""; + inkBar.style.top = this.getTopPosition(element); + inkBar.style.height = this.getElementHeight(element); + } + } + getLeftPosition(element) { + return element ? `${element.offsetLeft || 0}px` : "0"; + } + getElementWidth(element) { + return element ? `${element.offsetWidth || 0}px` : "0"; + } + getTopPosition(element) { + return element ? `${element.offsetTop || 0}px` : "0"; + } + getElementHeight(element) { + return element ? `${element.offsetHeight || 0}px` : "0"; + } +}; +_NzTabsInkBarDirective.ɵfac = function NzTabsInkBarDirective_Factory(t) { + return new (t || _NzTabsInkBarDirective)(ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(NgZone), ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8)); +}; +_NzTabsInkBarDirective.ɵdir = ɵɵdefineDirective({ + type: _NzTabsInkBarDirective, + selectors: [["nz-tabs-ink-bar"], ["", "nz-tabs-ink-bar", ""]], + hostAttrs: [1, "ant-tabs-ink-bar"], + hostVars: 2, + hostBindings: function NzTabsInkBarDirective_HostBindings(rf, ctx) { + if (rf & 2) { + ɵɵclassProp("ant-tabs-ink-bar-animated", ctx._animated); + } + }, + inputs: { + position: "position", + animated: "animated" + }, + standalone: true +}); +var NzTabsInkBarDirective = _NzTabsInkBarDirective; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzTabsInkBarDirective, [{ + type: Directive, + args: [{ + selector: "nz-tabs-ink-bar, [nz-tabs-ink-bar]", + host: { + class: "ant-tabs-ink-bar", + "[class.ant-tabs-ink-bar-animated]": "_animated" + }, + standalone: true + }] + }], () => [{ + type: ElementRef + }, { + type: NgZone + }, { + type: void 0, + decorators: [{ + type: Optional + }, { + type: Inject, + args: [ANIMATION_MODULE_TYPE] + }] + }], { + position: [{ + type: Input + }], + animated: [{ + type: Input + }] + }); +})(); +var _NzTabNavItemDirective = class _NzTabNavItemDirective { + constructor(elementRef) { + this.elementRef = elementRef; + this.disabled = false; + this.active = false; + this.el = elementRef.nativeElement; + this.parentElement = this.el.parentElement; + } + focus() { + this.el.focus(); + } + get width() { + return this.parentElement.offsetWidth; + } + get height() { + return this.parentElement.offsetHeight; + } + get left() { + return this.parentElement.offsetLeft; + } + get top() { + return this.parentElement.offsetTop; + } +}; +_NzTabNavItemDirective.ɵfac = function NzTabNavItemDirective_Factory(t) { + return new (t || _NzTabNavItemDirective)(ɵɵdirectiveInject(ElementRef)); +}; +_NzTabNavItemDirective.ɵdir = ɵɵdefineDirective({ + type: _NzTabNavItemDirective, + selectors: [["", "nzTabNavItem", ""]], + inputs: { + disabled: "disabled", + tab: "tab", + active: "active" + }, + standalone: true +}); +var NzTabNavItemDirective = _NzTabNavItemDirective; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzTabNavItemDirective, [{ + type: Directive, + args: [{ + selector: "[nzTabNavItem]", + standalone: true + }] + }], () => [{ + type: ElementRef + }], { + disabled: [{ + type: Input + }], + tab: [{ + type: Input + }], + active: [{ + type: Input + }] + }); +})(); +var _NzTabNavOperationComponent = class _NzTabNavOperationComponent { + constructor(cdr, elementRef) { + this.cdr = cdr; + this.elementRef = elementRef; + this.items = []; + this.addable = false; + this.addIcon = "plus"; + this.addClicked = new EventEmitter(); + this.selected = new EventEmitter(); + this.closeAnimationWaitTimeoutId = -1; + this.menuOpened = false; + this.element = this.elementRef.nativeElement; + } + onSelect(item) { + if (!item.disabled) { + item.tab.nzClick.emit(); + this.selected.emit(item); + } + } + onContextmenu(item, e) { + if (!item.disabled) { + item.tab.nzContextmenu.emit(e); + } + } + showItems() { + clearTimeout(this.closeAnimationWaitTimeoutId); + this.menuOpened = true; + this.cdr.markForCheck(); + } + menuVisChange(visible) { + if (!visible) { + this.closeAnimationWaitTimeoutId = setTimeout(() => { + this.menuOpened = false; + this.cdr.markForCheck(); + }, 150); + } + } + getElementWidth() { + return this.element?.offsetWidth || 0; + } + getElementHeight() { + return this.element?.offsetHeight || 0; + } + ngOnDestroy() { + clearTimeout(this.closeAnimationWaitTimeoutId); + } +}; +_NzTabNavOperationComponent.ɵfac = function NzTabNavOperationComponent_Factory(t) { + return new (t || _NzTabNavOperationComponent)(ɵɵdirectiveInject(ChangeDetectorRef), ɵɵdirectiveInject(ElementRef)); +}; +_NzTabNavOperationComponent.ɵcmp = ɵɵdefineComponent({ + type: _NzTabNavOperationComponent, + selectors: [["nz-tab-nav-operation"]], + hostAttrs: [1, "ant-tabs-nav-operations"], + hostVars: 2, + hostBindings: function NzTabNavOperationComponent_HostBindings(rf, ctx) { + if (rf & 2) { + ɵɵclassProp("ant-tabs-nav-operations-hidden", ctx.items.length === 0); + } + }, + inputs: { + items: "items", + addable: "addable", + addIcon: "addIcon" + }, + outputs: { + addClicked: "addClicked", + selected: "selected" + }, + exportAs: ["nzTabNavOperation"], + standalone: true, + features: [ɵɵStandaloneFeature], + decls: 7, + vars: 6, + consts: [["nz-dropdown", "", "type", "button", "tabindex", "-1", "aria-hidden", "true", "nzOverlayClassName", "nz-tabs-dropdown", 1, "ant-tabs-nav-more", 3, "nzDropdownMenu", "nzOverlayStyle", "nzMatchWidthElement", "nzVisibleChange", "mouseenter"], ["dropdownTrigger", "nzDropdown"], ["nz-icon", "", "nzType", "ellipsis"], ["menu", "nzDropdownMenu"], ["nz-menu", "", 4, "ngIf"], ["nz-tab-add-button", "", 3, "addIcon", "click", 4, "ngIf"], ["nz-menu", ""], ["nz-menu-item", "", "class", "ant-tabs-dropdown-menu-item", 3, "ant-tabs-dropdown-menu-item-disabled", "nzSelected", "nzDisabled", "click", "contextmenu", 4, "ngFor", "ngForOf"], ["nz-menu-item", "", 1, "ant-tabs-dropdown-menu-item", 3, "nzSelected", "nzDisabled", "click", "contextmenu"], [4, "nzStringTemplateOutlet", "nzStringTemplateOutletContext"], ["nz-tab-add-button", "", 3, "addIcon", "click"]], + template: function NzTabNavOperationComponent_Template(rf, ctx) { + if (rf & 1) { + ɵɵelementStart(0, "button", 0, 1); + ɵɵlistener("nzVisibleChange", function NzTabNavOperationComponent_Template_button_nzVisibleChange_0_listener($event) { + return ctx.menuVisChange($event); + })("mouseenter", function NzTabNavOperationComponent_Template_button_mouseenter_0_listener() { + return ctx.showItems(); + }); + ɵɵelement(2, "span", 2); + ɵɵelementEnd(); + ɵɵelementStart(3, "nz-dropdown-menu", null, 3); + ɵɵtemplate(5, NzTabNavOperationComponent_ul_5_Template, 2, 1, "ul", 4); + ɵɵelementEnd(); + ɵɵtemplate(6, NzTabNavOperationComponent_button_6_Template, 1, 1, "button", 5); + } + if (rf & 2) { + const _r1 = ɵɵreference(4); + ɵɵproperty("nzDropdownMenu", _r1)("nzOverlayStyle", ɵɵpureFunction0(5, _c1))("nzMatchWidthElement", null); + ɵɵadvance(5); + ɵɵproperty("ngIf", ctx.menuOpened); + ɵɵadvance(1); + ɵɵproperty("ngIf", ctx.addable); + } + }, + dependencies: [NzIconModule, NzIconDirective, NgIf, NgForOf, NzOutletModule, NzStringTemplateOutletDirective, NzTabAddButtonComponent, NzDropdownMenuComponent, NzMenuModule, NzMenuDirective, NzMenuItemComponent, NzDropDownDirective], + encapsulation: 2, + changeDetection: 0 +}); +var NzTabNavOperationComponent = _NzTabNavOperationComponent; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzTabNavOperationComponent, [{ + type: Component, + args: [{ + selector: "nz-tab-nav-operation", + exportAs: "nzTabNavOperation", + preserveWhitespaces: false, + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation$1.None, + template: ` + + +
    +
  • + + {{ item.tab.label }} + +
  • +
+
+ + `, + host: { + class: "ant-tabs-nav-operations", + "[class.ant-tabs-nav-operations-hidden]": "items.length === 0" + }, + imports: [NzIconModule, NgIf, NgForOf, NzOutletModule, NzTabAddButtonComponent, NzDropdownMenuComponent, NzMenuModule, NzDropDownDirective], + standalone: true + }] + }], () => [{ + type: ChangeDetectorRef + }, { + type: ElementRef + }], { + items: [{ + type: Input + }], + addable: [{ + type: Input + }], + addIcon: [{ + type: Input + }], + addClicked: [{ + type: Output + }], + selected: [{ + type: Output + }] + }); +})(); +var MIN_SWIPE_DISTANCE = 0.1; +var STOP_SWIPE_DISTANCE = 0.01; +var REFRESH_INTERVAL = 20; +var SPEED_OFF_MULTIPLE = 0.995 ** REFRESH_INTERVAL; +var _NzTabScrollListDirective = class _NzTabScrollListDirective { + constructor(ngZone, elementRef) { + this.ngZone = ngZone; + this.elementRef = elementRef; + this.lastWheelDirection = null; + this.lastWheelTimestamp = 0; + this.lastTimestamp = 0; + this.lastTimeDiff = 0; + this.lastMixedWheel = 0; + this.lastWheelPrevent = false; + this.touchPosition = null; + this.lastOffset = null; + this.motion = -1; + this.unsubscribe = () => void 0; + this.offsetChange = new EventEmitter(); + this.tabScroll = new EventEmitter(); + this.onTouchEnd = (e) => { + if (!this.touchPosition) { + return; + } + const lastOffset = this.lastOffset; + const lastTimeDiff = this.lastTimeDiff; + this.lastOffset = this.touchPosition = null; + if (lastOffset) { + const distanceX = lastOffset.x / lastTimeDiff; + const distanceY = lastOffset.y / lastTimeDiff; + const absX = Math.abs(distanceX); + const absY = Math.abs(distanceY); + if (Math.max(absX, absY) < MIN_SWIPE_DISTANCE) { + return; + } + let currentX = distanceX; + let currentY = distanceY; + this.motion = window.setInterval(() => { + if (Math.abs(currentX) < STOP_SWIPE_DISTANCE && Math.abs(currentY) < STOP_SWIPE_DISTANCE) { + window.clearInterval(this.motion); + return; + } + currentX *= SPEED_OFF_MULTIPLE; + currentY *= SPEED_OFF_MULTIPLE; + this.onOffset(currentX * REFRESH_INTERVAL, currentY * REFRESH_INTERVAL, e); + }, REFRESH_INTERVAL); + } + }; + this.onTouchMove = (e) => { + if (!this.touchPosition) { + return; + } + e.preventDefault(); + const { + screenX, + screenY + } = e.touches[0]; + const offsetX = screenX - this.touchPosition.x; + const offsetY = screenY - this.touchPosition.y; + this.onOffset(offsetX, offsetY, e); + const now = Date.now(); + this.lastTimeDiff = now - this.lastTimestamp; + this.lastTimestamp = now; + this.lastOffset = { + x: offsetX, + y: offsetY + }; + this.touchPosition = { + x: screenX, + y: screenY + }; + }; + this.onTouchStart = (e) => { + const { + screenX, + screenY + } = e.touches[0]; + this.touchPosition = { + x: screenX, + y: screenY + }; + window.clearInterval(this.motion); + }; + this.onWheel = (e) => { + const { + deltaX, + deltaY + } = e; + let mixed; + const absX = Math.abs(deltaX); + const absY = Math.abs(deltaY); + if (absX === absY) { + mixed = this.lastWheelDirection === "x" ? deltaX : deltaY; + } else if (absX > absY) { + mixed = deltaX; + this.lastWheelDirection = "x"; + } else { + mixed = deltaY; + this.lastWheelDirection = "y"; + } + const now = Date.now(); + const absMixed = Math.abs(mixed); + if (now - this.lastWheelTimestamp > 100 || absMixed - this.lastMixedWheel > 10) { + this.lastWheelPrevent = false; + } + this.onOffset(-mixed, -mixed, e); + if (e.defaultPrevented || this.lastWheelPrevent) { + this.lastWheelPrevent = true; + } + this.lastWheelTimestamp = now; + this.lastMixedWheel = absMixed; + }; + } + ngOnInit() { + this.unsubscribe = this.ngZone.runOutsideAngular(() => { + const el = this.elementRef.nativeElement; + const wheel$ = fromEvent(el, "wheel"); + const touchstart$ = fromEvent(el, "touchstart"); + const touchmove$ = fromEvent(el, "touchmove"); + const touchend$ = fromEvent(el, "touchend"); + const subscription = new Subscription(); + subscription.add(this.subscribeWrap("wheel", wheel$, this.onWheel)); + subscription.add(this.subscribeWrap("touchstart", touchstart$, this.onTouchStart)); + subscription.add(this.subscribeWrap("touchmove", touchmove$, this.onTouchMove)); + subscription.add(this.subscribeWrap("touchend", touchend$, this.onTouchEnd)); + return () => { + subscription.unsubscribe(); + }; + }); + } + subscribeWrap(type, observable, handler) { + return observable.subscribe((event) => { + this.tabScroll.emit({ + type, + event + }); + if (!event.defaultPrevented) { + handler(event); + } + }); + } + onOffset(x, y, event) { + this.ngZone.run(() => { + this.offsetChange.emit({ + x, + y, + event + }); + }); + } + ngOnDestroy() { + this.unsubscribe(); + } +}; +_NzTabScrollListDirective.ɵfac = function NzTabScrollListDirective_Factory(t) { + return new (t || _NzTabScrollListDirective)(ɵɵdirectiveInject(NgZone), ɵɵdirectiveInject(ElementRef)); +}; +_NzTabScrollListDirective.ɵdir = ɵɵdefineDirective({ + type: _NzTabScrollListDirective, + selectors: [["", "nzTabScrollList", ""]], + outputs: { + offsetChange: "offsetChange", + tabScroll: "tabScroll" + }, + standalone: true +}); +var NzTabScrollListDirective = _NzTabScrollListDirective; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzTabScrollListDirective, [{ + type: Directive, + args: [{ + selector: "[nzTabScrollList]", + standalone: true + }] + }], () => [{ + type: NgZone + }, { + type: ElementRef + }], { + offsetChange: [{ + type: Output + }], + tabScroll: [{ + type: Output + }] + }); +})(); +var RESIZE_SCHEDULER = typeof requestAnimationFrame !== "undefined" ? animationFrameScheduler : asapScheduler; +var CSS_TRANSFORM_TIME = 150; +var _NzTabNavBarComponent = class _NzTabNavBarComponent { + get selectedIndex() { + return this._selectedIndex; + } + set selectedIndex(value) { + const newValue = coerceNumberProperty(value); + if (this._selectedIndex !== newValue) { + this._selectedIndex = value; + this.selectedIndexChanged = true; + if (this.keyManager) { + this.keyManager.updateActiveItem(value); + } + } + } + /** Tracks which element has focus; used for keyboard navigation */ + get focusIndex() { + return this.keyManager ? this.keyManager.activeItemIndex : 0; + } + /** When the focus index is set, we must manually send focus to the correct label */ + set focusIndex(value) { + if (!this.isValidIndex(value) || this.focusIndex === value || !this.keyManager) { + return; + } + this.keyManager.setActiveItem(value); + } + get showAddButton() { + return this.hiddenItems.length === 0 && this.addable; + } + constructor(cdr, ngZone, viewportRuler, nzResizeObserver, dir) { + this.cdr = cdr; + this.ngZone = ngZone; + this.viewportRuler = viewportRuler; + this.nzResizeObserver = nzResizeObserver; + this.dir = dir; + this.indexFocused = new EventEmitter(); + this.selectFocusedIndex = new EventEmitter(); + this.addClicked = new EventEmitter(); + this.tabScroll = new EventEmitter(); + this.position = "horizontal"; + this.addable = false; + this.hideBar = false; + this.addIcon = "plus"; + this.inkBarAnimated = true; + this.translate = null; + this.transformX = 0; + this.transformY = 0; + this.pingLeft = false; + this.pingRight = false; + this.pingTop = false; + this.pingBottom = false; + this.hiddenItems = []; + this.destroy$ = new Subject(); + this._selectedIndex = 0; + this.wrapperWidth = 0; + this.wrapperHeight = 0; + this.scrollListWidth = 0; + this.scrollListHeight = 0; + this.operationWidth = 0; + this.operationHeight = 0; + this.addButtonWidth = 0; + this.addButtonHeight = 0; + this.selectedIndexChanged = false; + this.lockAnimationTimeoutId = -1; + this.cssTransformTimeWaitingId = -1; + } + ngAfterViewInit() { + const dirChange = this.dir ? this.dir.change.asObservable() : of(null); + const resize = this.viewportRuler.change(150); + const realign = () => { + this.updateScrollListPosition(); + this.alignInkBarToSelectedTab(); + }; + this.keyManager = new FocusKeyManager(this.items).withHorizontalOrientation(this.getLayoutDirection()).withWrap(); + this.keyManager.updateActiveItem(this.selectedIndex); + reqAnimFrame(realign); + merge(this.nzResizeObserver.observe(this.navWarpRef), this.nzResizeObserver.observe(this.navListRef)).pipe(takeUntil(this.destroy$), auditTime(16, RESIZE_SCHEDULER)).subscribe(() => { + realign(); + }); + merge(dirChange, resize, this.items.changes).pipe(takeUntil(this.destroy$)).subscribe(() => { + Promise.resolve().then(realign); + this.keyManager.withHorizontalOrientation(this.getLayoutDirection()); + }); + this.keyManager.change.pipe(takeUntil(this.destroy$)).subscribe((newFocusIndex) => { + this.indexFocused.emit(newFocusIndex); + this.setTabFocus(newFocusIndex); + this.scrollToTab(this.keyManager.activeItem); + }); + } + ngAfterContentChecked() { + if (this.selectedIndexChanged) { + this.updateScrollListPosition(); + this.alignInkBarToSelectedTab(); + this.selectedIndexChanged = false; + this.cdr.markForCheck(); + } + } + ngOnDestroy() { + clearTimeout(this.lockAnimationTimeoutId); + clearTimeout(this.cssTransformTimeWaitingId); + this.destroy$.next(); + this.destroy$.complete(); + } + onSelectedFromMenu(tab) { + const tabIndex = this.items.toArray().findIndex((e) => e === tab); + if (tabIndex !== -1) { + this.keyManager.updateActiveItem(tabIndex); + if (this.focusIndex !== this.selectedIndex) { + this.selectFocusedIndex.emit(this.focusIndex); + this.scrollToTab(tab); + } + } + } + onOffsetChange(e) { + if (this.position === "horizontal") { + if (this.lockAnimationTimeoutId === -1) { + if (this.transformX >= 0 && e.x > 0) { + return; + } + if (this.transformX <= this.wrapperWidth - this.scrollListWidth && e.x < 0) { + return; + } + } + e.event.preventDefault(); + this.transformX = this.clampTransformX(this.transformX + e.x); + this.setTransform(this.transformX, 0); + } else { + if (this.lockAnimationTimeoutId === -1) { + if (this.transformY >= 0 && e.y > 0) { + return; + } + if (this.transformY <= this.wrapperHeight - this.scrollListHeight && e.y < 0) { + return; + } + } + e.event.preventDefault(); + this.transformY = this.clampTransformY(this.transformY + e.y); + this.setTransform(0, this.transformY); + } + this.lockAnimation(); + this.setVisibleRange(); + this.setPingStatus(); + } + handleKeydown(event) { + const inNavigationList = this.navWarpRef.nativeElement.contains(event.target); + if (hasModifierKey(event) || !inNavigationList) { + return; + } + switch (event.keyCode) { + case LEFT_ARROW: + case UP_ARROW: + case RIGHT_ARROW: + case DOWN_ARROW: + this.lockAnimation(); + this.keyManager.onKeydown(event); + break; + case ENTER: + case SPACE: + if (this.focusIndex !== this.selectedIndex) { + this.selectFocusedIndex.emit(this.focusIndex); + } + break; + default: + this.keyManager.onKeydown(event); + } + } + isValidIndex(index) { + if (!this.items) { + return true; + } + const tab = this.items ? this.items.toArray()[index] : null; + return !!tab && !tab.disabled; + } + scrollToTab(tab) { + if (!this.items.find((e) => e === tab)) { + return; + } + const tabs = this.items.toArray(); + if (this.position === "horizontal") { + let newTransform = this.transformX; + if (this.getLayoutDirection() === "rtl") { + const right = tabs[0].left + tabs[0].width - tab.left - tab.width; + if (right < this.transformX) { + newTransform = right; + } else if (right + tab.width > this.transformX + this.wrapperWidth) { + newTransform = right + tab.width - this.wrapperWidth; + } + } else if (tab.left < -this.transformX) { + newTransform = -tab.left; + } else if (tab.left + tab.width > -this.transformX + this.wrapperWidth) { + newTransform = -(tab.left + tab.width - this.wrapperWidth); + } + this.transformX = newTransform; + this.transformY = 0; + this.setTransform(newTransform, 0); + } else { + let newTransform = this.transformY; + if (tab.top < -this.transformY) { + newTransform = -tab.top; + } else if (tab.top + tab.height > -this.transformY + this.wrapperHeight) { + newTransform = -(tab.top + tab.height - this.wrapperHeight); + } + this.transformY = newTransform; + this.transformX = 0; + this.setTransform(0, newTransform); + } + clearTimeout(this.cssTransformTimeWaitingId); + this.cssTransformTimeWaitingId = setTimeout(() => { + this.setVisibleRange(); + }, CSS_TRANSFORM_TIME); + } + lockAnimation() { + if (this.lockAnimationTimeoutId === -1) { + this.ngZone.runOutsideAngular(() => { + this.navListRef.nativeElement.style.transition = "none"; + this.lockAnimationTimeoutId = setTimeout(() => { + this.navListRef.nativeElement.style.transition = ""; + this.lockAnimationTimeoutId = -1; + }, CSS_TRANSFORM_TIME); + }); + } + } + setTransform(x, y) { + this.navListRef.nativeElement.style.transform = `translate(${x}px, ${y}px)`; + } + clampTransformX(transform) { + const scrollWidth = this.wrapperWidth - this.scrollListWidth; + if (this.getLayoutDirection() === "rtl") { + return Math.max(Math.min(scrollWidth, transform), 0); + } else { + return Math.min(Math.max(scrollWidth, transform), 0); + } + } + clampTransformY(transform) { + return Math.min(Math.max(this.wrapperHeight - this.scrollListHeight, transform), 0); + } + updateScrollListPosition() { + this.resetSizes(); + this.transformX = this.clampTransformX(this.transformX); + this.transformY = this.clampTransformY(this.transformY); + this.setVisibleRange(); + this.setPingStatus(); + if (this.keyManager) { + this.keyManager.updateActiveItem(this.keyManager.activeItemIndex); + if (this.keyManager.activeItem) { + this.scrollToTab(this.keyManager.activeItem); + } + } + } + resetSizes() { + this.addButtonWidth = this.addBtnRef ? this.addBtnRef.getElementWidth() : 0; + this.addButtonHeight = this.addBtnRef ? this.addBtnRef.getElementHeight() : 0; + this.operationWidth = this.operationRef.getElementWidth(); + this.operationHeight = this.operationRef.getElementHeight(); + this.wrapperWidth = this.navWarpRef.nativeElement.offsetWidth || 0; + this.wrapperHeight = this.navWarpRef.nativeElement.offsetHeight || 0; + this.scrollListHeight = this.navListRef.nativeElement.offsetHeight || 0; + this.scrollListWidth = this.navListRef.nativeElement.offsetWidth || 0; + } + alignInkBarToSelectedTab() { + const selectedItem = this.items && this.items.length ? this.items.toArray()[this.selectedIndex] : null; + const selectedItemElement = selectedItem ? selectedItem.elementRef.nativeElement : null; + if (selectedItemElement) { + this.inkBar.alignToElement(selectedItemElement.parentElement); + } + } + setPingStatus() { + const ping = { + top: false, + right: false, + bottom: false, + left: false + }; + const navWarp = this.navWarpRef.nativeElement; + if (this.position === "horizontal") { + if (this.getLayoutDirection() === "rtl") { + ping.right = this.transformX > 0; + ping.left = this.transformX + this.wrapperWidth < this.scrollListWidth; + } else { + ping.left = this.transformX < 0; + ping.right = -this.transformX + this.wrapperWidth < this.scrollListWidth; + } + } else { + ping.top = this.transformY < 0; + ping.bottom = -this.transformY + this.wrapperHeight < this.scrollListHeight; + } + Object.keys(ping).forEach((pos) => { + const className = `ant-tabs-nav-wrap-ping-${pos}`; + if (ping[pos]) { + navWarp.classList.add(className); + } else { + navWarp.classList.remove(className); + } + }); + } + setVisibleRange() { + let unit; + let position; + let transformSize; + let basicSize; + let tabContentSize; + let addSize; + const tabs = this.items.toArray(); + const DEFAULT_SIZE = { + width: 0, + height: 0, + left: 0, + top: 0, + right: 0 + }; + const getOffset = (index) => { + let offset; + const size = tabs[index] || DEFAULT_SIZE; + if (position === "right") { + offset = tabs[0].left + tabs[0].width - tabs[index].left - tabs[index].width; + } else { + offset = size[position]; + } + return offset; + }; + if (this.position === "horizontal") { + unit = "width"; + basicSize = this.wrapperWidth; + tabContentSize = this.scrollListWidth - (this.hiddenItems.length ? this.operationWidth : 0); + addSize = this.addButtonWidth; + transformSize = Math.abs(this.transformX); + if (this.getLayoutDirection() === "rtl") { + position = "right"; + this.pingRight = this.transformX > 0; + this.pingLeft = this.transformX + this.wrapperWidth < this.scrollListWidth; + } else { + this.pingLeft = this.transformX < 0; + this.pingRight = -this.transformX + this.wrapperWidth < this.scrollListWidth; + position = "left"; + } + } else { + unit = "height"; + basicSize = this.wrapperHeight; + tabContentSize = this.scrollListHeight - (this.hiddenItems.length ? this.operationHeight : 0); + addSize = this.addButtonHeight; + position = "top"; + transformSize = -this.transformY; + this.pingTop = this.transformY < 0; + this.pingBottom = -this.transformY + this.wrapperHeight < this.scrollListHeight; + } + let mergedBasicSize = basicSize; + if (tabContentSize + addSize > basicSize) { + mergedBasicSize = basicSize - addSize; + } + if (!tabs.length) { + this.hiddenItems = []; + this.cdr.markForCheck(); + return; + } + const len = tabs.length; + let endIndex = len; + for (let i = 0; i < len; i += 1) { + const offset = getOffset(i); + const size = tabs[i] || DEFAULT_SIZE; + if (offset + size[unit] > transformSize + mergedBasicSize) { + endIndex = i - 1; + break; + } + } + let startIndex = 0; + for (let i = len - 1; i >= 0; i -= 1) { + const offset = getOffset(i); + if (offset < transformSize) { + startIndex = i + 1; + break; + } + } + const startHiddenTabs = tabs.slice(0, startIndex); + const endHiddenTabs = tabs.slice(endIndex + 1); + this.hiddenItems = [...startHiddenTabs, ...endHiddenTabs]; + this.cdr.markForCheck(); + } + getLayoutDirection() { + return this.dir && this.dir.value === "rtl" ? "rtl" : "ltr"; + } + setTabFocus(_tabIndex) { + } + ngOnChanges(changes) { + const { + position + } = changes; + if (position && !position.isFirstChange()) { + this.alignInkBarToSelectedTab(); + this.lockAnimation(); + this.updateScrollListPosition(); + } + } +}; +_NzTabNavBarComponent.ɵfac = function NzTabNavBarComponent_Factory(t) { + return new (t || _NzTabNavBarComponent)(ɵɵdirectiveInject(ChangeDetectorRef), ɵɵdirectiveInject(NgZone), ɵɵdirectiveInject(ViewportRuler), ɵɵdirectiveInject(NzResizeObserver), ɵɵdirectiveInject(Directionality, 8)); +}; +_NzTabNavBarComponent.ɵcmp = ɵɵdefineComponent({ + type: _NzTabNavBarComponent, + selectors: [["nz-tabs-nav"]], + contentQueries: function NzTabNavBarComponent_ContentQueries(rf, ctx, dirIndex) { + if (rf & 1) { + ɵɵcontentQuery(dirIndex, NzTabNavItemDirective, 5); + } + if (rf & 2) { + let _t; + ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.items = _t); + } + }, + viewQuery: function NzTabNavBarComponent_Query(rf, ctx) { + if (rf & 1) { + ɵɵviewQuery(_c2, 7); + ɵɵviewQuery(_c3, 7); + ɵɵviewQuery(NzTabNavOperationComponent, 7); + ɵɵviewQuery(NzTabAddButtonComponent, 5); + ɵɵviewQuery(NzTabsInkBarDirective, 7); + } + if (rf & 2) { + let _t; + ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.navWarpRef = _t.first); + ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.navListRef = _t.first); + ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.operationRef = _t.first); + ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.addBtnRef = _t.first); + ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.inkBar = _t.first); + } + }, + hostAttrs: [1, "ant-tabs-nav"], + hostBindings: function NzTabNavBarComponent_HostBindings(rf, ctx) { + if (rf & 1) { + ɵɵlistener("keydown", function NzTabNavBarComponent_keydown_HostBindingHandler($event) { + return ctx.handleKeydown($event); + }); + } + }, + inputs: { + position: "position", + addable: "addable", + hideBar: "hideBar", + addIcon: "addIcon", + inkBarAnimated: "inkBarAnimated", + extraTemplate: "extraTemplate", + selectedIndex: "selectedIndex" + }, + outputs: { + indexFocused: "indexFocused", + selectFocusedIndex: "selectFocusedIndex", + addClicked: "addClicked", + tabScroll: "tabScroll" + }, + exportAs: ["nzTabsNav"], + standalone: true, + features: [ɵɵNgOnChangesFeature, ɵɵStandaloneFeature], + ngContentSelectors: _c4, + decls: 9, + vars: 16, + consts: [[1, "ant-tabs-nav-wrap"], ["navWarp", ""], ["nzTabScrollList", "", "role", "tablist", 1, "ant-tabs-nav-list", 3, "offsetChange", "tabScroll"], ["navList", ""], ["role", "tab", "nz-tab-add-button", "", 3, "addIcon", "click", 4, "ngIf"], ["nz-tabs-ink-bar", "", 3, "hidden", "position", "animated"], [3, "addIcon", "addable", "items", "addClicked", "selected"], ["class", "ant-tabs-extra-content", 4, "ngIf"], ["role", "tab", "nz-tab-add-button", "", 3, "addIcon", "click"], [1, "ant-tabs-extra-content"], [3, "ngTemplateOutlet"]], + template: function NzTabNavBarComponent_Template(rf, ctx) { + if (rf & 1) { + ɵɵprojectionDef(); + ɵɵelementStart(0, "div", 0, 1)(2, "div", 2, 3); + ɵɵlistener("offsetChange", function NzTabNavBarComponent_Template_div_offsetChange_2_listener($event) { + return ctx.onOffsetChange($event); + })("tabScroll", function NzTabNavBarComponent_Template_div_tabScroll_2_listener($event) { + return ctx.tabScroll.emit($event); + }); + ɵɵprojection(4); + ɵɵtemplate(5, NzTabNavBarComponent_button_5_Template, 1, 2, "button", 4); + ɵɵelement(6, "div", 5); + ɵɵelementEnd()(); + ɵɵelementStart(7, "nz-tab-nav-operation", 6); + ɵɵlistener("addClicked", function NzTabNavBarComponent_Template_nz_tab_nav_operation_addClicked_7_listener() { + return ctx.addClicked.emit(); + })("selected", function NzTabNavBarComponent_Template_nz_tab_nav_operation_selected_7_listener($event) { + return ctx.onSelectedFromMenu($event); + }); + ɵɵelementEnd(); + ɵɵtemplate(8, NzTabNavBarComponent_div_8_Template, 2, 1, "div", 7); + } + if (rf & 2) { + ɵɵclassProp("ant-tabs-nav-wrap-ping-left", ctx.pingLeft)("ant-tabs-nav-wrap-ping-right", ctx.pingRight)("ant-tabs-nav-wrap-ping-top", ctx.pingTop)("ant-tabs-nav-wrap-ping-bottom", ctx.pingBottom); + ɵɵadvance(5); + ɵɵproperty("ngIf", ctx.showAddButton); + ɵɵadvance(1); + ɵɵproperty("hidden", ctx.hideBar)("position", ctx.position)("animated", ctx.inkBarAnimated); + ɵɵadvance(1); + ɵɵproperty("addIcon", ctx.addIcon)("addable", ctx.addable)("items", ctx.hiddenItems); + ɵɵadvance(1); + ɵɵproperty("ngIf", ctx.extraTemplate); + } + }, + dependencies: [NzTabScrollListDirective, NgIf, NzTabAddButtonComponent, NzTabsInkBarDirective, NzTabNavOperationComponent, NgTemplateOutlet], + encapsulation: 2, + changeDetection: 0 +}); +var NzTabNavBarComponent = _NzTabNavBarComponent; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzTabNavBarComponent, [{ + type: Component, + args: [{ + selector: "nz-tabs-nav", + exportAs: "nzTabsNav", + preserveWhitespaces: false, + changeDetection: ChangeDetectionStrategy.OnPush, + encapsulation: ViewEncapsulation$1.None, + template: ` +
+
+ + +
+
+
+ +
+ +
+ `, + host: { + class: "ant-tabs-nav", + "(keydown)": "handleKeydown($event)" + }, + imports: [NzTabScrollListDirective, NgIf, NzTabAddButtonComponent, NzTabsInkBarDirective, NzTabNavOperationComponent, NgTemplateOutlet], + standalone: true + }] + }], () => [{ + type: ChangeDetectorRef + }, { + type: NgZone + }, { + type: ViewportRuler + }, { + type: NzResizeObserver + }, { + type: Directionality, + decorators: [{ + type: Optional + }] + }], { + indexFocused: [{ + type: Output + }], + selectFocusedIndex: [{ + type: Output + }], + addClicked: [{ + type: Output + }], + tabScroll: [{ + type: Output + }], + position: [{ + type: Input + }], + addable: [{ + type: Input + }], + hideBar: [{ + type: Input + }], + addIcon: [{ + type: Input + }], + inkBarAnimated: [{ + type: Input + }], + extraTemplate: [{ + type: Input + }], + selectedIndex: [{ + type: Input + }], + navWarpRef: [{ + type: ViewChild, + args: ["navWarp", { + static: true + }] + }], + navListRef: [{ + type: ViewChild, + args: ["navList", { + static: true + }] + }], + operationRef: [{ + type: ViewChild, + args: [NzTabNavOperationComponent, { + static: true + }] + }], + addBtnRef: [{ + type: ViewChild, + args: [NzTabAddButtonComponent, { + static: false + }] + }], + inkBar: [{ + type: ViewChild, + args: [NzTabsInkBarDirective, { + static: true + }] + }], + items: [{ + type: ContentChildren, + args: [NzTabNavItemDirective, { + descendants: true + }] + }] + }); +})(); +var _NzTabBodyComponent = class _NzTabBodyComponent { + constructor() { + this.content = null; + this.active = false; + this.tabPaneAnimated = true; + this.forceRender = false; + } +}; +_NzTabBodyComponent.ɵfac = function NzTabBodyComponent_Factory(t) { + return new (t || _NzTabBodyComponent)(); +}; +_NzTabBodyComponent.ɵcmp = ɵɵdefineComponent({ + type: _NzTabBodyComponent, + selectors: [["", "nz-tab-body", ""]], + hostAttrs: [1, "ant-tabs-tabpane"], + hostVars: 12, + hostBindings: function NzTabBodyComponent_HostBindings(rf, ctx) { + if (rf & 2) { + ɵɵattribute("tabindex", ctx.active ? 0 : -1)("aria-hidden", !ctx.active); + ɵɵstyleProp("visibility", ctx.tabPaneAnimated ? ctx.active ? null : "hidden" : null)("height", ctx.tabPaneAnimated ? ctx.active ? null : 0 : null)("overflow-y", ctx.tabPaneAnimated ? ctx.active ? null : "none" : null)("display", !ctx.tabPaneAnimated ? ctx.active ? null : "none" : null); + ɵɵclassProp("ant-tabs-tabpane-active", ctx.active); + } + }, + inputs: { + content: "content", + active: "active", + tabPaneAnimated: "tabPaneAnimated", + forceRender: "forceRender" + }, + exportAs: ["nzTabBody"], + standalone: true, + features: [ɵɵStandaloneFeature], + attrs: _c5, + decls: 1, + vars: 1, + consts: [[4, "ngIf"], [3, "ngTemplateOutlet"]], + template: function NzTabBodyComponent_Template(rf, ctx) { + if (rf & 1) { + ɵɵtemplate(0, NzTabBodyComponent_ng_container_0_Template, 2, 1, "ng-container", 0); + } + if (rf & 2) { + ɵɵproperty("ngIf", ctx.active || ctx.forceRender); + } + }, + dependencies: [NgIf, NgTemplateOutlet], + encapsulation: 2, + changeDetection: 0 +}); +var NzTabBodyComponent = _NzTabBodyComponent; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzTabBodyComponent, [{ + type: Component, + args: [{ + selector: "[nz-tab-body]", + exportAs: "nzTabBody", + preserveWhitespaces: false, + encapsulation: ViewEncapsulation$1.None, + changeDetection: ChangeDetectionStrategy.OnPush, + template: ` + + + + `, + host: { + class: "ant-tabs-tabpane", + "[class.ant-tabs-tabpane-active]": "active", + "[attr.tabindex]": "active ? 0 : -1", + "[attr.aria-hidden]": "!active", + "[style.visibility]": 'tabPaneAnimated ? active ? null : "hidden" : null', + "[style.height]": "tabPaneAnimated ? active ? null : 0 : null", + "[style.overflow-y]": 'tabPaneAnimated ? active ? null : "none" : null', + "[style.display]": '!tabPaneAnimated ? active ? null : "none" : null' + }, + imports: [NgIf, NgTemplateOutlet], + standalone: true + }] + }], null, { + content: [{ + type: Input + }], + active: [{ + type: Input + }], + tabPaneAnimated: [{ + type: Input + }], + forceRender: [{ + type: Input + }] + }); +})(); +var _NzTabCloseButtonComponent = class _NzTabCloseButtonComponent { + constructor() { + this.closeIcon = "close"; + } +}; +_NzTabCloseButtonComponent.ɵfac = function NzTabCloseButtonComponent_Factory(t) { + return new (t || _NzTabCloseButtonComponent)(); +}; +_NzTabCloseButtonComponent.ɵcmp = ɵɵdefineComponent({ + type: _NzTabCloseButtonComponent, + selectors: [["nz-tab-close-button"], ["button", "nz-tab-close-button", ""]], + hostAttrs: ["aria-label", "Close tab", "type", "button", 1, "ant-tabs-tab-remove"], + inputs: { + closeIcon: "closeIcon" + }, + standalone: true, + features: [ɵɵStandaloneFeature], + decls: 1, + vars: 1, + consts: [[4, "nzStringTemplateOutlet"], ["nz-icon", "", "nzTheme", "outline", 3, "nzType"]], + template: function NzTabCloseButtonComponent_Template(rf, ctx) { + if (rf & 1) { + ɵɵtemplate(0, NzTabCloseButtonComponent_ng_container_0_Template, 2, 1, "ng-container", 0); + } + if (rf & 2) { + ɵɵproperty("nzStringTemplateOutlet", ctx.closeIcon); + } + }, + dependencies: [NzOutletModule, NzStringTemplateOutletDirective, NzIconModule, NzIconDirective], + encapsulation: 2 +}); +var NzTabCloseButtonComponent = _NzTabCloseButtonComponent; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzTabCloseButtonComponent, [{ + type: Component, + args: [{ + selector: "nz-tab-close-button, button[nz-tab-close-button]", + template: ` + + + + `, + host: { + class: "ant-tabs-tab-remove", + "aria-label": "Close tab", + type: "button" + }, + imports: [NzOutletModule, NzIconModule], + standalone: true + }] + }], () => [], { + closeIcon: [{ + type: Input + }] + }); +})(); +var _NzTabLinkTemplateDirective = class _NzTabLinkTemplateDirective { + constructor(templateRef) { + this.templateRef = templateRef; + } +}; +_NzTabLinkTemplateDirective.ɵfac = function NzTabLinkTemplateDirective_Factory(t) { + return new (t || _NzTabLinkTemplateDirective)(ɵɵdirectiveInject(TemplateRef, 1)); +}; +_NzTabLinkTemplateDirective.ɵdir = ɵɵdefineDirective({ + type: _NzTabLinkTemplateDirective, + selectors: [["ng-template", "nzTabLink", ""]], + exportAs: ["nzTabLinkTemplate"], + standalone: true +}); +var NzTabLinkTemplateDirective = _NzTabLinkTemplateDirective; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzTabLinkTemplateDirective, [{ + type: Directive, + args: [{ + selector: "ng-template[nzTabLink]", + exportAs: "nzTabLinkTemplate", + standalone: true + }] + }], () => [{ + type: TemplateRef, + decorators: [{ + type: Host + }] + }], null); +})(); +var _NzTabLinkDirective = class _NzTabLinkDirective { + constructor(elementRef, routerLink) { + this.elementRef = elementRef; + this.routerLink = routerLink; + } +}; +_NzTabLinkDirective.ɵfac = function NzTabLinkDirective_Factory(t) { + return new (t || _NzTabLinkDirective)(ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(RouterLink, 10)); +}; +_NzTabLinkDirective.ɵdir = ɵɵdefineDirective({ + type: _NzTabLinkDirective, + selectors: [["a", "nz-tab-link", ""]], + exportAs: ["nzTabLink"], + standalone: true +}); +var NzTabLinkDirective = _NzTabLinkDirective; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzTabLinkDirective, [{ + type: Directive, + args: [{ + selector: "a[nz-tab-link]", + exportAs: "nzTabLink", + standalone: true + }] + }], () => [{ + type: ElementRef + }, { + type: RouterLink, + decorators: [{ + type: Optional + }, { + type: Self + }] + }], null); +})(); +var _NzTabDirective = class _NzTabDirective { +}; +_NzTabDirective.ɵfac = function NzTabDirective_Factory(t) { + return new (t || _NzTabDirective)(); +}; +_NzTabDirective.ɵdir = ɵɵdefineDirective({ + type: _NzTabDirective, + selectors: [["", "nz-tab", ""]], + exportAs: ["nzTab"], + standalone: true +}); +var NzTabDirective = _NzTabDirective; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzTabDirective, [{ + type: Directive, + args: [{ + selector: "[nz-tab]", + exportAs: "nzTab", + standalone: true + }] + }], null, null); +})(); +var NZ_TAB_SET = new InjectionToken("NZ_TAB_SET"); +var _NzTabComponent = class _NzTabComponent { + get content() { + return this.template || this.contentTemplate; + } + get label() { + return this.nzTitle || this.nzTabLinkTemplateDirective?.templateRef; + } + constructor(closestTabSet) { + this.closestTabSet = closestTabSet; + this.nzTitle = ""; + this.nzClosable = false; + this.nzCloseIcon = "close"; + this.nzDisabled = false; + this.nzForceRender = false; + this.nzSelect = new EventEmitter(); + this.nzDeselect = new EventEmitter(); + this.nzClick = new EventEmitter(); + this.nzContextmenu = new EventEmitter(); + this.template = null; + this.isActive = false; + this.position = null; + this.origin = null; + this.stateChanges = new Subject(); + } + ngOnChanges(changes) { + const { + nzTitle, + nzDisabled, + nzForceRender + } = changes; + if (nzTitle || nzDisabled || nzForceRender) { + this.stateChanges.next(); + } + } + ngOnDestroy() { + this.stateChanges.complete(); + } +}; +_NzTabComponent.ɵfac = function NzTabComponent_Factory(t) { + return new (t || _NzTabComponent)(ɵɵdirectiveInject(NZ_TAB_SET)); +}; +_NzTabComponent.ɵcmp = ɵɵdefineComponent({ + type: _NzTabComponent, + selectors: [["nz-tab"]], + contentQueries: function NzTabComponent_ContentQueries(rf, ctx, dirIndex) { + if (rf & 1) { + ɵɵcontentQuery(dirIndex, NzTabLinkTemplateDirective, 5); + ɵɵcontentQuery(dirIndex, NzTabDirective, 5, TemplateRef); + ɵɵcontentQuery(dirIndex, NzTabLinkDirective, 5); + } + if (rf & 2) { + let _t; + ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.nzTabLinkTemplateDirective = _t.first); + ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.template = _t.first); + ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.linkDirective = _t.first); + } + }, + viewQuery: function NzTabComponent_Query(rf, ctx) { + if (rf & 1) { + ɵɵviewQuery(_c6, 7); + } + if (rf & 2) { + let _t; + ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.contentTemplate = _t.first); + } + }, + inputs: { + nzTitle: "nzTitle", + nzClosable: "nzClosable", + nzCloseIcon: "nzCloseIcon", + nzDisabled: "nzDisabled", + nzForceRender: "nzForceRender" + }, + outputs: { + nzSelect: "nzSelect", + nzDeselect: "nzDeselect", + nzClick: "nzClick", + nzContextmenu: "nzContextmenu" + }, + exportAs: ["nzTab"], + standalone: true, + features: [ɵɵNgOnChangesFeature, ɵɵStandaloneFeature], + ngContentSelectors: _c8, + decls: 4, + vars: 0, + consts: [["tabLinkTemplate", ""], ["contentTemplate", ""]], + template: function NzTabComponent_Template(rf, ctx) { + if (rf & 1) { + ɵɵprojectionDef(_c7); + ɵɵtemplate(0, NzTabComponent_ng_template_0_Template, 1, 0, "ng-template", null, 0, ɵɵtemplateRefExtractor)(2, NzTabComponent_ng_template_2_Template, 1, 0, "ng-template", null, 1, ɵɵtemplateRefExtractor); + } + }, + encapsulation: 2, + changeDetection: 0 +}); +var NzTabComponent = _NzTabComponent; +__decorate([InputBoolean()], NzTabComponent.prototype, "nzClosable", void 0); +__decorate([InputBoolean()], NzTabComponent.prototype, "nzDisabled", void 0); +__decorate([InputBoolean()], NzTabComponent.prototype, "nzForceRender", void 0); +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzTabComponent, [{ + type: Component, + args: [{ + selector: "nz-tab", + exportAs: "nzTab", + preserveWhitespaces: false, + encapsulation: ViewEncapsulation$1.None, + changeDetection: ChangeDetectionStrategy.OnPush, + template: ` + + + + + `, + standalone: true + }] + }], () => [{ + type: void 0, + decorators: [{ + type: Inject, + args: [NZ_TAB_SET] + }] + }], { + nzTitle: [{ + type: Input + }], + nzClosable: [{ + type: Input + }], + nzCloseIcon: [{ + type: Input + }], + nzDisabled: [{ + type: Input + }], + nzForceRender: [{ + type: Input + }], + nzSelect: [{ + type: Output + }], + nzDeselect: [{ + type: Output + }], + nzClick: [{ + type: Output + }], + nzContextmenu: [{ + type: Output + }], + nzTabLinkTemplateDirective: [{ + type: ContentChild, + args: [NzTabLinkTemplateDirective, { + static: false + }] + }], + template: [{ + type: ContentChild, + args: [NzTabDirective, { + static: false, + read: TemplateRef + }] + }], + linkDirective: [{ + type: ContentChild, + args: [NzTabLinkDirective, { + static: false + }] + }], + contentTemplate: [{ + type: ViewChild, + args: ["contentTemplate", { + static: true + }] + }] + }); +})(); +var NzTabChangeEvent = class { +}; +var NZ_CONFIG_MODULE_NAME = "tabs"; +var nextId = 0; +var _NzTabSetComponent = class _NzTabSetComponent { + get nzSelectedIndex() { + return this.selectedIndex; + } + set nzSelectedIndex(value) { + this.indexToSelect = coerceNumberProperty(value, null); + } + get position() { + return ["top", "bottom"].indexOf(this.nzTabPosition) === -1 ? "vertical" : "horizontal"; + } + get addable() { + return this.nzType === "editable-card" && !this.nzHideAdd; + } + get closable() { + return this.nzType === "editable-card"; + } + get line() { + return this.nzType === "line"; + } + get inkBarAnimated() { + return this.line && (typeof this.nzAnimated === "boolean" ? this.nzAnimated : this.nzAnimated.inkBar); + } + get tabPaneAnimated() { + return this.position === "horizontal" && this.line && (typeof this.nzAnimated === "boolean" ? this.nzAnimated : this.nzAnimated.tabPane); + } + constructor(nzConfigService, ngZone, cdr, directionality, router) { + this.nzConfigService = nzConfigService; + this.ngZone = ngZone; + this.cdr = cdr; + this.directionality = directionality; + this.router = router; + this._nzModuleName = NZ_CONFIG_MODULE_NAME; + this.nzTabPosition = "top"; + this.nzCanDeactivate = null; + this.nzAddIcon = "plus"; + this.nzTabBarStyle = null; + this.nzType = "line"; + this.nzSize = "default"; + this.nzAnimated = true; + this.nzTabBarGutter = void 0; + this.nzHideAdd = false; + this.nzCentered = false; + this.nzHideAll = false; + this.nzLinkRouter = false; + this.nzLinkExact = true; + this.nzSelectChange = new EventEmitter(true); + this.nzSelectedIndexChange = new EventEmitter(); + this.nzTabListScroll = new EventEmitter(); + this.nzClose = new EventEmitter(); + this.nzAdd = new EventEmitter(); + this.allTabs = new QueryList(); + this.tabs = new QueryList(); + this.dir = "ltr"; + this.destroy$ = new Subject(); + this.indexToSelect = 0; + this.selectedIndex = null; + this.tabLabelSubscription = Subscription.EMPTY; + this.tabsSubscription = Subscription.EMPTY; + this.canDeactivateSubscription = Subscription.EMPTY; + this.tabSetId = nextId++; + } + ngOnInit() { + this.dir = this.directionality.value; + this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction) => { + this.dir = direction; + this.cdr.detectChanges(); + }); + } + ngOnDestroy() { + this.destroy$.next(); + this.destroy$.complete(); + this.tabs.destroy(); + this.tabLabelSubscription.unsubscribe(); + this.tabsSubscription.unsubscribe(); + this.canDeactivateSubscription.unsubscribe(); + } + ngAfterContentInit() { + this.ngZone.runOutsideAngular(() => { + Promise.resolve().then(() => this.setUpRouter()); + }); + this.subscribeToTabLabels(); + this.subscribeToAllTabChanges(); + this.tabsSubscription = this.tabs.changes.subscribe(() => { + const indexToSelect = this.clampTabIndex(this.indexToSelect); + if (indexToSelect === this.selectedIndex) { + const tabs = this.tabs.toArray(); + for (let i = 0; i < tabs.length; i++) { + if (tabs[i].isActive) { + this.indexToSelect = this.selectedIndex = i; + break; + } + } + } + this.subscribeToTabLabels(); + this.cdr.markForCheck(); + }); + } + ngAfterContentChecked() { + const indexToSelect = this.indexToSelect = this.clampTabIndex(this.indexToSelect); + if (this.selectedIndex !== indexToSelect) { + const isFirstRun = this.selectedIndex == null; + if (!isFirstRun) { + this.nzSelectChange.emit(this.createChangeEvent(indexToSelect)); + } + Promise.resolve().then(() => { + this.tabs.forEach((tab, index) => tab.isActive = index === indexToSelect); + if (!isFirstRun) { + this.nzSelectedIndexChange.emit(indexToSelect); + } + }); + } + this.tabs.forEach((tab, index) => { + tab.position = index - indexToSelect; + if (this.selectedIndex != null && tab.position === 0 && !tab.origin) { + tab.origin = indexToSelect - this.selectedIndex; + } + }); + if (this.selectedIndex !== indexToSelect) { + this.selectedIndex = indexToSelect; + this.cdr.markForCheck(); + } + } + onClose(index, e) { + e.preventDefault(); + e.stopPropagation(); + this.nzClose.emit({ + index + }); + } + onAdd() { + this.nzAdd.emit(); + } + clampTabIndex(index) { + return Math.min(this.tabs.length - 1, Math.max(index || 0, 0)); + } + createChangeEvent(index) { + const event = new NzTabChangeEvent(); + event.index = index; + if (this.tabs && this.tabs.length) { + event.tab = this.tabs.toArray()[index]; + this.tabs.forEach((tab, i) => { + if (i !== index) { + tab.nzDeselect.emit(); + } + }); + event.tab.nzSelect.emit(); + } + return event; + } + subscribeToTabLabels() { + if (this.tabLabelSubscription) { + this.tabLabelSubscription.unsubscribe(); + } + this.tabLabelSubscription = merge(...this.tabs.map((tab) => tab.stateChanges)).subscribe(() => this.cdr.markForCheck()); + } + subscribeToAllTabChanges() { + this.allTabs.changes.pipe(startWith(this.allTabs)).subscribe((tabs) => { + this.tabs.reset(tabs.filter((tab) => tab.closestTabSet === this)); + this.tabs.notifyOnChanges(); + }); + } + canDeactivateFun(pre, next) { + if (typeof this.nzCanDeactivate === "function") { + const observable = wrapIntoObservable(this.nzCanDeactivate(pre, next)); + return observable.pipe(first(), takeUntil(this.destroy$)); + } else { + return of(true); + } + } + clickNavItem(tab, index, e) { + if (!tab.nzDisabled) { + tab.nzClick.emit(); + if (!this.isRouterLinkClickEvent(index, e)) { + this.setSelectedIndex(index); + } + } + } + isRouterLinkClickEvent(index, event) { + const target = event.target; + if (this.nzLinkRouter) { + return !!this.tabs.toArray()[index]?.linkDirective?.elementRef.nativeElement.contains(target); + } else { + return false; + } + } + contextmenuNavItem(tab, e) { + if (!tab.nzDisabled) { + tab.nzContextmenu.emit(e); + } + } + setSelectedIndex(index) { + this.canDeactivateSubscription.unsubscribe(); + this.canDeactivateSubscription = this.canDeactivateFun(this.selectedIndex, index).subscribe((can) => { + if (can) { + this.nzSelectedIndex = index; + this.tabNavBarRef.focusIndex = index; + this.cdr.markForCheck(); + } + }); + } + getTabIndex(tab, index) { + if (tab.nzDisabled) { + return null; + } + return this.selectedIndex === index ? 0 : -1; + } + getTabContentId(i) { + return `nz-tabs-${this.tabSetId}-tab-${i}`; + } + setUpRouter() { + if (this.nzLinkRouter) { + if (!this.router) { + throw new Error(`${PREFIX} you should import 'RouterModule' if you want to use 'nzLinkRouter'!`); + } + this.router.events.pipe(takeUntil(this.destroy$), filter((e) => e instanceof NavigationEnd), startWith(true), delay(0)).subscribe(() => { + this.updateRouterActive(); + this.cdr.markForCheck(); + }); + } + } + updateRouterActive() { + if (this.router.navigated) { + const index = this.findShouldActiveTabIndex(); + if (index !== this.selectedIndex) { + this.setSelectedIndex(index); + } + this.nzHideAll = index === -1; + } + } + findShouldActiveTabIndex() { + const tabs = this.tabs.toArray(); + const isActive = this.isLinkActive(this.router); + return tabs.findIndex((tab) => { + const c = tab.linkDirective; + return c ? isActive(c.routerLink) : false; + }); + } + isLinkActive(router) { + return (link) => link ? router.isActive(link.urlTree || "", { + paths: this.nzLinkExact ? "exact" : "subset", + queryParams: this.nzLinkExact ? "exact" : "subset", + fragment: "ignored", + matrixParams: "ignored" + }) : false; + } + getTabContentMarginValue() { + return -(this.nzSelectedIndex || 0) * 100; + } + getTabContentMarginLeft() { + if (this.tabPaneAnimated) { + if (this.dir !== "rtl") { + return `${this.getTabContentMarginValue()}%`; + } + } + return ""; + } + getTabContentMarginRight() { + if (this.tabPaneAnimated) { + if (this.dir === "rtl") { + return `${this.getTabContentMarginValue()}%`; + } + } + return ""; + } +}; +_NzTabSetComponent.ɵfac = function NzTabSetComponent_Factory(t) { + return new (t || _NzTabSetComponent)(ɵɵdirectiveInject(NzConfigService), ɵɵdirectiveInject(NgZone), ɵɵdirectiveInject(ChangeDetectorRef), ɵɵdirectiveInject(Directionality, 8), ɵɵdirectiveInject(Router, 8)); +}; +_NzTabSetComponent.ɵcmp = ɵɵdefineComponent({ + type: _NzTabSetComponent, + selectors: [["nz-tabset"]], + contentQueries: function NzTabSetComponent_ContentQueries(rf, ctx, dirIndex) { + if (rf & 1) { + ɵɵcontentQuery(dirIndex, NzTabComponent, 5); + } + if (rf & 2) { + let _t; + ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.allTabs = _t); + } + }, + viewQuery: function NzTabSetComponent_Query(rf, ctx) { + if (rf & 1) { + ɵɵviewQuery(NzTabNavBarComponent, 5); + } + if (rf & 2) { + let _t; + ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.tabNavBarRef = _t.first); + } + }, + hostAttrs: [1, "ant-tabs"], + hostVars: 24, + hostBindings: function NzTabSetComponent_HostBindings(rf, ctx) { + if (rf & 2) { + ɵɵclassProp("ant-tabs-card", ctx.nzType === "card" || ctx.nzType === "editable-card")("ant-tabs-editable", ctx.nzType === "editable-card")("ant-tabs-editable-card", ctx.nzType === "editable-card")("ant-tabs-centered", ctx.nzCentered)("ant-tabs-rtl", ctx.dir === "rtl")("ant-tabs-top", ctx.nzTabPosition === "top")("ant-tabs-bottom", ctx.nzTabPosition === "bottom")("ant-tabs-left", ctx.nzTabPosition === "left")("ant-tabs-right", ctx.nzTabPosition === "right")("ant-tabs-default", ctx.nzSize === "default")("ant-tabs-small", ctx.nzSize === "small")("ant-tabs-large", ctx.nzSize === "large"); + } + }, + inputs: { + nzSelectedIndex: "nzSelectedIndex", + nzTabPosition: "nzTabPosition", + nzTabBarExtraContent: "nzTabBarExtraContent", + nzCanDeactivate: "nzCanDeactivate", + nzAddIcon: "nzAddIcon", + nzTabBarStyle: "nzTabBarStyle", + nzType: "nzType", + nzSize: "nzSize", + nzAnimated: "nzAnimated", + nzTabBarGutter: "nzTabBarGutter", + nzHideAdd: "nzHideAdd", + nzCentered: "nzCentered", + nzHideAll: "nzHideAll", + nzLinkRouter: "nzLinkRouter", + nzLinkExact: "nzLinkExact" + }, + outputs: { + nzSelectChange: "nzSelectChange", + nzSelectedIndexChange: "nzSelectedIndexChange", + nzTabListScroll: "nzTabListScroll", + nzClose: "nzClose", + nzAdd: "nzAdd" + }, + exportAs: ["nzTabset"], + standalone: true, + features: [ɵɵProvidersFeature([{ + provide: NZ_TAB_SET, + useExisting: _NzTabSetComponent + }]), ɵɵStandaloneFeature], + decls: 4, + vars: 16, + consts: [[3, "ngStyle", "selectedIndex", "inkBarAnimated", "addable", "addIcon", "hideBar", "position", "extraTemplate", "tabScroll", "selectFocusedIndex", "addClicked", 4, "ngIf"], [1, "ant-tabs-content-holder"], [1, "ant-tabs-content"], ["role", "tabpanel", "nz-tab-body", "", 3, "id", "active", "content", "forceRender", "tabPaneAnimated", 4, "ngFor", "ngForOf"], [3, "ngStyle", "selectedIndex", "inkBarAnimated", "addable", "addIcon", "hideBar", "position", "extraTemplate", "tabScroll", "selectFocusedIndex", "addClicked"], ["class", "ant-tabs-tab", 3, "margin-right", "margin-bottom", "ant-tabs-tab-active", "ant-tabs-tab-disabled", "click", "contextmenu", 4, "ngFor", "ngForOf"], [1, "ant-tabs-tab", 3, "click", "contextmenu"], ["role", "tab", "nzTabNavItem", "", "cdkMonitorElementFocus", "", 1, "ant-tabs-tab-btn", 3, "id", "disabled", "tab", "active"], [4, "nzStringTemplateOutlet", "nzStringTemplateOutletContext"], ["nz-tab-close-button", "", 3, "closeIcon", "click", 4, "ngIf"], ["nz-tab-close-button", "", 3, "closeIcon", "click"], ["role", "tabpanel", "nz-tab-body", "", 3, "id", "active", "content", "forceRender", "tabPaneAnimated"]], + template: function NzTabSetComponent_Template(rf, ctx) { + if (rf & 1) { + ɵɵtemplate(0, NzTabSetComponent_nz_tabs_nav_0_Template, 2, 9, "nz-tabs-nav", 0); + ɵɵelementStart(1, "div", 1)(2, "div", 2); + ɵɵtemplate(3, NzTabSetComponent_div_3_Template, 1, 6, "div", 3); + ɵɵelementEnd()(); + } + if (rf & 2) { + ɵɵproperty("ngIf", ctx.tabs.length || ctx.addable); + ɵɵadvance(2); + ɵɵstyleProp("margin-left", ctx.getTabContentMarginLeft())("margin-right", ctx.getTabContentMarginRight()); + ɵɵclassProp("ant-tabs-content-top", ctx.nzTabPosition === "top")("ant-tabs-content-bottom", ctx.nzTabPosition === "bottom")("ant-tabs-content-left", ctx.nzTabPosition === "left")("ant-tabs-content-right", ctx.nzTabPosition === "right")("ant-tabs-content-animated", ctx.tabPaneAnimated); + ɵɵadvance(1); + ɵɵproperty("ngForOf", ctx.tabs); + } + }, + dependencies: [NzTabNavBarComponent, NgIf, NgStyle, NgForOf, NzTabNavItemDirective, A11yModule, CdkMonitorFocus, NzOutletModule, NzStringTemplateOutletDirective, NzTabCloseButtonComponent, NzTabBodyComponent], + encapsulation: 2 +}); +var NzTabSetComponent = _NzTabSetComponent; +__decorate([WithConfig()], NzTabSetComponent.prototype, "nzType", void 0); +__decorate([WithConfig()], NzTabSetComponent.prototype, "nzSize", void 0); +__decorate([WithConfig()], NzTabSetComponent.prototype, "nzAnimated", void 0); +__decorate([WithConfig()], NzTabSetComponent.prototype, "nzTabBarGutter", void 0); +__decorate([InputBoolean()], NzTabSetComponent.prototype, "nzHideAdd", void 0); +__decorate([InputBoolean()], NzTabSetComponent.prototype, "nzCentered", void 0); +__decorate([InputBoolean()], NzTabSetComponent.prototype, "nzHideAll", void 0); +__decorate([InputBoolean()], NzTabSetComponent.prototype, "nzLinkRouter", void 0); +__decorate([InputBoolean()], NzTabSetComponent.prototype, "nzLinkExact", void 0); +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzTabSetComponent, [{ + type: Component, + args: [{ + selector: "nz-tabset", + exportAs: "nzTabset", + preserveWhitespaces: false, + encapsulation: ViewEncapsulation$1.None, + changeDetection: ChangeDetectionStrategy.Default, + providers: [{ + provide: NZ_TAB_SET, + useExisting: NzTabSetComponent + }], + template: ` + +
+ + +
+
+
+
+
+
+
+ `, + host: { + class: "ant-tabs", + "[class.ant-tabs-card]": `nzType === 'card' || nzType === 'editable-card'`, + "[class.ant-tabs-editable]": `nzType === 'editable-card'`, + "[class.ant-tabs-editable-card]": `nzType === 'editable-card'`, + "[class.ant-tabs-centered]": `nzCentered`, + "[class.ant-tabs-rtl]": `dir === 'rtl'`, + "[class.ant-tabs-top]": `nzTabPosition === 'top'`, + "[class.ant-tabs-bottom]": `nzTabPosition === 'bottom'`, + "[class.ant-tabs-left]": `nzTabPosition === 'left'`, + "[class.ant-tabs-right]": `nzTabPosition === 'right'`, + "[class.ant-tabs-default]": `nzSize === 'default'`, + "[class.ant-tabs-small]": `nzSize === 'small'`, + "[class.ant-tabs-large]": `nzSize === 'large'` + }, + imports: [NzTabNavBarComponent, NgIf, NgStyle, NgForOf, NzTabNavItemDirective, A11yModule, NzOutletModule, NzTabCloseButtonComponent, NzTabBodyComponent], + standalone: true + }] + }], () => [{ + type: NzConfigService + }, { + type: NgZone + }, { + type: ChangeDetectorRef + }, { + type: Directionality, + decorators: [{ + type: Optional + }] + }, { + type: Router, + decorators: [{ + type: Optional + }] + }], { + nzSelectedIndex: [{ + type: Input + }], + nzTabPosition: [{ + type: Input + }], + nzTabBarExtraContent: [{ + type: Input + }], + nzCanDeactivate: [{ + type: Input + }], + nzAddIcon: [{ + type: Input + }], + nzTabBarStyle: [{ + type: Input + }], + nzType: [{ + type: Input + }], + nzSize: [{ + type: Input + }], + nzAnimated: [{ + type: Input + }], + nzTabBarGutter: [{ + type: Input + }], + nzHideAdd: [{ + type: Input + }], + nzCentered: [{ + type: Input + }], + nzHideAll: [{ + type: Input + }], + nzLinkRouter: [{ + type: Input + }], + nzLinkExact: [{ + type: Input + }], + nzSelectChange: [{ + type: Output + }], + nzSelectedIndexChange: [{ + type: Output + }], + nzTabListScroll: [{ + type: Output + }], + nzClose: [{ + type: Output + }], + nzAdd: [{ + type: Output + }], + allTabs: [{ + type: ContentChildren, + args: [NzTabComponent, { + descendants: true + }] + }], + tabNavBarRef: [{ + type: ViewChild, + args: [NzTabNavBarComponent, { + static: false + }] + }] + }); +})(); +var DIRECTIVES = [NzTabSetComponent, NzTabComponent, NzTabNavBarComponent, NzTabNavItemDirective, NzTabsInkBarDirective, NzTabScrollListDirective, NzTabNavOperationComponent, NzTabAddButtonComponent, NzTabCloseButtonComponent, NzTabDirective, NzTabBodyComponent, NzTabLinkDirective, NzTabLinkTemplateDirective]; +var _NzTabsModule = class _NzTabsModule { +}; +_NzTabsModule.ɵfac = function NzTabsModule_Factory(t) { + return new (t || _NzTabsModule)(); +}; +_NzTabsModule.ɵmod = ɵɵdefineNgModule({ + type: _NzTabsModule, + imports: [NzTabSetComponent, NzTabComponent, NzTabNavBarComponent, NzTabNavItemDirective, NzTabsInkBarDirective, NzTabScrollListDirective, NzTabNavOperationComponent, NzTabAddButtonComponent, NzTabCloseButtonComponent, NzTabDirective, NzTabBodyComponent, NzTabLinkDirective, NzTabLinkTemplateDirective], + exports: [NzTabSetComponent, NzTabComponent, NzTabNavBarComponent, NzTabNavItemDirective, NzTabsInkBarDirective, NzTabScrollListDirective, NzTabNavOperationComponent, NzTabAddButtonComponent, NzTabCloseButtonComponent, NzTabDirective, NzTabBodyComponent, NzTabLinkDirective, NzTabLinkTemplateDirective] +}); +_NzTabsModule.ɵinj = ɵɵdefineInjector({ + imports: [NzTabSetComponent, NzTabNavBarComponent, NzTabNavOperationComponent, NzTabAddButtonComponent, NzTabCloseButtonComponent] +}); +var NzTabsModule = _NzTabsModule; +(() => { + (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NzTabsModule, [{ + type: NgModule, + args: [{ + imports: [DIRECTIVES], + exports: [DIRECTIVES] + }] + }], null, null); +})(); +export { + NZ_TAB_SET, + NzTabChangeEvent, + NzTabComponent, + NzTabDirective, + NzTabLinkDirective, + NzTabLinkTemplateDirective, + NzTabSetComponent, + NzTabsModule, + NzTabAddButtonComponent as ɵNzTabAddButtonComponent, + NzTabBodyComponent as ɵNzTabBodyComponent, + NzTabCloseButtonComponent as ɵNzTabCloseButtonComponent, + NzTabNavBarComponent as ɵNzTabNavBarComponent, + NzTabNavItemDirective as ɵNzTabNavItemDirective, + NzTabNavOperationComponent as ɵNzTabNavOperationComponent, + NzTabScrollListDirective as ɵNzTabScrollListDirective, + NzTabsInkBarDirective as ɵNzTabsInkBarDirective +}; +//# sourceMappingURL=ng-zorro-antd_tabs.js.map diff --git a/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_tabs.js.map b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_tabs.js.map new file mode 100644 index 0000000..b21591b --- /dev/null +++ b/.angular/cache/17.0.7/vite/deps/ng-zorro-antd_tabs.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-cdk-resize-observer.mjs", "../../../../../node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-tabs.mjs"], + "sourcesContent": ["import * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, Directive, Output, Input, NgModule } from '@angular/core';\nimport { __decorate } from 'tslib';\nimport { InputBoolean } from 'ng-zorro-antd/core/util';\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { Observable, Subject } from 'rxjs';\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n/**\n * Factory that creates a new ResizeObserver and allows us to stub it out in unit tests.\n */\nclass NzResizeObserverFactory {\n create(callback) {\n return typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(callback);\n }\n static {\n this.ɵfac = function NzResizeObserverFactory_Factory(t) {\n return new (t || NzResizeObserverFactory)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NzResizeObserverFactory,\n factory: NzResizeObserverFactory.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzResizeObserverFactory, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\n/** An injectable service that allows watching elements for changes to their content. */\nclass NzResizeObserver {\n constructor(nzResizeObserverFactory) {\n this.nzResizeObserverFactory = nzResizeObserverFactory;\n /** Keeps track of the existing ResizeObservers so they can be reused. */\n this.observedElements = new Map();\n }\n ngOnDestroy() {\n this.observedElements.forEach((_, element) => this.cleanupObserver(element));\n }\n observe(elementOrRef) {\n const element = coerceElement(elementOrRef);\n return new Observable(observer => {\n const stream = this.observeElement(element);\n const subscription = stream.subscribe(observer);\n return () => {\n subscription.unsubscribe();\n this.unobserveElement(element);\n };\n });\n }\n /**\n * Observes the given element by using the existing ResizeObserver if available, or creating a\n * new one if not.\n */\n observeElement(element) {\n if (!this.observedElements.has(element)) {\n const stream = new Subject();\n const observer = this.nzResizeObserverFactory.create(mutations => stream.next(mutations));\n if (observer) {\n observer.observe(element);\n }\n this.observedElements.set(element, {\n observer,\n stream,\n count: 1\n });\n } else {\n this.observedElements.get(element).count++;\n }\n return this.observedElements.get(element).stream;\n }\n /**\n * Un-observes the given element and cleans up the underlying ResizeObserver if nobody else is\n * observing this element.\n */\n unobserveElement(element) {\n if (this.observedElements.has(element)) {\n this.observedElements.get(element).count--;\n if (!this.observedElements.get(element).count) {\n this.cleanupObserver(element);\n }\n }\n }\n /** Clean up the underlying ResizeObserver for the specified element. */\n cleanupObserver(element) {\n if (this.observedElements.has(element)) {\n const {\n observer,\n stream\n } = this.observedElements.get(element);\n if (observer) {\n observer.disconnect();\n }\n stream.complete();\n this.observedElements.delete(element);\n }\n }\n static {\n this.ɵfac = function NzResizeObserver_Factory(t) {\n return new (t || NzResizeObserver)(i0.ɵɵinject(NzResizeObserverFactory));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NzResizeObserver,\n factory: NzResizeObserver.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzResizeObserver, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: NzResizeObserverFactory\n }], null);\n})();\nclass NzResizeObserverDirective {\n subscribe() {\n this.unsubscribe();\n this.currentSubscription = this.nzResizeObserver.observe(this.elementRef).subscribe(this.nzResizeObserve);\n }\n unsubscribe() {\n this.currentSubscription?.unsubscribe();\n }\n constructor(nzResizeObserver, elementRef) {\n this.nzResizeObserver = nzResizeObserver;\n this.elementRef = elementRef;\n this.nzResizeObserve = new EventEmitter();\n this.nzResizeObserverDisabled = false;\n this.currentSubscription = null;\n }\n ngAfterContentInit() {\n if (!this.currentSubscription && !this.nzResizeObserverDisabled) {\n this.subscribe();\n }\n }\n ngOnDestroy() {\n this.unsubscribe();\n }\n ngOnChanges(changes) {\n const {\n nzResizeObserve\n } = changes;\n if (nzResizeObserve) {\n if (this.nzResizeObserverDisabled) {\n this.unsubscribe();\n } else {\n this.subscribe();\n }\n }\n }\n static {\n this.ɵfac = function NzResizeObserverDirective_Factory(t) {\n return new (t || NzResizeObserverDirective)(i0.ɵɵdirectiveInject(NzResizeObserver), i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzResizeObserverDirective,\n selectors: [[\"\", \"nzResizeObserver\", \"\"]],\n inputs: {\n nzResizeObserverDisabled: \"nzResizeObserverDisabled\"\n },\n outputs: {\n nzResizeObserve: \"nzResizeObserve\"\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([NzResizeObserverFactory]), i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n__decorate([InputBoolean()], NzResizeObserverDirective.prototype, \"nzResizeObserverDisabled\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzResizeObserverDirective, [{\n type: Directive,\n args: [{\n selector: '[nzResizeObserver]',\n standalone: true,\n providers: [NzResizeObserverFactory]\n }]\n }], () => [{\n type: NzResizeObserver\n }, {\n type: i0.ElementRef\n }], {\n nzResizeObserve: [{\n type: Output\n }],\n nzResizeObserverDisabled: [{\n type: Input\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzResizeObserverModule {\n static {\n this.ɵfac = function NzResizeObserverModule_Factory(t) {\n return new (t || NzResizeObserverModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NzResizeObserverModule,\n imports: [NzResizeObserverDirective],\n exports: [NzResizeObserverDirective]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzResizeObserverModule, [{\n type: NgModule,\n args: [{\n imports: [NzResizeObserverDirective],\n exports: [NzResizeObserverDirective]\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NzResizeObserver, NzResizeObserverDirective, NzResizeObserverFactory, NzResizeObserverModule };\n", "import * as i0 from '@angular/core';\nimport { Component, Input, Directive, Optional, Inject, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation, Output, ViewChild, ContentChildren, Host, Self, InjectionToken, TemplateRef, ContentChild, QueryList, NgModule } from '@angular/core';\nimport * as i1 from 'ng-zorro-antd/core/outlet';\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport * as i2 from 'ng-zorro-antd/icon';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { reqAnimFrame } from 'ng-zorro-antd/core/polyfill';\nimport * as i4 from '@angular/cdk/a11y';\nimport { FocusKeyManager, A11yModule } from '@angular/cdk/a11y';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { hasModifierKey, SPACE, ENTER, DOWN_ARROW, RIGHT_ARROW, UP_ARROW, LEFT_ARROW } from '@angular/cdk/keycodes';\nimport { NgIf, NgForOf, NgTemplateOutlet, NgStyle } from '@angular/common';\nimport { fromEvent, Subscription, animationFrameScheduler, asapScheduler, Subject, of, merge } from 'rxjs';\nimport { takeUntil, auditTime, startWith, first, filter, delay } from 'rxjs/operators';\nimport { NzDropdownMenuComponent, NzDropDownDirective } from 'ng-zorro-antd/dropdown';\nimport * as i3 from 'ng-zorro-antd/menu';\nimport { NzMenuModule } from 'ng-zorro-antd/menu';\nimport * as i1$1 from '@angular/cdk/overlay';\nimport * as i2$1 from 'ng-zorro-antd/cdk/resize-observer';\nimport * as i3$1 from '@angular/cdk/bidi';\nimport { __decorate } from 'tslib';\nimport { InputBoolean, wrapIntoObservable } from 'ng-zorro-antd/core/util';\nimport * as i1$2 from '@angular/router';\nimport { NavigationEnd } from '@angular/router';\nimport * as i1$3 from 'ng-zorro-antd/core/config';\nimport { WithConfig } from 'ng-zorro-antd/core/config';\nimport { PREFIX } from 'ng-zorro-antd/core/logger';\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nfunction NzTabAddButtonComponent_ng_container_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelement(1, \"span\", 1);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const icon_r1 = ctx.$implicit;\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"nzType\", icon_r1);\n }\n}\nfunction NzTabNavOperationComponent_ul_5_li_1_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtext(1);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const item_r5 = i0.ɵɵnextContext().$implicit;\n i0.ɵɵadvance(1);\n i0.ɵɵtextInterpolate1(\" \", item_r5.tab.label, \" \");\n }\n}\nconst _c0 = () => ({\n visible: false\n});\nfunction NzTabNavOperationComponent_ul_5_li_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r9 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"li\", 8);\n i0.ɵɵlistener(\"click\", function NzTabNavOperationComponent_ul_5_li_1_Template_li_click_0_listener() {\n const restoredCtx = i0.ɵɵrestoreView(_r9);\n const item_r5 = restoredCtx.$implicit;\n const ctx_r8 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r8.onSelect(item_r5));\n })(\"contextmenu\", function NzTabNavOperationComponent_ul_5_li_1_Template_li_contextmenu_0_listener($event) {\n const restoredCtx = i0.ɵɵrestoreView(_r9);\n const item_r5 = restoredCtx.$implicit;\n const ctx_r10 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r10.onContextmenu(item_r5, $event));\n });\n i0.ɵɵtemplate(1, NzTabNavOperationComponent_ul_5_li_1_ng_container_1_Template, 2, 1, \"ng-container\", 9);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const item_r5 = ctx.$implicit;\n i0.ɵɵclassProp(\"ant-tabs-dropdown-menu-item-disabled\", item_r5.disabled);\n i0.ɵɵproperty(\"nzSelected\", item_r5.active)(\"nzDisabled\", item_r5.disabled);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"nzStringTemplateOutlet\", item_r5.tab.label)(\"nzStringTemplateOutletContext\", i0.ɵɵpureFunction0(6, _c0));\n }\n}\nfunction NzTabNavOperationComponent_ul_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"ul\", 6);\n i0.ɵɵtemplate(1, NzTabNavOperationComponent_ul_5_li_1_Template, 2, 7, \"li\", 7);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngForOf\", ctx_r2.items);\n }\n}\nfunction NzTabNavOperationComponent_button_6_Template(rf, ctx) {\n if (rf & 1) {\n const _r12 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 10);\n i0.ɵɵlistener(\"click\", function NzTabNavOperationComponent_button_6_Template_button_click_0_listener() {\n i0.ɵɵrestoreView(_r12);\n const ctx_r11 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r11.addClicked.emit());\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r3 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"addIcon\", ctx_r3.addIcon);\n }\n}\nconst _c1 = () => ({\n minWidth: \"46px\"\n});\nconst _c2 = [\"navWarp\"];\nconst _c3 = [\"navList\"];\nfunction NzTabNavBarComponent_button_5_Template(rf, ctx) {\n if (rf & 1) {\n const _r5 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 8);\n i0.ɵɵlistener(\"click\", function NzTabNavBarComponent_button_5_Template_button_click_0_listener() {\n i0.ɵɵrestoreView(_r5);\n const ctx_r4 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r4.addClicked.emit());\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"addIcon\", ctx_r2.addIcon);\n i0.ɵɵattribute(\"tabindex\", -1);\n }\n}\nfunction NzTabNavBarComponent_div_8_ng_template_1_Template(rf, ctx) {}\nfunction NzTabNavBarComponent_div_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 9);\n i0.ɵɵtemplate(1, NzTabNavBarComponent_div_8_ng_template_1_Template, 0, 0, \"ng-template\", 10);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r3 = i0.ɵɵnextContext();\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r3.extraTemplate);\n }\n}\nconst _c4 = [\"*\"];\nconst _c5 = [\"nz-tab-body\", \"\"];\nfunction NzTabBodyComponent_ng_container_0_ng_template_1_Template(rf, ctx) {}\nfunction NzTabBodyComponent_ng_container_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, NzTabBodyComponent_ng_container_0_ng_template_1_Template, 0, 0, \"ng-template\", 1);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.content);\n }\n}\nfunction NzTabCloseButtonComponent_ng_container_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelement(1, \"span\", 1);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const icon_r1 = ctx.$implicit;\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"nzType\", icon_r1);\n }\n}\nconst _c6 = [\"contentTemplate\"];\nfunction NzTabComponent_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojection(0);\n }\n}\nfunction NzTabComponent_ng_template_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojection(0, 1);\n }\n}\nconst _c7 = [[[\"\", \"nz-tab-link\", \"\"]], \"*\"];\nconst _c8 = [\"[nz-tab-link]\", \"*\"];\nfunction NzTabSetComponent_nz_tabs_nav_0_div_1_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtext(1);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const tab_r3 = i0.ɵɵnextContext().$implicit;\n i0.ɵɵadvance(1);\n i0.ɵɵtextInterpolate(tab_r3.label);\n }\n}\nfunction NzTabSetComponent_nz_tabs_nav_0_div_1_button_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r10 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 10);\n i0.ɵɵlistener(\"click\", function NzTabSetComponent_nz_tabs_nav_0_div_1_button_3_Template_button_click_0_listener($event) {\n i0.ɵɵrestoreView(_r10);\n const i_r4 = i0.ɵɵnextContext().index;\n const ctx_r8 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r8.onClose(i_r4, $event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const tab_r3 = i0.ɵɵnextContext().$implicit;\n i0.ɵɵproperty(\"closeIcon\", tab_r3.nzCloseIcon);\n }\n}\nconst _c9 = () => ({\n visible: true\n});\nfunction NzTabSetComponent_nz_tabs_nav_0_div_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r13 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 6);\n i0.ɵɵlistener(\"click\", function NzTabSetComponent_nz_tabs_nav_0_div_1_Template_div_click_0_listener($event) {\n const restoredCtx = i0.ɵɵrestoreView(_r13);\n const tab_r3 = restoredCtx.$implicit;\n const i_r4 = restoredCtx.index;\n const ctx_r12 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r12.clickNavItem(tab_r3, i_r4, $event));\n })(\"contextmenu\", function NzTabSetComponent_nz_tabs_nav_0_div_1_Template_div_contextmenu_0_listener($event) {\n const restoredCtx = i0.ɵɵrestoreView(_r13);\n const tab_r3 = restoredCtx.$implicit;\n const ctx_r14 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r14.contextmenuNavItem(tab_r3, $event));\n });\n i0.ɵɵelementStart(1, \"button\", 7);\n i0.ɵɵtemplate(2, NzTabSetComponent_nz_tabs_nav_0_div_1_ng_container_2_Template, 2, 1, \"ng-container\", 8)(3, NzTabSetComponent_nz_tabs_nav_0_div_1_button_3_Template, 1, 1, \"button\", 9);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const tab_r3 = ctx.$implicit;\n const i_r4 = ctx.index;\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵstyleProp(\"margin-right\", ctx_r2.position === \"horizontal\" ? ctx_r2.nzTabBarGutter : null, \"px\")(\"margin-bottom\", ctx_r2.position === \"vertical\" ? ctx_r2.nzTabBarGutter : null, \"px\");\n i0.ɵɵclassProp(\"ant-tabs-tab-active\", ctx_r2.nzSelectedIndex === i_r4)(\"ant-tabs-tab-disabled\", tab_r3.nzDisabled);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"id\", ctx_r2.getTabContentId(i_r4))(\"disabled\", tab_r3.nzDisabled)(\"tab\", tab_r3)(\"active\", ctx_r2.nzSelectedIndex === i_r4);\n i0.ɵɵattribute(\"tabIndex\", ctx_r2.getTabIndex(tab_r3, i_r4))(\"aria-disabled\", tab_r3.nzDisabled)(\"aria-selected\", ctx_r2.nzSelectedIndex === i_r4 && !ctx_r2.nzHideAll)(\"aria-controls\", ctx_r2.getTabContentId(i_r4));\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"nzStringTemplateOutlet\", tab_r3.label)(\"nzStringTemplateOutletContext\", i0.ɵɵpureFunction0(19, _c9));\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", tab_r3.nzClosable && ctx_r2.closable && !tab_r3.nzDisabled);\n }\n}\nfunction NzTabSetComponent_nz_tabs_nav_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r16 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"nz-tabs-nav\", 4);\n i0.ɵɵlistener(\"tabScroll\", function NzTabSetComponent_nz_tabs_nav_0_Template_nz_tabs_nav_tabScroll_0_listener($event) {\n i0.ɵɵrestoreView(_r16);\n const ctx_r15 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r15.nzTabListScroll.emit($event));\n })(\"selectFocusedIndex\", function NzTabSetComponent_nz_tabs_nav_0_Template_nz_tabs_nav_selectFocusedIndex_0_listener($event) {\n i0.ɵɵrestoreView(_r16);\n const ctx_r17 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r17.setSelectedIndex($event));\n })(\"addClicked\", function NzTabSetComponent_nz_tabs_nav_0_Template_nz_tabs_nav_addClicked_0_listener() {\n i0.ɵɵrestoreView(_r16);\n const ctx_r18 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r18.onAdd());\n });\n i0.ɵɵtemplate(1, NzTabSetComponent_nz_tabs_nav_0_div_1_Template, 4, 20, \"div\", 5);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngStyle\", ctx_r0.nzTabBarStyle)(\"selectedIndex\", ctx_r0.nzSelectedIndex || 0)(\"inkBarAnimated\", ctx_r0.inkBarAnimated)(\"addable\", ctx_r0.addable)(\"addIcon\", ctx_r0.nzAddIcon)(\"hideBar\", ctx_r0.nzHideAll)(\"position\", ctx_r0.position)(\"extraTemplate\", ctx_r0.nzTabBarExtraContent);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngForOf\", ctx_r0.tabs);\n }\n}\nfunction NzTabSetComponent_div_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 11);\n }\n if (rf & 2) {\n const tab_r19 = ctx.$implicit;\n const i_r20 = ctx.index;\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"id\", ctx_r1.getTabContentId(i_r20))(\"active\", ctx_r1.nzSelectedIndex === i_r20 && !ctx_r1.nzHideAll)(\"content\", tab_r19.content)(\"forceRender\", tab_r19.nzForceRender)(\"tabPaneAnimated\", ctx_r1.tabPaneAnimated);\n i0.ɵɵattribute(\"aria-labelledby\", ctx_r1.getTabContentId(i_r20));\n }\n}\nclass NzTabAddButtonComponent {\n constructor(elementRef) {\n this.elementRef = elementRef;\n this.addIcon = 'plus';\n this.element = this.elementRef.nativeElement;\n }\n getElementWidth() {\n return this.element?.offsetWidth || 0;\n }\n getElementHeight() {\n return this.element?.offsetHeight || 0;\n }\n static {\n this.ɵfac = function NzTabAddButtonComponent_Factory(t) {\n return new (t || NzTabAddButtonComponent)(i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzTabAddButtonComponent,\n selectors: [[\"nz-tab-add-button\"], [\"button\", \"nz-tab-add-button\", \"\"]],\n hostAttrs: [\"aria-label\", \"Add tab\", \"type\", \"button\", 1, \"ant-tabs-nav-add\"],\n inputs: {\n addIcon: \"addIcon\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 1,\n vars: 1,\n consts: [[4, \"nzStringTemplateOutlet\"], [\"nz-icon\", \"\", \"nzTheme\", \"outline\", 3, \"nzType\"]],\n template: function NzTabAddButtonComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NzTabAddButtonComponent_ng_container_0_Template, 2, 1, \"ng-container\", 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"nzStringTemplateOutlet\", ctx.addIcon);\n }\n },\n dependencies: [NzOutletModule, i1.NzStringTemplateOutletDirective, NzIconModule, i2.NzIconDirective],\n encapsulation: 2\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzTabAddButtonComponent, [{\n type: Component,\n args: [{\n selector: 'nz-tab-add-button, button[nz-tab-add-button]',\n template: `\n \n \n \n `,\n host: {\n class: 'ant-tabs-nav-add',\n 'aria-label': 'Add tab',\n type: 'button'\n },\n imports: [NzOutletModule, NzIconModule],\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }], {\n addIcon: [{\n type: Input\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzTabsInkBarDirective {\n get _animated() {\n return this.animationMode !== 'NoopAnimations' && this.animated;\n }\n constructor(elementRef, ngZone, animationMode) {\n this.elementRef = elementRef;\n this.ngZone = ngZone;\n this.animationMode = animationMode;\n this.position = 'horizontal';\n this.animated = true;\n }\n alignToElement(element) {\n this.ngZone.runOutsideAngular(() => {\n reqAnimFrame(() => this.setStyles(element));\n });\n }\n setStyles(element) {\n const inkBar = this.elementRef.nativeElement;\n if (this.position === 'horizontal') {\n inkBar.style.top = '';\n inkBar.style.height = '';\n inkBar.style.left = this.getLeftPosition(element);\n inkBar.style.width = this.getElementWidth(element);\n } else {\n inkBar.style.left = '';\n inkBar.style.width = '';\n inkBar.style.top = this.getTopPosition(element);\n inkBar.style.height = this.getElementHeight(element);\n }\n }\n getLeftPosition(element) {\n return element ? `${element.offsetLeft || 0}px` : '0';\n }\n getElementWidth(element) {\n return element ? `${element.offsetWidth || 0}px` : '0';\n }\n getTopPosition(element) {\n return element ? `${element.offsetTop || 0}px` : '0';\n }\n getElementHeight(element) {\n return element ? `${element.offsetHeight || 0}px` : '0';\n }\n static {\n this.ɵfac = function NzTabsInkBarDirective_Factory(t) {\n return new (t || NzTabsInkBarDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzTabsInkBarDirective,\n selectors: [[\"nz-tabs-ink-bar\"], [\"\", \"nz-tabs-ink-bar\", \"\"]],\n hostAttrs: [1, \"ant-tabs-ink-bar\"],\n hostVars: 2,\n hostBindings: function NzTabsInkBarDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"ant-tabs-ink-bar-animated\", ctx._animated);\n }\n },\n inputs: {\n position: \"position\",\n animated: \"animated\"\n },\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzTabsInkBarDirective, [{\n type: Directive,\n args: [{\n selector: 'nz-tabs-ink-bar, [nz-tabs-ink-bar]',\n host: {\n class: 'ant-tabs-ink-bar',\n '[class.ant-tabs-ink-bar-animated]': '_animated'\n },\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: i0.NgZone\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }]\n }], {\n position: [{\n type: Input\n }],\n animated: [{\n type: Input\n }]\n });\n})();\nclass NzTabNavItemDirective {\n constructor(elementRef) {\n this.elementRef = elementRef;\n this.disabled = false;\n this.active = false;\n this.el = elementRef.nativeElement;\n this.parentElement = this.el.parentElement;\n }\n focus() {\n this.el.focus();\n }\n get width() {\n return this.parentElement.offsetWidth;\n }\n get height() {\n return this.parentElement.offsetHeight;\n }\n get left() {\n return this.parentElement.offsetLeft;\n }\n get top() {\n return this.parentElement.offsetTop;\n }\n static {\n this.ɵfac = function NzTabNavItemDirective_Factory(t) {\n return new (t || NzTabNavItemDirective)(i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzTabNavItemDirective,\n selectors: [[\"\", \"nzTabNavItem\", \"\"]],\n inputs: {\n disabled: \"disabled\",\n tab: \"tab\",\n active: \"active\"\n },\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzTabNavItemDirective, [{\n type: Directive,\n args: [{\n selector: '[nzTabNavItem]',\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }], {\n disabled: [{\n type: Input\n }],\n tab: [{\n type: Input\n }],\n active: [{\n type: Input\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzTabNavOperationComponent {\n constructor(cdr, elementRef) {\n this.cdr = cdr;\n this.elementRef = elementRef;\n this.items = [];\n this.addable = false;\n this.addIcon = 'plus';\n this.addClicked = new EventEmitter();\n this.selected = new EventEmitter();\n this.closeAnimationWaitTimeoutId = -1;\n this.menuOpened = false;\n this.element = this.elementRef.nativeElement;\n }\n onSelect(item) {\n if (!item.disabled) {\n // ignore nzCanDeactivate\n item.tab.nzClick.emit();\n this.selected.emit(item);\n }\n }\n onContextmenu(item, e) {\n if (!item.disabled) {\n item.tab.nzContextmenu.emit(e);\n }\n }\n showItems() {\n clearTimeout(this.closeAnimationWaitTimeoutId);\n this.menuOpened = true;\n this.cdr.markForCheck();\n }\n menuVisChange(visible) {\n if (!visible) {\n this.closeAnimationWaitTimeoutId = setTimeout(() => {\n this.menuOpened = false;\n this.cdr.markForCheck();\n }, 150);\n }\n }\n getElementWidth() {\n return this.element?.offsetWidth || 0;\n }\n getElementHeight() {\n return this.element?.offsetHeight || 0;\n }\n ngOnDestroy() {\n clearTimeout(this.closeAnimationWaitTimeoutId);\n }\n static {\n this.ɵfac = function NzTabNavOperationComponent_Factory(t) {\n return new (t || NzTabNavOperationComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzTabNavOperationComponent,\n selectors: [[\"nz-tab-nav-operation\"]],\n hostAttrs: [1, \"ant-tabs-nav-operations\"],\n hostVars: 2,\n hostBindings: function NzTabNavOperationComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"ant-tabs-nav-operations-hidden\", ctx.items.length === 0);\n }\n },\n inputs: {\n items: \"items\",\n addable: \"addable\",\n addIcon: \"addIcon\"\n },\n outputs: {\n addClicked: \"addClicked\",\n selected: \"selected\"\n },\n exportAs: [\"nzTabNavOperation\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 7,\n vars: 6,\n consts: [[\"nz-dropdown\", \"\", \"type\", \"button\", \"tabindex\", \"-1\", \"aria-hidden\", \"true\", \"nzOverlayClassName\", \"nz-tabs-dropdown\", 1, \"ant-tabs-nav-more\", 3, \"nzDropdownMenu\", \"nzOverlayStyle\", \"nzMatchWidthElement\", \"nzVisibleChange\", \"mouseenter\"], [\"dropdownTrigger\", \"nzDropdown\"], [\"nz-icon\", \"\", \"nzType\", \"ellipsis\"], [\"menu\", \"nzDropdownMenu\"], [\"nz-menu\", \"\", 4, \"ngIf\"], [\"nz-tab-add-button\", \"\", 3, \"addIcon\", \"click\", 4, \"ngIf\"], [\"nz-menu\", \"\"], [\"nz-menu-item\", \"\", \"class\", \"ant-tabs-dropdown-menu-item\", 3, \"ant-tabs-dropdown-menu-item-disabled\", \"nzSelected\", \"nzDisabled\", \"click\", \"contextmenu\", 4, \"ngFor\", \"ngForOf\"], [\"nz-menu-item\", \"\", 1, \"ant-tabs-dropdown-menu-item\", 3, \"nzSelected\", \"nzDisabled\", \"click\", \"contextmenu\"], [4, \"nzStringTemplateOutlet\", \"nzStringTemplateOutletContext\"], [\"nz-tab-add-button\", \"\", 3, \"addIcon\", \"click\"]],\n template: function NzTabNavOperationComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"button\", 0, 1);\n i0.ɵɵlistener(\"nzVisibleChange\", function NzTabNavOperationComponent_Template_button_nzVisibleChange_0_listener($event) {\n return ctx.menuVisChange($event);\n })(\"mouseenter\", function NzTabNavOperationComponent_Template_button_mouseenter_0_listener() {\n return ctx.showItems();\n });\n i0.ɵɵelement(2, \"span\", 2);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"nz-dropdown-menu\", null, 3);\n i0.ɵɵtemplate(5, NzTabNavOperationComponent_ul_5_Template, 2, 1, \"ul\", 4);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(6, NzTabNavOperationComponent_button_6_Template, 1, 1, \"button\", 5);\n }\n if (rf & 2) {\n const _r1 = i0.ɵɵreference(4);\n i0.ɵɵproperty(\"nzDropdownMenu\", _r1)(\"nzOverlayStyle\", i0.ɵɵpureFunction0(5, _c1))(\"nzMatchWidthElement\", null);\n i0.ɵɵadvance(5);\n i0.ɵɵproperty(\"ngIf\", ctx.menuOpened);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx.addable);\n }\n },\n dependencies: [NzIconModule, i2.NzIconDirective, NgIf, NgForOf, NzOutletModule, i1.NzStringTemplateOutletDirective, NzTabAddButtonComponent, NzDropdownMenuComponent, NzMenuModule, i3.NzMenuDirective, i3.NzMenuItemComponent, NzDropDownDirective],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzTabNavOperationComponent, [{\n type: Component,\n args: [{\n selector: 'nz-tab-nav-operation',\n exportAs: 'nzTabNavOperation',\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n \n \n \n \n
    \n \n \n {{ item.tab.label }}\n \n \n
\n
\n \n `,\n host: {\n class: 'ant-tabs-nav-operations',\n '[class.ant-tabs-nav-operations-hidden]': 'items.length === 0'\n },\n imports: [NzIconModule, NgIf, NgForOf, NzOutletModule, NzTabAddButtonComponent, NzDropdownMenuComponent, NzMenuModule, NzDropDownDirective],\n standalone: true\n }]\n }], () => [{\n type: i0.ChangeDetectorRef\n }, {\n type: i0.ElementRef\n }], {\n items: [{\n type: Input\n }],\n addable: [{\n type: Input\n }],\n addIcon: [{\n type: Input\n }],\n addClicked: [{\n type: Output\n }],\n selected: [{\n type: Output\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst MIN_SWIPE_DISTANCE = 0.1;\nconst STOP_SWIPE_DISTANCE = 0.01;\nconst REFRESH_INTERVAL = 20;\nconst SPEED_OFF_MULTIPLE = 0.995 ** REFRESH_INTERVAL;\nclass NzTabScrollListDirective {\n constructor(ngZone, elementRef) {\n this.ngZone = ngZone;\n this.elementRef = elementRef;\n this.lastWheelDirection = null;\n this.lastWheelTimestamp = 0;\n this.lastTimestamp = 0;\n this.lastTimeDiff = 0;\n this.lastMixedWheel = 0;\n this.lastWheelPrevent = false;\n this.touchPosition = null;\n this.lastOffset = null;\n this.motion = -1;\n this.unsubscribe = () => void 0;\n this.offsetChange = new EventEmitter();\n this.tabScroll = new EventEmitter();\n this.onTouchEnd = e => {\n if (!this.touchPosition) {\n return;\n }\n const lastOffset = this.lastOffset;\n const lastTimeDiff = this.lastTimeDiff;\n this.lastOffset = this.touchPosition = null;\n if (lastOffset) {\n const distanceX = lastOffset.x / lastTimeDiff;\n const distanceY = lastOffset.y / lastTimeDiff;\n const absX = Math.abs(distanceX);\n const absY = Math.abs(distanceY);\n // Skip swipe if low distance\n if (Math.max(absX, absY) < MIN_SWIPE_DISTANCE) {\n return;\n }\n let currentX = distanceX;\n let currentY = distanceY;\n this.motion = window.setInterval(() => {\n if (Math.abs(currentX) < STOP_SWIPE_DISTANCE && Math.abs(currentY) < STOP_SWIPE_DISTANCE) {\n window.clearInterval(this.motion);\n return;\n }\n currentX *= SPEED_OFF_MULTIPLE;\n currentY *= SPEED_OFF_MULTIPLE;\n this.onOffset(currentX * REFRESH_INTERVAL, currentY * REFRESH_INTERVAL, e);\n }, REFRESH_INTERVAL);\n }\n };\n this.onTouchMove = e => {\n if (!this.touchPosition) {\n return;\n }\n e.preventDefault();\n const {\n screenX,\n screenY\n } = e.touches[0];\n const offsetX = screenX - this.touchPosition.x;\n const offsetY = screenY - this.touchPosition.y;\n this.onOffset(offsetX, offsetY, e);\n const now = Date.now();\n this.lastTimeDiff = now - this.lastTimestamp;\n this.lastTimestamp = now;\n this.lastOffset = {\n x: offsetX,\n y: offsetY\n };\n this.touchPosition = {\n x: screenX,\n y: screenY\n };\n };\n this.onTouchStart = e => {\n const {\n screenX,\n screenY\n } = e.touches[0];\n this.touchPosition = {\n x: screenX,\n y: screenY\n };\n window.clearInterval(this.motion);\n };\n this.onWheel = e => {\n const {\n deltaX,\n deltaY\n } = e;\n let mixed;\n const absX = Math.abs(deltaX);\n const absY = Math.abs(deltaY);\n if (absX === absY) {\n mixed = this.lastWheelDirection === 'x' ? deltaX : deltaY;\n } else if (absX > absY) {\n mixed = deltaX;\n this.lastWheelDirection = 'x';\n } else {\n mixed = deltaY;\n this.lastWheelDirection = 'y';\n }\n // Optimize mac touch scroll\n const now = Date.now();\n const absMixed = Math.abs(mixed);\n if (now - this.lastWheelTimestamp > 100 || absMixed - this.lastMixedWheel > 10) {\n this.lastWheelPrevent = false;\n }\n this.onOffset(-mixed, -mixed, e);\n if (e.defaultPrevented || this.lastWheelPrevent) {\n this.lastWheelPrevent = true;\n }\n this.lastWheelTimestamp = now;\n this.lastMixedWheel = absMixed;\n };\n }\n ngOnInit() {\n this.unsubscribe = this.ngZone.runOutsideAngular(() => {\n const el = this.elementRef.nativeElement;\n const wheel$ = fromEvent(el, 'wheel');\n const touchstart$ = fromEvent(el, 'touchstart');\n const touchmove$ = fromEvent(el, 'touchmove');\n const touchend$ = fromEvent(el, 'touchend');\n const subscription = new Subscription();\n subscription.add(this.subscribeWrap('wheel', wheel$, this.onWheel));\n subscription.add(this.subscribeWrap('touchstart', touchstart$, this.onTouchStart));\n subscription.add(this.subscribeWrap('touchmove', touchmove$, this.onTouchMove));\n subscription.add(this.subscribeWrap('touchend', touchend$, this.onTouchEnd));\n return () => {\n subscription.unsubscribe();\n };\n });\n }\n subscribeWrap(type, observable, handler) {\n return observable.subscribe(event => {\n this.tabScroll.emit({\n type,\n event\n });\n if (!event.defaultPrevented) {\n handler(event);\n }\n });\n }\n onOffset(x, y, event) {\n this.ngZone.run(() => {\n this.offsetChange.emit({\n x,\n y,\n event\n });\n });\n }\n ngOnDestroy() {\n this.unsubscribe();\n }\n static {\n this.ɵfac = function NzTabScrollListDirective_Factory(t) {\n return new (t || NzTabScrollListDirective)(i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzTabScrollListDirective,\n selectors: [[\"\", \"nzTabScrollList\", \"\"]],\n outputs: {\n offsetChange: \"offsetChange\",\n tabScroll: \"tabScroll\"\n },\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzTabScrollListDirective, [{\n type: Directive,\n args: [{\n selector: '[nzTabScrollList]',\n standalone: true\n }]\n }], () => [{\n type: i0.NgZone\n }, {\n type: i0.ElementRef\n }], {\n offsetChange: [{\n type: Output\n }],\n tabScroll: [{\n type: Output\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst RESIZE_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\nconst CSS_TRANSFORM_TIME = 150;\nclass NzTabNavBarComponent {\n get selectedIndex() {\n return this._selectedIndex;\n }\n set selectedIndex(value) {\n const newValue = coerceNumberProperty(value);\n if (this._selectedIndex !== newValue) {\n this._selectedIndex = value;\n this.selectedIndexChanged = true;\n if (this.keyManager) {\n this.keyManager.updateActiveItem(value);\n }\n }\n }\n /** Tracks which element has focus; used for keyboard navigation */\n get focusIndex() {\n return this.keyManager ? this.keyManager.activeItemIndex : 0;\n }\n /** When the focus index is set, we must manually send focus to the correct label */\n set focusIndex(value) {\n if (!this.isValidIndex(value) || this.focusIndex === value || !this.keyManager) {\n return;\n }\n this.keyManager.setActiveItem(value);\n }\n get showAddButton() {\n return this.hiddenItems.length === 0 && this.addable;\n }\n constructor(cdr, ngZone, viewportRuler, nzResizeObserver, dir) {\n this.cdr = cdr;\n this.ngZone = ngZone;\n this.viewportRuler = viewportRuler;\n this.nzResizeObserver = nzResizeObserver;\n this.dir = dir;\n this.indexFocused = new EventEmitter();\n this.selectFocusedIndex = new EventEmitter();\n this.addClicked = new EventEmitter();\n this.tabScroll = new EventEmitter();\n this.position = 'horizontal';\n this.addable = false;\n this.hideBar = false;\n this.addIcon = 'plus';\n this.inkBarAnimated = true;\n this.translate = null;\n this.transformX = 0;\n this.transformY = 0;\n this.pingLeft = false;\n this.pingRight = false;\n this.pingTop = false;\n this.pingBottom = false;\n this.hiddenItems = [];\n this.destroy$ = new Subject();\n this._selectedIndex = 0;\n this.wrapperWidth = 0;\n this.wrapperHeight = 0;\n this.scrollListWidth = 0;\n this.scrollListHeight = 0;\n this.operationWidth = 0;\n this.operationHeight = 0;\n this.addButtonWidth = 0;\n this.addButtonHeight = 0;\n this.selectedIndexChanged = false;\n this.lockAnimationTimeoutId = -1;\n this.cssTransformTimeWaitingId = -1;\n }\n ngAfterViewInit() {\n const dirChange = this.dir ? this.dir.change.asObservable() : of(null);\n const resize = this.viewportRuler.change(150);\n const realign = () => {\n this.updateScrollListPosition();\n this.alignInkBarToSelectedTab();\n };\n this.keyManager = new FocusKeyManager(this.items).withHorizontalOrientation(this.getLayoutDirection()).withWrap();\n this.keyManager.updateActiveItem(this.selectedIndex);\n reqAnimFrame(realign);\n merge(this.nzResizeObserver.observe(this.navWarpRef), this.nzResizeObserver.observe(this.navListRef)).pipe(takeUntil(this.destroy$), auditTime(16, RESIZE_SCHEDULER)).subscribe(() => {\n realign();\n });\n merge(dirChange, resize, this.items.changes).pipe(takeUntil(this.destroy$)).subscribe(() => {\n Promise.resolve().then(realign);\n this.keyManager.withHorizontalOrientation(this.getLayoutDirection());\n });\n this.keyManager.change.pipe(takeUntil(this.destroy$)).subscribe(newFocusIndex => {\n this.indexFocused.emit(newFocusIndex);\n this.setTabFocus(newFocusIndex);\n this.scrollToTab(this.keyManager.activeItem);\n });\n }\n ngAfterContentChecked() {\n if (this.selectedIndexChanged) {\n this.updateScrollListPosition();\n this.alignInkBarToSelectedTab();\n this.selectedIndexChanged = false;\n this.cdr.markForCheck();\n }\n }\n ngOnDestroy() {\n clearTimeout(this.lockAnimationTimeoutId);\n clearTimeout(this.cssTransformTimeWaitingId);\n this.destroy$.next();\n this.destroy$.complete();\n }\n onSelectedFromMenu(tab) {\n const tabIndex = this.items.toArray().findIndex(e => e === tab);\n if (tabIndex !== -1) {\n this.keyManager.updateActiveItem(tabIndex);\n if (this.focusIndex !== this.selectedIndex) {\n this.selectFocusedIndex.emit(this.focusIndex);\n this.scrollToTab(tab);\n }\n }\n }\n onOffsetChange(e) {\n if (this.position === 'horizontal') {\n if (this.lockAnimationTimeoutId === -1) {\n if (this.transformX >= 0 && e.x > 0) {\n return;\n }\n if (this.transformX <= this.wrapperWidth - this.scrollListWidth && e.x < 0) {\n return;\n }\n }\n e.event.preventDefault();\n this.transformX = this.clampTransformX(this.transformX + e.x);\n this.setTransform(this.transformX, 0);\n } else {\n if (this.lockAnimationTimeoutId === -1) {\n if (this.transformY >= 0 && e.y > 0) {\n return;\n }\n if (this.transformY <= this.wrapperHeight - this.scrollListHeight && e.y < 0) {\n return;\n }\n }\n e.event.preventDefault();\n this.transformY = this.clampTransformY(this.transformY + e.y);\n this.setTransform(0, this.transformY);\n }\n this.lockAnimation();\n this.setVisibleRange();\n this.setPingStatus();\n }\n handleKeydown(event) {\n const inNavigationList = this.navWarpRef.nativeElement.contains(event.target);\n if (hasModifierKey(event) || !inNavigationList) {\n return;\n }\n switch (event.keyCode) {\n case LEFT_ARROW:\n case UP_ARROW:\n case RIGHT_ARROW:\n case DOWN_ARROW:\n this.lockAnimation();\n this.keyManager.onKeydown(event);\n break;\n case ENTER:\n case SPACE:\n if (this.focusIndex !== this.selectedIndex) {\n this.selectFocusedIndex.emit(this.focusIndex);\n }\n break;\n default:\n this.keyManager.onKeydown(event);\n }\n }\n isValidIndex(index) {\n if (!this.items) {\n return true;\n }\n const tab = this.items ? this.items.toArray()[index] : null;\n return !!tab && !tab.disabled;\n }\n scrollToTab(tab) {\n if (!this.items.find(e => e === tab)) {\n return;\n }\n const tabs = this.items.toArray();\n if (this.position === 'horizontal') {\n let newTransform = this.transformX;\n if (this.getLayoutDirection() === 'rtl') {\n const right = tabs[0].left + tabs[0].width - tab.left - tab.width;\n if (right < this.transformX) {\n newTransform = right;\n } else if (right + tab.width > this.transformX + this.wrapperWidth) {\n newTransform = right + tab.width - this.wrapperWidth;\n }\n } else if (tab.left < -this.transformX) {\n newTransform = -tab.left;\n } else if (tab.left + tab.width > -this.transformX + this.wrapperWidth) {\n newTransform = -(tab.left + tab.width - this.wrapperWidth);\n }\n this.transformX = newTransform;\n this.transformY = 0;\n this.setTransform(newTransform, 0);\n } else {\n let newTransform = this.transformY;\n if (tab.top < -this.transformY) {\n newTransform = -tab.top;\n } else if (tab.top + tab.height > -this.transformY + this.wrapperHeight) {\n newTransform = -(tab.top + tab.height - this.wrapperHeight);\n }\n this.transformY = newTransform;\n this.transformX = 0;\n this.setTransform(0, newTransform);\n }\n clearTimeout(this.cssTransformTimeWaitingId);\n this.cssTransformTimeWaitingId = setTimeout(() => {\n this.setVisibleRange();\n }, CSS_TRANSFORM_TIME);\n }\n lockAnimation() {\n if (this.lockAnimationTimeoutId === -1) {\n this.ngZone.runOutsideAngular(() => {\n this.navListRef.nativeElement.style.transition = 'none';\n this.lockAnimationTimeoutId = setTimeout(() => {\n this.navListRef.nativeElement.style.transition = '';\n this.lockAnimationTimeoutId = -1;\n }, CSS_TRANSFORM_TIME);\n });\n }\n }\n setTransform(x, y) {\n this.navListRef.nativeElement.style.transform = `translate(${x}px, ${y}px)`;\n }\n clampTransformX(transform) {\n const scrollWidth = this.wrapperWidth - this.scrollListWidth;\n if (this.getLayoutDirection() === 'rtl') {\n return Math.max(Math.min(scrollWidth, transform), 0);\n } else {\n return Math.min(Math.max(scrollWidth, transform), 0);\n }\n }\n clampTransformY(transform) {\n return Math.min(Math.max(this.wrapperHeight - this.scrollListHeight, transform), 0);\n }\n updateScrollListPosition() {\n this.resetSizes();\n this.transformX = this.clampTransformX(this.transformX);\n this.transformY = this.clampTransformY(this.transformY);\n this.setVisibleRange();\n this.setPingStatus();\n if (this.keyManager) {\n this.keyManager.updateActiveItem(this.keyManager.activeItemIndex);\n if (this.keyManager.activeItem) {\n this.scrollToTab(this.keyManager.activeItem);\n }\n }\n }\n resetSizes() {\n this.addButtonWidth = this.addBtnRef ? this.addBtnRef.getElementWidth() : 0;\n this.addButtonHeight = this.addBtnRef ? this.addBtnRef.getElementHeight() : 0;\n this.operationWidth = this.operationRef.getElementWidth();\n this.operationHeight = this.operationRef.getElementHeight();\n this.wrapperWidth = this.navWarpRef.nativeElement.offsetWidth || 0;\n this.wrapperHeight = this.navWarpRef.nativeElement.offsetHeight || 0;\n this.scrollListHeight = this.navListRef.nativeElement.offsetHeight || 0;\n this.scrollListWidth = this.navListRef.nativeElement.offsetWidth || 0;\n }\n alignInkBarToSelectedTab() {\n const selectedItem = this.items && this.items.length ? this.items.toArray()[this.selectedIndex] : null;\n const selectedItemElement = selectedItem ? selectedItem.elementRef.nativeElement : null;\n if (selectedItemElement) {\n /**\n * .ant-tabs-nav-list - Target offset parent element\n * └──.ant-tabs-tab\n * └──.ant-tabs-tab-btn - Currently focused element\n */\n this.inkBar.alignToElement(selectedItemElement.parentElement);\n }\n }\n setPingStatus() {\n const ping = {\n top: false,\n right: false,\n bottom: false,\n left: false\n };\n const navWarp = this.navWarpRef.nativeElement;\n if (this.position === 'horizontal') {\n if (this.getLayoutDirection() === 'rtl') {\n ping.right = this.transformX > 0;\n ping.left = this.transformX + this.wrapperWidth < this.scrollListWidth;\n } else {\n ping.left = this.transformX < 0;\n ping.right = -this.transformX + this.wrapperWidth < this.scrollListWidth;\n }\n } else {\n ping.top = this.transformY < 0;\n ping.bottom = -this.transformY + this.wrapperHeight < this.scrollListHeight;\n }\n Object.keys(ping).forEach(pos => {\n const className = `ant-tabs-nav-wrap-ping-${pos}`;\n if (ping[pos]) {\n navWarp.classList.add(className);\n } else {\n navWarp.classList.remove(className);\n }\n });\n }\n setVisibleRange() {\n let unit;\n let position;\n let transformSize;\n let basicSize;\n let tabContentSize;\n let addSize;\n const tabs = this.items.toArray();\n const DEFAULT_SIZE = {\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n right: 0\n };\n const getOffset = index => {\n let offset;\n const size = tabs[index] || DEFAULT_SIZE;\n if (position === 'right') {\n offset = tabs[0].left + tabs[0].width - tabs[index].left - tabs[index].width;\n } else {\n offset = size[position];\n }\n return offset;\n };\n if (this.position === 'horizontal') {\n unit = 'width';\n basicSize = this.wrapperWidth;\n tabContentSize = this.scrollListWidth - (this.hiddenItems.length ? this.operationWidth : 0);\n addSize = this.addButtonWidth;\n transformSize = Math.abs(this.transformX);\n if (this.getLayoutDirection() === 'rtl') {\n position = 'right';\n this.pingRight = this.transformX > 0;\n this.pingLeft = this.transformX + this.wrapperWidth < this.scrollListWidth;\n } else {\n this.pingLeft = this.transformX < 0;\n this.pingRight = -this.transformX + this.wrapperWidth < this.scrollListWidth;\n position = 'left';\n }\n } else {\n unit = 'height';\n basicSize = this.wrapperHeight;\n tabContentSize = this.scrollListHeight - (this.hiddenItems.length ? this.operationHeight : 0);\n addSize = this.addButtonHeight;\n position = 'top';\n transformSize = -this.transformY;\n this.pingTop = this.transformY < 0;\n this.pingBottom = -this.transformY + this.wrapperHeight < this.scrollListHeight;\n }\n let mergedBasicSize = basicSize;\n if (tabContentSize + addSize > basicSize) {\n mergedBasicSize = basicSize - addSize;\n }\n if (!tabs.length) {\n this.hiddenItems = [];\n this.cdr.markForCheck();\n return;\n }\n const len = tabs.length;\n let endIndex = len;\n for (let i = 0; i < len; i += 1) {\n const offset = getOffset(i);\n const size = tabs[i] || DEFAULT_SIZE;\n if (offset + size[unit] > transformSize + mergedBasicSize) {\n endIndex = i - 1;\n break;\n }\n }\n let startIndex = 0;\n for (let i = len - 1; i >= 0; i -= 1) {\n const offset = getOffset(i);\n if (offset < transformSize) {\n startIndex = i + 1;\n break;\n }\n }\n const startHiddenTabs = tabs.slice(0, startIndex);\n const endHiddenTabs = tabs.slice(endIndex + 1);\n this.hiddenItems = [...startHiddenTabs, ...endHiddenTabs];\n this.cdr.markForCheck();\n }\n getLayoutDirection() {\n return this.dir && this.dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n setTabFocus(_tabIndex) {}\n ngOnChanges(changes) {\n const {\n position\n } = changes;\n // The first will be aligning in ngAfterViewInit\n if (position && !position.isFirstChange()) {\n this.alignInkBarToSelectedTab();\n this.lockAnimation();\n this.updateScrollListPosition();\n }\n }\n static {\n this.ɵfac = function NzTabNavBarComponent_Factory(t) {\n return new (t || NzTabNavBarComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i1$1.ViewportRuler), i0.ɵɵdirectiveInject(i2$1.NzResizeObserver), i0.ɵɵdirectiveInject(i3$1.Directionality, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzTabNavBarComponent,\n selectors: [[\"nz-tabs-nav\"]],\n contentQueries: function NzTabNavBarComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NzTabNavItemDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.items = _t);\n }\n },\n viewQuery: function NzTabNavBarComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c2, 7);\n i0.ɵɵviewQuery(_c3, 7);\n i0.ɵɵviewQuery(NzTabNavOperationComponent, 7);\n i0.ɵɵviewQuery(NzTabAddButtonComponent, 5);\n i0.ɵɵviewQuery(NzTabsInkBarDirective, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.navWarpRef = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.navListRef = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.operationRef = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.addBtnRef = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.inkBar = _t.first);\n }\n },\n hostAttrs: [1, \"ant-tabs-nav\"],\n hostBindings: function NzTabNavBarComponent_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"keydown\", function NzTabNavBarComponent_keydown_HostBindingHandler($event) {\n return ctx.handleKeydown($event);\n });\n }\n },\n inputs: {\n position: \"position\",\n addable: \"addable\",\n hideBar: \"hideBar\",\n addIcon: \"addIcon\",\n inkBarAnimated: \"inkBarAnimated\",\n extraTemplate: \"extraTemplate\",\n selectedIndex: \"selectedIndex\"\n },\n outputs: {\n indexFocused: \"indexFocused\",\n selectFocusedIndex: \"selectFocusedIndex\",\n addClicked: \"addClicked\",\n tabScroll: \"tabScroll\"\n },\n exportAs: [\"nzTabsNav\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c4,\n decls: 9,\n vars: 16,\n consts: [[1, \"ant-tabs-nav-wrap\"], [\"navWarp\", \"\"], [\"nzTabScrollList\", \"\", \"role\", \"tablist\", 1, \"ant-tabs-nav-list\", 3, \"offsetChange\", \"tabScroll\"], [\"navList\", \"\"], [\"role\", \"tab\", \"nz-tab-add-button\", \"\", 3, \"addIcon\", \"click\", 4, \"ngIf\"], [\"nz-tabs-ink-bar\", \"\", 3, \"hidden\", \"position\", \"animated\"], [3, \"addIcon\", \"addable\", \"items\", \"addClicked\", \"selected\"], [\"class\", \"ant-tabs-extra-content\", 4, \"ngIf\"], [\"role\", \"tab\", \"nz-tab-add-button\", \"\", 3, \"addIcon\", \"click\"], [1, \"ant-tabs-extra-content\"], [3, \"ngTemplateOutlet\"]],\n template: function NzTabNavBarComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelementStart(0, \"div\", 0, 1)(2, \"div\", 2, 3);\n i0.ɵɵlistener(\"offsetChange\", function NzTabNavBarComponent_Template_div_offsetChange_2_listener($event) {\n return ctx.onOffsetChange($event);\n })(\"tabScroll\", function NzTabNavBarComponent_Template_div_tabScroll_2_listener($event) {\n return ctx.tabScroll.emit($event);\n });\n i0.ɵɵprojection(4);\n i0.ɵɵtemplate(5, NzTabNavBarComponent_button_5_Template, 1, 2, \"button\", 4);\n i0.ɵɵelement(6, \"div\", 5);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(7, \"nz-tab-nav-operation\", 6);\n i0.ɵɵlistener(\"addClicked\", function NzTabNavBarComponent_Template_nz_tab_nav_operation_addClicked_7_listener() {\n return ctx.addClicked.emit();\n })(\"selected\", function NzTabNavBarComponent_Template_nz_tab_nav_operation_selected_7_listener($event) {\n return ctx.onSelectedFromMenu($event);\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(8, NzTabNavBarComponent_div_8_Template, 2, 1, \"div\", 7);\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"ant-tabs-nav-wrap-ping-left\", ctx.pingLeft)(\"ant-tabs-nav-wrap-ping-right\", ctx.pingRight)(\"ant-tabs-nav-wrap-ping-top\", ctx.pingTop)(\"ant-tabs-nav-wrap-ping-bottom\", ctx.pingBottom);\n i0.ɵɵadvance(5);\n i0.ɵɵproperty(\"ngIf\", ctx.showAddButton);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"hidden\", ctx.hideBar)(\"position\", ctx.position)(\"animated\", ctx.inkBarAnimated);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"addIcon\", ctx.addIcon)(\"addable\", ctx.addable)(\"items\", ctx.hiddenItems);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx.extraTemplate);\n }\n },\n dependencies: [NzTabScrollListDirective, NgIf, NzTabAddButtonComponent, NzTabsInkBarDirective, NzTabNavOperationComponent, NgTemplateOutlet],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzTabNavBarComponent, [{\n type: Component,\n args: [{\n selector: 'nz-tabs-nav',\n exportAs: 'nzTabsNav',\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n \n \n \n \n
\n \n \n \n
\n \n
\n `,\n host: {\n class: 'ant-tabs-nav',\n '(keydown)': 'handleKeydown($event)'\n },\n imports: [NzTabScrollListDirective, NgIf, NzTabAddButtonComponent, NzTabsInkBarDirective, NzTabNavOperationComponent, NgTemplateOutlet],\n standalone: true\n }]\n }], () => [{\n type: i0.ChangeDetectorRef\n }, {\n type: i0.NgZone\n }, {\n type: i1$1.ViewportRuler\n }, {\n type: i2$1.NzResizeObserver\n }, {\n type: i3$1.Directionality,\n decorators: [{\n type: Optional\n }]\n }], {\n indexFocused: [{\n type: Output\n }],\n selectFocusedIndex: [{\n type: Output\n }],\n addClicked: [{\n type: Output\n }],\n tabScroll: [{\n type: Output\n }],\n position: [{\n type: Input\n }],\n addable: [{\n type: Input\n }],\n hideBar: [{\n type: Input\n }],\n addIcon: [{\n type: Input\n }],\n inkBarAnimated: [{\n type: Input\n }],\n extraTemplate: [{\n type: Input\n }],\n selectedIndex: [{\n type: Input\n }],\n navWarpRef: [{\n type: ViewChild,\n args: ['navWarp', {\n static: true\n }]\n }],\n navListRef: [{\n type: ViewChild,\n args: ['navList', {\n static: true\n }]\n }],\n operationRef: [{\n type: ViewChild,\n args: [NzTabNavOperationComponent, {\n static: true\n }]\n }],\n addBtnRef: [{\n type: ViewChild,\n args: [NzTabAddButtonComponent, {\n static: false\n }]\n }],\n inkBar: [{\n type: ViewChild,\n args: [NzTabsInkBarDirective, {\n static: true\n }]\n }],\n items: [{\n type: ContentChildren,\n args: [NzTabNavItemDirective, {\n descendants: true\n }]\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzTabBodyComponent {\n constructor() {\n this.content = null;\n this.active = false;\n this.tabPaneAnimated = true;\n this.forceRender = false;\n }\n static {\n this.ɵfac = function NzTabBodyComponent_Factory(t) {\n return new (t || NzTabBodyComponent)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzTabBodyComponent,\n selectors: [[\"\", \"nz-tab-body\", \"\"]],\n hostAttrs: [1, \"ant-tabs-tabpane\"],\n hostVars: 12,\n hostBindings: function NzTabBodyComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"tabindex\", ctx.active ? 0 : -1)(\"aria-hidden\", !ctx.active);\n i0.ɵɵstyleProp(\"visibility\", ctx.tabPaneAnimated ? ctx.active ? null : \"hidden\" : null)(\"height\", ctx.tabPaneAnimated ? ctx.active ? null : 0 : null)(\"overflow-y\", ctx.tabPaneAnimated ? ctx.active ? null : \"none\" : null)(\"display\", !ctx.tabPaneAnimated ? ctx.active ? null : \"none\" : null);\n i0.ɵɵclassProp(\"ant-tabs-tabpane-active\", ctx.active);\n }\n },\n inputs: {\n content: \"content\",\n active: \"active\",\n tabPaneAnimated: \"tabPaneAnimated\",\n forceRender: \"forceRender\"\n },\n exportAs: [\"nzTabBody\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n attrs: _c5,\n decls: 1,\n vars: 1,\n consts: [[4, \"ngIf\"], [3, \"ngTemplateOutlet\"]],\n template: function NzTabBodyComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NzTabBodyComponent_ng_container_0_Template, 2, 1, \"ng-container\", 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.active || ctx.forceRender);\n }\n },\n dependencies: [NgIf, NgTemplateOutlet],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzTabBodyComponent, [{\n type: Component,\n args: [{\n selector: '[nz-tab-body]',\n exportAs: 'nzTabBody',\n preserveWhitespaces: false,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n \n \n \n `,\n host: {\n class: 'ant-tabs-tabpane',\n '[class.ant-tabs-tabpane-active]': 'active',\n '[attr.tabindex]': 'active ? 0 : -1',\n '[attr.aria-hidden]': '!active',\n '[style.visibility]': 'tabPaneAnimated ? active ? null : \"hidden\" : null',\n '[style.height]': 'tabPaneAnimated ? active ? null : 0 : null',\n '[style.overflow-y]': 'tabPaneAnimated ? active ? null : \"none\" : null',\n '[style.display]': '!tabPaneAnimated ? active ? null : \"none\" : null'\n },\n imports: [NgIf, NgTemplateOutlet],\n standalone: true\n }]\n }], null, {\n content: [{\n type: Input\n }],\n active: [{\n type: Input\n }],\n tabPaneAnimated: [{\n type: Input\n }],\n forceRender: [{\n type: Input\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzTabCloseButtonComponent {\n constructor() {\n this.closeIcon = 'close';\n }\n static {\n this.ɵfac = function NzTabCloseButtonComponent_Factory(t) {\n return new (t || NzTabCloseButtonComponent)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzTabCloseButtonComponent,\n selectors: [[\"nz-tab-close-button\"], [\"button\", \"nz-tab-close-button\", \"\"]],\n hostAttrs: [\"aria-label\", \"Close tab\", \"type\", \"button\", 1, \"ant-tabs-tab-remove\"],\n inputs: {\n closeIcon: \"closeIcon\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 1,\n vars: 1,\n consts: [[4, \"nzStringTemplateOutlet\"], [\"nz-icon\", \"\", \"nzTheme\", \"outline\", 3, \"nzType\"]],\n template: function NzTabCloseButtonComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NzTabCloseButtonComponent_ng_container_0_Template, 2, 1, \"ng-container\", 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"nzStringTemplateOutlet\", ctx.closeIcon);\n }\n },\n dependencies: [NzOutletModule, i1.NzStringTemplateOutletDirective, NzIconModule, i2.NzIconDirective],\n encapsulation: 2\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzTabCloseButtonComponent, [{\n type: Component,\n args: [{\n selector: 'nz-tab-close-button, button[nz-tab-close-button]',\n template: `\n \n \n \n `,\n host: {\n class: 'ant-tabs-tab-remove',\n 'aria-label': 'Close tab',\n type: 'button'\n },\n imports: [NzOutletModule, NzIconModule],\n standalone: true\n }]\n }], () => [], {\n closeIcon: [{\n type: Input\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n/**\n * Fix https://github.com/angular/angular/issues/8563\n */\nclass NzTabLinkTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n static {\n this.ɵfac = function NzTabLinkTemplateDirective_Factory(t) {\n return new (t || NzTabLinkTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 1));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzTabLinkTemplateDirective,\n selectors: [[\"ng-template\", \"nzTabLink\", \"\"]],\n exportAs: [\"nzTabLinkTemplate\"],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzTabLinkTemplateDirective, [{\n type: Directive,\n args: [{\n selector: 'ng-template[nzTabLink]',\n exportAs: 'nzTabLinkTemplate',\n standalone: true\n }]\n }], () => [{\n type: i0.TemplateRef,\n decorators: [{\n type: Host\n }]\n }], null);\n})();\n/**\n * This component is for catching `routerLink` directive.\n */\nclass NzTabLinkDirective {\n constructor(elementRef, routerLink) {\n this.elementRef = elementRef;\n this.routerLink = routerLink;\n }\n static {\n this.ɵfac = function NzTabLinkDirective_Factory(t) {\n return new (t || NzTabLinkDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1$2.RouterLink, 10));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzTabLinkDirective,\n selectors: [[\"a\", \"nz-tab-link\", \"\"]],\n exportAs: [\"nzTabLink\"],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzTabLinkDirective, [{\n type: Directive,\n args: [{\n selector: 'a[nz-tab-link]',\n exportAs: 'nzTabLink',\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: i1$2.RouterLink,\n decorators: [{\n type: Optional\n }, {\n type: Self\n }]\n }], null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n/** Decorates the `ng-template` tags and reads out the template from it. */\nclass NzTabDirective {\n static {\n this.ɵfac = function NzTabDirective_Factory(t) {\n return new (t || NzTabDirective)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NzTabDirective,\n selectors: [[\"\", \"nz-tab\", \"\"]],\n exportAs: [\"nzTab\"],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzTabDirective, [{\n type: Directive,\n args: [{\n selector: '[nz-tab]',\n exportAs: 'nzTab',\n standalone: true\n }]\n }], null, null);\n})();\n\n/**\n * Used to provide a tab set to a tab without causing a circular dependency.\n */\nconst NZ_TAB_SET = new InjectionToken('NZ_TAB_SET');\nclass NzTabComponent {\n get content() {\n return this.template || this.contentTemplate;\n }\n get label() {\n return this.nzTitle || this.nzTabLinkTemplateDirective?.templateRef;\n }\n constructor(closestTabSet) {\n this.closestTabSet = closestTabSet;\n this.nzTitle = '';\n this.nzClosable = false;\n this.nzCloseIcon = 'close';\n this.nzDisabled = false;\n this.nzForceRender = false;\n this.nzSelect = new EventEmitter();\n this.nzDeselect = new EventEmitter();\n this.nzClick = new EventEmitter();\n this.nzContextmenu = new EventEmitter();\n this.template = null;\n this.isActive = false;\n this.position = null;\n this.origin = null;\n this.stateChanges = new Subject();\n }\n ngOnChanges(changes) {\n const {\n nzTitle,\n nzDisabled,\n nzForceRender\n } = changes;\n if (nzTitle || nzDisabled || nzForceRender) {\n this.stateChanges.next();\n }\n }\n ngOnDestroy() {\n this.stateChanges.complete();\n }\n static {\n this.ɵfac = function NzTabComponent_Factory(t) {\n return new (t || NzTabComponent)(i0.ɵɵdirectiveInject(NZ_TAB_SET));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzTabComponent,\n selectors: [[\"nz-tab\"]],\n contentQueries: function NzTabComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NzTabLinkTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, NzTabDirective, 5, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, NzTabLinkDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.nzTabLinkTemplateDirective = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.template = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.linkDirective = _t.first);\n }\n },\n viewQuery: function NzTabComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c6, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.contentTemplate = _t.first);\n }\n },\n inputs: {\n nzTitle: \"nzTitle\",\n nzClosable: \"nzClosable\",\n nzCloseIcon: \"nzCloseIcon\",\n nzDisabled: \"nzDisabled\",\n nzForceRender: \"nzForceRender\"\n },\n outputs: {\n nzSelect: \"nzSelect\",\n nzDeselect: \"nzDeselect\",\n nzClick: \"nzClick\",\n nzContextmenu: \"nzContextmenu\"\n },\n exportAs: [\"nzTab\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c8,\n decls: 4,\n vars: 0,\n consts: [[\"tabLinkTemplate\", \"\"], [\"contentTemplate\", \"\"]],\n template: function NzTabComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c7);\n i0.ɵɵtemplate(0, NzTabComponent_ng_template_0_Template, 1, 0, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor)(2, NzTabComponent_ng_template_2_Template, 1, 0, \"ng-template\", null, 1, i0.ɵɵtemplateRefExtractor);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n__decorate([InputBoolean()], NzTabComponent.prototype, \"nzClosable\", void 0);\n__decorate([InputBoolean()], NzTabComponent.prototype, \"nzDisabled\", void 0);\n__decorate([InputBoolean()], NzTabComponent.prototype, \"nzForceRender\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzTabComponent, [{\n type: Component,\n args: [{\n selector: 'nz-tab',\n exportAs: 'nzTab',\n preserveWhitespaces: false,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n \n \n \n \n `,\n standalone: true\n }]\n }], () => [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [NZ_TAB_SET]\n }]\n }], {\n nzTitle: [{\n type: Input\n }],\n nzClosable: [{\n type: Input\n }],\n nzCloseIcon: [{\n type: Input\n }],\n nzDisabled: [{\n type: Input\n }],\n nzForceRender: [{\n type: Input\n }],\n nzSelect: [{\n type: Output\n }],\n nzDeselect: [{\n type: Output\n }],\n nzClick: [{\n type: Output\n }],\n nzContextmenu: [{\n type: Output\n }],\n nzTabLinkTemplateDirective: [{\n type: ContentChild,\n args: [NzTabLinkTemplateDirective, {\n static: false\n }]\n }],\n template: [{\n type: ContentChild,\n args: [NzTabDirective, {\n static: false,\n read: TemplateRef\n }]\n }],\n linkDirective: [{\n type: ContentChild,\n args: [NzTabLinkDirective, {\n static: false\n }]\n }],\n contentTemplate: [{\n type: ViewChild,\n args: ['contentTemplate', {\n static: true\n }]\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzTabChangeEvent {}\nconst NZ_CONFIG_MODULE_NAME = 'tabs';\nlet nextId = 0;\nclass NzTabSetComponent {\n get nzSelectedIndex() {\n return this.selectedIndex;\n }\n set nzSelectedIndex(value) {\n this.indexToSelect = coerceNumberProperty(value, null);\n }\n get position() {\n return ['top', 'bottom'].indexOf(this.nzTabPosition) === -1 ? 'vertical' : 'horizontal';\n }\n get addable() {\n return this.nzType === 'editable-card' && !this.nzHideAdd;\n }\n get closable() {\n return this.nzType === 'editable-card';\n }\n get line() {\n return this.nzType === 'line';\n }\n get inkBarAnimated() {\n return this.line && (typeof this.nzAnimated === 'boolean' ? this.nzAnimated : this.nzAnimated.inkBar);\n }\n get tabPaneAnimated() {\n return this.position === 'horizontal' && this.line && (typeof this.nzAnimated === 'boolean' ? this.nzAnimated : this.nzAnimated.tabPane);\n }\n constructor(nzConfigService, ngZone, cdr, directionality, router) {\n this.nzConfigService = nzConfigService;\n this.ngZone = ngZone;\n this.cdr = cdr;\n this.directionality = directionality;\n this.router = router;\n this._nzModuleName = NZ_CONFIG_MODULE_NAME;\n this.nzTabPosition = 'top';\n this.nzCanDeactivate = null;\n this.nzAddIcon = 'plus';\n this.nzTabBarStyle = null;\n this.nzType = 'line';\n this.nzSize = 'default';\n this.nzAnimated = true;\n this.nzTabBarGutter = undefined;\n this.nzHideAdd = false;\n this.nzCentered = false;\n this.nzHideAll = false;\n this.nzLinkRouter = false;\n this.nzLinkExact = true;\n this.nzSelectChange = new EventEmitter(true);\n this.nzSelectedIndexChange = new EventEmitter();\n this.nzTabListScroll = new EventEmitter();\n this.nzClose = new EventEmitter();\n this.nzAdd = new EventEmitter();\n // Pick up only direct descendants under ivy rendering engine\n // We filter out only the tabs that belong to this tab set in `tabs`.\n this.allTabs = new QueryList();\n // All the direct tabs for this tab set\n this.tabs = new QueryList();\n this.dir = 'ltr';\n this.destroy$ = new Subject();\n this.indexToSelect = 0;\n this.selectedIndex = null;\n this.tabLabelSubscription = Subscription.EMPTY;\n this.tabsSubscription = Subscription.EMPTY;\n this.canDeactivateSubscription = Subscription.EMPTY;\n this.tabSetId = nextId++;\n }\n ngOnInit() {\n this.dir = this.directionality.value;\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe(direction => {\n this.dir = direction;\n this.cdr.detectChanges();\n });\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n this.tabs.destroy();\n this.tabLabelSubscription.unsubscribe();\n this.tabsSubscription.unsubscribe();\n this.canDeactivateSubscription.unsubscribe();\n }\n ngAfterContentInit() {\n this.ngZone.runOutsideAngular(() => {\n Promise.resolve().then(() => this.setUpRouter());\n });\n this.subscribeToTabLabels();\n this.subscribeToAllTabChanges();\n // Subscribe to changes in the amount of tabs, in order to be\n // able to re-render the content as new tabs are added or removed.\n this.tabsSubscription = this.tabs.changes.subscribe(() => {\n const indexToSelect = this.clampTabIndex(this.indexToSelect);\n // Maintain the previously-selected tab if a new tab is added or removed and there is no\n // explicit change that selects a different tab.\n if (indexToSelect === this.selectedIndex) {\n const tabs = this.tabs.toArray();\n for (let i = 0; i < tabs.length; i++) {\n if (tabs[i].isActive) {\n // Assign both to the `indexToSelect` and `selectedIndex` so we don't fire a changed\n // event, otherwise the consumer may end up in an infinite loop in some edge cases like\n // adding a tab within the `nzSelectedIndexChange` event.\n this.indexToSelect = this.selectedIndex = i;\n break;\n }\n }\n }\n this.subscribeToTabLabels();\n this.cdr.markForCheck();\n });\n }\n ngAfterContentChecked() {\n // Don't clamp the `indexToSelect` immediately in the setter because it can happen that\n // the amount of tabs changes before the actual change detection runs.\n const indexToSelect = this.indexToSelect = this.clampTabIndex(this.indexToSelect);\n // If there is a change in selected index, emit a change event. Should not trigger if\n // the selected index has not yet been initialized.\n if (this.selectedIndex !== indexToSelect) {\n const isFirstRun = this.selectedIndex == null;\n if (!isFirstRun) {\n this.nzSelectChange.emit(this.createChangeEvent(indexToSelect));\n }\n // Changing these values after change detection has run\n // since the checked content may contain references to them.\n Promise.resolve().then(() => {\n this.tabs.forEach((tab, index) => tab.isActive = index === indexToSelect);\n if (!isFirstRun) {\n this.nzSelectedIndexChange.emit(indexToSelect);\n }\n });\n }\n // Setup the position for each tab and optionally setup an origin on the next selected tab.\n this.tabs.forEach((tab, index) => {\n tab.position = index - indexToSelect;\n // If there is already a selected tab, then set up an origin for the next selected tab\n // if it doesn't have one already.\n if (this.selectedIndex != null && tab.position === 0 && !tab.origin) {\n tab.origin = indexToSelect - this.selectedIndex;\n }\n });\n if (this.selectedIndex !== indexToSelect) {\n this.selectedIndex = indexToSelect;\n this.cdr.markForCheck();\n }\n }\n onClose(index, e) {\n e.preventDefault();\n e.stopPropagation();\n this.nzClose.emit({\n index\n });\n }\n onAdd() {\n this.nzAdd.emit();\n }\n clampTabIndex(index) {\n return Math.min(this.tabs.length - 1, Math.max(index || 0, 0));\n }\n createChangeEvent(index) {\n const event = new NzTabChangeEvent();\n event.index = index;\n if (this.tabs && this.tabs.length) {\n event.tab = this.tabs.toArray()[index];\n this.tabs.forEach((tab, i) => {\n if (i !== index) {\n tab.nzDeselect.emit();\n }\n });\n event.tab.nzSelect.emit();\n }\n return event;\n }\n subscribeToTabLabels() {\n if (this.tabLabelSubscription) {\n this.tabLabelSubscription.unsubscribe();\n }\n this.tabLabelSubscription = merge(...this.tabs.map(tab => tab.stateChanges)).subscribe(() => this.cdr.markForCheck());\n }\n subscribeToAllTabChanges() {\n this.allTabs.changes.pipe(startWith(this.allTabs)).subscribe(tabs => {\n this.tabs.reset(tabs.filter(tab => tab.closestTabSet === this));\n this.tabs.notifyOnChanges();\n });\n }\n canDeactivateFun(pre, next) {\n if (typeof this.nzCanDeactivate === 'function') {\n const observable = wrapIntoObservable(this.nzCanDeactivate(pre, next));\n return observable.pipe(first(), takeUntil(this.destroy$));\n } else {\n return of(true);\n }\n }\n clickNavItem(tab, index, e) {\n if (!tab.nzDisabled) {\n // ignore nzCanDeactivate\n tab.nzClick.emit();\n if (!this.isRouterLinkClickEvent(index, e)) {\n this.setSelectedIndex(index);\n }\n }\n }\n isRouterLinkClickEvent(index, event) {\n const target = event.target;\n if (this.nzLinkRouter) {\n return !!this.tabs.toArray()[index]?.linkDirective?.elementRef.nativeElement.contains(target);\n } else {\n return false;\n }\n }\n contextmenuNavItem(tab, e) {\n if (!tab.nzDisabled) {\n // ignore nzCanDeactivate\n tab.nzContextmenu.emit(e);\n }\n }\n setSelectedIndex(index) {\n this.canDeactivateSubscription.unsubscribe();\n this.canDeactivateSubscription = this.canDeactivateFun(this.selectedIndex, index).subscribe(can => {\n if (can) {\n this.nzSelectedIndex = index;\n this.tabNavBarRef.focusIndex = index;\n this.cdr.markForCheck();\n }\n });\n }\n getTabIndex(tab, index) {\n if (tab.nzDisabled) {\n return null;\n }\n return this.selectedIndex === index ? 0 : -1;\n }\n getTabContentId(i) {\n return `nz-tabs-${this.tabSetId}-tab-${i}`;\n }\n setUpRouter() {\n if (this.nzLinkRouter) {\n if (!this.router) {\n throw new Error(`${PREFIX} you should import 'RouterModule' if you want to use 'nzLinkRouter'!`);\n }\n this.router.events.pipe(takeUntil(this.destroy$), filter(e => e instanceof NavigationEnd), startWith(true), delay(0)).subscribe(() => {\n this.updateRouterActive();\n this.cdr.markForCheck();\n });\n }\n }\n updateRouterActive() {\n if (this.router.navigated) {\n const index = this.findShouldActiveTabIndex();\n if (index !== this.selectedIndex) {\n this.setSelectedIndex(index);\n }\n this.nzHideAll = index === -1;\n }\n }\n findShouldActiveTabIndex() {\n const tabs = this.tabs.toArray();\n const isActive = this.isLinkActive(this.router);\n return tabs.findIndex(tab => {\n const c = tab.linkDirective;\n return c ? isActive(c.routerLink) : false;\n });\n }\n isLinkActive(router) {\n return link => link ? router.isActive(link.urlTree || '', {\n paths: this.nzLinkExact ? 'exact' : 'subset',\n queryParams: this.nzLinkExact ? 'exact' : 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored'\n }) : false;\n }\n getTabContentMarginValue() {\n return -(this.nzSelectedIndex || 0) * 100;\n }\n getTabContentMarginLeft() {\n if (this.tabPaneAnimated) {\n if (this.dir !== 'rtl') {\n return `${this.getTabContentMarginValue()}%`;\n }\n }\n return '';\n }\n getTabContentMarginRight() {\n if (this.tabPaneAnimated) {\n if (this.dir === 'rtl') {\n return `${this.getTabContentMarginValue()}%`;\n }\n }\n return '';\n }\n static {\n this.ɵfac = function NzTabSetComponent_Factory(t) {\n return new (t || NzTabSetComponent)(i0.ɵɵdirectiveInject(i1$3.NzConfigService), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i3$1.Directionality, 8), i0.ɵɵdirectiveInject(i1$2.Router, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NzTabSetComponent,\n selectors: [[\"nz-tabset\"]],\n contentQueries: function NzTabSetComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NzTabComponent, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.allTabs = _t);\n }\n },\n viewQuery: function NzTabSetComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(NzTabNavBarComponent, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tabNavBarRef = _t.first);\n }\n },\n hostAttrs: [1, \"ant-tabs\"],\n hostVars: 24,\n hostBindings: function NzTabSetComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"ant-tabs-card\", ctx.nzType === \"card\" || ctx.nzType === \"editable-card\")(\"ant-tabs-editable\", ctx.nzType === \"editable-card\")(\"ant-tabs-editable-card\", ctx.nzType === \"editable-card\")(\"ant-tabs-centered\", ctx.nzCentered)(\"ant-tabs-rtl\", ctx.dir === \"rtl\")(\"ant-tabs-top\", ctx.nzTabPosition === \"top\")(\"ant-tabs-bottom\", ctx.nzTabPosition === \"bottom\")(\"ant-tabs-left\", ctx.nzTabPosition === \"left\")(\"ant-tabs-right\", ctx.nzTabPosition === \"right\")(\"ant-tabs-default\", ctx.nzSize === \"default\")(\"ant-tabs-small\", ctx.nzSize === \"small\")(\"ant-tabs-large\", ctx.nzSize === \"large\");\n }\n },\n inputs: {\n nzSelectedIndex: \"nzSelectedIndex\",\n nzTabPosition: \"nzTabPosition\",\n nzTabBarExtraContent: \"nzTabBarExtraContent\",\n nzCanDeactivate: \"nzCanDeactivate\",\n nzAddIcon: \"nzAddIcon\",\n nzTabBarStyle: \"nzTabBarStyle\",\n nzType: \"nzType\",\n nzSize: \"nzSize\",\n nzAnimated: \"nzAnimated\",\n nzTabBarGutter: \"nzTabBarGutter\",\n nzHideAdd: \"nzHideAdd\",\n nzCentered: \"nzCentered\",\n nzHideAll: \"nzHideAll\",\n nzLinkRouter: \"nzLinkRouter\",\n nzLinkExact: \"nzLinkExact\"\n },\n outputs: {\n nzSelectChange: \"nzSelectChange\",\n nzSelectedIndexChange: \"nzSelectedIndexChange\",\n nzTabListScroll: \"nzTabListScroll\",\n nzClose: \"nzClose\",\n nzAdd: \"nzAdd\"\n },\n exportAs: [\"nzTabset\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: NZ_TAB_SET,\n useExisting: NzTabSetComponent\n }]), i0.ɵɵStandaloneFeature],\n decls: 4,\n vars: 16,\n consts: [[3, \"ngStyle\", \"selectedIndex\", \"inkBarAnimated\", \"addable\", \"addIcon\", \"hideBar\", \"position\", \"extraTemplate\", \"tabScroll\", \"selectFocusedIndex\", \"addClicked\", 4, \"ngIf\"], [1, \"ant-tabs-content-holder\"], [1, \"ant-tabs-content\"], [\"role\", \"tabpanel\", \"nz-tab-body\", \"\", 3, \"id\", \"active\", \"content\", \"forceRender\", \"tabPaneAnimated\", 4, \"ngFor\", \"ngForOf\"], [3, \"ngStyle\", \"selectedIndex\", \"inkBarAnimated\", \"addable\", \"addIcon\", \"hideBar\", \"position\", \"extraTemplate\", \"tabScroll\", \"selectFocusedIndex\", \"addClicked\"], [\"class\", \"ant-tabs-tab\", 3, \"margin-right\", \"margin-bottom\", \"ant-tabs-tab-active\", \"ant-tabs-tab-disabled\", \"click\", \"contextmenu\", 4, \"ngFor\", \"ngForOf\"], [1, \"ant-tabs-tab\", 3, \"click\", \"contextmenu\"], [\"role\", \"tab\", \"nzTabNavItem\", \"\", \"cdkMonitorElementFocus\", \"\", 1, \"ant-tabs-tab-btn\", 3, \"id\", \"disabled\", \"tab\", \"active\"], [4, \"nzStringTemplateOutlet\", \"nzStringTemplateOutletContext\"], [\"nz-tab-close-button\", \"\", 3, \"closeIcon\", \"click\", 4, \"ngIf\"], [\"nz-tab-close-button\", \"\", 3, \"closeIcon\", \"click\"], [\"role\", \"tabpanel\", \"nz-tab-body\", \"\", 3, \"id\", \"active\", \"content\", \"forceRender\", \"tabPaneAnimated\"]],\n template: function NzTabSetComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NzTabSetComponent_nz_tabs_nav_0_Template, 2, 9, \"nz-tabs-nav\", 0);\n i0.ɵɵelementStart(1, \"div\", 1)(2, \"div\", 2);\n i0.ɵɵtemplate(3, NzTabSetComponent_div_3_Template, 1, 6, \"div\", 3);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.tabs.length || ctx.addable);\n i0.ɵɵadvance(2);\n i0.ɵɵstyleProp(\"margin-left\", ctx.getTabContentMarginLeft())(\"margin-right\", ctx.getTabContentMarginRight());\n i0.ɵɵclassProp(\"ant-tabs-content-top\", ctx.nzTabPosition === \"top\")(\"ant-tabs-content-bottom\", ctx.nzTabPosition === \"bottom\")(\"ant-tabs-content-left\", ctx.nzTabPosition === \"left\")(\"ant-tabs-content-right\", ctx.nzTabPosition === \"right\")(\"ant-tabs-content-animated\", ctx.tabPaneAnimated);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngForOf\", ctx.tabs);\n }\n },\n dependencies: [NzTabNavBarComponent, NgIf, NgStyle, NgForOf, NzTabNavItemDirective, A11yModule, i4.CdkMonitorFocus, NzOutletModule, i1.NzStringTemplateOutletDirective, NzTabCloseButtonComponent, NzTabBodyComponent],\n encapsulation: 2\n });\n }\n}\n__decorate([WithConfig()], NzTabSetComponent.prototype, \"nzType\", void 0);\n__decorate([WithConfig()], NzTabSetComponent.prototype, \"nzSize\", void 0);\n__decorate([WithConfig()], NzTabSetComponent.prototype, \"nzAnimated\", void 0);\n__decorate([WithConfig()], NzTabSetComponent.prototype, \"nzTabBarGutter\", void 0);\n__decorate([InputBoolean()], NzTabSetComponent.prototype, \"nzHideAdd\", void 0);\n__decorate([InputBoolean()], NzTabSetComponent.prototype, \"nzCentered\", void 0);\n__decorate([InputBoolean()], NzTabSetComponent.prototype, \"nzHideAll\", void 0);\n__decorate([InputBoolean()], NzTabSetComponent.prototype, \"nzLinkRouter\", void 0);\n__decorate([InputBoolean()], NzTabSetComponent.prototype, \"nzLinkExact\", void 0);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzTabSetComponent, [{\n type: Component,\n args: [{\n selector: 'nz-tabset',\n exportAs: 'nzTabset',\n preserveWhitespaces: false,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [{\n provide: NZ_TAB_SET,\n useExisting: NzTabSetComponent\n }],\n template: `\n \n \n \n {{ tab.label }}\n \n \n \n \n
\n \n
\n \n \n `,\n host: {\n class: 'ant-tabs',\n '[class.ant-tabs-card]': `nzType === 'card' || nzType === 'editable-card'`,\n '[class.ant-tabs-editable]': `nzType === 'editable-card'`,\n '[class.ant-tabs-editable-card]': `nzType === 'editable-card'`,\n '[class.ant-tabs-centered]': `nzCentered`,\n '[class.ant-tabs-rtl]': `dir === 'rtl'`,\n '[class.ant-tabs-top]': `nzTabPosition === 'top'`,\n '[class.ant-tabs-bottom]': `nzTabPosition === 'bottom'`,\n '[class.ant-tabs-left]': `nzTabPosition === 'left'`,\n '[class.ant-tabs-right]': `nzTabPosition === 'right'`,\n '[class.ant-tabs-default]': `nzSize === 'default'`,\n '[class.ant-tabs-small]': `nzSize === 'small'`,\n '[class.ant-tabs-large]': `nzSize === 'large'`\n },\n imports: [NzTabNavBarComponent, NgIf, NgStyle, NgForOf, NzTabNavItemDirective, A11yModule, NzOutletModule, NzTabCloseButtonComponent, NzTabBodyComponent],\n standalone: true\n }]\n }], () => [{\n type: i1$3.NzConfigService\n }, {\n type: i0.NgZone\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: i3$1.Directionality,\n decorators: [{\n type: Optional\n }]\n }, {\n type: i1$2.Router,\n decorators: [{\n type: Optional\n }]\n }], {\n nzSelectedIndex: [{\n type: Input\n }],\n nzTabPosition: [{\n type: Input\n }],\n nzTabBarExtraContent: [{\n type: Input\n }],\n nzCanDeactivate: [{\n type: Input\n }],\n nzAddIcon: [{\n type: Input\n }],\n nzTabBarStyle: [{\n type: Input\n }],\n nzType: [{\n type: Input\n }],\n nzSize: [{\n type: Input\n }],\n nzAnimated: [{\n type: Input\n }],\n nzTabBarGutter: [{\n type: Input\n }],\n nzHideAdd: [{\n type: Input\n }],\n nzCentered: [{\n type: Input\n }],\n nzHideAll: [{\n type: Input\n }],\n nzLinkRouter: [{\n type: Input\n }],\n nzLinkExact: [{\n type: Input\n }],\n nzSelectChange: [{\n type: Output\n }],\n nzSelectedIndexChange: [{\n type: Output\n }],\n nzTabListScroll: [{\n type: Output\n }],\n nzClose: [{\n type: Output\n }],\n nzAdd: [{\n type: Output\n }],\n allTabs: [{\n type: ContentChildren,\n args: [NzTabComponent, {\n descendants: true\n }]\n }],\n tabNavBarRef: [{\n type: ViewChild,\n args: [NzTabNavBarComponent, {\n static: false\n }]\n }]\n });\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst DIRECTIVES = [NzTabSetComponent, NzTabComponent, NzTabNavBarComponent, NzTabNavItemDirective, NzTabsInkBarDirective, NzTabScrollListDirective, NzTabNavOperationComponent, NzTabAddButtonComponent, NzTabCloseButtonComponent, NzTabDirective, NzTabBodyComponent, NzTabLinkDirective, NzTabLinkTemplateDirective];\nclass NzTabsModule {\n static {\n this.ɵfac = function NzTabsModule_Factory(t) {\n return new (t || NzTabsModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NzTabsModule,\n imports: [NzTabSetComponent, NzTabComponent, NzTabNavBarComponent, NzTabNavItemDirective, NzTabsInkBarDirective, NzTabScrollListDirective, NzTabNavOperationComponent, NzTabAddButtonComponent, NzTabCloseButtonComponent, NzTabDirective, NzTabBodyComponent, NzTabLinkDirective, NzTabLinkTemplateDirective],\n exports: [NzTabSetComponent, NzTabComponent, NzTabNavBarComponent, NzTabNavItemDirective, NzTabsInkBarDirective, NzTabScrollListDirective, NzTabNavOperationComponent, NzTabAddButtonComponent, NzTabCloseButtonComponent, NzTabDirective, NzTabBodyComponent, NzTabLinkDirective, NzTabLinkTemplateDirective]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [NzTabSetComponent, NzTabNavBarComponent, NzTabNavOperationComponent, NzTabAddButtonComponent, NzTabCloseButtonComponent]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NzTabsModule, [{\n type: NgModule,\n args: [{\n imports: [DIRECTIVES],\n exports: [DIRECTIVES]\n }]\n }], null, null);\n})();\n\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NZ_TAB_SET, NzTabChangeEvent, NzTabComponent, NzTabDirective, NzTabLinkDirective, NzTabLinkTemplateDirective, NzTabSetComponent, NzTabsModule, NzTabAddButtonComponent as ɵNzTabAddButtonComponent, NzTabBodyComponent as ɵNzTabBodyComponent, NzTabCloseButtonComponent as ɵNzTabCloseButtonComponent, NzTabNavBarComponent as ɵNzTabNavBarComponent, NzTabNavItemDirective as ɵNzTabNavItemDirective, NzTabNavOperationComponent as ɵNzTabNavOperationComponent, NzTabScrollListDirective as ɵNzTabScrollListDirective, NzTabsInkBarDirective as ɵNzTabsInkBarDirective };\n"], + "mappings": "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", + "names": [] +} diff --git a/src/app/app.config.ts b/src/app/app.config.ts index 542660d..208d376 100644 --- a/src/app/app.config.ts +++ b/src/app/app.config.ts @@ -8,10 +8,20 @@ import { registerLocaleData } from '@angular/common'; import zh from '@angular/common/locales/zh'; import { FormsModule } from '@angular/forms'; import { HttpClientModule } from '@angular/common/http'; -import { provideAnimations } from '@angular/platform-browser/animations'; +import {BrowserAnimationsModule, provideAnimations} from '@angular/platform-browser/animations'; +import {InitGuardService} from "./utils/initGuard.service"; registerLocaleData(zh); export const appConfig: ApplicationConfig = { - providers: [provideRouter(routes), provideClientHydration(), provideNzI18n(zh_CN), importProvidersFrom(FormsModule), importProvidersFrom(HttpClientModule), provideAnimations()] + providers: [ + provideRouter(routes), + provideClientHydration(), + provideNzI18n(zh_CN), + importProvidersFrom(FormsModule), + importProvidersFrom(HttpClientModule), + provideAnimations(), + BrowserAnimationsModule, + InitGuardService, // 校验登录 + ] }; diff --git a/src/app/app.routes.ts b/src/app/app.routes.ts index 27e2f3d..3899be3 100644 --- a/src/app/app.routes.ts +++ b/src/app/app.routes.ts @@ -1,8 +1,21 @@ import { Routes } from '@angular/router'; +import {IndexComponent} from "./pages/body/index/index.component"; +import {InitGuardService} from "./utils/initGuard.service"; export const routes: Routes = [ {path: '', pathMatch: 'full', redirectTo: 'login'}, { path: 'login', - loadChildren: () => import('./pages/login/login.routes').then(m => m.LOGIN_ROUTES) + loadChildren: () => import('./pages/login/login.routes').then(m => m.LOGIN_ROUTES), + canActivate: [InitGuardService] }, + { + path: 'admin', component: IndexComponent, + children: [ + { + path: 'index', + loadChildren: () => import('./pages/index/index.routes').then(m => m.INDEX_ROUTES), + canActivate: [InitGuardService] + }, + ] + } ]; diff --git a/src/app/data/login/localStorage.namespace.ts b/src/app/data/login/localStorage.namespace.ts new file mode 100644 index 0000000..26c5e97 --- /dev/null +++ b/src/app/data/login/localStorage.namespace.ts @@ -0,0 +1,5 @@ +export const USER_TOKEN = 'userToken'; +export const INIT_FLAG = 'initFlag'; +export const DATA = 'DATA'; +export const LOGIN_DATA = 'loginData'; + diff --git a/src/app/data/menu/menu.namespace.ts b/src/app/data/menu/menu.namespace.ts new file mode 100644 index 0000000..f198a81 --- /dev/null +++ b/src/app/data/menu/menu.namespace.ts @@ -0,0 +1,9 @@ +export const menuData = [ + {title: "首页" , selected: true} , + {title: "商户管理" , selected: false} , + {title: "数据交易" , selected: false} , + {title: "产品中心" , selected: false} , + {title: "账号管理" , selected: false} , + {title: "营销工具" , selected: false} +]; + diff --git a/src/app/pages/body/body.module.ts b/src/app/pages/body/body.module.ts new file mode 100644 index 0000000..0b3e9e5 --- /dev/null +++ b/src/app/pages/body/body.module.ts @@ -0,0 +1,10 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +@NgModule({ + declarations: [], + imports: [ + CommonModule + ] +}) +export class BodyModule { } diff --git a/src/app/pages/body/index/index.component.html b/src/app/pages/body/index/index.component.html new file mode 100644 index 0000000..8dbb30a --- /dev/null +++ b/src/app/pages/body/index/index.component.html @@ -0,0 +1,80 @@ + + + +
+ + + + +
col-8
+
+
+ + +
+
+
+ +
+ 收起 +
+ +
+
    +
  • +
      +
    • +
        +
      • Option 1
      • +
      • Option 2
      • +
      +
    • +
    • +
        +
      • Option 3
      • +
      • Option 4
      • +
      +
    • +
    +
  • +
  • +
      +
    • Option 5
    • +
    • Option 6
    • +
    • +
        +
      • Option 7
      • +
      • Option 8
      • +
      • +
          +
        • Option 9
        • +
        • Option 10
        • +
        +
      • +
      +
    • +
    +
  • +
  • +
      +
    • Option 11
    • +
    • Option 12
    • +
    • Option 13
    • +
    +
  • +
+
+
+ +
+ +
+
+
+ diff --git a/src/app/pages/body/index/index.component.less b/src/app/pages/body/index/index.component.less new file mode 100644 index 0000000..eba7283 --- /dev/null +++ b/src/app/pages/body/index/index.component.less @@ -0,0 +1,84 @@ +nz-header { + background: #181f47; + padding: 0 26px; + .logo { + h2 { + color: white; + } + } + .menu { + width: 52%; + display: flex; + justify-content: center; + ul { + li { + height: 56px; + float: left; + color: #fff; + opacity: .65; + font-size: 14px; + padding: 0 20px; + cursor: pointer; + } + .li-selected { + opacity: 1; + border-bottom: 2px solid #1890ff; + } + li:hover { + opacity: 1; + border-bottom: 2px solid #1890ff; + } + list-style-type: none; /* 移除列表的标记,如果需要的话 */ + padding: 0; /* 移除padding,如果需要的话 */ + } + } +} + +nz-breadcrumb { + margin: 16px 0; +} + +nz-footer { + text-align: center; +} + +.inner-content { + div { + float: left; + } + .side_menu { + height: 100%; + color: #595959; + box-shadow: 2px 0 8px rgba(0,0,0,.15); + .side_menu_top { + width: 100%; + margin-top: 8px; + font-size: 18px; + height: 26px; + line-height: 23px; + margin-left: 14px; + .side_menu_top_icon { + height: 26px; + line-height: 26px; + } + span { + margin-left: 6px; + } + } + .side_menu_content { + margin-top: 10px; + width: 100%; + height: 100%; + } + + } + height: calc(100vh - 64px); +} +.content { + width:100vw; +} +.content-width { + width: calc(100vw - 280px); +} + + diff --git a/src/app/pages/body/index/index.component.ts b/src/app/pages/body/index/index.component.ts new file mode 100644 index 0000000..761e4a1 --- /dev/null +++ b/src/app/pages/body/index/index.component.ts @@ -0,0 +1,78 @@ +import { Component } from '@angular/core'; +import {RouterLink, RouterOutlet} from "@angular/router"; +import {NzContentComponent, NzFooterComponent, NzHeaderComponent, NzLayoutComponent} from "ng-zorro-antd/layout"; +import {NzBreadCrumbComponent, NzBreadCrumbItemComponent} from "ng-zorro-antd/breadcrumb"; +import {NzColDirective, NzRowDirective} from "ng-zorro-antd/grid"; +import {NzMenuDirective, NzMenuItemComponent, NzSubMenuComponent} from "ng-zorro-antd/menu"; +import {menuData} from "../../../data/menu/menu.namespace"; +import {NgClass, NgForOf} from "@angular/common"; +import {animate, state, style, transition, trigger} from "@angular/animations"; +import {NzIconDirective} from "ng-zorro-antd/icon"; +import {NzTabComponent, NzTabSetComponent} from "ng-zorro-antd/tabs"; +import {TabComponent} from "../tab/tab.component"; + + +@Component({ + selector: 'app-index', + standalone: true, + imports: [ + RouterOutlet, + NzLayoutComponent, + NzHeaderComponent, + NzBreadCrumbComponent, + NzBreadCrumbItemComponent, + NzContentComponent, + NzFooterComponent, + NzRowDirective, + NzColDirective, + NzMenuItemComponent, + NzMenuDirective, + RouterLink, + NzSubMenuComponent, + NgForOf, + NgClass, + NzIconDirective, + NzTabComponent, + NzTabSetComponent, + TabComponent + ], + templateUrl: './index.component.html', + styleUrl: './index.component.less', + animations: [ + // animation triggers go here + trigger('openClose', [ + state('open', style({ + width: '280px', + backgroundColor: 'white' + })), + state('closed', style({ + overflow: 'hidden', + width: '0', + })), + transition('open => closed', [ + animate('0.1s') + ]), + transition('closed => open', [ + animate('0.1s') + ]), + ]), + ] +}) +export class IndexComponent { + + // 首次导航数据 + firstMenuData = menuData; + // 侧边菜单展示开关 + isCollapse = false; + tabs = ['首页' , '商户管理']; + constructor( + ) {} + + // 选择操作 + isSelected(item: any) { + this.isCollapse = true; + this.firstMenuData.map(data => { + data.selected = data.title === item.title; + }); + } +} diff --git a/src/app/pages/body/tab/tab.component.html b/src/app/pages/body/tab/tab.component.html new file mode 100644 index 0000000..933dc96 --- /dev/null +++ b/src/app/pages/body/tab/tab.component.html @@ -0,0 +1,7 @@ +
+ + + + + +
diff --git a/src/app/pages/body/tab/tab.component.less b/src/app/pages/body/tab/tab.component.less new file mode 100644 index 0000000..e172304 --- /dev/null +++ b/src/app/pages/body/tab/tab.component.less @@ -0,0 +1,30 @@ +:host { + background: white; + overflow: hidden; + display: block; + height: 100%; +} + +.card-container ::ng-deep p { + margin: 0; +} +.card-container ::ng-deep > .ant-tabs-card .ant-tabs-content { + + margin-top: -16px; +} +.card-container ::ng-deep > .ant-tabs-card .ant-tabs-content > .ant-tabs-tabpane { + background: #f5f5f5; + padding: 16px; +} +.card-container ::ng-deep > .ant-tabs-card > .ant-tabs-nav::before { + display: none; +} +.card-container ::ng-deep > .ant-tabs-card .ant-tabs-tab { + border-color: transparent; + background: transparent; +} +.card-container ::ng-deep > .ant-tabs-card .ant-tabs-tab-active { + border-color: #f5f5f5; + background: #f5f5f5; +} + diff --git a/src/app/pages/body/tab/tab.component.ts b/src/app/pages/body/tab/tab.component.ts new file mode 100644 index 0000000..9fbaf58 --- /dev/null +++ b/src/app/pages/body/tab/tab.component.ts @@ -0,0 +1,20 @@ +import { Component } from '@angular/core'; +import {NgForOf} from "@angular/common"; +import {NzTabComponent, NzTabSetComponent} from "ng-zorro-antd/tabs"; +import {RouterOutlet} from "@angular/router"; + +@Component({ + selector: 'app-tab', + standalone: true, + imports: [ + NgForOf, + NzTabComponent, + NzTabSetComponent, + RouterOutlet + ], + templateUrl: './tab.component.html', + styleUrl: './tab.component.less' +}) +export class TabComponent { + tabs = ['首页' , '商户管理']; +} diff --git a/src/app/pages/index/index.module.ts b/src/app/pages/index/index.module.ts new file mode 100644 index 0000000..08c8bb0 --- /dev/null +++ b/src/app/pages/index/index.module.ts @@ -0,0 +1,10 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +@NgModule({ + declarations: [], + imports: [ + CommonModule + ] +}) +export class IndexModule { } diff --git a/src/app/pages/index/index.routes.ts b/src/app/pages/index/index.routes.ts new file mode 100644 index 0000000..ae99859 --- /dev/null +++ b/src/app/pages/index/index.routes.ts @@ -0,0 +1,6 @@ +import { Routes } from '@angular/router'; +import {IndexComponent} from "./index/index.component"; + +export const INDEX_ROUTES: Routes = [ + { path: '', component: IndexComponent} +]; diff --git a/src/app/pages/index/index/index.component.html b/src/app/pages/index/index/index.component.html new file mode 100644 index 0000000..0c002a1 --- /dev/null +++ b/src/app/pages/index/index/index.component.html @@ -0,0 +1 @@ +
diff --git a/src/app/pages/index/index/index.component.less b/src/app/pages/index/index/index.component.less new file mode 100644 index 0000000..e69de29 diff --git a/src/app/pages/index/index/index.component.ts b/src/app/pages/index/index/index.component.ts new file mode 100644 index 0000000..00c144f --- /dev/null +++ b/src/app/pages/index/index/index.component.ts @@ -0,0 +1,18 @@ +import { Component } from '@angular/core'; +import {NzTabComponent, NzTabSetComponent} from "ng-zorro-antd/tabs"; +import {NgForOf} from "@angular/common"; + +@Component({ + selector: 'app-index', + standalone: true, + imports: [ + NzTabSetComponent, + NzTabComponent, + NgForOf + ], + templateUrl: './index.component.html', + styleUrl: './index.component.less' +}) +export class IndexComponent { + +} diff --git a/src/app/pages/login/login/login.component.html b/src/app/pages/login/login/login.component.html index 7a0681d..40003d9 100644 --- a/src/app/pages/login/login/login.component.html +++ b/src/app/pages/login/login/login.component.html @@ -17,7 +17,7 @@ - + diff --git a/src/app/pages/login/login/login.component.ts b/src/app/pages/login/login/login.component.ts index 40c108b..9e3420e 100644 --- a/src/app/pages/login/login/login.component.ts +++ b/src/app/pages/login/login/login.component.ts @@ -15,11 +15,14 @@ import {NzInputDirective, NzInputGroupComponent} from "ng-zorro-antd/input"; import {NzColDirective, NzRowDirective} from "ng-zorro-antd/grid"; import {NzButtonComponent} from "ng-zorro-antd/button"; import {NzCheckboxComponent} from "ng-zorro-antd/checkbox"; -import {NzTransitionPatchDirective} from "ng-zorro-antd/core/transition-patch/transition-patch.directive"; import {backgroundImage} from "../../../data/login/login.namespace"; import {NzSliderComponent} from "ng-zorro-antd/slider"; -import {MathUtilsService} from "../../../utils/mathUtils.service"; +import {MathUtils} from "../../../utils/mathUtils.service"; import {NzMessageService} from "ng-zorro-antd/message"; +import {LoginService} from "../../../servies/login/login.service"; +import {DATA, INIT_FLAG, LOGIN_DATA, USER_TOKEN} from "../../../data/login/localStorage.namespace"; +import {Router} from "@angular/router"; +import {BrowserStorageService} from "../../../utils/localStorage.service"; @@ -53,22 +56,27 @@ export class LoginComponent { constructor( private fb: NonNullableFormBuilder, - private message: NzMessageService - ) {} + private message: NzMessageService, + private router: Router, // 路由 + private storage: BrowserStorageService, + private login: LoginService + ) { + this.validateForm.patchValue(this.storage.get(LOGIN_DATA)); + } // 背景图片 backgroundImage = backgroundImage; // 验证随机数 - randomNumber = MathUtilsService.generateRandomNumber(100); + randomNumber = MathUtils.generateRandomNumber(100); // 表单 validateForm: FormGroup<{ - userName: FormControl; + loginName: FormControl; password: FormControl; slider: FormControl; remember: FormControl; }> = this.fb.group({ - userName: ['', [Validators.required]], + loginName: ['', [Validators.required]], password: ['', [Validators.required]], slider: ['', [Validators.required]], remember: [true] @@ -81,9 +89,23 @@ export class LoginComponent { if (this.validateForm.valid) { if (Number(this.validateForm.value.slider) !== this.randomNumber) { this.message.warning('验证不通过!') + this.randomNumber = MathUtils.generateRandomNumber(100) + return; } + // 发起登录 + this.login.userLogin(this.validateForm.value , (data: any) => { + if (data['return_code'] === '000000') { + this.storage.set(LOGIN_DATA, this.validateForm.value); + this.storage.set(DATA, data['return_data']['object']); + this.storage.set(USER_TOKEN, data['return_data']['uniqueCode']); + this.storage.set(INIT_FLAG, true); + this.router.navigateByUrl('/admin/index').then(r => console.log("返回内容" ,r)); + } else { + this.message.error(data['return_msg']); + } + }); - + this.randomNumber = MathUtils.generateRandomNumber(100) } else { Object.values(this.validateForm.controls).forEach(control => { diff --git a/src/app/pages/menu/menu.component.html b/src/app/pages/menu/menu.component.html new file mode 100644 index 0000000..136889f --- /dev/null +++ b/src/app/pages/menu/menu.component.html @@ -0,0 +1 @@ +

menu works!

diff --git a/src/app/pages/menu/menu.component.less b/src/app/pages/menu/menu.component.less new file mode 100644 index 0000000..e69de29 diff --git a/src/app/pages/menu/menu.component.spec.ts b/src/app/pages/menu/menu.component.spec.ts new file mode 100644 index 0000000..d475a1a --- /dev/null +++ b/src/app/pages/menu/menu.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MenuComponent } from './menu.component'; + +describe('MenuComponent', () => { + let component: MenuComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [MenuComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(MenuComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/menu/menu.component.ts b/src/app/pages/menu/menu.component.ts new file mode 100644 index 0000000..c0308d6 --- /dev/null +++ b/src/app/pages/menu/menu.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-menu', + standalone: true, + imports: [], + templateUrl: './menu.component.html', + styleUrl: './menu.component.less' +}) +export class MenuComponent { + +} diff --git a/src/app/servies/login/login.service.ts b/src/app/servies/login/login.service.ts index 92c777e..26ba724 100644 --- a/src/app/servies/login/login.service.ts +++ b/src/app/servies/login/login.service.ts @@ -1,9 +1,18 @@ import { Injectable } from '@angular/core'; +import {HttpClient} from "@angular/common/http"; +import {environment} from "../../../environments/environment"; @Injectable({ providedIn: 'root' }) export class LoginService { - constructor() { } + constructor(private http: HttpClient) {} + + public userLogin(params: object, callBack:any) { + this.http.post(environment.userUrl + 'secUser/login', params).subscribe(data => { + callBack(data); + }); + + } } diff --git a/src/app/utils/Interceptor.service.ts b/src/app/utils/Interceptor.service.ts new file mode 100644 index 0000000..698a14c --- /dev/null +++ b/src/app/utils/Interceptor.service.ts @@ -0,0 +1,72 @@ +import {Injectable} from '@angular/core'; +import { + HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpResponse, HttpHeaders +} from '@angular/common/http'; +import {catchError, finalize} from 'rxjs/operators'; +import {mergeMap} from 'rxjs/operators'; +import {Observable} from 'rxjs'; +import {NzMessageService} from "ng-zorro-antd/message"; +import {LocalStorageService} from "./localStorage.service"; +import {USER_TOKEN} from "../data/login/localStorage.namespace"; + + +@Injectable() +export class InterceptorService implements HttpInterceptor { + constructor( + private message: NzMessageService, + private storage: LocalStorageService, + ) { + } + intercept(req: HttpRequest, next: HttpHandler): Observable> { + let secureReq: HttpRequest; + let modifiedHeaders: HttpHeaders; + const token = this.storage.get(USER_TOKEN); + if (token != null) { + modifiedHeaders = req.headers.set('Authorization', token); + } + + secureReq = req.clone({ + url: req.url, + // @ts-ignore + headers: modifiedHeaders + }); + // @ts-ignore + return next.handle(secureReq) + .pipe( + catchError((res: HttpResponse) => { + let msg = ''; + switch (res.status) { + case 401: + msg = '身份验证过期,请重新进入页面'; + break; + case 200: + msg = '身份验证过期,请重新进入页面'; + break; + case 404: + msg = '找不到地址'; + break; + case 403: + msg = '业务错误'; + break; + case 500: + msg = '服务器发生错误,请重试'; + break; + } + this.jumpError(msg , res.status); + return Observable.create(res); + }), + finalize(() => { + }), + mergeMap( + // 有响应时成功;忽略其他事件 + (event: any) => { + return Observable.create((observer: { next: (arg0: any) => any; }) => observer.next(event)); + }), + ); + } + + jumpError(message: string , status: number) { + // this.router.navigateByUrl('/error/500'); + + } +} diff --git a/src/app/utils/initGuard.service.ts b/src/app/utils/initGuard.service.ts new file mode 100644 index 0000000..1b3e4a1 --- /dev/null +++ b/src/app/utils/initGuard.service.ts @@ -0,0 +1,28 @@ +import { Injectable } from '@angular/core'; +import { ActivatedRouteSnapshot, Router, RouterStateSnapshot } from '@angular/router'; +import {CanActivate} from "@angular/router"; +import {INIT_FLAG} from "../data/login/localStorage.namespace"; +import {BrowserStorageService} from "./localStorage.service"; + + + +@Injectable() +export class InitGuardService implements CanActivate { + constructor( + private storage: BrowserStorageService, + private router: Router, + ) { } + + canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { + const init = !!this.storage.get(INIT_FLAG); + if (state.url.includes('login') && init) { + this.router.navigateByUrl('/admin/index').then(); + return false; + } + if (!state.url.includes('login') && !init) { + this.router.navigateByUrl('/login').then(); + return false; + } + return true; + } +} diff --git a/src/app/utils/localStorage.service.ts b/src/app/utils/localStorage.service.ts new file mode 100644 index 0000000..70e2bde --- /dev/null +++ b/src/app/utils/localStorage.service.ts @@ -0,0 +1,32 @@ +import { Inject, Injectable, InjectionToken } from '@angular/core'; + +export const BROWSER_STORAGE = new InjectionToken('Browser Storage', { + providedIn: 'root', + factory: () => localStorage +}); + +@Injectable({ + providedIn: 'root' +}) +export class BrowserStorageService { + constructor(@Inject(BROWSER_STORAGE) public storage: Storage) {} + + get(key: string) { + // @ts-ignore + return JSON.parse(this.storage.getItem(key)) as T; + } + + set(key: string, value: any) { + if (!value && value === undefined) { return; } + const arr = JSON.stringify(value); + this.storage.setItem(key, arr); + } + + remove(key: string) { + this.storage.removeItem(key); + } + + clear() { + this.storage.clear(); + } +} diff --git a/src/app/utils/mathUtils.service.ts b/src/app/utils/mathUtils.service.ts index 659ad01..9dc198c 100644 --- a/src/app/utils/mathUtils.service.ts +++ b/src/app/utils/mathUtils.service.ts @@ -1,4 +1,4 @@ -export class MathUtilsService { +export class MathUtils{ /** * @Author Sum1Dream diff --git a/src/app/utils/objectData.service.ts b/src/app/utils/objectData.service.ts new file mode 100644 index 0000000..43013cf --- /dev/null +++ b/src/app/utils/objectData.service.ts @@ -0,0 +1,24 @@ +export class ObjectData { + + /** + * @Author Sum1Dream + * @Name getWhereCondition + * @Description // 将对象转换成GET请求参数 key1=value1&key2=value2 + * @Date 14:02 2024/4/9 + * @Param object + */ + static objectByString(object: any): string { + let str = ''; + for (const i in object) { + if (object[i] != null && object[i] !== '') { + if (str === '') { + str = i + '=' + object[i]; + } else { + str += '&' + i + '=' + object[i]; + } + } + } + return str; + } + +} diff --git a/src/environments/environment.dev.ts b/src/environments/environment.dev.ts index 4ecaf9d..213322b 100644 --- a/src/environments/environment.dev.ts +++ b/src/environments/environment.dev.ts @@ -3,6 +3,5 @@ export const environment = { baseUrl: 'https://hsgcs.dctpay.com/brest/', // 测试环境服务器地址(请求数据地址) imageUrl: 'https://hsgcs.dctpay.com/filesystem/', orderUrl: 'https://hsgcs.dctpay.com/order/', - key: 'https://hsgcs.dctpay.com/phone-recharge-H5/index.html?codeValue=', - inviteUrl: 'https://hsgcs.dctpay.com/wx/?action=ic&id=', + userUrl: 'https://hsgcs.dctpay.com/User/', }; diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts index ec0d827..d57d853 100644 --- a/src/environments/environment.prod.ts +++ b/src/environments/environment.prod.ts @@ -3,6 +3,5 @@ export const environment = { baseUrl: 'https://hsg.dctpay.com/brest/', // 正式环境服务器地址(请求数据地址) orderUrl: 'https://hsg.dctpay.com/order/', // 测试环境服务器地址(请求数据地址) imageUrl: 'https://hsg.dctpay.com/filesystem/', - key: 'https://hsg.dctpay.com/phone-recharge-H5/index.html?codeValue=', - inviteUrl: 'https://hsg.dctpay.com/wx/?action=ic&id=', + userUrl: 'https://hsg.dctpay.com/User/', }; diff --git a/src/environments/environment.ts b/src/environments/environment.ts index fd50ef6..1571877 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -4,14 +4,11 @@ export const environment = { production: false, - // baseUrl: 'http://localhost:9302/brest/', // 测试环境服务器地址(请求数据地址) - // orderUrl: 'http://localhost:9304/order/', // 测试环境服务器地址(请求数据地址) - baseUrl: 'https://hsg.dctpay.com/brest/', // 测试环境服务器地址(请求数据地址) - // orderUrl: 'https://hsg.dctpay.com/order/', // 测试环境服务器地址(请求数据地址) - orderUrl: 'https://hsgcs.dctpay.com/order/', // 测试环境服务器地址(请求数据地址) + baseUrl: 'http://localhost:9302/brest/', // 测试环境服务器地址(请求数据地址) + orderUrl: 'http://localhost:9304/order/', // 测试环境服务器地址(请求数据地址) + userUrl: 'http://localhost:9504/user/', // 测试环境服务器地址(请求数据地址) imageUrl: 'https://hsgcs.dctpay.com/filesystem/', - key: 'https://hsgcs.dctpay.com/phone-recharge-H5/index.html?codeValue=', - inviteUrl: 'https://hsgcs.dctpay.com/wx/?action=ic&id=', + }; /* diff --git a/src/styles.less b/src/styles.less index 997e833..c1f862f 100644 --- a/src/styles.less +++ b/src/styles.less @@ -2,7 +2,12 @@ // Custom Theming for NG-ZORRO // For more information: https://ng.ant.design/docs/customize-theme/en @import "../node_modules/ng-zorro-antd/ng-zorro-antd.less"; - +body, html { + margin: 0; + padding: 0; + height: 100%; + overflow: hidden; +} // Override less variables to here // View all variables: https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/components/style/themes/default.less