@progressive-development/pd-spa-helper 0.8.22 → 0.9.1

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.
Files changed (276) hide show
  1. package/LICENSE +2 -21
  2. package/dist/auth/AuthController.d.ts +37 -0
  3. package/dist/auth/AuthController.d.ts.map +1 -0
  4. package/dist/auth/AuthController.js +65 -0
  5. package/dist/auth/auth-directives.d.ts +59 -0
  6. package/dist/auth/auth-directives.d.ts.map +1 -0
  7. package/dist/auth/auth-directives.js +81 -0
  8. package/dist/auth/auth-utils.d.ts +45 -0
  9. package/dist/auth/auth-utils.d.ts.map +1 -0
  10. package/dist/auth/auth-utils.js +42 -0
  11. package/dist/auth/index.d.ts +7 -0
  12. package/dist/auth/index.d.ts.map +1 -0
  13. package/dist/components/default-login/DefaultLogin.d.ts +15 -0
  14. package/dist/components/default-login/DefaultLogin.d.ts.map +1 -0
  15. package/dist/components/default-login/DefaultLogin.js +120 -0
  16. package/dist/components/default-not-found/DefaultNotFound.d.ts +6 -0
  17. package/dist/components/default-not-found/DefaultNotFound.d.ts.map +1 -0
  18. package/dist/{defaultpage/default-not-found.js → components/default-not-found/DefaultNotFound.js} +15 -8
  19. package/dist/components/pd-section-page/PdSectionPage.d.ts +55 -0
  20. package/dist/components/pd-section-page/PdSectionPage.d.ts.map +1 -0
  21. package/dist/components/pd-section-page/PdSectionPage.js +40 -0
  22. package/dist/components/pd-spa-helper/PdSpaHelper.d.ts +160 -0
  23. package/dist/components/pd-spa-helper/PdSpaHelper.d.ts.map +1 -0
  24. package/dist/components/pd-spa-helper/PdSpaHelper.js +651 -0
  25. package/dist/components/pd-spa-helper/controllers/ScrollController.d.ts +77 -0
  26. package/dist/components/pd-spa-helper/controllers/ScrollController.d.ts.map +1 -0
  27. package/dist/components/pd-spa-helper/controllers/ScrollController.js +102 -0
  28. package/dist/components/pd-spa-helper/spa-config.d.ts +87 -0
  29. package/dist/components/pd-spa-helper/spa-config.d.ts.map +1 -0
  30. package/dist/components/pd-spa-helper/spa-config.js +167 -0
  31. package/dist/components/pd-spa-helper/spa-events.d.ts +121 -0
  32. package/dist/components/pd-spa-helper/spa-events.d.ts.map +1 -0
  33. package/dist/components/pd-spa-helper/spa-events.js +18 -0
  34. package/dist/db/index.d.ts +3 -0
  35. package/dist/db/index.d.ts.map +1 -0
  36. package/dist/{store → db}/indexDB.d.ts +9 -9
  37. package/dist/db/indexDB.d.ts.map +1 -0
  38. package/dist/{store → db}/indexDB.js +18 -27
  39. package/dist/generated/locale-wrapper/be-wrapper.js +10 -10
  40. package/dist/generated/locale-wrapper/de-wrapper.js +10 -10
  41. package/dist/generated/locale-wrapper/en-wrapper.js +10 -10
  42. package/dist/generated/locales/be.d.ts +1 -15
  43. package/dist/generated/locales/be.d.ts.map +1 -1
  44. package/dist/generated/locales/be.js +3 -18
  45. package/dist/generated/locales/de.d.ts +1 -15
  46. package/dist/generated/locales/de.d.ts.map +1 -1
  47. package/dist/generated/locales/de.js +3 -18
  48. package/dist/generated/locales/en.d.ts +1 -15
  49. package/dist/generated/locales/en.d.ts.map +1 -1
  50. package/dist/generated/locales/en.js +3 -18
  51. package/dist/helper/logger.d.ts +11 -12
  52. package/dist/helper/logger.d.ts.map +1 -1
  53. package/dist/helper/logger.js +12 -53
  54. package/dist/helper/offline-watcher-helper.js +5 -6
  55. package/dist/helper/refresh-id-token.d.ts.map +1 -1
  56. package/dist/helper/refresh-id-token.js +10 -8
  57. package/dist/index.d.ts +31 -29
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +32 -91
  60. package/dist/model/index.d.ts +4 -0
  61. package/dist/model/index.d.ts.map +1 -0
  62. package/dist/model/spa-model.d.ts +14 -15
  63. package/dist/model/spa-model.d.ts.map +1 -1
  64. package/dist/model/spa-model.js +2 -4
  65. package/dist/router/PdRouterService.d.ts +4 -1
  66. package/dist/router/PdRouterService.d.ts.map +1 -1
  67. package/dist/router/PdRouterService.js +48 -28
  68. package/dist/router/index.d.ts +3 -0
  69. package/dist/router/index.d.ts.map +1 -0
  70. package/dist/screen-size/ScreenSizeController.d.ts +34 -0
  71. package/dist/screen-size/ScreenSizeController.d.ts.map +1 -0
  72. package/dist/screen-size/ScreenSizeController.js +58 -0
  73. package/dist/screen-size/ScreenSizeService.d.ts +49 -0
  74. package/dist/screen-size/ScreenSizeService.d.ts.map +1 -0
  75. package/dist/screen-size/ScreenSizeService.js +107 -0
  76. package/dist/screen-size/index.d.ts +13 -0
  77. package/dist/screen-size/index.d.ts.map +1 -0
  78. package/dist/screen-size/responsive-directives.d.ts +59 -0
  79. package/dist/screen-size/responsive-directives.d.ts.map +1 -0
  80. package/dist/screen-size/responsive-directives.js +71 -0
  81. package/dist/screen-size/types.d.ts +44 -0
  82. package/dist/screen-size/types.d.ts.map +1 -0
  83. package/dist/service-provider/ServiceRegistry.d.ts +67 -0
  84. package/dist/service-provider/ServiceRegistry.d.ts.map +1 -0
  85. package/dist/service-provider/ServiceRegistry.js +76 -0
  86. package/dist/service-provider/function-utils.d.ts +55 -0
  87. package/dist/service-provider/function-utils.d.ts.map +1 -0
  88. package/dist/service-provider/function-utils.js +30 -0
  89. package/dist/service-provider/index.d.ts +10 -0
  90. package/dist/service-provider/index.d.ts.map +1 -0
  91. package/dist/service-provider/interfaces/IAuthProvider.d.ts +68 -0
  92. package/dist/service-provider/interfaces/IAuthProvider.d.ts.map +1 -0
  93. package/dist/service-provider/interfaces/IDatabaseProvider.d.ts +75 -0
  94. package/dist/service-provider/interfaces/IDatabaseProvider.d.ts.map +1 -0
  95. package/dist/service-provider/interfaces/IFunctionProvider.d.ts +49 -0
  96. package/dist/service-provider/interfaces/IFunctionProvider.d.ts.map +1 -0
  97. package/dist/service-provider/interfaces/IStorageProvider.d.ts +118 -0
  98. package/dist/service-provider/interfaces/IStorageProvider.d.ts.map +1 -0
  99. package/dist/service-provider/interfaces/ServiceProvider.d.ts +24 -0
  100. package/dist/service-provider/interfaces/ServiceProvider.d.ts.map +1 -0
  101. package/dist/service-provider/interfaces/common.d.ts +5 -0
  102. package/dist/service-provider/interfaces/common.d.ts.map +1 -0
  103. package/dist/service-provider/service-provider-model.d.ts +26 -7
  104. package/dist/service-provider/service-provider-model.d.ts.map +1 -1
  105. package/dist/service-provider/service-provider-model.js +2 -5
  106. package/dist/services/fire-once-service.d.ts +35 -0
  107. package/dist/services/fire-once-service.d.ts.map +1 -0
  108. package/dist/services/fire-once-service.js +61 -0
  109. package/dist/store/async-action-effects.d.ts +179 -0
  110. package/dist/store/async-action-effects.d.ts.map +1 -0
  111. package/dist/store/async-action-effects.js +97 -0
  112. package/dist/store/async-action-utils.d.ts +151 -0
  113. package/dist/store/async-action-utils.d.ts.map +1 -0
  114. package/dist/store/async-action-utils.js +41 -0
  115. package/dist/store/index.d.ts +9 -0
  116. package/dist/store/index.d.ts.map +1 -0
  117. package/dist/store/mini-rx.store.d.ts.map +1 -1
  118. package/dist/store/mini-rx.store.js +7 -10
  119. package/dist/store/spa-app-actions.d.ts +5 -22
  120. package/dist/store/spa-app-actions.d.ts.map +1 -1
  121. package/dist/store/spa-app-actions.js +7 -23
  122. package/dist/store/spa-app-effects.d.ts +0 -17
  123. package/dist/store/spa-app-effects.d.ts.map +1 -1
  124. package/dist/store/spa-app-effects.js +8 -49
  125. package/dist/store/spa-app-reducer.d.ts +5 -10
  126. package/dist/store/spa-app-reducer.d.ts.map +1 -1
  127. package/dist/store/spa-app-reducer.js +26 -21
  128. package/dist/store/spa-app-selector.d.ts +2 -2
  129. package/dist/store/spa-app-selector.d.ts.map +1 -1
  130. package/dist/store/spa-app-selector.js +5 -11
  131. package/dist/stories/introduction.stories.d.ts +11 -0
  132. package/dist/stories/introduction.stories.d.ts.map +1 -0
  133. package/package.json +36 -53
  134. package/dist/PdSpaHelper.d.ts +0 -83
  135. package/dist/PdSpaHelper.d.ts.map +0 -1
  136. package/dist/PdSpaHelper.js +0 -496
  137. package/dist/defaultpage/default-confirm-popup.d.ts +0 -19
  138. package/dist/defaultpage/default-confirm-popup.d.ts.map +0 -1
  139. package/dist/defaultpage/default-confirm-popup.js +0 -73
  140. package/dist/defaultpage/default-dialog-popup.d.ts +0 -19
  141. package/dist/defaultpage/default-dialog-popup.d.ts.map +0 -1
  142. package/dist/defaultpage/default-dialog-popup.js +0 -103
  143. package/dist/defaultpage/default-login.d.ts +0 -6
  144. package/dist/defaultpage/default-login.d.ts.map +0 -1
  145. package/dist/defaultpage/default-login.js +0 -33
  146. package/dist/defaultpage/default-not-found.d.ts +0 -6
  147. package/dist/defaultpage/default-not-found.d.ts.map +0 -1
  148. package/dist/defaultpage/default-popup.d.ts +0 -7
  149. package/dist/defaultpage/default-popup.d.ts.map +0 -1
  150. package/dist/defaultpage/default-popup.js +0 -23
  151. package/dist/defaultpage/default-step-address.d.ts +0 -14
  152. package/dist/defaultpage/default-step-address.d.ts.map +0 -1
  153. package/dist/defaultpage/default-step-address.js +0 -78
  154. package/dist/defaultpage/default-step-summary.d.ts +0 -28
  155. package/dist/defaultpage/default-step-summary.d.ts.map +0 -1
  156. package/dist/defaultpage/default-step-summary.js +0 -66
  157. package/dist/defaultpage/default-view-page.d.ts +0 -10
  158. package/dist/defaultpage/default-view-page.d.ts.map +0 -1
  159. package/dist/defaultpage/default-view-page.js +0 -67
  160. package/dist/defaultpage/default-wizard.d.ts +0 -37
  161. package/dist/defaultpage/default-wizard.d.ts.map +0 -1
  162. package/dist/defaultpage/default-wizard.js +0 -264
  163. package/dist/defaultpage/pd-default-wizard-step.d.ts +0 -58
  164. package/dist/defaultpage/pd-default-wizard-step.d.ts.map +0 -1
  165. package/dist/defaultpage/pd-default-wizard-step.js +0 -147
  166. package/dist/generated/locale-wrapper/be-wrapper.d.ts +0 -62
  167. package/dist/generated/locale-wrapper/be-wrapper.d.ts.map +0 -1
  168. package/dist/generated/locale-wrapper/de-wrapper.d.ts +0 -62
  169. package/dist/generated/locale-wrapper/de-wrapper.d.ts.map +0 -1
  170. package/dist/generated/locale-wrapper/en-wrapper.d.ts +0 -62
  171. package/dist/generated/locale-wrapper/en-wrapper.d.ts.map +0 -1
  172. package/dist/helper/blob-helper.d.ts +0 -3
  173. package/dist/helper/blob-helper.d.ts.map +0 -1
  174. package/dist/helper/blob-helper.js +0 -37
  175. package/dist/helper/date-helper.d.ts +0 -27
  176. package/dist/helper/date-helper.d.ts.map +0 -1
  177. package/dist/helper/date-helper.js +0 -138
  178. package/dist/helper/locale-format.d.ts +0 -4
  179. package/dist/helper/locale-format.d.ts.map +0 -1
  180. package/dist/helper/locale-format.js +0 -19
  181. package/dist/helper/number-helper.d.ts +0 -2
  182. package/dist/helper/number-helper.d.ts.map +0 -1
  183. package/dist/helper/number-helper.js +0 -14
  184. package/dist/helper/price-helper.d.ts +0 -5
  185. package/dist/helper/price-helper.d.ts.map +0 -1
  186. package/dist/helper/price-helper.js +0 -25
  187. package/dist/helper/text-helper.d.ts +0 -3
  188. package/dist/helper/text-helper.d.ts.map +0 -1
  189. package/dist/helper/text-helper.js +0 -6
  190. package/dist/popup/wizard-close-popup.d.ts +0 -11
  191. package/dist/popup/wizard-close-popup.d.ts.map +0 -1
  192. package/dist/popup/wizard-close-popup.js +0 -63
  193. package/dist/popup/wizard-reload-popup.d.ts +0 -14
  194. package/dist/popup/wizard-reload-popup.d.ts.map +0 -1
  195. package/dist/popup/wizard-reload-popup.js +0 -76
  196. package/dist/service-provider/firebase/auth.d.ts +0 -19
  197. package/dist/service-provider/firebase/auth.d.ts.map +0 -1
  198. package/dist/service-provider/firebase/auth.js +0 -69
  199. package/dist/service-provider/firebase/firestorage-client.d.ts +0 -22
  200. package/dist/service-provider/firebase/firestorage-client.d.ts.map +0 -1
  201. package/dist/service-provider/firebase/firestorage-client.js +0 -237
  202. package/dist/service-provider/firebase/firestore-client.d.ts +0 -12
  203. package/dist/service-provider/firebase/firestore-client.d.ts.map +0 -1
  204. package/dist/service-provider/firebase/firestore-client.js +0 -26
  205. package/dist/service-provider/firebase/functions-client.d.ts +0 -10
  206. package/dist/service-provider/firebase/functions-client.d.ts.map +0 -1
  207. package/dist/service-provider/firebase/functions-client.js +0 -64
  208. package/dist/service-provider/firebase/messagingFirebaseClient.d.ts +0 -9
  209. package/dist/service-provider/firebase/messagingFirebaseClient.d.ts.map +0 -1
  210. package/dist/service-provider/firebase/messagingFirebaseClient.js +0 -73
  211. package/dist/service-provider/mock/auth.d.ts +0 -6
  212. package/dist/service-provider/mock/auth.d.ts.map +0 -1
  213. package/dist/service-provider/mock/auth.js +0 -65
  214. package/dist/service-provider/mock/function-client.d.ts +0 -7
  215. package/dist/service-provider/mock/function-client.d.ts.map +0 -1
  216. package/dist/service-provider/mock/function-client.js +0 -32
  217. package/dist/service-provider/mock/storage-client.d.ts +0 -11
  218. package/dist/service-provider/mock/storage-client.d.ts.map +0 -1
  219. package/dist/service-provider/mock/storage-client.js +0 -110
  220. package/dist/service-provider/service-provider-impl.d.ts +0 -27
  221. package/dist/service-provider/service-provider-impl.d.ts.map +0 -1
  222. package/dist/service-provider/service-provider-impl.js +0 -241
  223. package/dist/store/indexDB.d.ts.map +0 -1
  224. package/dist/stories/address-edit.stories.d.ts +0 -27
  225. package/dist/stories/address-edit.stories.d.ts.map +0 -1
  226. package/dist/stories/address-new.stories.d.ts +0 -33
  227. package/dist/stories/address-new.stories.d.ts.map +0 -1
  228. package/dist/stories/default-confirm-popup.stories.d.ts +0 -24
  229. package/dist/stories/default-confirm-popup.stories.d.ts.map +0 -1
  230. package/dist/stories/default-dialog-popup.stories.d.ts +0 -23
  231. package/dist/stories/default-dialog-popup.stories.d.ts.map +0 -1
  232. package/dist/stories/default-login.stories.d.ts +0 -10
  233. package/dist/stories/default-login.stories.d.ts.map +0 -1
  234. package/dist/stories/default-popup.stories.d.ts +0 -9
  235. package/dist/stories/default-popup.stories.d.ts.map +0 -1
  236. package/dist/stories/pd-loading-state.stories.d.ts +0 -30
  237. package/dist/stories/pd-loading-state.stories.d.ts.map +0 -1
  238. package/dist/stories/pd-toast.stories.d.ts +0 -27
  239. package/dist/stories/pd-toast.stories.d.ts.map +0 -1
  240. package/dist/stories/routing.stories.d.ts +0 -24
  241. package/dist/stories/routing.stories.d.ts.map +0 -1
  242. package/dist/stories/test-impls/address-test.d.ts +0 -6
  243. package/dist/stories/test-impls/address-test.d.ts.map +0 -1
  244. package/dist/stories/test-impls/test-mock-app.d.ts +0 -15
  245. package/dist/stories/test-impls/test-mock-app.d.ts.map +0 -1
  246. package/dist/stories/test-impls/test-pages/test-home-page.d.ts +0 -7
  247. package/dist/stories/test-impls/test-pages/test-home-page.d.ts.map +0 -1
  248. package/dist/stories/test-impls/test-pages/test-not-found-page.d.ts +0 -5
  249. package/dist/stories/test-impls/test-pages/test-not-found-page.d.ts.map +0 -1
  250. package/dist/stories/test-impls/test-pages/test-wizard-step.d.ts +0 -17
  251. package/dist/stories/test-impls/test-pages/test-wizard-step.d.ts.map +0 -1
  252. package/dist/stories/test-impls/test-pages/test-wizard.d.ts +0 -16
  253. package/dist/stories/test-impls/test-pages/test-wizard.d.ts.map +0 -1
  254. package/dist/stories/test-impls/test-popups/default-confirm-popup-test-error.d.ts +0 -8
  255. package/dist/stories/test-impls/test-popups/default-confirm-popup-test-error.d.ts.map +0 -1
  256. package/dist/stories/test-impls/test-popups/default-confirm-popup-test-info.d.ts +0 -8
  257. package/dist/stories/test-impls/test-popups/default-confirm-popup-test-info.d.ts.map +0 -1
  258. package/dist/stories/test-impls/test-popups/default-confirm-popup-test-warn.d.ts +0 -8
  259. package/dist/stories/test-impls/test-popups/default-confirm-popup-test-warn.d.ts.map +0 -1
  260. package/dist/stories/test-impls/test-popups/default-dialog-popup-test.d.ts +0 -13
  261. package/dist/stories/test-impls/test-popups/default-dialog-popup-test.d.ts.map +0 -1
  262. package/dist/stories/test-impls/test-popups/default-popup-test.d.ts +0 -5
  263. package/dist/stories/test-impls/test-popups/default-popup-test.d.ts.map +0 -1
  264. package/dist/stories/test-wizard-step.stories.d.ts +0 -11
  265. package/dist/stories/test-wizard-step.stories.d.ts.map +0 -1
  266. package/dist/stories/test-wizard.stories.d.ts +0 -9
  267. package/dist/stories/test-wizard.stories.d.ts.map +0 -1
  268. package/dist/tmpown/pd-loading-state.d.ts +0 -9
  269. package/dist/tmpown/pd-loading-state.d.ts.map +0 -1
  270. package/dist/tmpown/pd-loading-state.js +0 -196
  271. package/dist/tmpown/pd-login.d.ts +0 -13
  272. package/dist/tmpown/pd-login.d.ts.map +0 -1
  273. package/dist/tmpown/pd-login.js +0 -165
  274. package/dist/tmpown/pd-toast.d.ts +0 -13
  275. package/dist/tmpown/pd-toast.d.ts.map +0 -1
  276. package/dist/tmpown/pd-toast.js +0 -128
@@ -0,0 +1,151 @@
1
+ import { ActionCreator, Action } from 'ts-action';
2
+ /**
3
+ * Configuration for loading state and toast messages.
4
+ */
5
+ export interface AsyncActionConfig {
6
+ /** Unique key for identifying the loading state */
7
+ actionKey: string;
8
+ /** Text shown during loading */
9
+ loadingTxt: string;
10
+ /** Text shown on success (empty string = no toast) */
11
+ successTxt?: string;
12
+ /** Show modal overlay during loading */
13
+ modal?: boolean;
14
+ /** Show small background loader */
15
+ smallBackground?: boolean;
16
+ /** Duration for success toast in ms */
17
+ successDuration?: number;
18
+ }
19
+ /**
20
+ * Typed action creator that preserves payload type for ts-action compatibility.
21
+ * This enables proper type inference with on() and ofType().
22
+ */
23
+ type TypedActionCreator<P> = ActionCreator<string, (payload: P) => {
24
+ type: string;
25
+ payload: P;
26
+ }>;
27
+ /**
28
+ * Action creator without payload.
29
+ */
30
+ type TypedActionCreatorVoid = ActionCreator<string, () => {
31
+ type: string;
32
+ }>;
33
+ /**
34
+ * Base interface for async action groups.
35
+ * Use this type for arrays containing groups with different payload types.
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * const allGroups: AsyncActionGroupBase[] = [
40
+ * loadProfile, // AsyncActionGroup<void, ProfileData>
41
+ * sendRequest, // AsyncActionGroup<RequestData, void>
42
+ * ];
43
+ * ```
44
+ */
45
+ export interface AsyncActionGroupBase {
46
+ /** Loading state and toast configuration */
47
+ config: AsyncActionConfig;
48
+ /** Base action type (e.g., "LOAD_PROFILE") */
49
+ baseType: string;
50
+ /** All action types for this group */
51
+ types: {
52
+ action: string;
53
+ success: string;
54
+ fail: string;
55
+ };
56
+ }
57
+ /**
58
+ * An async action group containing action, success, and fail action creators
59
+ * plus the associated configuration.
60
+ *
61
+ * The action creators preserve their full ts-action types for compatibility
62
+ * with on() and ofType().
63
+ */
64
+ export interface AsyncActionGroup<TPayload = void, TResult = unknown, TError = Error> extends AsyncActionGroupBase {
65
+ /** The initiating action creator - typed for ts-action compatibility */
66
+ action: TPayload extends void ? TypedActionCreatorVoid : TypedActionCreator<TPayload>;
67
+ /** The success action creator - typed for ts-action compatibility */
68
+ success: TypedActionCreator<TResult>;
69
+ /** The fail action creator - typed for ts-action compatibility */
70
+ fail: TypedActionCreator<TError>;
71
+ }
72
+ /**
73
+ * Options for creating an async action group.
74
+ * actionKey is derived from baseType if not provided.
75
+ */
76
+ export type AsyncActionOptions = Omit<AsyncActionConfig, "actionKey"> & {
77
+ actionKey?: string;
78
+ };
79
+ /**
80
+ * Creates an async action group with action/success/fail creators and config.
81
+ *
82
+ * @param baseType - Base action type (e.g., "LOAD_PROFILE")
83
+ * @param options - Loading state and toast configuration
84
+ * @returns AsyncActionGroup with all creators and config
85
+ *
86
+ * @example
87
+ * ```typescript
88
+ * // Without payload on action
89
+ * export const loadProfile = createAsyncAction<ProfileData>("LOAD_PROFILE", {
90
+ * loadingTxt: msg("Loading profile...", { id: "..." }),
91
+ * modal: true,
92
+ * });
93
+ *
94
+ * // With typed payloads
95
+ * export const updateProfile = createAsyncActionGroup<
96
+ * UpdateData, // Action payload
97
+ * ProfileData, // Success payload
98
+ * >("UPDATE_PROFILE", {
99
+ * loadingTxt: "Updating...",
100
+ * successTxt: "Profile updated!",
101
+ * modal: true,
102
+ * });
103
+ *
104
+ * // Usage in effect with ofType():
105
+ * actions$.pipe(
106
+ * ofType(loadProfile.action),
107
+ * mergeMap(() => profileService.load().pipe(
108
+ * map((data) => loadProfile.success(data)),
109
+ * catchError((err) => of(loadProfile.fail(err)))
110
+ * ))
111
+ * );
112
+ *
113
+ * // Usage in reducer with on():
114
+ * reducer(
115
+ * initialState,
116
+ * on(loadProfile.success, (state, { payload }) => ({
117
+ * ...state,
118
+ * profile: payload
119
+ * }))
120
+ * );
121
+ * ```
122
+ */
123
+ export declare function createAsyncActionGroup<TPayload = void, TResult = unknown, TError = Error>(baseType: string, options: AsyncActionOptions): AsyncActionGroup<TPayload, TResult, TError>;
124
+ /**
125
+ * Creates an async action group without payload on the initiating action.
126
+ * This is a convenience wrapper for the common case.
127
+ *
128
+ * @example
129
+ * ```typescript
130
+ * export const loadProfile = createAsyncAction<ProfileData>("LOAD_PROFILE", {
131
+ * loadingTxt: "Loading...",
132
+ * modal: true,
133
+ * });
134
+ *
135
+ * // loadProfile.action() - no payload
136
+ * // loadProfile.success(data) - ProfileData payload
137
+ * // loadProfile.fail(error) - Error payload
138
+ * ```
139
+ */
140
+ export declare function createAsyncAction<TResult = unknown, TError = Error>(baseType: string, options: AsyncActionOptions): AsyncActionGroup<void, TResult, TError>;
141
+ /**
142
+ * Type guard to check if an action belongs to an async action group.
143
+ */
144
+ export declare function isActionFromGroup(actionObj: Action, group: AsyncActionGroupBase): boolean;
145
+ /**
146
+ * Gets the config for an action from a list of groups.
147
+ * Returns undefined if no matching group is found.
148
+ */
149
+ export declare function getConfigForAction(actionObj: Action, groups: AsyncActionGroupBase[]): AsyncActionConfig | undefined;
150
+ export {};
151
+ //# sourceMappingURL=async-action-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-action-utils.d.ts","sourceRoot":"","sources":["../../src/store/async-action-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAmB,aAAa,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAMxC;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mCAAmC;IACnC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uCAAuC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,KAAK,kBAAkB,CAAC,CAAC,IAAI,aAAa,CACxC,MAAM,EACN,CAAC,OAAO,EAAE,CAAC,KAAK;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,CAAC,CAAA;CAAE,CAC7C,CAAC;AAEF;;GAEG;AACH,KAAK,sBAAsB,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE5E;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,oBAAoB;IACnC,4CAA4C;IAC5C,MAAM,EAAE,iBAAiB,CAAC;IAC1B,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,KAAK,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB,CAC/B,QAAQ,GAAG,IAAI,EACf,OAAO,GAAG,OAAO,EACjB,MAAM,GAAG,KAAK,CACd,SAAQ,oBAAoB;IAC5B,wEAAwE;IACxE,MAAM,EAAE,QAAQ,SAAS,IAAI,GACzB,sBAAsB,GACtB,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACjC,qEAAqE;IACrE,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACrC,kEAAkE;IAClE,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,EAAE,WAAW,CAAC,GAAG;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAMF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,GAAG,IAAI,EACf,OAAO,GAAG,OAAO,EACjB,MAAM,GAAG,KAAK,EAEd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,kBAAkB,GAC1B,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAuC7C;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAG,OAAO,EAAE,MAAM,GAAG,KAAK,EACjE,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,kBAAkB,GAC1B,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAEzC;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAMT;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,oBAAoB,EAAE,GAC7B,iBAAiB,GAAG,SAAS,CAG/B"}
@@ -0,0 +1,41 @@
1
+ import { action, payload } from 'ts-action';
2
+
3
+ function createAsyncActionGroup(baseType, options) {
4
+ const types = {
5
+ action: baseType,
6
+ success: `${baseType}_SUCCESS`,
7
+ fail: `${baseType}_FAIL`
8
+ };
9
+ const actionKey = options.actionKey || baseType.toLowerCase().replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
10
+ const config = {
11
+ actionKey,
12
+ loadingTxt: options.loadingTxt,
13
+ successTxt: options.successTxt,
14
+ modal: options.modal,
15
+ smallBackground: options.smallBackground,
16
+ successDuration: options.successDuration
17
+ };
18
+ const actionCreator = action(types.action, payload());
19
+ const successCreator = action(types.success, payload());
20
+ const failCreator = action(types.fail, payload());
21
+ return {
22
+ action: actionCreator,
23
+ success: successCreator,
24
+ fail: failCreator,
25
+ config,
26
+ baseType,
27
+ types
28
+ };
29
+ }
30
+ function createAsyncAction(baseType, options) {
31
+ return createAsyncActionGroup(baseType, options);
32
+ }
33
+ function isActionFromGroup(actionObj, group) {
34
+ return actionObj.type === group.types.action || actionObj.type === group.types.success || actionObj.type === group.types.fail;
35
+ }
36
+ function getConfigForAction(actionObj, groups) {
37
+ const group = groups.find((g) => isActionFromGroup(actionObj, g));
38
+ return group?.config;
39
+ }
40
+
41
+ export { createAsyncAction, createAsyncActionGroup, getConfigForAction, isActionFromGroup };
@@ -0,0 +1,9 @@
1
+ export { pdStore, initializeStore } from './mini-rx.store.js';
2
+ export { initIndexDBSuccess, loginSuccess, logoutSuccess, nologin, routeAction, updateInternetOffline, addLoadingState, changeSubTask, removeLoadingState, updateNewNotificationToken, updateNewNotificationTokenSuccess, updateNewNotificationTokenFail, } from './spa-app-actions.js';
3
+ export { getLoadingSelector, getOfflineSelector, getInitStatusSelector, selectAuthUser, } from './spa-app-selector.js';
4
+ export { setRouteElement } from './spa-app-effects.js';
5
+ export { spaAppReducer } from './spa-app-reducer.js';
6
+ export type { SpaAppState } from './spa-app-reducer.js';
7
+ export * as SpaActions from './spa-app-actions.js';
8
+ export * as SpaSelectors from './spa-app-selector.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,OAAO,EACP,WAAW,EACX,qBAAqB,EACrB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,0BAA0B,EAC1B,iCAAiC,EACjC,8BAA8B,GAC/B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,cAAc,GACf,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD,OAAO,KAAK,UAAU,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,YAAY,MAAM,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"mini-rx.store.d.ts","sourceRoot":"","sources":["../../src/store/mini-rx.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,EAIN,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAyB5E,eAAO,MAAM,eAAe,GAAI,OAAO,WAAW,SA0BjD,CAAC;AAEF,eAAO,MAAM,OAAO,QAAO,KAAc,CAAC"}
1
+ {"version":3,"file":"mini-rx.store.d.ts","sourceRoot":"","sources":["../../src/store/mini-rx.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,EAIN,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAmB5E,eAAO,MAAM,eAAe,GAAI,OAAO,WAAW,SA0BjD,CAAC;AAEF,eAAO,MAAM,OAAO,QAAO,KAAc,CAAC"}
@@ -1,13 +1,12 @@
1
- import { configureStore, LoggerExtension, ReduxDevtoolsExtension, ImmutableStateExtension } from "mini-rx-store";
2
- import { spaAppReducer } from "./spa-app-reducer.js";
3
- import { appRouteEffect, appToastEffect, registerNotificationTokenSuccessEffect } from "./spa-app-effects.js";
4
- import { defaultLogger } from "../helper/logger.js";
1
+ import { configureStore, LoggerExtension, ReduxDevtoolsExtension, ImmutableStateExtension } from 'mini-rx-store';
2
+ import { spaAppReducer } from './spa-app-reducer.js';
3
+ import { appRouteEffect } from './spa-app-effects.js';
4
+ import { defaultLogger } from '../helper/logger.js';
5
+
5
6
  let store;
6
7
  const registerEffects = (effects) => {
7
8
  if (store) {
8
9
  store.effect(appRouteEffect);
9
- store.effect(appToastEffect);
10
- store.effect(registerNotificationTokenSuccessEffect);
11
10
  effects.forEach((effect) => store.effect(effect));
12
11
  } else {
13
12
  defaultLogger.error("Store is not initialized. Cannot register effects.");
@@ -35,7 +34,5 @@ const initializeStore = (param) => {
35
34
  }
36
35
  };
37
36
  const pdStore = () => store;
38
- export {
39
- initializeStore,
40
- pdStore
41
- };
37
+
38
+ export { initializeStore, pdStore };
@@ -1,18 +1,18 @@
1
- import { TemplateResult } from 'lit';
2
- import { AppUser, LoadingState, LoadingSubTask } from '../model/spa-model.js';
3
- export declare const initIndexDBSucess: (() => {
1
+ import { AppUser } from '../model/spa-model.js';
2
+ import { LoadingState, LoadingSubTask } from '@progressive-development/pd-content';
3
+ export declare const initIndexDBSuccess: (() => {
4
4
  type: "SPA_INIT_INDEX_DB_SUCCESS";
5
5
  }) & {
6
6
  type: "SPA_INIT_INDEX_DB_SUCCESS";
7
7
  };
8
- export declare const loginSucess: ((payload: AppUser) => {
8
+ export declare const loginSuccess: ((payload: AppUser) => {
9
9
  payload: AppUser;
10
10
  } & {
11
11
  type: "SPA_LOGIN_SUCCESS";
12
12
  }) & {
13
13
  type: "SPA_LOGIN_SUCCESS";
14
14
  };
15
- export declare const logoutSucess: (() => {
15
+ export declare const logoutSuccess: (() => {
16
16
  type: "SPA_LOGOUT_SUCCESS";
17
17
  }) & {
18
18
  type: "SPA_LOGOUT_SUCCESS";
@@ -29,23 +29,6 @@ export declare const routeAction: ((payload: string) => {
29
29
  }) & {
30
30
  type: "SPA_APP_ROUTE";
31
31
  };
32
- export declare const toastAction: ((payload: {
33
- txt: string | TemplateResult;
34
- isError: boolean;
35
- isSuccess: boolean;
36
- duration?: number;
37
- }) => {
38
- payload: {
39
- txt: string | TemplateResult;
40
- isError: boolean;
41
- isSuccess: boolean;
42
- duration?: number;
43
- };
44
- } & {
45
- type: "SPA_APP_TOAST";
46
- }) & {
47
- type: "SPA_APP_TOAST";
48
- };
49
32
  export declare const updateInternetOffline: ((payload: boolean) => {
50
33
  payload: boolean;
51
34
  } & {
@@ -1 +1 @@
1
- {"version":3,"file":"spa-app-actions.d.ts","sourceRoot":"","sources":["../../src/store/spa-app-actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAGrC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE9E,eAAO,MAAM,iBAAiB;;;;CAAsC,CAAC;AACrE,eAAO,MAAM,WAAW;;;;;;CAAkD,CAAC;AAC3E,eAAO,MAAM,YAAY;;;;CAA+B,CAAC;AACzD,eAAO,MAAM,OAAO;;;;CAAyB,CAAC;AAE9C,eAAO,MAAM,WAAW;;;;;;CAA6C,CAAC;AAEtE,eAAO,MAAM,WAAW;SAGf,MAAM,GAAG,cAAc;aACnB,OAAO;eACL,OAAO;eACP,MAAM;;;aAHZ,MAAM,GAAG,cAAc;iBACnB,OAAO;mBACL,OAAO;mBACP,MAAM;;;;;;CAEpB,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;CAGjC,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;CAG3B,CAAC;AACF,eAAO,MAAM,aAAa;qBAGL,MAAM;kBACT,cAAc;;;yBADX,MAAM;sBACT,cAAc;;;;;;CAE/B,CAAC;AACF,eAAO,MAAM,kBAAkB;;;;;;CAG9B,CAAC;AAEF,eAAO,MAAM,0BAA0B;oBAGnB,MAAM;;;wBAAN,MAAM;;;;;;CAEzB,CAAC;AACF,eAAO,MAAM,iCAAiC;oBAG1B,MAAM;;;wBAAN,MAAM;;;;;;CAEzB,CAAC;AACF,eAAO,MAAM,8BAA8B;;;;;;CAG1C,CAAC"}
1
+ {"version":3,"file":"spa-app-actions.d.ts","sourceRoot":"","sources":["../../src/store/spa-app-actions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACf,MAAM,qCAAqC,CAAC;AAE7C,eAAO,MAAM,kBAAkB;;;;CAAsC,CAAC;AACtE,eAAO,MAAM,YAAY;;;;;;CAAkD,CAAC;AAC5E,eAAO,MAAM,aAAa;;;;CAA+B,CAAC;AAC1D,eAAO,MAAM,OAAO;;;;CAAyB,CAAC;AAE9C,eAAO,MAAM,WAAW;;;;;;CAA6C,CAAC;AAEtE,eAAO,MAAM,qBAAqB;;;;;;CAGjC,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;CAG3B,CAAC;AACF,eAAO,MAAM,aAAa;qBAGL,MAAM;kBACT,cAAc;;;yBADX,MAAM;sBACT,cAAc;;;;;;CAE/B,CAAC;AACF,eAAO,MAAM,kBAAkB;;;;;;CAG9B,CAAC;AAEF,eAAO,MAAM,0BAA0B;oBAGnB,MAAM;;;wBAAN,MAAM;;;;;;CAEzB,CAAC;AACF,eAAO,MAAM,iCAAiC;oBAG1B,MAAM;;;wBAAN,MAAM;;;;;;CAEzB,CAAC;AACF,eAAO,MAAM,8BAA8B;;;;;;CAG1C,CAAC"}
@@ -1,13 +1,10 @@
1
- import { action, payload } from "ts-action";
2
- const initIndexDBSucess = action("SPA_INIT_INDEX_DB_SUCCESS");
3
- const loginSucess = action("SPA_LOGIN_SUCCESS", payload());
4
- const logoutSucess = action("SPA_LOGOUT_SUCCESS");
1
+ import { action, payload } from 'ts-action';
2
+
3
+ const initIndexDBSuccess = action("SPA_INIT_INDEX_DB_SUCCESS");
4
+ const loginSuccess = action("SPA_LOGIN_SUCCESS", payload());
5
+ const logoutSuccess = action("SPA_LOGOUT_SUCCESS");
5
6
  const nologin = action("SPA_NO_LOGIN");
6
7
  const routeAction = action("SPA_APP_ROUTE", payload());
7
- const toastAction = action(
8
- "SPA_APP_TOAST",
9
- payload()
10
- );
11
8
  const updateInternetOffline = action(
12
9
  "SPA_APP_UPDATE_INTERNET_OFFLINE",
13
10
  payload()
@@ -36,18 +33,5 @@ const updateNewNotificationTokenFail = action(
36
33
  "UPDATE_NOTIFICATION_TOKEN_FAIL",
37
34
  payload()
38
35
  );
39
- export {
40
- addLoadingState,
41
- changeSubTask,
42
- initIndexDBSucess,
43
- loginSucess,
44
- logoutSucess,
45
- nologin,
46
- removeLoadingState,
47
- routeAction,
48
- toastAction,
49
- updateInternetOffline,
50
- updateNewNotificationToken,
51
- updateNewNotificationTokenFail,
52
- updateNewNotificationTokenSuccess
53
- };
36
+
37
+ export { addLoadingState, changeSubTask, initIndexDBSuccess, loginSuccess, logoutSuccess, nologin, removeLoadingState, routeAction, updateInternetOffline, updateNewNotificationToken, updateNewNotificationTokenFail, updateNewNotificationTokenSuccess };
@@ -4,21 +4,4 @@ export declare const appRouteEffect: import('rxjs').Observable<{
4
4
  } & {
5
5
  type: "SPA_APP_ROUTE";
6
6
  }> & import('mini-rx-store/lib/models.js').HasEffectMetadata;
7
- export declare const appToastEffect: import('rxjs').Observable<{
8
- payload: {
9
- txt: string | import('lit-html').TemplateResult;
10
- isError: boolean;
11
- isSuccess: boolean;
12
- duration?: number;
13
- };
14
- } & {
15
- type: "SPA_APP_TOAST";
16
- }> & import('mini-rx-store/lib/models.js').HasEffectMetadata;
17
- export declare const registerNotificationTokenSuccessEffect: import('rxjs').Observable<{
18
- payload: {
19
- messagingToken: string;
20
- };
21
- } & {
22
- type: "UPDATE_NOTIFICATION_TOKEN_SUCCESS";
23
- }> & import('mini-rx-store/lib/models.js').HasEffectMetadata;
24
7
  //# sourceMappingURL=spa-app-effects.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spa-app-effects.d.ts","sourceRoot":"","sources":["../../src/store/spa-app-effects.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,eAAe,GAAI,OAAO,WAAW,SAEjD,CAAC;AAIF,eAAO,MAAM,cAAc;;;;4DAoB1B,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;4DAyB1B,CAAC;AAEF,eAAO,MAAM,sCAAsC;;;;;;4DAUlD,CAAC"}
1
+ {"version":3,"file":"spa-app-effects.d.ts","sourceRoot":"","sources":["../../src/store/spa-app-effects.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,eAAe,GAAI,OAAO,WAAW,SAEjD,CAAC;AAEF,eAAO,MAAM,cAAc;;;;4DAoB1B,CAAC"}
@@ -1,9 +1,9 @@
1
- import { createEffect, actions$ } from "mini-rx-store";
2
- import { tap } from "rxjs/operators";
3
- import { ofType } from "ts-action-operators";
4
- import { routeAction, toastAction, updateNewNotificationTokenSuccess } from "./spa-app-actions.js";
5
- import { NOTIFICATION_TOKEN } from "../service-provider/firebase/messagingFirebaseClient.js";
6
- import { defaultLogger } from "../helper/logger.js";
1
+ import { createEffect, actions$ } from 'mini-rx-store';
2
+ import { tap } from 'rxjs/operators';
3
+ import { ofType } from 'ts-action-operators';
4
+ import { routeAction } from './spa-app-actions.js';
5
+ import { defaultLogger } from '../helper/logger.js';
6
+
7
7
  let routeElement;
8
8
  const setRouteElement = (param) => {
9
9
  routeElement = param;
@@ -29,46 +29,5 @@ const appRouteEffect = createEffect(
29
29
  dispatch: false
30
30
  }
31
31
  );
32
- const appToastEffect = createEffect(
33
- actions$.pipe(
34
- ofType(toastAction),
35
- tap((action) => {
36
- if (!routeElement) {
37
- defaultLogger.error("No route element set for appToastEffect");
38
- } else {
39
- routeElement.dispatchEvent(
40
- new CustomEvent("toast-event", {
41
- detail: {
42
- txt: action.payload.txt,
43
- isSuccess: action.payload.isSuccess,
44
- isError: action.payload.isError,
45
- duration: action.payload.duration
46
- },
47
- bubbles: true,
48
- composed: true
49
- })
50
- );
51
- }
52
- })
53
- ),
54
- {
55
- dispatch: false
56
- }
57
- );
58
- const registerNotificationTokenSuccessEffect = createEffect(
59
- actions$.pipe(
60
- ofType(updateNewNotificationTokenSuccess),
61
- tap((action) => {
62
- localStorage.setItem(NOTIFICATION_TOKEN, action.payload.messagingToken);
63
- })
64
- ),
65
- {
66
- dispatch: false
67
- }
68
- );
69
- export {
70
- appRouteEffect,
71
- appToastEffect,
72
- registerNotificationTokenSuccessEffect,
73
- setRouteElement
74
- };
32
+
33
+ export { appRouteEffect, setRouteElement };
@@ -1,18 +1,13 @@
1
- import { AppUser, LoadingState } from '../model/spa-model.js';
1
+ import { AppUser } from '../model/spa-model.js';
2
+ import { LoadingState } from '@progressive-development/pd-content';
2
3
  export interface SpaAppState {
3
4
  offline?: boolean;
4
5
  loadingState: LoadingState[];
5
- lastRoutes?: any[];
6
+ /** History of visited route names */
7
+ lastRoutes?: string[];
6
8
  initIndexDB?: boolean;
7
9
  userLoginDone: boolean;
8
10
  user: AppUser | undefined;
9
11
  }
10
- export declare const spaAppReducer: import('ts-action').Reducer<{
11
- userLoginDone: boolean;
12
- offline?: boolean;
13
- loadingState: LoadingState[];
14
- lastRoutes?: any[];
15
- initIndexDB?: boolean;
16
- user: AppUser | undefined;
17
- }>;
12
+ export declare const spaAppReducer: import('ts-action').Reducer<SpaAppState>;
18
13
  //# sourceMappingURL=spa-app-reducer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spa-app-reducer.d.ts","sourceRoot":"","sources":["../../src/store/spa-app-reducer.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,YAAY,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;CAC3B;AAQD,eAAO,MAAM,aAAa;;cAdd,OAAO;kBACH,YAAY,EAAE;iBACf,GAAG,EAAE;kBACJ,OAAO;UAEf,OAAO,GAAG,SAAS;EAoE1B,CAAC"}
1
+ {"version":3,"file":"spa-app-reducer.d.ts","sourceRoot":"","sources":["../../src/store/spa-app-reducer.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAExE,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,YAAY,EAAE,CAAC;IAC7B,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;CAC3B;AAQD,eAAO,MAAM,aAAa,0CAoEzB,CAAC"}
@@ -1,5 +1,6 @@
1
- import { reducer, on } from "ts-action";
2
- import { updateInternetOffline, addLoadingState, changeSubTask, removeLoadingState, routeAction, initIndexDBSucess, loginSucess, nologin, logoutSucess } from "./spa-app-actions.js";
1
+ import { reducer, on } from 'ts-action';
2
+ import { updateInternetOffline, addLoadingState, changeSubTask, removeLoadingState, routeAction, initIndexDBSuccess, loginSuccess, nologin, logoutSuccess } from './spa-app-actions.js';
3
+
3
4
  const initialState = {
4
5
  loadingState: [],
5
6
  userLoginDone: false,
@@ -18,11 +19,10 @@ const spaAppReducer = reducer(
18
19
  on(changeSubTask, (state, { payload }) => ({
19
20
  ...state,
20
21
  loadingState: state.loadingState.map((ls) => {
21
- var _a;
22
22
  if (ls.actionKey === payload.loadingActionId) {
23
23
  return {
24
24
  ...ls,
25
- subTask: (_a = ls.subTask) == null ? void 0 : _a.map(
25
+ subTask: ls.subTask?.map(
26
26
  (subLs) => subLs.actionKey === payload.newTaskState.actionKey ? payload.newTaskState : subLs
27
27
  )
28
28
  };
@@ -30,35 +30,40 @@ const spaAppReducer = reducer(
30
30
  return ls;
31
31
  })
32
32
  })),
33
- on(removeLoadingState, (state, { payload }) => {
34
- var _a;
35
- return {
36
- ...state,
37
- loadingState: (_a = state.loadingState) == null ? void 0 : _a.filter((a) => a.actionKey !== payload)
38
- };
39
- }),
33
+ on(removeLoadingState, (state, { payload }) => ({
34
+ ...state,
35
+ loadingState: state.loadingState?.filter((a) => a.actionKey !== payload)
36
+ })),
40
37
  on(routeAction, (state, { payload }) => ({
41
38
  ...state,
42
39
  lastRoutes: [...state.lastRoutes || [], payload]
43
40
  })),
44
- on(initIndexDBSucess, (state) => ({
41
+ on(initIndexDBSuccess, (state) => ({
45
42
  ...state,
46
43
  initIndexDB: true
47
44
  })),
48
- on(loginSucess, (state, { payload }) => ({
45
+ on(loginSuccess, (state, { payload }) => ({
49
46
  ...state,
50
47
  userLoginDone: true,
51
48
  user: payload
52
49
  })),
53
50
  on(nologin, (state) => ({
54
51
  ...state,
55
- userLoginDone: true
52
+ userLoginDone: true,
53
+ user: void 0
56
54
  })),
57
- on(logoutSucess, () => ({
58
- ...initialState,
59
- userLoginDone: true
60
- }))
55
+ // NOTE: logoutSuccess is currently not used. Logout triggers onAuthStateChanged(null)
56
+ // which dispatches nologin(). This action is kept for future use cases where providers
57
+ // may not have an AuthStateChanged handler, or when explicit logout handling is needed
58
+ // (e.g., clearing additional state beyond user data).
59
+ on(
60
+ logoutSuccess,
61
+ () => ({
62
+ ...initialState,
63
+ userLoginDone: true,
64
+ user: void 0
65
+ })
66
+ )
61
67
  );
62
- export {
63
- spaAppReducer
64
- };
68
+
69
+ export { spaAppReducer };
@@ -1,11 +1,11 @@
1
- export declare const getLoadingSelector: import('mini-rx-store/lib/selector.js').Selector<object, import('../model/spa-model.js').LoadingState[]>;
1
+ export declare const getLoadingSelector: import('mini-rx-store/lib/selector.js').Selector<object, import('@progressive-development/pd-content').LoadingState[]>;
2
2
  export declare const getOfflineSelector: import('mini-rx-store/lib/selector.js').Selector<object, boolean>;
3
3
  export declare const getInitStatusSelector: import('mini-rx-store/lib/selector.js').Selector<object, {
4
4
  login: boolean;
5
5
  indexedDB: boolean | undefined;
6
6
  }>;
7
7
  export declare const selectAuthUser: import('mini-rx-store/lib/selector.js').Selector<object, {
8
- user: import('../model/spa-model.js').AppUser | undefined;
8
+ user: import('../index.js').AppUser | undefined;
9
9
  loginCheckFinish: boolean;
10
10
  }>;
11
11
  //# sourceMappingURL=spa-app-selector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spa-app-selector.d.ts","sourceRoot":"","sources":["../../src/store/spa-app-selector.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,kBAAkB,0GAuB9B,CAAC;AAEF,eAAO,MAAM,kBAAkB,mEAG9B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;EAMjC,CAAC;AAEF,eAAO,MAAM,cAAc;;;EAM1B,CAAC"}
1
+ {"version":3,"file":"spa-app-selector.d.ts","sourceRoot":"","sources":["../../src/store/spa-app-selector.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,kBAAkB,wHAqB9B,CAAC;AAEF,eAAO,MAAM,kBAAkB,mEAG9B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;EAMjC,CAAC;AAEF,eAAO,MAAM,cAAc;;;EAM1B,CAAC"}
@@ -1,13 +1,11 @@
1
- import { createFeatureStateSelector, createSelector } from "mini-rx-store";
1
+ import { createFeatureStateSelector, createSelector } from 'mini-rx-store';
2
+
2
3
  const getSpaAppFeatureState = createFeatureStateSelector("spaApp");
3
4
  const getLoadingSelector = createSelector(
4
5
  getSpaAppFeatureState,
5
6
  (state) => {
6
7
  const orderByCreation = [...state.loadingState].sort(
7
- (a, b) => {
8
- var _a, _b;
9
- return (((_a = a.creation) == null ? void 0 : _a.getMilliseconds()) || 0) - (((_b = b.creation) == null ? void 0 : _b.getMilliseconds()) || 0);
10
- }
8
+ (a, b) => (a.creation?.getTime() || 0) - (b.creation?.getTime() || 0)
11
9
  );
12
10
  const loadings = [];
13
11
  const mainLoading = orderByCreation.filter((a) => !a.smallBackground);
@@ -39,9 +37,5 @@ const selectAuthUser = createSelector(
39
37
  loginCheckFinish: state.userLoginDone
40
38
  })
41
39
  );
42
- export {
43
- getInitStatusSelector,
44
- getLoadingSelector,
45
- getOfflineSelector,
46
- selectAuthUser
47
- };
40
+
41
+ export { getInitStatusSelector, getLoadingSelector, getOfflineSelector, selectAuthUser };
@@ -0,0 +1,11 @@
1
+ import { Meta, StoryObj } from '@storybook/web-components';
2
+ declare const meta: Meta;
3
+ export default meta;
4
+ type Story = StoryObj;
5
+ /**
6
+ * Welcome to pd-spa-helper Storybook
7
+ *
8
+ * This library provides the core SPA framework for Lit-based applications.
9
+ */
10
+ export declare const Welcome: Story;
11
+ //# sourceMappingURL=introduction.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"introduction.stories.d.ts","sourceRoot":"","sources":["../../src/stories/introduction.stories.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAEhE,QAAA,MAAM,IAAI,EAAE,IAKX,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC;AAEtB;;;;GAIG;AACH,eAAO,MAAM,OAAO,EAAE,KAqCrB,CAAC"}