{"version":3,"file":"tinyslice-ngx.mjs","sources":["../../../../libs/ngx/src/lib/services/effect-services.token.ts","../../../../libs/ngx/src/lib/services/root-store.service.ts","../../../../libs/ngx/src/lib/tinyslice.module.ts","../../../../libs/ngx/src/tinyslice-ngx.ts"],"sourcesContent":["import { InjectionToken, Type } from '@angular/core';\n\nexport const TINYSLICE_EFFECT_SERVICES = new InjectionToken<Type<unknown>[]>(\n\t'TINYSLICE_EFFECT_SERVICES'\n);\n\nexport const TINYSLICE_ROOT_MODULE_INDICATOR_TOKEN = new InjectionToken<boolean>(\n\t'TINYSLICE_ROOT_MODULE_INDICATOR_TOKEN'\n);\n","import { InjectionToken } from '@angular/core';\nimport { RootSlice } from '@tinyslice/core';\n\nexport const ROOT_STORE = new InjectionToken<RootSlice<unknown>>('ROOT_STORE');\n","import { CommonModule } from '@angular/common';\nimport {\n\tApplicationRef,\n\tInject,\n\tInjectionToken,\n\tModuleWithProviders,\n\tNgModule,\n\tOptional,\n\tProvider,\n\tType,\n} from '@angular/core';\nimport {\n\tReducerConfiguration,\n\tRootSlice,\n\tScope,\n\tSlice,\n\tSliceOptions,\n\tTinySlicePlugin,\n\tTinySlicePluginHooks,\n} from '@tinyslice/core';\nimport { Subscription } from 'rxjs';\nimport {\n\tROOT_STORE,\n\tTINYSLICE_EFFECT_SERVICES,\n\tTINYSLICE_ROOT_MODULE_INDICATOR_TOKEN,\n} from './services';\n\nexport class TinySliceAngularPlugin<State = unknown> implements TinySlicePlugin<State> {\n\tprivate hooks!: TinySlicePluginHooks<State>;\n\tprivate initialState!: string;\n\tprivate sink = new Subscription();\n\n\tconstructor(private readonly application: ApplicationRef) {}\n\tregister = (hooks: TinySlicePluginHooks<State>): void => {\n\t\tthis.hooks = hooks;\n\t\tthis.initialState = JSON.stringify(hooks.initialState);\n\t};\n\n\tonError = (error: unknown): void => {\n\t\tconsole.log('Error from store:', error);\n\t};\n\n\tstart = (): void => {\n\t\tthis.sink.add(\n\t\t\tthis.hooks.state$.subscribe(() => {\n\t\t\t\tthis.application.tick();\n\t\t\t})\n\t\t);\n\t};\n\n\tstop = (): void => {\n\t\tthis.sink.unsubscribe();\n\t};\n}\n@NgModule({\n\timports: [CommonModule],\n})\nexport class TinySliceModule {\n\tconstructor(\n\t\t@Inject(TINYSLICE_ROOT_MODULE_INDICATOR_TOKEN)\n\t\tprivate readonly rootModuleIndicators: boolean[],\n\t\t@Inject(TINYSLICE_EFFECT_SERVICES)\n\t\t@Optional()\n\t\tprivate readonly _effectServices: Type<unknown>[]\n\t) {\n\t\tif (this.rootModuleIndicators.length > 1) {\n\t\t\tthrow new Error('More than 1 TinySlice root modules were created!');\n\t\t}\n\t}\n\n\tpublic static forRoot<RootState = unknown>(\n\t\tinitialState: RootState,\n\t\teffectServices: Type<unknown>[],\n\t\tfacade: new (slice: RootSlice<RootState>, scope: Scope) => unknown,\n\t\tstoreOptions?: SliceOptions<never, RootState, unknown>\n\t): ModuleWithProviders<TinySliceModule> {\n\t\treturn {\n\t\t\tngModule: TinySliceModule,\n\t\t\tproviders: [\n\t\t\t\t{\n\t\t\t\t\tprovide: TINYSLICE_ROOT_MODULE_INDICATOR_TOKEN,\n\t\t\t\t\tuseValue: true,\n\t\t\t\t\tmulti: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tprovide: Scope,\n\t\t\t\t\tuseFactory: () => new Scope(),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tprovide: ROOT_STORE,\n\t\t\t\t\tuseFactory: (scope: Scope, application: ApplicationRef) => {\n\t\t\t\t\t\tstoreOptions?.plugins?.forEach((plugin) =>\n\t\t\t\t\t\t\tplugin.registerAdditionalTrigger?.(() => application.tick())\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn scope.createRootSlice<RootState>(initialState, storeOptions);\n\t\t\t\t\t},\n\t\t\t\t\tdeps: [Scope, ApplicationRef],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tprovide: facade,\n\t\t\t\t\tuseClass: facade,\n\t\t\t\t\tdeps: [ROOT_STORE, Scope],\n\t\t\t\t},\n\t\t\t\t...effectServices.map(\n\t\t\t\t\t(effectService) =>\n\t\t\t\t\t\t({\n\t\t\t\t\t\t\tprovide: TINYSLICE_EFFECT_SERVICES,\n\t\t\t\t\t\t\tuseClass: effectService,\n\t\t\t\t\t\t\tmulti: true,\n\t\t\t\t\t\t} as Provider)\n\t\t\t\t),\n\t\t\t],\n\t\t};\n\t}\n\n\t/**\n\t * TODO: deal with nested features!\n\t */\n\tpublic static forFeature<State>(\n\t\tkey: string,\n\t\tinitialState: State,\n\t\treducers: ReducerConfiguration<State>[] = [],\n\t\teffectServices: Type<unknown>[],\n\t\tfacade: new (slice: Slice<unknown, State>, scope: Scope) => unknown\n\t): ModuleWithProviders<TinySliceModule> {\n\t\tconst featureToken = new InjectionToken<Slice<unknown, State>>(key);\n\t\treturn {\n\t\t\tngModule: TinySliceModule,\n\t\t\tproviders: [\n\t\t\t\t{\n\t\t\t\t\tprovide: featureToken,\n\t\t\t\t\tuseFactory: (rootStore: RootSlice<unknown>) =>\n\t\t\t\t\t\trootStore.addSlice<State, string, string>(key, initialState, { reducers }),\n\t\t\t\t\tdeps: [ROOT_STORE],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tprovide: facade,\n\t\t\t\t\tuseClass: facade,\n\t\t\t\t\tdeps: [featureToken, Scope],\n\t\t\t\t},\n\t\t\t\t...effectServices.map(\n\t\t\t\t\t(effectService) =>\n\t\t\t\t\t\t({\n\t\t\t\t\t\t\tprovide: TINYSLICE_EFFECT_SERVICES,\n\t\t\t\t\t\t\tuseClass: effectService,\n\t\t\t\t\t\t\tmulti: true,\n\t\t\t\t\t\t} as Provider)\n\t\t\t\t),\n\t\t\t],\n\t\t};\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}