@dereekb/dbx-core 12.6.21 → 13.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/dereekb-dbx-core.mjs +920 -1176
- package/fesm2022/dereekb-dbx-core.mjs.map +1 -1
- package/package.json +16 -18
- package/types/dereekb-dbx-core.d.ts +3633 -0
- package/esm2022/dereekb-dbx-core.mjs +0 -5
- package/esm2022/index.mjs +0 -2
- package/esm2022/lib/action/action.handler.mjs +0 -22
- package/esm2022/lib/action/action.holder.mjs +0 -76
- package/esm2022/lib/action/action.machine.mjs +0 -72
- package/esm2022/lib/action/action.mjs +0 -95
- package/esm2022/lib/action/action.module.mjs +0 -85
- package/esm2022/lib/action/action.reference.mjs +0 -7
- package/esm2022/lib/action/action.store.mjs +0 -286
- package/esm2022/lib/action/action.store.source.mjs +0 -162
- package/esm2022/lib/action/action.store.source.provide.mjs +0 -41
- package/esm2022/lib/action/directive/auto/action.automodify.directive.mjs +0 -36
- package/esm2022/lib/action/directive/auto/action.autotrigger.directive.mjs +0 -113
- package/esm2022/lib/action/directive/auto/index.mjs +0 -3
- package/esm2022/lib/action/directive/context/action.directive.mjs +0 -30
- package/esm2022/lib/action/directive/context/action.source.directive.mjs +0 -25
- package/esm2022/lib/action/directive/context/index.mjs +0 -3
- package/esm2022/lib/action/directive/debug/action.logger.directive.mjs +0 -25
- package/esm2022/lib/action/directive/debug/index.mjs +0 -2
- package/esm2022/lib/action/directive/index.mjs +0 -6
- package/esm2022/lib/action/directive/map/action.map.directive.mjs +0 -36
- package/esm2022/lib/action/directive/map/action.map.key.directive.mjs +0 -27
- package/esm2022/lib/action/directive/map/action.map.mjs +0 -59
- package/esm2022/lib/action/directive/map/action.map.source.directive.mjs +0 -44
- package/esm2022/lib/action/directive/map/action.map.utility.mjs +0 -37
- package/esm2022/lib/action/directive/map/action.map.working.disable.directive.mjs +0 -35
- package/esm2022/lib/action/directive/map/index.mjs +0 -7
- package/esm2022/lib/action/directive/state/action.disabled.directive.mjs +0 -34
- package/esm2022/lib/action/directive/state/action.disableonsuccess.directive.mjs +0 -35
- package/esm2022/lib/action/directive/state/action.enforce.modified.directive.mjs +0 -37
- package/esm2022/lib/action/directive/state/action.error.handler.directive.mjs +0 -32
- package/esm2022/lib/action/directive/state/action.handler.directive.mjs +0 -59
- package/esm2022/lib/action/directive/state/action.handler.instance.mjs +0 -61
- package/esm2022/lib/action/directive/state/action.idle.directive.mjs +0 -34
- package/esm2022/lib/action/directive/state/action.presuccess.directive.mjs +0 -34
- package/esm2022/lib/action/directive/state/action.success.directive.mjs +0 -34
- package/esm2022/lib/action/directive/state/action.success.handler.directive.mjs +0 -32
- package/esm2022/lib/action/directive/state/action.triggered.directive.mjs +0 -34
- package/esm2022/lib/action/directive/state/action.value.directive.mjs +0 -51
- package/esm2022/lib/action/directive/state/action.value.stream.directive.mjs +0 -60
- package/esm2022/lib/action/directive/state/action.value.trigger.directive.mjs +0 -76
- package/esm2022/lib/action/directive/state/action.value.trigger.instance.mjs +0 -59
- package/esm2022/lib/action/directive/state/action.working.directive.mjs +0 -41
- package/esm2022/lib/action/directive/state/index.mjs +0 -17
- package/esm2022/lib/action/index.mjs +0 -11
- package/esm2022/lib/auth/auth.module.mjs +0 -25
- package/esm2022/lib/auth/auth.providers.mjs +0 -16
- package/esm2022/lib/auth/auth.role.any.directive.mjs +0 -24
- package/esm2022/lib/auth/auth.role.has.directive.mjs +0 -24
- package/esm2022/lib/auth/auth.role.not.directive.mjs +0 -24
- package/esm2022/lib/auth/auth.state.providers.mjs +0 -14
- package/esm2022/lib/auth/auth.state.service.mjs +0 -20
- package/esm2022/lib/auth/auth.user.mjs +0 -11
- package/esm2022/lib/auth/index.mjs +0 -12
- package/esm2022/lib/auth/router/auth.router.mjs +0 -6
- package/esm2022/lib/auth/router/auth.router.providers.mjs +0 -19
- package/esm2022/lib/auth/router/auth.router.service.mjs +0 -73
- package/esm2022/lib/auth/router/index.mjs +0 -6
- package/esm2022/lib/auth/router/provider/uirouter/auth.hook.mjs +0 -23
- package/esm2022/lib/auth/router/provider/uirouter/hook.mjs +0 -71
- package/esm2022/lib/auth/router/provider/uirouter/index.mjs +0 -6
- package/esm2022/lib/auth/router/provider/uirouter/redirect.mjs +0 -29
- package/esm2022/lib/auth/router/provider/uirouter/role.hook.mjs +0 -58
- package/esm2022/lib/auth/router/provider/uirouter/state.hook.mjs +0 -53
- package/esm2022/lib/auth/router/state/auth.router.state.providers.mjs +0 -23
- package/esm2022/lib/auth/router/state/effect/auth.router.state.effect.mjs +0 -37
- package/esm2022/lib/auth/router/state/effect/index.mjs +0 -2
- package/esm2022/lib/auth/router/state/index.mjs +0 -3
- package/esm2022/lib/auth/service/auth.service.mjs +0 -6
- package/esm2022/lib/auth/service/auth.service.rxjs.mjs +0 -30
- package/esm2022/lib/auth/service/index.mjs +0 -3
- package/esm2022/lib/auth/state/action/auth.action.mjs +0 -14
- package/esm2022/lib/auth/state/action/index.mjs +0 -12
- package/esm2022/lib/auth/state/action/user.action.mjs +0 -18
- package/esm2022/lib/auth/state/effect/auth.effect.mjs +0 -33
- package/esm2022/lib/auth/state/index.mjs +0 -13
- package/esm2022/lib/auth/state/reducer/index.mjs +0 -23
- package/esm2022/lib/auth/state/reducer/user.reducer.mjs +0 -12
- package/esm2022/lib/auth/state/state.mjs +0 -2
- package/esm2022/lib/button/action/action.button.directive.mjs +0 -35
- package/esm2022/lib/button/action/action.button.trigger.directive.mjs +0 -30
- package/esm2022/lib/button/action/index.mjs +0 -3
- package/esm2022/lib/button/button.directive.mjs +0 -120
- package/esm2022/lib/button/button.loading.directive.mjs +0 -36
- package/esm2022/lib/button/button.mjs +0 -21
- package/esm2022/lib/button/button.module.mjs +0 -28
- package/esm2022/lib/button/index.mjs +0 -7
- package/esm2022/lib/button/router/button.segue.directive.mjs +0 -30
- package/esm2022/lib/button/router/index.mjs +0 -2
- package/esm2022/lib/context/context.directive.mjs +0 -26
- package/esm2022/lib/context/context.mjs +0 -25
- package/esm2022/lib/context/context.module.mjs +0 -19
- package/esm2022/lib/context/context.providers.mjs +0 -12
- package/esm2022/lib/context/context.service.mjs +0 -26
- package/esm2022/lib/context/index.mjs +0 -7
- package/esm2022/lib/context/state/action/data.action.mjs +0 -10
- package/esm2022/lib/context/state/action/index.mjs +0 -7
- package/esm2022/lib/context/state/effect/index.mjs +0 -33
- package/esm2022/lib/context/state/index.mjs +0 -13
- package/esm2022/lib/context/state/reducer/data.reducer.mjs +0 -16
- package/esm2022/lib/context/state/reducer/index.mjs +0 -25
- package/esm2022/lib/context/state/state.mjs +0 -2
- package/esm2022/lib/environment/environment.mjs +0 -6
- package/esm2022/lib/environment/environment.providers.mjs +0 -19
- package/esm2022/lib/environment/environment.service.mjs +0 -30
- package/esm2022/lib/environment/index.mjs +0 -4
- package/esm2022/lib/filter/filter.abstract.connector.directive.mjs +0 -23
- package/esm2022/lib/filter/filter.abstract.source.directive.mjs +0 -69
- package/esm2022/lib/filter/filter.connect.source.directive.mjs +0 -23
- package/esm2022/lib/filter/filter.connector.directive.mjs +0 -20
- package/esm2022/lib/filter/filter.content.mjs +0 -29
- package/esm2022/lib/filter/filter.map.connector.directive.mjs +0 -33
- package/esm2022/lib/filter/filter.map.directive.mjs +0 -24
- package/esm2022/lib/filter/filter.map.instance.directive.mjs +0 -25
- package/esm2022/lib/filter/filter.map.source.directive.mjs +0 -38
- package/esm2022/lib/filter/filter.module.mjs +0 -22
- package/esm2022/lib/filter/filter.preset.mjs +0 -8
- package/esm2022/lib/filter/filter.source.directive.mjs +0 -19
- package/esm2022/lib/filter/index.mjs +0 -13
- package/esm2022/lib/index.mjs +0 -15
- package/esm2022/lib/injection/index.mjs +0 -14
- package/esm2022/lib/injection/injection.array.component.mjs +0 -31
- package/esm2022/lib/injection/injection.array.mjs +0 -2
- package/esm2022/lib/injection/injection.component.mjs +0 -32
- package/esm2022/lib/injection/injection.component.module.mjs +0 -26
- package/esm2022/lib/injection/injection.context.directive.mjs +0 -130
- package/esm2022/lib/injection/injection.context.forward.directive.mjs +0 -25
- package/esm2022/lib/injection/injection.context.mjs +0 -20
- package/esm2022/lib/injection/injection.directive.mjs +0 -30
- package/esm2022/lib/injection/injection.instance.mjs +0 -121
- package/esm2022/lib/injection/injection.mjs +0 -16
- package/esm2022/lib/injection/injection.rxjs.mjs +0 -24
- package/esm2022/lib/injection/injection.util.mjs +0 -11
- package/esm2022/lib/injection/injector.mjs +0 -13
- package/esm2022/lib/ngrx/index.mjs +0 -2
- package/esm2022/lib/ngrx/store.lockset.mjs +0 -66
- package/esm2022/lib/pipe/async/asobservable.pipe.mjs +0 -21
- package/esm2022/lib/pipe/async/async.pipe.module.mjs +0 -20
- package/esm2022/lib/pipe/async/index.mjs +0 -3
- package/esm2022/lib/pipe/date/date.pipe.module.mjs +0 -108
- package/esm2022/lib/pipe/date/datedayrange.pipe.mjs +0 -24
- package/esm2022/lib/pipe/date/datedaytimerange.pipe.mjs +0 -24
- package/esm2022/lib/pipe/date/datedistance.pipe.mjs +0 -27
- package/esm2022/lib/pipe/date/dateformatdistance.pipe.mjs +0 -36
- package/esm2022/lib/pipe/date/datefromtoformat.pipe.mjs +0 -34
- package/esm2022/lib/pipe/date/daterangedistance.pipe.mjs +0 -24
- package/esm2022/lib/pipe/date/datetimerange.pipe.mjs +0 -24
- package/esm2022/lib/pipe/date/datetimerangeonly.pipe.mjs +0 -24
- package/esm2022/lib/pipe/date/datetimerangeonlydistance.pipe.mjs +0 -24
- package/esm2022/lib/pipe/date/index.mjs +0 -18
- package/esm2022/lib/pipe/date/minutesstring.pipe.mjs +0 -36
- package/esm2022/lib/pipe/date/systemdatetotargetdate.pipe.mjs +0 -27
- package/esm2022/lib/pipe/date/targetdatetosystemdate.pipe.mjs +0 -27
- package/esm2022/lib/pipe/date/timedistance.pipe.mjs +0 -57
- package/esm2022/lib/pipe/date/timezoneabbreviation.pipe.mjs +0 -27
- package/esm2022/lib/pipe/date/tojsdate.pipe.mjs +0 -30
- package/esm2022/lib/pipe/date/tominutes.pipe.mjs +0 -21
- package/esm2022/lib/pipe/index.mjs +0 -6
- package/esm2022/lib/pipe/misc/index.mjs +0 -3
- package/esm2022/lib/pipe/misc/misc.pipe.module.mjs +0 -21
- package/esm2022/lib/pipe/misc/prettyjson.pipe.mjs +0 -30
- package/esm2022/lib/pipe/pipe.module.mjs +0 -25
- package/esm2022/lib/pipe/value/cuttext.pipe.mjs +0 -22
- package/esm2022/lib/pipe/value/dollar.pipe.mjs +0 -24
- package/esm2022/lib/pipe/value/getvalue.pipe.mjs +0 -40
- package/esm2022/lib/pipe/value/index.mjs +0 -5
- package/esm2022/lib/pipe/value/value.pipe.module.mjs +0 -27
- package/esm2022/lib/router/anchor/anchor.directive.mjs +0 -63
- package/esm2022/lib/router/anchor/anchor.mjs +0 -52
- package/esm2022/lib/router/anchor/clickable.mjs +0 -18
- package/esm2022/lib/router/anchor/index.mjs +0 -5
- package/esm2022/lib/router/anchor/mousable.mjs +0 -2
- package/esm2022/lib/router/auth/hook/id.hook.mjs +0 -54
- package/esm2022/lib/router/auth/hook/index.mjs +0 -3
- package/esm2022/lib/router/auth/hook/uid.hook.mjs +0 -19
- package/esm2022/lib/router/auth/index.mjs +0 -2
- package/esm2022/lib/router/index.mjs +0 -6
- package/esm2022/lib/router/model/id.param.redirect.mjs +0 -73
- package/esm2022/lib/router/model/index.mjs +0 -7
- package/esm2022/lib/router/model/model.module.mjs +0 -26
- package/esm2022/lib/router/model/model.router.id.directive.mjs +0 -62
- package/esm2022/lib/router/model/model.router.key.directive.mjs +0 -63
- package/esm2022/lib/router/model/model.router.mjs +0 -38
- package/esm2022/lib/router/model/model.router.uid.directive.mjs +0 -25
- package/esm2022/lib/router/router/index.mjs +0 -5
- package/esm2022/lib/router/router/provider/angular/angular.router.service.mjs +0 -78
- package/esm2022/lib/router/router/provider/angular/angular.router.service.module.mjs +0 -31
- package/esm2022/lib/router/router/provider/angular/index.mjs +0 -3
- package/esm2022/lib/router/router/provider/index.mjs +0 -3
- package/esm2022/lib/router/router/provider/uirouter/index.mjs +0 -4
- package/esm2022/lib/router/router/provider/uirouter/uirouter.router.service.mjs +0 -95
- package/esm2022/lib/router/router/provider/uirouter/uirouter.router.service.module.mjs +0 -34
- package/esm2022/lib/router/router/provider/uirouter/uirouter.router.service.providers.mjs +0 -24
- package/esm2022/lib/router/router/service/index.mjs +0 -6
- package/esm2022/lib/router/router/service/router.go.mjs +0 -14
- package/esm2022/lib/router/router/service/router.service.mjs +0 -7
- package/esm2022/lib/router/router/service/router.service.rxjs.mjs +0 -39
- package/esm2022/lib/router/router/service/router.service.util.mjs +0 -14
- package/esm2022/lib/router/router/service/router.transition.service.mjs +0 -6
- package/esm2022/lib/router/router/transition/index.mjs +0 -5
- package/esm2022/lib/router/router/transition/transition.directive.mjs +0 -19
- package/esm2022/lib/router/router/transition/transition.mjs +0 -12
- package/esm2022/lib/router/router/transition/transition.rxjs.mjs +0 -55
- package/esm2022/lib/router/router/transition/transition.watcher.directive.mjs +0 -31
- package/esm2022/lib/router/router/util/index.mjs +0 -3
- package/esm2022/lib/router/router/util/route.default.mjs +0 -63
- package/esm2022/lib/router/router/util/route.reader.mjs +0 -47
- package/esm2022/lib/router/segue.mjs +0 -35
- package/esm2022/lib/storage/index.mjs +0 -9
- package/esm2022/lib/storage/storage.accessor.mjs +0 -16
- package/esm2022/lib/storage/storage.accessor.simple.factory.mjs +0 -26
- package/esm2022/lib/storage/storage.accessor.simple.mjs +0 -172
- package/esm2022/lib/storage/storage.accessor.string.mjs +0 -50
- package/esm2022/lib/storage/storage.di.mjs +0 -4
- package/esm2022/lib/storage/storage.object.localstorage.mjs +0 -47
- package/esm2022/lib/storage/storage.object.memory.mjs +0 -17
- package/esm2022/lib/storage/storage.providers.mjs +0 -41
- package/esm2022/lib/subscription/index.mjs +0 -2
- package/esm2022/lib/subscription/subscription.directive.mjs +0 -38
- package/esm2022/lib/util/index.mjs +0 -3
- package/esm2022/lib/util/input.mjs +0 -7
- package/esm2022/lib/util/view.mjs +0 -81
- package/esm2022/lib/view/if.directive.mjs +0 -27
- package/esm2022/lib/view/index.mjs +0 -2
- package/index.d.ts +0 -1
- package/lib/action/action.d.ts +0 -80
- package/lib/action/action.handler.d.ts +0 -15
- package/lib/action/action.holder.d.ts +0 -38
- package/lib/action/action.machine.d.ts +0 -50
- package/lib/action/action.module.d.ts +0 -30
- package/lib/action/action.reference.d.ts +0 -11
- package/lib/action/action.store.d.ts +0 -208
- package/lib/action/action.store.source.d.ts +0 -77
- package/lib/action/action.store.source.provide.d.ts +0 -10
- package/lib/action/directive/auto/action.automodify.directive.d.ts +0 -13
- package/lib/action/directive/auto/action.autotrigger.directive.d.ts +0 -38
- package/lib/action/directive/auto/index.d.ts +0 -2
- package/lib/action/directive/context/action.directive.d.ts +0 -12
- package/lib/action/directive/context/action.source.directive.d.ts +0 -12
- package/lib/action/directive/context/index.d.ts +0 -2
- package/lib/action/directive/debug/action.logger.directive.d.ts +0 -13
- package/lib/action/directive/debug/index.d.ts +0 -1
- package/lib/action/directive/index.d.ts +0 -5
- package/lib/action/directive/map/action.map.d.ts +0 -43
- package/lib/action/directive/map/action.map.directive.d.ts +0 -14
- package/lib/action/directive/map/action.map.key.directive.d.ts +0 -14
- package/lib/action/directive/map/action.map.source.directive.d.ts +0 -19
- package/lib/action/directive/map/action.map.utility.d.ts +0 -48
- package/lib/action/directive/map/action.map.working.disable.directive.d.ts +0 -19
- package/lib/action/directive/map/index.d.ts +0 -6
- package/lib/action/directive/state/action.disabled.directive.d.ts +0 -18
- package/lib/action/directive/state/action.disableonsuccess.directive.d.ts +0 -18
- package/lib/action/directive/state/action.enforce.modified.directive.d.ts +0 -18
- package/lib/action/directive/state/action.error.handler.directive.d.ts +0 -20
- package/lib/action/directive/state/action.handler.directive.d.ts +0 -35
- package/lib/action/directive/state/action.handler.instance.d.ts +0 -22
- package/lib/action/directive/state/action.idle.directive.d.ts +0 -15
- package/lib/action/directive/state/action.presuccess.directive.d.ts +0 -15
- package/lib/action/directive/state/action.success.directive.d.ts +0 -16
- package/lib/action/directive/state/action.success.handler.directive.d.ts +0 -20
- package/lib/action/directive/state/action.triggered.directive.d.ts +0 -15
- package/lib/action/directive/state/action.value.directive.d.ts +0 -27
- package/lib/action/directive/state/action.value.stream.directive.d.ts +0 -23
- package/lib/action/directive/state/action.value.trigger.directive.d.ts +0 -39
- package/lib/action/directive/state/action.value.trigger.instance.d.ts +0 -45
- package/lib/action/directive/state/action.working.directive.d.ts +0 -17
- package/lib/action/directive/state/index.d.ts +0 -16
- package/lib/action/index.d.ts +0 -10
- package/lib/auth/auth.module.d.ts +0 -16
- package/lib/auth/auth.providers.d.ts +0 -12
- package/lib/auth/auth.role.any.directive.d.ts +0 -15
- package/lib/auth/auth.role.has.directive.d.ts +0 -15
- package/lib/auth/auth.role.not.directive.d.ts +0 -15
- package/lib/auth/auth.state.providers.d.ts +0 -7
- package/lib/auth/auth.state.service.d.ts +0 -11
- package/lib/auth/auth.user.d.ts +0 -28
- package/lib/auth/index.d.ts +0 -11
- package/lib/auth/router/auth.router.d.ts +0 -10
- package/lib/auth/router/auth.router.providers.d.ts +0 -18
- package/lib/auth/router/auth.router.service.d.ts +0 -46
- package/lib/auth/router/index.d.ts +0 -5
- package/lib/auth/router/provider/uirouter/auth.hook.d.ts +0 -18
- package/lib/auth/router/provider/uirouter/hook.d.ts +0 -51
- package/lib/auth/router/provider/uirouter/index.d.ts +0 -5
- package/lib/auth/router/provider/uirouter/redirect.d.ts +0 -9
- package/lib/auth/router/provider/uirouter/role.hook.d.ts +0 -44
- package/lib/auth/router/provider/uirouter/state.hook.d.ts +0 -31
- package/lib/auth/router/state/auth.router.state.providers.d.ts +0 -19
- package/lib/auth/router/state/effect/auth.router.state.effect.d.ts +0 -28
- package/lib/auth/router/state/effect/index.d.ts +0 -1
- package/lib/auth/router/state/index.d.ts +0 -2
- package/lib/auth/service/auth.service.d.ts +0 -46
- package/lib/auth/service/auth.service.rxjs.d.ts +0 -19
- package/lib/auth/service/index.d.ts +0 -2
- package/lib/auth/state/action/auth.action.d.ts +0 -12
- package/lib/auth/state/action/index.d.ts +0 -11
- package/lib/auth/state/action/user.action.d.ts +0 -34
- package/lib/auth/state/effect/auth.effect.d.ts +0 -28
- package/lib/auth/state/index.d.ts +0 -12
- package/lib/auth/state/reducer/index.d.ts +0 -29
- package/lib/auth/state/reducer/user.reducer.d.ts +0 -11
- package/lib/auth/state/state.d.ts +0 -5
- package/lib/button/action/action.button.directive.d.ts +0 -14
- package/lib/button/action/action.button.trigger.directive.d.ts +0 -16
- package/lib/button/action/index.d.ts +0 -2
- package/lib/button/button.d.ts +0 -113
- package/lib/button/button.directive.d.ts +0 -62
- package/lib/button/button.loading.directive.d.ts +0 -18
- package/lib/button/button.module.d.ts +0 -19
- package/lib/button/index.d.ts +0 -6
- package/lib/button/router/button.segue.directive.d.ts +0 -14
- package/lib/button/router/index.d.ts +0 -1
- package/lib/context/context.d.ts +0 -42
- package/lib/context/context.directive.d.ts +0 -13
- package/lib/context/context.module.d.ts +0 -10
- package/lib/context/context.providers.d.ts +0 -7
- package/lib/context/context.service.d.ts +0 -14
- package/lib/context/index.d.ts +0 -6
- package/lib/context/state/action/data.action.d.ts +0 -13
- package/lib/context/state/action/index.d.ts +0 -6
- package/lib/context/state/effect/index.d.ts +0 -24
- package/lib/context/state/index.d.ts +0 -12
- package/lib/context/state/reducer/data.reducer.d.ts +0 -13
- package/lib/context/state/reducer/index.d.ts +0 -34
- package/lib/context/state/state.d.ts +0 -9
- package/lib/environment/environment.d.ts +0 -21
- package/lib/environment/environment.providers.d.ts +0 -8
- package/lib/environment/environment.service.d.ts +0 -17
- package/lib/environment/index.d.ts +0 -3
- package/lib/filter/filter.abstract.connector.directive.d.ts +0 -15
- package/lib/filter/filter.abstract.source.directive.d.ts +0 -37
- package/lib/filter/filter.connect.source.directive.d.ts +0 -13
- package/lib/filter/filter.connector.directive.d.ts +0 -9
- package/lib/filter/filter.content.d.ts +0 -10
- package/lib/filter/filter.map.connector.directive.d.ts +0 -14
- package/lib/filter/filter.map.directive.d.ts +0 -12
- package/lib/filter/filter.map.instance.directive.d.ts +0 -16
- package/lib/filter/filter.map.source.directive.d.ts +0 -23
- package/lib/filter/filter.module.d.ts +0 -12
- package/lib/filter/filter.preset.d.ts +0 -29
- package/lib/filter/filter.source.directive.d.ts +0 -9
- package/lib/filter/index.d.ts +0 -12
- package/lib/index.d.ts +0 -14
- package/lib/injection/index.d.ts +0 -13
- package/lib/injection/injection.array.component.d.ts +0 -11
- package/lib/injection/injection.array.d.ts +0 -12
- package/lib/injection/injection.component.d.ts +0 -19
- package/lib/injection/injection.component.module.d.ts +0 -16
- package/lib/injection/injection.context.d.ts +0 -39
- package/lib/injection/injection.context.directive.d.ts +0 -26
- package/lib/injection/injection.context.forward.directive.d.ts +0 -15
- package/lib/injection/injection.d.ts +0 -51
- package/lib/injection/injection.directive.d.ts +0 -18
- package/lib/injection/injection.instance.d.ts +0 -32
- package/lib/injection/injection.rxjs.d.ts +0 -10
- package/lib/injection/injection.util.d.ts +0 -9
- package/lib/injection/injector.d.ts +0 -10
- package/lib/ngrx/index.d.ts +0 -1
- package/lib/ngrx/store.lockset.d.ts +0 -36
- package/lib/pipe/async/asobservable.pipe.d.ts +0 -12
- package/lib/pipe/async/async.pipe.module.d.ts +0 -10
- package/lib/pipe/async/index.d.ts +0 -2
- package/lib/pipe/date/date.pipe.module.d.ts +0 -43
- package/lib/pipe/date/datedayrange.pipe.d.ts +0 -9
- package/lib/pipe/date/datedaytimerange.pipe.d.ts +0 -9
- package/lib/pipe/date/datedistance.pipe.d.ts +0 -8
- package/lib/pipe/date/dateformatdistance.pipe.d.ts +0 -12
- package/lib/pipe/date/datefromtoformat.pipe.d.ts +0 -13
- package/lib/pipe/date/daterangedistance.pipe.d.ts +0 -9
- package/lib/pipe/date/datetimerange.pipe.d.ts +0 -9
- package/lib/pipe/date/datetimerangeonly.pipe.d.ts +0 -9
- package/lib/pipe/date/datetimerangeonlydistance.pipe.d.ts +0 -9
- package/lib/pipe/date/index.d.ts +0 -17
- package/lib/pipe/date/minutesstring.pipe.d.ts +0 -8
- package/lib/pipe/date/systemdatetotargetdate.pipe.d.ts +0 -12
- package/lib/pipe/date/targetdatetosystemdate.pipe.d.ts +0 -12
- package/lib/pipe/date/timedistance.pipe.d.ts +0 -13
- package/lib/pipe/date/timezoneabbreviation.pipe.d.ts +0 -12
- package/lib/pipe/date/tojsdate.pipe.d.ts +0 -10
- package/lib/pipe/date/tominutes.pipe.d.ts +0 -7
- package/lib/pipe/index.d.ts +0 -5
- package/lib/pipe/misc/index.d.ts +0 -2
- package/lib/pipe/misc/misc.pipe.module.d.ts +0 -12
- package/lib/pipe/misc/prettyjson.pipe.d.ts +0 -9
- package/lib/pipe/pipe.module.d.ts +0 -15
- package/lib/pipe/value/cuttext.pipe.d.ts +0 -11
- package/lib/pipe/value/dollar.pipe.d.ts +0 -13
- package/lib/pipe/value/getvalue.pipe.d.ts +0 -19
- package/lib/pipe/value/index.d.ts +0 -4
- package/lib/pipe/value/value.pipe.module.d.ts +0 -17
- package/lib/router/anchor/anchor.d.ts +0 -71
- package/lib/router/anchor/anchor.directive.d.ts +0 -30
- package/lib/router/anchor/clickable.d.ts +0 -20
- package/lib/router/anchor/index.d.ts +0 -4
- package/lib/router/anchor/mousable.d.ts +0 -9
- package/lib/router/auth/hook/id.hook.d.ts +0 -44
- package/lib/router/auth/hook/index.d.ts +0 -2
- package/lib/router/auth/hook/uid.hook.d.ts +0 -41
- package/lib/router/auth/index.d.ts +0 -1
- package/lib/router/index.d.ts +0 -5
- package/lib/router/model/id.param.redirect.d.ts +0 -51
- package/lib/router/model/index.d.ts +0 -6
- package/lib/router/model/model.module.d.ts +0 -16
- package/lib/router/model/model.router.d.ts +0 -35
- package/lib/router/model/model.router.id.directive.d.ts +0 -30
- package/lib/router/model/model.router.key.directive.d.ts +0 -32
- package/lib/router/model/model.router.uid.directive.d.ts +0 -15
- package/lib/router/router/index.d.ts +0 -4
- package/lib/router/router/provider/angular/angular.router.service.d.ts +0 -24
- package/lib/router/router/provider/angular/angular.router.service.module.d.ts +0 -8
- package/lib/router/router/provider/angular/index.d.ts +0 -2
- package/lib/router/router/provider/index.d.ts +0 -2
- package/lib/router/router/provider/uirouter/index.d.ts +0 -3
- package/lib/router/router/provider/uirouter/uirouter.router.service.d.ts +0 -32
- package/lib/router/router/provider/uirouter/uirouter.router.service.module.d.ts +0 -11
- package/lib/router/router/provider/uirouter/uirouter.router.service.providers.d.ts +0 -7
- package/lib/router/router/service/index.d.ts +0 -5
- package/lib/router/router/service/router.go.d.ts +0 -14
- package/lib/router/router/service/router.service.d.ts +0 -49
- package/lib/router/router/service/router.service.rxjs.d.ts +0 -27
- package/lib/router/router/service/router.service.util.d.ts +0 -26
- package/lib/router/router/service/router.transition.service.d.ts +0 -11
- package/lib/router/router/transition/index.d.ts +0 -4
- package/lib/router/router/transition/transition.d.ts +0 -13
- package/lib/router/router/transition/transition.directive.d.ts +0 -13
- package/lib/router/router/transition/transition.rxjs.d.ts +0 -67
- package/lib/router/router/transition/transition.watcher.directive.d.ts +0 -16
- package/lib/router/router/util/index.d.ts +0 -2
- package/lib/router/router/util/route.default.d.ts +0 -20
- package/lib/router/router/util/route.reader.d.ts +0 -56
- package/lib/router/segue.d.ts +0 -38
- package/lib/storage/index.d.ts +0 -8
- package/lib/storage/storage.accessor.d.ts +0 -35
- package/lib/storage/storage.accessor.simple.d.ts +0 -80
- package/lib/storage/storage.accessor.simple.factory.d.ts +0 -17
- package/lib/storage/storage.accessor.string.d.ts +0 -16
- package/lib/storage/storage.di.d.ts +0 -3
- package/lib/storage/storage.object.localstorage.d.ts +0 -16
- package/lib/storage/storage.object.memory.d.ts +0 -9
- package/lib/storage/storage.providers.d.ts +0 -13
- package/lib/subscription/index.d.ts +0 -1
- package/lib/subscription/subscription.directive.d.ts +0 -25
- package/lib/util/index.d.ts +0 -2
- package/lib/util/input.d.ts +0 -6
- package/lib/util/view.d.ts +0 -61
- package/lib/view/if.directive.d.ts +0 -18
- package/lib/view/index.d.ts +0 -1
|
@@ -1,286 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { ComponentStore } from '@ngrx/component-store';
|
|
3
|
-
import { distinctUntilChanged, filter, map, shareReplay, switchMap, startWith, of } from 'rxjs';
|
|
4
|
-
import { BooleanStringKeyArrayUtility } from '@dereekb/util';
|
|
5
|
-
import { idleLoadingState, errorResult, filterMaybe, LockSet, scanCount, successResult, beginLoading } from '@dereekb/rxjs';
|
|
6
|
-
import { DbxActionState, DEFAULT_ACTION_DISABLED_KEY, isIdleActionState, loadingStateTypeForActionState } from './action';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
export function isActionContextEnabled(state) {
|
|
9
|
-
return BooleanStringKeyArrayUtility.isFalse(state.disabled);
|
|
10
|
-
}
|
|
11
|
-
export function isActionContextDisabled(state) {
|
|
12
|
-
return BooleanStringKeyArrayUtility.isTrue(state.disabled);
|
|
13
|
-
}
|
|
14
|
-
export function isDisabledActionContextState(state) {
|
|
15
|
-
return isIdleActionState(state.actionState) && isActionContextDisabled(state);
|
|
16
|
-
}
|
|
17
|
-
export function isWorkingActionState(actionState) {
|
|
18
|
-
return !isIdleActionState(actionState);
|
|
19
|
-
}
|
|
20
|
-
export function canTriggerActionState(actionState) {
|
|
21
|
-
return actionState !== DbxActionState.DISABLED && isIdleActionState(actionState);
|
|
22
|
-
}
|
|
23
|
-
export function canTriggerAction(state) {
|
|
24
|
-
return isActionContextEnabled(state) && isIdleActionState(state.actionState);
|
|
25
|
-
}
|
|
26
|
-
export function canReadyValue(state) {
|
|
27
|
-
return state.actionState === DbxActionState.TRIGGERED;
|
|
28
|
-
}
|
|
29
|
-
export function actionContextIsModifiedAndCanTrigger(state) {
|
|
30
|
-
// console.log('check: ', state, state.isModified, canTriggerAction(state));
|
|
31
|
-
return state.isModified && canTriggerAction(state);
|
|
32
|
-
}
|
|
33
|
-
export function actionContextHasNoErrorAndIsModifiedAndCanTrigger(state) {
|
|
34
|
-
return !state.error && actionContextIsModifiedAndCanTrigger(state);
|
|
35
|
-
}
|
|
36
|
-
export function loadingStateForActionContextState(state) {
|
|
37
|
-
let loadingState;
|
|
38
|
-
switch (state.actionState) {
|
|
39
|
-
case DbxActionState.RESOLVED:
|
|
40
|
-
loadingState = successResult(state.result);
|
|
41
|
-
break;
|
|
42
|
-
case DbxActionState.REJECTED:
|
|
43
|
-
loadingState = errorResult(state.error);
|
|
44
|
-
break;
|
|
45
|
-
case DbxActionState.IDLE:
|
|
46
|
-
case DbxActionState.DISABLED:
|
|
47
|
-
loadingState = idleLoadingState();
|
|
48
|
-
break;
|
|
49
|
-
default:
|
|
50
|
-
loadingState = beginLoading(state.workProgress != null ? { loadingProgress: state.workProgress } : undefined);
|
|
51
|
-
break;
|
|
52
|
-
}
|
|
53
|
-
return loadingState;
|
|
54
|
-
}
|
|
55
|
-
export function loadingStateTypeForActionContextState(state) {
|
|
56
|
-
return loadingStateTypeForActionState(state.actionState);
|
|
57
|
-
}
|
|
58
|
-
const INITIAL_STATE = {
|
|
59
|
-
isModified: false,
|
|
60
|
-
actionState: DbxActionState.IDLE
|
|
61
|
-
};
|
|
62
|
-
export class ActionContextStore extends ComponentStore {
|
|
63
|
-
lockSet = new LockSet();
|
|
64
|
-
constructor() {
|
|
65
|
-
super({ ...INITIAL_STATE });
|
|
66
|
-
this.lockSet.addLock('working', this.isWorking$);
|
|
67
|
-
}
|
|
68
|
-
// MARK: Accessors
|
|
69
|
-
actionState$ = this.state$.pipe(map((x) => (isDisabledActionContextState(x) ? DbxActionState.DISABLED : x.actionState)), shareReplay(1));
|
|
70
|
-
/**
|
|
71
|
-
* Returns the current disabled reasons/keys.
|
|
72
|
-
*/
|
|
73
|
-
disabledKeys$ = this.state$.pipe(map((x) => [...(x.disabled ?? [])]), distinctUntilChanged(), shareReplay(1));
|
|
74
|
-
/**
|
|
75
|
-
* Current value of the state.
|
|
76
|
-
*/
|
|
77
|
-
currentValue$ = this.state$.pipe(map((x) => x.value));
|
|
78
|
-
/**
|
|
79
|
-
* Maps the current state to true or not when the action state changes to/from disabled.
|
|
80
|
-
*/
|
|
81
|
-
isDisabled$ = this.state$.pipe(map(isDisabledActionContextState), distinctUntilChanged(), shareReplay(1));
|
|
82
|
-
/**
|
|
83
|
-
* Pipes when idle but modified.
|
|
84
|
-
*/
|
|
85
|
-
isModified$ = this.afterDistinctBoolean((x) => x.isModified);
|
|
86
|
-
/**
|
|
87
|
-
* Pipes true when idle.
|
|
88
|
-
*/
|
|
89
|
-
idle$ = this.actionState$.pipe(map((x) => x === DbxActionState.IDLE), distinctUntilChanged(), shareReplay(1));
|
|
90
|
-
/**
|
|
91
|
-
* Pipes true when triggered.
|
|
92
|
-
*/
|
|
93
|
-
triggered$ = this.afterDistinctActionState(DbxActionState.TRIGGERED, () => true);
|
|
94
|
-
/**
|
|
95
|
-
* Pipes the readied value on ValueReady.
|
|
96
|
-
*/
|
|
97
|
-
valueReady$ = this.afterDistinctActionState(DbxActionState.VALUE_READY, (x) => x.value);
|
|
98
|
-
/**
|
|
99
|
-
* Pipes the working progress on the working state.
|
|
100
|
-
*/
|
|
101
|
-
workProgress$ = this.state$.pipe(map((x) => x.workProgress), distinctUntilChanged(), shareReplay(1));
|
|
102
|
-
/**
|
|
103
|
-
* Pipes the error on the rejection state.
|
|
104
|
-
*/
|
|
105
|
-
rejected$ = this.afterDistinctActionState(DbxActionState.REJECTED, (x) => x.error);
|
|
106
|
-
/**
|
|
107
|
-
* Pipes the result when the ActionState becomes rejected.
|
|
108
|
-
*/
|
|
109
|
-
rejectedPair$ = this.afterDistinctActionState(DbxActionState.RESOLVED, (x) => ({ value: x.value, error: x.error }));
|
|
110
|
-
/**
|
|
111
|
-
* Pipes the result when the ActionState becomes working.
|
|
112
|
-
*/
|
|
113
|
-
working$ = this.afterDistinctActionState(DbxActionState.WORKING, () => true);
|
|
114
|
-
/**
|
|
115
|
-
* Whether or not it is currently in a working state.
|
|
116
|
-
*/
|
|
117
|
-
isWorking$ = this.afterDistinctBoolean((x) => isWorkingActionState(x.actionState));
|
|
118
|
-
/**
|
|
119
|
-
* Pipes the current work or work progress.
|
|
120
|
-
*/
|
|
121
|
-
isWorkingOrWorkProgress$ = this.isWorking$.pipe(switchMap((x) => {
|
|
122
|
-
let obs;
|
|
123
|
-
if (x) {
|
|
124
|
-
obs = this.workProgress$.pipe(filter((x) => x != null), startWith(x));
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
obs = of(x);
|
|
128
|
-
}
|
|
129
|
-
return obs;
|
|
130
|
-
}), distinctUntilChanged(), shareReplay(1));
|
|
131
|
-
/**
|
|
132
|
-
* Pipes the current error.
|
|
133
|
-
*/
|
|
134
|
-
error$ = this.state$.pipe(map((x) => x.error), distinctUntilChanged(), shareReplay(1));
|
|
135
|
-
/**
|
|
136
|
-
* Pipes the result when the ActionState becomes success.
|
|
137
|
-
*/
|
|
138
|
-
success$ = this.afterDistinctActionState(DbxActionState.RESOLVED, (x) => x.result);
|
|
139
|
-
/**
|
|
140
|
-
* Pipes the result when the ActionState becomes success.
|
|
141
|
-
*/
|
|
142
|
-
successPair$ = this.afterDistinctActionState(DbxActionState.RESOLVED, (x) => ({ value: x.value, result: x.result }));
|
|
143
|
-
/**
|
|
144
|
-
* Whether or not it is currently in a success state.
|
|
145
|
-
*/
|
|
146
|
-
isSuccess$ = this.afterDistinctBoolean((x) => x.actionState === DbxActionState.RESOLVED);
|
|
147
|
-
/**
|
|
148
|
-
* Returns a loading state based on the current state.
|
|
149
|
-
*/
|
|
150
|
-
loadingState$ = this.afterDistinctLoadingStateTypeChange().pipe(switchMap((x) => {
|
|
151
|
-
const base = loadingStateForActionContextState(x);
|
|
152
|
-
let obs;
|
|
153
|
-
if (base.loading === true) {
|
|
154
|
-
obs = this.workProgress$.pipe(filter((x) => x != null), map((loadingProgress) => ({ ...base, loadingProgress })), startWith(base));
|
|
155
|
-
}
|
|
156
|
-
else {
|
|
157
|
-
obs = of(base);
|
|
158
|
-
}
|
|
159
|
-
return obs;
|
|
160
|
-
}), shareReplay(1));
|
|
161
|
-
/**
|
|
162
|
-
* Returns the current LoadingStateType based on the current state.
|
|
163
|
-
*/
|
|
164
|
-
loadingStateType$ = this.state$.pipe(map((x) => loadingStateTypeForActionContextState(x)), distinctUntilChanged(), shareReplay(1));
|
|
165
|
-
/**
|
|
166
|
-
* Number of errors since last success.
|
|
167
|
-
*/
|
|
168
|
-
errorCountSinceLastSuccess$ = this.isSuccess$.pipe(startWith(false), distinctUntilChanged(), switchMap(() => this.error$.pipe(filterMaybe(), scanCount(), startWith(0))), shareReplay(1));
|
|
169
|
-
/**
|
|
170
|
-
* Whether or not the state can be triggered.
|
|
171
|
-
*/
|
|
172
|
-
canTrigger$ = this.state$.pipe(map(canTriggerAction), distinctUntilChanged(), shareReplay(1));
|
|
173
|
-
/**
|
|
174
|
-
* Pipe that maps whether or not this is modified and can be triggered.
|
|
175
|
-
*
|
|
176
|
-
* Updates every state update instead of when the value changes.
|
|
177
|
-
*/
|
|
178
|
-
isModifiedAndCanTriggerUpdates$ = this.state$.pipe(map((x) => actionContextIsModifiedAndCanTrigger(x), shareReplay(1)));
|
|
179
|
-
/**
|
|
180
|
-
* Whether or not it can be triggered and modified.
|
|
181
|
-
*/
|
|
182
|
-
isModifiedAndCanTrigger$ = this.isModifiedAndCanTriggerUpdates$.pipe(distinctUntilChanged());
|
|
183
|
-
hasNoErrorAndIsModifiedAndCanTrigger$ = this.state$.pipe(map((x) => actionContextHasNoErrorAndIsModifiedAndCanTrigger(x)), distinctUntilChanged(), shareReplay(1));
|
|
184
|
-
// MARK: State Changes
|
|
185
|
-
/**
|
|
186
|
-
* Adds a disabled reason.
|
|
187
|
-
*/
|
|
188
|
-
disable = this.updater((state, key) => ({
|
|
189
|
-
...state,
|
|
190
|
-
disabled: BooleanStringKeyArrayUtility.insert(state.disabled, key ?? DEFAULT_ACTION_DISABLED_KEY)
|
|
191
|
-
}));
|
|
192
|
-
/**
|
|
193
|
-
* Removes a disabled reason.
|
|
194
|
-
*/
|
|
195
|
-
enable = this.updater((state, key) => ({
|
|
196
|
-
...state,
|
|
197
|
-
disabled: BooleanStringKeyArrayUtility.remove(state.disabled, key ?? DEFAULT_ACTION_DISABLED_KEY)
|
|
198
|
-
}));
|
|
199
|
-
/**
|
|
200
|
-
* Triggers the modified state, if not disabled.
|
|
201
|
-
*
|
|
202
|
-
* Equivalent to calling setIsModified() with opposite input.
|
|
203
|
-
*/
|
|
204
|
-
setIsSame = this.updater(updateIsSameOnActionContextState);
|
|
205
|
-
/**
|
|
206
|
-
* Triggers the modified state, if not disabled.
|
|
207
|
-
*/
|
|
208
|
-
setIsModified = this.updater(updateIsModifiedOnActionContextState);
|
|
209
|
-
/**
|
|
210
|
-
* Triggers the action if the state is currently not idle. The current state is cleared, but the error is retained (as we may need the error from the previous attempt).
|
|
211
|
-
*
|
|
212
|
-
* Will not fire if the action is disabled.
|
|
213
|
-
*/
|
|
214
|
-
trigger = this.updater((state) => (canTriggerAction(state) ? { isModified: state.isModified, actionState: DbxActionState.TRIGGERED, error: state.error, value: undefined } : state));
|
|
215
|
-
/**
|
|
216
|
-
* Updates the value, setting value ready. The current result is cleared.
|
|
217
|
-
*/
|
|
218
|
-
readyValue = this.updater((state, value) => (canReadyValue(state) ? { ...state, actionState: DbxActionState.VALUE_READY, value, result: undefined } : state));
|
|
219
|
-
/**
|
|
220
|
-
* Notifys the context that the action is in progress.
|
|
221
|
-
*/
|
|
222
|
-
startWorking = this.updater((state) => ({ ...state, actionState: DbxActionState.WORKING, workProgress: null }));
|
|
223
|
-
/**
|
|
224
|
-
* Updates the working progress.
|
|
225
|
-
*/
|
|
226
|
-
setWorkProgress = this.updater((state, workProgress) => ({ ...state, workProgress }));
|
|
227
|
-
/**
|
|
228
|
-
* Triggers rejection of the action. The value is cleared.
|
|
229
|
-
*/
|
|
230
|
-
reject = this.updater((state, error) => ({
|
|
231
|
-
isModified: state.isModified,
|
|
232
|
-
actionState: DbxActionState.REJECTED,
|
|
233
|
-
error,
|
|
234
|
-
errorCount: (state.errorCount ?? 0) + 1,
|
|
235
|
-
disabled: state.disabled
|
|
236
|
-
}));
|
|
237
|
-
/**
|
|
238
|
-
* Updates the state to success, and optionally sets a result.
|
|
239
|
-
*
|
|
240
|
-
* Clears modified state, and any errors.
|
|
241
|
-
*/
|
|
242
|
-
resolve = this.updater((state, result) => ({ isModified: false, actionState: DbxActionState.RESOLVED, value: state.value, result, error: undefined, disabled: state.disabled }));
|
|
243
|
-
/**
|
|
244
|
-
* Completely resets the store.
|
|
245
|
-
*/
|
|
246
|
-
reset = this.updater(() => ({ ...INITIAL_STATE }));
|
|
247
|
-
// MARK: Utility
|
|
248
|
-
afterDistinctBoolean(fromState) {
|
|
249
|
-
return this.state$.pipe(map((x) => fromState(x)), distinctUntilChanged(), shareReplay(1));
|
|
250
|
-
}
|
|
251
|
-
afterDistinctActionState(actionState, fromState) {
|
|
252
|
-
return this.afterDistinctActionStateChange().pipe(filter((x) => x.actionState === actionState), // Only pipe when the new action state matches.
|
|
253
|
-
map((x) => fromState(x)), shareReplay(1));
|
|
254
|
-
}
|
|
255
|
-
afterDistinctActionStateChange() {
|
|
256
|
-
return this.state$.pipe(map((x) => [x, x.actionState]), distinctUntilChanged((a, b) => a?.[1] === b?.[1]), // Filter out when the state remains the same.
|
|
257
|
-
map((x) => x[0]), shareReplay(1));
|
|
258
|
-
}
|
|
259
|
-
afterDistinctLoadingStateTypeChange() {
|
|
260
|
-
return this.state$.pipe(map((x) => [x, loadingStateTypeForActionContextState(x)]), distinctUntilChanged((a, b) => a?.[1] === b?.[1]), // Filter out when the loading state remains the same.
|
|
261
|
-
map((x) => x[0]), shareReplay(1));
|
|
262
|
-
}
|
|
263
|
-
// MARK: Cleanup
|
|
264
|
-
ngOnDestroy() {
|
|
265
|
-
// Wait for any actions to complete before destroying.
|
|
266
|
-
this.lockSet.onNextUnlock(() => {
|
|
267
|
-
super.ngOnDestroy();
|
|
268
|
-
}, 2000);
|
|
269
|
-
}
|
|
270
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionContextStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
271
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionContextStore });
|
|
272
|
-
}
|
|
273
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionContextStore, decorators: [{
|
|
274
|
-
type: Injectable
|
|
275
|
-
}], ctorParameters: () => [] });
|
|
276
|
-
function updateIsSameOnActionContextState(state, isSame) {
|
|
277
|
-
return updateIsModifiedOnActionContextState(state, isSame == null ? false : !isSame);
|
|
278
|
-
}
|
|
279
|
-
function updateIsModifiedOnActionContextState(state, isModified) {
|
|
280
|
-
return {
|
|
281
|
-
...state,
|
|
282
|
-
actionState: state.actionState === DbxActionState.RESOLVED ? DbxActionState.IDLE : state.actionState, // Set to idle from success.
|
|
283
|
-
isModified: isModified ?? true // if isModified is not input, default it to true
|
|
284
|
-
};
|
|
285
|
-
}
|
|
286
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLnN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWNvcmUvc3JjL2xpYi9hY3Rpb24vYWN0aW9uLnN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBYyxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RyxPQUFPLEVBQXlCLDRCQUE0QixFQUF3QixNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBQW9CLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQWdCLE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1SixPQUFPLEVBQStDLGNBQWMsRUFBNEUsMkJBQTJCLEVBQUUsaUJBQWlCLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBRWpQLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxLQUF5QjtJQUM5RCxPQUFPLDRCQUE0QixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVELE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxLQUF5QjtJQUMvRCxPQUFPLDRCQUE0QixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELE1BQU0sVUFBVSw0QkFBNEIsQ0FBQyxLQUF5QjtJQUNwRSxPQUFPLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoRixDQUFDO0FB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Q0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsc0RBQXNEO1FBQ3pHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBNkIsQ0FBQyxFQUM1QyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztJQUNKLENBQUM7SUFFRCxnQkFBZ0I7SUFDUCxXQUFXO1FBQ2xCLHNEQUFzRDtRQUN0RCxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUU7WUFDN0IsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3RCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNYLENBQUM7d0dBeFRVLGtCQUFrQjs0R0FBbEIsa0JBQWtCOzs0RkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVOztBQTRUWCxTQUFTLGdDQUFnQyxDQUFPLEtBQStCLEVBQUUsTUFBdUI7SUFDdEcsT0FBTyxvQ0FBb0MsQ0FBQyxLQUFLLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZGLENBQUM7QUFFRCxTQUFTLG9DQUFvQyxDQUFPLEtBQStCLEVBQUUsVUFBMkI7SUFDOUcsT0FBTztRQUNMLEdBQUcsS0FBSztRQUNSLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxLQUFLLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsNEJBQTRCO1FBQ2xJLFVBQVUsRUFBRyxVQUFzQixJQUFJLElBQUksQ0FBQyxpREFBaUQ7S0FDOUYsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudFN0b3JlIH0gZnJvbSAnQG5ncngvY29tcG9uZW50LXN0b3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCwgc3RhcnRXaXRoLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQm9vbGVhblN0cmluZ0tleUFycmF5LCBCb29sZWFuU3RyaW5nS2V5QXJyYXlVdGlsaXR5LCBNYXliZSwgUmVhZGFibGVFcnJvciB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgTG9hZGluZ1N0YXRlVHlwZSwgaWRsZUxvYWRpbmdTdGF0ZSwgZXJyb3JSZXN1bHQsIGZpbHRlck1heWJlLCBMb2FkaW5nU3RhdGUsIExvY2tTZXQsIHNjYW5Db3VudCwgc3VjY2Vzc1Jlc3VsdCwgYmVnaW5Mb2FkaW5nIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBEYnhBY3Rpb25EaXNhYmxlZEtleSwgRGJ4QWN0aW9uUmVqZWN0ZWRQYWlyLCBEYnhBY3Rpb25TdGF0ZSwgRGJ4QWN0aW9uU3VjY2Vzc1BhaXIsIERieEFjdGlvbldvcmtPcldvcmtQcm9ncmVzcywgRGJ4QWN0aW9uV29ya1Byb2dyZXNzLCBERUZBVUxUX0FDVElPTl9ESVNBQkxFRF9LRVksIGlzSWRsZUFjdGlvblN0YXRlLCBsb2FkaW5nU3RhdGVUeXBlRm9yQWN0aW9uU3RhdGUgfSBmcm9tICcuL2FjdGlvbic7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0FjdGlvbkNvbnRleHRFbmFibGVkKHN0YXRlOiBBY3Rpb25Db250ZXh0U3RhdGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIEJvb2xlYW5TdHJpbmdLZXlBcnJheVV0aWxpdHkuaXNGYWxzZShzdGF0ZS5kaXNhYmxlZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0FjdGlvbkNvbnRleHREaXNhYmxlZChzdGF0ZTogQWN0aW9uQ29udGV4dFN0YXRlKTogYm9vbGVhbiB7XG4gIHJldHVybiBCb29sZWFuU3RyaW5nS2V5QXJyYXlVdGlsaXR5LmlzVHJ1ZShzdGF0ZS5kaXNhYmxlZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Rpc2FibGVkQWN0aW9uQ29udGV4dFN0YXRlKHN0YXRlOiBBY3Rpb25Db250ZXh0U3RhdGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzSWRsZUFjdGlvblN0YXRlKHN0YXRlLmFjdGlvblN0YXRlKSAmJiBpc0FjdGlvbkNvbnRleHREaXNhYmxlZChzdGF0ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1dvcmtpbmdBY3Rpb25TdGF0ZShhY3Rpb25TdGF0ZTogRGJ4QWN0aW9uU3RhdGUpOiBib29sZWFuIHtcbiAgcmV0dXJuICFpc0lkbGVBY3Rpb25TdGF0ZShhY3Rpb25TdGF0ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYW5UcmlnZ2VyQWN0aW9uU3RhdGUoYWN0aW9uU3RhdGU6IERieEFjdGlvblN0YXRlKTogYm9vbGVhbiB7XG4gIHJldHVybiBhY3Rpb25TdGF0ZSAhPT0gRGJ4QWN0aW9uU3RhdGUuRElTQUJMRUQgJiYgaXNJZGxlQWN0aW9uU3RhdGUoYWN0aW9uU3RhdGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FuVHJpZ2dlckFjdGlvbihzdGF0ZTogQWN0aW9uQ29udGV4dFN0YXRlKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc0FjdGlvbkNvbnRleHRFbmFibGVkKHN0YXRlKSAmJiBpc0lkbGVBY3Rpb25TdGF0ZShzdGF0ZS5hY3Rpb25TdGF0ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYW5SZWFkeVZhbHVlKHN0YXRlOiBBY3Rpb25Db250ZXh0U3RhdGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHN0YXRlLmFjdGlvblN0YXRlID09PSBEYnhBY3Rpb25TdGF0ZS5UUklHR0VSRUQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhY3Rpb25Db250ZXh0SXNNb2RpZmllZEFuZENhblRyaWdnZXIoc3RhdGU6IEFjdGlvbkNvbnRleHRTdGF0ZSk6IGJvb2xlYW4ge1xuICAvLyBjb25zb2xlLmxvZygnY2hlY2s6ICcsIHN0YXRlLCBzdGF0ZS5pc01vZGlmaWVkLCBjYW5UcmlnZ2VyQWN0aW9uKHN0YXRlKSk7XG4gIHJldHVybiBzdGF0ZS5pc01vZGlmaWVkICYmIGNhblRyaWdnZXJBY3Rpb24oc3RhdGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uQ29udGV4dEhhc05vRXJyb3JBbmRJc01vZGlmaWVkQW5kQ2FuVHJpZ2dlcihzdGF0ZTogQWN0aW9uQ29udGV4dFN0YXRlKTogYm9vbGVhbiB7XG4gIHJldHVybiAhc3RhdGUuZXJyb3IgJiYgYWN0aW9uQ29udGV4dElzTW9kaWZpZWRBbmRDYW5UcmlnZ2VyKHN0YXRlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRpbmdTdGF0ZUZvckFjdGlvbkNvbnRleHRTdGF0ZTxPID0gdW5rbm93bj4oc3RhdGU6IEFjdGlvbkNvbnRleHRTdGF0ZTx1bmtub3duLCBPPik6IExvYWRpbmdTdGF0ZTxPPiB7XG4gIGxldCBsb2FkaW5nU3RhdGU6IExvYWRpbmdTdGF0ZTxPPjtcblxuICBzd2l0Y2ggKHN0YXRlLmFjdGlvblN0YXRlKSB7XG4gICAgY2FzZSBEYnhBY3Rpb25TdGF0ZS5SRVNPTFZFRDpcbiAgICAgIGxvYWRpbmdTdGF0ZSA9IHN1Y2Nlc3NSZXN1bHQoc3RhdGUucmVzdWx0KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRGJ4QWN0aW9uU3RhdGUuUkVKRUNURUQ6XG4gICAgICBsb2FkaW5nU3RhdGUgPSBlcnJvclJlc3VsdChzdGF0ZS5lcnJvcik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIERieEFjdGlvblN0YXRlLklETEU6XG4gICAgY2FzZSBEYnhBY3Rpb25TdGF0ZS5ESVNBQkxFRDpcbiAgICAgIGxvYWRpbmdTdGF0ZSA9IGlkbGVMb2FkaW5nU3RhdGUoKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBsb2FkaW5nU3RhdGUgPSBiZWdpbkxvYWRpbmcoc3RhdGUud29ya1Byb2dyZXNzICE9IG51bGwgPyB7IGxvYWRpbmdQcm9ncmVzczogc3RhdGUud29ya1Byb2dyZXNzIH0gOiB1bmRlZmluZWQpO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gbG9hZGluZ1N0YXRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZGluZ1N0YXRlVHlwZUZvckFjdGlvbkNvbnRleHRTdGF0ZShzdGF0ZTogQWN0aW9uQ29udGV4dFN0YXRlKTogTG9hZGluZ1N0YXRlVHlwZSB7XG4gIHJldHVybiBsb2FkaW5nU3RhdGVUeXBlRm9yQWN0aW9uU3RhdGUoc3RhdGUuYWN0aW9uU3RhdGUpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkNvbnRleHRTdGF0ZTxUID0gdW5rbm93biwgTyA9IHVua25vd24+IHtcbiAgcmVhZG9ubHkgYWN0aW9uU3RhdGU6IERieEFjdGlvblN0YXRlO1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhpcyBhY3Rpb24gaXMgZmxhZ2dlZCBhcyBoYXZpbmcgYmVlbiBtb2RpZmllZC5cbiAgICovXG4gIHJlYWRvbmx5IGlzTW9kaWZpZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgd29ya2luZyBwcm9ncmVzcyBvZiB0aGUgYWN0aW9uLlxuICAgKlxuICAgKiBJcyByZXNldCB0byBudWxsIHdoZW4gdHJpZ2dlcmVkL3JlYWR5IHZhbHVlIGlzIHNldC5cbiAgICovXG4gIHJlYWRvbmx5IHdvcmtQcm9ncmVzcz86IE1heWJlPERieEFjdGlvbldvcmtQcm9ncmVzcz47XG4gIC8qKlxuICAgKiBWYWx1ZSB0aGF0IGlzIHNldCBhZnRlciBhIHRyaWdnZXJlZCBhY3Rpb24uIE5vdCB0byBiZSBjb25mdXNlZCB3aXRoIHJlc3VsdC5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlPzogTWF5YmU8VD47XG4gIC8qKlxuICAgKiBSZXNvbHZlZCByZXN1bHQgdmFsdWUuXG4gICAqL1xuICByZWFkb25seSByZXN1bHQ/OiBNYXliZTxPPjtcbiAgLyoqXG4gICAqIFJlamVjdGVkIGVycm9yLCBpZiBhdmFpbGFibGUuXG4gICAqL1xuICByZWFkb25seSBlcnJvcj86IE1heWJlPFJlYWRhYmxlRXJyb3I+O1xuICAvKipcbiAgICogQ3VycmVudCBkaXNhYmxlZCBzdGF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGRpc2FibGVkPzogQm9vbGVhblN0cmluZ0tleUFycmF5O1xuICAvKipcbiAgICogTnVtYmVyIG9mIGNvbnNlY3V0aXZlIGVycm9ycyB0aGF0IGhhdmUgb2NjdXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IGVycm9yQ291bnQ/OiBudW1iZXI7XG59XG5cbmNvbnN0IElOSVRJQUxfU1RBVEU6IEFjdGlvbkNvbnRleHRTdGF0ZSA9IHtcbiAgaXNNb2RpZmllZDogZmFsc2UsXG4gIGFjdGlvblN0YXRlOiBEYnhBY3Rpb25TdGF0ZS5JRExFXG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQWN0aW9uQ29udGV4dFN0b3JlPFQgPSB1bmtub3duLCBPID0gdW5rbm93bj4gZXh0ZW5kcyBDb21wb25lbnRTdG9yZTxBY3Rpb25Db250ZXh0U3RhdGU8VCwgTz4+IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcmVhZG9ubHkgbG9ja1NldCA9IG5ldyBMb2NrU2V0KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoeyAuLi5JTklUSUFMX1NUQVRFIH0gYXMgQWN0aW9uQ29udGV4dFN0YXRlPFQsIE8+KTtcbiAgICB0aGlzLmxvY2tTZXQuYWRkTG9jaygnd29ya2luZycsIHRoaXMuaXNXb3JraW5nJCk7XG4gIH1cblxuICAvLyBNQVJLOiBBY2Nlc3NvcnNcbiAgcmVhZG9ubHkgYWN0aW9uU3RhdGUkID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IChpc0Rpc2FibGVkQWN0aW9uQ29udGV4dFN0YXRlKHgpID8gRGJ4QWN0aW9uU3RhdGUuRElTQUJMRUQgOiB4LmFjdGlvblN0YXRlKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCBkaXNhYmxlZCByZWFzb25zL2tleXMuXG4gICAqL1xuICByZWFkb25seSBkaXNhYmxlZEtleXMkID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IFsuLi4oeC5kaXNhYmxlZCA/PyBbXSldKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLyoqXG4gICAqIEN1cnJlbnQgdmFsdWUgb2YgdGhlIHN0YXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgY3VycmVudFZhbHVlJDogT2JzZXJ2YWJsZTxNYXliZTxUPj4gPSB0aGlzLnN0YXRlJC5waXBlKG1hcCgoeCkgPT4geC52YWx1ZSkpO1xuXG4gIC8qKlxuICAgKiBNYXBzIHRoZSBjdXJyZW50IHN0YXRlIHRvIHRydWUgb3Igbm90IHdoZW4gdGhlIGFjdGlvbiBzdGF0ZSBjaGFuZ2VzIHRvL2Zyb20gZGlzYWJsZWQuXG4gICAqL1xuICByZWFkb25seSBpc0Rpc2FibGVkJCA9IHRoaXMuc3RhdGUkLnBpcGUobWFwKGlzRGlzYWJsZWRBY3Rpb25Db250ZXh0U3RhdGUpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgLyoqXG4gICAqIFBpcGVzIHdoZW4gaWRsZSBidXQgbW9kaWZpZWQuXG4gICAqL1xuICByZWFkb25seSBpc01vZGlmaWVkJCA9IHRoaXMuYWZ0ZXJEaXN0aW5jdEJvb2xlYW4oKHgpID0+IHguaXNNb2RpZmllZCk7XG5cbiAgLyoqXG4gICAqIFBpcGVzIHRydWUgd2hlbiBpZGxlLlxuICAgKi9cbiAgcmVhZG9ubHkgaWRsZSQgPSB0aGlzLmFjdGlvblN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geCA9PT0gRGJ4QWN0aW9uU3RhdGUuSURMRSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIC8qKlxuICAgKiBQaXBlcyB0cnVlIHdoZW4gdHJpZ2dlcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgdHJpZ2dlcmVkJCA9IHRoaXMuYWZ0ZXJEaXN0aW5jdEFjdGlvblN0YXRlKERieEFjdGlvblN0YXRlLlRSSUdHRVJFRCwgKCkgPT4gdHJ1ZSk7XG5cbiAgLyoqXG4gICAqIFBpcGVzIHRoZSByZWFkaWVkIHZhbHVlIG9uIFZhbHVlUmVhZHkuXG4gICAqL1xuICByZWFkb25seSB2YWx1ZVJlYWR5JDogT2JzZXJ2YWJsZTxUPiA9IHRoaXMuYWZ0ZXJEaXN0aW5jdEFjdGlvblN0YXRlKERieEFjdGlvblN0YXRlLlZBTFVFX1JFQURZLCAoeCkgPT4geC52YWx1ZSBhcyBUKTtcblxuICAvKipcbiAgICogUGlwZXMgdGhlIHdvcmtpbmcgcHJvZ3Jlc3Mgb24gdGhlIHdvcmtpbmcgc3RhdGUuXG4gICAqL1xuICByZWFkb25seSB3b3JrUHJvZ3Jlc3MkID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHgud29ya1Byb2dyZXNzKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLyoqXG4gICAqIFBpcGVzIHRoZSBlcnJvciBvbiB0aGUgcmVqZWN0aW9uIHN0YXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVqZWN0ZWQkID0gdGhpcy5hZnRlckRpc3RpbmN0QWN0aW9uU3RhdGUoRGJ4QWN0aW9uU3RhdGUuUkVKRUNURUQsICh4KSA9PiB4LmVycm9yKTtcblxuICAvKipcbiAgICogUGlwZXMgdGhlIHJlc3VsdCB3aGVuIHRoZSBBY3Rpb25TdGF0ZSBiZWNvbWVzIHJlamVjdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVqZWN0ZWRQYWlyJCA9IHRoaXMuYWZ0ZXJEaXN0aW5jdEFjdGlvblN0YXRlKERieEFjdGlvblN0YXRlLlJFU09MVkVELCAoeCkgPT4gKHsgdmFsdWU6IHgudmFsdWUsIGVycm9yOiB4LmVycm9yIH0pIGFzIERieEFjdGlvblJlamVjdGVkUGFpcjxUPik7XG5cbiAgLyoqXG4gICAqIFBpcGVzIHRoZSByZXN1bHQgd2hlbiB0aGUgQWN0aW9uU3RhdGUgYmVjb21lcyB3b3JraW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2luZyQgPSB0aGlzLmFmdGVyRGlzdGluY3RBY3Rpb25TdGF0ZShEYnhBY3Rpb25TdGF0ZS5XT1JLSU5HLCAoKSA9PiB0cnVlKTtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgaXQgaXMgY3VycmVudGx5IGluIGEgd29ya2luZyBzdGF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGlzV29ya2luZyQgPSB0aGlzLmFmdGVyRGlzdGluY3RCb29sZWFuKCh4KSA9PiBpc1dvcmtpbmdBY3Rpb25TdGF0ZSh4LmFjdGlvblN0YXRlKSk7XG5cbiAgLyoqXG4gICAqIFBpcGVzIHRoZSBjdXJyZW50IHdvcmsgb3Igd29yayBwcm9ncmVzcy5cbiAgICovXG4gIHJlYWRvbmx5IGlzV29ya2luZ09yV29ya1Byb2dyZXNzJCA9IHRoaXMuaXNXb3JraW5nJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoeCkgPT4ge1xuICAgICAgbGV0IG9iczogT2JzZXJ2YWJsZTxEYnhBY3Rpb25Xb3JrT3JXb3JrUHJvZ3Jlc3M+O1xuXG4gICAgICBpZiAoeCkge1xuICAgICAgICBvYnMgPSB0aGlzLndvcmtQcm9ncmVzcyQucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKHgpID0+IHggIT0gbnVsbCksXG4gICAgICAgICAgc3RhcnRXaXRoKHgpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYnMgPSBvZih4KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9icztcbiAgICB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLyoqXG4gICAqIFBpcGVzIHRoZSBjdXJyZW50IGVycm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgZXJyb3IkID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHguZXJyb3IpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICAvKipcbiAgICogUGlwZXMgdGhlIHJlc3VsdCB3aGVuIHRoZSBBY3Rpb25TdGF0ZSBiZWNvbWVzIHN1Y2Nlc3MuXG4gICAqL1xuICByZWFkb25seSBzdWNjZXNzJCA9IHRoaXMuYWZ0ZXJEaXN0aW5jdEFjdGlvblN0YXRlKERieEFjdGlvblN0YXRlLlJFU09MVkVELCAoeCkgPT4geC5yZXN1bHQpO1xuXG4gIC8qKlxuICAgKiBQaXBlcyB0aGUgcmVzdWx0IHdoZW4gdGhlIEFjdGlvblN0YXRlIGJlY29tZXMgc3VjY2Vzcy5cbiAgICovXG4gIHJlYWRvbmx5IHN1Y2Nlc3NQYWlyJCA9IHRoaXMuYWZ0ZXJEaXN0aW5jdEFjdGlvblN0YXRlKERieEFjdGlvblN0YXRlLlJFU09MVkVELCAoeCkgPT4gKHsgdmFsdWU6IHgudmFsdWUsIHJlc3VsdDogeC5yZXN1bHQgfSkgYXMgRGJ4QWN0aW9uU3VjY2Vzc1BhaXI8VCwgTz4pO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCBpdCBpcyBjdXJyZW50bHkgaW4gYSBzdWNjZXNzIHN0YXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNTdWNjZXNzJCA9IHRoaXMuYWZ0ZXJEaXN0aW5jdEJvb2xlYW4oKHgpID0+IHguYWN0aW9uU3RhdGUgPT09IERieEFjdGlvblN0YXRlLlJFU09MVkVEKTtcblxuICAvKipcbiAgICogUmV0dXJucyBhIGxvYWRpbmcgc3RhdGUgYmFzZWQgb24gdGhlIGN1cnJlbnQgc3RhdGUuXG4gICAqL1xuICByZWFkb25seSBsb2FkaW5nU3RhdGUkID0gdGhpcy5hZnRlckRpc3RpbmN0TG9hZGluZ1N0YXRlVHlwZUNoYW5nZSgpLnBpcGUoXG4gICAgc3dpdGNoTWFwKCh4KSA9PiB7XG4gICAgICBjb25zdCBiYXNlID0gbG9hZGluZ1N0YXRlRm9yQWN0aW9uQ29udGV4dFN0YXRlPE8+KHgpO1xuICAgICAgbGV0IG9iczogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8Tz4+O1xuXG4gICAgICBpZiAoYmFzZS5sb2FkaW5nID09PSB0cnVlKSB7XG4gICAgICAgIG9icyA9IHRoaXMud29ya1Byb2dyZXNzJC5waXBlKFxuICAgICAgICAgIGZpbHRlcigoeCkgPT4geCAhPSBudWxsKSxcbiAgICAgICAgICBtYXAoKGxvYWRpbmdQcm9ncmVzcykgPT4gKHsgLi4uYmFzZSwgbG9hZGluZ1Byb2dyZXNzIH0pKSxcbiAgICAgICAgICBzdGFydFdpdGgoYmFzZSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9icyA9IG9mKGJhc2UpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JzO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgTG9hZGluZ1N0YXRlVHlwZSBiYXNlZCBvbiB0aGUgY3VycmVudCBzdGF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGxvYWRpbmdTdGF0ZVR5cGUkID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IGxvYWRpbmdTdGF0ZVR5cGVGb3JBY3Rpb25Db250ZXh0U3RhdGUoeCkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIGVycm9ycyBzaW5jZSBsYXN0IHN1Y2Nlc3MuXG4gICAqL1xuICByZWFkb25seSBlcnJvckNvdW50U2luY2VMYXN0U3VjY2VzcyQgPSB0aGlzLmlzU3VjY2VzcyQucGlwZShcbiAgICBzdGFydFdpdGgoZmFsc2UpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZXJyb3IkLnBpcGUoZmlsdGVyTWF5YmUoKSwgc2NhbkNvdW50KCksIHN0YXJ0V2l0aCgwKSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoZSBzdGF0ZSBjYW4gYmUgdHJpZ2dlcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgY2FuVHJpZ2dlciQgPSB0aGlzLnN0YXRlJC5waXBlKG1hcChjYW5UcmlnZ2VyQWN0aW9uKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIC8qKlxuICAgKiBQaXBlIHRoYXQgbWFwcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGlzIG1vZGlmaWVkIGFuZCBjYW4gYmUgdHJpZ2dlcmVkLlxuICAgKlxuICAgKiBVcGRhdGVzIGV2ZXJ5IHN0YXRlIHVwZGF0ZSBpbnN0ZWFkIG9mIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMuXG4gICAqL1xuICByZWFkb25seSBpc01vZGlmaWVkQW5kQ2FuVHJpZ2dlclVwZGF0ZXMkID0gdGhpcy5zdGF0ZSQucGlwZShtYXAoKHgpID0+IGFjdGlvbkNvbnRleHRJc01vZGlmaWVkQW5kQ2FuVHJpZ2dlcih4KSwgc2hhcmVSZXBsYXkoMSkpKTtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgaXQgY2FuIGJlIHRyaWdnZXJlZCBhbmQgbW9kaWZpZWQuXG4gICAqL1xuICByZWFkb25seSBpc01vZGlmaWVkQW5kQ2FuVHJpZ2dlciQgPSB0aGlzLmlzTW9kaWZpZWRBbmRDYW5UcmlnZ2VyVXBkYXRlcyQucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcblxuICByZWFkb25seSBoYXNOb0Vycm9yQW5kSXNNb2RpZmllZEFuZENhblRyaWdnZXIkID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IGFjdGlvbkNvbnRleHRIYXNOb0Vycm9yQW5kSXNNb2RpZmllZEFuZENhblRyaWdnZXIoeCkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICAvLyBNQVJLOiBTdGF0ZSBDaGFuZ2VzXG4gIC8qKlxuICAgKiBBZGRzIGEgZGlzYWJsZWQgcmVhc29uLlxuICAgKi9cbiAgcmVhZG9ubHkgZGlzYWJsZSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGtleT86IHZvaWQgfCBEYnhBY3Rpb25EaXNhYmxlZEtleSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBkaXNhYmxlZDogQm9vbGVhblN0cmluZ0tleUFycmF5VXRpbGl0eS5pbnNlcnQoc3RhdGUuZGlzYWJsZWQsIChrZXkgYXMgc3RyaW5nKSA/PyBERUZBVUxUX0FDVElPTl9ESVNBQkxFRF9LRVkpXG4gIH0pKTtcblxuICAvKipcbiAgICogUmVtb3ZlcyBhIGRpc2FibGVkIHJlYXNvbi5cbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGtleT86IHZvaWQgfCBEYnhBY3Rpb25EaXNhYmxlZEtleSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBkaXNhYmxlZDogQm9vbGVhblN0cmluZ0tleUFycmF5VXRpbGl0eS5yZW1vdmUoc3RhdGUuZGlzYWJsZWQsIChrZXkgYXMgc3RyaW5nKSA/PyBERUZBVUxUX0FDVElPTl9ESVNBQkxFRF9LRVkpXG4gIH0pKTtcblxuICAvKipcbiAgICogVHJpZ2dlcnMgdGhlIG1vZGlmaWVkIHN0YXRlLCBpZiBub3QgZGlzYWJsZWQuXG4gICAqXG4gICAqIEVxdWl2YWxlbnQgdG8gY2FsbGluZyBzZXRJc01vZGlmaWVkKCkgd2l0aCBvcHBvc2l0ZSBpbnB1dC5cbiAgICovXG4gIHJlYWRvbmx5IHNldElzU2FtZSA9IHRoaXMudXBkYXRlcjx2b2lkLCB2b2lkIHwgYm9vbGVhbj4odXBkYXRlSXNTYW1lT25BY3Rpb25Db250ZXh0U3RhdGUpO1xuXG4gIC8qKlxuICAgKiBUcmlnZ2VycyB0aGUgbW9kaWZpZWQgc3RhdGUsIGlmIG5vdCBkaXNhYmxlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNldElzTW9kaWZpZWQgPSB0aGlzLnVwZGF0ZXI8dm9pZCwgdm9pZCB8IGJvb2xlYW4+KHVwZGF0ZUlzTW9kaWZpZWRPbkFjdGlvbkNvbnRleHRTdGF0ZSk7XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJzIHRoZSBhY3Rpb24gaWYgdGhlIHN0YXRlIGlzIGN1cnJlbnRseSBub3QgaWRsZS4gVGhlIGN1cnJlbnQgc3RhdGUgaXMgY2xlYXJlZCwgYnV0IHRoZSBlcnJvciBpcyByZXRhaW5lZCAoYXMgd2UgbWF5IG5lZWQgdGhlIGVycm9yIGZyb20gdGhlIHByZXZpb3VzIGF0dGVtcHQpLlxuICAgKlxuICAgKiBXaWxsIG5vdCBmaXJlIGlmIHRoZSBhY3Rpb24gaXMgZGlzYWJsZWQuXG4gICAqL1xuICByZWFkb25seSB0cmlnZ2VyID0gdGhpcy51cGRhdGVyKChzdGF0ZSkgPT4gKGNhblRyaWdnZXJBY3Rpb24oc3RhdGUpID8geyBpc01vZGlmaWVkOiBzdGF0ZS5pc01vZGlmaWVkLCBhY3Rpb25TdGF0ZTogRGJ4QWN0aW9uU3RhdGUuVFJJR0dFUkVELCBlcnJvcjogc3RhdGUuZXJyb3IsIHZhbHVlOiB1bmRlZmluZWQgfSA6IHN0YXRlKSk7XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHZhbHVlLCBzZXR0aW5nIHZhbHVlIHJlYWR5LiBUaGUgY3VycmVudCByZXN1bHQgaXMgY2xlYXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IHJlYWR5VmFsdWUgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCB2YWx1ZTogVCkgPT4gKGNhblJlYWR5VmFsdWUoc3RhdGUpID8geyAuLi5zdGF0ZSwgYWN0aW9uU3RhdGU6IERieEFjdGlvblN0YXRlLlZBTFVFX1JFQURZLCB2YWx1ZSwgcmVzdWx0OiB1bmRlZmluZWQgfSA6IHN0YXRlKSk7XG5cbiAgLyoqXG4gICAqIE5vdGlmeXMgdGhlIGNvbnRleHQgdGhhdCB0aGUgYWN0aW9uIGlzIGluIHByb2dyZXNzLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhcnRXb3JraW5nID0gdGhpcy51cGRhdGVyKChzdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIGFjdGlvblN0YXRlOiBEYnhBY3Rpb25TdGF0ZS5XT1JLSU5HLCB3b3JrUHJvZ3Jlc3M6IG51bGwgfSkpO1xuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSB3b3JraW5nIHByb2dyZXNzLlxuICAgKi9cbiAgcmVhZG9ubHkgc2V0V29ya1Byb2dyZXNzID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgd29ya1Byb2dyZXNzOiBNYXliZTxEYnhBY3Rpb25Xb3JrUHJvZ3Jlc3M+KSA9PiAoeyAuLi5zdGF0ZSwgd29ya1Byb2dyZXNzIH0pKTtcblxuICAvKipcbiAgICogVHJpZ2dlcnMgcmVqZWN0aW9uIG9mIHRoZSBhY3Rpb24uIFRoZSB2YWx1ZSBpcyBjbGVhcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVqZWN0ID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgZXJyb3I/OiBNYXliZTxSZWFkYWJsZUVycm9yPikgPT4gKHtcbiAgICBpc01vZGlmaWVkOiBzdGF0ZS5pc01vZGlmaWVkLFxuICAgIGFjdGlvblN0YXRlOiBEYnhBY3Rpb25TdGF0ZS5SRUpFQ1RFRCxcbiAgICBlcnJvcixcbiAgICBlcnJvckNvdW50OiAoc3RhdGUuZXJyb3JDb3VudCA/PyAwKSArIDEsXG4gICAgZGlzYWJsZWQ6IHN0YXRlLmRpc2FibGVkXG4gIH0pKTtcblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgc3RhdGUgdG8gc3VjY2VzcywgYW5kIG9wdGlvbmFsbHkgc2V0cyBhIHJlc3VsdC5cbiAgICpcbiAgICogQ2xlYXJzIG1vZGlmaWVkIHN0YXRlLCBhbmQgYW55IGVycm9ycy5cbiAgICovXG4gIHJlYWRvbmx5IHJlc29sdmUgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCByZXN1bHQ/OiBNYXliZTxPPikgPT4gKHsgaXNNb2RpZmllZDogZmFsc2UsIGFjdGlvblN0YXRlOiBEYnhBY3Rpb25TdGF0ZS5SRVNPTFZFRCwgdmFsdWU6IHN0YXRlLnZhbHVlLCByZXN1bHQsIGVycm9yOiB1bmRlZmluZWQsIGRpc2FibGVkOiBzdGF0ZS5kaXNhYmxlZCB9KSk7XG5cbiAgLyoqXG4gICAqIENvbXBsZXRlbHkgcmVzZXRzIHRoZSBzdG9yZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlc2V0ID0gdGhpcy51cGRhdGVyKCgpID0+ICh7IC4uLklOSVRJQUxfU1RBVEUgfSkgYXMgQWN0aW9uQ29udGV4dFN0YXRlPFQsIE8+KTtcblxuICAvLyBNQVJLOiBVdGlsaXR5XG4gIGFmdGVyRGlzdGluY3RCb29sZWFuKGZyb21TdGF0ZTogKHN0YXRlOiBBY3Rpb25Db250ZXh0U3RhdGU8VCwgTz4pID0+IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZSQucGlwZShcbiAgICAgIG1hcCgoeCkgPT4gZnJvbVN0YXRlKHgpKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICBhZnRlckRpc3RpbmN0QWN0aW9uU3RhdGU8WD4oYWN0aW9uU3RhdGU6IERieEFjdGlvblN0YXRlLCBmcm9tU3RhdGU6IChzdGF0ZTogQWN0aW9uQ29udGV4dFN0YXRlPFQsIE8+KSA9PiBYKTogT2JzZXJ2YWJsZTxYPiB7XG4gICAgcmV0dXJuIHRoaXMuYWZ0ZXJEaXN0aW5jdEFjdGlvblN0YXRlQ2hhbmdlKCkucGlwZShcbiAgICAgIGZpbHRlcigoeCkgPT4geC5hY3Rpb25TdGF0ZSA9PT0gYWN0aW9uU3RhdGUpLCAvLyBPbmx5IHBpcGUgd2hlbiB0aGUgbmV3IGFjdGlvbiBzdGF0ZSBtYXRjaGVzLlxuICAgICAgbWFwKCh4KSA9PiBmcm9tU3RhdGUoeCkpLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuICB9XG5cbiAgYWZ0ZXJEaXN0aW5jdEFjdGlvblN0YXRlQ2hhbmdlKCk6IE9ic2VydmFibGU8QWN0aW9uQ29udGV4dFN0YXRlPFQsIE8+PiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgICBtYXAoKHgpID0+IFt4LCB4LmFjdGlvblN0YXRlXSBhcyBbQWN0aW9uQ29udGV4dFN0YXRlLCBEYnhBY3Rpb25TdGF0ZV0pLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IGE/LlsxXSA9PT0gYj8uWzFdKSwgLy8gRmlsdGVyIG91dCB3aGVuIHRoZSBzdGF0ZSByZW1haW5zIHRoZSBzYW1lLlxuICAgICAgbWFwKCh4KSA9PiB4WzBdIGFzIEFjdGlvbkNvbnRleHRTdGF0ZTxULCBPPiksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICBhZnRlckRpc3RpbmN0TG9hZGluZ1N0YXRlVHlwZUNoYW5nZSgpOiBPYnNlcnZhYmxlPEFjdGlvbkNvbnRleHRTdGF0ZTxULCBPPj4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlJC5waXBlKFxuICAgICAgbWFwKCh4KSA9PiBbeCwgbG9hZGluZ1N0YXRlVHlwZUZvckFjdGlvbkNvbnRleHRTdGF0ZSh4KV0gYXMgW0FjdGlvbkNvbnRleHRTdGF0ZSwgTG9hZGluZ1N0YXRlVHlwZV0pLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IGE/LlsxXSA9PT0gYj8uWzFdKSwgLy8gRmlsdGVyIG91dCB3aGVuIHRoZSBsb2FkaW5nIHN0YXRlIHJlbWFpbnMgdGhlIHNhbWUuXG4gICAgICBtYXAoKHgpID0+IHhbMF0gYXMgQWN0aW9uQ29udGV4dFN0YXRlPFQsIE8+KSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgfVxuXG4gIC8vIE1BUks6IENsZWFudXBcbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy8gV2FpdCBmb3IgYW55IGFjdGlvbnMgdG8gY29tcGxldGUgYmVmb3JlIGRlc3Ryb3lpbmcuXG4gICAgdGhpcy5sb2NrU2V0Lm9uTmV4dFVubG9jaygoKSA9PiB7XG4gICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH0sIDIwMDApO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUlzU2FtZU9uQWN0aW9uQ29udGV4dFN0YXRlPFQsIE8+KHN0YXRlOiBBY3Rpb25Db250ZXh0U3RhdGU8VCwgTz4sIGlzU2FtZT86IHZvaWQgfCBib29sZWFuKTogQWN0aW9uQ29udGV4dFN0YXRlPFQsIE8+IHtcbiAgcmV0dXJuIHVwZGF0ZUlzTW9kaWZpZWRPbkFjdGlvbkNvbnRleHRTdGF0ZShzdGF0ZSwgaXNTYW1lID09IG51bGwgPyBmYWxzZSA6ICFpc1NhbWUpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVJc01vZGlmaWVkT25BY3Rpb25Db250ZXh0U3RhdGU8VCwgTz4oc3RhdGU6IEFjdGlvbkNvbnRleHRTdGF0ZTxULCBPPiwgaXNNb2RpZmllZD86IHZvaWQgfCBib29sZWFuKTogQWN0aW9uQ29udGV4dFN0YXRlPFQsIE8+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBhY3Rpb25TdGF0ZTogc3RhdGUuYWN0aW9uU3RhdGUgPT09IERieEFjdGlvblN0YXRlLlJFU09MVkVEID8gRGJ4QWN0aW9uU3RhdGUuSURMRSA6IHN0YXRlLmFjdGlvblN0YXRlLCAvLyBTZXQgdG8gaWRsZSBmcm9tIHN1Y2Nlc3MuXG4gICAgaXNNb2RpZmllZDogKGlzTW9kaWZpZWQgYXMgYm9vbGVhbikgPz8gdHJ1ZSAvLyBpZiBpc01vZGlmaWVkIGlzIG5vdCBpbnB1dCwgZGVmYXVsdCBpdCB0byB0cnVlXG4gIH07XG59XG4iXX0=
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
import { first, switchMap } from 'rxjs';
|
|
2
|
-
import { LockSet, filterMaybe } from '@dereekb/rxjs';
|
|
3
|
-
/**
|
|
4
|
-
* Source that provides a ActionContextStore observable.
|
|
5
|
-
*/
|
|
6
|
-
export class ActionContextStoreSource {
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Secondary source. Used by DbxActionContextComponent to find secondary sources.
|
|
10
|
-
*/
|
|
11
|
-
export class SecondaryActionContextStoreSource extends ActionContextStoreSource {
|
|
12
|
-
}
|
|
13
|
-
export function actionContextStoreSourcePipe(obs) {
|
|
14
|
-
return obs.pipe(filterMaybe());
|
|
15
|
-
}
|
|
16
|
-
export function pipeActionStore(source, pipeFn) {
|
|
17
|
-
return source.store$.pipe(switchMap(pipeFn));
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Convenience function for subscribing to the input source once and using the provided store.
|
|
21
|
-
*/
|
|
22
|
-
export function useActionStore(source, useFn) {
|
|
23
|
-
return source.store$.pipe(first()).subscribe(useFn);
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Service that wraps a ActionContextStoreSource.
|
|
27
|
-
*/
|
|
28
|
-
export class DbxActionContextStoreSourceInstance {
|
|
29
|
-
lockSet = new LockSet();
|
|
30
|
-
_source;
|
|
31
|
-
constructor(source) {
|
|
32
|
-
if (!source) {
|
|
33
|
-
throw new Error('Source is required.');
|
|
34
|
-
}
|
|
35
|
-
this._source = source;
|
|
36
|
-
}
|
|
37
|
-
get source() {
|
|
38
|
-
return this._source;
|
|
39
|
-
}
|
|
40
|
-
destroy() {
|
|
41
|
-
this.lockSet.destroyOnNextUnlock();
|
|
42
|
-
}
|
|
43
|
-
// MARK: Store
|
|
44
|
-
get store$() {
|
|
45
|
-
return this.source.store$;
|
|
46
|
-
}
|
|
47
|
-
pipeStore(pipeFn) {
|
|
48
|
-
return pipeActionStore(this.source, pipeFn);
|
|
49
|
-
}
|
|
50
|
-
useStore(useFn) {
|
|
51
|
-
return useActionStore(this.source, useFn);
|
|
52
|
-
}
|
|
53
|
-
get state$() {
|
|
54
|
-
return this.pipeStore((x) => x.state$);
|
|
55
|
-
}
|
|
56
|
-
get idle$() {
|
|
57
|
-
return this.pipeStore((x) => x.idle$);
|
|
58
|
-
}
|
|
59
|
-
get triggered$() {
|
|
60
|
-
return this.pipeStore((x) => x.triggered$);
|
|
61
|
-
}
|
|
62
|
-
get valueReady$() {
|
|
63
|
-
return this.pipeStore((x) => x.valueReady$);
|
|
64
|
-
}
|
|
65
|
-
get success$() {
|
|
66
|
-
return this.pipeStore((x) => x.success$);
|
|
67
|
-
}
|
|
68
|
-
get successPair$() {
|
|
69
|
-
return this.pipeStore((x) => x.successPair$);
|
|
70
|
-
}
|
|
71
|
-
get workProgress$() {
|
|
72
|
-
return this.pipeStore((x) => x.workProgress$);
|
|
73
|
-
}
|
|
74
|
-
get error$() {
|
|
75
|
-
return this.pipeStore((x) => x.error$);
|
|
76
|
-
}
|
|
77
|
-
get rejected$() {
|
|
78
|
-
return this.pipeStore((x) => x.rejected$);
|
|
79
|
-
}
|
|
80
|
-
get rejectedPair$() {
|
|
81
|
-
return this.pipeStore((x) => x.rejectedPair$);
|
|
82
|
-
}
|
|
83
|
-
get isModified$() {
|
|
84
|
-
return this.pipeStore((x) => x.isModified$);
|
|
85
|
-
}
|
|
86
|
-
get canTrigger$() {
|
|
87
|
-
return this.pipeStore((x) => x.canTrigger$);
|
|
88
|
-
}
|
|
89
|
-
get isModifiedAndCanTriggerUpdates$() {
|
|
90
|
-
return this.pipeStore((x) => x.isModifiedAndCanTriggerUpdates$);
|
|
91
|
-
}
|
|
92
|
-
get isModifiedAndCanTrigger$() {
|
|
93
|
-
return this.pipeStore((x) => x.isModifiedAndCanTrigger$);
|
|
94
|
-
}
|
|
95
|
-
get actionState$() {
|
|
96
|
-
return this.pipeStore((x) => x.actionState$);
|
|
97
|
-
}
|
|
98
|
-
get loadingState$() {
|
|
99
|
-
return this.pipeStore((x) => x.loadingState$);
|
|
100
|
-
}
|
|
101
|
-
get loadingStateType$() {
|
|
102
|
-
return this.pipeStore((x) => x.loadingStateType$);
|
|
103
|
-
}
|
|
104
|
-
get isWorking$() {
|
|
105
|
-
return this.pipeStore((x) => x.isWorking$);
|
|
106
|
-
}
|
|
107
|
-
get isWorkingOrWorkProgress$() {
|
|
108
|
-
return this.pipeStore((x) => x.isWorkingOrWorkProgress$);
|
|
109
|
-
}
|
|
110
|
-
get isSuccess$() {
|
|
111
|
-
return this.pipeStore((x) => x.isSuccess$);
|
|
112
|
-
}
|
|
113
|
-
get disabledKeys$() {
|
|
114
|
-
return this.pipeStore((x) => x.disabledKeys$);
|
|
115
|
-
}
|
|
116
|
-
get isDisabled$() {
|
|
117
|
-
return this.pipeStore((x) => x.isDisabled$);
|
|
118
|
-
}
|
|
119
|
-
get errorCountSinceLastSuccess$() {
|
|
120
|
-
return this.pipeStore((x) => x.errorCountSinceLastSuccess$);
|
|
121
|
-
}
|
|
122
|
-
enable(key, enable = true) {
|
|
123
|
-
this.disable(key, !enable);
|
|
124
|
-
}
|
|
125
|
-
disable(key, disable = true) {
|
|
126
|
-
this.useStore((x) => (disable ? x.disable(key) : x.enable(key)));
|
|
127
|
-
}
|
|
128
|
-
setIsSame(isSame) {
|
|
129
|
-
this.useStore((x) => x.setIsSame(isSame));
|
|
130
|
-
}
|
|
131
|
-
setIsModified(isModified) {
|
|
132
|
-
this.useStore((x) => x.setIsModified(isModified));
|
|
133
|
-
}
|
|
134
|
-
setWorkProgress(workProgress) {
|
|
135
|
-
this.useStore((x) => x.setWorkProgress(workProgress));
|
|
136
|
-
}
|
|
137
|
-
trigger() {
|
|
138
|
-
this.useStore((x) => x.trigger());
|
|
139
|
-
}
|
|
140
|
-
triggerWithValue(value) {
|
|
141
|
-
this.useStore((x) => {
|
|
142
|
-
x.trigger();
|
|
143
|
-
x.readyValue(value);
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
readyValue(value) {
|
|
147
|
-
this.useStore((x) => x.readyValue(value));
|
|
148
|
-
}
|
|
149
|
-
startWorking() {
|
|
150
|
-
this.useStore((x) => x.startWorking());
|
|
151
|
-
}
|
|
152
|
-
reject(error) {
|
|
153
|
-
this.useStore((x) => x.reject(error));
|
|
154
|
-
}
|
|
155
|
-
resolve(value) {
|
|
156
|
-
this.useStore((x) => x.resolve(value));
|
|
157
|
-
}
|
|
158
|
-
reset() {
|
|
159
|
-
this.useStore((x) => x.reset());
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLnN0b3JlLnNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1jb3JlL3NyYy9saWIvYWN0aW9uL2FjdGlvbi5zdG9yZS5zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQXNDLE1BQU0sTUFBTSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUF5RSxNQUFNLGVBQWUsQ0FBQztBQUs1SDs7R0FFRztBQUNILE1BQU0sT0FBZ0Isd0JBQXdCO0NBTzdDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLGlDQUE0RCxTQUFRLHdCQUE4QjtDQUFHO0FBRTNILE1BQU0sVUFBVSw0QkFBNEIsQ0FBTyxHQUFnRDtJQUNqRyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBSUQsTUFBTSxVQUFVLGVBQWUsQ0FBd0MsTUFBc0MsRUFBRSxNQUF3QztJQUNySixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFJRDs7R0FFRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQTJCLE1BQXNDLEVBQUUsS0FBbUM7SUFDbEksT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUNBQW1DO0lBQ3JDLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRWhCLE9BQU8sQ0FBaUM7SUFFekQsWUFBWSxNQUFzQztRQUNoRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLElBQUksS0FBSyxDQUFDLHFC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ZSBPYnNlcnZhYmxlLCB0eXBlIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTG9ja1NldCwgZmlsdGVyTWF5YmUsIHR5cGUgTG9hZGluZ1N0YXRlLCB0eXBlIExvYWRpbmdTdGF0ZVR5cGUsIHR5cGUgTWF5YmVPYnNlcnZhYmxlT3JWYWx1ZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgdHlwZSBEZXN0cm95YWJsZSwgdHlwZSBNYXliZSwgdHlwZSBSZWFkYWJsZUVycm9yIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyB0eXBlIEFjdGlvbkNvbnRleHRTdGF0ZSwgdHlwZSBBY3Rpb25Db250ZXh0U3RvcmUgfSBmcm9tICcuL2FjdGlvbi5zdG9yZSc7XG5pbXBvcnQgeyB0eXBlIERieEFjdGlvbkRpc2FibGVkS2V5LCB0eXBlIERieEFjdGlvblJlamVjdGVkUGFpciwgdHlwZSBEYnhBY3Rpb25TdGF0ZSwgdHlwZSBEYnhBY3Rpb25TdWNjZXNzUGFpciwgdHlwZSBEYnhBY3Rpb25Xb3JrT3JXb3JrUHJvZ3Jlc3MsIHR5cGUgRGJ4QWN0aW9uV29ya1Byb2dyZXNzIH0gZnJvbSAnLi9hY3Rpb24nO1xuXG4vKipcbiAqIFNvdXJjZSB0aGF0IHByb3ZpZGVzIGEgQWN0aW9uQ29udGV4dFN0b3JlIG9ic2VydmFibGUuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBY3Rpb25Db250ZXh0U3RvcmVTb3VyY2U8VCA9IHVua25vd24sIE8gPSB1bmtub3duPiB7XG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIHJlZmVyZW5jaW5nIHRoZSBBY3Rpb25Db250ZXh0U3RvcmUuXG4gICAqXG4gICAqIFRoaXMgb2JzZXJ2YWJsZSBieSBkZXNpZ24gaXMgcHJlLWZpbHRlcmVkIHRvIG5vdCByZXR1cm4gbnVsbCB2YWx1ZXMuXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBzdG9yZSQ6IE9ic2VydmFibGU8QWN0aW9uQ29udGV4dFN0b3JlPFQsIE8+Pjtcbn1cblxuLyoqXG4gKiBTZWNvbmRhcnkgc291cmNlLiBVc2VkIGJ5IERieEFjdGlvbkNvbnRleHRDb21wb25lbnQgdG8gZmluZCBzZWNvbmRhcnkgc291cmNlcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNlY29uZGFyeUFjdGlvbkNvbnRleHRTdG9yZVNvdXJjZTxUID0gdW5rbm93biwgTyA9IHVua25vd24+IGV4dGVuZHMgQWN0aW9uQ29udGV4dFN0b3JlU291cmNlPFQsIE8+IHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBhY3Rpb25Db250ZXh0U3RvcmVTb3VyY2VQaXBlPFQsIE8+KG9iczogT2JzZXJ2YWJsZTxNYXliZTxBY3Rpb25Db250ZXh0U3RvcmU8VCwgTz4+Pik6IE9ic2VydmFibGU8QWN0aW9uQ29udGV4dFN0b3JlPFQsIE8+PiB7XG4gIHJldHVybiBvYnMucGlwZShmaWx0ZXJNYXliZSgpKTtcbn1cblxuZXhwb3J0IHR5cGUgUGlwZUFjdGlvblN0b3JlRnVuY3Rpb248UiwgVCwgTz4gPSAoc3RvcmU6IEFjdGlvbkNvbnRleHRTdG9yZTxULCBPPikgPT4gT2JzZXJ2YWJsZTxSPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHBpcGVBY3Rpb25TdG9yZTxSID0gdW5rbm93biwgVCA9IHVua25vd24sIE8gPSB1bmtub3duPihzb3VyY2U6IEFjdGlvbkNvbnRleHRTdG9yZVNvdXJjZTxULCBPPiwgcGlwZUZuOiBQaXBlQWN0aW9uU3RvcmVGdW5jdGlvbjxSLCBULCBPPik6IE9ic2VydmFibGU8Uj4ge1xuICByZXR1cm4gc291cmNlLnN0b3JlJC5waXBlKHN3aXRjaE1hcChwaXBlRm4pKTtcbn1cblxuZXhwb3J0IHR5cGUgVXNlQWN0aW9uU3RvcmVGdW5jdGlvbjxULCBPPiA9IChzdG9yZTogQWN0aW9uQ29udGV4dFN0b3JlPFQsIE8+KSA9PiB2b2lkO1xuXG4vKipcbiAqIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBzdWJzY3JpYmluZyB0byB0aGUgaW5wdXQgc291cmNlIG9uY2UgYW5kIHVzaW5nIHRoZSBwcm92aWRlZCBzdG9yZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGlvblN0b3JlPFQgPSB1bmtub3duLCBPID0gdW5rbm93bj4oc291cmNlOiBBY3Rpb25Db250ZXh0U3RvcmVTb3VyY2U8VCwgTz4sIHVzZUZuOiBVc2VBY3Rpb25TdG9yZUZ1bmN0aW9uPFQsIE8+KTogU3Vic2NyaXB0aW9uIHtcbiAgcmV0dXJuIHNvdXJjZS5zdG9yZSQucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUodXNlRm4pO1xufVxuXG4vKipcbiAqIFNlcnZpY2UgdGhhdCB3cmFwcyBhIEFjdGlvbkNvbnRleHRTdG9yZVNvdXJjZS5cbiAqL1xuZXhwb3J0IGNsYXNzIERieEFjdGlvbkNvbnRleHRTdG9yZVNvdXJjZUluc3RhbmNlPFQgPSB1bmtub3duLCBPID0gdW5rbm93bj4gaW1wbGVtZW50cyBBY3Rpb25Db250ZXh0U3RvcmVTb3VyY2U8VCwgTz4sIERlc3Ryb3lhYmxlIHtcbiAgcmVhZG9ubHkgbG9ja1NldCA9IG5ldyBMb2NrU2V0KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc291cmNlOiBBY3Rpb25Db250ZXh0U3RvcmVTb3VyY2U8VCwgTz47XG5cbiAgY29uc3RydWN0b3Ioc291cmNlOiBBY3Rpb25Db250ZXh0U3RvcmVTb3VyY2U8VCwgTz4pIHtcbiAgICBpZiAoIXNvdXJjZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTb3VyY2UgaXMgcmVxdWlyZWQuJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fc291cmNlID0gc291cmNlO1xuICB9XG5cbiAgZ2V0IHNvdXJjZSgpOiBBY3Rpb25Db250ZXh0U3RvcmVTb3VyY2U8VCwgTz4ge1xuICAgIHJldHVybiB0aGlzLl9zb3VyY2U7XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmxvY2tTZXQuZGVzdHJveU9uTmV4dFVubG9jaygpO1xuICB9XG5cbiAgLy8gTUFSSzogU3RvcmVcbiAgZ2V0IHN0b3JlJCgpOiBPYnNlcnZhYmxlPEFjdGlvbkNvbnRleHRTdG9yZTxULCBPPj4ge1xuICAgIHJldHVybiB0aGlzLnNvdXJjZS5zdG9yZSQ7XG4gIH1cblxuICBwaXBlU3RvcmU8Uj4ocGlwZUZuOiBQaXBlQWN0aW9uU3RvcmVGdW5jdGlvbjxSLCBULCBPPik6IE9ic2VydmFibGU8Uj4ge1xuICAgIHJldHVybiBwaXBlQWN0aW9uU3RvcmUodGhpcy5zb3VyY2UsIHBpcGVGbik7XG4gIH1cblxuICB1c2VTdG9yZSh1c2VGbjogVXNlQWN0aW9uU3RvcmVGdW5jdGlvbjxULCBPPik6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHVzZUFjdGlvblN0b3JlKHRoaXMuc291cmNlLCB1c2VGbik7XG4gIH1cblxuICBnZXQgc3RhdGUkKCk6IE9ic2VydmFibGU8QWN0aW9uQ29udGV4dFN0YXRlPFQsIE8+PiB7XG4gICAgcmV0dXJuIHRoaXMucGlwZVN0b3JlKCh4KSA9PiB4LnN0YXRlJCk7XG4gIH1cblxuICBnZXQgaWRsZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucGlwZVN0b3JlKCh4KSA9PiB4LmlkbGUkKTtcbiAgfVxuXG4gIGdldCB0cmlnZ2VyZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnBpcGVTdG9yZSgoeCkgPT4geC50cmlnZ2VyZWQkKTtcbiAgfVxuXG4gIGdldCB2YWx1ZVJlYWR5JCgpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5waXBlU3RvcmUoKHgpID0+IHgudmFsdWVSZWFkeSQpO1xuICB9XG5cbiAgZ2V0IHN1Y2Nlc3MkKCk6IE9ic2VydmFibGU8TWF5YmU8Tz4+IHtcbiAgICByZXR1cm4gdGhpcy5waXBlU3RvcmUoKHgpID0+IHguc3VjY2VzcyQpO1xuICB9XG5cbiAgZ2V0IHN1Y2Nlc3NQYWlyJCgpOiBPYnNlcnZhYmxlPERieEFjdGlvblN1Y2Nlc3NQYWlyPFQsIE8+PiB7XG4gICAgcmV0dXJuIHRoaXMucGlwZVN0b3JlKCh4KSA9PiB4LnN1Y2Nlc3NQYWlyJCk7XG4gIH1cblxuICBnZXQgd29ya1Byb2dyZXNzJCgpOiBPYnNlcnZhYmxlPE1heWJlPERieEFjdGlvbldvcmtQcm9ncmVzcz4+IHtcbiAgICByZXR1cm4gdGhpcy5waXBlU3RvcmUoKHgpID0+IHgud29ya1Byb2dyZXNzJCk7XG4gIH1cblxuICBnZXQgZXJyb3IkKCk6IE9ic2VydmFibGU8TWF5YmU8UmVhZGFibGVFcnJvcj4+IHtcbiAgICByZXR1cm4gdGhpcy5waXBlU3RvcmUoKHgpID0+IHguZXJyb3IkKTtcbiAgfVxuXG4gIGdldCByZWplY3RlZCQoKTogT2JzZXJ2YWJsZTxNYXliZTxSZWFkYWJsZUVycm9yPj4ge1xuICAgIHJldHVybiB0aGlzLnBpcGVTdG9yZSgoeCkgPT4geC5yZWplY3RlZCQpO1xuICB9XG5cbiAgZ2V0IHJlamVjdGVkUGFpciQoKTogT2JzZXJ2YWJsZTxEYnhBY3Rpb25SZWplY3RlZFBhaXI8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5waXBlU3RvcmUoKHgpID0+IHgucmVqZWN0ZWRQYWlyJCk7XG4gIH1cblxuICBnZXQgaXNNb2RpZmllZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucGlwZVN0b3JlKCh4KSA9PiB4LmlzTW9kaWZpZWQkKTtcbiAgfVxuXG4gIGdldCBjYW5UcmlnZ2VyJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5waXBlU3RvcmUoKHgpID0+IHguY2FuVHJpZ2dlciQpO1xuICB9XG5cbiAgZ2V0IGlzTW9kaWZpZWRBbmRDYW5UcmlnZ2VyVXBkYXRlcyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucGlwZVN0b3JlKCh4KSA9PiB4LmlzTW9kaWZpZWRBbmRDYW5UcmlnZ2VyVXBkYXRlcyQpO1xuICB9XG5cbiAgZ2V0IGlzTW9kaWZpZWRBbmRDYW5UcmlnZ2VyJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5waXBlU3RvcmUoKHgpID0+IHguaXNNb2RpZmllZEFuZENhblRyaWdnZXIkKTtcbiAgfVxuXG4gIGdldCBhY3Rpb25TdGF0ZSQoKTogT2JzZXJ2YWJsZTxEYnhBY3Rpb25TdGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLnBpcGVTdG9yZSgoeCkgPT4geC5hY3Rpb25TdGF0ZSQpO1xuICB9XG5cbiAgZ2V0IGxvYWRpbmdTdGF0ZSQoKTogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8Tz4+IHtcbiAgICByZXR1cm4gdGhpcy5waXBlU3RvcmUoKHgpID0+IHgubG9hZGluZ1N0YXRlJCk7XG4gIH1cblxuICBnZXQgbG9hZGluZ1N0YXRlVHlwZSQoKTogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGVUeXBlPiB7XG4gICAgcmV0dXJuIHRoaXMucGlwZVN0b3JlKCh4KSA9PiB4LmxvYWRpbmdTdGF0ZVR5cGUkKTtcbiAgfVxuXG4gIGdldCBpc1dvcmtpbmckKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnBpcGVTdG9yZSgoeCkgPT4geC5pc1dvcmtpbmckKTtcbiAgfVxuXG4gIGdldCBpc1dvcmtpbmdPcldvcmtQcm9ncmVzcyQoKTogT2JzZXJ2YWJsZTxEYnhBY3Rpb25Xb3JrT3JXb3JrUHJvZ3Jlc3M+IHtcbiAgICByZXR1cm4gdGhpcy5waXBlU3RvcmUoKHgpID0+IHguaXNXb3JraW5nT3JXb3JrUHJvZ3Jlc3MkKTtcbiAgfVxuXG4gIGdldCBpc1N1Y2Nlc3MkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnBpcGVTdG9yZSgoeCkgPT4geC5pc1N1Y2Nlc3MkKTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZEtleXMkKCk6IE9ic2VydmFibGU8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy5waXBlU3RvcmUoKHgpID0+IHguZGlzYWJsZWRLZXlzJCk7XG4gIH1cblxuICBnZXQgaXNEaXNhYmxlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucGlwZVN0b3JlKCh4KSA9PiB4LmlzRGlzYWJsZWQkKTtcbiAgfVxuXG4gIGdldCBlcnJvckNvdW50U2luY2VMYXN0U3VjY2VzcyQoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5waXBlU3RvcmUoKHgpID0+IHguZXJyb3JDb3VudFNpbmNlTGFzdFN1Y2Nlc3MkKTtcbiAgfVxuXG4gIHB1YmxpYyBlbmFibGUoa2V5PzogRGJ4QWN0aW9uRGlzYWJsZWRLZXksIGVuYWJsZSA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGUoa2V5LCAhZW5hYmxlKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNhYmxlKGtleT86IERieEFjdGlvbkRpc2FibGVkS2V5LCBkaXNhYmxlID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMudXNlU3RvcmUoKHgpID0+IChkaXNhYmxlID8geC5kaXNhYmxlKGtleSkgOiB4LmVuYWJsZShrZXkpKSk7XG4gIH1cblxuICBwdWJsaWMgc2V0SXNTYW1lKGlzU2FtZT86IGJvb2xlYW4gfCBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgT2JzZXJ2YWJsZTx2b2lkPik6IHZvaWQge1xuICAgIHRoaXMudXNlU3RvcmUoKHgpID0+IHguc2V0SXNTYW1lKGlzU2FtZSkpO1xuICB9XG5cbiAgcHVibGljIHNldElzTW9kaWZpZWQoaXNNb2RpZmllZD86IGJvb2xlYW4gfCBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgT2JzZXJ2YWJsZTx2b2lkPik6IHZvaWQge1xuICAgIHRoaXMudXNlU3RvcmUoKHgpID0+IHguc2V0SXNNb2RpZmllZChpc01vZGlmaWVkKSk7XG4gIH1cblxuICBwdWJsaWMgc2V0V29ya1Byb2dyZXNzKHdvcmtQcm9ncmVzczogTWF5YmVPYnNlcnZhYmxlT3JWYWx1ZTxEYnhBY3Rpb25Xb3JrUHJvZ3Jlc3M+KTogdm9pZCB7XG4gICAgdGhpcy51c2VTdG9yZSgoeCkgPT4geC5zZXRXb3JrUHJvZ3Jlc3Mod29ya1Byb2dyZXNzKSk7XG4gIH1cblxuICBwdWJsaWMgdHJpZ2dlcigpOiB2b2lkIHtcbiAgICB0aGlzLnVzZVN0b3JlKCh4KSA9PiB4LnRyaWdnZXIoKSk7XG4gIH1cblxuICBwdWJsaWMgdHJpZ2dlcldpdGhWYWx1ZSh2YWx1ZTogVCB8IE9ic2VydmFibGU8VD4pOiB2b2lkIHtcbiAgICB0aGlzLnVzZVN0b3JlKCh4KSA9PiB7XG4gICAgICB4LnRyaWdnZXIoKTtcbiAgICAgIHgucmVhZHlWYWx1ZSh2YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZHlWYWx1ZSh2YWx1ZTogVCB8IE9ic2VydmFibGU8VD4pOiB2b2lkIHtcbiAgICB0aGlzLnVzZVN0b3JlKCh4KSA9PiB4LnJlYWR5VmFsdWUodmFsdWUpKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGFydFdvcmtpbmcoKTogdm9pZCB7XG4gICAgdGhpcy51c2VTdG9yZSgoeCkgPT4geC5zdGFydFdvcmtpbmcoKSk7XG4gIH1cblxuICBwdWJsaWMgcmVqZWN0KGVycm9yOiBNYXliZTxSZWFkYWJsZUVycm9yIHwgT2JzZXJ2YWJsZTxSZWFkYWJsZUVycm9yPj4pOiB2b2lkIHtcbiAgICB0aGlzLnVzZVN0b3JlKCh4KSA9PiB4LnJlamVjdChlcnJvcikpO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmUodmFsdWU6IE8gfCBPYnNlcnZhYmxlPE8+KTogdm9pZCB7XG4gICAgdGhpcy51c2VTdG9yZSgoeCkgPT4geC5yZXNvbHZlKHZhbHVlKSk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy51c2VTdG9yZSgoeCkgPT4geC5yZXNldCgpKTtcbiAgfVxufVxuIl19
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { forwardRef } from '@angular/core';
|
|
2
|
-
import { ActionContextStoreSource, DbxActionContextStoreSourceInstance, SecondaryActionContextStoreSource } from './action.store.source';
|
|
3
|
-
import { DbxActionContextMachineAsService } from './action.machine';
|
|
4
|
-
export const actionContextStoreSourceInstanceFactory = (source) => {
|
|
5
|
-
return new DbxActionContextStoreSourceInstance(source);
|
|
6
|
-
};
|
|
7
|
-
export const actionContextStoreSourceMachineFactory = () => {
|
|
8
|
-
return new DbxActionContextMachineAsService();
|
|
9
|
-
};
|
|
10
|
-
/**
|
|
11
|
-
* Provides an ActionContextStoreSource, as well as an DbxActionContextStoreSourceInstance.
|
|
12
|
-
*/
|
|
13
|
-
export function provideActionStoreSource(sourceType) {
|
|
14
|
-
const storeSourceProvider = sourceType != null
|
|
15
|
-
? {
|
|
16
|
-
provide: ActionContextStoreSource,
|
|
17
|
-
useExisting: forwardRef(() => sourceType)
|
|
18
|
-
}
|
|
19
|
-
: {
|
|
20
|
-
provide: ActionContextStoreSource,
|
|
21
|
-
useFactory: actionContextStoreSourceMachineFactory
|
|
22
|
-
};
|
|
23
|
-
return [
|
|
24
|
-
storeSourceProvider,
|
|
25
|
-
{
|
|
26
|
-
provide: DbxActionContextStoreSourceInstance,
|
|
27
|
-
useFactory: actionContextStoreSourceInstanceFactory,
|
|
28
|
-
deps: [ActionContextStoreSource]
|
|
29
|
-
}
|
|
30
|
-
];
|
|
31
|
-
}
|
|
32
|
-
export function provideSecondaryActionStoreSource(sourceType) {
|
|
33
|
-
return [
|
|
34
|
-
{
|
|
35
|
-
provide: SecondaryActionContextStoreSource,
|
|
36
|
-
useExisting: forwardRef(() => sourceType)
|
|
37
|
-
},
|
|
38
|
-
...provideActionStoreSource(sourceType)
|
|
39
|
-
];
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLnN0b3JlLnNvdXJjZS5wcm92aWRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWNvcmUvc3JjL2xpYi9hY3Rpb24vYWN0aW9uLnN0b3JlLnNvdXJjZS5wcm92aWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxtQ0FBbUMsRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pJLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXBFLE1BQU0sQ0FBQyxNQUFNLHVDQUF1QyxHQUFHLENBQUMsTUFBZ0MsRUFBRSxFQUFFO0lBQzFGLE9BQU8sSUFBSSxtQ0FBbUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN6RCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQ0FBc0MsR0FBRyxHQUFHLEVBQUU7SUFDekQsT0FBTyxJQUFJLGdDQUFnQyxFQUFFLENBQUM7QUFDaEQsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLFVBQVUsd0JBQXdCLENBQXFDLFVBQTBCO0lBQ3JHLE1BQU0sbUJBQW1CLEdBQ3ZCLFVBQVUsSUFBSSxJQUFJO1FBQ2hCLENBQUMsQ0FBQztZQUNFLE9BQU8sRUFBRSx3QkFBd0I7WUFDakMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUM7U0FDMUM7UUFDSCxDQUFDLENBQUM7WUFDRSxPQUFPLEVBQUUsd0JBQXdCO1lBQ2pDLFVBQVUsRUFBRSxzQ0FBc0M7U0FDbkQsQ0FBQztJQUVSLE9BQU87UUFDTCxtQkFBbUI7UUFDbkI7WUFDRSxPQUFPLEVBQUUsbUNBQW1DO1lBQzVDLFVBQVUsRUFBRSx1Q0FBdUM7WUFDbkQsSUFBSSxFQUFFLENBQUMsd0JBQXdCLENBQUM7U0FDakM7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxpQ0FBaUMsQ0FBOEMsVUFBbUI7SUFDaEgsT0FBTztRQUNMO1lBQ0UsT0FBTyxFQUFFLGlDQUFpQztZQUMxQyxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQztTQUMxQztRQUNELEdBQUcsd0JBQXdCLENBQUMsVUFBVSxDQUFDO0tBQ3hDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm9yd2FyZFJlZiwgdHlwZSBQcm92aWRlciwgdHlwZSBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb25Db250ZXh0U3RvcmVTb3VyY2UsIERieEFjdGlvbkNvbnRleHRTdG9yZVNvdXJjZUluc3RhbmNlLCBTZWNvbmRhcnlBY3Rpb25Db250ZXh0U3RvcmVTb3VyY2UgfSBmcm9tICcuL2FjdGlvbi5zdG9yZS5zb3VyY2UnO1xuaW1wb3J0IHsgRGJ4QWN0aW9uQ29udGV4dE1hY2hpbmVBc1NlcnZpY2UgfSBmcm9tICcuL2FjdGlvbi5tYWNoaW5lJztcblxuZXhwb3J0IGNvbnN0IGFjdGlvbkNvbnRleHRTdG9yZVNvdXJjZUluc3RhbmNlRmFjdG9yeSA9IChzb3VyY2U6IEFjdGlvbkNvbnRleHRTdG9yZVNvdXJjZSkgPT4ge1xuICByZXR1cm4gbmV3IERieEFjdGlvbkNvbnRleHRTdG9yZVNvdXJjZUluc3RhbmNlKHNvdXJjZSk7XG59O1xuXG5leHBvcnQgY29uc3QgYWN0aW9uQ29udGV4dFN0b3JlU291cmNlTWFjaGluZUZhY3RvcnkgPSAoKSA9PiB7XG4gIHJldHVybiBuZXcgRGJ4QWN0aW9uQ29udGV4dE1hY2hpbmVBc1NlcnZpY2UoKTtcbn07XG5cbi8qKlxuICogUHJvdmlkZXMgYW4gQWN0aW9uQ29udGV4dFN0b3JlU291cmNlLCBhcyB3ZWxsIGFzIGFuIERieEFjdGlvbkNvbnRleHRTdG9yZVNvdXJjZUluc3RhbmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUFjdGlvblN0b3JlU291cmNlPFMgZXh0ZW5kcyBBY3Rpb25Db250ZXh0U3RvcmVTb3VyY2U+KHNvdXJjZVR5cGU6IFR5cGU8Uz4gfCBudWxsKTogUHJvdmlkZXJbXSB7XG4gIGNvbnN0IHN0b3JlU291cmNlUHJvdmlkZXI6IFByb3ZpZGVyID1cbiAgICBzb3VyY2VUeXBlICE9IG51bGxcbiAgICAgID8ge1xuICAgICAgICAgIHByb3ZpZGU6IEFjdGlvbkNvbnRleHRTdG9yZVNvdXJjZSxcbiAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBzb3VyY2VUeXBlKVxuICAgICAgICB9XG4gICAgICA6IHtcbiAgICAgICAgICBwcm92aWRlOiBBY3Rpb25Db250ZXh0U3RvcmVTb3VyY2UsXG4gICAgICAgICAgdXNlRmFjdG9yeTogYWN0aW9uQ29udGV4dFN0b3JlU291cmNlTWFjaGluZUZhY3RvcnlcbiAgICAgICAgfTtcblxuICByZXR1cm4gW1xuICAgIHN0b3JlU291cmNlUHJvdmlkZXIsXG4gICAge1xuICAgICAgcHJvdmlkZTogRGJ4QWN0aW9uQ29udGV4dFN0b3JlU291cmNlSW5zdGFuY2UsXG4gICAgICB1c2VGYWN0b3J5OiBhY3Rpb25Db250ZXh0U3RvcmVTb3VyY2VJbnN0YW5jZUZhY3RvcnksXG4gICAgICBkZXBzOiBbQWN0aW9uQ29udGV4dFN0b3JlU291cmNlXVxuICAgIH1cbiAgXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVTZWNvbmRhcnlBY3Rpb25TdG9yZVNvdXJjZTxTIGV4dGVuZHMgU2Vjb25kYXJ5QWN0aW9uQ29udGV4dFN0b3JlU291cmNlPihzb3VyY2VUeXBlOiBUeXBlPFM+KTogUHJvdmlkZXJbXSB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogU2Vjb25kYXJ5QWN0aW9uQ29udGV4dFN0b3JlU291cmNlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gc291cmNlVHlwZSlcbiAgICB9LFxuICAgIC4uLnByb3ZpZGVBY3Rpb25TdG9yZVNvdXJjZShzb3VyY2VUeXBlKVxuICBdO1xufVxuIl19
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { Directive, inject, input } from '@angular/core';
|
|
2
|
-
import { AbstractSubscriptionDirective } from '../../../subscription';
|
|
3
|
-
import { distinctUntilChanged, filter, switchMap, EMPTY } from 'rxjs';
|
|
4
|
-
import { DbxActionContextStoreSourceInstance } from '../../action.store.source';
|
|
5
|
-
import { isNotFalse } from '@dereekb/util';
|
|
6
|
-
import { toObservable } from '@angular/core/rxjs-interop';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
export class DbxActionAutoModifyDirective extends AbstractSubscriptionDirective {
|
|
9
|
-
source = inject((DbxActionContextStoreSourceInstance), { host: true });
|
|
10
|
-
autoModifyEnabled = input(true, { alias: 'dbxActionAutoModify', transform: isNotFalse });
|
|
11
|
-
markAsModified$ = toObservable(this.autoModifyEnabled).pipe(distinctUntilChanged(), switchMap((x) => {
|
|
12
|
-
let obs;
|
|
13
|
-
if (x) {
|
|
14
|
-
obs = this.source.isModified$.pipe(filter((x) => !x));
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
obs = EMPTY;
|
|
18
|
-
}
|
|
19
|
-
return obs;
|
|
20
|
-
}));
|
|
21
|
-
ngOnInit() {
|
|
22
|
-
this.sub = this.markAsModified$.subscribe(() => {
|
|
23
|
-
this.source.setIsModified(true);
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionAutoModifyDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
27
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxActionAutoModifyDirective, isStandalone: true, selector: "dbxActionAutoModify, [dbxActionAutoModify]", inputs: { autoModifyEnabled: { classPropertyName: "autoModifyEnabled", publicName: "dbxActionAutoModify", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 });
|
|
28
|
-
}
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionAutoModifyDirective, decorators: [{
|
|
30
|
-
type: Directive,
|
|
31
|
-
args: [{
|
|
32
|
-
selector: 'dbxActionAutoModify, [dbxActionAutoModify]',
|
|
33
|
-
standalone: true
|
|
34
|
-
}]
|
|
35
|
-
}] });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmF1dG9tb2RpZnkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWNvcmUvc3JjL2xpYi9hY3Rpb24vZGlyZWN0aXZlL2F1dG8vYWN0aW9uLmF1dG9tb2RpZnkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQU0xRCxNQUFNLE9BQU8sNEJBQW1DLFNBQVEsNkJBQTZCO0lBQzFFLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQSxtQ0FBeUMsQ0FBQSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDM0UsaUJBQWlCLEdBQUcsS0FBSyxDQUE0QixJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUscUJBQXFCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDcEgsZUFBZSxHQUFxQixZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxDQUNwRixvQkFBb0IsRUFBRSxFQUN0QixTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNkLElBQUksR0FBb0IsQ0FBQztRQUV6QixJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ04sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RCxDQUFDO2FBQU0sQ0FBQztZQUNOLEdBQUcsR0FBRyxLQUFLLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBRUYsUUFBUTtRQUNOLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzdDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0F0QlUsNEJBQTRCOzRGQUE1Qiw0QkFBNEI7OzRGQUE1Qiw0QkFBNEI7a0JBSnhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDRDQUE0QztvQkFDdEQsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBPbkluaXQsIE9uRGVzdHJveSwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RTdWJzY3JpcHRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9zdWJzY3JpcHRpb24nO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgc3dpdGNoTWFwLCBPYnNlcnZhYmxlLCBFTVBUWSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGJ4QWN0aW9uQ29udGV4dFN0b3JlU291cmNlSW5zdGFuY2UgfSBmcm9tICcuLi8uLi9hY3Rpb24uc3RvcmUuc291cmNlJztcbmltcG9ydCB7IGlzTm90RmFsc2UgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnZGJ4QWN0aW9uQXV0b01vZGlmeSwgW2RieEFjdGlvbkF1dG9Nb2RpZnldJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBEYnhBY3Rpb25BdXRvTW9kaWZ5RGlyZWN0aXZlPFQsIE8+IGV4dGVuZHMgQWJzdHJhY3RTdWJzY3JpcHRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHJlYWRvbmx5IHNvdXJjZSA9IGluamVjdChEYnhBY3Rpb25Db250ZXh0U3RvcmVTb3VyY2VJbnN0YW5jZTxULCBPPiwgeyBob3N0OiB0cnVlIH0pO1xuICByZWFkb25seSBhdXRvTW9kaWZ5RW5hYmxlZCA9IGlucHV0PGJvb2xlYW4sIHN0cmluZyB8IGJvb2xlYW4+KHRydWUsIHsgYWxpYXM6ICdkYnhBY3Rpb25BdXRvTW9kaWZ5JywgdHJhbnNmb3JtOiBpc05vdEZhbHNlIH0pO1xuICByZWFkb25seSBtYXJrQXNNb2RpZmllZCQ6IE9ic2VydmFibGU8dm9pZD4gPSB0b09ic2VydmFibGUodGhpcy5hdXRvTW9kaWZ5RW5hYmxlZCkucGlwZShcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHN3aXRjaE1hcCgoeCkgPT4ge1xuICAgICAgbGV0IG9iczogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gICAgICBpZiAoeCkge1xuICAgICAgICBvYnMgPSB0aGlzLnNvdXJjZS5pc01vZGlmaWVkJC5waXBlKGZpbHRlcigoeCkgPT4gIXgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9icyA9IEVNUFRZO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JzO1xuICAgIH0pXG4gICk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWIgPSB0aGlzLm1hcmtBc01vZGlmaWVkJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5zb3VyY2Uuc2V0SXNNb2RpZmllZCh0cnVlKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|